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,3 +1,9 @@
import {
CustomerType,
FiscalInvoiceCustomerType,
FiscalRequestType,
PartnerFiscalSwitchType,
} from '@/generated/prisma/enums'
import { ApiProperty } from '@nestjs/swagger'
import { Type } from 'class-transformer'
import {
@@ -17,7 +23,67 @@ export enum TaxSendStatus {
PENDING = 'PENDING',
}
export class CustomerLegalInfoDto {
@ApiProperty({ required: true })
@IsString()
name: string
@ApiProperty({ required: true })
@IsString()
economic_code: string
}
export class CustomerIndividualInfoDto {
@ApiProperty({ required: true })
@IsString()
first_name: string
@ApiProperty({ required: true })
@IsString()
last_name: string
@ApiProperty({ required: true })
@IsString()
national_id: string
@ApiProperty({ required: true })
@IsString()
mobile_number: string
}
export class CustomerInfoDto {
@ApiProperty({ required: true, enum: CustomerType })
@IsEnum(CustomerType)
type: CustomerType
@ApiProperty({})
@Type(() => CustomerLegalInfoDto)
@ValidateNested({ each: true })
legal_info?: CustomerLegalInfoDto
@ApiProperty({})
@Type(() => CustomerIndividualInfoDto)
@ValidateNested({ each: true })
individual_info?: CustomerIndividualInfoDto
}
export class TaxSwitchSendItemPayloadDto {
@ApiProperty({ required: true })
@IsString()
sku: string
@ApiProperty({ required: true })
@IsString()
sku_vat: string
@ApiProperty()
@IsOptional()
@IsString()
discount: string
@ApiProperty({ required: true })
@IsNumber()
unit_price: number
@ApiProperty()
@IsString()
invoice_item_id: string
@@ -26,17 +92,13 @@ export class TaxSwitchSendItemPayloadDto {
@IsNumber()
quantity: number
@ApiProperty()
@IsNumber()
unit_price: number
@ApiProperty()
@IsNumber()
total_amount: number
@ApiProperty()
@ApiProperty({ required: true })
@IsString()
unit_type: string
measure_unit: string
@ApiProperty({ required: false, nullable: true })
@IsOptional()
@@ -52,41 +114,48 @@ export class TaxSwitchSendItemPayloadDto {
@IsOptional()
@IsObject()
payload?: unknown
@ApiProperty({ required: false, nullable: true, type: Object })
@IsOptional()
@IsObject()
good_snapshot?: unknown
}
export class TaxSwitchSendPayloadDto {
@ApiProperty()
@IsString()
invoice_id: string
@ApiProperty({ required: true, enum: FiscalRequestType })
@IsEnum(FiscalRequestType)
type: FiscalRequestType
@ApiProperty()
@IsString()
invoice_code: string
@ApiProperty({ required: false, nullable: true })
@IsOptional()
@IsDateString()
invoice_date: string | null
@ApiProperty()
@IsNumber()
total_amount: number
@ApiProperty({ required: false, nullable: true })
@IsOptional()
@IsString()
provider_code?: string | null
@ApiProperty({ required: true, enum: FiscalInvoiceCustomerType })
@IsEnum(FiscalInvoiceCustomerType)
customer_type: FiscalInvoiceCustomerType
@ApiProperty({ type: [TaxSwitchSendItemPayloadDto] })
@IsArray()
@ValidateNested({ each: true })
@Type(() => TaxSwitchSendItemPayloadDto)
items: TaxSwitchSendItemPayloadDto[]
@ApiProperty({ required: false })
@Type(() => CustomerInfoDto)
@ValidateNested({ each: true })
customer?: CustomerInfoDto
@ApiProperty({ required: true, nullable: true })
@IsString()
invoice_code: string
@ApiProperty({ required: true, nullable: true })
@IsOptional()
@IsDateString()
invoice_date: Date
@ApiProperty({ required: true, nullable: true })
@IsString()
invoice_id: string
@ApiProperty()
@IsNumber()
total_amount: number
@ApiProperty({ required: true, enum: PartnerFiscalSwitchType })
@IsEnum(PartnerFiscalSwitchType)
provider_code: PartnerFiscalSwitchType
}
export class TaxSwitchSendItemResultDto {