From 4aa4c91b9977b54b54fae319215d0462ca4f55d9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Mon, 29 Jan 2024 16:35:25 +0100 Subject: [PATCH] Prod bugs fixes --- .../src/main/resources/application-dev.yaml | 29 +++------ .../resources/keystore/create-keystore.bat | 2 +- .../main/resources/keystore/lis-keystore.jks | Bin 4687 -> 2118 bytes .../src/main/resources/keystore/nav-test.cer | 55 ------------------ .../workflow/RecreateAssignProcessesIT.java | 50 ++++++++++++++++ .../lis/workflow/TaxOfficeInvoiceApiIT.java | 3 +- .../src/test/resources/application-test.yaml | 13 ++++- .../nav/RestTemplateSSLConfiguration.java | 12 +++- .../lis/ui/editor/ProjectEditorModel.java | 28 +++++---- .../validator/PartnerFormValidator.java | 8 ++- .../service/WorkflowManagerService.java | 5 +- runConfigurations/server-dev.run.xml | 1 - 12 files changed, 109 insertions(+), 97 deletions(-) delete mode 100644 lis-app/src/main/resources/keystore/nav-test.cer create mode 100644 lis-app/src/test/java/hu/user/lis/workflow/RecreateAssignProcessesIT.java diff --git a/lis-app/src/main/resources/application-dev.yaml b/lis-app/src/main/resources/application-dev.yaml index 214e130..2bd643c 100644 --- a/lis-app/src/main/resources/application-dev.yaml +++ b/lis-app/src/main/resources/application-dev.yaml @@ -50,8 +50,8 @@ logging: level: org.hibernate.engine.jdbc.spi.SqlExceptionHelper: ERROR org.springframework.web.clientRestTemplate: DEBUG - logging.level.org.apache.http: TRACE - logging.level.httpclient.wire: TRACE + org.apache.http: TRACE + httpclient.wire: TRACE application: ui: user-name: user @@ -68,23 +68,12 @@ service: store.password: password api: url: https://api.onlineszamla.nav.gov.hu/invoiceService/v3 - user: dufwfvhquolizk4 - password: Pbd6Mnkt9g - sign-key: 05-967b-0e5227e11ca44GF1ZEUBSX8F - exchange-key: a5c24GF1ZEUBUGIK - sender-tax-number: 13799504 - sender-company: USER RENDSZERHÁZ Informatikai Korlátolt Felelősségű Társaság + user: ddoz0z29mmzw2kl + password: Salabakt3r + sign-key: 78-bfed-07fd8f1685104GC07C82GM3G + exchange-key: 1f414GC07C82IBNV + sender-tax-number: 13364937 + sender-company: ELGEKKO MŰHELY SZOLGÁLTATÓ KORLÁTOLT FELELŐSSÉGŰ TÁRSASÁG sender-country: HU sender-contact: Kovács Géza - days-range: 34 -# api: -# url: https://api.onlineszamla.nav.gov.hu/invoiceService/v3 -# user: ddoz0z29mmzw2kl -# password: Salabakt3r -# sign-key: 78-bfed-07fd8f1685104GC07C82GM3G -# exchange-key: 1f414GC07C82IBNV -# sender-tax-number: 13364937 -# sender-company: ELGEKKO MŰHELY SZOLGÁLTATÓ KORLÁTOLT FELELŐSSÉGŰ TÁRSASÁG -# sender-country: HU -# sender-contact: Kovács Géza -# days-range: 34 + days-range: 34 \ No newline at end of file diff --git a/lis-app/src/main/resources/keystore/create-keystore.bat b/lis-app/src/main/resources/keystore/create-keystore.bat index 8f6ba87..d28327c 100644 --- a/lis-app/src/main/resources/keystore/create-keystore.bat +++ b/lis-app/src/main/resources/keystore/create-keystore.bat @@ -1 +1 @@ -keytool -importcert -keystore lis-keystore.jks -file nav-test.cer -alias nav-test -storepass password \ No newline at end of file +keytool -importcert -keystore lis-keystore.jks -file onlineszamla.nav.gov.hu.cer -alias nav -storepass password diff --git a/lis-app/src/main/resources/keystore/lis-keystore.jks b/lis-app/src/main/resources/keystore/lis-keystore.jks index d17ef8f53b625834537485c749cee652f8b2ae3d..5c8c33577099485672e9d9ac51aa6b2e7d9b099c 100644 GIT binary patch delta 60 zcmX@Fa!f$>-`jt085kIt7#J8B!8CJTVi^MiV{fQk%Aw6_T%sHzNvdq_66HEE*B*Wr N<6ClMsnpFlH2@ZJ5~2VA delta 1300 zcmZ8hdrVVj6#wq+1M2XJ6Oq+@cA_lUa@!T;A+H5+jZU^930fDtZ9nL>*L!R4rO=L1 zTSS~@VB-cNGDp-5BZ7#Mfm6{A6*TzRLmbn=)M*4Zof^Z0x|Atn`{N|%TXa16(%2Qb zm0PANEE3sn{LZh7PBL_+eC;X-Eoy&yTnDV+rU15L z=~3wO!IRm^7jKkzSp5@=6s!SVO_+6 zmmnOQHOI*F=Gce`y;*_eoSn*LScNe!g4CNi!nu9?5GS0)0nUx-mRypd>?BXI3`s*P zNmGWg0qT*3r*bGg$s?GmESvZz~lmRg>h<$J(d4i?LfVWl}(SM{V4w4+l>M4>(2AEIr zMo2P{wK)FutstCb6G)uS07r%$S**y8csZhJ#B{hVc25h>`$Dj^fu!X|ibpi!JcsxW zH{?mi)8^}~o?6DHfXgV-U?m}Ge-T2ZRzN*vGC|IcEEL02kh5o@^_~N?4U%@2VSQLn zEeA=OG_Uj2G72JQf+2Z8c=G==#+b$o8j&5ENVA?}X-~6(GAWvighz2l>@(Xy+?@xR zaYYUFf}MjG53ktOc=@Y#4Z1uvtZrjWg{Lk%XwCfxh3eX{j%u_oxNIaN%-iO!H>G}5 zytnoC=1=&*-|iXKS9Rt0G%QfQoQK^u9a1u%cWBgWDgn1tCq7;@ra!tj(vd| invoiceImports = invoiceImportRepository.findAll(); + invoiceImports.forEach(invoiceImport -> { + String processInstanceId = workflowManagerService.startAssignIncomingInvoiceProcess(invoiceImport); + log.info("Assign process created for invoice: {} -> {}", invoiceImport.getInvoice().getHumanId(), processInstanceId); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); + } +} \ No newline at end of file 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 1c4b588..536105f 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 @@ -176,10 +176,11 @@ public class TaxOfficeInvoiceApiIT { if (invoiceList.isPresent()) { for (InvoiceDigestType invoiceDigest : invoiceList.get()) { String invoiceNumber = invoiceDigest.getInvoiceNumber(); + log.info("Invoice found: {}", invoiceNumber); String supplierTaxNumber = invoiceDigest.getSupplierTaxNumber(); String invoiceXML = taxOfficeInvoiceService.queryInboundInvoiceDataAsString(invoiceNumber, supplierTaxNumber); Optional invoiceData = taxOfficeXmlConverter.fromXml(invoiceXML, InvoiceData.class); - invoiceData.ifPresent(invoice -> log.info("Found invoice: {}", invoiceXML)); + //invoiceData.ifPresent(invoice -> log.info("Found invoice: {}", invoiceXML)); } } } diff --git a/lis-app/src/test/resources/application-test.yaml b/lis-app/src/test/resources/application-test.yaml index f026c48..093e25e 100644 --- a/lis-app/src/test/resources/application-test.yaml +++ b/lis-app/src/test/resources/application-test.yaml @@ -50,8 +50,6 @@ logging: level: org.hibernate.engine.jdbc.spi.SqlExceptionHelper: ERROR org.springframework.web.clientRestTemplate: DEBUG - logging.level.org.apache.http: TRACE - logging.level.httpclient.wire: TRACE application: ui: user-name: user @@ -107,3 +105,14 @@ service: # sender-country: HU # sender-contact: Kovács Géza # days-range: 34 +# api: +# url: https://api-test.onlineszamla.nav.gov.hu/invoiceService/v3 +# user: vkvyibj5xgqpbp0 +# password: Salabakt3r +# sign-key: fe-9d8b-971c878376204BQEWTHH2HI6 +# exchange-key: 3af24BQEWTHH4TSX +# sender-tax-number: 13364937 +# sender-company: ELGEKKO MŰHELY SZOLGÁLTATÓ KORLÁTOLT FELELŐSSÉGŰ TÁRSASÁG +# sender-country: HU +# sender-contact: Kovács Géza +# days-range: 34 diff --git a/lis-service/src/main/java/hu/user/lis/service/nav/RestTemplateSSLConfiguration.java b/lis-service/src/main/java/hu/user/lis/service/nav/RestTemplateSSLConfiguration.java index 57aa73c..67c434e 100644 --- a/lis-service/src/main/java/hu/user/lis/service/nav/RestTemplateSSLConfiguration.java +++ b/lis-service/src/main/java/hu/user/lis/service/nav/RestTemplateSSLConfiguration.java @@ -14,7 +14,6 @@ import org.springframework.web.client.RestTemplate; import javax.net.ssl.SSLContext; import java.io.IOException; -import java.net.MalformedURLException; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; @@ -31,10 +30,19 @@ public class RestTemplateSSLConfiguration { @Bean public RestTemplate restTemplate() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, - CertificateException, MalformedURLException, IOException { + CertificateException, IOException { SSLContext sslContext = new SSLContextBuilder() .loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray()).build(); + +// TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true; +// SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom() +// .loadTrustMaterial(null, acceptingTrustStrategy) +// .build(); + +// SSLConnectionSocketFactory sslConFactory = new SSLConnectionSocketFactory(sslContext, +// new String[]{"TLSv1.2", "TLSv1.1"}, null, +// (hostname, session) -> true); SSLConnectionSocketFactory sslConFactory = new SSLConnectionSocketFactory(sslContext); CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslConFactory).build(); diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java index f18cc45..91b4fdd 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java @@ -15,6 +15,7 @@ import hu.user.lis.ui.event.SaveEntityEvent; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.transaction.annotation.Transactional; import org.zkoss.bind.BindUtils; import org.zkoss.bind.annotation.*; @@ -145,15 +146,14 @@ public class ProjectEditorModel extends EntityEditorModel { private void updateInvoiceFileChanges(Invoice invoice) { List actions = invoiceDocumentActions.get(invoice.getTechnicalId()); - //TODO nem letezo technikai ID miatt itt null jon, pedig nem johetne. File feltoltes bug lehet belole. - if (actions != null && !actions.isEmpty()) { + if (CollectionUtils.isNotEmpty(actions)) { entityDocumentService.executeActions(invoice.getId(), actions); } } private void updateTreasuryFileChanges(Treasury treasury) { List actions = treasuryDocumentActions.get(treasury.getTechnicalId()); - if (!actions.isEmpty()) { + if (CollectionUtils.isNotEmpty(actions)) { entityDocumentService.executeActions(treasury.getId(), actions); } } @@ -184,10 +184,17 @@ public class ProjectEditorModel extends EntityEditorModel { @Command public void onEditIncoming() { IncomingInvoice entity = invoiceDataModel.clone(selectedIncomingInvoice); - Map extraArg = ImmutableMap.of("actions", invoiceDocumentActions.get(selectedIncomingInvoice.getTechnicalId())); + Map extraArg = getDocumentExtraArg(invoiceDocumentActions, selectedIncomingInvoice.getTechnicalId()); Editors.doEdit(Editors.INCOMING_INVOICE, entity, selectedIncomingInvoice, extraArg, this::incomingModified); } + private Map getDocumentExtraArg(Map> actions, String technicalId) { + Map extraArg = new HashMap<>(); + if (actions.containsKey(technicalId)) { + extraArg = ImmutableMap.of("actions", actions.get(technicalId)); + } + return extraArg; + } private void incomingAdded(SaveEntityEvent event) { if (event.isSave()) { @@ -236,12 +243,8 @@ public class ProjectEditorModel extends EntityEditorModel { @Command public void onEditOutgoing() { OutgoingInvoice entity = invoiceDataModel.clone(selectedOutgoingInvoice); - if (invoiceDocumentActions.containsKey(selectedOutgoingInvoice.getTechnicalId())) { - Map extraArg = ImmutableMap.of("actions", invoiceDocumentActions.get(selectedOutgoingInvoice.getTechnicalId())); - Editors.doEdit(Editors.OUTGOING_INVOICE, entity, selectedOutgoingInvoice, extraArg, this::outgoingModified); - } else { - Editors.doEdit(Editors.OUTGOING_INVOICE, entity, selectedOutgoingInvoice, this::outgoingModified); - } + Map extraArg = getDocumentExtraArg(invoiceDocumentActions, selectedOutgoingInvoice.getTechnicalId()); + Editors.doEdit(Editors.OUTGOING_INVOICE, entity, selectedOutgoingInvoice, extraArg, this::outgoingModified); } private void outgoingAdded(SaveEntityEvent event) { @@ -291,7 +294,8 @@ public class ProjectEditorModel extends EntityEditorModel { @Command public void onEditTreasury() { Treasury entity = treasuryDataModel.clone(selectedTreasury); - Editors.doEdit(Editors.TREASURY, entity, selectedTreasury, this::treasuryModified); + Map extraArg = getDocumentExtraArg(treasuryDocumentActions, selectedTreasury.getTechnicalId()); + Editors.doEdit(Editors.TREASURY, entity, selectedTreasury, extraArg, this::treasuryModified); } private void treasuryAdded(SaveEntityEvent event) { @@ -299,6 +303,7 @@ public class ProjectEditorModel extends EntityEditorModel { Treasury modifiedEntity = event.getData(); getFormDocument().getTreasuries().add(modifiedEntity); selectedTreasury = modifiedEntity; + treasuryDocumentActions.put(modifiedEntity.getTechnicalId(), event.withAttachment().getActions()); validate(); BindUtils.postNotifyChange(this, "selectedTreasury"); BindUtils.postNotifyChange(getFormDocument(), "treasuries"); @@ -342,6 +347,7 @@ public class ProjectEditorModel extends EntityEditorModel { @Command public void onOpenFormPanel(@BindingParam("parentPanel") Component parentPanel) { parentPanel.invalidate(); + parentPanel.getParent().invalidate(); } @Command diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/validator/PartnerFormValidator.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/validator/PartnerFormValidator.java index 59f46ad..3351723 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/validator/PartnerFormValidator.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/validator/PartnerFormValidator.java @@ -9,11 +9,14 @@ import java.util.regex.Pattern; @Component public class PartnerFormValidator extends FormValidator { private static final String VAT_NR_PATTERN = "^\\d{8}-[1-5]-(0[2-9]|[1,3]\\d|20|2[2-9]|4[0-4]|51)$"; + private static final String SIMPLE_VAT_NR_PATTERN = "^\\d{8}$"; private Pattern vatNrPattern; + private Pattern simpleVatNrPattern; @PostConstruct public void postConstruct() { vatNrPattern = Pattern.compile(VAT_NR_PATTERN); + simpleVatNrPattern = Pattern.compile(SIMPLE_VAT_NR_PATTERN); } @Override @@ -21,14 +24,15 @@ public class PartnerFormValidator extends FormValidator { return new FieldValidation[]{ validator(entity.getName(), this::validateString, "A 'Név' kitöltése kötelező."), validator(entity.getShortName(), this::validateString, "A 'Rövid név' kitöltése kötelező."), - validator(entity.getVatNr(), this::validateVatNumber, "Az 'Adószám' kitöltése kötelező, formátuma: 12345678-1-01.") + validator(entity.getVatNr(), this::validateVatNumber, "Az 'Adószám' kitöltése kötelező, formátuma: 12345678-1-01 vagy 12345678.") //validator(entity.getAddress(), this::validateString, "A 'Cím' kitöltése kötelező."), }; } private boolean validateVatNumber(Object data) { if (data instanceof String) { - return vatNrPattern.matcher(String.valueOf(data)).matches(); + return vatNrPattern.matcher(String.valueOf(data)).matches() || + simpleVatNrPattern.matcher(String.valueOf(data)).matches(); } return false; } diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/WorkflowManagerService.java b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/WorkflowManagerService.java index 36a4303..d40aa64 100644 --- a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/WorkflowManagerService.java +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/service/WorkflowManagerService.java @@ -42,7 +42,7 @@ public class WorkflowManagerService { runtimeService.startProcessInstanceByKey(IMPORT_INCOMING_INVOICES); } - public void startAssignIncomingInvoiceProcess(InvoiceImport invoiceImport) { + public String startAssignIncomingInvoiceProcess(InvoiceImport invoiceImport) { Map params = ImmutableMap.of( "invoiceImportId", invoiceImport.getId(), "invoiceId", invoiceImport.getInvoice().getId(), @@ -50,7 +50,8 @@ public class WorkflowManagerService { "partnerName", invoiceImport.getInvoice().getPartner().getName(), "projectSuggestions", invoiceImport.getSuggestedProjects() ); - runtimeService.startProcessInstanceByKey(ASSIGN_INCOMING_INVOICES, params); + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(ASSIGN_INCOMING_INVOICES, params); + return processInstance.getProcessInstanceId(); } public Map getVariables(String id) { diff --git a/runConfigurations/server-dev.run.xml b/runConfigurations/server-dev.run.xml index 8b4535f..70b2257 100644 --- a/runConfigurations/server-dev.run.xml +++ b/runConfigurations/server-dev.run.xml @@ -1,7 +1,6 @@