Esempio n. 1
0
        public JsonResult SaveAPInvoice(NetStock.Contract.APInvoice apInvoiceData)
        {
            try
            {
                apInvoiceData.CreatedBy    = Utility.DEFAULTUSER;
                apInvoiceData.ModifiedBy   = Utility.DEFAULTUSER;
                apInvoiceData.Source       = "AP";
                apInvoiceData.CurrencyCode = Utility.DEFAULTCURRENCYCODE;
                apInvoiceData.BranchID     = Utility.SsnBranch;


                var result = new NetStock.BusinessFactory.APInvoiceBO().SaveAPInvoice(apInvoiceData);
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Error", ex.Message);
            }

            return(Json(new { success = true, Message = "Invoice saved successfully.", apInvoiceData = apInvoiceData }));
        }
Esempio n. 2
0
        public bool Save <T>(T item) where T : IContract
        {
            var result = 0;

            var orderheader = (OrderHeader)(object)item;

            if (currentTransaction == null)
            {
                connection = db.CreateConnection();
                connection.Open();
            }

            var transaction = (currentTransaction == null ? connection.BeginTransaction() : currentTransaction);


            var isNewRecord = false;

            if (orderheader.OrderNo == "" || orderheader.OrderNo == "NEW")
            {
                isNewRecord = true;
            }


            try
            {
                var savecommand = db.GetStoredProcCommand(DBRoutine.SAVEORDERHEADER);

                db.AddInParameter(savecommand, "OrderNo", System.Data.DbType.String, orderheader.OrderNo);
                db.AddInParameter(savecommand, "OrderDate", System.Data.DbType.DateTime, DateTime.Now);
                db.AddInParameter(savecommand, "BranchID", System.Data.DbType.Int16, orderheader.BranchID);
                db.AddInParameter(savecommand, "Contact", System.Data.DbType.String, orderheader.Contact);
                db.AddInParameter(savecommand, "SalesLead", System.Data.DbType.String, orderheader.SalesLead);
                db.AddInParameter(savecommand, "CustomerPONumber", System.Data.DbType.String, orderheader.CustomerPONumber == null ? "": orderheader.CustomerPONumber);
                db.AddInParameter(savecommand, "City", System.Data.DbType.String, orderheader.City == null ? "" : orderheader.City);
                db.AddInParameter(savecommand, "CostCentre", System.Data.DbType.String, orderheader.CostCentre);
                db.AddInParameter(savecommand, "CustomerCode", System.Data.DbType.String, orderheader.CustomerCode);
                db.AddInParameter(savecommand, "CustomerName", System.Data.DbType.String, orderheader.CustomerName == null ? "" : orderheader.CustomerName);
                db.AddInParameter(savecommand, "RegNo", System.Data.DbType.String, orderheader.RegNo == null ? "" : orderheader.RegNo);
                db.AddInParameter(savecommand, "CustomerAddress", System.Data.DbType.String, orderheader.CustomerAddress == null ? "" : orderheader.CustomerAddress);
                db.AddInParameter(savecommand, "SaleType", System.Data.DbType.String, orderheader.SaleType == null ? "": orderheader.SaleType);
                db.AddInParameter(savecommand, "CGST", System.Data.DbType.Decimal, orderheader.CGST);
                db.AddInParameter(savecommand, "SGST", System.Data.DbType.Decimal, orderheader.SGST);
                db.AddInParameter(savecommand, "IGST", System.Data.DbType.Decimal, orderheader.IGST);
                db.AddInParameter(savecommand, "Status", System.Data.DbType.Boolean, orderheader.Status);
                db.AddInParameter(savecommand, "IsApproved", System.Data.DbType.Boolean, orderheader.IsApproved);
                db.AddInParameter(savecommand, "IsPayLater", System.Data.DbType.Boolean, orderheader.IsPayLater);
                db.AddInParameter(savecommand, "PaymentDays", System.Data.DbType.Int16, orderheader.PaymentDays);
                db.AddInParameter(savecommand, "TotalAmount", System.Data.DbType.Decimal, orderheader.TotalAmount == null ? 0 : orderheader.TotalAmount);
                db.AddInParameter(savecommand, "IsVAT", System.Data.DbType.Boolean, orderheader.IsVAT);
                db.AddInParameter(savecommand, "VATAmount", System.Data.DbType.Decimal, orderheader.VATAmount);
                db.AddInParameter(savecommand, "ISWHTax", System.Data.DbType.Boolean, orderheader.IsWHTax);
                db.AddInParameter(savecommand, "WHTaxPercent", System.Data.DbType.Decimal, orderheader.WHTaxPercent);
                db.AddInParameter(savecommand, "WithHoldingAmount", System.Data.DbType.Decimal, orderheader.WithHoldingAmount);

                decimal value         = 0;
                int     multiplier    = 100;
                decimal double_value  = orderheader.NetAmount;
                int     double_result = (int)((double_value - (int)double_value) * multiplier);
                if (double_result > 5)
                {
                    value = Math.Ceiling(orderheader.NetAmount);
                }
                else
                {
                    value = Math.Floor(orderheader.NetAmount);
                }

                db.AddInParameter(savecommand, "NetAmount", System.Data.DbType.Decimal, value);

                //db.AddInParameter(savecommand, "NetAmount", System.Data.DbType.Decimal, orderheader.NetAmount);
                db.AddInParameter(savecommand, "PaidAmount", System.Data.DbType.Decimal, orderheader.PaidAmount == null ? 0 : orderheader.PaidAmount);
                db.AddInParameter(savecommand, "PaymentType", System.Data.DbType.String, orderheader.PaymentType == null ? "" :orderheader.PaymentType);
                db.AddInParameter(savecommand, "IsRequiredDelivery", System.Data.DbType.Boolean, orderheader.IsRequireDelivery);
                db.AddInParameter(savecommand, "DeliveryDate", System.Data.DbType.DateTime, orderheader.DeliveryDate);
                db.AddInParameter(savecommand, "CreatedBy", System.Data.DbType.String, orderheader.CreatedBy);
                db.AddInParameter(savecommand, "ModifiedBy", System.Data.DbType.String, orderheader.ModifiedBy);
                db.AddInParameter(savecommand, "Remarks", System.Data.DbType.String, orderheader.Remarks == null ? "" : orderheader.Remarks);
                db.AddInParameter(savecommand, "BalanceAmount", System.Data.DbType.Decimal, orderheader.BalanceAmount == null ? 0 : orderheader.BalanceAmount);
                db.AddInParameter(savecommand, "TransportCharges", System.Data.DbType.Decimal, orderheader.TransportCharges == null ? 0 : orderheader.TransportCharges);
                db.AddOutParameter(savecommand, "NewOrderNo", System.Data.DbType.String, 25);


                result = db.ExecuteNonQuery(savecommand, transaction);

                if (result > 0)
                {
                    var orderdetailDAL = new OrderDetailDAL();

                    // Get the New Quotation No.
                    orderheader.OrderNo = savecommand.Parameters["@NewOrderNo"].Value.ToString();


                    Int16 itr = 1;
                    orderheader.OrderDetails.ForEach(dt =>
                    {
                        dt.OrderNo    = orderheader.OrderNo;
                        dt.CreatedBy  = orderheader.CreatedBy;
                        dt.ModifiedBy = orderheader.ModifiedBy;
                        dt.Location   = dt.Location == null ? "NONE" : dt.Location;
                        dt.ItemNo     = itr++;
                    });

                    result = Convert.ToInt16(orderdetailDAL.Delete(orderheader.OrderNo, transaction));
                    result = orderdetailDAL.SaveList(orderheader.OrderDetails, transaction) == true ? 1 : 0;

                    if (result > 0)
                    {
                        var invoiceHeader = new NetStock.Contract.InvoiceHeader();
                        List <NetStock.Contract.InvoiceDetail> lstInvoiceItems = new List <InvoiceDetail>();

                        foreach (var dt in orderheader.OrderDetails)
                        {
                            lstInvoiceItems.Add(new InvoiceDetail
                            {
                                InvoiceNo   = "",
                                OrderNo     = dt.OrderNo,
                                ItemNo      = dt.ItemNo,
                                ProductCode = dt.ProductCode,
                                // BarCode = dt.BarCode == null ? "" : dt.BarCode,
                                Quantity = dt.Quantity,
                                //Price = dt.SellPrice,
                                Price      = dt.InvoiceAmount,
                                CreatedBy  = dt.CreatedBy,
                                ModifiedBy = dt.ModifiedBy
                            });
                        }

                        invoiceHeader.InvoiceNo      = orderheader.OrderNo;
                        invoiceHeader.BranchID       = orderheader.BranchID;
                        invoiceHeader.InvoiceType    = orderheader.PaymentType ?? "CASH";
                        invoiceHeader.ApprovedBy     = "";
                        invoiceHeader.CreatedBy      = orderheader.CreatedBy;
                        invoiceHeader.ModifiedBy     = orderheader.ModifiedBy;
                        invoiceHeader.CustomerCode   = orderheader.CustomerCode;
                        invoiceHeader.InvoiceAmount  = orderheader.TotalAmount;
                        invoiceHeader.InvoiceDate    = orderheader.OrderDate;
                        invoiceHeader.PaymentDate    = orderheader.OrderDate;
                        invoiceHeader.PendingPayment = orderheader.IsPayLater;
                        invoiceHeader.Status         = true;
                        invoiceHeader.TaxAmount      = orderheader.VATAmount + orderheader.CGST + orderheader.IGST + orderheader.SGST;
                        invoiceHeader.VatAmount      = orderheader.VATAmount;
                        // invoiceHeader.TotalAmount = orderheader.PaidAmount;


                        invoiceHeader.TotalAmount = value;
                        //invoiceHeader.TotalAmount = orderheader.NetAmount;
                        invoiceHeader.DueDate           = orderheader.OrderDate.AddDays(orderheader.PaymentDays);
                        invoiceHeader.IsVat             = orderheader.IsVAT;
                        invoiceHeader.IsWHTax           = orderheader.IsWHTax;
                        invoiceHeader.WHTaxPercent      = orderheader.WHTaxPercent;
                        invoiceHeader.WithHoldingAmount = orderheader.WithHoldingAmount;
                        invoiceHeader.DiscountAmount    = orderheader.DiscountAmount;
                        invoiceHeader.PaidAmount        = orderheader.PaidAmount;
                        invoiceHeader.BalanceAmount     = orderheader.BalanceAmount;
                        invoiceHeader.OrderNo           = orderheader.OrderNo;
                        invoiceHeader.InvoiceDetails    = lstInvoiceItems;


                        result = new NetStock.DataFactory.InvoiceHeaderDAL().Save(invoiceHeader, transaction) == true ? 1 : 0;



                        var apinvoice = new NetStock.Contract.APInvoice();
                        List <NetStock.Contract.APInvoiceDetail> APInvoiceDetail = new List <APInvoiceDetail>();

                        List <NetStock.Contract.GLTransaction> GLTransactionDetails = new List <GLTransaction>();


                        foreach (var dt in orderheader.OrderDetails)
                        {
                            APInvoiceDetail.Add(new APInvoiceDetail
                            {
                                DocumentNo         = "",
                                ItemNo             = dt.ItemNo,
                                AccountCode        = "1019",
                                ChargeCode         = dt.ProductCode,
                                OrderNo            = dt.OrderNo,
                                CurrencyCode       = "INR",
                                ExchangeRate       = 1,
                                BaseAmount         = dt.BasePrice,
                                LocalAmount        = dt.InvoiceAmount,
                                DiscountType       = dt.DiscountType,
                                Discount           = dt.DiscountAmount,
                                TotalAmount        = dt.InvoiceAmount,
                                TaxAmount          = dt.SGST + dt.IGST + dt.CGST,
                                WHAmount           = 0,
                                LocalAmountWithTax = 0,
                                TaxCode            = "",
                                Remark             = "",
                                CreatedBy          = dt.CreatedBy,
                                CreatedOn          = DateTime.Now,
                                ModifiedBy         = dt.ModifiedBy,
                                ModifiedOn         = DateTime.Now,
                            });

                            GLTransactionDetails.Add(new GLTransaction
                            {
                                TransactionNo          = "",
                                ItemNo                 = dt.ItemNo,
                                BranchID               = orderheader.BranchID,
                                AccountCode            = "1019",
                                AccountDate            = orderheader.OrderDate,
                                Source                 = "API",
                                DocumentType           = "GL",
                                DocumentNo             = "",
                                DocumentDate           = orderheader.OrderDate,
                                DebtorCode             = "",
                                CreditorCode           = orderheader.CustomerCode,
                                ChequeNo               = "",
                                BankInSlipNo           = "",
                                DateReconciled         = orderheader.OrderDate,
                                BankStatementPgNo      = 0,
                                CurrencyCode           = "INR",
                                ExchangeRate           = 1,
                                BaseAmount             = value,
                                LocalAmount            = value,
                                CreditAmount           = 0,
                                DebitAmount            = 0,
                                Remark                 = "",
                                BankStatementTotalPgNo = 0,
                                DebitCredit            = "",
                                Amount                 = value,
                                DetailRemark           = ""
                            });
                        }


                        apinvoice.DocumentNo   = orderheader.OrderNo;
                        apinvoice.DocumentDate = DateTime.Now;
                        apinvoice.BranchID     = orderheader.BranchID;

                        apinvoice.ReferenceNo  = orderheader.OrderNo;
                        apinvoice.CreditorCode = "O-001";
                        apinvoice.CreditTerm   = "";
                        apinvoice.CurrencyCode = "INR";

                        apinvoice.ExchangeRate         = 1;
                        apinvoice.BaseAmount           = value;
                        apinvoice.LocalAmount          = value;
                        apinvoice.DiscountAmount       = orderheader.DiscountAmount;
                        apinvoice.PaymentAmount        = value;
                        apinvoice.IsVAT                = orderheader.IsVAT;
                        apinvoice.TaxAmount            = orderheader.VATAmount + orderheader.CGST + orderheader.IGST + orderheader.SGST;
                        apinvoice.IsWHTax              = orderheader.IsWHTax;
                        apinvoice.WHPercent            = 0;
                        apinvoice.WHAmount             = 0;
                        apinvoice.TotalAmount          = value;
                        apinvoice.Remark               = "";
                        apinvoice.Source               = "API";
                        apinvoice.IsCancel             = false;
                        apinvoice.CreatedBy            = orderheader.CreatedBy;
                        apinvoice.CreatedOn            = DateTime.Now;
                        apinvoice.ModifiedBy           = orderheader.ModifiedBy;
                        apinvoice.ModifiedOn           = DateTime.Now;
                        apinvoice.CancelledBy          = "";
                        apinvoice.CancelledOn          = DateTime.Now;
                        apinvoice.CancelReason         = "";
                        apinvoice.APInvoiceDetails     = APInvoiceDetail;
                        apinvoice.GLTransactionDetails = GLTransactionDetails;

                        result = new NetStock.DataFactory.APInvoiceDAL().Save(apinvoice, transaction) == true ? 1 : 0;
                    }


                    if (isNewRecord)
                    {
                        if (result > 0)
                        {
                            var lstStockLedger = new List <StockLedger>();

                            foreach (var dt in orderheader.OrderDetails)
                            {
                                lstStockLedger.Add(new StockLedger
                                {
                                    CustomerCode    = orderheader.CustomerCode,
                                    CreatedBy       = orderheader.CreatedBy,
                                    ModifiedBy      = orderheader.ModifiedBy,
                                    ProductCode     = dt.ProductCode,
                                    BranchID        = orderheader.BranchID,
                                    Quantity        = dt.Quantity,
                                    StockFlag       = -1,
                                    TransactionNo   = "",
                                    MatchDocumentNo = orderheader.OrderNo,
                                    TransactionType = "OUT",
                                    Location        = dt.Location,
                                    StockDate       = orderheader.DeliveryDate,
                                });
                            }

                            result = new StockLedgerDAL().SaveList(lstStockLedger, transaction) == true ? 1 : 0;
                        }
                    }
                }
                if (result > 0)
                {
                    transaction.Commit();
                }
                else
                {
                    transaction.Rollback();
                }
            }
            catch (Exception ex)
            {
                transaction.Rollback();

                throw;
            }

            return(result > 0 ? true : false);
        }