CP9 — Documentos de Despacho

Qué información importa · Cuándo se sube · Qué extrae el parser · Cómo se vincula al expediente

● Pre-cierre ● Post-cierre ● Por validar ● Trento Core (auto) ⚑ Obligatorio
ℹ️
Contexto CP9 CP9 opera a nivel PO (no OP). Hábitat tiene 3 POs → 3 cierres CP9 separados. El cierre oficial se activa con la fecha de la Guía de Remisión (no la factura). Todos los documentos se almacenan como metadata únicamente en upload_audits (no se guarda contenido del PDF). El campo codigo_expediente agrupa todos los documentos de un despacho.
📋

1 — Visión general

# Documento Origen / Subida Timing Obligatorio Parser backend Escribe en despachos
1 Orden de Compra (PO) Trento Core DB Automático orden_pedido
2 Factura Electrónica PDF upload Pre-cierre parse_factura_exportacion_pdf factura_exportacion
3 Guía de Remisión PDF upload Pre-cierre ★ parse_guia_remision_despacho_pdf fecha_guia_remision
4 Bill of Lading (BL) PDF upload Pre-cierre (marítimo) parse_bl_pdf bl_number, numero_contenedor, puerto_origen, puerto_destino
5 DUA PDF upload Post-cierre ★ Sí (aduanas) parse_dam_pdf (mismo parser) numero_dam, fob_usd, drawback, series
6 DAM PDF upload Post-cierre ★ Sí (aduanas) parse_dam_pdf numero_dam, fecha_numeracion_dam, aduana_nombre, regimen_aduanero, partida_arancelaria
7 Booking PDF upload Por validar ? parse_booking_pdf — (no actualiza despachos)

★ Guía de Remisión: su fecha_emision se extrae y se guarda como fecha_guia_remision — fecha oficial de cierre CP9.
★ DUA y DAM: ambos son post-cierre; el sistema los admite para completar el expediente pero no bloquean el cierre.

📄

2 — Archivo por archivo

1

Orden de Compra Cliente (PO)

Trento Core DB Obligatorio

La PO del cliente (Hábitat, Peter Millar, Escape) se obtiene directamente desde Trento Core vía la relación lote → ordenes_produccion → purchase_order_id. No requiere upload manual.

Campos relevantes
orden_pedidoNúmero de PO del cliente (ej. "1894")→ despachos.orden_pedido
cliente_destino_glnGLN del cliente destino (13 dígitos)→ despachos.cliente_destino_gln
Para Hábitat OP-6989: PO 1894. Cada PO genera un despacho separado → 3 POs de Hábitat = 3 cierres CP9.
2

Factura Electrónica

Pre-cierre Obligatorio

Factura SUNAT emitida por Confecciones Trento. Documento de valor comercial del despacho. Al subirla, activa la transición DPP COLLECTING → DATA_COMPLETE.

Campos extraídos por parser
numero_facturaEj. "F001-00005306"→ despachos.factura_exportacion
fecha_emisionDD-MM-YYYY → dateSolo metadata
compradorRazón social del compradorSolo metadata
oc_clienteNúmero de OC referenciadoSolo metadata
total_usdValor FOB total USDSolo metadata
incotermsEj. "FOB", "CIF"Solo metadata
⚠ La factura NO es la fecha de cierre CP9. La fecha de cierre la determina la Guía de Remisión.
3

Guía de Remisión ★

Pre-cierre Obligatorio

Documento SUNAT que acredita el traslado físico de la mercancía. Su fecha de emisión es el trigger oficial de cierre CP9 — se guarda en despachos.fecha_guia_remision.

Campos extraídos por parser
numero_guiaEj. "T002-00000560"Solo metadata
fecha_emisionDD-MM-YYYY → date→ despachos.fecha_guia_remision ★
destinatarioEmpresa destinataria (ALL-CAPS)Solo metadata
peso_bruto_kgPeso bruto total en KGSolo metadata
bultosCantidad de bultos (entero)Solo metadata
// Campo clave en despachos
"fecha_guia_remision": "2026-05-28"  // cierre oficial CP9
4

Bill of Lading (BL / HBL)

Pre-cierre Obligatorio

Documento naviero que acredita el embarque marítimo. Parser más completo — extrae 18 campos incluyendo contenedor, buque, puertos y POs referenciados.

Campos clave extraídos
numero_blEj. "TB-0035-26"→ despachos.bl_number
container_numberEj. "SMLU7928375"→ despachos.numero_contenedor
puerto_origenEj. "CALLAO, PERU"→ despachos.puerto_origen
puerto_destinoEj. "MIAMI"→ despachos.puerto_destino
vessel_voyageBuque y número de viajeSolo metadata
shipped_on_boardFecha de embarqueSolo metadata
packages_countNº de cajas (BOX)Solo metadata
gross_weight_kgPeso bruto total KGSolo metadata
po_numbersLista de POs referenciadasSolo metadata
consignee / shipperDestinatario y exportadorSolo metadata
5

DUA

Post-cierre Aduanas

Documento Único Aduanero — formulario SUNAT previo a la DAM. Mismo parser que DAM (parse_dam_pdf). Se sube después de cerrar CP9, como parte del expediente aduanero.

Campos extraídos (mismo parser que DAM)
numero_declaracionNúmero DUA/DAM→ despachos.numero_dam
fecha_numeracionFecha de numeración SUNAT→ despachos.fecha_numeracion_dam
fob_total_usdValor FOB declarado→ despachos.fob_usd
regimen_aduaneroCódigo de régimen (ej. "40")→ despachos.regimen_aduanero
partida_arancelariaPartida HTS→ despachos.partida_arancelaria
drawback¿Acoge a drawback?→ despachos.drawback
6

DAM (Declaración Aduanera)

Post-cierre Aduanas

Declaración Aduanera de Mercancías — documento SUNAT final que acredita la exportación. Contiene series por ítem con cantidad, peso y FOB. Se valida posteriormente ante SUNAT.

Campos adicionales vs DUA
aduana_nombreEj. "MARITIMA CALLAO"→ despachos.aduana_nombre
empresa_transporteAgente de carga→ despachos.empresa_transporte_dam
terminal_almacenAlmacén de salida→ despachos.terminal_almacen
exportador_rucRUC Confecciones Trento→ despachos.exportador_ruc
Series (por ítem exportado)
// dam_series en despachos (JSONB)
[
  { "serie": "1/1", "cantidad": 1941,
    "peso_neto_kg": 543.5, "fob_usd": 28230.0 }
]
7

Booking

Por validar Pendiente confirmación

Confirmación de reserva de espacio naviero emitida por la agencia de carga. Parser implementado, pero su obligatoriedad en el flujo CP9 está pendiente de validación con el equipo. No actualiza campos en despachos.

Campos extraídos por parser
numero_bookingEj. "S00019142"Solo metadata
etdEstimated Time of DepartureSolo metadata
etaEstimated Time of ArrivalSolo metadata
vesselNombre del buque y viajeSolo metadata
puerto_origenPuerto de salidaSolo metadata
puerto_destinoPuerto de llegadaSolo metadata
peso_kgPeso total KGSolo metadata
bultosNúmero de cajasSolo metadata
⚠ Pendiente confirmar si el Booking es requerido antes o después del BL, o si puede omitirse cuando ya existe BL.
📊

3 — Resumen compacto

Documento Timing Parser Campos clave extraídos Escribe en BD Upload type
OC Cliente (PO) Auto orden_pedido, cliente_gln Trento Core → despachos
Factura Electrónica Pre parse_factura_exportacion_pdf numero_factura, fecha_emision, comprador, total_usd, incoterms factura_exportacion → activa DATA_COMPLETE documentos_exportacion_factura
Guía de Remisión ★ Pre parse_guia_remision_despacho_pdf numero_guia, fecha_emision★, destinatario, peso_bruto_kg, bultos fecha_guia_remision (cierre CP9) documentos_exportacion_guia_remision
Bill of Lading Pre parse_bl_pdf numero_bl, container_number, vessel_voyage, puerto_origen/destino, packages_count, shipped_on_board, po_numbers bl_number, numero_contenedor, puerto_origen, puerto_destino documentos_exportacion_bill_of_lading
DUA Post parse_dam_pdf numero_declaracion, fecha_numeracion, fob_total_usd, regimen_aduanero, partida_arancelaria, drawback numero_dam, fob_usd, drawback, regimen_aduanero documentos_exportacion_dua
DAM Post parse_dam_pdf Ídem DUA + aduana_nombre, empresa_transporte, terminal_almacen, exportador_ruc, dam_series[] numero_dam, fecha_numeracion_dam, aduana_nombre, terminal_almacen, dam_series documentos_exportacion_dam
Booking ? parse_booking_pdf numero_booking, etd, eta, vessel, puertos, peso_kg, bultos — (no escribe en despachos) documentos_exportacion_booking

fecha_guia_remision es el único campo que determina la fecha oficial de cierre CP9.
DUA y DAM usan el mismo parser parse_dam_pdf — la distinción es solo de nomenclatura (DUA es el formulario previo; DAM es la declaración final numerada por SUNAT).
Todos los uploads se registran en upload_audits con upload_type = "documentos_exportacion_{tipo}".