feat: add DTOs and services for tax switch integration

- Created SendBulkSaleInvoicesDto for handling bulk sale invoice requests.
- Implemented TaxSwitchSendPayloadDto and related DTOs for tax switch item payloads and results.
- Developed SalesInvoiceTaxSwitchService to manage tax switch operations, including sending and retrieving tax information.
- Added SalesInvoiceTaxService for handling sales invoice tax logic, including bulk sending and persistence of results.
- Introduced NamaTaxSwitchAdapter to interact with the tax switch service, simulating external API responses.
- Created SendBulkSalesInvoicesDto for POS module to handle bulk sales invoice requests.
This commit is contained in:
2026-04-27 22:11:05 +03:30
parent dee96b6e91
commit 58a7c359d8
68 changed files with 7896 additions and 3534 deletions
@@ -54,13 +54,6 @@ export const ModelName = {
AdminAccount: 'AdminAccount',
Admin: 'Admin',
Account: 'Account',
ConsumerAccount: 'ConsumerAccount',
Consumer: 'Consumer',
ConsumerIndividual: 'ConsumerIndividual',
ConsumerLegal: 'ConsumerLegal',
BusinessActivity: 'BusinessActivity',
Complex: 'Complex',
Pos: 'Pos',
DeviceBrand: 'DeviceBrand',
Device: 'Device',
LicenseChargeTransaction: 'LicenseChargeTransaction',
@@ -81,6 +74,13 @@ export const ModelName = {
Provider: 'Provider',
ConsumerDevices: 'ConsumerDevices',
ApplicationReleasedInfo: 'ApplicationReleasedInfo',
ConsumerAccount: 'ConsumerAccount',
Consumer: 'Consumer',
ConsumerIndividual: 'ConsumerIndividual',
ConsumerLegal: 'ConsumerLegal',
BusinessActivity: 'BusinessActivity',
Complex: 'Complex',
Pos: 'Pos',
TriggerLog: 'TriggerLog',
Customer: 'Customer',
CustomerIndividual: 'CustomerIndividual',
@@ -90,6 +90,8 @@ export const ModelName = {
Guild: 'Guild',
SalesInvoice: 'SalesInvoice',
SalesInvoiceItem: 'SalesInvoiceItem',
SaleInvoiceFiscals: 'SaleInvoiceFiscals',
SaleInvoiceFiscalAttempts: 'SaleInvoiceFiscalAttempts',
SalesInvoicePayment: 'SalesInvoicePayment',
Service: 'Service',
ServiceCategory: 'ServiceCategory'
@@ -146,99 +148,6 @@ export const AccountScalarFieldEnum = {
export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum]
export const ConsumerAccountScalarFieldEnum = {
id: 'id',
role: 'role',
created_at: 'created_at',
updated_at: 'updated_at',
consumer_id: 'consumer_id',
account_id: 'account_id'
} as const
export type ConsumerAccountScalarFieldEnum = (typeof ConsumerAccountScalarFieldEnum)[keyof typeof ConsumerAccountScalarFieldEnum]
export const ConsumerScalarFieldEnum = {
id: 'id',
type: 'type',
status: 'status',
created_at: 'created_at',
updated_at: 'updated_at'
} as const
export type ConsumerScalarFieldEnum = (typeof ConsumerScalarFieldEnum)[keyof typeof ConsumerScalarFieldEnum]
export const ConsumerIndividualScalarFieldEnum = {
first_name: 'first_name',
last_name: 'last_name',
mobile_number: 'mobile_number',
national_code: 'national_code',
created_at: 'created_at',
updated_at: 'updated_at',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerIndividualScalarFieldEnum = (typeof ConsumerIndividualScalarFieldEnum)[keyof typeof ConsumerIndividualScalarFieldEnum]
export const ConsumerLegalScalarFieldEnum = {
name: 'name',
registration_code: 'registration_code',
created_at: 'created_at',
updated_at: 'updated_at',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerLegalScalarFieldEnum = (typeof ConsumerLegalScalarFieldEnum)[keyof typeof ConsumerLegalScalarFieldEnum]
export const BusinessActivityScalarFieldEnum = {
id: 'id',
economic_code: 'economic_code',
name: 'name',
created_at: 'created_at',
updated_at: 'updated_at',
guild_id: 'guild_id',
consumer_id: 'consumer_id'
} as const
export type BusinessActivityScalarFieldEnum = (typeof BusinessActivityScalarFieldEnum)[keyof typeof BusinessActivityScalarFieldEnum]
export const ComplexScalarFieldEnum = {
id: 'id',
name: 'name',
branch_code: 'branch_code',
address: 'address',
created_at: 'created_at',
updated_at: 'updated_at',
business_activity_id: 'business_activity_id'
} as const
export type ComplexScalarFieldEnum = (typeof ComplexScalarFieldEnum)[keyof typeof ComplexScalarFieldEnum]
export const PosScalarFieldEnum = {
id: 'id',
name: 'name',
model: 'model',
serial_number: 'serial_number',
status: 'status',
pos_type: 'pos_type',
created_at: 'created_at',
updated_at: 'updated_at',
complex_id: 'complex_id',
device_id: 'device_id',
provider_id: 'provider_id',
account_id: 'account_id'
} as const
export type PosScalarFieldEnum = (typeof PosScalarFieldEnum)[keyof typeof PosScalarFieldEnum]
export const DeviceBrandScalarFieldEnum = {
id: 'id',
name: 'name',
@@ -484,6 +393,101 @@ export const ApplicationReleasedInfoScalarFieldEnum = {
export type ApplicationReleasedInfoScalarFieldEnum = (typeof ApplicationReleasedInfoScalarFieldEnum)[keyof typeof ApplicationReleasedInfoScalarFieldEnum]
export const ConsumerAccountScalarFieldEnum = {
id: 'id',
role: 'role',
created_at: 'created_at',
updated_at: 'updated_at',
consumer_id: 'consumer_id',
account_id: 'account_id'
} as const
export type ConsumerAccountScalarFieldEnum = (typeof ConsumerAccountScalarFieldEnum)[keyof typeof ConsumerAccountScalarFieldEnum]
export const ConsumerScalarFieldEnum = {
id: 'id',
type: 'type',
status: 'status',
created_at: 'created_at',
updated_at: 'updated_at'
} as const
export type ConsumerScalarFieldEnum = (typeof ConsumerScalarFieldEnum)[keyof typeof ConsumerScalarFieldEnum]
export const ConsumerIndividualScalarFieldEnum = {
first_name: 'first_name',
last_name: 'last_name',
mobile_number: 'mobile_number',
national_code: 'national_code',
created_at: 'created_at',
updated_at: 'updated_at',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerIndividualScalarFieldEnum = (typeof ConsumerIndividualScalarFieldEnum)[keyof typeof ConsumerIndividualScalarFieldEnum]
export const ConsumerLegalScalarFieldEnum = {
name: 'name',
registration_code: 'registration_code',
created_at: 'created_at',
updated_at: 'updated_at',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerLegalScalarFieldEnum = (typeof ConsumerLegalScalarFieldEnum)[keyof typeof ConsumerLegalScalarFieldEnum]
export const BusinessActivityScalarFieldEnum = {
id: 'id',
economic_code: 'economic_code',
name: 'name',
fiscal_id: 'fiscal_id',
partner_token: 'partner_token',
created_at: 'created_at',
updated_at: 'updated_at',
guild_id: 'guild_id',
consumer_id: 'consumer_id'
} as const
export type BusinessActivityScalarFieldEnum = (typeof BusinessActivityScalarFieldEnum)[keyof typeof BusinessActivityScalarFieldEnum]
export const ComplexScalarFieldEnum = {
id: 'id',
name: 'name',
branch_code: 'branch_code',
address: 'address',
created_at: 'created_at',
updated_at: 'updated_at',
business_activity_id: 'business_activity_id'
} as const
export type ComplexScalarFieldEnum = (typeof ComplexScalarFieldEnum)[keyof typeof ComplexScalarFieldEnum]
export const PosScalarFieldEnum = {
id: 'id',
name: 'name',
model: 'model',
serial_number: 'serial_number',
status: 'status',
pos_type: 'pos_type',
created_at: 'created_at',
updated_at: 'updated_at',
complex_id: 'complex_id',
device_id: 'device_id',
provider_id: 'provider_id',
account_id: 'account_id'
} as const
export type PosScalarFieldEnum = (typeof PosScalarFieldEnum)[keyof typeof PosScalarFieldEnum]
export const TriggerLogScalarFieldEnum = {
id: 'id',
message: 'message',
@@ -585,13 +589,14 @@ export const SalesInvoiceScalarFieldEnum = {
id: 'id',
code: 'code',
total_amount: 'total_amount',
invoice_number: 'invoice_number',
invoice_date: 'invoice_date',
notes: 'notes',
unknown_customer: 'unknown_customer',
invoice_date: 'invoice_date',
created_at: 'created_at',
updated_at: 'updated_at',
customer_id: 'customer_id',
account_id: 'account_id',
consumer_account_id: 'consumer_account_id',
pos_id: 'pos_id'
} as const
@@ -607,22 +612,52 @@ export const SalesInvoiceItemScalarFieldEnum = {
created_at: 'created_at',
discount: 'discount',
notes: 'notes',
payload: 'payload',
good_snapshot: 'good_snapshot',
invoice_id: 'invoice_id',
good_id: 'good_id',
service_id: 'service_id',
payload: 'payload'
service_id: 'service_id'
} as const
export type SalesInvoiceItemScalarFieldEnum = (typeof SalesInvoiceItemScalarFieldEnum)[keyof typeof SalesInvoiceItemScalarFieldEnum]
export const SaleInvoiceFiscalsScalarFieldEnum = {
id: 'id',
retry_count: 'retry_count',
last_attempt_at: 'last_attempt_at',
created_at: 'created_at',
updated_at: 'updated_at',
invoice_id: 'invoice_id'
} as const
export type SaleInvoiceFiscalsScalarFieldEnum = (typeof SaleInvoiceFiscalsScalarFieldEnum)[keyof typeof SaleInvoiceFiscalsScalarFieldEnum]
export const SaleInvoiceFiscalAttemptsScalarFieldEnum = {
id: 'id',
attempt_no: 'attempt_no',
status: 'status',
tax_id: 'tax_id',
request_payload: 'request_payload',
response_payload: 'response_payload',
error_message: 'error_message',
sent_at: 'sent_at',
received_at: 'received_at',
created_at: 'created_at',
fiscal_id: 'fiscal_id'
} as const
export type SaleInvoiceFiscalAttemptsScalarFieldEnum = (typeof SaleInvoiceFiscalAttemptsScalarFieldEnum)[keyof typeof SaleInvoiceFiscalAttemptsScalarFieldEnum]
export const SalesInvoicePaymentScalarFieldEnum = {
id: 'id',
invoice_id: 'invoice_id',
amount: 'amount',
payment_method: 'payment_method',
paid_at: 'paid_at',
created_at: 'created_at'
created_at: 'created_at',
invoice_id: 'invoice_id'
} as const
export type SalesInvoicePaymentScalarFieldEnum = (typeof SalesInvoicePaymentScalarFieldEnum)[keyof typeof SalesInvoicePaymentScalarFieldEnum]
@@ -715,80 +750,6 @@ export const AccountOrderByRelevanceFieldEnum = {
export type AccountOrderByRelevanceFieldEnum = (typeof AccountOrderByRelevanceFieldEnum)[keyof typeof AccountOrderByRelevanceFieldEnum]
export const ConsumerAccountOrderByRelevanceFieldEnum = {
id: 'id',
consumer_id: 'consumer_id',
account_id: 'account_id'
} as const
export type ConsumerAccountOrderByRelevanceFieldEnum = (typeof ConsumerAccountOrderByRelevanceFieldEnum)[keyof typeof ConsumerAccountOrderByRelevanceFieldEnum]
export const ConsumerOrderByRelevanceFieldEnum = {
id: 'id'
} as const
export type ConsumerOrderByRelevanceFieldEnum = (typeof ConsumerOrderByRelevanceFieldEnum)[keyof typeof ConsumerOrderByRelevanceFieldEnum]
export const ConsumerIndividualOrderByRelevanceFieldEnum = {
first_name: 'first_name',
last_name: 'last_name',
mobile_number: 'mobile_number',
national_code: 'national_code',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerIndividualOrderByRelevanceFieldEnum = (typeof ConsumerIndividualOrderByRelevanceFieldEnum)[keyof typeof ConsumerIndividualOrderByRelevanceFieldEnum]
export const ConsumerLegalOrderByRelevanceFieldEnum = {
name: 'name',
registration_code: 'registration_code',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerLegalOrderByRelevanceFieldEnum = (typeof ConsumerLegalOrderByRelevanceFieldEnum)[keyof typeof ConsumerLegalOrderByRelevanceFieldEnum]
export const BusinessActivityOrderByRelevanceFieldEnum = {
id: 'id',
economic_code: 'economic_code',
name: 'name',
guild_id: 'guild_id',
consumer_id: 'consumer_id'
} as const
export type BusinessActivityOrderByRelevanceFieldEnum = (typeof BusinessActivityOrderByRelevanceFieldEnum)[keyof typeof BusinessActivityOrderByRelevanceFieldEnum]
export const ComplexOrderByRelevanceFieldEnum = {
id: 'id',
name: 'name',
branch_code: 'branch_code',
address: 'address',
business_activity_id: 'business_activity_id'
} as const
export type ComplexOrderByRelevanceFieldEnum = (typeof ComplexOrderByRelevanceFieldEnum)[keyof typeof ComplexOrderByRelevanceFieldEnum]
export const PosOrderByRelevanceFieldEnum = {
id: 'id',
name: 'name',
model: 'model',
serial_number: 'serial_number',
complex_id: 'complex_id',
device_id: 'device_id',
provider_id: 'provider_id',
account_id: 'account_id'
} as const
export type PosOrderByRelevanceFieldEnum = (typeof PosOrderByRelevanceFieldEnum)[keyof typeof PosOrderByRelevanceFieldEnum]
export const DeviceBrandOrderByRelevanceFieldEnum = {
id: 'id',
name: 'name'
@@ -996,6 +957,82 @@ export const ApplicationReleasedInfoOrderByRelevanceFieldEnum = {
export type ApplicationReleasedInfoOrderByRelevanceFieldEnum = (typeof ApplicationReleasedInfoOrderByRelevanceFieldEnum)[keyof typeof ApplicationReleasedInfoOrderByRelevanceFieldEnum]
export const ConsumerAccountOrderByRelevanceFieldEnum = {
id: 'id',
consumer_id: 'consumer_id',
account_id: 'account_id'
} as const
export type ConsumerAccountOrderByRelevanceFieldEnum = (typeof ConsumerAccountOrderByRelevanceFieldEnum)[keyof typeof ConsumerAccountOrderByRelevanceFieldEnum]
export const ConsumerOrderByRelevanceFieldEnum = {
id: 'id'
} as const
export type ConsumerOrderByRelevanceFieldEnum = (typeof ConsumerOrderByRelevanceFieldEnum)[keyof typeof ConsumerOrderByRelevanceFieldEnum]
export const ConsumerIndividualOrderByRelevanceFieldEnum = {
first_name: 'first_name',
last_name: 'last_name',
mobile_number: 'mobile_number',
national_code: 'national_code',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerIndividualOrderByRelevanceFieldEnum = (typeof ConsumerIndividualOrderByRelevanceFieldEnum)[keyof typeof ConsumerIndividualOrderByRelevanceFieldEnum]
export const ConsumerLegalOrderByRelevanceFieldEnum = {
name: 'name',
registration_code: 'registration_code',
partner_id: 'partner_id',
consumer_id: 'consumer_id'
} as const
export type ConsumerLegalOrderByRelevanceFieldEnum = (typeof ConsumerLegalOrderByRelevanceFieldEnum)[keyof typeof ConsumerLegalOrderByRelevanceFieldEnum]
export const BusinessActivityOrderByRelevanceFieldEnum = {
id: 'id',
economic_code: 'economic_code',
name: 'name',
fiscal_id: 'fiscal_id',
partner_token: 'partner_token',
guild_id: 'guild_id',
consumer_id: 'consumer_id'
} as const
export type BusinessActivityOrderByRelevanceFieldEnum = (typeof BusinessActivityOrderByRelevanceFieldEnum)[keyof typeof BusinessActivityOrderByRelevanceFieldEnum]
export const ComplexOrderByRelevanceFieldEnum = {
id: 'id',
name: 'name',
branch_code: 'branch_code',
address: 'address',
business_activity_id: 'business_activity_id'
} as const
export type ComplexOrderByRelevanceFieldEnum = (typeof ComplexOrderByRelevanceFieldEnum)[keyof typeof ComplexOrderByRelevanceFieldEnum]
export const PosOrderByRelevanceFieldEnum = {
id: 'id',
name: 'name',
model: 'model',
serial_number: 'serial_number',
complex_id: 'complex_id',
device_id: 'device_id',
provider_id: 'provider_id',
account_id: 'account_id'
} as const
export type PosOrderByRelevanceFieldEnum = (typeof PosOrderByRelevanceFieldEnum)[keyof typeof PosOrderByRelevanceFieldEnum]
export const TriggerLogOrderByRelevanceFieldEnum = {
message: 'message',
name: 'name'
@@ -1078,7 +1115,7 @@ export const SalesInvoiceOrderByRelevanceFieldEnum = {
code: 'code',
notes: 'notes',
customer_id: 'customer_id',
account_id: 'account_id',
consumer_account_id: 'consumer_account_id',
pos_id: 'pos_id'
} as const
@@ -1096,6 +1133,25 @@ export const SalesInvoiceItemOrderByRelevanceFieldEnum = {
export type SalesInvoiceItemOrderByRelevanceFieldEnum = (typeof SalesInvoiceItemOrderByRelevanceFieldEnum)[keyof typeof SalesInvoiceItemOrderByRelevanceFieldEnum]
export const SaleInvoiceFiscalsOrderByRelevanceFieldEnum = {
id: 'id',
invoice_id: 'invoice_id'
} as const
export type SaleInvoiceFiscalsOrderByRelevanceFieldEnum = (typeof SaleInvoiceFiscalsOrderByRelevanceFieldEnum)[keyof typeof SaleInvoiceFiscalsOrderByRelevanceFieldEnum]
export const SaleInvoiceFiscalAttemptsOrderByRelevanceFieldEnum = {
id: 'id',
status: 'status',
tax_id: 'tax_id',
error_message: 'error_message',
fiscal_id: 'fiscal_id'
} as const
export type SaleInvoiceFiscalAttemptsOrderByRelevanceFieldEnum = (typeof SaleInvoiceFiscalAttemptsOrderByRelevanceFieldEnum)[keyof typeof SaleInvoiceFiscalAttemptsOrderByRelevanceFieldEnum]
export const SalesInvoicePaymentOrderByRelevanceFieldEnum = {
id: 'id',
invoice_id: 'invoice_id'