# from model.ItemCRUD import ItemCRUD
# from model.Utilities import ItemCRUDType

# class GST:

#     @staticmethod
#     def get_unreleased_gst():
#         # Use ItemCRUD for Invoices
#         invoice_crud = ItemCRUD(itemType=ItemCRUDType.Invoice)
#         invoices_rows = invoice_crud.GetAllData(storedproc="GetAllInvoicesBasic")

#         if not invoice_crud.isSuccess:
#             return []  # Could also log invoice_crud.resultMessage

#         invoices = [
#             dict(
#                 Invoice_No=row[1],
#                 GST_SD_Amount=float(row[2]) if row[2] is not None else 0
#             )
#             for row in invoices_rows
#         ]

#         # Use ItemCRUD for GST Releases
#         gst_crud = ItemCRUD(itemType=ItemCRUDType.GSTRelease)
#         gst_rows = gst_crud.GetAllData(storedproc="GetAllGSTReleasesBasic")

#         if not gst_crud.isSuccess:
#             return []  # Could also log gst_crud.resultMessage

#         gst_invoice_nos = {
#             g[2]  # Invoice_No is at index 2
#             for g in gst_rows
#             if g[2]
#         }

#         gst_basic_amounts = {
#             float(g[3])  # Basic_Amount at index 3
#             for g in gst_rows
#             if g[3] is not None
#         }

#         # Filter unreleased invoices
#         unreleased = []
#         for inv in invoices:
#             match_by_invoice = inv['Invoice_No'] in gst_invoice_nos
#             match_by_gst_amount = inv['GST_SD_Amount'] in gst_basic_amounts

#             if not (match_by_invoice or match_by_gst_amount):
#                 unreleased.append(inv)

#         return unreleased