From aa7a21bc4b1bdebf11d9b0a583bdeb0938e7b604 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Thu, 15 Feb 2024 22:10:41 +0100 Subject: [PATCH] Invoice import modifications --- .../service/nav/TaxOfficeInvoiceService.java | 6 ++++- .../service/nav/TaxOfficeRequestBuilder.java | 12 ++++++---- .../lis/service/nav/mapper/InvoiceMapper.java | 23 ++++++++++++++++--- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeInvoiceService.java b/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeInvoiceService.java index f67f220..6a9070f 100644 --- a/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeInvoiceService.java +++ b/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeInvoiceService.java @@ -35,10 +35,14 @@ public class TaxOfficeInvoiceService { } public Optional queryInboundInvoices(int page, int daysRange) throws Exception { + return queryInboundInvoices(page, 0, daysRange); + } + + public Optional queryInboundInvoices(int page, int daysBehindNow, int daysRange) throws Exception { QueryInvoiceDigestRequest request = taxOfficeRequestBuilder.requestInvoiceDigest(); request.setPage(page); request.setInvoiceDirection(InvoiceDirectionType.INBOUND); - request.setInvoiceQueryParams(taxOfficeRequestBuilder.params(daysRange)); + request.setInvoiceQueryParams(taxOfficeRequestBuilder.params(daysBehindNow, daysRange)); String response = taxOfficeConnector.post("/queryInvoiceDigest", taxOfficeXmlConverter.toXml(request)); return taxOfficeXmlConverter.fromXml(response, QueryInvoiceDigestResponse.class); } diff --git a/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeRequestBuilder.java b/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeRequestBuilder.java index 7f4559d..17409b1 100644 --- a/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeRequestBuilder.java +++ b/lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeRequestBuilder.java @@ -117,13 +117,17 @@ public class TaxOfficeRequestBuilder { időpontjára, UTC időben c. originalInvoiceNumber megadása esetén számlaláncra */ - public InvoiceQueryParamsType params(int daysRange) throws DatatypeConfigurationException { + public InvoiceQueryParamsType params(int daysBehindNow, int daysRange) throws DatatypeConfigurationException { MandatoryQueryParamsType mandatoryQueryParamsType = new MandatoryQueryParamsType(); DateIntervalParamType dateInterval = new DateIntervalParamType(); - dateInterval.setDateFrom(DatatypeFactory.newInstance().newXMLGregorianCalendar( - LocalDateTime.now(ZoneOffset.UTC).minusDays(daysRange).toString()) + dateInterval.setDateFrom( + DatatypeFactory.newInstance().newXMLGregorianCalendar( + LocalDateTime.now(ZoneOffset.UTC).minusDays((long) daysBehindNow + daysRange).toString()) + ); + dateInterval.setDateTo( + DatatypeFactory.newInstance().newXMLGregorianCalendar( + LocalDateTime.now(ZoneOffset.UTC).minusDays(daysBehindNow).toString()) ); - dateInterval.setDateTo(DatatypeFactory.newInstance().newXMLGregorianCalendar(LocalDateTime.now().toString())); mandatoryQueryParamsType.setInvoiceIssueDate(dateInterval); InvoiceQueryParamsType result = new InvoiceQueryParamsType(); result.setMandatoryQueryParams(mandatoryQueryParamsType); diff --git a/lis-service/src/main/java/hu/user/lis/service/nav/mapper/InvoiceMapper.java b/lis-service/src/main/java/hu/user/lis/service/nav/mapper/InvoiceMapper.java index 6b6c218..a9e858b 100644 --- a/lis-service/src/main/java/hu/user/lis/service/nav/mapper/InvoiceMapper.java +++ b/lis-service/src/main/java/hu/user/lis/service/nav/mapper/InvoiceMapper.java @@ -1,8 +1,6 @@ package hu.user.lis.service.nav.mapper; -import hu.gov.nav.schemas.osa._3_0.data.InvoiceData; -import hu.gov.nav.schemas.osa._3_0.data.LineType; -import hu.gov.nav.schemas.osa._3_0.data.LinesType; +import hu.gov.nav.schemas.osa._3_0.data.*; import hu.user.lis.db.IncomingInvoice; import org.mapstruct.AfterMapping; import org.mapstruct.Mapper; @@ -10,6 +8,7 @@ import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; @Mapper(componentModel = "spring") @@ -41,5 +40,23 @@ public interface InvoiceMapper { } builder.title(title); } + + Optional.of(invoiceData) + .map(InvoiceData::getInvoiceMain) + .map(InvoiceMainType::getInvoice) + .map(InvoiceType::getInvoiceSummary).ifPresent(summary -> { + if (Objects.isNull(summary.getSummaryGrossData())) { + double netAmount = 0; + if (Objects.nonNull(summary.getSummaryNormal().getInvoiceNetAmount())) { + netAmount = summary.getSummaryNormal().getInvoiceNetAmount().doubleValue(); + } + double vatAmount = 0; + if (Objects.nonNull(summary.getSummaryNormal().getInvoiceVatAmount())) { + vatAmount = summary.getSummaryNormal().getInvoiceVatAmount().doubleValue(); + } + builder.grossAmount(netAmount + vatAmount); + } + }); + } } \ No newline at end of file -- 2.54.0