public IActionResult Save(InvoiceCreateViewModel viewModel)
        {
            if (viewModel.Tax == null)
            {
                return(View("Error"));
            }
            Random rnd     = new Random();
            var    invoice = _serviceInvoice.Insert(new Invoice
            {
                DateCreation  = DateTime.Now,
                InvoiceNumber = GenerateProductNumber(10, rnd),
                RecipientName = viewModel.RecipientName,
                PaymentDate   = DateTime.Now.AddDays(7),
                UserId        = _userManager.GetUserId(HttpContext.User)
            });

            foreach (var item in viewModel.SelectedItems)
            {
                var itemInDb = _serviceItem.Get(x => x.Id == item.Id);
                _serviceInvoiceItems.Insert(new InvoiceItems
                {
                    InvoiceId       = invoice.Id,
                    ItemId          = item.Id,
                    QuantitySold    = item.Quantity,
                    PriceWithTax    = calculateService.CalculatePrice(itemInDb.Price, item.Quantity, viewModel.Tax),
                    PriceWithoutTax = calculateService.CalculatePrice(itemInDb.Price, item.Quantity),
                    Tax             = viewModel.Tax
                });
            }

            return(RedirectToAction(nameof(Index), "Home"));
        }
Example #2
0
        public PartialViewResult AddProduct(InvoiceCreateViewModel invoiceCreateViewModel)
        {
            var invoice = AddOrUpdateInvoice(invoiceCreateViewModel);

            var products = GetInvoiceProducts(invoice.Id);

            return(PartialView("_ProductsPartial", products));
        }
Example #3
0
        public ActionResult Index(InvoiceCreateViewModel Model)
        {
            //1. 設定開立發票資訊
            InvoiceCreate invc = new InvoiceCreate();

            invc.MerchantID         = Model.MerchantID;
            invc.RelateNumber       = Model.RelateNumber;
            invc.AllPayMid          = Model.AllPayMid;
            invc.CarruerNum         = Model.CarruerNum;
            invc.ClearanceMark      = Model.ClearanceMark;
            invc.carruerType        = Model.CarruerType;
            invc.CarruerNum         = Model.CarruerNum;
            invc.Print              = Model.Print;
            invc.Donation           = Model.Donation;
            invc.CustomerID         = Model.CustomerID;
            invc.CustomerIdentifier = Model.CustomerIdentifier;
            invc.CustomerAddr       = Model.CustomerAddr;
            invc.CustomerName       = Model.CustomerName;
            invc.CustomerPhone      = Model.CustomerPhone;
            invc.CustomerEmail      = Model.CustomerEmail;
            invc.SalesAmount        = Model.SalesAmount;
            invc.LoveCode           = Model.LoveCode;
            invc.vat     = Model.vat;
            invc.TaxType = Model.TaxType;
            invc.invType = Model.InvType;

            invc.Items.Add(new Item()
            {
                ItemName   = Model.ItemName,
                ItemPrice  = Model.ItemPrice,
                ItemCount  = Model.ItemCount,
                ItemWord   = Model.ItemWord,
                ItemAmount = Model.ItemAmount
            });

            //2. 初始化發票Service物件
            Invoice <InvoiceCreate> inv = new Invoice <InvoiceCreate>();

            //3. 指定測試環境, 上線時請記得改Prod
            inv.Environment = EInvoice.Integration.Enumeration.EnvironmentEnum.Stage;

            //4. 設定歐付寶提供的 Key 和 IV
            inv.HashIV  = "q9jcZX8Ib9LM8wYk";
            inv.HashKey = "ejCk326UnaZWKisg";

            //5. 執行API的回傳結果(JSON)字串
            string json = inv.post(invc);

            //6. 解序列化,還原成物件使用
            //InvoiceCreateReturn obj = new InvoiceCreateReturn();
            //obj = JsonConvert.DeserializeObject<InvoiceCreateReturn>(json);
            //obj.XXX;
            // ...

            ViewBag.message = json;

            return(View());
        }
Example #4
0
        // GET: Invoices/Create
        public async Task <IActionResult> Create()
        {
            var vm = new InvoiceCreateViewModel()
            {
                AppUserSelectList = new SelectList(await _bll.AppUsers.AllAsync(),
                                                   nameof(BLL.App.DTO.Identity.AppUser.Id),
                                                   nameof(BLL.App.DTO.Identity.AppUser.Id))
            };

            return(View(vm));
        }
Example #5
0
        public ActionResult Create([Bind(Include = "Id,Name,Currency,ClientId,ProductId,Price,Quantity")] InvoiceCreateViewModel invoiceViewModel)
        {
            if (ModelState.IsValid)
            {
                AddOrUpdateInvoice(invoiceViewModel);
                return(RedirectToAction("Index"));
            }

            ViewBag.Clients  = new SelectList(db.Clients, "Id", "Name", invoiceViewModel.ClientId);
            ViewBag.Products = new SelectList(db.Products, "Id", "ProductName", invoiceViewModel.ProductId);
            return(View(invoiceViewModel));
        }
        public JsonResult CreateInvoice([FromBody]  InvoiceCreateViewModel data)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var customer = new Customer
                    {
                        Name    = data.PersonName,
                        Surname = data.PersonSurname,
                        Address = data.PersonAddress,
                        Email   = data.PersonEmail,
                        Phone   = data.PersonPhone
                    };
                    _context.Customers.Add(customer);
                    _context.SaveChanges();

                    var invoice = new Invoice
                    {
                        Customer    = _context.Customers.LastOrDefault(x => x.Phone == customer.Phone),
                        InvoiceDate = data.InvoiceDate,
                        InvoiceNo   = data.InvoiceNo,
                        TotalPrice  = data.TotalPrice
                    };
                    _context.Invoices.Add(invoice);
                    _context.SaveChanges();

                    foreach (var product in data.Products)
                    {
                        var invoiceDetail = new InvoiceDetail
                        {
                            Invoice     = _context.Invoices.LastOrDefault(),
                            Piece       = product.Piece,
                            ProductName = product.ProductName,
                            UnitPrice   = product.UnitPrice,
                            Price       = product.Price
                        };
                        _context.InvoiceDetails.Add(invoiceDetail);
                    }
                    _context.SaveChanges();
                    return(Json(new { success = true, message = "Kaydedildi." }));
                }
            }
            catch (Exception)
            {
                return(Json(new { success = false, message = "Bir hata oluştu" }));
            }
            return(Json(new { success = false, message = "Eksik veya yanlış bilgi girildi." }));
        }
Example #7
0
        public async Task <IActionResult> Create(InvoiceCreateViewModel vm)
        {
            if (ModelState.IsValid)
            {
                _bll.Invoices.Add(vm.Invoice);
                await _bll.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            vm.AppUserSelectList = new SelectList(await _bll.AppUsers.AllAsync(),
                                                  nameof(BLL.App.DTO.Identity.AppUser.Id),
                                                  nameof(BLL.App.DTO.Identity.AppUser.Id),
                                                  vm.Invoice.AppUserId);

            return(View(vm));
        }
Example #8
0
        private Invoice AddOrUpdateInvoice(InvoiceCreateViewModel invoiceCreateViewModel)
        {
            Invoice invoice = db.Invoices
                              .Include(i => i.InvoiceProducts)
                              .Include(i => i.InvoiceProducts.Select(ip => ip.Product))
                              .SingleOrDefault(i => i.Name.Equals(invoiceCreateViewModel.Name));

            if (invoice == null)
            {
                invoice = AddInvoiceProduct(invoiceCreateViewModel);
            }
            else
            {
                UpdateInvoiceProduct(invoiceCreateViewModel, invoice);
            }
            return(invoice);
        }
Example #9
0
        private void UpdateInvoiceProduct(InvoiceCreateViewModel invoiceViewModel, Invoice invoice)
        {
            db.InvoiceProducts.Add(new InvoiceProduct
            {
                InvoiceId = invoice.Id,
                ProductId = invoiceViewModel.ProductId,
                Quantity  = invoiceViewModel.Quantity,
                Invoice   = invoice,
                Product   = db.Products.SingleOrDefault(p => p.Id.Equals(invoiceViewModel.ProductId))
            });

            invoice.Name     = invoiceViewModel.Name;
            invoice.ClientId = invoiceViewModel.ClientId;
            invoice.Currency = invoiceViewModel.Currency;

            db.Entry(invoice).State = EntityState.Modified;

            db.SaveChanges();
        }
Example #10
0
        // GET: Invoices/Create
        public ActionResult Create(int?id)
        {
            ViewBag.ClientId = new SelectList(db.Clients, "Id", "Name");
            ViewBag.Products = new SelectList(db.Products, "Id", "ProductName");
            if (id != null)
            {
                Invoice invoice = db.Invoices.Single(i => i.Id.Equals(id.Value));

                InvoiceCreateViewModel invoiceCreateViewModel = new InvoiceCreateViewModel
                {
                    ClientId  = invoice.ClientId,
                    Currency  = invoice.Currency,
                    InvoiceId = invoice.Id,
                    Name      = invoice.Name
                };

                return(View(invoiceCreateViewModel));
            }

            return(View());
        }
Example #11
0
        // GET: Invoices/Edit/5
        public ActionResult Edit(int?id)
        {
            ViewBag.ClientId = new SelectList(db.Clients, "Id", "Name");
            ViewBag.Products = new SelectList(db.Products, "Id", "ProductName");
            var firstProduct = db.Products.FirstOrDefault();

            if (firstProduct != null)
            {
                ViewBag.FirstProductPrice = firstProduct.Price;
            }
            else
            {
                ViewBag.FirstProductPrice = 0;
            }


            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Invoice invoice = db.Invoices.Find(id);

            if (invoice == null)
            {
                return(HttpNotFound());
            }

            InvoiceCreateViewModel invoiceCreateViewModel = new InvoiceCreateViewModel
            {
                ClientId  = invoice.ClientId,
                Currency  = invoice.Currency,
                InvoiceId = invoice.Id,
                Name      = invoice.Name,
                ProductId = 0
            };

            return(View(invoiceCreateViewModel));
        }
Example #12
0
        private Invoice AddInvoiceProduct(InvoiceCreateViewModel invoiceViewModel)
        {
            Invoice invoice = new Invoice
            {
                ClientId = invoiceViewModel.ClientId,
                Currency = invoiceViewModel.Currency,
                Name     = invoiceViewModel.Name
            };

            db.Invoices.Add(invoice);

            db.InvoiceProducts.Add(new InvoiceProduct
            {
                InvoiceId = invoiceViewModel.InvoiceId,
                ProductId = invoiceViewModel.ProductId,
                Quantity  = invoiceViewModel.Quantity,
                Invoice   = invoice,
                Product   = db.Products.SingleOrDefault(p => p.Id.Equals(invoiceViewModel.ProductId))
            });

            db.SaveChanges();
            return(invoice);
        }
Example #13
0
        public ActionResult New()
        {
            var patients = new List <Patient>
            {
                new Patient
                {
                    PatientId = 1,
                    FirstName = "Sethu",
                    LastName  = "Mazibuko",
                    IdNumber  = 8922
                },
                new Patient
                {
                    PatientId = 2,
                    FirstName = "Lucky",
                    LastName  = "Zulu",
                    IdNumber  = 8922
                },
                new Patient
                {
                    PatientId = 3,
                    FirstName = "Zama",
                    LastName  = "Gumbi",
                    IdNumber  = 8922
                },
                new Patient
                {
                    PatientId = 4,
                    FirstName = "Menzi",
                    LastName  = "Peterson",
                    IdNumber  = 8922
                },
                new Patient
                {
                    PatientId = 5,
                    FirstName = "Luke",
                    LastName  = "Swan",
                    IdNumber  = 8922
                }
            };
            var viewModel = new InvoiceCreateViewModel()
            {
                InvoiceLines = new List <InvoiceLine>
                {
                    new InvoiceLine
                    {
                        Code          = "TT25",
                        Description   = "RMI",
                        InvoiceLineId = 109,
                        LineTotal     = 1000,
                        Qty           = 1,
                    },
                    new InvoiceLine
                    {
                        Code          = "TT29",
                        Description   = "Lung Scan",
                        InvoiceLineId = 110,
                        LineTotal     = 289,
                        Qty           = 1,
                    }
                },
                Patients = patients
            };

            return(View("New", viewModel));
        }
Example #14
0
 public InvoiceCreateView()
 {
     InitializeComponent();
     DataContext = new InvoiceCreateViewModel(this);
 }