Exemple #1
0
        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);
        }
Exemple #2
0
        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();
        }