import { defaultGqlPermission, defaultPermission } from "@tailor-platform/erp-kit/core"; import { db } from "@tailor-platform/sdk"; import { bankAccount } from "./bankAccount"; export const BANK_RECONCILIATION_ACTIONS = ["RECONCILE", "UNRECONCILE"] as const; const builtins = { bankAccountId: db .uuid() .relation({ type: "n-1", toward: { type: bankAccount, as: "bankAccount" }, backward: "reconciliations", }) .description("Foreign key to the reconciled BankAccount"), reconciliationDate: db.date().description("Effective reconciliation date"), confirmedAt: db.datetime().description("Timestamp when reconciliation was confirmed"), action: db .enum(BANK_RECONCILIATION_ACTIONS) .description("Whether this history group reconciles or unreconciles its items"), }; // Reconciliations are immutable command results; consumers do not extend them with custom fields. export function createBankReconciliationType() { return db .table("BankReconciliation", { ...builtins, ...db.fields.timestamps(), }) .permission(defaultPermission) .gqlPermission(defaultGqlPermission); } export const bankReconciliation = createBankReconciliationType();