示例#1
0
        public PurchasingMemoDetailTextileDto Read(int id)
        {
            var model = _dbContext.PurchasingMemoDetailTextiles.FirstOrDefault(entity => entity.Id == id);


            if (model != null)
            {
                var memoIsCreated = _dbContext.PurchasingMemoTextiles.Any(entity => entity.MemoDetailId == model.Id);
                var result        = new PurchasingMemoDetailTextileDto(model.Date, new DivisionDto(model.DivisionId, model.DivisionCode, model.DivisionName), new CurrencyDto(model.CurrencyId, model.CurrencyCode, model.CurrencyRate), model.SupplierIsImport, model.Type, new List <FormItemDto>(), new List <FormDetailDto>(), model.Remark, model.Id, model.DocumentNo, memoIsCreated);

                if (model.Type == PurchasingMemoType.Disposition)
                {
                    var items            = _dbContext.PurchasingMemoDetailTextileItems.Where(entity => entity.PurchasingMemoDetailTextileId == model.Id).ToList();
                    var itemIds          = items.Select(item => item.Id).ToList();
                    var details          = _dbContext.PurchasingMemoDetailTextileDetails.Where(entity => entity.PurchasingMemoDetailTextileId == model.Id && itemIds.Contains(entity.PurchasingMemoDetailTextileItemId)).ToList();
                    var detailIds        = details.Select(detail => detail.Id).ToList();
                    var unitReceiptNotes = _dbContext.PurchasingMemoDetailTextileUnitReceiptNotes.Where(entity => entity.PurchasingMemoDetailTextileId == model.Id && itemIds.Contains(entity.PurchasingMemoDetailTextileItemId) && detailIds.Contains(entity.PurchasingMemoDetailTextileDetailId)).ToList();

                    foreach (var item in items)
                    {
                        var itemDetails = details.Where(detail => detail.PurchasingMemoDetailTextileItemId == item.Id).ToList();
                        var disposition = new DispositionDto(item.DispositionId, item.DispositionNo, item.DispositionDate, new List <FormDetailDto>());

                        foreach (var itemDetail in itemDetails)
                        {
                            var detailUnitReceiptNotes = unitReceiptNotes.Where(unitReceiptNote => unitReceiptNote.PurchasingMemoDetailTextileDetailId == itemDetail.Id).Select(unitReceiptNote => new UnitReceiptNoteDto(unitReceiptNote.UnitReceiptNoteId, unitReceiptNote.UnitReceiptNoteNo, unitReceiptNote.UnitReceiptNoteDate)).ToList();
                            var expenditure            = new ExpenditureDto(itemDetail.ExpenditureId, itemDetail.ExpenditureNo, itemDetail.ExpenditureDate);
                            var supplier         = new SupplierDto(itemDetail.SupplierId, itemDetail.SupplierCode, itemDetail.SupplierName);
                            var unitPaymentOrder = new UnitPaymentOrderDto(itemDetail.UnitPaymentOrderId, itemDetail.UnitPaymentOrderNo, itemDetail.UnitPaymentOrderDate);
                            disposition.Details.Add(new FormDetailDto(expenditure, supplier, itemDetail.Remark, unitPaymentOrder, detailUnitReceiptNotes, itemDetail.PurchaseAmountCurrency, itemDetail.PurchaseAmount, itemDetail.PaymentAmountCurrency, itemDetail.PaymentAmount));
                        }

                        result.Items.Add(new FormItemDto(disposition));
                    }
                }
                else
                {
                    var details          = _dbContext.PurchasingMemoDetailTextileDetails.Where(entity => entity.PurchasingMemoDetailTextileId == model.Id).ToList();
                    var detailIds        = details.Select(detail => detail.Id).ToList();
                    var unitReceiptNotes = _dbContext.PurchasingMemoDetailTextileUnitReceiptNotes.Where(entity => entity.PurchasingMemoDetailTextileId == model.Id && detailIds.Contains(entity.PurchasingMemoDetailTextileDetailId)).ToList();


                    foreach (var itemDetail in details)
                    {
                        var detailUnitReceiptNotes = unitReceiptNotes.Where(unitReceiptNote => unitReceiptNote.PurchasingMemoDetailTextileDetailId == itemDetail.Id).Select(unitReceiptNote => new UnitReceiptNoteDto(unitReceiptNote.UnitReceiptNoteId, unitReceiptNote.UnitReceiptNoteNo, unitReceiptNote.UnitReceiptNoteDate)).ToList();
                        var expenditure            = new ExpenditureDto(itemDetail.ExpenditureId, itemDetail.ExpenditureNo, itemDetail.ExpenditureDate);
                        var supplier         = new SupplierDto(itemDetail.SupplierId, itemDetail.SupplierCode, itemDetail.SupplierName);
                        var unitPaymentOrder = new UnitPaymentOrderDto(itemDetail.UnitPaymentOrderId, itemDetail.UnitPaymentOrderNo, itemDetail.UnitPaymentOrderDate);
                        result.Details.Add(new FormDetailDto(expenditure, supplier, itemDetail.Remark, unitPaymentOrder, detailUnitReceiptNotes, itemDetail.PurchaseAmountCurrency, itemDetail.PurchaseAmount, itemDetail.PaymentAmountCurrency, itemDetail.PaymentAmount));
                    }
                }

                return(result);
            }
            else
            {
                return(null);
            }
        }
 public FormDetailDto(ExpenditureDto expenditure, SupplierDto supplier, string remark, UnitPaymentOrderDto unitPaymentOder, List <UnitReceiptNoteDto> unitReceiptNotes, double purchaseAmountCurrency, double purchaseAmount, double paymentAmountCurrency, double paymentAmount)
 {
     Expenditure            = expenditure;
     Supplier               = supplier;
     Remark                 = remark;
     UnitPaymentOder        = unitPaymentOder;
     UnitReceiptNotes       = unitReceiptNotes;
     PurchaseAmountCurrency = purchaseAmountCurrency;
     PurchaseAmount         = purchaseAmount;
     PaymentAmountCurrency  = paymentAmountCurrency;
     PaymentAmount          = paymentAmount;
 }
示例#3
0
        public List <FormItemDto> ReadDispositions(string keyword, int divisionId, bool supplierIsImport, string currencyCode)
        {
            var dispositionQuery = _dbContext.PaymentDispositionNotes.Where(entity => entity.SupplierImport == supplierIsImport);

            if (!string.IsNullOrWhiteSpace(currencyCode))
            {
                dispositionQuery = dispositionQuery.Where(entity => entity.CurrencyCode == currencyCode);
            }

            var paymentIds           = dispositionQuery.Select(entity => entity.Id).Distinct().ToList();
            var dispositionItemQuery = _dbContext.PaymentDispositionNoteItems.Where(entity => paymentIds.Contains(entity.PaymentDispositionNoteId));

            if (divisionId > 0)
            {
                dispositionItemQuery = dispositionItemQuery.Where(entity => entity.DivisionId == divisionId);
            }

            var query = dispositionItemQuery.Select(entity => new { entity.DispositionId, entity.DispositionNo, entity.DispositionDate }).Distinct().AsQueryable();

            if (!string.IsNullOrWhiteSpace(keyword))
            {
                query = query.Where(entity => entity.DispositionNo.Contains(keyword));
            }


            var queryResult                          = query.Take(10).ToList();
            var dispositionIds                       = queryResult.Select(element => element.DispositionId).ToList();
            var paymentDispositionItems              = _dbContext.PaymentDispositionNoteItems.Where(entity => dispositionIds.Contains(entity.DispositionId)).ToList();
            var paymentDispositionItemIds            = paymentDispositionItems.Select(entity => entity.Id).ToList();
            var paymentDispositionIds                = paymentDispositionItems.Select(entity => entity.PaymentDispositionNoteId).Distinct().ToList();
            var paymentDispositions                  = _dbContext.PaymentDispositionNotes.Where(entity => paymentDispositionIds.Contains(entity.Id)).ToList();
            var paymentDispositionDetails            = _dbContext.PaymentDispositionNoteDetails.Where(entity => paymentDispositionItemIds.Contains(entity.PaymentDispositionNoteItemId)).ToList();
            var purchasingDispositionExpeditionIds   = paymentDispositionItems.Select(element => element.PurchasingDispositionExpeditionId).ToList();
            var purchasingDispositionExpeditions     = _dbContext.PurchasingDispositionExpeditions.Where(entity => purchasingDispositionExpeditionIds.Contains(entity.Id)).ToList();
            var purchasingDispositionExpeditionItems = _dbContext.PurchasingDispositionExpeditionItems.Where(entity => purchasingDispositionExpeditionIds.Contains(entity.PurchasingDispositionExpeditionId)).ToList();

            var result = new List <FormItemDto>();

            foreach (var item in queryResult)
            {
                var disposition = new DispositionDto(item.DispositionId, item.DispositionNo, item.DispositionDate, new List <FormDetailDto>());

                var itemPaymentDispositionNoteIds = paymentDispositionItems.Where(element => element.DispositionId == item.DispositionId).Select(element => element.PaymentDispositionNoteId).ToList();
                var itemPaymentDispositionNotes   = paymentDispositions.Where(element => itemPaymentDispositionNoteIds.Contains(element.Id)).ToList();

                foreach (var itemPaymentDispositionNote in itemPaymentDispositionNotes)
                {
                    var expenditure = new ExpenditureDto(itemPaymentDispositionNote.Id, itemPaymentDispositionNote.PaymentDispositionNo, itemPaymentDispositionNote.PaymentDate);
                    var supplier    = new SupplierDto(itemPaymentDispositionNote.SupplierId, itemPaymentDispositionNote.SupplierCode, itemPaymentDispositionNote.SupplierName);
                    var itemPaymentDispositionNoteItems = paymentDispositionItems.Where(element => element.PaymentDispositionNoteId == itemPaymentDispositionNote.Id).ToList();


                    foreach (var itemPaymentDispositionNoteItem in itemPaymentDispositionNoteItems)
                    {
                        var division = new DivisionDto(itemPaymentDispositionNoteItem.DivisionId, itemPaymentDispositionNoteItem.DivisionCode, itemPaymentDispositionNoteItem.DivisionName);

                        disposition.Details.Add(new FormDetailDto(expenditure, supplier, "", new UnitPaymentOrderDto(0, "", DateTimeOffset.MinValue), new List <UnitReceiptNoteDto>(), 0, 0, 0, 0));
                    }
                }

                result.Add(new FormItemDto(disposition));
            }

            return(result);
        }