public SaleServiceTest() { _saleService = new SaleService(_saleRepo.Object, _saleDetailRepo.Object, _itemRepo.Object, _trasactionService.Object, _customerRepo.Object); _saleCreateDto = new SaleCreateDTO(); _saleDetailCreateDto = new SaleDetailCreateDTO(); _sale = new Sale(); _saleDetail = new SaleDetails(); }
public async Task <IActionResult> Create(SaleCreateViewModel allSales) { try { if (ModelState.IsValid) { var sale = new SaleCreateDTO() { CusId = allSales.CusId, discount = allSales.discount, total = allSales.netTotal, netTotal = allSales.netTotal, paidAmount = allSales.paidAmount, returnAmount = allSales.returnAmount }; var saleDetails = new List <InventoryLibrary.Source.Dto.SaleDetail.SaleDetailCreateDTO>(); foreach (var data in allSales.SalesDetails) { var dto = new SaleDetailCreateDTO { ItemName = data.ItemName, Qty = data.Qty, Total = data.Total, Price = data.Price, ItemId = data.ItemId }; saleDetails.Add(dto); } sale.SaleDetails = saleDetails; var Sales = await _saleService.Create(sale).ConfigureAwait(true); _toastNotification.AddSuccessToastMessage("Successfully Created Sale!"); return(Json(Sales.SaleId)); } } catch (Exception ex) { _toastNotification.AddErrorToastMessage(ex.Message); } var saleView = new SaleIndexViewModel { customers = await _customerRepo.GetAllAsync().ConfigureAwait(true), items = (await _itemRepo.GetAllAsync().ConfigureAwait(true)).Where(a => a.IsActive()).ToList() }; return(View(saleView)); }
public async Task <Sale> Create(SaleCreateDTO dto) { using var tx = TransactionScopeHelper.GetInstance(); var Customer = await _customerRepo.GetById(dto.CusId).ConfigureAwait(false); var sale = new Sale { customer = Customer, total = dto.total, CusId = dto.CusId, netTotal = dto.netTotal, discount = dto.discount, SalesDate = DateTime.Now, paidAmount = dto.paidAmount, returnAmount = dto.returnAmount, dueAmount = Math.Abs(dto.paidAmount - (dto.netTotal + dto.returnAmount)) }; await _saleRepo.InsertAsync(sale).ConfigureAwait(false); foreach (var SaleData in dto.SaleDetails) { var SaleDetail = new SaleDetails { Qty = SaleData.Qty, Total = SaleData.Total, Price = SaleData.Price, SaleId = sale.SaleId, ItemName = SaleData.ItemName }; var item = await _itemRepo.GetById(SaleData.ItemId); item.DecreaseQty(SaleData.Qty); await _itemRepo.UpdateAsync(item); await _saleDetailRepo.InsertAsync(SaleDetail).ConfigureAwait(false); } //Type Sales await _transactionService.Create(new CustomerTransactionCreateDto() { CustomerId = sale.CusId, Amount = sale.netTotal, ExtraId = sale.SaleId, Type = CustomerTransaction.TypeSales }).ConfigureAwait(false); // Type payment if (sale.paidAmount - sale.returnAmount > 0) { await _transactionService.Create(new CustomerTransactionCreateDto() { CustomerId = sale.CusId, Amount = sale.paidAmount - sale.returnAmount, ExtraId = sale.SaleId, Type = CustomerTransaction.TypePayment }).ConfigureAwait(false); } tx.Complete(); return(sale); }