Пример #1
0
        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));
                }
            }
        }
Пример #2
0
        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!"));
                    }
                }
            }
        }