manicanldes-backend/prisma/pricing.prisma

42 lines
1.8 KiB
Plaintext

enum TaxMode {
INCLUSIVE
EXCLUSIVE
}
model PricingPolicy {
id String @id @default(uuid()) @db.Uuid
organizationId String @map("organization_id") @db.Uuid
name String @db.VarChar(100)
currency String @db.Char(3)
countryCode String @map("country_code") @db.Char(2)
region String @default("") @db.VarChar(100)
taxMode TaxMode @map("tax_mode")
merchandiseTaxBps Int @map("merchandise_tax_bps")
shippingFee Decimal @map("shipping_fee") @db.Decimal(12,2)
shippingTaxBps Int @map("shipping_tax_bps")
freeShippingMinimum Decimal? @map("free_shipping_minimum") @db.Decimal(12,2)
active Boolean @default(false)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Restrict)
prices OrderPricing[]
@@unique([id, organizationId])
@@index([organizationId, currency, countryCode, region, active])
@@map("pricing_policies")
}
model OrderPricing {
orderId String @id @map("order_id") @db.Uuid
organizationId String @map("organization_id") @db.Uuid
policyId String @map("policy_id") @db.Uuid
policySnapshot Json @map("policy_snapshot")
merchandiseTax Decimal @map("merchandise_tax") @db.Decimal(16,2)
shippingNet Decimal @map("shipping_net") @db.Decimal(16,2)
shippingTax Decimal @map("shipping_tax") @db.Decimal(16,2)
taxTotal Decimal @map("tax_total") @db.Decimal(16,2)
payableTotal Decimal @map("payable_total") @db.Decimal(16,2)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
order Order @relation(fields: [orderId, organizationId], references: [id, organizationId], onDelete: Restrict)
policy PricingPolicy @relation(fields: [policyId, organizationId], references: [id, organizationId], onDelete: Restrict)
@@unique([orderId, organizationId])
@@map("order_pricing")
}