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
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -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'