public async Task <IActionResult> Index() { IEnumerable <CurrencyViewModel> currencies = await MasterHelpers.GetCurrency(); IEnumerable <DestinationViewModel> destinations = await MasterHelpers.GetDestination(); IEnumerable <LanguangeViewModel> languanges = await MasterHelpers.GetLanguange(); IEnumerable <MeasurementViewModel> measurements = await MasterHelpers.GetMeasurements(); IEnumerable <PurchaseViewModel> purchases = await MasterHelpers.GetPurchaseOrders(); NumberViewModel numbers = await MasterHelpers.GetNumber(); ViewBag.number = numbers.Number; BillAddModel model = new BillAddModel() { Currencies = currencies, Destinations = destinations, Languanges = languanges, Measurements = measurements, Purchases = purchases, Number = numbers.Number, }; return(View(model)); }
public static Bill Create(BillAddModel model, string userId, int count) { var bill = new Bill { VendorId = model.VendorId, //BillNumber = "B.NO" + "-" + model.BillDate.ToString("yy") + "-" + (count + 1).ToString("000"), BillNumber = model.BillNumber, Tax = model.Tax, Discount = model.Discount, DueDate = model.DueDate, TotalAmount = model.TotalAmount, Remark = model.Remark, RefrenceNumber = model.RefrenceNumber, Status = Constants.BillStatus.Pending, CreatedBy = userId ?? "0", CreatedOn = Utility.GetDateTime(), BillDate = model.BillDate, StrBillDate = model.BillDate.ToString("dd/MM/yyyy"), StrDueDate = model.DueDate.Value.ToString("dd/MM/yyyy"), PoSoNumber = model.PoSoNumber, Notes = model.Notes, SubTotal = model.SubTotal, LineAmountSubTotal = model.LineAmountSubTotal, Items = model.Items.Select(x => new BillItem { Id = Guid.NewGuid(), ItemId = x.ItemId, Rate = x.Rate, Price = x.Price, TaxId = x.TaxId, TaxPercentage = x.TaxPercentage, Quantity = x.Quantity, TaxPrice = x.TaxPrice, LineAmount = x.LineAmount }).ToList() }; if (model.Attachments == null || !model.Attachments.Any()) { return(bill); } //bill.Attachments = new List<BillAttachment>(); bill.Attachments = model.Attachments.Select(x => new BillAttachment { Title = x.Title, FileName = x.FileName, OriginalFileName = x.OriginalFileName, CreatedBy = userId ?? "0", CreatedOn = Utility.GetDateTime() }).ToList(); return(bill); }
public async Task <IActionResult> Add([FromBody] BillAddModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrorList())); } if (!EnumerableExtensions.Any(model.Items)) { return(BadRequest("Please select items to continue")); } try { await _manager.AddAsync(model); } catch (Exception ex) { return(BadRequest(ex.Message)); } return(Ok()); }
public async Task AddAsync(BillAddModel model) { //var items = (await _itemRepository.GetAsync(model.Items)).ToList(); //model.TotalAmount = items.Sum(x => x.Rate); //model.Tax = items.Where(x => x.IsTaxable).Sum(x => x.Rate * x.SalesTax.TaxPercentage / 100); //var vendor = await _vendorRepository.GetAsync(model.VendorId); //if (vendor.Discount != null) //{ // model.Discount = model.TotalAmount * vendor.Discount / 100; // model.TotalAmount = model.TotalAmount - (model.Discount ?? 0); //} //if (model.Tax != null) //{ // model.TotalAmount = model.TotalAmount + (model.Tax ?? 0); //} model.LineAmountSubTotal = model.Items.Sum(x => x.LineAmount); var count = await _repository.getCount(); var bill = BillFactory.Create(model, _userId, count); await _repository.AddAsync(bill); await _unitOfWork.SaveChangesAsync(); var transaction = TransactionFactory.CreateByBill(bill); await _transactionRepository.AddAsync(transaction); await _unitOfWork.SaveChangesAsync(); var itemsList = (model.Items.GroupBy(l => l.BankAccountId, l => new { l.BankAccountId, l.LineAmount }) .Select(g => new { GroupId = g.Key, Values = g.ToList() })).ToList(); foreach (var item in itemsList) { var id = item.GroupId; var amount = item.Values.Sum(x => x.LineAmount); var itemsData = TransactionFactory.CreateByBillItemsAndTax(bill, id, amount); await _transactionRepository.AddAsync(itemsData); await _unitOfWork.SaveChangesAsync(); } var taxlistList = (model.Items.GroupBy(l => l.TaxBankAccountId, l => new { l.TaxBankAccountId, l.TaxPrice }) .Select(g => new { GroupId = g.Key, Values = g.ToList() })).ToList(); foreach (var tax in taxlistList) { if (tax.GroupId > 0) { var id = tax.GroupId; var amount = tax.Values.Sum(x => x.TaxPrice); var taxData = TransactionFactory.CreateByBillItemsAndTax(bill, id, amount); await _transactionRepository.AddAsync(taxData); await _unitOfWork.SaveChangesAsync(); } } }