update migrations and create base migration. set discount and tax to sale invoices

This commit is contained in:
2026-05-28 16:39:07 +03:30
parent cd3492d625
commit a975f9d02a
55 changed files with 2152 additions and 2278 deletions
@@ -1,4 +1,4 @@
import { SKUGuildType } from '@/generated/prisma/enums'
import { SKUGuildType } from '@/common/enums/enums'
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'
import { Type } from 'class-transformer'
import { IsBoolean, IsEnum, IsNumber, IsString, Min } from 'class-validator'
@@ -1,5 +1,5 @@
import { SharedSaleInvoiceActionsService } from '@/common/services/saleInvoices/sale-invoice-actions.service'
import { ResponseMapper } from '@/common/response/response-mapper'
import { SharedSaleInvoiceActionsService } from '@/common/services/saleInvoices/sale-invoice-actions.service'
import { SalesInvoiceWhereInput } from '@/generated/prisma/models'
import { PrismaService } from '@/prisma/prisma.service'
import { Injectable, NotFoundException } from '@nestjs/common'
@@ -42,7 +42,8 @@ export class SalesInvoicesService {
measure_unit_code: true,
measure_unit_text: true,
sku_code: true,
discount: true,
discount_amount: true,
tax_amount: true,
notes: true,
quantity: true,
total_amount: true,
@@ -123,8 +123,9 @@ export class CustomerSaleInvoicesService {
id: true,
notes: true,
unit_price: true,
discount: true,
quantity: true,
discount_amount: true,
tax_amount: true,
total_amount: true,
payload: true,
good: {
+1 -7
View File
@@ -4,7 +4,6 @@ import {
AccountStatus,
AccountType,
ApplicationPlatform,
ApplicationPublisher,
ApplicationReleaseType,
BusinessRole,
ComplexRole,
@@ -21,13 +20,12 @@ import {
POSStatus,
POSType,
ProviderRole,
SKUGuildType,
TspProviderRequestType,
TspProviderResponseStatus,
TspProviderType,
} from '@/generated/prisma/enums'
import { Injectable } from '@nestjs/common'
import { GoldKarat, TspProviderCustomerType } from 'common/enums/enums'
import { GoldKarat, SKUGuildType, TspProviderCustomerType } from 'common/enums/enums'
import { ResponseMapper } from 'common/response/response-mapper'
@Injectable()
@@ -69,10 +67,6 @@ export class EnumsService {
ApplicationReleaseType,
'ApplicationReleaseType',
),
ApplicationPublisher: this.prepareData(
ApplicationPublisher,
'ApplicationPublisher',
),
CustomerType: this.prepareData(CustomerType, 'CustomerType'),
TspProviderResponseStatus: this.prepareData(
TspProviderResponseStatus,
+2 -1
View File
@@ -89,7 +89,8 @@ export class InvoicesService {
quantity: true,
total_amount: true,
unit_price: true,
discount: true,
discount_amount: true,
tax_amount: true,
payload: true,
sku_code: true,
sku_vat: true,
@@ -17,32 +17,44 @@ export class StatisticsService {
const [item] = await this.prisma.$queryRaw<
Array<{
all_amount_sum: number | null
all_tax_sum: number | null
all_count: number | null
success_amount_sum: number | null
success_tax_sum: number | null
success_count: number | null
failure_amount_sum: number | null
failure_tax_sum: number | null
failure_count: number | null
pending_amount_sum: number | null
pending_tax_sum: number | null
pending_count: number | null
not_sended_amount_sum: number | null
not_sended_tax_sum: number | null
not_sended_count: number | null
not_original_amount_sum: number | null
not_original_tax_sum: number | null
not_original_count: number | null
}>
>`
SELECT
SUM(si.total_amount) AS all_amount_sum,
SUM(si.tax_amount) AS all_tax_sum,
si.type,
COUNT(*) AS all_count,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.SUCCESS} THEN si.total_amount ELSE 0 END) AS success_amount_sum,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.SUCCESS} THEN si.tax_amount ELSE 0 END) AS success_tax_sum,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.SUCCESS} THEN 1 ELSE 0 END) AS success_count,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.FAILURE} THEN si.total_amount ELSE 0 END) AS failure_amount_sum,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.FAILURE} THEN si.tax_amount ELSE 0 END) AS failure_tax_sum,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.FAILURE} THEN 1 ELSE 0 END) AS failure_count,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.QUEUED} THEN si.total_amount ELSE 0 END) AS pending_amount_sum,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.QUEUED} THEN si.tax_amount ELSE 0 END) AS pending_tax_sum,
SUM(CASE WHEN la.status = ${TspProviderResponseStatus.QUEUED} THEN 1 ELSE 0 END) AS pending_count,
SUM(CASE WHEN la.status IS NULL THEN si.total_amount ELSE 0 END) AS not_sended_amount_sum,
SUM(CASE WHEN la.status IS NULL THEN si.tax_amount ELSE 0 END) AS not_sended_tax_sum,
SUM(CASE WHEN la.status IS NULL THEN 1 ELSE 0 END) AS not_sended_count,
SUM(CASE WHEN si.type <> ${TspProviderRequestType.ORIGINAL} THEN si.total_amount ELSE 0 END) AS not_original_amount_sum,
SUM(CASE WHEN si.type <> ${TspProviderRequestType.ORIGINAL} THEN si.tax_amount ELSE 0 END) AS not_original_tax_sum,
SUM(CASE WHEN si.type <> ${TspProviderRequestType.ORIGINAL} THEN 1 ELSE 0 END) AS not_original_count
FROM sales_invoices si
INNER JOIN poses p ON p.id = si.pos_id
@@ -74,32 +86,32 @@ export class StatisticsService {
return ResponseMapper.single({
all: {
total_amount: Number(item?.all_amount_sum || 0),
total_tax: Number(0),
total_tax: Number(item?.all_tax_sum),
count: Number(item?.all_count || 0),
},
success: {
total_amount: Number(item?.success_amount_sum || 0),
total_tax: Number(0),
tax_amount: Number(item?.success_tax_sum || 0),
count: Number(item?.success_count || 0),
},
failure: {
total_amount: Number(item?.failure_amount_sum || 0),
total_tax: Number(0),
tax_amount: Number(item?.failure_tax_sum || 0),
count: Number(item?.failure_count || 0),
},
pending: {
total_amount: Number(item?.pending_amount_sum || 0),
total_tax: Number(0),
tax_amount: Number(item?.pending_tax_sum || 0),
count: Number(item?.pending_count || 0),
},
not_sended: {
total_amount: Number(item?.not_sended_amount_sum || 0),
total_tax: Number(0),
tax_amount: Number(item?.not_sended_tax_sum || 0),
count: Number(item?.not_sended_count || 0),
},
not_original: {
total_amount: Number(item?.not_original_amount_sum || 0),
total_tax: Number(0),
tax_amount: Number(item?.not_original_tax_sum || 0),
count: Number(item?.not_original_count || 0),
},
})
@@ -26,6 +26,14 @@ export class TspProviderCorrectionInvoicePayloadDto {
@IsNumber()
total_amount: number
@ApiProperty()
@IsNumber()
discount_amount: number
@ApiProperty()
@IsNumber()
tax_amount: number
@ApiProperty({ required: true, type: SharedCreateSalesInvoicePaymentsDto })
@IsObject()
@ValidateNested({ each: true })
@@ -207,6 +207,8 @@ export class SalesInvoiceTspService {
payments: dataToUpdate.payments,
items: dataToUpdate.items,
total_amount: dataToUpdate.total_amount,
discount_amount: dataToUpdate.discount_amount,
tax_amount: dataToUpdate.tax_amount,
customer_id: relatedInvoice.customer_id || undefined,
settlement_type: relatedInvoice.settlement_type,
},
@@ -396,7 +398,8 @@ export class SalesInvoiceTspService {
unit_price: Number(item.unit_price),
quantity: Number(item.quantity),
total_amount: Number(item.total_amount),
discount_amount: Number(item.discount || 0),
discount_amount: Number(item.discount_amount || 0),
tax_amount: Number(item.tax_amount || 0),
invoice_id: '',
good_id: item.good_id,
service_id: item.service_id || undefined,
@@ -404,6 +407,8 @@ export class SalesInvoiceTspService {
notes: item.notes || '',
})),
total_amount: Number(relatedInvoice.total_amount),
discount_amount: Number(relatedInvoice.discount_amount),
tax_amount: Number(relatedInvoice.tax_amount),
customer_id: relatedInvoice.customer_id || undefined,
},
businessId,
@@ -324,7 +324,8 @@ export async function buildOriginalPayload(
sku_vat: true,
good_id: true,
service_id: true,
discount: true,
discount_amount: true,
tax_amount: true,
payload: true,
good_snapshot: true,
},