import { Invoice } from "../billing/entities/invoice.entity"; import { EimsInvoiceStatus, EimsInvoiceStatusView } from "./eims-registration.types"; /** * `Invoice` → `EimsInvoiceStatusView`, shared by every service that mutates EIMS state on an * invoice (registration, cancellation, receipts) — one place defines what "the current EIMS * status of an invoice" means to a caller. */ export function toEimsInvoiceStatusView(invoice: Invoice): EimsInvoiceStatusView { const counter = invoice.eimsInvoiceCounter; return { invoiceId: invoice.id, invoiceNumber: invoice.invoiceNumber, eimsStatus: invoice.eimsStatus ?? EimsInvoiceStatus.NotSubmitted, eimsIrn: invoice.eimsIrn ?? null, eimsDocumentNumber: invoice.eimsDocumentNumber ?? null, eimsInvoiceCounter: counter === null || counter === undefined ? null : Number(counter), eimsSubmittedAt: invoice.eimsSubmittedAt ?? null, eimsAckDate: invoice.eimsAckDate ?? null, eimsLastError: invoice.eimsLastError ?? null, eimsSignedQr: invoice.eimsSignedQr ?? null, eimsCancelledAt: invoice.eimsCancelledAt ?? null, eimsCancellationDate: invoice.eimsCancellationDate ?? null, eimsCancellationReasonCode: invoice.eimsCancellationReasonCode ?? null, eimsCancellationRemark: invoice.eimsCancellationRemark ?? null, }; }