se agrega fallback OWTR y calculo de fecha de vencimiento por condicion de pago

- hana_manager.get_delivery ahora busca en ODLN y, si no encuentra, en OWTR
- sapb1_manager resuelve StockTransfers -> Orders (via U_IDC_NUMOV) para
  validar precios de flete cuando la guia es un traslado de inventario
- se corrige el orden de parametros tipo/serie/numero (sin cruces) en
  get_delivery, get_delivery_notes y _get_delivery_entries
- se agrega sapb1_manager.obtener_condicion_pago (BusinessPartners +
  PaymentTermsTypes) y pipeline._calcular_fecha_vencimiento para que
  DocDueDate del draft sea fecha de contabilizacion + dias de la condicion
  de pago del proveedor
- se agrega variante de regex para "VALOR REFER" truncado en sunat_schema.py
- se actualiza documentacion (docs/) reflejando estos cambios

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
georgeandClaude Sonnet 5 committed 2026-09-10 13:21:04 -05:00
1 parent 6b0ed6f519
commit 15e3b5079c
231 files changed
+21421 -475

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
# Copiar este archivo como ".env" (en la misma carpeta que main.py) y completar
# con los valores reales. ".env" nunca debe subirse a git (ya está en .gitignore).
# --- Correo / carpetas del pipeline ---
EMAIL = correo@dominio.com
DOWNLOAD_FOLDER = adjuntos
OUTPUT_FOLDER = resultado
# --- Ruta de red de Facturación Electrónica (ver pipeline._copiar_a_red) ---
RUTA_RED_FACTURACION = \\servidor\ruta\a\Facturacion Electronica\PRODUCCION
RUC_EMPRESA = 00000000000
# --- SAP Business One Service Layer ---
SAP_B1_URL = https://servidor:50000/b1s/v1
SAP_B1_COMPANY =
SAP_B1_USER =
SAP_B1_PASSWORD =
SAP_B1_VERIFY_SSL = false
SAP_B1_TIMEOUT = 15
# --- SAP HANA (fallback de consultas, ver hana_manager.py) ---
HANA_SERVER =
HANA_PORT = 30015
HANA_USER =
HANA_PASSWORD =
HANA_SCHEMA =
# --- Microsoft Graph / Outlook (MSAL, app registration en Azure AD) ---
CLIENT_ID =
CLIENT_SECRET =
TENANT_ID =
VERIFY_SSL = false
# --- Logging (ver logger_manager.py). Opcional, por defecto INFO ---
LOG_LEVEL = INFO
Executable → Regular
+6 -6
View File
@@ -11,7 +11,7 @@ from datetime import datetime, timedelta
from dotenv import load_dotenv from dotenv import load_dotenv
import database_utilities import database_utilities
import logger_utilities import logger_manager
from pipeline import _procesar_un_correo, step_authenticate from pipeline import _procesar_un_correo, step_authenticate
@@ -45,13 +45,14 @@ def get_email_by_id(user_email: str, token: str, message_id: str) -> dict | None
# PIPELINE PARA IDS # PIPELINE PARA IDS
# ============================================================================ # ============================================================================
def run_pipeline_for_ids(ids: list[str]) -> None: def run_pipeline_for_ids(ids: list[str]) -> None:
load_dotenv(dotenv_path=".env.dev") # Ruta absoluta: no depende del directorio de trabajo desde el que se lance el proceso
load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), ".env"))
email_addr = os.getenv("EMAIL", "") email_addr = os.getenv("EMAIL", "")
download_folder = os.getenv("DOWNLOAD_FOLDER", "adjuntos") download_folder = os.getenv("DOWNLOAD_FOLDER", "adjuntos")
output_folder = os.getenv("OUTPUT_FOLDER", "resultado") output_folder = os.getenv("OUTPUT_FOLDER", "resultado")
if not email_addr: if not email_addr:
print("❌ EMAIL no configurado en .env.dev") print("❌ EMAIL no configurado en .env")
return return
database_utilities.init_db() database_utilities.init_db()
@@ -96,13 +97,12 @@ if __name__ == "__main__":
print(f"\n📋 Set: {args.set} — {descripcion}") print(f"\n📋 Set: {args.set} — {descripcion}")
print(f" IDs a procesar: {len(ids)}") print(f" IDs a procesar: {len(ids)}")
log_path = logger_utilities.setup_logger() logger_manager.setup_logging()
logger_utilities.limpiar_logs_antiguos(dias=30)
inicio = datetime.now() inicio = datetime.now()
print("\n" + "=" * 60) print("\n" + "=" * 60)
print(f"🚀 INICIO DE EJECUCIÓN: {inicio.strftime('%Y-%m-%d %H:%M:%S')}") print(f"🚀 INICIO DE EJECUCIÓN: {inicio.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"📄 Log guardado en: {log_path}") print(f"📄 Log guardado en: {logger_manager.LOG_FILE}")
print("=" * 60) print("=" * 60)
run_pipeline_for_ids(ids) run_pipeline_for_ids(ids)
+71 -70
View File
@@ -12,22 +12,24 @@ def init_db() -> None:
Inicializa la base de datos SQLite y crea la tabla de correos si no existe. Inicializa la base de datos SQLite y crea la tabla de correos si no existe.
""" """
conn = sqlite3.connect(DB_NAME) conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor() try:
cursor = conn.cursor()
# Crear tabla con id como llave primaria para evitar duplicados
cursor.execute(''' # Crear tabla con id como llave primaria para evitar duplicados
CREATE TABLE IF NOT EXISTS emails ( cursor.execute('''
id TEXT PRIMARY KEY, CREATE TABLE IF NOT EXISTS emails (
fecha TEXT, id TEXT PRIMARY KEY,
sender TEXT, fecha TEXT,
subject TEXT, sender TEXT,
has_attach INTEGER, subject TEXT,
fecha_descarga TEXT has_attach INTEGER,
) fecha_descarga TEXT
''') )
''')
conn.commit()
conn.close() conn.commit()
finally:
conn.close()
# ============================================================================ # ============================================================================
def save_emails(emails_list: list[dict]) -> int: def save_emails(emails_list: list[dict]) -> int:
@@ -39,35 +41,36 @@ def save_emails(emails_list: list[dict]) -> int:
return 0 return 0
conn = sqlite3.connect(DB_NAME) conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor() try:
cursor = conn.cursor()
from datetime import datetime
fecha_ahora = datetime.now().strftime("%Y-%m-%d %H:%M:%S") from datetime import datetime
fecha_ahora = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Mapear lista de diccionarios a tuplas para executemany
# has_attach se guarda como 1 (True) o 0 (False) # Mapear lista de diccionarios a tuplas para executemany
data = [ # has_attach se guarda como 1 (True) o 0 (False)
( data = [
e['id'], (
e['fecha'], e['id'],
e['sender'], e['fecha'],
e['subject'], e['sender'],
1 if e['has_attach'] else 0, e['subject'],
fecha_ahora 1 if e['has_attach'] else 0,
) fecha_ahora
for e in emails_list )
] for e in emails_list
]
# INSERT OR IGNORE evita errores si el ID ya existe
cursor.executemany(''' # INSERT OR IGNORE evita errores si el ID ya existe
INSERT OR IGNORE INTO emails (id, fecha, sender, subject, has_attach, fecha_descarga) cursor.executemany('''
VALUES (?, ?, ?, ?, ?, ?) INSERT OR IGNORE INTO emails (id, fecha, sender, subject, has_attach, fecha_descarga)
''', data) VALUES (?, ?, ?, ?, ?, ?)
''', data)
conn.commit()
rows_affected = cursor.rowcount conn.commit()
conn.close() return cursor.rowcount
return rows_affected finally:
conn.close()
# ============================================================================ # ============================================================================
def get_existing_ids(ids_list: list[str]) -> list[str]: def get_existing_ids(ids_list: list[str]) -> list[str]:
@@ -78,19 +81,21 @@ def get_existing_ids(ids_list: list[str]) -> list[str]:
return [] return []
conn = sqlite3.connect(DB_NAME) conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor() try:
cursor = conn.cursor()
existing_ids = []
# Procesar por lotes para evitar límites de parámetros en SQLite existing_ids = []
for i in range(0, len(ids_list), 900): # Procesar por lotes para evitar límites de parámetros en SQLite
chunk = ids_list[i:i + 900] for i in range(0, len(ids_list), 900):
placeholders = ','.join(['?'] * len(chunk)) chunk = ids_list[i:i + 900]
query = f"SELECT id FROM emails WHERE id IN ({placeholders})" placeholders = ','.join(['?'] * len(chunk))
cursor.execute(query, chunk) query = f"SELECT id FROM emails WHERE id IN ({placeholders})"
existing_ids.extend([row[0] for row in cursor.fetchall()]) cursor.execute(query, chunk)
existing_ids.extend([row[0] for row in cursor.fetchall()])
conn.close()
return existing_ids return existing_ids
finally:
conn.close()
# ============================================================================ # ============================================================================
def delete_email_by_id(email_id: str) -> bool: def delete_email_by_id(email_id: str) -> bool:
@@ -102,15 +107,11 @@ def delete_email_by_id(email_id: str) -> bool:
return False return False
conn = sqlite3.connect(DB_NAME) conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor() try:
cursor = conn.cursor()
cursor.execute("DELETE FROM emails WHERE id = ?", (email_id,)) cursor.execute("DELETE FROM emails WHERE id = ?", (email_id,))
conn.commit()
conn.commit() return cursor.rowcount > 0
rows_affected = cursor.rowcount finally:
conn.close() conn.close()
# ============================================================================
return rows_affected > 0
# ============================================================================
if __name__ == "__main__":
delete_email_by_id("AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAtOXesAAA=")
+4 -2
View File
@@ -3,7 +3,9 @@
```mermaid ```mermaid
flowchart TD flowchart TD
A["factura + resultados_val"] --> B["Determinar ItemCode<br>C103002-A (mes anterior)<br>C103002 (mes actual)"] A["factura + resultados_val"] --> B["Determinar ItemCode<br>C103002-A (mes anterior)<br>C103002 (mes actual)"]
B --> C["Calcular cuotas<br>DocumentInstallments"] B --> B2["CardCode = PL + ruc_emisor<br>sapb1_manager.obtener_condicion_pago(CardCode)<br>(BusinessPartners.PayTermsGrpCode → PaymentTermsTypes)"]
B2 --> B3["fecha_vencimiento = fecha_contabilizacion +<br>NumberOfAdditionalDays<br>(si es 0, usar NumberOfAdditionalMonths * 30)"]
B3 --> C["Calcular cuotas<br>DocumentInstallments"]
C --> D{"¿Tiene detracción?"} C --> D{"¿Tiene detracción?"}
D -->|Sí| E["Cuota 1: monto detracción<br>U_VS_TIPOCUOTA = D"] D -->|Sí| E["Cuota 1: monto detracción<br>U_VS_TIPOCUOTA = D"]
@@ -27,7 +29,7 @@ flowchart TD
K --> P["U_IDC_VALREF =<br>round((total_weight / 1000) *<br>CUADRO_VALOR_REFERENCIAL[zona], 2)"] K --> P["U_IDC_VALREF =<br>round((total_weight / 1000) *<br>CUADRO_VALOR_REFERENCIAL[zona], 2)"]
P --> Q["Armar payload completo"] P --> Q["Armar payload completo"]
Q --> R["Cabecera:<br>DocType, CardCode, NumAtCard,<br>DocDate, DocDueDate,<br>U_IDC_NUMGR, Comments"] Q --> R["Cabecera:<br>DocType, CardCode, NumAtCard,<br>DocDate = fecha_contabilizacion,<br>DocDueDate = fecha_vencimiento,<br>U_IDC_NUMGR, Comments"]
R --> S["DocumentLines[] +<br>DocumentInstallments[]"] R --> S["DocumentLines[] +<br>DocumentInstallments[]"]
S --> T["← Retornar dict para<br>POST /Drafts"] S --> T["← Retornar dict para<br>POST /Drafts"]
``` ```
+65 -25
View File
@@ -5,16 +5,16 @@
| Archivo | Líneas | Rol | | Archivo | Líneas | Rol |
|---------|--------|-----| |---------|--------|-----|
| `main.py` | 134 | Demonio orquestador (loop de horarios) | | `main.py` | 134 | Demonio orquestador (loop de horarios) |
| `pipeline.py` | 957 | Pipeline core (procesar un correo completo) | | `pipeline.py` | 1284 | Pipeline core (procesar un correo completo) |
| `sunat_schema.py` | 521 | Parseo de XML SUNAT (Invoice, DespatchAdvice) | | `sunat_schema.py` | 720 | Parseo de XML SUNAT (Invoice, DespatchAdvice) |
| `pdf_utilities.py` | 450 | Parseo de PDFs (factura, guías) | | `pdf_utilities.py` | 464 | Parseo de PDFs (factura, guías) |
| `sapb1_manager.py` | 322 | Comunicación con SAP B1 Service Layer | | `sapb1_manager.py` | 321 | Comunicación con SAP B1 Service Layer |
| `outlook_utilities.py` | 228 | Comunicación con Microsoft Graph | | `outlook_utilities.py` | 234 | Comunicación con Microsoft Graph |
| `hana_manager.py` | 126 | Comunicación con SAP HANA directa | | `hana_manager.py` | 123 | Comunicación con SAP HANA directa (fallback de `sapb1_manager` y valor referencial) |
| `database_utilities.py` | 114 | SQLite local (cache de correos) | | `database_utilities.py` | 116 | SQLite local (cache de correos) |
| `consulta_rapida.py` | 115 | Script auxiliar para reprocesar correos por ID | | `consulta_rapida.py` | 113 | Script auxiliar para reprocesar correos por ID |
| `email_utilities.py` | 93 | Utilitarios de adjuntos (ZIP, filtrado) | | `email_utilities.py` | 52 | Utilitarios de adjuntos (ZIP, filtrado) |
| `logger_utilities.py` | 72 | Logging a archivo + consola | | `logger_manager.py` | 149 | Logging a archivo rotado (30 días) + consola + captura de `print()` |
--- ---
@@ -22,15 +22,21 @@
``` ```
main.py main.py
├── logger_manager.py
└── pipeline.py └── pipeline.py
├── sunat_schema.py ├── sunat_schema.py
├── pdf_utilities.py ├── pdf_utilities.py
├── sapb1_manager.py ├── sapb1_manager.py
│ └── hana_manager.py │ └── hana_manager.py
├── hana_manager.py (valor referencial, Sp_ObtenerValorReferencial)
├── outlook_utilities.py ├── outlook_utilities.py
├── email_utilities.py ├── email_utilities.py
│ └── database_utilities.py
└── database_utilities.py └── database_utilities.py
consulta_rapida.py
├── logger_manager.py
├── database_utilities.py
└── pipeline.py (_procesar_un_correo, step_authenticate)
``` ```
--- ---
@@ -50,13 +56,21 @@ main()
├── _procesar_pdfs() → pdf_cache ├── _procesar_pdfs() → pdf_cache
│ └── pdf_utilities.extraer_datos_pdf() │ └── pdf_utilities.extraer_datos_pdf()
├── _procesar_xmls(pdf_cache) → documentos[] ├── _procesar_xmls(pdf_cache) → documentos[]
│ └── sunat_schema.extraer_datos_xml() │ ├── sunat_schema.extraer_datos_xml()
│ └── _copiar_a_red() → copia PDF/XML a ruta de red (RUTA_RED_FACTURACION)
├── _completar_guias(documentos, pdf_cache) → completa guías faltantes desde PDF
├── _validar_guias(documentos) → advierte guías con datos incompletos
├── _guardar_resultado(documentos) ├── _guardar_resultado(documentos)
├── _validate_prices(factura) → (ok, resultados) ├── _validate_prices(factura) → (ok, resultados)
│ └── sapb1_manager.get_delivery_notes() │ └── sapb1_manager.get_delivery_notes()
│ ├── SL (Service Layer) GET /DeliveryNotes │ ├── SL (Service Layer) GET /DeliveryNotes
│ └── HANA fallback (get_delivery) │ ├── HANA fallback (get_delivery: ODLN, luego OWTR)
├── _build_sap_draft(factura, resultados) → draft │ └── si vino de OWTR: GET StockTransfers(DocEntry)
│ → U_IDC_NUMOV → GET Orders(U_IDC_NUMOV)
├── _obtener_valor_referencial_sap(factura) → guias_valor_ref
│ └── hana_manager.obtener_valor_referencial() (Sp_ObtenerValorReferencial)
├── _build_sap_draft(factura, resultados) → draft (incluye U_VS_ANEXO_PDF/XML)
│ └── sapb1_manager.obtener_condicion_pago(CardCode) → DocDueDate
├── _guardar_draft_json(draft) ├── _guardar_draft_json(draft)
├── sapb1_manager.create_draft(draft) ├── sapb1_manager.create_draft(draft)
└── outlook_utilities.send_email(notificación) └── outlook_utilities.send_email(notificación)
@@ -75,21 +89,47 @@ main()
| 5 | `.env.dev` vs `.env` inconsistente | `sapb1_manager.py` | ✅ Corregido | | 5 | `.env.dev` vs `.env` inconsistente | `sapb1_manager.py` | ✅ Corregido |
| 6 | `HANA_HOST` vs `HANA_SERVER` en `.env` | `hana_manager.py` | ✅ Corregido | | 6 | `HANA_HOST` vs `HANA_SERVER` en `.env` | `hana_manager.py` | ✅ Corregido |
| 7 | Columna `Cancelled` vs `CANCELED` en HANA | `hana_manager.py` | ✅ Corregido | | 7 | Columna `Cancelled` vs `CANCELED` en HANA | `hana_manager.py` | ✅ Corregido |
| 8 | Bloque `if __name__ == "__main__"` borraba un correo real de la BD al ejecutar el módulo directo | `database_utilities.py` | ✅ Corregido |
| 9 | `extraer_datos_xml` solo procesaba guías tipo `31`; tipo `09` (remitente) se descartaba pese a estar documentado | `sunat_schema.py` | ✅ Corregido |
| 10 | `DatosComprobante.__str__` usaba `ref.id` (campo que ya no existe en `DocumentoReferencia`) | `sunat_schema.py` | ✅ Corregido |
| 11 | Log de error HTTP con `print("%s", ...)` no interpolaba el mensaje | `sapb1_manager.py` | ✅ Corregido |
| 12 | Fuga de conexión HANA si `cursor()` fallaba (quedaba fuera del `try`) | `hana_manager.py` | ✅ Corregido |
| 13 | `razon_social_emisor` se llenaba con el nombre del receptor en el JSON de depuración del PDF | `pipeline.py` | ✅ Corregido |
| 14 | Typo `VERIFI_SSL` en vez de `VERIFY_SSL` | `outlook_utilities.py` / `.env` | ✅ Corregido |
| 15 | Conexiones SQLite sin `try/finally` (fuga si fallaba una consulta a mitad de camino) | `database_utilities.py` | ✅ Corregido |
| 16 | Código muerto sin llamadores (`quitar_correos_ya_registrados_en_base_de_datos`, `procesar_adjuntos_email`) | `email_utilities.py` | ✅ Corregido (eliminado) |
| 17 | `logger_utilities.py` (redirección global de stdout, sin niveles ni rotación real) reemplazado por `logger_manager.py` (logging estándar, rotación diaria 30 días, captura de `print()`) | `logger_manager.py` | ✅ Corregido |
| 18 | `task()`/`last_task()` de `logger_manager.py` no devolvían el sub-logger (`with ... as sub` daba siempre `None`) | `logger_manager.py` | ✅ Corregido |
| 19 | `DOWNLOAD_FOLDER` duplicado en `.env` | `.env` | ✅ Corregido |
| 20 | Guías tipo `09` no se encontraban si el documento estaba en `OWTR` (Traslado de Inventario) en vez de `ODLN` | `hana_manager.py` | ✅ Corregido (fallback ODLN → OWTR) |
| 21 | Parámetros `tipo`/`serie` cruzados al llamar `get_delivery`/`get_delivery_notes` (mapeaban al revés a `U_BPP_MDSD`/`U_BPP_MDTD`) | `hana_manager.py`, `sapb1_manager.py`, `pipeline.py` | ✅ Corregido (orden natural `tipo, serie, numero`) |
| 22 | `StockTransfers` (OWTR) no tiene líneas `FL*`, por lo que la validación de precios fallaba siempre para esas guías | `sapb1_manager.py` | ✅ Corregido (resuelve la Orden de Venta vía `U_IDC_NUMOV` y valida contra `Orders(DocEntry)`) |
| 23 | `DocDueDate` del draft usaba `fecha_emision` del XML, sin considerar la condición de pago del proveedor | `pipeline.py`, `sapb1_manager.py` | ✅ Corregido (`DocDueDate` = fecha de contabilización + días de `PaymentTermsTypes`) |
| 24 | Patrón regex de valor referencial no reconocía la variante truncada "VALOR REFER" (ej. "VALOR REFER:S/ 1431.16") | `sunat_schema.py` | ✅ Corregido |
--- ---
## Funciones internas en `_procesar_un_correo` (pipeline.py) ## Funciones internas en `_procesar_un_correo` (pipeline.py)
> Nota: `_ruta_carpeta` y `_copiar_a_red` son helpers a nivel de módulo (no anidados en `_procesar_un_correo`); el resto son funciones anidadas dentro de `_procesar_un_correo` (líneas 142-1304).
| Función | Líneas | Propósito | | Función | Líneas | Propósito |
|---------|--------|-----------| |---------|--------|-----------|
| `_descargar_adjuntos` | 107-134 | Descarga adjuntos vía Graph API | | `_ruta_carpeta` (módulo) | 33-34 | Resuelve una ruta relativa al directorio del script |
| `_descomprimir` | 136-149 | Descomprime ZIPs | | `_copiar_a_red` (módulo) | 37-94 | Copia PDF/XML a la ruta de red de Facturación Electrónica (`RUTA_RED_FACTURACION`) |
| `_filtrar_y_limpiar` | 151-191 | Filtra PDF/XML, elimina el resto | | `_descargar_adjuntos` | 169-196 | Descarga adjuntos vía Graph API |
| `_procesar_pdfs` | 193-246 | Extrae datos de PDFs, renombra, genera cache | | `_descomprimir` | 198-211 | Descomprime ZIPs |
| `_procesar_xmls` | 248-377 | Procesa XMLs, cruza con PDF, asigna guías | | `_filtrar_y_limpiar` | 213-253 | Filtra PDF/XML, elimina el resto |
| `_guardar_resultado` | 379-408 | Guarda JSON con datos extraídos | | `_procesar_pdfs` | 255-308 | Extrae datos de PDFs, renombra, genera cache |
| `_build_sap_draft` | 410-569 | Construye payload del draft SAP B1 | | `_procesar_xmls` | 310-463 | Procesa XMLs, cruza con PDF, asigna guías, copia a red |
| `_validate_prices` | 571-745 | Valida precios contra DeliveryNotes SAP | | `_completar_guias` | 465-522 | Completa guías faltantes en líneas XML desde el PDF cache |
| `_build_validation_html` | 747-775 | Genera tabla HTML para notificación | | `_validar_guias` | 524-532 | Advierte (log) guías con datos incompletos |
| `_build_notification_body` | 777-814 | Arma cuerpo del email de notificación | | `_guardar_resultado` | 534-653 | Guarda JSON con datos extraídos (XML y PDF) |
| `_guardar_draft_json` | 816-842 | Guarda draft JSON para depuración | | `_calcular_fecha_vencimiento` | 665-692 | Calcula `DocDueDate` = fecha de contabilización + días de la condición de pago (`PaymentTermsTypes`) |
| `_build_sap_draft` | 694-855 | Construye payload del draft SAP B1 |
| `_validate_prices` | 856-1030 | Valida precios contra DeliveryNotes / Orders (SAP) |
| `_build_validation_html` | 1032-1061 | Genera tabla HTML de validación de precios |
| `_obtener_valor_referencial_sap` | 1062-1090 | Consulta `Sp_ObtenerValorReferencial` en HANA por guía |
| `_build_valor_referencial_html` | 1091-1126 | Genera tabla HTML comparando valor referencial XML vs SAP |
| `_build_notification_body` | 1127-1168 | Arma cuerpo del email de notificación |
| `_guardar_draft_json` | 1169-1195 | Guarda draft JSON para depuración |
+35 -25
View File
@@ -4,11 +4,11 @@
``` ```
main.py main.py
├── Constantes: HORARIOS (4 bloques horarios) ├── Constantes: HORARIOS (5 bloques horarios)
├── obtener_intervalo(dt) → (intervalo, modo) | None ├── obtener_intervalo(dt) → (intervalo, modo) | None
├── segundos_hasta_proximo_inicio(dt) → int ├── segundos_hasta_proximo_inicio(dt) → int
├── non_negative_int(value) → int (validador argparse) ├── non_negative_int(value) → int (validador argparse)
└── main() → None └── main() → None (bucle infinito envuelto en try/except KeyboardInterrupt)
``` ```
## Proceso de `main()` ## Proceso de `main()`
@@ -17,7 +17,8 @@ main.py
flowchart TD flowchart TD
A[Inicio main] --> B[Parsear args --dias] A[Inicio main] --> B[Parsear args --dias]
B --> C[Cargar .env → EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER] B --> C[Cargar .env → EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER]
C --> D{Bucle infinito} C --> Z[try:]
Z --> D{Bucle infinito}
D --> E[inicio_ciclo = datetime.now] D --> E[inicio_ciclo = datetime.now]
E --> F[obtener_intervalo inicio_ciclo] E --> F[obtener_intervalo inicio_ciclo]
@@ -37,6 +38,8 @@ flowchart TD
O --> P[Log próxima ejecución] O --> P[Log próxima ejecución]
P --> N P --> N
D -. KeyboardInterrupt .-> Q[🛑 Demonio detenido por el usuario]
classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px; classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px;
``` ```
@@ -49,26 +52,29 @@ main()
│ │
├── 2. Cargar .env → EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER ├── 2. Cargar .env → EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER
│ │
├── 3. LOOP INFINITO (while True): ├── 3. try:
│ │ │ └── LOOP INFINITO (while True):
│ ├── 3.1. inicio_ciclo = datetime.now()
│ │
│ ├── 3.2. resultado = obtener_intervalo(inicio_ciclo)
│ │ │
│ ├── ¿Sí está en horario?
│ │ │
│ │ ├── Extraer (intervalo, modo)
│ │ ├── run_pipeline(dias, EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER)
│ │ ├── Calcular duración real del ciclo
│ │ ├── ⚠️ Si duración > intervalo → warning
│ │ └── dormir = max(0, intervalo - duración)
│ │
│ └── ¿No está en horario?
│ │ │ │
│ ├── dormir = segundos_hasta_proximo_inicio() (06:30 del día siguiente) │ ├── 3.1. inicio_ciclo = datetime.now()
│ └── Log "Fuera del horario, próxima ejecución en..." │ │
│ ├── 3.2. resultado = obtener_intervalo(inicio_ciclo)
│ │ │
│ ├── ¿Sí está en horario?
│ │ │
│ │ ├── Extraer (intervalo, modo)
│ │ ├── run_pipeline(dias, EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER)
│ │ ├── Calcular duración real del ciclo
│ │ ├── ⚠️ Si duración > intervalo → warning
│ │ └── dormir = max(0, intervalo - duración)
│ │
│ └── ¿No está en horario?
│ │
│ ├── dormir = segundos_hasta_proximo_inicio() (06:30 del día siguiente)
│ └── Log "Fuera del horario, próxima ejecución en..."
│ │
│ └── 3.3. time.sleep(dormir) → vuelve a 3.1
│ │
└── 4. time.sleep(dormir) → vuelve a 3.1 └── except KeyboardInterrupt: 🛑 "Demonio detenido por el usuario" (sin traceback)
``` ```
## Bloques horarios definidos ## Bloques horarios definidos
@@ -79,14 +85,18 @@ main()
| 13:15 | 14:00 | 1800s | full | | 13:15 | 14:00 | 1800s | full |
| 14:00 | 18:30 | 300s | rápido | | 14:00 | 18:30 | 300s | rápido |
| 18:30 | 21:30 | 3600s | full | | 18:30 | 21:30 | 3600s | full |
| 00:00 | 05:00 | 60s | rápido |
Fuera de ese rango → duerme hasta las 06:30 del día siguiente. Nota: entre las 21:30 y las 00:00, y entre las 05:00 y las 06:30, ningún bloque cubre esos minutos. En esos huecos `obtener_intervalo()` devuelve `None` y `segundos_hasta_proximo_inicio()` calcula el tiempo de espera hasta las 06:30 del día siguiente (no hasta el bloque de las 00:00), por lo que el demonio se queda dormido hasta las 06:30 aunque exista un bloque configurado a las 00:00.
## Entry point (línea 121-130) ## Entry point (línea 126-134)
``` ```
if __name__ == "__main__": if __name__ == "__main__":
1. logger_utilities.setup_logger() 1. logger_manager.setup_logging()
2. logger_utilities.limpiar_logs_antiguos(dias=30) └── Configura logging a archivo rotado (logs/descarga_factura_transporte.log,
rotación diaria, 30 días de historial) + consola, y redirige print()/stderr
al mismo log (no hace falta migrar cada print a logger.info).
2. print(...) banner de inicio, incluyendo logger_manager.LOG_FILE
3. main() 3. main()
``` ```
+86 -28
View File
@@ -4,11 +4,11 @@
``` ```
pipeline.py pipeline.py
├── CONSTANTES: CUADRO_VALOR_REFERENCIAL ├── CONFIG: RUTA_RED_FACTURACION, RUC_EMPRESA (desde .env)
├── HELPERS: _ruta_carpeta() ├── HELPERS: _ruta_carpeta(), _copiar_a_red(data, _log)
├── PASO 1: step_authenticate() → token | None ├── PASO 1: step_authenticate() → token | None
├── PASO 2: step_fetch_emails() → list[dict] ├── PASO 2: step_fetch_emails() → list[dict]
├── _procesar_un_correo() → None (core) ├── _procesar_un_correo() → None (core, funciones anidadas)
└── run_pipeline() → None └── run_pipeline() → None
``` ```
@@ -51,44 +51,75 @@ flowchart TD
I -- No --> C I -- No --> C
I -- Sí --> J[6. _procesar_pdfs]:::highlight I -- Sí --> J[6. _procesar_pdfs]:::highlight
J --> K[7. _procesar_xmls]:::highlight J --> K[7. _procesar_xmls]:::highlight
K --> L{Hay documentos?} K --> K2[8. _completar_guias]
K2 --> K3[9. _validar_guias]
K3 --> L{Hay documentos?}
L -- No --> C L -- No --> C
L -- Sí --> M[8. _guardar_resultado] L -- Sí --> M[10. _guardar_resultado]
M --> N[9. Filtrar facturas tipo 01] M --> N[11. Filtrar facturas tipo 01]
N --> O{Hay facturas?} N --> O{Hay facturas?}
O -- No --> C O -- No --> C
O -- Sí --> P[Bucle: por cada factura] O -- Sí --> P[Bucle: por cada factura]
P --> Q[10. _validate_prices]:::highlight P --> Q[12. _validate_prices]:::highlight
Q --> R[11. _build_sap_draft]:::highlight Q --> Q2[12.5 _obtener_valor_referencial_sap]
R --> S[12. _guardar_draft_json] Q2 --> R[13. _build_sap_draft]:::highlight
R --> S[14. _guardar_draft_json]
S --> T{Todas coinciden?} S --> T{Todas coinciden?}
T -- Sí --> U[13. sapb1_manager.create_draft] T -- Sí --> U[15. sapb1_manager.create_draft]
T -- No --> V[⏭️ Draft NO creado] T -- No --> V[⏭️ Draft NO creado]
U --> W[14. outlook_utilities.send_email] U --> W[16. outlook_utilities.send_email]
V --> W V --> W
W --> P W --> P
classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px; classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px;
``` ```
`_procesar_xmls` (paso 7) incluye internamente la copia de PDF/XML a la ruta de red (`_copiar_a_red`, ver más abajo) por cada comprobante procesado.
--- ---
## Funciones internas de `_procesar_un_correo` ## Funciones internas de `_procesar_un_correo`
> `_ruta_carpeta` y `_copiar_a_red` están definidas a nivel de módulo (no anidadas); el resto son funciones anidadas dentro de `_procesar_un_correo`.
| Función | Línea | Propósito | | Función | Línea | Propósito |
|---------|-------|-----------| |---------|-------|-----------|
| `_descargar_adjuntos()` | 107 | Descarga adjuntos vía Microsoft Graph | | `_ruta_carpeta()` (módulo) | 33 | Resuelve una ruta relativa al directorio del script |
| `_descomprimir()` | 136 | Descomprime archivos ZIP | | `_copiar_a_red(data, _log)` (módulo) | 37 | Copia PDF/XML de un comprobante a la ruta de red configurable |
| `_filtrar_y_limpiar()` | 151 | Filtra solo PDF/XML, elimina el resto | | `_descargar_adjuntos()` | 169 | Descarga adjuntos vía Microsoft Graph |
| **`_procesar_pdfs()`** | **193** | **Extrae datos de PDFs, renombra, genera cache** | | `_descomprimir()` | 198 | Descomprime archivos ZIP |
| **`_procesar_xmls(pdf_cache)`** | **248** | **Procesa XMLs, cruza con PDF, asigna guías** | | `_filtrar_y_limpiar()` | 213 | Filtra solo PDF/XML, elimina el resto |
| `_guardar_resultado(documentos)` | 372 | Guarda JSON con datos extraídos | | **`_procesar_pdfs()`** | **255** | **Extrae datos de PDFs, renombra, genera cache** |
| **`_build_sap_draft(factura, resultados_val)`** | **403** | **Construye payload del draft SAP B1** | | **`_procesar_xmls(pdf_cache)`** | **310** | **Procesa XMLs, cruza con PDF, asigna guías, copia a red** |
| **`_validate_prices(factura)`** | **564** | **Valida precios contra DeliveryNotes SAP** | | `_completar_guias(documentos, pdf_cache)` | 465 | Completa guías faltantes en líneas XML desde el PDF cache |
| `_build_validation_html(resultados)` | 741 | Genera tabla HTML para notificación | | `_validar_guias(documentos)` | 524 | Advierte (log) guías con datos incompletos (falta tipo/serie/numero) |
| `_build_notification_body(status, factura, validation_table)` | 771 | Arma cuerpo del email de notificación | | `_guardar_resultado(documentos, datos_pdf)` | 534 | Guarda JSON con datos extraídos (XML y PDF) |
| `_guardar_draft_json(draft, serie, numero)` | 810 | Guarda draft JSON para depuración | | `_calcular_fecha_vencimiento(fecha_base, condicion_pago)` | 665 | Calcula `DocDueDate` = fecha de contabilización + días de `PaymentTermsTypes` |
| **`_build_sap_draft(factura, resultados_val)`** | **694** | **Construye payload del draft SAP B1 (incluye `U_VS_ANEXO_PDF`/`U_VS_ANEXO_XML`, `DocDueDate` por condición de pago)** |
| **`_validate_prices(factura)`** | **856** | **Valida precios contra DeliveryNotes/Orders SAP** |
| `_build_validation_html(resultados)` | 1032 | Genera tabla HTML de validación de precios |
| `_obtener_valor_referencial_sap(factura)` | 1062 | Consulta `Sp_ObtenerValorReferencial` en HANA por cada guía única |
| `_build_valor_referencial_html(factura, guias_valor_ref)` | 1091 | Genera tabla HTML comparando valor referencial XML vs SAP |
| `_build_notification_body(status, factura, validation_table, valor_referencial_table, **kwargs)` | 1127 | Arma cuerpo del email de notificación |
| `_guardar_draft_json(draft, serie, numero)` | 1169 | Guarda draft JSON para depuración |
---
## `_copiar_a_red(data, _log)` — Copia a ruta de red
Copia el PDF y el XML de cada comprobante procesado a una ruta de red UNC configurable, en paralelo al guardado local existente (no lo reemplaza). No falla el pipeline si la ruta no está configurada o no está disponible: solo registra una advertencia.
- **Configuración** (`.env`): `RUTA_RED_FACTURACION` (ruta base UNC) y `RUC_EMPRESA` (RUC fijo de Aberio).
- **Estructura de destino**:
```
{RUTA_RED_FACTURACION}\{año}\{mes}\{día}\{tipo}\{RUC_EMPRESA}\{ruc_emisor}\
{RUC_EMPRESA}-{tipo}-{serie}-{numero}_FormatoImpreso.pdf
{RUC_EMPRESA}-{tipo}-{serie}-{numero}.xml
```
`RUC_EMPRESA` es el RUC de Aberio (fijo); `ruc_emisor` es el RUC del proveedor que emitió la factura (varía por comprobante). Año/mes/día salen de `fecha_emision`, sin ceros a la izquierda en mes/día.
- Guarda las rutas resultantes en `data["ruta_red_pdf"]` / `data["ruta_red_xml"]`, que luego usa `_build_sap_draft` para llenar `U_VS_ANEXO_PDF` / `U_VS_ANEXO_XML` en el draft SAP B1.
- Se invoca desde `_procesar_xmls`, justo después de resolver `data["ruta_pdf"]`.
--- ---
@@ -96,19 +127,46 @@ flowchart TD
``` ```
run_pipeline run_pipeline
├── database_utilities.init_db
├── step_authenticate ├── step_authenticate
│ └── outlook_utilities.get_access_token
├── step_fetch_emails ├── step_fetch_emails
│ └── outlook_utilities.get_emails
└── _procesar_un_correo (por cada email) └── _procesar_un_correo (por cada email)
├── database_utilities.get_existing_ids / save_emails
├── _descargar_adjuntos ├── _descargar_adjuntos
│ └── outlook_utilities.download_attachments
├── _descomprimir ├── _descomprimir
│ └── email_utilities.descomprimir_adjuntos
├── _filtrar_y_limpiar ├── _filtrar_y_limpiar
├── _procesar_pdfs ├── _procesar_pdfs
│ └── pdf_utilities.extraer_datos_pdf / renombrar_pdf
├── _procesar_xmls ├── _procesar_xmls
│ ├── sunat_schema.extraer_datos_xml
│ ├── pdf_utilities.extraer_referencias
│ └── _copiar_a_red
├── _completar_guias
├── _validar_guias
├── _guardar_resultado ├── _guardar_resultado
├── _validate_prices (por factura) │ └── sunat_schema.split_serie_numero, pdf_utilities.TIPO_MAP
│ └── sapb1_manager.get_delivery_notes ├── (por cada factura tipo 01)
├── _build_sap_draft │ ├── _validate_prices
├── _guardar_draft_json │ │ ├── sapb1_manager.get_zonas
├── sapb1_manager.create_draft │ │ └── sapb1_manager.get_delivery_notes
└── outlook_utilities.send_email │ │ ├── hana_manager.get_delivery (fallback si SL no responde;
│ │ │ busca en ODLN y, si no hay, en OWTR)
│ │ └── si el DocEntry vino de OWTR (StockTransfers), resuelve
│ │ además la Orden de Venta asociada (Orders vía
│ │ U_IDC_NUMOV) para poder validar las líneas FL*
│ ├── _build_validation_html
│ ├── _obtener_valor_referencial_sap
│ │ └── hana_manager.obtener_valor_referencial
│ ├── _build_valor_referencial_html
│ ├── _build_sap_draft
│ │ └── sapb1_manager.obtener_condicion_pago (BusinessPartners +
│ │ PaymentTermsTypes, para calcular DocDueDate)
│ ├── _guardar_draft_json
│ ├── sapb1_manager.create_draft (si todas las líneas coinciden)
│ ├── _build_notification_body
│ └── outlook_utilities.send_email
``` ```
+2 -2
View File
@@ -2,8 +2,8 @@
## Ubicación ## Ubicación
- **Archivo:** `pipeline.py` (línea 193-246) - **Archivo:** `pipeline.py` (línea 255-308, función anidada en `_procesar_un_correo`)
- **Librería:** `pdf_utilities.py` (línea 1-450) - **Librería:** `pdf_utilities.py` (línea 1-464)
--- ---
+61 -39
View File
@@ -2,8 +2,8 @@
## Ubicación ## Ubicación
- **Archivo:** `pipeline.py` (línea 248-370) - **Archivo:** `pipeline.py` (línea 310-463, función anidada en `_procesar_un_correo`)
- **Librería:** `sunat_schema.py` (línea 1-520) - **Librería:** `sunat_schema.py` (línea 1-720)
--- ---
@@ -18,14 +18,19 @@ flowchart TD
D --> E{Hay datos?} D --> E{Hay datos?}
E -- No --> F[ℹ️ XML sin datos] E -- No --> F[ℹ️ XML sin datos]
F --> B F --> B
E -- Sí --> G[Construir nombre PDF canónico] E -- Sí --> CDR{Es CDR?}
G --> H[Buscar PDF en cache o fallback] CDR -- Sí --> CDR2[Solo renombrar, continue]
H --> I[Cruzar documentos_referencia desde PDF]:::highlight CDR2 --> B
I --> J[Cruzar guías de remisión por línea]:::highlight CDR -- No --> G[Renombrar XML a nombre canónico]
G --> H[Construir nombre PDF canónico y buscarlo]
H --> RED[_copiar_a_red]:::highlight
RED --> I[Cruzar documentos_referencia desde PDF si faltan]:::highlight
I --> J[Asignar guías de remisión por línea]:::highlight
J --> K[Agregar a lista de documentos] J --> K[Agregar a lista de documentos]
K --> B K --> B
B -- Fin --> L[return documentos] B -- Fin --> L[Post-proceso: resolver GRE desde guía transportista referenciada]:::highlight
L --> M[return documentos]
classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px; classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px;
``` ```
@@ -46,45 +51,43 @@ _procesar_xmls(pdf_cache) → list[dict]
│ ├── xml_path = carpeta + adjunto │ ├── xml_path = carpeta + adjunto
│ │ │ │
│ ├── sunat_schema.extraer_datos_xml(xml_path) → data | None │ ├── sunat_schema.extraer_datos_xml(xml_path) → data | None
│ │ └── Solo procesa Invoice tipo 01 y DespatchAdvice tipo 31 │ │ └── Procesa Invoice tipo 01, DespatchAdvice tipo 09 y 31, y CDR (ApplicationResponse)
│ │ │ │
│ ├── ¿data es None? → ℹ️ XML sin datos, continue │ ├── ¿data es None? → ℹ️ XML sin datos, continue
│ │ │ │
│ ├── ¿data["es_cdr"]? → solo renombrar a "CDR-{ruc}-{tipo}-{serie}-{numero}.xml", continue
│ │
│ ├── data["ruta_xml"] = xml_path │ ├── data["ruta_xml"] = xml_path
│ │ │ │
│ ├── Construir nombre PDF canónico: │ ├── Renombrar XML a nombre canónico:
│ │ └── "{ruc_emisor}-{tipo}-{serie}-{numero}.pdf" │ │ └── "{ruc_emisor}-{tipo}-{serie}-{numero}.xml"
│ │ │ │
│ ├── Buscar PDF asociado: │ ├── Construir nombre PDF canónico y buscar el PDF asociado:
│ │ ├── 1. pdf_cache por nombre canónico │ │ ├── 1. Mismo nombre canónico con extensión .pdf
│ │ └── 2. Fallback: mismo nombre con extensión .pdf │ │ └── 2. Fallback: mismo nombre que el XML renombrado, con extensión .pdf
│ │ └── data["ruta_pdf"] = ruta encontrada o None │ │ └── data["ruta_pdf"] = ruta encontrada o None
│ │ │ │
│ ├── _copiar_a_red(data, _log)
│ │ └── Copia PDF/XML a la ruta de red (RUTA_RED_FACTURACION), si está configurada.
│ │ Guarda data["ruta_red_pdf"] / data["ruta_red_xml"] (ver docs/pipeline.md).
│ │
│ ├── ¿data sin documentos_referencia? │ ├── ¿data sin documentos_referencia?
│ │ ├── Buscar en pdf_cache por nombre canónico │ │ ├── Buscar en pdf_cache por nombre canónico
│ │ │ └── pdf_utilities.extraer_referencias(items) → refs │ │ │ └── pdf_utilities.extraer_referencias(items) → refs
│ │ ├── Si no → fallback: buscar en email["datos_pdf"] │ │ ├── Si no → fallback: buscar en email["datos_pdf"]
│ │ └── Si encuentra → data["documentos_referencia"] = refs │ │ └── Si encuentra → data["documentos_referencia"] = refs
│ │ │ │
│ ├── Asignar guías de remisión por línea: │ ├── Asignar guías de remisión y transportista por línea (ver prioridad abajo)
│ │ ├── refs_09 = [tipo 09] desde documentos_referencia
│ │ ├── refs_31 = [tipo 31] desde documentos_referencia
│ │ ├── pdf_items = pdf_cache[canonical].items[] (si existe)
│ │ │
│ │ └── Por cada línea en data["lineas"]:
│ │ │
│ │ ├── ¿Hay PDF items para esta línea?
│ │ │ ├── Parsear guias_remision[] desde descripción PDF
│ │ │ │ └── Regex: "{serie}-{numero}" con prefijo T/V/E
│ │ │ └── Parsear guia_transportista desde descripción PDF
│ │ │
│ │ ├── ¿Hay refs_09 para esta línea?
│ │ │ └── Asignar desde documentos_referencia ordenados
│ │ │
│ │ └── No → guias_remision = [], guia_transportista = None
│ │ │ │
│ └── ✅ Agregar data a documentos[] │ └── ✅ Agregar data a documentos[]
│ │
├── Post-procesamiento — resolver GRE desde guía de transporte referenciada:
│ ├── guia_lookup = {(tipo, serie, numero): doc} para cada documento tipo 09/31 del correo
│ └── Por cada factura (tipo 01), por cada documento_referencia tipo 31:
│ ├── Buscar la guía transportista en guia_lookup
│ ├── Tomar sus documentos_referencia tipo 09 (GRE) propios
│ └── Asignarlos a las líneas de la factura que aún no tengan guias_remision
│
└── return documentos └── return documentos
``` ```
@@ -99,11 +102,14 @@ flowchart TD
A[extraer_datos_xml] --> B[ET.parse xml] A[extraer_datos_xml] --> B[ET.parse xml]
B --> C{Tag raíz?} B --> C{Tag raíz?}
C -- ApplicationResponse --> CDR[_parse_application_response]:::highlight
CDR --> I2[return dict con es_cdr=True]
C -- Invoice --> D{tipo == 01?} C -- Invoice --> D{tipo == 01?}
D -- Sí --> E[_parse_invoice]:::highlight D -- Sí --> E[_parse_invoice]:::highlight
D -- No --> F[return None] D -- No --> F[return None]
C -- DespatchAdvice --> G{tipo == 31?} C -- DespatchAdvice --> G{tipo en 09, 31?}
G -- Sí --> H[_parse_despatch_advice]:::highlight G -- Sí --> H[_parse_despatch_advice]:::highlight
G -- No --> F G -- No --> F
@@ -115,7 +121,7 @@ flowchart TD
classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px; classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px;
``` ```
Solo procesa **Facturas tipo 01** y **Guías de Remisión Transportista tipo 31**. Procesa **Facturas tipo 01**, **Guías de Remisión Remitente tipo 09**, **Guías de Remisión Transportista tipo 31**, y **CDR** (`ApplicationResponse`, solo para renombrar el archivo, no se agrega a `documentos[]`).
--- ---
@@ -164,10 +170,14 @@ flowchart TD
| `cantidad` | `cbc:InvoicedQuantity` | | `cantidad` | `cbc:InvoicedQuantity` |
| `precio_unitario` | `cac:PricingReference/cac:AlternativeConditionPrice/cbc:PriceAmount` o `cac:Price/cbc:PriceAmount` | | `precio_unitario` | `cac:PricingReference/cac:AlternativeConditionPrice/cbc:PriceAmount` o `cac:Price/cbc:PriceAmount` |
| `total_linea` | `cbc:LineExtensionAmount` | | `total_linea` | `cbc:LineExtensionAmount` |
| `guias_remision[]` / `guia_transportista` | Parseadas desde `cbc:Note` de la línea (`extraer_guias_desde_notes`) — ver prioridad de asignación más abajo |
| `valor_referencial` | Extraído de la descripción del ítem, del `Note` de la línea, o de los `Note` a nivel de documento (`extraer_valor_referencial`) |
--- ---
### `_parse_despatch_advice(root)` — Guía tipo 31 ### `_parse_despatch_advice(root)` — Guías tipo 09 y 31
La misma función procesa tanto la Guía de Remisión Remitente (09) como la Guía de Remisión Transportista (31); el `tipo` viene de `DespatchAdviceTypeCode`.
| Campo | Tag | | Campo | Tag |
|-------|-----| |-------|-----|
@@ -188,7 +198,7 @@ flowchart TD
| `ubigeo_partida` | `Delivery/Despatch/DespatchAddress/ID` | | `ubigeo_partida` | `Delivery/Despatch/DespatchAddress/ID` |
| `lineas[]` | `DespatchLine` con `DeliveredQuantity` y `Item/Description` | | `lineas[]` | `DespatchLine` con `DeliveredQuantity` y `Item/Description` |
Documentos de referencia desde `AdditionalDocumentReference`. Documentos de referencia desde `AdditionalDocumentReference` (para la guía transportista, típicamente referencian la GRE — guía remitente — asociada).
--- ---
@@ -205,15 +215,22 @@ pdf_cache[nombre_canonico].items[] → extraer_referencias()
└── guia_transportista → ref tipo 31 └── guia_transportista → ref tipo 31
``` ```
### 2. Asignar guías por línea ### 2. Asignar guías por línea (dentro de `_procesar_xmls`)
Prioridad para asignar `guias_remision` y `guia_transportista` a cada línea: Prioridad para asignar `guias_remision` y `guia_transportista` a cada línea de la factura, en el orden en que realmente se aplican en el código:
| Prioridad | Origen | Descripción | | Prioridad | Origen | Descripción |
|-----------|--------|-------------| |-----------|--------|-------------|
| 1ª | PDF items | Parse desde `items[i].guias_remision[]` y `items[i].guia_transportista` con regex `{T/V/E}{serie}-{numero}` | | 1ª | `notes_text` (ya resuelto en `sunat_schema._parse_invoice`) | Si la línea ya trae `guias_remision`/`guia_transportista` extraídos del `cbc:Note` del XML (vía `extraer_guias_desde_notes`), se conservan tal cual. |
| 2ª | `documentos_referencia` | Asignación ordinal: `refs_09[i]`, `refs_31[i]` | | 2ª | `documentos_referencia` (`refs_09`/`refs_31`) | Si la línea no trajo guías desde `notes_text`, se asigna posicionalmente desde `documentos_referencia` (`refs_09[i]`, `refs_31[i]`; la última línea recibe todas las refs restantes). |
| 3ª | Default | `[]` y `None` |
### 3. Post-procesamiento — resolver GRE desde guía de transporte referenciada
Después de procesar todos los XML del correo, si una factura referencia una **guía transportista (31)** y esa guía (presente como documento independiente en el mismo correo) referencia a su vez una o más **GRE (09)**, esas GRE se propagan a las líneas de la factura que aún no tengan `guias_remision` asignadas.
### 4. `_completar_guias` (paso posterior, fuera de `_procesar_xmls`)
Si tras los pasos anteriores alguna línea sigue sin `guias_remision`, `_completar_guias` (ver `docs/pipeline.md`) las copia desde los `items[]` del PDF cache, parseando el texto con regex (`{T/V/E}{serie}-{numero}`).
--- ---
@@ -246,12 +263,17 @@ Prioridad para asignar `guias_remision` y `guia_transportista` a cada línea:
"precio_unitario": 1.3396, "precio_unitario": 1.3396,
"total_linea": 468.86, "total_linea": 468.86,
"guias_remision": [{"tipo": "09", "serie": "T001", "numero": "127773"}], "guias_remision": [{"tipo": "09", "serie": "T001", "numero": "127773"}],
"guia_transportista": None "guia_transportista": None,
"valor_referencial": 468.86
} }
], ],
"ruta_xml": "/path/to/20537929520-01-F002-486.xml", "ruta_xml": "/path/to/20537929520-01-F002-486.xml",
"ruta_pdf": "/path/to/20537929520-01-F002-486.pdf", "ruta_pdf": "/path/to/20537929520-01-F002-486.pdf",
"ruta_red_pdf": "\\\\192.168.9.66\\b1_shf\\Facturacion Electronica\\PRODUCCION\\2026\\7\\8\\01\\20100029741\\20537929520\\20100029741-01-F002-486_FormatoImpreso.pdf",
"ruta_red_xml": "\\\\192.168.9.66\\b1_shf\\Facturacion Electronica\\PRODUCCION\\2026\\7\\8\\01\\20100029741\\20537929520\\20100029741-01-F002-486.xml",
"tipo_descripcion": "Factura" "tipo_descripcion": "Factura"
} }
] ]
``` ```
`ruta_red_pdf`/`ruta_red_xml` solo aparecen si `RUTA_RED_FACTURACION` está configurada en `.env` y la copia fue exitosa; se usan luego en `_build_sap_draft` para llenar `U_VS_ANEXO_PDF`/`U_VS_ANEXO_XML` (ver `docs/pipeline.md`).
+5 -1
View File
@@ -12,7 +12,11 @@ flowchart TD
F -->|Sí| H["Por cada guía en guias[]"] F -->|Sí| H["Por cada guía en guias[]"]
H --> I["Consultar SAP B1<br>get_delivery_notes()"] H --> I["Consultar SAP B1<br>get_delivery_notes()"]
I --> J["Por cada DeliveryNote"] I --> I2{"¿Guía encontrada en<br>ODLN o en OWTR?"}
I2 -->|ODLN| I3["Documento = DeliveryNotes(DocEntry)"]
I2 -->|OWTR| I4["Documento = StockTransfers(DocEntry)<br>→ leer U_IDC_NUMOV<br>→ Documento = Orders(U_IDC_NUMOV)"]
I3 --> J["Por cada documento<br>(DeliveryNote u Orden de Venta)"]
I4 --> J
J --> K["Obtener zona desde<br>U_IDC_DESTINO"] J --> K["Obtener zona desde<br>U_IDC_DESTINO"]
K --> L["Extraer WarehouseCode<br>de DocumentLines[0]"] K --> L["Extraer WarehouseCode<br>de DocumentLines[0]"]
-41
View File
@@ -1,29 +1,5 @@
import os import os
import zipfile import zipfile
import database_utilities
# ============================================================================
def quitar_correos_ya_registrados_en_base_de_datos(emails: list[dict]) -> list[dict]:
"""
Verifica cuáles correos son nuevos (no están en la BD), los guarda
y retorna la lista filtrada de los que tienen adjuntos.
"""
if not emails:
return []
# 1. Verificar cuáles ya existen en la BD
ids = [e['id'] for e in emails]
existentes = database_utilities.get_existing_ids(ids)
# Solo nos quedamos con los que NO están en la BD
correos_no_registrados = [e for e in emails if e['id'] not in existentes]
print(f"Correos nuevos detectados: {len(correos_no_registrados)}")
if correos_no_registrados:
print("Guardando nuevos correos en la base de datos...")
database_utilities.save_emails(correos_no_registrados)
return correos_no_registrados
# ============================================================================ # ============================================================================
def descomprimir_adjuntos(emails: list[dict], ruta: str) -> list[dict]: def descomprimir_adjuntos(emails: list[dict], ruta: str) -> list[dict]:
@@ -73,21 +49,4 @@ def filtrar_archivos_validos(archivos: list[str]) -> list[str]:
return [a for a in archivos if a.lower().endswith(extensiones_validas)] return [a for a in archivos if a.lower().endswith(extensiones_validas)]
# ============================================================================ # ============================================================================
def procesar_adjuntos_email(e: dict, archivos: list[str], ruta_descarga: str) -> list[str]:
"""
Descomprime y filtra los archivos de un correo.
Retorna la lista de archivos válidos si existen, de lo contrario lista vacía.
"""
# 1. Descomprimir archivos ZIP si existen
archivos_procesados = descomprimir_adjuntos(archivos, ruta_descarga)
# 2. Filtrar solo PDF y XML
archivos_validos = filtrar_archivos_validos(archivos_procesados)
if archivos_validos:
e['archivos'] = archivos_validos
return archivos_validos
return []
# ============================================================================
+40 -21
View File
@@ -10,8 +10,9 @@ from dotenv import load_dotenv
# CONFIGURACIÓN # CONFIGURACIÓN
# ============================================================================ # ============================================================================
# Cargar variables de entorno desde .env # Cargar variables de entorno desde .env (ruta absoluta: no depende del
load_dotenv(dotenv_path=".env") # directorio de trabajo desde el que se lance el proceso)
load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), ".env"))
# Configuración de la API # Configuración de la API
HANA_HOST = os.getenv("HANA_SERVER", "") HANA_HOST = os.getenv("HANA_SERVER", "")
@@ -39,45 +40,62 @@ def get_connection():
def get_delivery(tipo: str, serie: str, numero: str) -> list: def get_delivery(tipo: str, serie: str, numero: str) -> list:
""" """
Consulta la tabla ODLN en SAP HANA para obtener DeliveryNotes. Consulta la tabla ODLN en SAP HANA para obtener DeliveryNotes.
Si no encuentra el tipo, serie y número en ODLN, busca en OWTR
(Traslados de Inventario) como fallback.
Args: Args:
tipo: Código de serie/documento (U_BPP_MDSD). tipo: Código de tipo de documento SUNAT, ej. "09"/"31" (U_BPP_MDTD).
serie: Serie del documento (U_BPP_MDTD). serie: Serie del documento, ej. "T001" (U_BPP_MDSD).
numero: Número del documento (se busca con LIKE). numero: Número del documento (se busca con LIKE).
Returns: Returns:
list[dict] — Lista con DocEntry, DocNum, CardCode, CardName. list[dict] — Lista con DocEntry, DocNum, CardCode, CardName, Tabla.
"Tabla" indica en qué tabla se encontró el registro ("ODLN" u
"OWTR"), para que el llamador sepa qué endpoint de Service Layer
usar (DeliveryNotes o StockTransfers).
""" """
schema = HANA_SCHEMA
query = f'''SELECT "DocEntry", "DocNum", "CardCode", "CardName"
FROM "{schema}"."ODLN"
WHERE "CANCELED" = 'N'
AND "U_BPP_MDSD" = ?
AND "U_BPP_MDTD" = ?
AND "U_BPP_MDCD" LIKE ?'''
pattern = f"%{numero}%"
connection = get_connection() connection = get_connection()
if not connection: if not connection:
return [] return []
cursor = connection.cursor()
try: try:
results = _query_delivery_table(connection, "ODLN", tipo, serie, numero)
if results:
return results
return _query_delivery_table(connection, "OWTR", tipo, serie, numero)
finally:
connection.close()
# ============================================================================
def _query_delivery_table(connection, tabla: str, tipo: str, serie: str, numero: str) -> list:
"""Ejecuta la consulta de tipo/serie/número contra la tabla indicada (ODLN u OWTR)."""
schema = HANA_SCHEMA
query = f'''SELECT "DocEntry", "DocNum", "CardCode", "CardName"
FROM "{schema}"."{tabla}"
WHERE "CANCELED" = 'N'
AND "U_BPP_MDTD" = ?
AND "U_BPP_MDSD" = ?
AND "U_BPP_MDCD" LIKE ?'''
pattern = f"%{numero}%"
cursor = None
try:
cursor = connection.cursor()
cursor.execute(query, (tipo, serie, pattern)) cursor.execute(query, (tipo, serie, pattern))
columns = [column[0] for column in cursor.description] columns = [column[0] for column in cursor.description]
results = [] results = []
for row in cursor.fetchall(): for row in cursor.fetchall():
results.append(dict(zip(columns, row))) registro = dict(zip(columns, row))
registro["Tabla"] = tabla
results.append(registro)
return results return results
except Exception as e: except Exception as e:
print(f" ❌ Error en consulta HANA get_delivery: {e}") print(f" ❌ Error en consulta HANA get_delivery ({tabla}): {e}")
return [] return []
finally: finally:
if cursor: if cursor:
cursor.close() cursor.close()
if connection:
connection.close()
# ============================================================================ # ============================================================================
def obtener_valor_referencial(serie: str, numero: str) -> float: def obtener_valor_referencial(serie: str, numero: str) -> float:
@@ -100,8 +118,9 @@ def obtener_valor_referencial(serie: str, numero: str) -> float:
if not connection: if not connection:
return 0.0 return 0.0
cursor = connection.cursor() cursor = None
try: try:
cursor = connection.cursor()
cursor.execute(query, (serie, numero)) cursor.execute(query, (serie, numero))
columns = [column[0] for column in cursor.description] columns = [column[0] for column in cursor.description]
row = cursor.fetchone() row = cursor.fetchone()
+150
View File
@@ -0,0 +1,150 @@
import logging
import contextvars
import os
import sys
from contextlib import contextmanager
from logging.handlers import TimedRotatingFileHandler
from pathlib import Path
LOG_DIR = Path(__file__).parent / "logs"
LOG_FILE = LOG_DIR / "descarga_factura_transporte.log"
_LOG_CONFIGURED = False
_stack: contextvars.ContextVar[list] = contextvars.ContextVar("log_stack", default=[])
# ============================================================================
class TreeFormatter(logging.Formatter):
def format(self, record):
return f"{self.formatTime(record)} ─── {record.getMessage()}"
def formatTime(self, record, datefmt=None):
import datetime
return datetime.datetime.fromtimestamp(record.created).strftime("%Y-%m-%d %H:%M:%S")
# ============================================================================
def _build_prefix(stack, is_last):
if not stack:
return ""
parts = []
for sib_is_last in stack[:-1]:
parts.append(" " if sib_is_last else "│ ")
parts.append("└── " if is_last else "├── ")
return "".join(parts)
# ============================================================================
class _TaskContext:
def __init__(self, logger, msg, emoji, is_last):
self._logger = logger
self._msg = msg
self._emoji = emoji
self._is_last = is_last
def __enter__(self):
stack = _stack.get()
prefix = _build_prefix(stack, self._is_last)
emoji_str = f"{self._emoji} " if self._emoji else ""
self._logger._logger.info(f"{prefix}{emoji_str}{self._msg}")
_stack.set(stack + [self._is_last])
return TaskLogger(self._logger._logger)
def __exit__(self, exc_type, exc_val, exc_tb):
_stack.set(_stack.get()[:-1])
# ============================================================================
class TaskLogger:
def __init__(self, logger):
self._logger = logger
@contextmanager
def task(self, msg, emoji=""):
with _TaskContext(self, msg, emoji, is_last=False) as sub:
yield sub
@contextmanager
def last_task(self, msg, emoji=""):
with _TaskContext(self, msg, emoji, is_last=True) as sub:
yield sub
def info(self, msg, *args, _last=False, **kwargs):
self._log(logging.INFO, msg, args, kwargs, _last)
def warning(self, msg, *args, _last=False, **kwargs):
self._log(logging.WARNING, msg, args, kwargs, _last)
def error(self, msg, *args, _last=False, **kwargs):
self._log(logging.ERROR, msg, args, kwargs, _last)
def _log(self, level, msg, args, kwargs, is_last):
stack = _stack.get()
prefix = _build_prefix(stack, is_last)
self._logger.log(level, f"{prefix}{msg}", *args, **kwargs)
class _StreamToLogger:
"""Redirige escrituras de un stream (stdout/stderr) al logger, línea por línea."""
def __init__(self, logger: logging.Logger, level: int) -> None:
self._logger = logger
self._level = level
self._buffer = ""
def write(self, message: str) -> None:
self._buffer += message
while "\n" in self._buffer:
line, self._buffer = self._buffer.split("\n", 1)
if line:
self._logger.log(self._level, line)
def flush(self) -> None:
pass
# ============================================================================
def setup_logging(level=None, console=True, capture_print=True):
"""
Configura el logging del proceso: archivo rotado a medianoche (30 días
de historial) y, opcionalmente, consola. Si ``capture_print`` es True
(por defecto), también redirige ``print()`` (stdout/stderr) al log, de
forma que cualquier salida existente en el proyecto quede registrada
en archivo sin tener que migrar cada ``print`` a ``logger.info``.
"""
global _LOG_CONFIGURED
if _LOG_CONFIGURED:
return
if level is None:
level_name = os.getenv("LOG_LEVEL", "INFO").upper()
level = getattr(logging, level_name, logging.INFO)
LOG_DIR.mkdir(exist_ok=True)
formatter = TreeFormatter()
file_handler = TimedRotatingFileHandler(
LOG_FILE,
when="midnight",
interval=1,
backupCount=30,
encoding="utf-8",
)
file_handler.setFormatter(formatter)
handlers: list[logging.Handler] = [file_handler]
if console:
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
handlers.append(console_handler)
logging.basicConfig(level=level, handlers=handlers, force=True)
if capture_print:
stdout_logger = logging.getLogger("stdout")
stderr_logger = logging.getLogger("stderr")
sys.stdout = _StreamToLogger(stdout_logger, logging.INFO)
sys.stderr = _StreamToLogger(stderr_logger, logging.ERROR)
_LOG_CONFIGURED = True
# ============================================================================
def get_logger(name="descarga_factura_transporte"):
setup_logging()
return TaskLogger(logging.getLogger(name))
-72
View File
@@ -1,72 +0,0 @@
import sys
import os
from datetime import datetime, timedelta
from typing import TextIO
# ============================================================================
class MultiStream:
"""
Clase para redirigir la salida a múltiples flujos (consola y archivo).
"""
def __init__(self, *streams: TextIO) -> None:
self.streams: tuple[TextIO, ...] = streams
def write(self, data: str) -> None:
for stream in self.streams:
stream.write(data)
stream.flush()
def flush(self) -> None:
for stream in self.streams:
stream.flush()
# ============================================================================
def setup_logger() -> str:
"""
Configura la redirección de stdout y stderr a un archivo de log y a la consola.
Retorna la ruta del archivo de log creado.
"""
log_dir = "logs"
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# Nombre del archivo: YYYY-MM-DD_HH-MM-SS.log
timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
log_filename = f"{timestamp}.log"
log_path = os.path.join(log_dir, log_filename)
# Abrir archivo en modo append con encoding utf-8 para soportar iconos
log_file = open(log_path, "a", encoding="utf-8")
# Redirigir stdout y stderr
sys.stdout = MultiStream(sys.stdout, log_file)
sys.stderr = MultiStream(sys.stderr, log_file)
return log_path
# ============================================================================
def limpiar_logs_antiguos(dias: int = 7) -> None:
"""
Elimina archivos de log con más de 'n' días de antigüedad.
"""
log_dir = "logs"
if not os.path.exists(log_dir):
return
limite = datetime.now() - timedelta(days=dias)
count = 0
for archivo in os.listdir(log_dir):
ruta_archivo = os.path.join(log_dir, archivo)
if os.path.isfile(ruta_archivo) and archivo.endswith(".log"):
fecha_archivo = datetime.fromtimestamp(os.path.getmtime(ruta_archivo))
if fecha_archivo < limite:
try:
os.remove(ruta_archivo)
count += 1
except Exception as e:
print(f"⚠️ Error al eliminar log {archivo}: {e}")
if count > 0:
print(f"🧹 Se eliminaron {count} archivos de log antiguos (más de {dias} días).")
# ============================================================================
+5 -5
View File
@@ -4,7 +4,7 @@ import argparse
from datetime import datetime, timedelta from datetime import datetime, timedelta
from dotenv import load_dotenv from dotenv import load_dotenv
import logger_utilities import logger_manager
from pipeline import run_pipeline from pipeline import run_pipeline
# ============================================================================ # ============================================================================
@@ -65,7 +65,8 @@ def main() -> None:
dias = args.dias dias = args.dias
load_dotenv(dotenv_path=".env") # Ruta absoluta: no depende del directorio de trabajo desde el que se lance el proceso
load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), ".env"))
EMAIL = os.getenv("EMAIL", "") EMAIL = os.getenv("EMAIL", "")
DOWNLOAD_FOLDER = os.getenv("DOWNLOAD_FOLDER", "") DOWNLOAD_FOLDER = os.getenv("DOWNLOAD_FOLDER", "")
@@ -124,12 +125,11 @@ def main() -> None:
# ============================================================================ # ============================================================================
if __name__ == "__main__": if __name__ == "__main__":
log_path = logger_utilities.setup_logger() logger_manager.setup_logging()
logger_utilities.limpiar_logs_antiguos(dias=30)
print("=" * 60) print("=" * 60)
print(f"🚀 Demonio iniciado: {datetime.now():%Y-%m-%d %H:%M:%S}") print(f"🚀 Demonio iniciado: {datetime.now():%Y-%m-%d %H:%M:%S}")
print(f"📄 Log guardado en: {log_path}") print(f"📄 Log guardado en: {logger_manager.LOG_FILE}")
print("=" * 60) print("=" * 60)
main() main()
+17 -5
View File
@@ -11,15 +11,16 @@ warnings.filterwarnings("ignore")
# CONFIGURACIÓN # CONFIGURACIÓN
# ============================================================================ # ============================================================================
# Cargar variables de entorno desde .env # Cargar variables de entorno desde .env (ruta absoluta: no depende del
load_dotenv(dotenv_path=".env") # directorio de trabajo desde el que se lance el proceso)
load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), ".env"))
# Configuración de la API # Configuración de la API
CLIENT_ID = os.getenv("CLIENT_ID", "") CLIENT_ID = os.getenv("CLIENT_ID", "")
CLIENT_SECRET = os.getenv("CLIENT_SECRET", "") CLIENT_SECRET = os.getenv("CLIENT_SECRET", "")
TENANT_ID = os.getenv("TENANT_ID", "") TENANT_ID = os.getenv("TENANT_ID", "")
DOWNLOAD_FOLDER = os.getenv("DOWNLOAD_FOLDER","") DOWNLOAD_FOLDER = os.getenv("DOWNLOAD_FOLDER","")
VERIFY_SSL = os.getenv("VERIFI_SSL", "False").lower() == "true" VERIFY_SSL = os.getenv("VERIFY_SSL", "False").lower() == "true"
# ============================================================================ # ============================================================================
def get_access_token() -> str: def get_access_token() -> str:
@@ -149,16 +150,17 @@ def download_attachments(user_email: str, message_id: str, token: str, download_
return downloaded_files return downloaded_files
# ============================================================================ # ============================================================================
def send_email(access_token: str, from_email: str, to_recipients: list[str], subject: str, html_body: str, attachment_paths: list[str] | None = None) -> bool: def send_email(access_token: str, from_email: str, to_recipients: list[str], subject: str, html_body: str, attachment_paths: list[str] | None = None, cc_recipients: list[str] | None = None) -> bool:
""" """
Envía un correo electrónico con cuerpo HTML y múltiples adjuntos PDF. Envía un correo electrónico con cuerpo HTML y múltiples adjuntos PDF.
:param access_token: Token de acceso de Microsoft Graph API. :param access_token: Token de acceso de Microsoft Graph API.
:param from_email: Correo electrónico del remitente (cuenta de Office 365). :param from_email: Correo electrónico del remitente (cuenta de Office 365).
:param to_recipients: Lista de correos electrónicos de los destinatarios. :param to_recipients: Lista de correos electrónicos de los destinatarios.
:param subject: Asunto del correo. :param subject: Asunto del correo.
:param html_body: Contenido del correo en formato HTML. :param html_body: Contenido del correo en formato HTML.
:param attachment_paths: Lista de rutas a los archivos PDF que se adjuntarán. :param attachment_paths: Lista de rutas a los archivos PDF que se adjuntarán.
:param cc_recipients: Lista de correos electrónicos en copia (CC).
:return: True si se envió correctamente, False en caso contrario. :return: True si se envió correctamente, False en caso contrario.
""" """
url = f"https://graph.microsoft.com/v1.0/users/{from_email}/sendMail" url = f"https://graph.microsoft.com/v1.0/users/{from_email}/sendMail"
@@ -178,6 +180,15 @@ def send_email(access_token: str, from_email: str, to_recipients: list[str], sub
} }
}) })
# Construir lista de destinatarios en copia (CC) para Graph API
cc_payload = []
for email in (cc_recipients or []):
cc_payload.append({
"emailAddress": {
"address": email
}
})
# Construir lista de adjuntos # Construir lista de adjuntos
attachments_payload = [] attachments_payload = []
if attachment_paths: if attachment_paths:
@@ -214,6 +225,7 @@ def send_email(access_token: str, from_email: str, to_recipients: list[str], sub
"content": html_body "content": html_body
}, },
"toRecipients": recipients_payload, "toRecipients": recipients_payload,
"ccRecipients": cc_payload,
"attachments": attachments_payload "attachments": attachments_payload
}, },
"saveToSentItems": "true" "saveToSentItems": "true"
+11 -4
View File
@@ -1,6 +1,12 @@
import pdfplumber import pdfplumber
import os import os
import re import re
import unicodedata
def _sin_tildes(texto: str) -> str:
"""Quita tildes/diacríticos para comparaciones tolerantes a variaciones de formato."""
return "".join(c for c in unicodedata.normalize("NFKD", texto) if not unicodedata.combining(c))
TIPO_MAP = { TIPO_MAP = {
@@ -53,13 +59,14 @@ def _extract_base_data(text: str, pdf_path: str) -> dict:
if standalone_ruc: if standalone_ruc:
data["ruc_emisor"] = standalone_ruc.group(1) data["ruc_emisor"] = standalone_ruc.group(1)
if "FACTURA ELECTRÓNICA" in text.upper(): text_norm = _sin_tildes(text.upper())
if "FACTURA ELECTRONICA" in text_norm:
data["tipo_documento"] = "FACTURA" data["tipo_documento"] = "FACTURA"
elif "BOLETA DE VENTA" in text.upper(): elif "BOLETA DE VENTA" in text_norm:
data["tipo_documento"] = "BOLETA" data["tipo_documento"] = "BOLETA"
elif "TRANSPORTISTA" in text.upper() and "GUÍA DE REMISIÓN" in text.upper(): elif "TRANSPORTISTA" in text_norm and "GUIA DE REMISION" in text_norm:
data["tipo_documento"] = "GUIA DE REMISION TRANSPORTISTA" data["tipo_documento"] = "GUIA DE REMISION TRANSPORTISTA"
elif "GUÍA DE REMISIÓN" in text.upper() or "GRRE:" in text.upper(): elif "GUIA DE REMISION" in text_norm or "GRRE:" in text_norm:
data["tipo_documento"] = "GUIA DE REMISION" data["tipo_documento"] = "GUIA DE REMISION"
serie_numero_match = re.search(r"(?:N°\s*)?([A-Z0-9]{4})\s*-\s*(\d+)", text) serie_numero_match = re.search(r"(?:N°\s*)?([A-Z0-9]{4})\s*-\s*(\d+)", text)
+128 -11
View File
@@ -12,6 +12,8 @@ import os
import re import re
import json import json
import math import math
import shutil
import ntpath
from datetime import datetime, timedelta from datetime import datetime, timedelta
import email_utilities import email_utilities
@@ -22,6 +24,9 @@ import sapb1_manager
import pdf_utilities import pdf_utilities
import hana_manager import hana_manager
RUTA_RED_FACTURACION = os.getenv("RUTA_RED_FACTURACION", "")
RUC_EMPRESA = os.getenv("RUC_EMPRESA", "")
# ============================================================================ # ============================================================================
# HELPERS # HELPERS
@@ -30,6 +35,75 @@ def _ruta_carpeta(subcarpeta: str) -> str:
return os.path.join(os.path.dirname(__file__), subcarpeta) return os.path.join(os.path.dirname(__file__), subcarpeta)
def _copiar_a_red(data: dict, _log) -> None:
"""
Copia el PDF y el XML de un comprobante ya procesado a la ruta de red
de Facturación Electrónica, organizada como::
{RUTA_RED_FACTURACION}\\{año}\\{mes}\\{día}\\{tipo}\\{RUC_EMPRESA}\\{ruc_emisor}\\
{RUC_EMPRESA}-{tipo}-{serie}-{numero}_FormatoImpreso.pdf
{RUC_EMPRESA}-{tipo}-{serie}-{numero}.xml
``RUC_EMPRESA`` es el RUC de Aberio (fijo, por ahora); ``ruc_emisor``
es el RUC del proveedor que emitió la factura (varía por comprobante).
Año/mes/día se toman de ``fecha_emision`` (mes y día sin ceros a la
izquierda). No falla el pipeline si la ruta de red no está configurada
o no está disponible: solo registra una advertencia.
Guarda las rutas resultantes en ``data["ruta_red_pdf"]`` y
``data["ruta_red_xml"]`` para que ``_build_sap_draft`` las incluya en
el draft (``U_VS_ANEXO_PDF`` / ``U_VS_ANEXO_XML``).
"""
if not RUTA_RED_FACTURACION:
return
ruc_emisor = data.get("ruc_emisor", "")
tipo = data.get("tipo", "")
serie = data.get("serie", "")
numero = data.get("numero", "")
xml_path = data.get("ruta_xml")
pdf_path = data.get("ruta_pdf")
try:
fecha = datetime.strptime(data.get("fecha_emision", ""), "%Y-%m-%d")
except (ValueError, TypeError):
_log(f"⚠️ No se pudo copiar a red: fecha_emision inválida ({data.get('fecha_emision')})", 3)
return
carpeta_destino = os.path.join(
RUTA_RED_FACTURACION,
str(fecha.year), str(fecha.month), str(fecha.day),
tipo, RUC_EMPRESA, ruc_emisor,
)
# Ruta guardada en el draft SAP (U_VS_ANEXO_PDF/XML): siempre estilo
# Windows/UNC con backslash, sin importar el separador del SO donde
# corre el script (evita mezclar "\\" y "/" al usar os.path.join en
# un host no-Windows).
carpeta_destino_unc = ntpath.join(
RUTA_RED_FACTURACION,
str(fecha.year), str(fecha.month), str(fecha.day),
tipo, RUC_EMPRESA, ruc_emisor,
)
nombre_base = f"{RUC_EMPRESA}-{tipo}-{serie}-{numero}"
try:
os.makedirs(carpeta_destino, exist_ok=True)
if pdf_path and os.path.exists(pdf_path):
ruta_red_pdf = os.path.join(carpeta_destino, f"{nombre_base}_FormatoImpreso.pdf")
shutil.copy2(pdf_path, ruta_red_pdf)
data["ruta_red_pdf"] = ntpath.join(carpeta_destino_unc, f"{nombre_base}_FormatoImpreso.pdf")
if xml_path and os.path.exists(xml_path):
ruta_red_xml = os.path.join(carpeta_destino, f"{nombre_base}.xml")
shutil.copy2(xml_path, ruta_red_xml)
data["ruta_red_xml"] = ntpath.join(carpeta_destino_unc, f"{nombre_base}.xml")
_log(f"📁 Copiado a red: {carpeta_destino}", 3)
except OSError as e:
_log(f"⚠️ Error copiando a ruta de red: {e}", 3)
# ============================================================================ # ============================================================================
# PASO 1: Autenticación Microsoft Graph # PASO 1: Autenticación Microsoft Graph
# ============================================================================ # ============================================================================
@@ -327,6 +401,8 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
pdf_path = pdf_path if os.path.exists(pdf_path) else None pdf_path = pdf_path if os.path.exists(pdf_path) else None
data["ruta_pdf"] = pdf_path data["ruta_pdf"] = pdf_path
_copiar_a_red(data, _log)
# Cruzar documentos_referencia desde el PDF renombrado (pdf_cache por nombre canónico) # Cruzar documentos_referencia desde el PDF renombrado (pdf_cache por nombre canónico)
if not data.get("documentos_referencia"): if not data.get("documentos_referencia"):
pdf_data = pdf_cache.get(pdf_canonical) pdf_data = pdf_cache.get(pdf_canonical)
@@ -520,7 +596,7 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
continue continue
doc = { doc = {
"ruc_emisor": raw.get("ruc_emisor"), "ruc_emisor": raw.get("ruc_emisor"),
"razon_social_emisor": raw.get("nombre_receptor"), "razon_social_emisor": None, # el PDF no extrae la razón social del emisor
"fecha_emision": raw.get("fecha_emision"), "fecha_emision": raw.get("fecha_emision"),
"tipo": tipo, "tipo": tipo,
"serie": serie_p, "serie": serie_p,
@@ -586,6 +662,35 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
return saved return saved
def _calcular_fecha_vencimiento(fecha_base: str, condicion_pago: dict | None) -> str:
"""
Calcula la fecha de vencimiento sumando a ``fecha_base`` los días de
la condición de pago (PaymentTermsTypes) del proveedor.
Usa ``NumberOfAdditionalDays`` como días a sumar; si ese valor es 0,
usa ``NumberOfAdditionalMonths * 30`` en su lugar.
Args:
fecha_base: Fecha de contabilización, formato "YYYY-MM-DD".
condicion_pago: Resultado de ``sapb1_manager.obtener_condicion_pago``
(campos ``NumberOfAdditionalDays``, ``NumberOfAdditionalMonths``),
o None si el proveedor no tiene condición de pago configurada.
Returns:
str — Fecha de vencimiento, formato "YYYY-MM-DD". Si
``condicion_pago`` es None, retorna ``fecha_base`` sin cambios.
"""
fecha = datetime.strptime(fecha_base, "%Y-%m-%d")
if not condicion_pago:
return fecha.strftime("%Y-%m-%d")
dias = int(condicion_pago.get("NumberOfAdditionalDays") or 0)
if dias == 0:
dias = int(condicion_pago.get("NumberOfAdditionalMonths") or 0) * 30
fecha += timedelta(days=dias)
return fecha.strftime("%Y-%m-%d")
def _build_sap_draft(factura: dict, resultados_val: list[dict]) -> dict: def _build_sap_draft(factura: dict, resultados_val: list[dict]) -> dict:
""" """
Construye el payload JSON para crear un Draft en SAP B1 Service Layer Construye el payload JSON para crear un Draft en SAP B1 Service Layer
@@ -654,10 +759,15 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
ruc_emisor = factura.get("ruc_emisor", "") ruc_emisor = factura.get("ruc_emisor", "")
razon_social_emisor = factura.get("razon_social_emisor", "") razon_social_emisor = factura.get("razon_social_emisor", "")
card_code = f"PL{ruc_emisor}"
fecha_contabilizacion = datetime.now().strftime("%Y-%m-%d") fecha_contabilizacion = datetime.now().strftime("%Y-%m-%d")
emision = datetime.strptime(fecha_emision, "%Y-%m-%d") emision = datetime.strptime(fecha_emision, "%Y-%m-%d")
item_code = "C103002-A" if (emision.year, emision.month) < (datetime.now().year, datetime.now().month) else "C103002" item_code = "C103002-A" if (emision.year, emision.month) < (datetime.now().year, datetime.now().month) else "C103002"
condicion_pago = sapb1_manager.obtener_condicion_pago(card_code)
fecha_vencimiento = _calcular_fecha_vencimiento(fecha_contabilizacion, condicion_pago)
if tiene_detraccion: if tiene_detraccion:
# neto = round(total - monto_detraccion, 2) # neto = round(total - monto_detraccion, 2)
@@ -713,9 +823,9 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
return { return {
"DocType": "dDocument_Items", "DocType": "dDocument_Items",
"DocDate": fecha_contabilizacion, "DocDate": fecha_contabilizacion,
"DocDueDate": fecha_emision, "DocDueDate": fecha_vencimiento,
"TaxDate": fecha_emision, "TaxDate": fecha_emision,
"CardCode": f"PL{ruc_emisor}", "CardCode": card_code,
"NumAtCard": f"{tipo}{serie}-{numero}", "NumAtCard": f"{tipo}{serie}-{numero}",
"U_IDC_NUMGR": "" if not guia_referencia else guia_referencia, "U_IDC_NUMGR": "" if not guia_referencia else guia_referencia,
"DocCurrency": "SOL", "DocCurrency": "SOL",
@@ -737,6 +847,8 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
"U_IDC_FLETE": "02", "U_IDC_FLETE": "02",
"U_IDC_LINEANE": "01", "U_IDC_LINEANE": "01",
"U_IDC_VALREF": valor_referencial, "U_IDC_VALREF": valor_referencial,
"U_VS_ANEXO_PDF": factura.get("ruta_red_pdf", ""),
"U_VS_ANEXO_XML": factura.get("ruta_red_xml", ""),
"DocumentLines": doc_lines, "DocumentLines": doc_lines,
"DocumentInstallments": installments, "DocumentInstallments": installments,
} }
@@ -830,7 +942,7 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
codigo_guia = f"{guia['tipo']}{guia['serie']}-{guia['numero']}" codigo_guia = f"{guia['tipo']}{guia['serie']}-{guia['numero']}"
try: try:
delivery_notes = sapb1_manager.get_delivery_notes( delivery_notes = sapb1_manager.get_delivery_notes(
tipo=guia["serie"], serie=guia["tipo"], numero=guia["numero"] tipo=guia["tipo"], serie=guia["serie"], numero=guia["numero"]
) )
wh_set = set() wh_set = set()
@@ -1175,14 +1287,19 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
_log(f"⏭️ Draft NO creado: {serie}-{numero} — validación falló") _log(f"⏭️ Draft NO creado: {serie}-{numero} — validación falló")
html_body = _build_notification_body("skipped", factura, validation_table, valor_referencial_table) html_body = _build_notification_body("skipped", factura, validation_table, valor_referencial_table)
# 16. Enviar notificación # 16. Enviar notificación al remitente original, con copia al equipo
if token: if token:
outlook_utilities.send_email( destinatario = email.get("sender")
token, email_addr, if destinatario and destinatario != "Desconocido":
["jlopez@aberio.com.pe", "gcalle@pucp.pe"], outlook_utilities.send_email(
f"Draft SAP B1 - {serie}-{numero}", token, email_addr,
html_body, adjuntos_email, [destinatario],
) f"Draft SAP B1 - {serie}-{numero}",
html_body, adjuntos_email,
cc_recipients=["jlopez@aberio.com.pe", "gcalle@pucp.pe"],
)
else:
_log("⚠️ No se pudo determinar el remitente, notificación no enviada")
# ============================================================================ # ============================================================================
+6 -16
View File
@@ -1,16 +1,6 @@
certifi==2026.6.17 hdbcli
cffi==2.1.0 msal
charset-normalizer==3.4.9 pdfplumber
cryptography==49.0.0 python-dotenv
dotenv==0.9.9 requests
idna==3.18 urllib3
msal==1.37.0
pdfminer.six==20260107
pdfplumber==0.11.10
pillow==12.3.0
pycparser==3.0
PyJWT==2.13.0
pypdfium2==5.11.0
python-dotenv==1.2.2
requests==2.34.2
urllib3==2.7.0
+96 -19
View File
@@ -14,7 +14,8 @@ import hana_manager
urllib3.disable_warnings() urllib3.disable_warnings()
load_dotenv(dotenv_path=".env") # Ruta absoluta: no depende del directorio de trabajo desde el que se lance el proceso
load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), ".env"))
SAPB1_URL = os.getenv("SAP_B1_URL", "") SAPB1_URL = os.getenv("SAP_B1_URL", "")
SAPB1_USER = os.getenv("SAP_B1_USER", "") SAPB1_USER = os.getenv("SAP_B1_USER", "")
@@ -101,7 +102,7 @@ def _log_response(method: str, endpoint: str, response: requests.Response, paylo
f" ({len(response.content)} bytes)" f" ({len(response.content)} bytes)"
) )
if response.status_code >= 400: if response.status_code >= 400:
print("⚠️ %s - %s", log_line, response.text[:300]) print(f"⚠️ {log_line} - {response.text[:300]}")
else: else:
print(log_line) print(log_line)
@@ -204,24 +205,45 @@ def get_purchase_invoice(doc_entry: int) -> dict:
return result return result
# ============================================================================ # ============================================================================
# OBTENER GUIA (GET /DeliveryNotes) # Tabla HANA de origen → entidad de Service Layer que hay que consultar.
# ODLN (Entregas) se expone en SL como DeliveryNotes; OWTR (Traslados de
# Inventario) se expone como StockTransfers.
# ============================================================================
_TABLA_A_ENTIDAD_SL = {
"ODLN": "DeliveryNotes",
"OWTR": "StockTransfers",
}
# ============================================================================
# OBTENER GUIA (GET /DeliveryNotes o /StockTransfers)
# ============================================================================ # ============================================================================
def get_delivery_notes(tipo: str, serie: str, numero: str) -> list: def get_delivery_notes(tipo: str, serie: str, numero: str) -> list:
""" """
Obtiene DeliveryNotes de SAP B1. Obtiene el documento completo de SAP B1 a partir del cual se validan los
precios de flete (líneas ``FL*`` en ``DocumentLines``).
Fase 1 — Busca DocEntry/DocNum/CardCode/CardName: Fase 1 — Busca DocEntry/DocNum/CardCode/CardName/Entidad:
- Primero intenta Service Layer con $select. - Primero intenta Service Layer con $select (entidad DeliveryNotes).
- Si no hay resultados, fallback a HANA (consulta ODLN con LIKE). - Si no hay resultados, fallback a HANA (consulta ODLN y, si no
encuentra nada, OWTR).
Fase 2 — Por cada DocEntry obtenido, hace GET /DeliveryNotes({DocEntry}) Fase 2 — Por cada DocEntry obtenido, hace GET a la entidad indicada en
para recuperar el documento completo. "Entidad" (DeliveryNotes o StockTransfers).
- Si es DeliveryNotes, ese documento ya trae ``DocumentLines`` con
las líneas FL* y se retorna tal cual.
- Si es StockTransfers, ese documento es un traslado de inventario
y NO tiene líneas FL* ni precios. En ese caso se lee el campo
``U_IDC_NUMOV`` (DocEntry de la Orden de Venta asociada) y se
hace GET a ``Orders(U_IDC_NUMOV)``, devolviendo ese documento en
su lugar para que la validación de precios funcione igual que
con DeliveryNotes.
Returns: Returns:
list[dict] — Documentos completos de DeliveryNotes, o [] si no se list[dict] — Documentos completos, o [] si no se encontró nada en
encontró nada en ninguna fuente. ninguna fuente.
""" """
codigo = f"{serie}{tipo}-{numero}" codigo = f"{tipo}{serie}-{numero}"
# ── Fase 1: Obtener DocEntries ────────────────────────────────────── # ── Fase 1: Obtener DocEntries ──────────────────────────────────────
entries = _get_delivery_entries(tipo, serie, numero) entries = _get_delivery_entries(tipo, serie, numero)
@@ -234,27 +256,38 @@ def get_delivery_notes(tipo: str, serie: str, numero: str) -> list:
docs = [] docs = []
for entry in entries: for entry in entries:
doc_entry = entry["DocEntry"] doc_entry = entry["DocEntry"]
entidad = entry["Entidad"]
try: try:
resp = forward_to_sapb1("GET", f"DeliveryNotes({doc_entry})") resp = forward_to_sapb1("GET", f"{entidad}({doc_entry})")
doc = resp.json() doc = resp.json()
print(f" │ └─ {entidad}({doc_entry}) obtenido")
if entidad == "StockTransfers":
num_ov = doc.get("U_IDC_NUMOV")
if not num_ov:
print(f" │ ⚠️ StockTransfers({doc_entry}) sin U_IDC_NUMOV: no se puede validar precios")
continue
resp_ov = forward_to_sapb1("GET", f"Orders({num_ov})")
doc = resp_ov.json()
print(f" │ └─ Orders({num_ov}) obtenido (Orden de Venta de StockTransfers({doc_entry}))")
docs.append(doc) docs.append(doc)
print(f" │ └─ DeliveryNote({doc_entry}) obtenido")
except Exception as e: except Exception as e:
print(f" │ ⚠️ Error obteniendo DeliveryNote({doc_entry}): {e}") print(f" │ ⚠️ Error obteniendo {entidad}({doc_entry}): {e}")
return docs return docs
def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list: def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list:
"""Fase 1: intenta SL, fallback a HANA. Retorna [{DocEntry, DocNum, CardCode, CardName}, ...].""" """Fase 1: intenta SL, fallback a HANA. Retorna [{DocEntry, DocNum, CardCode, CardName, Entidad}, ...]."""
codigo = f"{serie}{tipo}-{numero}" codigo = f"{tipo}{serie}-{numero}"
# ── Intentar Service Layer ─────────────────────────────────────────── # ── Intentar Service Layer ───────────────────────────────────────────
try: try:
filter_str = ( filter_str = (
f"Cancelled eq 'tNO'" f"Cancelled eq 'tNO'"
f" and U_BPP_MDSD eq '{tipo}'" f" and U_BPP_MDTD eq '{tipo}'"
f" and U_BPP_MDTD eq '{serie}'" f" and U_BPP_MDSD eq '{serie}'"
f" and contains(U_BPP_MDCD,'{numero}')" f" and contains(U_BPP_MDCD,'{numero}')"
) )
resp = forward_to_sapb1( resp = forward_to_sapb1(
@@ -267,6 +300,8 @@ def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list:
) )
sl_entries = resp.json().get("value", []) sl_entries = resp.json().get("value", [])
if sl_entries: if sl_entries:
for sl_entry in sl_entries:
sl_entry["Entidad"] = "DeliveryNotes"
print(f" │ 🔍 Guía {codigo}: SL → {len(sl_entries)} DocEntry encontrados") print(f" │ 🔍 Guía {codigo}: SL → {len(sl_entries)} DocEntry encontrados")
return sl_entries return sl_entries
@@ -279,6 +314,10 @@ def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list:
try: try:
hana_entries = hana_manager.get_delivery(tipo, serie, numero) hana_entries = hana_manager.get_delivery(tipo, serie, numero)
if hana_entries: if hana_entries:
for hana_entry in hana_entries:
hana_entry["Entidad"] = _TABLA_A_ENTIDAD_SL.get(
hana_entry.get("Tabla"), "DeliveryNotes"
)
print(f" │ 🔍 Guía {codigo}: HANA → {len(hana_entries)} DocEntry encontrados") print(f" │ 🔍 Guía {codigo}: HANA → {len(hana_entries)} DocEntry encontrados")
return hana_entries return hana_entries
print(f" │ 🔍 Guía {codigo}: HANA → 0 registros") print(f" │ 🔍 Guía {codigo}: HANA → 0 registros")
@@ -287,6 +326,44 @@ def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list:
return [] return []
# ============================================================================
# OBTENER CONDICIÓN DE PAGO (GET /BusinessPartners + /PaymentTermsTypes)
# ============================================================================
def obtener_condicion_pago(card_code: str) -> dict | None:
"""
Obtiene la condición de pago (PaymentTermsTypes) de un Business Partner,
para calcular la fecha de vencimiento de un documento.
Args:
card_code: Código del Business Partner (ej. "PL20555929006").
Returns:
dict | None — {"GroupNumber", "PaymentTermsGroupName",
"NumberOfAdditionalMonths", "NumberOfAdditionalDays"}, o None si el
CardCode no existe, no tiene condición de pago asociada, o falló la
consulta a Service Layer.
"""
try:
resp_bp = forward_to_sapb1(
"GET", f"BusinessPartners('{card_code}')",
params={"$select": "CardCode,PayTermsGrpCode"},
)
group_num = resp_bp.json().get("PayTermsGrpCode")
if group_num is None:
return None
resp_terms = forward_to_sapb1("GET", f"PaymentTermsTypes({group_num})")
terms = resp_terms.json()
return {
"GroupNumber": terms.get("GroupNumber"),
"PaymentTermsGroupName": terms.get("PaymentTermsGroupName"),
"NumberOfAdditionalMonths": terms.get("NumberOfAdditionalMonths") or 0,
"NumberOfAdditionalDays": terms.get("NumberOfAdditionalDays") or 0,
}
except Exception as e:
print(f" │ ⚠️ Error obteniendo condición de pago de {card_code}: {e}")
return None
# ============================================================================ # ============================================================================
# OBTENER ZONAS (GET /U_IDC_ZONAS) # OBTENER ZONAS (GET /U_IDC_ZONAS)
# ============================================================================ # ============================================================================
+3 -2
View File
@@ -32,6 +32,7 @@ GUIAS_NOTES_PATTERNS = [
# Agregar aquí nuevas variantes a medida que aparezcan en facturas de otros clientes. # Agregar aquí nuevas variantes a medida que aparezcan en facturas de otros clientes.
VALOR_REFERENCIAL_PATTERNS = [ VALOR_REFERENCIAL_PATTERNS = [
r"VALOR\s+REFERENCIAL\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "VALOR REFERENCIAL: S/ 2,345.00" / "VALOR REFERENCIAL: 468.86" r"VALOR\s+REFERENCIAL\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "VALOR REFERENCIAL: S/ 2,345.00" / "VALOR REFERENCIAL: 468.86"
r"VALOR\s+REFER\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "VALOR REFER\t:S/ 1431.16"
r"VALOR\s+REF\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "VALOR REF:S/ 1,139.75" r"VALOR\s+REF\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "VALOR REF:S/ 1,139.75"
r"VAL\.?\s*REF\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "VAL.REF.:S/700.25" r"VAL\.?\s*REF\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "VAL.REF.:S/700.25"
r"V\.?\s*REF\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "V.REF: S/ 2940.80 TN: 36.85" r"V\.?\s*REF\.?\s*:?\s*(?:S/\.?\s*)?([\d,]+\.\d+)", # "V.REF: S/ 2940.80 TN: 36.85"
@@ -128,7 +129,7 @@ class DatosComprobante:
refs_str = "" refs_str = ""
if self.documentos_referencia: if self.documentos_referencia:
refs_str = "\n Documentos Ref: " + ", ".join( refs_str = "\n Documentos Ref: " + ", ".join(
f"{ref.id} (Tipo {ref.tipo})" for ref in self.documentos_referencia f"{ref.serie}-{ref.numero} (Tipo {ref.tipo})" for ref in self.documentos_referencia
) )
detraccion_str = "" detraccion_str = ""
if self.tiene_detraccion: if self.tiene_detraccion:
@@ -686,7 +687,7 @@ def extraer_datos_xml(ruta_xml: str) -> Optional[dict]:
return datos.to_dict() return datos.to_dict()
if "DespatchAdvice" in tag: if "DespatchAdvice" in tag:
tipo = _find_text(root, "desp:DespatchAdviceTypeCode", NAMESPACES) or _find_text(root, "cbc:DespatchAdviceTypeCode", NAMESPACES) or "" tipo = _find_text(root, "desp:DespatchAdviceTypeCode", NAMESPACES) or _find_text(root, "cbc:DespatchAdviceTypeCode", NAMESPACES) or ""
if tipo in ["31"]: if tipo in ("09", "31"):
datos = _parse_despatch_advice(root) datos = _parse_despatch_advice(root)
return datos.to_dict() return datos.to_dict()
return None return None
+76
View File
@@ -0,0 +1,76 @@
import json
import os
from glob import glob
CARPETA_BASE = os.path.join(os.path.dirname(__file__), "correos_prueba")
def _doc_key(d):
return (d.get("tipo"), d.get("serie"), d.get("numero"))
def completar_guias_desde_pdf(xml_path: str, pdf_path: str) -> int:
with open(xml_path, encoding="utf-8") as f:
xml_data = json.load(f)
try:
with open(pdf_path, encoding="utf-8") as f:
pdf_data = json.load(f)
except FileNotFoundError:
return 0
pdf_by_key = {_doc_key(d): d for d in pdf_data}
total_copiadas = 0
for xd in xml_data:
k = _doc_key(xd)
has_all_guias = all(
len(linea.get("guias_remision") or []) > 0
for linea in xd.get("lineas", [])
)
if has_all_guias:
continue
pd = pdf_by_key.get(k)
if not pd:
continue
for li, xl in enumerate(xd.get("lineas", [])):
if len(xl.get("guias_remision") or []) > 0:
continue
pl = pd["lineas"][li] if li < len(pd.get("lineas", [])) else {}
p_gr = pl.get("guias_remision") or []
if p_gr:
xl["guias_remision"] = list(p_gr)
total_copiadas += len(p_gr)
# También copiar guia_transportista si XML no tiene
if not xl.get("guia_transportista") and pl.get("guia_transportista"):
xl["guia_transportista"] = dict(pl["guia_transportista"])
if total_copiadas > 0:
with open(xml_path, "w", encoding="utf-8") as f:
json.dump(xml_data, f, ensure_ascii=False, indent=2)
return total_copiadas
def main():
carpetas = sorted(glob(os.path.join(CARPETA_BASE, "[0-9][0-9][0-9]_correo")))
total_global = 0
for fp in carpetas:
folder = os.path.basename(fp)
idx = folder[:3]
xml_path = os.path.join(fp, f"xml_resultado_{idx}.json")
pdf_path = os.path.join(fp, f"pdf_resultado_{idx}.json")
if not os.path.exists(xml_path):
continue
n = completar_guias_desde_pdf(xml_path, pdf_path)
if n > 0:
print(f" {folder}: {n} guías copiadas")
total_global += n
print(f"\nTotal guías copiadas: {total_global}")
if __name__ == "__main__":
main()
@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:biz="urn:bizlinks:names:specification:ubl:peru:schema:xsd:BizlinksAggregateComponents-1" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1"><ext:UBLExtensions><ext:UBLExtension><cbc:ID>EBIZ</cbc:ID><ext:ExtensionContent><biz:AdditionalInformation><biz:AdditionalProperty><cbc:ID>8025</cbc:ID><cbc:Value><![CDATA[473-4883 473-2554 323-3702]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>8024</cbc:ID><cbc:Value><![CDATA[ventas@dansa.com.pe]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>8023</cbc:ID><cbc:Value><![CDATA[www.grupodansa.com.pe]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9670</cbc:ID><cbc:Value><![CDATA[MATERIALES DE CONSTRUCCION]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9673</cbc:ID><cbc:Value><![CDATA[Nro.Cuota = 1 Fecha de Vencimiento = 2026-06-15 Tipo de Moneda = PEN Monto de Cuota = 707.31]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>8185</cbc:ID><cbc:Value><![CDATA[CREDITO A 20 DIAS]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9043</cbc:ID><cbc:Value><![CDATA[---]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9049</cbc:ID><cbc:Value><![CDATA[---]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9218</cbc:ID><cbc:Value><![CDATA[CABELLO HUARCAYA CRISTY JOICE]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9130</cbc:ID><cbc:Value><![CDATA[---]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9099</cbc:ID><cbc:Value><![CDATA[26/05/2026]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9925</cbc:ID><cbc:Value><![CDATA[20100029741]]></cbc:Value></biz:AdditionalProperty></biz:AdditionalInformation></ext:ExtensionContent></ext:UBLExtension><ext:UBLExtension><ext:ExtensionContent><ds:Signature Id="signatureKG"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>bCmAYPIFk/DmyDKNUBWpbxlZbWw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>g8i0bVVbwVuKrs56/vuS4paPFSKrp5jAq3mTf6kF31LDU48wOWVOIpn2/B2Y06Tvze3DFqowxlhod76lGXWd4mEQ1HiFZoITESGbh7ddNlUh/VAIgBxtZdvxUolFanuZzOYqqVGXCnAtd+ADTU/6UVz/bsJ0ONdsbOzqu4xtDU8HJm3fd7KpVabELgOQHKTNP690vGAP/+Jm9/eFMZURHPeoPO/9wYQyy+YFgTSnX5+kSKVFwicnP00hBPE08/E/WbJ6BAKB9eO/LzY+sjG8HQODp9zdAfuY3TjM/6Yy5tz+04fBE/E+mDsimHZ4FKd0/K84X1zE79Rmep6eUL0HvQ==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIGJTCCBQ2gAwIBAgITMwAAab3LtCvmGjz0EQAAAABpvTANBgkqhkiG9w0BAQsFADCBkjELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxJjAkBgNVBAsTHUNvcHlyaWdodCAoYykgMjAxNiBXSVNlS2V5IFNBMRYwFAYDVQQLEw1JbnRlcm5hdGlvbmFsMTEwLwYDVQQDEyhXSVNlS2V5IENlcnRpZnlJRCBBZHZhbmNlZCBTZXJ2aWNlcyBDQSA0MB4XDTIzMDQyNDE2MTEzNFoXDTI2MDQyMzE2MTEzNFowgesxCzAJBgNVBAYTAlBFMQ0wCwYDVQQHEwRMSU1BMRgwFgYDVQQKEw9CSVpMSU5LUyBTLkEuQy4xLzAtBgNVBAsMJlZhbGlkYXRlZCBieSBaeVRydXN0IFNvY2llZGFkIEFuw7NuaW1hMRQwEgYDVQQLEwsyMDQ3ODAwNTAxNzEVMBMGA1UECxMMRE5JIDA3ODYxNDU2MSwwKgYDVQQDEyNKQVZJRVIgRkVSTkFORE8gRFJBWEwgR0FSQ0lBIFJPU0VMTDEnMCUGCSqGSIb3DQEJARYYamF2aWVyLmRyYXhsQGJpemxpbmtzLmxhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv4O4GDlvAP4xTbCAjfQAFKjqPJX6wrJ439SvsYbEDHE1QBw191JJiUCA8diVqyJC3f9q5zPMR84+Gpscf1njSPOpxqBK+hU28mR/0lbV31fVKTOeZ0OWVepKTlbmdxf3c4GFVWQownyrD6rzdWC1fpFi3+g3ibkDLXbTVzMACwp5SG8AEmalY/aDEEReDhJjK9ljl3s/v2YnF2Rdv03A9zdRmQ3UT/xYfAAnWp7G7b0G2Fa5QirH7WVxcV0UKuef8ajl7hqdHJy7CBBIAX0OllbqET8rwnu19MzjN7hu1mwqEk6sQeRb3EJIs0GH1fLVS7s0O162s/fSAgwfJwyNVQIDAQABo4ICFzCCAhMwHQYDVR0OBBYEFJnLNJRPWOgtMEdxj/pfn/8eJ+6TMA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBT05JtX0q7CnohNALorr2XJY6mHmzA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vcHVibGljLndpc2VrZXkuY29tL2NybC93Y2lkYXNjYTQuY3JsMG0GCCsGAQUFBwEBBGEwXzA3BggrBgEFBQcwAoYraHR0cDovL3B1YmxpYy53aXNla2V5LmNvbS9jcnQvd2NpZGFzY2E0LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Aud2lzZWtleS5jb20vMCkGA1UdJQQiMCAGCCsGAQUFBwMCBgorBgEEAYI3CgMMBggrBgEFBQcDBDA1BgkrBgEEAYI3FQoEKDAmMAoGCCsGAQUFBwMCMAwGCisGAQQBgjcKAwwwCgYIKwYBBQUHAwQwIwYDVR0RBBwwGoEYamF2aWVyLmRyYXhsQGJpemxpbmtzLmxhMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzBHBLine truncated
@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<DespatchAdvice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent><ds:Signature Id="signatureFACTURALOPERU">
<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>jh2FnXCc6mcZFOLNh4yidKCBNOE=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>QkBKgCtC1pMy8xW4kF227KpiRiTSqwS9rmx4Ja1NHcnyh+2CYOLoeWRX1CsfGZe2Twayxe79XojFYvFiDsl7uM6PUySq7BB1OdBj6ZAR4TJYLUQXuBBXRFL2DI4j6Btuu/q8AIPHmrJepk/2tWJqb/oiBo2FhoGdEXCmkyZgHNAIIiRYQD7l00GhDVolirDrkii6zo/grWNFUGZC95SRFxgeQF23gED2PwakIzzMOqQrb/7IWh0er+ZF+Vk8QB8Y1CGHtRVytKMX+sT4K+G4O/tTT5GCQizs9HZjN5kxB1VMtM4GlUy4dpWuVblZKLREpZ9RFP2glThrohebgTGq1g==</ds:SignatureValue>
<ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIFbDCCBFSgAwIBAgIIFUldkkH9yjEwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMjAyMTM1OTU0WhcNMjcwMjAyMTM1OTAwWjCCARMxMTAvBgNVBAkMKExULiAyMCBNWi4gQiBVUkIuIFJFU0lELiBIT05PUiBZIExFQUxUQUQxITAfBgkqhkiG9w0BCQEWEm1hbGlhZ2FAbWlnYWZpLmNvbTEsMCoGA1UEAwwjU09GVFdBUkUgREUgRkFDVFVSQUNJT04gRUxFQ1RST05JQ0ExLDAqBgNVBAsMI0ZBQ1RVUkEgRUxFQ1RST05JQ0EgUlVDIDIwNTA2Njg5MzI2MSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxIDAeBgNVBAoMF01BVEVSSUFMRVMgRC9DQVNBIFMuQS5DMQ0wCwYDVQQHDARMSU1BMQswCQYDVQQGEwJQRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOej26BfjO7htv3e1lPaj6I4rzJanTTGMUkD2fkEt4PLMnb7AWrht9cDj0SvqofT8w56jrlqLjV2GpsVgxMTUe+c5Eir2IO+IL8pQva1TFRwpzWCseyb5by1igpCdNKTeJH34DkoRLogc4c2pqIKtWYsPX3QsjEy0rjW6+7sX/JNAQcgrzgJWw4WZwIIjK3PkF7s1O0VqLjTaZhHhbP9bPkMO8u+0RogjKZvBGfKY6ftEMjaPqTtB6k6zbZx7pPk+bRNMjSOncIFBehbaHYt63CeDlJHDNf5u+4jSWgp5I4nxHggfMYmeHOZGiOGYh6hClITOq+/Mg67g5FUl9416/UCAwEAAaOCAY0wggGJMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUXYhbretl+/5oouTZbz1XcqLvK5kwZwYIKwYBBQUHAQEEWzBZMDUGCCsGAQUFBzAChilodHRwOi8vY3J0LmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNlcjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3AubGxhbWEucGUwHQYDVR0RBBYwFIESbWFsaWFnYUBtaWdhZmkuY29tMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUTtWOjRJrY+hai0Np8dEDrqh3tIcwDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQCIe0oUU2YJTZY0jULGUgE09eyyE+qh+V6MZLGPyeieuM+sS7U2uqoctQLS2VVIbx+pPoJ/ubmDS4zxMgxejcyJwiW0u9cn1bUS7XxQ4W5lSdRY5vi1MOTB2PXE3h1ESB6T6EJcY4P+azSNXgxOtnUzeXRxGSOR2RcoSiBocfJWKWjcOrVyJ4hksLKhjjm7hwi4zWD4chiJfaaHx2an9vpx8/gZKy4zz4+q1kDSoXL4FqY7DWGtyxWJVW/J2nbTj8PdV6YDwkboLPPwFhDtN0OE7VBqpXIItxqXLGPWupL7PSnhYDAB1uDxWbfkBx7WtIpKMxT7zvmwzaTTlvEOgqnH</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>V002-11</cbc:ID>
<cbc:IssueDate>2026-05-11</cbc:IssueDate>
<cbc:IssueTime>13:05:50</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" listName="Tipo de Documento" listAgencyName="PE:SUNAT">31</cbc:DespatchAdviceTypeCode>
<!-- DOCUMENTOS ADICIONALES (Catalogo D41) -->
<cac:AdditionalDocumentReference>
<cbc:ID>T001-128662</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">09</cbc:DocumentTypeCode>
<cbc:DocumentType>Guía de remisión remitente</cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>T001-128661</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">09</cbc:DocumentTypeCode>
<cbc:DocumentType>Guía de remisión remitente</cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID>signatureFACTURALOPERU</cbc:ID>
<cbc:Note>FACTURALO</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#signatureFACTURALOPERU</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<!-- DATOS DEL EMISOR (TRANSPORTISTA) -->
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="6">20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- DATOS DEL RECEPTOR (DESTINATARIO) -->
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="6">20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- DATOS DE QUIEN PAGA EL SERVICIO -->
<!-- DATOS DEL TRASLADO -->
<cac:Shipment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID>SUNAT_Envio</cbc:ID>
<!-- PESO BRUTO TOTAL DE LA CARGA-->
<cbc:GrossWeightMeasure unitCode="KGM">31875.00</cbc:GrossWeightMeasure>
<!-- INDICADORES -->
<cac:ShipmentStage>
<!-- FECHA DE INICIO DEL TRASLADO -->
<cac:TransitPeriod>
<cbc:StartDate>2026-05-11</cbc:StartDate>
</cac:TransitPeriod>
<!-- CONDUCTOR PRINCIPAL -->
<cac:DriverPerson>
<!-- TIPO Y NUMERO DE DOCUMENTO DE IDENTIDAD -->
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="1">09715404</cbc:ID>
<!-- NOMBRES -->
<cbc:FirstName>HUAMAN ÑAHUE, JUAN</cbc:FirstName>
<!-- APELLIDOS -->
<cbc:FamilyName>DE DIOS</cbc:FamilyName>
<!-- TIPO DE CONDUCTOR: PRINCIPAL -->
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<!-- LICENCIA DE CONDUCIR -->
<cbc:ID>Q09715404</cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
<!-- CONDUCTOR SECUNDARIO -->
</cac:ShipmentStage>
<cac:Delivery>
<!-- DIRECCION DEL PUNTO DE LLEGADA -->
<cac:DeliveryAddress>
<!-- UBIGEO DE LLEGADA -->
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150502</cbc:ID>
<cac:AddressLine>
<cbc:Line><![CDATA[CA. PANAMERICANA SUR KM 98 SANTA CRUZ]]></cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<!-- DIRECCION DEL PUNTO DE PARTIDA -->
<cac:DespatchAddress>
<!-- UBIGEO DE PARTIDA -->
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150143</cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE PARTIDA -->
<cac:AddressLine>
<cbc:Line><![CDATA[AV. ATOCONGO 1860]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<!-- DATOS DEL REMITENTE -->
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="6">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<!-- NUMERO DE CONTENEDOR -->
<cbc:ID>-</cbc:ID>
<cac:TransportEquipment>
<!-- VEHICULO PRINCIPAL -->
<!-- PLACA - VEHICULO PRINCIPAL -->
<cbc:ID>F6P722</cbc:ID>
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>15M24026972E</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- VEHICULOS SECUNDARIOS -->
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- DETALLES DE BIENES A TRASLADAR -->
<cac:DespatchLine>
<!-- NUMERO DE ORDEN DEL ITEM -->
<cbc:ID>1</cbc:ID>
<!-- CANTIDAD -->
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">550.0000</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description><![CDATA[BOLSA CEMENTO APU]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID><![CDATA[10000540]]></cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<!-- NUMERO DE ORDEN DEL ITEM -->
<cbc:ID>2</cbc:ID>
<!-- CANTIDAD -->
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">200.0000</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>2</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description><![CDATA[BOLSA CEMENTO ANDINO ULTRA HS]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID><![CDATA[10003615]]></cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
@@ -0,0 +1,114 @@
[
{
"ruc_emisor": "10060028686",
"razon_social_emisor": "DANSA",
"fecha_emision": "2026-05-26",
"tipo": "01",
"serie": "F002",
"numero": "2450",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 736.78,
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": "027",
"porcentaje_detraccion": 4.0,
"monto_detraccion": 29.47,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "SERV.TRANS.550 BLS ULTRA HSX1.3396",
"cantidad": 1.0,
"precio_unitario": 736.78,
"total_linea": 624.38,
"notes_text": "DE VEHICULO DE PLACA D8U934/D1L982 | P.PARTIDA:AV. ATOCONGO 1860-VMT | P.LLEGADA:MZ.P.LT 20 URB.NUEVO LURIN LT 21 | GRE REMITENTE: T001-00128912 | GRT:V001-00000194 | CONF.VEH T3S3 CARGA 23,375TN | VALOR REFERENCIAL S/736.78 | UND | -",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "128912"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V001",
"numero": "194"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/001_correo/10060028686-01-F002-2450.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20506689326",
"razon_social_emisor": "MATERIALES D`CASA S.A.C",
"fecha_emision": "2026-05-11",
"tipo": "31",
"serie": "V002",
"numero": "11",
"ruc_receptor": "20506689326",
"razon_social_receptor": "MATERIALES D`CASA S.A.C",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "128662"
},
{
"tipo": "09",
"serie": "T001",
"numero": "128661"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860",
"punto_llegada": "CA. PANAMERICANA SUR KM 98 SANTA CRUZ",
"peso_bruto": "31875.00",
"unidad_peso_bruto": "KGM",
"fecha_traslado": "2026-05-11",
"vehiculo_principal": "F6P722",
"vehiculo_secundario": null,
"licencia_conductor": "Q09715404",
"nombre_conductor": "HUAMAN ÑAHUE, JUAN",
"documento_conductor": "09715404",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "BOLSA CEMENTO APU",
"cantidad": 550.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
},
{
"descripcion": "BOLSA CEMENTO ANDINO ULTRA HS",
"cantidad": 200.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/001_correo/20506689326-31-V002-11.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:biz="urn:bizlinks:names:specification:ubl:peru:schema:xsd:BizlinksAggregateComponents-1" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1"><ext:UBLExtensions><ext:UBLExtension><cbc:ID>EBIZ</cbc:ID><ext:ExtensionContent><biz:AdditionalInformation><biz:AdditionalProperty><cbc:ID>8025</cbc:ID><cbc:Value><![CDATA[278-0021 278-0026 278-0017]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>8024</cbc:ID><cbc:Value><![CDATA[ventas@cemfisur.com.pe]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>8023</cbc:ID><cbc:Value><![CDATA[www.grupodansa.com.pe]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9670</cbc:ID><cbc:Value><![CDATA[MATERIALES DE CONSTRUCCION]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9673</cbc:ID><cbc:Value><![CDATA[Nro.Cuota = 1 Fecha de Vencimiento = 2026-06-05 Tipo de Moneda = PEN Monto de Cuota = 938.79]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9611</cbc:ID><cbc:Value><![CDATA[OPERACION SUJETA A SPOT 027]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>8185</cbc:ID><cbc:Value><![CDATA[CREDITO A 08 DIAS]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9043</cbc:ID><cbc:Value><![CDATA[---]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9049</cbc:ID><cbc:Value><![CDATA[---]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9218</cbc:ID><cbc:Value><![CDATA[BUITRON BEDON LILA LAURA]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9130</cbc:ID><cbc:Value><![CDATA[---]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9099</cbc:ID><cbc:Value><![CDATA[28/05/2026]]></cbc:Value></biz:AdditionalProperty><biz:AdditionalProperty><cbc:ID>9925</cbc:ID><cbc:Value><![CDATA[20100029741]]></cbc:Value></biz:AdditionalProperty></biz:AdditionalInformation></ext:ExtensionContent></ext:UBLExtension><ext:UBLExtension><ext:ExtensionContent><ds:Signature Id="signatureKG"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>Jwf047g91naqJakpWbK9LIu1bvo=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>IQWmZ3xeIBe3U7UxB267Zpzr0fL4CC8NQtvcgpOiHxVw97vHXS+WA/ADBDUKxQLcmraEGxnozItQBHJ067Fsy1YXAP0AyByOlCJKQl/gxfVTKg+hyIIZbizVQlX8vahRydEalLioTP3aNyWUF5jkKrCatQYYLIyUtkzMB6DUzOEvYR5WcDiAd54Q1fu5Vxps9gZXtWgu+aWA7TXdO/vRg3qKsBAkgr4WNNEp5YXB1piY5aMl4v6/7qDtmGgz3dwaTMERH9aWOtdeP5ZiaWG81hDtdp9/z6er/28pBC4Bw5Sq85B3aiEu/nUfeEMzgJhBjPaGfjgC7KJLOS611r7sWA==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIGJTCCBQ2gAwIBAgITMwAAab3LtCvmGjz0EQAAAABpvTANBgkqhkiG9w0BAQsFADCBkjELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxJjAkBgNVBAsTHUNvcHlyaWdodCAoYykgMjAxNiBXSVNlS2V5IFNBMRYwFAYDVQQLEw1JbnRlcm5hdGlvbmFsMTEwLwYDVQQDEyhXSVNlS2V5IENlcnRpZnlJRCBBZHZhbmNlZCBTZXJ2aWNlcyBDQSA0MB4XDTIzMDQyNDE2MTEzNFoXDTI2MDQyMzE2MTEzNFowgesxCzAJBgNVBAYTAlBFMQ0wCwYDVQQHEwRMSU1BMRgwFgYDVQQKEw9CSVpMSU5LUyBTLkEuQy4xLzAtBgNVBAsMJlZhbGlkYXRlZCBieSBaeVRydXN0IFNvY2llZGFkIEFuw7NuaW1hMRQwEgYDVQQLEwsyMDQ3ODAwNTAxNzEVMBMGA1UECxMMRE5JIDA3ODYxNDU2MSwwKgYDVQQDEyNKQVZJRVIgRkVSTkFORE8gRFJBWEwgR0FSQ0lBIFJPU0VMTDEnMCUGCSqGSIb3DQEJARYYamF2aWVyLmRyYXhsQGJpemxpbmtzLmxhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv4O4GDlvAP4xTbCAjfQAFKjqPJX6wrJ439SvsYbEDHE1QBw191JJiUCA8diVqyJC3f9q5zPMR84+Gpscf1njSPOpxqBK+hU28mR/0lbV31fVKTOeZ0OWVepKTlbmdxf3c4GFVWQownyrD6rzdWC1fpFi3+g3ibkDLXbTVzMACwp5SG8AEmalY/aDEEReDhJjK9ljl3s/v2YnF2Rdv03A9zdRmQ3UT/xYfAAnWp7G7b0G2Fa5QirH7WVxcV0UKuef8ajl7hqdHJy7CBBIAX0OllbqET8rwnu19MzjN7hu1mwqEk6sQeRb3EJIs0GH1fLVS7s0O162s/fSAgwfJwyNVQIDAQABo4ICFzCCAhMwHQYDVR0OBBYEFJnLNJRPWOgtMEdxj/pfn/8eJ+6TMA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBT05JtX0q7CnohNALorr2XJY6mHmzA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vcHVibGljLndpc2VrZXkuY29tL2NybC93Y2lkYXNjYTQuY3JsMG0GCCsGAQUFBwEBBGEwXzA3BggrBgEFBQcwAoYraHR0cDovL3B1YmxpYy53aXNla2V5LmNvbS9jcnQvd2NpZGFzY2E0LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Aud2lzZWtleS5jb20vMCkGA1UdJQQiMCAGCCsGAQUFBwMCBgorBgEEAYI3CgMMBggrBgEFBQcDBDA1BgkrBgEEAYI3FQoEKDAmMAoGCCsGAQUFBwMCMAwGCisGAQQBgjcKAwwwCgYIKwYBBQUHAwQwIwYDVR0RBBwwGoELine truncated
@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><DespatchAdvice xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2" xmlns:biz="urn:bizlinks:names:specification:ubl:peru:schema:xsd:BizlinksAggregateComponents-1" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1"><ext:UBLExtensions><ext:UBLExtension><ext:ExtensionContent><ds:Signature Id="signatureKG"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>LJbqWnNTP13375hfdWAHuk/S37w=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>i33WV09veYIM/veAa0S0LjO6PU5N3McU9BehPTKvSvjNEmUTWX/1dusHtoJBPeX3LKj6KS8VvelYnLVI2FlMVnOv08MEIYNxhuyMso9AtY29Wcbb1DKL8ZSaN0YK5l6kZEl02glxqSIKd3NA0TbT5PgivOczQuShaGu0f7MicogEhfe7Z3BA+/1orU7YQa/ZCComhQk+E2wx0NtzBqP9bDsxHSUJ0JmKXULOUE9ertAYjxY0ZW31q5LxJzTHoozDzWLzxBFtnHX7LOmbvSIuv50VQHRaBAz08ApY/UjunEiJraaSIXfBA3z3GIbFJh3ocRK5WdaDDtoIuz4PhdAcSQ==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIGJTCCBQ2gAwIBAgITMwAAab3LtCvmGjz0EQAAAABpvTANBgkqhkiG9w0BAQsFADCBkjELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxJjAkBgNVBAsTHUNvcHlyaWdodCAoYykgMjAxNiBXSVNlS2V5IFNBMRYwFAYDVQQLEw1JbnRlcm5hdGlvbmFsMTEwLwYDVQQDEyhXSVNlS2V5IENlcnRpZnlJRCBBZHZhbmNlZCBTZXJ2aWNlcyBDQSA0MB4XDTIzMDQyNDE2MTEzNFoXDTI2MDQyMzE2MTEzNFowgesxCzAJBgNVBAYTAlBFMQ0wCwYDVQQHEwRMSU1BMRgwFgYDVQQKEw9CSVpMSU5LUyBTLkEuQy4xLzAtBgNVBAsMJlZhbGlkYXRlZCBieSBaeVRydXN0IFNvY2llZGFkIEFuw7NuaW1hMRQwEgYDVQQLEwsyMDQ3ODAwNTAxNzEVMBMGA1UECxMMRE5JIDA3ODYxNDU2MSwwKgYDVQQDEyNKQVZJRVIgRkVSTkFORE8gRFJBWEwgR0FSQ0lBIFJPU0VMTDEnMCUGCSqGSIb3DQEJARYYamF2aWVyLmRyYXhsQGJpemxpbmtzLmxhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv4O4GDlvAP4xTbCAjfQAFKjqPJX6wrJ439SvsYbEDHE1QBw191JJiUCA8diVqyJC3f9q5zPMR84+Gpscf1njSPOpxqBK+hU28mR/0lbV31fVKTOeZ0OWVepKTlbmdxf3c4GFVWQownyrD6rzdWC1fpFi3+g3ibkDLXbTVzMACwp5SG8AEmalY/aDEEReDhJjK9ljl3s/v2YnF2Rdv03A9zdRmQ3UT/xYfAAnWp7G7b0G2Fa5QirH7WVxcV0UKuef8ajl7hqdHJy7CBBIAX0OllbqET8rwnu19MzjN7hu1mwqEk6sQeRb3EJIs0GH1fLVS7s0O162s/fSAgwfJwyNVQIDAQABo4ICFzCCAhMwHQYDVR0OBBYEFJnLNJRPWOgtMEdxj/pfn/8eJ+6TMA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBT05JtX0q7CnohNALorr2XJY6mHmzA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vcHVibGljLndpc2VrZXkuY29tL2NybC93Y2lkYXNjYTQuY3JsMG0GCCsGAQUFBwEBBGEwXzA3BggrBgEFBQcwAoYraHR0cDovL3B1YmxpYy53aXNla2V5LmNvbS9jcnQvd2NpZGFzY2E0LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Aud2lzZWtleS5jb20vMCkGA1UdJQQiMCAGCCsGAQUFBwMCBgorBgEEAYI3CgMMBggrBgEFBQcDBDA1BgkrBgEEAYI3FQoEKDAmMAoGCCsGAQUFBwMCMAwGCisGAQQBgjcKAwwwCgYIKwYBBQUHAwQwIwYDVR0RBBwwGoEYamF2aWVyLmRyYXhsQGJpemxpbmtzLmxhMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzBHBgNVHSAEQDA+MDwGCGCFdAUOCAEBMDAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cud2lzZWtleS5jb20vcmVwb3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBAIwKxehlZoe1kqpoxrHL/uIeCxgMCidylRT19H45oBWonX6Y9KqvzvnkB6qp2Yv/2c0CiciRMtAFBQXi7u09uIJkB+WcPVgKezPKwWpc8AYz7j7IMsskl3g8XtqOZMbBbOaJcaGkZKYeJitYpQi6dPNNFA3ryAh/eVt2VJeRxDgSXpI/qD4Lij8A7vJonfO/ZBMYsuoHp2WK8Vf8bqsqeUhrHbCTPhlCkYf6TXiDNSDihiFHlZfEjGxERKgzopG9tb/+kJdiQSfpIKLG5ONfGoLROtTxWJrOqwcJDuYBphBuLaEgLUEv6UQ7ncH2qripCI7wQivJA3Sqj04xBz7lpWE=</ds:X509Certificate></ds:X509Data><ds:KeyValue><ds:RSAKeyValue><ds:Modulus>v4O4GDlvAP4xTbCAjfQAFKjqPJX6wrJ439SvsYbEDHE1QBw191JJiUCA8diVqyJC3f9q5zPMR84+Gpscf1njSPOpxqBK+hU28mR/0lbV31fVKTOeZ0OWVepKTlbmdxf3c4GFVWQownyrD6rzdWC1fpFi3+g3ibkDLXbTVzMACwp5SG8AEmalY/aDEEReDhJjK9ljl3s/v2YnF2Rdv03A9zdRmQ3UT/xYfAAnWp7G7b0G2Fa5QirH7WVxcV0UKuef8ajl7hqdHJy7CBBIAX0OllbqET8rwnu19MzjN7hu1mwqEk6sQeRb3EJIs0GH1fLVS7s0O162s/fSAgwfJwyNVQ==</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></ds:KeyValue></ds:KeyInfo></ds:Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions><cbc:UBLVersionID>2.1</cbc:UBLVersionID><cbc:CustomizationID>2.0</cbc:CustomizationID><cbc:ID>V001-00000227</cbc:ID><cbc:IssueDate>2026-05-22</cbc:IssueDate><cbc:IssueTime>11:54:57</cbc:IssueTime><cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">31</cbc:DespatchAdviceTypeCode><cbc:Note>ORR0023116 Placa Secundaria:D1K975</cbc:Note><cac:AdditionalDocumentReference><cbc:ID>T001-0129352</cbc:ID><cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gemLine truncated
@@ -0,0 +1,57 @@
[
{
"ruc_emisor": "20340843607",
"razon_social_emisor": "A. BERIO Y CIA S.A.C. RUC: 20100029741",
"fecha_emision": "28/05/2026",
"tipo": "01",
"serie": "F002",
"numero": "2188",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C. RUC: 20100029741",
"total_factura": "977.91",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": "39.12",
"lineas": [
{
"descripcion": "(afecto al IGV) SERVI. DE TRANSP. 730 BLS. X 1.3396 Marca: - Párametro Legado: CARGA 31.025 TN VAL. REF S/977.91 MTC 151307699 Párametro Legado: GRR.T001-00129352 GRT. V001-227 CONF. VEH.T3S3 000000 ZZ 828.73 Párametro Legado: P.LLEGADA. AV SANTIAGO DE SURCO 4869 SURCO LIMA Párametro Legado: P.PARTI.AV. ATOCONGO 1860 VILLA MARIA DEL TRIUNFO Párametro Legado: PLACA :D7Y800-D1K975 Unidad de Medida: UND NOVECIENTOS SETENTA Y SIETE Y 91/100 SOLES Op. Gravada S/ 828.74 I.G.V S/ 149.17",
"cantidad": "1.00",
"precio_unitario": "0.00",
"total_linea": "828.73",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129352"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V001",
"numero": "227"
}
}
],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/002_correo/20340843607-01-F002-2188.pdf"
},
{
"ruc_emisor": "20340843607",
"razon_social_emisor": "CEMFISUR EIRL RUC: 20340843607",
"fecha_emision": "22/05/2026",
"tipo": "31",
"serie": "V001",
"numero": "227",
"ruc_receptor": "20100029741",
"razon_social_receptor": "CEMFISUR EIRL RUC: 20340843607",
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/002_correo/20340843607-31-V001-227.pdf"
}
]
@@ -0,0 +1,100 @@
[
{
"ruc_emisor": "20340843607",
"razon_social_emisor": "CEMFISUR",
"fecha_emision": "2026-05-28",
"tipo": "01",
"serie": "F002",
"numero": "2188",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 977.91,
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": "027",
"porcentaje_detraccion": 4.0,
"monto_detraccion": 39.12,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "SERVI. DE TRANSP. 730 BLS. X 1.3396",
"cantidad": 1.0,
"precio_unitario": 977.91,
"total_linea": 828.73,
"notes_text": "P.PARTI.AV. ATOCONGO 1860 VILLA MARIA DEL TRIUNFO | P.LLEGADA. AV SANTIAGO DE SURCO 4869 SURCO LIMA | GRR.T001-00129352 GRT.V001-227 CONF. VEH.T3S3 | CARGA 31.025 TN VAL. REF S/977.91 MTC 151307699 | PLACA :D7Y800-D1K975 | UND | -",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129352"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V001",
"numero": "227"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/002_correo/20340843607-01-F002-2188.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20340843607",
"razon_social_emisor": "CEMFISUR E.I.R.L.",
"fecha_emision": "2026-05-22",
"tipo": "31",
"serie": "V001",
"numero": "227",
"ruc_receptor": "20340843607",
"razon_social_receptor": "CEMFISUR EIRL",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129352"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860",
"punto_llegada": "AV.SANTIAGO DE SURCO 4869 (EX-T.MARSANO) - SANTIAGO DE SURCO",
"peso_bruto": "31025.000",
"unidad_peso_bruto": "KGM",
"fecha_traslado": "2026-05-22",
"vehiculo_principal": "D7Y800",
"vehiculo_secundario": "D1K975",
"licencia_conductor": "D42857370",
"nombre_conductor": "YOMAR ERIKSON",
"documento_conductor": "42857370",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO SOL TIPO I - SOL",
"cantidad": 730.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/002_correo/20340843607-31-V001-227.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent><ds:Signature Id="signatureFACTURALOPERU">
<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>Dkql0/yqrvnT3UZtGx52HnfykMY=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>fYa724o1T+XD0Pw0cLjRNEq98qPnEsQI+0q8+opTcHRS+J0WoxhZGMwBhBD2gMUj7LMe1yoQ8SY2X88mCMK9bRkfD+Rezj9KETRmgvM7HmdNyJnpRfRZnO9G9ZJwtVAInjZRXv1JKb26e8g0nY9ebUkLOgHBru8sQzKxNKqdoSX4lxLHc0ewgPsQKsce0jwwQRm0wpMN2JaYrpyydSg+HjXjswHfterYaYOeL3rO/7Xt1N/c6S+xqRgBmrRJqE46B402T7B5J/CTW1BZrSCSSy3WFCwMcJAj59FkH6f8sEPjShlJ5OzA81nmEudt/80nCpry2bs7QO7h4L9zSQALRw==</ds:SignatureValue>
<ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIFbDCCBFSgAwIBAgIIFUldkkH9yjEwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMjAyMTM1OTU0WhcNMjcwMjAyMTM1OTAwWjCCARMxMTAvBgNVBAkMKExULiAyMCBNWi4gQiBVUkIuIFJFU0lELiBIT05PUiBZIExFQUxUQUQxITAfBgkqhkiG9w0BCQEWEm1hbGlhZ2FAbWlnYWZpLmNvbTEsMCoGA1UEAwwjU09GVFdBUkUgREUgRkFDVFVSQUNJT04gRUxFQ1RST05JQ0ExLDAqBgNVBAsMI0ZBQ1RVUkEgRUxFQ1RST05JQ0EgUlVDIDIwNTA2Njg5MzI2MSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxIDAeBgNVBAoMF01BVEVSSUFMRVMgRC9DQVNBIFMuQS5DMQ0wCwYDVQQHDARMSU1BMQswCQYDVQQGEwJQRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOej26BfjO7htv3e1lPaj6I4rzJanTTGMUkD2fkEt4PLMnb7AWrht9cDj0SvqofT8w56jrlqLjV2GpsVgxMTUe+c5Eir2IO+IL8pQva1TFRwpzWCseyb5by1igpCdNKTeJH34DkoRLogc4c2pqIKtWYsPX3QsjEy0rjW6+7sX/JNAQcgrzgJWw4WZwIIjK3PkF7s1O0VqLjTaZhHhbP9bPkMO8u+0RogjKZvBGfKY6ftEMjaPqTtB6k6zbZx7pPk+bRNMjSOncIFBehbaHYt63CeDlJHDNf5u+4jSWgp5I4nxHggfMYmeHOZGiOGYh6hClITOq+/Mg67g5FUl9416/UCAwEAAaOCAY0wggGJMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUXYhbretl+/5oouTZbz1XcqLvK5kwZwYIKwYBBQUHAQEEWzBZMDUGCCsGAQUFBzAChilodHRwOi8vY3J0LmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNlcjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3AubGxhbWEucGUwHQYDVR0RBBYwFIESbWFsaWFnYUBtaWdhZmkuY29tMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUTtWOjRJrY+hai0Np8dEDrqh3tIcwDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQCIe0oUU2YJTZY0jULGUgE09eyyE+qh+V6MZLGPyeieuM+sS7U2uqoctQLS2VVIbx+pPoJ/ubmDS4zxMgxejcyJwiW0u9cn1bUS7XxQ4W5lSdRY5vi1MOTB2PXE3h1ESB6T6EJcY4P+azSNXgxOtnUzeXRxGSOR2RcoSiBocfJWKWjcOrVyJ4hksLKhjjm7hwi4zWD4chiJfaaHx2an9vpx8/gZKy4zz4+q1kDSoXL4FqY7DWGtyxWJVW/J2nbTj8PdV6YDwkboLPPwFhDtN0OE7VBqpXIItxqXLGPWupL7PSnhYDAB1uDxWbfkBx7WtIpKMxT7zvmwzaTTlvEOgqnH</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>FE07-1559</cbc:ID>
<cbc:IssueDate>2026-05-13</cbc:IssueDate>
<cbc:IssueTime>17:20:00</cbc:IssueTime>
<cbc:DueDate>2026-05-27</cbc:DueDate>
<cbc:InvoiceTypeCode listID="0101">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000"><![CDATA[Mil cuatrocientos veinte con 65/100 ]]></cbc:Note>
<cbc:DocumentCurrencyCode>PEN</cbc:DocumentCurrencyCode>
<cac:DespatchDocumentReference>
<cbc:ID>V002-11</cbc:ID>
<cbc:DocumentTypeCode>31</cbc:DocumentTypeCode>
</cac:DespatchDocumentReference>
<cac:Signature>
<cbc:ID>signatureFACTURALOPERU</cbc:ID>
<cbc:Note>FACTURALO</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#signatureFACTURALOPERU</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6">20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[{MATERIALES D`CASA S.A.C}]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:ID>150115</cbc:ID>
<cbc:AddressTypeCode>0000</cbc:AddressTypeCode>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:District>LA VICTORIA</cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. Parinacochas 1060]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Telephone>994 295 061</cbc:Telephone>
<cbc:ElectronicMail>materialesdcasa@gmail.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:ID>150143</cbc:ID>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:ElectronicMail>recepcion@aberio.com.pe</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">1420.65</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">56.83</cbc:Amount>
<cbc:PaymentDueDate>2026-05-27</cbc:PaymentDueDate>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota002</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">1363.82</cbc:Amount>
<cbc:PaymentDueDate>2026-05-27</cbc:PaymentDueDate>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">216.71</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">1203.94</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">216.71</cbc:TaxAmount>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:ID>1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">1203.94</cbc:LineExtensionAmount>
<cbc:TaxInclusiveAmount currencyID="PEN">1420.65</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="PEN">1420.65</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="ZZ">550</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">882.89</cbc:LineExtensionAmount>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">1.894200</cbc:PriceAmount>
<cbc:PriceTypeCode>01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">158.92</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">882.89</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">158.92</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:Percent>18.00</cbc:Percent>
<cbc:TaxExemptionReasonCode>10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID>1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:Item>
<cbc:Description><![CDATA[SERVICIO TRANSPORTE CEMENTO APU 027 SUNAT]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>10000541</cbc:ID>
</cac:SellersItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode>51122201</cbc:ItemClassificationCode>
</cac:CommodityClassification>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">1.605254</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:InvoicedQuantity unitCode="ZZ">200</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">321.05</cbc:LineExtensionAmount>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">1.894200</cbc:PriceAmount>
<cbc:PriceTypeCode>01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">57.79</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">321.05</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">57.79</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:Percent>18.00</cbc:Percent>
<cbc:TaxExemptionReasonCode>10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID>1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:Item>
<cbc:Description><![CDATA[SERVICIO TRANSPORTE CEMTO ANDINO/ULTRA 027 SUNAT]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>10000539</cbc:ID>
</cac:SellersItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode>51122199</cbc:ItemClassificationCode>
</cac:CommodityClassification>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">1.605254</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<DespatchAdvice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent><ds:Signature Id="signatureFACTURALOPERU">
<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>jh2FnXCc6mcZFOLNh4yidKCBNOE=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>QkBKgCtC1pMy8xW4kF227KpiRiTSqwS9rmx4Ja1NHcnyh+2CYOLoeWRX1CsfGZe2Twayxe79XojFYvFiDsl7uM6PUySq7BB1OdBj6ZAR4TJYLUQXuBBXRFL2DI4j6Btuu/q8AIPHmrJepk/2tWJqb/oiBo2FhoGdEXCmkyZgHNAIIiRYQD7l00GhDVolirDrkii6zo/grWNFUGZC95SRFxgeQF23gED2PwakIzzMOqQrb/7IWh0er+ZF+Vk8QB8Y1CGHtRVytKMX+sT4K+G4O/tTT5GCQizs9HZjN5kxB1VMtM4GlUy4dpWuVblZKLREpZ9RFP2glThrohebgTGq1g==</ds:SignatureValue>
<ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIFbDCCBFSgAwIBAgIIFUldkkH9yjEwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMjAyMTM1OTU0WhcNMjcwMjAyMTM1OTAwWjCCARMxMTAvBgNVBAkMKExULiAyMCBNWi4gQiBVUkIuIFJFU0lELiBIT05PUiBZIExFQUxUQUQxITAfBgkqhkiG9w0BCQEWEm1hbGlhZ2FAbWlnYWZpLmNvbTEsMCoGA1UEAwwjU09GVFdBUkUgREUgRkFDVFVSQUNJT04gRUxFQ1RST05JQ0ExLDAqBgNVBAsMI0ZBQ1RVUkEgRUxFQ1RST05JQ0EgUlVDIDIwNTA2Njg5MzI2MSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxIDAeBgNVBAoMF01BVEVSSUFMRVMgRC9DQVNBIFMuQS5DMQ0wCwYDVQQHDARMSU1BMQswCQYDVQQGEwJQRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOej26BfjO7htv3e1lPaj6I4rzJanTTGMUkD2fkEt4PLMnb7AWrht9cDj0SvqofT8w56jrlqLjV2GpsVgxMTUe+c5Eir2IO+IL8pQva1TFRwpzWCseyb5by1igpCdNKTeJH34DkoRLogc4c2pqIKtWYsPX3QsjEy0rjW6+7sX/JNAQcgrzgJWw4WZwIIjK3PkF7s1O0VqLjTaZhHhbP9bPkMO8u+0RogjKZvBGfKY6ftEMjaPqTtB6k6zbZx7pPk+bRNMjSOncIFBehbaHYt63CeDlJHDNf5u+4jSWgp5I4nxHggfMYmeHOZGiOGYh6hClITOq+/Mg67g5FUl9416/UCAwEAAaOCAY0wggGJMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUXYhbretl+/5oouTZbz1XcqLvK5kwZwYIKwYBBQUHAQEEWzBZMDUGCCsGAQUFBzAChilodHRwOi8vY3J0LmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNlcjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3AubGxhbWEucGUwHQYDVR0RBBYwFIESbWFsaWFnYUBtaWdhZmkuY29tMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUTtWOjRJrY+hai0Np8dEDrqh3tIcwDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQCIe0oUU2YJTZY0jULGUgE09eyyE+qh+V6MZLGPyeieuM+sS7U2uqoctQLS2VVIbx+pPoJ/ubmDS4zxMgxejcyJwiW0u9cn1bUS7XxQ4W5lSdRY5vi1MOTB2PXE3h1ESB6T6EJcY4P+azSNXgxOtnUzeXRxGSOR2RcoSiBocfJWKWjcOrVyJ4hksLKhjjm7hwi4zWD4chiJfaaHx2an9vpx8/gZKy4zz4+q1kDSoXL4FqY7DWGtyxWJVW/J2nbTj8PdV6YDwkboLPPwFhDtN0OE7VBqpXIItxqXLGPWupL7PSnhYDAB1uDxWbfkBx7WtIpKMxT7zvmwzaTTlvEOgqnH</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>V002-11</cbc:ID>
<cbc:IssueDate>2026-05-11</cbc:IssueDate>
<cbc:IssueTime>13:05:50</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" listName="Tipo de Documento" listAgencyName="PE:SUNAT">31</cbc:DespatchAdviceTypeCode>
<!-- DOCUMENTOS ADICIONALES (Catalogo D41) -->
<cac:AdditionalDocumentReference>
<cbc:ID>T001-128662</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">09</cbc:DocumentTypeCode>
<cbc:DocumentType>Guía de remisión remitente</cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>T001-128661</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">09</cbc:DocumentTypeCode>
<cbc:DocumentType>Guía de remisión remitente</cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID>signatureFACTURALOPERU</cbc:ID>
<cbc:Note>FACTURALO</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#signatureFACTURALOPERU</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<!-- DATOS DEL EMISOR (TRANSPORTISTA) -->
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="6">20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- DATOS DEL RECEPTOR (DESTINATARIO) -->
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="6">20506689326</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[MATERIALES D`CASA S.A.C]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- DATOS DE QUIEN PAGA EL SERVICIO -->
<!-- DATOS DEL TRASLADO -->
<cac:Shipment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID>SUNAT_Envio</cbc:ID>
<!-- PESO BRUTO TOTAL DE LA CARGA-->
<cbc:GrossWeightMeasure unitCode="KGM">31875.00</cbc:GrossWeightMeasure>
<!-- INDICADORES -->
<cac:ShipmentStage>
<!-- FECHA DE INICIO DEL TRASLADO -->
<cac:TransitPeriod>
<cbc:StartDate>2026-05-11</cbc:StartDate>
</cac:TransitPeriod>
<!-- CONDUCTOR PRINCIPAL -->
<cac:DriverPerson>
<!-- TIPO Y NUMERO DE DOCUMENTO DE IDENTIDAD -->
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="1">09715404</cbc:ID>
<!-- NOMBRES -->
<cbc:FirstName>HUAMAN ÑAHUE, JUAN</cbc:FirstName>
<!-- APELLIDOS -->
<cbc:FamilyName>DE DIOS</cbc:FamilyName>
<!-- TIPO DE CONDUCTOR: PRINCIPAL -->
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<!-- LICENCIA DE CONDUCIR -->
<cbc:ID>Q09715404</cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
<!-- CONDUCTOR SECUNDARIO -->
</cac:ShipmentStage>
<cac:Delivery>
<!-- DIRECCION DEL PUNTO DE LLEGADA -->
<cac:DeliveryAddress>
<!-- UBIGEO DE LLEGADA -->
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150502</cbc:ID>
<cac:AddressLine>
<cbc:Line><![CDATA[CA. PANAMERICANA SUR KM 98 SANTA CRUZ]]></cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<!-- DIRECCION DEL PUNTO DE PARTIDA -->
<cac:DespatchAddress>
<!-- UBIGEO DE PARTIDA -->
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150143</cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE PARTIDA -->
<cac:AddressLine>
<cbc:Line><![CDATA[AV. ATOCONGO 1860]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<!-- DATOS DEL REMITENTE -->
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" schemeAgencyName="PE:SUNAT" schemeName="Documento de Identidad" schemeID="6">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<!-- NUMERO DE CONTENEDOR -->
<cbc:ID>-</cbc:ID>
<cac:TransportEquipment>
<!-- VEHICULO PRINCIPAL -->
<!-- PLACA - VEHICULO PRINCIPAL -->
<cbc:ID>F6P722</cbc:ID>
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>15M24026972E</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- VEHICULOS SECUNDARIOS -->
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- DETALLES DE BIENES A TRASLADAR -->
<cac:DespatchLine>
<!-- NUMERO DE ORDEN DEL ITEM -->
<cbc:ID>1</cbc:ID>
<!-- CANTIDAD -->
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">550.0000</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description><![CDATA[BOLSA CEMENTO APU]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID><![CDATA[10000540]]></cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<!-- NUMERO DE ORDEN DEL ITEM -->
<cbc:ID>2</cbc:ID>
<!-- CANTIDAD -->
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">200.0000</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>2</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description><![CDATA[BOLSA CEMENTO ANDINO ULTRA HS]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID><![CDATA[10003615]]></cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
@@ -0,0 +1,55 @@
[
{
"ruc_emisor": "20506689326",
"razon_social_emisor": "A. BERIO Y CIA S.A.C.",
"fecha_emision": "27/05/2026",
"tipo": "01",
"serie": "FE07",
"numero": "1559",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": "1363.82",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": "4",
"monto_detraccion": "56.83",
"lineas": [
{
"descripcion": "550 ZZ SERVICIO TRANSPORTE CEMENTO APU 027 SUNAT 0",
"cantidad": "1.89",
"precio_unitario": "1.89",
"total_linea": "1041.81",
"guias_remision": [],
"guia_transportista": null
},
{
"descripcion": "200 ZZ SERVICIO TRANSPORTE CEMTO ANDINO/ULTRA 027 SUNAT 0",
"cantidad": "1.89",
"precio_unitario": "1.89",
"total_linea": "378.84",
"guias_remision": [],
"guia_transportista": null
}
],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.pdf"
},
{
"ruc_emisor": "20506689326",
"razon_social_emisor": "MATERIALES D`CASA S.A.C",
"fecha_emision": null,
"tipo": "31",
"serie": "V002",
"numero": "11",
"ruc_receptor": "20100029741",
"razon_social_receptor": "MATERIALES D`CASA S.A.C",
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/003_correo/20506689326-31-V002-11.pdf"
}
]
@@ -0,0 +1,139 @@
[
{
"ruc_emisor": "20506689326",
"razon_social_emisor": "MATERIALES D`CASA S.A.C",
"fecha_emision": "2026-05-13",
"tipo": "01",
"serie": "FE07",
"numero": "1559",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 1420.65,
"documentos_referencia": [
{
"tipo": "31",
"serie": "V002",
"numero": "11"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "SERVICIO TRANSPORTE CEMENTO APU 027 SUNAT",
"cantidad": 550.0,
"precio_unitario": 1.8942,
"total_linea": 882.89,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "128662"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V002",
"numero": "11"
}
},
{
"descripcion": "SERVICIO TRANSPORTE CEMTO ANDINO/ULTRA 027 SUNAT",
"cantidad": 200.0,
"precio_unitario": 1.8942,
"total_linea": 321.05,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "128661"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V002",
"numero": "11"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20506689326",
"razon_social_emisor": "MATERIALES D`CASA S.A.C",
"fecha_emision": "2026-05-11",
"tipo": "31",
"serie": "V002",
"numero": "11",
"ruc_receptor": "20506689326",
"razon_social_receptor": "MATERIALES D`CASA S.A.C",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "128662"
},
{
"tipo": "09",
"serie": "T001",
"numero": "128661"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860",
"punto_llegada": "CA. PANAMERICANA SUR KM 98 SANTA CRUZ",
"peso_bruto": "31875.00",
"unidad_peso_bruto": "KGM",
"fecha_traslado": "2026-05-11",
"vehiculo_principal": "F6P722",
"vehiculo_secundario": null,
"licencia_conductor": "Q09715404",
"nombre_conductor": "HUAMAN ÑAHUE, JUAN",
"documento_conductor": "09715404",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "BOLSA CEMENTO APU",
"cantidad": 550.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
},
{
"descripcion": "BOLSA CEMENTO ANDINO ULTRA HS",
"cantidad": 200.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/003_correo/20506689326-31-V002-11.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"><ext:UBLExtensions><ext:UBLExtension><ext:ExtensionContent><ds:Signature Id="SignatureSP"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>8LhsuraTHRFahN/X2RKshF/bPLM=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">LVrsrAh9EwLNKiczJjoHiLSjH9JVa47YaKsflcQOlaxmGtmV3jMBVS4IKUVAurgypeSIOdHFQRhPA2FzT0nAB0ROUhqnrAlRKX0nY5/lFb0WZOjSe7IKbV8bDwYhjdYC/oo03/3sgNudJUYW6zErMyooyY0UX4GV4dZfqNxEqdeQvZiz+2QdLGPWUb+Ibq/fGHseignAE8O2cEHmDDvqk6ABGtEkPc9JPpYep14KEzws9LeheVaOAzPsk/Oe4tDM+XmYMk+jE1riHlTDZDPEVUr1Liw5uU1kVdkij3L9+fdmkP5BwbkHgEJFljvRepuI8N66b8xKwqFmyYlBqHdehA==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509SubjectName>C=PE, L=LIMA, O=R P TRANSFER S.A.C., OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20551006914, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=contabilidad@difenas.com.pe, STREET=AV. LIMA NRO. 2210 P.J. JOSE GALVEZ</X509SubjectName><X509Certificate>MIIFdjCCBF6gAwIBAgIISJfl+vjrcZUwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDI0MTY1NTM2WhcNMjYxMDI0MTY1NTAwWjCCARQxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIxMCBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1MTAwNjkxNDEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMR0wGwYDVQQKDBRSICBQIFRSQU5TRkVSIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC67JWukAAwxXhKV/LTmrjHALY44d1pU9Y3JJE6TSDgjtimIs1h7eZot/OC9d+OGUhy383TMSxqdIM4W77PMDRH5Iefh6H5EKaPI2YsCIc3lT3N15JdK+EQNyPeAh/mC4OWrGuVXDgU3MPD7EbtgjvYG8wLEJUIJBxw9bil4SiTLHPiKpRWySrtWPZeBTYfGdR/7xoRxSRSCOwgi04lp8lEv8Wwfyb2rsrltRrx44RGZFLy0GRjLw0ktzx2OL3VYGK51x0YD91wIKiFUN3co3vgLwyiuLiEr09QXpFm9zUjupxT9V3RtmyWOv2x6cFAWswLGYNVl7JnspVGae8GV23nAgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFAWB+XQmngVqzCM13NVubfDKC12wMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAu4Ajzm//yKf4bONcHdDISUaC3P8rh5CW0NSkVS/MsrXBGB3SCJXk2LR7wLVrUco3/DP3wMkel4XVDL6ftTfim+XmLXeAnuoFYTBGVJtuZMvuZAsncGIu3iFOE1K1v8yhzUykh+L7gLgPz60o8zHOXN48G3mHeNtaz3gSPGFSy0q6abiSN1n1A0VH8jj0PNf5Q0kjwdwfv0IhUAImgvLcPYeWXPobN2Ad4EqTkgvwOlLg1J7Tv6GJybjGKFSAHWi1Bbu+hegTS8SgGPDmXTsTe0ZPZZ+YzvupS/zzDEYkC1OV7b/56t4sFn5KVrvpZqsoisqCzMV4NOc0XgbTsMVoJg==</X509Certificate></X509Data></KeyInfo></ds:Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions><cbc:UBLVersionID>2.1</cbc:UBLVersionID><cbc:CustomizationID schemeAgencyName="PE:SUNAT">2.0</cbc:CustomizationID><cbc:ID>F004-0005989</cbc:ID><cbc:IssueDate>2026-05-29</cbc:IssueDate><cbc:InvoiceTypeCode listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" listName="Tipo de Documento" listAgencyName="PE:SUNAT" listID="0101">01</cbc:InvoiceTypeCode><cbc:Note languageLocaleID="1000">DOSCIENTOS VEINTISEIS CON 45/100 SOLES</cbc:Note><cbc:DocumentCurrencyCode listName="Currency" listAgencyName="United Nations Economic Commission for Europe" listID="ISO 4217 Alpha">PEN</cbc:DocumentCurrencyCode><cbc:LineCountNumeric>1</cbc:LineCountNumeric><cac:Signature><cbc:ID>signatureCF</cbc:ID><cac:SignatoryParty><cac:PartyIdentification><cbc:ID>20551006914</cbc:ID></cac:PartyIdentification><cac:PartyName><cbc:Name><![CDATA[R & P TRANSFLine truncated
G.R.T. : V002-0001427
P. PARTIDA : AV. ATOCONGO 1860 VMT LIMA LIMA
P. LLEGADA : CAR. PANAMERICANA SUR KM 59 MZA. A LOTE. 1 A.V LA PONDEROSA- LIMA- LIMA -PUCUSANA
CONF. VEHIC : T3S3
VALOR REFER :S/ 226.45
T.N. : 5.312]]></cbc:Description><cac:SellersItemIdentification><cbc:ID><![CDATA[SERV-CEM-SOL-125]]></cbc:ID></cac:SellersItemIdentification></cac:Item><cac:Price><cbc:PriceAmount currencyID="PEN">1.5352540000</cbc:PriceAmount></cac:Price></cac:InvoiceLine></Invoice>
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><DespatchAdvice xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"><ext:UBLExtensions><ext:UBLExtension><ext:ExtensionContent><ds:Signature Id="SignatureSP"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>NZR3F6AHQuWc6dokcbp/vG99cYQ=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">hkguA93vzLnZCwlhqrSmtqFvMrQlTH17PyOixuXvJFFszq5/90MLblUlBVOOQQJj1MJNdGifBpKB/GJzLFPk5SIY7jYlkmIAuusrcvu2RbKllcCmBENxdXD/rNQ4Zl5N1pPi/Ob8jLDANLNz573c+HZnLP5O0LUq/kbcbAEe59FJjOG36+iPwPu/hDloKlLC+B++HxTWGd8yXlbUeaEV5lLe8Cd4gzmisyUd/HTlgKMf7/rUmL0es8kbSLOm8o2hX2DRwcuern7I44T47eq1TPKh8ePrNMCfKdFZrMEF3fbdwwZBM45MUq8+E11g//rIzjNsnUEd5mSQSKcD59StQA==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509SubjectName>C=PE, L=LIMA, O=R P TRANSFER S.A.C., OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20551006914, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=contabilidad@difenas.com.pe, STREET=AV. LIMA NRO. 2210 P.J. JOSE GALVEZ</X509SubjectName><X509Certificate>MIIFdjCCBF6gAwIBAgIISJfl+vjrcZUwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDI0MTY1NTM2WhcNMjYxMDI0MTY1NTAwWjCCARQxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIxMCBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1MTAwNjkxNDEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMR0wGwYDVQQKDBRSICBQIFRSQU5TRkVSIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC67JWukAAwxXhKV/LTmrjHALY44d1pU9Y3JJE6TSDgjtimIs1h7eZot/OC9d+OGUhy383TMSxqdIM4W77PMDRH5Iefh6H5EKaPI2YsCIc3lT3N15JdK+EQNyPeAh/mC4OWrGuVXDgU3MPD7EbtgjvYG8wLEJUIJBxw9bil4SiTLHPiKpRWySrtWPZeBTYfGdR/7xoRxSRSCOwgi04lp8lEv8Wwfyb2rsrltRrx44RGZFLy0GRjLw0ktzx2OL3VYGK51x0YD91wIKiFUN3co3vgLwyiuLiEr09QXpFm9zUjupxT9V3RtmyWOv2x6cFAWswLGYNVl7JnspVGae8GV23nAgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFAWB+XQmngVqzCM13NVubfDKC12wMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAu4Ajzm//yKf4bONcHdDISUaC3P8rh5CW0NSkVS/MsrXBGB3SCJXk2LR7wLVrUco3/DP3wMkel4XVDL6ftTfim+XmLXeAnuoFYTBGVJtuZMvuZAsncGIu3iFOE1K1v8yhzUykh+L7gLgPz60o8zHOXN48G3mHeNtaz3gSPGFSy0q6abiSN1n1A0VH8jj0PNf5Q0kjwdwfv0IhUAImgvLcPYeWXPobN2Ad4EqTkgvwOlLg1J7Tv6GJybjGKFSAHWi1Bbu+hegTS8SgGPDmXTsTe0ZPZZ+YzvupS/zzDEYkC1OV7b/56t4sFn5KVrvpZqsoisqCzMV4NOc0XgbTsMVoJg==</X509Certificate></X509Data></KeyInfo></ds:Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions><cbc:UBLVersionID>2.1</cbc:UBLVersionID><cbc:CustomizationID>2.0</cbc:CustomizationID><cbc:ID>V002-0001427</cbc:ID><cbc:IssueDate>2026-05-29</cbc:IssueDate><cbc:IssueTime>17:25:19</cbc:IssueTime><cbc:DespatchAdviceTypeCode listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" listName="Tipo de Documento" listAgencyName="PE:SUNAT">31</cbc:DespatchAdviceTypeCode><cac:Signature><cbc:ID>V002-0001427</cbc:ID><cac:SignatoryParty><cac:PartyIdentification><cbc:ID>20551006914</cbc:ID></cac:PartyIdentification><cac:PartyName><cbc:Name><![CDATA[R & P TRANSFER S.A.C.]]></cbc:Name></cac:PartyName></cac:SignatoryParty><cac:DigitalSignatureAttachment><cac:ExternalReference><cbc:URI>#SignatureSP</cbc:URI></cac:ExternalReference></cac:DigitalSignatureAttachment></cac:Signature><cac:DespatchSupplierParty><cac:Party><cac:PartyIdentification><cbc:ID schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06" sLine truncated
@@ -0,0 +1,38 @@
[
{
"ruc_emisor": "20551006914",
"razon_social_emisor": "A. BERIO Y CIA S.A.C.",
"fecha_emision": "29/05/2026",
"tipo": "09",
"serie": "F004",
"numero": "5989",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/004_correo/20551006914-09-F004-5989.pdf"
},
{
"ruc_emisor": "20551006914",
"razon_social_emisor": null,
"fecha_emision": null,
"tipo": "31",
"serie": "V002",
"numero": "1427",
"ruc_receptor": "20100029741",
"razon_social_receptor": null,
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/004_correo/20551006914-31-V002-1427.pdf"
}
]
@@ -0,0 +1,105 @@
[
{
"ruc_emisor": "20551006914",
"razon_social_emisor": "R & P TRANSFER S.A.C.",
"fecha_emision": "2026-05-29",
"tipo": "01",
"serie": "F004",
"numero": "5989",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 226.45,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129723"
},
{
"tipo": "31",
"serie": "V002",
"numero": "1427"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "POR EL SERVICIO DE TRANSPORTE DE 125 BOLSAS DE CEMENTO SOL G.R.R.\t\t: T001-00129723\nG.R.T.\t\t: V002-0001427\nP. PARTIDA \t: AV. ATOCONGO 1860 VMT LIMA LIMA\nP. LLEGADA \t: CAR. PANAMERICANA SUR KM 59 MZA. A LOTE. 1 A.V LA PONDEROSA- LIMA- LIMA -PUCUSANA\nCONF. VEHIC\t: T3S3\nVALOR REFER\t:S/ 226.45\nT.N.\t\t: 5.312",
"cantidad": 125.0,
"precio_unitario": 1.8116,
"total_linea": 191.91,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129723"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V002",
"numero": "1427"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/004_correo/20551006914-01-F004-5989.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20551006914",
"razon_social_emisor": "R & P TRANSFER S.A.C.",
"fecha_emision": "2026-05-29",
"tipo": "31",
"serie": "V002",
"numero": "1427",
"ruc_receptor": "20550744024",
"razon_social_receptor": "CONSORCIO UNION FERRETERA S.A.C. - CONSUFER S.A.C.",
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV ATOCONGO 1860 LIMA LIMA VMT",
"punto_llegada": "CAR.PANAMERICANA SUR KM 59 MZA. A LOTE. 1 A.V. LA PONDEROSA (PUENTE PU",
"peso_bruto": "5.313",
"unidad_peso_bruto": "KGM",
"fecha_traslado": "2026-05-29",
"vehiculo_principal": "C6Y857",
"vehiculo_secundario": "D2P996",
"licencia_conductor": "Q45322098",
"nombre_conductor": "LUIS MIGUEL",
"documento_conductor": "45322098",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO SOL T1",
"cantidad": 125.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/004_correo/20551006914-31-V002-1427.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"><ext:UBLExtensions><ext:UBLExtension><ext:ExtensionContent><ds:Signature Id="SignatureSP"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>oydc1/p9NAh68kMvAOT9oAUeGCU=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">zzCw8dLaTJ/r0BiNVSupKYiIujELgg8U2TWXw9mB52BDlKynFAGRalVcHccMit9teSKQMGYKdiLgzVaqhIWwQAxDIwUaaoudE2hSG2eHQdwCKqP0z76CjDiTZEgHj30agvxUjZxXeQbczvc5vKopUaRdLwDLEjFZyr0TftGQBujxuaAzQhU+X5D6yNdhxOXA0GPu00g92EfapGmbh5Wt1kUUFhrI1om+hOkbhXZATCHfQJ7eB5U0cEbfZyLqZw9Zvq6rnq5opWi35SUe3tkZjlN6oE4XvGjuXksD4c9plp/bQvGhZQlxg1D8UHnRerffLdZv7B3ZA1NtruNYJ6kvZw==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509SubjectName>C=PE, L=LIMA, O=DISTRIBUIDORA FERRETERA NASCA S.A.C. - DIFENAS S.A.C., OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20555929006, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=contabilidad@difenas.com.pe, STREET=AV. LIMA NRO. 2236 P.J. JOSE GALVEZ</X509SubjectName><X509Certificate>MIIFlzCCBH+gAwIBAgIIMW4CA4T7sdQwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTkxNDEwWhcNMjYxMDE0MTkxNDAwWjCCATUxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIzNiBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1NTkyOTAwNjEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMT4wPAYDVQQKDDVESVNUUklCVUlET1JBIEZFUlJFVEVSQSBOQVNDQSBTLkEuQy4gLSBESUZFTkFTIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDrXOQp5XJfVSlT7G/xjPQp25/XlHcTMqzFneRLQB7RBMEoVZMGS08TJOwb7A08F80MemcdHINfKu32W0vH+IkXftM80JzMMwcooM0HPx42rYm0kmYovhOdoDDOGXWEbBInQ7aTIQkW4/UkytdIVP3uk5sRoPVollMeu1FnvBBe0xU2xMCSTpd4gOQXGHittmYhgK2YCNdrKBRn/k/wULS9RsejCPV4FkUAeiZK2JSFphR4YZPddo3XLb/mUXwgoikAovQ4RyN2QqW+PRXI7GEuY9UN/DuEaDsdBNyKEddeYJnMRepZmDQEQr5RMbn4B5ObFaODKmkMe4lg/GE9sb11AgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFOekfrMbj8D7XHBMrINSvd5DMeY9MA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAfeOGCQjp79Wh+8REraPlhIb7EOjJsbVR7W9eYNnIo2jDZMpBY8yxrQtcukGBjABn63L+N335eviU1hX6saLTXwcCrNrsYNYt4hQ7FQWaHsSp9AckMdRCxDvhIpQVheVKLLT/aSOV1loEa6J8A25wk5n+oS1nEex6x+7k210FcLOREyVbPxqrlCJPX8SCVcJOl84KOHlbrGmPDp2r30IycyM3mx7cJfIwNCbcNOXi46QqI6QINhooysZy4lSj7LqIDItzG3YaXlnauWSGPEsl8ggqcCOp5QdXSAeov+0tkTD9/83OA6/5Qv5dvp0x3Qq5JY4H/QBrh16SHQcHqxIMPw==</X509Certificate></X509Data></KeyInfo></ds:Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions><cbc:UBLVersionID>2.1</cbc:UBLVersionID><cbc:CustomizationID schemeAgencyName="PE:SUNAT">2.0</cbc:CustomizationID><cbc:ID>F004-0003544</cbc:ID><cbc:IssueDate>2026-05-29</cbc:IssueDate><cbc:InvoiceTypeCode listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" listName="Tipo de Documento" listAgencyName="PE:SUNAT" listID="1001">01</cbc:InvoiceTypeCode><cbc:Note languageLocaleID="1000">SEISCIENTOS CUARENTA Y CUATRO CON 35/100 SOLES</cbc:Note><cbc:Note languageLocaleID="2006">Operación sujeta a detracción</cbc:Note><cbc:DocumentCurrencyCode listName="Currency" listAgencyName="United Nations Economic Commission for Europe" listID="ISO 4217 Alpha">PEN</cbc:DocumentCurrencyCode><cbc:LineCountNumeric>1</cbc:LineCountNumeric><cac:Signature><cbc:ID>signLine truncated
G.R.T. : V002-0001358
P. PARTIDA : AV. ATOCONGO 1860 VMT LIMA LIMA
P. LLEGADA : AV. PROLONGACION SAENZ PEÑA-LAS PALMAS MZ H LT.7 OTR.UCV 12203 SUBL B SECTOR CODIGO CATASTRAL
CONF. VEHIC : T3S3
VALOR REFER :S/ 644.35
T]]></cbc:Description><cac:SellersItemIdentification><cbc:ID><![CDATA[SERV-CEM-SOL-481]]></cbc:ID></cac:SellersItemIdentification></cac:Item><cac:Price><cbc:PriceAmount currencyID="PEN">1.1352540000</cbc:PriceAmount></cac:Price></cac:InvoiceLine></Invoice>
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><DespatchAdvice xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"><ext:UBLExtensions><ext:UBLExtension><ext:ExtensionContent><ds:Signature Id="SignatureSP"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>60qTHSXvO/FXkSbic7xmmBjlokk=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">sxQSd3SmESNNOy9vPdeOmSjpgV/EVhLJ/+opTLhshivwvIbU/XRaJ/GSxWB+yFTUu2tFzOJ+bQLxqmOMXl/R6xllxFshQ4tNh1Q73sCt0N1f9WE2LBm+g5Fk/v5sHtJIlJgcnpQiu8EYS0bCtyC2oiaNsLsY22jJvaSB/lISthRji7WAgWPbytQUtTYxZMYwLleh80RvZy05xmDrdjajiDMmSIBQeT89b3gYGv3VdaNNRERc+Yw/t7NxBcsGUfeO73VJo/C6UzDQNyiy9N3gwmjAYs1j2Mn41cEVlGQWPo9+FGewIpKkRdliNWeLXbAyrArV/y1Sy6kMECal1V5mHA==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509SubjectName>C=PE, L=LIMA, O=DISTRIBUIDORA FERRETERA NASCA S.A.C. - DIFENAS S.A.C., OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20555929006, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=contabilidad@difenas.com.pe, STREET=AV. LIMA NRO. 2236 P.J. JOSE GALVEZ</X509SubjectName><X509Certificate>MIIFlzCCBH+gAwIBAgIIMW4CA4T7sdQwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTkxNDEwWhcNMjYxMDE0MTkxNDAwWjCCATUxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIzNiBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1NTkyOTAwNjEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMT4wPAYDVQQKDDVESVNUUklCVUlET1JBIEZFUlJFVEVSQSBOQVNDQSBTLkEuQy4gLSBESUZFTkFTIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDrXOQp5XJfVSlT7G/xjPQp25/XlHcTMqzFneRLQB7RBMEoVZMGS08TJOwb7A08F80MemcdHINfKu32W0vH+IkXftM80JzMMwcooM0HPx42rYm0kmYovhOdoDDOGXWEbBInQ7aTIQkW4/UkytdIVP3uk5sRoPVollMeu1FnvBBe0xU2xMCSTpd4gOQXGHittmYhgK2YCNdrKBRn/k/wULS9RsejCPV4FkUAeiZK2JSFphR4YZPddo3XLb/mUXwgoikAovQ4RyN2QqW+PRXI7GEuY9UN/DuEaDsdBNyKEddeYJnMRepZmDQEQr5RMbn4B5ObFaODKmkMe4lg/GE9sb11AgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFOekfrMbj8D7XHBMrINSvd5DMeY9MA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAfeOGCQjp79Wh+8REraPlhIb7EOjJsbVR7W9eYNnIo2jDZMpBY8yxrQtcukGBjABn63L+N335eviU1hX6saLTXwcCrNrsYNYt4hQ7FQWaHsSp9AckMdRCxDvhIpQVheVKLLT/aSOV1loEa6J8A25wk5n+oS1nEex6x+7k210FcLOREyVbPxqrlCJPX8SCVcJOl84KOHlbrGmPDp2r30IycyM3mx7cJfIwNCbcNOXi46QqI6QINhooysZy4lSj7LqIDItzG3YaXlnauWSGPEsl8ggqcCOp5QdXSAeov+0tkTD9/83OA6/5Qv5dvp0x3Qq5JY4H/QBrh16SHQcHqxIMPw==</X509Certificate></X509Data></KeyInfo></ds:Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions><cbc:UBLVersionID>2.1</cbc:UBLVersionID><cbc:CustomizationID>2.0</cbc:CustomizationID><cbc:ID>V002-0001358</cbc:ID><cbc:IssueDate>2026-05-29</cbc:IssueDate><cbc:IssueTime>13:11:15</cbc:IssueTime><cbc:DespatchAdviceTypeCode listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" listName="Tipo de Documento" listAgencyName="PE:SUNAT">31</cbc:DespatchAdviceTypeCode><cac:Signature><cbc:ID>V002-0001358</cbc:ID><cac:SignatoryParty><cac:PartyIdentification><cbc:ID>20555929006</cbc:ID></cac:PartyIdentification><cac:PartyName><cbc:Name><![CDATA[DISTRIBUIDORA FERRETERA NASCA S.A.C]]></cbc:Name></cac:PartyName></cac:SignatoryParty><cac:DigitalSignatureAttachment><cac:ExternalReference><cbc:URI>#SignatureSP</cbc:URI></cac:ExternalReference></cac:DigitalSignatureAttachment></cac:Signature><cac:DespatchSupplierParty><cac:Party><cac:Line truncated
@@ -0,0 +1,38 @@
[
{
"ruc_emisor": "20555929006",
"razon_social_emisor": "A. BERIO Y CIA S.A.C.",
"fecha_emision": "29/05/2026",
"tipo": "09",
"serie": "F004",
"numero": "3544",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/005_correo/20555929006-09-F004-3544.pdf"
},
{
"ruc_emisor": "20555929006",
"razon_social_emisor": null,
"fecha_emision": null,
"tipo": "31",
"serie": "V002",
"numero": "1358",
"ruc_receptor": "20100029741",
"razon_social_receptor": null,
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/005_correo/20555929006-31-V002-1358.pdf"
}
]
@@ -0,0 +1,105 @@
[
{
"ruc_emisor": "20555929006",
"razon_social_emisor": "DIFENAS S.A.C.",
"fecha_emision": "2026-05-29",
"tipo": "01",
"serie": "F004",
"numero": "3544",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 644.35,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129721"
},
{
"tipo": "31",
"serie": "V002",
"numero": "1358"
}
],
"tiene_detraccion": true,
"codigo_detraccion": "027",
"porcentaje_detraccion": 4.0,
"monto_detraccion": 26.0,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "POR EL SERVICIO DE TRANSPORTE DE 481 BOLSAS DE CEMENTO SOL G.R.R.\t\t: T001-00129721\nG.R.T.\t\t: V002-0001358\nP. PARTIDA \t: AV. ATOCONGO 1860 VMT LIMA LIMA\nP. LLEGADA \t: AV. PROLONGACION SAENZ PEÑA-LAS PALMAS MZ H LT.7 OTR.UCV 12203 SUBL B SECTOR CODIGO CATASTRAL\nCONF. VEHIC\t: T3S3\nVALOR REFER\t:S/ 644.35\nT",
"cantidad": 481.0,
"precio_unitario": 1.3396,
"total_linea": 546.06,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129721"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V002",
"numero": "1358"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/005_correo/20555929006-01-F004-3544.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20555929006",
"razon_social_emisor": "DISTRIBUIDORA FERRETERA NASCA S.A.C",
"fecha_emision": "2026-05-29",
"tipo": "31",
"serie": "V002",
"numero": "1358",
"ruc_receptor": "20550744024",
"razon_social_receptor": "CONSORCIO UNION FERRETERA S.A.C. - CONSUFER",
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV ATOCONGO 1860 VMT LIMA LIMA",
"punto_llegada": "AV. PROLONGACION SAENZ PENA - LAS PALMAS MZA. H LOTE. 7 OTR. UCV 12203 SUBL B SECTOR CODIGO CATAST",
"peso_bruto": "20.443",
"unidad_peso_bruto": "KGM",
"fecha_traslado": "2026-05-29",
"vehiculo_principal": "AYI792",
"vehiculo_secundario": "D8L996",
"licencia_conductor": "Q09251892",
"nombre_conductor": "CARLOS",
"documento_conductor": "09251892",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO SOL T1",
"cantidad": 481.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/005_correo/20555929006-31-V002-1358.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,267 @@
<?xml version="1.0" encoding="ISO-8859-1"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 ..\xsd\maindoc\UBLPE-Invoice-2.0.xsd" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<ds:Signature Id="SF011-00002786" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>0bVP8AHmCYXyChygo3XQvXBECu0=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>GF4e84jreud/2MfjRC07GPolo3Stke3dGsFachUWZMmdK3DVwD5eYPYaJ58uKPJCzgTn91ZiNPuz
WMCrsW5hllzjD9VXaZVbna34EgzfdsbZml08nKXY2gi0n6cHo7WVfbDSCzx3fkuPfJc2iKnXmh9y
owPQG0kFcCnsIVYNaudMNvSrtDptHIcLpEcCCpEL2+cED4RW8goDByzVVEyYMaTbDQ67fvtq9EcM
4jqf877A7i4oYqKKJ1dyGG7VYIzTft8XGtV2uJjcjd3HQSvyqzSuGVkKIvbcp2q5/gxw5TvuyH6C
tNk3cFIYN7l7gSzUzkbJiw58+Kms8L4neWuaGg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509SubjectName>C=PE,L=LIMA,O=TREFILADOS EL SALVADOR S R L,OU=Validado por Llama.pe ER,OU=FACTURA ELECTRONICA RUC 20100811571,CN=SOFTWARE DE FACTURACION ELECTRONICA,1.2.840.113549.1.9.1=#161b636f6e746162696c6964616440747265666973612e636f6d2e7065,STREET=AV. PABLO PATRON NRO. 211 URB. SAN PABLO</ds:X509SubjectName><ds:X509Certificate>MIIFgzCCBGugAwIBAgIIWD+k8QQbj9IwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEu
cGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcN
MjUxMTE5MTk1NTI2WhcNMjcxMTE5MTk1NTAwWjCCASExMTAvBgNVBAkMKEFWLiBQQUJMTyBQQVRS
T04gTlJPLiAyMTEgVVJCLiBTQU4gUEFCTE8xKjAoBgkqhkiG9w0BCQEWG2NvbnRhYmlsaWRhZEB0
cmVmaXNhLmNvbS5wZTEsMCoGA1UEAwwjU09GVFdBUkUgREUgRkFDVFVSQUNJT04gRUxFQ1RST05J
Q0ExLDAqBgNVBAsMI0ZBQ1RVUkEgRUxFQ1RST05JQ0EgUlVDIDIwMTAwODExNTcxMSEwHwYDVQQL
DBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxJTAjBgNVBAoMHFRSRUZJTEFET1MgRUwgU0FMVkFE
T1IgUyBSIEwxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAyYlT09RvuC+D9hLK0LGN9iOOC72e3Q5UqAPUQDCB+X58MOjuaHsTGyOZ1s9h
1jp9Wi2oigztr6YgChuWE7aVyHeMre2uI5t2rug2kuCwAnYQOrFtMZXkWZm1FOvL55mMGdMzryx2
E7/NDE1AvIfybsfx1JqH0HwnbHdb3usP67mhElFzgBwljwpfO9y3TmkrID5/o/DRXxlyLm2Up5AL
9cTdzDRngGV3eqeDFmrsLz1Ii2TBfDKJSpLKbMAZ0QE3mkfFolAaq/7s0+lLA1jvdw+be+3MF9sr
WQexVMlWZ0GUdduJk0+b8/ye85JEjQz/aVn+vQzx7MHXqPlCELDUCQIDAQABo4IBljCCAZIwDAYD
VR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRb
MFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2Vy
MCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAmBgNVHREEHzAdgRtjb250YWJpbGlk
YWRAdHJlZmlzYS5jb20ucGUwRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUH
AgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5k
YXJkY2EuY3JsMB0GA1UdDgQWBBSJOvNq/vY9qi0s/jya/Pg3HEoWQDAOBgNVHQ8BAf8EBAMCBsAw
DQYJKoZIhvcNAQELBQADggEBAFv2Zeg2ylvyA7dO4hPIJ3e/WSQyqmf1BQUC2YOq4bwIF7z4qU4y
qlecjLsRI5NpDAdZHp6YNLRMOr6FxocKqm665RKjk7XTEY9DDW2sWdOhybreY+ikm6/LH3O3whMI
uONPgQQmHKUaEZ85oWKlPBCjjDSLwGxb5hyHYfgAh2whOFMBprc0y53DkkYMd7N6FFs+Zgirq91I
WxoW1vOkFTqc4RyFQ/KBJqwjsRYZ39g2LFJO4MByYWzjZn3TcJOj8BQAYrC2UzHKSl1BZuDW7r4i
+6r92zt5UrhxRE45isPgZuDkryZtRshSE5+i1KoK76IRg9LiCxh7xme7vfwjqdM=</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ext:ExtensionContent>
</ext:UBLExtension>
<ext:UBLExtension>
<ext:ExtensionContent>
<sac:AdditionalInformation>
<sac:AdditionalProperty>
<cbc:ID>1000</cbc:ID>
<cbc:Value><![CDATA[OCHOCIENTOS SETENTA Y 74/100 SOLES]]></cbc:Value>
</sac:AdditionalProperty>
<sac:AdditionalProperty>
<cbc:ID>2006</cbc:ID>
<cbc:Value><![CDATA[Operación sujeta a detracción]]></cbc:Value>
</sac:AdditionalProperty>
</sac:AdditionalInformation>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>F011-00002786</cbc:ID>
<cbc:IssueDate>2026-05-30</cbc:IssueDate>
<cbc:InvoiceTypeCode listAgencyName="PE:SUNAT" listID="1001" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000"><![CDATA[OCHOCIENTOS SETENTA Y 74/100 SOLES]]></cbc:Note>
<cbc:Note languageLocaleID="2006"><![CDATA[Operación sujeta a detracción]]></cbc:Note>
<cbc:DocumentCurrencyCode listAgencyName="United Nations Economic Commission for Europe" listID="ISO 4217 Alpha" listName="Currency">PEN</cbc:DocumentCurrencyCode>
<cac:DespatchDocumentReference>
<cbc:ID>-00000000</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">09</cbc:DocumentTypeCode>
</cac:DespatchDocumentReference>
<cac:Signature>
<cbc:ID>SF011-00002786</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20100811571</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>SF011-00002786</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100811571</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[TREFILADOS EL SALVADOR SRL]]></cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[TREFILADOS EL SALVADOR SRL]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:ID>150115</cbc:ID>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0000</cbc:AddressTypeCode>
<cbc:StreetName><![CDATA[AV. PABLO PATRON 211-223 URB.SAN PABLO]]></cbc:StreetName>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:District>LA VICTORIA</cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. PABLO PATRON 211-223 URB.SAN PABLO]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode listAgencyName="United Nations Economic Commission for Europe" listID="ISO 3166-1" listName="Country">PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:District>VILLA MARIA DEL TRIUNFO</cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES (PARADERO 14 NUEVA ESPERANZA - PISO 2)]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode listAgencyName="United Nations Economic Commission for Europe" listID="ISO 3166-1" listName="Country">PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentMeans>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansCode>001</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>00063008982</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansID schemeAgencyName="PE:SUNAT" schemeName="Codigo de detraccion" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo54">027</cbc:PaymentMeansID>
<cbc:PaymentPercent>4.0</cbc:PaymentPercent>
<cbc:Amount currencyID="PEN">34.83</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">870.74</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">870.74</cbc:Amount>
<cbc:PaymentDueDate>2026-06-14</cbc:PaymentDueDate>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">132.82</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">737.92</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">132.82</cbc:TaxAmount>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:ID schemeAgencyID="6" schemeID="UN/ECE 5153">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">737.92</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="PEN">737.92</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="PEN">870.74</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="PEN">870.74</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="NIU" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">737.92</cbc:LineExtensionAmount>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">870.7400000000</cbc:PriceAmount>
<cbc:PriceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Precio" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150142</cbc:ID>
<cac:AddressLine>
<cbc:Line><![CDATA[MZ. G LTE 8,9 Z.I. PARQUE INDUSTRIAL]]></cbc:Line>
</cac:AddressLine>
</cac:Address>
</cac:DeliveryLocation>
<cac:Despatch>
<cbc:Instructions><![CDATA[650 BLS CEMENTO SOL TIPO I X S/1.3396]]></cbc:Instructions>
<cac:DespatchAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150143</cbc:ID>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. ATOCONGO N° 1860]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
</cac:Despatch>
<cac:DeliveryTerms>
<cbc:ID>01</cbc:ID>
<cbc:Amount currencyID="PEN">870.74</cbc:Amount>
</cac:DeliveryTerms>
<cac:DeliveryTerms>
<cbc:ID>02</cbc:ID>
<cbc:Amount currencyID="PEN">870.74</cbc:Amount>
</cac:DeliveryTerms>
<cac:DeliveryTerms>
<cbc:ID>03</cbc:ID>
<cbc:Amount currencyID="PEN">870.74</cbc:Amount>
</cac:DeliveryTerms>
<cac:Shipment>
<cbc:ID>01</cbc:ID>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
</cac:TransportEquipment>
<cac:MeasurementDimension>
<cbc:AttributeID>01</cbc:AttributeID>
<cbc:Measure unitCode="TNE">870.74</cbc:Measure>
</cac:MeasurementDimension>
</cac:TransportHandlingUnit>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
<cbc:SizeTypeCode listAgencyName="PE:MTC" listName="Configuracion Vehicular"><![CDATA[T3 S3]]></cbc:SizeTypeCode>
<cbc:ReturnabilityIndicator>false</cbc:ReturnabilityIndicator>
<cac:Delivery>
<cac:DeliveryTerms>
<cbc:Amount currencyID="PEN">102.27</cbc:Amount>
</cac:DeliveryTerms>
</cac:Delivery>
</cac:TransportEquipment>
<cac:MeasurementDimension>
<cbc:AttributeID>02</cbc:AttributeID>
<cbc:Measure unitCode="TNE">27.63</cbc:Measure>
</cac:MeasurementDimension>
</cac:TransportHandlingUnit>
</cac:Shipment>
</cac:Delivery>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">132.82</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">737.92</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">132.82</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:Percent>18.00000</cbc:Percent>
<cbc:TaxExemptionReasonCode>10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID schemeAgencyID="6" schemeID="UN/ECE 5153">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:Item>
<cbc:Description><![CDATA[SERVICIO DE TRANSPORTE]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>SER02</cbc:ID>
</cac:SellersItemIdentification>
<cac:AdditionalItemProperty>
<cbc:Name>CodigoUnidad</cbc:Name>
<cbc:Value>UNIDAD</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">737.9152540000</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="ISO-8859-1"?><DespatchAdvice xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<ds:Signature Id="SignSUNAT" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>J3fFwys+URZdbF0QevDNGBPJe5E=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>jaTUTseluikf9R3QQRSjdKYvNMa67tuh+heIBuozY2mQicAIhbFEnST+EG9CpsqzGuW3vy58JGaO
/MDvBTnF6wBJLftnGRUdC1YL/XVEx2XU5Z6V0xpG78E2fqwR7Wn89/8Nizoiyd4DiFlhPMTXoTBd
VXV9tIxl58CMS0QnzNOP+bHB6dvLhAxhWUYx6iknqWTxrudp1QiVv+npUdxIIRxH8+nSEfXsnJvJ
908fQ9Wuub0hBX/3Bh6S5LIBuZd4Ty1bsSvihR3MJrR+sVC03t2X3zhBmEPXGc1NpeAQkKhwe9/+
o9vvRFUHQiMlFGbA+TrIAxWRCz1ebhSl+P0GaA==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509SubjectName>C=PE,L=LIMA,O=TREFILADOS EL SALVADOR S R L,OU=Validado por Llama.pe ER,OU=FACTURA ELECTRONICA RUC 20100811571,CN=SOFTWARE DE FACTURACION ELECTRONICA,1.2.840.113549.1.9.1=#161b636f6e746162696c6964616440747265666973612e636f6d2e7065,STREET=AV. PABLO PATRON NRO. 211 URB. SAN PABLO</ds:X509SubjectName><ds:X509Certificate>MIIFgzCCBGugAwIBAgIIWD+k8QQbj9IwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEu
cGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcN
MjUxMTE5MTk1NTI2WhcNMjcxMTE5MTk1NTAwWjCCASExMTAvBgNVBAkMKEFWLiBQQUJMTyBQQVRS
T04gTlJPLiAyMTEgVVJCLiBTQU4gUEFCTE8xKjAoBgkqhkiG9w0BCQEWG2NvbnRhYmlsaWRhZEB0
cmVmaXNhLmNvbS5wZTEsMCoGA1UEAwwjU09GVFdBUkUgREUgRkFDVFVSQUNJT04gRUxFQ1RST05J
Q0ExLDAqBgNVBAsMI0ZBQ1RVUkEgRUxFQ1RST05JQ0EgUlVDIDIwMTAwODExNTcxMSEwHwYDVQQL
DBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxJTAjBgNVBAoMHFRSRUZJTEFET1MgRUwgU0FMVkFE
T1IgUyBSIEwxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAyYlT09RvuC+D9hLK0LGN9iOOC72e3Q5UqAPUQDCB+X58MOjuaHsTGyOZ1s9h
1jp9Wi2oigztr6YgChuWE7aVyHeMre2uI5t2rug2kuCwAnYQOrFtMZXkWZm1FOvL55mMGdMzryx2
E7/NDE1AvIfybsfx1JqH0HwnbHdb3usP67mhElFzgBwljwpfO9y3TmkrID5/o/DRXxlyLm2Up5AL
9cTdzDRngGV3eqeDFmrsLz1Ii2TBfDKJSpLKbMAZ0QE3mkfFolAaq/7s0+lLA1jvdw+be+3MF9sr
WQexVMlWZ0GUdduJk0+b8/ye85JEjQz/aVn+vQzx7MHXqPlCELDUCQIDAQABo4IBljCCAZIwDAYD
VR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRb
MFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2Vy
MCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAmBgNVHREEHzAdgRtjb250YWJpbGlk
YWRAdHJlZmlzYS5jb20ucGUwRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUH
AgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5k
YXJkY2EuY3JsMB0GA1UdDgQWBBSJOvNq/vY9qi0s/jya/Pg3HEoWQDAOBgNVHQ8BAf8EBAMCBsAw
DQYJKoZIhvcNAQELBQADggEBAFv2Zeg2ylvyA7dO4hPIJ3e/WSQyqmf1BQUC2YOq4bwIF7z4qU4y
qlecjLsRI5NpDAdZHp6YNLRMOr6FxocKqm665RKjk7XTEY9DDW2sWdOhybreY+ikm6/LH3O3whMI
uONPgQQmHKUaEZ85oWKlPBCjjDSLwGxb5hyHYfgAh2whOFMBprc0y53DkkYMd7N6FFs+Zgirq91I
WxoW1vOkFTqc4RyFQ/KBJqwjsRYZ39g2LFJO4MByYWzjZn3TcJOj8BQAYrC2UzHKSl1BZuDW7r4i
+6r92zt5UrhxRE45isPgZuDkryZtRshSE5+i1KoK76IRg9LiCxh7xme7vfwjqdM=</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>V002-00004575</cbc:ID>
<cbc:IssueDate>2026-05-30</cbc:IssueDate>
<cbc:IssueTime>16:21:18</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">31</cbc:DespatchAdviceTypeCode>
<cbc:Note>CONFIGURACION VEHICULAR T3 S3</cbc:Note>
<cac:AdditionalDocumentReference>
<cbc:ID>T001-00129813</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">09</cbc:DocumentTypeCode>
<cbc:DocumentType>Guia de Remision Remitente</cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID>SV002-00004575</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20100811571</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>SignSUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100811571</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[TREFILADOS EL SALVADOR SRL]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100811571</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[TREFILADOS EL SALVADOR SRL]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:OriginatorCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA. S. A. C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:OriginatorCustomerParty>
<cac:Shipment>
<cbc:ID>SUNAT_Envio</cbc:ID>
<cbc:GrossWeightMeasure unitCode="KGM">27625.00</cbc:GrossWeightMeasure>
<cbc:SpecialInstructions>SUNAT_Envio_IndicadorPagadorFlete_Remitente</cbc:SpecialInstructions>
<cac:ShipmentStage>
<cac:TransitPeriod>
<cbc:StartDate>2026-05-30</cbc:StartDate>
</cac:TransitPeriod>
<cac:CarrierParty>
<cac:PartyLegalEntity>
<cbc:CompanyID>151263CNG</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
<cac:DriverPerson>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="1" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">09722754</cbc:ID>
<cbc:FirstName>EMILIANO</cbc:FirstName>
<cbc:FamilyName>CERVANTES TINOCO</cbc:FamilyName>
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<cbc:ID>Q09722754</cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:Delivery>
<cac:DeliveryAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150142</cbc:ID>
<cac:AddressLine>
<cbc:Line><![CDATA[PQ. IND. MZ. G LTE 8,9 (LIMA-LIMA-VILLA EL SALVADOR)]]></cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<cac:DespatchAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150143</cbc:ID>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. ATOCONGO N° 1860 (LIMA-LIMA-VILLA MARIA DEL TRIUNFO)]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA. S. A. C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
<cbc:ID>B7C885</cbc:ID>
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>15M22019210E</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<cac:ShipmentDocumentReference>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="06" schemeName="Entidad Autorizadora">151263CNG</cbc:ID>
</cac:ShipmentDocumentReference>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>1</cbc:ID>
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">650</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description><![CDATA[$it.Descripcion]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>CEM01</cbc:ID>
</cac:SellersItemIdentification>
<cac:AdditionalItemProperty>
<cbc:Name>Indicador de bien normalizado</cbc:Name>
<cbc:NameCode listAgencyName="PE:SUNAT" listName="Propiedad del item" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo55">7022</cbc:NameCode>
<cbc:Value>0</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
@@ -0,0 +1,29 @@
[
{
"ruc_emisor": "20100811571",
"razon_social_emisor": null,
"fecha_emision": "30/05/2026",
"tipo": "01",
"serie": "T001",
"numero": "129813",
"ruc_receptor": "20100029741",
"razon_social_receptor": null,
"total_factura": "870.74",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": "4.0",
"monto_detraccion": "34.83",
"lineas": [
{
"descripcion": "Medida SERVICIO DE TRANSPORTE NIU S/",
"cantidad": "870.74",
"precio_unitario": "870.74",
"total_linea": "737.92",
"guias_remision": [],
"guia_transportista": null
}
],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/006_correo/20100811571-01-T001-129813.pdf"
}
]
@@ -0,0 +1,90 @@
[
{
"ruc_emisor": "20100811571",
"razon_social_emisor": "TREFILADOS EL SALVADOR SRL",
"fecha_emision": "2026-05-30",
"tipo": "01",
"serie": "F011",
"numero": "2786",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 870.74,
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": "027",
"porcentaje_detraccion": 4.0,
"monto_detraccion": 34.83,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "SERVICIO DE TRANSPORTE",
"cantidad": 1.0,
"precio_unitario": 870.74,
"total_linea": 737.92,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/006_correo/20100811571-01-F011-2786.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20100811571",
"razon_social_emisor": "TREFILADOS EL SALVADOR SRL",
"fecha_emision": "2026-05-30",
"tipo": "31",
"serie": "V002",
"numero": "4575",
"ruc_receptor": "20100811571",
"razon_social_receptor": "TREFILADOS EL SALVADOR SRL",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129813"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO N° 1860 (LIMA-LIMA-VILLA MARIA DEL TRIUNFO)",
"punto_llegada": "PQ. IND. MZ. G LTE 8,9 (LIMA-LIMA-VILLA EL SALVADOR)",
"peso_bruto": "27625.00",
"unidad_peso_bruto": "KGM",
"fecha_traslado": "2026-05-30",
"vehiculo_principal": "B7C885",
"vehiculo_secundario": null,
"licencia_conductor": "Q09722754",
"nombre_conductor": "EMILIANO",
"documento_conductor": "09722754",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "$it.Descripcion",
"cantidad": 650.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/006_correo/20100811571-31-V002-4575.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<DespatchAdvice xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<ds:Signature Id="NubeFacTSign">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>pGFus9mok5BsHOvwP9jXVzznwtgwSX8F9LIyJYnikxk=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>jJovOUNvc7dTBurWODbsH4GaeGH3N7bFZkPjfHCS3BSNiQH4YR6ykNGLAzZY8M2SgP+y/RNHrUI3ZMfo+WQ6dXjXJYiC95lnYY3zf+KKT9XI/nsPztOUCtm8yyCO5W2zuZQkh9WQRJCg0G8TKwd7mf/gZ5xWurVWSzlMo9tyz+gRIyFsnt+nvSJ0Lx8d0VduUrNVsUBG31ruSdAavU0Dm5r86njdnlPLVnXVy42FMjlCAmgNEedtkFBQ0+ipCfTuCis8gUv5XI6GPBrCuwR3c1nO9Bmh+zVuijc4J1R6jLuPvRT96iMykyB1UXatK0isFcHG209moHUlpfn+C0OEoQ==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509SubjectName>street=CAL. LIBERTAD NRO. 176 INT. 211,emailAddress=sistemas@nubefact.com,CN=NUBEFACT WEB,OU=20600695771,OU=Validado por Llama.pe ER,O=NUBEFACT S.A.,L=LIMA,C=PE</ds:X509SubjectName>
<ds:X509Certificate>MIIFLzCCBBegAwIBAgIIeqYdzau699YwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMzA1MTgzODI1WhcNMjkwMzA0MTgzODAwWjCB1DEoMCYGA1UECQwfQ0FMLiBMSUJFUlRBRCBOUk8uIDE3NiBJTlQuIDIxMTEkMCIGCSqGSIb3DQEJARYVc2lzdGVtYXNAbnViZWZhY3QuY29tMRUwEwYDVQQDDAxOVUJFRkFDVCBXRUIxFDASBgNVBAsMCzIwNjAwNjk1NzcxMSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxFjAUBgNVBAoMDU5VQkVGQUNUIFMuQS4xDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3PnivJidKntheakfk5pA2SOXyG66a1FQtSW1BtXMpN2C953XT9iJLbR9kD/2hUsTs08drxdkSeKJwyMvUL41VpGX54PkSBXg1nqwbNN9dwj+zSd1PsFcmLtpEizyU4r6B8PSo07cdAzisAhnt3F1X/LcpcuJcUT3x88RJt18vSbh903Ihvp6BV7BCkJk/MJSRKeJnVMYJPtrgLvTxH03DUs6mIozR673WmYZAdzXPo1Kv0JpfrP/XTcaZECe2VQ+l7OEQS/s2bSjL7K8VgvTW+PtkCGZu9q6UUYsr3F1UL7TVad9zEFgL7rMQvELT7r+YWCP4AwVfTrXvqAoMednKQIDAQABo4IBkDCCAYwwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAgBgNVHREEGTAXgRVzaXN0ZW1hc0BudWJlZmFjdC5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBSZK2idJe/W7w+eTwXNhJ/o8XK6pjAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAIEF6UtQGQ+yLKVVRCdiogInGUGv7IECqg9gMQNZBZ2ZP9SgQOOTFIsDI0psbS3D6u/wJ2vgf78a287ysqJUcGqhW1+plQh4toN3v8bCqwXACTIYW6bUU5bOab0QY//xrLkNZ8Iwa/M/LZstU3dgZjIwXtcMD+ANAIynN4rcNNgeVja8lnbYU3WQ1u9UIjMxtSp1rLf4mwTGSeLI1uuAWgWczkMaFjMF1RJhX9VlKX8qDC+pr/jiu8LTHt8VDeVvDwpZ4qVbI/8qq+VUyXjBffcDdeY5qb75nnlhEMHLey3t/GcEo80nmtjTKmBdroVkooIat7PcSvfQQ+kzrSnV2as=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>VPP1-516</cbc:ID>
<cbc:IssueDate>2026-05-29</cbc:IssueDate>
<cbc:IssueTime>16:28:14</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode>31</cbc:DespatchAdviceTypeCode>
<cbc:Note>Obs: MARCA VEHICULO: VOLVO N CONF.VEHICULAR: T2 S2</cbc:Note>
<cac:AdditionalDocumentReference>
<cbc:ID>T001-129749</cbc:ID>
<cbc:DocumentTypeCode>09</cbc:DocumentTypeCode>
<cbc:DocumentType>Guía de Remisión Remitente</cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID>10091153136</cbc:ID>
<cbc:Note>WWW.NUBEFACT.COM</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>ZAPATA ARAPA EUSEBIO</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>10091153136</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID schemeID="6">10091153136</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>ZAPATA ARAPA EUSEBIO</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>ZAPATA ARAPA EUSEBIO</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>SUNAT_Envio</cbc:ID>
<cbc:GrossWeightMeasure unitCode="TNE">22.1</cbc:GrossWeightMeasure>
<cac:ShipmentStage>
<cac:TransitPeriod>
<cbc:StartDate>2026-05-29</cbc:StartDate>
</cac:TransitPeriod>
<cac:CarrierParty>
<cac:PartyLegalEntity>
<cbc:CompanyID>1516491CNG</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
<cac:TransportMeans>
<cac:RoadTransport>
<cbc:LicensePlateID>ABB758</cbc:LicensePlateID>
</cac:RoadTransport>
</cac:TransportMeans>
<cac:DriverPerson>
<cbc:ID schemeID="1">42327525</cbc:ID>
<cbc:FirstName>LUIS AUGUSTO</cbc:FirstName>
<cbc:FamilyName>YARANGA MARTINEZ</cbc:FamilyName>
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<cbc:ID>Q42327525</cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:Delivery>
<cac:DeliveryAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150142</cbc:ID>
<cac:AddressLine>
<cbc:Line>PQ. INDUSTRIAL-AV. 1 DE MAYO MZ. C LT. 17- ADEICOSUR- PARC. 1 -VILLA EL SALVADOR - LIMA - LIMA</cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<cac:DespatchAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150143</cbc:ID>
<cac:AddressLine>
<cbc:Line>AV. ATOCONGO 1860 VILLA MARIA DE L TRIUNFO</cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>A. BERIO Y CIA S.A.C.</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
<cbc:ID>ABB758</cbc:ID>
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>0151601857</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<cac:AttachedTransportEquipment>
<cbc:ID>A6T980</cbc:ID>
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>0151834688</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
</cac:AttachedTransportEquipment>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cac:DespatchLine>
<cbc:ID>1</cbc:ID>
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">520.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>2</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>CEMENTO SOL 42.50KG</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>CEM01</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
</DespatchAdvice>
@@ -0,0 +1,49 @@
[
{
"ruc_emisor": "10091153136",
"razon_social_emisor": "ZAPATA ARAPA EUSEBIO",
"fecha_emision": "2026-05-29",
"tipo": "31",
"serie": "VPP1",
"numero": "516",
"ruc_receptor": "10091153136",
"razon_social_receptor": "ZAPATA ARAPA EUSEBIO",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129749"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860 VILLA MARIA DE L TRIUNFO",
"punto_llegada": "PQ. INDUSTRIAL-AV. 1 DE MAYO MZ. C LT. 17- ADEICOSUR- PARC. 1 -VILLA EL SALVADOR - LIMA - LIMA",
"peso_bruto": "22.1",
"unidad_peso_bruto": "TNE",
"fecha_traslado": "2026-05-29",
"vehiculo_principal": "ABB758",
"vehiculo_secundario": "A6T980",
"licencia_conductor": "Q42327525",
"nombre_conductor": "LUIS AUGUSTO",
"documento_conductor": "42327525",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO SOL 42.50KG",
"cantidad": 520.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/007_correo/10091153136-31-VPP1-516.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent><Signature Id="SignatureSP" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>6NbSu0QEYb5HGQuf2o/fytmMu+4=</DigestValue></Reference></SignedInfo><SignatureValue>TtpCyWi8axTzZ1OX/x50gQmukTLf9RHEbkAD2f/RoraA4QzJU/LzVHt14Ld1wJaSRpPPrniWaIqz6NOn0PvBWDwJtpNSV01DiO1n9GiJa55jKlZG4DijFie+gbQcrkVepFcbGEb+sC1dqm+Z6Ag7bdXrt0V1PbQ8OTmghh0bKvi3g5rK6Zs+chENStqEzKLJ9lynMpLrFFBEl/2wH4pBCd2cxwphViBH7Vqq6on5k6HvQ0FzqhTjnXKVkdNTfjh3p6hZp4PDuaOmxNYJYtb18cyoWJlJJIboB22ur4ImZ65SLP4iIBdHmTru8HoI3Z0H9Huxel/veW2rnb2OepLywQ==</SignatureValue><KeyInfo><X509Data><X509SubjectName>C=PE, L=LIMA, O=DISTRIBUIDORA SANTA PATRICIA S R L, OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20154645005, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=dis_patricia@yahoo.com, STREET=AV. TOMAS MARSANO NRO. 4330 URB. LA VIRREYNA</X509SubjectName><X509Certificate>MIIFgzCCBGugAwIBAgIIGTcLfd6CAQswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTgzNDIxWhcNMjYxMDE0MTgzNDAwWjCCASYxNTAzBgNVBAkMLEFWLiBUT01BUyBNQVJTQU5PIE5STy4gNDMzMCBVUkIuIExBIFZJUlJFWU5BMSUwIwYJKoZIhvcNAQkBFhZkaXNfcGF0cmljaWFAeWFob28uY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjAxNTQ2NDUwMDUxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjErMCkGA1UECgwiRElTVFJJQlVJRE9SQSBTQU5UQSBQQVRSSUNJQSBTIFIgTDENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmsa8aNxkqzWWk19zfoD/cIhArrgjNFx0TeKtdN+/m+6y8ucQDeqbjtnTHEcLjyeGiWNzowP+VLI9EJFOhsQBHjDMUxF33BYdRQw4Ii5u72voovryE8EAIsuHUkrGwnI4q+ZYq3s/MF/dDNr1Fq5gQYcWju0Qcw5uR18+LDZPxc7IDwWEA9UY0Qe4G49GJWLIcoOEf2wpzQ1+YolBS8PNny9H4a9LjG3+XkCdkVL676PjEykMF/aMEQkSNPkkjiHzl+ftiQXuzAMT/1IxvCwfjwzXHqmHM91jeLk5POw0PkqxfFAvYIBzodXMNygBihmkpAeuXgBpH4qo1unqfdETDAgMBAAGjggGRMIIBjTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCEGA1UdEQQaMBiBFmRpc19wYXRyaWNpYUB5YWhvby5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBS5UPPPJNJvf5jr4HwdRfcu37ZOWTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAGXcN3ocVIpJ/GKOQwlnK3vF49BDGRbXmhrB8wg/VekOUQI6Z4AUMlAcLzi+K2rKJLwbf0bw0psOdLT6Gu2X1DP4bxPaVAqePxjY0t4H2QBmm5MZ8jxJIFgYzf53Bhgu7slJk2bRPsGt8ujAX4EjqyjfhVOnzzLk2QOH/beZK+GsaXduRxvnfBDbknYysdFTDq8J1Hn0lWHjYFhb76doEputR9KYkrTHmqFFyeOyJF2+waJkfDPuVVjWTmYlLLZCzKFKxrjWF/paNE2cJm28QcoVUxBi8o4lq9BHhkBnO54tLZRtnptbMnUkAsmXZg8SmoPpaWzAkCISrGAoTIAXm2M=</X509Certificate></X509Data></KeyInfo></Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>F002-00052385</cbc:ID>
<cbc:IssueDate>2026-05-27</cbc:IssueDate>
<cbc:IssueTime>13:47:01</cbc:IssueTime>
<cbc:InvoiceTypeCode listID="0101" listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000">QUINIENTOS NUEVE Y 05/100</cbc:Note>
<cbc:Note languageLocaleID="2006">OPERACION SUJETA A DETRACCION</cbc:Note>
<cbc:DocumentCurrencyCode listID="ISO 4217 Alpha" listAgencyName="United Nations Economic Commission for Europe" listName="Currency">PEN</cbc:DocumentCurrencyCode>
<cac:Signature>
<cbc:ID>20154645005</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20154645005</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>DISTRIBUIDORA SANTA PATRICIA S R L</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SignatureKG</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20154645005</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>DISTRIBUIDORA SANTA PATRICIA S R L</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>DISTRIBUIDORA SANTA PATRICIA S R L</cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:AddressTypeCode>0000</cbc:AddressTypeCode>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:District>SANTIAGO DE SURCO</cbc:District>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>A. BERIO Y CIA S.A.C.</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentMeans>
<cbc:PaymentMeansCode listAgencyName="PE:SUNAT" listName="Medio de pago" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo59">001</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>00000-451754</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:ID schemeName="Codigo de detraccion" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:g em:catalogos:catalogo54">027</cbc:ID>
<cbc:PaymentPercent>4</cbc:PaymentPercent>
<cbc:Amount currencyID="PEN">20</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">489.05</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">489.05</cbc:Amount>
<cbc:PaymentDueDate>2026-06-06</cbc:PaymentDueDate>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">77.65</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">431.40</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">77.65</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID schemeID="UN/ECE 5305" schemeName="Tax Category Identifier" schemeAgencyName="United Nations Economic Commission for Europe">S</cbc:ID>
<cac:TaxScheme>
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">431.4</cbc:LineExtensionAmount>
<cbc:TaxInclusiveAmount currencyID="PEN">509.05</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="PEN">0</cbc:AllowanceTotalAmount>
<cbc:PayableAmount currencyID="PEN">509.05</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="NIU" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">431.40</cbc:LineExtensionAmount>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">509.050000</cbc:PriceAmount>
<cbc:PriceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Precio" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">77.65</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">431.40</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">77.65</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID schemeID="UN/ECE 5305" schemeName="Tax Category Identifier" schemeAgencyName="United Nations Economic Commission for Europe">S</cbc:ID>
<cbc:Percent>18</cbc:Percent>
<cbc:TaxExemptionReasonCode listAgencyName="PE:SUNAT" listName="Afectacion del IGV" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo07">10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID schemeID="UN/ECE 5153" schemeName="Codigo de tributos" schemeAgencyName="PE:SUNAT">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:Item>
<cbc:Description>SERVICIO DE TRANSPORTE</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>SE000001</cbc:ID>
</cac:SellersItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="UNSPSC" listAgencyName="GS1 US" listName="Item Classification">80141623</cbc:ItemClassificationCode>
</cac:CommodityClassification>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">431.398305</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<DespatchAdvice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent><Signature Id="SignatureSP" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>J59YkgHRtOUOgTDb+AsI0L9wUwo=</DigestValue></Reference></SignedInfo><SignatureValue>E9cCCqtUJWIhTHxgOmfjBVVrTj0vvKDOzSnYz+RQPgbQokF95kUVYv/I10d0y5MsgFQy+ivoNd4ULp5B0kI1CsEXRFlxb5ZPhur2LXpbnMzynmccOfmIbpp7ke5OE+5DNeeC/B6fCpoPp3sjBsD9WYDY2JktLcrIpXiRNeQycH3SIkOxsMSnQCfmqH7pn30kqO8nlJEcb0r0bCu8c/AvexYXW0iEWeKPgpkPyVlHjHGE01hVBhGy09oFspYepeu7T2rQEfGXsyYfJxNHzjdUvLmZJBkV5GZcMfAJ4DCXv1jazNydCDQbH4UnnAmQN3mgz0rO3HJDasKD5OQayPZ4cw==</SignatureValue><KeyInfo><X509Data><X509SubjectName>C=PE, L=LIMA, O=DISTRIBUIDORA SANTA PATRICIA S R L, OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20154645005, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=dis_patricia@yahoo.com, STREET=AV. TOMAS MARSANO NRO. 4330 URB. LA VIRREYNA</X509SubjectName><X509Certificate>MIIFgzCCBGugAwIBAgIIGTcLfd6CAQswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTgzNDIxWhcNMjYxMDE0MTgzNDAwWjCCASYxNTAzBgNVBAkMLEFWLiBUT01BUyBNQVJTQU5PIE5STy4gNDMzMCBVUkIuIExBIFZJUlJFWU5BMSUwIwYJKoZIhvcNAQkBFhZkaXNfcGF0cmljaWFAeWFob28uY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjAxNTQ2NDUwMDUxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjErMCkGA1UECgwiRElTVFJJQlVJRE9SQSBTQU5UQSBQQVRSSUNJQSBTIFIgTDENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmsa8aNxkqzWWk19zfoD/cIhArrgjNFx0TeKtdN+/m+6y8ucQDeqbjtnTHEcLjyeGiWNzowP+VLI9EJFOhsQBHjDMUxF33BYdRQw4Ii5u72voovryE8EAIsuHUkrGwnI4q+ZYq3s/MF/dDNr1Fq5gQYcWju0Qcw5uR18+LDZPxc7IDwWEA9UY0Qe4G49GJWLIcoOEf2wpzQ1+YolBS8PNny9H4a9LjG3+XkCdkVL676PjEykMF/aMEQkSNPkkjiHzl+ftiQXuzAMT/1IxvCwfjwzXHqmHM91jeLk5POw0PkqxfFAvYIBzodXMNygBihmkpAeuXgBpH4qo1unqfdETDAgMBAAGjggGRMIIBjTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCEGA1UdEQQaMBiBFmRpc19wYXRyaWNpYUB5YWhvby5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBS5UPPPJNJvf5jr4HwdRfcu37ZOWTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAGXcN3ocVIpJ/GKOQwlnK3vF49BDGRbXmhrB8wg/VekOUQI6Z4AUMlAcLzi+K2rKJLwbf0bw0psOdLT6Gu2X1DP4bxPaVAqePxjY0t4H2QBmm5MZ8jxJIFgYzf53Bhgu7slJk2bRPsGt8ujAX4EjqyjfhVOnzzLk2QOH/beZK+GsaXduRxvnfBDbknYysdFTDq8J1Hn0lWHjYFhb76doEputR9KYkrTHmqFFyeOyJF2+waJkfDPuVVjWTmYlLLZCzKFKxrjWF/paNE2cJm28QcoVUxBi8o4lq9BHhkBnO54tLZRtnptbMnUkAsmXZg8SmoPpaWzAkCISrGAoTIAXm2M=</X509Certificate></X509Data></KeyInfo></Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>V001-00004156</cbc:ID>
<cbc:IssueDate>2026-05-25</cbc:IssueDate>
<cbc:IssueTime>00:00:00</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">31</cbc:DespatchAdviceTypeCode>
<cbc:Note>SEGÚN: GR T001-0129437, CODIGO DE INSCRIPCION : 151903049</cbc:Note>
<cac:Signature>
<cbc:ID>20154645005</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20154645005</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>DISTRIBUIDORA SANTA PATRICIA S R L</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SignatureKG</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID schemeID="6">20154645005</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20154645005</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>DISTRIBUIDORA SANTA PATRICIA SRL</cbc:RegistrationName>
<cbc:CompanyID>1525019CNG</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cbc:CustomerAssignedAccountID schemeID="6">20154645005</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20154645005</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>DISTRIBUIDORA SANTA PATRICIA S R L</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>SUNAT_Envio</cbc:ID>
<cbc:GrossWeightMeasure unitCode="KGM">16150</cbc:GrossWeightMeasure>
<cbc:SpecialInstructions>SUNAT_Envio_IndicadorPagadorFlete_Remitente</cbc:SpecialInstructions>
<cac:ShipmentStage>
<cac:CarrierParty>
<cac:PartyLegalEntity>
<cbc:CompanyID>1525019CNG</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
</cac:ShipmentStage>
<cac:ShipmentStage>
<cac:DriverPerson>
<cbc:ID schemeID="1" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">42833005</cbc:ID>
<cbc:FirstName>RUBEN</cbc:FirstName>
<cbc:FamilyName>PEREZ HUACHO</cbc:FamilyName>
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<cbc:ID>Q42833005</cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:ShipmentStage>
<cac:TransitPeriod>
<cbc:StartDate>2026-05-25</cbc:StartDate>
</cac:TransitPeriod>
</cac:ShipmentStage>
<cac:Delivery>
<cac:DeliveryAddress>
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI">150140</cbc:ID>
<cbc:StreetName>JR. LOMA DE LOS PENSAMIENTOS MZ. W4 LT. 7 URB. PROL. BENAVIDES</cbc:StreetName>
<cac:AddressLine>
<cbc:Line>JR. LOMA DE LOS PENSAMIENTOS MZ. W4 LT. 7 URB. PROL. BENAVIDES</cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<cac:DespatchAddress>
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI">150143</cbc:ID>
<cbc:StreetName>AV. ATOCONGO 1860</cbc:StreetName>
<cac:AddressLine>
<cbc:Line>AV. ATOCONGO 1860</cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>A. BERIO Y CIA S.A.C.</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
<cbc:ID>A1Y872</cbc:ID>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>1</cbc:ID>
<cbc:DeliveredQuantity unitCode="BG" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">380</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>CEMENTO APU</cbc:Description>
<cbc:Name>CEMENTO APU</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>CE000002</cbc:ID>
</cac:SellersItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="UNSPSC" listAgencyName="GS1 US" listName="Item Classification">30111601</cbc:ItemClassificationCode>
</cac:CommodityClassification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
@@ -0,0 +1,57 @@
[
{
"ruc_emisor": "20154645005",
"razon_social_emisor": "A. BERIO Y CIA S.A.C. MONEDA: SOLES",
"fecha_emision": "27/05/2026",
"tipo": "01",
"serie": "F002",
"numero": "52385",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C. MONEDA: SOLES",
"total_factura": "20.00",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": "27.00",
"lineas": [
{
"descripcion": "SERVICIO DE TRANSPORTE UND SERVICIO DE TRANSPORTE 380 BL CEMENTO S/ 1.3396 P. PARTIDA : AV. ATOCONGO 1860 LIMA-LIMA-VILLA MARIA DEL TRIUNFO P. LLEGADA : JR.LOMA DE LOS PENSAMIENTOS MZ.W4 LT.7 URB. PROLONG. BENAVIDES -LIMA-LIMA SEGÚN GRR : T001-0129437 SEGÚN GRT : V001-00004156 VALOR REFERENCIAL : S/ 509.05 CONFIG. VEHICULAR : C3 CARGA TM. : 16.150 NO REGISTRO M.T.C. : 1525019 CNG NRO. DE PLACA : A1Y-872",
"cantidad": "1.0000",
"precio_unitario": "0.00",
"total_linea": "509.05",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129437"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V001",
"numero": "4156"
}
}
],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/008_correo/20154645005-01-F002-52385.pdf"
},
{
"ruc_emisor": "20154645005",
"razon_social_emisor": null,
"fecha_emision": "05/33/2026",
"tipo": "31",
"serie": "2605",
"numero": "33",
"ruc_receptor": "20100029741",
"razon_social_receptor": null,
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/008_correo/20154645005-31-2605-33.pdf"
}
]
@@ -0,0 +1,94 @@
[
{
"ruc_emisor": "20154645005",
"razon_social_emisor": "DISTRIBUIDORA SANTA PATRICIA S R L",
"fecha_emision": "2026-05-27",
"tipo": "01",
"serie": "F002",
"numero": "52385",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 509.05,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "SERVICIO DE TRANSPORTE",
"cantidad": 1.0,
"precio_unitario": 509.05,
"total_linea": 431.4,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129437"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "V001",
"numero": "4156"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/008_correo/20154645005-01-F002-52385.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20154645005",
"razon_social_emisor": "DISTRIBUIDORA SANTA PATRICIA SRL",
"fecha_emision": "2026-05-25",
"tipo": "31",
"serie": "V001",
"numero": "4156",
"ruc_receptor": "20154645005",
"razon_social_receptor": "DISTRIBUIDORA SANTA PATRICIA S R L",
"total_factura": null,
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860",
"punto_llegada": "JR. LOMA DE LOS PENSAMIENTOS MZ. W4 LT. 7 URB. PROL. BENAVIDES",
"peso_bruto": "16150",
"unidad_peso_bruto": "KGM",
"fecha_traslado": "2026-05-25",
"vehiculo_principal": "A1Y872",
"vehiculo_secundario": null,
"licencia_conductor": "Q42833005",
"nombre_conductor": "RUBEN",
"documento_conductor": "42833005",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO APU",
"cantidad": 380.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/008_correo/20154645005-31-V001-4156.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<ds:Signature Id="NubeFacTSign">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>G7SzTRDnTkSZdOyu+9zgFKHwWnx55GfjPVWrIV1uLx4=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>AjOMqnf60Ht+zfmOSy8RcWl2nzXAFSwAiLXKQ6UwumxeXiIuD0oBhRNTPv5AGXHUELJsFAozlPNQOm/NNMvALdTa0JG3OCJuhCD8Bj4CanCfgF4ucl5QbwjZaZDSqeKCseE9iHcOdi/oOSdeI2r6d3OaO1wu4tRNM+DeagQep3RscEHNsLIY5TtXcfHXYXTDmEYywfR6sBWlHGLc+OnzbCrgB3/oa6ZbWUmdMDaRcfa82efT1GFpRJ+x6naq/7WxfheGnyLx/jv1NUx5gleaBKboT2eFTb/bsedGWFhnRFO0IySk0VbsdZlSB0BkCbuADDA7gJ7KpRSSxOk/36YSnA==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509SubjectName>street=CAL. LIBERTAD NRO. 176 INT. 211,emailAddress=sistemas@nubefact.com,CN=NUBEFACT WEB,OU=20600695771,OU=Validado por Llama.pe ER,O=NUBEFACT S.A.,L=LIMA,C=PE</ds:X509SubjectName>
<ds:X509Certificate>MIIFLzCCBBegAwIBAgIIeqYdzau699YwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMzA1MTgzODI1WhcNMjkwMzA0MTgzODAwWjCB1DEoMCYGA1UECQwfQ0FMLiBMSUJFUlRBRCBOUk8uIDE3NiBJTlQuIDIxMTEkMCIGCSqGSIb3DQEJARYVc2lzdGVtYXNAbnViZWZhY3QuY29tMRUwEwYDVQQDDAxOVUJFRkFDVCBXRUIxFDASBgNVBAsMCzIwNjAwNjk1NzcxMSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxFjAUBgNVBAoMDU5VQkVGQUNUIFMuQS4xDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3PnivJidKntheakfk5pA2SOXyG66a1FQtSW1BtXMpN2C953XT9iJLbR9kD/2hUsTs08drxdkSeKJwyMvUL41VpGX54PkSBXg1nqwbNN9dwj+zSd1PsFcmLtpEizyU4r6B8PSo07cdAzisAhnt3F1X/LcpcuJcUT3x88RJt18vSbh903Ihvp6BV7BCkJk/MJSRKeJnVMYJPtrgLvTxH03DUs6mIozR673WmYZAdzXPo1Kv0JpfrP/XTcaZECe2VQ+l7OEQS/s2bSjL7K8VgvTW+PtkCGZu9q6UUYsr3F1UL7TVad9zEFgL7rMQvELT7r+YWCP4AwVfTrXvqAoMednKQIDAQABo4IBkDCCAYwwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAgBgNVHREEGTAXgRVzaXN0ZW1hc0BudWJlZmFjdC5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBSZK2idJe/W7w+eTwXNhJ/o8XK6pjAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAIEF6UtQGQ+yLKVVRCdiogInGUGv7IECqg9gMQNZBZ2ZP9SgQOOTFIsDI0psbS3D6u/wJ2vgf78a287ysqJUcGqhW1+plQh4toN3v8bCqwXACTIYW6bUU5bOab0QY//xrLkNZ8Iwa/M/LZstU3dgZjIwXtcMD+ANAIynN4rcNNgeVja8lnbYU3WQ1u9UIjMxtSp1rLf4mwTGSeLI1uuAWgWczkMaFjMF1RJhX9VlKX8qDC+pr/jiu8LTHt8VDeVvDwpZ4qVbI/8qq+VUyXjBffcDdeY5qb75nnlhEMHLey3t/GcEo80nmtjTKmBdroVkooIat7PcSvfQQ+kzrSnV2as=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>FPP1-15407</cbc:ID>
<cbc:IssueDate>2026-05-29</cbc:IssueDate>
<cbc:IssueTime>16:32:15</cbc:IssueTime>
<cbc:InvoiceTypeCode listID="1001" listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" name="Tipo de Operacion" listSchemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo51">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000">SEISCIENTOS NOVENTA Y SEIS CON 59/100 SOLES</cbc:Note>
<cbc:Note languageLocaleID="2006">Operacion sujeta a detraccion</cbc:Note>
<cbc:DocumentCurrencyCode listID="ISO 4217 Alpha" listAgencyName="United Nations Economic Commission for Europe" listName="Currency">PEN</cbc:DocumentCurrencyCode>
<cac:Signature>
<cbc:ID>10091153136</cbc:ID>
<cbc:Note>WWW.NUBEFACT.COM</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>ZAPATA ARAPA EUSEBIO</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>10091153136</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>FERRETERÍA DEPOSITO 1° DE MAYO</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>ZAPATA ARAPA EUSEBIO</cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI">150142</cbc:ID>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0000</cbc:AddressTypeCode>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:District>VILLA SALVADOR</cbc:District>
<cac:AddressLine>
<cbc:Line>Av. 1 DE MAYO MZ C LT 17 ADEICOSUR, PARQUE INDUSTRIAL</cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode listID="ISO 3166-1" listAgencyName="United Nations Economic Commission for Europe" listName="Country">PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>A. BERIO Y CIA S.A.C.</cbc:RegistrationName>
<cac:RegistrationAddress>
<cac:AddressLine>
<cbc:Line>AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES - LIMA LIMA VILLA MARIA DEL TRIUNFO</cbc:Line>
</cac:AddressLine>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentMeans>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansCode listName="Medio de pago" listAgencyName="PE:SUNAT" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo59">001</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>0000000000</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansID schemeName="Codigo de detraccion" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo54">027</cbc:PaymentMeansID>
<cbc:PaymentPercent>4.00</cbc:PaymentPercent>
<cbc:Amount currencyID="PEN">28.00</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">668.59</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">668.59</cbc:Amount>
<cbc:PaymentDueDate>2026-06-29</cbc:PaymentDueDate>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">106.26</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">590.33</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">106.26</cbc:TaxAmount>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:ID schemeName="Codigo de tributos" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">590.33</cbc:LineExtensionAmount>
<cbc:TaxInclusiveAmount currencyID="PEN">696.59</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="PEN">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="PEN">0.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="PEN">0.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="PEN">696.59</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="ZZ" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">520.0</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">590.33</cbc:LineExtensionAmount>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">1.3396</cbc:PriceAmount>
<cbc:PriceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Precio" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">106.26</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">590.33</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">106.26</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:Percent>18.00</cbc:Percent>
<cbc:TaxExemptionReasonCode listAgencyName="PE:SUNAT" listName="Afectacion del IGV" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo07">10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID schemeName="Codigo de tributos" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:Item>
<cbc:Description>SERVICIO DE TRANSPORTE 520 CEMENTO PTO DE PDA. AV. ATOCONGO 1860 VMT- LIMA PRO DE LLDA. AV. PRIMERO DE MAYO MZA. C LT17 OTRO. PARCELA 1 – ADEICOSUR- VILLA EL SALVADOR – LIMA – LIMA. ADEICOSUR - VES SEGÚN GRR. T001- 129749 SEGÚN GRT. VPP1 – 516 R.E.G.M.T.C. Nº 1516491 C.N.G. C.V. T2S2 CARGA. 22.10 V.R. 696.592 CONCEPTO: 027 – TRANSPORTE DE BIENES PORCENTAJE: 4% MONTO DETRACC.: S/ 28.00 NETO A COBRAR: S/ 668.592 OPERACIÓN SUJETA AL SPOT CON EL GOBIERNO CENTRAL CTA BCO NACIÓN 00-063-049697</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>001</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">1.1352542373</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
</Invoice>
@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<DespatchAdvice xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<ds:Signature Id="NubeFacTSign">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>pGFus9mok5BsHOvwP9jXVzznwtgwSX8F9LIyJYnikxk=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>jJovOUNvc7dTBurWODbsH4GaeGH3N7bFZkPjfHCS3BSNiQH4YR6ykNGLAzZY8M2SgP+y/RNHrUI3ZMfo+WQ6dXjXJYiC95lnYY3zf+KKT9XI/nsPztOUCtm8yyCO5W2zuZQkh9WQRJCg0G8TKwd7mf/gZ5xWurVWSzlMo9tyz+gRIyFsnt+nvSJ0Lx8d0VduUrNVsUBG31ruSdAavU0Dm5r86njdnlPLVnXVy42FMjlCAmgNEedtkFBQ0+ipCfTuCis8gUv5XI6GPBrCuwR3c1nO9Bmh+zVuijc4J1R6jLuPvRT96iMykyB1UXatK0isFcHG209moHUlpfn+C0OEoQ==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509SubjectName>street=CAL. LIBERTAD NRO. 176 INT. 211,emailAddress=sistemas@nubefact.com,CN=NUBEFACT WEB,OU=20600695771,OU=Validado por Llama.pe ER,O=NUBEFACT S.A.,L=LIMA,C=PE</ds:X509SubjectName>
<ds:X509Certificate>MIIFLzCCBBegAwIBAgIIeqYdzau699YwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMzA1MTgzODI1WhcNMjkwMzA0MTgzODAwWjCB1DEoMCYGA1UECQwfQ0FMLiBMSUJFUlRBRCBOUk8uIDE3NiBJTlQuIDIxMTEkMCIGCSqGSIb3DQEJARYVc2lzdGVtYXNAbnViZWZhY3QuY29tMRUwEwYDVQQDDAxOVUJFRkFDVCBXRUIxFDASBgNVBAsMCzIwNjAwNjk1NzcxMSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxFjAUBgNVBAoMDU5VQkVGQUNUIFMuQS4xDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3PnivJidKntheakfk5pA2SOXyG66a1FQtSW1BtXMpN2C953XT9iJLbR9kD/2hUsTs08drxdkSeKJwyMvUL41VpGX54PkSBXg1nqwbNN9dwj+zSd1PsFcmLtpEizyU4r6B8PSo07cdAzisAhnt3F1X/LcpcuJcUT3x88RJt18vSbh903Ihvp6BV7BCkJk/MJSRKeJnVMYJPtrgLvTxH03DUs6mIozR673WmYZAdzXPo1Kv0JpfrP/XTcaZECe2VQ+l7OEQS/s2bSjL7K8VgvTW+PtkCGZu9q6UUYsr3F1UL7TVad9zEFgL7rMQvELT7r+YWCP4AwVfTrXvqAoMednKQIDAQABo4IBkDCCAYwwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAgBgNVHREEGTAXgRVzaXN0ZW1hc0BudWJlZmFjdC5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBSZK2idJe/W7w+eTwXNhJ/o8XK6pjAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAIEF6UtQGQ+yLKVVRCdiogInGUGv7IECqg9gMQNZBZ2ZP9SgQOOTFIsDI0psbS3D6u/wJ2vgf78a287ysqJUcGqhW1+plQh4toN3v8bCqwXACTIYW6bUU5bOab0QY//xrLkNZ8Iwa/M/LZstU3dgZjIwXtcMD+ANAIynN4rcNNgeVja8lnbYU3WQ1u9UIjMxtSp1rLf4mwTGSeLI1uuAWgWczkMaFjMF1RJhX9VlKX8qDC+pr/jiu8LTHt8VDeVvDwpZ4qVbI/8qq+VUyXjBffcDdeY5qb75nnlhEMHLey3t/GcEo80nmtjTKmBdroVkooIat7PcSvfQQ+kzrSnV2as=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>VPP1-516</cbc:ID>
<cbc:IssueDate>2026-05-29</cbc:IssueDate>
<cbc:IssueTime>16:28:14</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode>31</cbc:DespatchAdviceTypeCode>
<cbc:Note>Obs: MARCA VEHICULO: VOLVO N CONF.VEHICULAR: T2 S2</cbc:Note>
<cac:AdditionalDocumentReference>
<cbc:ID>T001-129749</cbc:ID>
<cbc:DocumentTypeCode>09</cbc:DocumentTypeCode>
<cbc:DocumentType>Guía de Remisión Remitente</cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID>10091153136</cbc:ID>
<cbc:Note>WWW.NUBEFACT.COM</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>ZAPATA ARAPA EUSEBIO</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>10091153136</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID schemeID="6">10091153136</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>ZAPATA ARAPA EUSEBIO</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">10091153136</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>ZAPATA ARAPA EUSEBIO</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>SUNAT_Envio</cbc:ID>
<cbc:GrossWeightMeasure unitCode="TNE">22.1</cbc:GrossWeightMeasure>
<cac:ShipmentStage>
<cac:TransitPeriod>
<cbc:StartDate>2026-05-29</cbc:StartDate>
</cac:TransitPeriod>
<cac:CarrierParty>
<cac:PartyLegalEntity>
<cbc:CompanyID>1516491CNG</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
<cac:TransportMeans>
<cac:RoadTransport>
<cbc:LicensePlateID>ABB758</cbc:LicensePlateID>
</cac:RoadTransport>
</cac:TransportMeans>
<cac:DriverPerson>
<cbc:ID schemeID="1">42327525</cbc:ID>
<cbc:FirstName>LUIS AUGUSTO</cbc:FirstName>
<cbc:FamilyName>YARANGA MARTINEZ</cbc:FamilyName>
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<cbc:ID>Q42327525</cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:Delivery>
<cac:DeliveryAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150142</cbc:ID>
<cac:AddressLine>
<cbc:Line>PQ. INDUSTRIAL-AV. 1 DE MAYO MZ. C LT. 17- ADEICOSUR- PARC. 1 -VILLA EL SALVADOR - LIMA - LIMA</cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<cac:DespatchAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">150143</cbc:ID>
<cac:AddressLine>
<cbc:Line>AV. ATOCONGO 1860 VILLA MARIA DE L TRIUNFO</cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>A. BERIO Y CIA S.A.C.</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
<cbc:ID>ABB758</cbc:ID>
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>0151601857</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<cac:AttachedTransportEquipment>
<cbc:ID>A6T980</cbc:ID>
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>0151834688</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
</cac:AttachedTransportEquipment>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cac:DespatchLine>
<cbc:ID>1</cbc:ID>
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">520.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>2</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>CEMENTO SOL 42.50KG</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>CEM01</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
</DespatchAdvice>
@@ -0,0 +1,20 @@
[
{
"ruc_emisor": "10091153136",
"razon_social_emisor": null,
"fecha_emision": "29/05/2026",
"tipo": "01",
"serie": "FPP1",
"numero": "15407",
"ruc_receptor": "20100029741",
"razon_social_receptor": null,
"total_factura": "696.59",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": "4",
"monto_detraccion": "28.00",
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.pdf"
}
]
@@ -0,0 +1,111 @@
[
{
"ruc_emisor": "10091153136",
"razon_social_emisor": "FERRETERÍA DEPOSITO 1° DE MAYO",
"fecha_emision": "2026-05-29",
"tipo": "01",
"serie": "FPP1",
"numero": "15407",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 696.59,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129749"
},
{
"tipo": "31",
"serie": "VPP1",
"numero": "516"
}
],
"tiene_detraccion": true,
"codigo_detraccion": "027",
"porcentaje_detraccion": 4.0,
"monto_detraccion": 28.0,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "SERVICIO DE TRANSPORTE 520 CEMENTO PTO DE PDA. AV. ATOCONGO 1860 VMT- LIMA PRO DE LLDA. AV. PRIMERO DE MAYO MZA. C LT17 OTRO. PARCELA 1 – ADEICOSUR- VILLA EL SALVADOR – LIMA – LIMA. ADEICOSUR - VES SEGÚN GRR. T001- 129749 SEGÚN GRT. VPP1 – 516 R.E.G.M.T.C. Nº 1516491 C.N.G. C.V. T2S2 CARGA. 22.10 V.R. 696.592 CONCEPTO: 027 – TRANSPORTE DE BIENES PORCENTAJE: 4% MONTO DETRACC.: S/ 28.00 NETO A COBRAR: S/ 668.592 OPERACIÓN SUJETA AL SPOT CON EL GOBIERNO CENTRAL CTA BCO NACIÓN 00-063-049697",
"cantidad": 520.0,
"precio_unitario": 1.3396,
"total_linea": 590.33,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129749"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "VPP1",
"numero": "516"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "10091153136",
"razon_social_emisor": "ZAPATA ARAPA EUSEBIO",
"fecha_emision": "2026-05-29",
"tipo": "31",
"serie": "VPP1",
"numero": "516",
"ruc_receptor": "10091153136",
"razon_social_receptor": "ZAPATA ARAPA EUSEBIO",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129749"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860 VILLA MARIA DE L TRIUNFO",
"punto_llegada": "PQ. INDUSTRIAL-AV. 1 DE MAYO MZ. C LT. 17- ADEICOSUR- PARC. 1 -VILLA EL SALVADOR - LIMA - LIMA",
"peso_bruto": "22.1",
"unidad_peso_bruto": "TNE",
"fecha_traslado": "2026-05-29",
"vehiculo_principal": "ABB758",
"vehiculo_secundario": "A6T980",
"licencia_conductor": "Q42327525",
"nombre_conductor": "LUIS AUGUSTO",
"documento_conductor": "42327525",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO SOL 42.50KG",
"cantidad": 520.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/009_correo/10091153136-31-VPP1-516.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DespatchAdvice xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"><ext:UBLExtensions xmlns=""><ext:UBLExtension><ext:ExtensionContent><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>LRNvMuKGRIobuArlf74KDR/Lcpg=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>eIySJdU3J3ZZxhOLcqLx9BqFBYodYvOTo5bZnLr5Mnh9n9xWPCaax24IWjVVcxCXXyXOe1m/8QJ4Zg9V8YvCnNYLFw1NcDOueLijfa3JxTZ0bU91pziPRcM81l3AK1/fy0A96W5FswvwDOtmJ8FZb3ezEIM9UuYnlh7UkwcfmjEqINE28zQZqWALzRljpCkGDeYPNXU2Z89xdwRqVUyA0bbMB0HvtNYDqRjcOLpp4vv3lyAhcnE5LQQ5au/7Wm6JXPiMgwROumE9RhMpD1OcKr3sRm0ZYn7OQRIHIqHtES0g6E2cxrPIJ71bSW4eCa8s16HjmvIxzILJYHxWmSqw2Q==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFrjCCBJagAwIBAgIIf9Td7Evg0UswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwODA5MTYxNTM5WhcNMjcwODA5MTYxNTAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1apapJOwMj9tBpgKAgjRwIloUk+xwvQZxc0s/4yl4mDSrc/F/PKZ3QBmKb43fFwivqPUvsr68fQTfyLKM14B+xXwlbQ/yh3+87sMyulLhOPmtSOU0PE8Rw0PsmGVxf1L0HPAPc3Gvuhq4Z9Dx5ByED6s+VppDmncvctlJ/NrzYZCk9H91OinTTPVZrDtbmqnOYra8PaTRoCI9Fmndeo9Oo7esM7KVX9f53NEd/mNQqzAOrgSXthFuBZN7zOsGxJ4ZGrVzHSlCH/jFLgObEizHrqisgL1cxKj8QvbGLUjNtUuTvR5IY6hwRLCxbliTa84BN10E0jC7hhAnnuEIAFJiwIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUuRkPCyM25gAu5se9GraC/UO07X8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQBC8+YM7moZ7bKYCS+VzJ8wzydSboWeNuAs2CfkhI8hRMQr1r5WZg8pDlroCslF/r6SjbkrjuDHcGKJTM2riGEjlOD4CLU9VjOP7Td6CIZyJRLaz63pZYOwE0H0weG/PvYpopDZzJ6AXYzZxwYkJ03/x/vwaCss9ZvmsEn2E1xtGbnMe9MEsg8oF0ul3uRn8Qy5gF37fM7YKuF/r4iBS5uSvBcA5J2FbI/PQls7OgICDyb3W16GeluaT9krY5wQxilJSpGVU++nv5NzmRHkquH3ic2It/KP6MZ9X2tfg6FhpF6JaUz7MSY+J0KnDDcfJlhxgnkgoT5tV3Sr6z5PpQH6</X509Certificate><X509IssuerSerial><X509IssuerName>C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA</X509IssuerName><X509SerialNumber>9211231144834552139</X509SerialNumber></X509IssuerSerial></X509Data></KeyInfo><Proposito>Cumple proposito</Proposito><Revocacion>Cumple revocacion</Revocacion><TSL>Cumple tsl</TSL><Expiracion>No ha expirado</Expiracion></Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions>
<!--ext:UBLExtensions>
</ext:UBLExtensions-->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID><![CDATA[EG03-216]]></cbc:ID>
<!-- FECHA Y HORA DE EMISION -->
<cbc:IssueDate>2026-05-29</cbc:IssueDate>
<cbc:IssueTime>01:31:47</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">31</cbc:DespatchAdviceTypeCode>
<!-- DOCUMENTOS ADICIONALES (Catalogo D41)-->
<cac:AdditionalDocumentReference>
<cbc:ID><![CDATA[T001-129711]]></cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">09</cbc:DocumentTypeCode>
<cbc:DocumentType><![CDATA[Guía de Remisión Remitente]]></cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID><![CDATA[SUNAT]]></cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID><![CDATA[20131312955]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<!-- DATOS DEL EMISOR (TRANSPORTISTA) -->
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[10154500010]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[REMUZGO PISCONTI LIZ GIANNINA]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- DATOS DEL RECEPTOR (DESTINATARIO) -->
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[10154500010]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[REMUZGO PISCONTI LIZ GIANNINA]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- DATOS DE QUIEN PAGA EL SERVICIO -->
<cac:OriginatorCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:OriginatorCustomerParty>
<!-- DATOS DEL TRASLADO -->
<cac:Shipment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
<!-- PESO BRUTO TOTAL DE LA CARGA -->
<cbc:GrossWeightMeasure unitCode="TNE">31.45</cbc:GrossWeightMeasure>
<!-- INDICADORES -->
<!-- Indicador de pagador del flete -->
<cbc:SpecialInstructions>SUNAT_Envio_IndicadorPagadorFlete_Remitente</cbc:SpecialInstructions>
<cac:Consignment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
</cac:Consignment>
<cac:ShipmentStage>
<!-- FECHA DE INICIO DEL TRASLADO -->
<cac:TransitPeriod>
<cbc:StartDate>2026-05-29</cbc:StartDate>
</cac:TransitPeriod>
<!-- DATOS DEL TRANSPORTISTA -->
<cac:CarrierParty>
<!-- AUTORIZACIONES ESPECIALES -->
<cac:PartyLegalEntity>
<!-- NUMERO DE REGISTRO DEL MTC -->
<cbc:CompanyID><![CDATA[1562011CNG]]></cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
<!-- CONDUCTOR PRINCIPAL -->
<cac:DriverPerson>
<!-- TIPO Y NUMERO DE DOCUMENTO DE IDENTIDAD -->
<cbc:ID schemeID="1" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[40190692]]></cbc:ID>
<!-- NOMBRES -->
<cbc:FirstName>QUINTANA QUISPE GERARDO</cbc:FirstName>
<!-- APELLIDOS -->
<cbc:FamilyName>QUINTANA QUISPE GERARDO</cbc:FamilyName>
<!-- TIPO DE CONDUCTOR: PRINCIPAL -->
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<!-- LICENCIA DE CONDUCIR -->
<cbc:ID><![CDATA[Q40190692]]></cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:Delivery>
<!-- DIRECCION DEL PUNTO DE LLEGADA -->
<cac:DeliveryAddress>
<!-- UBIGEO DE LLEGADA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150501]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE LLEGADA -->
<cac:AddressLine>
<cbc:Line><![CDATA[CA. PANAMERICANA SUR MZ. A6 LT. 4 AS. EL TREBOL]]></cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<!-- DIRECCION DEL PUNTO DE PARTIDA -->
<cac:DespatchAddress>
<!-- UBIGEO DE PARTIDA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150143]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE PARTIDA -->
<cac:AddressLine>
<cbc:Line><![CDATA[AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<!-- DATOS DEL REMITENTE -->
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<!-- NUMERO DE CONTENEDOR -->
<cbc:ID><![CDATA[-]]></cbc:ID>
<cac:TransportEquipment>
<!-- VEHICULO PRINCIPAL -->
<!-- PLACA - VEHICULO PRINCIPAL -->
<cbc:ID><![CDATA[CFW860]]></cbc:ID>
<!-- Tarjeta Unica Circulacion / Cerificado Habilitacion Vehicular - Principal -->
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>15M25060472E</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- AUTORIZACIONES ESPECIALES - VEHICULO PRINCIPAL -->
<cac:ShipmentDocumentReference>
<cbc:ID schemeID="06" schemeName="Entidad Autorizadora" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogoD37"><![CDATA[1562011cng]]></cbc:ID>
</cac:ShipmentDocumentReference>
<!-- VEHICULO SECUNDARIO -->
<cac:AttachedTransportEquipment>
<!-- PLACA - VEHICULO SECUNDARIO -->
<cbc:ID><![CDATA[BUI979]]></cbc:ID>
<!-- TARJETA UNICA CIRCULACION / CERTIFICADO HABILITACION VEHICULAR - SECUNDARIO -->
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>15M25060473E</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- AUTORIZACIONES ESPECIALES - VEHICULO SECUNDARIO -->
<cac:ShipmentDocumentReference>
<cbc:ID schemeID="06" schemeName="Entidad Autorizadora" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogoD37"><![CDATA[1562011cng]]></cbc:ID>
</cac:ShipmentDocumentReference>
</cac:AttachedTransportEquipment>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- DETALLES DE BIENES A TRASLADAR -->
</DespatchAdvice>
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<ar:ApplicationResponse xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:ar="urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2">
<ext:UBLExtensions>
<ext:UBLExtension><ext:ExtensionContent><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><DigestValue>++vnz3BA+AEgNvaNnn09EAeVPnx8MvxiZFfdr66SKzM=</DigestValue></Reference></SignedInfo><SignatureValue>XshakaqeaE2tLh9WLCy3Yh/hFbp22djvtmq3AxjRL4zIA0VJzL/dePHQopZ89Gd2uRpMfRI33m9zZkNTbyRPvz3JorVZspo7lpKUxqolX5o+EeB4N5XI/5Et5kq/m2ptEpyZvtdB4EwU4AswzYdUAaAEuh9PzDtkRUM8YnzWG4L0CzlGEGwtl6hsSB9WWOWoOAMQ3IMdlyAB1lGmieUmTiDSjhQraGRI2kkQHfDzi2zqX3TglWAoz7avrUlrifOfb3PORh4wmae6HE5ecpG31eFBHazEQOGJaokfrj33E1TQvIG8qAs/qy1g4cnih+IlJjhBcPsmCr4h3Jocr6Wx6Q==</SignatureValue><KeyInfo><X509Data><X509SubjectName>C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA</X509SubjectName><X509Certificate>MIIFrjCCBJagAwIBAgIIc2eNOs0y3WswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwMTI1MTkyMzQxWhcNMjYwMTI0MTkyMzAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxiw3ab0PlTQpV4Xw5sFK/+m8y5ZEFqOWDW/Jo2kEd11ICZTomYgo3VCT86RPw0OSRoNwHx6fzRnw9ea/jOCCdNyr0W/aRYGuU0t21QKK+w3hzuV2GBCYIJ3WVSByVxwgMe0oQr8wNnZg7FD25W/3HveIQOIJDGPH6a3gQ7E9uMu26zp3uvG3+sI3uTi+4rYNi618Wrg1YbtqfhprsC/32FXlWsJoB4YX4ei9izJrKpso4fsgsl4q7jcDbE1mmssEYImhZIc523b8BpgSkrHYOfADREXKBpH3imZKLmADzbnY6F2evUIjZrE4YVNO1MSklxCtzcsy91cwcZAaK/UPDQIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUyqaBmn52E+bZ5nB5i34oE0fcqG4wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQCwmv7rS+NNsb7O1VmIcKt7ZThv713+NQlt3hS/6cSHkvfXWpFu/qLHCm0S2GTwOBYjHSSNmoGXKKmXBehWcLn2Zx7eE4Te0naghaZ10VkCd4FN/A4yZji3QIJj0s7xMzgrHnGBOXJmWvC9RSEpvvqR6vdgSJBI8+R/Qt/j1KR4gA/bSiIqdSKp4sHmloVUBMOlpgM8kzm74VmcxV9MT2hsv+JwnWXx2OnLetjjZfXnXBC7UJu35EsLSgETF9wEht7fWTAtl/rEEatQt1A1BdvaiBVsIyKl8qakxT6eIMLgwHYfuZYfgpHys3Gy96pspM3aCjHKO2b/ZntyT4V813zj</X509Certificate></X509Data></KeyInfo></Signature></ext:ExtensionContent></ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>1.0</cbc:CustomizationID>
<cbc:ID>427906d5-dcc7-4922-bf74-32f599a3e547</cbc:ID>
<cbc:IssueDate>2026-05-29</cbc:IssueDate>
<cbc:IssueTime>08:25:10.93801</cbc:IssueTime>
<cbc:ResponseDate>2026-05-29</cbc:ResponseDate>
<cbc:ResponseTime>08:25:10.97135</cbc:ResponseTime>
<cac:Signature>
<cbc:ID>SignSUNAT</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>SUNAT</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SignSUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:SenderParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
</cac:SenderParty>
<cac:ReceiverParty>
<cac:PartyIdentification>
<cbc:ID>10154500010</cbc:ID>
</cac:PartyIdentification>
</cac:ReceiverParty>
<cac:DocumentResponse>
<cac:Response>
<cbc:ReferenceID>FF01-3308</cbc:ReferenceID>
<cbc:ResponseCode>0</cbc:ResponseCode>
<cbc:Description>La Factura numero FF01-3308, ha sido aceptado</cbc:Description>
</cac:Response>
<cac:DocumentReference>
<cbc:ID>FF01-3308</cbc:ID>
</cac:DocumentReference>
<cac:RecipientParty>
<cac:PartyIdentification>
<cbc:ID>6-20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:RecipientParty>
</cac:DocumentResponse>
</ar:ApplicationResponse>
@@ -0,0 +1,63 @@
[
{
"ruc_emisor": "10154500010",
"razon_social_emisor": "A. BERIO Y CIA S.A.C.",
"fecha_emision": "29/05/2026",
"tipo": "01",
"serie": "FF01",
"numero": "3308",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": "1585.08",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": "4.00",
"monto_detraccion": "27.00",
"lineas": [
{
"descripcion": "UNIDADES 20251025120428 SERVICIO DE TRANSPORTE SERVICIO DE TRANSPORTE 740 BL CEMENTO P. PARTIDA: AV. ATOCONGO 1860 VILLA MARIA DEL TRIUNFO - LIMA - LIMA P. LLEGADA: CA. PANAMERICANA SUR MZ. A6 LT. 4 AS. EL TREBOL - SAN VICENTE DE CAÑETE - CAÑETE - LIMA SEGUN GRR: T001-0129711 SEGUN GRT: EG03-00000216 VALOR REFERENCIAL: 2,510.02 CONFIG. VEHICULAR: T3S3 CARGA TM.: 31.45 N° REGISTRO M.T.C: 1562011CNG PLACA VEHICULO: CFW-860/BUI-979 SON MIL QUINIENTOS OCHENTA Y CINCO Y 08/100 SOLES",
"cantidad": "740.00",
"precio_unitario": "2.14",
"total_linea": "1585.08",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129711"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "EG03",
"numero": "216"
}
}
],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/010_correo/10154500010-01-FF01-3308.pdf"
},
{
"ruc_emisor": "10154500010",
"razon_social_emisor": "REMUZGO PISCONTI LIZ GIANNINA",
"fecha_emision": "05/33/2026",
"tipo": "31",
"serie": "2605",
"numero": "33",
"ruc_receptor": "20100029741",
"razon_social_receptor": "REMUZGO PISCONTI LIZ GIANNINA",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129711"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/010_correo/10154500010-31-2605-33.pdf"
}
]
@@ -0,0 +1,39 @@
[
{
"ruc_emisor": "10154500010",
"razon_social_emisor": "REMUZGO PISCONTI LIZ GIANNINA",
"fecha_emision": "2026-05-29",
"tipo": "31",
"serie": "EG03",
"numero": "216",
"ruc_receptor": "10154500010",
"razon_social_receptor": "REMUZGO PISCONTI LIZ GIANNINA",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129711"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO",
"punto_llegada": "CA. PANAMERICANA SUR MZ. A6 LT. 4 AS. EL TREBOL",
"peso_bruto": "31.45",
"unidad_peso_bruto": "TNE",
"fecha_traslado": "2026-05-29",
"vehiculo_principal": "CFW860",
"vehiculo_secundario": "BUI979",
"licencia_conductor": "Q40190692",
"nombre_conductor": "QUINTANA QUISPE GERARDO",
"documento_conductor": "40190692",
"ubigeo_partida": "150143",
"lineas": [],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/010_correo/10154500010-31-EG03-216.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<ds:Signature Id="NubeFacTSign">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>iqqbui/4mECjZwCUF7Pzs/N3icjZktM24HG7wEB4PM4=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>W8oT+dnoylFsSrUUc8Wn0o1ly02bKaD95gC3IRnhe/TmtbezqYzPPgpB4/QpgcAUO0o62OH7N7F7n0YY0qBIjBrTQ8dZrUe5MC8EeulFYRRfZg+tWVQC0+xpxUuAmNWio8qakT/dXC1pK/mjFJU3y3v4OoU4u02uCRinNt27NB/TYlOC0pyF5/bM0W3EuQ/p8wDEyelevBnU/rbJkXXaEpMR+OhV+3SPoS5jFED/RW0V1MqWhKZxjU2nv2Vl72T9i9lSY8Sf+bTIpqxRCbEQsrZ0f2k19FiDAkyPxAJOy9+TQjhQgg4cuNVp5Oi8BuMI9hp6Bhkq6T+9DD3IA0sOYQ==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509SubjectName>street=CAL. LIBERTAD NRO. 176 INT. 211,emailAddress=sistemas@nubefact.com,CN=NUBEFACT WEB,OU=20600695771,OU=Validado por Llama.pe ER,O=NUBEFACT S.A.,L=LIMA,C=PE</ds:X509SubjectName>
<ds:X509Certificate>MIIFLzCCBBegAwIBAgIIeqYdzau699YwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMzA1MTgzODI1WhcNMjkwMzA0MTgzODAwWjCB1DEoMCYGA1UECQwfQ0FMLiBMSUJFUlRBRCBOUk8uIDE3NiBJTlQuIDIxMTEkMCIGCSqGSIb3DQEJARYVc2lzdGVtYXNAbnViZWZhY3QuY29tMRUwEwYDVQQDDAxOVUJFRkFDVCBXRUIxFDASBgNVBAsMCzIwNjAwNjk1NzcxMSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxFjAUBgNVBAoMDU5VQkVGQUNUIFMuQS4xDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3PnivJidKntheakfk5pA2SOXyG66a1FQtSW1BtXMpN2C953XT9iJLbR9kD/2hUsTs08drxdkSeKJwyMvUL41VpGX54PkSBXg1nqwbNN9dwj+zSd1PsFcmLtpEizyU4r6B8PSo07cdAzisAhnt3F1X/LcpcuJcUT3x88RJt18vSbh903Ihvp6BV7BCkJk/MJSRKeJnVMYJPtrgLvTxH03DUs6mIozR673WmYZAdzXPo1Kv0JpfrP/XTcaZECe2VQ+l7OEQS/s2bSjL7K8VgvTW+PtkCGZu9q6UUYsr3F1UL7TVad9zEFgL7rMQvELT7r+YWCP4AwVfTrXvqAoMednKQIDAQABo4IBkDCCAYwwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAgBgNVHREEGTAXgRVzaXN0ZW1hc0BudWJlZmFjdC5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBSZK2idJe/W7w+eTwXNhJ/o8XK6pjAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAIEF6UtQGQ+yLKVVRCdiogInGUGv7IECqg9gMQNZBZ2ZP9SgQOOTFIsDI0psbS3D6u/wJ2vgf78a287ysqJUcGqhW1+plQh4toN3v8bCqwXACTIYW6bUU5bOab0QY//xrLkNZ8Iwa/M/LZstU3dgZjIwXtcMD+ANAIynN4rcNNgeVja8lnbYU3WQ1u9UIjMxtSp1rLf4mwTGSeLI1uuAWgWczkMaFjMF1RJhX9VlKX8qDC+pr/jiu8LTHt8VDeVvDwpZ4qVbI/8qq+VUyXjBffcDdeY5qb75nnlhEMHLey3t/GcEo80nmtjTKmBdroVkooIat7PcSvfQQ+kzrSnV2as=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>FF03-1100</cbc:ID>
<cbc:IssueDate>2026-05-28</cbc:IssueDate>
<cbc:IssueTime>21:01:03</cbc:IssueTime>
<cbc:InvoiceTypeCode listID="0101" listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" name="Tipo de Operacion" listSchemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo51">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000">TRESCIENTOS SESENTA Y UNO CON 69/100 SOLES</cbc:Note>
<cbc:Note>Obs: OPERACION SUJETA AL SPOT CON EL GOBIERNO CENTRAL CTA CTE 00-058-189227-BANCO DE LA NACION N REG MTC 1548287 CNG</cbc:Note>
<cbc:DocumentCurrencyCode listID="ISO 4217 Alpha" listAgencyName="United Nations Economic Commission for Europe" listName="Currency">PEN</cbc:DocumentCurrencyCode>
<cac:Signature>
<cbc:ID>20516287641</cbc:ID>
<cbc:Note>WWW.NUBEFACT.COM</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20516287641</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>20516287641</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20516287641</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL</cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI">150133</cbc:ID>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0000</cbc:AddressTypeCode>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:District>SAN JUAN DE MIRAFLORES</cbc:District>
<cac:AddressLine>
<cbc:Line>MZA. H2 LOTE. 31 P.J. PAMPLONA ALTA-SEC M. GRAU (AV SOLIDARIDAD CON SALVADOR ALLENDE) LIMA - LIMA - SAN JUAN DE MIRAFLORES</cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode listID="ISO 3166-1" listAgencyName="United Nations Economic Commission for Europe" listName="Country">PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>A. BERIO Y CIA S.A.C.</cbc:RegistrationName>
<cac:RegistrationAddress>
<cac:AddressLine>
<cbc:Line>AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES (PARADERO 14 NUEVA ESPERANZA - PISO 2) LIMA - LIMA - VILLA MARIA DEL TRIUNFO</cbc:Line>
</cac:AddressLine>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">361.69</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">361.69</cbc:Amount>
<cbc:PaymentDueDate>2026-06-28</cbc:PaymentDueDate>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">306.52</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:ID schemeName="Codigo de tributos" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">306.52</cbc:LineExtensionAmount>
<cbc:TaxInclusiveAmount currencyID="PEN">361.69</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="PEN">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="PEN">0.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="PEN">0.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="PEN">361.69</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="NIU" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">1.0</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">306.52</cbc:LineExtensionAmount>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">361.6936</cbc:PriceAmount>
<cbc:PriceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Precio" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">306.52</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:Percent>18.00</cbc:Percent>
<cbc:TaxExemptionReasonCode listAgencyName="PE:SUNAT" listName="Afectacion del IGV" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo07">10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID schemeName="Codigo de tributos" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:Item>
<cbc:Description>Servicio de Transporte ,270 bls de Cemento x s/1.3396, Punto de Partida: Av. Atocongo 1860 – Villa María del Triunfo, Punto de Llegada: Mz H2 Lt 31 Sector Miguel Grau – P. Alta – SJM, Valor referencial s/361.69, GRET: EG03-00000253 y según GRE: T001-0129356 Configuración Vehicular C2// Peso Aprox. 11.475 Tn.</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>01</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">306.52</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
</Invoice>
@@ -0,0 +1,250 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DespatchAdvice xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"><ext:UBLExtensions xmlns=""><ext:UBLExtension><ext:ExtensionContent><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>sWk7w54B3qSkE66OsIliqVPlC98=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>l67MapXzaQ8uhdOQr/x/BdHm+uwEGfloD+/8O9DZzlwBGYbMxMBx+KspDmSUkCRqFeRjjpSg/85bKL/W2Fqg0saS0hm+gIPnP6jfAuD3fhmkBOVumvtsajEJ0tITs6+zWqsAQykKKlmgoF4aNDySBuNRjwB4RBIjsh+EoQuuV9JMFb7IgBw93UFe0BxrWfMxtyWTK3B2xOcUpTxWQnTq02cZl/46k68d+HF8NU9EMtZFeWpYU1bh2DkUPUZ4TM2GDD7bcLj5qkYa/xsjQGUDSJRqw1hJQsOphwQjnUex1cxGRUe4oCQ00fxwH1UMAsUCqDHtyspqGL2ugfOgzx+Fog==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFrjCCBJagAwIBAgIIf9Td7Evg0UswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwODA5MTYxNTM5WhcNMjcwODA5MTYxNTAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1apapJOwMj9tBpgKAgjRwIloUk+xwvQZxc0s/4yl4mDSrc/F/PKZ3QBmKb43fFwivqPUvsr68fQTfyLKM14B+xXwlbQ/yh3+87sMyulLhOPmtSOU0PE8Rw0PsmGVxf1L0HPAPc3Gvuhq4Z9Dx5ByED6s+VppDmncvctlJ/NrzYZCk9H91OinTTPVZrDtbmqnOYra8PaTRoCI9Fmndeo9Oo7esM7KVX9f53NEd/mNQqzAOrgSXthFuBZN7zOsGxJ4ZGrVzHSlCH/jFLgObEizHrqisgL1cxKj8QvbGLUjNtUuTvR5IY6hwRLCxbliTa84BN10E0jC7hhAnnuEIAFJiwIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUuRkPCyM25gAu5se9GraC/UO07X8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQBC8+YM7moZ7bKYCS+VzJ8wzydSboWeNuAs2CfkhI8hRMQr1r5WZg8pDlroCslF/r6SjbkrjuDHcGKJTM2riGEjlOD4CLU9VjOP7Td6CIZyJRLaz63pZYOwE0H0weG/PvYpopDZzJ6AXYzZxwYkJ03/x/vwaCss9ZvmsEn2E1xtGbnMe9MEsg8oF0ul3uRn8Qy5gF37fM7YKuF/r4iBS5uSvBcA5J2FbI/PQls7OgICDyb3W16GeluaT9krY5wQxilJSpGVU++nv5NzmRHkquH3ic2It/KP6MZ9X2tfg6FhpF6JaUz7MSY+J0KnDDcfJlhxgnkgoT5tV3Sr6z5PpQH6</X509Certificate><X509IssuerSerial><X509IssuerName>C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA</X509IssuerName><X509SerialNumber>9211231144834552139</X509SerialNumber></X509IssuerSerial></X509Data></KeyInfo><Proposito>Cumple proposito</Proposito><Revocacion>Cumple revocacion</Revocacion><TSL>Cumple tsl</TSL><Expiracion>No ha expirado</Expiracion></Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions>
<!--ext:UBLExtensions>
</ext:UBLExtensions-->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID><![CDATA[EG03-253]]></cbc:ID>
<!-- FECHA Y HORA DE EMISION -->
<cbc:IssueDate>2026-05-22</cbc:IssueDate>
<cbc:IssueTime>16:26:26</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">31</cbc:DespatchAdviceTypeCode>
<cbc:Note><![CDATA[GRE: T001-0129356]]></cbc:Note>
<!-- DOCUMENTOS ADICIONALES (Catalogo D41)-->
<cac:AdditionalDocumentReference>
<cbc:ID><![CDATA[F001-222569]]></cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">01</cbc:DocumentTypeCode>
<cbc:DocumentType><![CDATA[Factura]]></cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID><![CDATA[SUNAT]]></cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID><![CDATA[20131312955]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<!-- DATOS DEL EMISOR (TRANSPORTISTA) -->
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20516287641]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- DATOS DEL RECEPTOR (DESTINATARIO) -->
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20516287641]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- DATOS DE QUIEN PAGA EL SERVICIO -->
<cac:OriginatorCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:OriginatorCustomerParty>
<!-- DATOS DEL TRASLADO -->
<cac:Shipment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
<!-- PESO BRUTO TOTAL DE LA CARGA -->
<cbc:GrossWeightMeasure unitCode="TNE">11.475</cbc:GrossWeightMeasure>
<!-- INDICADORES -->
<!-- Indicador de pagador del flete -->
<cbc:SpecialInstructions>SUNAT_Envio_IndicadorPagadorFlete_Remitente</cbc:SpecialInstructions>
<cac:Consignment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
</cac:Consignment>
<cac:ShipmentStage>
<!-- FECHA DE INICIO DEL TRASLADO -->
<cac:TransitPeriod>
<cbc:StartDate>2026-05-22</cbc:StartDate>
</cac:TransitPeriod>
<!-- DATOS DEL TRANSPORTISTA -->
<cac:CarrierParty>
<!-- AUTORIZACIONES ESPECIALES -->
<cac:PartyLegalEntity>
<!-- NUMERO DE REGISTRO DEL MTC -->
<cbc:CompanyID><![CDATA[1548287CNG]]></cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
<!-- CONDUCTOR PRINCIPAL -->
<cac:DriverPerson>
<!-- TIPO Y NUMERO DE DOCUMENTO DE IDENTIDAD -->
<cbc:ID schemeID="1" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[10011751]]></cbc:ID>
<!-- NOMBRES -->
<cbc:FirstName>CUELLAR ALMERCO EDWIN GUIDO</cbc:FirstName>
<!-- APELLIDOS -->
<cbc:FamilyName>CUELLAR ALMERCO EDWIN GUIDO</cbc:FamilyName>
<!-- TIPO DE CONDUCTOR: PRINCIPAL -->
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<!-- LICENCIA DE CONDUCIR -->
<cbc:ID><![CDATA[Q10011751]]></cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:Delivery>
<!-- DIRECCION DEL PUNTO DE LLEGADA -->
<cac:DeliveryAddress>
<!-- UBIGEO DE LLEGADA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150133]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE LLEGADA -->
<cac:AddressLine>
<cbc:Line><![CDATA[MZ H2 LT31 SECTOR MIGUEL GRAU PAMPLONA ALTA]]></cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<!-- DIRECCION DEL PUNTO DE PARTIDA -->
<cac:DespatchAddress>
<!-- UBIGEO DE PARTIDA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150143]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE PARTIDA -->
<cac:AddressLine>
<cbc:Line><![CDATA[AV ATOCONGO 1860]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<!-- DATOS DEL REMITENTE -->
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<!-- NUMERO DE CONTENEDOR -->
<cbc:ID><![CDATA[-]]></cbc:ID>
<cac:TransportEquipment>
<!-- VEHICULO PRINCIPAL -->
<!-- PLACA - VEHICULO PRINCIPAL -->
<cbc:ID><![CDATA[D0P728]]></cbc:ID>
<!-- Tarjeta Unica Circulacion / Cerificado Habilitacion Vehicular - Principal -->
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>0151319401</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- AUTORIZACIONES ESPECIALES - VEHICULO PRINCIPAL -->
<cac:ShipmentDocumentReference>
<cbc:ID schemeID="06" schemeName="Entidad Autorizadora" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogoD37"/>
</cac:ShipmentDocumentReference>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- DETALLES DE BIENES A TRASLADAR -->
<cac:DespatchLine>
<!-- NUMERO DE ORDEN DEL ITEM -->
<cbc:ID><![CDATA[1]]></cbc:ID>
<!-- CANTIDAD -->
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">270</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<!-- DESCRIPCION -->
<cbc:Description><![CDATA[CEMENTO TIPO I (SOL)]]></cbc:Description>
<!-- CODIGO DEL ITEM -->
<cac:SellersItemIdentification>
<cbc:ID><![CDATA[01CE007]]></cbc:ID>
</cac:SellersItemIdentification>
<!--INDICADOR DE BIEN REGULADO POR SUNAT -->
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
@@ -0,0 +1,44 @@
[
{
"ruc_emisor": "20516287641",
"razon_social_emisor": null,
"fecha_emision": "28/05/2026",
"tipo": "01",
"serie": "FF03",
"numero": "1100",
"ruc_receptor": "20100029741",
"razon_social_receptor": null,
"total_factura": "361.69",
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.pdf"
},
{
"ruc_emisor": "20516287641",
"razon_social_emisor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA",
"fecha_emision": "22/05/2026",
"tipo": "31",
"serie": "EG03",
"numero": "253",
"ruc_receptor": "20100029741",
"razon_social_receptor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "31",
"serie": "F001",
"numero": "222569"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/011_correo/20516287641-31-EG03-253.pdf"
}
]
@@ -0,0 +1,111 @@
[
{
"ruc_emisor": "20516287641",
"razon_social_emisor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL",
"fecha_emision": "2026-05-28",
"tipo": "01",
"serie": "FF03",
"numero": "1100",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 361.69,
"documentos_referencia": [
{
"tipo": "31",
"serie": "EG03",
"numero": "253"
},
{
"tipo": "09",
"serie": "T001",
"numero": "129356"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "Servicio de Transporte ,270 bls de Cemento x s/1.3396, Punto de Partida: Av. Atocongo 1860 – Villa María del Triunfo, Punto de Llegada: Mz H2 Lt 31 Sector Miguel Grau – P. Alta – SJM, Valor referencial s/361.69, GRET: EG03-00000253 y según GRE: T001-0129356 Configuración Vehicular C2// Peso Aprox. 11.475 Tn.",
"cantidad": 1.0,
"precio_unitario": 361.6936,
"total_linea": 306.52,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129356"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "EG03",
"numero": "253"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20516287641",
"razon_social_emisor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL",
"fecha_emision": "2026-05-22",
"tipo": "31",
"serie": "EG03",
"numero": "253",
"ruc_receptor": "20516287641",
"razon_social_receptor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "01",
"serie": "F001",
"numero": "222569"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV ATOCONGO 1860",
"punto_llegada": "MZ H2 LT31 SECTOR MIGUEL GRAU PAMPLONA ALTA",
"peso_bruto": "11.475",
"unidad_peso_bruto": "TNE",
"fecha_traslado": "2026-05-22",
"vehiculo_principal": "D0P728",
"vehiculo_secundario": null,
"licencia_conductor": "Q10011751",
"nombre_conductor": "CUELLAR ALMERCO EDWIN GUIDO",
"documento_conductor": "10011751",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO TIPO I (SOL)",
"cantidad": 270.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/011_correo/20516287641-31-EG03-253.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,292 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><?xml-stylesheet type="text/xsl" href="factura2.1.xsl"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0" xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<sac:AdditionalInformation>
</sac:AdditionalInformation>
</ext:ExtensionContent>
</ext:UBLExtension>
<ext:UBLExtension>
<ext:ExtensionContent><ds:Signature Id="SignSUNAT"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>jp+43Xx8RPmSvDKRvsjnomUPipo=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>C2AGSHKc3qr0XB3dTzvlh56mDMuWw/Wo5N0WT5IXXf4q5aoGK1EbexWRbZgKZuKdZGcuxxB1eoqE/y5py1uAPPPrGup+smYZuf1Nn9lnR8F9tdvkNL5IZT7zSPPBsqYhnHPMcMl8iRCCjJz1vHsd91LiTWbJrcO7+tkW3zgzjbR1OXkZZ/RToccfLajzrfXgrCu3gbZBiM4kTvLoT4xExhY+3UdMeAsmxneKKcbYqMcL9VicImmthATNoFp15n/jQFR/SIi+vhIh6C5tZgPPIufVgqt1+Iss+lO50HvYdx5gYdSx03lCzjvzAZP2qg5viIoTc9tA73JVS3FouWa11w==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIFrjCCBJagAwIBAgIIf9Td7Evg0UswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwODA5MTYxNTM5WhcNMjcwODA5MTYxNTAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1apapJOwMj9tBpgKAgjRwIloUk+xwvQZxc0s/4yl4mDSrc/F/PKZ3QBmKb43fFwivqPUvsr68fQTfyLKM14B+xXwlbQ/yh3+87sMyulLhOPmtSOU0PE8Rw0PsmGVxf1L0HPAPc3Gvuhq4Z9Dx5ByED6s+VppDmncvctlJ/NrzYZCk9H91OinTTPVZrDtbmqnOYra8PaTRoCI9Fmndeo9Oo7esM7KVX9f53NEd/mNQqzAOrgSXthFuBZN7zOsGxJ4ZGrVzHSlCH/jFLgObEizHrqisgL1cxKj8QvbGLUjNtUuTvR5IY6hwRLCxbliTa84BN10E0jC7hhAnnuEIAFJiwIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUuRkPCyM25gAu5se9GraC/UO07X8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQBC8+YM7moZ7bKYCS+VzJ8wzydSboWeNuAs2CfkhI8hRMQr1r5WZg8pDlroCslF/r6SjbkrjuDHcGKJTM2riGEjlOD4CLU9VjOP7Td6CIZyJRLaz63pZYOwE0H0weG/PvYpopDZzJ6AXYzZxwYkJ03/x/vwaCss9ZvmsEn2E1xtGbnMe9MEsg8oF0ul3uRn8Qy5gF37fM7YKuF/r4iBS5uSvBcA5J2FbI/PQls7OgICDyb3W16GeluaT9krY5wQxilJSpGVU++nv5NzmRHkquH3ic2It/KP6MZ9X2tfg6FhpF6JaUz7MSY+J0KnDDcfJlhxgnkgoT5tV3Sr6z5PpQH6</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>E001-6942</cbc:ID>
<cbc:IssueDate>2026-05-30</cbc:IssueDate>
<cbc:IssueTime>10:54:25.0Z</cbc:IssueTime>
<!-- COD 2106 : TIPO DE OPERACION TAXFREE -->
<cbc:InvoiceTypeCode listAgencyName="PE:SUNAT" listID="1004" listName="Tipo de Documento" listSchemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo51" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" name="Tipo de Operacion">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000"><![CDATA[SON: UN MIL CUATROCIENTOS VEINTE Y 65/100 SOLES]]></cbc:Note>
<cbc:Note languageLocaleID="2006"><![CDATA[Operación sujeta a detracción]]></cbc:Note>
<cbc:Note><![CDATA[V.REF: S/ 1420.65 TN: 31.88]]></cbc:Note>
<cbc:DocumentCurrencyCode listAgencyName="United Nations Economic Commission for Europe" listID="ISO 4217 Alpha" listName="Currency">PEN</cbc:DocumentCurrencyCode>
<cac:Signature>
<cbc:ID>E001-6942</cbc:ID>
<cac:SignatoryParty>
<cac:PartyName>
<cbc:Name>SUNAT</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>SignSUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20220631541</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[EMPRESA DE TRANSPORTE DE CARGA JUAN PABLO II SAC]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0</cbc:AddressTypeCode>
<cbc:BuildingNumber/>
<cbc:CitySubdivisionName>-</cbc:CitySubdivisionName>
<cbc:CityName><![CDATA[CAÑETE]]></cbc:CityName>
<cbc:CountrySubentity><![CDATA[LIMA]]></cbc:CountrySubentity>
<cbc:CountrySubentityCode><![CDATA[150509]]></cbc:CountrySubentityCode>
<cbc:District><![CDATA[MALA]]></cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. PANAMERICANA 604]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
<!-- INI Detraccion (1004): Registro MTC -->
<cac:AgentParty>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeName="RegistroMTC">-</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:AgentParty>
<!-- FIN Detraccion (1004): Registro MTC -->
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<!-- COD TIPO DOC. TAXFREE: 7 PASAPORTE, B DOC.IDENTIF.PERS.NAT.NO DOM., G SALVOCONDUCTO -->
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0</cbc:AddressTypeCode>
<cbc:BuildingNumber/>
<cbc:CitySubdivisionName/>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:CountrySubentityCode><![CDATA[150143]]></cbc:CountrySubentityCode>
<cbc:District>VILLA MARIA DEL TRIUNFO </cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[ AV. 26 DE NOVIEMBRE 2473 A.H. VIRGEN DE LOURDES PARADERO 14 NUEVA ESPERANZA - PISO 2 LIMA-LIMA-VILLA MARIA DEL TRIUNFO]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<!-- INICIO DIRECCION DETALLADA DEL CLIENTE FACTORING -->
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyLegalEntity>
<cac:RegistrationAddress>
<cbc:CitySubdivisionName/>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:CountrySubentityCode>150143</cbc:CountrySubentityCode>
<cbc:District>VILLA MARIA DEL TRIUNFO</cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. 26 DE NOVIEMBRE 2473 A.H. VIRGEN DE LOURDES PARADERO 14 NUEVA ESPERANZA PISO 2 LIMA LIMA VILLA MARIA DEL TRIUNFO]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:BuyerCustomerParty>
<!--FIN DIRECCION DETALLADA DEL CLIENTE FACTORING -->
<!-- Inicio de detracciones -->
<cac:PaymentMeans>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansCode>001</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>00571016788</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansID>027</cbc:PaymentMeansID>
<cbc:PaymentPercent>4.00</cbc:PaymentPercent>
<cbc:Amount currencyID="PEN">57.00</cbc:Amount>
</cac:PaymentTerms>
<!-- Fin de detracciones -->
<!-- INICIO DATOS DE FORMA DE PAGO -->
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">1363.65</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">1363.65</cbc:Amount>
<cbc:PaymentDueDate>2026-06-12</cbc:PaymentDueDate>
</cac:PaymentTerms>
<!-- FIN DE DATOS DE FORMA DE PAGO -->
<!-- INICIO DATOS DE RETENCION -->
<!-- FIN DE DATOS DE RETENCION -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">216.71</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">1203.94</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">216.71</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID schemeAgencyName="United Nations Economic Commission for Europe" schemeID="UN/ECE 5305" schemeName="Tax Category Identifier">S</cbc:ID>
<cac:TaxScheme>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="UN/ECE 5153" schemeName="Codigo de tributos">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">1203.94</cbc:LineExtensionAmount>
<cbc:AllowanceTotalAmount currencyID="PEN">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="PEN">0.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="PEN">0.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="PEN">1420.65</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="NIU" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">1.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">1203.941</cbc:LineExtensionAmount>
<cbc:FreeOfChargeIndicator>false</cbc:FreeOfChargeIndicator>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">1420.65038</cbc:PriceAmount>
<cbc:PriceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Precio" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<!-- Inicio de detracciones - Tipo operacion 1004-->
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cbc:ID>150509</cbc:ID>
<cac:AddressLine>
<cbc:Line>AV. PANAMERICANA NRO 602 - LIMA - CAÑETE - MALA</cbc:Line>
</cac:AddressLine>
</cac:Address>
</cac:DeliveryLocation>
<cac:Despatch>
<cac:DespatchAddress>
<cbc:ID>150143</cbc:ID>
<cac:AddressLine>
<cbc:Line>AV ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO</cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
</cac:Despatch>
<cac:DeliveryTerms>
<cbc:ID>01</cbc:ID>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:DeliveryTerms>
<cac:DeliveryTerms>
<cbc:ID>02</cbc:ID>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:DeliveryTerms>
<cac:DeliveryTerms>
<cbc:ID>03</cbc:ID>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:DeliveryTerms>
<cac:Shipment>
<cbc:ID>01</cbc:ID>
<!-- Detalle ruta principal -->
<cac:Consignment>
<cbc:ID>0</cbc:ID>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
<cbc:SizeTypeCode>-</cbc:SizeTypeCode>
<cbc:ReturnabilityIndicator>false</cbc:ReturnabilityIndicator>
</cac:TransportEquipment>
<cac:MeasurementDimension>
<cbc:AttributeID>01</cbc:AttributeID>
<cbc:Measure unitCode="TNE">0.00</cbc:Measure>
</cac:MeasurementDimension>
</cac:TransportHandlingUnit>
</cac:Consignment>
</cac:Shipment>
</cac:Delivery>
<!-- Fin de detracciones - Tipo operacion 1004-->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:AllowanceCharge>
<!-- TAX Impuestos Item -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">216.70938</cbc:TaxAmount>
<!-- cac:TaxSubtotal -->
<!--Excluyentes :: Otro Tributo - Gratuita(Bonificacion) - Exportacion - Onerosa(Bonitificacion) {Gravada, Inafecta, Exonerada} -->
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">1203.941</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">216.70938</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID schemeAgencyName="United Nations Economic Commission for Europe" schemeID="UN/ECE 5305" schemeName="Tax Category Identifier">S</cbc:ID>
<cbc:Percent>18.00</cbc:Percent>
<cbc:TaxExemptionReasonCode listAgencyName="PE:SUNAT" listName="Afectacion del IGV" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo07">10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="UN/ECE 5153" schemeName="Codigo de tributos">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<!-- /cac:TaxSubtotal -->
</cac:TaxTotal>
<cac:Item>
<cbc:Description><![CDATA[SERVICIO DE TRANSPORTE DE CARGA DE MERCANCIAS CERTIFICADO DE INSCRIPCION:157935-CNG 750 BLS RUTA: LIMA-(LIMA)- MALA (CAÑETE) S/GRT:EG03-2502 Y G.R.R: T001-129610 DEL 27.05.26 F9V-838/C4E-990 CATEGORIA: T3S3]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID/>
</cac:SellersItemIdentification>
<!-- Inicio Código de producto GTIN/Sunat 2-->
<!-- Fin Código de producto GTIN/Sunat-->
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">1203.941</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
@@ -0,0 +1,63 @@
[
{
"ruc_emisor": "20220631541",
"razon_social_emisor": "A. BERIO Y CIA S.A.C.",
"fecha_emision": "30/05/2026",
"tipo": "01",
"serie": "E001",
"numero": "6942",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": "1363.65",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": "57.00",
"lineas": [
{
"descripcion": "UNIDAD SERVICIO DE TRANSPORTE DE CARGA DE MERCANCIAS CERTIFICADO DE INSCRIPCION:157935- CNG 750 BLS RUTA: LIMA-(LIMA)- MALA (CAÑETE) S/GRT:EG03-2502 Y G.R.R: T001-129610 DEL 27.05.26 F9V-838/C4E-990 CATEGORIA: T3S3",
"cantidad": "1.00",
"precio_unitario": "1203.941",
"total_linea": "0.00",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129610"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "EG03",
"numero": "2502"
}
}
],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/012_correo/20220631541-01-E001-6942.pdf"
},
{
"ruc_emisor": "20220631541",
"razon_social_emisor": "DEPOSITO DE MATERIALES DE CONSTRUCCION JUAN PABLO II S.A.C.",
"fecha_emision": "27/05/2026",
"tipo": "31",
"serie": "EG03",
"numero": "2502",
"ruc_receptor": "20100029741",
"razon_social_receptor": "DEPOSITO DE MATERIALES DE CONSTRUCCION JUAN PABLO II S.A.C.",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129610"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/012_correo/20220631541-31-EG03-2502.pdf"
}
]
@@ -0,0 +1,64 @@
[
{
"ruc_emisor": "20220631541",
"razon_social_emisor": "EMPRESA DE TRANSPORTE DE CARGA JUAN PABLO II SAC",
"fecha_emision": "2026-05-30",
"tipo": "01",
"serie": "E001",
"numero": "6942",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 1420.65,
"documentos_referencia": [
{
"tipo": "31",
"serie": "EG03",
"numero": "2502"
},
{
"tipo": "09",
"serie": "T001",
"numero": "129610"
}
],
"tiene_detraccion": true,
"codigo_detraccion": "027",
"porcentaje_detraccion": 4.0,
"monto_detraccion": 57.0,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "SERVICIO DE TRANSPORTE DE CARGA DE MERCANCIAS CERTIFICADO DE INSCRIPCION:157935-CNG 750 BLS RUTA: LIMA-(LIMA)- MALA (CAÑETE) S/GRT:EG03-2502 Y G.R.R: T001-129610 DEL 27.05.26 F9V-838/C4E-990 CATEGORIA: T3S3",
"cantidad": 1.0,
"precio_unitario": 1420.65038,
"total_linea": 1203.941,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129610"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "EG03",
"numero": "2502"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/012_correo/20220631541-01-E001-6942.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<ds:Signature Id="NubeFacTSign">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>iqqbui/4mECjZwCUF7Pzs/N3icjZktM24HG7wEB4PM4=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>W8oT+dnoylFsSrUUc8Wn0o1ly02bKaD95gC3IRnhe/TmtbezqYzPPgpB4/QpgcAUO0o62OH7N7F7n0YY0qBIjBrTQ8dZrUe5MC8EeulFYRRfZg+tWVQC0+xpxUuAmNWio8qakT/dXC1pK/mjFJU3y3v4OoU4u02uCRinNt27NB/TYlOC0pyF5/bM0W3EuQ/p8wDEyelevBnU/rbJkXXaEpMR+OhV+3SPoS5jFED/RW0V1MqWhKZxjU2nv2Vl72T9i9lSY8Sf+bTIpqxRCbEQsrZ0f2k19FiDAkyPxAJOy9+TQjhQgg4cuNVp5Oi8BuMI9hp6Bhkq6T+9DD3IA0sOYQ==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509SubjectName>street=CAL. LIBERTAD NRO. 176 INT. 211,emailAddress=sistemas@nubefact.com,CN=NUBEFACT WEB,OU=20600695771,OU=Validado por Llama.pe ER,O=NUBEFACT S.A.,L=LIMA,C=PE</ds:X509SubjectName>
<ds:X509Certificate>MIIFLzCCBBegAwIBAgIIeqYdzau699YwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjYwMzA1MTgzODI1WhcNMjkwMzA0MTgzODAwWjCB1DEoMCYGA1UECQwfQ0FMLiBMSUJFUlRBRCBOUk8uIDE3NiBJTlQuIDIxMTEkMCIGCSqGSIb3DQEJARYVc2lzdGVtYXNAbnViZWZhY3QuY29tMRUwEwYDVQQDDAxOVUJFRkFDVCBXRUIxFDASBgNVBAsMCzIwNjAwNjk1NzcxMSEwHwYDVQQLDBhWYWxpZGFkbyBwb3IgTGxhbWEucGUgRVIxFjAUBgNVBAoMDU5VQkVGQUNUIFMuQS4xDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3PnivJidKntheakfk5pA2SOXyG66a1FQtSW1BtXMpN2C953XT9iJLbR9kD/2hUsTs08drxdkSeKJwyMvUL41VpGX54PkSBXg1nqwbNN9dwj+zSd1PsFcmLtpEizyU4r6B8PSo07cdAzisAhnt3F1X/LcpcuJcUT3x88RJt18vSbh903Ihvp6BV7BCkJk/MJSRKeJnVMYJPtrgLvTxH03DUs6mIozR673WmYZAdzXPo1Kv0JpfrP/XTcaZECe2VQ+l7OEQS/s2bSjL7K8VgvTW+PtkCGZu9q6UUYsr3F1UL7TVad9zEFgL7rMQvELT7r+YWCP4AwVfTrXvqAoMednKQIDAQABo4IBkDCCAYwwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAgBgNVHREEGTAXgRVzaXN0ZW1hc0BudWJlZmFjdC5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBSZK2idJe/W7w+eTwXNhJ/o8XK6pjAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAIEF6UtQGQ+yLKVVRCdiogInGUGv7IECqg9gMQNZBZ2ZP9SgQOOTFIsDI0psbS3D6u/wJ2vgf78a287ysqJUcGqhW1+plQh4toN3v8bCqwXACTIYW6bUU5bOab0QY//xrLkNZ8Iwa/M/LZstU3dgZjIwXtcMD+ANAIynN4rcNNgeVja8lnbYU3WQ1u9UIjMxtSp1rLf4mwTGSeLI1uuAWgWczkMaFjMF1RJhX9VlKX8qDC+pr/jiu8LTHt8VDeVvDwpZ4qVbI/8qq+VUyXjBffcDdeY5qb75nnlhEMHLey3t/GcEo80nmtjTKmBdroVkooIat7PcSvfQQ+kzrSnV2as=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>FF03-1100</cbc:ID>
<cbc:IssueDate>2026-05-28</cbc:IssueDate>
<cbc:IssueTime>21:01:03</cbc:IssueTime>
<cbc:InvoiceTypeCode listID="0101" listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" name="Tipo de Operacion" listSchemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo51">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000">TRESCIENTOS SESENTA Y UNO CON 69/100 SOLES</cbc:Note>
<cbc:Note>Obs: OPERACION SUJETA AL SPOT CON EL GOBIERNO CENTRAL CTA CTE 00-058-189227-BANCO DE LA NACION N REG MTC 1548287 CNG</cbc:Note>
<cbc:DocumentCurrencyCode listID="ISO 4217 Alpha" listAgencyName="United Nations Economic Commission for Europe" listName="Currency">PEN</cbc:DocumentCurrencyCode>
<cac:Signature>
<cbc:ID>20516287641</cbc:ID>
<cbc:Note>WWW.NUBEFACT.COM</cbc:Note>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20516287641</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>20516287641</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20516287641</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL</cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI">150133</cbc:ID>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0000</cbc:AddressTypeCode>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:District>SAN JUAN DE MIRAFLORES</cbc:District>
<cac:AddressLine>
<cbc:Line>MZA. H2 LOTE. 31 P.J. PAMPLONA ALTA-SEC M. GRAU (AV SOLIDARIDAD CON SALVADOR ALLENDE) LIMA - LIMA - SAN JUAN DE MIRAFLORES</cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode listID="ISO 3166-1" listAgencyName="United Nations Economic Commission for Europe" listName="Country">PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>A. BERIO Y CIA S.A.C.</cbc:RegistrationName>
<cac:RegistrationAddress>
<cac:AddressLine>
<cbc:Line>AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES (PARADERO 14 NUEVA ESPERANZA - PISO 2) LIMA - LIMA - VILLA MARIA DEL TRIUNFO</cbc:Line>
</cac:AddressLine>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">361.69</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">361.69</cbc:Amount>
<cbc:PaymentDueDate>2026-06-28</cbc:PaymentDueDate>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">306.52</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:ID schemeName="Codigo de tributos" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">306.52</cbc:LineExtensionAmount>
<cbc:TaxInclusiveAmount currencyID="PEN">361.69</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="PEN">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="PEN">0.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="PEN">0.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="PEN">361.69</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="NIU" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">1.0</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">306.52</cbc:LineExtensionAmount>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">361.6936</cbc:PriceAmount>
<cbc:PriceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Precio" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">306.52</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">55.17</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:Percent>18.00</cbc:Percent>
<cbc:TaxExemptionReasonCode listAgencyName="PE:SUNAT" listName="Afectacion del IGV" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo07">10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID schemeName="Codigo de tributos" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:Item>
<cbc:Description>Servicio de Transporte ,270 bls de Cemento x s/1.3396, Punto de Partida: Av. Atocongo 1860 – Villa María del Triunfo, Punto de Llegada: Mz H2 Lt 31 Sector Miguel Grau – P. Alta – SJM, Valor referencial s/361.69, GRET: EG03-00000253 y según GRE: T001-0129356 Configuración Vehicular C2// Peso Aprox. 11.475 Tn.</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>01</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">306.52</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<!-- GENERADO DESDE WWW.NUBEFACT.COM -->
</Invoice>
@@ -0,0 +1,250 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DespatchAdvice xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"><ext:UBLExtensions xmlns=""><ext:UBLExtension><ext:ExtensionContent><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>sWk7w54B3qSkE66OsIliqVPlC98=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>l67MapXzaQ8uhdOQr/x/BdHm+uwEGfloD+/8O9DZzlwBGYbMxMBx+KspDmSUkCRqFeRjjpSg/85bKL/W2Fqg0saS0hm+gIPnP6jfAuD3fhmkBOVumvtsajEJ0tITs6+zWqsAQykKKlmgoF4aNDySBuNRjwB4RBIjsh+EoQuuV9JMFb7IgBw93UFe0BxrWfMxtyWTK3B2xOcUpTxWQnTq02cZl/46k68d+HF8NU9EMtZFeWpYU1bh2DkUPUZ4TM2GDD7bcLj5qkYa/xsjQGUDSJRqw1hJQsOphwQjnUex1cxGRUe4oCQ00fxwH1UMAsUCqDHtyspqGL2ugfOgzx+Fog==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFrjCCBJagAwIBAgIIf9Td7Evg0UswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwODA5MTYxNTM5WhcNMjcwODA5MTYxNTAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1apapJOwMj9tBpgKAgjRwIloUk+xwvQZxc0s/4yl4mDSrc/F/PKZ3QBmKb43fFwivqPUvsr68fQTfyLKM14B+xXwlbQ/yh3+87sMyulLhOPmtSOU0PE8Rw0PsmGVxf1L0HPAPc3Gvuhq4Z9Dx5ByED6s+VppDmncvctlJ/NrzYZCk9H91OinTTPVZrDtbmqnOYra8PaTRoCI9Fmndeo9Oo7esM7KVX9f53NEd/mNQqzAOrgSXthFuBZN7zOsGxJ4ZGrVzHSlCH/jFLgObEizHrqisgL1cxKj8QvbGLUjNtUuTvR5IY6hwRLCxbliTa84BN10E0jC7hhAnnuEIAFJiwIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUuRkPCyM25gAu5se9GraC/UO07X8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQBC8+YM7moZ7bKYCS+VzJ8wzydSboWeNuAs2CfkhI8hRMQr1r5WZg8pDlroCslF/r6SjbkrjuDHcGKJTM2riGEjlOD4CLU9VjOP7Td6CIZyJRLaz63pZYOwE0H0weG/PvYpopDZzJ6AXYzZxwYkJ03/x/vwaCss9ZvmsEn2E1xtGbnMe9MEsg8oF0ul3uRn8Qy5gF37fM7YKuF/r4iBS5uSvBcA5J2FbI/PQls7OgICDyb3W16GeluaT9krY5wQxilJSpGVU++nv5NzmRHkquH3ic2It/KP6MZ9X2tfg6FhpF6JaUz7MSY+J0KnDDcfJlhxgnkgoT5tV3Sr6z5PpQH6</X509Certificate><X509IssuerSerial><X509IssuerName>C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA</X509IssuerName><X509SerialNumber>9211231144834552139</X509SerialNumber></X509IssuerSerial></X509Data></KeyInfo><Proposito>Cumple proposito</Proposito><Revocacion>Cumple revocacion</Revocacion><TSL>Cumple tsl</TSL><Expiracion>No ha expirado</Expiracion></Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions>
<!--ext:UBLExtensions>
</ext:UBLExtensions-->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID><![CDATA[EG03-253]]></cbc:ID>
<!-- FECHA Y HORA DE EMISION -->
<cbc:IssueDate>2026-05-22</cbc:IssueDate>
<cbc:IssueTime>16:26:26</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">31</cbc:DespatchAdviceTypeCode>
<cbc:Note><![CDATA[GRE: T001-0129356]]></cbc:Note>
<!-- DOCUMENTOS ADICIONALES (Catalogo D41)-->
<cac:AdditionalDocumentReference>
<cbc:ID><![CDATA[F001-222569]]></cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">01</cbc:DocumentTypeCode>
<cbc:DocumentType><![CDATA[Factura]]></cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID><![CDATA[SUNAT]]></cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID><![CDATA[20131312955]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<!-- DATOS DEL EMISOR (TRANSPORTISTA) -->
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20516287641]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- DATOS DEL RECEPTOR (DESTINATARIO) -->
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20516287641]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- DATOS DE QUIEN PAGA EL SERVICIO -->
<cac:OriginatorCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:OriginatorCustomerParty>
<!-- DATOS DEL TRASLADO -->
<cac:Shipment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
<!-- PESO BRUTO TOTAL DE LA CARGA -->
<cbc:GrossWeightMeasure unitCode="TNE">11.475</cbc:GrossWeightMeasure>
<!-- INDICADORES -->
<!-- Indicador de pagador del flete -->
<cbc:SpecialInstructions>SUNAT_Envio_IndicadorPagadorFlete_Remitente</cbc:SpecialInstructions>
<cac:Consignment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
</cac:Consignment>
<cac:ShipmentStage>
<!-- FECHA DE INICIO DEL TRASLADO -->
<cac:TransitPeriod>
<cbc:StartDate>2026-05-22</cbc:StartDate>
</cac:TransitPeriod>
<!-- DATOS DEL TRANSPORTISTA -->
<cac:CarrierParty>
<!-- AUTORIZACIONES ESPECIALES -->
<cac:PartyLegalEntity>
<!-- NUMERO DE REGISTRO DEL MTC -->
<cbc:CompanyID><![CDATA[1548287CNG]]></cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
<!-- CONDUCTOR PRINCIPAL -->
<cac:DriverPerson>
<!-- TIPO Y NUMERO DE DOCUMENTO DE IDENTIDAD -->
<cbc:ID schemeID="1" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[10011751]]></cbc:ID>
<!-- NOMBRES -->
<cbc:FirstName>CUELLAR ALMERCO EDWIN GUIDO</cbc:FirstName>
<!-- APELLIDOS -->
<cbc:FamilyName>CUELLAR ALMERCO EDWIN GUIDO</cbc:FamilyName>
<!-- TIPO DE CONDUCTOR: PRINCIPAL -->
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<!-- LICENCIA DE CONDUCIR -->
<cbc:ID><![CDATA[Q10011751]]></cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:Delivery>
<!-- DIRECCION DEL PUNTO DE LLEGADA -->
<cac:DeliveryAddress>
<!-- UBIGEO DE LLEGADA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150133]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE LLEGADA -->
<cac:AddressLine>
<cbc:Line><![CDATA[MZ H2 LT31 SECTOR MIGUEL GRAU PAMPLONA ALTA]]></cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<!-- DIRECCION DEL PUNTO DE PARTIDA -->
<cac:DespatchAddress>
<!-- UBIGEO DE PARTIDA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150143]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE PARTIDA -->
<cac:AddressLine>
<cbc:Line><![CDATA[AV ATOCONGO 1860]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<!-- DATOS DEL REMITENTE -->
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<!-- NUMERO DE CONTENEDOR -->
<cbc:ID><![CDATA[-]]></cbc:ID>
<cac:TransportEquipment>
<!-- VEHICULO PRINCIPAL -->
<!-- PLACA - VEHICULO PRINCIPAL -->
<cbc:ID><![CDATA[D0P728]]></cbc:ID>
<!-- Tarjeta Unica Circulacion / Cerificado Habilitacion Vehicular - Principal -->
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>0151319401</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- AUTORIZACIONES ESPECIALES - VEHICULO PRINCIPAL -->
<cac:ShipmentDocumentReference>
<cbc:ID schemeID="06" schemeName="Entidad Autorizadora" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogoD37"/>
</cac:ShipmentDocumentReference>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- DETALLES DE BIENES A TRASLADAR -->
<cac:DespatchLine>
<!-- NUMERO DE ORDEN DEL ITEM -->
<cbc:ID><![CDATA[1]]></cbc:ID>
<!-- CANTIDAD -->
<cbc:DeliveredQuantity unitCode="NIU" unitCodeListID="UN/ECE rec 20" unitCodeListAgencyName="United Nations Economic Commission for Europe">270</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<!-- DESCRIPCION -->
<cbc:Description><![CDATA[CEMENTO TIPO I (SOL)]]></cbc:Description>
<!-- CODIGO DEL ITEM -->
<cac:SellersItemIdentification>
<cbc:ID><![CDATA[01CE007]]></cbc:ID>
</cac:SellersItemIdentification>
<!--INDICADOR DE BIEN REGULADO POR SUNAT -->
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
@@ -0,0 +1,44 @@
[
{
"ruc_emisor": "20516287641",
"razon_social_emisor": null,
"fecha_emision": "28/05/2026",
"tipo": "01",
"serie": "FF03",
"numero": "1100",
"ruc_receptor": "20100029741",
"razon_social_receptor": null,
"total_factura": "361.69",
"documentos_referencia": [],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.pdf"
},
{
"ruc_emisor": "20516287641",
"razon_social_emisor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA",
"fecha_emision": "22/05/2026",
"tipo": "31",
"serie": "EG03",
"numero": "253",
"ruc_receptor": "20100029741",
"razon_social_receptor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "31",
"serie": "F001",
"numero": "222569"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/013_correo/20516287641-31-EG03-253.pdf"
}
]
@@ -0,0 +1,111 @@
[
{
"ruc_emisor": "20516287641",
"razon_social_emisor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL",
"fecha_emision": "2026-05-28",
"tipo": "01",
"serie": "FF03",
"numero": "1100",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": 361.69,
"documentos_referencia": [
{
"tipo": "31",
"serie": "EG03",
"numero": "253"
},
{
"tipo": "09",
"serie": "T001",
"numero": "129356"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": null,
"punto_llegada": null,
"peso_bruto": null,
"unidad_peso_bruto": null,
"fecha_traslado": null,
"vehiculo_principal": null,
"vehiculo_secundario": null,
"licencia_conductor": null,
"nombre_conductor": null,
"documento_conductor": null,
"ubigeo_partida": null,
"lineas": [
{
"descripcion": "Servicio de Transporte ,270 bls de Cemento x s/1.3396, Punto de Partida: Av. Atocongo 1860 – Villa María del Triunfo, Punto de Llegada: Mz H2 Lt 31 Sector Miguel Grau – P. Alta – SJM, Valor referencial s/361.69, GRET: EG03-00000253 y según GRE: T001-0129356 Configuración Vehicular C2// Peso Aprox. 11.475 Tn.",
"cantidad": 1.0,
"precio_unitario": 361.6936,
"total_linea": 306.52,
"notes_text": "",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129356"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "EG03",
"numero": "253"
}
}
],
"tipo_descripcion": "Factura",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.xml",
"ruta_pdf": null
},
{
"ruc_emisor": "20516287641",
"razon_social_emisor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL",
"fecha_emision": "2026-05-22",
"tipo": "31",
"serie": "EG03",
"numero": "253",
"ruc_receptor": "20516287641",
"razon_social_receptor": "FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "01",
"serie": "F001",
"numero": "222569"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV ATOCONGO 1860",
"punto_llegada": "MZ H2 LT31 SECTOR MIGUEL GRAU PAMPLONA ALTA",
"peso_bruto": "11.475",
"unidad_peso_bruto": "TNE",
"fecha_traslado": "2026-05-22",
"vehiculo_principal": "D0P728",
"vehiculo_secundario": null,
"licencia_conductor": "Q10011751",
"nombre_conductor": "CUELLAR ALMERCO EDWIN GUIDO",
"documento_conductor": "10011751",
"ubigeo_partida": "150143",
"lineas": [
{
"descripcion": "CEMENTO TIPO I (SOL)",
"cantidad": 270.0,
"precio_unitario": 0.0,
"total_linea": 0.0,
"notes_text": "",
"guias_remision": [],
"guia_transportista": null
}
],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/013_correo/20516287641-31-EG03-253.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DespatchAdvice xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"><ext:UBLExtensions xmlns=""><ext:UBLExtension><ext:ExtensionContent><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>LRNvMuKGRIobuArlf74KDR/Lcpg=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>eIySJdU3J3ZZxhOLcqLx9BqFBYodYvOTo5bZnLr5Mnh9n9xWPCaax24IWjVVcxCXXyXOe1m/8QJ4Zg9V8YvCnNYLFw1NcDOueLijfa3JxTZ0bU91pziPRcM81l3AK1/fy0A96W5FswvwDOtmJ8FZb3ezEIM9UuYnlh7UkwcfmjEqINE28zQZqWALzRljpCkGDeYPNXU2Z89xdwRqVUyA0bbMB0HvtNYDqRjcOLpp4vv3lyAhcnE5LQQ5au/7Wm6JXPiMgwROumE9RhMpD1OcKr3sRm0ZYn7OQRIHIqHtES0g6E2cxrPIJ71bSW4eCa8s16HjmvIxzILJYHxWmSqw2Q==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFrjCCBJagAwIBAgIIf9Td7Evg0UswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwODA5MTYxNTM5WhcNMjcwODA5MTYxNTAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1apapJOwMj9tBpgKAgjRwIloUk+xwvQZxc0s/4yl4mDSrc/F/PKZ3QBmKb43fFwivqPUvsr68fQTfyLKM14B+xXwlbQ/yh3+87sMyulLhOPmtSOU0PE8Rw0PsmGVxf1L0HPAPc3Gvuhq4Z9Dx5ByED6s+VppDmncvctlJ/NrzYZCk9H91OinTTPVZrDtbmqnOYra8PaTRoCI9Fmndeo9Oo7esM7KVX9f53NEd/mNQqzAOrgSXthFuBZN7zOsGxJ4ZGrVzHSlCH/jFLgObEizHrqisgL1cxKj8QvbGLUjNtUuTvR5IY6hwRLCxbliTa84BN10E0jC7hhAnnuEIAFJiwIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUuRkPCyM25gAu5se9GraC/UO07X8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQBC8+YM7moZ7bKYCS+VzJ8wzydSboWeNuAs2CfkhI8hRMQr1r5WZg8pDlroCslF/r6SjbkrjuDHcGKJTM2riGEjlOD4CLU9VjOP7Td6CIZyJRLaz63pZYOwE0H0weG/PvYpopDZzJ6AXYzZxwYkJ03/x/vwaCss9ZvmsEn2E1xtGbnMe9MEsg8oF0ul3uRn8Qy5gF37fM7YKuF/r4iBS5uSvBcA5J2FbI/PQls7OgICDyb3W16GeluaT9krY5wQxilJSpGVU++nv5NzmRHkquH3ic2It/KP6MZ9X2tfg6FhpF6JaUz7MSY+J0KnDDcfJlhxgnkgoT5tV3Sr6z5PpQH6</X509Certificate><X509IssuerSerial><X509IssuerName>C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA</X509IssuerName><X509SerialNumber>9211231144834552139</X509SerialNumber></X509IssuerSerial></X509Data></KeyInfo><Proposito>Cumple proposito</Proposito><Revocacion>Cumple revocacion</Revocacion><TSL>Cumple tsl</TSL><Expiracion>No ha expirado</Expiracion></Signature></ext:ExtensionContent></ext:UBLExtension></ext:UBLExtensions>
<!--ext:UBLExtensions>
</ext:UBLExtensions-->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID><![CDATA[EG03-216]]></cbc:ID>
<!-- FECHA Y HORA DE EMISION -->
<cbc:IssueDate>2026-05-29</cbc:IssueDate>
<cbc:IssueTime>01:31:47</cbc:IssueTime>
<cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">31</cbc:DespatchAdviceTypeCode>
<!-- DOCUMENTOS ADICIONALES (Catalogo D41)-->
<cac:AdditionalDocumentReference>
<cbc:ID><![CDATA[T001-129711]]></cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Documento relacionado al transporte" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61">09</cbc:DocumentTypeCode>
<cbc:DocumentType><![CDATA[Guía de Remisión Remitente]]></cbc:DocumentType>
<cac:IssuerParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
</cac:IssuerParty>
</cac:AdditionalDocumentReference>
<cac:Signature>
<cbc:ID><![CDATA[SUNAT]]></cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID><![CDATA[20131312955]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<!-- DATOS DEL EMISOR (TRANSPORTISTA) -->
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[10154500010]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[REMUZGO PISCONTI LIZ GIANNINA]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- DATOS DEL RECEPTOR (DESTINATARIO) -->
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[10154500010]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[REMUZGO PISCONTI LIZ GIANNINA]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- DATOS DE QUIEN PAGA EL SERVICIO -->
<cac:OriginatorCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:OriginatorCustomerParty>
<!-- DATOS DEL TRASLADO -->
<cac:Shipment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
<!-- PESO BRUTO TOTAL DE LA CARGA -->
<cbc:GrossWeightMeasure unitCode="TNE">31.45</cbc:GrossWeightMeasure>
<!-- INDICADORES -->
<!-- Indicador de pagador del flete -->
<cbc:SpecialInstructions>SUNAT_Envio_IndicadorPagadorFlete_Remitente</cbc:SpecialInstructions>
<cac:Consignment>
<!-- ID OBLIGATORIO POR UBL -->
<cbc:ID><![CDATA[SUNAT_Envio]]></cbc:ID>
</cac:Consignment>
<cac:ShipmentStage>
<!-- FECHA DE INICIO DEL TRASLADO -->
<cac:TransitPeriod>
<cbc:StartDate>2026-05-29</cbc:StartDate>
</cac:TransitPeriod>
<!-- DATOS DEL TRANSPORTISTA -->
<cac:CarrierParty>
<!-- AUTORIZACIONES ESPECIALES -->
<cac:PartyLegalEntity>
<!-- NUMERO DE REGISTRO DEL MTC -->
<cbc:CompanyID><![CDATA[1562011CNG]]></cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:CarrierParty>
<!-- CONDUCTOR PRINCIPAL -->
<cac:DriverPerson>
<!-- TIPO Y NUMERO DE DOCUMENTO DE IDENTIDAD -->
<cbc:ID schemeID="1" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[40190692]]></cbc:ID>
<!-- NOMBRES -->
<cbc:FirstName>QUINTANA QUISPE GERARDO</cbc:FirstName>
<!-- APELLIDOS -->
<cbc:FamilyName>QUINTANA QUISPE GERARDO</cbc:FamilyName>
<!-- TIPO DE CONDUCTOR: PRINCIPAL -->
<cbc:JobTitle>Principal</cbc:JobTitle>
<cac:IdentityDocumentReference>
<!-- LICENCIA DE CONDUCIR -->
<cbc:ID><![CDATA[Q40190692]]></cbc:ID>
</cac:IdentityDocumentReference>
</cac:DriverPerson>
</cac:ShipmentStage>
<cac:Delivery>
<!-- DIRECCION DEL PUNTO DE LLEGADA -->
<cac:DeliveryAddress>
<!-- UBIGEO DE LLEGADA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150501]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE LLEGADA -->
<cac:AddressLine>
<cbc:Line><![CDATA[CA. PANAMERICANA SUR MZ. A6 LT. 4 AS. EL TREBOL]]></cbc:Line>
</cac:AddressLine>
</cac:DeliveryAddress>
<cac:Despatch>
<!-- DIRECCION DEL PUNTO DE PARTIDA -->
<cac:DespatchAddress>
<!-- UBIGEO DE PARTIDA -->
<cbc:ID schemeName="Ubigeos" schemeAgencyName="PE:INEI"><![CDATA[150143]]></cbc:ID>
<!-- DIRECCION COMPLETA Y DETALLADA DE PARTIDA -->
<cac:AddressLine>
<cbc:Line><![CDATA[AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO]]></cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
<!-- DATOS DEL REMITENTE -->
<cac:DespatchParty>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeName="Documento de Identidad" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06"><![CDATA[20100029741]]></cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<cac:TransportHandlingUnit>
<!-- NUMERO DE CONTENEDOR -->
<cbc:ID><![CDATA[-]]></cbc:ID>
<cac:TransportEquipment>
<!-- VEHICULO PRINCIPAL -->
<!-- PLACA - VEHICULO PRINCIPAL -->
<cbc:ID><![CDATA[CFW860]]></cbc:ID>
<!-- Tarjeta Unica Circulacion / Cerificado Habilitacion Vehicular - Principal -->
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>15M25060472E</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- AUTORIZACIONES ESPECIALES - VEHICULO PRINCIPAL -->
<cac:ShipmentDocumentReference>
<cbc:ID schemeID="06" schemeName="Entidad Autorizadora" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogoD37"><![CDATA[1562011cng]]></cbc:ID>
</cac:ShipmentDocumentReference>
<!-- VEHICULO SECUNDARIO -->
<cac:AttachedTransportEquipment>
<!-- PLACA - VEHICULO SECUNDARIO -->
<cbc:ID><![CDATA[BUI979]]></cbc:ID>
<!-- TARJETA UNICA CIRCULACION / CERTIFICADO HABILITACION VEHICULAR - SECUNDARIO -->
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>15M25060473E</cbc:RegistrationNationalityID>
</cac:ApplicableTransportMeans>
<!-- AUTORIZACIONES ESPECIALES - VEHICULO SECUNDARIO -->
<cac:ShipmentDocumentReference>
<cbc:ID schemeID="06" schemeName="Entidad Autorizadora" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogoD37"><![CDATA[1562011cng]]></cbc:ID>
</cac:ShipmentDocumentReference>
</cac:AttachedTransportEquipment>
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
</cac:Shipment>
<!-- DETALLES DE BIENES A TRASLADAR -->
</DespatchAdvice>
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<ar:ApplicationResponse xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:ar="urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2">
<ext:UBLExtensions>
<ext:UBLExtension><ext:ExtensionContent><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><DigestValue>++vnz3BA+AEgNvaNnn09EAeVPnx8MvxiZFfdr66SKzM=</DigestValue></Reference></SignedInfo><SignatureValue>XshakaqeaE2tLh9WLCy3Yh/hFbp22djvtmq3AxjRL4zIA0VJzL/dePHQopZ89Gd2uRpMfRI33m9zZkNTbyRPvz3JorVZspo7lpKUxqolX5o+EeB4N5XI/5Et5kq/m2ptEpyZvtdB4EwU4AswzYdUAaAEuh9PzDtkRUM8YnzWG4L0CzlGEGwtl6hsSB9WWOWoOAMQ3IMdlyAB1lGmieUmTiDSjhQraGRI2kkQHfDzi2zqX3TglWAoz7avrUlrifOfb3PORh4wmae6HE5ecpG31eFBHazEQOGJaokfrj33E1TQvIG8qAs/qy1g4cnih+IlJjhBcPsmCr4h3Jocr6Wx6Q==</SignatureValue><KeyInfo><X509Data><X509SubjectName>C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA</X509SubjectName><X509Certificate>MIIFrjCCBJagAwIBAgIIc2eNOs0y3WswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwMTI1MTkyMzQxWhcNMjYwMTI0MTkyMzAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxiw3ab0PlTQpV4Xw5sFK/+m8y5ZEFqOWDW/Jo2kEd11ICZTomYgo3VCT86RPw0OSRoNwHx6fzRnw9ea/jOCCdNyr0W/aRYGuU0t21QKK+w3hzuV2GBCYIJ3WVSByVxwgMe0oQr8wNnZg7FD25W/3HveIQOIJDGPH6a3gQ7E9uMu26zp3uvG3+sI3uTi+4rYNi618Wrg1YbtqfhprsC/32FXlWsJoB4YX4ei9izJrKpso4fsgsl4q7jcDbE1mmssEYImhZIc523b8BpgSkrHYOfADREXKBpH3imZKLmADzbnY6F2evUIjZrE4YVNO1MSklxCtzcsy91cwcZAaK/UPDQIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUyqaBmn52E+bZ5nB5i34oE0fcqG4wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQCwmv7rS+NNsb7O1VmIcKt7ZThv713+NQlt3hS/6cSHkvfXWpFu/qLHCm0S2GTwOBYjHSSNmoGXKKmXBehWcLn2Zx7eE4Te0naghaZ10VkCd4FN/A4yZji3QIJj0s7xMzgrHnGBOXJmWvC9RSEpvvqR6vdgSJBI8+R/Qt/j1KR4gA/bSiIqdSKp4sHmloVUBMOlpgM8kzm74VmcxV9MT2hsv+JwnWXx2OnLetjjZfXnXBC7UJu35EsLSgETF9wEht7fWTAtl/rEEatQt1A1BdvaiBVsIyKl8qakxT6eIMLgwHYfuZYfgpHys3Gy96pspM3aCjHKO2b/ZntyT4V813zj</X509Certificate></X509Data></KeyInfo></Signature></ext:ExtensionContent></ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>1.0</cbc:CustomizationID>
<cbc:ID>427906d5-dcc7-4922-bf74-32f599a3e547</cbc:ID>
<cbc:IssueDate>2026-05-29</cbc:IssueDate>
<cbc:IssueTime>08:25:10.93801</cbc:IssueTime>
<cbc:ResponseDate>2026-05-29</cbc:ResponseDate>
<cbc:ResponseTime>08:25:10.97135</cbc:ResponseTime>
<cac:Signature>
<cbc:ID>SignSUNAT</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>SUNAT</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SignSUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:SenderParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
</cac:SenderParty>
<cac:ReceiverParty>
<cac:PartyIdentification>
<cbc:ID>10154500010</cbc:ID>
</cac:PartyIdentification>
</cac:ReceiverParty>
<cac:DocumentResponse>
<cac:Response>
<cbc:ReferenceID>FF01-3308</cbc:ReferenceID>
<cbc:ResponseCode>0</cbc:ResponseCode>
<cbc:Description>La Factura numero FF01-3308, ha sido aceptado</cbc:Description>
</cac:Response>
<cac:DocumentReference>
<cbc:ID>FF01-3308</cbc:ID>
</cac:DocumentReference>
<cac:RecipientParty>
<cac:PartyIdentification>
<cbc:ID>6-20100029741</cbc:ID>
</cac:PartyIdentification>
</cac:RecipientParty>
</cac:DocumentResponse>
</ar:ApplicationResponse>
@@ -0,0 +1,63 @@
[
{
"ruc_emisor": "10154500010",
"razon_social_emisor": "A. BERIO Y CIA S.A.C.",
"fecha_emision": "29/05/2026",
"tipo": "01",
"serie": "FF01",
"numero": "3308",
"ruc_receptor": "20100029741",
"razon_social_receptor": "A. BERIO Y CIA S.A.C.",
"total_factura": "1585.08",
"documentos_referencia": [],
"tiene_detraccion": true,
"codigo_detraccion": null,
"porcentaje_detraccion": "4.00",
"monto_detraccion": "27.00",
"lineas": [
{
"descripcion": "UNIDADES 20251025120428 SERVICIO DE TRANSPORTE SERVICIO DE TRANSPORTE 740 BL CEMENTO P. PARTIDA: AV. ATOCONGO 1860 VILLA MARIA DEL TRIUNFO - LIMA - LIMA P. LLEGADA: CA. PANAMERICANA SUR MZ. A6 LT. 4 AS. EL TREBOL - SAN VICENTE DE CAÑETE - CAÑETE - LIMA SEGUN GRR: T001-0129711 SEGUN GRT: EG03-00000216 VALOR REFERENCIAL: 2,510.02 CONFIG. VEHICULAR: T3S3 CARGA TM.: 31.45 N° REGISTRO M.T.C: 1562011CNG PLACA VEHICULO: CFW-860/BUI-979 SON MIL QUINIENTOS OCHENTA Y CINCO Y 08/100 SOLES",
"cantidad": "740.00",
"precio_unitario": "2.14",
"total_linea": "1585.08",
"guias_remision": [
{
"tipo": "09",
"serie": "T001",
"numero": "129711"
}
],
"guia_transportista": {
"tipo": "31",
"serie": "EG03",
"numero": "216"
}
}
],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/014_correo/10154500010-01-FF01-3308.pdf"
},
{
"ruc_emisor": "10154500010",
"razon_social_emisor": "REMUZGO PISCONTI LIZ GIANNINA",
"fecha_emision": "05/33/2026",
"tipo": "31",
"serie": "2605",
"numero": "33",
"ruc_receptor": "20100029741",
"razon_social_receptor": "REMUZGO PISCONTI LIZ GIANNINA",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129711"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"lineas": [],
"ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/014_correo/10154500010-31-2605-33.pdf"
}
]
@@ -0,0 +1,39 @@
[
{
"ruc_emisor": "10154500010",
"razon_social_emisor": "REMUZGO PISCONTI LIZ GIANNINA",
"fecha_emision": "2026-05-29",
"tipo": "31",
"serie": "EG03",
"numero": "216",
"ruc_receptor": "10154500010",
"razon_social_receptor": "REMUZGO PISCONTI LIZ GIANNINA",
"total_factura": null,
"documentos_referencia": [
{
"tipo": "09",
"serie": "T001",
"numero": "129711"
}
],
"tiene_detraccion": false,
"codigo_detraccion": null,
"porcentaje_detraccion": null,
"monto_detraccion": null,
"punto_partida": "AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO",
"punto_llegada": "CA. PANAMERICANA SUR MZ. A6 LT. 4 AS. EL TREBOL",
"peso_bruto": "31.45",
"unidad_peso_bruto": "TNE",
"fecha_traslado": "2026-05-29",
"vehiculo_principal": "CFW860",
"vehiculo_secundario": "BUI979",
"licencia_conductor": "Q40190692",
"nombre_conductor": "QUINTANA QUISPE GERARDO",
"documento_conductor": "40190692",
"ubigeo_partida": "150143",
"lineas": [],
"tipo_descripcion": "Guía de Remisión Transportista",
"ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/014_correo/10154500010-31-EG03-216.xml",
"ruta_pdf": null
}
]
@@ -0,0 +1,300 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><?xml-stylesheet type="text/xsl" href="factura2.1.xsl"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:sac="urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0" xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
<sac:AdditionalInformation>
</sac:AdditionalInformation>
</ext:ExtensionContent>
</ext:UBLExtension>
<ext:UBLExtension>
<ext:ExtensionContent><ds:Signature Id="SignSUNAT"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>fHXaBZDbcyFKAwxERtUkQx3t8KU=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>GxEeum/9h+SYQxiYnSskyLjUSXd10tdT/Cbp4vyQ4W6GQFo8nIZoOJkzK9FAxdbXWOQjAbFD6ut9O/yxnING3WZVd1Qk/cpeT8dVDpqGt3fhH2BUrdep8/G+2B/K9tQiAJw/zLLrfNT+RAexvsP4uR3l33F0+MxbJKIb+jLVqjRfHcPF78NZgrgtMAtfBDO/f0Z2yVyW3JsipDXVLrTg32oh8blXYnsWuOzTYZB1Ds07mkuTx8wf4qg0cb4tfymTMsx7f5hcUAGlvAKrFjkuFeGT15dB2QzKW4L1cs6OKOh2YP1/ho9m7TOJdKRSVHIFz9RwzybPHvfNr1JiQCf8CQ==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIFrjCCBJagAwIBAgIIf9Td7Evg0UswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwODA5MTYxNTM5WhcNMjcwODA5MTYxNTAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/BgNVBAMMOFNVUEVSSU5ULiBOQUMuIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBMRwwGgYDVQQLDBNBR0VOVEUgQVVUT01BVElaQURPMS4wLAYDVQQLDCVWYWxpZGFkbyBwb3IgQUJDIElERU5USURBRCBESUdJVEFMIEVSMVQwUgYDVQQKDEtTVVBFUklOVEVOREVOQ0lBIE5BQ0lPTkFMIERFIEFEVUFOQVMgWSBERSBBRE1JTklTVFJBQ0lPTiBUUklCVVRBUklBIC0gU1VOQVQxDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1apapJOwMj9tBpgKAgjRwIloUk+xwvQZxc0s/4yl4mDSrc/F/PKZ3QBmKb43fFwivqPUvsr68fQTfyLKM14B+xXwlbQ/yh3+87sMyulLhOPmtSOU0PE8Rw0PsmGVxf1L0HPAPc3Gvuhq4Z9Dx5ByED6s+VppDmncvctlJ/NrzYZCk9H91OinTTPVZrDtbmqnOYra8PaTRoCI9Fmndeo9Oo7esM7KVX9f53NEd/mNQqzAOrgSXthFuBZN7zOsGxJ4ZGrVzHSlCH/jFLgObEizHrqisgL1cxKj8QvbGLUjNtUuTvR5IY6hwRLCxbliTa84BN10E0jC7hhAnnuEIAFJiwIDAQABo4IBjjCCAYowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAeBgNVHREEFzAVgRNybWV6YWdAc3VuYXQuZ29iLnBlMEYGA1UdIAQ/MD0wOwYNKwYBBAGDl3cAAQADATAqMCgGCCsGAQUFBwIBFhxodHRwczovL2xsYW1hLnBlL3JlcG9zaXRvcnkvMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNybDAdBgNVHQ4EFgQUuRkPCyM25gAu5se9GraC/UO07X8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IBAQBC8+YM7moZ7bKYCS+VzJ8wzydSboWeNuAs2CfkhI8hRMQr1r5WZg8pDlroCslF/r6SjbkrjuDHcGKJTM2riGEjlOD4CLU9VjOP7Td6CIZyJRLaz63pZYOwE0H0weG/PvYpopDZzJ6AXYzZxwYkJ03/x/vwaCss9ZvmsEn2E1xtGbnMe9MEsg8oF0ul3uRn8Qy5gF37fM7YKuF/r4iBS5uSvBcA5J2FbI/PQls7OgICDyb3W16GeluaT9krY5wQxilJSpGVU++nv5NzmRHkquH3ic2It/KP6MZ9X2tfg6FhpF6JaUz7MSY+J0KnDDcfJlhxgnkgoT5tV3Sr6z5PpQH6</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>E001-2403</cbc:ID>
<cbc:IssueDate>2026-06-13</cbc:IssueDate>
<cbc:IssueTime>11:51:27.0Z</cbc:IssueTime>
<!-- COD 2106 : TIPO DE OPERACION TAXFREE -->
<cbc:InvoiceTypeCode listAgencyName="PE:SUNAT" listID="1004" listName="Tipo de Documento" listSchemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo51" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01" name="Tipo de Operacion">01</cbc:InvoiceTypeCode>
<cbc:Note languageLocaleID="1000"><![CDATA[SON: UN MIL CUARENTA Y CINCO Y 20/100 SOLES]]></cbc:Note>
<cbc:Note languageLocaleID="2006"><![CDATA[Operación sujeta a detracción]]></cbc:Note>
<cbc:DocumentCurrencyCode listAgencyName="United Nations Economic Commission for Europe" listID="ISO 4217 Alpha" listName="Currency">PEN</cbc:DocumentCurrencyCode>
<cac:DespatchDocumentReference>
<cbc:ID>T001 - 00130229</cbc:ID>
<cbc:DocumentTypeCode>09</cbc:DocumentTypeCode>
<cbc:DocumentType><![CDATA[ GUIA DE REMISION REMITENTE ]]></cbc:DocumentType>
</cac:DespatchDocumentReference>
<cac:DespatchDocumentReference>
<cbc:ID>0002 - 000608</cbc:ID>
<cbc:DocumentTypeCode>31</cbc:DocumentTypeCode>
<cbc:DocumentType><![CDATA[ GUIA DE REMISION TRANSPORTISTA ]]></cbc:DocumentType>
</cac:DespatchDocumentReference>
<cac:Signature>
<cbc:ID>E001-2403</cbc:ID>
<cac:SignatoryParty>
<cac:PartyName>
<cbc:Name>SUNAT</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>SignSUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20552807970</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[MATERIALES DE CONSTRUCCION LOS PORTALES S.A.C.]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0</cbc:AddressTypeCode>
<cbc:BuildingNumber/>
<cbc:CitySubdivisionName>-</cbc:CitySubdivisionName>
<cbc:CityName><![CDATA[LIMA]]></cbc:CityName>
<cbc:CountrySubentity><![CDATA[LIMA]]></cbc:CountrySubentity>
<cbc:CountrySubentityCode><![CDATA[150142]]></cbc:CountrySubentityCode>
<cbc:District><![CDATA[VILLA EL SALVADOR]]></cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. GUARDIA REPUBLICANA URB. PACHACAMAC ETAPA 2 MZA. N LOTE. 20 A 1 CRA PARADERO LOS CUBANOS]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
<!-- INI Detraccion (1004): Registro MTC -->
<cac:AgentParty>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeName="RegistroMTC">-</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:AgentParty>
<!-- FIN Detraccion (1004): Registro MTC -->
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<!-- COD TIPO DOC. TAXFREE: 7 PASAPORTE, B DOC.IDENTIF.PERS.NAT.NO DOM., G SALVOCONDUCTO -->
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="6" schemeName="Documento de Identidad" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">20100029741</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName><![CDATA[A. BERIO Y CIA S.A.C.]]></cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:AddressTypeCode listAgencyName="PE:SUNAT" listName="Establecimientos anexos">0</cbc:AddressTypeCode>
<cbc:BuildingNumber/>
<cbc:CitySubdivisionName/>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:CountrySubentityCode><![CDATA[150143]]></cbc:CountrySubentityCode>
<cbc:District>VILLA MARIA DEL TRIUNFO </cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[ AV. 26 DE NOVIEMBRE 2473 A.H. VIRGEN DE LOURDES PARADERO 14 NUEVA ESPERANZA - PISO 2 LIMA-LIMA-VILLA MARIA DEL TRIUNFO]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<!-- INICIO DIRECCION DETALLADA DEL CLIENTE FACTORING -->
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyLegalEntity>
<cac:RegistrationAddress>
<cbc:CitySubdivisionName/>
<cbc:CityName>LIMA</cbc:CityName>
<cbc:CountrySubentity>LIMA</cbc:CountrySubentity>
<cbc:CountrySubentityCode>150143</cbc:CountrySubentityCode>
<cbc:District>VILLA MARIA DEL TRIUNFO</cbc:District>
<cac:AddressLine>
<cbc:Line><![CDATA[AV. 26 DE NOVIEMBRE 2473 A.H. VIRGEN DE LOURDES PARADERO 14 NUEVA ESPERANZA PISO 2 LIMA LIMA VILLA MARIA DEL TRIUNFO]]></cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:BuyerCustomerParty>
<!--FIN DIRECCION DETALLADA DEL CLIENTE FACTORING -->
<!-- Inicio de detracciones -->
<cac:PaymentMeans>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansCode>001</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>00061035508</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:ID>Detraccion</cbc:ID>
<cbc:PaymentMeansID>027</cbc:PaymentMeansID>
<cbc:PaymentPercent>4.00</cbc:PaymentPercent>
<cbc:Amount currencyID="PEN">41.81</cbc:Amount>
</cac:PaymentTerms>
<!-- Fin de detracciones -->
<!-- INICIO DATOS DE FORMA DE PAGO -->
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Credito</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">1003.39</cbc:Amount>
</cac:PaymentTerms>
<cac:PaymentTerms>
<cbc:ID>FormaPago</cbc:ID>
<cbc:PaymentMeansID>Cuota001</cbc:PaymentMeansID>
<cbc:Amount currencyID="PEN">1003.39</cbc:Amount>
<cbc:PaymentDueDate>2026-07-03</cbc:PaymentDueDate>
</cac:PaymentTerms>
<!-- FIN DE DATOS DE FORMA DE PAGO -->
<!-- INICIO DATOS DE RETENCION -->
<!-- FIN DE DATOS DE RETENCION -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">159.44</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">885.76</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">159.44</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID schemeAgencyName="United Nations Economic Commission for Europe" schemeID="UN/ECE 5305" schemeName="Tax Category Identifier">S</cbc:ID>
<cac:TaxScheme>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="UN/ECE 5153" schemeName="Codigo de tributos">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="PEN">885.76</cbc:LineExtensionAmount>
<cbc:AllowanceTotalAmount currencyID="PEN">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="PEN">0.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="PEN">0.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="PEN">1045.20</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="BG" unitCodeListAgencyName="United Nations Economic Commission for Europe" unitCodeListID="UN/ECE rec 20">780.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="PEN">885.76254</cbc:LineExtensionAmount>
<cbc:FreeOfChargeIndicator>false</cbc:FreeOfChargeIndicator>
<cac:PricingReference>
<cac:AlternativeConditionPrice>
<cbc:PriceAmount currencyID="PEN">1.33999974</cbc:PriceAmount>
<cbc:PriceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Precio" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>
</cac:AlternativeConditionPrice>
</cac:PricingReference>
<!-- Inicio de detracciones - Tipo operacion 1004-->
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cbc:ID>150142</cbc:ID>
<cac:AddressLine>
<cbc:Line>AV GUARDIA REPUBLICANA MZ N LOTE 20 - LIMA - LIMA - VILLA EL SALVADOR</cbc:Line>
</cac:AddressLine>
</cac:Address>
</cac:DeliveryLocation>
<cac:Despatch>
<cac:DespatchAddress>
<cbc:ID>150143</cbc:ID>
<cac:AddressLine>
<cbc:Line>AV ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO</cbc:Line>
</cac:AddressLine>
</cac:DespatchAddress>
</cac:Despatch>
<cac:DeliveryTerms>
<cbc:ID>01</cbc:ID>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:DeliveryTerms>
<cac:DeliveryTerms>
<cbc:ID>02</cbc:ID>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:DeliveryTerms>
<cac:DeliveryTerms>
<cbc:ID>03</cbc:ID>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:DeliveryTerms>
<cac:Shipment>
<cbc:ID>01</cbc:ID>
<!-- Detalle ruta principal -->
<cac:Consignment>
<cbc:ID>0</cbc:ID>
<cac:TransportHandlingUnit>
<cac:TransportEquipment>
<cbc:SizeTypeCode>-</cbc:SizeTypeCode>
<cbc:ReturnabilityIndicator>false</cbc:ReturnabilityIndicator>
</cac:TransportEquipment>
<cac:MeasurementDimension>
<cbc:AttributeID>01</cbc:AttributeID>
<cbc:Measure unitCode="TNE">0.00</cbc:Measure>
</cac:MeasurementDimension>
</cac:TransportHandlingUnit>
</cac:Consignment>
</cac:Shipment>
</cac:Delivery>
<!-- Fin de detracciones - Tipo operacion 1004-->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:Amount currencyID="PEN">0.00</cbc:Amount>
</cac:AllowanceCharge>
<!-- TAX Impuestos Item -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="PEN">159.4372572</cbc:TaxAmount>
<!-- cac:TaxSubtotal -->
<!--Excluyentes :: Otro Tributo - Gratuita(Bonificacion) - Exportacion - Onerosa(Bonitificacion) {Gravada, Inafecta, Exonerada} -->
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="PEN">885.76254</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="PEN">159.4372572</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID schemeAgencyName="United Nations Economic Commission for Europe" schemeID="UN/ECE 5305" schemeName="Tax Category Identifier">S</cbc:ID>
<cbc:Percent>18.00</cbc:Percent>
<cbc:TaxExemptionReasonCode listAgencyName="PE:SUNAT" listName="Afectacion del IGV" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo07">10</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID schemeAgencyName="PE:SUNAT" schemeID="UN/ECE 5153" schemeName="Codigo de tributos">1000</cbc:ID>
<cbc:Name>IGV</cbc:Name>
<cbc:TaxTypeCode>VAT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<!-- /cac:TaxSubtotal -->
</cac:TaxTotal>
<cac:Item>
<cbc:Description><![CDATA[SERVICIO DE TRANSPORTE BLS X S/ 1.34 / CONF.VEH:C3S3/ CARGTN: 33.150 /PARTIDA:AV. ATOCONGO 1860 LIMA-LIMA-V.M.T./ LLEGADA: AV GUARDIA REPUBLICANA MZ N LOTE 20 SEC 4 ETAP 2 -VES / N REG MTC. 1551832 CNG/ V.R.: 1045.20/ PLACA VEH : D8X-933 / BWD979]]></cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>001</cbc:ID>
</cac:SellersItemIdentification>
<!-- Inicio Código de producto GTIN/Sunat 2-->
<!-- Fin Código de producto GTIN/Sunat-->
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="PEN">1.135593</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
Loaded 100 of 231 files, more files were not shown because too many files have changed in this diff. Show more