From: Vásáry Dániel Date: Tue, 24 Oct 2023 14:41:02 +0000 (+0200) Subject: Reset DB table identities, add invoice payment, add project id regexp X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=182aeacd33f190d678b99a1f211cefd7bffdeb78;p=sly-crm.git Reset DB table identities, add invoice payment, add project id regexp --- diff --git a/lis-app/src/main/resources/application-dev.yaml b/lis-app/src/main/resources/application-dev.yaml index d6ebf7f..7ec2477 100644 --- a/lis-app/src/main/resources/application-dev.yaml +++ b/lis-app/src/main/resources/application-dev.yaml @@ -59,6 +59,7 @@ application: workflow: import-invoice: input-path: /temp/invoice-import + project-id-pattern: \d{4}-\d{4} service: nav: trust: diff --git a/lis-app/src/test/java/hu/user/lis/workflow/TaxOfficeInvoiceApiIT.java b/lis-app/src/test/java/hu/user/lis/workflow/TaxOfficeInvoiceApiIT.java index d78729e..61e5755 100644 --- a/lis-app/src/test/java/hu/user/lis/workflow/TaxOfficeInvoiceApiIT.java +++ b/lis-app/src/test/java/hu/user/lis/workflow/TaxOfficeInvoiceApiIT.java @@ -173,8 +173,9 @@ public class TaxOfficeInvoiceApiIT { for (InvoiceDigestType invoiceDigest : invoiceList.get()) { String invoiceNumber = invoiceDigest.getInvoiceNumber(); String supplierTaxNumber = invoiceDigest.getSupplierTaxNumber(); - Optional invoiceData = taxOfficeInvoiceService.queryInboundInvoiceData(invoiceNumber, supplierTaxNumber); - invoiceData.ifPresent(invoice -> log.info("Found invoice: {}", taxOfficeXmlConverter.toXml(invoice))); + String invoiceXML = taxOfficeInvoiceService.queryInboundInvoiceDataAsString(invoiceNumber, supplierTaxNumber); + Optional invoiceData = taxOfficeXmlConverter.fromXml(invoiceXML, InvoiceData.class); + invoiceData.ifPresent(invoice -> log.info("Found invoice: {}", invoiceXML)); } } } 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 dc410cc..682b812 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 @@ -1,7 +1,6 @@ package hu.user.lis.service.nav; import hu.gov.nav.schemas.osa._3_0.api.*; -import hu.gov.nav.schemas.osa._3_0.data.InvoiceData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,7 +43,7 @@ public class TaxOfficeInvoiceService { return taxOfficeXmlConverter.fromXml(response, QueryInvoiceDigestResponse.class); } - public Optional queryInboundInvoiceData(String invoiceNumber, String supplierTaxNumber) throws Exception { + public String queryInboundInvoiceDataAsString(String invoiceNumber, String supplierTaxNumber) throws Exception { InvoiceNumberQueryType query = new InvoiceNumberQueryType(); query.setInvoiceDirection(InvoiceDirectionType.INBOUND); query.setInvoiceNumber(invoiceNumber); @@ -75,7 +74,7 @@ public class TaxOfficeInvoiceService { } else { invoiceData = new String(invoiceBytes); } - return taxOfficeXmlConverter.fromXml(invoiceData, InvoiceData.class); + return invoiceData; } } diff --git a/lis-services/lis-service.iml b/lis-services/lis-service.iml deleted file mode 100644 index 00b3a57..0000000 --- a/lis-services/lis-service.iml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java index d6e701b..b303ec3 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java @@ -24,6 +24,7 @@ public class ImportInvoiceAssignEditorModel extends InvoiceEditorModel { boolean canEditPartner; @Init + @Override public void init() { super.init(); canEditPartner = Objects.isNull(getFormDocument().getPartner().getId()); @@ -36,6 +37,7 @@ public class ImportInvoiceAssignEditorModel extends InvoiceEditorModel { && Objects.nonNull(entity.getFile()); } + @Override @AfterCompose public void onAfterCompose(@ContextParam(ContextType.VIEW) Component view) { getEntitySelectorRouter().configureSelector(Project.class, getFormDocument(), "project"); @@ -46,8 +48,6 @@ public class ImportInvoiceAssignEditorModel extends InvoiceEditorModel { @Command public void onEditPartner() { Partner entity = partnersDataModel.clone(getFormDocument().getPartner()); - Editors.doEdit(Editors.PARTNER, entity, modifiedEntity -> { - getFormDocument().setPartner(modifiedEntity); - }); + Editors.doEdit(Editors.PARTNER, entity, modifiedEntity -> getFormDocument().setPartner(modifiedEntity)); } } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java index df7a7bb..4d208e4 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java @@ -26,8 +26,8 @@ public class InvoiceEditorModel extends EntityEditorModel { private boolean vatCalculated; @Init + @Override public void init() { - super.init(); } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java index 8698df7..7fe62d0 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java @@ -50,6 +50,7 @@ public class AssignInvoicesViewModel extends EntityViewModel impleme } @Init + @Override public void init() { super.init(); eventBus.registerForProcessEvent(this); diff --git a/lis-ui/src/main/resources/web/import-invoices-assign.zul b/lis-ui/src/main/resources/web/import-invoices-assign.zul index b994ce1..e3c75b2 100644 --- a/lis-ui/src/main/resources/web/import-invoices-assign.zul +++ b/lis-ui/src/main/resources/web/import-invoices-assign.zul @@ -19,11 +19,13 @@ + diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java index ee5ed39..e453367 100644 --- a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java @@ -10,6 +10,8 @@ import org.camunda.bpm.engine.delegate.JavaDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; @Log4j2 @@ -37,10 +39,12 @@ public class DownloadInvoiceData implements JavaDelegate { public void execute(DelegateExecution delegateExecution) throws Exception { String invoiceXml = (String) delegateExecution.getVariable("invoice"); log.info("Processing invoice {}", invoiceXml); - IncomingInvoice invoice = incomingInvoiceFetcherService.getInvoiceDataOnline(invoiceXml); + List projectSuggestions = new ArrayList<>(); + IncomingInvoice invoice = incomingInvoiceFetcherService.getInvoiceDataOnline(invoiceXml, projectSuggestions); Optional partnerEntity = partnerRepository.findByVatNr(invoice.getPartner().getVatNr()); partnerEntity.ifPresent(invoice::setPartner); delegateExecution.setVariableLocal("invoiceEntity", invoice); + delegateExecution.setVariableLocal("projectSuggestions", projectSuggestions); log.info("Invoice {} processed", invoiceXml); } } diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/IncomingInvoiceFetcherService.java b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/IncomingInvoiceFetcherService.java index d3587c0..a6241b0 100644 --- a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/IncomingInvoiceFetcherService.java +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/IncomingInvoiceFetcherService.java @@ -14,6 +14,7 @@ import hu.user.lis.service.data.DataGeneratorService; import hu.user.lis.service.nav.TaxOfficeDataConverter; import hu.user.lis.service.nav.TaxOfficeInvoiceService; import hu.user.lis.service.nav.TaxOfficeXmlConverter; +import hu.user.lis.workflow.properties.WorkflowProperties; import org.apache.commons.lang3.RandomUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,6 +26,8 @@ import java.nio.file.Path; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -47,6 +50,10 @@ public class IncomingInvoiceFetcherService { @Autowired private TaxOfficeXmlConverter taxOfficeXmlConverter; + + @Autowired + private WorkflowProperties workflowProperties; + public List getNewInvoices() { return Arrays.asList("Invoice-test-1", "Invoice-test-2", "Invoice-test-3"); } @@ -102,11 +109,15 @@ public class IncomingInvoiceFetcherService { return partners.get(RandomUtils.nextInt(0, partners.size())); } - public IncomingInvoice getInvoiceDataOnline(String invoiceDigestInfo) throws Exception { + public IncomingInvoice getInvoiceDataOnline(String invoiceDigestInfo, List projectSuggestions) throws Exception { String[] tokens = invoiceDigestInfo.split(","); String invoiceNumber = tokens[0]; String supplierTaxNumber = tokens[1]; - InvoiceData invoiceData = taxOfficeInvoiceService.queryInboundInvoiceData(invoiceNumber, supplierTaxNumber).orElseThrow(NullPointerException::new); + String invoiceXML = taxOfficeInvoiceService.queryInboundInvoiceDataAsString(invoiceNumber, supplierTaxNumber); + InvoiceData invoiceData = taxOfficeXmlConverter.fromXml(invoiceXML, InvoiceData.class).orElseThrow(NullPointerException::new); + if (projectSuggestions != null) { + projectSuggestions.addAll(searchProjectId(invoiceXML)); + } String invoiceXml = taxOfficeXmlConverter.toXml(invoiceData); IncomingInvoice result = taxOfficeDataConverter.getIncomingInvoice(invoiceXml); Partner partner = taxOfficeDataConverter.getPartner(invoiceXml); @@ -151,4 +162,14 @@ public class IncomingInvoiceFetcherService { } return result; } + + public List searchProjectId(String invoiceXML) { + List result = new ArrayList<>(); + Pattern compiledPattern = Pattern.compile(workflowProperties.getImportInvoice().getProjectIdPattern()); + Matcher m = compiledPattern.matcher(invoiceXML); + while (m.find()) { + result.add(m.group()); + } + return result; + } } diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java b/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java index f454ac5..c62fcb7 100644 --- a/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java @@ -17,6 +17,8 @@ public class WorkflowProperties { @Setter public static class ImportInvoice { private String inputPath; + + private String projectIdPattern; } }