public IHttpActionResult SaveUpdateFactorySalesDeliveryOrderMasterDetail(object[] data) { string result = string.Empty; vmSalFDODetail Master = JsonConvert.DeserializeObject <vmSalFDODetail>(data[0].ToString()); List <vmSalFDODetail> Detail = JsonConvert.DeserializeObject <List <vmSalFDODetail> >(data[1].ToString()); vmCmnParameters objcmnParam = JsonConvert.DeserializeObject <vmCmnParameters>(data[2].ToString()); try { //if (ModelState.IsValid) //{ result = objDOService.SaveUpdateFactorySalesDeliveryOrderMasterDetail(Master, Detail, objcmnParam); //} } catch (Exception e) { e.ToString(); result = ""; } return(Json(new { result })); //return Request.CreateResponse(HttpStatusCode.OK, 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); }