public string SaveUpdateDC(SalDCMaster DCInfo, List <SalDCDetail> DCDetailList, vmCmnParameters objcmnParam) { GenericFactory_EF_DCMaster = new SalDCMaster_EF(); GenericFactory_EF_DCDetail = new SalDCDetail_EF(); GFactory_EF_InvStockMaster = new InvStockMaster_EF(); GFactory_EF_InvStockDetail = new InvStockDetail_EF(); GenericFactory_EF_FDOMaster = new SalFDOMaster_EF(); GenericFactory_EF_FDODetail = new SalFDODetail_EF(); GFactory_EF_InvStockTransit = new InvStockTransit_EF(); string result = ""; long NextId = Convert.ToInt64(GenericFactory_EF_DCMaster.getMaxID("SalDCMaster")); long FirstDigit = 0; long OtherDigits = 0; long nextDetailId = Convert.ToInt64(GenericFactory_EF_DCDetail.getMaxID("SalDCDetail")); FirstDigit = Convert.ToInt64(nextDetailId.ToString().Substring(0, 1)); OtherDigits = Convert.ToInt64(nextDetailId.ToString().Substring(1, nextDetailId.ToString().Length - 1)); string customCode = ""; string CustomNo = customCode = GenericFactory_EF_DCMaster.getCustomCode(objcmnParam.menuId, DCInfo.DCDate, DCInfo.CompanyID, objcmnParam.loggeduser, 1); // 1 for DB ID if (CustomNo != null) { customCode = CustomNo; } else { customCode = NextId.ToString(); } try { DCInfo.DCID = NextId; DCInfo.DCNo = customCode; DCInfo.CreateOn = DateTime.Now; DCInfo.IsActive = true; List <SalDCDetail> lstSalDCDetail = new List <SalDCDetail>(); foreach (SalDCDetail sdtl in DCDetailList) { SalDCDetail objSalDCDetail = new SalDCDetail(); //objSalDCDetail.DCDetailID = nextDetailId; objSalDCDetail.DCDetailID = Convert.ToInt64(FirstDigit + "" + OtherDigits); objSalDCDetail.DCID = NextId; objSalDCDetail.FDOID = sdtl.FDOID; objSalDCDetail.TruckNo = sdtl.TruckNo; objSalDCDetail.QuantityYds = sdtl.QuantityYds; objSalDCDetail.Roll = sdtl.Roll; objSalDCDetail.CompanyID = DCInfo.CompanyID; objSalDCDetail.CreateBy = DCInfo.CreateBy; objSalDCDetail.CreateOn = DateTime.Now; objSalDCDetail.CreatePc = HostService.GetIP(); objSalDCDetail.IsDeleted = false; objSalDCDetail.StatusBy = 1; objSalDCDetail.StatusID = 1; lstSalDCDetail.Add(objSalDCDetail); OtherDigits++; } using (TransactionScope transaction = new TransactionScope()) { /////////////////////// Start FDOMaster and FDO Detail Table Update ///////////////////////////// foreach (SalDCDetail sdcd in DCDetailList) { SalFDOMaster objSalFDOMaster = GenericFactory_EF_FDOMaster.FindBy(m => m.FDOMasterID == sdcd.FDOID).FirstOrDefault(); objSalFDOMaster.IsDCCompleted = true; GenericFactory_EF_FDOMaster.Update(objSalFDOMaster); GenericFactory_EF_FDOMaster.Save(); List <SalFDODetail> objSalFDODetail = GenericFactory_EF_FDODetail.FindBy(m => m.FDOMasterID == sdcd.FDOID).ToList(); foreach (SalFDODetail sfdod in objSalFDODetail) { sfdod.IsDCCompleted = true; GenericFactory_EF_FDODetail.Update(sfdod); GenericFactory_EF_FDODetail.Save(); } } /////////////////////// End FDOMaster and FDO Detail Table Update ///////////////////////////// /////////////////////// Start Stock Table Update ///////////////////////////// //#region Stock Hit //IEnumerable<SalFDODetail> objFDODetail = null; ////string spQuery = string.Empty; //try //{ // objFDODetail = GenericFactory_EF_FDODetail.GetAll().Select(m => new // SalFDODetail // { // ItemID = m.ItemID, // BatchID = m.BatchID, // LotID = m.LotID, // GradeID = m.GradeID, // QuantitYds = m.QuantitYds, // FDOMasterID = m.FDOMasterID, // CompanyID = m.CompanyID // }). // Where(m => m.FDOMasterID == DCInfo.FDOID).ToList(); //} //catch (Exception e) //{ // e.ToString(); //} //List<InvStockMaster> objInvStockMaster = GFactory_EF_InvStockMaster.FindBy(m => m.DepartmentID == objSalFDOMaster.DepartmentID).ToList(); //foreach (SalFDODetail sfdod in objFDODetail) //{ // InvStockMaster objStockMaster = new InvStockMaster(); // var ItemBatchFilter = objInvStockMaster.Where(x => x.ItemID == sfdod.ItemID // && sfdod.BatchID == null ? true : x.BatchID == sfdod.BatchID).ToArray(); // var TransitBatch2 = ItemBatchFilter.Where(x => sfdod.LotID == null ? true : x.LotID == sfdod.LotID).ToArray(); // objStockMaster = ItemBatchFilter.Where(x => sfdod.GradeID == null ? true : x.GradeID == sfdod.GradeID).FirstOrDefault(); // objStockMaster.IssueQty = objStockMaster.IssueQty + sfdod.QuantitYds; // GFactory_EF_InvStockMaster.Update(objStockMaster); // GFactory_EF_InvStockMaster.Save(); // ///////////////////////////////// detail insert ///////////////////////////////////// // InvStockDetail objInvStockDetail = new InvStockDetail(); // objInvStockDetail.StockID = objStockMaster.StockID; // objInvStockDetail.DepartmentID = objSalFDOMaster.DepartmentID; // objInvStockDetail.TransactionID = objSalFDOMaster.FDOMasterID; // objInvStockDetail.TransactionTypeID = objcmnParam.tTypeId??0; // objInvStockDetail.StockDate = DateTime.Now; // objInvStockDetail.ItemID = sfdod.ItemID; // objInvStockDetail.ItemTypeID = 1; // objInvStockDetail.LotID = sfdod.LotID == null ? 0 : (int)sfdod.LotID; // objInvStockDetail.BatchID = sfdod.BatchID == null ? 0 : (int)sfdod.BatchID; // objInvStockDetail.GradeID = sfdod.GradeID == null ? 0 : (int)sfdod.GradeID; // objInvStockDetail.LotNo = ""; // objInvStockDetail.SupplierID = 0; // objInvStockDetail.ReceiveQty = 0; // objInvStockDetail.ReceiveValue = 0; // objInvStockDetail.ReceiveRate = 0; // objInvStockDetail.IssueQty = sfdod.QuantitYds; // objInvStockDetail.UOMID = 0; // objInvStockDetail.IssueRate = 0; // objInvStockDetail.IssueValue = 0; // objInvStockDetail.IsActive = true; // objInvStockDetail.IssueRate = 0; // objInvStockDetail.CompanyID = sfdod.CompanyID; // objInvStockDetail.CreateBy = objSalFDOMaster.CreateBy; // objInvStockDetail.CreateOn = DateTime.Now; // objInvStockDetail.CreatePc = HostService.GetIP(); // GFactory_EF_InvStockDetail.Insert(objInvStockDetail); // GFactory_EF_InvStockDetail.Save(); //} //#endregion Stock Hit /////////////////////// End Stock Table Update ////////////////////////////// /////////////////////// Stock Transit Table Data Delete ///////////////////// //#region Stock Transit Hit //foreach (SalFDODetail sfdod in objFDODetail) //{ // List<InvStockTransit> objInvStockTransit = // GFactory_EF_InvStockTransit.FindBy(m => m.DepartmentID == objSalFDOMaster.DepartmentID // //&& m.LotID == sfdod.LotID && m.BatchID == sfdod.BatchID && m.GradeID == sfdod.GradeID // && m.ItemID == sfdod.ItemID && m.CompanyID == sfdod.CompanyID // && m.TransactionTypeID == objSalFDOMaster.FDOTypeID // && m.TransactionID == sfdod.FDOMasterID).ToList(); // GFactory_EF_InvStockTransit.DeleteList(objInvStockTransit); // GFactory_EF_InvStockTransit.Save(); //} //#endregion End Stock Transit Hit /////////////////////// End Stock Transit Table Data Delete ///////////////////// GenericFactory_EF_DCMaster.Insert(DCInfo); GenericFactory_EF_DCMaster.Save(); GenericFactory_EF_DCMaster.updateMaxID("SalDCMaster", Convert.ToInt64(NextId)); GenericFactory_EF_DCMaster.updateCustomCode(objcmnParam.menuId, DateTime.Now, DCInfo.CompanyID, 1, 1); GenericFactory_EF_DCDetail.InsertList(lstSalDCDetail); GenericFactory_EF_DCDetail.Save(); GenericFactory_EF_DCDetail.updateMaxID("SalDCDetail", Convert.ToInt64(FirstDigit + "" + (OtherDigits - 1))); transaction.Complete(); } result = customCode; } catch (Exception e) { e.ToString(); result = ""; } finally { } return(result); }
public string SaveUpdateFactorySalesDeliveryOrderMasterDetail(vmSalFDODetail Master, List <vmSalFDODetail> Detail, vmCmnParameters objcmnParam) { string result = string.Empty; using (var transaction = new TransactionScope()) { GenericFactoryFor_HDOMaster_EF = new SalHDOMaster_EF(); GenericFactoryFor_HDODetails_EF = new SalHDODetail_EF(); GenericFactoryFor_FDOMaster = new SalFDOMaster_EF(); GenericFactoryFor_FDODetails = new SalFDODetail_EF(); GFactory_EF_InvStockTransit = new InvStocTransit_Sale_EF(); GFactory_EF_InvStockMaster = new InvStockMaster_Sale_EF(); string CustomNo = string.Empty, FDONo = ""; decimal CurrentStock = 0, TransitQty = 0; long FdoMasterId = 0, FdoDetailId = 0, FirstDigit = 0, OtherDigits = 0, NextId = 0; var Masteritem = new SalFDOMaster(); var FDODetail = new List <SalFDODetail>(); var UpdateHDODetail = new List <SalHDODetail>(); var InsertStockTransit = new List <InvStockTransit>(); var item = new vmSalFDODetail(); var items = new vmSalFDODetail(); //To Update Remaining Quantity in SalHDODetail var HdoDetail = GenericFactoryFor_HDODetails_EF.GetAll(); var StockMaster = GFactory_EF_InvStockMaster.GetAll().Where(x => x.DepartmentID == objcmnParam.SelectedDepartmentID).ToList(); var StockTransit = GFactory_EF_InvStockTransit.GetAll().Where(x => x.DepartmentID == objcmnParam.SelectedDepartmentID).ToList(); //-------------------END---------------------- if (Detail.Count() > 0) { try { NextId = GFactory_EF_InvStockTransit.getMaxVal_int64("StockTransitID", "InvStockTransit"); //start new maxId FdoMasterId = Convert.ToInt64(GenericFactoryFor_FDOMaster.getMaxID("SalFDOMaster")); FdoDetailId = Convert.ToInt64(GenericFactoryFor_FDODetails.getMaxID("SalFDODetail")); FirstDigit = Convert.ToInt64(FdoDetailId.ToString().Substring(0, 1)); OtherDigits = Convert.ToInt64(FdoDetailId.ToString().Substring(1, FdoDetailId.ToString().Length - 1)); //end new maxId CustomNo = GenericFactoryFor_FDOMaster.getCustomCode(objcmnParam.menuId, DateTime.Now, objcmnParam.loggedCompany, 1, 1); // // 1 for user id and 1 for db id --- work later if (CustomNo != null) { FDONo = CustomNo; } else { FDONo = FdoMasterId.ToString(); } Masteritem = new SalFDOMaster { FDOMasterID = FdoMasterId, TransactionTypeID = objcmnParam.tTypeId, FDONo = FDONo, FDODate = DateTime.Today, HDOID = (Master.MHDOID).ToString(), PartyID = (int)Master.MPartyID, DeliveryTo = Master.MDeliveryTo, BillNo = Master.MBillNo, BillDate = Master.MBillDate, DriverName = Master.DriverName, DriverPhoneNo = Master.DriverPhoneNo, BuyerContactName = Master.BuyerContactName, BuyerContactPhoneNo = Master.BuyerContactPhoneNo, TruckNo = Master.TruckNo, CompanyID = objcmnParam.loggedCompany, DepartmentID = objcmnParam.SelectedDepartmentID, CreateBy = objcmnParam.loggeduser, CreateOn = DateTime.Now, CreatePc = HostService.GetIP(), IsActive = true, IsDeleted = false, StatusBy = objcmnParam.loggeduser, StatusID = 1, IsDCCompleted = false }; for (int i = 0; i < Detail.Count(); i++) { item = Detail[i]; CurrentStock = 0; TransitQty = 0; //*************************To Check Stock Quantity in InvStockMaster************************ var StockMasterTemp1 = StockMaster.Where(s => item.BatchId == null ? true : s.BatchID == item.BatchId).ToList(); var StockMasterTemp2 = (from x in StockMasterTemp1.Where(x => item.LotId == null ? true : x.LotID == item.LotId) where item.ItemGradeID == null ? true : x.GradeID == item.ItemGradeID select new InvStockMaster { DepartmentID = x.DepartmentID, LotID = x.LotID, BatchID = x.BatchID, GradeID = x.GradeID, ItemID = x.ItemID, CurrentStock = x.CurrentStock }).ToList(); foreach (InvStockMaster j in StockMasterTemp2.Where(s => s.ItemID == item.ItemID)) { CurrentStock = CurrentStock + (decimal)j.CurrentStock; //break; } ///// checking transit table from database data////////////// var TransitReal1 = StockTransit.Where(x => x.ItemID == item.ItemID).ToList(); var TransitReal2 = TransitReal1.Where(x => item.BatchId == null ? true : x.BatchID == item.BatchId).ToList(); var TransitReal = (from t in TransitReal2.Where(x => item.LotId == null ? true : x.LotID == item.LotId) where item.ItemGradeID == null ? true : t.GradeID == item.ItemGradeID select t.TransitQty).Sum(); /////////// checking data from FDO Detail/////////////////// var TransitTemp1 = InsertStockTransit.Where(x => x.ItemID == item.ItemID).ToList(); var TransitTemp2 = TransitTemp1.Where(x => item.BatchId == null ? true : x.BatchID == item.BatchId).ToList(); var TransitTemp = (from t in TransitTemp2.Where(x => item.LotId == null ? true : x.LotID == item.LotId) where item.ItemGradeID == null ? true : t.GradeID == item.ItemGradeID select t.TransitQty).Sum(); TransitQty = (decimal)(TransitReal + TransitTemp); //***************************************END******************************************* //**********************************Detail Entry*************************************** if ((CurrentStock - TransitQty) >= item.QuantityYds && item.QuantityYds > 0) { var Detailitem = new SalFDODetail { FDODetailsID = Convert.ToInt64(FirstDigit + "" + OtherDigits), FDOMasterID = FdoMasterId, ItemID = (long)item.ItemID, NetQtyKg = (decimal)item.NetQuantityKg, PIID = (int)item.PIID, QuantitYds = (decimal)item.QuantityYds, QuantityKg = (decimal)item.Quantity, GrossQtyKg = (decimal)item.GrossQuantityKg, Amount = (decimal)item.Amount, Rate = (decimal)item.UnitPrice, RollNo = (decimal)item.Roll, LotID = item.LotId, BatchID = item.BatchId, GradeID = item.ItemGradeID, CreateBy = objcmnParam.loggeduser, CreateOn = DateTime.Now, CreatePc = HostService.GetIP(), IsDeleted = false, IsDCCompleted = false }; //***************************************END******************************************* var InsertTran = new InvStockTransit { StockTransitID = NextId, TransactionID = FdoMasterId, TransactionTypeID = objcmnParam.tTypeId, TransitQty = item.QuantityYds, ItemID = item.ItemID, DepartmentID = objcmnParam.SelectedDepartmentID, LotID = item.LotId ?? 0, BatchID = item.BatchId ?? 0, GradeID = Convert.ToInt16(item.ItemGradeID ?? 0), IsDeleted = false, IsComplete = false, CompanyID = objcmnParam.loggedCompany, CreateBy = objcmnParam.loggeduser, CreateOn = DateTime.Now, CreatePc = HostService.GetIP() }; InsertStockTransit.Add(InsertTran); NextId = NextId + 1; //******************To Update Remaining Quantity in SalHDODetail****************** foreach (SalHDODetail u in HdoDetail.Where(u => u.HDODetailID == item.HDODetailID)) { if (u.RemainingQty > 0) { if (item.RemainingQty > 0) { u.RemainingQty = item.RemainingQty; } else { u.RemainingQty = item.RemainingQty; u.IsFDOCompleted = true; } UpdateHDODetail.Add(u); break; } } //************************************END************************************ FDODetail.Add(Detailitem); OtherDigits++; } else { result = "1"; throw new Exception(); // if any product don't support by stock, go back. } } if (Masteritem != null) { GenericFactoryFor_FDOMaster.Insert(Masteritem); GenericFactoryFor_FDOMaster.Save(); GenericFactoryFor_FDOMaster.updateMaxID("SalFDOMaster", Convert.ToInt64(FdoMasterId)); GenericFactoryFor_FDOMaster.updateCustomCode(objcmnParam.menuId, DateTime.Now, objcmnParam.loggedCompany, 1, 1); } if (FDODetail != null && FDODetail.Count != 0) { GenericFactoryFor_FDODetails.InsertList(FDODetail.ToList()); GenericFactoryFor_FDODetails.Save(); GenericFactoryFor_FDODetails.updateMaxID("SalFDODetail", Convert.ToInt64(FirstDigit + "" + (OtherDigits - 1))); } if (UpdateHDODetail != null && UpdateHDODetail.Count != 0) { GenericFactoryFor_HDODetails_EF.UpdateList(UpdateHDODetail.ToList()); GenericFactoryFor_HDODetails_EF.Save(); } if (InsertStockTransit != null || InsertStockTransit.Count() != 0) { GFactory_EF_InvStockTransit.InsertList(InsertStockTransit.ToList()); GFactory_EF_InvStockTransit.Save(); } transaction.Complete(); result = FDONo; } catch (Exception e) { e.ToString(); } } } return(result); }