update migrations and create base migration. set discount and tax to sale invoices
This commit is contained in:
@@ -13,7 +13,8 @@ import {
|
||||
IsObject,
|
||||
IsOptional,
|
||||
IsString,
|
||||
ValidateNested,
|
||||
Min,
|
||||
ValidateNested
|
||||
} from 'class-validator'
|
||||
import {
|
||||
CustomerInfoDto,
|
||||
@@ -45,12 +46,18 @@ export class TspProviderOriginalItemPayloadDto {
|
||||
|
||||
@ApiProperty()
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
total_amount: number
|
||||
|
||||
@ApiProperty()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
discount: string
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
discount_amount: number
|
||||
|
||||
@ApiProperty()
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
tax_amount: number
|
||||
|
||||
@ApiProperty({ required: true })
|
||||
@IsString()
|
||||
@@ -116,8 +123,19 @@ export class TspProviderOriginalSendPayloadDto {
|
||||
|
||||
@ApiProperty()
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
total_amount: number
|
||||
|
||||
@ApiProperty()
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
discount_amount: number
|
||||
|
||||
@ApiProperty()
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
tax_amount: number
|
||||
|
||||
@ApiProperty({ type: [TspProviderOriginalItemPayloadDto] })
|
||||
@IsArray()
|
||||
@ValidateNested({ each: true })
|
||||
|
||||
@@ -159,20 +159,30 @@ export class NamaProviderCommonBodyDto {
|
||||
@ApiProperty({
|
||||
description: ' اجرت ساخت (طلا)',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
consfee: string
|
||||
consfee?: string
|
||||
|
||||
@ApiProperty({
|
||||
description: 'حق العمل',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
bros: string
|
||||
bros?: string
|
||||
|
||||
@ApiProperty({
|
||||
description: 'سود فروشنده',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
spro: string
|
||||
spro?: string
|
||||
|
||||
@ApiProperty({
|
||||
description: 'مجموع سود، حقالعمل و اجرت',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
tcpbs?: string
|
||||
}
|
||||
|
||||
export class NamaProviderApiErrorItemDto {
|
||||
|
||||
@@ -110,6 +110,10 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
|
||||
|
||||
return result
|
||||
} catch (err) {
|
||||
console.log('err@@@@@@@@@@@@@@@@@@', err);
|
||||
console.log(JSON.parse(JSON.stringify(mappedRequest)));
|
||||
|
||||
|
||||
const failure: TspProviderOriginalResponseDto = {
|
||||
invoice_id: payload.id,
|
||||
provider_request_payload: JSON.parse(JSON.stringify(mappedRequest)),
|
||||
|
||||
@@ -12,10 +12,11 @@ import {
|
||||
PaymentInfoDto,
|
||||
TspProviderCorrectionSendPayloadDto,
|
||||
TspProviderOriginalSendPayloadDto,
|
||||
TspProviderRevokePayloadDto,
|
||||
TspProviderRevokePayloadDto
|
||||
} from '../../dto'
|
||||
import {
|
||||
NamaProviderCorrectionRequestDto,
|
||||
NamaProviderOriginalBodyItemDto,
|
||||
NamaProviderOriginalRequestDto,
|
||||
NamaProviderPaymentInfoDto,
|
||||
NamaProviderResponseStatus,
|
||||
@@ -62,18 +63,35 @@ export class NamaProviderUtils {
|
||||
),
|
||||
...this.mapCustomerInfo(payload.customer),
|
||||
},
|
||||
body: payload.items.map(item => ({
|
||||
sstid: item.sku,
|
||||
vra: item.sku_vat,
|
||||
// sstt: item.unit_type,
|
||||
fee: String(item.unit_price),
|
||||
dis: String(item.discount),
|
||||
mu: item.measure_unit,
|
||||
am: String(item.quantity),
|
||||
consfee: '0',
|
||||
bros: '0',
|
||||
spro: '0',
|
||||
})),
|
||||
body: payload.items.map(item => {
|
||||
let data: NamaProviderOriginalBodyItemDto = {
|
||||
sstid: item.sku,
|
||||
vra: item.sku_vat,
|
||||
fee: String(item.unit_price),
|
||||
dis: String(item.discount_amount),
|
||||
mu: item.measure_unit,
|
||||
am: String(item.quantity),
|
||||
consfee: '0',
|
||||
bros: '0',
|
||||
spro: '0',
|
||||
}
|
||||
|
||||
console.log('item.gold_type_payload', item.gold_type_payload);
|
||||
|
||||
|
||||
if (item.gold_type_payload) {
|
||||
const { profit='0', commission = '0', wages = "0" } = item.gold_type_payload
|
||||
data = {
|
||||
...data,
|
||||
consfee: wages,
|
||||
bros: commission,
|
||||
spro: profit,
|
||||
tcpbs: (Number(profit) + Number(commission) + Number(wages)).toString(),
|
||||
}
|
||||
}
|
||||
|
||||
return data
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +118,7 @@ export class NamaProviderUtils {
|
||||
vra: item.sku_vat,
|
||||
// sstt: item.unit_type,
|
||||
fee: String(item.unit_price),
|
||||
dis: String(item.discount),
|
||||
dis: String(item.discount_amount),
|
||||
mu: item.measure_unit,
|
||||
am: String(item.quantity),
|
||||
consfee: '0',
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
TspProviderResponseStatus,
|
||||
} from 'generated/prisma/client'
|
||||
import {
|
||||
goldTypePayload,
|
||||
TspProviderCorrectionSendPayloadDto,
|
||||
TspProviderGetResponseDto,
|
||||
TspProviderOriginalResponseDto,
|
||||
@@ -169,6 +170,8 @@ export async function buildCorrectionPayload(
|
||||
invoice_number: true,
|
||||
settlement_type: true,
|
||||
tax_id: true,
|
||||
discount_amount: true,
|
||||
tax_amount: true,
|
||||
items: true,
|
||||
pos: {
|
||||
select: {
|
||||
@@ -251,7 +254,8 @@ export async function buildCorrectionPayload(
|
||||
measure_unit: item.measure_unit_code,
|
||||
sku: item.sku_code,
|
||||
sku_vat: String(item.sku_vat),
|
||||
discount: String((item.payload as Record<string, any>)?.discount || '0'),
|
||||
discount_amount: Number(item.discount_amount),
|
||||
tax_amount: Number(item.tax_amount),
|
||||
good_id: item.good_id,
|
||||
service_id: item.service_id,
|
||||
payload: item.payload,
|
||||
@@ -267,6 +271,8 @@ export async function buildCorrectionPayload(
|
||||
},
|
||||
})),
|
||||
total_amount: Number(invoice.total_amount),
|
||||
discount_amount: Number(invoice.discount_amount),
|
||||
tax_amount: Number(invoice.tax_amount),
|
||||
last_tax_id: invoice.reference_invoice!.tax_id!,
|
||||
invoice_number: invoice.invoice_number,
|
||||
id: invoice.id,
|
||||
@@ -281,17 +287,17 @@ export async function buildCorrectionPayload(
|
||||
customer:
|
||||
invoice.customer && invoice.customer.type !== 'UNKNOWN'
|
||||
? {
|
||||
type: invoice.customer.type,
|
||||
legal_info: invoice.customer.legal ?? undefined,
|
||||
individual_info: invoice.customer.individual ?? undefined,
|
||||
}
|
||||
type: invoice.customer.type,
|
||||
legal_info: invoice.customer.legal ?? undefined,
|
||||
individual_info: invoice.customer.individual ?? undefined,
|
||||
}
|
||||
: {
|
||||
type: 'UNKNOWN',
|
||||
unknown_info: {
|
||||
name: unknown_customer?.name || '',
|
||||
economic_code: unknown_customer?.economic_code || '',
|
||||
},
|
||||
type: 'UNKNOWN',
|
||||
unknown_info: {
|
||||
name: unknown_customer?.name || '',
|
||||
economic_code: unknown_customer?.economic_code || '',
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,6 +318,8 @@ export async function buildOriginalPayload(
|
||||
invoice_date: true,
|
||||
invoice_number: true,
|
||||
settlement_type: true,
|
||||
discount_amount: true,
|
||||
tax_amount: true,
|
||||
items: {
|
||||
select: {
|
||||
id: true,
|
||||
@@ -412,7 +420,7 @@ export async function buildOriginalPayload(
|
||||
throw new NotFoundException('فاکتور مورد نظر یافت نشد.')
|
||||
}
|
||||
|
||||
const { pos, id, invoice_number, invoice_date, total_amount, settlement_type } = invoice
|
||||
const { pos, id, invoice_number, invoice_date, total_amount, discount_amount, tax_amount, settlement_type } = invoice
|
||||
const { business_activity: ba } = pos.complex
|
||||
|
||||
const unknown_customer = (invoice.unknown_customer || {}) as Record<string, string>
|
||||
@@ -425,6 +433,8 @@ export async function buildOriginalPayload(
|
||||
invoice_date,
|
||||
settlement_type,
|
||||
total_amount: Number(total_amount),
|
||||
tax_amount: Number(tax_amount),
|
||||
discount_amount: Number(discount_amount),
|
||||
economic_code: ba.economic_code,
|
||||
fiscal_id: ba.fiscal_id,
|
||||
template: ba.guild.invoice_template,
|
||||
@@ -443,30 +453,34 @@ export async function buildOriginalPayload(
|
||||
customer:
|
||||
invoice.customer && invoice.customer.type !== 'UNKNOWN'
|
||||
? {
|
||||
type: invoice.customer.type,
|
||||
legal_info: invoice.customer.legal ?? undefined,
|
||||
individual_info: invoice.customer.individual ?? undefined,
|
||||
}
|
||||
type: invoice.customer.type,
|
||||
legal_info: invoice.customer.legal ?? undefined,
|
||||
individual_info: invoice.customer.individual ?? undefined,
|
||||
}
|
||||
: {
|
||||
type: 'UNKNOWN',
|
||||
unknown_info: {
|
||||
name: unknown_customer?.name || '',
|
||||
economic_code: unknown_customer?.economic_code || '',
|
||||
},
|
||||
type: 'UNKNOWN',
|
||||
unknown_info: {
|
||||
name: unknown_customer?.name || '',
|
||||
economic_code: unknown_customer?.economic_code || '',
|
||||
},
|
||||
},
|
||||
items: invoice.items.map(item => ({
|
||||
invoice_item_id: item.id,
|
||||
quantity: Number(item.quantity),
|
||||
unit_price: Number(item.unit_price),
|
||||
total_amount: Number(item.total_amount),
|
||||
tax_amount: Number(tax_amount),
|
||||
discount_amount: Number(discount_amount),
|
||||
measure_unit: item.measure_unit_code,
|
||||
sku: item.sku_code,
|
||||
sku_vat: String(item.sku_vat),
|
||||
discount: String((item.payload as Record<string, any>)?.discount || '0'),
|
||||
good_id: item.good_id,
|
||||
service_id: item.service_id,
|
||||
payload: item.payload,
|
||||
good_snapshot: item.good_snapshot,
|
||||
gold_type_payload: isGoldTypePayload(item.payload)
|
||||
? item.payload
|
||||
: undefined
|
||||
})),
|
||||
}
|
||||
}
|
||||
@@ -547,3 +561,8 @@ export async function onResult(
|
||||
message: updatedAttempt.message,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function isGoldTypePayload(value: unknown): value is goldTypePayload {
|
||||
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user