model SalesInvoice { id String @id @default(uuid()) code String @unique @db.VarChar(100) total_amount Decimal @db.Decimal(15, 2) invoice_number Int @db.Int() invoice_date DateTime @default(now()) @db.Timestamp(0) notes String? @db.Text unknown_customer Json? @db.Json created_at DateTime @default(now()) @db.Timestamp(0) updated_at DateTime @updatedAt @db.Timestamp(0) customer_id String? customer Customer? @relation(fields: [customer_id], references: [id]) consumer_account_id String consumer_account ConsumerAccount @relation(fields: [consumer_account_id], references: [id]) pos_id String pos Pos @relation(fields: [pos_id], references: [id]) fiscal SaleInvoiceFiscals? items SalesInvoiceItem[] payments SalesInvoicePayment[] @@unique([invoice_number, pos_id]) @@map("sales_invoices") } model SalesInvoiceItem { id String @id @default(ulid()) quantity Decimal @db.Decimal(10, 0) measure_unit_text String @db.VarChar(50) measure_unit_code String @db.VarChar(50) sku_code String @db.VarChar(50) sku_vat Decimal @default(0.00) @db.Decimal(15, 2) 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 payload Json? good_snapshot Json? invoice_id String invoice SalesInvoice @relation(fields: [invoice_id], references: [id]) good_id String? good Good? @relation(fields: [good_id], references: [id]) service_id String? service Service? @relation(fields: [service_id], references: [id]) @@index([invoice_id, good_id]) @@map("sales_invoice_items") } model SaleInvoiceFiscals { id String @id @default(ulid()) retry_count Int @default(0) last_attempt_at DateTime? @db.Timestamp(0) created_at DateTime @default(now()) @db.Timestamp(0) updated_at DateTime @updatedAt() @db.Timestamp(0) invoice_id String @unique invoice SalesInvoice @relation(fields: [invoice_id], references: [id], onDelete: Cascade) attempts SaleInvoiceFiscalAttempts[] @@map("sale_invoice_fiscals") } model SaleInvoiceFiscalAttempts { id String @id @default(ulid()) attempt_no Int status FiscalResponseStatus tax_id String? @unique @db.VarChar(191) type FiscalRequestType request_payload Json? response_payload Json? error_message String? @db.Text sent_at DateTime? @db.Timestamp(0) received_at DateTime? @db.Timestamp(0) created_at DateTime @default(now()) @db.Timestamp(0) fiscal_id String fiscal SaleInvoiceFiscals @relation(fields: [fiscal_id], references: [id], onDelete: Cascade) @@unique([fiscal_id, attempt_no]) @@index([status]) @@index([tax_id]) @@map("sale_invoice_fiscal_attempts") } model SalesInvoicePayment { id String @id @default(ulid()) amount Decimal @db.Decimal(15, 2) payment_method PaymentMethodType paid_at DateTime @db.Timestamp(0) created_at DateTime @default(now()) @db.Timestamp(0) invoice_id String invoice SalesInvoice @relation(fields: [invoice_id], references: [id]) terminal_info SalesInvoicePaymentTerminalInfo? @@index([invoice_id]) @@map("sales_invoice_payments") } model SalesInvoicePaymentTerminalInfo { id String @id @default(ulid()) terminal_id String stan String rrn String transaction_date_time DateTime customer_card_no String? description String? created_at DateTime @default(now()) @db.Timestamp(0) payment_id String @unique payment SalesInvoicePayment @relation(fields: [payment_id], references: [id]) @@unique([terminal_id, stan, rrn, payment_id]) @@map("sales_invoice_payment_terminal_info") }