Exemple #1
0
 public PurchasingMemoDetailTextileDto(DateTimeOffset date, DivisionDto division, CurrencyDto currency, bool supplierIsImport, PurchasingMemoType type, List <FormItemDto> items, List <FormDetailDto> details, string remark, int id)
 {
     Date             = date;
     Division         = division;
     Currency         = currency;
     SupplierIsImport = supplierIsImport;
     Type             = type;
     Items            = items;
     Details          = details;
     Remark           = remark;
     Id = id;
 }
Exemple #2
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);
        }