public JsonResult AcknoledgementData(TransportAgencyandFareSetupVM trAcknowledge)
        {
            //int GRNo;
            //var a = db.POSMReceives.Max(p => p.GRNO);
            //GRNo = Convert.ToInt32(a + 1);
            bool   status = false;
            string mes    = "";

            if (ModelState.IsValid)
            {
                try
                {
                    TransportAgencyandFareSetup v = db.TransportAgencyandFareSetups.SingleOrDefault(x => x.ChallanNumber == trAcknowledge.ChallanNumber);
                    v.VechileNo           = trAcknowledge.VechileNo;
                    v.AcknowledgementDate = trAcknowledge.AcknowledgementDate;
                    v.Status = "Yes";
                    v.ActualAcknowledgementDate = System.DateTime.Now;
                    v.UpdatedBy       = User.Identity.Name;
                    v.UpdatedDate     = System.DateTime.Now;
                    v.EmptyReturn     = trAcknowledge.EmptyReturn;
                    db.Entry(v).State = EntityState.Modified;
                    db.SaveChanges();
                    status = true;
                    return(new JsonResult {
                        Data = new { status = status, mes = mes }
                    });
                }
                catch (Exception ex)
                {
                    return(Json(new { status = "error", message = "Not Updated" }));
                    //throw ex;
                }
            }
            else
            {
                status = false;
            }
            return(new JsonResult {
                Data = new { status = status, mes = mes }
            });                                                                 //, v = v } };
        }
Ejemplo n.º 2
0
        public ActionResult SaveReturn(ReturnmentVM R)
        {
            var w = (from y in db.UserLogins
                     where y.UserID.ToString() == User.Identity.Name
                     select new { y.WorkStationID }).FirstOrDefault();
            var    wn        = db.Warehouses.Where(x => x.WarehouseID == w.WorkStationID).FirstOrDefault();
            string s1        = w.WorkStationID.ToString();
            string s2        = string.Concat(s1 + "3000000");
            string s3        = string.Concat(s1 + "5000000");
            int    vRID      = Convert.ToInt32(s2);
            int    MaxCashID = Convert.ToInt32(s3);
            bool   status    = false;
            string mes       = "";
            //int  = db.Returnments.Max(p=>p.ReturnmentID)+1;
            var V = (from x in db.Customers where x.CustomerID == R.CustomerID select x).FirstOrDefault();

            var MvrID         = (from n in db.Returnments where n.WarehouseID == w.WorkStationID select n.ReturnmentID).DefaultIfEmpty(vRID).Max();
            int vrID          = MvrID + 1;
            int v             = vrID;
            var PTID          = (from x in db.ProductTransactions where x.WarehouseID == w.WorkStationID select x.TransactionNo).Max();
            int TrID          = (PTID + 1);
            var maxCasettleId = (from n in db.CashSettlements where n.WarehouseID == w.WorkStationID select n.CashSettlementID).DefaultIfEmpty(MaxCashID).Max();

            csID = Convert.ToInt32(maxCasettleId + 1);
            decimal securityAmt        = 0;
            decimal securitywithRebate = 0;
            decimal diffamt            = 0;
            decimal negload            = 0;

            if (ModelState.IsValid)
            {
                using (PEPSIEntities dc = new PEPSIEntities())
                {
                    CommonChk cm = new CommonChk();

                    Returnment dbr = new Returnment
                    {
                        WarehouseID    = R.WarehouseID,
                        ReturnmentID   = vrID,
                        CustomerID     = R.CustomerID,
                        Reasons        = R.Reasons,
                        RefNumber      = R.RefNumber,
                        ReturnDate     = DateTime.Today,//R.ReturnDate,
                        ReturnTypeID   = R.ReturnTypeID,
                        ReturnGoodsQty = R.ReturnGoodsQty,
                        InAmount       = R.InAmount,
                        AdjustedAmt    = R.AdjustedAmt,
                        CreateDate     = DateTime.Now,
                        CreateBy       = User.Identity.Name
                    };
                    dc.Returnments.Add(dbr);
                    if (R.FareAmt > 0)
                    {
                        var CustName = (from x in db.Customers where x.CustomerID == R.CustomerID select x).FirstOrDefault();
                        TransportAgencyandFareSetup tf = new TransportAgencyandFareSetup();
                        {
                            tf.WarehouseID   = R.WarehouseID;
                            tf.CustomerName  = CustName.CustomerName.ToString();
                            tf.Address       = CustName.CustomerAddress1;
                            tf.TAID          = (int)R.TAID;
                            tf.ChallanNumber = vrID;
                            tf.FareAmnt      = (decimal)R.FareAmt;
                            tf.VechileNo     = R.VechileNo;
                            tf.EnteredBy     = User.Identity.Name;
                            tf.EnteredDate   = DateTime.Now;
                            tf.ChallanDate   = DateTime.Today;
                            tf.TotalCases    = R.ReturnGoodsQty;
                            tf.Status        = "No";
                            tf.Remarks       = "Returned Hired Truck";
                            tf.EmptyReturn   = "Yes";
                        }
                        dc.TransportAgencyandFareSetups.Add(tf);
                    }
                    if (R.ReturnTypeID == 14)
                    {
                        foreach (var i in R.listreturndetail)

                        {
                            decimal countQtywithRebate        = 0;
                            int     countQtywithRebatePlastic = 0;
                            countQtywithRebate        = (decimal)i.ReturnQty + (decimal)i.RebateQty;
                            countQtywithRebatePlastic = (int)i.Packsize + (int)i.RebatePlastic;
                            decimal xxx = cm.GetSecurityAmount((int)i.ProductID, (decimal)i.ReturnQty, (int)i.Packsize);
                            decimal xx  = cm.GetSecurityAmount((int)i.ProductID, countQtywithRebate, countQtywithRebatePlastic);
                            securityAmt        = securityAmt + xxx;
                            securitywithRebate = securitywithRebate + xx;
                            diffamt            = securitywithRebate - securityAmt;
                        }
                    }

                    decimal cramt             = 0;
                    decimal drinksamount      = (decimal)R.InAmount - securityAmt;
                    decimal cramtsub          = (decimal)R.InAmount - (decimal)R.AdjustedAmt; // Unloadcharge is negetive
                    decimal cramtadd          = (decimal)R.InAmount + (decimal)R.AdjustedAmt;
                    decimal totsecurityamount = securityAmt + diffamt;
                    if (R.ReturnTypeID == 13)
                    {
                        cramt       = cramtadd;
                        securityAmt = (decimal)R.InAmount;
                    }
                    else
                    {
                        cramt = cramtsub;
                    }
                    if (R.ReturnTypeID != 13) // Not Empty Return
                    {
                        ProductTransaction dm = new ProductTransaction();
                        {
                            dm.TransactionTypeID = R.ReturnTypeID;
                            dm.TransactionNo     = TrID;//
                            dm.WarehouseID       = R.WarehouseID;
                            dm.FromWarehouse     = R.WarehouseID;
                            //dm.ToWarehouse = S.ToWarehouse;
                            dm.TransactionDate = DateTime.Today;
                            dm.ReferenceNo     = vrID.ToString();
                            if (R.ReturnTypeID != 13)
                            {
                                dm.Status = "R";
                            }
                            //else
                            //{
                            //    dm.Status = "A";
                            //}
                            //cuser = User.Identity.Name
                            dm.CreatedBy   = User.Identity.Name;
                            dm.CreatedDate = DateTime.Now;
                        }
                        dc.ProductTransactions.Add(dm);
                    }
                    // Customer Ledger
                    if (R.ReturnTypeID != 12)
                    {
                        CustomerLedgerDetail cld = new CustomerLedgerDetail();
                        {
                            cld.WarehouseID       = R.WarehouseID;
                            cld.CustomerID        = (int)R.CustomerID;
                            cld.TransactionNo     = "RTN" + vrID.ToString();
                            cld.TransactionTypeID = R.ReturnTypeID;
                            cld.RefNumber1        = R.RefNumber.ToString();
                            cld.TransactionDate   = DateTime.Today;
                            cld.CrAmount          = cramt;//R.InAmount;
                            cld.DrAmount          = 0;
                            cld.DebitCredit       = "C";
                            cld.Narration         = "Returnment Amount#" + cramt /*R.InAmount*/ + " to Customer" + cld.CustomerID;
                            cld.CreateBy          = User.Identity.Name;
                            cld.CreateDate        = System.DateTime.Now;
                        }
                        dc.CustomerLedgerDetails.Add(cld);
                        var            m  = (from x in db.Customers where x.CustomerID == R.CustomerID select x).FirstOrDefault();
                        CashSettlement cs = new CashSettlement();
                        cs.WarehouseID            = R.WarehouseID;
                        cs.CustomerID             = (int)R.CustomerID;
                        cs.CashSettlementID       = csID;
                        cs.CashSettlementDate     = DateTime.Today;
                        cs.DeliveryChallanDate    = DateTime.Today;
                        cs.OrderID                = vrID;// R.ReturnmentID;
                        cs.DeliveryChallanNumbers = 0;
                        cs.TransactionNo          = vrID;
                        cs.TotalAmount            = cramt;
                        cs.ReceivedAmount         = cramt;
                        cs.CustomerExecutiveID    = m.CustomerExecutiveID;
                        if (R.ReturnTypeID == 13)
                        {
                            cs.EmptyReturnLoadCharge = R.AdjustedAmt;
                            cs.SecurityAmount        = -R.InAmount;
                        }
                        else
                        {
                            // cs.FinishGoodsUnloadCharge = R.AdjustedAmt;
                            cs.ReturnFGCharge = R.AdjustedAmt;
                            cs.SecurityAmount = -totsecurityamount;
                        }

                        cs.CreateBy   = User.Identity.Name;
                        cs.CraeteDate = DateTime.Now;
                        dc.CashSettlements.Add(cs);

                        // var cb = db.spCustomerBalanceUpdate(R.CustomerID, "R", cramt/*R.InAmount*/);

                        decimal vInvAmt  = cramt - securityAmt;
                        decimal vBookAmt = 0;
                        decimal vCurBal  = cramt + diffamt;
                        if (R.ReturnTypeID == 14)
                        {
                            negload = -(decimal)R.AdjustedAmt;
                        }
                        else
                        {
                            negload = (decimal)R.AdjustedAmt;
                        }
                        decimal vChargeAmount   = negload;
                        decimal vSecurityAmt    = securityAmt + diffamt;// securitywithRebate;
                        decimal vRebate         = 0;
                        decimal vFare           = (decimal)R.FareAmt;
                        decimal VactuaInvAmount = vInvAmt - negload;// (decimal)R.AdjustedAmt; // without loaduloadcharge


                        db.spUpdateDBsInvoiceValue(
                            R.CustomerID,
                            "S",
                            vCurBal,
                            vCurBal,
                            VactuaInvAmount,
                            vBookAmt,
                            vSecurityAmt,
                            vChargeAmount,
                            vFare,
                            vRebate,
                            vrID
                            );
                    }
                    foreach (var i in R.listreturndetail)
                    {
                        var     q           = (from x in db.Products where x.ProductID == i.ProductID select x).FirstOrDefault();
                        int     conf        = q.ConversionFactor;
                        decimal totpcqty    = (decimal)i.ReturnQty * conf;
                        int     csqty       = (Convert.ToInt32(Math.Round(totpcqty)) / conf);
                        int     pcqty       = (Convert.ToInt32(Math.Round(totpcqty)) % conf);
                        decimal totrebpcqty = (decimal)i.RebateQty * conf;
                        int     rebcsqty    = (Convert.ToInt32(Math.Round(totrebpcqty)) / conf);
                        int     rebpcqty    = (Convert.ToInt32(Math.Round(totrebpcqty)) % conf);

                        if (R.ReturnTypeID != 13)
                        {
                            ProductTransactionDetail ptd = new ProductTransactionDetail();
                            decimal qty = (decimal)i.ReturnQty + (decimal)i.RebateQty;
                            int     s   = q.ConversionFactor;
                            // decimal qt = Math.Round((decimal)(i.ReturnQty) * s, 2);
                            decimal qt         = Math.Round((decimal)(qty) * s, 2);
                            int     pcquantity = (Convert.ToInt32(Math.Round(qt)) % s);
                            int     casesqty   = (Convert.ToInt32(Math.Round(qt)) / s);
                            ptd.WarehouseID        = R.WarehouseID;
                            ptd.TransactionNo      = TrID;
                            ptd.ProductID          = (int)i.ProductID;
                            ptd.Quantity           = (int)qt;// (int)i.ReturnQty;
                            ptd.PlasticBoxQuantity = (int)i.Packsize;
                            ptd.BatchNo            = i.BatchNo;
                            dc.ProductTransactionDetails.Add(ptd);

                            StockBatchDetail sbd = new StockBatchDetail();
                            sbd.WarehouseID        = R.WarehouseID;
                            sbd.TransactionNo      = vrID;
                            sbd.TransactionDate    = System.DateTime.Today;
                            sbd.ProductID          = (int)i.ProductID;
                            sbd.Quantity           = (int)qt;// (int)i.ReturnQty;
                            sbd.PlasticBoxQuantity = i.Packsize;
                            sbd.TransactionType    = "Return Product";
                            sbd.BatchNo            = (int)i.BatchNo;
                            sbd.CreateBy           = User.Identity.Name;
                            sbd.CreateDate         = System.DateTime.Now;
                            dc.StockBatchDetails.Add(sbd);
                            if (R.ReturnTypeID == 14)
                            {
                                var peb = db.spProductBalanceUpdate(i.ProductID, R.WarehouseID, (int)qt, 0, 0, 0, 0);// (int)i.ReturnQty);
                            }
                            ;
                        }
                        ;
                        ReturnmentDetail rd = new ReturnmentDetail();
                        rd.WarehouseID   = R.WarehouseID;
                        rd.ReturnmentID  = vrID;// R.ReturnmentID;
                        rd.ProductID     = i.ProductID;
                        rd.ReturnQty     = i.ReturnQty;
                        rd.Amount        = i.Amount;
                        rd.Packsize      = i.Packsize;
                        rd.BatchNo       = i.BatchNo;
                        rd.RebateQty     = i.RebateQty;
                        rd.RebatePlastic = i.RebatePlastic;
                        rd.SchemeID      = i.SchemeID;
                        dc.ReturnmentDetails.Add(rd);

                        if (R.ReturnTypeID != 12)
                        {
                            CashSettlementDetail cd = new CashSettlementDetail();
                            var ratedata            = db.ProductRateDetails.Where(x => x.ProductRateID == V.ProductRateID && x.ProductID == i.ProductID).FirstOrDefault();
                            // double xva = .2;
                            cd.WarehouseID      = R.WarehouseID;
                            cd.CashSettlementID = csID;
                            cd.AlternateReturnedFilledQuantity = (int)i.RebateQty;
                            cd.ProductID = (int)i.ProductID;
                            cd.UnitPrice = ratedata.UnitPrice;
                            cd.AlternateAgencyCommission = ratedata.AlternateAgencyCommission;
                            cd.AlternateUnitPrice        = ratedata.AlternateUnitPrice;
                            cd.MRPRate = ratedata.MRPRate;
                            cd.AlternateRebateAmount     = 0;
                            cd.AlternateGrossSalesAmount = 0;
                            cd.VATAmount = 0;
                            cd.SchemeID  = (int)i.SchemeID;
                            cd.ReturnedPlasticBoxSecurity = 0;// (decimal)i.Amount* (decimal)xva;
                            //cd.UnitPrice =
                            if (R.ReturnTypeID == 13)
                            {
                                //cd.ReturnedAlternateSecurityDeposit = (decimal)i.Amount;
                                cd.ReturnedQuantity                 = pcqty;
                                cd.AlternateReturnedQuantity        = csqty;
                                cd.ReturnedPlasticBoxQuantity       = (int)i.Packsize;
                                cd.ReturnedSecurityDeposit          = q.SecurityDeposit;
                                cd.ReturnedAlternateSecurityDeposit = q.AlternateSecurityDeposit;
                                cd.ReturnedPlasticBoxSecurity       = q.PlasticBoxSecurity;
                            }
                            else
                            {
                                cd.AlternateReturnedFilledQuantity  = csqty;    // (int)i.ReturnQty;
                                cd.ReturnedFilledQuantity           = pcqty;
                                cd.AlternateReturnedRebateQuantity  = rebcsqty; // (int)i.RebateQty;
                                cd.ReturnedRebateQuantity           = rebpcqty;
                                cd.ReturnedPlasticBoxQuantity       = (int)i.Packsize + (int)i.RebatePlastic;
                                cd.ReturnedSecurityDeposit          = q.SecurityDeposit;
                                cd.ReturnedAlternateSecurityDeposit = q.AlternateSecurityDeposit;
                                cd.ReturnedPlasticBoxSecurity       = q.PlasticBoxSecurity;
                            }

                            dc.CashSettlementDetails.Add(cd);
                        }


                        //if (R.ReturnTypeID == 14)
                        //{
                        //    var pb = db.spProductBalanceUpdate(i.ProductID, R.WarehouseID, (int)i.ReturnQty, 0, 0, 0, 0);

                        //}
                    }
                    ;
                    dc.SaveChanges();
                    status = true;
                    dc.Dispose();
                }
                ModelState.Clear();
            }
            else

            {
                status = false;
            }
            return(new JsonResult {
                Data = new { status = status, mes = mes, v = v }
            });
        }
Ejemplo n.º 3
0
        public ActionResult SaveData(StockVM S)
        {
            var w = (from y in db.UserLogins
                     where y.UserID.ToString() == User.Identity.Name
                     select new { y.WorkStationID }).FirstOrDefault();
            var wn = db.Warehouses.Where(x => x.WarehouseID == w.WorkStationID).FirstOrDefault();

            //  var PTID = (from x in db.OrderBankSummaries select x.SalesOrderNO).DefaultIfEmpty(610000000).Max();
            //  PIDMax = (PTID + 1);
            string s1      = w.WorkStationID.ToString();
            string s2      = string.Concat(s1 + "0000000");
            string s3      = string.Concat(s1 + Convert.ToString(DateTime.Now.Year) + "000");
            string plantfl = wn.PlantFlag;
            int    batchno = Convert.ToInt32(s3);
            int    Trno    = Convert.ToInt32(s2);
            bool   status  = true;
            string mes     = "";
            int    PIDMax;
            var    PTID = (from x in db.ProductTransactions where x.WarehouseID == wn.WarehouseID select x.TransactionNo).DefaultIfEmpty(Trno).Max();

            PIDMax = (PTID + 1);
            int v = PIDMax;

            if (ModelState.IsValid)
            {
                try
                {
                    using (PEPSIEntities dc = new PEPSIEntities())
                    {
                        CommonChk          ck = new CommonChk();
                        ProductTransaction dm = new ProductTransaction();
                        {
                            // Here Id   Primary Key of DB table auto increase
                            //var PTID = db.ProductTransactions.DefaultIfEmpty(100).Max(p => p.TransactionNo);
                            dm.TransactionTypeID = S.TransactionTypeID;
                            dm.TransactionNo     = PIDMax;//
                            dm.WarehouseID       = S.WarehouseID;
                            dm.FromWarehouse     = S.WarehouseID;
                            dm.ToWarehouse       = S.ToWarehouse;
                            dm.TransactionDate   = DateTime.Today;
                            dm.ReferenceNo       = S.ReferenceNo;
                            dm.Remarks           = S.Remarks;
                            if (S.TransactionTypeID != 1)
                            {
                                if (S.TransactionTypeID == 1)
                                {
                                    dm.Status = "T";
                                }
                                if (S.TransactionTypeID == 6)
                                {
                                    dm.Status = "D";
                                }
                                if (S.TransactionTypeID == 10)
                                {
                                    dm.Status = "B";
                                }
                                if (S.TransactionTypeID == 11)
                                {
                                    dm.Status = "W";
                                }
                            }
                            else
                            {
                                dm.Status = "A";
                            }
                            //cuser = User.Identity.Name
                            dm.CreatedBy     = User.Identity.Name;
                            dm.CreatedDate   = DateTime.Now;
                            dm.StoreLocation = S.StoreLocation;
                        }
                        dc.ProductTransactions.Add(dm);
                        // Transfer Note
                        if (S.TransactionTypeID == 2)
                        {
                            ProductTransferNote ptn = new ProductTransferNote();
                            {
                                var PTNoteID = (from x in db.ProductTransferNotes where x.WarehouseID == w.WorkStationID select x.SLNo).DefaultIfEmpty(1).Max();
                                int TrNoteId = Convert.ToInt32((PTNoteID)) + 1;
                                ptn.WarehouseID   = S.WarehouseID;
                                ptn.TransactionNo = PIDMax;
                                ptn.VehicleID     = S.VehicleID;
                                if (S.VehicleID == 1)
                                {
                                    ptn.DriverID = 0;
                                }
                                else
                                {
                                    ptn.DriverID = S.DriverID;
                                }
                                ptn.Remarks    = S.Remarks;
                                ptn.SLNo       = TrNoteId;
                                ptn.CreateBy   = User.Identity.Name;
                                ptn.CreateDate = DateTime.Now;
                            }
                            dc.ProductTransferNotes.Add(ptn);
                        }
                        // Agency Fare Amount
                        if (S.VehicleID == 1 && S.TransactionTypeID == 2)
                        {
                            TransportAgencyandFareSetup tf = new TransportAgencyandFareSetup();


                            {
                                tf.WarehouseID   = S.WarehouseID;
                                tf.TAID          = (int)S.TAID;
                                tf.ChallanNumber = PIDMax;
                                tf.ChallanDate   = DateTime.Today;
                                tf.CustomerName  = ck.GetCustomerName((int)S.ToWarehouse, "N");
                                tf.Address       = ck.GetCustomerName((int)S.ToWarehouse, "N");
                                tf.VechileNo     = S.VehicleID.ToString();
                                tf.FareAmnt      = (decimal)S.FareAmnt;
                                tf.Remarks       = "Hired Truck";
                                tf.TotalCases    = S.TotCase;
                                tf.Status        = "No";
                                tf.EnteredBy     = User.Identity.Name;
                                tf.EnteredDate   = System.DateTime.Now;
                            }
                            dc.TransportAgencyandFareSetups.Add(tf);
                        }

                        if (S.TransactionTypeID == 2)
                        {
                            foreach (var j in S.ProdTrDtl)
                            {
                                //checking  stock balace
                                if (ck.stockchkcs(j.ProductID, S.WarehouseID, (int)j.Quantity) == true)
                                {
                                    //status = false;
                                }
                                else
                                {
                                    status = false;
                                };
                            }
                            ;
                        }
                        if (status == true)
                        {
                            foreach (var i in S.ProdTrDtl)
                            {
                                var CF    = (from x in dc.Products where x.ProductID == i.ProductID select x).FirstOrDefault();
                                var batch = (from x in dc.StockBatches where x.ProductID == i.ProductID && x.WarehouseID == S.WarehouseID select x.BatchNo).DefaultIfEmpty(batchno).Max() + 1;
                                ProductTransactionDetail dmd = new ProductTransactionDetail();
                                dmd.ProductID     = i.ProductID; // Not Null
                                dmd.WarehouseID   = S.WarehouseID;
                                dmd.TransactionNo = PIDMax;
                                dmd.LineNoPlant   = i.LineNoPlant;
                                if (S.TransactionTypeID != 1)
                                {
                                    dmd.BatchNo = i.BatchNo;
                                }
                                else
                                {
                                    dmd.BatchNo = batch;
                                }

                                if (plantfl == "Y")
                                {
                                    int plant = (int)wn.PlantNo;
                                    dmd.PlantNo = plant;
                                }
                                dmd.ManufactureDate = i.ManufactureDate;
                                //DateTime d = Convert.ToDateTime(i.ManufactureDate);
                                if (CF.Expirydays == null)
                                {
                                    dmd.ExpiryDate = i.ManufactureDate;
                                }
                                else
                                {
                                    dmd.ExpiryDate = Convert.ToDateTime(i.ManufactureDate).AddDays((int)CF.Expirydays);// + 10;//  (int)CF.Expirydays;  //i.ExpiryDate;
                                }
                                dmd.Quantity               = (i.Quantity);
                                dmd.EmptyBottleQuantity    = (i.EmptyBottleQuantity);
                                dmd.PlasticBoxQuantity     = i.PlasticBoxQuantity;
                                dmd.BurstBottleQuantity    = (i.BurstBottleQuantity);
                                dmd.BreakageBottleQuantity = (i.BreakageBottleQuantity);
                                //TCases = TCases + i.Quantity;
                                dc.ProductTransactionDetails.Add(dmd);
                                // For Batch
                                StockBatch sb = new StockBatch();
                                sb.ProductID   = i.ProductID;
                                sb.WarehouseID = S.WarehouseID;
                                //sb.BatchNo = batch;

                                if (S.TransactionTypeID != 1)
                                {
                                    var t = db.StockBatches.Where(x => x.WarehouseID == S.WarehouseID && x.ProductID == i.ProductID && x.BatchNo == i.BatchNo).FirstOrDefault();
                                    sb.BatchRefNo     = t.BatchRefNo;
                                    sb.ManufacturDate = t.ManufacturDate;
                                    sb.ExpiryDate     = t.ExpiryDate;
                                    sb.PlantLineNo    = t.PlantLineNo;
                                    sb.BatchNo        = (int)i.BatchNo; // Add
                                    sb.PlantNo        = t.PlantNo;
                                    if (S.TransactionTypeID == 2)
                                    {
                                        sb.Status = "T";
                                    }
                                    if (S.TransactionTypeID == 6)
                                    {
                                        sb.Status = "D";
                                    }
                                    if (S.TransactionTypeID == 10)
                                    {
                                        sb.Status = "B";
                                    }
                                    if (S.TransactionTypeID == 11)
                                    {
                                        sb.Status = "W";
                                    }
                                }
                                else
                                {
                                    sb.ManufacturDate        = (DateTime)i.ManufactureDate;
                                    sb.ExpiryDate            = Convert.ToDateTime(i.ManufactureDate).AddDays((int)CF.Expirydays); //(DateTime)i.ExpiryDate;
                                    sb.PlantLineNo           = (int)i.LineNoPlant;
                                    sb.PlantNo               = i.PlantNo;
                                    sb.BatchRefNo            = i.BatchNo;
                                    sb.BatchNo               = batch; // Add
                                    sb.WarehouseLocationCode = S.StoreLocation;
                                    sb.Status = "A";
                                }
                                sb.IssueQuantity = (decimal)i.Quantity;
                                sb.ReceivedQty   = i.Quantity;
                                dc.StockBatches.Add(sb);
                                // Add stock batch detail for transaction history
                                StockBatchDetail sbd = new StockBatchDetail();
                                sbd.WarehouseID            = S.WarehouseID;
                                sbd.ProductID              = i.ProductID;
                                sbd.TransactionNo          = PIDMax;
                                sbd.Quantity               = i.Quantity;
                                sbd.BurstBottleQuantity    = i.BurstBottleQuantity;
                                sbd.BreakageBottleQuantity = i.BreakageBottleQuantity;
                                sbd.PlasticBoxQuantity     = (int)i.PlasticBoxQuantity;
                                sbd.TransactionDate        = DateTime.Today;
                                sbd.CreateBy               = User.Identity.Name;
                                sbd.CreateDate             = DateTime.Now;
                                if (S.TransactionTypeID == 2)
                                {
                                    sbd.BatchNo         = i.BatchNo;
                                    sbd.TransactionType = "Product Transfer";
                                }
                                else if (S.TransactionTypeID == 10)
                                {
                                    sbd.BatchNo         = i.BatchNo;
                                    sbd.TransactionType = "Warehouse Burst";
                                }
                                else if (S.TransactionTypeID == 11)
                                {
                                    sbd.BatchNo         = i.BatchNo;
                                    sbd.TransactionType = "Write Off";
                                }
                                else if (S.TransactionTypeID == 6)
                                {
                                    sbd.BatchNo         = i.BatchNo;
                                    sbd.TransactionType = "Adjustment";
                                }
                                else
                                {
                                    sbd.TransactionType = "Product Received";
                                    sbd.BatchNo         = batch;
                                }
                                dc.StockBatchDetails.Add(sbd);
                            }
                        }

                        //db.SaveChanges();
                        // dc.SaveChanges();
                        foreach (var i in S.ProdTrDtl)
                        {
                            var CF = (from x in dc.Products where x.ProductID == i.ProductID select x).FirstOrDefault();
                            try
                            {
                                if (S.TransactionTypeID == 1)
                                {
                                    var productupdate = dc.spProductBalanceUpdate(i.ProductID,
                                                                                  S.WarehouseID,
                                                                                  (int)i.Quantity, // change
                                                                                  i.BurstBottleQuantity,
                                                                                  i.BreakageBottleQuantity,
                                                                                  (int)i.PlasticBoxQuantity, //change
                                                                                  i.EmptyBottleQuantity);
                                }

                                if (S.TransactionTypeID != 1 && status == true)
                                {
                                    //Deduct Stock
                                    var productupdate = dc.spProductBalanceDecrease(i.ProductID,
                                                                                    S.WarehouseID,
                                                                                    (int)i.Quantity, //change
                                                                                    i.BurstBottleQuantity,
                                                                                    i.BreakageBottleQuantity,
                                                                                    (int)i.PlasticBoxQuantity,
                                                                                    i.EmptyBottleQuantity);
                                }
                            }
                            catch (Exception ex)
                            {
                                throw ex;
                            }
                        }
                        if (status == true)
                        {
                            dc.SaveChanges();
                            status = true;
                            dc.Dispose();
                        }
                    }
                    // return new JsonResult { Data = new { status = status, mes = mes } };
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            else
            {
                status = false;
            }
            return(new JsonResult {
                Data = new { status = status, mes = mes, v = v }
            });                                                                        //, v = v } };
        }