erp_be/prisma/schema.prisma
2026-06-20 14:00:46 +05:30

1010 lines
71 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model asset_attachments {
id BigInt @id @default(autoincrement())
asset_id BigInt
attachment_type String @default("DOCUMENT") @db.VarChar(50)
file_name String @db.VarChar(255)
file_path String @db.VarChar(500)
file_type String? @db.VarChar(100)
file_size Int?
uploaded_by BigInt?
amc_contract_id BigInt?
service_visit_id BigInt?
insurance_id BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
asset_amc_contracts asset_amc_contracts? @relation(fields: [amc_contract_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
asset_insurance_policies asset_insurance_policies? @relation(fields: [insurance_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
asset_service_visits asset_service_visits? @relation(fields: [service_visit_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
assets assets @relation(fields: [asset_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
users users? @relation(fields: [uploaded_by], references: [id], onUpdate: NoAction)
}
model asset_amc_contracts {
id BigInt @id @default(autoincrement())
asset_id BigInt
vendor_id BigInt
contract_no String? @db.VarChar(100)
contract_type String @default("COMPREHENSIVE") @db.VarChar(30)
start_date DateTime @db.Date
end_date DateTime @db.Date
renewal_date DateTime? @db.Date
annual_cost Decimal @default(0) @db.Decimal(12, 2)
payment_frequency String @default("ANNUAL") @db.VarChar(20)
service_frequency String? @db.VarChar(20)
visits_per_year Int?
contact_person String? @db.VarChar(150)
contact_phone String? @db.VarChar(15)
contact_email String? @db.VarChar(150)
scope_of_work String?
exclusions String?
remarks String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_attachments asset_attachments[]
assets assets @relation(fields: [asset_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
users_asset_amc_contracts_created_byTousers users? @relation("asset_amc_contracts_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_asset_amc_contracts_updated_byTousers users? @relation("asset_amc_contracts_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors @relation(fields: [vendor_id], references: [id], onUpdate: NoAction)
asset_service_visits asset_service_visits[]
@@index([asset_id], map: "idx_amc_asset_id")
@@index([vendor_id], map: "idx_amc_vendor_id")
}
model asset_insurance_policies {
id BigInt @id @default(autoincrement())
asset_id BigInt
policy_no String @db.VarChar(100)
insurer_name String @db.VarChar(200)
insurer_branch String? @db.VarChar(150)
insurer_contact String? @db.VarChar(150)
insurer_phone String? @db.VarChar(15)
insurer_email String? @db.VarChar(150)
policy_type String @default("FIRE_AND_ALLIED") @db.VarChar(50)
sum_insured Decimal @default(0) @db.Decimal(15, 2)
annual_premium Decimal @default(0) @db.Decimal(12, 2)
policy_start_date DateTime @db.Date
policy_end_date DateTime @db.Date
renewal_date DateTime? @db.Date
is_auto_renewal Boolean @default(false)
premium_paid Boolean @default(false)
premium_paid_date DateTime? @db.Date
remarks String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_attachments asset_attachments[]
assets assets @relation(fields: [asset_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
users_asset_insurance_policies_created_byTousers users? @relation("asset_insurance_policies_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_asset_insurance_policies_updated_byTousers users? @relation("asset_insurance_policies_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
@@index([asset_id], map: "idx_insurance_asset_id")
}
model asset_service_visits {
id BigInt @id @default(autoincrement())
asset_id BigInt
amc_contract_id BigInt?
visit_type String @db.VarChar(30)
visit_date DateTime @db.Date
visit_number Int?
complaint_no String? @db.VarChar(50)
complaint_date DateTime? @db.Date
complaint_desc String?
engineer_name String? @db.VarChar(150)
engineer_phone String? @db.VarChar(15)
vendor_id BigInt?
work_done String?
parts_replaced String?
next_service_date DateTime? @db.Date
status String @default("COMPLETED") @db.VarChar(20)
downtime_hours Decimal? @default(0) @db.Decimal(6, 2)
service_cost Decimal? @default(0) @db.Decimal(12, 2)
is_under_amc Boolean @default(false)
asset_condition_after String? @db.VarChar(20)
remarks String?
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_attachments asset_attachments[]
asset_amc_contracts asset_amc_contracts? @relation(fields: [amc_contract_id], references: [id], onUpdate: NoAction)
assets assets @relation(fields: [asset_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
users_asset_service_visits_created_byTousers users? @relation("asset_service_visits_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_asset_service_visits_updated_byTousers users? @relation("asset_service_visits_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors? @relation(fields: [vendor_id], references: [id], onUpdate: NoAction)
@@index([asset_id], map: "idx_service_asset_id")
@@index([amc_contract_id], map: "idx_service_amc_id")
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model asset_categories {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(20)
name String @db.VarChar(150)
code_prefix String @unique @db.VarChar(10)
default_useful_life_years Int?
default_depreciation_method String? @db.VarChar(20)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
users_asset_categories_created_byTousers users? @relation("asset_categories_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_asset_categories_updated_byTousers users? @relation("asset_categories_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
assets assets[]
}
model asset_transfers {
id BigInt @id @default(autoincrement())
asset_id BigInt
transfer_date DateTime @db.Date
from_plant_id BigInt?
to_plant_id BigInt?
from_department_id BigInt?
to_department_id BigInt?
from_user_id BigInt?
to_user_id BigInt?
from_warehouse_id BigInt?
to_warehouse_id BigInt?
reason String?
transferred_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
assets assets @relation(fields: [asset_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
departments_asset_transfers_from_department_idTodepartments departments? @relation("asset_transfers_from_department_idTodepartments", fields: [from_department_id], references: [id], onUpdate: NoAction)
plants_asset_transfers_from_plant_idToplants plants? @relation("asset_transfers_from_plant_idToplants", fields: [from_plant_id], references: [id], onUpdate: NoAction)
users_asset_transfers_from_user_idTousers users? @relation("asset_transfers_from_user_idTousers", fields: [from_user_id], references: [id], onUpdate: NoAction)
warehouses_asset_transfers_from_warehouse_idTowarehouses warehouses? @relation("asset_transfers_from_warehouse_idTowarehouses", fields: [from_warehouse_id], references: [id], onUpdate: NoAction)
departments_asset_transfers_to_department_idTodepartments departments? @relation("asset_transfers_to_department_idTodepartments", fields: [to_department_id], references: [id], onUpdate: NoAction)
plants_asset_transfers_to_plant_idToplants plants? @relation("asset_transfers_to_plant_idToplants", fields: [to_plant_id], references: [id], onUpdate: NoAction)
users_asset_transfers_to_user_idTousers users? @relation("asset_transfers_to_user_idTousers", fields: [to_user_id], references: [id], onUpdate: NoAction)
warehouses_asset_transfers_to_warehouse_idTowarehouses warehouses? @relation("asset_transfers_to_warehouse_idTowarehouses", fields: [to_warehouse_id], references: [id], onUpdate: NoAction)
users_asset_transfers_transferred_byTousers users? @relation("asset_transfers_transferred_byTousers", fields: [transferred_by], references: [id], onUpdate: NoAction)
@@index([asset_id], map: "idx_asset_transfers_asset_id")
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model assets {
id BigInt @id @default(autoincrement())
asset_code String @unique @db.VarChar(30)
asset_name String @db.VarChar(200)
asset_category_id BigInt
brand_model String? @db.VarChar(200)
manufacturer String? @db.VarChar(200)
serial_number String? @db.VarChar(100)
part_number String? @db.VarChar(100)
plant_id BigInt
department_id BigInt?
warehouse_id BigInt?
location_detail String? @db.VarChar(200)
assigned_to_user_id BigInt?
vendor_id BigInt?
po_id BigInt?
grn_id BigInt?
grn_item_id BigInt?
purchase_date DateTime? @db.Date
purchase_cost Decimal @default(0) @db.Decimal(15, 4)
useful_life_years Int?
depreciation_method String? @db.VarChar(10)
salvage_value Decimal? @default(0) @db.Decimal(15, 4)
warranty_expiry_date DateTime? @db.Date
condition String @default("NEW") @db.VarChar(20)
status String @default("IN_USE") @db.VarChar(30)
qr_code_value String? @db.VarChar(100)
disposal_date DateTime? @db.Date
disposal_reason String?
disposal_value Decimal? @db.Decimal(15, 4)
remarks String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_amc_contracts asset_amc_contracts[]
asset_attachments asset_attachments[]
asset_insurance_policies asset_insurance_policies[]
asset_service_visits asset_service_visits[]
asset_transfers asset_transfers[]
asset_categories asset_categories @relation(fields: [asset_category_id], references: [id], onUpdate: NoAction)
users_assets_assigned_to_user_idTousers users? @relation("assets_assigned_to_user_idTousers", fields: [assigned_to_user_id], references: [id], onUpdate: NoAction)
users_assets_created_byTousers users? @relation("assets_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
departments departments? @relation(fields: [department_id], references: [id], onUpdate: NoAction)
grn grn? @relation(fields: [grn_id], references: [id], onUpdate: NoAction)
grn_items grn_items? @relation(fields: [grn_item_id], references: [id], onUpdate: NoAction)
plants plants @relation(fields: [plant_id], references: [id], onUpdate: NoAction)
purchase_orders purchase_orders? @relation(fields: [po_id], references: [id], onUpdate: NoAction)
users_assets_updated_byTousers users? @relation("assets_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors_assets_vendor_idTovendors vendors? @relation("assets_vendor_idTovendors", fields: [vendor_id], references: [id], onUpdate: NoAction)
warehouses warehouses? @relation(fields: [warehouse_id], references: [id], onUpdate: NoAction)
@@index([asset_category_id], map: "idx_assets_category_id")
@@index([department_id], map: "idx_assets_dept_id")
@@index([plant_id], map: "idx_assets_plant_id")
}
model audit_logs {
id BigInt @id @default(autoincrement())
table_name String @db.VarChar(100)
record_id BigInt
action String @db.VarChar(50)
old_value Json?
new_value Json?
performed_by BigInt?
request_id String? @db.VarChar(50)
performed_at DateTime @default(now()) @db.Timestamptz(6)
users users? @relation(fields: [performed_by], references: [id], onUpdate: NoAction)
@@index([performed_at], map: "idx_audit_logs_performed_at")
@@index([performed_by], map: "idx_audit_logs_performed_by")
@@index([table_name, record_id], map: "idx_audit_logs_table_record")
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model brands {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(30)
name String @db.VarChar(150)
brand_type String @default("OWN") @db.VarChar(20)
contact_person String? @db.VarChar(150)
phone String? @db.VarChar(15)
email String? @db.VarChar(150)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
users_brands_created_byTousers users? @relation("brands_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_brands_updated_byTousers users? @relation("brands_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
items items[]
purchase_orders purchase_orders[]
}
model delivery_terms {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(30)
name String @db.VarChar(100)
description String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
users_delivery_terms_created_byTousers users? @relation("delivery_terms_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_delivery_terms_updated_byTousers users? @relation("delivery_terms_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
purchase_orders purchase_orders[]
}
model departments {
id BigInt @id @default(autoincrement())
name String @unique @db.VarChar(100)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_transfers_asset_transfers_from_department_idTodepartments asset_transfers[] @relation("asset_transfers_from_department_idTodepartments")
asset_transfers_asset_transfers_to_department_idTodepartments asset_transfers[] @relation("asset_transfers_to_department_idTodepartments")
assets assets[]
users users[]
}
model designations {
id BigInt @id @default(autoincrement())
name String @unique @db.VarChar(100)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
users users[]
}
model document_series {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(50)
prefix String @db.VarChar(30)
current_number Int @default(0)
padding Int @default(5)
description String? @db.VarChar(200)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
users_document_series_created_byTousers users? @relation("document_series_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_document_series_updated_byTousers users? @relation("document_series_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model grn {
id BigInt @id @default(autoincrement())
grn_number String @unique @db.VarChar(30)
grn_date DateTime @db.Date
po_id BigInt
vendor_id BigInt
warehouse_id BigInt
vendor_invoice_no String? @db.VarChar(100)
vendor_invoice_date DateTime? @db.Date
vendor_invoice_amount Decimal? @db.Decimal(15, 4)
vehicle_no String? @db.VarChar(30)
lr_no String? @db.VarChar(50)
lr_date DateTime? @db.Date
status String @default("POSTED") @db.VarChar(20)
cancellation_reason String?
cancelled_by BigInt?
cancelled_at DateTime? @db.Timestamptz(6)
received_by BigInt?
quality_checked_by BigInt?
remarks String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
assets assets[]
users_grn_cancelled_byTousers users? @relation("grn_cancelled_byTousers", fields: [cancelled_by], references: [id], onUpdate: NoAction)
users_grn_created_byTousers users? @relation("grn_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
purchase_orders purchase_orders @relation(fields: [po_id], references: [id], onUpdate: NoAction)
users_grn_quality_checked_byTousers users? @relation("grn_quality_checked_byTousers", fields: [quality_checked_by], references: [id], onUpdate: NoAction)
users_grn_received_byTousers users? @relation("grn_received_byTousers", fields: [received_by], references: [id], onUpdate: NoAction)
users_grn_updated_byTousers users? @relation("grn_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors @relation(fields: [vendor_id], references: [id], onUpdate: NoAction)
warehouses warehouses @relation(fields: [warehouse_id], references: [id], onUpdate: NoAction)
grn_attachments grn_attachments[]
grn_items grn_items[]
@@index([grn_date], map: "idx_grn_grn_date")
@@index([po_id], map: "idx_grn_po_id")
@@index([vendor_id], map: "idx_grn_vendor_id")
}
model grn_attachments {
id BigInt @id @default(autoincrement())
grn_id BigInt
file_name String @db.VarChar(255)
file_path String @db.VarChar(500)
file_type String? @db.VarChar(100)
file_size Int?
uploaded_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
grn grn @relation(fields: [grn_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
users users? @relation(fields: [uploaded_by], references: [id], onUpdate: NoAction)
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model grn_items {
id BigInt @id @default(autoincrement())
grn_id BigInt
po_item_id BigInt
item_id BigInt
line_no Int
ordered_qty Decimal @db.Decimal(15, 4)
previously_received_qty Decimal @default(0) @db.Decimal(15, 4)
current_qty Decimal @db.Decimal(15, 4)
accepted_qty Decimal @db.Decimal(15, 4)
rejected_qty Decimal @default(0) @db.Decimal(15, 4)
rejection_reason String?
uom_id BigInt
rate Decimal @db.Decimal(15, 4)
batch_no String? @db.VarChar(100)
mfg_date DateTime? @db.Date
expiry_date DateTime? @db.Date
storage_location String? @db.VarChar(100)
remarks String?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
assets assets[]
grn grn @relation(fields: [grn_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
items items @relation(fields: [item_id], references: [id], onUpdate: NoAction)
purchase_order_items purchase_order_items @relation(fields: [po_item_id], references: [id], onUpdate: NoAction)
uom uom @relation(fields: [uom_id], references: [id], onUpdate: NoAction)
@@unique([grn_id, line_no])
@@index([grn_id], map: "idx_grn_items_grn_id")
@@index([item_id], map: "idx_grn_items_item_id")
}
model gst_rates {
id BigInt @id @default(autoincrement())
rate_pct Decimal @unique @db.Decimal(5, 2)
description String? @db.VarChar(100)
is_active Boolean @default(true)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
items items[]
purchase_order_items purchase_order_items[]
}
model hsn_codes {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(20)
description String?
is_active Boolean @default(true)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
items items[]
purchase_order_items purchase_order_items[]
}
model item_categories {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(30)
name String @db.VarChar(100)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
users_item_categories_created_byTousers users? @relation("item_categories_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_item_categories_updated_byTousers users? @relation("item_categories_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
item_subcategories item_subcategories[]
items items[]
}
model item_subcategories {
id BigInt @id @default(autoincrement())
item_category_id BigInt
code String @unique @db.VarChar(30)
name String @db.VarChar(100)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
users_item_subcategories_created_byTousers users? @relation("item_subcategories_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
item_categories item_categories @relation(fields: [item_category_id], references: [id], onUpdate: NoAction)
users_item_subcategories_updated_byTousers users? @relation("item_subcategories_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
items items[]
}
model items {
id BigInt @id @default(autoincrement())
item_code String @unique @db.VarChar(50)
item_name String @db.VarChar(200)
item_category_id BigInt
item_subcategory_id BigInt?
uom_id BigInt
hsn_code_id BigInt?
gst_rate_id BigInt?
brand_id BigInt?
is_asset_item Boolean @default(false)
description String?
specification String?
min_order_qty Decimal? @db.Decimal(15, 4)
reorder_level Decimal? @db.Decimal(15, 4)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
grn_items grn_items[]
brands brands? @relation(fields: [brand_id], references: [id], onUpdate: NoAction)
users_items_created_byTousers users? @relation("items_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
gst_rates gst_rates? @relation(fields: [gst_rate_id], references: [id], onUpdate: NoAction)
hsn_codes hsn_codes? @relation(fields: [hsn_code_id], references: [id], onUpdate: NoAction)
item_categories item_categories @relation(fields: [item_category_id], references: [id], onUpdate: NoAction)
item_subcategories item_subcategories? @relation(fields: [item_subcategory_id], references: [id], onUpdate: NoAction)
uom uom @relation(fields: [uom_id], references: [id], onUpdate: NoAction)
users_items_updated_byTousers users? @relation("items_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
purchase_order_items purchase_order_items[]
vendor_item_mapping vendor_item_mapping[]
@@index([item_category_id], map: "idx_items_category")
@@index([item_name(ops: raw("gin_trgm_ops"))], map: "idx_items_name_trgm", type: Gin)
}
model modules {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(50)
name String @db.VarChar(100)
parent_module_id BigInt?
sort_order Int @default(0)
is_active Boolean @default(true)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
modules modules? @relation("modulesTomodules", fields: [parent_module_id], references: [id], onUpdate: NoAction)
other_modules modules[] @relation("modulesTomodules")
permissions permissions[]
}
model password_reset_tokens {
id BigInt @id @default(autoincrement())
user_id BigInt
token_hash String @unique @db.VarChar(64)
expires_at DateTime @db.Timestamptz(6)
used_at DateTime? @db.Timestamptz(6)
created_at DateTime @default(now()) @db.Timestamptz(6)
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
}
model payment_terms {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(30)
name String @db.VarChar(100)
credit_days Int @default(0)
description String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
users_payment_terms_created_byTousers users? @relation("payment_terms_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_payment_terms_updated_byTousers users? @relation("payment_terms_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
purchase_orders purchase_orders[]
vendors vendors[]
}
model permissions {
id BigInt @id @default(autoincrement())
module_id BigInt
action String @db.VarChar(50)
is_active Boolean @default(true)
created_at DateTime @default(now()) @db.Timestamptz(6)
modules modules @relation(fields: [module_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
role_permissions role_permissions[]
@@unique([module_id, action])
}
model plants {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(20)
name String @db.VarChar(150)
gstin String? @db.VarChar(15)
address String?
city String? @db.VarChar(100)
state String? @db.VarChar(100)
pincode String? @db.VarChar(10)
phone String? @db.VarChar(15)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_transfers_asset_transfers_from_plant_idToplants asset_transfers[] @relation("asset_transfers_from_plant_idToplants")
asset_transfers_asset_transfers_to_plant_idToplants asset_transfers[] @relation("asset_transfers_to_plant_idToplants")
assets assets[]
users_plants_created_byTousers users? @relation("plants_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction, map: "fk_plants_created_by")
users_plants_updated_byTousers users? @relation("plants_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction, map: "fk_plants_updated_by")
purchase_orders purchase_orders[]
users_users_plant_idToplants users[] @relation("users_plant_idToplants")
warehouses warehouses[]
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model po_approvals {
id BigInt @id @default(autoincrement())
po_id BigInt
approval_level Int
approver_role_id BigInt?
approver_user_id BigInt?
status String @default("PENDING") @db.VarChar(20)
remarks String?
acted_at DateTime? @db.Timestamptz(6)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
roles roles? @relation(fields: [approver_role_id], references: [id], onUpdate: NoAction)
users users? @relation(fields: [approver_user_id], references: [id], onUpdate: NoAction)
purchase_orders purchase_orders @relation(fields: [po_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
@@index([po_id], map: "idx_po_approvals_po_id")
}
model po_attachments {
id BigInt @id @default(autoincrement())
po_id BigInt
file_name String @db.VarChar(255)
file_path String @db.VarChar(500)
file_type String? @db.VarChar(100)
file_size Int?
uploaded_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
purchase_orders purchase_orders @relation(fields: [po_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
users users? @relation(fields: [uploaded_by], references: [id], onUpdate: NoAction)
}
model purchase_order_items {
id BigInt @id @default(autoincrement())
po_id BigInt
item_id BigInt
line_no Int
ordered_qty Decimal @db.Decimal(15, 4)
uom_id BigInt
rate Decimal @db.Decimal(15, 4)
discount_pct Decimal @default(0) @db.Decimal(5, 2)
discount_amount Decimal @default(0) @db.Decimal(15, 4)
gst_rate_id BigInt?
taxable_amount Decimal @default(0) @db.Decimal(15, 4)
tax_amount Decimal @default(0) @db.Decimal(15, 4)
line_total Decimal @default(0) @db.Decimal(15, 4)
received_qty Decimal @default(0) @db.Decimal(15, 4)
hsn_code_id BigInt?
remarks String?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
grn_items grn_items[]
gst_rates gst_rates? @relation(fields: [gst_rate_id], references: [id], onUpdate: NoAction)
hsn_codes hsn_codes? @relation(fields: [hsn_code_id], references: [id], onUpdate: NoAction)
items items @relation(fields: [item_id], references: [id], onUpdate: NoAction)
purchase_orders purchase_orders @relation(fields: [po_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
uom uom @relation(fields: [uom_id], references: [id], onUpdate: NoAction)
@@unique([po_id, line_no])
@@index([item_id], map: "idx_po_items_item_id")
@@index([po_id], map: "idx_po_items_po_id")
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model purchase_orders {
id BigInt @id @default(autoincrement())
po_number String @unique @db.VarChar(30)
po_date DateTime @db.Date
po_type String @db.VarChar(30)
vendor_id BigInt
plant_id BigInt
warehouse_id BigInt?
brand_id BigInt?
payment_term_id BigInt?
delivery_term_id BigInt?
expected_delivery_date DateTime? @db.Date
sub_total Decimal @default(0) @db.Decimal(15, 4)
discount_amount Decimal @default(0) @db.Decimal(15, 4)
tax_total Decimal @default(0) @db.Decimal(15, 4)
freight_charges Decimal @default(0) @db.Decimal(15, 4)
other_charges Decimal @default(0) @db.Decimal(15, 4)
grand_total Decimal @default(0) @db.Decimal(15, 4)
status String @default("DRAFT") @db.VarChar(30)
revision_no Int @default(0)
parent_po_id BigInt?
terms_and_conditions String?
remarks String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
assets assets[]
grn grn[]
po_approvals po_approvals[]
po_attachments po_attachments[]
purchase_order_items purchase_order_items[]
brands brands? @relation(fields: [brand_id], references: [id], onUpdate: NoAction)
users_purchase_orders_created_byTousers users? @relation("purchase_orders_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
delivery_terms delivery_terms? @relation(fields: [delivery_term_id], references: [id], onUpdate: NoAction)
purchase_orders purchase_orders? @relation("purchase_ordersTopurchase_orders", fields: [parent_po_id], references: [id], onUpdate: NoAction)
other_purchase_orders purchase_orders[] @relation("purchase_ordersTopurchase_orders")
payment_terms payment_terms? @relation(fields: [payment_term_id], references: [id], onUpdate: NoAction)
plants plants @relation(fields: [plant_id], references: [id], onUpdate: NoAction)
users_purchase_orders_updated_byTousers users? @relation("purchase_orders_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors @relation(fields: [vendor_id], references: [id], onUpdate: NoAction)
warehouses warehouses? @relation(fields: [warehouse_id], references: [id], onDelete: Restrict, onUpdate: NoAction)
@@index([created_at], map: "idx_po_created_at")
@@index([po_date], map: "idx_po_po_date")
@@index([vendor_id], map: "idx_po_vendor_id")
}
model refresh_tokens {
id BigInt @id @default(autoincrement())
user_id BigInt
token_hash String @unique @db.VarChar(64)
expires_at DateTime @db.Timestamptz(6)
revoked_at DateTime? @db.Timestamptz(6)
created_at DateTime @default(now()) @db.Timestamptz(6)
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
@@index([user_id], map: "idx_refresh_tokens_user_id")
}
model role_permissions {
id BigInt @id @default(autoincrement())
role_id BigInt
permission_id BigInt
created_at DateTime @default(now()) @db.Timestamptz(6)
permissions permissions @relation(fields: [permission_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
roles roles @relation(fields: [role_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
@@unique([role_id, permission_id])
}
model roles {
id BigInt @id @default(autoincrement())
name String @unique @db.VarChar(100)
description String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
po_approvals po_approvals[]
role_permissions role_permissions[]
users_roles_created_byTousers users? @relation("roles_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction, map: "fk_roles_created_by")
users_roles_updated_byTousers users? @relation("roles_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction, map: "fk_roles_updated_by")
users_users_role_idToroles users[] @relation("users_role_idToroles")
}
model uom {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(20)
name String @db.VarChar(100)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
grn_items grn_items[]
items items[]
purchase_order_items purchase_order_items[]
users_uom_created_byTousers users? @relation("uom_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_uom_updated_byTousers users? @relation("uom_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model users {
id BigInt @id @default(autoincrement())
employee_code String @unique @db.VarChar(30)
full_name String @db.VarChar(200)
email String @unique @db.VarChar(200)
mobile String? @db.VarChar(255)
mobile_index String? @db.VarChar(64)
password_hash String @db.VarChar(255)
role_id BigInt?
department_id BigInt?
designation_id BigInt?
plant_id BigInt?
reporting_to BigInt?
status String @default("active") @db.VarChar(20)
is_active Boolean @default(true)
failed_login_attempts Int @default(0)
locked_until DateTime? @db.Timestamptz(6)
last_login_at DateTime? @db.Timestamptz(6)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_attachments asset_attachments[]
asset_amc_contracts_asset_amc_contracts_created_byTousers asset_amc_contracts[] @relation("asset_amc_contracts_created_byTousers")
asset_amc_contracts_asset_amc_contracts_updated_byTousers asset_amc_contracts[] @relation("asset_amc_contracts_updated_byTousers")
asset_insurance_policies_asset_insurance_policies_created_byTousers asset_insurance_policies[] @relation("asset_insurance_policies_created_byTousers")
asset_insurance_policies_asset_insurance_policies_updated_byTousers asset_insurance_policies[] @relation("asset_insurance_policies_updated_byTousers")
asset_service_visits_asset_service_visits_created_byTousers asset_service_visits[] @relation("asset_service_visits_created_byTousers")
asset_service_visits_asset_service_visits_updated_byTousers asset_service_visits[] @relation("asset_service_visits_updated_byTousers")
asset_categories_asset_categories_created_byTousers asset_categories[] @relation("asset_categories_created_byTousers")
asset_categories_asset_categories_updated_byTousers asset_categories[] @relation("asset_categories_updated_byTousers")
asset_transfers_asset_transfers_from_user_idTousers asset_transfers[] @relation("asset_transfers_from_user_idTousers")
asset_transfers_asset_transfers_to_user_idTousers asset_transfers[] @relation("asset_transfers_to_user_idTousers")
asset_transfers_asset_transfers_transferred_byTousers asset_transfers[] @relation("asset_transfers_transferred_byTousers")
assets_assets_assigned_to_user_idTousers assets[] @relation("assets_assigned_to_user_idTousers")
assets_assets_created_byTousers assets[] @relation("assets_created_byTousers")
assets_assets_updated_byTousers assets[] @relation("assets_updated_byTousers")
audit_logs audit_logs[]
brands_brands_created_byTousers brands[] @relation("brands_created_byTousers")
brands_brands_updated_byTousers brands[] @relation("brands_updated_byTousers")
delivery_terms_delivery_terms_created_byTousers delivery_terms[] @relation("delivery_terms_created_byTousers")
delivery_terms_delivery_terms_updated_byTousers delivery_terms[] @relation("delivery_terms_updated_byTousers")
document_series_document_series_created_byTousers document_series[] @relation("document_series_created_byTousers")
document_series_document_series_updated_byTousers document_series[] @relation("document_series_updated_byTousers")
grn_grn_cancelled_byTousers grn[] @relation("grn_cancelled_byTousers")
grn_grn_created_byTousers grn[] @relation("grn_created_byTousers")
grn_grn_quality_checked_byTousers grn[] @relation("grn_quality_checked_byTousers")
grn_grn_received_byTousers grn[] @relation("grn_received_byTousers")
grn_grn_updated_byTousers grn[] @relation("grn_updated_byTousers")
grn_attachments grn_attachments[]
item_categories_item_categories_created_byTousers item_categories[] @relation("item_categories_created_byTousers")
item_categories_item_categories_updated_byTousers item_categories[] @relation("item_categories_updated_byTousers")
item_subcategories_item_subcategories_created_byTousers item_subcategories[] @relation("item_subcategories_created_byTousers")
item_subcategories_item_subcategories_updated_byTousers item_subcategories[] @relation("item_subcategories_updated_byTousers")
items_items_created_byTousers items[] @relation("items_created_byTousers")
items_items_updated_byTousers items[] @relation("items_updated_byTousers")
password_reset_tokens password_reset_tokens[]
payment_terms_payment_terms_created_byTousers payment_terms[] @relation("payment_terms_created_byTousers")
payment_terms_payment_terms_updated_byTousers payment_terms[] @relation("payment_terms_updated_byTousers")
plants_plants_created_byTousers plants[] @relation("plants_created_byTousers")
plants_plants_updated_byTousers plants[] @relation("plants_updated_byTousers")
po_approvals po_approvals[]
po_attachments po_attachments[]
purchase_orders_purchase_orders_created_byTousers purchase_orders[] @relation("purchase_orders_created_byTousers")
purchase_orders_purchase_orders_updated_byTousers purchase_orders[] @relation("purchase_orders_updated_byTousers")
refresh_tokens refresh_tokens[]
roles_roles_created_byTousers roles[] @relation("roles_created_byTousers")
roles_roles_updated_byTousers roles[] @relation("roles_updated_byTousers")
uom_uom_created_byTousers uom[] @relation("uom_created_byTousers")
uom_uom_updated_byTousers uom[] @relation("uom_updated_byTousers")
users_users_created_byTousers users? @relation("users_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
other_users_users_created_byTousers users[] @relation("users_created_byTousers")
departments departments? @relation(fields: [department_id], references: [id], onUpdate: NoAction)
designations designations? @relation(fields: [designation_id], references: [id], onUpdate: NoAction)
plants_users_plant_idToplants plants? @relation("users_plant_idToplants", fields: [plant_id], references: [id], onUpdate: NoAction)
users_users_reporting_toTousers users? @relation("users_reporting_toTousers", fields: [reporting_to], references: [id], onUpdate: NoAction)
other_users_users_reporting_toTousers users[] @relation("users_reporting_toTousers")
roles_users_role_idToroles roles? @relation("users_role_idToroles", fields: [role_id], references: [id], onDelete: Restrict, onUpdate: NoAction)
users_users_updated_byTousers users? @relation("users_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
other_users_users_updated_byTousers users[] @relation("users_updated_byTousers")
vendor_addresses_vendor_addresses_created_byTousers vendor_addresses[] @relation("vendor_addresses_created_byTousers")
vendor_addresses_vendor_addresses_updated_byTousers vendor_addresses[] @relation("vendor_addresses_updated_byTousers")
vendor_bank_details_vendor_bank_details_created_byTousers vendor_bank_details[] @relation("vendor_bank_details_created_byTousers")
vendor_bank_details_vendor_bank_details_updated_byTousers vendor_bank_details[] @relation("vendor_bank_details_updated_byTousers")
vendor_contacts_vendor_contacts_created_byTousers vendor_contacts[] @relation("vendor_contacts_created_byTousers")
vendor_contacts_vendor_contacts_updated_byTousers vendor_contacts[] @relation("vendor_contacts_updated_byTousers")
vendor_item_mapping_vendor_item_mapping_created_byTousers vendor_item_mapping[] @relation("vendor_item_mapping_created_byTousers")
vendor_item_mapping_vendor_item_mapping_updated_byTousers vendor_item_mapping[] @relation("vendor_item_mapping_updated_byTousers")
vendors_vendors_created_byTousers vendors[] @relation("vendors_created_byTousers")
vendors_vendors_updated_byTousers vendors[] @relation("vendors_updated_byTousers")
warehouses_warehouses_created_byTousers warehouses[] @relation("warehouses_created_byTousers")
warehouses_warehouses_updated_byTousers warehouses[] @relation("warehouses_updated_byTousers")
@@index([role_id], map: "idx_users_role_id")
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model vendor_addresses {
id BigInt @id @default(autoincrement())
vendor_id BigInt
address_type String @db.VarChar(20)
address_line1 String? @db.VarChar(200)
address_line2 String? @db.VarChar(200)
city String? @db.VarChar(100)
state String? @db.VarChar(100)
pincode String? @db.VarChar(10)
country String @default("India") @db.VarChar(100)
gstin String? @db.VarChar(15)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
users_vendor_addresses_created_byTousers users? @relation("vendor_addresses_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_vendor_addresses_updated_byTousers users? @relation("vendor_addresses_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors @relation(fields: [vendor_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model vendor_bank_details {
id BigInt @id @default(autoincrement())
vendor_id BigInt
bank_name String @db.VarChar(150)
branch String? @db.VarChar(150)
account_number String @db.VarChar(255)
account_number_index String? @db.VarChar(64)
ifsc String @db.VarChar(15)
account_holder_name String @db.VarChar(200)
account_type String @default("CURRENT") @db.VarChar(20)
is_primary Boolean @default(false)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
users_vendor_bank_details_created_byTousers users? @relation("vendor_bank_details_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_vendor_bank_details_updated_byTousers users? @relation("vendor_bank_details_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors @relation(fields: [vendor_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
}
model vendor_contacts {
id BigInt @id @default(autoincrement())
vendor_id BigInt
contact_name String @db.VarChar(150)
designation String? @db.VarChar(100)
phone String? @db.VarChar(15)
email String? @db.VarChar(150)
is_primary Boolean @default(false)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
users_vendor_contacts_created_byTousers users? @relation("vendor_contacts_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
users_vendor_contacts_updated_byTousers users? @relation("vendor_contacts_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors @relation(fields: [vendor_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
}
model vendor_item_mapping {
id BigInt @id @default(autoincrement())
vendor_id BigInt
item_id BigInt
last_purchase_rate Decimal? @db.Decimal(15, 4)
is_preferred Boolean @default(false)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
users_vendor_item_mapping_created_byTousers users? @relation("vendor_item_mapping_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
items items @relation(fields: [item_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
users_vendor_item_mapping_updated_byTousers users? @relation("vendor_item_mapping_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
vendors vendors @relation(fields: [vendor_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
@@unique([vendor_id, item_id])
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model vendors {
id BigInt @id @default(autoincrement())
vendor_code String @unique @db.VarChar(30)
vendor_name String @db.VarChar(200)
vendor_type String @db.VarChar(30)
gstin String? @db.VarChar(15)
pan String? @db.VarChar(10)
payment_term_id BigInt?
credit_period_days Int @default(0)
status String @default("active") @db.VarChar(20)
remarks String?
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
assets_assets_vendor_idTovendors assets[] @relation("assets_vendor_idTovendors")
asset_amc_contracts asset_amc_contracts[]
asset_service_visits asset_service_visits[]
grn grn[]
purchase_orders purchase_orders[]
vendor_addresses vendor_addresses[]
vendor_bank_details vendor_bank_details[]
vendor_contacts vendor_contacts[]
vendor_item_mapping vendor_item_mapping[]
users_vendors_created_byTousers users? @relation("vendors_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
payment_terms payment_terms? @relation(fields: [payment_term_id], references: [id], onUpdate: NoAction)
users_vendors_updated_byTousers users? @relation("vendors_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
@@index([vendor_name(ops: raw("gin_trgm_ops"))], map: "idx_vendors_name_trgm", type: Gin)
}
model warehouses {
id BigInt @id @default(autoincrement())
code String @unique @db.VarChar(30)
name String @db.VarChar(150)
plant_id BigInt
location String? @db.VarChar(200)
is_active Boolean @default(true)
created_by BigInt?
updated_by BigInt?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
deleted_at DateTime? @db.Timestamptz(6)
asset_transfers_asset_transfers_from_warehouse_idTowarehouses asset_transfers[] @relation("asset_transfers_from_warehouse_idTowarehouses")
asset_transfers_asset_transfers_to_warehouse_idTowarehouses asset_transfers[] @relation("asset_transfers_to_warehouse_idTowarehouses")
assets assets[]
grn grn[]
purchase_orders purchase_orders[]
users_warehouses_created_byTousers users? @relation("warehouses_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction)
plants plants @relation(fields: [plant_id], references: [id], onUpdate: NoAction)
users_warehouses_updated_byTousers users? @relation("warehouses_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction)
}