fix: use isTypeOf for SAT status request checking

The StatusRequest class has an isTypeOf method that properly checks
the status. Using getValue() and comparing numbers was unreliable.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Consultoria AS
2026-01-25 02:17:17 +00:00
parent 98d704a549
commit 38466a2b23

View File

@@ -114,30 +114,22 @@ export async function verifySatRequest(
): Promise<VerifyResult> { ): Promise<VerifyResult> {
try { try {
const result = await service.verify(requestId); const result = await service.verify(requestId);
const statusRequest = result.getStatusRequest();
const statusCode = result.getStatusRequest().getValue(); // Usar isTypeOf para determinar el estado
let status: VerifyResult['status']; let status: VerifyResult['status'];
if (statusRequest.isTypeOf('Finished')) {
// Los valores del SAT para estado de solicitud (getValue retorna número o string) status = 'ready';
const codeNum = typeof statusCode === 'string' ? parseInt(statusCode, 10) : statusCode; } else if (statusRequest.isTypeOf('InProgress')) {
switch (codeNum) { status = 'processing';
case 1: } else if (statusRequest.isTypeOf('Accepted')) {
status = 'pending'; status = 'pending';
break; } else if (statusRequest.isTypeOf('Failure')) {
case 2: status = 'failed';
status = 'processing'; } else if (statusRequest.isTypeOf('Rejected')) {
break; status = 'rejected';
case 3: } else {
status = 'ready'; status = 'pending';
break;
case 4:
status = 'failed';
break;
case 5:
status = 'rejected';
break;
default:
status = 'pending';
} }
return { return {