using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using GB5Shared.GenerateAutoNumber; using GB5Shared.QueryExecutor; using MMBLL.Lot; using MMDAL.CustomCode.MMHead; using MMDAL.CustomCode.PackDetail; using MMDAL.DTO.Pack; using MMDAL.DTO.OULevelSetting; using MMDAL.DTO.Lot; using MMDAL.DTO.LotDetail; using System.Data; using GB5Shared.DTO.Framework.Login; using MMDAL.DTO.MMHead; using static GB5Shared.GB5Constant.Constant; using GB5Shared.DTO.Framework.AutoNumber; namespace MMBLL.PackDetail { public class PackDetailLib : IPackDetailLib { private readonly AutoNumber _AutoNumber; private readonly IQueryExecutor _queryExecutor; private readonly IPackDetailBLL packDetailBLL; private readonly IPackDetailDAL packDetailDAL; private readonly ILotBLL lotBLL; public PackDetailLib( AutoNumber AutoNumber, IQueryExecutor queryExecutor, IPackDetailBLL IPackDetailBLL , IPackDetailDAL IPackDetailDAL, ILotBLL ILotBLL) { _AutoNumber = AutoNumber; _queryExecutor = queryExecutor; packDetailBLL = IPackDetailBLL; packDetailDAL = IPackDetailDAL; lotBLL = ILotBLL; } //public async Task PackNumberUpdate(List DTO, int EntityId, int PackNumberTag, LoginDTO LoginDTO) //{ // string Sql = ""; // string UpdatedPackNumberId = ""; // int BizClassId = -1; // try // { // string UpdateQry = ""; // //While Updating the PackNumber Table, We want to add one for for Tracking purpose to PackDetail Table. // List PackDetailDTOs = new List(); // PackDetailDTO PackDetailDTO = new PackDetailDTO(); // if (EntityId == EntityConstant.OBJECTMMHEAD) // { // #region MMHead // MMHeadDTO MMHeadDTO = new MMHeadDTO(); // MMHeadDTO = ConvertObjecttoAny(DTO); // //After Discussion with Mani sir and Suresh Sir 07 APR 2023 if From and TO STORE is same then ToStoreId=-1 for Lot Logic to work // if (MMHeadDTO.FromStoreId != 1 && MMHeadDTO.ToStoreId != -1) // { // if (MMHeadDTO.FromStoreId == MMHeadDTO.ToStoreId) // { // MMHeadDTO.ToStoreId = -1; // } // } // int PackingSlNo = 0; // Unisoft.AdminDAL.Poco.BIZTransactionType BIZTransactionType = GenericDal.Get(MMHeadDTO.BizTransactionTypeId, LoginDTO); // Unisoft.FrameworkDAL.Poco.BIZTransactionClass.BIZTransactionClass BIZTransactionClass = GenericDal.Get(BIZTransactionType.BIZTransactionTypeClassId, LoginDTO); // int LotTypeId = BIZTransactionType.LotType.Id; // BizClassId = BIZTransactionClass.Id; // if (BIZTransactionType.StockPostType == 0) // { // /*IOULevelSettingDAL OULEVEL = new OULevelSettingDAL(); // List OULevelSettingDTOs = OULEVEL.GetOULevelSetting(LoginDTO.WorkOUId, LoginDTO);*/ // var sql11 = "SELECT PACKEXCISESLNO as OULevelSettingPackExciseSlNo FROM MOULEVELSETTING WHERE OUID=" + LoginDTO.WorkOUId; // List OULevelSettingDTOs = (List)GenericDal.ExceuteSelectQuery(sql11, LoginDTO, -1, -1); // if (OULevelSettingDTOs.Count > 0) // { // PackingSlNo = OULevelSettingDTOs[0].OULevelSettingPackExciseSlNo; // } // } // //In MMHead Object : // // 1.PackDetail Table Data saved. // for (int i = 0; i < MMHeadDTO.MMDetailArray.Count; i++) // { // //Based on MMDetail Row Lot Number need to Generate done by Vikash on 12 June 2023 // string CustomizedLotNumber = ""; // if (LotTypeId == -1)//Considered as Manual // { // //Nothing to do.. // } // else // { // //Unisoft.MMDAL.Poco.LotType LotType = GenericDal.Get(LotTypeId, LoginDTO); // //if (LotType.LotNumberingType == 0)//Auto // //{ // // CustomizedLotNumber = "NONE"; // // if (LoginDTO.DatabaseType == 0)//only Sql // // { // // Sql = PackDetailQB.GET_CUSTOMIZED_LOT_NUMBER; // // Sql = Sql.Replace(":objectheadertypeid", "-1899997952"); // // Sql = Sql.Replace(":objectheaderid", MMHeadDTO.MMHeadId.ToString()); // // Sql = Sql.Replace(":itemid", MMHeadDTO.MMDetailArray[i].ItemId.ToString()); // // Sql = Sql.Replace(":skuid", MMHeadDTO.MMDetailArray[i].SKUId.ToString()); // // IList CustLotDTOs = GenericDal.ExceuteSelectQuerySameSession(Sql, LoginDTO); // // if (CustLotDTOs.Count > 0) // // { // // CustomizedLotNumber = CustLotDTOs[0].LotLotNumber; // // } // // } // //} // } // List LotDetailDTOs = new List(); // int LotId = -1; // if (MMHeadDTO.MMDetailArray[i].MMPackDetailArray.Count != 0) // { // for (int k = 0; k < MMHeadDTO.MMDetailArray[i].MMPackDetailArray.Count; k++) // { // if (BIZTransactionType.StockPostType == 0) // { // if (BIZTransactionClass.StockPostType == 1 && MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].PackDetailPackNumberId != -1)//less // { // string sql11s = "select PKD.OBJECTHEADERID as Id from TPACKDETAIL PKD,TPACKNUMBER PKN WHERE PKD.PACKNUMBERID=PKN.PACKNUMBERID AND PKN.PACKTYPE=1 AND PKD.OBJECTHEADERTYPEID=-1399999916 AND PKN.PACKNUMBERID=" + MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].PackDetailPackNumberId; // List PackPicklistDTOss = (List)GenericDal.ExceuteSelectQuery(sql11s, LoginDTO, -1, -1); // if (PackPicklistDTOss.Count > 0) // { // string Tsql11s = "select PKN.LOTID as LotId from TPACKDETAIL PKD,TPACKNUMBER PKN WHERE PKD.PACKNUMBERID=PKN.PACKNUMBERID AND PKD.OBJECTHEADERTYPEID=-1399999916 AND PKD.STOCKPOSTTYPE=1 and PKD.OBJECTHEADERID=" + PackPicklistDTOss[0].Id; // List TmpssPackNumberDTO = (List)GenericDal.ExceuteSelectQuery(Tsql11s, LoginDTO, -1, -1); // if (TmpssPackNumberDTO.Count > 0) // { // MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotId = TmpssPackNumberDTO[0].LotId; // } // } // } // } // if (MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotId != 0) // { // LotId = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotId; // } // else // { // #region Form LotDTO // LotDTO LotDTO = new LotDTO(); // #region Changed by Vikash on 24 Jan 2023 As per Logic Explained by Suresh Sir Lot also to be Auto Generated.. // if (LotTypeId == -1)//Considered as Manual // { // LotDTO.LotLotNumber = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotNumber; // } // else // { // Unisoft.MMDAL.Poco.LotType LotType = GenericDal.Get(LotTypeId, LoginDTO); // if (LotType.LotNumberingType == 0)//Auto // { // if (CustomizedLotNumber.ToLower() == "none") // { // if (MMHeadDTO.MMDetailArray[i].SKUId != -1) // { // // Unisoft.MMDAL.Poco.SKU Sku = GenericDal.Get(MMHeadDTO.MMDetailArray[i].SKUId, LoginDTO); // LotDTO.LotLotNumber = MMHeadDTO.MMHeadNumber; // MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotNumber = LotDTO.LotLotNumber; // } // else // { // LotDTO.LotLotNumber = MMHeadDTO.MMDetailArray[i].ItemCode + "-" + MMHeadDTO.MMHeadNumber; // MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotNumber = LotDTO.LotLotNumber; // } // } // else // { // LotDTO.LotLotNumber = CustomizedLotNumber; // MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotNumber = LotDTO.LotLotNumber; // } // MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].PackNumberNumber = "NONE";//Since FE will not give PackNumberNumber in case of AUTO PACK Generation ..Bacause of this program is going to another condtion see Line 1708 // } // else // { // LotDTO.LotLotNumber = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotNumber; // } // } // #endregion // LotDTO.ItemId = MMHeadDTO.MMDetailArray[i].ItemId; // LotDTO.SKUId = MMHeadDTO.MMDetailArray[i].SKUId; // LotDTO.ProcessId = -1; // LotDTO.LotTypeId = LotTypeId; // LotDTO.LotLotDate = MMHeadDTO.MMHeadDate; // LotDTO.LotCreatedById = MMHeadDTO.MMHeadCreatedById; // LotDTO.LotCreatedOn = MMHeadDTO.MMHeadCreatedOn; // LotDTO.LotModifiedById = MMHeadDTO.MMHeadModifiedById; // LotDTO.LotModifiedOn = MMHeadDTO.MMHeadModifiedOn; // LotDTO.LotStatus = MMHeadDTO.MMHeadStatus; // LotDTO.LotVersion = MMHeadDTO.MMHeadVersion; // #endregion // LotId = await SaveAndGetLotId(LotDTO, LoginDTO); // MMHeadDTO.MMDetailArray[i].MMPackDetailArray[k].LotId = LotId; // } // } // } // for (int j = 0; j < MMHeadDTO.MMDetailArray[i].MMPackDetailArray.Count; j++) // { // if (MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].LotId != 0 && MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].LotId != -1) // { // if (MMHeadDTO.ToStoreId == -1) // { // LotDetailDTO LotDetailDTO = new LotDetailDTO(); // LotDetailDTO.BizTransactionTypeId = MMHeadDTO.BizTransactionTypeId; // LotDetailDTO.ObjectHeaderTypeId = EntityConstant.OBJECTMMHEAD; // LotDetailDTO.LotDetailObjectHeaderId = MMHeadDTO.MMHeadId; // LotDetailDTO.ObjectTypeId = EntityConstant.OBJECTMMDETAIL; // LotDetailDTO.LotDetailObjectId = MMHeadDTO.MMDetailArray[i].MMDetailId; // LotDetailDTO.LotDetailSlNo = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailSlNo; // LotDetailDTO.LotId = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].LotId; // LotDetailDTO.LotDetailQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailQuantity; // LotDetailDTO.LotDetailGoodQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailGoodQuantity; // LotDetailDTO.LotDetailRejectedQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailRejectedQuantity; // LotDetailDTO.LotDetailReworkQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailReworkQuantity; // LotDetailDTO.LotDetailOtherQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailOtherQuantity; // LotDetailDTO.PackId = MMHeadDTO.MMDetailArray[i].PackId; // LotDetailDTO.LotDetailPackQuantity = MMHeadDTO.MMDetailArray[i].MMDetailPackQuantity; // LotDetailDTO.LotDetailStockLedgerNumber = MMHeadDTO.MMHeadNumber; // LotDetailDTO.OUId = LoginDTO.WorkOUId; // LotDetailDTO.StoreId = MMHeadDTO.StoreId; // LotDetailDTO.LotDetailStockLedgerDate = MMHeadDTO.MMHeadDate; // LotDetailDTO.LotDetailReferenceNumber = MMHeadDTO.MMHeadReferenceNumber!; // LotDetailDTO.LotDetailReferenceDate = MMHeadDTO.MMHeadReferenceDate; // if (BIZTransactionType.StockPostType == 0) // { // if (BIZTransactionClass.StockPostType == 0)//add // { // LotDetailDTO.LotDetailStockPostType = 0; // } // if (BIZTransactionClass.StockPostType == 1)//less // { // LotDetailDTO.LotDetailStockPostType = 1; // } // } // else // { // LotDetailDTO.LotDetailStockPostType = 4; // } // LotDetailDTO.PartyBranchId = -1; // LotDetailDTOs.Add(LotDetailDTO); // } // else // { // LotDetailDTOs = new List(); // for (int uu = 0; uu < 2; uu++) // { // LotDetailDTO LotDetailDTO = new LotDetailDTO(); // LotDetailDTO.BizTransactionTypeId = MMHeadDTO.BizTransactionTypeId; // LotDetailDTO.ObjectHeaderTypeId = EntityConstant.OBJECTMMHEAD; // LotDetailDTO.LotDetailObjectHeaderId = MMHeadDTO.MMHeadId; // LotDetailDTO.ObjectTypeId = EntityConstant.OBJECTMMDETAIL; // LotDetailDTO.LotDetailObjectId = MMHeadDTO.MMDetailArray[i].MMDetailId; // LotDetailDTO.LotDetailSlNo = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailSlNo; // LotDetailDTO.LotId = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].LotId; // LotDetailDTO.LotDetailQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailQuantity; // LotDetailDTO.LotDetailGoodQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailGoodQuantity; // LotDetailDTO.LotDetailRejectedQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailRejectedQuantity; // LotDetailDTO.LotDetailReworkQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailReworkQuantity; // LotDetailDTO.LotDetailOtherQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailOtherQuantity; // LotDetailDTO.PackId = MMHeadDTO.MMDetailArray[i].PackId; // LotDetailDTO.LotDetailPackQuantity = MMHeadDTO.MMDetailArray[i].MMDetailPackQuantity; // LotDetailDTO.LotDetailStockLedgerNumber = MMHeadDTO.MMHeadNumber; // LotDetailDTO.OUId = LoginDTO.WorkOUId; // LotDetailDTO.StoreId = MMHeadDTO.StoreId; // LotDetailDTO.LotDetailStockLedgerDate = MMHeadDTO.MMHeadDate; // LotDetailDTO.LotDetailReferenceNumber = MMHeadDTO.MMHeadReferenceNumber!; // LotDetailDTO.LotDetailReferenceDate = MMHeadDTO.MMHeadReferenceDate; // if (BIZTransactionType.StockPostType == 0) // { // if (uu == 0) // { // LotDetailDTO.LotDetailStockPostType = 1; // LotDetailDTO.StoreId = MMHeadDTO.FromStoreId; // } // else // { // LotDetailDTO.LotDetailStockPostType = 0; // LotDetailDTO.StoreId = MMHeadDTO.ToStoreId; // } // } // else // { // LotDetailDTO.LotDetailStockPostType = 4; // } // LotDetailDTO.PartyBranchId = -1; // LotDetailDTOs.Add(LotDetailDTO); // } // await lotBLL.LotDetailSave(LotDetailDTOs, LoginDTO, 0); // } // } // #region Add PackDetailDTO // PackDetailDTO = new PackDetailDTO(); // PackDetailDTO = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j]; // PackDetailDTO.ObjectHeaderTypeId = EntityConstant.OBJECTMMHEAD; // PackDetailDTO.PackDetailObjectHeaderId = MMHeadDTO.MMHeadId; // PackDetailDTO.ItemId = MMHeadDTO.MMDetailArray[i].ItemId; // PackDetailDTO.BizTransactionTypeId = MMHeadDTO.BizTransactionTypeId; // PackDetailDTO.SKUId = MMHeadDTO.MMDetailArray[i].SKUId; // PackDetailDTO.ObjectTypeId = EntityConstant.OBJECTMMDETAIL; // PackDetailDTO.PackDetailObjectId = MMHeadDTO.MMDetailArray[i].MMDetailId; // PackDetailDTO.OUId = MMHeadDTO.OUId; // PackDetailDTO.StoreId = MMHeadDTO.StoreId; // PackDetailDTO.PackDetailStockLedgerNumber = MMHeadDTO.MMHeadNumber; // PackDetailDTO.PackDetailStockLedgerDate = MMHeadDTO.MMHeadDate; // if (MMHeadDTO.MMHeadReferenceNumber == "" || MMHeadDTO.MMHeadReferenceNumber == null) // { // PackDetailDTO.PackDetailReferenceNumber = MMHeadDTO.MMHeadNumber; // } // else // { // PackDetailDTO.PackDetailReferenceNumber = MMHeadDTO.MMHeadReferenceNumber; // } // PackDetailDTO.PackDetailReferenceDate = MMHeadDTO.MMHeadReferenceDate; // PackDetailDTO.PartyBranchId = MMHeadDTO.PartyBranchId; // //PackDetailDTO.PackDetailRemarks = "From MMHead No: " + MMHead.Number + ", Id:" + MMHead.Id; // if (BIZTransactionType.StockPostType == 0) // { // if (BIZTransactionType.IsMovementType == 1) // { // if (BIZTransactionClass.StockPostType == 1) // { // PackDetailDTO.PackDetailStockPostType = 1; // } // if (BIZTransactionClass.StockPostType == 0) // { // PackDetailDTO.PackDetailStockPostType = 0; // } // if (BIZTransactionClass.StockPostType == 2) // { // PackDetailDTO.PackDetailStockPostType = 4; // } // } // else // { // if (MMHeadDTO.MMDetailArray[i].MMDetailStockPostType == 1) // { // if (BIZTransactionClass.InputPostType == 0) // { // PackDetailDTO.PackDetailStockPostType = 0; // } // if (BIZTransactionClass.InputPostType == 1) // { // PackDetailDTO.PackDetailStockPostType = 1; // } // if (BIZTransactionClass.InputPostType == 2) // { // PackDetailDTO.PackDetailStockPostType = 4; // } // } // if (MMHeadDTO.MMDetailArray[i].MMDetailStockPostType == 2) // { // if (BIZTransactionClass.OutputPosttype == 0) // { // PackDetailDTO.PackDetailStockPostType = 0; // } // if (BIZTransactionClass.OutputPosttype == 1) // { // PackDetailDTO.PackDetailStockPostType = 1; // } // if (BIZTransactionClass.OutputPosttype == 2) // { // PackDetailDTO.PackDetailStockPostType = 4; // } // } // } // } // else // { // PackDetailDTO.PackDetailStockPostType = 4; // } // #region Find PackId And Add to PackDetailDTO // if ((MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackNumberId == -1 || MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackNumberId == 0) && PackNumberTag == 0 && MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackNumberNumber.Trim() != "") // { // //Here PackNumber Sent. But PackNumberId Not Sent. So We want to Check the PackNumberId already in the PackNumber Tbl. // //If PackNumberId Found Means Use this PackNumberId // //Else means Create One PackNumber To PackNumber table And Use the PackNumberId // #region Form PackNumberDTO Based On MMHead Object // PackNumberDTO PackNumberDTO = new PackNumberDTO(); // PackNumberDTO.OUId = MMHeadDTO.OUId; // PackNumberDTO.StoreId = MMHeadDTO.StoreId; // PackNumberDTO.WorkCenterId = BIZTransactionType.WorkCenter.Id; // PackNumberDTO.PartyBranchId = MMHeadDTO.PartyBranchId; // PackNumberDTO.ItemId = MMHeadDTO.MMDetailArray[i].ItemId; // PackNumberDTO.SKUId = MMHeadDTO.MMDetailArray[i].SKUId; // PackNumberDTO.LotId = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].LotId; // PackNumberDTO.PackNumberNumber = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].LotNumber + "/" + (j + 1).ToString(); // PackNumberDTO.PackNumberQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailQuantity; // PackNumberDTO.PackNumberNetQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailNetQuantity; // PackNumberDTO.PackNumberGoodQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailGoodQuantity; // PackNumberDTO.PackNumberRejectedQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailRejectedQuantity; // PackNumberDTO.PackNumberReworkQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailReworkQuantity; // PackNumberDTO.PackNumberOtherQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailOtherQuantity; // PackNumberDTO.PackNumberPackType = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackType; //Pack // PackNumberDTO.PackNumberGrossWeight = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailGrossWeight; // PackNumberDTO.PackNumberNetWeight = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailNetWeight; // PackNumberDTO.PackNumberPick = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackPick; // if (BIZTransactionType.IsPackingQuality != 3) // { // PackNumberDTO.PackNumberStatus = BIZTransactionType.ToPackStatus; // } // PackNumberDTO.PackNumberStartDate = MMHeadDTO.MMHeadDate; // PackNumberDTO.PackId = MMHeadDTO.MMDetailArray[i].PackId; // PackNumberDTO.OUId = MMHeadDTO.OUId; // if (BIZTransactionType.IsPackingQuality == 2) // { // PackNumberDTO.PackNumberInspectedStatus = 1; // } // else if (BIZTransactionType.IsPackingQuality == 3) // { // PackNumberDTO.PackNumberInspectedStatus = 3; // } // #endregion // PackDetailDTO.PackDetailPackNumberId = await GetPackNumber(PackNumberDTO, LoginDTO ); // } // else if (MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackNumberId == 0 && PackNumberTag == 0) // { // PackDetailDTO.PackDetailPackNumberId = -1; // } // else if (PackNumberTag == 1 || MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackNumberId != -1 || MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackNumberId != 0) // {//here PackNumber To Be Updated // #region PackNumberDTO Form // PackNumberDTO PackNumberDTO = new PackNumberDTO(); // PackNumberDTO.PackNumberId = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackNumberId; // PackNumberDTO.OUId = MMHeadDTO.OUId; // PackNumberDTO.StoreId = MMHeadDTO.StoreId; // PackNumberDTO.WorkCenterId = BIZTransactionType.WorkCenter.Id; // PackNumberDTO.PartyBranchId = MMHeadDTO.PartyBranchId; // PackNumberDTO.ItemId = MMHeadDTO.MMDetailArray[i].ItemId; // PackNumberDTO.SKUId = MMHeadDTO.MMDetailArray[i].SKUId; // PackNumberDTO.LotId = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].LotId; // PackNumberDTO.PackNumberNumber = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackNumberNumber; // PackNumberDTO.PackNumberQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailQuantity; // PackNumberDTO.PackNumberNetQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailNetQuantity; // PackNumberDTO.PackNumberGoodQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailGoodQuantity; // PackNumberDTO.PackNumberRejectedQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailRejectedQuantity; // PackNumberDTO.PackNumberReworkQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailReworkQuantity; // PackNumberDTO.PackNumberOtherQuantity = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailOtherQuantity; // PackNumberDTO.PackNumberPackType = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackType; //Pack // PackNumberDTO.PackNumberGrossWeight = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailGrossWeight; // PackNumberDTO.PackNumberNetWeight = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailNetWeight; // PackNumberDTO.PackNumberPick = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackDetailPackPick; // PackNumberDTO.PackNumberStartDate = MMHeadDTO.MMHeadDate; // PackNumberDTO.PackId = MMHeadDTO.MMDetailArray[i].MMPackDetailArray[j].PackId; // PackNumberDTO.OUId = MMHeadDTO.OUId; // if (BIZTransactionType.IsPackingQuality == 2) // { // PackNumberDTO.PackNumberInspectedStatus = 1; // } // else if (BIZTransactionType.IsPackingQuality == 3) // { // PackNumberDTO.PackNumberInspectedStatus = 3; // } // #endregion // } // #endregion // if (BIZTransactionType.StockPostType == 0) // { // PackDetailDTO.PackDetailExciseSlno = PackingSlNo; // PackingSlNo++; // } // PackDetailDTOs.Add(PackDetailDTO); // #endregion // } // #region We need to Do Group by Lot for MMHeadDTO.ToStoreId=-1 since Asked by Suresh Sir done by Vikash on 24 Jan 2023 // if (MMHeadDTO.ToStoreId == -1)// // { // List UniqueLotDetailDTOs = LotDetailDTOs // .GroupBy(Current => new { Current.BizTransactionTypeId, Current.ObjectHeaderTypeId, Current.LotDetailObjectHeaderId, Current.ObjectTypeId, Current.LotDetailObjectId, Current.LotDetailStockPostType }) // .Select(EmployeeRecords => EmployeeRecords.First()).ToList(); // List FinalLotDetailDTOs = new List(); // for (int lotdtl = 0; lotdtl < UniqueLotDetailDTOs.Count; lotdtl++) // { // double tempLotQty = 0; // double tempLotgoodQty = 0; // double tempLotRejectedQty = 0; // double tempLotReworkQty = 0; // double tempLotOherQty = 0; // double tempLotPackQty = 0; // List TempLotDetailDTOs = LotDetailDTOs.FindAll( // delegate (LotDetailDTO Poco) // { // return // Poco.BizTransactionTypeId == UniqueLotDetailDTOs[lotdtl].BizTransactionTypeId // && // Poco.ObjectHeaderTypeId == UniqueLotDetailDTOs[lotdtl].ObjectHeaderTypeId // && // Poco.LotDetailObjectHeaderId == UniqueLotDetailDTOs[lotdtl].LotDetailObjectHeaderId // && // Poco.ObjectTypeId == UniqueLotDetailDTOs[lotdtl].ObjectTypeId // && // Poco.LotDetailObjectId == UniqueLotDetailDTOs[lotdtl].LotDetailObjectId // && // Poco.LotDetailStockPostType == UniqueLotDetailDTOs[lotdtl].LotDetailStockPostType; // } // ); // for (int gg = 0; gg < TempLotDetailDTOs.Count; gg++) // { // tempLotQty = tempLotQty + TempLotDetailDTOs[gg].LotDetailQuantity; // tempLotgoodQty = tempLotgoodQty + TempLotDetailDTOs[gg].LotDetailGoodQuantity; // tempLotRejectedQty = tempLotRejectedQty + TempLotDetailDTOs[gg].LotDetailRejectedQuantity; // tempLotReworkQty = tempLotReworkQty + TempLotDetailDTOs[gg].LotDetailReworkQuantity; // tempLotOherQty = tempLotOherQty + TempLotDetailDTOs[gg].LotDetailOtherQuantity; // tempLotPackQty = tempLotPackQty + 1;//Since How many packs that much time this will loop // } // UniqueLotDetailDTOs[lotdtl].LotDetailSlNo = Convert.ToInt16(lotdtl + 1); // UniqueLotDetailDTOs[lotdtl].LotDetailQuantity = tempLotQty; // UniqueLotDetailDTOs[lotdtl].LotDetailGoodQuantity = tempLotgoodQty; // UniqueLotDetailDTOs[lotdtl].LotDetailRejectedQuantity = tempLotRejectedQty; // UniqueLotDetailDTOs[lotdtl].LotDetailReworkQuantity = tempLotReworkQty; // UniqueLotDetailDTOs[lotdtl].LotDetailOtherQuantity = tempLotOherQty; // UniqueLotDetailDTOs[lotdtl].LotDetailPackQuantity = tempLotPackQty; // FinalLotDetailDTOs.Add(UniqueLotDetailDTOs[lotdtl]); // } // await lotBLL.LotDetailSave(FinalLotDetailDTOs, LoginDTO, PackNumberTag); // } // #endregion // } // #endregion // #region Stock transfer // if (BIZTransactionClass.StockPostType == 3 || BIZTransactionClass.StockPostType == 4) //(0-Inward,1-Outward,2-No Post,3-In/Out,4-In/Out/Waste) // { // if (BIZTransactionType.TransferStockPostType == 2 && BIZTransactionType.StockPostType == 0) //If Both -Inward&Outward // { // List PackDetailDTOTemps = new List(); // for (int j = 0; j < PackDetailDTOs.Count; j++) // { // for (int k = 1; k <= 2; k++) // { // string PackNumberUpdate = ""; // if (k == 1) // { // PackDetailDTO PackDetailDTOTemp = new PackDetailDTO(); // //Done by Vikash For Redmine 39838 on 02 Sep 2023 // if (MMHeadDTO.MMHeadFromQualityType == 0)//Good // { // PackDetailDTOTemp.PackDetailGoodQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // PackDetailDTOTemp.PackDetailRejectedQuantity = 0; // PackDetailDTOTemp.PackDetailReworkQuantity = 0; // PackDetailDTOTemp.PackDetailOtherQuantity = 0; // } // if (MMHeadDTO.MMHeadFromQualityType == 1)//Rejcted // { // PackDetailDTOTemp.PackDetailGoodQuantity = 0; // PackDetailDTOTemp.PackDetailRejectedQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // PackDetailDTOTemp.PackDetailReworkQuantity = 0; // PackDetailDTOTemp.PackDetailOtherQuantity = 0; // } // if (MMHeadDTO.MMHeadFromQualityType == 2)//Rework // { // PackDetailDTOTemp.PackDetailGoodQuantity = 0; // PackDetailDTOTemp.PackDetailRejectedQuantity = 0; // PackDetailDTOTemp.PackDetailReworkQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // PackDetailDTOTemp.PackDetailOtherQuantity = 0; // } // if (MMHeadDTO.MMHeadFromQualityType == 3)//Other // { // PackDetailDTOTemp.PackDetailGoodQuantity = 0; // PackDetailDTOTemp.PackDetailRejectedQuantity = 0; // PackDetailDTOTemp.PackDetailReworkQuantity = 0; // PackDetailDTOTemp.PackDetailOtherQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // } // PackDetailDTOTemp.PackDetailNetQuantity = PackDetailDTOs[j].PackDetailNetQuantity; // PackDetailDTOTemp.PackDetailQuantity = PackDetailDTOs[j].PackDetailQuantity; // PackDetailDTOTemp.PackNumberGoodQuantity = PackDetailDTOs[j].PackNumberGoodQuantity; // PackDetailDTOTemp.PackDetailGrossWeight = PackDetailDTOs[j].PackDetailGrossWeight; // PackDetailDTOTemp.PackDetailNetWeight = PackDetailDTOs[j].PackDetailNetWeight; // PackDetailDTOTemp.PackDetailTareWeight = PackDetailDTOs[j].PackDetailTareWeight; // PackDetailDTOTemp.ObjectHeaderTypeId = PackDetailDTOs[j].ObjectHeaderTypeId; // PackDetailDTOTemp.PackDetailObjectHeaderId = PackDetailDTOs[j].PackDetailObjectHeaderId; // PackDetailDTOTemp.ItemId = PackDetailDTOs[j].ItemId; // PackDetailDTOTemp.BizTransactionTypeId = PackDetailDTOs[j].BizTransactionTypeId; // PackDetailDTOTemp.SKUId = PackDetailDTOs[j].SKUId; // PackDetailDTOTemp.PackDetailRemarks = PackDetailDTOs[j].PackDetailRemarks; // PackDetailDTOTemp.ObjectTypeId = PackDetailDTOs[j].ObjectTypeId; // PackDetailDTOTemp.PackDetailObjectId = PackDetailDTOs[j].PackDetailObjectId; // PackDetailDTOTemp.OUId = PackDetailDTOs[j].OUId; // PackDetailDTOTemp.StoreId = PackDetailDTOs[j].StoreId; // PackDetailDTOTemp.PackDetailStockLedgerNumber = PackDetailDTOs[j].PackDetailStockLedgerNumber; // PackDetailDTOTemp.PackDetailStockLedgerDate = PackDetailDTOs[j].PackDetailStockLedgerDate; // PackDetailDTOTemp.PackDetailReferenceNumber = PackDetailDTOs[j].PackDetailReferenceNumber; // PackDetailDTOTemp.PackDetailReferenceDate = PackDetailDTOs[j].PackDetailReferenceDate; // PackDetailDTOTemp.PartyBranchId = PackDetailDTOs[j].PartyBranchId; // PackDetailDTOTemp.PackDetailPackNumberId = PackDetailDTOs[j].PackDetailPackNumberId; // PackDetailDTOTemp.PackDetailExciseSlno = PackDetailDTOs[j].PackDetailExciseSlno; // PackDetailDTOTemp.PackDetailStockPostType = 1; // PackDetailDTOTemp.StoreId = MMHeadDTO.FromStoreId; // PackDetailDTOTemps.Add(PackDetailDTOTemp); // //New Logic Done by Vikash for Redmine // } // else // { // PackDetailDTO PackDetailDTOTempstwo = new PackDetailDTO(); // //Done by Vikash For Redmine 39838 on 02 Sep 2023 // if (MMHeadDTO.MMHeadToQualityType == 0)//Good // { // PackDetailDTOTempstwo.PackDetailGoodQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // PackDetailDTOTempstwo.PackDetailRejectedQuantity = 0; // PackDetailDTOTempstwo.PackDetailReworkQuantity = 0; // PackDetailDTOTempstwo.PackDetailOtherQuantity = 0; // } // if (MMHeadDTO.MMHeadToQualityType == 1)//Rejected // { // PackDetailDTOTempstwo.PackDetailGoodQuantity = 0; // PackDetailDTOTempstwo.PackDetailRejectedQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // PackDetailDTOTempstwo.PackDetailReworkQuantity = 0; // PackDetailDTOTempstwo.PackDetailOtherQuantity = 0; // } // if (MMHeadDTO.MMHeadToQualityType == 2)//Rework // { // PackDetailDTOTempstwo.PackDetailGoodQuantity = 0; // PackDetailDTOTempstwo.PackDetailRejectedQuantity = 0; // PackDetailDTOTempstwo.PackDetailReworkQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // PackDetailDTOTempstwo.PackDetailOtherQuantity = 0; // } // if (MMHeadDTO.MMHeadToQualityType == 3)//Other // { // PackDetailDTOTempstwo.PackDetailGoodQuantity = 0; // PackDetailDTOTempstwo.PackDetailRejectedQuantity = 0; // PackDetailDTOTempstwo.PackDetailReworkQuantity = 0; // PackDetailDTOTempstwo.PackDetailOtherQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // } // // PackDetailDTOTempstwo.PackDetailGoodQuantity = PackDetailDTOs[j].PackDetailGoodQuantity; // PackDetailDTOTempstwo.PackDetailNetQuantity = PackDetailDTOs[j].PackDetailNetQuantity; // // PackDetailDTOTempstwo.PackDetailOtherQuantity = PackDetailDTOs[j].PackDetailOtherQuantity; // PackDetailDTOTempstwo.PackDetailQuantity = PackDetailDTOs[j].PackDetailQuantity; // // PackDetailDTOTempstwo.PackDetailRejectedQuantity = PackDetailDTOs[j].PackDetailRejectedQuantity; // // PackDetailDTOTempstwo.PackDetailReworkQuantity = PackDetailDTOs[j].PackDetailReworkQuantity; // PackDetailDTOTempstwo.PackNumberGoodQuantity = PackDetailDTOs[j].PackNumberGoodQuantity; // PackDetailDTOTempstwo.PackDetailGrossWeight = PackDetailDTOs[j].PackDetailGrossWeight; // PackDetailDTOTempstwo.PackDetailNetWeight = PackDetailDTOs[j].PackDetailNetWeight; // PackDetailDTOTempstwo.PackDetailTareWeight = PackDetailDTOs[j].PackDetailTareWeight; // PackDetailDTOTempstwo.ObjectHeaderTypeId = PackDetailDTOs[j].ObjectHeaderTypeId; // PackDetailDTOTempstwo.PackDetailObjectHeaderId = PackDetailDTOs[j].PackDetailObjectHeaderId; // PackDetailDTOTempstwo.ItemId = PackDetailDTOs[j].ItemId; // PackDetailDTOTempstwo.BizTransactionTypeId = PackDetailDTOs[j].BizTransactionTypeId; // PackDetailDTOTempstwo.SKUId = PackDetailDTOs[j].SKUId; // PackDetailDTOTempstwo.PackDetailRemarks = PackDetailDTOs[j].PackDetailRemarks; // PackDetailDTOTempstwo.ObjectTypeId = PackDetailDTOs[j].ObjectTypeId; // PackDetailDTOTempstwo.PackDetailObjectId = PackDetailDTOs[j].PackDetailObjectId; // PackDetailDTOTempstwo.OUId = PackDetailDTOs[j].OUId; // PackDetailDTOTempstwo.StoreId = PackDetailDTOs[j].StoreId; // PackDetailDTOTempstwo.PackDetailStockLedgerNumber = PackDetailDTOs[j].PackDetailStockLedgerNumber; // PackDetailDTOTempstwo.PackDetailStockLedgerDate = PackDetailDTOs[j].PackDetailStockLedgerDate; // PackDetailDTOTempstwo.PackDetailReferenceNumber = PackDetailDTOs[j].PackDetailReferenceNumber; // PackDetailDTOTempstwo.PackDetailReferenceDate = PackDetailDTOs[j].PackDetailReferenceDate; // PackDetailDTOTempstwo.PartyBranchId = PackDetailDTOs[j].PartyBranchId; // //PackDetailDTOTempstwo.PackDetailPackNumberId = PackDetailDTOs[j].PackDetailPackNumberId; // PackDetailDTOTempstwo.PackDetailExciseSlno = PackDetailDTOs[j].PackDetailExciseSlno; // PackDetailDTOTempstwo.PackDetailStockPostType = 0; // PackDetailDTOTempstwo.StoreId = MMHeadDTO.ToStoreId; // //As per Discussion with Mani Sir and Suresh Sir we dont need new PackNunber Here ,In Same packNumber this will save // //Done by Vikash on 26 Aug 2023 by Vikash // PackDetailDTOTempstwo.PackDetailPackNumberId = PackDetailDTOs[j].PackDetailPackNumberId; // PackDetailDTOTemps.Add(PackDetailDTOTempstwo); // } // } // } // if (PackDetailDTOTemps.Count > 0) // { // PackDetailDTOs = PackDetailDTOTemps; // } // } // } // #endregion // } // await packDetailBLL.PackDetailSave(PackDetailDTOs, LoginDTO, PackNumberTag); // return true; // } // catch (Exception) // { // throw; // } //} public async Task SaveAndGetLotId(LotDTO LotDTO, LoginDTO LoginDTO) { try { AutoNumberDTO AutoNumberDTO = new AutoNumberDTO(); AutoNumberDTO = await _AutoNumber.GetNumberAsync(1, "LOT", LoginDTO); LotDTO.LotId = AutoNumberDTO.StartNumber; return LotDTO.LotId; } catch (Exception) { throw; } } public T ConvertObjecttoAny(object Input) { try { return (T)Input; } catch (Exception) { throw; } } public async Task< int> GetPackNumber(PackNumberDTO PackNumberDTO, LoginDTO LoginDTO ) { try { AutoNumberDTO AutoNumberDTO = new AutoNumberDTO(); AutoNumberDTO = await _AutoNumber.GetNumberAsync(1, "PACKNUMBER", LoginDTO); PackNumberDTO.PackId = AutoNumberDTO.StartNumber; return PackNumberDTO.PackId; } catch (Exception) { throw; } } } }