Skip to content

Commit

Permalink
Merge pull request #29 from cardano-foundation/api2-reconcilation-req…
Browse files Browse the repository at this point in the history
…uest

feat: API2: source / ERP level reconcilation.
  • Loading branch information
matiwinnetou authored Sep 11, 2024
2 parents 67936ec + 8f00400 commit 38bfdc2
Show file tree
Hide file tree
Showing 133 changed files with 2,243 additions and 612 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import jakarta.validation.constraints.Size;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;
import org.javers.core.metamodel.annotation.DiffInclude;

import java.util.Optional;

Expand All @@ -14,7 +15,8 @@
@NoArgsConstructor
public class Account {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant

private String code;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import jakarta.validation.constraints.Size;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;
import org.javers.core.metamodel.annotation.DiffInclude;

import java.util.Optional;

Expand All @@ -14,7 +15,8 @@
@NoArgsConstructor
public class CostCenter {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant

private @Size(min = 1, max = 255) String customerCode;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;
import org.javers.core.metamodel.annotation.DiffInclude;

import java.util.Optional;

Expand All @@ -17,10 +18,12 @@
@NoArgsConstructor
public class Counterparty {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant

private @Size(min = 1, max = 255) @NotBlank String customerCode;

@Builder.Default

private Type type = VENDOR;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import jakarta.validation.constraints.NotBlank;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;

import java.util.Optional;

Expand All @@ -15,7 +15,7 @@
public class Currency {

@NotBlank
@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
private String customerCode;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;

import java.util.Optional;

Expand All @@ -17,21 +17,18 @@
@EqualsAndHashCode
public class Document {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
@Size(min = 1, max = 255) @NotBlank private String number;

@NotNull
@LOB_ERPSourceVersionRelevant
private Currency currency;

@Builder.Default
@NotNull
@LOB_ERPSourceVersionRelevant
private Optional<Vat> vat = Optional.empty();

@Builder.Default
@NotNull
@LOB_ERPSourceVersionRelevant
private Optional<Counterparty> counterparty = Optional.empty();

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public enum LedgerDispatchStatus {

COMPLETED, // tx hash is ready and provided and in addition we have decent finality score to consider it completed

FINALIZED; // finalised on blockchain(s) - tx hash (36 hours)
FINALIZED; // finalised on blockchain(s) - tx hash (12 hours)

public static Set<LedgerDispatchStatus> allDispatchedStatuses() {
return Set.of(MARK_DISPATCH, DISPATCHED, COMPLETED, FINALIZED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;

import java.util.Optional;

Expand All @@ -14,7 +14,7 @@
@NoArgsConstructor
public class Organisation {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
@Size(min = 1, max = 255) @NotBlank private String id;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
package org.cardanofoundation.lob.app.accounting_reporting_core.domain.core;

import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;

import java.util.Optional;

@AllArgsConstructor
@Getter
@Builder(toBuilder = true)
@EqualsAndHashCode
@NoArgsConstructor
public class Project {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
private @Size(min = 1, max = 255) String customerCode;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.cardanofoundation.lob.app.accounting_reporting_core.domain.core;

import jakarta.persistence.Enumerated;
import lombok.*;

import static jakarta.persistence.EnumType.STRING;

@AllArgsConstructor
@Getter
@Builder(toBuilder = true)
@EqualsAndHashCode
@ToString
@NoArgsConstructor
public class Reconcilation {

@Enumerated(STRING)
private ReconcilationCode source;

@Enumerated(STRING)
private ReconcilationCode sink;

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.cardanofoundation.lob.app.accounting_reporting_core.domain.core;

public enum TransactionVersionAlgo {
public enum ReconcilationCode {

ERP_SOURCE,
BLOCKCHAIN_SINK
OK,
NOK

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.cardanofoundation.lob.app.accounting_reporting_core.domain.core;

public enum ReconcilationStatus {

CREATED, // reconcilation is created but not started yet meaning no chunks sending started yet

STARTED, // reconcilation is started and first chunk event is sent

FAILED, // reconcilation is failed

COMPLETED, // reconcilation is completed, we see this on the last chunk event sent

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;

import java.time.LocalDate;
import java.time.YearMonth;
Expand All @@ -23,25 +23,24 @@
public class Transaction {

@NotBlank
@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
private String id;

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
@Size(min = 1, max = 255) @NotBlank String internalTransactionNumber;

@NotBlank
private String batchId;

@NotNull
@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
private LocalDate entryDate;

@NotNull
@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
private TransactionType transactionType;

@NotNull
@LOB_ERPSourceVersionRelevant
private Organisation organisation;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.PositiveOrZero;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;

import java.math.BigDecimal;
import java.util.Optional;
Expand All @@ -19,41 +19,36 @@
@EqualsAndHashCode
public class TransactionItem {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
@NotBlank private String id;

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
@NotNull private BigDecimal amountFcy;

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
@NotNull private BigDecimal amountLcy;

@Builder.Default
@LOB_ERPSourceVersionRelevant
private Optional<Account> accountDebit = Optional.empty();

@Builder.Default
@LOB_ERPSourceVersionRelevant
private Optional<Account> accountCredit = Optional.empty();

@Builder.Default
private Optional<AccountEvent> accountEvent = Optional.empty();

@Builder.Default
@LOB_ERPSourceVersionRelevant
private Optional<Project> project = Optional.empty();

@Builder.Default
@LOB_ERPSourceVersionRelevant
private Optional<CostCenter> costCenter = Optional.empty();

@Builder.Default
@LOB_ERPSourceVersionRelevant
private Optional<Document> document = Optional.empty(); // initially we allow empty but later as part of business rules we check if document is present

@NotNull
@PositiveOrZero
@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
private BigDecimal fxRate;

public static String id(String transactionId,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.cardanofoundation.lob.app.accounting_reporting_core.domain.core;

public enum ViolationCode {
public enum TransactionViolationCode {

DOCUMENT_MUST_BE_PRESENT,
TX_CANNOT_BE_ALTERED,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.*;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOB_ERPSourceVersionRelevant;
import org.cardanofoundation.lob.app.accounting_reporting_core.domain.core.annotations.LOBVersionSourceRelevant;

import java.math.BigDecimal;
import java.util.Optional;
Expand All @@ -16,7 +16,7 @@
@NoArgsConstructor
public class Vat {

@LOB_ERPSourceVersionRelevant
@LOBVersionSourceRelevant
@Size(min = 1, max = 255) @NotBlank private String customerCode;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,25 @@
public record Violation(Severity severity,
Source source,
Optional<String> txItemId,
ViolationCode code,
TransactionViolationCode code,
String processorModule,
Map<String, Object> bag) {

public static Violation create(Severity severity,
Source source,
ViolationCode violationCode,
TransactionViolationCode transactionViolationCode,
String processorModule,
Map<String, Object> bag) {
return new Violation(severity, source, Optional.empty(), violationCode, processorModule, bag);
return new Violation(severity, source, Optional.empty(), transactionViolationCode, processorModule, bag);
}

public static Violation create(Severity severity,
Source source,
String txItemId,
ViolationCode violationCode,
TransactionViolationCode transactionViolationCode,
String processorModule,
Map<String, Object> bag) {
return new Violation(severity, source, Optional.of(txItemId), violationCode, processorModule, bag);
return new Violation(severity, source, Optional.of(txItemId), transactionViolationCode, processorModule, bag);
}

public enum Severity {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface LOB_ERPSourceVersionRelevant {
public @interface LOBVersionSinkRelevant {

String key() default "";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface LOB_BlockchainSinkVersionRelevant {
public @interface LOBVersionSourceRelevant {

String key() default "";

Expand Down
Loading

0 comments on commit 38bfdc2

Please sign in to comment.