Add consignment_detail table for consignment inventory
Separate table linked to product — keeps product table clean when most items are not consignment. Tracks consignor (account), commission percentage, min price, and agreement date. 33 tests passing.
This commit is contained in:
15
packages/backend/src/db/migrations/0006_add_consignment.sql
Normal file
15
packages/backend/src/db/migrations/0006_add_consignment.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
CREATE TABLE "consignment_detail" (
|
||||
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||
"product_id" uuid NOT NULL,
|
||||
"company_id" uuid NOT NULL,
|
||||
"consignor_account_id" uuid NOT NULL,
|
||||
"commission_percent" numeric(5, 2) NOT NULL,
|
||||
"min_price" numeric(10, 2),
|
||||
"agreement_date" date,
|
||||
"notes" text,
|
||||
"is_active" boolean DEFAULT true NOT NULL,
|
||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
--> statement-breakpoint
|
||||
ALTER TABLE "consignment_detail" ADD CONSTRAINT "consignment_detail_product_id_product_id_fk" FOREIGN KEY ("product_id") REFERENCES "public"."product"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||||
ALTER TABLE "consignment_detail" ADD CONSTRAINT "consignment_detail_company_id_company_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."company"("id") ON DELETE no action ON UPDATE no action;
|
||||
1619
packages/backend/src/db/migrations/meta/0006_snapshot.json
Normal file
1619
packages/backend/src/db/migrations/meta/0006_snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -43,6 +43,13 @@
|
||||
"when": 1774653515690,
|
||||
"tag": "0005_add_products_units_receipts",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"version": "7",
|
||||
"when": 1774653924179,
|
||||
"tag": "0006_add_consignment",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -166,6 +166,26 @@ export type PriceHistory = typeof priceHistory.$inferSelect
|
||||
export type StockReceipt = typeof stockReceipts.$inferSelect
|
||||
export type StockReceiptInsert = typeof stockReceipts.$inferInsert
|
||||
|
||||
export const consignmentDetails = pgTable('consignment_detail', {
|
||||
id: uuid('id').primaryKey().defaultRandom(),
|
||||
productId: uuid('product_id')
|
||||
.notNull()
|
||||
.references(() => products.id),
|
||||
companyId: uuid('company_id')
|
||||
.notNull()
|
||||
.references(() => companies.id),
|
||||
consignorAccountId: uuid('consignor_account_id').notNull(),
|
||||
commissionPercent: numeric('commission_percent', { precision: 5, scale: 2 }).notNull(),
|
||||
minPrice: numeric('min_price', { precision: 10, scale: 2 }),
|
||||
agreementDate: date('agreement_date'),
|
||||
notes: text('notes'),
|
||||
isActive: boolean('is_active').notNull().default(true),
|
||||
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
|
||||
})
|
||||
|
||||
export type ConsignmentDetail = typeof consignmentDetails.$inferSelect
|
||||
export type ConsignmentDetailInsert = typeof consignmentDetails.$inferInsert
|
||||
|
||||
export type Product = typeof products.$inferSelect
|
||||
export type ProductInsert = typeof products.$inferInsert
|
||||
export type InventoryUnit = typeof inventoryUnits.$inferSelect
|
||||
|
||||
Reference in New Issue
Block a user