public HttpResponseMessage SaveQuotationMasterDetails(object[] data) { PurchaseQuotationMaster QuotationMaster = JsonConvert.DeserializeObject <PurchaseQuotationMaster>(data[0].ToString()); List <vmQuotation> QuotationDetails = JsonConvert.DeserializeObject <List <vmQuotation> >(data[1].ToString()); int menuID = Convert.ToInt16(data[2]); string result = ""; try { if (ModelState.IsValid && QuotationMaster != null && QuotationDetails.Count > 0 && menuID != null) { result = objQuotationService.SaveQuotationMasterDetails(QuotationMaster, QuotationDetails, menuID); } else { result = ""; } } catch (Exception e) { e.ToString(); result = ""; } return(Request.CreateResponse(HttpStatusCode.OK, result)); }
public string SaveQuotationMasterDetails(PurchaseQuotationMaster QuotationMaster, List <PurchaseQuotationDetail> QuotationDetails, int menuID) { //Declerations string result = string.Empty; string customCode = string.Empty; string CustomNo = string.Empty; int RequisitionID = Convert.ToInt32(QuotationMaster.QuotationID), SDetailRowNum = 0, UDetailRowNum = 0; long FirstDigit = 0, OtherDigits = 0, nextDetailId = 0; int NextId = 0; GenericFactory_EF_QuotationMaster = new PurchaseQuotationMaster_EF(); GenericFactory_EF_QuotationDetail = new PurchaseQuotationDetail_EF(); List <PurchaseQuotationDetail> objRqDetails = new List <PurchaseQuotationDetail>(); List <InvRequisitionDetail> SobjDetails = new List <InvRequisitionDetail>(); // SDetailRowNum = Convert.ToInt32(RequisitionDetails.Where(s => s.ModelState == "Save").Count()); // UDetailRowNum = Convert.ToInt32(RequisitionDetails.Where(s => s.ModelState == "Update").Count()); try { using (_ctxCmn = new ERP_Entities()) { //Transaction Occur here************************************************ using (TransactionScope transaction = new TransactionScope()) { if (RequisitionID > 0) { //**************Master Model************************************************ //var lstInvReqMaster = GenericFactory_EF_RequisitionMaster.GetAll().FirstOrDefault(x => x.RequisitionID == RequisitionID); //lstInvReqMaster.UpdateBy = RequisitionMaster.CreateBy; //lstInvReqMaster.UpdateOn = DateTime.Now; //lstInvReqMaster.UpdatePc = HostService.GetIP(); //lstInvReqMaster.RequisitionBy = RequisitionMaster.RequisitionBy; //lstInvReqMaster.RequisitionDate = RequisitionMaster.RequisitionDate; //lstInvReqMaster.Remarks = RequisitionMaster.Remarks; //lstInvReqMaster.Purpose = RequisitionMaster.Purpose; ////*************Details Model************************************************ //if (UDetailRowNum > 0) //{ // foreach (vmRequisitionDetails ivrd in RequisitionDetails.Where(x => x.ModelState == "Update")) // { // InvRequisitionDetail objRequisitionDetail = GenericFactory_EF_RequisitionDetail.GetAll().FirstOrDefault(x => x.RequisitionID == RequisitionID && x.RequisitionDetailID == ivrd.RequisitionDetailID); // objRequisitionDetail.Qty = ivrd.Qty; // objRequisitionDetail.UpdateBy = RequisitionMaster.CreateBy; // objRequisitionDetail.UpdateOn = DateTime.Now; // objRequisitionDetail.UpdatePc = HostService.GetIP(); // objRqDetails.Add(objRequisitionDetail); // } //} //if (SDetailRowNum > 0) //{ // nextDetailId = Convert.ToInt64(GenericFactory_EF_RequisitionDetail.getMaxID("InvRequisitionDetail")); // FirstDigit = Convert.ToInt64(nextDetailId.ToString().Substring(0, 1)); // OtherDigits = Convert.ToInt64(nextDetailId.ToString().Substring(1, nextDetailId.ToString().Length - 1)); // foreach (vmRequisitionDetails ivrd in RequisitionDetails.Where(x => x.ModelState == "Save")) // { // InvRequisitionDetail objRequisitionDetail = new InvRequisitionDetail(); // objRequisitionDetail.RequisitionDetailID = Convert.ToInt64(FirstDigit + "" + OtherDigits); // objRequisitionDetail.RequisitionID = RequisitionMaster.RequisitionID; // objRequisitionDetail.ItemID = ivrd.ItemID; // objRequisitionDetail.UnitID = (int)ivrd.UnitID; // objRequisitionDetail.LotID = ivrd.LotID; // objRequisitionDetail.BatchID = ivrd.BatchID; // objRequisitionDetail.Qty = ivrd.Qty; // objRequisitionDetail.UnitPrice = ivrd.UnitPrice; // objRequisitionDetail.Amount = ivrd.Amount; // objRequisitionDetail.CreateBy = RequisitionMaster.CreateBy; // objRequisitionDetail.CreateOn = DateTime.Now; // objRequisitionDetail.IsDeleted = false; // objRequisitionDetail.CreatePc = HostService.GetIP(); // SobjDetails.Add(objRequisitionDetail); // OtherDigits++; // } //} ////RequisitionID ////**************Master Transaction Update************************************************ //if (lstInvReqMaster != null) //{ // GenericFactory_EF_RequisitionMaster.Update(lstInvReqMaster); // GenericFactory_EF_RequisitionMaster.Save(); //} ////RequisitionDetailID //// **************Details Transaction Update************************************************ //if (objRqDetails.Count != 0) //{ // GenericFactory_EF_RequisitionDetail.UpdateList(objRqDetails); // GenericFactory_EF_RequisitionDetail.Save(); //} //if (SobjDetails.Count != 0) //{ // GenericFactory_EF_RequisitionDetail.InsertList(SobjDetails); // GenericFactory_EF_RequisitionDetail.Save(); // GenericFactory_EF_RequisitionDetail.updateMaxID("InvRequisitionDetail", Convert.ToInt64(FirstDigit + "" + (OtherDigits - 1))); //} ////**************Commit Transaction************************************************ //// _ctxCmn.SaveChanges(); //transaction.Complete(); //result = customCode; } else { //Initialisation ************************************************ NextId = Convert.ToInt16(GenericFactory_EF_QuotationMaster.getMaxID("PurchaseQuotationMaster")); nextDetailId = Convert.ToInt64(GenericFactory_EF_QuotationDetail.getMaxID("PurchaseQuotationDetail")); FirstDigit = Convert.ToInt64(nextDetailId.ToString().Substring(0, 1)); OtherDigits = Convert.ToInt64(nextDetailId.ToString().Substring(1, nextDetailId.ToString().Length - 1)); CustomNo = GenericFactory_EF_QuotationMaster.getCustomCode(menuID, Convert.ToDateTime(QuotationMaster.QuotationDate), QuotationMaster.CompanyID, 1, 1); // QuotationMaster.CompanyID if ((customCode != "") || (customCode != null)) { customCode = CustomNo; } else { customCode = NextId.ToString(); } //**************Master Model************************************************ QuotationMaster.QuotationID = NextId; QuotationMaster.CreateOn = DateTime.Now; QuotationMaster.CreatePc = HostService.GetIP(); QuotationMaster.QuotationNo = customCode; //*************Details Model************************************************ foreach (PurchaseQuotationDetail ivrd in QuotationDetails) { PurchaseQuotationDetail objDetail = new PurchaseQuotationDetail(); objDetail.QuotationDetailID = Convert.ToInt64(FirstDigit + "" + OtherDigits); objDetail.QuotationID = NextId; objDetail.ItemID = ivrd.ItemID; objDetail.UnitID = (int)ivrd.UnitID; objDetail.Qty = ivrd.Qty; objDetail.UnitPrice = ivrd.UnitPrice; objDetail.Amount = ivrd.Amount; objDetail.FOBValue = ivrd.FOBValue; objDetail.TransportTypeID = ivrd.TransportTypeID; objDetail.FreightCharge = ivrd.FreightCharge; objDetail.DischargeLocationID = ivrd.DischargeLocationID; objDetail.LoadingLocationID = ivrd.LoadingLocationID; objDetail.CreateBy = QuotationMaster.CreateBy; objDetail.CreateOn = DateTime.Now; objDetail.IsDeleted = false; objDetail.CreatePc = HostService.GetIP(); objRqDetails.Add(objDetail); OtherDigits++; } //QuotationID //**************Master Transaction Save************************************************ _ctxCmn.PurchaseQuotationMasters.Add(QuotationMaster); //QuotationIDDetailID //**************Details Transaction Save************************************************ _ctxCmn.PurchaseQuotationDetails.AddRange(objRqDetails); _ctxCmn.SaveChanges(); //**************Reset Transaction************************************************ GenericFactory_EF_QuotationMaster.updateMaxID("PurchaseQuotationMaster", Convert.ToInt64(NextId)); GenericFactory_EF_QuotationMaster.updateCustomCode(menuID, DateTime.Now, 1, 1, 1); // QuotationMaster.CompanyID GenericFactory_EF_QuotationDetail.updateMaxID("PurchaseQuotationDetail", Convert.ToInt64(FirstDigit + "" + (OtherDigits - 1))); //**************Commit Transaction************************************************ transaction.Complete(); result = customCode; } } } } catch (Exception) { result = "-1"; } return(result); }