update migrations and create base migration. set discount and tax to sale invoices
This commit is contained in:
@@ -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'
|
||||
|
||||
+3
-2
@@ -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: {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user