1035 lines
69 KiB
Plaintext
1035 lines
69 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_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)
|
|
from_plant locations? @relation("TransferFromPlant", 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)
|
|
from_warehouse locations? @relation("TransferFromWarehouse", 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)
|
|
to_plant locations? @relation("TransferToPlant", 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)
|
|
to_warehouse locations? @relation("TransferToWarehouse", 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)
|
|
item_category_id BigInt
|
|
item_subcategory_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(20)
|
|
depreciation_rate Decimal? @db.Decimal(8, 4)
|
|
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[]
|
|
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)
|
|
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)
|
|
plant locations @relation("AssetPlantLocation", 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)
|
|
warehouse locations? @relation("AssetWarehouseLocation", fields: [warehouse_id], references: [id], onUpdate: NoAction)
|
|
|
|
@@index([item_category_id], map: "idx_assets_item_category_id")
|
|
@@index([item_subcategory_id], map: "idx_assets_item_subcategory_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)
|
|
warehouse locations @relation("GRNWarehouseLocation", 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)
|
|
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_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[]
|
|
assets assets[]
|
|
}
|
|
|
|
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[]
|
|
assets assets[]
|
|
}
|
|
|
|
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 locations {
|
|
id BigInt @id @default(autoincrement())
|
|
type String @db.VarChar(20)
|
|
code String @db.VarChar(30)
|
|
name String @db.VarChar(150)
|
|
parent_id BigInt?
|
|
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)
|
|
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)
|
|
transfers_from_plant asset_transfers[] @relation("TransferFromPlant")
|
|
transfers_to_plant asset_transfers[] @relation("TransferToPlant")
|
|
transfers_from_wh asset_transfers[] @relation("TransferFromWarehouse")
|
|
transfers_to_wh asset_transfers[] @relation("TransferToWarehouse")
|
|
assets_plant assets[] @relation("AssetPlantLocation")
|
|
assets_warehouse assets[] @relation("AssetWarehouseLocation")
|
|
grn_warehouse grn[] @relation("GRNWarehouseLocation")
|
|
parent locations? @relation("LocationHierarchy", fields: [parent_id], references: [id], onUpdate: NoAction)
|
|
children locations[] @relation("LocationHierarchy")
|
|
po_plant purchase_orders[] @relation("POPlantLocation")
|
|
po_warehouse purchase_orders[] @relation("POWarehouseLocation")
|
|
users_plant users[] @relation("UserPlantLocation")
|
|
users_created users? @relation("locations_created_byTousers", fields: [created_by], references: [id], onUpdate: NoAction, map: "fk_locations_created_by")
|
|
users_updated users? @relation("locations_updated_byTousers", fields: [updated_by], references: [id], onUpdate: NoAction, map: "fk_locations_updated_by")
|
|
|
|
@@index([type], map: "idx_locations_type")
|
|
@@index([parent_id], map: "idx_locations_parent_id")
|
|
}
|
|
|
|
/// 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)
|
|
tds_applicable Boolean @default(false)
|
|
tds_section_pct Decimal? @db.Decimal(5, 2)
|
|
tds_amount Decimal @default(0) @db.Decimal(15, 4)
|
|
adjustment 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)
|
|
plant locations @relation("POPlantLocation", 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)
|
|
warehouse locations? @relation("POWarehouseLocation", 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 user_roles {
|
|
id BigInt @id @default(autoincrement())
|
|
user_id BigInt
|
|
role_id BigInt
|
|
created_at DateTime @default(now()) @db.Timestamptz(6)
|
|
roles roles @relation(fields: [role_id], references: [id], onDelete: Restrict, onUpdate: NoAction)
|
|
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
|
|
|
@@unique([user_id, role_id])
|
|
@@index([user_id], map: "idx_user_roles_user_id")
|
|
@@index([role_id], map: "idx_user_roles_role_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[]
|
|
user_roles user_roles[]
|
|
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")
|
|
}
|
|
|
|
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)
|
|
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_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")
|
|
locations_locations_created_byTousers locations[] @relation("locations_created_byTousers")
|
|
locations_locations_updated_byTousers locations[] @relation("locations_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[]
|
|
user_roles user_roles[]
|
|
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)
|
|
plant_location locations? @relation("UserPlantLocation", 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")
|
|
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")
|
|
}
|
|
|
|
/// 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)
|
|
gst_treatment String? @db.VarChar(30)
|
|
source_of_supply String? @db.VarChar(100)
|
|
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 company {
|
|
id BigInt @id @default(1)
|
|
org_name String? @db.VarChar(200)
|
|
gstin String? @db.VarChar(15)
|
|
mobile String? @db.VarChar(20)
|
|
email String? @db.VarChar(200)
|
|
website String? @db.VarChar(255)
|
|
logo_path String? @db.VarChar(500)
|
|
address String?
|
|
city String? @db.VarChar(100)
|
|
state String? @db.VarChar(100)
|
|
pincode String? @db.VarChar(10)
|
|
created_by BigInt?
|
|
updated_by BigInt?
|
|
created_at DateTime @default(now()) @db.Timestamptz(6)
|
|
updated_at DateTime @default(now()) @db.Timestamptz(6)
|
|
}
|
|
|
|
model email_settings {
|
|
id BigInt @id @default(1)
|
|
smtp_host String? @db.VarChar(255)
|
|
smtp_port Int @default(587)
|
|
smtp_username String? @db.VarChar(200)
|
|
smtp_password String? @db.VarChar(500)
|
|
sender_email String? @db.VarChar(200)
|
|
sender_name String? @db.VarChar(200)
|
|
created_by BigInt?
|
|
updated_by BigInt?
|
|
created_at DateTime @default(now()) @db.Timestamptz(6)
|
|
updated_at DateTime @default(now()) @db.Timestamptz(6)
|
|
}
|