Refactor invoice mapping logic in edit page to improve data handling. Updated the mapping of logistics and compliance fields to use optional chaining and default values, enhancing robustness and clarity in the invoice data structure.

This commit is contained in:
2026-04-02 09:54:50 -05:00
parent 4ce1897aad
commit 18e3c0a1bd

View File

@@ -347,28 +347,38 @@
function mapInvoiceToContinuation(invoice: any) {
if (!invoice) return continuationSkeleton;
const logistics = invoice.logistics ?? {};
const complianceMx = invoice.compliance_mx ?? {};
return {
numero_tipo_transporte: invoice.logistics?.numero_tipo_transporte || '',
es_ferrocarril: invoice.logistics?.es_ferrocarril || 'no',
numero_bl: invoice.logistics?.numero_bl || '',
cantidad_guias_embarque: invoice.logistics?.cantidad_guias_embarque || null,
destino_origen: invoice.logistics?.destino_origen || '',
puerto_entrada: invoice.logistics?.puerto_entrada || '',
vehicle_data: invoice.logistics?.vehicle_data || '',
fue_revisado_equipo: invoice.logistics?.fue_revisado_equipo || false,
sub_division: invoice.compliance_mx?.subdivision || false,
funge_como_cd: invoice.logistics?.acts_as_cd || false,
llego_pedimento: invoice.compliance_mx?.llego_pedimento || false,
numero_tipo_transporte:
logistics.transport_num ?? logistics.vehicle_num ?? logistics.numero_tipo_transporte ?? '',
es_ferrocarril:
typeof logistics.is_rail === 'boolean'
? logistics.is_rail
? 'si'
: 'no'
: (logistics.es_ferrocarril ?? 'no'),
numero_bl: logistics.bill_number ?? logistics.numero_bl ?? '',
cantidad_guias_embarque: logistics.guide_number ?? logistics.cantidad_guias_embarque ?? null,
destino_origen: logistics.destination_location ?? logistics.destino_origen ?? '',
puerto_entrada: logistics.origin_location ?? logistics.puerto_entrada ?? '',
vehicle_data: logistics.vehicle_data ?? '',
fue_revisado_equipo: logistics.equipment_reviewed ?? logistics.fue_revisado_equipo ?? false,
sub_division: logistics.is_subdivision ?? complianceMx.subdivision ?? false,
funge_como_cd: logistics.acts_as_cd ?? false,
llego_pedimento: logistics.pedimento_arrived ?? complianceMx.llego_pedimento ?? false,
errores_facturacion: invoice.errores_facturacion || [],
semaforo_verde_aduana_mexicana:
invoice.compliance_mx?.semaforo_verde_aduana_mexicana || false,
logistics.green_light_mx ?? complianceMx.semaforo_verde_aduana_mexicana ?? false,
semaforo_verde_aduana_americana:
invoice.compliance_mx?.semaforo_verde_aduana_americana || false,
semaforo_rojo_aduana_mexicana: invoice.compliance_mx?.semaforo_rojo_aduana_mexicana || false,
logistics.green_light_us ?? complianceMx.semaforo_verde_aduana_americana ?? false,
semaforo_rojo_aduana_mexicana:
logistics.red_light_mx ?? complianceMx.semaforo_rojo_aduana_mexicana ?? false,
semaforo_rojo_aduana_americana:
invoice.compliance_mx?.semaforo_rojo_aduana_americana || false,
is_mixed: invoice.compliance_mx?.is_mixed || false,
reason_export: invoice.compliance_mx?.reason_export || '1',
logistics.red_light_us ?? complianceMx.semaforo_rojo_aduana_americana ?? false,
is_mixed: complianceMx.is_mixed ?? false,
reason_export: complianceMx.reason_export ?? '1',
purchase_order: invoice.purchase_order || '',
payment_terms: invoice.payment_terms || '',
handling_fees: invoice.financials?.handling_fees || 0,