public ActionResult SaveSalesInvoice(Models.ViewModels.Sales.AddSalesInvoice model)
        {
            if (model.AddSalesInvoiceLines.Sum(i => i.Amount) == 0 || model.AddSalesInvoiceLines.Count < 1)
            {
                model.Customers    = Models.ModelViewHelper.Customers();
                model.Items        = Models.ModelViewHelper.Items();
                model.Measurements = Models.ModelViewHelper.Measurements();
                ModelState.AddModelError("Amount", "No invoice line");
                return(View(model));
            }
            var invoiceHeader = new SalesInvoiceHeader();
            var invoiceLines  = new List <SalesInvoiceLine>();

            foreach (var item in model.AddSalesInvoiceLines)
            {
                var Item          = _inventoryService.GetItemById(item.ItemId);
                var invoiceDetail = new SalesInvoiceLine();
                invoiceDetail.TaxId         = Item.ItemTaxGroupId;
                invoiceDetail.ItemId        = item.ItemId;
                invoiceDetail.MeasurementId = item.MeasurementId;
                invoiceDetail.Quantity      = item.Quantity;
                invoiceDetail.Discount      = item.Discount;
                invoiceDetail.Amount        = Convert.ToDecimal(item.Quantity * Item.Price);
                invoiceLines.Add(invoiceDetail);
            }
            invoiceHeader.SalesInvoiceLines = invoiceLines;
            invoiceHeader.CustomerId        = model.CustomerId;
            invoiceHeader.Date = model.Date;
            invoiceHeader.ShippingHandlingCharge = 4;// model.ShippingHandlingCharge;

            _salesService.AddSalesInvoice(invoiceHeader, model.SalesOrderId);
            return(RedirectToAction("SalesInvoices"));
        }
        public ActionResult GenerateBulkInvoice(Models.ViewModels.Administration.CreateBulkInvoice model)
        {
            var      day         = 15;
            var      month       = DateTime.Now.Month == 12 ? 1 : DateTime.Now.Month + 1;
            var      year        = DateTime.Now.Month == 12 ? DateTime.Now.Year + 1 : DateTime.Now.Year;
            DateTime invoiceDate = new DateTime(year, month, day);

            var query = from c in _salesService.GetCustomers()
                        select c;
            var customers = query.ToList();

            var itemAssociationDues = (from i in _inventoryService.GetAllItems().ToList()
                                       where (i != null &&
                                              i.SellDescription.ToLower().Contains("dues"))
                                       select i).FirstOrDefault();

            var invoices = new List <SalesInvoiceHeader>();

            foreach (var customer in customers)
            {
                var current = (from si in _salesService.GetSalesInvoices()
                               where si.CustomerId == customer.Id &&
                               si.Date.Year == invoiceDate.Year &&
                               si.Date.Month == invoiceDate.Month &&
                               si.Date.Day == invoiceDate.Day
                               select si).FirstOrDefault();
                if (current != null)
                {
                    return(RedirectToAction("BulkInvoice"));
                }

                var invoiceLine = new SalesInvoiceLine();
                invoiceLine.ItemId        = itemAssociationDues.Id;
                invoiceLine.Quantity      = 1;
                invoiceLine.Amount        = Convert.ToDecimal(itemAssociationDues.Price * invoiceLine.Quantity);
                invoiceLine.MeasurementId = itemAssociationDues.SmallestMeasurementId.Value;
                invoiceLine.CreatedBy     = User.Identity.Name;
                invoiceLine.CreatedOn     = DateTime.Now;
                invoiceLine.ModifiedBy    = User.Identity.Name;
                invoiceLine.ModifiedOn    = DateTime.Now;

                var invoice = new SalesInvoiceHeader();
                invoice.Date       = invoiceDate;
                invoice.CustomerId = customer.Id;
                invoice.CreatedBy  = User.Identity.Name;
                invoice.CreatedOn  = DateTime.Now;
                invoice.ModifiedBy = User.Identity.Name;
                invoice.ModifiedOn = DateTime.Now;
                invoice.SalesInvoiceLines.Add(invoiceLine);

                invoices.Add(invoice);
            }

            foreach (var invoice in invoices)
            {
                _salesService.AddSalesInvoice(invoice, null);
            }

            return(RedirectToAction("SalesInvoices", "Sales"));
        }
Exemple #3
0
 public ActionResult AddAccount([FromBody] CustomerInvoiceModel customerInvoiceModel)
 {
     return(Ok(_salesService.AddSalesInvoice(customerInvoiceModel)));
 }