model SalesInvoice { id String @id @default(uuid()) code String @unique @db.VarChar(100) total_amount Decimal @db.Decimal(15, 2) invoice_number Int invoice_date DateTime @default(now()) @db.Timestamp(0) type TspProviderRequestType tax_id String? @unique @db.VarChar(32) notes String? @db.Text unknown_customer Json? created_at DateTime @default(now()) @db.Timestamp(0) updated_at DateTime @updatedAt @db.Timestamp(0) main_id String? @db.VarChar(50) ref_id String? @unique @db.VarChar(50) customer_id String? consumer_account_id String pos_id String settlement_type InvoiceSettlementType discount_amount Decimal? @db.Decimal(15, 2) tax_amount Decimal? @db.Decimal(15, 2) last_tsp_status TspProviderResponseStatus? last_attempt_no Int? tsp_attempts SaleInvoiceTspAttempts[] items SalesInvoiceItem[] payments SalesInvoicePayment[] consumer_account ConsumerAccount @relation(fields: [consumer_account_id], references: [id]) customer Customer? @relation(fields: [customer_id], references: [id]) pos Pos @relation(fields: [pos_id], references: [id]) reference_invoice SalesInvoice? @relation("SalesInvoiceReference", fields: [ref_id], references: [id]) referenced_by SalesInvoice? @relation("SalesInvoiceReference") @@unique([invoice_number, pos_id]) @@index([pos_id, invoice_date]) @@index([ref_id]) @@index([tax_id]) @@index([consumer_account_id], map: "sales_invoices_consumer_account_id_fkey") @@index([customer_id], map: "sales_invoices_customer_id_fkey") @@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 good_id String service_id String? discount_amount Decimal? @db.Decimal(15, 2) tax_amount Decimal? @db.Decimal(15, 2) good Good @relation(fields: [good_id], references: [id]) invoice SalesInvoice @relation(fields: [invoice_id], references: [id]) service Service? @relation(fields: [service_id], references: [id]) @@index([invoice_id, good_id]) @@index([good_id], map: "sales_invoice_items_good_id_fkey") @@index([service_id], map: "sales_invoice_items_service_id_fkey") @@map("sales_invoice_items") } model SaleInvoiceTspAttempts { id String @id @default(ulid()) attempt_no Int status TspProviderResponseStatus message String @db.Text sent_at DateTime? @db.Timestamp(0) received_at DateTime? @db.Timestamp(0) created_at DateTime @default(now()) @db.Timestamp(0) invoice_id String provider_request_payload Json raw_request_payload Json error_message String? @db.Text fiscal_warnings Json? provider_response Json? validation_errors Json? invoice SalesInvoice @relation(fields: [invoice_id], references: [id], onDelete: Cascade) @@unique([invoice_id, attempt_no]) @@index([status]) @@index([invoice_id]) @@map("sale_invoice_tsp_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 terminal_info SalesInvoicePaymentTerminalInfo? invoice SalesInvoice @relation(fields: [invoice_id], references: [id]) @@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") }