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
@@ -35,7 +35,9 @@ export class SalesInvoicesService {
items: {
select: {
unit_type: true,
measure_unit_code: true,
measure_unit_text: true,
sku_code: true,
discount: true,
notes: true,
quantity: true,
@@ -46,11 +48,21 @@ export class SalesInvoicesService {
select: {
id: true,
name: true,
sku: true,
sku: {
select: {
id: true,
name: true,
},
},
barcode: true,
local_sku: true,
pricing_model: true,
unit_type: true,
measure_unit: {
select: {
id: true,
name: true,
},
},
category: {
select: {
id: true,
@@ -1,4 +1,4 @@
import { GoodPricingModel, UnitType } from '@/generated/prisma/enums'
import { GoodPricingModel } from '@/generated/prisma/enums'
import { ApiProperty, PartialType } from '@nestjs/swagger'
import { IsEnum, IsOptional, IsString } from 'class-validator'
@@ -9,15 +9,15 @@ export class CreateGoodDto {
@IsString()
@ApiProperty({ required: true })
sku: string
sku_id: string
@IsString()
@ApiProperty({ required: true })
category_id: string
@IsEnum(UnitType)
@ApiProperty({ required: true, enum: UnitType })
unit_type: UnitType
@ApiProperty({ required: true })
@IsString()
measure_unit_id: string
@IsEnum(GoodPricingModel)
@ApiProperty({ required: true, enum: GoodPricingModel })
@@ -12,11 +12,21 @@ export class ConsumerBusinessActivityGoodsService {
id: true,
name: true,
barcode: true,
sku: true,
local_sku: true,
pricing_model: true,
unit_type: true,
image_url: true,
sku: {
select: {
id: true,
name: true,
},
},
measure_unit: {
select: {
id: true,
name: true,
},
},
category: {
select: {
id: true,
@@ -55,7 +65,7 @@ export class ConsumerBusinessActivityGoodsService {
}
async create(business_activity_id: string, data: CreateGoodDto) {
const { category_id, ...rest } = data
const { category_id, sku_id, measure_unit_id, ...rest } = data
const good = await this.prisma.good.create({
data: {
@@ -70,6 +80,16 @@ export class ConsumerBusinessActivityGoodsService {
id: category_id,
},
},
sku: {
connect: {
id: sku_id,
},
},
measure_unit: {
connect: {
id: measure_unit_id,
},
},
},
})
return ResponseMapper.create(good)
@@ -81,7 +101,7 @@ export class ConsumerBusinessActivityGoodsService {
id: string,
data: UpdateGoodDto,
) {
const { category_id, ...rest } = data
const { category_id, sku_id, measure_unit_id, ...rest } = data
const good = await this.prisma.good.update({
where: {
business_activity: {
@@ -101,6 +121,16 @@ export class ConsumerBusinessActivityGoodsService {
id: category_id,
},
},
sku: {
connect: {
id: sku_id,
},
},
measure_unit: {
connect: {
id: measure_unit_id,
},
},
...rest,
},
})