import { type CommonReservedFields, type NoReservedFields, defaultGqlPermission, defaultPermission, } from "@tailor-platform/erp-kit/core"; import { db, type TailorAnyDBField } from "@tailor-platform/sdk"; import { accountReceivableDocument } from "./accountReceivableDocument"; const builtins = { accountReceivableDocumentId: db .uuid() .relation({ type: "n-1", toward: { type: accountReceivableDocument, as: "accountReceivableDocument" }, backward: "dueScheduleLines", }) .description("Foreign key to AccountReceivableDocument"), dueDate: db.date().description("Date when the customer installment is due"), amount: db.decimal().description("Positive due amount in transaction currency"), }; type ReservedFields = keyof typeof builtins | CommonReservedFields; export interface CreateAccountReceivableDueScheduleLineTypeParams< F extends Record, > { fields?: NoReservedFields; } export function createAccountReceivableDueScheduleLineType< const F extends Record, >(params: CreateAccountReceivableDueScheduleLineTypeParams = {}) { return db .table("AccountReceivableDueScheduleLine", { ...builtins, ...((params.fields ?? {}) as F), ...db.fields.timestamps(), }) .permission(defaultPermission) .gqlPermission(defaultGqlPermission); } export const accountReceivableDueScheduleLine = createAccountReceivableDueScheduleLineType();