feat: add stock keeping unit management with create, update, and retrieval functionalities

- Implemented CreateStockKeepingUnitDto for creating stock keeping units.
- Added StockKeepingUnitsService for handling business logic related to stock keeping units.
- Created StockKeepingUnitsController to manage HTTP requests for stock keeping units.
- Developed UpdateStockKeepingUnitDto for updating existing stock keeping units.
- Introduced StockKeepingUnitsServiceFindAllResponseDto for response structure.
- Established stock keeping units module for encapsulation of related components.

feat: enhance sales invoice fiscal management with new endpoints

- Created SalesInvoicesFilterDto for filtering sales invoices.
- Implemented PosSalesInvoiceFiscalController for managing fiscal operations on sales invoices.
- Developed PosSalesInvoiceFiscalService to handle fiscal logic and interactions.
- Added methods for sending, retrying, and checking the status of fiscal invoices.
- Integrated error handling and response mapping for fiscal operations.
This commit is contained in:
2026-05-01 19:43:59 +03:30
parent a68a7f594d
commit ad470d2166
91 changed files with 8973 additions and 2469 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ model AdminAccount {
admin Admin @relation(fields: [admin_id], references: [id])
account_id String @unique
account Account @relation(fields: [account_id], references: [id])
account Account @relation(fields: [account_id], references: [id], onDelete: Cascade)
@@map("admin_accounts")
}
+12
View File
@@ -10,6 +10,18 @@ model Account {
partner_account PartnerAccount?
consumer_account ConsumerAccount?
// admin_account_id String? @unique
// admin_account AdminAccount? @relation(fields: [admin_account_id], references: [id], onDelete: Cascade)
// provider_account_id String? @unique
// provider_account ProviderAccount? @relation(fields: [provider_account_id], references: [id], onDelete: Cascade)
// partner_account_id String? @unique
// partner_account PartnerAccount? @relation(fields: [partner_account_id], references: [id], onDelete: Cascade)
// consumer_account_id String? @unique
// consumer_account ConsumerAccount? @relation(fields: [consumer_account_id], references: [id], onDelete: Cascade)
// tokens Token[]
// refresh_tokens RefreshToken[]
+1 -1
View File
@@ -9,7 +9,7 @@ model PartnerAccount {
partner Partner @relation(fields: [partner_id], references: [id])
account_id String @unique
account Account @relation(fields: [account_id], references: [id])
account Account @relation(fields: [account_id], references: [id], onDelete: Cascade)
@@map("partner_accounts")
}
+1 -1
View File
@@ -9,7 +9,7 @@ model ProviderAccount {
provider Provider @relation(fields: [provider_id], references: [id])
account_id String @unique
account Account @relation(fields: [account_id], references: [id])
account Account @relation(fields: [account_id], references: [id], onDelete: Cascade)
@@map("provider_accounts")
}
@@ -2,8 +2,6 @@ model Good {
id String @id @default(ulid())
name String @db.VarChar(255)
is_default_guild_good Boolean @default(false)
sku String @db.VarChar(100)
unit_type UnitType
pricing_model GoodPricingModel
description String? @db.Text
local_sku String? @unique() @db.VarChar(100)
@@ -15,6 +13,12 @@ model Good {
updated_at DateTime @updatedAt @db.Timestamp(0)
deleted_at DateTime? @db.Timestamp(0)
sku_id String
sku StockKeepingUnits @relation(fields: [sku_id], references: [id])
measure_unit_id String
measure_unit MeasureUnits @relation(fields: [measure_unit_id], references: [id])
category_id String?
category GoodCategory? @relation(fields: [category_id], references: [id])
@@ -0,0 +1,12 @@
model MeasureUnits {
id String @id @default(ulid())
code String @unique
name String
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)
goods Good[]
@@map("measure_units")
}
+17
View File
@@ -0,0 +1,17 @@
model StockKeepingUnits {
id String @id @default(ulid())
code String @unique
name String
VAT Decimal @db.Decimal(5, 2)
type SKUGuildType @default(GOLD)
is_public Boolean @default(true)
is_domestic Boolean @default(false)
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
goods Good[]
@@index([code])
@@map("stock_keeping_units")
}
+1 -1
View File
@@ -36,7 +36,7 @@ model CustomerIndividual {
}
model CustomerLegal {
company_name String @db.VarChar(255)
name String @db.VarChar(255)
economic_code String @db.Char(10)
registration_number String? @db.Char(20)
postal_code String @db.Char(10)
+17
View File
@@ -165,4 +165,21 @@ enum FiscalResponseStatus {
SUCCESS
FAILURE
NOT_SEND
QUEUED
}
enum FiscalRequestType {
MAIN
UPDATE
REVOKE
REMOVE
}
enum FiscalInvoiceCustomerType {
Unknown
Known
}
enum SKUGuildType {
GOLD
}
+14 -10
View File
@@ -30,14 +30,17 @@ model SalesInvoice {
}
model SalesInvoiceItem {
id String @id @default(ulid())
quantity Decimal @db.Decimal(10, 0)
unit_type UnitType
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
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?
@@ -76,8 +79,9 @@ model SaleInvoiceFiscalAttempts {
id String @id @default(ulid())
attempt_no Int
status String @db.VarChar(50)
tax_id String? @unique @db.VarChar(191)
status FiscalResponseStatus
tax_id String? @unique @db.VarChar(191)
type FiscalRequestType
request_payload Json?
response_payload Json?