- Todos los valores provienen **exclusivamente** del contenido XML
- El nombre del archivo es solo referencial
- No inventar campos que no existan en el XML
- No recortar ni modificar valores
## Mapeo Cabecera
| Columna | Ruta XPath / Campo | Notas |
|---|---|---|
| Emisor | `envelope/messageHeader/from/gln` | |
| Receptor | `envelope/messageHeader/to/gln` | |
| N° Orden de Compra | `envelope/body/transaction/command/documentCommand/documentCommandOperand/order/typedEntityIdentification[@entityType='ORDER']/entityIdentification/uniqueCreatorIdentification` | Valor completo, sin recortes |
| Fecha generación mensaje | `envelope/body/transaction/command/documentCommand/documentCommandOperand/order/@creationDate` | Atributo creationDate del elemento order |
| Fecha de embarque | `envelope/body/transaction/command/documentCommand/documentCommandOperand/order/movementDate` | movementDate con movementDateType REQUESTED_DELIVERY |
| Fecha de cancelación | — | No existe en el XML, se deja vacío |
| Condiciones de pago | `paymentTerms/netPayment/timePeriodDue` | Formato: "NET {días} días desde fecha de factura" |
| Lugar de entrega | `shipParty[@identificationType='SHIP_TO']/gln` | |
| Importe total | Suma de `lineItem/totalAmount/amount` | O también `order/totalAmount` si existiera |
| Etapa de transporte | `mainCarrierTransport/mode` | |
| Quien transporta | `mainCarrierTransport/carrierName` | |
| Divisa de referencia | `currency` | |
| Condiciones de entrega | — | No existe en el XML |
## Diferencias entre emisores
| Elemento | Walmart (925485K200) | Otros emisores |
|---|---|---|
| Namespace | Sin prefijo (`xmlns=`) | Con prefijo `eanucc:` |
| `requestedQuantity/@UnitType` | CSC | CS |
| `itemColor`, `itemSize` | Presente | Ausente |
| `buyerItemNumber`, `vendorItemNumber` | Presente | Ausente |
| `salesDepartamentNumber`, `orderType` | Presente | Ausente |
| `promotionDealNumber` | POS REPLEN | Ausente |
| `internalVendorNumber` | Presente | Ausente |
| `specialHandling` | NO PRETICKET | Ausente |
| `mainCarrierTransport`, `currency` | Presente | Ausente |
| `allowanceCharge` | Ausente | Presente (con descuentos reales o en 0) |
## Diferencia entre tipos de OC
-`orderType=20`: Tipo estándar
-`orderType=33`: Tipo distinto (ej. reposición directa)
- Ambos con `promotionDealNumber="POS REPLEN"`
## Manejo de Namespace
Los archivos pueden venir con o sin prefijo:
- **Con prefijo**: `<eanucc:envelope>`, `<eanucc:order>` — usar el namespace `eanucc:` para las consultas XPath
- **Sin prefijo**: `<envelope>`, `<order>` — namespace por default
Solución recomendada: registrar ambos namespaces y usar `*` o registrar el namespace URI `http://www.uc-council.org/smp/schemas/eanucc` con un alias en el parser.