public static WaybillItemDto MapToDto(
            this WaybillItem model,
            WaybillId waybillId,
            int sequenceNumber)
        {
            return(new WaybillItemDto
            {
                SequenceNumber = sequenceNumber,
                SupplierWaybillId = waybillId.Value,
                RezonItemId = model.ItemId?.Value,

                Code = model.Code,
                Name = model.Name,
                Amount = model.MonetaryValue.Amount,
                Unit = model.Unit?.Name,
                UnitOkeiCode = model.Unit?.OkeiCode,

                PriceWithoutVat = model.MonetaryValue.PriceWithoutVat,
                SumWithoutVat = model.MonetaryValue.SumWithoutVat,
                SumWithVat = model.MonetaryValue.SumWithVat,
                VatPercent = model.MonetaryValue.VatPercent,
                VatSum = model.MonetaryValue.VatSum,

                CountryOfOriginCode = model.CustomsInfo?.CountryOfOriginCode,
                CountryOfOriginName = model.CustomsInfo?.CountryOfOriginName,
                CustomsDeclarationNumber = model.CustomsInfo?.CustomsDeclarationNumber,
            });
        }
Exemple #2
0
        private static void FillContentFromModel(
            this WaybillDto parentDto,
            WaybillContent model,
            WaybillId waybillId)
        {
            if (model == null)
            {
                parentDto.Content = null;
                return;
            }

            if (parentDto.Content == null)
            {
                parentDto.Content = new WaybillContentDto();
            }

            var dto = parentDto.Content;

            dto.SupplierWaybillId = waybillId.Value;

            dto.DocumentNumber = model.Header.DocumentNumber;
            dto.DocumentDate   = model.Header.DocumentDate;
            dto.Consignee      = model.Header.Consignee;

            dto.Items = model.Items
                        .Select((item, i) => item.MapToDto(waybillId: waybillId, sequenceNumber: i + 1))
                        .ToList();

            dto.TotalVat           = model.Totals.TotalVatSum;
            dto.TotalSumWithVat    = model.Totals.TotalSumWithVat;
            dto.TotalSumWithoutVat = model.Totals.TotalSumWithoutVat;
        }
        async Task <Waybill> IWaybillRepository.Get(WaybillId waybillId)
        {
            var dto = await QueryById(waybillId)
                      .SingleOrDefaultAsync();

            return(dto.MapToPaperWaybill());
        }
        private static WaybillItemValidationResultDto MapToDto(
            this WaybillItemValidationResult model,
            WaybillId waybillId,
            int sequenceNumber)
        {
            return(new WaybillItemValidationResultDto
            {
                WaybillId = waybillId.Value,
                WaybillItemSequenceNumber = sequenceNumber,
                HasEmptyItemId = model.HasEmptyItemId,
                HasEmptyCode = model.HasEmptyCode,
                HasEmptyName = model.HasEmptyName,
                HasEmptyOkeiUnitCode = model.HasEmptyOkeiUnitCode,
                HasEmptyUnitName = model.HasEmptyUnitName,

                HasEmptyAmount = model.MonetaryValueValidationResult.HasEmptyAmount,
                HasEmptyPriceWithoutVat = model.MonetaryValueValidationResult
                                          .HasEmptyPriceWithoutVat,
                HasInvalidVatPercent = model.MonetaryValueValidationResult.HasInvalidVatPercent,
                HasEmptySumWithVat = model.MonetaryValueValidationResult.HasEmptySumWithVat,
                HasEmptySumWithoutVat = model.MonetaryValueValidationResult.HasEmptySumWithoutVat,
                HasInvalidVatSum = model.MonetaryValueValidationResult.HasInvalidVatSum,
                HasInvalidSumWithVat = model.MonetaryValueValidationResult.HasInvalidSumWithVat,

                HasEmptyCustomsDeclarationNumber = model
                                                   .CustomsInfoValidationResult.HasEmptyCustomDeclarationNumber,
                HasEmptyCountryOfOriginCode = model
                                              .CustomsInfoValidationResult.HasEmptyCountryOfOriginCode,
                HasEmptyCountryOfOriginName = model
                                              .CustomsInfoValidationResult.HasEmptyCountryOfOriginName
            });
        }
 private IQueryable <WaybillDto> QueryById(WaybillId waybillId)
 {
     return(_context.Waybills
            .Include(x => x.File)
            .Include(x => x.Content)
            .ThenInclude(x => x.Items)
            .Where(x => x.Id == waybillId.Value));
 }
        async Task <PaperWaybill> IPaperWaybillRepository.Get(WaybillId waybillId)
        {
            var dto = await QueryById(waybillId)
                      .Where(x => x.SourceFileId != null)
                      .SingleOrDefaultAsync();

            return(dto.MapToPaperWaybill());
        }
        public async Task <ActionResult <WaybillsGetResponse> > Get(long supplierWaybillId)
        {
            var waybillId = new WaybillId(supplierWaybillId);

            var waybill = await _waybillRepository.Get(waybillId);

            return(WaybillsGetMapper.MapToResponse(waybill));
        }
        public async Task FillContent(WaybillId waybillId)
        {
            var waybill = await _waybillRepository.Get(waybillId);

            var file = await _waybillFileRepository.Get(waybill.SourceFileId);

            await FillContent(waybill, file);

            await _waybillRepository.Update(waybill);

            _eventPublisher.Raise(new WaybillParsed(waybillId));
        }
        private async Task <WaybillDto> CreateEmptyWaybillDto(Waybill waybill)
        {
            var dto = new WaybillDto();
            await _context.Waybills.AddAsync(dto);

            await _context.SaveChangesAsync();

            var id = new WaybillId(dto.Id);

            //We are setting id for further mapping
            waybill.SetId(id);
            return(dto);
        }
        public async Task FillStructuralValidation(WaybillId waybillId)
        {
            var waybill = await _paperWaybillRepository.Get(waybillId);

            await FillValidationResult(waybill);

            await _paperWaybillRepository.Update(waybill);

            if (!waybill.HasValidationErrors)
            {
                _eventPublisher.Raise(new StructuralValidationPassed(waybill.Id));
            }
        }
Exemple #11
0
 public PaperWaybill(
     WaybillId id,
     CephFileId sourceFileId,
     OrderId orderId,
     WaybillContent content,
     WaybillContentStructuralValidationResult structuralValidationResult,
     WaybillInteractionState interactionState)
     : base(
         id,
         orderId,
         content)
 {
     SourceFileId = sourceFileId;
     StructuralValidationResult = structuralValidationResult;
     InteractionState           = interactionState;
 }
Exemple #12
0
        public static PaperWaybill MapToPaperWaybill(this WaybillDto waybillDto)
        {
            if (waybillDto == null)
            {
                throw new ArgumentNullException(nameof(waybillDto));
            }

            var id      = new WaybillId(waybillDto.Id);
            var fileId  = new CephFileId(waybillDto.File.CephId);
            var orderId = new OrderId(waybillDto.OrderId);

            var waybillContent             = waybillDto.Content?.MapToModel();
            var structuralValidationResult = waybillDto.ValidationResult?.MapToModel();

            var interactionState = waybillDto.InteractionState.MapToModel();

            return(new PaperWaybill(
                       id: id,
                       sourceFileId: fileId,
                       orderId: orderId,
                       content: waybillContent,
                       structuralValidationResult: structuralValidationResult,
                       interactionState: interactionState));
        }
Exemple #13
0
 // ReSharper disable once MemberCanBePrivate.Global
 public Task HandleInternal(WaybillId waybillId)
 {
     return(_waybillStructuralValidationFiller.FillStructuralValidation(waybillId));
 }
Exemple #14
0
 public WaybillParsed(WaybillId waybillId)
 {
     WaybillId = waybillId;
 }
Exemple #15
0
 // ReSharper disable once MemberCanBePrivate.Global
 public Task HandleInternal(WaybillId waybillId)
 {
     return(_waybillContentFiller.FillContent(waybillId));
 }
Exemple #16
0
 public override void SetId(WaybillId id)
 {
     ThrowIfSetMemberWhileNotInState(WaybillProcessingState.New);
     Id = id;
 }
 public StructuralValidationPassed(WaybillId waybillId)
 {
     WaybillId = waybillId;
 }
 public PaperWaybillImported(WaybillId waybillId)
 {
     WaybillId = waybillId;
 }
        public static void FillValidationResult(this WaybillDto parentDto,
                                                WaybillContentStructuralValidationResult model, WaybillId waybillId)
        {
            if (model == null)
            {
                parentDto.ValidationResult = null;
                return;
            }

            if (parentDto.ValidationResult == null)
            {
                parentDto.ValidationResult = new WaybillValidationResultDto();
            }

            var dto = parentDto.ValidationResult;

            dto.HasConsigneeError       = model.HeaderResult.HasConsigneeError;
            dto.HasDocumentDateError    = model.HeaderResult.HasDocumentDateError;
            dto.HasDocumentNumberError  = model.HeaderResult.HasDocumentNumberError;
            dto.HasEmptySumWithoutVat   = model.TotalsResult.HasEmptySumWithoutVat;
            dto.HasEmptyTotalVatSum     = model.TotalsResult.HasEmptyTotalVatSum;
            dto.HasEmptySumWithVat      = model.TotalsResult.HasEmptySumWithVat;
            dto.HasInvalidSumWithoutVat = model.TotalsResult.HasInvalidSumWithoutVat;
            dto.HasInvalidTotalVatSum   = model.TotalsResult.HasInvalidTotalVatSum;
            dto.HasInvalidSumWithVat    = model.TotalsResult.HasInvalidSumWithVat;

            dto.ItemValidationResults = model.ItemResults
                                        .Select((itemDto, i) => itemDto.MapToDto(waybillId, i + 1))
                                        .ToList();
        }