Invoice import modifications
authorVásáry Dániel <vasary@elgekko.net>
Thu, 15 Feb 2024 21:10:41 +0000 (22:10 +0100)
committerVásáry Dániel <vasary@elgekko.net>
Thu, 15 Feb 2024 21:10:41 +0000 (22:10 +0100)
lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeInvoiceService.java
lis-service/src/main/java/hu/user/lis/service/nav/TaxOfficeRequestBuilder.java
lis-service/src/main/java/hu/user/lis/service/nav/mapper/InvoiceMapper.java

index f67f2203ab4f41ffc8cca71cc83a9dbc889d16a7..6a9070fb5123c32e400ffa6e1c1eecfe443a31f5 100644 (file)
@@ -35,10 +35,14 @@ public class TaxOfficeInvoiceService {
     }
 
     public Optional<QueryInvoiceDigestResponse> queryInboundInvoices(int page, int daysRange) throws Exception {
+        return queryInboundInvoices(page, 0, daysRange);
+    }
+
+    public Optional<QueryInvoiceDigestResponse> 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);
     }
index 7f4559d9f11d09eca9246d83ba73c34ec7df6873..17409b131cacf7b77c1c32c9ed69dc7cdffdebe5 100644 (file)
@@ -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);
index 6b6c21859d0c4d34e99512fbf6b7ae8f46a8d31b..a9e858b1cb2e24a1962daa39e57228ca441b882e 100644 (file)
@@ -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