namespace MMDAL.Query.Packing { // Write-side companion to PackingQB.cs (which is read-only: GetSelectListPacking / // GetPackingProductionSummary). TPACKDETAIL's OBJECTHEADERTYPEID/OBJECTHEADERID convention // (OBJECTPACKING=-1399999916, ObjectHeaderId=PackingId) is confirmed by PackingQB's own // GET_SELECTLIST_PACKING_SQL OUTER APPLY. All columns verified live against GB5DEMO // INFORMATION_SCHEMA.COLUMNS 2026-08-28. public static class PackingSaveQB { public const string SAVE_PACKING_SQL = @"INSERT INTO TPACKING ( PACKINGID, OUID, PERIODID, BIZTRANSACTIONTYPEID, PACKINGNUMBER, PACKINGDATE, REFERENCENUMBER, REFERENCEDATE, SHIFTID, STOREID, TOSTOREID, PACKTYPE, PACKID, MATERIALTYPE, ITEMID, SKUID, PACKEDBYID, LOTID, UNITQUANTITY, UNITUOMID, UNITSPERPACK, NUMBEROFPACKS, GROSSWEIGHTPERPACK, NETWEIGHTPERPACK, TOTALGROSSWEIGHT, TOTALNETWEIGHT, TAREWEIGHT, PACKNUMBERID, PACKNUMBER, PACKDIMENSION, REMARKS, STATUS, VERSION, CREATEDBYID, CREATEDON, MODIFIEDBYID, MODIFIEDON ) VALUES ( @PackingId, @OUId, @PeriodId, @BizTransactionTypeId, @PackingNumber, @PackingDate, @ReferenceNumber, @ReferenceDate, @ShiftId, @StoreId, @ToStoreId, @PackType, @PackId, @MaterialType, @ItemId, @SkuId, @PackedById, @LotId, @UnitQuantity, @UnitUomId, @UnitsPerPack, @NumberOfPacks, @GrossWeightPerPack, @NetWeightPerPack, @TotalGrossWeight, @TotalNetWeight, @TareWeight, @PackNumberId, @PackNumber, @PackDimension, @Remarks, @Status, @Version, @CreatedById, @CreatedOn, @ModifiedById, @ModifiedOn );"; public const string SAVE_PACKING_PG = @"INSERT INTO TPACKING ( PACKINGID, OUID, PERIODID, BIZTRANSACTIONTYPEID, PACKINGNUMBER, PACKINGDATE, REFERENCENUMBER, REFERENCEDATE, SHIFTID, STOREID, TOSTOREID, PACKTYPE, PACKID, MATERIALTYPE, ITEMID, SKUID, PACKEDBYID, LOTID, UNITQUANTITY, UNITUOMID, UNITSPERPACK, NUMBEROFPACKS, GROSSWEIGHTPERPACK, NETWEIGHTPERPACK, TOTALGROSSWEIGHT, TOTALNETWEIGHT, TAREWEIGHT, PACKNUMBERID, PACKNUMBER, PACKDIMENSION, REMARKS, STATUS, VERSION, CREATEDBYID, CREATEDON, MODIFIEDBYID, MODIFIEDON ) VALUES ( :PackingId, :OUId, :PeriodId, :BizTransactionTypeId, :PackingNumber, :PackingDate, :ReferenceNumber, :ReferenceDate, :ShiftId, :StoreId, :ToStoreId, :PackType, :PackId, :MaterialType, :ItemId, :SkuId, :PackedById, :LotId, :UnitQuantity, :UnitUomId, :UnitsPerPack, :NumberOfPacks, :GrossWeightPerPack, :NetWeightPerPack, :TotalGrossWeight, :TotalNetWeight, :TareWeight, :PackNumberId, :PackNumber, :PackDimension, :Remarks, :Status, :Version, :CreatedById, :CreatedOn, :ModifiedById, :ModifiedOn );"; public const string UPDATE_PACKING_SQL = @"UPDATE TPACKING SET OUID = @OUId, PERIODID = @PeriodId, BIZTRANSACTIONTYPEID = @BizTransactionTypeId, REFERENCENUMBER = @ReferenceNumber, REFERENCEDATE = @ReferenceDate, SHIFTID = @ShiftId, STOREID = @StoreId, TOSTOREID = @ToStoreId, PACKTYPE = @PackType, PACKID = @PackId, MATERIALTYPE = @MaterialType, ITEMID = @ItemId, SKUID = @SkuId, PACKEDBYID = @PackedById, LOTID = @LotId, UNITQUANTITY = @UnitQuantity, UNITUOMID = @UnitUomId, UNITSPERPACK = @UnitsPerPack, NUMBEROFPACKS = @NumberOfPacks, GROSSWEIGHTPERPACK = @GrossWeightPerPack, NETWEIGHTPERPACK = @NetWeightPerPack, TOTALGROSSWEIGHT = @TotalGrossWeight, TOTALNETWEIGHT = @TotalNetWeight, TAREWEIGHT = @TareWeight, PACKNUMBERID = @PackNumberId, PACKNUMBER = @PackNumber, PACKDIMENSION = @PackDimension, REMARKS = @Remarks, STATUS = @Status, MODIFIEDBYID = @ModifiedById, MODIFIEDON = @ModifiedOn WHERE PACKINGID = @PackingId;"; public const string UPDATE_PACKING_PG = @"UPDATE TPACKING SET OUID = :OUId, PERIODID = :PeriodId, BIZTRANSACTIONTYPEID = :BizTransactionTypeId, REFERENCENUMBER = :ReferenceNumber, REFERENCEDATE = :ReferenceDate, SHIFTID = :ShiftId, STOREID = :StoreId, TOSTOREID = :ToStoreId, PACKTYPE = :PackType, PACKID = :PackId, MATERIALTYPE = :MaterialType, ITEMID = :ItemId, SKUID = :SkuId, PACKEDBYID = :PackedById, LOTID = :LotId, UNITQUANTITY = :UnitQuantity, UNITUOMID = :UnitUomId, UNITSPERPACK = :UnitsPerPack, NUMBEROFPACKS = :NumberOfPacks, GROSSWEIGHTPERPACK = :GrossWeightPerPack, NETWEIGHTPERPACK = :NetWeightPerPack, TOTALGROSSWEIGHT = :TotalGrossWeight, TOTALNETWEIGHT = :TotalNetWeight, TAREWEIGHT = :TareWeight, PACKNUMBERID = :PackNumberId, PACKNUMBER = :PackNumber, PACKDIMENSION = :PackDimension, REMARKS = :Remarks, STATUS = :Status, MODIFIEDBYID = :ModifiedById, MODIFIEDON = :ModifiedOn WHERE PACKINGID = :PackingId;"; public const string SAVE_PACKDETAIL_SQL = @"INSERT INTO TPACKDETAIL ( PACKDETAILID, PACKNUMBERID, BIZTRANSACTIONTYPEID, OBJECTHEADERTYPEID, OBJECTHEADERID, OBJECTTYPEID, OBJECTID, SLNO, ITEMID, SKUID, QUANTITY, SHORTAGE, EXCESS, NETQUANTITY, GOODQUANTITY, REJECTEDQUANTITY, REWORKQUANTITY, OTHERQUANTITY, GROSSWEIGHT, NETWEIGHT, TAREWEIGHT, PLANNEDQUANTITY, REMARKS, OUID, STOREID, STOCKLEDGERNUMBER, STOCKLEDGERDATE, REFERENCENUMBER, REFERENCEDATE, LOCATIONTYPE, PARTYBRANCHID, STOCKPOSTTYPE, MATERIALOWNERSHIPTYPE, EXCISESLNO, DOCUMENTDETAILID ) VALUES ( @PackDetailId, @PackNumberId, @BizTransactionTypeId, @ObjectHeaderTypeId, @ObjectHeaderId, @ObjectTypeId, @ObjectId, @SlNo, @ItemId, @SkuId, @Quantity, @Shortage, @Excess, @NetQuantity, @GoodQuantity, @RejectedQuantity, @ReworkQuantity, @OtherQuantity, @GrossWeight, @NetWeight, @TareWeight, @PlannedQuantity, @Remarks, @OUId, @StoreId, @StockLedgerNumber, @StockLedgerDate, @ReferenceNumber, @ReferenceDate, @LocationType, @PartyBranchId, @StockPostType, @MaterialOwnershipType, @ExciseSlNo, @DocumentDetailId );"; public const string SAVE_PACKDETAIL_PG = @"INSERT INTO TPACKDETAIL ( PACKDETAILID, PACKNUMBERID, BIZTRANSACTIONTYPEID, OBJECTHEADERTYPEID, OBJECTHEADERID, OBJECTTYPEID, OBJECTID, SLNO, ITEMID, SKUID, QUANTITY, SHORTAGE, EXCESS, NETQUANTITY, GOODQUANTITY, REJECTEDQUANTITY, REWORKQUANTITY, OTHERQUANTITY, GROSSWEIGHT, NETWEIGHT, TAREWEIGHT, PLANNEDQUANTITY, REMARKS, OUID, STOREID, STOCKLEDGERNUMBER, STOCKLEDGERDATE, REFERENCENUMBER, REFERENCEDATE, LOCATIONTYPE, PARTYBRANCHID, STOCKPOSTTYPE, MATERIALOWNERSHIPTYPE, EXCISESLNO, DOCUMENTDETAILID ) VALUES ( :PackDetailId, :PackNumberId, :BizTransactionTypeId, :ObjectHeaderTypeId, :ObjectHeaderId, :ObjectTypeId, :ObjectId, :SlNo, :ItemId, :SkuId, :Quantity, :Shortage, :Excess, :NetQuantity, :GoodQuantity, :RejectedQuantity, :ReworkQuantity, :OtherQuantity, :GrossWeight, :NetWeight, :TareWeight, :PlannedQuantity, :Remarks, :OUId, :StoreId, :StockLedgerNumber, :StockLedgerDate, :ReferenceNumber, :ReferenceDate, :LocationType, :PartyBranchId, :StockPostType, :MaterialOwnershipType, :ExciseSlNo, :DocumentDetailId );"; public const string DELETE_PACKDETAILS_BY_HEADER_SQL = @" DELETE FROM TPACKDETAIL WHERE OBJECTHEADERTYPEID = @ObjectHeaderTypeId AND OBJECTHEADERID = @ObjectHeaderId;"; public const string DELETE_PACKDETAILS_BY_HEADER_PG = @" DELETE FROM TPACKDETAIL WHERE OBJECTHEADERTYPEID = :ObjectHeaderTypeId AND OBJECTHEADERID = :ObjectHeaderId;"; public const string DELETE_PACKING_SQL = @"DELETE FROM TPACKING WHERE PACKINGID = @PackingId;"; public const string DELETE_PACKING_PG = @"DELETE FROM TPACKING WHERE PACKINGID = :PackingId;"; public const string GET_PACKING_SQL = @" SELECT pk.PACKINGID AS PackingId, pk.OUID AS OUId, pk.PERIODID AS PeriodId, pk.BIZTRANSACTIONTYPEID AS BizTransactionTypeId, pk.PACKINGNUMBER AS PackingNumber, pk.PACKINGDATE AS PackingDate, pk.REFERENCENUMBER AS ReferenceNumber, pk.REFERENCEDATE AS ReferenceDate, pk.SHIFTID AS ShiftId, pk.STOREID AS StoreId, pk.TOSTOREID AS ToStoreId, pk.PACKTYPE AS PackType, pk.PACKID AS PackId, pk.MATERIALTYPE AS MaterialType, pk.ITEMID AS ItemId, ISNULL(i.ITEMCODE,'') AS ItemCode, ISNULL(i.ITEMNAME,'') AS ItemName, pk.SKUID AS SkuId, pk.PACKEDBYID AS PackedById, pk.LOTID AS LotId, pk.UNITQUANTITY AS UnitQuantity, pk.UNITUOMID AS UnitUomId, pk.UNITSPERPACK AS UnitsPerPack, pk.NUMBEROFPACKS AS NumberOfPacks, pk.GROSSWEIGHTPERPACK AS GrossWeightPerPack, pk.NETWEIGHTPERPACK AS NetWeightPerPack, pk.TOTALGROSSWEIGHT AS TotalGrossWeight, pk.TOTALNETWEIGHT AS TotalNetWeight, pk.TAREWEIGHT AS TareWeight, pk.PACKNUMBERID AS PackNumberId, pk.PACKNUMBER AS PackNumber, pk.PACKDIMENSION AS PackDimension, pk.REMARKS AS Remarks, pk.STATUS AS Status, pk.VERSION AS Version FROM TPACKING pk LEFT JOIN MITEM i ON i.ITEMID = pk.ITEMID WHERE pk.PACKINGID = @PackingId;"; public const string GET_PACKING_PG = @" SELECT pk.PACKINGID AS ""PackingId"", pk.OUID AS ""OUId"", pk.PERIODID AS ""PeriodId"", pk.BIZTRANSACTIONTYPEID AS ""BizTransactionTypeId"", pk.PACKINGNUMBER AS ""PackingNumber"", pk.PACKINGDATE AS ""PackingDate"", pk.REFERENCENUMBER AS ""ReferenceNumber"", pk.REFERENCEDATE AS ""ReferenceDate"", pk.SHIFTID AS ""ShiftId"", pk.STOREID AS ""StoreId"", pk.TOSTOREID AS ""ToStoreId"", pk.PACKTYPE AS ""PackType"", pk.PACKID AS ""PackId"", pk.MATERIALTYPE AS ""MaterialType"", pk.ITEMID AS ""ItemId"", COALESCE(i.ITEMCODE,'') AS ""ItemCode"", COALESCE(i.ITEMNAME,'') AS ""ItemName"", pk.SKUID AS ""SkuId"", pk.PACKEDBYID AS ""PackedById"", pk.LOTID AS ""LotId"", pk.UNITQUANTITY AS ""UnitQuantity"", pk.UNITUOMID AS ""UnitUomId"", pk.UNITSPERPACK AS ""UnitsPerPack"", pk.NUMBEROFPACKS AS ""NumberOfPacks"", pk.GROSSWEIGHTPERPACK AS ""GrossWeightPerPack"", pk.NETWEIGHTPERPACK AS ""NetWeightPerPack"", pk.TOTALGROSSWEIGHT AS ""TotalGrossWeight"", pk.TOTALNETWEIGHT AS ""TotalNetWeight"", pk.TAREWEIGHT AS ""TareWeight"", pk.PACKNUMBERID AS ""PackNumberId"", pk.PACKNUMBER AS ""PackNumber"", pk.PACKDIMENSION AS ""PackDimension"", pk.REMARKS AS ""Remarks"", pk.STATUS AS ""Status"", pk.VERSION AS ""Version"" FROM TPACKING pk LEFT JOIN MITEM i ON i.ITEMID = pk.ITEMID WHERE pk.PACKINGID = :PackingId;"; public const string GET_PACKDETAILS_SQL = @" SELECT pd.PACKDETAILID AS PackDetailId, pd.PACKNUMBERID AS PackNumberId, pd.BIZTRANSACTIONTYPEID AS BizTransactionTypeId, pd.OBJECTHEADERTYPEID AS ObjectHeaderTypeId, pd.OBJECTHEADERID AS ObjectHeaderId, pd.OBJECTTYPEID AS ObjectTypeId, pd.OBJECTID AS ObjectId, pd.SLNO AS SlNo, pd.ITEMID AS ItemId, pd.SKUID AS SkuId, pd.QUANTITY AS Quantity, pd.SHORTAGE AS Shortage, pd.EXCESS AS Excess, pd.NETQUANTITY AS NetQuantity, pd.GOODQUANTITY AS GoodQuantity, pd.REJECTEDQUANTITY AS RejectedQuantity, pd.REWORKQUANTITY AS ReworkQuantity, pd.OTHERQUANTITY AS OtherQuantity, pd.GROSSWEIGHT AS GrossWeight, pd.NETWEIGHT AS NetWeight, pd.TAREWEIGHT AS TareWeight, pd.PLANNEDQUANTITY AS PlannedQuantity, pd.REMARKS AS Remarks, pd.OUID AS OUId, pd.STOREID AS StoreId, pd.STOCKLEDGERNUMBER AS StockLedgerNumber, pd.STOCKLEDGERDATE AS StockLedgerDate, pd.REFERENCENUMBER AS ReferenceNumber, pd.REFERENCEDATE AS ReferenceDate, pd.LOCATIONTYPE AS LocationType, pd.PARTYBRANCHID AS PartyBranchId, pd.STOCKPOSTTYPE AS StockPostType, pd.MATERIALOWNERSHIPTYPE AS MaterialOwnershipType, pd.EXCISESLNO AS ExciseSlNo, pd.DOCUMENTDETAILID AS DocumentDetailId FROM TPACKDETAIL pd WHERE pd.OBJECTHEADERTYPEID = @ObjectHeaderTypeId AND pd.OBJECTHEADERID = @ObjectHeaderId ORDER BY pd.SLNO;"; public const string GET_PACKDETAILS_PG = @" SELECT pd.PACKDETAILID AS ""PackDetailId"", pd.PACKNUMBERID AS ""PackNumberId"", pd.BIZTRANSACTIONTYPEID AS ""BizTransactionTypeId"", pd.OBJECTHEADERTYPEID AS ""ObjectHeaderTypeId"", pd.OBJECTHEADERID AS ""ObjectHeaderId"", pd.OBJECTTYPEID AS ""ObjectTypeId"", pd.OBJECTID AS ""ObjectId"", pd.SLNO AS ""SlNo"", pd.ITEMID AS ""ItemId"", pd.SKUID AS ""SkuId"", pd.QUANTITY AS ""Quantity"", pd.SHORTAGE AS ""Shortage"", pd.EXCESS AS ""Excess"", pd.NETQUANTITY AS ""NetQuantity"", pd.GOODQUANTITY AS ""GoodQuantity"", pd.REJECTEDQUANTITY AS ""RejectedQuantity"", pd.REWORKQUANTITY AS ""ReworkQuantity"", pd.OTHERQUANTITY AS ""OtherQuantity"", pd.GROSSWEIGHT AS ""GrossWeight"", pd.NETWEIGHT AS ""NetWeight"", pd.TAREWEIGHT AS ""TareWeight"", pd.PLANNEDQUANTITY AS ""PlannedQuantity"", pd.REMARKS AS ""Remarks"", pd.OUID AS ""OUId"", pd.STOREID AS ""StoreId"", pd.STOCKLEDGERNUMBER AS ""StockLedgerNumber"", pd.STOCKLEDGERDATE AS ""StockLedgerDate"", pd.REFERENCENUMBER AS ""ReferenceNumber"", pd.REFERENCEDATE AS ""ReferenceDate"", pd.LOCATIONTYPE AS ""LocationType"", pd.PARTYBRANCHID AS ""PartyBranchId"", pd.STOCKPOSTTYPE AS ""StockPostType"", pd.MATERIALOWNERSHIPTYPE AS ""MaterialOwnershipType"", pd.EXCISESLNO AS ""ExciseSlNo"", pd.DOCUMENTDETAILID AS ""DocumentDetailId"" FROM TPACKDETAIL pd WHERE pd.OBJECTHEADERTYPEID = :ObjectHeaderTypeId AND pd.OBJECTHEADERID = :ObjectHeaderId ORDER BY pd.SLNO;"; } }