mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 14:08:11 +00:00
fix(eims): retimestamp the EIMS migration to 3330000000000
3300000000000 collided with BookingWagonCancellations after the rebase. 3320000000000 is also unavailable: BulkContractTemplates3320000000000 is already recorded in freight.migrations on the shared dev database from a branch not present in this checkout, so checking only src/migrations is not sufficient. 3330000000000 is unique across src/migrations and greater than the current maximum timestamp recorded in freight.migrations. Rename the migration file and class. The migration has no explicit name field and no other code references its previous identity. Verify migration discovery through the actual runtime path: scripts/migrate.js loads compiled dist/migrations/*.js migrations, while application boot does not run migrations automatically. Confirm the renamed migration is present in dist. For controlled dev verification, remove its migration-history row and run pnpm migration:run again. The migration is discovered and applied under 3330000000000; its idempotent DDL produces no schema changes where the EIMS schema already exists.
This commit is contained in:
@@ -210,6 +210,14 @@ export interface EimsMapperContext {
|
||||
relatedDocument?: string | null;
|
||||
/** MoR numeric country code for the buyer; our DB stores the country name. */
|
||||
buyerCountryCode?: string | null;
|
||||
/**
|
||||
* Region code to use when the buyer's stored region is not already one.
|
||||
*
|
||||
* MoR validates `BuyerDetails.Region` against `^[0-9]{1,3}$`, but `companies.region` is free
|
||||
* text ("Addis Ababa"). Rather than ship a name→code table we cannot verify, a stored value that
|
||||
* already looks like a code is passed through and anything else falls back to this.
|
||||
*/
|
||||
buyerRegionFallback?: string | null;
|
||||
buyerIdType?: string | null;
|
||||
buyerIdNumber?: string | null;
|
||||
buyerCity?: string | null;
|
||||
@@ -220,6 +228,9 @@ export interface EimsMapperContext {
|
||||
formatDate?: (issuedAt: Date) => string;
|
||||
}
|
||||
|
||||
/** MoR's own constraint on `Region`: one to three digits. */
|
||||
const REGION_CODE = /^[0-9]{1,3}$/;
|
||||
|
||||
const num = (v: number | string): number => {
|
||||
const n = Number(v);
|
||||
if (!Number.isFinite(n)) throw new Error(`EIMS mapping: expected a numeric value, got ${String(v)}`);
|
||||
@@ -329,7 +340,9 @@ export function toEimsInvoice(
|
||||
Tin: company.tin,
|
||||
LegalName: company.name,
|
||||
Phone: company.phone ?? null,
|
||||
Region: company.region ?? null,
|
||||
Region: REGION_CODE.test(company.region ?? "")
|
||||
? (company.region as string)
|
||||
: (context.buyerRegionFallback ?? null),
|
||||
Country: context.buyerCountryCode ?? null,
|
||||
Zone: company.zone ?? null,
|
||||
Kebele: company.kebele ?? null,
|
||||
|
||||
@@ -115,6 +115,10 @@ export class Invoice extends BaseEntity {
|
||||
@Column({ name: "eims_irn", type: "varchar", length: 64, nullable: true })
|
||||
eimsIrn?: string | null;
|
||||
|
||||
/** The numeric `DocumentDetails.DocumentNumber` filed for this invoice. */
|
||||
@Column({ name: "eims_document_number", type: "varchar", length: 16, nullable: true })
|
||||
eimsDocumentNumber?: string | null;
|
||||
|
||||
/** The `SourceSystem.InvoiceCounter` this invoice consumed. */
|
||||
@Column({ name: "eims_invoice_counter", type: "bigint", nullable: true })
|
||||
eimsInvoiceCounter?: number | null;
|
||||
|
||||
Reference in New Issue
Block a user