コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }