@happyvertical/smrt-commerce 0.55.24 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import { BillingAdjustmentCollection, ClientChargeCollection, PriceBookCollectio
12
12
  import { ForgeDeliveryCollection, ForgeProjectionRuntime, SmrtJobCollection, backgroundEligible } from "@happyvertical/smrt-jobs";
13
13
  import { planSqliteTableRebuilds, preflightMinorUnitsRescale, rescaleMoneyColumnsToMinorUnits, sqliteRebuildPlaceholderSql } from "@happyvertical/smrt-core/migrations";
14
14
  //#region src/__smrt-register__.ts
15
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-commerce","packageVersion":"0.55.24","objects":{"@happyvertical/smrt-commerce:ContractCollection":{"name":"contractcollection","className":"ContractCollection","qualifiedName":"@happyvertical/smrt-commerce:ContractCollection","collection":"contracts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/ContractCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByVendor":{"name":"findByVendor","async":true,"parameters":[{"name":"vendorId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"contractType","type":"ContractType","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"ContractStatus","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findDrafts":{"name":"findDrafts","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findAccepted":{"name":"findAccepted","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findOverdue":{"name":"findOverdue","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findExpired":{"name":"findExpired","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Contract","exportName":"ContractCollection","collectionExportName":"ContractCollectionCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"9c2e9c49"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:ContractLineItemCollection":{"name":"contractlineitemcollection","className":"ContractLineItemCollection","qualifiedName":"@happyvertical/smrt-commerce:ContractLineItemCollection","collection":"contractlineitems","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/ContractLineItemCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ContractLineItem","exportName":"ContractLineItemCollection","collectionExportName":"ContractLineItemCollectionCollection","schema":{"tableName":"contract_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"contract_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"product_id\\" UUID,\\n \\"sku\\" TEXT DEFAULT '',\\n \\"start_date\\" TIMESTAMP,\\n \\"end_date\\" TIMESTAMP,\\n \\"billing_period\\" TEXT DEFAULT '',\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"default":""},"quantity":{"type":"REAL","notNull":false,"default":1},"unit_price":{"type":"INTEGER","notNull":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"default":0},"product_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"sku":{"type":"TEXT","notNull":false,"default":""},"start_date":{"type":"TIMESTAMP","notNull":false},"end_date":{"type":"TIMESTAMP","notNull":false},"billing_period":{"type":"TEXT","notNull":false,"default":""},"sort_order":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"contract_line_items_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contract_line_items_meta_type_idx","columns":["_meta_type"]},{"name":"contract_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contract_line_items_contract_id_idx","columns":["contract_id"]},{"name":"contract_line_items_product_id_idx","columns":["product_id"]}],"version":"be2b46cd"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:CustomerCollection":{"name":"customercollection","className":"CustomerCollection","qualifiedName":"@happyvertical/smrt-commerce:CustomerCollection","collection":"customers","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/CustomerCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"CustomerStatus","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"getOrCreateForProfile":{"name":"getOrCreateForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"defaults","type":"Partial<object>","optional":true,"memberTypes":["number","string"]}],"returnType":"Promise<Customer>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Customer","exportName":"CustomerCollection","collectionExportName":"CustomerCollectionCollection","schema":{"tableName":"customers","ddl":"CREATE TABLE IF NOT EXISTS \\"customers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"credit_limit\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"tax_exempt\\" BOOLEAN DEFAULT FALSE,\\n \\"tax_id\\" TEXT DEFAULT '',\\n \\"default_shipping_address\\" JSON,\\n \\"default_billing_address\\" JSON,\\n \\"status\\" TEXT,\\n \\"customer_type\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"credit_limit":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"tax_exempt":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"tax_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_shipping_address":{"type":"JSON","notNull":false,"unique":false},"default_billing_address":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"customer_type":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"customers_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"customers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"customers_profile_id_idx","columns":["profile_id"]}],"version":"49587ccf"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:FulfillmentCollection":{"name":"fulfillmentcollection","className":"FulfillmentCollection","qualifiedName":"@happyvertical/smrt-commerce:FulfillmentCollection","collection":"fulfillments","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/FulfillmentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"FulfillmentStatus","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"fulfillmentType","type":"FulfillmentType","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findInTransit":{"name":"findInTransit","async":true,"parameters":[],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByTracking":{"name":"findByTracking","async":true,"parameters":[{"name":"trackingNumber","type":"string","optional":false}],"returnType":"Promise<Fulfillment | null>","isStatic":false,"isPublic":true},"findShippedInRange":{"name":"findShippedInRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Fulfillment","exportName":"FulfillmentCollection","collectionExportName":"FulfillmentCollectionCollection","schema":{"tableName":"fulfillments","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"fulfillment_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"tracking_number\\" TEXT DEFAULT '',\\n \\"carrier\\" TEXT DEFAULT '',\\n \\"shipping_address\\" JSON,\\n \\"shipped_at\\" TIMESTAMP,\\n \\"delivered_at\\" TIMESTAMP,\\n \\"estimated_delivery\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"fulfillment_type":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"tracking_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"carrier":{"type":"TEXT","notNull":false,"unique":false,"default":""},"shipping_address":{"type":"JSON","notNull":false,"unique":false},"shipped_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"delivered_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"estimated_delivery":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillments_contract_id_idx","columns":["contract_id"]}],"version":"2f708fc5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:FulfillmentLineItemCollection":{"name":"fulfillmentlineitemcollection","className":"FulfillmentLineItemCollection","qualifiedName":"@happyvertical/smrt-commerce:FulfillmentLineItemCollection","collection":"fulfillmentlineitems","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/FulfillmentLineItemCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByFulfillment":{"name":"findByFulfillment","async":true,"parameters":[{"name":"fulfillmentId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"findByContractLineItem":{"name":"findByContractLineItem","async":true,"parameters":[{"name":"contractLineItemId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"getTotalFulfilledForContractLine":{"name":"getTotalFulfilledForContractLine","async":true,"parameters":[{"name":"contractLineItemId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"FulfillmentLineItem","exportName":"FulfillmentLineItemCollection","collectionExportName":"FulfillmentLineItemCollectionCollection","schema":{"tableName":"fulfillment_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillment_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"fulfillment_id\\" UUID,\\n \\"contract_line_item_id\\" UUID,\\n \\"quantity_fulfilled\\" REAL DEFAULT 1,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"fulfillment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"fulfillments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_line_item_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contract_line_items","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"quantity_fulfilled":{"type":"REAL","notNull":false,"unique":false,"default":1},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillment_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillment_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillment_line_items_fulfillment_id_idx","columns":["fulfillment_id"]},{"name":"fulfillment_line_items_contract_line_item_id_idx","columns":["contract_line_item_id"]}],"version":"14537dbe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:InvoiceCollection":{"name":"invoicecollection","className":"InvoiceCollection","qualifiedName":"@happyvertical/smrt-commerce:InvoiceCollection","collection":"invoices","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/InvoiceCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"InvoiceStatus","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findDrafts":{"name":"findDrafts","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findSent":{"name":"findSent","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findPaid":{"name":"findPaid","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findPartial":{"name":"findPartial","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findOverdue":{"name":"findOverdue","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByExternalId":{"name":"findByExternalId","async":true,"parameters":[{"name":"externalId","type":"string","optional":false}],"returnType":"Promise<Invoice | null>","isStatic":false,"isPublic":true},"findNeedingSync":{"name":"findNeedingSync","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByNumber":{"name":"findByNumber","async":true,"parameters":[{"name":"invoiceNumber","type":"string","optional":false}],"returnType":"Promise<Invoice | null>","isStatic":false,"isPublic":true},"countForYear":{"name":"countForYear","async":true,"parameters":[{"name":"year","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"generateInvoiceNumber":{"name":"generateInvoiceNumber","async":true,"parameters":[{"name":"options","type":"InvoiceNumberOptions","optional":true}],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"getTotalOutstandingForCustomer":{"name":"getTotalOutstandingForCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Invoice","exportName":"InvoiceCollection","collectionExportName":"InvoiceCollectionCollection","schema":{"tableName":"invoices","ddl":"CREATE TABLE IF NOT EXISTS \\"invoices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"invoice_number\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"paid_date\\" TIMESTAMP,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"provider_tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'CAD',\\n \\"status\\" TEXT,\\n \\"ar_journal_id\\" UUID,\\n \\"revenue_journal_id\\" UUID,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"customer_external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"collection_method\\" TEXT DEFAULT '',\\n \\"sent_at\\" TIMESTAMP,\\n \\"viewed_at\\" TIMESTAMP,\\n \\"reminders_sent\\" INTEGER DEFAULT 0,\\n \\"last_reminder_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"customer_notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"issue_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"due_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"paid_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"provider_tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"CAD"},"status":{"type":"TEXT","notNull":false,"unique":false},"ar_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"revenue_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"collection_method":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"viewed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"reminders_sent":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_reminder_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"terms":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"invoices_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoices_customer_id_idx","columns":["customer_id"]},{"name":"invoices_contract_id_idx","columns":["contract_id"]},{"name":"invoices_ar_journal_id_idx","columns":["ar_journal_id"]},{"name":"invoices_revenue_journal_id_idx","columns":["revenue_journal_id"]}],"version":"e7573840"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:InvoiceLineItemCollection":{"name":"invoicelineitemcollection","className":"InvoiceLineItemCollection","qualifiedName":"@happyvertical/smrt-commerce:InvoiceLineItemCollection","collection":"invoicelineitems","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/InvoiceLineItemCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByInvoice":{"name":"findByInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findBySource":{"name":"findBySource","async":true,"parameters":[{"name":"sourceType","type":"string","optional":false},{"name":"sourceId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findBySourceType":{"name":"findBySourceType","async":true,"parameters":[{"name":"sourceType","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"getTotalForInvoice":{"name":"getTotalForInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getSubtotalForInvoice":{"name":"getSubtotalForInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getTaxForInvoice":{"name":"getTaxForInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getNextSortOrder":{"name":"getNextSortOrder","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"recalculateAmounts":{"name":"recalculateAmounts","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"toAccountingLineItems":{"name":"toAccountingLineItems","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<AccountingLineItemInput[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"InvoiceLineItem","exportName":"InvoiceLineItemCollection","collectionExportName":"InvoiceLineItemCollectionCollection","schema":{"tableName":"invoice_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"invoice_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"sku\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"invoice_editor_state_json\\" TEXT DEFAULT '',\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"source_type\\" TEXT DEFAULT '',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"revenue_account_id\\" UUID,\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sku":{"type":"TEXT","notNull":false,"unique":false,"default":""},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":1},"invoice_editor_state_json":{"type":"TEXT","notNull":false,"unique":false,"default":""},"unit_price":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"unique":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"revenue_account_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"invoice_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoice_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoice_line_items_invoice_id_idx","columns":["invoice_id"]},{"name":"invoice_line_items_revenue_account_id_idx","columns":["revenue_account_id"]}],"version":"6d388b43"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentAllocationCollection":{"name":"paymentallocationcollection","className":"PaymentAllocationCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentAllocationCollection","collection":"paymentallocations","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentAllocationCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"allocatePayment":{"name":"allocatePayment","async":true,"parameters":[{"name":"input","type":"object","optional":false,"memberTypes":["string","object[]","number"]}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByPayment":{"name":"findByPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByInvoice":{"name":"findByInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"getTotalAllocatedToInvoice":{"name":"getTotalAllocatedToInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getTotalAllocatedFromPayment":{"name":"getTotalAllocatedFromPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getUnallocatedFromPayment":{"name":"getUnallocatedFromPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false},{"name":"paymentAmount","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByPaymentAndInvoice":{"name":"findByPaymentAndInvoice","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false},{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation | null>","isStatic":false,"isPublic":true},"findByAllocator":{"name":"findByAllocator","async":true,"parameters":[{"name":"allocatedBy","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"PaymentAllocation","exportName":"PaymentAllocationCollection","collectionExportName":"PaymentAllocationCollectionCollection","schema":{"tableName":"payment_allocations","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_allocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"allocated_at\\" TIMESTAMP,\\n \\"allocated_by\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"payments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"allocated_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"allocated_by":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_allocations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_allocations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_allocations_payment_id_idx","columns":["payment_id"]},{"name":"payment_allocations_invoice_id_idx","columns":["invoice_id"]}],"version":"102e6fbc"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentCollection":{"name":"paymentcollection","className":"PaymentCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentCollection","collection":"payments","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"PaymentStatus","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByMethod":{"name":"findByMethod","async":true,"parameters":[{"name":"method","type":"PaymentMethod","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findCompleted":{"name":"findCompleted","async":true,"parameters":[],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByTransactionId":{"name":"findByTransactionId","async":true,"parameters":[{"name":"transactionId","type":"string","optional":false}],"returnType":"Promise<Payment | null>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"getTotalForContract":{"name":"getTotalForContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByJournal":{"name":"findByJournal","async":true,"parameters":[{"name":"journalId","type":"string","optional":false}],"returnType":"Promise<Payment | null>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Payment","exportName":"PaymentCollection","collectionExportName":"PaymentCollectionCollection","schema":{"tableName":"payments","ddl":"CREATE TABLE IF NOT EXISTS \\"payments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"method\\" TEXT,\\n \\"status\\" TEXT,\\n \\"transaction_id\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"journal_id\\" UUID,\\n \\"paid_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"native_amount\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"usd_at_quote\\" INTEGER DEFAULT 0,\\n \\"usd_at_confirmation\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"method":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"transaction_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"usd_at_quote":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"usd_at_confirmation":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"payments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payments_contract_id_idx","columns":["contract_id"]},{"name":"payments_customer_id_idx","columns":["customer_id"]},{"name":"payments_journal_id_idx","columns":["journal_id"]}],"version":"33f80e50"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentInstrumentCollection":{"name":"paymentinstrumentcollection","className":"PaymentInstrumentCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentInstrumentCollection","collection":"paymentinstruments","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentInstrumentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findActiveByCustomer":{"name":"findActiveByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findDefaultForCustomer":{"name":"findDefaultForCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument | null>","isStatic":false,"isPublic":true},"findByProviderPaymentMethodId":{"name":"findByProviderPaymentMethodId","async":true,"parameters":[{"name":"providerPaymentMethodId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument | null>","isStatic":false,"isPublic":true},"setDefaultForCustomer":{"name":"setDefaultForCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false},{"name":"instrumentId","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"PaymentInstrument","exportName":"PaymentInstrumentCollection","collectionExportName":"PaymentInstrumentCollectionCollection","schema":{"tableName":"payment_instruments","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_instruments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"provider_payment_method_id\\" TEXT DEFAULT '',\\n \\"type\\" TEXT DEFAULT 'card',\\n \\"brand\\" TEXT DEFAULT '',\\n \\"last4\\" TEXT DEFAULT '',\\n \\"exp_month\\" INTEGER DEFAULT 0,\\n \\"exp_year\\" INTEGER DEFAULT 0,\\n \\"is_default\\" BOOLEAN DEFAULT FALSE,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_payment_method_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"type":{"type":"TEXT","notNull":false,"unique":false,"default":"card"},"brand":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last4":{"type":"TEXT","notNull":false,"unique":false,"default":""},"exp_month":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"exp_year":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"is_default":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"payment_instruments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_instruments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_instruments_customer_id_idx","columns":["customer_id"]}],"version":"722393fe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentIntentCollection":{"name":"paymentintentcollection","className":"PaymentIntentCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentIntentCollection","collection":"paymentintents","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentIntentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByIdempotencyKey":{"name":"findByIdempotencyKey","async":true,"parameters":[{"name":"args","type":"PaymentIntentIdempotencyArgs","optional":false}],"returnType":"Promise<PaymentIntent | null>","isStatic":false,"isPublic":true},"getOrCreateByIdempotencyKey":{"name":"getOrCreateByIdempotencyKey","async":true,"parameters":[{"name":"seed","type":"PaymentIntentSeed","optional":false}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"findOpen":{"name":"findOpen","async":true,"parameters":[],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findStale":{"name":"findStale","async":true,"parameters":[],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByLicenseeEmail":{"name":"findByLicenseeEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByOfferingRef":{"name":"findByOfferingRef","async":true,"parameters":[{"name":"offeringRef","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"PaymentIntentStatus","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"PaymentIntent","exportName":"PaymentIntentCollection","collectionExportName":"PaymentIntentCollectionCollection","schema":{"tableName":"payment_intents","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_intents\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"sku_id\\" TEXT DEFAULT '',\\n \\"offering_ref\\" TEXT DEFAULT '',\\n \\"licensee_email\\" TEXT DEFAULT '',\\n \\"customer_id\\" TEXT DEFAULT '',\\n \\"payment_options\\" JSON DEFAULT '[]',\\n \\"usd_price_locked\\" INTEGER DEFAULT 0,\\n \\"price_lock_window_ms\\" INTEGER,\\n \\"price_lock_expires_at\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"idempotency_key\\" TEXT DEFAULT '',\\n \\"paid_option_backend_id\\" TEXT DEFAULT '',\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"paid_at\\" TIMESTAMP,\\n \\"issued_at\\" TIMESTAMP,\\n \\"expired_at\\" TIMESTAMP,\\n \\"cancelled_at\\" TIMESTAMP,\\n \\"retired_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"sku_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"offering_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"licensee_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_options":{"type":"JSON","notNull":false,"unique":false,"default":[]},"usd_price_locked":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"price_lock_window_ms":{"type":"INTEGER","notNull":false,"unique":false},"price_lock_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"idempotency_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_option_backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"cancelled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"retired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_intents_tenant_id_offering_ref_idx","columns":["tenant_id","offering_ref","licensee_email","idempotency_key"],"unique":true,"nullsNotDistinct":true},{"name":"payment_intents_slug_context_idx","columns":["slug","context"]},{"name":"payment_intents_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c565aaef"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PayoutCollection":{"name":"payoutcollection","className":"PayoutCollection","qualifiedName":"@happyvertical/smrt-commerce:PayoutCollection","collection":"payouts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PayoutCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"createFromPayment":{"name":"createFromPayment","async":true,"parameters":[{"name":"args","type":"CreatePayoutFromPaymentArgs","optional":false}],"returnType":"Promise<Payout>","isStatic":false,"isPublic":true},"findByPayment":{"name":"findByPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findByVendor":{"name":"findByVendor","async":true,"parameters":[{"name":"vendorId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"PayoutStatus","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findFailed":{"name":"findFailed","async":true,"parameters":[],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findByBackendTxRef":{"name":"findByBackendTxRef","async":true,"parameters":[{"name":"backendTxRef","type":"string","optional":false}],"returnType":"Promise<Payout | null>","isStatic":false,"isPublic":true},"getConfirmedTotalForVendor":{"name":"getConfirmedTotalForVendor","async":true,"parameters":[{"name":"vendorId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Payout","exportName":"PayoutCollection","collectionExportName":"PayoutCollectionCollection","schema":{"tableName":"payouts","ddl":"CREATE TABLE IF NOT EXISTS \\"payouts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"vendor_id\\" UUID,\\n \\"gross_amount\\" INTEGER DEFAULT 0,\\n \\"operator_fee\\" INTEGER DEFAULT 0,\\n \\"supplier_net\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT '',\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"confirmed_at\\" TIMESTAMP,\\n \\"failed_at\\" TIMESTAMP,\\n \\"failure_reason\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"gross_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"operator_fee":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"supplier_net":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"confirmed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failure_reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payouts_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payouts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payouts_vendor_id_idx","columns":["vendor_id"]}],"version":"98fa81d5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:VendorCollection":{"name":"vendorcollection","className":"VendorCollection","qualifiedName":"@happyvertical/smrt-commerce:VendorCollection","collection":"vendors","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/VendorCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"VendorStatus","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"getOrCreateForProfile":{"name":"getOrCreateForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"defaults","type":"Partial<object>","optional":true,"memberTypes":["number","string"]}],"returnType":"Promise<Vendor>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Vendor","exportName":"VendorCollection","collectionExportName":"VendorCollectionCollection","schema":{"tableName":"vendors","ddl":"CREATE TABLE IF NOT EXISTS \\"vendors\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"lead_time_days\\" INTEGER DEFAULT 0,\\n \\"minimum_order_amount\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"default_contact_email\\" TEXT DEFAULT '',\\n \\"default_contact_phone\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"payout_addresses\\" JSON DEFAULT '{}',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"lead_time_days":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"minimum_order_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"default_contact_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_contact_phone":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payout_addresses":{"type":"JSON","notNull":false,"unique":false,"default":{}},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"vendors_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"vendors_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"vendors_profile_id_idx","columns":["profile_id"]}],"version":"0963c71f"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Contract":{"name":"contract","className":"Contract","qualifiedName":"@happyvertical/smrt-commerce:Contract","collection":"contracts","description":"Contract is the base class for all commercial agreements.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Contract","collectionExportName":"ContractCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"9c2e9c49"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Estimate":{"name":"estimate","className":"Estimate","qualifiedName":"@happyvertical/smrt-commerce:Estimate","collection":"contracts","description":"Quote or proposal for a customer","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"Estimate","collectionExportName":"EstimateCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"2f1624b2"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Order":{"name":"order","className":"Order","qualifiedName":"@happyvertical/smrt-commerce:Order","collection":"contracts","description":"Customer purchase order","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"Order","collectionExportName":"OrderCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"b7667cf3"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Lease":{"name":"lease","className":"Lease","qualifiedName":"@happyvertical/smrt-commerce:Lease","collection":"contracts","description":"Rental or lease agreement","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"Lease","collectionExportName":"LeaseCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"b24cdace"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Agreement":{"name":"agreement","className":"Agreement","qualifiedName":"@happyvertical/smrt-commerce:Agreement","collection":"contracts","description":"Service or maintenance agreement","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"Agreement","collectionExportName":"AgreementCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"28f0c394"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PurchaseOrder":{"name":"purchaseorder","className":"PurchaseOrder","qualifiedName":"@happyvertical/smrt-commerce:PurchaseOrder","collection":"contracts","description":"Order sent to vendor/supplier","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"expectedDate":{"type":"meta","required":false,"default":"","description":"The date you expect the delivery, as YYYY-MM-DD. Leave blank if it is not known.","_meta":{"description":"The date you expect the delivery, as YYYY-MM-DD. Leave blank if it is not known.","underlyingType":"text"}},"shipTo":{"type":"meta","required":false,"default":"","description":"Where this order should be delivered, including any delivery instructions.","_meta":{"description":"Where this order should be delivered, including any delivery instructions.","underlyingType":"text"}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"PurchaseOrder","collectionExportName":"PurchaseOrderCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"91ec64bb"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:WholesaleOrder":{"name":"wholesaleorder","className":"WholesaleOrder","qualifiedName":"@happyvertical/smrt-commerce:WholesaleOrder","collection":"contracts","description":"B2B order placed by a wholesale customer.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"WholesaleOrder","collectionExportName":"WholesaleOrderCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"ccb8a3ae"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:ProductionOrder":{"name":"productionorder","className":"ProductionOrder","qualifiedName":"@happyvertical/smrt-commerce:ProductionOrder","collection":"contracts","description":"Instruction to commission goods from an internal or external factory.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"productId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"bomId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"ProductionOrder","collectionExportName":"ProductionOrderCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"c6b977a5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Cart":{"name":"cart","className":"Cart","qualifiedName":"@happyvertical/smrt-commerce:Cart","collection":"contracts","description":"Transient order-in-progress for a shopper.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"Cart","collectionExportName":"CartCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"fba16d4f"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:LicenseSale":{"name":"licensesale","className":"LicenseSale","qualifiedName":"@happyvertical/smrt-commerce:LicenseSale","collection":"contracts","description":"Industry-neutral licensing primitive.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"skuId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"paymentId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"licenseeEmail":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"licenseeLegalEntity":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"licenseeJurisdiction":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsMedium":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsDistributionScope":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsExclusivity":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsDuration":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsTerritory":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsSublicensing":{"type":"meta","required":false,"default":false,"_meta":{"underlyingType":"boolean"}},"rightsDerivatives":{"type":"meta","required":false,"default":false,"_meta":{"underlyingType":"boolean"}},"pdfUrl":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"pdfHash":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"onChainHashRegistryRef":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getRightsSnapshot":{"name":"getRightsSnapshot","async":false,"parameters":[],"returnType":"LicenseRightsSnapshot","isStatic":false,"isPublic":true},"revoke":{"name":"revoke","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"Contract","exportName":"LicenseSale","collectionExportName":"LicenseSaleCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"d6d82bad"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:ContractLineItem":{"name":"contractlineitem","className":"ContractLineItem","qualifiedName":"@happyvertical/smrt-commerce:ContractLineItem","collection":"contractlineitems","description":"ContractLineItem represents a single line item on a contract.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/ContractLineItem.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractId":{"type":"foreignKey","required":false,"related":"Contract","description":"The order, quote or agreement this line belongs to.","_meta":{"description":"The order, quote or agreement this line belongs to.","role":"items"}},"description":{"type":"text","required":false,"default":"","description":"What is being sold or bought on this line.","_meta":{"description":"What is being sold or bought on this line."}},"quantity":{"type":"decimal","required":false,"default":1,"description":"How many.","_meta":{"description":"How many."}},"unitPrice":{"type":"integer","required":false,"default":0,"description":"The price of one, before tax.","_meta":{"description":"The price of one, before tax.","ui":{"format":"money"}}},"discount":{"type":"integer","required":false,"default":0,"_meta":{"ui":{"format":"money"}}},"taxRate":{"type":"decimal","required":false,"default":0,"description":"The tax rate for this line, as a percentage (5 means 5%).","_meta":{"description":"The tax rate for this line, as a percentage (5 means 5%)."}},"amount":{"type":"integer","required":false,"default":0,"description":"The line total.","_meta":{"description":"The line total.","ui":{"format":"money"}}},"productId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-products:Product","description":"The product this line is for, if it is one you list.","_meta":{"description":"The product this line is for, if it is one you list."}},"sku":{"type":"text","required":false,"default":""},"startDate":{"type":"datetime","required":false},"endDate":{"type":"datetime","required":false},"billingPeriod":{"type":"text","required":false,"default":""},"sortOrder":{"type":"integer","required":false,"default":0}},"methods":{"calculateAmount":{"name":"calculateAmount","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"isRecurring":{"name":"isRecurring","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isSubscriptionActive":{"name":"isSubscriptionActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"ContractLineItem","collectionExportName":"ContractLineItemCollection","schema":{"tableName":"contract_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"contract_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"product_id\\" UUID,\\n \\"sku\\" TEXT DEFAULT '',\\n \\"start_date\\" TIMESTAMP,\\n \\"end_date\\" TIMESTAMP,\\n \\"billing_period\\" TEXT DEFAULT '',\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"default":""},"quantity":{"type":"REAL","notNull":false,"default":1},"unit_price":{"type":"INTEGER","notNull":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"default":0},"product_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"sku":{"type":"TEXT","notNull":false,"default":""},"start_date":{"type":"TIMESTAMP","notNull":false},"end_date":{"type":"TIMESTAMP","notNull":false},"billing_period":{"type":"TEXT","notNull":false,"default":""},"sort_order":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"contract_line_items_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contract_line_items_meta_type_idx","columns":["_meta_type"]},{"name":"contract_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contract_line_items_contract_id_idx","columns":["contract_id"]},{"name":"contract_line_items_product_id_idx","columns":["product_id"]}],"version":"be2b46cd"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Customer":{"name":"customer","className":"Customer","qualifiedName":"@happyvertical/smrt-commerce:Customer","collection":"customers","description":"Customer represents the customer role for a Profile.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Customer.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"description":"Links this customer to their profile record, where their name and contact details are kept."}},"creditLimit":{"type":"integer","required":false,"default":0,"description":"The most this customer may owe you at one time. Leave it at zero if you do not set limits.","_meta":{"description":"The most this customer may owe you at one time. Leave it at zero if you do not set limits.","ui":{"format":"money"}}},"paymentTerms":{"type":"text","required":false,"default":"","description":"How long the customer has to pay, written the way you would say it, for example \\"Net 30\\".","_meta":{"description":"How long the customer has to pay, written the way you would say it, for example \\"Net 30\\"."}},"taxExempt":{"type":"boolean","required":false,"default":false,"description":"Turn this on if you do not charge this customer sales tax.","_meta":{"description":"Turn this on if you do not charge this customer sales tax."}},"taxId":{"type":"text","required":false,"default":"","description":"The tax or VAT number of the customer, kept on file for tax-exempt sales.","_meta":{"sensitive":true,"description":"The tax or VAT number of the customer, kept on file for tax-exempt sales."},"sensitive":true},"defaultShippingAddress":{"type":"json","required":false,"description":"Where you usually send goods to this customer, so you do not retype it on every order.","_meta":{"description":"Where you usually send goods to this customer, so you do not retype it on every order."}},"defaultBillingAddress":{"type":"json","required":false,"description":"Where you send invoices to this customer.","_meta":{"description":"Where you send invoices to this customer."}},"status":{"type":"text","required":false,"description":"Whether you are still dealing with this customer: active, inactive or suspended.","_meta":{"description":"Whether you are still dealing with this customer: active, inactive or suspended."},"enum":["active","inactive","suspended"]},"customerType":{"type":"text","required":false,"description":"The kind of customer: a direct shopper, a wholesale buyer or a retail customer.","_meta":{"description":"The kind of customer: a direct shopper, a wholesale buyer or a retail customer."},"enum":["dtc","wholesale","retail"]},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this customer.","_meta":{"description":"Anything worth remembering about this customer.","ui":{"widget":"textarea"}}},"contacts":{"type":"json","required":false,"default":[],"description":"The people you deal with at this customer, with their role and how to reach them.","_meta":{"description":"The people you deal with at this customer, with their role and how to reach them."}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isWholesale":{"name":"isWholesale","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"hasAvailableCredit":{"name":"hasAvailableCredit","async":false,"parameters":[{"name":"amount","type":"number","optional":false}],"returnType":"boolean","isStatic":false,"isPublic":true},"getProfileId":{"name":"getProfileId","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Customer","collectionExportName":"CustomerCollection","schema":{"tableName":"customers","ddl":"CREATE TABLE IF NOT EXISTS \\"customers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"credit_limit\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"tax_exempt\\" BOOLEAN DEFAULT FALSE,\\n \\"tax_id\\" TEXT DEFAULT '',\\n \\"default_shipping_address\\" JSON,\\n \\"default_billing_address\\" JSON,\\n \\"status\\" TEXT,\\n \\"customer_type\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"credit_limit":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"tax_exempt":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"tax_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_shipping_address":{"type":"JSON","notNull":false,"unique":false},"default_billing_address":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"customer_type":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"customers_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"customers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"customers_profile_id_idx","columns":["profile_id"]}],"version":"49587ccf"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Fulfillment":{"name":"fulfillment","className":"Fulfillment","qualifiedName":"@happyvertical/smrt-commerce:Fulfillment","collection":"fulfillments","description":"Fulfillment tracks the delivery or completion of contract items.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Fulfillment.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractId":{"type":"foreignKey","required":false,"related":"Contract","description":"The order being fulfilled.","_meta":{"description":"The order being fulfilled."}},"fulfillmentType":{"type":"text","required":false,"description":"How it gets to the customer: shipment, delivery, pickup, digital or service.","_meta":{"description":"How it gets to the customer: shipment, delivery, pickup, digital or service."},"enum":["shipment","delivery","pickup","digital","service"]},"status":{"type":"text","required":false,"description":"Where it stands: pending, processing, shipped, delivered or cancelled.","_meta":{"description":"Where it stands: pending, processing, shipped, delivered or cancelled."},"enum":["pending","processing","shipped","delivered","cancelled"]},"trackingNumber":{"type":"text","required":false,"default":"","description":"The carrier's tracking number.","_meta":{"description":"The carrier's tracking number."}},"carrier":{"type":"text","required":false,"default":"","description":"The company carrying it.","_meta":{"description":"The company carrying it."}},"shippingAddress":{"type":"json","required":false},"shippedAt":{"type":"datetime","required":false,"description":"When it was dispatched.","_meta":{"description":"When it was dispatched."}},"deliveredAt":{"type":"datetime","required":false,"description":"When it arrived.","_meta":{"description":"When it arrived."}},"estimatedDelivery":{"type":"datetime","required":false},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this shipment.","_meta":{"description":"Anything worth remembering about this shipment."}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isDelivered":{"name":"isDelivered","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isInTransit":{"name":"isInTransit","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPending":{"name":"isPending","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markShipped":{"name":"markShipped","async":false,"parameters":[{"name":"trackingNumber","type":"string","optional":true},{"name":"carrier","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"markDelivered":{"name":"markDelivered","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Fulfillment","collectionExportName":"FulfillmentCollection","schema":{"tableName":"fulfillments","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"fulfillment_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"tracking_number\\" TEXT DEFAULT '',\\n \\"carrier\\" TEXT DEFAULT '',\\n \\"shipping_address\\" JSON,\\n \\"shipped_at\\" TIMESTAMP,\\n \\"delivered_at\\" TIMESTAMP,\\n \\"estimated_delivery\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"fulfillment_type":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"tracking_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"carrier":{"type":"TEXT","notNull":false,"unique":false,"default":""},"shipping_address":{"type":"JSON","notNull":false,"unique":false},"shipped_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"delivered_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"estimated_delivery":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillments_contract_id_idx","columns":["contract_id"]}],"version":"2f708fc5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:FulfillmentLineItem":{"name":"fulfillmentlineitem","className":"FulfillmentLineItem","qualifiedName":"@happyvertical/smrt-commerce:FulfillmentLineItem","collection":"fulfillmentlineitems","description":"FulfillmentLineItem tracks which contract line items are included in a specific fulfillment and how much was fulfilled.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/FulfillmentLineItem.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"fulfillmentId":{"type":"foreignKey","required":false,"related":"Fulfillment","description":"The shipment this line belongs to.","_meta":{"description":"The shipment this line belongs to.","role":"items"}},"contractLineItemId":{"type":"foreignKey","required":false,"related":"ContractLineItem","description":"The order line being sent.","_meta":{"description":"The order line being sent."}},"quantityFulfilled":{"type":"decimal","required":false,"default":1,"description":"How many of that line are in this shipment.","_meta":{"description":"How many of that line are in this shipment."}},"notes":{"type":"text","required":false,"default":""}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":true,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"FulfillmentLineItem","collectionExportName":"FulfillmentLineItemCollection","schema":{"tableName":"fulfillment_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillment_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"fulfillment_id\\" UUID,\\n \\"contract_line_item_id\\" UUID,\\n \\"quantity_fulfilled\\" REAL DEFAULT 1,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"fulfillment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"fulfillments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_line_item_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contract_line_items","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"quantity_fulfilled":{"type":"REAL","notNull":false,"unique":false,"default":1},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillment_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillment_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillment_line_items_fulfillment_id_idx","columns":["fulfillment_id"]},{"name":"fulfillment_line_items_contract_line_item_id_idx","columns":["contract_line_item_id"]}],"version":"14537dbe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Invoice":{"name":"invoice","className":"Invoice","qualifiedName":"@happyvertical/smrt-commerce:Invoice","collection":"invoices","description":"Invoice represents a bill sent to a customer for goods or services.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Invoice.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"customerId":{"type":"foreignKey","required":false,"related":"Customer","description":"The customer being billed.","_meta":{"description":"The customer being billed."}},"contractId":{"type":"foreignKey","required":false,"related":"Contract","description":"The order or agreement this invoice bills for, if any.","_meta":{"description":"The order or agreement this invoice bills for, if any."}},"invoiceNumber":{"type":"text","required":false,"default":"","description":"The number printed on the invoice.","_meta":{"description":"The number printed on the invoice."}},"reference":{"type":"text","required":false,"default":""},"issueDate":{"type":"datetime","required":false,"description":"The date the invoice was issued.","_meta":{"description":"The date the invoice was issued."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment is expected.","_meta":{"description":"The date payment is expected."}},"paidDate":{"type":"datetime","required":false,"description":"The date it was paid in full.","_meta":{"description":"The date it was paid in full."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"providerTaxAmount":{"type":"integer","required":false,"default":0,"_meta":{"ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"What the customer owes in all, tax included.","_meta":{"description":"What the customer owes in all, tax included.","ui":{"format":"money"}}},"amountPaid":{"type":"integer","required":false,"default":0,"description":"How much of the total has been paid so far.","_meta":{"description":"How much of the total has been paid so far.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"CAD","description":"The currency of the invoice.","_meta":{"description":"The currency of the invoice.","ui":{"widget":"currency"}}},"status":{"type":"text","required":false,"description":"Where the invoice stands: draft, sent, viewed, paid, overdue or cancelled.","_meta":{"description":"Where the invoice stands: draft, sent, viewed, paid, overdue or cancelled."},"enum":["draft","sent","viewed","partial","paid","overdue","cancelled","written_off"]},"arJournalId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Journal"},"revenueJournalId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Journal"},"externalId":{"type":"text","required":false,"default":""},"customerExternalId":{"type":"text","required":false,"default":""},"externalProvider":{"type":"text","required":false,"default":""},"syncedAt":{"type":"datetime","required":false},"collectionMethod":{"type":"text","required":false,"default":"","enum":["","send_invoice","charge_automatically"]},"sentAt":{"type":"datetime","required":false},"viewedAt":{"type":"datetime","required":false},"remindersSent":{"type":"integer","required":false,"default":0},"lastReminderAt":{"type":"datetime","required":false},"notes":{"type":"text","required":false,"default":"","description":"Private notes, not shown to the customer.","_meta":{"description":"Private notes, not shown to the customer.","ui":{"widget":"textarea"}}},"customerNotes":{"type":"text","required":false,"default":"","description":"A message shown to the customer on the invoice.","_meta":{"description":"A message shown to the customer on the invoice.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The payment conditions, such as Net 30.","_meta":{"description":"The payment conditions, such as Net 30.","ui":{"widget":"textarea"}}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isSent":{"name":"isSent","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPaid":{"name":"isPaid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPartial":{"name":"isPartial","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getAmountDue":{"name":"getAmountDue","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"markSent":{"name":"markSent","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markViewed":{"name":"markViewed","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"updatePaymentStatus":{"name":"updatePaymentStatus","async":false,"parameters":[{"name":"amountPaid","type":"number","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"writeOff":{"name":"writeOff","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"recognizeRevenue":{"name":"recognizeRevenue","async":true,"parameters":[{"name":"options","type":"RecognizeRevenueOptions","optional":false}],"returnType":"Promise<Journal>","isStatic":false,"isPublic":true},"getArJournal":{"name":"getArJournal","async":true,"parameters":[],"returnType":"Promise<Journal | null>","isStatic":false,"isPublic":true},"toAccountingInput":{"name":"toAccountingInput","async":true,"parameters":[],"returnType":"Promise<AccountingInvoiceInput>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"],"writable":["customerId","contractId","invoiceNumber","reference","issueDate","dueDate","currency","notes","customerNotes","terms","externalId","customerExternalId","externalProvider"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Invoice","collectionExportName":"InvoiceCollection","schema":{"tableName":"invoices","ddl":"CREATE TABLE IF NOT EXISTS \\"invoices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"invoice_number\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"paid_date\\" TIMESTAMP,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"provider_tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'CAD',\\n \\"status\\" TEXT,\\n \\"ar_journal_id\\" UUID,\\n \\"revenue_journal_id\\" UUID,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"customer_external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"collection_method\\" TEXT DEFAULT '',\\n \\"sent_at\\" TIMESTAMP,\\n \\"viewed_at\\" TIMESTAMP,\\n \\"reminders_sent\\" INTEGER DEFAULT 0,\\n \\"last_reminder_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"customer_notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"issue_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"due_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"paid_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"provider_tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"CAD"},"status":{"type":"TEXT","notNull":false,"unique":false},"ar_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"revenue_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"collection_method":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"viewed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"reminders_sent":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_reminder_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"terms":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"invoices_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoices_customer_id_idx","columns":["customer_id"]},{"name":"invoices_contract_id_idx","columns":["contract_id"]},{"name":"invoices_ar_journal_id_idx","columns":["ar_journal_id"]},{"name":"invoices_revenue_journal_id_idx","columns":["revenue_journal_id"]}],"version":"e7573840"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:InvoiceLineItem":{"name":"invoicelineitem","className":"InvoiceLineItem","qualifiedName":"@happyvertical/smrt-commerce:InvoiceLineItem","collection":"invoicelineitems","description":"InvoiceLineItem represents a single line item on an invoice.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/InvoiceLineItem.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"invoiceId":{"type":"foreignKey","required":false,"related":"Invoice","description":"The invoice this line belongs to.","_meta":{"description":"The invoice this line belongs to.","role":"items"}},"description":{"type":"text","required":false,"default":"","description":"What is being billed on this line.","_meta":{"description":"What is being billed on this line."}},"sku":{"type":"text","required":false,"default":""},"quantity":{"type":"decimal","required":false,"default":1,"description":"How many.","_meta":{"description":"How many."}},"invoiceEditorStateJson":{"type":"text","required":false,"default":""},"unitPrice":{"type":"integer","required":false,"default":0,"description":"The price of one, before tax.","_meta":{"description":"The price of one, before tax.","ui":{"format":"money"}}},"discount":{"type":"integer","required":false,"default":0,"_meta":{"ui":{"format":"money"}}},"taxRate":{"type":"decimal","required":false,"default":0,"description":"The tax rate for this line, as a percentage (5 means 5%).","_meta":{"description":"The tax rate for this line, as a percentage (5 means 5%)."}},"amount":{"type":"integer","required":false,"default":0,"description":"The line total.","_meta":{"description":"The line total.","ui":{"format":"money"}}},"sourceType":{"type":"text","required":false,"default":""},"sourceId":{"type":"text","required":false,"default":""},"periodStart":{"type":"datetime","required":false},"periodEnd":{"type":"datetime","required":false},"revenueAccountId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Account"},"sortOrder":{"type":"integer","required":false,"default":0}},"methods":{"calculateAmount":{"name":"calculateAmount","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"getSubtotal":{"name":"getSubtotal","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"getTaxAmount":{"name":"getTaxAmount","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"applyEditorDraft":{"name":"applyEditorDraft","async":false,"parameters":[{"name":"draft","type":"InvoiceLineDraft","optional":false},{"name":"context","type":"InvoiceCalculationContext","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"getEditorDraft":{"name":"getEditorDraft","async":false,"parameters":[{"name":"authorizedContext","type":"InvoiceCalculationContext","optional":false}],"returnType":"InvoiceLineDraft | null","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"hasSource":{"name":"hasSource","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"hasPeriod":{"name":"hasPeriod","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"toAccountingLineItem":{"name":"toAccountingLineItem","async":false,"parameters":[{"name":"currency","type":"string","optional":true}],"returnType":"AccountingLineItemInput","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"InvoiceLineItem","collectionExportName":"InvoiceLineItemCollection","schema":{"tableName":"invoice_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"invoice_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"sku\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"invoice_editor_state_json\\" TEXT DEFAULT '',\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"source_type\\" TEXT DEFAULT '',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"revenue_account_id\\" UUID,\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sku":{"type":"TEXT","notNull":false,"unique":false,"default":""},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":1},"invoice_editor_state_json":{"type":"TEXT","notNull":false,"unique":false,"default":""},"unit_price":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"unique":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"revenue_account_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"invoice_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoice_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoice_line_items_invoice_id_idx","columns":["invoice_id"]},{"name":"invoice_line_items_revenue_account_id_idx","columns":["revenue_account_id"]}],"version":"6d388b43"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Payment":{"name":"payment","className":"Payment","qualifiedName":"@happyvertical/smrt-commerce:Payment","collection":"payments","description":"Payment represents a financial transaction against a contract.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Payment.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractId":{"type":"foreignKey","required":false,"related":"Contract","description":"The order or agreement this payment is for, if any.","_meta":{"description":"The order or agreement this payment is for, if any."}},"customerId":{"type":"foreignKey","required":false,"related":"Customer","description":"The customer who paid.","_meta":{"description":"The customer who paid."}},"amount":{"type":"integer","required":false,"default":0,"description":"How much was paid.","_meta":{"description":"How much was paid.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the payment.","_meta":{"description":"The currency of the payment.","ui":{"widget":"currency"}}},"method":{"type":"text","required":false,"description":"How it was paid: cash, check, card, bank transfer or other.","_meta":{"description":"How it was paid: cash, check, card, bank transfer or other."},"enum":["cash","check","credit_card","bank_transfer","crypto","other"]},"status":{"type":"text","required":false,"description":"Whether the payment is pending, completed, failed or refunded.","_meta":{"description":"Whether the payment is pending, completed, failed or refunded."},"enum":["pending","completed","failed","refunded","cancelled"]},"transactionId":{"type":"text","required":false,"default":""},"reference":{"type":"text","required":false,"default":"","description":"A reference note, such as a check number.","_meta":{"description":"A reference note, such as a check number."}},"journalId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Journal"},"paidAt":{"type":"datetime","required":false,"description":"When the money was received.","_meta":{"description":"When the money was received."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this payment.","_meta":{"description":"Anything worth remembering about this payment.","ui":{"widget":"textarea"}}},"externalId":{"type":"text","required":false,"default":""},"externalProvider":{"type":"text","required":false,"default":""},"syncedAt":{"type":"datetime","required":false},"backendId":{"type":"text","required":false,"default":""},"backendTxRef":{"type":"text","required":false,"default":""},"nativeAmount":{"type":"integer","required":false,"default":0},"nativeCurrency":{"type":"text","required":false,"default":""},"usdAtQuote":{"type":"integer","required":false,"default":0},"usdAtConfirmation":{"type":"integer","required":false,"default":0}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"usdDrift":{"name":"usdDrift","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"isPending":{"name":"isPending","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isRefunded":{"name":"isRefunded","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recordPayment":{"name":"recordPayment","async":true,"parameters":[{"name":"options","type":"RecordPaymentOptions","optional":false}],"returnType":"Promise<Journal>","isStatic":false,"isPublic":true},"getJournal":{"name":"getJournal","async":true,"parameters":[],"returnType":"Promise<Journal | null>","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"reason","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"],"writable":["contractId","customerId","amount","currency","method","transactionId","reference","notes","externalId","externalProvider","backendId","backendTxRef","nativeAmount","nativeCurrency","usdAtQuote","usdAtConfirmation"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Payment","collectionExportName":"PaymentCollection","schema":{"tableName":"payments","ddl":"CREATE TABLE IF NOT EXISTS \\"payments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"method\\" TEXT,\\n \\"status\\" TEXT,\\n \\"transaction_id\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"journal_id\\" UUID,\\n \\"paid_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"native_amount\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"usd_at_quote\\" INTEGER DEFAULT 0,\\n \\"usd_at_confirmation\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"method":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"transaction_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"usd_at_quote":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"usd_at_confirmation":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"payments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payments_contract_id_idx","columns":["contract_id"]},{"name":"payments_customer_id_idx","columns":["customer_id"]},{"name":"payments_journal_id_idx","columns":["journal_id"]}],"version":"33f80e50"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentAllocation":{"name":"paymentallocation","className":"PaymentAllocation","qualifiedName":"@happyvertical/smrt-commerce:PaymentAllocation","collection":"paymentallocations","description":"PaymentAllocation tracks how payments are applied to invoices.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/PaymentAllocation.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"paymentId":{"type":"foreignKey","required":false,"related":"Payment","description":"The payment being applied.","_meta":{"description":"The payment being applied."}},"invoiceId":{"type":"foreignKey","required":false,"related":"Invoice","description":"The invoice it settles.","_meta":{"description":"The invoice it settles."}},"amount":{"type":"integer","required":false,"default":0,"description":"How much of the payment goes to this invoice.","_meta":{"description":"How much of the payment goes to this invoice.","ui":{"format":"money"}}},"allocatedAt":{"type":"datetime","required":false,"description":"When it was applied.","_meta":{"description":"When it was applied."}},"allocatedBy":{"type":"text","required":false,"default":""},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this allocation.","_meta":{"description":"Anything worth remembering about this allocation."}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"PaymentAllocation","collectionExportName":"PaymentAllocationCollection","schema":{"tableName":"payment_allocations","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_allocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"allocated_at\\" TIMESTAMP,\\n \\"allocated_by\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"payments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"allocated_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"allocated_by":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_allocations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_allocations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_allocations_payment_id_idx","columns":["payment_id"]},{"name":"payment_allocations_invoice_id_idx","columns":["invoice_id"]}],"version":"102e6fbc"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentInstrument":{"name":"paymentinstrument","className":"PaymentInstrument","qualifiedName":"@happyvertical/smrt-commerce:PaymentInstrument","collection":"paymentinstruments","description":"PaymentInstrument stores a reusable payment method a customer has saved with a payment backend (e.g. a card vaulted by Stripe), so it can be charged later without the customer present.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/PaymentInstrument.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"customerId":{"type":"foreignKey","required":false,"related":"Customer"},"backendId":{"type":"text","required":false,"default":""},"providerCustomerId":{"type":"text","required":false,"default":""},"providerPaymentMethodId":{"type":"text","required":false,"default":""},"type":{"type":"text","required":false,"default":"card"},"brand":{"type":"text","required":false,"default":""},"last4":{"type":"text","required":false,"default":""},"expMonth":{"type":"integer","required":false,"default":0},"expYear":{"type":"integer","required":false,"default":0},"isDefault":{"type":"boolean","required":false,"default":false},"status":{"type":"text","required":false,"enum":["active","expired","removed"]}},"methods":{"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isRemoved":{"name":"isRemoved","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markExpired":{"name":"markExpired","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markRemoved":{"name":"markRemoved","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"],"writable":["customerId","backendId","providerCustomerId","providerPaymentMethodId","type","brand","last4","expMonth","expYear","status"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"PaymentInstrument","collectionExportName":"PaymentInstrumentCollection","schema":{"tableName":"payment_instruments","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_instruments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"provider_payment_method_id\\" TEXT DEFAULT '',\\n \\"type\\" TEXT DEFAULT 'card',\\n \\"brand\\" TEXT DEFAULT '',\\n \\"last4\\" TEXT DEFAULT '',\\n \\"exp_month\\" INTEGER DEFAULT 0,\\n \\"exp_year\\" INTEGER DEFAULT 0,\\n \\"is_default\\" BOOLEAN DEFAULT FALSE,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_payment_method_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"type":{"type":"TEXT","notNull":false,"unique":false,"default":"card"},"brand":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last4":{"type":"TEXT","notNull":false,"unique":false,"default":""},"exp_month":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"exp_year":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"is_default":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"payment_instruments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_instruments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_instruments_customer_id_idx","columns":["customer_id"]}],"version":"722393fe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentIntent":{"name":"paymentintent","className":"PaymentIntent","qualifiedName":"@happyvertical/smrt-commerce:PaymentIntent","collection":"paymentintents","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/PaymentIntent.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"skuId":{"type":"text","required":false,"default":""},"offeringRef":{"type":"text","required":false,"default":""},"licenseeEmail":{"type":"text","required":false,"default":""},"customerId":{"type":"text","required":false,"default":""},"paymentOptions":{"type":"json","required":false,"default":[]},"usdPriceLocked":{"type":"integer","required":false,"default":0},"priceLockWindowMs":{"type":"integer","required":false},"priceLockExpiresAt":{"type":"datetime","required":false},"status":{"type":"text","required":false,"enum":["awaiting_payment","paid","issued","retired","expired","cancelled"]},"idempotencyKey":{"type":"text","required":false,"default":""},"paidOptionBackendId":{"type":"text","required":false,"default":""},"paymentId":{"type":"text","required":false,"default":""},"paidAt":{"type":"datetime","required":false},"issuedAt":{"type":"datetime","required":false},"expiredAt":{"type":"datetime","required":false},"cancelledAt":{"type":"datetime","required":false},"retiredAt":{"type":"datetime","required":false},"notes":{"type":"text","required":false,"default":""}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isAwaitingPayment":{"name":"isAwaitingPayment","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPaid":{"name":"isPaid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isIssued":{"name":"isIssued","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCancelled":{"name":"isCancelled","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isRetired":{"name":"isRetired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isTerminal":{"name":"isTerminal","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markPaid":{"name":"markPaid","async":false,"parameters":[{"name":"args","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"void","isStatic":false,"isPublic":true},"verifyAndMarkPaid":{"name":"verifyAndMarkPaid","async":true,"parameters":[{"name":"args","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"markIssued":{"name":"markIssued","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"expire":{"name":"expire","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[{"name":"reason","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"retire":{"name":"retire","async":false,"parameters":[{"name":"reason","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"getOption":{"name":"getOption","async":false,"parameters":[{"name":"backendId","type":"string","optional":false}],"returnType":"PaymentOption | undefined","isStatic":false,"isPublic":true},"isOptionRetired":{"name":"isOptionRetired","async":false,"parameters":[{"name":"backendId","type":"string","optional":false}],"returnType":"boolean","isStatic":false,"isPublic":true},"getRetiredOptions":{"name":"getRetiredOptions","async":false,"parameters":[],"returnType":"PaymentOption[]","isStatic":false,"isPublic":true}},"decoratorConfig":{"conflictColumns":["tenant_id","offering_ref","licensee_email","idempotency_key"],"api":{"include":["list","get","create","update"],"writable":["skuId","offeringRef","licenseeEmail","customerId","paymentOptions","usdPriceLocked","priceLockWindowMs","idempotencyKey","notes"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"}},"extends":"SmrtObject","exportName":"PaymentIntent","collectionExportName":"PaymentIntentCollection","schema":{"tableName":"payment_intents","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_intents\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"sku_id\\" TEXT DEFAULT '',\\n \\"offering_ref\\" TEXT DEFAULT '',\\n \\"licensee_email\\" TEXT DEFAULT '',\\n \\"customer_id\\" TEXT DEFAULT '',\\n \\"payment_options\\" JSON DEFAULT '[]',\\n \\"usd_price_locked\\" INTEGER DEFAULT 0,\\n \\"price_lock_window_ms\\" INTEGER,\\n \\"price_lock_expires_at\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"idempotency_key\\" TEXT DEFAULT '',\\n \\"paid_option_backend_id\\" TEXT DEFAULT '',\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"paid_at\\" TIMESTAMP,\\n \\"issued_at\\" TIMESTAMP,\\n \\"expired_at\\" TIMESTAMP,\\n \\"cancelled_at\\" TIMESTAMP,\\n \\"retired_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"sku_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"offering_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"licensee_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_options":{"type":"JSON","notNull":false,"unique":false,"default":[]},"usd_price_locked":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"price_lock_window_ms":{"type":"INTEGER","notNull":false,"unique":false},"price_lock_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"idempotency_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_option_backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"cancelled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"retired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_intents_tenant_id_offering_ref_idx","columns":["tenant_id","offering_ref","licensee_email","idempotency_key"],"unique":true,"nullsNotDistinct":true},{"name":"payment_intents_slug_context_idx","columns":["slug","context"]},{"name":"payment_intents_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c565aaef"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Payout":{"name":"payout","className":"Payout","qualifiedName":"@happyvertical/smrt-commerce:Payout","collection":"payouts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Payout.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"paymentId":{"type":"text","required":false,"default":""},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor"},"grossAmount":{"type":"integer","required":false,"default":0},"operatorFee":{"type":"integer","required":false,"default":0},"supplierNet":{"type":"integer","required":false,"default":0},"currency":{"type":"text","required":false,"default":""},"backendId":{"type":"text","required":false,"default":""},"backendTxRef":{"type":"text","required":false,"default":""},"status":{"type":"text","required":false,"enum":["pending","sent","confirmed","failed"]},"sentAt":{"type":"datetime","required":false},"confirmedAt":{"type":"datetime","required":false},"failedAt":{"type":"datetime","required":false},"failureReason":{"type":"text","required":false,"default":""},"notes":{"type":"text","required":false,"default":""}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isPending":{"name":"isPending","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isSent":{"name":"isSent","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isConfirmed":{"name":"isConfirmed","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isFailed":{"name":"isFailed","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markSent":{"name":"markSent","async":false,"parameters":[{"name":"backendTxRef","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markConfirmed":{"name":"markConfirmed","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"reason","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"resetFromFailed":{"name":"resetFromFailed","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"validateAmounts":{"name":"validateAmounts","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Payout","collectionExportName":"PayoutCollection","schema":{"tableName":"payouts","ddl":"CREATE TABLE IF NOT EXISTS \\"payouts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"vendor_id\\" UUID,\\n \\"gross_amount\\" INTEGER DEFAULT 0,\\n \\"operator_fee\\" INTEGER DEFAULT 0,\\n \\"supplier_net\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT '',\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"confirmed_at\\" TIMESTAMP,\\n \\"failed_at\\" TIMESTAMP,\\n \\"failure_reason\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"gross_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"operator_fee":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"supplier_net":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"confirmed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failure_reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payouts_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payouts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payouts_vendor_id_idx","columns":["vendor_id"]}],"version":"98fa81d5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Vendor":{"name":"vendor","className":"Vendor","qualifiedName":"@happyvertical/smrt-commerce:Vendor","collection":"vendors","description":"Vendor represents the vendor/supplier role for a Profile.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Vendor.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"description":"Links this vendor to their profile record, where their name and contact details are kept."}},"leadTimeDays":{"type":"integer","required":false,"default":0,"description":"How many days the vendor usually takes between your order and delivery.","_meta":{"description":"How many days the vendor usually takes between your order and delivery."}},"minimumOrderAmount":{"type":"integer","required":false,"default":0,"description":"The smallest order the vendor will accept.","_meta":{"description":"The smallest order the vendor will accept.","ui":{"format":"money"}}},"paymentTerms":{"type":"text","required":false,"default":"","description":"How long you have to pay this vendor, written the way you would say it, for example \\"Net 30\\".","_meta":{"description":"How long you have to pay this vendor, written the way you would say it, for example \\"Net 30\\"."}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency this vendor bills you in.","_meta":{"description":"The currency this vendor bills you in.","ui":{"widget":"currency"}}},"defaultContactEmail":{"type":"text","required":false,"default":"","description":"The email address you normally use to reach this vendor.","_meta":{"description":"The email address you normally use to reach this vendor.","ui":{"widget":"email"}}},"defaultContactPhone":{"type":"text","required":false,"default":"","description":"The phone number you normally use to reach this vendor.","_meta":{"description":"The phone number you normally use to reach this vendor.","ui":{"widget":"phone"}}},"status":{"type":"text","required":false,"description":"Whether you still buy from this vendor: active, inactive or suspended.","_meta":{"description":"Whether you still buy from this vendor: active, inactive or suspended."},"enum":["active","inactive","suspended"]},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this vendor.","_meta":{"description":"Anything worth remembering about this vendor.","ui":{"widget":"textarea"}}},"payoutAddresses":{"type":"json","required":false,"default":{},"description":"Where payments to this vendor should be sent.","_meta":{"sensitive":true,"description":"Where payments to this vendor should be sent."},"sensitive":true},"contacts":{"type":"json","required":false,"default":[],"description":"The people you deal with at this vendor, with their role and how to reach them.","_meta":{"description":"The people you deal with at this vendor, with their role and how to reach them."}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"meetsMinimumOrder":{"name":"meetsMinimumOrder","async":false,"parameters":[{"name":"amount","type":"number","optional":false}],"returnType":"boolean","isStatic":false,"isPublic":true},"getProfileId":{"name":"getProfileId","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true},"getPayoutAddress":{"name":"getPayoutAddress","async":false,"parameters":[{"name":"currency","type":"string","optional":false}],"returnType":"string | undefined","isStatic":false,"isPublic":true},"setPayoutAddress":{"name":"setPayoutAddress","async":false,"parameters":[{"name":"currency","type":"string","optional":false},{"name":"destination","type":"string","optional":false}],"returnType":"this","isStatic":false,"isPublic":true},"clearPayoutAddress":{"name":"clearPayoutAddress","async":false,"parameters":[{"name":"currency","type":"string","optional":false}],"returnType":"this","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Vendor","collectionExportName":"VendorCollection","schema":{"tableName":"vendors","ddl":"CREATE TABLE IF NOT EXISTS \\"vendors\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"lead_time_days\\" INTEGER DEFAULT 0,\\n \\"minimum_order_amount\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"default_contact_email\\" TEXT DEFAULT '',\\n \\"default_contact_phone\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"payout_addresses\\" JSON DEFAULT '{}',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"lead_time_days":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"minimum_order_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"default_contact_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_contact_phone":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payout_addresses":{"type":"JSON","notNull":false,"unique":false,"default":{}},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"vendors_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"vendors_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"vendors_profile_id_idx","columns":["profile_id"]}],"version":"0963c71f"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingAccount":{"name":"billingaccount","className":"BillingAccount","qualifiedName":"@happyvertical/smrt-commerce:BillingAccount","collection":"billingaccounts","description":"One payer's account with one seller: the commerce Customer invoices are issued to, the provider customer they are pushed to, and the payer's billing terms.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"payerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"customerId":{"type":"foreignKey","required":false,"related":"Customer"},"name":{"type":"text","required":false,"default":""},"email":{"type":"text","required":false,"default":""},"provider":{"type":"text","required":false,"default":""},"providerCustomerId":{"type":"text","required":false,"default":""},"automaticTax":{"type":"boolean","required":false,"default":true},"flatDiscountBasisPoints":{"type":"integer","required":false,"default":0},"paymentTermsDays":{"type":"integer","required":false,"default":30},"standing":{"type":"text","required":false,"default":"current","enum":["current","past_due","uncollectible"]},"billingAnchorAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"prorateFlatPlans":{"type":"boolean","required":false,"default":false}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_accounts","conflictColumns":["seller_tenant_id","payer_tenant_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingAccount","collectionExportName":"BillingAccountCollection","displayLabelField":"name","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"payerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_accounts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_accounts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"customer_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"automatic_tax\\" BOOLEAN DEFAULT TRUE,\\n \\"flat_discount_basis_points\\" INTEGER DEFAULT 0,\\n \\"payment_terms_days\\" INTEGER DEFAULT 30,\\n \\"standing\\" TEXT DEFAULT 'current',\\n \\"billing_anchor_at\\" TIMESTAMP,\\n \\"prorate_flat_plans\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"automatic_tax":{"type":"BOOLEAN","notNull":false,"unique":false,"default":true},"flat_discount_basis_points":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms_days":{"type":"INTEGER","notNull":false,"unique":false,"default":30},"standing":{"type":"TEXT","notNull":false,"unique":false,"default":"current"},"billing_anchor_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"prorate_flat_plans":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false}},"indexes":[{"name":"_smrt_billing_accounts_seller_tenant_id_payer_tenant_id_idx","columns":["seller_tenant_id","payer_tenant_id"],"unique":true},{"name":"_smrt_billing_accounts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_accounts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_accounts_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_accounts_customer_id_idx","columns":["customer_id"]}],"version":"58124e47"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPeriodClose":{"name":"billingperiodclose","className":"BillingPeriodClose","qualifiedName":"@happyvertical/smrt-commerce:BillingPeriodClose","collection":"billingperiodcloses","description":"The idempotency anchor for one payer's invoice in one currency for one period. Its id is derived from that identity, so a retried close always resumes the same row, invoice, and provider invoice.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"kind":{"type":"text","required":false,"default":"provider","enum":["provider","reseller"]},"payerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"currency":{"type":"text","required":false,"default":"USD"},"periodStart":{"type":"datetime","required":false},"periodEnd":{"type":"datetime","required":false},"billingAccountId":{"type":"foreignKey","required":false,"related":"BillingAccount"},"status":{"type":"text","required":false,"default":"collecting","enum":["collecting","invoiced","pushed","sent","completed","carried_forward"]},"invoiceId":{"type":"foreignKey","required":false,"related":"Invoice"},"providerInvoiceId":{"type":"text","required":false,"default":""},"subtotal":{"type":"integer","required":false,"default":0},"lineCount":{"type":"integer","required":false,"default":0},"issuedAt":{"type":"datetime","required":false},"leaseToken":{"type":"text","required":false,"_meta":{"nullable":true}},"leaseExpiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"attempts":{"type":"integer","required":false,"default":0},"lastError":{"type":"text","required":false,"default":""}},"methods":{"runPeriodClose":{"name":"runPeriodClose","async":true,"parameters":[{"name":"args","type":"Record<string, unknown>","optional":true},{"name":"_context","type":"JobExecutionContext","optional":true}],"returnType":"Promise<unknown>","isStatic":false,"isPublic":true},"processBillingEvents":{"name":"processBillingEvents","async":true,"parameters":[{"name":"args","type":"Record<string, unknown>","optional":true},{"name":"_context","type":"JobExecutionContext","optional":true}],"returnType":"Promise<unknown>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_billing_period_closes","conflictColumns":["seller_tenant_id","kind","payer_tenant_id","currency","period_start","period_end"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingPeriodClose","collectionExportName":"BillingPeriodCloseCollection","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"payerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_period_closes","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_period_closes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'provider',\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"billing_account_id\\" UUID,\\n \\"status\\" TEXT DEFAULT 'collecting',\\n \\"invoice_id\\" UUID,\\n \\"provider_invoice_id\\" TEXT DEFAULT '',\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"line_count\\" INTEGER DEFAULT 0,\\n \\"issued_at\\" TIMESTAMP,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"attempts\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"provider"},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"billing_account_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_accounts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"collecting"},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider_invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"line_count":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"attempts":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"_smrt_billing_period_closes_seller_tenant_id_kind_idx","columns":["seller_tenant_id","kind","payer_tenant_id","currency","period_start","period_end"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_period_closes_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_period_closes_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_period_closes_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_period_closes_billing_account_id_idx","columns":["billing_account_id"]},{"name":"_smrt_billing_period_closes_invoice_id_idx","columns":["invoice_id"]}],"version":"753d2e86"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingLineSource":{"name":"billinglinesource","className":"BillingLineSource","qualifiedName":"@happyvertical/smrt-commerce:BillingLineSource","collection":"billinglinesources","description":"A claim that one billable source \u2014 a charge, an adjustment, or a window of a flat plan \u2014 is billed on exactly one period close.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"periodCloseId":{"type":"foreignKey","required":false,"related":"BillingPeriodClose"},"sourceType":{"type":"text","required":false,"default":"client_charge","enum":["client_charge","billing_adjustment","retail_charge","subscription_period","credit_carry_forward"]},"sourceId":{"type":"text","required":false,"default":""},"lineKey":{"type":"text","required":false,"default":""},"lineDescription":{"type":"text","required":false,"default":""},"amount":{"type":"integer","required":false,"default":0},"discount":{"type":"integer","required":false,"default":0},"quantity":{"type":"decimal","required":false,"default":0},"chainSequence":{"type":"integer","required":false,"default":0},"currency":{"type":"text","required":false,"default":"USD"},"periodStart":{"type":"datetime","required":false},"periodEnd":{"type":"datetime","required":false}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_line_sources","conflictColumns":["source_type","source_id"],"indexes":[{"name":"_smrt_billing_line_sources_line_key_chain_sequence_idx","columns":["lineKey","chainSequence"]}],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingLineSource","collectionExportName":"BillingLineSourceCollection","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_line_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_line_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"period_close_id\\" UUID,\\n \\"source_type\\" TEXT DEFAULT 'client_charge',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"line_key\\" TEXT DEFAULT '',\\n \\"line_description\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"quantity\\" REAL DEFAULT 0,\\n \\"chain_sequence\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"period_close_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_period_closes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":"client_charge"},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":0},"chain_sequence":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_billing_line_sources_source_type_source_id_idx","columns":["source_type","source_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_line_sources_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_line_sources_line_key_chain_sequence_idx","columns":["line_key","chain_sequence"]},{"name":"_smrt_billing_line_sources_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_line_sources_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_line_sources_period_close_id_idx","columns":["period_close_id"]}],"version":"35e3aaa7"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPaymentAttempt":{"name":"billingpaymentattempt","className":"BillingPaymentAttempt","qualifiedName":"@happyvertical/smrt-commerce:BillingPaymentAttempt","collection":"billingpaymentattempts","description":"One payment attempt on a payment rail (#3138): a short-lived provider checkout (for example a BTCPay invoice) paying a credit purchase or an issued invoice.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"payerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"billingAccountId":{"type":"text","required":false,"default":""},"purpose":{"type":"text","required":false,"default":"credit_purchase","enum":["credit_purchase","invoice_payment"]},"invoiceId":{"type":"text","required":false,"default":""},"spendingPolicyId":{"type":"text","required":false,"default":""},"provider":{"type":"text","required":false,"default":""},"orderId":{"type":"text","required":false,"default":""},"checkoutId":{"type":"text","required":false,"default":""},"status":{"type":"text","required":false,"default":"open"},"exception":{"type":"text","required":false,"default":"none"},"flag":{"type":"text","required":false,"default":"","enum":["","overpaid","underpaid","paid_late","manually_marked","invalidated_after_settlement","invoice_already_paid","amount_mismatch","out_of_band_without_settlement"]},"amount":{"type":"integer","required":false,"default":0},"currency":{"type":"text","required":false,"default":"USD"},"amountPaid":{"type":"integer","required":false,"default":0},"nativeCurrency":{"type":"text","required":false,"default":""},"nativeAmountDue":{"type":"integer","required":false,"default":0},"nativeAmountPaid":{"type":"integer","required":false,"default":0},"rate":{"type":"text","required":false,"default":""},"rateSource":{"type":"text","required":false,"default":""},"checkoutUrl":{"type":"text","required":false,"default":""},"expiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"payments":{"type":"json","required":false,"default":[]},"timeline":{"type":"json","required":false,"default":[]},"settledAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"paymentId":{"type":"text","required":false,"default":""},"creditGrantId":{"type":"text","required":false,"default":""},"resolution":{"type":"text","required":false,"default":""},"resolvedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"outOfBandRequestedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"pausedStanding":{"type":"text","required":false,"default":""},"excessAmount":{"type":"integer","required":false,"default":0},"excessRevision":{"type":"integer","required":false,"default":0},"settlementOutcome":{"type":"text","required":false,"default":""},"refundedAmount":{"type":"integer","required":false,"default":0},"refundedPrincipal":{"type":"integer","required":false,"default":0},"refunds":{"type":"json","required":false,"default":[]}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_payment_attempts","conflictColumns":["provider","checkout_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingPaymentAttempt","collectionExportName":"BillingPaymentAttemptCollection","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"payerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_payment_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_payment_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"billing_account_id\\" TEXT DEFAULT '',\\n \\"purpose\\" TEXT DEFAULT 'credit_purchase',\\n \\"invoice_id\\" TEXT DEFAULT '',\\n \\"spending_policy_id\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"order_id\\" TEXT DEFAULT '',\\n \\"checkout_id\\" TEXT DEFAULT '',\\n \\"status\\" TEXT DEFAULT 'open',\\n \\"exception\\" TEXT DEFAULT 'none',\\n \\"flag\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"native_amount_due\\" INTEGER DEFAULT 0,\\n \\"native_amount_paid\\" INTEGER DEFAULT 0,\\n \\"rate\\" TEXT DEFAULT '',\\n \\"rate_source\\" TEXT DEFAULT '',\\n \\"checkout_url\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"payments\\" JSON DEFAULT '[]',\\n \\"timeline\\" JSON DEFAULT '[]',\\n \\"settled_at\\" TIMESTAMP,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"credit_grant_id\\" TEXT DEFAULT '',\\n \\"resolution\\" TEXT DEFAULT '',\\n \\"resolved_at\\" TIMESTAMP,\\n \\"out_of_band_requested_at\\" TIMESTAMP,\\n \\"paused_standing\\" TEXT DEFAULT '',\\n \\"excess_amount\\" INTEGER DEFAULT 0,\\n \\"excess_revision\\" INTEGER DEFAULT 0,\\n \\"settlement_outcome\\" TEXT DEFAULT '',\\n \\"refunded_amount\\" INTEGER DEFAULT 0,\\n \\"refunded_principal\\" INTEGER DEFAULT 0,\\n \\"refunds\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_account_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"purpose":{"type":"TEXT","notNull":false,"unique":false,"default":"credit_purchase"},"invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"spending_policy_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"order_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"open"},"exception":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"flag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount_due":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"rate":{"type":"TEXT","notNull":false,"unique":false,"default":""},"rate_source":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_url":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payments":{"type":"JSON","notNull":false,"unique":false,"default":[]},"timeline":{"type":"JSON","notNull":false,"unique":false,"default":[]},"settled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"credit_grant_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolution":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolved_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"out_of_band_requested_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"paused_standing":{"type":"TEXT","notNull":false,"unique":false,"default":""},"excess_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"excess_revision":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"settlement_outcome":{"type":"TEXT","notNull":false,"unique":false,"default":""},"refunded_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunded_principal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunds":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"_smrt_billing_payment_attempts_provider_checkout_id_idx","columns":["provider","checkout_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_payment_attempts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_payment_attempts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_payment_attempts_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_payment_attempts_payer_tenant_id_idx","columns":["payer_tenant_id"]}],"version":"43aceca7"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingAccountCollection":{"name":"billingaccountcollection","className":"BillingAccountCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingAccountCollection","collection":"billingaccounts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_accounts","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingAccount","exportName":"BillingAccountCollection","collectionExportName":"BillingAccountCollectionCollection","schema":{"tableName":"_smrt_billing_accounts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_accounts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"customer_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"automatic_tax\\" BOOLEAN DEFAULT TRUE,\\n \\"flat_discount_basis_points\\" INTEGER DEFAULT 0,\\n \\"payment_terms_days\\" INTEGER DEFAULT 30,\\n \\"standing\\" TEXT DEFAULT 'current',\\n \\"billing_anchor_at\\" TIMESTAMP,\\n \\"prorate_flat_plans\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"automatic_tax":{"type":"BOOLEAN","notNull":false,"unique":false,"default":true},"flat_discount_basis_points":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms_days":{"type":"INTEGER","notNull":false,"unique":false,"default":30},"standing":{"type":"TEXT","notNull":false,"unique":false,"default":"current"},"billing_anchor_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"prorate_flat_plans":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false}},"indexes":[{"name":"_smrt_billing_accounts_seller_tenant_id_payer_tenant_id_idx","columns":["seller_tenant_id","payer_tenant_id"],"unique":true},{"name":"_smrt_billing_accounts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_accounts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_accounts_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_accounts_customer_id_idx","columns":["customer_id"]}],"version":"58124e47"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPeriodCloseCollection":{"name":"billingperiodclosecollection","className":"BillingPeriodCloseCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingPeriodCloseCollection","collection":"billingperiodcloses","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_period_closes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingPeriodClose","exportName":"BillingPeriodCloseCollection","collectionExportName":"BillingPeriodCloseCollectionCollection","schema":{"tableName":"_smrt_billing_period_closes","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_period_closes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'provider',\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"billing_account_id\\" UUID,\\n \\"status\\" TEXT DEFAULT 'collecting',\\n \\"invoice_id\\" UUID,\\n \\"provider_invoice_id\\" TEXT DEFAULT '',\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"line_count\\" INTEGER DEFAULT 0,\\n \\"issued_at\\" TIMESTAMP,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"attempts\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"provider"},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"billing_account_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_accounts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"collecting"},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider_invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"line_count":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"attempts":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"_smrt_billing_period_closes_seller_tenant_id_kind_idx","columns":["seller_tenant_id","kind","payer_tenant_id","currency","period_start","period_end"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_period_closes_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_period_closes_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_period_closes_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_period_closes_billing_account_id_idx","columns":["billing_account_id"]},{"name":"_smrt_billing_period_closes_invoice_id_idx","columns":["invoice_id"]}],"version":"753d2e86"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingLineSourceCollection":{"name":"billinglinesourcecollection","className":"BillingLineSourceCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingLineSourceCollection","collection":"billinglinesources","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_line_sources","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingLineSource","exportName":"BillingLineSourceCollection","collectionExportName":"BillingLineSourceCollectionCollection","schema":{"tableName":"_smrt_billing_line_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_line_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"period_close_id\\" UUID,\\n \\"source_type\\" TEXT DEFAULT 'client_charge',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"line_key\\" TEXT DEFAULT '',\\n \\"line_description\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"quantity\\" REAL DEFAULT 0,\\n \\"chain_sequence\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"period_close_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_period_closes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":"client_charge"},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":0},"chain_sequence":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_billing_line_sources_source_type_source_id_idx","columns":["source_type","source_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_line_sources_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_line_sources_line_key_chain_sequence_idx","columns":["line_key","chain_sequence"]},{"name":"_smrt_billing_line_sources_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_line_sources_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_line_sources_period_close_id_idx","columns":["period_close_id"]}],"version":"35e3aaa7"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPaymentAttemptCollection":{"name":"billingpaymentattemptcollection","className":"BillingPaymentAttemptCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingPaymentAttemptCollection","collection":"billingpaymentattempts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_payment_attempts","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingPaymentAttempt","exportName":"BillingPaymentAttemptCollection","collectionExportName":"BillingPaymentAttemptCollectionCollection","schema":{"tableName":"_smrt_billing_payment_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_payment_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"billing_account_id\\" TEXT DEFAULT '',\\n \\"purpose\\" TEXT DEFAULT 'credit_purchase',\\n \\"invoice_id\\" TEXT DEFAULT '',\\n \\"spending_policy_id\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"order_id\\" TEXT DEFAULT '',\\n \\"checkout_id\\" TEXT DEFAULT '',\\n \\"status\\" TEXT DEFAULT 'open',\\n \\"exception\\" TEXT DEFAULT 'none',\\n \\"flag\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"native_amount_due\\" INTEGER DEFAULT 0,\\n \\"native_amount_paid\\" INTEGER DEFAULT 0,\\n \\"rate\\" TEXT DEFAULT '',\\n \\"rate_source\\" TEXT DEFAULT '',\\n \\"checkout_url\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"payments\\" JSON DEFAULT '[]',\\n \\"timeline\\" JSON DEFAULT '[]',\\n \\"settled_at\\" TIMESTAMP,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"credit_grant_id\\" TEXT DEFAULT '',\\n \\"resolution\\" TEXT DEFAULT '',\\n \\"resolved_at\\" TIMESTAMP,\\n \\"out_of_band_requested_at\\" TIMESTAMP,\\n \\"paused_standing\\" TEXT DEFAULT '',\\n \\"excess_amount\\" INTEGER DEFAULT 0,\\n \\"excess_revision\\" INTEGER DEFAULT 0,\\n \\"settlement_outcome\\" TEXT DEFAULT '',\\n \\"refunded_amount\\" INTEGER DEFAULT 0,\\n \\"refunded_principal\\" INTEGER DEFAULT 0,\\n \\"refunds\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_account_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"purpose":{"type":"TEXT","notNull":false,"unique":false,"default":"credit_purchase"},"invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"spending_policy_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"order_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"open"},"exception":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"flag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount_due":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"rate":{"type":"TEXT","notNull":false,"unique":false,"default":""},"rate_source":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_url":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payments":{"type":"JSON","notNull":false,"unique":false,"default":[]},"timeline":{"type":"JSON","notNull":false,"unique":false,"default":[]},"settled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"credit_grant_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolution":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolved_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"out_of_band_requested_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"paused_standing":{"type":"TEXT","notNull":false,"unique":false,"default":""},"excess_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"excess_revision":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"settlement_outcome":{"type":"TEXT","notNull":false,"unique":false,"default":""},"refunded_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunded_principal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunds":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"_smrt_billing_payment_attempts_provider_checkout_id_idx","columns":["provider","checkout_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_payment_attempts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_payment_attempts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_payment_attempts_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_payment_attempts_payer_tenant_id_idx","columns":["payer_tenant_id"]}],"version":"43aceca7"},"importPath":"@happyvertical/smrt-commerce"}},"moduleType":"smrt","recipes":[{"id":"commerce.agreements","className":"AgreementsRecipe","label":"General agreements","summary":"Keep signed agreements with customers, and see every contract in one list.","synonyms":["contracts","terms","deals"],"models":["@happyvertical/smrt-commerce:Agreement","@happyvertical/smrt-commerce:Contract","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Agreements","model":"@happyvertical/smrt-commerce:Agreement","icon":"fileText","description":"Signed deals and terms with your customers, in one place."},{"label":"All contracts","model":"@happyvertical/smrt-commerce:Contract","icon":"fileText","description":"Every contract you hold, whoever it is with."}],"requires":["commerce.customers"],"group":{"id":"agreements","label":"Agreements","summary":"Contracts with customers: general agreements, leases and licence sales."},"section":{"id":"agreements","label":"Agreements","icon":"fileText","description":"Contracts, leases and licenses with customers."},"options":{"@happyvertical/smrt-commerce:Agreement":{"fields":{"contractType":{"default":"agreement","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1,"required":true},"vendorId":{"visibility":"hidden"},"subtotal":{"visibility":"hidden"},"taxAmount":{"visibility":"hidden"},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}},"@happyvertical/smrt-commerce:Contract":{"fields":{"channelId":{"visibility":"hidden"}}}},"help":{"markdown":"## Overview\\n\\nAgreements are contracts you keep with customers. General agreements live here;\\nleases and licence sales are separate recipes in the same group.\\n**All contracts** lists every kind together, including orders and quotes.\\n\\n## Tasks\\n\\n### Record an agreement\\n\\n1. Create a new agreement.\\n2. Pick the **{field:customerId}**.\\n3. Set the **{field:issueDate}** and **{field:expiryDate}**.\\n4. Put the conditions in **{field:terms}** and save.\\n\\n### Follow it\\n\\n1. Update **{field:status}** from draft to accepted to completed.\\n2. Check **{field:expiryDate}** to spot agreements about to lapse.\\n","fieldRefs":["customerId","expiryDate","issueDate","status","terms"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.customers","className":"CustomersRecipe","label":"Customers","summary":"Keep a list of the people and companies you sell to.","synonyms":["clients","buyers","accounts"],"models":["@happyvertical/smrt-commerce:Customer"],"nav":[{"label":"Customers","model":"@happyvertical/smrt-commerce:Customer","icon":"users","description":"The people and companies you sell to, with how to reach them."}],"requires":[],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:Customer":{"fields":{"profileId":{"label":"Name","order":-1}}}},"help":{"markdown":"## Overview\\n\\nCustomers is your address book for the people and businesses you sell to. Keep\\none record for each customer so you can see who they are, how they like to pay\\nand what you have agreed with them, then refer back to them whenever you take an\\norder.\\n\\n## Tasks\\n\\n### Add a new customer\\n\\n1. Choose the **New** button above the list.\\n2. Describe the customer with **{field:customerType}**: a direct shopper, a\\n wholesale buyer or a retail customer. Note in **{field:status}** whether you\\n are still dealing with them.\\n3. Fill in the **{field:defaultShippingAddress}** and\\n **{field:defaultBillingAddress}** so you do not have to type them again on\\n every order.\\n4. Add **{field:paymentTerms}**, for example \\"Net 30\\", if you give this\\n customer time to pay.\\n5. Save. The customer is now on your list and ready to use on a sales order.\\n\\n### Keep track of what a customer can owe\\n\\n1. Open the customer from the list and choose Edit.\\n2. Set **{field:creditLimit}** to the most you are comfortable letting them owe\\n you at one time.\\n3. If you do not charge them sales tax, turn on **{field:taxExempt}**, and keep\\n their tax number on file.\\n4. Use **{field:notes}** for anything the next person who deals with this\\n customer should know.\\n\\n### Find a customer\\n\\nScan the list for the customer you want, or open a record to see everything you\\nhave on file. To stop dealing with someone without losing their history, change\\ntheir **{field:status}** to inactive instead of deleting them.\\n","fieldRefs":["creditLimit","customerType","defaultBillingAddress","defaultShippingAddress","notes","paymentTerms","status","taxExempt"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.estimates","className":"EstimatesRecipe","label":"Estimates","summary":"Send customers a price quote before they commit.","synonyms":["quotes","quotations","proposals","bids"],"models":["@happyvertical/smrt-commerce:Estimate","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Estimates","model":"@happyvertical/smrt-commerce:Estimate","icon":"fileText","description":"Price quotes you have sent to customers."}],"requires":["commerce.customers"],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:Estimate":{"fields":{"contractType":{"default":"estimate","visibility":"hidden","locked":true},"vendorId":{"visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1,"required":true},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nEstimates are price quotes you send before a customer commits. Each one belongs\\nto a customer, lists its line items and shows how long the price is good for.\\n\\n## Tasks\\n\\n### Write an estimate\\n\\n1. Create a new estimate.\\n2. Pick the **{field:customerId}** the quote is for.\\n3. Add the line items, then check the **{field:totalAmount}**.\\n4. Set **{field:expiryDate}** to the last day the price is good for.\\n5. Put your conditions in **{field:terms}** and save.\\n\\n### Follow it up\\n\\n1. Set **{field:status}** to sent once it goes out.\\n2. Move it to accepted or declined when the customer answers.\\n","fieldRefs":["customerId","expiryDate","status","terms","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.fulfillment","className":"FulfillmentRecipe","label":"Shipping","summary":"Pack, ship and deliver orders, with tracking.","synonyms":["fulfillment","delivery","shipments","tracking"],"models":["@happyvertical/smrt-commerce:Fulfillment","@happyvertical/smrt-commerce:FulfillmentLineItem"],"nav":[{"label":"Shipments","model":"@happyvertical/smrt-commerce:Fulfillment","icon":"truck","description":"What has gone out the door and where it is now."}],"requires":[],"requiresAny":[["commerce.sales","commerce.wholesale"]],"group":{"id":"billing","label":"Billing & shipping","summary":"Invoice your customers, record what they pay and ship what they ordered."},"section":{"id":"operations","label":"Operations","icon":"wrench","description":"Fulfillment and the day-to-day work behind an order."},"options":{"@happyvertical/smrt-commerce:Fulfillment":{"fields":{"estimatedDelivery":{"visibility":"hidden"},"shippingAddress":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:FulfillmentLineItem":{"fields":{"notes":{"visibility":"hidden"}}}},"help":{"markdown":"## Overview\\n\\nShipping tracks how an order gets to the customer. Each shipment belongs to an\\norder and lists which line items are in it, so an order can go out in parts.\\n\\n## Tasks\\n\\n### Ship an order\\n\\n1. Create a new shipment.\\n2. Pick the order in **{field:contractId}** and choose the\\n **{field:fulfillmentType}**.\\n3. Enter the **{field:carrier}** and **{field:trackingNumber}**.\\n4. List the items and quantities in the shipment.\\n5. Set **{field:status}** to shipped and record **{field:shippedAt}**.\\n\\n### Confirm delivery\\n\\n1. Open the shipment and set **{field:status}** to delivered.\\n2. Record **{field:deliveredAt}**.\\n","fieldRefs":["carrier","contractId","deliveredAt","fulfillmentType","shippedAt","status","trackingNumber"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.invoicing","className":"InvoicingRecipe","label":"Invoicing","summary":"Bill customers and record the payments that come in.","synonyms":["invoices","billing","payments","receivables"],"models":["@happyvertical/smrt-commerce:Invoice","@happyvertical/smrt-commerce:InvoiceLineItem","@happyvertical/smrt-commerce:Payment","@happyvertical/smrt-commerce:PaymentAllocation"],"nav":[{"label":"Invoices","model":"@happyvertical/smrt-commerce:Invoice","icon":"receipt","description":"Bills you have sent and which ones are still waiting to be paid."},{"label":"Payments","model":"@happyvertical/smrt-commerce:Payment","icon":"creditCard","description":"Money received, matched to the invoices it paid."}],"requires":["commerce.customers"],"group":{"id":"billing","label":"Billing & shipping","summary":"Invoice your customers, record what they pay and ship what they ordered."},"section":{"id":"billing","label":"Billing","icon":"receipt","description":"Invoices and the payments against them."},"options":{"@happyvertical/smrt-commerce:Invoice":{"fields":{"providerTaxAmount":{"visibility":"hidden"},"arJournalId":{"visibility":"hidden"},"revenueJournalId":{"visibility":"hidden"},"externalId":{"visibility":"hidden"},"customerExternalId":{"visibility":"hidden"},"externalProvider":{"visibility":"hidden"},"syncedAt":{"visibility":"hidden"},"collectionMethod":{"visibility":"hidden"},"sentAt":{"visibility":"hidden"},"viewedAt":{"visibility":"hidden"},"remindersSent":{"visibility":"hidden"},"lastReminderAt":{"visibility":"hidden"},"reference":{"visibility":"hidden"},"customerId":{"required":true}}},"@happyvertical/smrt-commerce:InvoiceLineItem":{"fields":{"invoiceEditorStateJson":{"visibility":"hidden"},"sourceType":{"visibility":"hidden"},"sourceId":{"visibility":"hidden"},"periodStart":{"visibility":"hidden"},"periodEnd":{"visibility":"hidden"},"revenueAccountId":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"sku":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}},"@happyvertical/smrt-commerce:Payment":{"fields":{"journalId":{"visibility":"hidden"},"externalId":{"visibility":"hidden"},"externalProvider":{"visibility":"hidden"},"syncedAt":{"visibility":"hidden"},"backendId":{"visibility":"hidden"},"backendTxRef":{"visibility":"hidden"},"nativeAmount":{"visibility":"hidden"},"nativeCurrency":{"visibility":"hidden"},"usdAtQuote":{"visibility":"hidden"},"usdAtConfirmation":{"visibility":"hidden"},"transactionId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:PaymentAllocation":{"fields":{"allocatedBy":{"visibility":"hidden"}}}},"help":{"markdown":"## Overview\\n\\nInvoicing bills your customers and records what they pay. An invoice lists its\\nline items; a payment can be spread across one or more invoices.\\n\\n## Tasks\\n\\n### Send an invoice\\n\\n1. Create a new invoice.\\n2. Pick the **{field:customerId}** and add the line items.\\n3. Check the **{field:totalAmount}** and set the **{field:dueDate}**.\\n4. Set **{field:status}** to sent once it goes out.\\n\\n### Record a payment\\n\\n1. Create a new payment.\\n2. Pick the **{field:customerId}**, then enter the **{field:Payment.amount}** and the\\n **{field:method}** used.\\n3. Set **{field:Payment.status}** to completed once the money has arrived.\\n4. Apply it to the invoices it settles; each one shows what is still owed.\\n","fieldRefs":["Payment.amount","Payment.status","customerId","dueDate","method","status","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.leases","className":"LeasesRecipe","label":"Leases","summary":"Rent things out and track the term and the payments due.","synonyms":["rentals","renting","hire"],"models":["@happyvertical/smrt-commerce:Lease","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Leases","model":"@happyvertical/smrt-commerce:Lease","icon":"home","description":"Rentals you give or take, with terms and dates."}],"requires":["commerce.customers"],"group":{"id":"agreements","label":"Agreements","summary":"Contracts with customers: general agreements, leases and licence sales."},"section":{"id":"agreements","label":"Agreements","icon":"fileText","description":"Contracts, leases and licenses with customers."},"options":{"@happyvertical/smrt-commerce:Lease":{"fields":{"contractType":{"default":"lease","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1,"required":true},"vendorId":{"visibility":"hidden"},"subtotal":{"visibility":"hidden"},"taxAmount":{"visibility":"hidden"},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nLeases are agreements where a customer rents something from you for a period.\\nEach lease keeps its own line items and dates.\\n\\n## Tasks\\n\\n### Record a lease\\n\\n1. Create a new lease.\\n2. Pick the **{field:customerId}** renting from you.\\n3. Set the **{field:issueDate}** it starts and the **{field:expiryDate}** it ends.\\n4. Add a line item for each thing rented, then save.\\n\\n### Keep an eye on it\\n\\n1. Update **{field:status}** as the lease goes from draft to accepted to\\n completed.\\n2. Check **{field:expiryDate}** to see which leases end soon.\\n","fieldRefs":["customerId","expiryDate","issueDate","status"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.licenses","className":"LicensesRecipe","label":"Licence sales","summary":"Sell licences to software, content or other rights.","synonyms":["licenses","licensing","subscriptions"],"models":["@happyvertical/smrt-commerce:LicenseSale","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Licence sales","model":"@happyvertical/smrt-commerce:LicenseSale","icon":"shoppingBag","description":"Licences you have sold and who holds them."}],"requires":["commerce.customers"],"group":{"id":"agreements","label":"Agreements","summary":"Contracts with customers: general agreements, leases and licence sales."},"section":{"id":"agreements","label":"Agreements","icon":"fileText","description":"Contracts, leases and licenses with customers."},"options":{"@happyvertical/smrt-commerce:LicenseSale":{"fields":{"contractType":{"default":"license_sale","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1,"required":true},"vendorId":{"visibility":"hidden"},"subtotal":{"visibility":"hidden"},"taxAmount":{"visibility":"hidden"},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nLicence sales record selling the right to use something, such as software or\\ncontent, rather than a physical item.\\n\\n## Tasks\\n\\n### Record a licence sale\\n\\n1. Create a new licence sale.\\n2. Pick the **{field:customerId}** who bought the licence.\\n3. Add a line item for what is licensed and check the **{field:totalAmount}**.\\n4. Set the **{field:expiryDate}** if the licence runs out, then save.\\n\\n### Follow it\\n\\n1. Update **{field:status}** when the customer accepts or the sale completes.\\n","fieldRefs":["customerId","expiryDate","status","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.purchases","className":"PurchasesRecipe","label":"Purchases","summary":"Order from your vendors and track what you have bought.","synonyms":["purchase orders","buying","procurement"],"models":["@happyvertical/smrt-commerce:PurchaseOrder","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Purchase orders","model":"@happyvertical/smrt-commerce:PurchaseOrder","icon":"truck","description":"What you have ordered from your suppliers and when it arrives."}],"requires":["commerce.vendors"],"section":{"id":"purchasing","label":"Purchasing","icon":"truck","description":"Vendors and purchase orders: everything you buy."},"options":{"@happyvertical/smrt-commerce:PurchaseOrder":{"fields":{"contractType":{"default":"purchase_order","visibility":"hidden","locked":true},"customerId":{"visibility":"hidden","locked":true},"vendorId":{"label":"Vendor","order":1},"channelId":{"visibility":"hidden"},"expiryDate":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nPurchases is where you order from your vendors and keep track of what you have\\nbought. Every purchase order belongs to one of your vendors and records the\\namounts, the dates and where the order stands.\\n\\n## Tasks\\n\\n### Place a purchase order\\n\\n1. Choose the **New** button above the list.\\n2. Enter the **{field:vendorId}** you are buying from. Add them under Vendors\\n first so they are on your list.\\n3. Enter the **{field:subtotal}** and **{field:taxAmount}**, then the\\n **{field:totalAmount}** you expect to pay.\\n4. Set the **{field:issueDate}**, and the **{field:dueDate}** for when the\\n goods or the payment are due.\\n5. Add your own **{field:reference}**, such as the vendor's quote number, so\\n you can match it to their paperwork.\\n6. Enter **{field:expectedDate}** as YYYY-MM-DD if you know when the delivery\\n should arrive. Leave it blank until a date is agreed.\\n7. Use **{field:shipTo}** for the delivery address and instructions, such as\\n which entrance or loading dock to use.\\n8. Save.\\n\\n### Follow an order until it arrives\\n\\n1. Open the purchase order from the list and choose Edit.\\n2. Update **{field:status}** as the order moves along, for example from draft to\\n sent, accepted and completed.\\n3. Use **{field:notes}** to record what the vendor told you, such as delays or\\n partial shipments.\\n\\n### Record the agreement\\n\\n1. Open the purchase order and choose Edit.\\n2. Write down the **{field:terms}** you agreed with the vendor, such as payment\\n or delivery conditions.\\n3. Set **{field:expiryDate}** if the vendor's offer is only good until a certain\\n day.\\n","fieldRefs":["dueDate","expectedDate","expiryDate","issueDate","notes","reference","shipTo","status","subtotal","taxAmount","terms","totalAmount","vendorId"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.sales","className":"SalesRecipe","label":"Sales","summary":"Take customer orders and track them.","synonyms":["sales orders","orders","customer orders"],"models":["@happyvertical/smrt-commerce:Order","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Sales orders","model":"@happyvertical/smrt-commerce:Order","icon":"shoppingBag","description":"Orders from your customers, from placed to delivered."}],"requires":["commerce.customers"],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:Order":{"fields":{"contractType":{"default":"order","visibility":"hidden","locked":true},"vendorId":{"visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1,"required":true},"channelId":{"visibility":"hidden"},"expiryDate":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nSales is where you take orders from your customers and see where each one\\nstands. Every order belongs to one of your customers, carries its amounts and\\ndates, and keeps a status so you always know what is still open.\\n\\n## Tasks\\n\\n### Take an order\\n\\n1. Choose the **New** button above the list.\\n2. Enter the **{field:customerId}** the order is for. Add them under Customers\\n first so they are on your list.\\n3. Enter the **{field:subtotal}** and **{field:taxAmount}**, then the\\n **{field:totalAmount}** the customer will pay.\\n4. Set the **{field:issueDate}**, and the **{field:dueDate}** if you expect\\n payment by a certain day.\\n5. Add your own **{field:reference}**, such as a purchase order number the\\n customer gave you, so you can find the order later.\\n6. Save.\\n\\n### Follow an order through to the end\\n\\n1. Open the order from the list and choose Edit.\\n2. Update **{field:status}** as the order moves along, for example from draft to\\n sent, accepted and completed.\\n3. Check the **{field:dueDate}** against today to spot orders that are overdue.\\n4. Use **{field:notes}** to record calls, changes and anything promised.\\n\\n### Make a quote with an expiry\\n\\n1. Create the order as usual and set its **{field:status}** to show it is still\\n a draft.\\n2. Set **{field:expiryDate}** to the last day the price is good for.\\n3. Put your conditions, such as deposits or delivery, in **{field:terms}**.\\n","fieldRefs":["customerId","dueDate","expiryDate","issueDate","notes","reference","status","subtotal","taxAmount","terms","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.vendors","className":"VendorsRecipe","label":"Vendors","summary":"Keep a list of the suppliers you buy from.","synonyms":["suppliers","sellers"],"models":["@happyvertical/smrt-commerce:Vendor"],"nav":[{"label":"Vendors","model":"@happyvertical/smrt-commerce:Vendor","icon":"briefcase","description":"The suppliers you buy from, with terms and contacts."}],"requires":[],"section":{"id":"purchasing","label":"Purchasing","icon":"truck","description":"Vendors and purchase orders: everything you buy."},"options":{"@happyvertical/smrt-commerce:Vendor":{"fields":{"profileId":{"label":"Name","order":-1}}}},"help":{"markdown":"## Overview\\n\\nVendors is your list of the suppliers you buy from. Each record holds who they\\nare, how to reach them and the terms you have agreed, so you can order from them\\nquickly and keep track of what you have bought.\\n\\n## Tasks\\n\\n### Add a vendor\\n\\n1. Choose the **New** button above the list.\\n2. Enter **{field:defaultContactEmail}** and **{field:defaultContactPhone}** for\\n the person you normally deal with.\\n3. Set the **{field:currency}** they bill you in and your **{field:paymentTerms}**,\\n for example \\"Net 30\\".\\n4. Save. The vendor is now on your list and ready to use on a purchase order.\\n\\n### Note how a vendor likes to work\\n\\n1. Open the vendor from the list and choose Edit.\\n2. Enter **{field:leadTimeDays}**, the number of days they usually need between\\n your order and delivery, so you can plan ahead.\\n3. Enter **{field:minimumOrderAmount}** if they will not accept small orders.\\n4. Use **{field:notes}** for anything else worth remembering, such as the best\\n time to call.\\n\\n### Keep payment details in one place\\n\\n1. Open the vendor and choose Edit.\\n2. Record where payments to this vendor should be sent, so it is all in one\\n place.\\n3. Set **{field:status}** to show whether you still buy from them: active,\\n inactive or suspended.\\n","fieldRefs":["currency","defaultContactEmail","defaultContactPhone","leadTimeDays","minimumOrderAmount","notes","paymentTerms","status"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.wholesale","className":"WholesaleRecipe","label":"Wholesale orders","summary":"Take bulk orders from trade customers.","synonyms":["bulk orders","trade orders","b2b"],"models":["@happyvertical/smrt-commerce:WholesaleOrder","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Wholesale orders","model":"@happyvertical/smrt-commerce:WholesaleOrder","icon":"shoppingBag","description":"Bulk orders from cafes, shops and other businesses."}],"requires":["commerce.customers"],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:WholesaleOrder":{"fields":{"contractType":{"default":"wholesale_order","visibility":"hidden","locked":true},"vendorId":{"visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1},"channelId":{"visibility":"hidden"},"expiryDate":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nWholesale orders are bulk orders from trade customers. They work like sales\\norders, with a list of line items, but are kept in their own list so trade and\\nretail sales stay apart.\\n\\n## Tasks\\n\\n### Take a wholesale order\\n\\n1. Create a new wholesale order.\\n2. Pick the **{field:customerId}** placing the order.\\n3. Add the line items and check the **{field:totalAmount}**.\\n4. Set the **{field:dueDate}** for payment and save.\\n\\n### Track it\\n\\n1. Update **{field:status}** as the order moves from draft to completed.\\n2. Use **{field:reference}** for the buyer's own order number.\\n","fieldRefs":["customerId","dueDate","reference","status","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}}],"uiSelectors":{"customer-select":{"slotId":"customer-select","selects":"@happyvertical/smrt-commerce:Customer","label":"Customer Select","description":"Searchable customer picker for relation fields; the caller supplies the lookup"},"vendor-select":{"slotId":"vendor-select","selects":"@happyvertical/smrt-commerce:Vendor","label":"Vendor Select","description":"Searchable vendor picker for relation fields; the caller supplies the lookup"}},"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-jobs","@happyvertical/smrt-ledgers","@happyvertical/smrt-subscriptions","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3615","#3624","#3626","#3627"],"reason":"@happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs","via":["@happyvertical/smrt-jobs","@happyvertical/smrt-ledgers","@happyvertical/smrt-subscriptions","@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
15
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-commerce","packageVersion":"0.56.0","objects":{"@happyvertical/smrt-commerce:ContractCollection":{"name":"contractcollection","className":"ContractCollection","qualifiedName":"@happyvertical/smrt-commerce:ContractCollection","collection":"contracts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/ContractCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByVendor":{"name":"findByVendor","async":true,"parameters":[{"name":"vendorId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"contractType","type":"ContractType","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"ContractStatus","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findDrafts":{"name":"findDrafts","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findAccepted":{"name":"findAccepted","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findOverdue":{"name":"findOverdue","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findExpired":{"name":"findExpired","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Contract[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Contract","exportName":"ContractCollection","collectionExportName":"ContractCollectionCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"0eb8f0eb"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:ContractLineItemCollection":{"name":"contractlineitemcollection","className":"ContractLineItemCollection","qualifiedName":"@happyvertical/smrt-commerce:ContractLineItemCollection","collection":"contractlineitems","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/ContractLineItemCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<ContractLineItem[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ContractLineItem","exportName":"ContractLineItemCollection","collectionExportName":"ContractLineItemCollectionCollection","schema":{"tableName":"contract_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"contract_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"product_id\\" UUID,\\n \\"sku\\" TEXT DEFAULT '',\\n \\"start_date\\" TIMESTAMP,\\n \\"end_date\\" TIMESTAMP,\\n \\"billing_period\\" TEXT DEFAULT '',\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"default":""},"quantity":{"type":"REAL","notNull":false,"default":1},"unit_price":{"type":"INTEGER","notNull":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"default":0},"product_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"sku":{"type":"TEXT","notNull":false,"default":""},"start_date":{"type":"TIMESTAMP","notNull":false},"end_date":{"type":"TIMESTAMP","notNull":false},"billing_period":{"type":"TEXT","notNull":false,"default":""},"sort_order":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"contract_line_items_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contract_line_items_meta_type_idx","columns":["_meta_type"]},{"name":"contract_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contract_line_items_contract_id_idx","columns":["contract_id"]},{"name":"contract_line_items_product_id_idx","columns":["product_id"]}],"version":"be2b46cd"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:CustomerCollection":{"name":"customercollection","className":"CustomerCollection","qualifiedName":"@happyvertical/smrt-commerce:CustomerCollection","collection":"customers","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/CustomerCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"CustomerStatus","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"getOrCreateForProfile":{"name":"getOrCreateForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"defaults","type":"Partial<object>","optional":true,"memberTypes":["number","string"]}],"returnType":"Promise<Customer>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Customer[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Customer","exportName":"CustomerCollection","collectionExportName":"CustomerCollectionCollection","schema":{"tableName":"customers","ddl":"CREATE TABLE IF NOT EXISTS \\"customers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"credit_limit\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"tax_exempt\\" BOOLEAN DEFAULT FALSE,\\n \\"tax_id\\" TEXT DEFAULT '',\\n \\"default_shipping_address\\" JSON,\\n \\"default_billing_address\\" JSON,\\n \\"status\\" TEXT,\\n \\"customer_type\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"credit_limit":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"tax_exempt":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"tax_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_shipping_address":{"type":"JSON","notNull":false,"unique":false},"default_billing_address":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"customer_type":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"customers_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"customers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"customers_profile_id_idx","columns":["profile_id"]}],"version":"49587ccf"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:FulfillmentCollection":{"name":"fulfillmentcollection","className":"FulfillmentCollection","qualifiedName":"@happyvertical/smrt-commerce:FulfillmentCollection","collection":"fulfillments","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/FulfillmentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"FulfillmentStatus","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"fulfillmentType","type":"FulfillmentType","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findInTransit":{"name":"findInTransit","async":true,"parameters":[],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByTracking":{"name":"findByTracking","async":true,"parameters":[{"name":"trackingNumber","type":"string","optional":false}],"returnType":"Promise<Fulfillment | null>","isStatic":false,"isPublic":true},"findShippedInRange":{"name":"findShippedInRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Fulfillment[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Fulfillment","exportName":"FulfillmentCollection","collectionExportName":"FulfillmentCollectionCollection","schema":{"tableName":"fulfillments","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"fulfillment_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"tracking_number\\" TEXT DEFAULT '',\\n \\"carrier\\" TEXT DEFAULT '',\\n \\"shipping_address\\" JSON,\\n \\"shipped_at\\" TIMESTAMP,\\n \\"delivered_at\\" TIMESTAMP,\\n \\"estimated_delivery\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"fulfillment_type":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"tracking_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"carrier":{"type":"TEXT","notNull":false,"unique":false,"default":""},"shipping_address":{"type":"JSON","notNull":false,"unique":false},"shipped_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"delivered_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"estimated_delivery":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillments_contract_id_idx","columns":["contract_id"]}],"version":"2f708fc5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:FulfillmentLineItemCollection":{"name":"fulfillmentlineitemcollection","className":"FulfillmentLineItemCollection","qualifiedName":"@happyvertical/smrt-commerce:FulfillmentLineItemCollection","collection":"fulfillmentlineitems","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/FulfillmentLineItemCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByFulfillment":{"name":"findByFulfillment","async":true,"parameters":[{"name":"fulfillmentId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"findByContractLineItem":{"name":"findByContractLineItem","async":true,"parameters":[{"name":"contractLineItemId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"getTotalFulfilledForContractLine":{"name":"getTotalFulfilledForContractLine","async":true,"parameters":[{"name":"contractLineItemId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<FulfillmentLineItem[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"FulfillmentLineItem","exportName":"FulfillmentLineItemCollection","collectionExportName":"FulfillmentLineItemCollectionCollection","schema":{"tableName":"fulfillment_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillment_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"fulfillment_id\\" UUID,\\n \\"contract_line_item_id\\" UUID,\\n \\"quantity_fulfilled\\" REAL DEFAULT 1,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"fulfillment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"fulfillments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_line_item_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contract_line_items","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"quantity_fulfilled":{"type":"REAL","notNull":false,"unique":false,"default":1},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillment_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillment_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillment_line_items_fulfillment_id_idx","columns":["fulfillment_id"]},{"name":"fulfillment_line_items_contract_line_item_id_idx","columns":["contract_line_item_id"]}],"version":"14537dbe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:InvoiceCollection":{"name":"invoicecollection","className":"InvoiceCollection","qualifiedName":"@happyvertical/smrt-commerce:InvoiceCollection","collection":"invoices","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/InvoiceCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"InvoiceStatus","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findDrafts":{"name":"findDrafts","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findSent":{"name":"findSent","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findPaid":{"name":"findPaid","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findPartial":{"name":"findPartial","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findOverdue":{"name":"findOverdue","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByExternalId":{"name":"findByExternalId","async":true,"parameters":[{"name":"externalId","type":"string","optional":false}],"returnType":"Promise<Invoice | null>","isStatic":false,"isPublic":true},"findNeedingSync":{"name":"findNeedingSync","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findByNumber":{"name":"findByNumber","async":true,"parameters":[{"name":"invoiceNumber","type":"string","optional":false}],"returnType":"Promise<Invoice | null>","isStatic":false,"isPublic":true},"countForYear":{"name":"countForYear","async":true,"parameters":[{"name":"year","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"generateInvoiceNumber":{"name":"generateInvoiceNumber","async":true,"parameters":[{"name":"options","type":"InvoiceNumberOptions","optional":true}],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"getTotalOutstandingForCustomer":{"name":"getTotalOutstandingForCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Invoice[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Invoice","exportName":"InvoiceCollection","collectionExportName":"InvoiceCollectionCollection","schema":{"tableName":"invoices","ddl":"CREATE TABLE IF NOT EXISTS \\"invoices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"invoice_number\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"paid_date\\" TIMESTAMP,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"provider_tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'CAD',\\n \\"status\\" TEXT,\\n \\"ar_journal_id\\" UUID,\\n \\"revenue_journal_id\\" UUID,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"customer_external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"collection_method\\" TEXT DEFAULT '',\\n \\"sent_at\\" TIMESTAMP,\\n \\"viewed_at\\" TIMESTAMP,\\n \\"reminders_sent\\" INTEGER DEFAULT 0,\\n \\"last_reminder_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"customer_notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"issue_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"due_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"paid_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"provider_tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"CAD"},"status":{"type":"TEXT","notNull":false,"unique":false},"ar_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"revenue_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"collection_method":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"viewed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"reminders_sent":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_reminder_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"terms":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"invoices_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoices_customer_id_idx","columns":["customer_id"]},{"name":"invoices_contract_id_idx","columns":["contract_id"]},{"name":"invoices_ar_journal_id_idx","columns":["ar_journal_id"]},{"name":"invoices_revenue_journal_id_idx","columns":["revenue_journal_id"]}],"version":"e7573840"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:InvoiceLineItemCollection":{"name":"invoicelineitemcollection","className":"InvoiceLineItemCollection","qualifiedName":"@happyvertical/smrt-commerce:InvoiceLineItemCollection","collection":"invoicelineitems","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/InvoiceLineItemCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByInvoice":{"name":"findByInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findBySource":{"name":"findBySource","async":true,"parameters":[{"name":"sourceType","type":"string","optional":false},{"name":"sourceId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findBySourceType":{"name":"findBySourceType","async":true,"parameters":[{"name":"sourceType","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"getTotalForInvoice":{"name":"getTotalForInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getSubtotalForInvoice":{"name":"getSubtotalForInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getTaxForInvoice":{"name":"getTaxForInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getNextSortOrder":{"name":"getNextSortOrder","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"recalculateAmounts":{"name":"recalculateAmounts","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"toAccountingLineItems":{"name":"toAccountingLineItems","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<AccountingLineItemInput[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<InvoiceLineItem[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"InvoiceLineItem","exportName":"InvoiceLineItemCollection","collectionExportName":"InvoiceLineItemCollectionCollection","schema":{"tableName":"invoice_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"invoice_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"sku\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"invoice_editor_state_json\\" TEXT DEFAULT '',\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"source_type\\" TEXT DEFAULT '',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"revenue_account_id\\" UUID,\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sku":{"type":"TEXT","notNull":false,"unique":false,"default":""},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":1},"invoice_editor_state_json":{"type":"TEXT","notNull":false,"unique":false,"default":""},"unit_price":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"unique":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"revenue_account_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"invoice_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoice_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoice_line_items_invoice_id_idx","columns":["invoice_id"]},{"name":"invoice_line_items_revenue_account_id_idx","columns":["revenue_account_id"]}],"version":"6d388b43"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentAllocationCollection":{"name":"paymentallocationcollection","className":"PaymentAllocationCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentAllocationCollection","collection":"paymentallocations","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentAllocationCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"allocatePayment":{"name":"allocatePayment","async":true,"parameters":[{"name":"input","type":"object","optional":false,"memberTypes":["string","object[]","number"]}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByPayment":{"name":"findByPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByInvoice":{"name":"findByInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"getTotalAllocatedToInvoice":{"name":"getTotalAllocatedToInvoice","async":true,"parameters":[{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getTotalAllocatedFromPayment":{"name":"getTotalAllocatedFromPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"getUnallocatedFromPayment":{"name":"getUnallocatedFromPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false},{"name":"paymentAmount","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByPaymentAndInvoice":{"name":"findByPaymentAndInvoice","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false},{"name":"invoiceId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation | null>","isStatic":false,"isPublic":true},"findByAllocator":{"name":"findByAllocator","async":true,"parameters":[{"name":"allocatedBy","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentAllocation[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"PaymentAllocation","exportName":"PaymentAllocationCollection","collectionExportName":"PaymentAllocationCollectionCollection","schema":{"tableName":"payment_allocations","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_allocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"allocated_at\\" TIMESTAMP,\\n \\"allocated_by\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"payments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"allocated_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"allocated_by":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_allocations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_allocations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_allocations_payment_id_idx","columns":["payment_id"]},{"name":"payment_allocations_invoice_id_idx","columns":["invoice_id"]}],"version":"102e6fbc"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentCollection":{"name":"paymentcollection","className":"PaymentCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentCollection","collection":"payments","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByContract":{"name":"findByContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"PaymentStatus","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByMethod":{"name":"findByMethod","async":true,"parameters":[{"name":"method","type":"PaymentMethod","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findCompleted":{"name":"findCompleted","async":true,"parameters":[],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findByTransactionId":{"name":"findByTransactionId","async":true,"parameters":[{"name":"transactionId","type":"string","optional":false}],"returnType":"Promise<Payment | null>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"getTotalForContract":{"name":"getTotalForContract","async":true,"parameters":[{"name":"contractId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByJournal":{"name":"findByJournal","async":true,"parameters":[{"name":"journalId","type":"string","optional":false}],"returnType":"Promise<Payment | null>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payment[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Payment","exportName":"PaymentCollection","collectionExportName":"PaymentCollectionCollection","schema":{"tableName":"payments","ddl":"CREATE TABLE IF NOT EXISTS \\"payments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"method\\" TEXT,\\n \\"status\\" TEXT,\\n \\"transaction_id\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"journal_id\\" UUID,\\n \\"paid_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"native_amount\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"usd_at_quote\\" INTEGER DEFAULT 0,\\n \\"usd_at_confirmation\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"method":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"transaction_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"usd_at_quote":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"usd_at_confirmation":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"payments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payments_contract_id_idx","columns":["contract_id"]},{"name":"payments_customer_id_idx","columns":["customer_id"]},{"name":"payments_journal_id_idx","columns":["journal_id"]}],"version":"33f80e50"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentInstrumentCollection":{"name":"paymentinstrumentcollection","className":"PaymentInstrumentCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentInstrumentCollection","collection":"paymentinstruments","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentInstrumentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findActiveByCustomer":{"name":"findActiveByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findDefaultForCustomer":{"name":"findDefaultForCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument | null>","isStatic":false,"isPublic":true},"findByProviderPaymentMethodId":{"name":"findByProviderPaymentMethodId","async":true,"parameters":[{"name":"providerPaymentMethodId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument | null>","isStatic":false,"isPublic":true},"setDefaultForCustomer":{"name":"setDefaultForCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false},{"name":"instrumentId","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentInstrument[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"PaymentInstrument","exportName":"PaymentInstrumentCollection","collectionExportName":"PaymentInstrumentCollectionCollection","schema":{"tableName":"payment_instruments","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_instruments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"provider_payment_method_id\\" TEXT DEFAULT '',\\n \\"type\\" TEXT DEFAULT 'card',\\n \\"brand\\" TEXT DEFAULT '',\\n \\"last4\\" TEXT DEFAULT '',\\n \\"exp_month\\" INTEGER DEFAULT 0,\\n \\"exp_year\\" INTEGER DEFAULT 0,\\n \\"is_default\\" BOOLEAN DEFAULT FALSE,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_payment_method_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"type":{"type":"TEXT","notNull":false,"unique":false,"default":"card"},"brand":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last4":{"type":"TEXT","notNull":false,"unique":false,"default":""},"exp_month":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"exp_year":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"is_default":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"payment_instruments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_instruments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_instruments_customer_id_idx","columns":["customer_id"]}],"version":"722393fe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentIntentCollection":{"name":"paymentintentcollection","className":"PaymentIntentCollection","qualifiedName":"@happyvertical/smrt-commerce:PaymentIntentCollection","collection":"paymentintents","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PaymentIntentCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByIdempotencyKey":{"name":"findByIdempotencyKey","async":true,"parameters":[{"name":"args","type":"PaymentIntentIdempotencyArgs","optional":false}],"returnType":"Promise<PaymentIntent | null>","isStatic":false,"isPublic":true},"getOrCreateByIdempotencyKey":{"name":"getOrCreateByIdempotencyKey","async":true,"parameters":[{"name":"seed","type":"PaymentIntentSeed","optional":false}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"findOpen":{"name":"findOpen","async":true,"parameters":[],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findStale":{"name":"findStale","async":true,"parameters":[],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByLicenseeEmail":{"name":"findByLicenseeEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByOfferingRef":{"name":"findByOfferingRef","async":true,"parameters":[{"name":"offeringRef","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"PaymentIntentStatus","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<PaymentIntent[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"PaymentIntent","exportName":"PaymentIntentCollection","collectionExportName":"PaymentIntentCollectionCollection","schema":{"tableName":"payment_intents","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_intents\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"sku_id\\" TEXT DEFAULT '',\\n \\"offering_ref\\" TEXT DEFAULT '',\\n \\"licensee_email\\" TEXT DEFAULT '',\\n \\"customer_id\\" TEXT DEFAULT '',\\n \\"payment_options\\" JSON DEFAULT '[]',\\n \\"usd_price_locked\\" INTEGER DEFAULT 0,\\n \\"price_lock_window_ms\\" INTEGER,\\n \\"price_lock_expires_at\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"idempotency_key\\" TEXT DEFAULT '',\\n \\"paid_option_backend_id\\" TEXT DEFAULT '',\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"paid_at\\" TIMESTAMP,\\n \\"issued_at\\" TIMESTAMP,\\n \\"expired_at\\" TIMESTAMP,\\n \\"cancelled_at\\" TIMESTAMP,\\n \\"retired_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"sku_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"offering_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"licensee_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_options":{"type":"JSON","notNull":false,"unique":false,"default":[]},"usd_price_locked":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"price_lock_window_ms":{"type":"INTEGER","notNull":false,"unique":false},"price_lock_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"idempotency_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_option_backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"cancelled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"retired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_intents_tenant_id_offering_ref_idx","columns":["tenant_id","offering_ref","licensee_email","idempotency_key"],"unique":true,"nullsNotDistinct":true},{"name":"payment_intents_slug_context_idx","columns":["slug","context"]},{"name":"payment_intents_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c565aaef"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PayoutCollection":{"name":"payoutcollection","className":"PayoutCollection","qualifiedName":"@happyvertical/smrt-commerce:PayoutCollection","collection":"payouts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PayoutCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"createFromPayment":{"name":"createFromPayment","async":true,"parameters":[{"name":"args","type":"CreatePayoutFromPaymentArgs","optional":false}],"returnType":"Promise<Payout>","isStatic":false,"isPublic":true},"findByPayment":{"name":"findByPayment","async":true,"parameters":[{"name":"paymentId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findByVendor":{"name":"findByVendor","async":true,"parameters":[{"name":"vendorId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"PayoutStatus","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findFailed":{"name":"findFailed","async":true,"parameters":[],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findByBackendTxRef":{"name":"findByBackendTxRef","async":true,"parameters":[{"name":"backendTxRef","type":"string","optional":false}],"returnType":"Promise<Payout | null>","isStatic":false,"isPublic":true},"getConfirmedTotalForVendor":{"name":"getConfirmedTotalForVendor","async":true,"parameters":[{"name":"vendorId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Payout[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Payout","exportName":"PayoutCollection","collectionExportName":"PayoutCollectionCollection","schema":{"tableName":"payouts","ddl":"CREATE TABLE IF NOT EXISTS \\"payouts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"vendor_id\\" UUID,\\n \\"gross_amount\\" INTEGER DEFAULT 0,\\n \\"operator_fee\\" INTEGER DEFAULT 0,\\n \\"supplier_net\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT '',\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"confirmed_at\\" TIMESTAMP,\\n \\"failed_at\\" TIMESTAMP,\\n \\"failure_reason\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"gross_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"operator_fee":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"supplier_net":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"confirmed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failure_reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payouts_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payouts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payouts_vendor_id_idx","columns":["vendor_id"]}],"version":"98fa81d5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PurchaseContractCollection":{"name":"purchasecontractcollection","className":"PurchaseContractCollection","qualifiedName":"@happyvertical/smrt-commerce:PurchaseContractCollection","collection":"contracts","description":"Read supplier-side contracts across every purchase STI subtype.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/PurchaseContractCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByVendor":{"name":"findByVendor","async":true,"parameters":[{"name":"vendorId","type":"string","optional":false}],"returnType":"Promise<PurchaseContract[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"contracts","api":{"exclude":["create","update","delete","findByVendor"]},"mcp":{"exclude":["create","update","delete","findByVendor"]},"cli":{"exclude":["create","update","delete","findByVendor"]}},"extends":"SmrtCollection","extendsTypeArg":"PurchaseContract","exportName":"PurchaseContractCollection","collectionExportName":"PurchaseContractCollectionCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"456f7950"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:SalesContractCollection":{"name":"salescontractcollection","className":"SalesContractCollection","qualifiedName":"@happyvertical/smrt-commerce:SalesContractCollection","collection":"contracts","description":"Read customer-side contracts across every sales STI subtype.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/SalesContractCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByCustomer":{"name":"findByCustomer","async":true,"parameters":[{"name":"customerId","type":"string","optional":false}],"returnType":"Promise<SalesContract[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"contracts","api":{"exclude":["create","update","delete","findByCustomer"]},"mcp":{"exclude":["create","update","delete","findByCustomer"]},"cli":{"exclude":["create","update","delete","findByCustomer"]}},"extends":"SmrtCollection","extendsTypeArg":"SalesContract","exportName":"SalesContractCollection","collectionExportName":"SalesContractCollectionCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"b3d6a501"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:VendorCollection":{"name":"vendorcollection","className":"VendorCollection","qualifiedName":"@happyvertical/smrt-commerce:VendorCollection","collection":"vendors","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/collections/VendorCollection.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"VendorStatus","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"getOrCreateForProfile":{"name":"getOrCreateForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"defaults","type":"Partial<object>","optional":true,"memberTypes":["number","string"]}],"returnType":"Promise<Vendor>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Vendor[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Vendor","exportName":"VendorCollection","collectionExportName":"VendorCollectionCollection","schema":{"tableName":"vendors","ddl":"CREATE TABLE IF NOT EXISTS \\"vendors\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"lead_time_days\\" INTEGER DEFAULT 0,\\n \\"minimum_order_amount\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"default_contact_email\\" TEXT DEFAULT '',\\n \\"default_contact_phone\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"payout_addresses\\" JSON DEFAULT '{}',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"lead_time_days":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"minimum_order_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"default_contact_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_contact_phone":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payout_addresses":{"type":"JSON","notNull":false,"unique":false,"default":{}},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"vendors_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"vendors_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"vendors_profile_id_idx","columns":["profile_id"]}],"version":"0963c71f"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Contract":{"name":"contract","className":"Contract","qualifiedName":"@happyvertical/smrt-commerce:Contract","collection":"contracts","description":"Contract is the base class for all commercial agreements.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Contract","collectionExportName":"ContractCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"0eb8f0eb"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:SalesContract":{"name":"salescontract","className":"SalesContract","qualifiedName":"@happyvertical/smrt-commerce:SalesContract","collection":"contracts","description":"Customer-side contracts, including orders, estimates, and licenses.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"abstract":true,"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti","api":{"exclude":["create","update","delete","isDraft","isAccepted","isCompleted","isExpired","isOverdue","recalculateTotals","initialize","save"]},"mcp":{"exclude":["create","update","delete","isDraft","isAccepted","isCompleted","isExpired","isOverdue","recalculateTotals","initialize","save"]},"cli":{"exclude":["create","update","delete","isDraft","isAccepted","isCompleted","isExpired","isOverdue","recalculateTotals","initialize","save"]}},"extends":"Contract","exportName":"SalesContract","collectionExportName":"SalesContractCollection","abstractDeclaredApi":null,"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"b3d6a501"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PurchaseContract":{"name":"purchasecontract","className":"PurchaseContract","qualifiedName":"@happyvertical/smrt-commerce:PurchaseContract","collection":"contracts","description":"Supplier-side contracts, including purchase and production orders.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false,"description":"The kind of contract: order, estimate, lease, agreement and so on.","_meta":{"description":"The kind of contract: order, estimate, lease, agreement and so on."},"enum":["estimate","order","lease","agreement","purchase_order","wholesale_order","production_order","cart","license_sale"]},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"abstract":true,"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti","api":{"exclude":["create","update","delete","isDraft","isAccepted","isCompleted","isExpired","isOverdue","recalculateTotals","initialize","save"]},"mcp":{"exclude":["create","update","delete","isDraft","isAccepted","isCompleted","isExpired","isOverdue","recalculateTotals","initialize","save"]},"cli":{"exclude":["create","update","delete","isDraft","isAccepted","isCompleted","isExpired","isOverdue","recalculateTotals","initialize","save"]}},"extends":"Contract","exportName":"PurchaseContract","collectionExportName":"PurchaseContractCollection","abstractDeclaredApi":null,"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"456f7950"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Estimate":{"name":"estimate","className":"Estimate","qualifiedName":"@happyvertical/smrt-commerce:Estimate","collection":"contracts","description":"Quote or proposal for a customer","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":true,"related":"Customer","_meta":{"required":true}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"SalesContract","exportName":"Estimate","collectionExportName":"EstimateCollection","validationRules":[{"field":"customerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"97ec77c2"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Order":{"name":"order","className":"Order","qualifiedName":"@happyvertical/smrt-commerce:Order","collection":"contracts","description":"Customer purchase order","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":true,"related":"Customer","_meta":{"required":true}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"SalesContract","exportName":"Order","collectionExportName":"OrderCollection","validationRules":[{"field":"customerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"de738a76"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Lease":{"name":"lease","className":"Lease","qualifiedName":"@happyvertical/smrt-commerce:Lease","collection":"contracts","description":"Rental or lease agreement","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":true,"related":"Customer","_meta":{"required":true}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"SalesContract","exportName":"Lease","collectionExportName":"LeaseCollection","validationRules":[{"field":"customerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"efe0fd5d"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Agreement":{"name":"agreement","className":"Agreement","qualifiedName":"@happyvertical/smrt-commerce:Agreement","collection":"contracts","description":"Service or maintenance agreement","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":true,"related":"Customer","_meta":{"required":true}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"SalesContract","exportName":"Agreement","collectionExportName":"AgreementCollection","validationRules":[{"field":"customerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"4fb506a2"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PurchaseOrder":{"name":"purchaseorder","className":"PurchaseOrder","qualifiedName":"@happyvertical/smrt-commerce:PurchaseOrder","collection":"contracts","description":"Order sent to vendor/supplier","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"vendorId":{"type":"foreignKey","required":true,"related":"Vendor","_meta":{"required":true}},"expectedDate":{"type":"meta","required":false,"default":"","description":"The date you expect the delivery, as YYYY-MM-DD. Leave blank if it is not known.","_meta":{"description":"The date you expect the delivery, as YYYY-MM-DD. Leave blank if it is not known.","underlyingType":"text"}},"shipTo":{"type":"meta","required":false,"default":"","description":"Where this order should be delivered, including any delivery instructions.","_meta":{"description":"Where this order should be delivered, including any delivery instructions.","underlyingType":"text"}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"PurchaseContract","exportName":"PurchaseOrder","collectionExportName":"PurchaseOrderCollection","validationRules":[{"field":"vendorId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"6eabe226"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:WholesaleOrder":{"name":"wholesaleorder","className":"WholesaleOrder","qualifiedName":"@happyvertical/smrt-commerce:WholesaleOrder","collection":"contracts","description":"B2B order placed by a wholesale customer.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":true,"related":"Customer","_meta":{"required":true}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"SalesContract","exportName":"WholesaleOrder","collectionExportName":"WholesaleOrderCollection","validationRules":[{"field":"customerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"b7dcf847"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:ProductionOrder":{"name":"productionorder","className":"ProductionOrder","qualifiedName":"@happyvertical/smrt-commerce:ProductionOrder","collection":"contracts","description":"Instruction to commission goods from an internal or external factory.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor","_meta":{"description":"The vendor a purchase order is placed with."}},"productId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"bomId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"PurchaseContract","exportName":"ProductionOrder","collectionExportName":"ProductionOrderCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"d9bb954b"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Cart":{"name":"cart","className":"Cart","qualifiedName":"@happyvertical/smrt-commerce:Cart","collection":"contracts","description":"Transient order-in-progress for a shopper.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"SalesContract","exportName":"Cart","collectionExportName":"CartCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"43023a03"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:LicenseSale":{"name":"licensesale","className":"LicenseSale","qualifiedName":"@happyvertical/smrt-commerce:LicenseSale","collection":"contracts","description":"Industry-neutral licensing primitive.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Contract.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractType":{"type":"text","required":false},"status":{"type":"text","required":false,"description":"Where the order or agreement stands, for example draft, sent, accepted or completed.","_meta":{"description":"Where the order or agreement stands, for example draft, sent, accepted or completed."},"enum":["draft","sent","accepted","declined","completed","cancelled"]},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"The full amount, tax included.","_meta":{"description":"The full amount, tax included.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the amounts.","_meta":{"description":"The currency of the amounts.","ui":{"widget":"currency"}}},"issueDate":{"type":"datetime","required":false,"description":"The date it was issued or placed.","_meta":{"description":"The date it was issued or placed."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment or delivery is due.","_meta":{"description":"The date payment or delivery is due."}},"expiryDate":{"type":"datetime","required":false,"description":"The last day the price or offer is good for.","_meta":{"description":"The last day the price or offer is good for."}},"reference":{"type":"text","required":false,"default":"","description":"Your own number or note for finding this later, such as a purchase order or quote number.","_meta":{"description":"Your own number or note for finding this later, such as a purchase order or quote number."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this.","_meta":{"description":"Anything worth remembering about this.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The conditions agreed, such as deposits, payment or delivery conditions.","_meta":{"description":"The conditions agreed, such as deposits, payment or delivery conditions.","ui":{"widget":"textarea"}}},"channelId":{"type":"text","required":false,"default":"","description":"Where it came from, for example your shop, a marketplace or a phone call.","_meta":{"description":"Where it came from, for example your shop, a marketplace or a phone call."}},"customerId":{"type":"foreignKey","required":false,"related":"Customer","_meta":{"description":"The customer a sales order or agreement is for."}},"skuId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"paymentId":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"licenseeEmail":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"licenseeLegalEntity":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"licenseeJurisdiction":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsMedium":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsDistributionScope":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsExclusivity":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsDuration":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsTerritory":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"rightsSublicensing":{"type":"meta","required":false,"default":false,"_meta":{"underlyingType":"boolean"}},"rightsDerivatives":{"type":"meta","required":false,"default":false,"_meta":{"underlyingType":"boolean"}},"pdfUrl":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"pdfHash":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}},"onChainHashRegistryRef":{"type":"meta","required":false,"default":"","_meta":{"underlyingType":"text"}}},"methods":{"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAccepted":{"name":"isAccepted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recalculateTotals":{"name":"recalculateTotals","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getRightsSnapshot":{"name":"getRightsSnapshot","async":false,"parameters":[],"returnType":"LicenseRightsSnapshot","isStatic":false,"isPublic":true},"revoke":{"name":"revoke","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":{"mode":"optional"},"tableName":"contracts","tableStrategy":"sti"},"extends":"SalesContract","exportName":"LicenseSale","collectionExportName":"LicenseSaleCollection","schema":{"tableName":"contracts","ddl":"CREATE TABLE IF NOT EXISTS \\"contracts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"expiry_date\\" TIMESTAMP,\\n \\"reference\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT '',\\n \\"channel_id\\" TEXT DEFAULT '',\\n \\"customer_id\\" UUID,\\n \\"vendor_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_type":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false},"subtotal":{"type":"INTEGER","notNull":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"default":0},"currency":{"type":"TEXT","notNull":false,"default":"USD"},"issue_date":{"type":"TIMESTAMP","notNull":false},"due_date":{"type":"TIMESTAMP","notNull":false},"expiry_date":{"type":"TIMESTAMP","notNull":false},"reference":{"type":"TEXT","notNull":false,"default":""},"notes":{"type":"TEXT","notNull":false,"default":""},"terms":{"type":"TEXT","notNull":false,"default":""},"channel_id":{"type":"TEXT","notNull":false,"default":""},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"contracts_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contracts_meta_type_idx","columns":["_meta_type"]},{"name":"contracts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contracts_customer_id_idx","columns":["customer_id"]},{"name":"contracts_vendor_id_idx","columns":["vendor_id"]}],"version":"720a1437"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:ContractLineItem":{"name":"contractlineitem","className":"ContractLineItem","qualifiedName":"@happyvertical/smrt-commerce:ContractLineItem","collection":"contractlineitems","description":"ContractLineItem represents a single line item on a contract.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/ContractLineItem.ts","packageName":"@happyvertical/smrt-commerce","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractId":{"type":"foreignKey","required":false,"related":"Contract","description":"The order, quote or agreement this line belongs to.","_meta":{"description":"The order, quote or agreement this line belongs to.","role":"items"}},"description":{"type":"text","required":false,"default":"","description":"What is being sold or bought on this line.","_meta":{"description":"What is being sold or bought on this line."}},"quantity":{"type":"decimal","required":false,"default":1,"description":"How many.","_meta":{"description":"How many."}},"unitPrice":{"type":"integer","required":false,"default":0,"description":"The price of one, before tax.","_meta":{"description":"The price of one, before tax.","ui":{"format":"money"}}},"discount":{"type":"integer","required":false,"default":0,"_meta":{"ui":{"format":"money"}}},"taxRate":{"type":"decimal","required":false,"default":0,"description":"The tax rate for this line, as a percentage (5 means 5%).","_meta":{"description":"The tax rate for this line, as a percentage (5 means 5%)."}},"amount":{"type":"integer","required":false,"default":0,"description":"The line total.","_meta":{"description":"The line total.","ui":{"format":"money"}}},"productId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-products:Product","description":"The product this line is for, if it is one you list.","_meta":{"description":"The product this line is for, if it is one you list."}},"sku":{"type":"text","required":false,"default":""},"startDate":{"type":"datetime","required":false},"endDate":{"type":"datetime","required":false},"billingPeriod":{"type":"text","required":false,"default":""},"sortOrder":{"type":"integer","required":false,"default":0}},"methods":{"calculateAmount":{"name":"calculateAmount","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"isRecurring":{"name":"isRecurring","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isSubscriptionActive":{"name":"isSubscriptionActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"ContractLineItem","collectionExportName":"ContractLineItemCollection","schema":{"tableName":"contract_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"contract_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"product_id\\" UUID,\\n \\"sku\\" TEXT DEFAULT '',\\n \\"start_date\\" TIMESTAMP,\\n \\"end_date\\" TIMESTAMP,\\n \\"billing_period\\" TEXT DEFAULT '',\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"default":""},"quantity":{"type":"REAL","notNull":false,"default":1},"unit_price":{"type":"INTEGER","notNull":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"default":0},"product_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"sku":{"type":"TEXT","notNull":false,"default":""},"start_date":{"type":"TIMESTAMP","notNull":false},"end_date":{"type":"TIMESTAMP","notNull":false},"billing_period":{"type":"TEXT","notNull":false,"default":""},"sort_order":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"contract_line_items_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"contract_line_items_meta_type_idx","columns":["_meta_type"]},{"name":"contract_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"contract_line_items_contract_id_idx","columns":["contract_id"]},{"name":"contract_line_items_product_id_idx","columns":["product_id"]}],"version":"be2b46cd"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Customer":{"name":"customer","className":"Customer","qualifiedName":"@happyvertical/smrt-commerce:Customer","collection":"customers","description":"Customer represents the customer role for a Profile.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Customer.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"description":"Links this customer to their profile record, where their name and contact details are kept."}},"creditLimit":{"type":"integer","required":false,"default":0,"description":"The most this customer may owe you at one time. Leave it at zero if you do not set limits.","_meta":{"description":"The most this customer may owe you at one time. Leave it at zero if you do not set limits.","ui":{"format":"money"}}},"paymentTerms":{"type":"text","required":false,"default":"","description":"How long the customer has to pay, written the way you would say it, for example \\"Net 30\\".","_meta":{"description":"How long the customer has to pay, written the way you would say it, for example \\"Net 30\\"."}},"taxExempt":{"type":"boolean","required":false,"default":false,"description":"Turn this on if you do not charge this customer sales tax.","_meta":{"description":"Turn this on if you do not charge this customer sales tax."}},"taxId":{"type":"text","required":false,"default":"","description":"The tax or VAT number of the customer, kept on file for tax-exempt sales.","_meta":{"sensitive":true,"description":"The tax or VAT number of the customer, kept on file for tax-exempt sales."},"sensitive":true},"defaultShippingAddress":{"type":"json","required":false,"description":"Where you usually send goods to this customer, so you do not retype it on every order.","_meta":{"description":"Where you usually send goods to this customer, so you do not retype it on every order."}},"defaultBillingAddress":{"type":"json","required":false,"description":"Where you send invoices to this customer.","_meta":{"description":"Where you send invoices to this customer."}},"status":{"type":"text","required":false,"description":"Whether you are still dealing with this customer: active, inactive or suspended.","_meta":{"description":"Whether you are still dealing with this customer: active, inactive or suspended."},"enum":["active","inactive","suspended"]},"customerType":{"type":"text","required":false,"description":"The kind of customer: a direct shopper, a wholesale buyer or a retail customer.","_meta":{"description":"The kind of customer: a direct shopper, a wholesale buyer or a retail customer."},"enum":["dtc","wholesale","retail"]},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this customer.","_meta":{"description":"Anything worth remembering about this customer.","ui":{"widget":"textarea"}}},"contacts":{"type":"json","required":false,"default":[],"description":"The people you deal with at this customer, with their role and how to reach them.","_meta":{"description":"The people you deal with at this customer, with their role and how to reach them."}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isWholesale":{"name":"isWholesale","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"hasAvailableCredit":{"name":"hasAvailableCredit","async":false,"parameters":[{"name":"amount","type":"number","optional":false}],"returnType":"boolean","isStatic":false,"isPublic":true},"getProfileId":{"name":"getProfileId","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Customer","collectionExportName":"CustomerCollection","schema":{"tableName":"customers","ddl":"CREATE TABLE IF NOT EXISTS \\"customers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"credit_limit\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"tax_exempt\\" BOOLEAN DEFAULT FALSE,\\n \\"tax_id\\" TEXT DEFAULT '',\\n \\"default_shipping_address\\" JSON,\\n \\"default_billing_address\\" JSON,\\n \\"status\\" TEXT,\\n \\"customer_type\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"credit_limit":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"tax_exempt":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"tax_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_shipping_address":{"type":"JSON","notNull":false,"unique":false},"default_billing_address":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"customer_type":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"customers_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"customers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"customers_profile_id_idx","columns":["profile_id"]}],"version":"49587ccf"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Fulfillment":{"name":"fulfillment","className":"Fulfillment","qualifiedName":"@happyvertical/smrt-commerce:Fulfillment","collection":"fulfillments","description":"Fulfillment tracks the delivery or completion of contract items.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Fulfillment.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractId":{"type":"foreignKey","required":false,"related":"SalesContract","description":"The order being fulfilled.","_meta":{"description":"The order being fulfilled.","validateSubtype":true}},"fulfillmentType":{"type":"text","required":false,"description":"How it gets to the customer: shipment, delivery, pickup, digital or service.","_meta":{"description":"How it gets to the customer: shipment, delivery, pickup, digital or service."},"enum":["shipment","delivery","pickup","digital","service"]},"status":{"type":"text","required":false,"description":"Where it stands: pending, processing, shipped, delivered or cancelled.","_meta":{"description":"Where it stands: pending, processing, shipped, delivered or cancelled."},"enum":["pending","processing","shipped","delivered","cancelled"]},"trackingNumber":{"type":"text","required":false,"default":"","description":"The carrier's tracking number.","_meta":{"description":"The carrier's tracking number."}},"carrier":{"type":"text","required":false,"default":"","description":"The company carrying it.","_meta":{"description":"The company carrying it."}},"shippingAddress":{"type":"json","required":false},"shippedAt":{"type":"datetime","required":false,"description":"When it was dispatched.","_meta":{"description":"When it was dispatched."}},"deliveredAt":{"type":"datetime","required":false,"description":"When it arrived.","_meta":{"description":"When it arrived."}},"estimatedDelivery":{"type":"datetime","required":false},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this shipment.","_meta":{"description":"Anything worth remembering about this shipment."}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isDelivered":{"name":"isDelivered","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isInTransit":{"name":"isInTransit","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPending":{"name":"isPending","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markShipped":{"name":"markShipped","async":false,"parameters":[{"name":"trackingNumber","type":"string","optional":true},{"name":"carrier","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"markDelivered":{"name":"markDelivered","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Fulfillment","collectionExportName":"FulfillmentCollection","schema":{"tableName":"fulfillments","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"fulfillment_type\\" TEXT,\\n \\"status\\" TEXT,\\n \\"tracking_number\\" TEXT DEFAULT '',\\n \\"carrier\\" TEXT DEFAULT '',\\n \\"shipping_address\\" JSON,\\n \\"shipped_at\\" TIMESTAMP,\\n \\"delivered_at\\" TIMESTAMP,\\n \\"estimated_delivery\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"fulfillment_type":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"tracking_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"carrier":{"type":"TEXT","notNull":false,"unique":false,"default":""},"shipping_address":{"type":"JSON","notNull":false,"unique":false},"shipped_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"delivered_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"estimated_delivery":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillments_contract_id_idx","columns":["contract_id"]}],"version":"2f708fc5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:FulfillmentLineItem":{"name":"fulfillmentlineitem","className":"FulfillmentLineItem","qualifiedName":"@happyvertical/smrt-commerce:FulfillmentLineItem","collection":"fulfillmentlineitems","description":"FulfillmentLineItem tracks which contract line items are included in a specific fulfillment and how much was fulfilled.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/FulfillmentLineItem.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"fulfillmentId":{"type":"foreignKey","required":false,"related":"Fulfillment","description":"The shipment this line belongs to.","_meta":{"description":"The shipment this line belongs to.","role":"items"}},"contractLineItemId":{"type":"foreignKey","required":false,"related":"ContractLineItem","description":"The order line being sent.","_meta":{"description":"The order line being sent."}},"quantityFulfilled":{"type":"decimal","required":false,"default":1,"description":"How many of that line are in this shipment.","_meta":{"description":"How many of that line are in this shipment."}},"notes":{"type":"text","required":false,"default":""}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":true,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"FulfillmentLineItem","collectionExportName":"FulfillmentLineItemCollection","schema":{"tableName":"fulfillment_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"fulfillment_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"fulfillment_id\\" UUID,\\n \\"contract_line_item_id\\" UUID,\\n \\"quantity_fulfilled\\" REAL DEFAULT 1,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"fulfillment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"fulfillments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_line_item_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contract_line_items","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"quantity_fulfilled":{"type":"REAL","notNull":false,"unique":false,"default":1},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"fulfillment_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"fulfillment_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"fulfillment_line_items_fulfillment_id_idx","columns":["fulfillment_id"]},{"name":"fulfillment_line_items_contract_line_item_id_idx","columns":["contract_line_item_id"]}],"version":"14537dbe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Invoice":{"name":"invoice","className":"Invoice","qualifiedName":"@happyvertical/smrt-commerce:Invoice","collection":"invoices","description":"Invoice represents a bill sent to a customer for goods or services.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Invoice.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"customerId":{"type":"foreignKey","required":false,"related":"Customer","description":"The customer being billed.","_meta":{"description":"The customer being billed."}},"contractId":{"type":"foreignKey","required":false,"related":"SalesContract","description":"The order or agreement this invoice bills for, if any.","_meta":{"description":"The order or agreement this invoice bills for, if any.","validateSubtype":true}},"invoiceNumber":{"type":"text","required":false,"default":"","description":"The number printed on the invoice.","_meta":{"description":"The number printed on the invoice."}},"reference":{"type":"text","required":false,"default":""},"issueDate":{"type":"datetime","required":false,"description":"The date the invoice was issued.","_meta":{"description":"The date the invoice was issued."}},"dueDate":{"type":"datetime","required":false,"description":"The date payment is expected.","_meta":{"description":"The date payment is expected."}},"paidDate":{"type":"datetime","required":false,"description":"The date it was paid in full.","_meta":{"description":"The date it was paid in full."}},"subtotal":{"type":"integer","required":false,"default":0,"description":"The amount before tax.","_meta":{"description":"The amount before tax.","ui":{"format":"money"}}},"taxAmount":{"type":"integer","required":false,"default":0,"description":"The tax charged.","_meta":{"description":"The tax charged.","ui":{"format":"money"}}},"providerTaxAmount":{"type":"integer","required":false,"default":0,"_meta":{"ui":{"format":"money"}}},"totalAmount":{"type":"integer","required":false,"default":0,"description":"What the customer owes in all, tax included.","_meta":{"description":"What the customer owes in all, tax included.","ui":{"format":"money"}}},"amountPaid":{"type":"integer","required":false,"default":0,"description":"How much of the total has been paid so far.","_meta":{"description":"How much of the total has been paid so far.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"CAD","description":"The currency of the invoice.","_meta":{"description":"The currency of the invoice.","ui":{"widget":"currency"}}},"status":{"type":"text","required":false,"description":"Where the invoice stands: draft, sent, viewed, paid, overdue or cancelled.","_meta":{"description":"Where the invoice stands: draft, sent, viewed, paid, overdue or cancelled."},"enum":["draft","sent","viewed","partial","paid","overdue","cancelled","written_off"]},"arJournalId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Journal"},"revenueJournalId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Journal"},"externalId":{"type":"text","required":false,"default":""},"customerExternalId":{"type":"text","required":false,"default":""},"externalProvider":{"type":"text","required":false,"default":""},"syncedAt":{"type":"datetime","required":false},"collectionMethod":{"type":"text","required":false,"default":"","enum":["","send_invoice","charge_automatically"]},"sentAt":{"type":"datetime","required":false},"viewedAt":{"type":"datetime","required":false},"remindersSent":{"type":"integer","required":false,"default":0},"lastReminderAt":{"type":"datetime","required":false},"notes":{"type":"text","required":false,"default":"","description":"Private notes, not shown to the customer.","_meta":{"description":"Private notes, not shown to the customer.","ui":{"widget":"textarea"}}},"customerNotes":{"type":"text","required":false,"default":"","description":"A message shown to the customer on the invoice.","_meta":{"description":"A message shown to the customer on the invoice.","ui":{"widget":"textarea"}}},"terms":{"type":"text","required":false,"default":"","description":"The payment conditions, such as Net 30.","_meta":{"description":"The payment conditions, such as Net 30.","ui":{"widget":"textarea"}}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isDraft":{"name":"isDraft","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isSent":{"name":"isSent","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPaid":{"name":"isPaid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPartial":{"name":"isPartial","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isOverdue":{"name":"isOverdue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getAmountDue":{"name":"getAmountDue","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"markSent":{"name":"markSent","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markViewed":{"name":"markViewed","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"updatePaymentStatus":{"name":"updatePaymentStatus","async":false,"parameters":[{"name":"amountPaid","type":"number","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"writeOff":{"name":"writeOff","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"recognizeRevenue":{"name":"recognizeRevenue","async":true,"parameters":[{"name":"options","type":"RecognizeRevenueOptions","optional":false}],"returnType":"Promise<Journal>","isStatic":false,"isPublic":true},"getArJournal":{"name":"getArJournal","async":true,"parameters":[],"returnType":"Promise<Journal | null>","isStatic":false,"isPublic":true},"toAccountingInput":{"name":"toAccountingInput","async":true,"parameters":[],"returnType":"Promise<AccountingInvoiceInput>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"],"writable":["customerId","contractId","invoiceNumber","reference","issueDate","dueDate","currency","notes","customerNotes","terms","externalId","customerExternalId","externalProvider"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Invoice","collectionExportName":"InvoiceCollection","schema":{"tableName":"invoices","ddl":"CREATE TABLE IF NOT EXISTS \\"invoices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"invoice_number\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"issue_date\\" TIMESTAMP,\\n \\"due_date\\" TIMESTAMP,\\n \\"paid_date\\" TIMESTAMP,\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"tax_amount\\" INTEGER DEFAULT 0,\\n \\"provider_tax_amount\\" INTEGER DEFAULT 0,\\n \\"total_amount\\" INTEGER DEFAULT 0,\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'CAD',\\n \\"status\\" TEXT,\\n \\"ar_journal_id\\" UUID,\\n \\"revenue_journal_id\\" UUID,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"customer_external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"collection_method\\" TEXT DEFAULT '',\\n \\"sent_at\\" TIMESTAMP,\\n \\"viewed_at\\" TIMESTAMP,\\n \\"reminders_sent\\" INTEGER DEFAULT 0,\\n \\"last_reminder_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"customer_notes\\" TEXT DEFAULT '',\\n \\"terms\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_number":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"issue_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"due_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"paid_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"provider_tax_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"total_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"CAD"},"status":{"type":"TEXT","notNull":false,"unique":false},"ar_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"revenue_journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"collection_method":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"viewed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"reminders_sent":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_reminder_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"terms":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"invoices_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoices_customer_id_idx","columns":["customer_id"]},{"name":"invoices_contract_id_idx","columns":["contract_id"]},{"name":"invoices_ar_journal_id_idx","columns":["ar_journal_id"]},{"name":"invoices_revenue_journal_id_idx","columns":["revenue_journal_id"]}],"version":"e7573840"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:InvoiceLineItem":{"name":"invoicelineitem","className":"InvoiceLineItem","qualifiedName":"@happyvertical/smrt-commerce:InvoiceLineItem","collection":"invoicelineitems","description":"InvoiceLineItem represents a single line item on an invoice.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/InvoiceLineItem.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"invoiceId":{"type":"foreignKey","required":false,"related":"Invoice","description":"The invoice this line belongs to.","_meta":{"description":"The invoice this line belongs to.","role":"items"}},"description":{"type":"text","required":false,"default":"","description":"What is being billed on this line.","_meta":{"description":"What is being billed on this line."}},"sku":{"type":"text","required":false,"default":""},"quantity":{"type":"decimal","required":false,"default":1,"description":"How many.","_meta":{"description":"How many."}},"invoiceEditorStateJson":{"type":"text","required":false,"default":""},"unitPrice":{"type":"integer","required":false,"default":0,"description":"The price of one, before tax.","_meta":{"description":"The price of one, before tax.","ui":{"format":"money"}}},"discount":{"type":"integer","required":false,"default":0,"_meta":{"ui":{"format":"money"}}},"taxRate":{"type":"decimal","required":false,"default":0,"description":"The tax rate for this line, as a percentage (5 means 5%).","_meta":{"description":"The tax rate for this line, as a percentage (5 means 5%)."}},"amount":{"type":"integer","required":false,"default":0,"description":"The line total.","_meta":{"description":"The line total.","ui":{"format":"money"}}},"sourceType":{"type":"text","required":false,"default":""},"sourceId":{"type":"text","required":false,"default":""},"periodStart":{"type":"datetime","required":false},"periodEnd":{"type":"datetime","required":false},"revenueAccountId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Account"},"sortOrder":{"type":"integer","required":false,"default":0}},"methods":{"calculateAmount":{"name":"calculateAmount","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"getSubtotal":{"name":"getSubtotal","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"getTaxAmount":{"name":"getTaxAmount","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"applyEditorDraft":{"name":"applyEditorDraft","async":false,"parameters":[{"name":"draft","type":"InvoiceLineDraft","optional":false},{"name":"context","type":"InvoiceCalculationContext","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"getEditorDraft":{"name":"getEditorDraft","async":false,"parameters":[{"name":"authorizedContext","type":"InvoiceCalculationContext","optional":false}],"returnType":"InvoiceLineDraft | null","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"hasSource":{"name":"hasSource","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"hasPeriod":{"name":"hasPeriod","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"toAccountingLineItem":{"name":"toAccountingLineItem","async":false,"parameters":[{"name":"currency","type":"string","optional":true}],"returnType":"AccountingLineItemInput","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"InvoiceLineItem","collectionExportName":"InvoiceLineItemCollection","schema":{"tableName":"invoice_line_items","ddl":"CREATE TABLE IF NOT EXISTS \\"invoice_line_items\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"description\\" TEXT DEFAULT '',\\n \\"sku\\" TEXT DEFAULT '',\\n \\"quantity\\" REAL DEFAULT 1,\\n \\"invoice_editor_state_json\\" TEXT DEFAULT '',\\n \\"unit_price\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"tax_rate\\" REAL DEFAULT 0,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"source_type\\" TEXT DEFAULT '',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"revenue_account_id\\" UUID,\\n \\"sort_order\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"sku":{"type":"TEXT","notNull":false,"unique":false,"default":""},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":1},"invoice_editor_state_json":{"type":"TEXT","notNull":false,"unique":false,"default":""},"unit_price":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tax_rate":{"type":"REAL","notNull":false,"unique":false,"default":0},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"revenue_account_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"invoice_line_items_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"invoice_line_items_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"invoice_line_items_invoice_id_idx","columns":["invoice_id"]},{"name":"invoice_line_items_revenue_account_id_idx","columns":["revenue_account_id"]}],"version":"6d388b43"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Payment":{"name":"payment","className":"Payment","qualifiedName":"@happyvertical/smrt-commerce:Payment","collection":"payments","description":"Payment represents a financial transaction against a contract.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Payment.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"contractId":{"type":"foreignKey","required":false,"related":"SalesContract","description":"The order or agreement this payment is for, if any.","_meta":{"description":"The order or agreement this payment is for, if any.","validateSubtype":true}},"customerId":{"type":"foreignKey","required":false,"related":"Customer","description":"The customer who paid.","_meta":{"description":"The customer who paid."}},"amount":{"type":"integer","required":false,"default":0,"description":"How much was paid.","_meta":{"description":"How much was paid.","ui":{"format":"money"}}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency of the payment.","_meta":{"description":"The currency of the payment.","ui":{"widget":"currency"}}},"method":{"type":"text","required":false,"description":"How it was paid: cash, check, card, bank transfer or other.","_meta":{"description":"How it was paid: cash, check, card, bank transfer or other."},"enum":["cash","check","credit_card","bank_transfer","crypto","other"]},"status":{"type":"text","required":false,"description":"Whether the payment is pending, completed, failed or refunded.","_meta":{"description":"Whether the payment is pending, completed, failed or refunded."},"enum":["pending","completed","failed","refunded","cancelled"]},"transactionId":{"type":"text","required":false,"default":""},"reference":{"type":"text","required":false,"default":"","description":"A reference note, such as a check number.","_meta":{"description":"A reference note, such as a check number."}},"journalId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-ledgers:Journal"},"paidAt":{"type":"datetime","required":false,"description":"When the money was received.","_meta":{"description":"When the money was received."}},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this payment.","_meta":{"description":"Anything worth remembering about this payment.","ui":{"widget":"textarea"}}},"externalId":{"type":"text","required":false,"default":""},"externalProvider":{"type":"text","required":false,"default":""},"syncedAt":{"type":"datetime","required":false},"backendId":{"type":"text","required":false,"default":""},"backendTxRef":{"type":"text","required":false,"default":""},"nativeAmount":{"type":"integer","required":false,"default":0},"nativeCurrency":{"type":"text","required":false,"default":""},"usdAtQuote":{"type":"integer","required":false,"default":0},"usdAtConfirmation":{"type":"integer","required":false,"default":0}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"usdDrift":{"name":"usdDrift","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true},"isPending":{"name":"isPending","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCompleted":{"name":"isCompleted","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isRefunded":{"name":"isRefunded","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"recordPayment":{"name":"recordPayment","async":true,"parameters":[{"name":"options","type":"RecordPaymentOptions","optional":false}],"returnType":"Promise<Journal>","isStatic":false,"isPublic":true},"getJournal":{"name":"getJournal","async":true,"parameters":[],"returnType":"Promise<Journal | null>","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"reason","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"],"writable":["contractId","customerId","amount","currency","method","transactionId","reference","notes","externalId","externalProvider","backendId","backendTxRef","nativeAmount","nativeCurrency","usdAtQuote","usdAtConfirmation"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Payment","collectionExportName":"PaymentCollection","schema":{"tableName":"payments","ddl":"CREATE TABLE IF NOT EXISTS \\"payments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"contract_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"method\\" TEXT,\\n \\"status\\" TEXT,\\n \\"transaction_id\\" TEXT DEFAULT '',\\n \\"reference\\" TEXT DEFAULT '',\\n \\"journal_id\\" UUID,\\n \\"paid_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"external_provider\\" TEXT DEFAULT '',\\n \\"synced_at\\" TIMESTAMP,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"native_amount\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"usd_at_quote\\" INTEGER DEFAULT 0,\\n \\"usd_at_confirmation\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"contract_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"contracts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"method":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"transaction_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reference":{"type":"TEXT","notNull":false,"unique":false,"default":""},"journal_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"external_provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"synced_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"usd_at_quote":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"usd_at_confirmation":{"type":"INTEGER","notNull":false,"unique":false,"default":0}},"indexes":[{"name":"payments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payments_contract_id_idx","columns":["contract_id"]},{"name":"payments_customer_id_idx","columns":["customer_id"]},{"name":"payments_journal_id_idx","columns":["journal_id"]}],"version":"33f80e50"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentAllocation":{"name":"paymentallocation","className":"PaymentAllocation","qualifiedName":"@happyvertical/smrt-commerce:PaymentAllocation","collection":"paymentallocations","description":"PaymentAllocation tracks how payments are applied to invoices.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/PaymentAllocation.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"paymentId":{"type":"foreignKey","required":false,"related":"Payment","description":"The payment being applied.","_meta":{"description":"The payment being applied."}},"invoiceId":{"type":"foreignKey","required":false,"related":"Invoice","description":"The invoice it settles.","_meta":{"description":"The invoice it settles."}},"amount":{"type":"integer","required":false,"default":0,"description":"How much of the payment goes to this invoice.","_meta":{"description":"How much of the payment goes to this invoice.","ui":{"format":"money"}}},"allocatedAt":{"type":"datetime","required":false,"description":"When it was applied.","_meta":{"description":"When it was applied."}},"allocatedBy":{"type":"text","required":false,"default":""},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this allocation.","_meta":{"description":"Anything worth remembering about this allocation."}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"PaymentAllocation","collectionExportName":"PaymentAllocationCollection","schema":{"tableName":"payment_allocations","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_allocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" UUID,\\n \\"invoice_id\\" UUID,\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"allocated_at\\" TIMESTAMP,\\n \\"allocated_by\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"payments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"allocated_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"allocated_by":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_allocations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_allocations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_allocations_payment_id_idx","columns":["payment_id"]},{"name":"payment_allocations_invoice_id_idx","columns":["invoice_id"]}],"version":"102e6fbc"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentInstrument":{"name":"paymentinstrument","className":"PaymentInstrument","qualifiedName":"@happyvertical/smrt-commerce:PaymentInstrument","collection":"paymentinstruments","description":"PaymentInstrument stores a reusable payment method a customer has saved with a payment backend (e.g. a card vaulted by Stripe), so it can be charged later without the customer present.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/PaymentInstrument.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"customerId":{"type":"foreignKey","required":false,"related":"Customer"},"backendId":{"type":"text","required":false,"default":""},"providerCustomerId":{"type":"text","required":false,"default":""},"providerPaymentMethodId":{"type":"text","required":false,"default":""},"type":{"type":"text","required":false,"default":"card"},"brand":{"type":"text","required":false,"default":""},"last4":{"type":"text","required":false,"default":""},"expMonth":{"type":"integer","required":false,"default":0},"expYear":{"type":"integer","required":false,"default":0},"isDefault":{"type":"boolean","required":false,"default":false},"status":{"type":"text","required":false,"enum":["active","expired","removed"]}},"methods":{"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isRemoved":{"name":"isRemoved","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markExpired":{"name":"markExpired","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markRemoved":{"name":"markRemoved","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"],"writable":["customerId","backendId","providerCustomerId","providerPaymentMethodId","type","brand","last4","expMonth","expYear","status"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"PaymentInstrument","collectionExportName":"PaymentInstrumentCollection","schema":{"tableName":"payment_instruments","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_instruments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"customer_id\\" UUID,\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"provider_payment_method_id\\" TEXT DEFAULT '',\\n \\"type\\" TEXT DEFAULT 'card',\\n \\"brand\\" TEXT DEFAULT '',\\n \\"last4\\" TEXT DEFAULT '',\\n \\"exp_month\\" INTEGER DEFAULT 0,\\n \\"exp_year\\" INTEGER DEFAULT 0,\\n \\"is_default\\" BOOLEAN DEFAULT FALSE,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_payment_method_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"type":{"type":"TEXT","notNull":false,"unique":false,"default":"card"},"brand":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last4":{"type":"TEXT","notNull":false,"unique":false,"default":""},"exp_month":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"exp_year":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"is_default":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"payment_instruments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payment_instruments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payment_instruments_customer_id_idx","columns":["customer_id"]}],"version":"722393fe"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:PaymentIntent":{"name":"paymentintent","className":"PaymentIntent","qualifiedName":"@happyvertical/smrt-commerce:PaymentIntent","collection":"paymentintents","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/PaymentIntent.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"skuId":{"type":"text","required":false,"default":""},"offeringRef":{"type":"text","required":false,"default":""},"licenseeEmail":{"type":"text","required":false,"default":""},"customerId":{"type":"text","required":false,"default":""},"paymentOptions":{"type":"json","required":false,"default":[]},"usdPriceLocked":{"type":"integer","required":false,"default":0},"priceLockWindowMs":{"type":"integer","required":false},"priceLockExpiresAt":{"type":"datetime","required":false},"status":{"type":"text","required":false,"enum":["awaiting_payment","paid","issued","retired","expired","cancelled"]},"idempotencyKey":{"type":"text","required":false,"default":""},"paidOptionBackendId":{"type":"text","required":false,"default":""},"paymentId":{"type":"text","required":false,"default":""},"paidAt":{"type":"datetime","required":false},"issuedAt":{"type":"datetime","required":false},"expiredAt":{"type":"datetime","required":false},"cancelledAt":{"type":"datetime","required":false},"retiredAt":{"type":"datetime","required":false},"notes":{"type":"text","required":false,"default":""}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isAwaitingPayment":{"name":"isAwaitingPayment","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPaid":{"name":"isPaid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isIssued":{"name":"isIssued","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isCancelled":{"name":"isCancelled","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isRetired":{"name":"isRetired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isTerminal":{"name":"isTerminal","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markPaid":{"name":"markPaid","async":false,"parameters":[{"name":"args","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"void","isStatic":false,"isPublic":true},"verifyAndMarkPaid":{"name":"verifyAndMarkPaid","async":true,"parameters":[{"name":"args","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"markIssued":{"name":"markIssued","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"expire":{"name":"expire","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":false,"parameters":[{"name":"reason","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"retire":{"name":"retire","async":false,"parameters":[{"name":"reason","type":"string","optional":true}],"returnType":"void","isStatic":false,"isPublic":true},"getOption":{"name":"getOption","async":false,"parameters":[{"name":"backendId","type":"string","optional":false}],"returnType":"PaymentOption | undefined","isStatic":false,"isPublic":true},"isOptionRetired":{"name":"isOptionRetired","async":false,"parameters":[{"name":"backendId","type":"string","optional":false}],"returnType":"boolean","isStatic":false,"isPublic":true},"getRetiredOptions":{"name":"getRetiredOptions","async":false,"parameters":[],"returnType":"PaymentOption[]","isStatic":false,"isPublic":true}},"decoratorConfig":{"conflictColumns":["tenant_id","offering_ref","licensee_email","idempotency_key"],"api":{"include":["list","get","create","update"],"writable":["skuId","offeringRef","licenseeEmail","customerId","paymentOptions","usdPriceLocked","priceLockWindowMs","idempotencyKey","notes"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"}},"extends":"SmrtObject","exportName":"PaymentIntent","collectionExportName":"PaymentIntentCollection","schema":{"tableName":"payment_intents","ddl":"CREATE TABLE IF NOT EXISTS \\"payment_intents\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"sku_id\\" TEXT DEFAULT '',\\n \\"offering_ref\\" TEXT DEFAULT '',\\n \\"licensee_email\\" TEXT DEFAULT '',\\n \\"customer_id\\" TEXT DEFAULT '',\\n \\"payment_options\\" JSON DEFAULT '[]',\\n \\"usd_price_locked\\" INTEGER DEFAULT 0,\\n \\"price_lock_window_ms\\" INTEGER,\\n \\"price_lock_expires_at\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"idempotency_key\\" TEXT DEFAULT '',\\n \\"paid_option_backend_id\\" TEXT DEFAULT '',\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"paid_at\\" TIMESTAMP,\\n \\"issued_at\\" TIMESTAMP,\\n \\"expired_at\\" TIMESTAMP,\\n \\"cancelled_at\\" TIMESTAMP,\\n \\"retired_at\\" TIMESTAMP,\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"sku_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"offering_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"licensee_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_options":{"type":"JSON","notNull":false,"unique":false,"default":[]},"usd_price_locked":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"price_lock_window_ms":{"type":"INTEGER","notNull":false,"unique":false},"price_lock_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"idempotency_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_option_backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"paid_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"cancelled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"retired_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payment_intents_tenant_id_offering_ref_idx","columns":["tenant_id","offering_ref","licensee_email","idempotency_key"],"unique":true,"nullsNotDistinct":true},{"name":"payment_intents_slug_context_idx","columns":["slug","context"]},{"name":"payment_intents_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c565aaef"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Payout":{"name":"payout","className":"Payout","qualifiedName":"@happyvertical/smrt-commerce:Payout","collection":"payouts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Payout.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"paymentId":{"type":"text","required":false,"default":""},"vendorId":{"type":"foreignKey","required":false,"related":"Vendor"},"grossAmount":{"type":"integer","required":false,"default":0},"operatorFee":{"type":"integer","required":false,"default":0},"supplierNet":{"type":"integer","required":false,"default":0},"currency":{"type":"text","required":false,"default":""},"backendId":{"type":"text","required":false,"default":""},"backendTxRef":{"type":"text","required":false,"default":""},"status":{"type":"text","required":false,"enum":["pending","sent","confirmed","failed"]},"sentAt":{"type":"datetime","required":false},"confirmedAt":{"type":"datetime","required":false},"failedAt":{"type":"datetime","required":false},"failureReason":{"type":"text","required":false,"default":""},"notes":{"type":"text","required":false,"default":""}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isPending":{"name":"isPending","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isSent":{"name":"isSent","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isConfirmed":{"name":"isConfirmed","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isFailed":{"name":"isFailed","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markSent":{"name":"markSent","async":false,"parameters":[{"name":"backendTxRef","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markConfirmed":{"name":"markConfirmed","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"reason","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"resetFromFailed":{"name":"resetFromFailed","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"validateAmounts":{"name":"validateAmounts","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Payout","collectionExportName":"PayoutCollection","schema":{"tableName":"payouts","ddl":"CREATE TABLE IF NOT EXISTS \\"payouts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"vendor_id\\" UUID,\\n \\"gross_amount\\" INTEGER DEFAULT 0,\\n \\"operator_fee\\" INTEGER DEFAULT 0,\\n \\"supplier_net\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT '',\\n \\"backend_id\\" TEXT DEFAULT '',\\n \\"backend_tx_ref\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"confirmed_at\\" TIMESTAMP,\\n \\"failed_at\\" TIMESTAMP,\\n \\"failure_reason\\" TEXT DEFAULT '',\\n \\"notes\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"vendor_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"vendors","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"gross_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"operator_fee":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"supplier_net":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"backend_tx_ref":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"sent_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"confirmed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"failure_reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"payouts_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"payouts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"payouts_vendor_id_idx","columns":["vendor_id"]}],"version":"98fa81d5"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:Vendor":{"name":"vendor","className":"Vendor","qualifiedName":"@happyvertical/smrt-commerce:Vendor","collection":"vendors","description":"Vendor represents the vendor/supplier role for a Profile.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/Vendor.ts","packageName":"@happyvertical/smrt-commerce","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"description":"Links this vendor to their profile record, where their name and contact details are kept."}},"leadTimeDays":{"type":"integer","required":false,"default":0,"description":"How many days the vendor usually takes between your order and delivery.","_meta":{"description":"How many days the vendor usually takes between your order and delivery."}},"minimumOrderAmount":{"type":"integer","required":false,"default":0,"description":"The smallest order the vendor will accept.","_meta":{"description":"The smallest order the vendor will accept.","ui":{"format":"money"}}},"paymentTerms":{"type":"text","required":false,"default":"","description":"How long you have to pay this vendor, written the way you would say it, for example \\"Net 30\\".","_meta":{"description":"How long you have to pay this vendor, written the way you would say it, for example \\"Net 30\\"."}},"currency":{"type":"text","required":false,"default":"USD","description":"The currency this vendor bills you in.","_meta":{"description":"The currency this vendor bills you in.","ui":{"widget":"currency"}}},"defaultContactEmail":{"type":"text","required":false,"default":"","description":"The email address you normally use to reach this vendor.","_meta":{"description":"The email address you normally use to reach this vendor.","ui":{"widget":"email"}}},"defaultContactPhone":{"type":"text","required":false,"default":"","description":"The phone number you normally use to reach this vendor.","_meta":{"description":"The phone number you normally use to reach this vendor.","ui":{"widget":"phone"}}},"status":{"type":"text","required":false,"description":"Whether you still buy from this vendor: active, inactive or suspended.","_meta":{"description":"Whether you still buy from this vendor: active, inactive or suspended."},"enum":["active","inactive","suspended"]},"notes":{"type":"text","required":false,"default":"","description":"Anything worth remembering about this vendor.","_meta":{"description":"Anything worth remembering about this vendor.","ui":{"widget":"textarea"}}},"payoutAddresses":{"type":"json","required":false,"default":{},"description":"Where payments to this vendor should be sent.","_meta":{"sensitive":true,"description":"Where payments to this vendor should be sent."},"sensitive":true},"contacts":{"type":"json","required":false,"default":[],"description":"The people you deal with at this vendor, with their role and how to reach them.","_meta":{"description":"The people you deal with at this vendor, with their role and how to reach them."}}},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"meetsMinimumOrder":{"name":"meetsMinimumOrder","async":false,"parameters":[{"name":"amount","type":"number","optional":false}],"returnType":"boolean","isStatic":false,"isPublic":true},"getProfileId":{"name":"getProfileId","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true},"getPayoutAddress":{"name":"getPayoutAddress","async":false,"parameters":[{"name":"currency","type":"string","optional":false}],"returnType":"string | undefined","isStatic":false,"isPublic":true},"setPayoutAddress":{"name":"setPayoutAddress","async":false,"parameters":[{"name":"currency","type":"string","optional":false},{"name":"destination","type":"string","optional":false}],"returnType":"this","isStatic":false,"isPublic":true},"clearPayoutAddress":{"name":"clearPayoutAddress","async":false,"parameters":[{"name":"currency","type":"string","optional":false}],"returnType":"this","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Vendor","collectionExportName":"VendorCollection","schema":{"tableName":"vendors","ddl":"CREATE TABLE IF NOT EXISTS \\"vendors\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"lead_time_days\\" INTEGER DEFAULT 0,\\n \\"minimum_order_amount\\" INTEGER DEFAULT 0,\\n \\"payment_terms\\" TEXT DEFAULT '',\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"default_contact_email\\" TEXT DEFAULT '',\\n \\"default_contact_phone\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"notes\\" TEXT DEFAULT '',\\n \\"payout_addresses\\" JSON DEFAULT '{}',\\n \\"contacts\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"lead_time_days":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"minimum_order_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms":{"type":"TEXT","notNull":false,"unique":false,"default":""},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"default_contact_email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"default_contact_phone":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false},"notes":{"type":"TEXT","notNull":false,"unique":false,"default":""},"payout_addresses":{"type":"JSON","notNull":false,"unique":false,"default":{}},"contacts":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"vendors_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"vendors_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"vendors_profile_id_idx","columns":["profile_id"]}],"version":"0963c71f"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingAccount":{"name":"billingaccount","className":"BillingAccount","qualifiedName":"@happyvertical/smrt-commerce:BillingAccount","collection":"billingaccounts","description":"One payer's account with one seller: the commerce Customer invoices are issued to, the provider customer they are pushed to, and the payer's billing terms.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"payerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"customerId":{"type":"foreignKey","required":false,"related":"Customer"},"name":{"type":"text","required":false,"default":""},"email":{"type":"text","required":false,"default":""},"provider":{"type":"text","required":false,"default":""},"providerCustomerId":{"type":"text","required":false,"default":""},"automaticTax":{"type":"boolean","required":false,"default":true},"flatDiscountBasisPoints":{"type":"integer","required":false,"default":0},"paymentTermsDays":{"type":"integer","required":false,"default":30},"standing":{"type":"text","required":false,"default":"current","enum":["current","past_due","uncollectible"]},"billingAnchorAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"prorateFlatPlans":{"type":"boolean","required":false,"default":false}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_accounts","conflictColumns":["seller_tenant_id","payer_tenant_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingAccount","collectionExportName":"BillingAccountCollection","displayLabelField":"name","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"payerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_accounts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_accounts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"customer_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"automatic_tax\\" BOOLEAN DEFAULT TRUE,\\n \\"flat_discount_basis_points\\" INTEGER DEFAULT 0,\\n \\"payment_terms_days\\" INTEGER DEFAULT 30,\\n \\"standing\\" TEXT DEFAULT 'current',\\n \\"billing_anchor_at\\" TIMESTAMP,\\n \\"prorate_flat_plans\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"automatic_tax":{"type":"BOOLEAN","notNull":false,"unique":false,"default":true},"flat_discount_basis_points":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms_days":{"type":"INTEGER","notNull":false,"unique":false,"default":30},"standing":{"type":"TEXT","notNull":false,"unique":false,"default":"current"},"billing_anchor_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"prorate_flat_plans":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false}},"indexes":[{"name":"_smrt_billing_accounts_seller_tenant_id_payer_tenant_id_idx","columns":["seller_tenant_id","payer_tenant_id"],"unique":true},{"name":"_smrt_billing_accounts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_accounts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_accounts_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_accounts_customer_id_idx","columns":["customer_id"]}],"version":"58124e47"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPeriodClose":{"name":"billingperiodclose","className":"BillingPeriodClose","qualifiedName":"@happyvertical/smrt-commerce:BillingPeriodClose","collection":"billingperiodcloses","description":"The idempotency anchor for one payer's invoice in one currency for one period. Its id is derived from that identity, so a retried close always resumes the same row, invoice, and provider invoice.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"kind":{"type":"text","required":false,"default":"provider","enum":["provider","reseller"]},"payerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"currency":{"type":"text","required":false,"default":"USD"},"periodStart":{"type":"datetime","required":false},"periodEnd":{"type":"datetime","required":false},"billingAccountId":{"type":"foreignKey","required":false,"related":"BillingAccount"},"status":{"type":"text","required":false,"default":"collecting","enum":["collecting","invoiced","pushed","sent","completed","carried_forward"]},"invoiceId":{"type":"foreignKey","required":false,"related":"Invoice"},"providerInvoiceId":{"type":"text","required":false,"default":""},"subtotal":{"type":"integer","required":false,"default":0},"lineCount":{"type":"integer","required":false,"default":0},"issuedAt":{"type":"datetime","required":false},"leaseToken":{"type":"text","required":false,"_meta":{"nullable":true}},"leaseExpiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"attempts":{"type":"integer","required":false,"default":0},"lastError":{"type":"text","required":false,"default":""}},"methods":{"runPeriodClose":{"name":"runPeriodClose","async":true,"parameters":[{"name":"args","type":"Record<string, unknown>","optional":true},{"name":"_context","type":"JobExecutionContext","optional":true}],"returnType":"Promise<unknown>","isStatic":false,"isPublic":true},"processBillingEvents":{"name":"processBillingEvents","async":true,"parameters":[{"name":"args","type":"Record<string, unknown>","optional":true},{"name":"_context","type":"JobExecutionContext","optional":true}],"returnType":"Promise<unknown>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_billing_period_closes","conflictColumns":["seller_tenant_id","kind","payer_tenant_id","currency","period_start","period_end"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingPeriodClose","collectionExportName":"BillingPeriodCloseCollection","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"payerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_period_closes","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_period_closes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'provider',\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"billing_account_id\\" UUID,\\n \\"status\\" TEXT DEFAULT 'collecting',\\n \\"invoice_id\\" UUID,\\n \\"provider_invoice_id\\" TEXT DEFAULT '',\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"line_count\\" INTEGER DEFAULT 0,\\n \\"issued_at\\" TIMESTAMP,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"attempts\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"provider"},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"billing_account_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_accounts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"collecting"},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider_invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"line_count":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"attempts":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"_smrt_billing_period_closes_seller_tenant_id_kind_idx","columns":["seller_tenant_id","kind","payer_tenant_id","currency","period_start","period_end"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_period_closes_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_period_closes_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_period_closes_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_period_closes_billing_account_id_idx","columns":["billing_account_id"]},{"name":"_smrt_billing_period_closes_invoice_id_idx","columns":["invoice_id"]}],"version":"753d2e86"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingLineSource":{"name":"billinglinesource","className":"BillingLineSource","qualifiedName":"@happyvertical/smrt-commerce:BillingLineSource","collection":"billinglinesources","description":"A claim that one billable source \u2014 a charge, an adjustment, or a window of a flat plan \u2014 is billed on exactly one period close.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"periodCloseId":{"type":"foreignKey","required":false,"related":"BillingPeriodClose"},"sourceType":{"type":"text","required":false,"default":"client_charge","enum":["client_charge","billing_adjustment","retail_charge","subscription_period","credit_carry_forward"]},"sourceId":{"type":"text","required":false,"default":""},"lineKey":{"type":"text","required":false,"default":""},"lineDescription":{"type":"text","required":false,"default":""},"amount":{"type":"integer","required":false,"default":0},"discount":{"type":"integer","required":false,"default":0},"quantity":{"type":"decimal","required":false,"default":0},"chainSequence":{"type":"integer","required":false,"default":0},"currency":{"type":"text","required":false,"default":"USD"},"periodStart":{"type":"datetime","required":false},"periodEnd":{"type":"datetime","required":false}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_line_sources","conflictColumns":["source_type","source_id"],"indexes":[{"name":"_smrt_billing_line_sources_line_key_chain_sequence_idx","columns":["lineKey","chainSequence"]}],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingLineSource","collectionExportName":"BillingLineSourceCollection","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_line_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_line_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"period_close_id\\" UUID,\\n \\"source_type\\" TEXT DEFAULT 'client_charge',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"line_key\\" TEXT DEFAULT '',\\n \\"line_description\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"quantity\\" REAL DEFAULT 0,\\n \\"chain_sequence\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"period_close_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_period_closes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":"client_charge"},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":0},"chain_sequence":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_billing_line_sources_source_type_source_id_idx","columns":["source_type","source_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_line_sources_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_line_sources_line_key_chain_sequence_idx","columns":["line_key","chain_sequence"]},{"name":"_smrt_billing_line_sources_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_line_sources_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_line_sources_period_close_id_idx","columns":["period_close_id"]}],"version":"35e3aaa7"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPaymentAttempt":{"name":"billingpaymentattempt","className":"BillingPaymentAttempt","qualifiedName":"@happyvertical/smrt-commerce:BillingPaymentAttempt","collection":"billingpaymentattempts","description":"One payment attempt on a payment rail (#3138): a short-lived provider checkout (for example a BTCPay invoice) paying a credit purchase or an issued invoice.","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{"sellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"payerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"billingAccountId":{"type":"text","required":false,"default":""},"purpose":{"type":"text","required":false,"default":"credit_purchase","enum":["credit_purchase","invoice_payment"]},"invoiceId":{"type":"text","required":false,"default":""},"spendingPolicyId":{"type":"text","required":false,"default":""},"provider":{"type":"text","required":false,"default":""},"orderId":{"type":"text","required":false,"default":""},"checkoutId":{"type":"text","required":false,"default":""},"status":{"type":"text","required":false,"default":"open"},"exception":{"type":"text","required":false,"default":"none"},"flag":{"type":"text","required":false,"default":"","enum":["","overpaid","underpaid","paid_late","manually_marked","invalidated_after_settlement","invoice_already_paid","amount_mismatch","out_of_band_without_settlement"]},"amount":{"type":"integer","required":false,"default":0},"currency":{"type":"text","required":false,"default":"USD"},"amountPaid":{"type":"integer","required":false,"default":0},"nativeCurrency":{"type":"text","required":false,"default":""},"nativeAmountDue":{"type":"integer","required":false,"default":0},"nativeAmountPaid":{"type":"integer","required":false,"default":0},"rate":{"type":"text","required":false,"default":""},"rateSource":{"type":"text","required":false,"default":""},"checkoutUrl":{"type":"text","required":false,"default":""},"expiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"payments":{"type":"json","required":false,"default":[]},"timeline":{"type":"json","required":false,"default":[]},"settledAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"paymentId":{"type":"text","required":false,"default":""},"creditGrantId":{"type":"text","required":false,"default":""},"resolution":{"type":"text","required":false,"default":""},"resolvedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"outOfBandRequestedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"pausedStanding":{"type":"text","required":false,"default":""},"excessAmount":{"type":"integer","required":false,"default":0},"excessRevision":{"type":"integer","required":false,"default":0},"settlementOutcome":{"type":"text","required":false,"default":""},"refundedAmount":{"type":"integer","required":false,"default":0},"refundedPrincipal":{"type":"integer","required":false,"default":0},"refunds":{"type":"json","required":false,"default":[]}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_payment_attempts","conflictColumns":["provider","checkout_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingPaymentAttempt","collectionExportName":"BillingPaymentAttemptCollection","validationRules":[{"field":"sellerTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"payerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_payment_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_payment_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"billing_account_id\\" TEXT DEFAULT '',\\n \\"purpose\\" TEXT DEFAULT 'credit_purchase',\\n \\"invoice_id\\" TEXT DEFAULT '',\\n \\"spending_policy_id\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"order_id\\" TEXT DEFAULT '',\\n \\"checkout_id\\" TEXT DEFAULT '',\\n \\"status\\" TEXT DEFAULT 'open',\\n \\"exception\\" TEXT DEFAULT 'none',\\n \\"flag\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"native_amount_due\\" INTEGER DEFAULT 0,\\n \\"native_amount_paid\\" INTEGER DEFAULT 0,\\n \\"rate\\" TEXT DEFAULT '',\\n \\"rate_source\\" TEXT DEFAULT '',\\n \\"checkout_url\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"payments\\" JSON DEFAULT '[]',\\n \\"timeline\\" JSON DEFAULT '[]',\\n \\"settled_at\\" TIMESTAMP,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"credit_grant_id\\" TEXT DEFAULT '',\\n \\"resolution\\" TEXT DEFAULT '',\\n \\"resolved_at\\" TIMESTAMP,\\n \\"out_of_band_requested_at\\" TIMESTAMP,\\n \\"paused_standing\\" TEXT DEFAULT '',\\n \\"excess_amount\\" INTEGER DEFAULT 0,\\n \\"excess_revision\\" INTEGER DEFAULT 0,\\n \\"settlement_outcome\\" TEXT DEFAULT '',\\n \\"refunded_amount\\" INTEGER DEFAULT 0,\\n \\"refunded_principal\\" INTEGER DEFAULT 0,\\n \\"refunds\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_account_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"purpose":{"type":"TEXT","notNull":false,"unique":false,"default":"credit_purchase"},"invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"spending_policy_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"order_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"open"},"exception":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"flag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount_due":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"rate":{"type":"TEXT","notNull":false,"unique":false,"default":""},"rate_source":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_url":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payments":{"type":"JSON","notNull":false,"unique":false,"default":[]},"timeline":{"type":"JSON","notNull":false,"unique":false,"default":[]},"settled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"credit_grant_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolution":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolved_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"out_of_band_requested_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"paused_standing":{"type":"TEXT","notNull":false,"unique":false,"default":""},"excess_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"excess_revision":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"settlement_outcome":{"type":"TEXT","notNull":false,"unique":false,"default":""},"refunded_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunded_principal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunds":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"_smrt_billing_payment_attempts_provider_checkout_id_idx","columns":["provider","checkout_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_payment_attempts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_payment_attempts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_payment_attempts_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_payment_attempts_payer_tenant_id_idx","columns":["payer_tenant_id"]}],"version":"43aceca7"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingAccountCollection":{"name":"billingaccountcollection","className":"BillingAccountCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingAccountCollection","collection":"billingaccounts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_accounts","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingAccount","exportName":"BillingAccountCollection","collectionExportName":"BillingAccountCollectionCollection","schema":{"tableName":"_smrt_billing_accounts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_accounts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"customer_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"provider_customer_id\\" TEXT DEFAULT '',\\n \\"automatic_tax\\" BOOLEAN DEFAULT TRUE,\\n \\"flat_discount_basis_points\\" INTEGER DEFAULT 0,\\n \\"payment_terms_days\\" INTEGER DEFAULT 30,\\n \\"standing\\" TEXT DEFAULT 'current',\\n \\"billing_anchor_at\\" TIMESTAMP,\\n \\"prorate_flat_plans\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"customer_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"customers","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider_customer_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"automatic_tax":{"type":"BOOLEAN","notNull":false,"unique":false,"default":true},"flat_discount_basis_points":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"payment_terms_days":{"type":"INTEGER","notNull":false,"unique":false,"default":30},"standing":{"type":"TEXT","notNull":false,"unique":false,"default":"current"},"billing_anchor_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"prorate_flat_plans":{"type":"BOOLEAN","notNull":false,"unique":false,"default":false}},"indexes":[{"name":"_smrt_billing_accounts_seller_tenant_id_payer_tenant_id_idx","columns":["seller_tenant_id","payer_tenant_id"],"unique":true},{"name":"_smrt_billing_accounts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_accounts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_accounts_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_accounts_customer_id_idx","columns":["customer_id"]}],"version":"58124e47"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPeriodCloseCollection":{"name":"billingperiodclosecollection","className":"BillingPeriodCloseCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingPeriodCloseCollection","collection":"billingperiodcloses","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_period_closes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingPeriodClose","exportName":"BillingPeriodCloseCollection","collectionExportName":"BillingPeriodCloseCollectionCollection","schema":{"tableName":"_smrt_billing_period_closes","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_period_closes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'provider',\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP,\\n \\"billing_account_id\\" UUID,\\n \\"status\\" TEXT DEFAULT 'collecting',\\n \\"invoice_id\\" UUID,\\n \\"provider_invoice_id\\" TEXT DEFAULT '',\\n \\"subtotal\\" INTEGER DEFAULT 0,\\n \\"line_count\\" INTEGER DEFAULT 0,\\n \\"issued_at\\" TIMESTAMP,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"attempts\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"provider"},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false},"billing_account_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_accounts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"collecting"},"invoice_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"invoices","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider_invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"subtotal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"line_count":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"issued_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"attempts":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"_smrt_billing_period_closes_seller_tenant_id_kind_idx","columns":["seller_tenant_id","kind","payer_tenant_id","currency","period_start","period_end"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_period_closes_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_period_closes_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_period_closes_payer_tenant_id_idx","columns":["payer_tenant_id"]},{"name":"_smrt_billing_period_closes_billing_account_id_idx","columns":["billing_account_id"]},{"name":"_smrt_billing_period_closes_invoice_id_idx","columns":["invoice_id"]}],"version":"753d2e86"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingLineSourceCollection":{"name":"billinglinesourcecollection","className":"BillingLineSourceCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingLineSourceCollection","collection":"billinglinesources","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_line_sources","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingLineSource","exportName":"BillingLineSourceCollection","collectionExportName":"BillingLineSourceCollectionCollection","schema":{"tableName":"_smrt_billing_line_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_line_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"period_close_id\\" UUID,\\n \\"source_type\\" TEXT DEFAULT 'client_charge',\\n \\"source_id\\" TEXT DEFAULT '',\\n \\"line_key\\" TEXT DEFAULT '',\\n \\"line_description\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"discount\\" INTEGER DEFAULT 0,\\n \\"quantity\\" REAL DEFAULT 0,\\n \\"chain_sequence\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"period_start\\" TIMESTAMP,\\n \\"period_end\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"period_close_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"_smrt_billing_period_closes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false,"unique":false,"default":"client_charge"},"source_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_key":{"type":"TEXT","notNull":false,"unique":false,"default":""},"line_description":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"discount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"quantity":{"type":"REAL","notNull":false,"unique":false,"default":0},"chain_sequence":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"period_start":{"type":"TIMESTAMP","notNull":false,"unique":false},"period_end":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_billing_line_sources_source_type_source_id_idx","columns":["source_type","source_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_line_sources_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_line_sources_line_key_chain_sequence_idx","columns":["line_key","chain_sequence"]},{"name":"_smrt_billing_line_sources_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_line_sources_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_line_sources_period_close_id_idx","columns":["period_close_id"]}],"version":"35e3aaa7"},"importPath":"@happyvertical/smrt-commerce"},"@happyvertical/smrt-commerce:BillingPaymentAttemptCollection":{"name":"billingpaymentattemptcollection","className":"BillingPaymentAttemptCollection","qualifiedName":"@happyvertical/smrt-commerce:BillingPaymentAttemptCollection","collection":"billingpaymentattempts","filePath":"/home/runner/work/smrt/smrt/packages/commerce/src/models/billing.ts","packageName":"@happyvertical/smrt-commerce","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_payment_attempts","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingPaymentAttempt","exportName":"BillingPaymentAttemptCollection","collectionExportName":"BillingPaymentAttemptCollectionCollection","schema":{"tableName":"_smrt_billing_payment_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_payment_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"seller_tenant_id\\" UUID NOT NULL,\\n \\"payer_tenant_id\\" UUID NOT NULL,\\n \\"billing_account_id\\" TEXT DEFAULT '',\\n \\"purpose\\" TEXT DEFAULT 'credit_purchase',\\n \\"invoice_id\\" TEXT DEFAULT '',\\n \\"spending_policy_id\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT DEFAULT '',\\n \\"order_id\\" TEXT DEFAULT '',\\n \\"checkout_id\\" TEXT DEFAULT '',\\n \\"status\\" TEXT DEFAULT 'open',\\n \\"exception\\" TEXT DEFAULT 'none',\\n \\"flag\\" TEXT DEFAULT '',\\n \\"amount\\" INTEGER DEFAULT 0,\\n \\"currency\\" TEXT DEFAULT 'USD',\\n \\"amount_paid\\" INTEGER DEFAULT 0,\\n \\"native_currency\\" TEXT DEFAULT '',\\n \\"native_amount_due\\" INTEGER DEFAULT 0,\\n \\"native_amount_paid\\" INTEGER DEFAULT 0,\\n \\"rate\\" TEXT DEFAULT '',\\n \\"rate_source\\" TEXT DEFAULT '',\\n \\"checkout_url\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"payments\\" JSON DEFAULT '[]',\\n \\"timeline\\" JSON DEFAULT '[]',\\n \\"settled_at\\" TIMESTAMP,\\n \\"payment_id\\" TEXT DEFAULT '',\\n \\"credit_grant_id\\" TEXT DEFAULT '',\\n \\"resolution\\" TEXT DEFAULT '',\\n \\"resolved_at\\" TIMESTAMP,\\n \\"out_of_band_requested_at\\" TIMESTAMP,\\n \\"paused_standing\\" TEXT DEFAULT '',\\n \\"excess_amount\\" INTEGER DEFAULT 0,\\n \\"excess_revision\\" INTEGER DEFAULT 0,\\n \\"settlement_outcome\\" TEXT DEFAULT '',\\n \\"refunded_amount\\" INTEGER DEFAULT 0,\\n \\"refunded_principal\\" INTEGER DEFAULT 0,\\n \\"refunds\\" JSON DEFAULT '[]'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"seller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"payer_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_account_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"purpose":{"type":"TEXT","notNull":false,"unique":false,"default":"credit_purchase"},"invoice_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"spending_policy_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"provider":{"type":"TEXT","notNull":false,"unique":false,"default":""},"order_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"open"},"exception":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"flag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"currency":{"type":"TEXT","notNull":false,"unique":false,"default":"USD"},"amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_currency":{"type":"TEXT","notNull":false,"unique":false,"default":""},"native_amount_due":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"native_amount_paid":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"rate":{"type":"TEXT","notNull":false,"unique":false,"default":""},"rate_source":{"type":"TEXT","notNull":false,"unique":false,"default":""},"checkout_url":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payments":{"type":"JSON","notNull":false,"unique":false,"default":[]},"timeline":{"type":"JSON","notNull":false,"unique":false,"default":[]},"settled_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"payment_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"credit_grant_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolution":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resolved_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"out_of_band_requested_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"paused_standing":{"type":"TEXT","notNull":false,"unique":false,"default":""},"excess_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"excess_revision":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"settlement_outcome":{"type":"TEXT","notNull":false,"unique":false,"default":""},"refunded_amount":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunded_principal":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"refunds":{"type":"JSON","notNull":false,"unique":false,"default":[]}},"indexes":[{"name":"_smrt_billing_payment_attempts_provider_checkout_id_idx","columns":["provider","checkout_id"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_billing_payment_attempts_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_payment_attempts_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_payment_attempts_seller_tenant_id_idx","columns":["seller_tenant_id"]},{"name":"_smrt_billing_payment_attempts_payer_tenant_id_idx","columns":["payer_tenant_id"]}],"version":"43aceca7"},"importPath":"@happyvertical/smrt-commerce"}},"moduleType":"smrt","recipes":[{"id":"commerce.agreements","className":"AgreementsRecipe","label":"General agreements","summary":"Keep signed agreements with customers, and see every contract in one list.","synonyms":["contracts","terms","deals"],"models":["@happyvertical/smrt-commerce:Agreement","@happyvertical/smrt-commerce:Contract","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Agreements","model":"@happyvertical/smrt-commerce:Agreement","icon":"fileText","description":"Signed deals and terms with your customers, in one place."},{"label":"All contracts","model":"@happyvertical/smrt-commerce:Contract","icon":"fileText","description":"Every contract you hold, whoever it is with."}],"requires":["commerce.customers"],"group":{"id":"agreements","label":"Agreements","summary":"Contracts with customers: general agreements, leases and licence sales."},"section":{"id":"agreements","label":"Agreements","icon":"fileText","description":"Contracts, leases and licenses with customers."},"options":{"@happyvertical/smrt-commerce:Agreement":{"fields":{"contractType":{"default":"agreement","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1},"subtotal":{"visibility":"hidden"},"taxAmount":{"visibility":"hidden"},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}},"@happyvertical/smrt-commerce:Contract":{"fields":{"channelId":{"visibility":"hidden"}}}},"help":{"markdown":"## Overview\\n\\nAgreements are contracts you keep with customers. General agreements live here;\\nleases and licence sales are separate recipes in the same group.\\n**All contracts** lists every kind together, including orders and quotes.\\n\\n## Tasks\\n\\n### Record an agreement\\n\\n1. Create a new agreement.\\n2. Pick the **{field:customerId}**.\\n3. Set the **{field:issueDate}** and **{field:expiryDate}**.\\n4. Put the conditions in **{field:terms}** and save.\\n\\n### Follow it\\n\\n1. Update **{field:status}** from draft to accepted to completed.\\n2. Check **{field:expiryDate}** to spot agreements about to lapse.\\n","fieldRefs":["customerId","expiryDate","issueDate","status","terms"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.customers","className":"CustomersRecipe","label":"Customers","summary":"Keep a list of the people and companies you sell to.","synonyms":["clients","buyers","accounts"],"models":["@happyvertical/smrt-commerce:Customer"],"nav":[{"label":"Customers","model":"@happyvertical/smrt-commerce:Customer","icon":"users","description":"The people and companies you sell to, with how to reach them."}],"requires":[],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:Customer":{"fields":{"profileId":{"label":"Name","order":-1}}}},"help":{"markdown":"## Overview\\n\\nCustomers is your address book for the people and businesses you sell to. Keep\\none record for each customer so you can see who they are, how they like to pay\\nand what you have agreed with them, then refer back to them whenever you take an\\norder.\\n\\n## Tasks\\n\\n### Add a new customer\\n\\n1. Choose the **New** button above the list.\\n2. Describe the customer with **{field:customerType}**: a direct shopper, a\\n wholesale buyer or a retail customer. Note in **{field:status}** whether you\\n are still dealing with them.\\n3. Fill in the **{field:defaultShippingAddress}** and\\n **{field:defaultBillingAddress}** so you do not have to type them again on\\n every order.\\n4. Add **{field:paymentTerms}**, for example \\"Net 30\\", if you give this\\n customer time to pay.\\n5. Save. The customer is now on your list and ready to use on a sales order.\\n\\n### Keep track of what a customer can owe\\n\\n1. Open the customer from the list and choose Edit.\\n2. Set **{field:creditLimit}** to the most you are comfortable letting them owe\\n you at one time.\\n3. If you do not charge them sales tax, turn on **{field:taxExempt}**, and keep\\n their tax number on file.\\n4. Use **{field:notes}** for anything the next person who deals with this\\n customer should know.\\n\\n### Find a customer\\n\\nScan the list for the customer you want, or open a record to see everything you\\nhave on file. To stop dealing with someone without losing their history, change\\ntheir **{field:status}** to inactive instead of deleting them.\\n","fieldRefs":["creditLimit","customerType","defaultBillingAddress","defaultShippingAddress","notes","paymentTerms","status","taxExempt"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.estimates","className":"EstimatesRecipe","label":"Estimates","summary":"Send customers a price quote before they commit.","synonyms":["quotes","quotations","proposals","bids"],"models":["@happyvertical/smrt-commerce:Estimate","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Estimates","model":"@happyvertical/smrt-commerce:Estimate","icon":"fileText","description":"Price quotes you have sent to customers."}],"requires":["commerce.customers"],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:Estimate":{"fields":{"contractType":{"default":"estimate","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nEstimates are price quotes you send before a customer commits. Each one belongs\\nto a customer, lists its line items and shows how long the price is good for.\\n\\n## Tasks\\n\\n### Write an estimate\\n\\n1. Create a new estimate.\\n2. Pick the **{field:customerId}** the quote is for.\\n3. Add the line items, then check the **{field:totalAmount}**.\\n4. Set **{field:expiryDate}** to the last day the price is good for.\\n5. Put your conditions in **{field:terms}** and save.\\n\\n### Follow it up\\n\\n1. Set **{field:status}** to sent once it goes out.\\n2. Move it to accepted or declined when the customer answers.\\n","fieldRefs":["customerId","expiryDate","status","terms","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.fulfillment","className":"FulfillmentRecipe","label":"Shipping","summary":"Pack, ship and deliver orders, with tracking.","synonyms":["fulfillment","delivery","shipments","tracking"],"models":["@happyvertical/smrt-commerce:Fulfillment","@happyvertical/smrt-commerce:FulfillmentLineItem"],"nav":[{"label":"Shipments","model":"@happyvertical/smrt-commerce:Fulfillment","icon":"truck","description":"What has gone out the door and where it is now."}],"requires":[],"requiresAny":[["commerce.sales","commerce.wholesale"]],"group":{"id":"billing","label":"Billing & shipping","summary":"Invoice your customers, record what they pay and ship what they ordered."},"section":{"id":"operations","label":"Operations","icon":"wrench","description":"Fulfillment and the day-to-day work behind an order."},"options":{"@happyvertical/smrt-commerce:Fulfillment":{"fields":{"estimatedDelivery":{"visibility":"hidden"},"shippingAddress":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:FulfillmentLineItem":{"fields":{"notes":{"visibility":"hidden"}}}},"help":{"markdown":"## Overview\\n\\nShipping tracks how an order gets to the customer. Each shipment belongs to an\\norder and lists which line items are in it, so an order can go out in parts.\\n\\n## Tasks\\n\\n### Ship an order\\n\\n1. Create a new shipment.\\n2. Pick the order in **{field:contractId}** and choose the\\n **{field:fulfillmentType}**.\\n3. Enter the **{field:carrier}** and **{field:trackingNumber}**.\\n4. List the items and quantities in the shipment.\\n5. Set **{field:status}** to shipped and record **{field:shippedAt}**.\\n\\n### Confirm delivery\\n\\n1. Open the shipment and set **{field:status}** to delivered.\\n2. Record **{field:deliveredAt}**.\\n","fieldRefs":["carrier","contractId","deliveredAt","fulfillmentType","shippedAt","status","trackingNumber"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.invoicing","className":"InvoicingRecipe","label":"Invoicing","summary":"Bill customers and record the payments that come in.","synonyms":["invoices","billing","payments","receivables"],"models":["@happyvertical/smrt-commerce:Invoice","@happyvertical/smrt-commerce:InvoiceLineItem","@happyvertical/smrt-commerce:Payment","@happyvertical/smrt-commerce:PaymentAllocation"],"nav":[{"label":"Invoices","model":"@happyvertical/smrt-commerce:Invoice","icon":"receipt","description":"Bills you have sent and which ones are still waiting to be paid."},{"label":"Payments","model":"@happyvertical/smrt-commerce:Payment","icon":"creditCard","description":"Money received, matched to the invoices it paid."}],"requires":["commerce.customers"],"group":{"id":"billing","label":"Billing & shipping","summary":"Invoice your customers, record what they pay and ship what they ordered."},"section":{"id":"billing","label":"Billing","icon":"receipt","description":"Invoices and the payments against them."},"options":{"@happyvertical/smrt-commerce:Invoice":{"fields":{"providerTaxAmount":{"visibility":"hidden"},"arJournalId":{"visibility":"hidden"},"revenueJournalId":{"visibility":"hidden"},"externalId":{"visibility":"hidden"},"customerExternalId":{"visibility":"hidden"},"externalProvider":{"visibility":"hidden"},"syncedAt":{"visibility":"hidden"},"collectionMethod":{"visibility":"hidden"},"sentAt":{"visibility":"hidden"},"viewedAt":{"visibility":"hidden"},"remindersSent":{"visibility":"hidden"},"lastReminderAt":{"visibility":"hidden"},"reference":{"visibility":"hidden"},"customerId":{"required":true}}},"@happyvertical/smrt-commerce:InvoiceLineItem":{"fields":{"invoiceEditorStateJson":{"visibility":"hidden"},"sourceType":{"visibility":"hidden"},"sourceId":{"visibility":"hidden"},"periodStart":{"visibility":"hidden"},"periodEnd":{"visibility":"hidden"},"revenueAccountId":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"sku":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}},"@happyvertical/smrt-commerce:Payment":{"fields":{"journalId":{"visibility":"hidden"},"externalId":{"visibility":"hidden"},"externalProvider":{"visibility":"hidden"},"syncedAt":{"visibility":"hidden"},"backendId":{"visibility":"hidden"},"backendTxRef":{"visibility":"hidden"},"nativeAmount":{"visibility":"hidden"},"nativeCurrency":{"visibility":"hidden"},"usdAtQuote":{"visibility":"hidden"},"usdAtConfirmation":{"visibility":"hidden"},"transactionId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:PaymentAllocation":{"fields":{"allocatedBy":{"visibility":"hidden"}}}},"help":{"markdown":"## Overview\\n\\nInvoicing bills your customers and records what they pay. An invoice lists its\\nline items; a payment can be spread across one or more invoices.\\n\\n## Tasks\\n\\n### Send an invoice\\n\\n1. Create a new invoice.\\n2. Pick the **{field:customerId}** and add the line items.\\n3. Check the **{field:totalAmount}** and set the **{field:dueDate}**.\\n4. Set **{field:status}** to sent once it goes out.\\n\\n### Record a payment\\n\\n1. Create a new payment.\\n2. Pick the **{field:customerId}**, then enter the **{field:Payment.amount}** and the\\n **{field:method}** used.\\n3. Set **{field:Payment.status}** to completed once the money has arrived.\\n4. Apply it to the invoices it settles; each one shows what is still owed.\\n","fieldRefs":["Payment.amount","Payment.status","customerId","dueDate","method","status","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.leases","className":"LeasesRecipe","label":"Leases","summary":"Rent things out and track the term and the payments due.","synonyms":["rentals","renting","hire"],"models":["@happyvertical/smrt-commerce:Lease","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Leases","model":"@happyvertical/smrt-commerce:Lease","icon":"home","description":"Rentals you give or take, with terms and dates."}],"requires":["commerce.customers"],"group":{"id":"agreements","label":"Agreements","summary":"Contracts with customers: general agreements, leases and licence sales."},"section":{"id":"agreements","label":"Agreements","icon":"fileText","description":"Contracts, leases and licenses with customers."},"options":{"@happyvertical/smrt-commerce:Lease":{"fields":{"contractType":{"default":"lease","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1},"subtotal":{"visibility":"hidden"},"taxAmount":{"visibility":"hidden"},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nLeases are agreements where a customer rents something from you for a period.\\nEach lease keeps its own line items and dates.\\n\\n## Tasks\\n\\n### Record a lease\\n\\n1. Create a new lease.\\n2. Pick the **{field:customerId}** renting from you.\\n3. Set the **{field:issueDate}** it starts and the **{field:expiryDate}** it ends.\\n4. Add a line item for each thing rented, then save.\\n\\n### Keep an eye on it\\n\\n1. Update **{field:status}** as the lease goes from draft to accepted to\\n completed.\\n2. Check **{field:expiryDate}** to see which leases end soon.\\n","fieldRefs":["customerId","expiryDate","issueDate","status"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.licenses","className":"LicensesRecipe","label":"Licence sales","summary":"Sell licences to software, content or other rights.","synonyms":["licenses","licensing","subscriptions"],"models":["@happyvertical/smrt-commerce:LicenseSale","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Licence sales","model":"@happyvertical/smrt-commerce:LicenseSale","icon":"shoppingBag","description":"Licences you have sold and who holds them."}],"requires":["commerce.customers"],"group":{"id":"agreements","label":"Agreements","summary":"Contracts with customers: general agreements, leases and licence sales."},"section":{"id":"agreements","label":"Agreements","icon":"fileText","description":"Contracts, leases and licenses with customers."},"options":{"@happyvertical/smrt-commerce:LicenseSale":{"fields":{"contractType":{"default":"license_sale","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1},"subtotal":{"visibility":"hidden"},"taxAmount":{"visibility":"hidden"},"channelId":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nLicence sales record selling the right to use something, such as software or\\ncontent, rather than a physical item.\\n\\n## Tasks\\n\\n### Record a licence sale\\n\\n1. Create a new licence sale.\\n2. Pick the **{field:customerId}** who bought the licence.\\n3. Add a line item for what is licensed and check the **{field:totalAmount}**.\\n4. Set the **{field:expiryDate}** if the licence runs out, then save.\\n\\n### Follow it\\n\\n1. Update **{field:status}** when the customer accepts or the sale completes.\\n","fieldRefs":["customerId","expiryDate","status","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.purchases","className":"PurchasesRecipe","label":"Purchases","summary":"Order from your vendors and track what you have bought.","synonyms":["purchase orders","buying","procurement"],"models":["@happyvertical/smrt-commerce:PurchaseOrder","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Purchase orders","model":"@happyvertical/smrt-commerce:PurchaseOrder","icon":"truck","description":"What you have ordered from your suppliers and when it arrives."}],"requires":["commerce.vendors"],"section":{"id":"purchasing","label":"Purchasing","icon":"truck","description":"Vendors and purchase orders: everything you buy."},"options":{"@happyvertical/smrt-commerce:PurchaseOrder":{"fields":{"contractType":{"default":"purchase_order","visibility":"hidden","locked":true},"vendorId":{"label":"Vendor","order":1},"channelId":{"visibility":"hidden"},"expiryDate":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nPurchases is where you order from your vendors and keep track of what you have\\nbought. Every purchase order belongs to one of your vendors and records the\\namounts, the dates and where the order stands.\\n\\n## Tasks\\n\\n### Place a purchase order\\n\\n1. Choose the **New** button above the list.\\n2. Enter the **{field:vendorId}** you are buying from. Add them under Vendors\\n first so they are on your list.\\n3. Enter the **{field:subtotal}** and **{field:taxAmount}**, then the\\n **{field:totalAmount}** you expect to pay.\\n4. Set the **{field:issueDate}**, and the **{field:dueDate}** for when the\\n goods or the payment are due.\\n5. Add your own **{field:reference}**, such as the vendor's quote number, so\\n you can match it to their paperwork.\\n6. Enter **{field:expectedDate}** as YYYY-MM-DD if you know when the delivery\\n should arrive. Leave it blank until a date is agreed.\\n7. Use **{field:shipTo}** for the delivery address and instructions, such as\\n which entrance or loading dock to use.\\n8. Save.\\n\\n### Follow an order until it arrives\\n\\n1. Open the purchase order from the list and choose Edit.\\n2. Update **{field:status}** as the order moves along, for example from draft to\\n sent, accepted and completed.\\n3. Use **{field:notes}** to record what the vendor told you, such as delays or\\n partial shipments.\\n\\n### Record the agreement\\n\\n1. Open the purchase order and choose Edit.\\n2. Write down the **{field:terms}** you agreed with the vendor, such as payment\\n or delivery conditions.\\n3. Set **{field:expiryDate}** if the vendor's offer is only good until a certain\\n day.\\n","fieldRefs":["dueDate","expectedDate","expiryDate","issueDate","notes","reference","shipTo","status","subtotal","taxAmount","terms","totalAmount","vendorId"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.sales","className":"SalesRecipe","label":"Sales","summary":"Take customer orders and track them.","synonyms":["sales orders","orders","customer orders"],"models":["@happyvertical/smrt-commerce:Order","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Sales orders","model":"@happyvertical/smrt-commerce:Order","icon":"shoppingBag","description":"Orders from your customers, from placed to delivered."}],"requires":["commerce.customers"],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:Order":{"fields":{"contractType":{"default":"order","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1},"channelId":{"visibility":"hidden"},"expiryDate":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nSales is where you take orders from your customers and see where each one\\nstands. Every order belongs to one of your customers, carries its amounts and\\ndates, and keeps a status so you always know what is still open.\\n\\n## Tasks\\n\\n### Take an order\\n\\n1. Choose the **New** button above the list.\\n2. Enter the **{field:customerId}** the order is for. Add them under Customers\\n first so they are on your list.\\n3. Enter the **{field:subtotal}** and **{field:taxAmount}**, then the\\n **{field:totalAmount}** the customer will pay.\\n4. Set the **{field:issueDate}**, and the **{field:dueDate}** if you expect\\n payment by a certain day.\\n5. Add your own **{field:reference}**, such as a purchase order number the\\n customer gave you, so you can find the order later.\\n6. Save.\\n\\n### Follow an order through to the end\\n\\n1. Open the order from the list and choose Edit.\\n2. Update **{field:status}** as the order moves along, for example from draft to\\n sent, accepted and completed.\\n3. Check the **{field:dueDate}** against today to spot orders that are overdue.\\n4. Use **{field:notes}** to record calls, changes and anything promised.\\n\\n### Make a quote with an expiry\\n\\n1. Create the order as usual and set its **{field:status}** to show it is still\\n a draft.\\n2. Set **{field:expiryDate}** to the last day the price is good for.\\n3. Put your conditions, such as deposits or delivery, in **{field:terms}**.\\n","fieldRefs":["customerId","dueDate","expiryDate","issueDate","notes","reference","status","subtotal","taxAmount","terms","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.vendors","className":"VendorsRecipe","label":"Vendors","summary":"Keep a list of the suppliers you buy from.","synonyms":["suppliers","sellers"],"models":["@happyvertical/smrt-commerce:Vendor"],"nav":[{"label":"Vendors","model":"@happyvertical/smrt-commerce:Vendor","icon":"briefcase","description":"The suppliers you buy from, with terms and contacts."}],"requires":[],"section":{"id":"purchasing","label":"Purchasing","icon":"truck","description":"Vendors and purchase orders: everything you buy."},"options":{"@happyvertical/smrt-commerce:Vendor":{"fields":{"profileId":{"label":"Name","order":-1}}}},"help":{"markdown":"## Overview\\n\\nVendors is your list of the suppliers you buy from. Each record holds who they\\nare, how to reach them and the terms you have agreed, so you can order from them\\nquickly and keep track of what you have bought.\\n\\n## Tasks\\n\\n### Add a vendor\\n\\n1. Choose the **New** button above the list.\\n2. Enter **{field:defaultContactEmail}** and **{field:defaultContactPhone}** for\\n the person you normally deal with.\\n3. Set the **{field:currency}** they bill you in and your **{field:paymentTerms}**,\\n for example \\"Net 30\\".\\n4. Save. The vendor is now on your list and ready to use on a purchase order.\\n\\n### Note how a vendor likes to work\\n\\n1. Open the vendor from the list and choose Edit.\\n2. Enter **{field:leadTimeDays}**, the number of days they usually need between\\n your order and delivery, so you can plan ahead.\\n3. Enter **{field:minimumOrderAmount}** if they will not accept small orders.\\n4. Use **{field:notes}** for anything else worth remembering, such as the best\\n time to call.\\n\\n### Keep payment details in one place\\n\\n1. Open the vendor and choose Edit.\\n2. Record where payments to this vendor should be sent, so it is all in one\\n place.\\n3. Set **{field:status}** to show whether you still buy from them: active,\\n inactive or suspended.\\n","fieldRefs":["currency","defaultContactEmail","defaultContactPhone","leadTimeDays","minimumOrderAmount","notes","paymentTerms","status"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}},{"id":"commerce.wholesale","className":"WholesaleRecipe","label":"Wholesale orders","summary":"Take bulk orders from trade customers.","synonyms":["bulk orders","trade orders","b2b"],"models":["@happyvertical/smrt-commerce:WholesaleOrder","@happyvertical/smrt-commerce:ContractLineItem"],"nav":[{"label":"Wholesale orders","model":"@happyvertical/smrt-commerce:WholesaleOrder","icon":"shoppingBag","description":"Bulk orders from cafes, shops and other businesses."}],"requires":["commerce.customers"],"section":{"id":"sales","label":"Sales","icon":"shoppingBag","description":"Customers, orders and quotes: everything you sell."},"options":{"@happyvertical/smrt-commerce:WholesaleOrder":{"fields":{"contractType":{"default":"wholesale_order","visibility":"hidden","locked":true},"customerId":{"label":"Customer","order":1},"channelId":{"visibility":"hidden"},"expiryDate":{"visibility":"hidden"}}},"@happyvertical/smrt-commerce:ContractLineItem":{"fields":{"sku":{"visibility":"hidden"},"startDate":{"visibility":"hidden"},"endDate":{"visibility":"hidden"},"billingPeriod":{"visibility":"hidden"},"sortOrder":{"visibility":"hidden"},"discount":{"visibility":"hidden"},"taxRate":{"help":"Type a percentage: 5 means 5%."}}}},"help":{"markdown":"## Overview\\n\\nWholesale orders are bulk orders from trade customers. They work like sales\\norders, with a list of line items, but are kept in their own list so trade and\\nretail sales stay apart.\\n\\n## Tasks\\n\\n### Take a wholesale order\\n\\n1. Create a new wholesale order.\\n2. Pick the **{field:customerId}** placing the order.\\n3. Add the line items and check the **{field:totalAmount}**.\\n4. Set the **{field:dueDate}** for payment and save.\\n\\n### Track it\\n\\n1. Update **{field:status}** as the order moves from draft to completed.\\n2. Use **{field:reference}** for the buyer's own order number.\\n","fieldRefs":["customerId","dueDate","reference","status","totalAmount"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627)."]}}],"uiSelectors":{"customer-select":{"slotId":"customer-select","selects":"@happyvertical/smrt-commerce:Customer","label":"Customer Select","description":"Searchable customer picker for relation fields; the caller supplies the lookup"},"vendor-select":{"slotId":"vendor-select","selects":"@happyvertical/smrt-commerce:Vendor","label":"Vendor Select","description":"Searchable vendor picker for relation fields; the caller supplies the lookup"}},"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-jobs","@happyvertical/smrt-ledgers","@happyvertical/smrt-subscriptions","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3615","#3624","#3626","#3627"],"reason":"@happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs","via":["@happyvertical/smrt-jobs","@happyvertical/smrt-ledgers","@happyvertical/smrt-subscriptions","@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
16
16
  //#endregion
17
17
  //#region src/billing/provider.ts
18
18
  function providerCapabilities(provider) {
@@ -1361,7 +1361,7 @@ var Payment = class extends SmrtObject {
1361
1361
  };
1362
1362
  __publicField$11(Payment, "__smrtPackage__", "@happyvertical/smrt-commerce");
1363
1363
  __decorateClass$11([tenantId({ nullable: true })], Payment.prototype, "tenantId", 2);
1364
- __decorateClass$11([field({ description: "The order or agreement this payment is for, if any." }), foreignKey("Contract")], Payment.prototype, "contractId", 2);
1364
+ __decorateClass$11([field({ description: "The order or agreement this payment is for, if any." }), foreignKey("SalesContract", { validateSubtype: true })], Payment.prototype, "contractId", 2);
1365
1365
  __decorateClass$11([field({ description: "The customer who paid." }), foreignKey("Customer")], Payment.prototype, "customerId", 2);
1366
1366
  __decorateClass$11([field({
1367
1367
  description: "How much was paid.",
@@ -3466,7 +3466,7 @@ var Invoice = class extends SmrtObject {
3466
3466
  __publicField$9(Invoice, "__smrtPackage__", "@happyvertical/smrt-commerce");
3467
3467
  __decorateClass$9([tenantId({ nullable: true })], Invoice.prototype, "tenantId", 2);
3468
3468
  __decorateClass$9([field({ description: "The customer being billed." }), foreignKey("Customer")], Invoice.prototype, "customerId", 2);
3469
- __decorateClass$9([field({ description: "The order or agreement this invoice bills for, if any." }), foreignKey("Contract")], Invoice.prototype, "contractId", 2);
3469
+ __decorateClass$9([field({ description: "The order or agreement this invoice bills for, if any." }), foreignKey("SalesContract", { validateSubtype: true })], Invoice.prototype, "contractId", 2);
3470
3470
  __decorateClass$9([field({ description: "The number printed on the invoice." })], Invoice.prototype, "invoiceNumber", 2);
3471
3471
  __decorateClass$9([field({ description: "The date the invoice was issued." })], Invoice.prototype, "issueDate", 2);
3472
3472
  __decorateClass$9([field({ description: "The date payment is expected." })], Invoice.prototype, "dueDate", 2);
@@ -6978,8 +6978,6 @@ var Contract = class extends SmrtObject {
6978
6978
  tenantId = null;
6979
6979
  contractType = ContractType.ORDER;
6980
6980
  status = ContractStatus.DRAFT;
6981
- customerId = null;
6982
- vendorId = null;
6983
6981
  subtotal = 0;
6984
6982
  taxAmount = 0;
6985
6983
  totalAmount = 0;
@@ -6996,8 +6994,6 @@ var Contract = class extends SmrtObject {
6996
6994
  if (options.tenantId !== void 0) this.tenantId = options.tenantId;
6997
6995
  if (options.contractType !== void 0) this.contractType = options.contractType;
6998
6996
  if (options.status !== void 0) this.status = options.status;
6999
- if (options.customerId !== void 0) this.customerId = options.customerId;
7000
- if (options.vendorId !== void 0) this.vendorId = options.vendorId;
7001
6997
  if (options.subtotal !== void 0) this.subtotal = options.subtotal;
7002
6998
  if (options.taxAmount !== void 0) this.taxAmount = options.taxAmount;
7003
6999
  if (options.totalAmount !== void 0) this.totalAmount = options.totalAmount;
@@ -7124,8 +7120,6 @@ __publicField$5(Contract, "_stiField", "contractType");
7124
7120
  __decorateClass$5([tenantId({ nullable: true })], Contract.prototype, "tenantId", 2);
7125
7121
  __decorateClass$5([field({ description: "The kind of contract: order, estimate, lease, agreement and so on." })], Contract.prototype, "contractType", 2);
7126
7122
  __decorateClass$5([field({ description: "Where the order or agreement stands, for example draft, sent, accepted or completed." })], Contract.prototype, "status", 2);
7127
- __decorateClass$5([foreignKey(Customer, { description: "The customer a sales order or agreement is for." })], Contract.prototype, "customerId", 2);
7128
- __decorateClass$5([foreignKey(Vendor, { description: "The vendor a purchase order is placed with." })], Contract.prototype, "vendorId", 2);
7129
7123
  __decorateClass$5([field({
7130
7124
  description: "The amount before tax.",
7131
7125
  ui: { format: "money" }
@@ -7166,47 +7160,100 @@ Contract = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt({
7166
7160
  mcp: { include: ["list", "get"] },
7167
7161
  cli: { skipApiCheck: true }
7168
7162
  })], Contract);
7169
- var Estimate = class extends Contract {
7163
+ var SalesContract = class extends Contract {
7164
+ customerId = null;
7165
+ constructor(options = {}) {
7166
+ super(options);
7167
+ if (options.customerId !== void 0) this.customerId = options.customerId;
7168
+ }
7169
+ };
7170
+ __publicField$5(SalesContract, "__smrtPackage__", "@happyvertical/smrt-commerce");
7171
+ __decorateClass$5([foreignKey(Customer, { description: "The customer a sales order or agreement is for." })], SalesContract.prototype, "customerId", 2);
7172
+ SalesContract = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt({ abstract: true })], SalesContract);
7173
+ var PurchaseContract = class extends Contract {
7174
+ vendorId = null;
7175
+ constructor(options = {}) {
7176
+ super(options);
7177
+ if (options.vendorId !== void 0) this.vendorId = options.vendorId;
7178
+ }
7179
+ };
7180
+ __publicField$5(PurchaseContract, "__smrtPackage__", "@happyvertical/smrt-commerce");
7181
+ __decorateClass$5([foreignKey(Vendor, { description: "The vendor a purchase order is placed with." })], PurchaseContract.prototype, "vendorId", 2);
7182
+ PurchaseContract = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt({ abstract: true })], PurchaseContract);
7183
+ var Estimate = class extends SalesContract {
7184
+ customerId = null;
7170
7185
  contractType = ContractType.ESTIMATE;
7186
+ constructor(options = {}) {
7187
+ super(options);
7188
+ if (options.customerId !== void 0) this.customerId = options.customerId;
7189
+ }
7171
7190
  };
7172
7191
  __publicField$5(Estimate, "__smrtPackage__", "@happyvertical/smrt-commerce");
7192
+ __decorateClass$5([foreignKey(Customer, { required: true })], Estimate.prototype, "customerId", 2);
7173
7193
  Estimate = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], Estimate);
7174
- var Order = class extends Contract {
7194
+ var Order = class extends SalesContract {
7195
+ customerId = null;
7175
7196
  contractType = ContractType.ORDER;
7197
+ constructor(options = {}) {
7198
+ super(options);
7199
+ if (options.customerId !== void 0) this.customerId = options.customerId;
7200
+ }
7176
7201
  };
7177
7202
  __publicField$5(Order, "__smrtPackage__", "@happyvertical/smrt-commerce");
7203
+ __decorateClass$5([foreignKey(Customer, { required: true })], Order.prototype, "customerId", 2);
7178
7204
  Order = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], Order);
7179
- var Lease = class extends Contract {
7205
+ var Lease = class extends SalesContract {
7206
+ customerId = null;
7180
7207
  contractType = ContractType.LEASE;
7208
+ constructor(options = {}) {
7209
+ super(options);
7210
+ if (options.customerId !== void 0) this.customerId = options.customerId;
7211
+ }
7181
7212
  };
7182
7213
  __publicField$5(Lease, "__smrtPackage__", "@happyvertical/smrt-commerce");
7214
+ __decorateClass$5([foreignKey(Customer, { required: true })], Lease.prototype, "customerId", 2);
7183
7215
  Lease = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], Lease);
7184
- var Agreement = class extends Contract {
7216
+ var Agreement = class extends SalesContract {
7217
+ customerId = null;
7185
7218
  contractType = ContractType.AGREEMENT;
7219
+ constructor(options = {}) {
7220
+ super(options);
7221
+ if (options.customerId !== void 0) this.customerId = options.customerId;
7222
+ }
7186
7223
  };
7187
7224
  __publicField$5(Agreement, "__smrtPackage__", "@happyvertical/smrt-commerce");
7225
+ __decorateClass$5([foreignKey(Customer, { required: true })], Agreement.prototype, "customerId", 2);
7188
7226
  Agreement = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], Agreement);
7189
- var PurchaseOrder = class extends Contract {
7227
+ var PurchaseOrder = class extends PurchaseContract {
7228
+ vendorId = null;
7190
7229
  contractType = ContractType.PURCHASE_ORDER;
7191
7230
  expectedDate = "";
7192
7231
  shipTo = "";
7193
7232
  /** Construct a purchase order with its optional delivery header. */
7194
7233
  constructor(options = {}) {
7195
7234
  super(options);
7235
+ if (options.vendorId !== void 0) this.vendorId = options.vendorId;
7196
7236
  if (options.expectedDate !== void 0) this.expectedDate = options.expectedDate;
7197
7237
  if (options.shipTo !== void 0) this.shipTo = options.shipTo;
7198
7238
  }
7199
7239
  };
7200
7240
  __publicField$5(PurchaseOrder, "__smrtPackage__", "@happyvertical/smrt-commerce");
7241
+ __decorateClass$5([foreignKey(Vendor, { required: true })], PurchaseOrder.prototype, "vendorId", 2);
7201
7242
  __decorateClass$5([field({ description: "The date you expect the delivery, as YYYY-MM-DD. Leave blank if it is not known." })], PurchaseOrder.prototype, "expectedDate", 2);
7202
7243
  __decorateClass$5([field({ description: "Where this order should be delivered, including any delivery instructions." })], PurchaseOrder.prototype, "shipTo", 2);
7203
7244
  PurchaseOrder = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], PurchaseOrder);
7204
- var WholesaleOrder = class extends Contract {
7245
+ var WholesaleOrder = class extends SalesContract {
7246
+ customerId = null;
7205
7247
  contractType = ContractType.WHOLESALE_ORDER;
7248
+ constructor(options = {}) {
7249
+ super(options);
7250
+ if (options.customerId !== void 0) this.customerId = options.customerId;
7251
+ }
7206
7252
  };
7207
7253
  __publicField$5(WholesaleOrder, "__smrtPackage__", "@happyvertical/smrt-commerce");
7254
+ __decorateClass$5([foreignKey(Customer, { required: true })], WholesaleOrder.prototype, "customerId", 2);
7208
7255
  WholesaleOrder = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], WholesaleOrder);
7209
- var ProductionOrder = class extends Contract {
7256
+ var ProductionOrder = class extends PurchaseContract {
7210
7257
  contractType = ContractType.PRODUCTION_ORDER;
7211
7258
  /**
7212
7259
  * Plain string reference to the upstream product the order is asked
@@ -7224,13 +7271,13 @@ var ProductionOrder = class extends Contract {
7224
7271
  };
7225
7272
  __publicField$5(ProductionOrder, "__smrtPackage__", "@happyvertical/smrt-commerce");
7226
7273
  ProductionOrder = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], ProductionOrder);
7227
- var Cart = class extends Contract {
7274
+ var Cart = class extends SalesContract {
7228
7275
  contractType = ContractType.CART;
7229
7276
  };
7230
7277
  __publicField$5(Cart, "__smrtPackage__", "@happyvertical/smrt-commerce");
7231
7278
  Cart = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], Cart);
7232
7279
  var issuedRightsSnapshot = /* @__PURE__ */ new WeakMap();
7233
- var LicenseSale = class extends Contract {
7280
+ var LicenseSale = class extends SalesContract {
7234
7281
  contractType = ContractType.LICENSE_SALE;
7235
7282
  /**
7236
7283
  * Plain string reference to the upstream `Sku` (from
@@ -7393,6 +7440,28 @@ var LicenseSale = class extends Contract {
7393
7440
  __publicField$5(LicenseSale, "__smrtPackage__", "@happyvertical/smrt-commerce");
7394
7441
  LicenseSale = __decorateClass$5([TenantScoped({ mode: "optional" }), smrt()], LicenseSale);
7395
7442
  //#endregion
7443
+ //#region src/collections/PurchaseContractCollection.ts
7444
+ var PurchaseContractCollection = class extends SmrtCollection {
7445
+ static _itemClass = PurchaseContract;
7446
+ async findByVendor(vendorId) {
7447
+ return this.list({
7448
+ where: { vendorId },
7449
+ orderBy: "created_at DESC"
7450
+ });
7451
+ }
7452
+ };
7453
+ //#endregion
7454
+ //#region src/collections/SalesContractCollection.ts
7455
+ var SalesContractCollection = class extends SmrtCollection {
7456
+ static _itemClass = SalesContract;
7457
+ async findByCustomer(customerId) {
7458
+ return this.list({
7459
+ where: { customerId },
7460
+ orderBy: "created_at DESC"
7461
+ });
7462
+ }
7463
+ };
7464
+ //#endregion
7396
7465
  //#region src/collections/ContractCollection.ts
7397
7466
  var ContractCollection = class extends SmrtCollection {
7398
7467
  static _itemClass = Contract;
@@ -7401,24 +7470,26 @@ var ContractCollection = class extends SmrtCollection {
7401
7470
  *
7402
7471
  * @param customerId - Customer ID
7403
7472
  * @returns Array of contracts
7473
+ * @deprecated Use SalesContractCollection.findByCustomer.
7404
7474
  */
7405
7475
  async findByCustomer(customerId) {
7406
- return await this.list({
7407
- where: { customerId },
7408
- orderBy: "created_at DESC"
7409
- });
7476
+ return (await SalesContractCollection.create({
7477
+ ...this.options,
7478
+ db: this.db
7479
+ })).findByCustomer(customerId);
7410
7480
  }
7411
7481
  /**
7412
7482
  * Find contracts by vendor
7413
7483
  *
7414
7484
  * @param vendorId - Vendor ID
7415
7485
  * @returns Array of contracts
7486
+ * @deprecated Use PurchaseContractCollection.findByVendor.
7416
7487
  */
7417
7488
  async findByVendor(vendorId) {
7418
- return await this.list({
7419
- where: { vendorId },
7420
- orderBy: "created_at DESC"
7421
- });
7489
+ return (await PurchaseContractCollection.create({
7490
+ ...this.options,
7491
+ db: this.db
7492
+ })).findByVendor(vendorId);
7422
7493
  }
7423
7494
  /**
7424
7495
  * Find contracts by type (STI)
@@ -7884,7 +7955,7 @@ var Fulfillment = class extends SmrtObject {
7884
7955
  };
7885
7956
  __publicField$3(Fulfillment, "__smrtPackage__", "@happyvertical/smrt-commerce");
7886
7957
  __decorateClass$3([tenantId({ nullable: true })], Fulfillment.prototype, "tenantId", 2);
7887
- __decorateClass$3([field({ description: "The order being fulfilled." }), foreignKey("Contract")], Fulfillment.prototype, "contractId", 2);
7958
+ __decorateClass$3([field({ description: "The order being fulfilled." }), foreignKey("SalesContract", { validateSubtype: true })], Fulfillment.prototype, "contractId", 2);
7888
7959
  __decorateClass$3([field({ description: "How it gets to the customer: shipment, delivery, pickup, digital or service." })], Fulfillment.prototype, "fulfillmentType", 2);
7889
7960
  __decorateClass$3([field({ description: "Where it stands: pending, processing, shipped, delivered or cancelled." })], Fulfillment.prototype, "status", 2);
7890
7961
  __decorateClass$3([field({ description: "The carrier's tracking number." })], Fulfillment.prototype, "trackingNumber", 2);
@@ -9591,6 +9662,130 @@ function migrateCommerceMoneyToMinorUnits(db, options = {}) {
9591
9662
  });
9592
9663
  }
9593
9664
  //#endregion
9665
+ //#region src/migrations/partyLinks.ts
9666
+ var COLUMNS = "id, tenant_id, _meta_type, contract_type, customer_id, vendor_id";
9667
+ var salesTypes = [
9668
+ "estimate",
9669
+ "order",
9670
+ "wholesale_order",
9671
+ "cart",
9672
+ "lease",
9673
+ "agreement",
9674
+ "license_sale"
9675
+ ];
9676
+ var purchaseTypes = ["purchase_order", "production_order"];
9677
+ var leafTypes = {
9678
+ Estimate: "estimate",
9679
+ Order: "order",
9680
+ WholesaleOrder: "wholesale_order",
9681
+ Cart: "cart",
9682
+ Lease: "lease",
9683
+ Agreement: "agreement",
9684
+ LicenseSale: "license_sale",
9685
+ PurchaseOrder: "purchase_order",
9686
+ ProductionOrder: "production_order"
9687
+ };
9688
+ function inSql(values) {
9689
+ return values.map((value) => `'${value}'`).join(", ");
9690
+ }
9691
+ function leafMatches(names, column = "_meta_type") {
9692
+ return names.map((name) => `(${column} = '${name}' OR ${column} LIKE '%:${name}')`).join(" OR ");
9693
+ }
9694
+ async function preflightCommercePartyLinks(db) {
9695
+ const rows = async (where) => {
9696
+ return (await db.query(`SELECT ${COLUMNS} FROM contracts WHERE ${where}`)).rows;
9697
+ };
9698
+ const missing = (column) => `(${column} IS NULL OR CAST(${column} AS TEXT) = '')`;
9699
+ const present = (column) => `(${column} IS NOT NULL AND CAST(${column} AS TEXT) <> '')`;
9700
+ const fallbackType = `(_meta_type IS NULL OR NOT (${leafMatches(Object.keys(leafTypes))}))`;
9701
+ const salesSide = `(contract_type IN (${inSql(salesTypes)}) OR ${leafMatches([
9702
+ "Estimate",
9703
+ "Order",
9704
+ "WholesaleOrder",
9705
+ "Cart",
9706
+ "Lease",
9707
+ "Agreement",
9708
+ "LicenseSale"
9709
+ ])})`;
9710
+ const purchaseSide = `(contract_type IN (${inSql(purchaseTypes)}) OR ${leafMatches(["PurchaseOrder", "ProductionOrder"])})`;
9711
+ const [purchaseRowsWithCustomer, salesRowsWithVendor, missingRequiredCustomer, missingRequiredVendor, baseTypedRows, unqualifiedDiscriminatorRows, grouped] = await Promise.all([
9712
+ rows(`${purchaseSide} AND ${present("customer_id")}`),
9713
+ rows(`${salesSide} AND ${present("vendor_id")}`),
9714
+ rows(`(${leafMatches([
9715
+ "Estimate",
9716
+ "Order",
9717
+ "WholesaleOrder",
9718
+ "Lease",
9719
+ "Agreement"
9720
+ ])} OR (${fallbackType} AND contract_type IN (${inSql([
9721
+ "estimate",
9722
+ "order",
9723
+ "wholesale_order",
9724
+ "lease",
9725
+ "agreement"
9726
+ ])}))) AND ${missing("customer_id")}`),
9727
+ rows(`(${leafMatches(["PurchaseOrder"])} OR (${fallbackType} AND contract_type = 'purchase_order')) AND ${missing("vendor_id")}`),
9728
+ rows("_meta_type = 'Contract' OR _meta_type LIKE '%:Contract'"),
9729
+ rows("_meta_type IS NOT NULL AND _meta_type NOT LIKE '%:%'"),
9730
+ db.query("SELECT _meta_type, contract_type, COUNT(*) AS n FROM contracts GROUP BY _meta_type, contract_type ORDER BY n DESC")
9731
+ ]);
9732
+ const discriminatorGroups = grouped.rows.map((row) => ({
9733
+ _meta_type: row._meta_type,
9734
+ contract_type: row.contract_type,
9735
+ count: Number(row.n)
9736
+ }));
9737
+ const discriminatorMismatches = discriminatorGroups.filter((group) => {
9738
+ const leaf = group._meta_type?.split(":").at(-1);
9739
+ return leaf && leafTypes[leaf] && leafTypes[leaf] !== group.contract_type;
9740
+ });
9741
+ const invalidReferences = async (table, column, allowed, branch) => {
9742
+ if (!await db.tableExists(table)) return [];
9743
+ const descendants = ObjectRegistry.getDescendants(`@happyvertical/smrt-commerce:${branch}`).filter((name) => ObjectRegistry.getTableStrategy(name) === "sti");
9744
+ const registeredMatch = descendants.length ? ` OR contract._meta_type IN (${descendants.map(() => "?").join(", ")})` : "";
9745
+ return (await db.query(`SELECT '${table}' AS source_table, source.id AS source_id,
9746
+ source.tenant_id AS source_tenant_id,
9747
+ CAST(source.${column} AS TEXT) AS contract_id,
9748
+ contract._meta_type AS contract_meta_type,
9749
+ contract.tenant_id AS contract_tenant_id
9750
+ FROM ${table} source
9751
+ LEFT JOIN contracts contract
9752
+ ON CAST(source.${column} AS TEXT) = CAST(contract.id AS TEXT)
9753
+ WHERE source.${column} IS NOT NULL
9754
+ AND CAST(source.${column} AS TEXT) <> ''
9755
+ AND (contract.id IS NULL OR contract._meta_type IS NULL
9756
+ OR NOT (${leafMatches(allowed, "contract._meta_type")}${registeredMatch})
9757
+ OR (source.tenant_id IS NOT NULL
9758
+ AND CAST(source.tenant_id AS TEXT) <> ''
9759
+ AND (contract.tenant_id IS NULL
9760
+ OR CAST(source.tenant_id AS TEXT) <> CAST(contract.tenant_id AS TEXT))))`, ...descendants)).rows;
9761
+ };
9762
+ return {
9763
+ purchaseRowsWithCustomer,
9764
+ salesRowsWithVendor,
9765
+ missingRequiredCustomer,
9766
+ missingRequiredVendor,
9767
+ baseTypedRows,
9768
+ unqualifiedDiscriminatorRows,
9769
+ discriminatorGroups,
9770
+ discriminatorMismatches,
9771
+ invalidSalesReferences: (await Promise.all([
9772
+ "invoices",
9773
+ "payments",
9774
+ "fulfillments",
9775
+ "ad_groups"
9776
+ ].map((table) => invalidReferences(table, "contract_id", [
9777
+ "Estimate",
9778
+ "Order",
9779
+ "WholesaleOrder",
9780
+ "Cart",
9781
+ "Lease",
9782
+ "Agreement",
9783
+ "LicenseSale"
9784
+ ], "SalesContract")))).flat(),
9785
+ invalidPurchaseReferences: await invalidReferences("expenses", "commitment_id", ["PurchaseOrder", "ProductionOrder"], "PurchaseContract")
9786
+ };
9787
+ }
9788
+ //#endregion
9594
9789
  //#region src/recipes.ts
9595
9790
  var CustomersRecipe = class extends SmrtRecipe {
9596
9791
  static id = "commerce.customers";
@@ -9651,10 +9846,6 @@ var PurchasesRecipe = class extends SmrtRecipe {
9651
9846
  visibility: "hidden",
9652
9847
  locked: true
9653
9848
  },
9654
- customerId: {
9655
- visibility: "hidden",
9656
- locked: true
9657
- },
9658
9849
  vendorId: {
9659
9850
  label: "Vendor",
9660
9851
  order: 1
@@ -9704,14 +9895,9 @@ var SalesRecipe = class extends SmrtRecipe {
9704
9895
  visibility: "hidden",
9705
9896
  locked: true
9706
9897
  },
9707
- vendorId: {
9708
- visibility: "hidden",
9709
- locked: true
9710
- },
9711
9898
  customerId: {
9712
9899
  label: "Customer",
9713
- order: 1,
9714
- required: true
9900
+ order: 1
9715
9901
  },
9716
9902
  channelId: { visibility: "hidden" },
9717
9903
  expiryDate: { visibility: "hidden" }
@@ -9783,14 +9969,9 @@ var EstimatesRecipe = class extends SmrtRecipe {
9783
9969
  visibility: "hidden",
9784
9970
  locked: true
9785
9971
  },
9786
- vendorId: {
9787
- visibility: "hidden",
9788
- locked: true
9789
- },
9790
9972
  customerId: {
9791
9973
  label: "Customer",
9792
- order: 1,
9793
- required: true
9974
+ order: 1
9794
9975
  },
9795
9976
  channelId: { visibility: "hidden" }
9796
9977
  } },
@@ -9836,10 +10017,6 @@ var WholesaleRecipe = class extends SmrtRecipe {
9836
10017
  visibility: "hidden",
9837
10018
  locked: true
9838
10019
  },
9839
- vendorId: {
9840
- visibility: "hidden",
9841
- locked: true
9842
- },
9843
10020
  customerId: {
9844
10021
  label: "Customer",
9845
10022
  order: 1
@@ -10028,10 +10205,8 @@ var AgreementsRecipe = class extends SmrtRecipe {
10028
10205
  },
10029
10206
  customerId: {
10030
10207
  label: "Customer",
10031
- order: 1,
10032
- required: true
10208
+ order: 1
10033
10209
  },
10034
- vendorId: { visibility: "hidden" },
10035
10210
  subtotal: { visibility: "hidden" },
10036
10211
  taxAmount: { visibility: "hidden" },
10037
10212
  channelId: { visibility: "hidden" }
@@ -10086,10 +10261,8 @@ var LeasesRecipe = class extends SmrtRecipe {
10086
10261
  },
10087
10262
  customerId: {
10088
10263
  label: "Customer",
10089
- order: 1,
10090
- required: true
10264
+ order: 1
10091
10265
  },
10092
- vendorId: { visibility: "hidden" },
10093
10266
  subtotal: { visibility: "hidden" },
10094
10267
  taxAmount: { visibility: "hidden" },
10095
10268
  channelId: { visibility: "hidden" }
@@ -10143,10 +10316,8 @@ var LicensesRecipe = class extends SmrtRecipe {
10143
10316
  },
10144
10317
  customerId: {
10145
10318
  label: "Customer",
10146
- order: 1,
10147
- required: true
10319
+ order: 1
10148
10320
  },
10149
- vendorId: { visibility: "hidden" },
10150
10321
  subtotal: { visibility: "hidden" },
10151
10322
  taxAmount: { visibility: "hidden" },
10152
10323
  channelId: { visibility: "hidden" }
@@ -10163,6 +10334,6 @@ var LicensesRecipe = class extends SmrtRecipe {
10163
10334
  };
10164
10335
  };
10165
10336
  //#endregion
10166
- export { Agreement, AgreementsRecipe, BillingAccount, BillingLineSource, BillingPaymentAttempt, BillingPaymentRefusedError, BillingPeriodClose, BillingPeriodCloseError, BillingProviderUnsupportedError, BillingRuntime, BillingWebhookVerificationError, COMMERCE_MODULE_META, COMMERCE_MONEY_COLUMNS, COMMERCE_MONEY_MINOR_UNITS_BACKFILL, COMMERCE_NATIVE_UNIT_COLUMNS, COMMERCE_UI_SLOTS, Cart, Contract, ContractCollection, ContractLineItem, ContractLineItemCollection, ContractStatus, ContractType, Customer, CustomerCollection, CustomerStatus, CustomerType, CustomersRecipe, DEFAULT_PARTY_CONTACT_FIELD_NAMES, Estimate, EstimatesRecipe, Fulfillment, FulfillmentCollection, FulfillmentLineItem, FulfillmentLineItemCollection, FulfillmentRecipe, FulfillmentStatus, FulfillmentType, INVOICE_PAYMENT_PURPOSE, Invoice, InvoiceCollection, InvoiceLineItem, InvoiceLineItemCollection, InvoiceStatus, InvoicingRecipe, Lease, LeasesRecipe, LicenseSale, LicensesRecipe, Order, PARTY_CONTACT_MAX_LENGTHS, PartyContactPartyNotFoundError, PartyContactPayloadError, PartyContactValidationError, Payment, PaymentAllocation, PaymentAllocationCollection, PaymentCollection, PaymentInstrument, PaymentInstrumentCollection, PaymentInstrumentStatus, PaymentIntent, PaymentIntentCollection, PaymentIntentStatus, PaymentMethod, PaymentStatus, Payout, PayoutCollection, PayoutStatus, ProductionOrder, PurchaseOrder, PurchasesRecipe, SalesRecipe, UNPAID_STATUSES, Vendor, VendorCollection, VendorStatus, VendorsRecipe, WholesaleOrder, WholesaleRecipe, addBillingMonths, applyPartyContactIntent, assertIntegerMinorUnits, billingPeriodContaining, createBtcPayBillingProvider, createCryptoBillingProvider, createStripeBillingProvider, currencyMinorUnitExponent, decideAttempt, enqueueBillingEvents, enqueueBillingPeriodClose, getBillingRuntime, lastEndedBillingPeriod, majorToMinorUnits, migrateCommerceMoneyToMinorUnits, migrateInvoiceEditorStorage, minorToMajorUnits, PaymentAllocationCollection_exports as n, normalizePartyContacts, preflightCommerceMoneyMinorUnits, preflightInvoiceEditorStorage, previousCalendarMonth, prorateMinorUnits, providerCapabilities, PaymentCollection_exports as r, readPartyContactRows, registerBillingRuntime, savePartyContacts, InvoiceCollection_exports as t, unregisterBillingRuntime, validatePartyContactRows };
10337
+ export { Agreement, AgreementsRecipe, BillingAccount, BillingLineSource, BillingPaymentAttempt, BillingPaymentRefusedError, BillingPeriodClose, BillingPeriodCloseError, BillingProviderUnsupportedError, BillingRuntime, BillingWebhookVerificationError, COMMERCE_MODULE_META, COMMERCE_MONEY_COLUMNS, COMMERCE_MONEY_MINOR_UNITS_BACKFILL, COMMERCE_NATIVE_UNIT_COLUMNS, COMMERCE_UI_SLOTS, Cart, Contract, ContractCollection, ContractLineItem, ContractLineItemCollection, ContractStatus, ContractType, Customer, CustomerCollection, CustomerStatus, CustomerType, CustomersRecipe, DEFAULT_PARTY_CONTACT_FIELD_NAMES, Estimate, EstimatesRecipe, Fulfillment, FulfillmentCollection, FulfillmentLineItem, FulfillmentLineItemCollection, FulfillmentRecipe, FulfillmentStatus, FulfillmentType, INVOICE_PAYMENT_PURPOSE, Invoice, InvoiceCollection, InvoiceLineItem, InvoiceLineItemCollection, InvoiceStatus, InvoicingRecipe, Lease, LeasesRecipe, LicenseSale, LicensesRecipe, Order, PARTY_CONTACT_MAX_LENGTHS, PartyContactPartyNotFoundError, PartyContactPayloadError, PartyContactValidationError, Payment, PaymentAllocation, PaymentAllocationCollection, PaymentCollection, PaymentInstrument, PaymentInstrumentCollection, PaymentInstrumentStatus, PaymentIntent, PaymentIntentCollection, PaymentIntentStatus, PaymentMethod, PaymentStatus, Payout, PayoutCollection, PayoutStatus, ProductionOrder, PurchaseContract, PurchaseContractCollection, PurchaseOrder, PurchasesRecipe, SalesContract, SalesContractCollection, SalesRecipe, UNPAID_STATUSES, Vendor, VendorCollection, VendorStatus, VendorsRecipe, WholesaleOrder, WholesaleRecipe, addBillingMonths, applyPartyContactIntent, assertIntegerMinorUnits, billingPeriodContaining, createBtcPayBillingProvider, createCryptoBillingProvider, createStripeBillingProvider, currencyMinorUnitExponent, decideAttempt, enqueueBillingEvents, enqueueBillingPeriodClose, getBillingRuntime, lastEndedBillingPeriod, majorToMinorUnits, migrateCommerceMoneyToMinorUnits, migrateInvoiceEditorStorage, minorToMajorUnits, PaymentAllocationCollection_exports as n, normalizePartyContacts, preflightCommerceMoneyMinorUnits, preflightCommercePartyLinks, preflightInvoiceEditorStorage, previousCalendarMonth, prorateMinorUnits, providerCapabilities, PaymentCollection_exports as r, readPartyContactRows, registerBillingRuntime, savePartyContacts, InvoiceCollection_exports as t, unregisterBillingRuntime, validatePartyContactRows };
10167
10338
 
10168
10339
  //# sourceMappingURL=index.js.map