public IActionResult AccountReceivable()
        {
            var customer = context.Customer.GetAll().ToList();

            customer = customer.Where(item => item.Name != "Walk in Customer").ToList();
            SalesInvoiceVM salesInvoiceVM = new SalesInvoiceVM()
            {
                CustomerItem = POSHelper.Customer(customer),
            };

            return(View(salesInvoiceVM));
        }
        public IActionResult Index()
        {
            var            customerItems = context.Customer.GetAll().ToList();
            var            productItems  = context.Product.GetAll().ToList();
            var            vatItems      = context.VatAndTax.GetAll().ToList();
            SalesInvoiceVM salesInvoice  = new SalesInvoiceVM()
            {
                CustomerItem = POSHelper.Customer(customerItems),
                ProductItem  = POSHelper.Product(productItems),
                VatItem      = POSHelper.VatAndTax(vatItems),
            };

            return(View(salesInvoice));
        }
        public IActionResult AccountReceivable(SalesInvoiceVM salesInvoiceVM)
        {
            try
            {
                foreach (var item in salesInvoiceVM.SalesInvoiceDetails)
                {
                    var salesInvoice = context.SalesInvoice.Find(x => x.InvoiceNumber == item.InvoiceNumber).FirstOrDefault();
                    if (salesInvoice != null)
                    {
                        salesInvoice.PaidAmount = salesInvoice.GrandTotal;
                        salesInvoice.Dues       = 0;
                        context.Save();
                    }
                }
                return(Json(true));
            }
            catch (Exception ex)
            {
                return(Json(false));

                throw ex;
            }
        }
        public IActionResult Index(SalesInvoiceVM salesInvoiceVM)
        {
            try
            {
                #region Sales invoice
                var     customer   = context.Customer.Find(item => item.Id == salesInvoiceVM.CustomerId).FirstOrDefault();
                decimal grandTotal = salesInvoiceVM.GrandTotal;
                decimal paidAmount = salesInvoiceVM.PaidAmount;
                if (salesInvoiceVM.IsBonusPointTaken)
                {
                    grandTotal += customer.BonusPoint;
                    paidAmount += customer.BonusPoint;
                }
                SalesInvoice salesInvoice = new SalesInvoice()
                {
                    InvoiceNumber = salesInvoiceVM.InvoiceNumber,
                    CustomerId    = salesInvoiceVM.CustomerId,
                    SubTotal      = salesInvoiceVM.SubTotal,
                    Discount      = salesInvoiceVM.Discount,
                    GrandTotal    = grandTotal,
                    PaidAmount    = paidAmount,
                    Dues          = salesInvoiceVM.Dues,
                    VatAndTaxId   = salesInvoiceVM.VatAndTaxId,
                    PaymentMode   = salesInvoiceVM.PaymentMode,
                };
                context.SalesInvoice.Add(salesInvoice);
                context.Save();

                foreach (var item in salesInvoiceVM.SalesInvoiceDetails)
                {
                    SalesInvoiceDetail salesInvoiceDetail = new SalesInvoiceDetail()
                    {
                        InvoiceNumber  = item.InvoiceNumber,
                        SalesInvoiceId = salesInvoice.Id,
                        ProductId      = item.ProductId,
                        Quantity       = item.Quantity,
                        UnitPrice      = item.UnitPrice,
                        Price          = item.Price,
                    };
                    DecrementIneventory(item.ProductId, item.Quantity);
                    context.SalesInvoiceDetail.Add(salesInvoiceDetail);
                    context.Save();
                }
                #endregion

                #region Bonus Point Section
                if (salesInvoiceVM.IsBonusPointTaken)
                {
                    if (customer != null)
                    {
                        customer.BonusPoint = 0;
                        context.Save();
                    }
                }
                decimal bonusPoint = (salesInvoice.SubTotal / 100);
                if (customer != null && customer.Name != "Walk in Customer")
                {
                    customer.BonusPoint = customer.BonusPoint + bonusPoint;
                    context.Save();
                }
                #endregion

                return(Json(true));
            }
            catch (Exception ex)
            {
                return(Json(ex.Message));

                throw ex;
            }
        }