public async Task <int> Add(AddSalesInvoiceDto dto) { await CheckExistsByNumber(dto.InvoiceNumber); var salesInvoice = new SalesInvoice() { InvoiceDate = DateTime.Now, CustomerName = dto.CustomerName, InvoiceNumber = dto.InvoiceNumber }; decimal totalPrice = 0; var selasItems = new HashSet <SalesItem>(); foreach (var item in dto.SalesItemDto) { var warehouse = await _warehouseRepository.FindByGoodCode(item.GoodCode); CheckExistsGoodInWarehouse(warehouse); CheckStockInWarehouse(warehouse.Count, item.Count); selasItems.Add(new SalesItem { Count = item.Count, InvoiceId = salesInvoice.Id, Price = item.Price, GoodId = warehouse.GoodId, }); totalPrice += (item.Price * item.Count); warehouse.Count -= item.Count; } salesInvoice.SalesItems = selasItems; var accounting = new HashSet <AccountingDocument>() { new AccountingDocument() { InvoiceId = salesInvoice.Id, DateOfDocument = DateTime.Now, DocumentNumber = DateTime.Now.ToShortDateString(), InvoiceNumber = dto.InvoiceNumber, Totalprice = totalPrice } }; salesInvoice.AccountingDocuments = accounting; _repository.Add(salesInvoice); _unitOfWork.Complate(); return(salesInvoice.Id); }
public async Task <int> Add(AddGoodEntryDto dto) { var warehouse = await _warehouseRepository.FindByGoodCode(dto.GoodCode); CheckedWarehouseByCode(warehouse); GoodEntry goodEntry = new GoodEntry() { Count = dto.Count, GoodId = warehouse.GoodId, EntryDate = DateTime.Now, Title = "DGFDGFGFG", InvoiceNumber = dto.InvoiceNumber, }; _repository.Add(goodEntry); warehouse.Count += goodEntry.Count; await _unitOfWork.ComplateAysnc(); return(goodEntry.Id); }
public async Task Delete(int id) { var good = await _repository.FindById(id); CheckedExistsGood(good); CheckedGoodsetByCount(good.GoodEntries.Count); CheckedGoodsetByCount(good.SalesItems.Count); var warehouse = await _warehouseRepository.FindByGoodCode(good.Code); _warehouseRepository.Delete(warehouse); _repository.Delete(good); await _unitOfWork.ComplateAysnc(); }