public async Task <IdOutputDto <long> > CreatePurchaseOrderEntryDocumentUnit(PurchaseOrderEntryDocumentInputUnit input) { var purchaseOrderTransactions = input.MapTo <PurchaseOrderEntryDocumentUnit>(); purchaseOrderTransactions.TypeOfAccountingDocumentId = TypeOfAccountingDocument.PurchaseOrders; //Sum of purchase order Details amount purchaseOrderTransactions.PoOriginalAmount = !ReferenceEquals(input.PurchaseOrderDetailList, null) ? input.PurchaseOrderDetailList.Sum(u => u.Amount.Value) : 0; IdOutputDto <long> response = new IdOutputDto <long> { Id = await _purchaseOrderEntryDocumentUnitManager.CreateAsync(purchaseOrderTransactions) }; //Null Checking of PurchaseOrderDetailList if (!ReferenceEquals(input.PurchaseOrderDetailList, null)) { var source = CoreHelpers.GetSourceType(typeof(PurchaseOrderEntryDocumentDetailUnit).Name); //Bulk Insertion of PurchaseOrderDetail foreach (var purchaseOrderDetail in input.PurchaseOrderDetailList) { purchaseOrderDetail.AccountingDocumentId = response.Id; var purchaseOrderDetailUnit = purchaseOrderDetail.MapTo <PurchaseOrderEntryDocumentDetailUnit>(); purchaseOrderDetailUnit.AccountingItemOrigAmount = purchaseOrderDetail.Amount; purchaseOrderDetailUnit.SourceTypeId = SourceType.PO; await _purchaseOrderDetailUnitManager.CreateAsync(purchaseOrderDetailUnit); } } await CurrentUnitOfWork.SaveChangesAsync(); return(response); }
public async Task UpdatePurchaseOrderEntryDocumentUnit(PurchaseOrderEntryDocumentInputUnit input) { var purchaseOrderTransactionsInput = await _purchaseOrderEntryDocumentUnitRepository.GetAsync(input.AccountingDocumentId); //Tracking Purchase Order Lines into Purchase Order History Table when PO is Reopend if (purchaseOrderTransactionsInput.CloseDate.HasValue && !input.CloseDate.HasValue) { var PoDetailsList = await _purchaseOrderDetailUnitRepository.GetAllListAsync(u => u.AccountingDocumentId == input.AccountingDocumentId); } Mapper.Map(input, purchaseOrderTransactionsInput); purchaseOrderTransactionsInput.TypeOfAccountingDocumentId = TypeOfAccountingDocument.PurchaseOrders; await _purchaseOrderEntryDocumentUnitManager.UpdateAsync(purchaseOrderTransactionsInput); if (!ReferenceEquals(input.PurchaseOrderDetailList, null)) { var source = CoreHelpers.GetSourceType(typeof(PurchaseOrderEntryDocumentDetailUnit).Name); //Bulk CRUD operations of PurchaseOrderDetail foreach (var purchaseOrderDetail in input.PurchaseOrderDetailList) { if (purchaseOrderDetail.AccountingItemId == 0) { purchaseOrderDetail.AccountingDocumentId = input.AccountingDocumentId; var purchaseOrderDetailUnit = purchaseOrderDetail.MapTo <PurchaseOrderEntryDocumentDetailUnit>(); purchaseOrderDetailUnit.AccountingItemOrigAmount = purchaseOrderDetail.Amount; purchaseOrderDetailUnit.SourceTypeId = SourceType.PO; await _purchaseOrderDetailUnitManager.CreateAsync(purchaseOrderDetailUnit); } else if (purchaseOrderDetail.AccountingItemId > 0) { var purchaseOrderDetailUnit = await _purchaseOrderDetailUnitRepository.GetAsync(purchaseOrderDetail.AccountingItemId); //If PO is Not releaving changing OrignalAmount if (purchaseOrderDetailUnit.AccountingItemOrigAmount == purchaseOrderDetailUnit.Amount && purchaseOrderDetailUnit.Amount != purchaseOrderDetail.Amount) { purchaseOrderDetailUnit.AccountingItemOrigAmount = purchaseOrderDetail.Amount; } Mapper.Map(purchaseOrderDetail, purchaseOrderDetailUnit); purchaseOrderDetailUnit.SourceTypeId = SourceType.PO; if (purchaseOrderDetailUnit.IsClose.Value) { purchaseOrderDetailUnit.RemainingAmount = 0; } await _purchaseOrderDetailUnitManager.UpdateAsync(purchaseOrderDetailUnit); } } } //Tracking Purchase Order Lines into Purchase Order History Table when PO is closed if (!purchaseOrderTransactionsInput.CloseDate.HasValue && input.CloseDate.HasValue) { var PoDetailsList = await _purchaseOrderDetailUnitRepository.GetAllListAsync(u => u.AccountingDocumentId == input.AccountingDocumentId); } await CurrentUnitOfWork.SaveChangesAsync(); }