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
@@ -7,23 +7,25 @@ import { HttpClientUtil } from '@/common/utils/http-client.util'
import { TspProviderResponseStatus } from '@/generated/prisma/enums'
import { Injectable, Logger } from '@nestjs/common'
import {
IProviderSwitchAdapter,
TspProviderBulkSendResultDto,
TspProviderCorrectionSendPayloadDto,
TspProviderCorrectionSendResponseDto,
TspProviderGetResultDto,
TspProviderOriginalSendItemResultDto,
TspProviderOriginalSendPayloadDto,
TspProviderRevokePayloadDto,
TspProviderRevokeResponseDto,
TspProviderSendItemResultDto,
} from '../../dto'
import {
IProviderSwitchAdapter,
TspProviderBulkSendResultDto,
} from '../../dto/provider-switch.dto'
import {
NamaProviderGetResponseDto,
NamaProviderOriginalResponseDto,
NamaProviderResponseStatus,
NamaProviderRevokeRequestDto,
NamaProviderRevokeResponseDto,
NamaProviderSendItemResponseDto,
} from './nama-provider.dto'
} from './dto'
import { NamaProviderUtils } from './nama-provider.util'
@Injectable()
@@ -77,8 +79,8 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
async originalSend(
payload: TspProviderOriginalSendPayloadDto,
): Promise<TspProviderSendItemResultDto> {
const mappedRequest = this.namaProviderUtils.mapToNamaRequestDto(payload)
): Promise<TspProviderOriginalSendItemResultDto> {
const mappedRequest = this.namaProviderUtils.mapToNamaOriginalRequestDto(payload)
try {
const response = await this.httpClient.request(
this.buildSendUrl(),
@@ -86,20 +88,23 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
method: 'POST',
body: JSON.stringify(mappedRequest),
},
this.createRequestInterceptors(payload.tsp_token),
this.createRequestInterceptors(payload.token),
)
const providerResponse: NamaProviderSendItemResponseDto = await response.json()
this.logger.debug('NAMA provider response', providerResponse)
const providerResponse: NamaProviderOriginalResponseDto = await response.json()
this.logger.debug('NAMA provider response', response)
this.logger.debug('NAMA provider providerResponse', providerResponse)
const result: TspProviderSendItemResultDto = {
invoice_id: payload.invoice_id,
const result: TspProviderOriginalSendItemResultDto = {
invoice_id: payload.id,
provider_request_payload: JSON.parse(JSON.stringify(mappedRequest)),
hasError: !response.ok,
message: providerResponse.message,
provider_response_payload: JSON.parse(JSON.stringify(providerResponse)),
received_at: providerResponse.tsp_update_time,
sent_at: new Date().toISOString(),
received_at: new Date().toISOString(),
provider_response: JSON.parse(JSON.stringify(providerResponse)),
tax_id: providerResponse.tax_id,
error_message: providerResponse.error_message,
fiscal_warnings: providerResponse.tax_api_response,
validation_errors: providerResponse.validation_error,
status: this.namaProviderUtils.mapResponseStatus(
providerResponse.status as NamaProviderResponseStatus,
),
@@ -108,24 +113,22 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
return result
} catch (err) {
this.logger.error('NAMA send failed', err)
const failure: TspProviderSendItemResultDto = {
invoice_id: payload.invoice_id,
const failure: TspProviderOriginalSendItemResultDto = {
invoice_id: payload.id,
provider_request_payload: JSON.parse(JSON.stringify(mappedRequest)),
hasError: true,
message: (err as Error).message,
sent_at: new Date().toISOString(),
received_at: new Date().toISOString(),
tax_id: null,
status: TspProviderResponseStatus.NOT_SEND,
status: TspProviderResponseStatus.SEND_FAILURE,
}
throw failure
return failure
}
}
async correctionSend(
payload: TspProviderCorrectionSendPayloadDto,
): Promise<TspProviderCorrectionSendResponseDto> {
const mappedRequest = this.namaProviderUtils.mapToNamaRequestDto(payload)
const mappedRequest = this.namaProviderUtils.mapToNamaOriginalRequestDto(payload)
try {
const response = await this.httpClient.request(
@@ -134,19 +137,18 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
method: 'POST',
body: JSON.stringify(mappedRequest),
},
this.createRequestInterceptors(payload.tsp_token),
this.createRequestInterceptors(payload.token),
)
const providerResponse: NamaProviderSendItemResponseDto = await response.json()
const providerResponse: NamaProviderOriginalResponseDto = await response.json()
this.logger.debug('NAMA provider response', providerResponse)
const result: TspProviderSendItemResultDto = {
invoice_id: payload.invoice_id,
const result: TspProviderOriginalSendItemResultDto = {
invoice_id: payload.id,
provider_request_payload: JSON.parse(JSON.stringify(mappedRequest)),
hasError: !response.ok,
message: providerResponse.message,
sent_at: new Date().toISOString(),
provider_response_payload: JSON.parse(JSON.stringify(providerResponse)),
received_at: providerResponse.tsp_update_time,
provider_response: JSON.parse(JSON.stringify(providerResponse)),
received_at: new Date().toISOString(),
tax_id: providerResponse.tax_id,
status: this.namaProviderUtils.mapResponseStatus(
providerResponse.status as NamaProviderResponseStatus,
@@ -156,12 +158,11 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
return result
} catch (err) {
this.logger.error('NAMA send failed', err)
const failure: TspProviderSendItemResultDto = {
invoice_id: payload.invoice_id,
const failure: TspProviderOriginalSendItemResultDto = {
invoice_id: payload.id,
provider_request_payload: JSON.parse(JSON.stringify(mappedRequest)),
hasError: true,
message: (err as Error).message,
sent_at: new Date().toISOString(),
received_at: new Date().toISOString(),
tax_id: null,
status: TspProviderResponseStatus.NOT_SEND,
@@ -177,7 +178,7 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
for (const payload of payloads) {
const itemResults = await this.originalSend(payload)
result.push({
invoice_id: payload.invoice_id,
invoice_id: payload.id,
items: [itemResults],
})
}
@@ -201,7 +202,7 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
message: providerResponse.message,
provider_response_payload: providerResponse,
sent_at: new Date().toISOString(),
received_at: providerResponse.tsp_update_time || new Date().toISOString(),
received_at: new Date().toISOString(),
tax_id: providerResponse.tax_id,
status: this.namaProviderUtils.mapResponseStatus(
providerResponse.status as NamaProviderResponseStatus,
@@ -228,7 +229,7 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
payload: TspProviderRevokePayloadDto,
): Promise<TspProviderRevokeResponseDto> {
const mappedRequest: NamaProviderRevokeRequestDto =
this.namaProviderUtils.mapRevokeToNamaRequestDto(payload)
this.namaProviderUtils.mapToNamaRevokeRequestDto(payload)
this.logger.debug('NAMA provider response', mappedRequest)
@@ -251,7 +252,7 @@ export class NamaProviderSwitchAdapter implements IProviderSwitchAdapter {
message: providerResponse.message,
sent_at: new Date().toISOString(),
provider_response_payload: providerResponse,
received_at: providerResponse.tsp_update_time,
received_at: new Date().toISOString(),
tax_id: providerResponse.tax_id,
status: this.namaProviderUtils.mapResponseStatus(
providerResponse.status as NamaProviderResponseStatus,