feat(customers): add DTOs for individual and legal customer creation

- Created CreateCustomerIndividualDto for individual customer data with fields: first_name, last_name, national_code, postal_code, is_favorite, and economic_code.
- Created CreateCustomerLegalDto for legal customer data with fields: company_name, economic_code, registration_number, and postal_code.
This commit is contained in:
2026-02-24 12:42:10 +03:30
parent c7cd7cd855
commit b949500482
27 changed files with 4116 additions and 600 deletions
+39 -14
View File
@@ -1,19 +1,44 @@
model Customer {
id String @id @default(uuid())
first_name String @db.VarChar(255)
last_name String @db.VarChar(255)
email String? @db.VarChar(255)
mobile_number String @unique @db.Char(11)
address String? @db.Text
is_active Boolean @default(true)
account_id String
complex_id String
id String @id @default(uuid())
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt @db.Timestamp(0)
deleted_at DateTime? @db.Timestamp(0)
type CustomerType
complex_id String
is_favorite Boolean? @default(false)
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt @db.Timestamp(0)
deleted_at DateTime? @db.Timestamp(0)
sales_invoices SalesInvoice[]
sales_invoices SalesInvoice[]
customerIndividuals CustomerIndividual?
customerLegals CustomerLegal?
@@map("customers")
}
model CustomerIndividual {
customer_id String @id
first_name String @db.VarChar(255)
last_name String @db.VarChar(255)
national_id String @db.Char(10)
postal_code String @db.Char(10)
economic_code String? @db.Char(10)
complex_id String
customer Customer @relation(fields: [customer_id], references: [id])
@@unique([complex_id, national_id])
@@map("customer_individuals")
}
model CustomerLegal {
customer_id String @id
company_name String @db.VarChar(255)
economic_code String @db.Char(10)
registration_number String @db.Char(20)
postal_code String @db.Char(10)
complex_id String
customer Customer @relation(fields: [customer_id], references: [id])
@@unique([complex_id, registration_number])
@@map("customer_legal")
}
+13
View File
@@ -1,5 +1,7 @@
enum PaymentMethodType {
TERMINAL
CASH
SET_OFF
CARD
BANK
CHECK
@@ -25,3 +27,14 @@ enum UnitType {
METER
HOUR
}
enum CustomerType {
INDIVIDUAL
LEGAL
UNKNOWN
}
enum SalesInvoiceItemPricingModel {
STANDARD
GOLD
}
+27 -20
View File
@@ -1,31 +1,38 @@
model SalesInvoice {
id String @id @default(uuid())
code String @unique @db.VarChar(100)
total_amount Decimal @db.Decimal(15, 2)
description String? @db.Text
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt @db.Timestamp(0)
customer_id String?
account_id String
complex_id String
id String @id @default(uuid())
code String @unique @db.VarChar(100)
total_amount Decimal @db.Decimal(15, 2)
notes String? @db.Text
unknown_customer Json? @db.Json
invoice_date DateTime? @default(now()) @db.Timestamp(0)
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt @db.Timestamp(0)
customer Customer? @relation(fields: [customer_id], references: [id])
items SalesInvoiceItem[]
sales_invoice_payments SalesInvoicePayment[]
customer_id String?
account_id String
complex_id String
customer Customer? @relation(fields: [customer_id], references: [id])
items SalesInvoiceItem[]
payments SalesInvoicePayment[]
@@map("sales_invoices")
}
model SalesInvoiceItem {
id String @id @default(uuid())
quantity Decimal @db.Decimal(10, 0)
id String @id @default(uuid())
quantity Decimal @db.Decimal(10, 0)
unit_type UnitType
unit_price Decimal @default(0.00) @db.Decimal(15, 2)
total_amount Decimal @default(0.00) @db.Decimal(15, 2)
created_at DateTime @default(now()) @db.Timestamp(0)
invoice_id String
good_id String?
service_id String?
unit_price Decimal @default(0.00) @db.Decimal(15, 2)
total_amount Decimal @default(0.00) @db.Decimal(15, 2)
created_at DateTime @default(now()) @db.Timestamp(0)
discount Decimal @default(0.00) @db.Decimal(15, 2)
notes String? @db.Text
pricingModel SalesInvoiceItemPricingModel @default(STANDARD)
invoice_id String
good_id String?
service_id String?
payload Json?