trust:
store: classpath:keystore/lis-keystore.jks
store.password: password
- # 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: User Rendszerház Kft.
- # 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
+ 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
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
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
+import java.util.Objects;
import java.util.stream.Collectors;
@Mapper(componentModel = "spring")
@AfterMapping
default void afterMapping(@MappingTarget IncomingInvoice.IncomingInvoiceBuilder<?, ?> builder, InvoiceData invoiceData) {
LinesType invoiceLines = invoiceData.getInvoiceMain().getInvoice().getInvoiceLines();
- String title = invoiceLines.getLine().stream().map(LineType::getLineDescription)
- .collect(Collectors.joining(", "));
- builder.title(title);
+ if (Objects.nonNull(invoiceLines)) {
+ String title = invoiceLines.getLine().stream().map(LineType::getLineDescription)
+ .collect(Collectors.joining(", "));
+ if (title.length() > 200) {
+ title = title.substring(0, 200) + "...";
+ }
+ builder.title(title);
+ }
}
}
\ No newline at end of file
package hu.user.lis.workflow.invoice;
-import hu.user.lis.db.IncomingInvoice;
-import hu.user.lis.db.InvoiceImport;
-import hu.user.lis.db.InvoiceStatus;
-import hu.user.lis.db.Partner;
+import hu.user.lis.db.*;
import hu.user.lis.db.repository.InvoiceImportRepository;
import hu.user.lis.db.repository.InvoiceRepository;
import hu.user.lis.db.repository.PartnerRepository;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.NestedExceptionUtils;
+import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Override
@Transactional
public void execute(DelegateExecution delegateExecution) throws Exception {
+ InvoiceImport invoiceImport = null;
try {
- String invoiceXml = (String) delegateExecution.getVariable("invoice");
- log.info("Processing invoice {}", invoiceXml);
-
- InvoiceImport invoiceImport = createInvoiceImport(invoiceXml);
- if (Objects.isNull(invoiceImport)) {
- throw new IllegalStateException("Unsuccessful invoice import!");
+ String invoiceDigestInfo = (String) delegateExecution.getVariable("invoice");
+ log.info("Processing invoice {}", invoiceDigestInfo);
+ invoiceImport = createInvoiceImport(invoiceDigestInfo);
+ if (Objects.nonNull(invoiceImport)) {
+ saveInvoiceImport(invoiceImport);
+ workflowManagerService.startAssignIncomingInvoiceProcess(invoiceImport);
+ log.info("Invoice {} {} processed", invoiceImport.getInvoice().getHumanId(),
+ invoiceImport.getInvoice().getPartner().getName());
}
- workflowManagerService.startAssignIncomingInvoiceProcess(invoiceImport);
- log.info("Invoice {} {} processed", invoiceImport.getInvoice().getHumanId(),
- invoiceImport.getInvoice().getPartner().getName());
+ } catch (DataIntegrityViolationException e) {
+ log.error("DataIntegrityViolationException: {}, cause: {}", e.getMessage(), NestedExceptionUtils.getMostSpecificCause(e).getMessage());
} catch (Exception e) {
log.error(e);
}
}
- private InvoiceImport createInvoiceImport(String invoiceXml) throws Exception {
+ private InvoiceImport createInvoiceImport(String invoiceDigestInfo) throws Exception {
List<String> projectSuggestions = new ArrayList<>();
- IncomingInvoice invoice = incomingInvoiceFetcherService.getInvoiceDataOnline(invoiceXml, projectSuggestions);
+ IncomingInvoice invoice = incomingInvoiceFetcherService.getInvoiceDataOnline(invoiceDigestInfo, projectSuggestions);
invoice.setStatus(InvoiceStatus.INACTIVE);
-
Optional<Partner> partnerEntity = partnerRepository.findByVatNr(invoice.getPartner().getVatNr());
if (partnerEntity.isPresent()) {
if (isInvoiceImported(invoice.getHumanId(), partnerEntity.get())) {
invoice.setPartner(partnerEntity.get());
} else {
invoice.getPartner().setCreatedByImport(true);
- partnerRepository.save(invoice.getPartner());
}
- invoiceRepository.save(invoice);
-
- InvoiceImport invoiceImport = InvoiceImport.builder()
+ return InvoiceImport.builder()
.invoice(invoice)
.suggestedProjects(projectSuggestions)
.build();
+ }
+
+ private void saveInvoiceImport(InvoiceImport invoiceImport) throws Exception {
+ Invoice invoice = invoiceImport.getInvoice();
+ Optional.ofNullable(invoice).map(Invoice::getPartner).ifPresent(p -> {
+ if (Objects.isNull(p.getId())) {
+ partnerRepository.save(p);
+ }
+ });
+ Optional.ofNullable(invoice).ifPresent(i -> invoiceRepository.save(i));
invoiceImportRepository.save(invoiceImport);
- return invoiceImport;
}
private boolean isInvoiceImported(String humanId, Partner partner) {