update switch providers and nama provider. fix original send

This commit is contained in:
2026-05-27 21:55:02 +03:30
parent 4836ee4d01
commit 816c5ebb50
31 changed files with 1381 additions and 1287 deletions
@@ -0,0 +1,257 @@
import { ApiProperty } from '@nestjs/swagger'
import { Type } from 'class-transformer'
import {
IsArray,
IsNumber,
IsOptional,
IsString,
Min,
ValidateNested,
} from 'class-validator'
export enum NamaProviderResponseStatus {
POSTED = 'POSTED',
PENDING = 'PENDING',
IN_PROGRESS = 'IN_PROGRESS',
SUCCESS = 'SUCCESS',
VALIDATION_ERROR = 'VALIDATION_ERROR',
FAILED = 'FAILED',
}
export class NamaProviderPaymentInfoDto {
@ApiProperty({ required: true, description: 'روش پرداخت با توجه به PaymentMethodType' })
@IsNumber()
pmt: number
@ApiProperty({
required: true,
description: 'مبلغ پرداختی. در صورتی که روش تسویه نسیه باشد برابر با ۰ است',
})
@IsNumber({ allowInfinity: false, allowNaN: false })
@Min(0)
pv: number
@ApiProperty({ required: false, description: 'شماره‌ی پیگیری' })
@IsOptional()
@IsString()
trn?: string
@ApiProperty({ required: false, description: 'شماره‌ی کارت پرداخت کننده‌ی صورت‌حساب' })
@IsOptional()
@IsString()
pcn?: string
@ApiProperty({ required: false, description: 'تاریخ و زمان پرداخت صورت‌حساب unix' })
@IsOptional()
@IsNumber()
pdt?: string
}
export class NamaProviderCommonHeaderDto {
@ApiProperty({ required: true, description: 'الگوی صورتحساب' })
@IsString()
inp: string
@ApiProperty({ required: true, description: 'نوع صورتحساب' })
@IsString()
inty: string
@ApiProperty({ required: true, description: 'سریال صورتحساب داخلی حافظه مالیاتی' })
@IsString()
inno: string
// @ApiProperty({ required: true })
// @IsString()
// tins: string
@ApiProperty({
required: true,
description: 'تاریخ و زمان صدور صورتحساب به صورت timestamp',
})
@IsString()
indatim: string
@ApiProperty({ required: true, description: 'نام مشتری' })
@IsString()
name: string
@ApiProperty({
required: false,
description:
'نوع شخصیت خریدار (در صورتی‌که خریدار نوع ۲ باشه باید ۱ یا ۲ گذاشته بشه)',
})
@IsString()
tob: string
@ApiProperty({ description: 'آدرس' })
@IsOptional()
@IsString()
address?: string
@ApiProperty({ description: 'شماره موبایل' })
@IsOptional()
@IsString()
mobile?: string
@ApiProperty({
description: `شماره ملی / شناسه ملی / شناسه مشارکت مدنی / کد فراگیر خریدار`,
})
@IsString()
bid: string
@ApiProperty({ required: true, description: 'روش تسویه (۱.نقدی، ۲.نسیه، ۳.نقدی-نسیه)' })
@IsString()
setm: '1' | '2' | '3'
@ApiProperty({ description: 'سهم پرداخت نقدی در صورتی که نقدی - نسیه باشد (۳)' })
@IsString()
cap: string
@ApiProperty({ description: 'سهم پرداخت نسیه در صورتی که نقدی - نسیه باشد (۳)' })
@IsString()
insp: string
}
export class NamaProviderCommonBodyDto {
@ApiProperty({ required: true, description: 'شناسه کالا / خدمت' })
@IsString()
sstid: string
@ApiProperty({
required: true,
description: `نرخ مالیات بر ارزش افزوده`,
})
@IsString()
vra: string
// @ApiProperty()
// @IsString()
// sstt: string
@ApiProperty({
required: true,
description: 'مبلغ واحد',
})
@IsString()
fee: string
@ApiProperty({
required: true,
description: 'مبلغ تخفیف',
})
@IsString()
dis: string
@ApiProperty({
required: true,
description: 'واحد اندازه گیری',
})
@IsString()
mu: string
@ApiProperty({
required: true,
description: 'تعداد / مقدار',
})
@IsString()
am: string
@ApiProperty({
description: ' اجرت ساخت (طلا)',
})
@IsString()
consfee: string
@ApiProperty({
description: 'حق العمل',
})
@IsString()
bros: string
@ApiProperty({
description: 'سود فروشنده',
})
@IsString()
spro: string
}
export class NamaProviderApiErrorItemDto {
@ApiProperty()
@IsString()
code: string
@ApiProperty()
@IsString()
message: string
}
export class NamaProviderTSPValidationErrorsDto {
@ApiProperty({ type: [NamaProviderApiErrorItemDto], required: false })
@IsOptional()
@IsArray()
@ValidateNested({ each: true })
@Type(() => NamaProviderApiErrorItemDto)
error?: NamaProviderApiErrorItemDto[]
@ApiProperty({ type: [NamaProviderApiErrorItemDto], required: false })
@IsOptional()
@IsArray()
@ValidateNested({ each: true })
@Type(() => NamaProviderApiErrorItemDto)
warning?: NamaProviderApiErrorItemDto[]
}
export class NamaProviderValidationErrorDto {
@IsString()
key: string
@IsString()
errorKeyPosition: string
@IsString()
message: string
@IsNumber()
errorKeyIndex: number
}
export class NamaProviderResponseDto {
@ApiProperty({ description: 'شناسه پیگیری فاکتور' })
@IsString()
uuid: string
@ApiProperty()
@IsString()
message: string
@ApiProperty()
@IsString()
status: NamaProviderResponseStatus
@ApiProperty()
@IsString()
inno: string
@ApiProperty({ required: true })
@IsString()
reference_number: string
@ApiProperty()
@IsString()
@IsOptional()
tax_id?: string
@ApiProperty()
@IsString()
@IsOptional()
error_message: string
@ApiProperty({ type: [NamaProviderValidationErrorDto] })
@IsArray()
@IsOptional()
validation_error: NamaProviderValidationErrorDto[]
@ApiProperty({ type: [NamaProviderTSPValidationErrorsDto], required: false })
@IsOptional()
tax_api_response?: NamaProviderTSPValidationErrorsDto[]
}