public CreatInvoiceVM GetINvoice(int id)
        {
            CreatInvoiceVM creatInvoiceVM = new CreatInvoiceVM();
            var            invoice        = db.Invoices.Find(id);
            var            invoiceDetails = db.InvoiceDetails.Where(x => x.invoiceID == id);

            creatInvoiceVM.InvoiceVM.ID            = invoice.ID;
            creatInvoiceVM.InvoiceVM.Date          = invoice.Date;
            creatInvoiceVM.InvoiceVM.invoice_Net   = invoice.invoice_Net;
            creatInvoiceVM.InvoiceVM.invoice_No    = invoice.invoice_No;
            creatInvoiceVM.InvoiceVM.invoice_Taxes = invoice.invoice_Taxes;
            creatInvoiceVM.InvoiceVM.invoice_Total = invoice.invoice_Total;
            creatInvoiceVM.InvoiceVM.storeId       = invoice.storeId;
            creatInvoiceVM.InvoiceDetailsVMs       = invoiceDetails.Select(x => new InvoiceDetailsVM
            {
                Discount  = x.Discount,
                ID        = x.ID,
                InvoiceID = x.invoiceID,
                ItemID    = x.itemID,
                ItemName  = x.Item.Name,
                Net       = x.Net,
                Price     = x.Price,
                Quantity  = x.Quantity,
                Total     = x.Total,
                UnitID    = x.UnitID,
                UnitName  = x.UnitID
            }).ToList();
            return(creatInvoiceVM);
        }
        public ActionResult Edit(int id)
        {
            CreatInvoiceVM creatInvoiceVM = new CreatInvoiceVM();

            creatInvoiceVM = service.GetINvoice(id);
            ViewBag.Stores = new SelectList(service.Stores(), "ID", "Name", creatInvoiceVM.InvoiceVM.storeId);
            ViewBag.Items  = new SelectList(service.items(), "ID", "Name");
            ViewBag.Units  = new SelectList(service.units(), "ID", "Name");
            return(View(creatInvoiceVM));
        }
        public ActionResult Create()
        {
            ViewBag.Stores = new SelectList(service.Stores(), "ID", "Name");
            ViewBag.Items  = new SelectList(service.items(), "ID", "Name");
            ViewBag.Units  = new SelectList(service.units(), "ID", "Name");
            CreatInvoiceVM creatInvoiceVM = new CreatInvoiceVM();

            creatInvoiceVM.InvoiceVM.invoice_No = service.SetInvoiceNumber().ToString();
            return(View(creatInvoiceVM));
        }
        public bool CreatInvoiceVM(CreatInvoiceVM creatInvoiceVM)
        {
            var obj = db.Database.BeginTransaction();

            try
            {
                Invoice invoice = new Invoice();
                invoice.Date          = creatInvoiceVM.InvoiceVM.Date;
                invoice.invoice_Taxes = creatInvoiceVM.InvoiceVM.invoice_Taxes;
                invoice.invoice_Total = Math.Round(creatInvoiceVM.InvoiceVM.invoice_Total, 2);
                invoice.invoice_Net   = Math.Round(creatInvoiceVM.InvoiceVM.invoice_Net, 2);
                invoice.invoice_No    = creatInvoiceVM.InvoiceVM.invoice_No;
                invoice.storeId       = creatInvoiceVM.InvoiceVM.storeId;
                db.Invoices.Add(invoice);
                db.SaveChanges();
                var InvoiceDetails = creatInvoiceVM.InvoiceDetailsVMs.Select(x => new InvoiceDetails
                {
                    invoiceID = invoice.ID,
                    Discount  = x.Discount,
                    itemID    = x.ItemID,
                    Net       = Math.Round(x.Net, 2),
                    Price     = x.Price,
                    Quantity  = x.Quantity,
                    Total     = Math.Round(x.Total, 2),
                    UnitID    = x.UnitID
                }).ToList();
                db.InvoiceDetails.AddRange(InvoiceDetails);
                db.SaveChanges();
                obj.Commit();
                return(true);
            }
            catch
            {
                obj.Rollback();
                return(false);
            }
        }
 public ActionResult Create(CreatInvoiceVM creatInvoiceVM)
 {
     return(service.CreatInvoiceVM(creatInvoiceVM) == true?
            Json(new { Status = true }, JsonRequestBehavior.AllowGet) :
                Json(new { Status = false }, JsonRequestBehavior.AllowGet));
 }