mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-02 06:53:38 +00:00
eims integration master test complete
This commit is contained in:
@@ -111,10 +111,22 @@ export class Invoice extends BaseEntity {
|
||||
@Column({ name: "eims_status", type: "varchar", length: 20, default: "NOT_SUBMITTED" })
|
||||
eimsStatus!: EimsInvoiceStatus;
|
||||
|
||||
/** Invoice Reference Number returned by EIMS. Unique across invoices (partial index). */
|
||||
@Column({ name: "eims_irn", type: "varchar", length: 64, nullable: true })
|
||||
/**
|
||||
* Invoice Reference Number returned by EIMS. Unique across invoices (partial index). `text`,
|
||||
* not a fixed varchar — MoR has never documented an IRN format/length, and a real live value
|
||||
* (a `test-` prefix + 64 hex chars, 69 chars total) already overflowed a prior varchar(64).
|
||||
*/
|
||||
@Column({ name: "eims_irn", type: "text", nullable: true })
|
||||
eimsIrn?: string | null;
|
||||
|
||||
/**
|
||||
* `signedQR` from the register response — a base64 PNG image, already rendered by MoR (confirmed
|
||||
* against the Postman collection's saved response: decodes to a PNG magic-byte header). Stored
|
||||
* verbatim; `BillingService.renderEimsQr` only wraps it in a `data:image/png;base64,` URL.
|
||||
*/
|
||||
@Column({ name: "eims_signed_qr", type: "text", nullable: true })
|
||||
eimsSignedQr?: string | null;
|
||||
|
||||
/** The numeric `DocumentDetails.DocumentNumber` filed for this invoice. */
|
||||
@Column({ name: "eims_document_number", type: "varchar", length: 16, nullable: true })
|
||||
eimsDocumentNumber?: string | null;
|
||||
@@ -133,4 +145,24 @@ export class Invoice extends BaseEntity {
|
||||
/** Sanitized last failure: the gateway's own error fields only, never our signed envelope. */
|
||||
@Column({ name: "eims_last_error", type: "jsonb", nullable: true })
|
||||
eimsLastError?: EimsInvoiceError | null;
|
||||
|
||||
/**
|
||||
* `POST /v1/cancel` — set together, only once `eimsStatus` reaches CANCELLED.
|
||||
* `eimsCancelledAt` is our own server time (same convention as `eimsSubmittedAt`);
|
||||
* `eimsCancellationDate` is MoR's own confirmation string, stored verbatim like `eimsAckDate` —
|
||||
* its format (`"Sun Dec 22 21:55:03 EAT 2024"`, a Java `Date#toString()`) is not reliably
|
||||
* `Date.parse`-able (the `EAT` zone abbreviation is non-standard), so it is never parsed.
|
||||
*/
|
||||
@Column({ name: "eims_cancelled_at", type: "timestamptz", nullable: true })
|
||||
eimsCancelledAt?: Date | null;
|
||||
|
||||
@Column({ name: "eims_cancellation_date", type: "varchar", length: 64, nullable: true })
|
||||
eimsCancellationDate?: string | null;
|
||||
|
||||
/** Numeric string per the collection docs, e.g. "1" (Duplicate), "6" (Calculation Error). */
|
||||
@Column({ name: "eims_cancellation_reason_code", type: "varchar", length: 8, nullable: true })
|
||||
eimsCancellationReasonCode?: string | null;
|
||||
|
||||
@Column({ name: "eims_cancellation_remark", type: "text", nullable: true })
|
||||
eimsCancellationRemark?: string | null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user