diff --git a/src/main/java/zw/qantra/tm/domain/workflows/TransactionWorkflow.java b/src/main/java/zw/qantra/tm/domain/workflows/TransactionWorkflow.java index 555be18..5c33753 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/TransactionWorkflow.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/TransactionWorkflow.java @@ -237,8 +237,8 @@ public class TransactionWorkflow extends WorkflowDefinition { execution.setVariable("body", Utils.toJson(transaction)); return NextAction.moveToState(PURCHASE_INVOICE_PAYMENT, "Integration request successful"); }catch (Exception e) { - e.printStackTrace(); - return NextAction.moveToState(FAILED, e.getMessage()); + log.info(e.getCause().getMessage()); + return NextAction.moveToState(FAILED, e.getCause().getMessage()); } } @@ -251,7 +251,7 @@ public class TransactionWorkflow extends WorkflowDefinition { transaction = process(transaction, "purchaseInvoicePayment"); execution.setVariable("body", Utils.toJson(transaction)); return NextAction.moveToState(DONE, - "Purchase invoice payment generated - id: " + transaction.getErpPurchaseRef()); + "Purchase invoice payment generated - id: " + transaction.getErpPurchasePaymentRef()); }catch (Exception e) { e.printStackTrace(); return NextAction.retryAfter(new DateTime().plusMinutes(1), e.getMessage()); diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/IntegrationHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/IntegrationHandler.java index 89e2c86..16d70c2 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/IntegrationHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/IntegrationHandler.java @@ -57,7 +57,6 @@ public class IntegrationHandler implements HandlerInterface { try { transactionProcessorInterface.process(transaction); - transaction.setIntegrationStatus(transaction.getStatus()); }catch (Exception e){ e.getCause().printStackTrace(); transaction.setStatus(Status.FAILED); @@ -70,6 +69,12 @@ public class IntegrationHandler implements HandlerInterface { transactionEvent.setMessage(transaction.getErrorMessage()); transactionEventService.save(transactionEvent); + if(transaction.getStatus() != Status.SUCCESS){ + throw new ApiException("Transaction failed: " + transaction.getErrorMessage() ); + }else { + transaction.setIntegrationStatus(transaction.getStatus()); + } + Transaction t1 = Utils.deepCopy(transaction, Transaction.class); transactionService.save(transaction); return t1; diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/PollStatusHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/PollStatusHandler.java index 81f3cc5..b453681 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/PollStatusHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/PollStatusHandler.java @@ -53,12 +53,13 @@ public class PollStatusHandler implements HandlerInterface { transactionEventService.save(transactionEvent); transaction.setPollingStatus(transaction.getStatus()); + transaction.setPaymentStatus(transaction.getStatus()); // if transaction wasn't successful, throw and halt workflow if(transaction.getStatus() != Status.SUCCESS){ + transactionService.save(transaction); throw new ApiException("Transaction failed: " + transaction.getErrorMessage() ); }else { - transaction.setPaymentStatus(transaction.getStatus()); transaction.setErrorMessage(null); } diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/JournalEntryHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/JournalEntryHandler.java index 76d0ffc..ce06c59 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/JournalEntryHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/JournalEntryHandler.java @@ -59,6 +59,10 @@ public class JournalEntryHandler implements HandlerInterface { @Override public Transaction process(Transaction transaction) { logger.info("Processing journal entry for transaction: {}", transaction.getReference()); + + if(transaction.getErpJournalRef() != null) + return transaction; + TransactionEvent transactionEvent = TransactionEvent.builder() .transactionId(transaction.getId().toString()) .event(RequestType.JOURNAL_ENTRY.name()) diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PaymentEntryHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PaymentEntryHandler.java index 5e5e185..8034fea 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PaymentEntryHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PaymentEntryHandler.java @@ -56,6 +56,10 @@ public class PaymentEntryHandler implements HandlerInterface { @Override public Transaction process(Transaction transaction) { logger.info("Processing payment entry for transaction: {}", transaction.getReference()); + + if(transaction.getErpSalesPaymentRef() != null) + return transaction; + TransactionEvent transactionEvent = TransactionEvent.builder() .transactionId(transaction.getId().toString()) .event(RequestType.SALES_PAYMENT.name()) diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java index b1e4453..04d605b 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java @@ -61,6 +61,10 @@ public class PurchaseInvoiceHandler implements HandlerInterface { @Override public Transaction process(Transaction transaction) { logger.info("Processing purchase invoice for transaction: {}", transaction.getReference()); + + if(transaction.getErpPurchaseRef() != null) + return transaction; + TransactionEvent transactionEvent = TransactionEvent.builder() .transactionId(transaction.getId().toString()) .event(RequestType.PURCHASE_INVOICE.name()) diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java index 6e1e7d5..bf066e9 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java @@ -62,6 +62,10 @@ public class PurchasePaymentEntryHandler implements HandlerInterface { @Override public Transaction process(Transaction transaction) { logger.info("Processing purchase payment entry for transaction: {}", transaction.getReference()); + + if(transaction.getErpPurchasePaymentRef() != null) + return transaction; + TransactionEvent transactionEvent = TransactionEvent.builder() .transactionId(transaction.getId().toString()) .event(RequestType.PURCHASE_PAYMENT.name()) diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/SalesInvoiceHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/SalesInvoiceHandler.java index 1a85275..f929127 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/SalesInvoiceHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/SalesInvoiceHandler.java @@ -56,6 +56,10 @@ public class SalesInvoiceHandler implements HandlerInterface { @Transactional public Transaction process(Transaction transaction) { logger.info("Processing sales invoice for transaction: {}", transaction.getReference()); + + if(transaction.getErpSalesRef() != null) + return transaction; + TransactionEvent transactionEvent = TransactionEvent.builder() .transactionId(transaction.getId().toString()) .event(RequestType.SALES_INVOICE.name())