public HttpResponseMessage GetBill(string billno, long fiyearid) { OutwardVM iow = null; var gat = new GetAttributeController(); long cid = Convert.ToInt64(gat.GetCopmpanyId(User.Identity)); long bid = Convert.ToInt64(gat.GetBranchId(User.Identity)); using (SpareDBContext db = new SpareDBContext()) { try { iow = db.OutwardHDRs.Where(a => a.CompanyID == cid && a.FinyearID == fiyearid && a.BranchID == bid && a.OutwardNo == billno).ToList().Select(a => new OutwardVM() { OutwardID = a.OutwardID, OutwardNo = a.OutwardNo, OutwardDate = a.OutwardDate.ToString("dd-MM-yyyy"), CompanyID = a.CompanyID, FinyearID = a.FinyearID, BranchID = a.BranchID, SubledgerID = a.SubledgerID, PartyAddress = db.BrunchParties.FirstOrDefault(b => b.SubLedgerID == a.SubledgerID && b.BranchID == a.BranchID).Address, PartyGSTIN = db.BrunchParties.FirstOrDefault(b => b.SubLedgerID == a.SubledgerID && b.BranchID == a.BranchID).GSTNo, PartyStateCode = db.BrunchParties.FirstOrDefault(b => b.SubLedgerID == a.SubledgerID && b.BranchID == a.BranchID).State.Code, StateName = db.BrunchParties.FirstOrDefault(b => b.SubLedgerID == a.SubledgerID && b.BranchID == a.BranchID).State.StateName, BillTypeID = a.BillTypeID, TotalGross = a.TotalGross, TotalDiscount = a.TotalDiscount, TotalCGST = a.TotalCGST, TotalSGST = a.TotalSGST, TotalIGST = a.TotalIGST, TotalTCSAmount = a.TotalTCSAmount, IsTCS = a.IsTCS, RoundOff = a.RoundOff, TotalOtherCharges = a.TotalOtherCharges, TotalNetAmt = a.TotalNetAmt, TotalTaxable = a.TotalTaxable, OutwadDetailsVM = a.OutwardDTLs.ToList().Select(b => new OutwadDetailVM() { LineID = b.LineID, OutwardID = b.OutwardID, ItemID = b.ItemID, ItemCode = b.Item.ItemCode, ItemName = b.Item.ItemName, StockID = b.StockID, RackNo = b.ItemStock.RackNo, MRP = b.MRP, Qty = b.Qty, Rate = b.Rate, Gross = b.Gross, DiscPercent = b.DiscPercent, DiscAmt = b.DiscAmt, Taxable = b.Taxable, GSTPercent = b.Item.GST, CGSTPercent = b.CGSTPercent, CGSTAmt = b.CGSTAmt, SGSTPercent = b.SGSTPercent, SGSTmt = b.SGSTmt, IGSTPercent = b.IGSTPercent, IGSTAmt = b.IGSTAmt, NetAmt = b.NetAmt }).ToList() }).FirstOrDefault(); return(Request.CreateResponse(HttpStatusCode.OK, iow)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } } }
public HttpResponseMessage SaveSaleBill(OutwardVM o) { var gat = new GetAttributeController(); long cid = Convert.ToInt64(gat.GetCopmpanyId(User.Identity)); long bid = Convert.ToInt64(gat.GetBranchId(User.Identity)); string bcode = gat.GetBranchCode(User.Identity); ForPrintVM p = new ForPrintVM(); string itemCodeList = string.Empty; using (SpareDBContext db = new SpareDBContext()) { OutwardHDR owh = null; List <OutwardDTL> odtls = new List <OutwardDTL>(); using (var transac = db.Database.BeginTransaction()) { try { if (o.OutwardID > 0) { owh = db.OutwardHDRs.FirstOrDefault(a => a.OutwardID == o.OutwardID && a.CompanyID == o.CompanyID && a.FinyearID == o.FinyearID && a.BranchID == bid); p.EntityCode = owh.OutwardNo; } else { owh = new OutwardHDR(); var s = GetOutwardNo(cid, bid, o.FinyearID); db.Entry(owh).State = System.Data.Entity.EntityState.Added; owh.OutwardSrl = Convert.ToInt64(s.Split('$')[0]); owh.OutwardNo = p.EntityCode = s.Split('$')[1]; owh.CompanyID = cid; owh.BranchID = bid; owh.FinyearID = o.FinyearID; } owh.OutwardDate = Convert.ToDateTime(o.OutwardDate); owh.BillTypeID = o.BillTypeID; owh.SubledgerID = o.SubledgerID; owh.PurchaseOrderID = o.PurchaseOrderID != null ? o.PurchaseOrderID : null; #region fro existing Outward Detail and Item Stock if (owh.OutwardDTLs != null && owh.OutwardDTLs.Count > 0) { owh.OutwardDTLs.ForEach(a => { var ist = db.ItemStocks.FirstOrDefault(b => b.StockID == a.StockID); if (ist != null) { ist.SaleQty -= a.Qty; ist.ClosingQty += a.Qty; } }); db.OutwardDTLs.RemoveRange(owh.OutwardDTLs); db.SaveChanges(); } #endregion #region for new Details Entry if (o.OutwadDetailsVM != null && o.OutwadDetailsVM.Count > 0) { long stid = 0; o.OutwadDetailsVM.ForEach(a => { stid = 0; var st = db.ItemStocks.FirstOrDefault(b => b.ItemID == a.ItemID && b.CompanyID == cid && b.BranchID == bid && b.FinyearID == owh.FinyearID && b.ClosingQty >= a.Qty); if (st != null) { stid = st.StockID; st.SaleQty += a.Qty; st.ClosingQty -= a.Qty; //db.SaveChanges(); odtls.Add( new OutwardDTL() { ItemID = a.ItemID, StockID = stid, RackNo = a.RackNo, MRP = a.MRP, Qty = a.Qty, Rate = a.Rate, Gross = a.Gross, DiscPercent = a.DiscPercent, DiscAmt = a.DiscAmt, Taxable = a.Taxable, CGSTPercent = a.CGSTPercent, CGSTAmt = a.CGSTAmt, SGSTPercent = a.SGSTPercent, SGSTmt = a.SGSTmt, IGSTPercent = a.IGSTPercent, IGSTAmt = a.IGSTAmt, NetAmt = a.NetAmt }); } else { if (string.IsNullOrEmpty(itemCodeList)) { itemCodeList = a.ItemCode; } else { itemCodeList += "," + a.ItemCode; } } }); owh.OutwardDTLs.AddRange(odtls); } owh.TotalGross = odtls.Sum(a => a.Gross); owh.TotalDiscount = odtls.Sum(a => a.DiscAmt); owh.TotalTaxable = odtls.Sum(a => a.Taxable); owh.TotalCGST = odtls.Sum(a => a.CGSTAmt); owh.TotalSGST = odtls.Sum(a => a.SGSTmt); owh.TotalIGST = odtls.Sum(a => a.IGSTAmt); owh.TotalNetAmt = o.TotalNetAmt; owh.RoundOff = o.RoundOff; owh.TotalTCSAmount = o.TotalTCSAmount; owh.IsTCS = o.IsTCS; #endregion if (odtls.Count == o.OutwadDetailsVM.Count) { db.SaveChanges(); p.EntityID = owh.OutwardID; transac.Commit(); if (o.OutwardID > 0) { return(Request.CreateResponse(HttpStatusCode.OK, p)); } return(Request.CreateResponse(HttpStatusCode.Created, p)); } else { transac.Rollback(); return(Request.CreateResponse(HttpStatusCode.BadRequest, "Insufficient Closing Qty! Please remove or edite the bill items code (" + itemCodeList + ")")); } } catch (Exception ex) { transac.Rollback(); return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Internal Server Error!")); } } } }