feat: implement correction and original send functionality for Nama provider

- Added new DTOs for correction requests and responses in `nama-provider.dto.ts`.
- Updated `nama-provider.adapter.ts` to include `originalSend` and `correctionSend` methods.
- Enhanced `nama-provider.util.ts` with mapping functions for correction requests.
- Created operational guidelines for agents in `AGENT.md`.
- Updated Prisma migrations to support new invoice types and relationships.
- Introduced new service and DTO for creating sales invoices in `sale-invoice-create.service.ts` and `sale-invoice-create.dto.ts`.
- Added utility for handling Prisma errors in `prisma-error.util.ts`.
This commit is contained in:
2026-05-05 22:42:09 +03:30
parent 4af07fe3e8
commit 658496320b
43 changed files with 2808 additions and 1354 deletions
+2 -3
View File
@@ -167,12 +167,11 @@ enum TspProviderResponseStatus {
FAILURE
NOT_SEND
QUEUED
REVOKED
}
enum TspProviderRequestType {
MAIN
UPDATE
ORIGINAL
CORRECTION
REVOKE
RETURN
}
+18 -12
View File
@@ -1,9 +1,11 @@
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)
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)
type TspProviderRequestType
tax_id String? @unique @db.VarChar(32)
notes String? @db.Text
unknown_customer Json? @db.Json
@@ -11,6 +13,10 @@ model SalesInvoice {
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)
reference_invoice SalesInvoice? @relation("SalesInvoiceReference", fields: [ref_id], references: [id])
customer_id String?
customer Customer? @relation(fields: [customer_id], references: [id])
@@ -20,11 +26,14 @@ model SalesInvoice {
pos_id String
pos Pos @relation(fields: [pos_id], references: [id])
items SalesInvoiceItem[]
payments SalesInvoicePayment[]
tsp_attempts SaleInvoiceTspAttempts[]
referenced_by SalesInvoice? @relation("SalesInvoiceReference")
items SalesInvoiceItem[]
payments SalesInvoicePayment[]
tsp_attempts SaleInvoiceTspAttempts[]
@@unique([invoice_number, pos_id])
@@index([ref_id])
@@index([tax_id])
@@map("sales_invoices")
}
@@ -62,12 +71,10 @@ model SaleInvoiceTspAttempts {
attempt_no Int
status TspProviderResponseStatus
tax_id String? @unique @db.VarChar(191)
type TspProviderRequestType
request_payload Json?
response_payload Json?
error_message String? @db.Text
message String @db.Text
sent_at DateTime? @db.Timestamp(0)
received_at DateTime? @db.Timestamp(0)
@@ -78,7 +85,6 @@ model SaleInvoiceTspAttempts {
@@unique([invoice_id, attempt_no])
@@index([status])
@@index([tax_id])
@@index([invoice_id])
@@map("sale_invoice_tsp_attempts")
}