diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..1a9cc72
--- /dev/null
+++ b/.env.example
@@ -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
diff --git a/consulta_rapida.py b/consulta_rapida.py
old mode 100755
new mode 100644
index 4f20915..2da58b4
--- a/consulta_rapida.py
+++ b/consulta_rapida.py
@@ -11,7 +11,7 @@ from datetime import datetime, timedelta
from dotenv import load_dotenv
import database_utilities
-import logger_utilities
+import logger_manager
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
# ============================================================================
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", "")
download_folder = os.getenv("DOWNLOAD_FOLDER", "adjuntos")
output_folder = os.getenv("OUTPUT_FOLDER", "resultado")
if not email_addr:
- print("❌ EMAIL no configurado en .env.dev")
+ print("❌ EMAIL no configurado en .env")
return
database_utilities.init_db()
@@ -96,13 +97,12 @@ if __name__ == "__main__":
print(f"\n📋 Set: {args.set} — {descripcion}")
print(f" IDs a procesar: {len(ids)}")
- log_path = logger_utilities.setup_logger()
- logger_utilities.limpiar_logs_antiguos(dias=30)
+ logger_manager.setup_logging()
inicio = datetime.now()
print("\n" + "=" * 60)
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)
run_pipeline_for_ids(ids)
diff --git a/database_utilities.py b/database_utilities.py
index 180a507..2418488 100644
--- a/database_utilities.py
+++ b/database_utilities.py
@@ -12,22 +12,24 @@ def init_db() -> None:
Inicializa la base de datos SQLite y crea la tabla de correos si no existe.
"""
conn = sqlite3.connect(DB_NAME)
- cursor = conn.cursor()
-
- # Crear tabla con id como llave primaria para evitar duplicados
- cursor.execute('''
- CREATE TABLE IF NOT EXISTS emails (
- id TEXT PRIMARY KEY,
- fecha TEXT,
- sender TEXT,
- subject TEXT,
- has_attach INTEGER,
- fecha_descarga TEXT
- )
- ''')
-
- conn.commit()
- conn.close()
+ try:
+ cursor = conn.cursor()
+
+ # Crear tabla con id como llave primaria para evitar duplicados
+ cursor.execute('''
+ CREATE TABLE IF NOT EXISTS emails (
+ id TEXT PRIMARY KEY,
+ fecha TEXT,
+ sender TEXT,
+ subject TEXT,
+ has_attach INTEGER,
+ fecha_descarga TEXT
+ )
+ ''')
+
+ conn.commit()
+ finally:
+ conn.close()
# ============================================================================
def save_emails(emails_list: list[dict]) -> int:
@@ -39,35 +41,36 @@ def save_emails(emails_list: list[dict]) -> int:
return 0
conn = sqlite3.connect(DB_NAME)
- cursor = conn.cursor()
-
- 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)
- data = [
- (
- e['id'],
- e['fecha'],
- e['sender'],
- e['subject'],
- 1 if e['has_attach'] else 0,
- fecha_ahora
- )
- for e in emails_list
- ]
-
- # INSERT OR IGNORE evita errores si el ID ya existe
- cursor.executemany('''
- INSERT OR IGNORE INTO emails (id, fecha, sender, subject, has_attach, fecha_descarga)
- VALUES (?, ?, ?, ?, ?, ?)
- ''', data)
-
- conn.commit()
- rows_affected = cursor.rowcount
- conn.close()
- return rows_affected
+ try:
+ cursor = conn.cursor()
+
+ 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)
+ data = [
+ (
+ e['id'],
+ e['fecha'],
+ e['sender'],
+ e['subject'],
+ 1 if e['has_attach'] else 0,
+ fecha_ahora
+ )
+ for e in emails_list
+ ]
+
+ # INSERT OR IGNORE evita errores si el ID ya existe
+ cursor.executemany('''
+ INSERT OR IGNORE INTO emails (id, fecha, sender, subject, has_attach, fecha_descarga)
+ VALUES (?, ?, ?, ?, ?, ?)
+ ''', data)
+
+ conn.commit()
+ return cursor.rowcount
+ finally:
+ conn.close()
# ============================================================================
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 []
conn = sqlite3.connect(DB_NAME)
- cursor = conn.cursor()
-
- existing_ids = []
- # Procesar por lotes para evitar límites de parámetros en SQLite
- for i in range(0, len(ids_list), 900):
- chunk = ids_list[i:i + 900]
- placeholders = ','.join(['?'] * len(chunk))
- query = f"SELECT id FROM emails WHERE id IN ({placeholders})"
- cursor.execute(query, chunk)
- existing_ids.extend([row[0] for row in cursor.fetchall()])
-
- conn.close()
- return existing_ids
+ try:
+ cursor = conn.cursor()
+
+ existing_ids = []
+ # Procesar por lotes para evitar límites de parámetros en SQLite
+ for i in range(0, len(ids_list), 900):
+ chunk = ids_list[i:i + 900]
+ placeholders = ','.join(['?'] * len(chunk))
+ query = f"SELECT id FROM emails WHERE id IN ({placeholders})"
+ cursor.execute(query, chunk)
+ existing_ids.extend([row[0] for row in cursor.fetchall()])
+
+ return existing_ids
+ finally:
+ conn.close()
# ============================================================================
def delete_email_by_id(email_id: str) -> bool:
@@ -102,15 +107,11 @@ def delete_email_by_id(email_id: str) -> bool:
return False
conn = sqlite3.connect(DB_NAME)
- cursor = conn.cursor()
-
- cursor.execute("DELETE FROM emails WHERE id = ?", (email_id,))
-
- conn.commit()
- rows_affected = cursor.rowcount
- conn.close()
-
- return rows_affected > 0
-# ============================================================================
-if __name__ == "__main__":
- delete_email_by_id("AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAtOXesAAA=")
\ No newline at end of file
+ try:
+ cursor = conn.cursor()
+ cursor.execute("DELETE FROM emails WHERE id = ?", (email_id,))
+ conn.commit()
+ return cursor.rowcount > 0
+ finally:
+ conn.close()
+# ============================================================================
\ No newline at end of file
diff --git a/docs/construir_draft.mkd b/docs/construir_draft.mkd
index 1f5e261..527b8b2 100644
--- a/docs/construir_draft.mkd
+++ b/docs/construir_draft.mkd
@@ -3,7 +3,9 @@
```mermaid
flowchart TD
A["factura + resultados_val"] --> B["Determinar ItemCode
C103002-A (mes anterior)
C103002 (mes actual)"]
- B --> C["Calcular cuotas
DocumentInstallments"]
+ B --> B2["CardCode = PL + ruc_emisor
sapb1_manager.obtener_condicion_pago(CardCode)
(BusinessPartners.PayTermsGrpCode → PaymentTermsTypes)"]
+ B2 --> B3["fecha_vencimiento = fecha_contabilizacion +
NumberOfAdditionalDays
(si es 0, usar NumberOfAdditionalMonths * 30)"]
+ B3 --> C["Calcular cuotas
DocumentInstallments"]
C --> D{"¿Tiene detracción?"}
D -->|Sí| E["Cuota 1: monto detracción
U_VS_TIPOCUOTA = D"]
@@ -27,7 +29,7 @@ flowchart TD
K --> P["U_IDC_VALREF =
round((total_weight / 1000) *
CUADRO_VALOR_REFERENCIAL[zona], 2)"]
P --> Q["Armar payload completo"]
- Q --> R["Cabecera:
DocType, CardCode, NumAtCard,
DocDate, DocDueDate,
U_IDC_NUMGR, Comments"]
+ Q --> R["Cabecera:
DocType, CardCode, NumAtCard,
DocDate = fecha_contabilizacion,
DocDueDate = fecha_vencimiento,
U_IDC_NUMGR, Comments"]
R --> S["DocumentLines[] +
DocumentInstallments[]"]
S --> T["← Retornar dict para
POST /Drafts"]
```
diff --git a/docs/inventario.md b/docs/inventario.md
index 8cc9e07..7e1b325 100644
--- a/docs/inventario.md
+++ b/docs/inventario.md
@@ -5,16 +5,16 @@
| Archivo | Líneas | Rol |
|---------|--------|-----|
| `main.py` | 134 | Demonio orquestador (loop de horarios) |
-| `pipeline.py` | 957 | Pipeline core (procesar un correo completo) |
-| `sunat_schema.py` | 521 | Parseo de XML SUNAT (Invoice, DespatchAdvice) |
-| `pdf_utilities.py` | 450 | Parseo de PDFs (factura, guías) |
-| `sapb1_manager.py` | 322 | Comunicación con SAP B1 Service Layer |
-| `outlook_utilities.py` | 228 | Comunicación con Microsoft Graph |
-| `hana_manager.py` | 126 | Comunicación con SAP HANA directa |
-| `database_utilities.py` | 114 | SQLite local (cache de correos) |
-| `consulta_rapida.py` | 115 | Script auxiliar para reprocesar correos por ID |
-| `email_utilities.py` | 93 | Utilitarios de adjuntos (ZIP, filtrado) |
-| `logger_utilities.py` | 72 | Logging a archivo + consola |
+| `pipeline.py` | 1284 | Pipeline core (procesar un correo completo) |
+| `sunat_schema.py` | 720 | Parseo de XML SUNAT (Invoice, DespatchAdvice) |
+| `pdf_utilities.py` | 464 | Parseo de PDFs (factura, guías) |
+| `sapb1_manager.py` | 321 | Comunicación con SAP B1 Service Layer |
+| `outlook_utilities.py` | 234 | Comunicación con Microsoft Graph |
+| `hana_manager.py` | 123 | Comunicación con SAP HANA directa (fallback de `sapb1_manager` y valor referencial) |
+| `database_utilities.py` | 116 | SQLite local (cache de correos) |
+| `consulta_rapida.py` | 113 | Script auxiliar para reprocesar correos por ID |
+| `email_utilities.py` | 52 | Utilitarios de adjuntos (ZIP, filtrado) |
+| `logger_manager.py` | 149 | Logging a archivo rotado (30 días) + consola + captura de `print()` |
---
@@ -22,15 +22,21 @@
```
main.py
+ ├── logger_manager.py
└── pipeline.py
├── sunat_schema.py
├── pdf_utilities.py
├── sapb1_manager.py
│ └── hana_manager.py
+ ├── hana_manager.py (valor referencial, Sp_ObtenerValorReferencial)
├── outlook_utilities.py
├── email_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
│ └── pdf_utilities.extraer_datos_pdf()
├── _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)
├── _validate_prices(factura) → (ok, resultados)
│ └── sapb1_manager.get_delivery_notes()
│ ├── SL (Service Layer) GET /DeliveryNotes
- │ └── HANA fallback (get_delivery)
- ├── _build_sap_draft(factura, resultados) → draft
+ │ ├── HANA fallback (get_delivery: ODLN, luego OWTR)
+ │ └── 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)
├── sapb1_manager.create_draft(draft)
└── outlook_utilities.send_email(notificación)
@@ -75,21 +89,47 @@ main()
| 5 | `.env.dev` vs `.env` inconsistente | `sapb1_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 |
+| 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)
+> 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 |
|---------|--------|-----------|
-| `_descargar_adjuntos` | 107-134 | Descarga adjuntos vía Graph API |
-| `_descomprimir` | 136-149 | Descomprime ZIPs |
-| `_filtrar_y_limpiar` | 151-191 | Filtra PDF/XML, elimina el resto |
-| `_procesar_pdfs` | 193-246 | Extrae datos de PDFs, renombra, genera cache |
-| `_procesar_xmls` | 248-377 | Procesa XMLs, cruza con PDF, asigna guías |
-| `_guardar_resultado` | 379-408 | Guarda JSON con datos extraídos |
-| `_build_sap_draft` | 410-569 | Construye payload del draft SAP B1 |
-| `_validate_prices` | 571-745 | Valida precios contra DeliveryNotes SAP |
-| `_build_validation_html` | 747-775 | Genera tabla HTML para notificación |
-| `_build_notification_body` | 777-814 | Arma cuerpo del email de notificación |
-| `_guardar_draft_json` | 816-842 | Guarda draft JSON para depuración |
+| `_ruta_carpeta` (módulo) | 33-34 | Resuelve una ruta relativa al directorio del script |
+| `_copiar_a_red` (módulo) | 37-94 | Copia PDF/XML a la ruta de red de Facturación Electrónica (`RUTA_RED_FACTURACION`) |
+| `_descargar_adjuntos` | 169-196 | Descarga adjuntos vía Graph API |
+| `_descomprimir` | 198-211 | Descomprime ZIPs |
+| `_filtrar_y_limpiar` | 213-253 | Filtra PDF/XML, elimina el resto |
+| `_procesar_pdfs` | 255-308 | Extrae datos de PDFs, renombra, genera cache |
+| `_procesar_xmls` | 310-463 | Procesa XMLs, cruza con PDF, asigna guías, copia a red |
+| `_completar_guias` | 465-522 | Completa guías faltantes en líneas XML desde el PDF cache |
+| `_validar_guias` | 524-532 | Advierte (log) guías con datos incompletos |
+| `_guardar_resultado` | 534-653 | Guarda JSON con datos extraídos (XML y PDF) |
+| `_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 |
diff --git a/docs/main.md b/docs/main.md
index 0dec9b5..5ea6b3f 100644
--- a/docs/main.md
+++ b/docs/main.md
@@ -4,11 +4,11 @@
```
main.py
-├── Constantes: HORARIOS (4 bloques horarios)
+├── Constantes: HORARIOS (5 bloques horarios)
├── obtener_intervalo(dt) → (intervalo, modo) | None
├── segundos_hasta_proximo_inicio(dt) → int
├── non_negative_int(value) → int (validador argparse)
-└── main() → None
+└── main() → None (bucle infinito envuelto en try/except KeyboardInterrupt)
```
## Proceso de `main()`
@@ -17,7 +17,8 @@ main.py
flowchart TD
A[Inicio main] --> B[Parsear args --dias]
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]
E --> F[obtener_intervalo inicio_ciclo]
@@ -37,6 +38,8 @@ flowchart TD
O --> P[Log próxima ejecución]
P --> N
+ D -. KeyboardInterrupt .-> Q[🛑 Demonio detenido por el usuario]
+
classDef highlight fill:#fff3e0,stroke:#e65100,stroke-width:3px;
```
@@ -49,26 +52,29 @@ main()
│
├── 2. Cargar .env → EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER
│
-├── 3. 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?
+├── 3. try:
+│ └── LOOP INFINITO (while True):
│ │
-│ ├── dormir = segundos_hasta_proximo_inicio() (06:30 del día siguiente)
-│ └── Log "Fuera del horario, próxima ejecución en..."
+│ ├── 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)
+│ └── 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
@@ -79,14 +85,18 @@ main()
| 13:15 | 14:00 | 1800s | full |
| 14:00 | 18:30 | 300s | rápido |
| 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__":
- 1. logger_utilities.setup_logger()
- 2. logger_utilities.limpiar_logs_antiguos(dias=30)
+ 1. logger_manager.setup_logging()
+ └── 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()
```
diff --git a/docs/pipeline.md b/docs/pipeline.md
index dffe07d..4425490 100644
--- a/docs/pipeline.md
+++ b/docs/pipeline.md
@@ -4,11 +4,11 @@
```
pipeline.py
-├── CONSTANTES: CUADRO_VALOR_REFERENCIAL
-├── HELPERS: _ruta_carpeta()
+├── CONFIG: RUTA_RED_FACTURACION, RUC_EMPRESA (desde .env)
+├── HELPERS: _ruta_carpeta(), _copiar_a_red(data, _log)
├── PASO 1: step_authenticate() → token | None
├── PASO 2: step_fetch_emails() → list[dict]
-├── _procesar_un_correo() → None (core)
+├── _procesar_un_correo() → None (core, funciones anidadas)
└── run_pipeline() → None
```
@@ -51,44 +51,75 @@ flowchart TD
I -- No --> C
I -- Sí --> J[6. _procesar_pdfs]:::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 -- Sí --> M[8. _guardar_resultado]
- M --> N[9. Filtrar facturas tipo 01]
+ L -- Sí --> M[10. _guardar_resultado]
+ M --> N[11. Filtrar facturas tipo 01]
N --> O{Hay facturas?}
O -- No --> C
O -- Sí --> P[Bucle: por cada factura]
- P --> Q[10. _validate_prices]:::highlight
- Q --> R[11. _build_sap_draft]:::highlight
- R --> S[12. _guardar_draft_json]
+ P --> Q[12. _validate_prices]:::highlight
+ Q --> Q2[12.5 _obtener_valor_referencial_sap]
+ Q2 --> R[13. _build_sap_draft]:::highlight
+ R --> S[14. _guardar_draft_json]
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]
- U --> W[14. outlook_utilities.send_email]
+ U --> W[16. outlook_utilities.send_email]
V --> W
W --> P
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`
+> `_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 |
|---------|-------|-----------|
-| `_descargar_adjuntos()` | 107 | Descarga adjuntos vía Microsoft Graph |
-| `_descomprimir()` | 136 | Descomprime archivos ZIP |
-| `_filtrar_y_limpiar()` | 151 | Filtra solo PDF/XML, elimina el resto |
-| **`_procesar_pdfs()`** | **193** | **Extrae datos de PDFs, renombra, genera cache** |
-| **`_procesar_xmls(pdf_cache)`** | **248** | **Procesa XMLs, cruza con PDF, asigna guías** |
-| `_guardar_resultado(documentos)` | 372 | Guarda JSON con datos extraídos |
-| **`_build_sap_draft(factura, resultados_val)`** | **403** | **Construye payload del draft SAP B1** |
-| **`_validate_prices(factura)`** | **564** | **Valida precios contra DeliveryNotes SAP** |
-| `_build_validation_html(resultados)` | 741 | Genera tabla HTML para notificación |
-| `_build_notification_body(status, factura, validation_table)` | 771 | Arma cuerpo del email de notificación |
-| `_guardar_draft_json(draft, serie, numero)` | 810 | Guarda draft JSON para depuración |
+| `_ruta_carpeta()` (módulo) | 33 | Resuelve una ruta relativa al directorio del script |
+| `_copiar_a_red(data, _log)` (módulo) | 37 | Copia PDF/XML de un comprobante a la ruta de red configurable |
+| `_descargar_adjuntos()` | 169 | Descarga adjuntos vía Microsoft Graph |
+| `_descomprimir()` | 198 | Descomprime archivos ZIP |
+| `_filtrar_y_limpiar()` | 213 | Filtra solo PDF/XML, elimina el resto |
+| **`_procesar_pdfs()`** | **255** | **Extrae datos de PDFs, renombra, genera cache** |
+| **`_procesar_xmls(pdf_cache)`** | **310** | **Procesa XMLs, cruza con PDF, asigna guías, copia a red** |
+| `_completar_guias(documentos, pdf_cache)` | 465 | Completa guías faltantes en líneas XML desde el PDF cache |
+| `_validar_guias(documentos)` | 524 | Advierte (log) guías con datos incompletos (falta tipo/serie/numero) |
+| `_guardar_resultado(documentos, datos_pdf)` | 534 | Guarda JSON con datos extraídos (XML y PDF) |
+| `_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
+ ├── database_utilities.init_db
├── step_authenticate
+ │ └── outlook_utilities.get_access_token
├── step_fetch_emails
+ │ └── outlook_utilities.get_emails
└── _procesar_un_correo (por cada email)
+ ├── database_utilities.get_existing_ids / save_emails
├── _descargar_adjuntos
+ │ └── outlook_utilities.download_attachments
├── _descomprimir
+ │ └── email_utilities.descomprimir_adjuntos
├── _filtrar_y_limpiar
├── _procesar_pdfs
+ │ └── pdf_utilities.extraer_datos_pdf / renombrar_pdf
├── _procesar_xmls
+ │ ├── sunat_schema.extraer_datos_xml
+ │ ├── pdf_utilities.extraer_referencias
+ │ └── _copiar_a_red
+ ├── _completar_guias
+ ├── _validar_guias
├── _guardar_resultado
- ├── _validate_prices (por factura)
- │ └── sapb1_manager.get_delivery_notes
- ├── _build_sap_draft
- ├── _guardar_draft_json
- ├── sapb1_manager.create_draft
- └── outlook_utilities.send_email
+ │ └── sunat_schema.split_serie_numero, pdf_utilities.TIPO_MAP
+ ├── (por cada factura tipo 01)
+ │ ├── _validate_prices
+ │ │ ├── sapb1_manager.get_zonas
+ │ │ └── sapb1_manager.get_delivery_notes
+ │ │ ├── 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
```
diff --git a/docs/procesar_pdfs.md b/docs/procesar_pdfs.md
index ea6363c..76f1122 100644
--- a/docs/procesar_pdfs.md
+++ b/docs/procesar_pdfs.md
@@ -2,8 +2,8 @@
## Ubicación
-- **Archivo:** `pipeline.py` (línea 193-246)
-- **Librería:** `pdf_utilities.py` (línea 1-450)
+- **Archivo:** `pipeline.py` (línea 255-308, función anidada en `_procesar_un_correo`)
+- **Librería:** `pdf_utilities.py` (línea 1-464)
---
diff --git a/docs/procesar_xmls.md b/docs/procesar_xmls.md
index 8fa04e1..843a9bc 100644
--- a/docs/procesar_xmls.md
+++ b/docs/procesar_xmls.md
@@ -2,8 +2,8 @@
## Ubicación
-- **Archivo:** `pipeline.py` (línea 248-370)
-- **Librería:** `sunat_schema.py` (línea 1-520)
+- **Archivo:** `pipeline.py` (línea 310-463, función anidada en `_procesar_un_correo`)
+- **Librería:** `sunat_schema.py` (línea 1-720)
---
@@ -18,14 +18,19 @@ flowchart TD
D --> E{Hay datos?}
E -- No --> F[ℹ️ XML sin datos]
F --> B
- E -- Sí --> G[Construir nombre PDF canónico]
- G --> H[Buscar PDF en cache o fallback]
- H --> I[Cruzar documentos_referencia desde PDF]:::highlight
- I --> J[Cruzar guías de remisión por línea]:::highlight
+ E -- Sí --> CDR{Es CDR?}
+ CDR -- Sí --> CDR2[Solo renombrar, continue]
+ CDR2 --> B
+ 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]
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;
```
@@ -46,45 +51,43 @@ _procesar_xmls(pdf_cache) → list[dict]
│ ├── xml_path = carpeta + adjunto
│ │
│ ├── 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_cdr"]? → solo renombrar a "CDR-{ruc}-{tipo}-{serie}-{numero}.xml", continue
+│ │
│ ├── data["ruta_xml"] = xml_path
│ │
-│ ├── Construir nombre PDF canónico:
-│ │ └── "{ruc_emisor}-{tipo}-{serie}-{numero}.pdf"
+│ ├── Renombrar XML a nombre canónico:
+│ │ └── "{ruc_emisor}-{tipo}-{serie}-{numero}.xml"
│ │
-│ ├── Buscar PDF asociado:
-│ │ ├── 1. pdf_cache por nombre canónico
-│ │ └── 2. Fallback: mismo nombre con extensión .pdf
+│ ├── Construir nombre PDF canónico y buscar el PDF asociado:
+│ │ ├── 1. Mismo nombre canónico con extensión .pdf
+│ │ └── 2. Fallback: mismo nombre que el XML renombrado, con extensión .pdf
│ │ └── 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?
│ │ ├── Buscar en pdf_cache por nombre canónico
│ │ │ └── pdf_utilities.extraer_referencias(items) → refs
│ │ ├── Si no → fallback: buscar en email["datos_pdf"]
│ │ └── Si encuentra → data["documentos_referencia"] = refs
│ │
-│ ├── Asignar guías de remisión por línea:
-│ │ ├── 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
+│ ├── Asignar guías de remisión y transportista por línea (ver prioridad abajo)
│ │
│ └── ✅ 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
```
@@ -99,11 +102,14 @@ flowchart TD
A[extraer_datos_xml] --> B[ET.parse xml]
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?}
D -- Sí --> E[_parse_invoice]:::highlight
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 -- No --> F
@@ -115,7 +121,7 @@ flowchart TD
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` |
| `precio_unitario` | `cac:PricingReference/cac:AlternativeConditionPrice/cbc:PriceAmount` o `cac:Price/cbc:PriceAmount` |
| `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 |
|-------|-----|
@@ -188,7 +198,7 @@ flowchart TD
| `ubigeo_partida` | `Delivery/Despatch/DespatchAddress/ID` |
| `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
```
-### 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 |
|-----------|--------|-------------|
-| 1ª | PDF items | Parse desde `items[i].guias_remision[]` y `items[i].guia_transportista` con regex `{T/V/E}{serie}-{numero}` |
-| 2ª | `documentos_referencia` | Asignación ordinal: `refs_09[i]`, `refs_31[i]` |
-| 3ª | Default | `[]` y `None` |
+| 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` (`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. 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,
"total_linea": 468.86,
"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_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"
}
]
```
+
+`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`).
diff --git a/docs/validar_precios.mkd b/docs/validar_precios.mkd
index cbb6158..66f889f 100644
--- a/docs/validar_precios.mkd
+++ b/docs/validar_precios.mkd
@@ -12,7 +12,11 @@ flowchart TD
F -->|Sí| H["Por cada guía en guias[]"]
H --> I["Consultar SAP B1
get_delivery_notes()"]
- I --> J["Por cada DeliveryNote"]
+ I --> I2{"¿Guía encontrada en
ODLN o en OWTR?"}
+ I2 -->|ODLN| I3["Documento = DeliveryNotes(DocEntry)"]
+ I2 -->|OWTR| I4["Documento = StockTransfers(DocEntry)
→ leer U_IDC_NUMOV
→ Documento = Orders(U_IDC_NUMOV)"]
+ I3 --> J["Por cada documento
(DeliveryNote u Orden de Venta)"]
+ I4 --> J
J --> K["Obtener zona desde
U_IDC_DESTINO"]
K --> L["Extraer WarehouseCode
de DocumentLines[0]"]
diff --git a/email_utilities.py b/email_utilities.py
index 603d04c..b35ef2d 100644
--- a/email_utilities.py
+++ b/email_utilities.py
@@ -1,29 +1,5 @@
import os
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]:
@@ -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)]
# ============================================================================
-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 []
-
-# ============================================================================
diff --git a/hana_manager.py b/hana_manager.py
index a855630..df65275 100644
--- a/hana_manager.py
+++ b/hana_manager.py
@@ -10,8 +10,9 @@ from dotenv import load_dotenv
# CONFIGURACIÓN
# ============================================================================
-# Cargar variables de entorno desde .env
-load_dotenv(dotenv_path=".env")
+# Cargar variables de entorno desde .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"))
# Configuración de la API
HANA_HOST = os.getenv("HANA_SERVER", "")
@@ -39,45 +40,62 @@ def get_connection():
def get_delivery(tipo: str, serie: str, numero: str) -> list:
"""
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:
- tipo: Código de serie/documento (U_BPP_MDSD).
- serie: Serie del documento (U_BPP_MDTD).
+ tipo: Código de tipo de documento SUNAT, ej. "09"/"31" (U_BPP_MDTD).
+ serie: Serie del documento, ej. "T001" (U_BPP_MDSD).
numero: Número del documento (se busca con LIKE).
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()
if not connection:
return []
- cursor = connection.cursor()
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))
columns = [column[0] for column in cursor.description]
results = []
for row in cursor.fetchall():
- results.append(dict(zip(columns, row)))
+ registro = dict(zip(columns, row))
+ registro["Tabla"] = tabla
+ results.append(registro)
return results
except Exception as e:
- print(f" ❌ Error en consulta HANA get_delivery: {e}")
+ print(f" ❌ Error en consulta HANA get_delivery ({tabla}): {e}")
return []
finally:
if cursor:
cursor.close()
- if connection:
- connection.close()
# ============================================================================
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:
return 0.0
- cursor = connection.cursor()
+ cursor = None
try:
+ cursor = connection.cursor()
cursor.execute(query, (serie, numero))
columns = [column[0] for column in cursor.description]
row = cursor.fetchone()
diff --git a/logger_manager.py b/logger_manager.py
new file mode 100644
index 0000000..4d91b7a
--- /dev/null
+++ b/logger_manager.py
@@ -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))
\ No newline at end of file
diff --git a/logger_utilities.py b/logger_utilities.py
deleted file mode 100644
index b7cf4b3..0000000
--- a/logger_utilities.py
+++ /dev/null
@@ -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).")
-# ============================================================================
\ No newline at end of file
diff --git a/main.py b/main.py
index e80eced..7a30fb2 100644
--- a/main.py
+++ b/main.py
@@ -4,7 +4,7 @@ import argparse
from datetime import datetime, timedelta
from dotenv import load_dotenv
-import logger_utilities
+import logger_manager
from pipeline import run_pipeline
# ============================================================================
@@ -65,7 +65,8 @@ def main() -> None:
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", "")
DOWNLOAD_FOLDER = os.getenv("DOWNLOAD_FOLDER", "")
@@ -124,12 +125,11 @@ def main() -> None:
# ============================================================================
if __name__ == "__main__":
- log_path = logger_utilities.setup_logger()
- logger_utilities.limpiar_logs_antiguos(dias=30)
+ logger_manager.setup_logging()
print("=" * 60)
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)
main()
diff --git a/outlook_utilities.py b/outlook_utilities.py
index 32e7104..a00977f 100644
--- a/outlook_utilities.py
+++ b/outlook_utilities.py
@@ -11,15 +11,16 @@ warnings.filterwarnings("ignore")
# CONFIGURACIÓN
# ============================================================================
-# Cargar variables de entorno desde .env
-load_dotenv(dotenv_path=".env")
+# Cargar variables de entorno desde .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"))
# Configuración de la API
CLIENT_ID = os.getenv("CLIENT_ID", "")
CLIENT_SECRET = os.getenv("CLIENT_SECRET", "")
TENANT_ID = os.getenv("TENANT_ID", "")
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:
@@ -149,16 +150,17 @@ def download_attachments(user_email: str, message_id: str, token: str, download_
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.
-
+
:param access_token: Token de acceso de Microsoft Graph API.
:param from_email: Correo electrónico del remitente (cuenta de Office 365).
:param to_recipients: Lista de correos electrónicos de los destinatarios.
:param subject: Asunto del correo.
:param html_body: Contenido del correo en formato HTML.
: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.
"""
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
attachments_payload = []
if attachment_paths:
@@ -214,6 +225,7 @@ def send_email(access_token: str, from_email: str, to_recipients: list[str], sub
"content": html_body
},
"toRecipients": recipients_payload,
+ "ccRecipients": cc_payload,
"attachments": attachments_payload
},
"saveToSentItems": "true"
diff --git a/pdf_utilities.py b/pdf_utilities.py
index 3b78357..974d382 100644
--- a/pdf_utilities.py
+++ b/pdf_utilities.py
@@ -1,6 +1,12 @@
import pdfplumber
import os
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 = {
@@ -53,13 +59,14 @@ def _extract_base_data(text: str, pdf_path: str) -> dict:
if standalone_ruc:
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"
- elif "BOLETA DE VENTA" in text.upper():
+ elif "BOLETA DE VENTA" in text_norm:
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"
- 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"
serie_numero_match = re.search(r"(?:N°\s*)?([A-Z0-9]{4})\s*-\s*(\d+)", text)
diff --git a/pipeline.py b/pipeline.py
index da81797..09aed22 100644
--- a/pipeline.py
+++ b/pipeline.py
@@ -12,6 +12,8 @@ import os
import re
import json
import math
+import shutil
+import ntpath
from datetime import datetime, timedelta
import email_utilities
@@ -22,6 +24,9 @@ import sapb1_manager
import pdf_utilities
import hana_manager
+RUTA_RED_FACTURACION = os.getenv("RUTA_RED_FACTURACION", "")
+RUC_EMPRESA = os.getenv("RUC_EMPRESA", "")
+
# ============================================================================
# HELPERS
@@ -30,6 +35,75 @@ def _ruta_carpeta(subcarpeta: str) -> str:
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
# ============================================================================
@@ -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
data["ruta_pdf"] = pdf_path
+ _copiar_a_red(data, _log)
+
# Cruzar documentos_referencia desde el PDF renombrado (pdf_cache por nombre canónico)
if not data.get("documentos_referencia"):
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
doc = {
"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"),
"tipo": tipo,
"serie": serie_p,
@@ -586,6 +662,35 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
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:
"""
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", "")
razon_social_emisor = factura.get("razon_social_emisor", "")
+ card_code = f"PL{ruc_emisor}"
+
fecha_contabilizacion = datetime.now().strftime("%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"
+ condicion_pago = sapb1_manager.obtener_condicion_pago(card_code)
+ fecha_vencimiento = _calcular_fecha_vencimiento(fecha_contabilizacion, condicion_pago)
+
if tiene_detraccion:
# neto = round(total - monto_detraccion, 2)
@@ -713,9 +823,9 @@ def _procesar_un_correo(email: dict, token: str, email_addr: str, download_folde
return {
"DocType": "dDocument_Items",
"DocDate": fecha_contabilizacion,
- "DocDueDate": fecha_emision,
+ "DocDueDate": fecha_vencimiento,
"TaxDate": fecha_emision,
- "CardCode": f"PL{ruc_emisor}",
+ "CardCode": card_code,
"NumAtCard": f"{tipo}{serie}-{numero}",
"U_IDC_NUMGR": "" if not guia_referencia else guia_referencia,
"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_LINEANE": "01",
"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,
"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']}"
try:
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()
@@ -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ó")
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:
- outlook_utilities.send_email(
- token, email_addr,
- ["jlopez@aberio.com.pe", "gcalle@pucp.pe"],
- f"Draft SAP B1 - {serie}-{numero}",
- html_body, adjuntos_email,
- )
+ destinatario = email.get("sender")
+ if destinatario and destinatario != "Desconocido":
+ outlook_utilities.send_email(
+ token, email_addr,
+ [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")
# ============================================================================
diff --git a/requirements.txt b/requirements.txt
index bea4fa8..bba6614 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,16 +1,6 @@
-certifi==2026.6.17
-cffi==2.1.0
-charset-normalizer==3.4.9
-cryptography==49.0.0
-dotenv==0.9.9
-idna==3.18
-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
+hdbcli
+msal
+pdfplumber
+python-dotenv
+requests
+urllib3
diff --git a/sapb1_manager.py b/sapb1_manager.py
index b732160..10a4a83 100644
--- a/sapb1_manager.py
+++ b/sapb1_manager.py
@@ -14,7 +14,8 @@ import hana_manager
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_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)"
)
if response.status_code >= 400:
- print("⚠️ %s - %s", log_line, response.text[:300])
+ print(f"⚠️ {log_line} - {response.text[:300]}")
else:
print(log_line)
@@ -204,24 +205,45 @@ def get_purchase_invoice(doc_entry: int) -> dict:
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:
"""
- 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:
- - Primero intenta Service Layer con $select.
- - Si no hay resultados, fallback a HANA (consulta ODLN con LIKE).
+ Fase 1 — Busca DocEntry/DocNum/CardCode/CardName/Entidad:
+ - Primero intenta Service Layer con $select (entidad DeliveryNotes).
+ - 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})
- para recuperar el documento completo.
+ Fase 2 — Por cada DocEntry obtenido, hace GET a la entidad indicada en
+ "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:
- list[dict] — Documentos completos de DeliveryNotes, o [] si no se
- encontró nada en ninguna fuente.
+ list[dict] — Documentos completos, o [] si no se encontró nada en
+ ninguna fuente.
"""
- codigo = f"{serie}{tipo}-{numero}"
+ codigo = f"{tipo}{serie}-{numero}"
# ── Fase 1: Obtener DocEntries ──────────────────────────────────────
entries = _get_delivery_entries(tipo, serie, numero)
@@ -234,27 +256,38 @@ def get_delivery_notes(tipo: str, serie: str, numero: str) -> list:
docs = []
for entry in entries:
doc_entry = entry["DocEntry"]
+ entidad = entry["Entidad"]
try:
- resp = forward_to_sapb1("GET", f"DeliveryNotes({doc_entry})")
+ resp = forward_to_sapb1("GET", f"{entidad}({doc_entry})")
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)
- print(f" │ └─ DeliveryNote({doc_entry}) obtenido")
except Exception as e:
- print(f" │ ⚠️ Error obteniendo DeliveryNote({doc_entry}): {e}")
+ print(f" │ ⚠️ Error obteniendo {entidad}({doc_entry}): {e}")
return docs
def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list:
- """Fase 1: intenta SL, fallback a HANA. Retorna [{DocEntry, DocNum, CardCode, CardName}, ...]."""
- codigo = f"{serie}{tipo}-{numero}"
+ """Fase 1: intenta SL, fallback a HANA. Retorna [{DocEntry, DocNum, CardCode, CardName, Entidad}, ...]."""
+ codigo = f"{tipo}{serie}-{numero}"
# ── Intentar Service Layer ───────────────────────────────────────────
try:
filter_str = (
f"Cancelled eq 'tNO'"
- f" and U_BPP_MDSD eq '{tipo}'"
- f" and U_BPP_MDTD eq '{serie}'"
+ f" and U_BPP_MDTD eq '{tipo}'"
+ f" and U_BPP_MDSD eq '{serie}'"
f" and contains(U_BPP_MDCD,'{numero}')"
)
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", [])
if sl_entries:
+ for sl_entry in sl_entries:
+ sl_entry["Entidad"] = "DeliveryNotes"
print(f" │ 🔍 Guía {codigo}: SL → {len(sl_entries)} DocEntry encontrados")
return sl_entries
@@ -279,6 +314,10 @@ def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list:
try:
hana_entries = hana_manager.get_delivery(tipo, serie, numero)
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")
return hana_entries
print(f" │ 🔍 Guía {codigo}: HANA → 0 registros")
@@ -287,6 +326,44 @@ def _get_delivery_entries(tipo: str, serie: str, numero: str) -> list:
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)
# ============================================================================
diff --git a/sunat_schema.py b/sunat_schema.py
index 2ec5b96..2342237 100644
--- a/sunat_schema.py
+++ b/sunat_schema.py
@@ -32,6 +32,7 @@ GUIAS_NOTES_PATTERNS = [
# Agregar aquí nuevas variantes a medida que aparezcan en facturas de otros clientes.
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+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"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"
@@ -128,7 +129,7 @@ class DatosComprobante:
refs_str = ""
if self.documentos_referencia:
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 = ""
if self.tiene_detraccion:
@@ -686,7 +687,7 @@ def extraer_datos_xml(ruta_xml: str) -> Optional[dict]:
return datos.to_dict()
if "DespatchAdvice" in tag:
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)
return datos.to_dict()
return None
diff --git a/tests/completar_guias_pipeline.py b/tests/completar_guias_pipeline.py
new file mode 100644
index 0000000..e1cfcba
--- /dev/null
+++ b/tests/completar_guias_pipeline.py
@@ -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()
diff --git a/tests/correos_prueba/001_correo/10060028686-01-F002-2450.xml b/tests/correos_prueba/001_correo/10060028686-01-F002-2450.xml
new file mode 100644
index 0000000..bb4d898
--- /dev/null
+++ b/tests/correos_prueba/001_correo/10060028686-01-F002-2450.xml
@@ -0,0 +1 @@
+EBIZ802580248023967096738185904390499218913090999925bCmAYPIFk/DmyDKNUBWpbxlZbWw=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AQAB2.12.0F002-000024502026-05-2608:51:4101SETECIENTOS TREINTA Y SEIS Y 78/100 SOLESOperación sujeta a detracciónPEN---IDSignKG10060028686#signatureKG100600286861501150000PE20100029741150143PEDetraccion00100-099-000791Detraccion0274.0029.47FormaPagoCredito707.31FormaPagoCuota001707.312026-06-15112.39624.39112.391000VAT624.39736.78736.781DE VEHICULO DE PLACA D8U934/D1L982P.PARTIDA:AV. ATOCONGO 1860-VMTP.LLEGADA:MZ.P.LT 20 URB.NUEVO LURIN LT 21GRE REMITENTE: T001-00128912GRT:V001-00000194CONF.VEH T3S3 CARGA 23,375TNVALOR REFERENCIAL S/736.78UND-1.0000624.38736.7801112.39624.38112.3918.00101000VAT000000624.38
\ No newline at end of file
diff --git a/tests/correos_prueba/001_correo/20506689326-31-V002-11.xml b/tests/correos_prueba/001_correo/20506689326-31-V002-11.xml
new file mode 100644
index 0000000..a5ab1d8
--- /dev/null
+++ b/tests/correos_prueba/001_correo/20506689326-31-V002-11.xml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+ jh2FnXCc6mcZFOLNh4yidKCBNOE=QkBKgCtC1pMy8xW4kF227KpiRiTSqwS9rmx4Ja1NHcnyh+2CYOLoeWRX1CsfGZe2Twayxe79XojFYvFiDsl7uM6PUySq7BB1OdBj6ZAR4TJYLUQXuBBXRFL2DI4j6Btuu/q8AIPHmrJepk/2tWJqb/oiBo2FhoGdEXCmkyZgHNAIIiRYQD7l00GhDVolirDrkii6zo/grWNFUGZC95SRFxgeQF23gED2PwakIzzMOqQrb/7IWh0er+ZF+Vk8QB8Y1CGHtRVytKMX+sT4K+G4O/tTT5GCQizs9HZjN5kxB1VMtM4GlUy4dpWuVblZKLREpZ9RFP2glThrohebgTGq1g==
+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
+
+
+ 2.1
+ 2.0
+ V002-11
+ 2026-05-11
+ 13:05:50
+ 31
+
+
+ T001-128662
+ 09
+ Guía de remisión remitente
+
+
+ 20100029741
+
+
+
+
+ T001-128661
+ 09
+ Guía de remisión remitente
+
+
+ 20100029741
+
+
+
+
+ signatureFACTURALOPERU
+ FACTURALO
+
+
+ 20506689326
+
+
+
+
+
+
+
+ #signatureFACTURALOPERU
+
+
+
+
+
+
+
+ 20506689326
+
+
+
+
+
+
+
+
+
+
+ 20506689326
+
+
+
+
+
+
+
+
+
+
+ SUNAT_Envio
+
+ 31875.00
+
+
+
+
+ 2026-05-11
+
+
+
+
+ 09715404
+
+ HUAMAN ÑAHUE, JUAN
+
+ DE DIOS
+
+ Principal
+
+
+ Q09715404
+
+
+
+
+
+
+
+
+ 150502
+
+
+
+
+
+
+
+
+ 150143
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ F6P722
+
+ 15M24026972E
+
+
+
+
+
+
+
+
+ 1
+
+ 550.0000
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ 2
+
+ 200.0000
+
+ 2
+
+
+
+
+
+
+
+
+
diff --git a/tests/correos_prueba/001_correo/xml_resultado_001.json b/tests/correos_prueba/001_correo/xml_resultado_001.json
new file mode 100644
index 0000000..90b9ce4
--- /dev/null
+++ b/tests/correos_prueba/001_correo/xml_resultado_001.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/002_correo/20340843607-01-F002-2188.pdf b/tests/correos_prueba/002_correo/20340843607-01-F002-2188.pdf
new file mode 100644
index 0000000..ac6ac95
Binary files /dev/null and b/tests/correos_prueba/002_correo/20340843607-01-F002-2188.pdf differ
diff --git a/tests/correos_prueba/002_correo/20340843607-01-F002-2188.xml b/tests/correos_prueba/002_correo/20340843607-01-F002-2188.xml
new file mode 100644
index 0000000..5cb6b60
--- /dev/null
+++ b/tests/correos_prueba/002_correo/20340843607-01-F002-2188.xml
@@ -0,0 +1 @@
+EBIZ8025802480239670967396118185904390499218913090999925Jwf047g91naqJakpWbK9LIu1bvo=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AQAB2.12.0F002-000021882026-05-2817:21:2501NOVECIENTOS SETENTA Y SIETE Y 91/100 SOLESOperación sujeta a detracciónPEN---IDSignKG20340843607#signatureKG203408436071501400000PE20100029741150143PEDetraccion00100-099-006366Detraccion0274.0039.12FormaPagoCredito938.79FormaPagoCuota001938.792026-06-05149.17828.74149.171000VAT828.74977.91977.911P.PARTI.AV. ATOCONGO 1860 VILLA MARIA DEL TRIUNFOP.LLEGADA. AV SANTIAGO DE SURCO 4869 SURCO LIMAGRR.T001-00129352 GRT.V001-227 CONF. VEH.T3S3CARGA 31.025 TN VAL. REF S/977.91 MTC 151307699PLACA :D7Y800-D1K975UND-1.0000828.73977.9101149.17828.73149.1718.00101000VAT000000828.73
\ No newline at end of file
diff --git a/tests/correos_prueba/002_correo/20340843607-31-V001-227.pdf b/tests/correos_prueba/002_correo/20340843607-31-V001-227.pdf
new file mode 100644
index 0000000..33beec8
Binary files /dev/null and b/tests/correos_prueba/002_correo/20340843607-31-V001-227.pdf differ
diff --git a/tests/correos_prueba/002_correo/20340843607-31-V001-227.xml b/tests/correos_prueba/002_correo/20340843607-31-V001-227.xml
new file mode 100644
index 0000000..d427d93
--- /dev/null
+++ b/tests/correos_prueba/002_correo/20340843607-31-V001-227.xml
@@ -0,0 +1 @@
+LJbqWnNTP13375hfdWAHuk/S37w=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AQAB2.12.0V001-000002272026-05-2211:54:5731ORR0023116 Placa Secundaria:D1K975T001-01293520920100029741IDSignKG20340843607#signatureKG2034084360720340843607SUNAT_Envio31025.0002026-05-2215130769942857370YOMAR ERIKSONLANASCA VILLEGASPrincipalD4285737015014015014320100029741D7Y800D1K9751730.001CEMENTO SOL TIPO I - SOL006000
\ No newline at end of file
diff --git a/tests/correos_prueba/002_correo/pdf_resultado_002.json b/tests/correos_prueba/002_correo/pdf_resultado_002.json
new file mode 100644
index 0000000..e9402f8
--- /dev/null
+++ b/tests/correos_prueba/002_correo/pdf_resultado_002.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/002_correo/xml_resultado_002.json b/tests/correos_prueba/002_correo/xml_resultado_002.json
new file mode 100644
index 0000000..269bdc4
--- /dev/null
+++ b/tests/correos_prueba/002_correo/xml_resultado_002.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.pdf b/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.pdf
new file mode 100644
index 0000000..1e4640d
Binary files /dev/null and b/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.pdf differ
diff --git a/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.xml b/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.xml
new file mode 100644
index 0000000..58672aa
--- /dev/null
+++ b/tests/correos_prueba/003_correo/20506689326-01-FE07-1559.xml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+ Dkql0/yqrvnT3UZtGx52HnfykMY=fYa724o1T+XD0Pw0cLjRNEq98qPnEsQI+0q8+opTcHRS+J0WoxhZGMwBhBD2gMUj7LMe1yoQ8SY2X88mCMK9bRkfD+Rezj9KETRmgvM7HmdNyJnpRfRZnO9G9ZJwtVAInjZRXv1JKb26e8g0nY9ebUkLOgHBru8sQzKxNKqdoSX4lxLHc0ewgPsQKsce0jwwQRm0wpMN2JaYrpyydSg+HjXjswHfterYaYOeL3rO/7Xt1N/c6S+xqRgBmrRJqE46B402T7B5J/CTW1BZrSCSSy3WFCwMcJAj59FkH6f8sEPjShlJ5OzA81nmEudt/80nCpry2bs7QO7h4L9zSQALRw==
+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
+
+
+ 2.1
+ 2.0
+ FE07-1559
+ 2026-05-13
+ 17:20:00
+ 2026-05-27
+ 01
+
+ PEN
+
+ V002-11
+ 31
+
+
+ signatureFACTURALOPERU
+ FACTURALO
+
+
+ 20506689326
+
+
+
+
+
+
+
+ #signatureFACTURALOPERU
+
+
+
+
+
+
+ 20506689326
+
+
+
+
+
+
+
+ 150115
+ 0000
+ LIMA
+ LIMA
+ LA VICTORIA
+
+
+
+
+ PE
+
+
+
+
+ 994 295 061
+ materialesdcasa@gmail.com
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 150143
+
+
+
+
+ PE
+
+
+
+
+ recepcion@aberio.com.pe
+
+
+
+
+ FormaPago
+ Credito
+ 1420.65
+
+
+ FormaPago
+ Cuota001
+ 56.83
+ 2026-05-27
+
+
+ FormaPago
+ Cuota002
+ 1363.82
+ 2026-05-27
+
+
+ 216.71
+
+ 1203.94
+ 216.71
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1203.94
+ 1420.65
+ 1420.65
+
+
+ 1
+ 550
+ 882.89
+
+
+ 1.894200
+ 01
+
+
+
+ 158.92
+
+ 882.89
+ 158.92
+
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+ 10000541
+
+
+ 51122201
+
+
+
+ 1.605254
+
+
+
+ 2
+ 200
+ 321.05
+
+
+ 1.894200
+ 01
+
+
+
+ 57.79
+
+ 321.05
+ 57.79
+
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+ 10000539
+
+
+ 51122199
+
+
+
+ 1.605254
+
+
+
diff --git a/tests/correos_prueba/003_correo/20506689326-31-V002-11.pdf b/tests/correos_prueba/003_correo/20506689326-31-V002-11.pdf
new file mode 100644
index 0000000..05b5e55
Binary files /dev/null and b/tests/correos_prueba/003_correo/20506689326-31-V002-11.pdf differ
diff --git a/tests/correos_prueba/003_correo/20506689326-31-V002-11.xml b/tests/correos_prueba/003_correo/20506689326-31-V002-11.xml
new file mode 100644
index 0000000..a5ab1d8
--- /dev/null
+++ b/tests/correos_prueba/003_correo/20506689326-31-V002-11.xml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+ jh2FnXCc6mcZFOLNh4yidKCBNOE=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
+
+
+ 2.1
+ 2.0
+ V002-11
+ 2026-05-11
+ 13:05:50
+ 31
+
+
+ T001-128662
+ 09
+ Guía de remisión remitente
+
+
+ 20100029741
+
+
+
+
+ T001-128661
+ 09
+ Guía de remisión remitente
+
+
+ 20100029741
+
+
+
+
+ signatureFACTURALOPERU
+ FACTURALO
+
+
+ 20506689326
+
+
+
+
+
+
+
+ #signatureFACTURALOPERU
+
+
+
+
+
+
+
+ 20506689326
+
+
+
+
+
+
+
+
+
+
+ 20506689326
+
+
+
+
+
+
+
+
+
+
+ SUNAT_Envio
+
+ 31875.00
+
+
+
+
+ 2026-05-11
+
+
+
+
+ 09715404
+
+ HUAMAN ÑAHUE, JUAN
+
+ DE DIOS
+
+ Principal
+
+
+ Q09715404
+
+
+
+
+
+
+
+
+ 150502
+
+
+
+
+
+
+
+
+ 150143
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ F6P722
+
+ 15M24026972E
+
+
+
+
+
+
+
+
+ 1
+
+ 550.0000
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ 2
+
+ 200.0000
+
+ 2
+
+
+
+
+
+
+
+
+
diff --git a/tests/correos_prueba/003_correo/pdf_resultado_003.json b/tests/correos_prueba/003_correo/pdf_resultado_003.json
new file mode 100644
index 0000000..5c88d52
--- /dev/null
+++ b/tests/correos_prueba/003_correo/pdf_resultado_003.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/003_correo/xml_resultado_003.json b/tests/correos_prueba/003_correo/xml_resultado_003.json
new file mode 100644
index 0000000..3c5c3bf
--- /dev/null
+++ b/tests/correos_prueba/003_correo/xml_resultado_003.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/004_correo/20551006914-01-F004-5989.xml b/tests/correos_prueba/004_correo/20551006914-01-F004-5989.xml
new file mode 100644
index 0000000..88fdee8
--- /dev/null
+++ b/tests/correos_prueba/004_correo/20551006914-01-F004-5989.xml
@@ -0,0 +1,7 @@
+8LhsuraTHRFahN/X2RKshF/bPLM=LVrsrAh9EwLNKiczJjoHiLSjH9JVa47YaKsflcQOlaxmGtmV3jMBVS4IKUVAurgypeSIOdHFQRhPA2FzT0nAB0ROUhqnrAlRKX0nY5/lFb0WZOjSe7IKbV8bDwYhjdYC/oo03/3sgNudJUYW6zErMyooyY0UX4GV4dZfqNxEqdeQvZiz+2QdLGPWUb+Ibq/fGHseignAE8O2cEHmDDvqk6ABGtEkPc9JPpYep14KEzws9LeheVaOAzPsk/Oe4tDM+XmYMk+jE1riHlTDZDPEVUr1Liw5uU1kVdkij3L9+fdmkP5BwbkHgEJFljvRepuI8N66b8xKwqFmyYlBqHdehA==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 GALVEZMIIFdjCCBF6gAwIBAgIISJfl+vjrcZUwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDI0MTY1NTM2WhcNMjYxMDI0MTY1NTAwWjCCARQxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIxMCBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1MTAwNjkxNDEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMR0wGwYDVQQKDBRSICBQIFRSQU5TRkVSIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC67JWukAAwxXhKV/LTmrjHALY44d1pU9Y3JJE6TSDgjtimIs1h7eZot/OC9d+OGUhy383TMSxqdIM4W77PMDRH5Iefh6H5EKaPI2YsCIc3lT3N15JdK+EQNyPeAh/mC4OWrGuVXDgU3MPD7EbtgjvYG8wLEJUIJBxw9bil4SiTLHPiKpRWySrtWPZeBTYfGdR/7xoRxSRSCOwgi04lp8lEv8Wwfyb2rsrltRrx44RGZFLy0GRjLw0ktzx2OL3VYGK51x0YD91wIKiFUN3co3vgLwyiuLiEr09QXpFm9zUjupxT9V3RtmyWOv2x6cFAWswLGYNVl7JnspVGae8GV23nAgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFAWB+XQmngVqzCM13NVubfDKC12wMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAu4Ajzm//yKf4bONcHdDISUaC3P8rh5CW0NSkVS/MsrXBGB3SCJXk2LR7wLVrUco3/DP3wMkel4XVDL6ftTfim+XmLXeAnuoFYTBGVJtuZMvuZAsncGIu3iFOE1K1v8yhzUykh+L7gLgPz60o8zHOXN48G3mHeNtaz3gSPGFSy0q6abiSN1n1A0VH8jj0PNf5Q0kjwdwfv0IhUAImgvLcPYeWXPobN2Ad4EqTkgvwOlLg1J7Tv6GJybjGKFSAHWi1Bbu+hegTS8SgGPDmXTsTe0ZPZZ+YzvupS/zzDEYkC1OV7b/56t4sFn5KVrvpZqsoisqCzMV4NOc0XgbTsMVoJg==2.12.0F004-00059892026-05-2901DOSCIENTOS VEINTISEIS CON 45/100 SOLESPEN1signatureCF20551006914signatureCF205510069141501430000-LIMALIMAVILLA MARIA DEL TRIUNFOAV. LIMA NRO. 2210 P.J. JOSE GALVEZPE20100029741AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES VMT LIMA - LIMAFormaPagoCredito226.45FormaPagoCuota001226.452026-06-1334.54191.9134.54S1000IGVVAT191.91226.45226.451125191.911.81160000000134.54191.9134.5418.0101000IGVVAT1.5352540000
\ No newline at end of file
diff --git a/tests/correos_prueba/004_correo/20551006914-09-F004-5989.pdf b/tests/correos_prueba/004_correo/20551006914-09-F004-5989.pdf
new file mode 100644
index 0000000..55cc964
Binary files /dev/null and b/tests/correos_prueba/004_correo/20551006914-09-F004-5989.pdf differ
diff --git a/tests/correos_prueba/004_correo/20551006914-31-V002-1427.pdf b/tests/correos_prueba/004_correo/20551006914-31-V002-1427.pdf
new file mode 100644
index 0000000..99d06b2
Binary files /dev/null and b/tests/correos_prueba/004_correo/20551006914-31-V002-1427.pdf differ
diff --git a/tests/correos_prueba/004_correo/20551006914-31-V002-1427.xml b/tests/correos_prueba/004_correo/20551006914-31-V002-1427.xml
new file mode 100644
index 0000000..e38c9a1
--- /dev/null
+++ b/tests/correos_prueba/004_correo/20551006914-31-V002-1427.xml
@@ -0,0 +1 @@
+NZR3F6AHQuWc6dokcbp/vG99cYQ=hkguA93vzLnZCwlhqrSmtqFvMrQlTH17PyOixuXvJFFszq5/90MLblUlBVOOQQJj1MJNdGifBpKB/GJzLFPk5SIY7jYlkmIAuusrcvu2RbKllcCmBENxdXD/rNQ4Zl5N1pPi/Ob8jLDANLNz573c+HZnLP5O0LUq/kbcbAEe59FJjOG36+iPwPu/hDloKlLC+B++HxTWGd8yXlbUeaEV5lLe8Cd4gzmisyUd/HTlgKMf7/rUmL0es8kbSLOm8o2hX2DRwcuern7I44T47eq1TPKh8ePrNMCfKdFZrMEF3fbdwwZBM45MUq8+E11g//rIzjNsnUEd5mSQSKcD59StQA==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 GALVEZMIIFdjCCBF6gAwIBAgIISJfl+vjrcZUwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDI0MTY1NTM2WhcNMjYxMDI0MTY1NTAwWjCCARQxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIxMCBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1MTAwNjkxNDEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMR0wGwYDVQQKDBRSICBQIFRSQU5TRkVSIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC67JWukAAwxXhKV/LTmrjHALY44d1pU9Y3JJE6TSDgjtimIs1h7eZot/OC9d+OGUhy383TMSxqdIM4W77PMDRH5Iefh6H5EKaPI2YsCIc3lT3N15JdK+EQNyPeAh/mC4OWrGuVXDgU3MPD7EbtgjvYG8wLEJUIJBxw9bil4SiTLHPiKpRWySrtWPZeBTYfGdR/7xoRxSRSCOwgi04lp8lEv8Wwfyb2rsrltRrx44RGZFLy0GRjLw0ktzx2OL3VYGK51x0YD91wIKiFUN3co3vgLwyiuLiEr09QXpFm9zUjupxT9V3RtmyWOv2x6cFAWswLGYNVl7JnspVGae8GV23nAgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFAWB+XQmngVqzCM13NVubfDKC12wMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAu4Ajzm//yKf4bONcHdDISUaC3P8rh5CW0NSkVS/MsrXBGB3SCJXk2LR7wLVrUco3/DP3wMkel4XVDL6ftTfim+XmLXeAnuoFYTBGVJtuZMvuZAsncGIu3iFOE1K1v8yhzUykh+L7gLgPz60o8zHOXN48G3mHeNtaz3gSPGFSy0q6abiSN1n1A0VH8jj0PNf5Q0kjwdwfv0IhUAImgvLcPYeWXPobN2Ad4EqTkgvwOlLg1J7Tv6GJybjGKFSAHWi1Bbu+hegTS8SgGPDmXTsTe0ZPZZ+YzvupS/zzDEYkC1OV7b/56t4sFn5KVrvpZqsoisqCzMV4NOc0XgbTsMVoJg==2.12.0V002-00014272026-05-2917:25:1931V002-000142720551006914#SignatureSP2055100691420550744024SUNAT_Envio13Otros -5.3131012026-05-29205510069141544564CNG45322098LUIS MIGUELMALLMA BERROCALPrincipalQ45322098150124150143AV ATOCONGO 1860 LIMA LIMA VMT20100029741A. BERIO Y CIA S.A.C.C6Y85715M2301395ED2P996112510101011
\ No newline at end of file
diff --git a/tests/correos_prueba/004_correo/pdf_resultado_004.json b/tests/correos_prueba/004_correo/pdf_resultado_004.json
new file mode 100644
index 0000000..19ee0dc
--- /dev/null
+++ b/tests/correos_prueba/004_correo/pdf_resultado_004.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/004_correo/xml_resultado_004.json b/tests/correos_prueba/004_correo/xml_resultado_004.json
new file mode 100644
index 0000000..b5a4b90
--- /dev/null
+++ b/tests/correos_prueba/004_correo/xml_resultado_004.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/005_correo/20555929006-01-F004-3544.xml b/tests/correos_prueba/005_correo/20555929006-01-F004-3544.xml
new file mode 100644
index 0000000..97ca248
--- /dev/null
+++ b/tests/correos_prueba/005_correo/20555929006-01-F004-3544.xml
@@ -0,0 +1,7 @@
+oydc1/p9NAh68kMvAOT9oAUeGCU=zzCw8dLaTJ/r0BiNVSupKYiIujELgg8U2TWXw9mB52BDlKynFAGRalVcHccMit9teSKQMGYKdiLgzVaqhIWwQAxDIwUaaoudE2hSG2eHQdwCKqP0z76CjDiTZEgHj30agvxUjZxXeQbczvc5vKopUaRdLwDLEjFZyr0TftGQBujxuaAzQhU+X5D6yNdhxOXA0GPu00g92EfapGmbh5Wt1kUUFhrI1om+hOkbhXZATCHfQJ7eB5U0cEbfZyLqZw9Zvq6rnq5opWi35SUe3tkZjlN6oE4XvGjuXksD4c9plp/bQvGhZQlxg1D8UHnRerffLdZv7B3ZA1NtruNYJ6kvZw==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 GALVEZMIIFlzCCBH+gAwIBAgIIMW4CA4T7sdQwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTkxNDEwWhcNMjYxMDE0MTkxNDAwWjCCATUxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIzNiBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1NTkyOTAwNjEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMT4wPAYDVQQKDDVESVNUUklCVUlET1JBIEZFUlJFVEVSQSBOQVNDQSBTLkEuQy4gLSBESUZFTkFTIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDrXOQp5XJfVSlT7G/xjPQp25/XlHcTMqzFneRLQB7RBMEoVZMGS08TJOwb7A08F80MemcdHINfKu32W0vH+IkXftM80JzMMwcooM0HPx42rYm0kmYovhOdoDDOGXWEbBInQ7aTIQkW4/UkytdIVP3uk5sRoPVollMeu1FnvBBe0xU2xMCSTpd4gOQXGHittmYhgK2YCNdrKBRn/k/wULS9RsejCPV4FkUAeiZK2JSFphR4YZPddo3XLb/mUXwgoikAovQ4RyN2QqW+PRXI7GEuY9UN/DuEaDsdBNyKEddeYJnMRepZmDQEQr5RMbn4B5ObFaODKmkMe4lg/GE9sb11AgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFOekfrMbj8D7XHBMrINSvd5DMeY9MA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAfeOGCQjp79Wh+8REraPlhIb7EOjJsbVR7W9eYNnIo2jDZMpBY8yxrQtcukGBjABn63L+N335eviU1hX6saLTXwcCrNrsYNYt4hQ7FQWaHsSp9AckMdRCxDvhIpQVheVKLLT/aSOV1loEa6J8A25wk5n+oS1nEex6x+7k210FcLOREyVbPxqrlCJPX8SCVcJOl84KOHlbrGmPDp2r30IycyM3mx7cJfIwNCbcNOXi46QqI6QINhooysZy4lSj7LqIDItzG3YaXlnauWSGPEsl8ggqcCOp5QdXSAeov+0tkTD9/83OA6/5Qv5dvp0x3Qq5JY4H/QBrh16SHQcHqxIMPw==2.12.0F004-00035442026-05-2901SEISCIENTOS CUARENTA Y CUATRO CON 35/100 SOLESOperación sujeta a detracciónPEN1signatureCF20555929006signatureCF205559290061501430000-LIMALIMAVILLA MARIA DEL TRIUNFOAV. LIMA NRO. 2236 P.J. JOSE GALVEZPE20100029741AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDESDetraccion00100061066799Detraccion0274.0026FormaPagoCredito618.35FormaPagoCuota001618.352026-06-1398.29546.0698.29S1000IGVVAT546.06644.35644.351481546.061.33960000000198.29546.0698.2918.0101000IGVVAT1.1352540000
\ No newline at end of file
diff --git a/tests/correos_prueba/005_correo/20555929006-09-F004-3544.pdf b/tests/correos_prueba/005_correo/20555929006-09-F004-3544.pdf
new file mode 100644
index 0000000..707f394
Binary files /dev/null and b/tests/correos_prueba/005_correo/20555929006-09-F004-3544.pdf differ
diff --git a/tests/correos_prueba/005_correo/20555929006-31-V002-1358.pdf b/tests/correos_prueba/005_correo/20555929006-31-V002-1358.pdf
new file mode 100644
index 0000000..f3c4cfd
Binary files /dev/null and b/tests/correos_prueba/005_correo/20555929006-31-V002-1358.pdf differ
diff --git a/tests/correos_prueba/005_correo/20555929006-31-V002-1358.xml b/tests/correos_prueba/005_correo/20555929006-31-V002-1358.xml
new file mode 100644
index 0000000..3a92c9d
--- /dev/null
+++ b/tests/correos_prueba/005_correo/20555929006-31-V002-1358.xml
@@ -0,0 +1 @@
+60qTHSXvO/FXkSbic7xmmBjlokk=sxQSd3SmESNNOy9vPdeOmSjpgV/EVhLJ/+opTLhshivwvIbU/XRaJ/GSxWB+yFTUu2tFzOJ+bQLxqmOMXl/R6xllxFshQ4tNh1Q73sCt0N1f9WE2LBm+g5Fk/v5sHtJIlJgcnpQiu8EYS0bCtyC2oiaNsLsY22jJvaSB/lISthRji7WAgWPbytQUtTYxZMYwLleh80RvZy05xmDrdjajiDMmSIBQeT89b3gYGv3VdaNNRERc+Yw/t7NxBcsGUfeO73VJo/C6UzDQNyiy9N3gwmjAYs1j2Mn41cEVlGQWPo9+FGewIpKkRdliNWeLXbAyrArV/y1Sy6kMECal1V5mHA==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 GALVEZMIIFlzCCBH+gAwIBAgIIMW4CA4T7sdQwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTkxNDEwWhcNMjYxMDE0MTkxNDAwWjCCATUxLDAqBgNVBAkMI0FWLiBMSU1BIE5STy4gMjIzNiBQLkouIEpPU0UgR0FMVkVaMSowKAYJKoZIhvcNAQkBFhtjb250YWJpbGlkYWRAZGlmZW5hcy5jb20ucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDU1NTkyOTAwNjEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMT4wPAYDVQQKDDVESVNUUklCVUlET1JBIEZFUlJFVEVSQSBOQVNDQSBTLkEuQy4gLSBESUZFTkFTIFMuQS5DLjENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDrXOQp5XJfVSlT7G/xjPQp25/XlHcTMqzFneRLQB7RBMEoVZMGS08TJOwb7A08F80MemcdHINfKu32W0vH+IkXftM80JzMMwcooM0HPx42rYm0kmYovhOdoDDOGXWEbBInQ7aTIQkW4/UkytdIVP3uk5sRoPVollMeu1FnvBBe0xU2xMCSTpd4gOQXGHittmYhgK2YCNdrKBRn/k/wULS9RsejCPV4FkUAeiZK2JSFphR4YZPddo3XLb/mUXwgoikAovQ4RyN2QqW+PRXI7GEuY9UN/DuEaDsdBNyKEddeYJnMRepZmDQEQr5RMbn4B5ObFaODKmkMe4lg/GE9sb11AgMBAAGjggGWMIIBkjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCYGA1UdEQQfMB2BG2NvbnRhYmlsaWRhZEBkaWZlbmFzLmNvbS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFOekfrMbj8D7XHBMrINSvd5DMeY9MA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAfeOGCQjp79Wh+8REraPlhIb7EOjJsbVR7W9eYNnIo2jDZMpBY8yxrQtcukGBjABn63L+N335eviU1hX6saLTXwcCrNrsYNYt4hQ7FQWaHsSp9AckMdRCxDvhIpQVheVKLLT/aSOV1loEa6J8A25wk5n+oS1nEex6x+7k210FcLOREyVbPxqrlCJPX8SCVcJOl84KOHlbrGmPDp2r30IycyM3mx7cJfIwNCbcNOXi46QqI6QINhooysZy4lSj7LqIDItzG3YaXlnauWSGPEsl8ggqcCOp5QdXSAeov+0tkTD9/83OA6/5Qv5dvp0x3Qq5JY4H/QBrh16SHQcHqxIMPw==2.12.0V002-00013582026-05-2913:11:1531V002-000135820555929006#SignatureSP2055592900620550744024SUNAT_Envio13Otros -20.4431012026-05-29205559290061567858CNG09251892CARLOSRIVAS MOLLEDAPrincipalQ09251892150123150143AV ATOCONGO 1860 VMT LIMA LIMA20100029741A. BERIO Y CIA S.A.C.AYI79200151840244D8L996148110101011
\ No newline at end of file
diff --git a/tests/correos_prueba/005_correo/pdf_resultado_005.json b/tests/correos_prueba/005_correo/pdf_resultado_005.json
new file mode 100644
index 0000000..10d0f57
--- /dev/null
+++ b/tests/correos_prueba/005_correo/pdf_resultado_005.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/005_correo/xml_resultado_005.json b/tests/correos_prueba/005_correo/xml_resultado_005.json
new file mode 100644
index 0000000..dd9d07a
--- /dev/null
+++ b/tests/correos_prueba/005_correo/xml_resultado_005.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/006_correo/20100811571-01-F011-2786-V002-4575.pdf b/tests/correos_prueba/006_correo/20100811571-01-F011-2786-V002-4575.pdf
new file mode 100644
index 0000000..5aad65e
Binary files /dev/null and b/tests/correos_prueba/006_correo/20100811571-01-F011-2786-V002-4575.pdf differ
diff --git a/tests/correos_prueba/006_correo/20100811571-01-F011-2786.xml b/tests/correos_prueba/006_correo/20100811571-01-F011-2786.xml
new file mode 100644
index 0000000..b21af7f
--- /dev/null
+++ b/tests/correos_prueba/006_correo/20100811571-01-F011-2786.xml
@@ -0,0 +1,267 @@
+
+
+
+
+0bVP8AHmCYXyChygo3XQvXBECu0=GF4e84jreud/2MfjRC07GPolo3Stke3dGsFachUWZMmdK3DVwD5eYPYaJ58uKPJCzgTn91ZiNPuz
+WMCrsW5hllzjD9VXaZVbna34EgzfdsbZml08nKXY2gi0n6cHo7WVfbDSCzx3fkuPfJc2iKnXmh9y
+owPQG0kFcCnsIVYNaudMNvSrtDptHIcLpEcCCpEL2+cED4RW8goDByzVVEyYMaTbDQ67fvtq9EcM
+4jqf877A7i4oYqKKJ1dyGG7VYIzTft8XGtV2uJjcjd3HQSvyqzSuGVkKIvbcp2q5/gxw5TvuyH6C
+tNk3cFIYN7l7gSzUzkbJiw58+Kms8L4neWuaGg==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 PABLOMIIFgzCCBGugAwIBAgIIWD+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=
+
+
+
+
+
+1000
+
+
+
+2006
+
+
+
+
+
+
+2.1
+2.0
+F011-00002786
+2026-05-30
+01
+
+
+PEN
+
+-00000000
+09
+
+
+SF011-00002786
+
+
+20100811571
+
+
+
+
+
+
+
+SF011-00002786
+
+
+
+
+
+
+20100811571
+
+
+
+
+
+
+
+150115
+0000
+
+LIMA
+LIMA
+LA VICTORIA
+
+
+
+
+PE
+
+
+
+
+
+
+
+
+20100029741
+
+
+
+
+LIMA
+LIMA
+VILLA MARIA DEL TRIUNFO
+
+
+
+
+PE
+
+
+
+
+
+
+Detraccion
+001
+
+00063008982
+
+
+
+Detraccion
+027
+4.0
+34.83
+
+
+FormaPago
+Credito
+870.74
+
+
+FormaPago
+Cuota001
+870.74
+2026-06-14
+
+
+132.82
+
+737.92
+132.82
+
+
+1000
+IGV
+VAT
+
+
+
+
+
+737.92
+737.92
+870.74
+870.74
+
+
+1
+1
+737.92
+
+
+870.7400000000
+01
+
+
+
+
+
+150142
+
+
+
+
+
+
+
+
+150143
+
+
+
+
+
+
+01
+870.74
+
+
+02
+870.74
+
+
+03
+870.74
+
+
+01
+
+
+
+
+01
+870.74
+
+
+
+
+
+false
+
+
+102.27
+
+
+
+
+02
+27.63
+
+
+
+
+
+132.82
+
+737.92
+132.82
+
+18.00000
+10
+
+1000
+IGV
+VAT
+
+
+
+
+
+
+
+SER02
+
+
+CodigoUnidad
+UNIDAD
+
+
+
+737.9152540000
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/006_correo/20100811571-01-T001-129813.pdf b/tests/correos_prueba/006_correo/20100811571-01-T001-129813.pdf
new file mode 100644
index 0000000..4a325e6
Binary files /dev/null and b/tests/correos_prueba/006_correo/20100811571-01-T001-129813.pdf differ
diff --git a/tests/correos_prueba/006_correo/20100811571-31-V002-4575.xml b/tests/correos_prueba/006_correo/20100811571-31-V002-4575.xml
new file mode 100644
index 0000000..e21f44b
--- /dev/null
+++ b/tests/correos_prueba/006_correo/20100811571-31-V002-4575.xml
@@ -0,0 +1,176 @@
+
+
+
+
+J3fFwys+URZdbF0QevDNGBPJe5E=jaTUTseluikf9R3QQRSjdKYvNMa67tuh+heIBuozY2mQicAIhbFEnST+EG9CpsqzGuW3vy58JGaO
+/MDvBTnF6wBJLftnGRUdC1YL/XVEx2XU5Z6V0xpG78E2fqwR7Wn89/8Nizoiyd4DiFlhPMTXoTBd
+VXV9tIxl58CMS0QnzNOP+bHB6dvLhAxhWUYx6iknqWTxrudp1QiVv+npUdxIIRxH8+nSEfXsnJvJ
+908fQ9Wuub0hBX/3Bh6S5LIBuZd4Ty1bsSvihR3MJrR+sVC03t2X3zhBmEPXGc1NpeAQkKhwe9/+
+o9vvRFUHQiMlFGbA+TrIAxWRCz1ebhSl+P0GaA==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 PABLOMIIFgzCCBGugAwIBAgIIWD+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=
+
+
+2.1
+2.0
+V002-00004575
+2026-05-30
+16:21:18
+31
+CONFIGURACION VEHICULAR T3 S3
+
+T001-00129813
+09
+Guia de Remision Remitente
+
+
+20100029741
+
+
+
+
+SV002-00004575
+
+
+20100811571
+
+
+
+
+
+
+
+SignSUNAT
+
+
+
+
+
+
+20100811571
+
+
+
+
+
+
+
+
+
+20100811571
+
+
+
+
+
+
+
+
+
+20100029741
+
+
+
+
+
+
+
+SUNAT_Envio
+27625.00
+SUNAT_Envio_IndicadorPagadorFlete_Remitente
+
+
+2026-05-30
+
+
+
+151263CNG
+
+
+
+09722754
+EMILIANO
+CERVANTES TINOCO
+Principal
+
+Q09722754
+
+
+
+
+
+150142
+
+
+
+
+
+
+150143
+
+
+
+
+
+
+20100029741
+
+
+
+
+
+
+
+
+
+B7C885
+
+15M22019210E
+
+
+151263CNG
+
+
+
+
+
+1
+650
+
+1
+
+
+
+
+CEM01
+
+
+Indicador de bien normalizado
+7022
+0
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/006_correo/pdf_resultado_006.json b/tests/correos_prueba/006_correo/pdf_resultado_006.json
new file mode 100644
index 0000000..b43d4c3
--- /dev/null
+++ b/tests/correos_prueba/006_correo/pdf_resultado_006.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/006_correo/xml_resultado_006.json b/tests/correos_prueba/006_correo/xml_resultado_006.json
new file mode 100644
index 0000000..ba9f499
--- /dev/null
+++ b/tests/correos_prueba/006_correo/xml_resultado_006.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/007_correo/10091153136-31-VPP1-516.xml b/tests/correos_prueba/007_correo/10091153136-31-VPP1-516.xml
new file mode 100644
index 0000000..d50fa28
--- /dev/null
+++ b/tests/correos_prueba/007_correo/10091153136-31-VPP1-516.xml
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ pGFus9mok5BsHOvwP9jXVzznwtgwSX8F9LIyJYnikxk=
+
+
+ jJovOUNvc7dTBurWODbsH4GaeGH3N7bFZkPjfHCS3BSNiQH4YR6ykNGLAzZY8M2SgP+y/RNHrUI3ZMfo+WQ6dXjXJYiC95lnYY3zf+KKT9XI/nsPztOUCtm8yyCO5W2zuZQkh9WQRJCg0G8TKwd7mf/gZ5xWurVWSzlMo9tyz+gRIyFsnt+nvSJ0Lx8d0VduUrNVsUBG31ruSdAavU0Dm5r86njdnlPLVnXVy42FMjlCAmgNEedtkFBQ0+ipCfTuCis8gUv5XI6GPBrCuwR3c1nO9Bmh+zVuijc4J1R6jLuPvRT96iMykyB1UXatK0isFcHG209moHUlpfn+C0OEoQ==
+
+
+ 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
+ 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=
+
+
+
+
+
+
+
+ 2.1
+ 2.0
+ VPP1-516
+ 2026-05-29
+ 16:28:14
+ 31
+ Obs: MARCA VEHICULO: VOLVO N CONF.VEHICULAR: T2 S2
+
+ T001-129749
+ 09
+ Guía de Remisión Remitente
+
+
+ 20100029741
+
+
+
+
+ 10091153136
+ WWW.NUBEFACT.COM
+
+
+ 10091153136
+
+
+ ZAPATA ARAPA EUSEBIO
+
+
+
+
+ 10091153136
+
+
+
+
+ 10091153136
+
+
+ 10091153136
+
+
+ ZAPATA ARAPA EUSEBIO
+
+
+
+
+
+
+ 10091153136
+
+
+ ZAPATA ARAPA EUSEBIO
+
+
+
+
+ SUNAT_Envio
+ 22.1
+
+
+ 2026-05-29
+
+
+
+ 1516491CNG
+
+
+
+
+ ABB758
+
+
+
+ 42327525
+ LUIS AUGUSTO
+ YARANGA MARTINEZ
+ Principal
+
+ Q42327525
+
+
+
+
+
+ 150142
+
+ PQ. INDUSTRIAL-AV. 1 DE MAYO MZ. C LT. 17- ADEICOSUR- PARC. 1 -VILLA EL SALVADOR - LIMA - LIMA
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 VILLA MARIA DE L TRIUNFO
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+
+
+
+
+ ABB758
+
+ 0151601857
+
+
+ A6T980
+
+ 0151834688
+
+
+
+
+
+
+
+ 1
+ 520.0
+
+ 2
+
+
+ CEMENTO SOL 42.50KG
+
+ CEM01
+
+
+
+
+
diff --git a/tests/correos_prueba/007_correo/xml_resultado_007.json b/tests/correos_prueba/007_correo/xml_resultado_007.json
new file mode 100644
index 0000000..7e2adec
--- /dev/null
+++ b/tests/correos_prueba/007_correo/xml_resultado_007.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/008_correo/20154645005-01-F002-52385.pdf b/tests/correos_prueba/008_correo/20154645005-01-F002-52385.pdf
new file mode 100644
index 0000000..7796a4c
Binary files /dev/null and b/tests/correos_prueba/008_correo/20154645005-01-F002-52385.pdf differ
diff --git a/tests/correos_prueba/008_correo/20154645005-01-F002-52385.xml b/tests/correos_prueba/008_correo/20154645005-01-F002-52385.xml
new file mode 100644
index 0000000..6a0340f
--- /dev/null
+++ b/tests/correos_prueba/008_correo/20154645005-01-F002-52385.xml
@@ -0,0 +1,148 @@
+
+
+
+
+ 6NbSu0QEYb5HGQuf2o/fytmMu+4=TtpCyWi8axTzZ1OX/x50gQmukTLf9RHEbkAD2f/RoraA4QzJU/LzVHt14Ld1wJaSRpPPrniWaIqz6NOn0PvBWDwJtpNSV01DiO1n9GiJa55jKlZG4DijFie+gbQcrkVepFcbGEb+sC1dqm+Z6Ag7bdXrt0V1PbQ8OTmghh0bKvi3g5rK6Zs+chENStqEzKLJ9lynMpLrFFBEl/2wH4pBCd2cxwphViBH7Vqq6on5k6HvQ0FzqhTjnXKVkdNTfjh3p6hZp4PDuaOmxNYJYtb18cyoWJlJJIboB22ur4ImZ65SLP4iIBdHmTru8HoI3Z0H9Huxel/veW2rnb2OepLywQ==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 VIRREYNAMIIFgzCCBGugAwIBAgIIGTcLfd6CAQswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTgzNDIxWhcNMjYxMDE0MTgzNDAwWjCCASYxNTAzBgNVBAkMLEFWLiBUT01BUyBNQVJTQU5PIE5STy4gNDMzMCBVUkIuIExBIFZJUlJFWU5BMSUwIwYJKoZIhvcNAQkBFhZkaXNfcGF0cmljaWFAeWFob28uY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjAxNTQ2NDUwMDUxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjErMCkGA1UECgwiRElTVFJJQlVJRE9SQSBTQU5UQSBQQVRSSUNJQSBTIFIgTDENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmsa8aNxkqzWWk19zfoD/cIhArrgjNFx0TeKtdN+/m+6y8ucQDeqbjtnTHEcLjyeGiWNzowP+VLI9EJFOhsQBHjDMUxF33BYdRQw4Ii5u72voovryE8EAIsuHUkrGwnI4q+ZYq3s/MF/dDNr1Fq5gQYcWju0Qcw5uR18+LDZPxc7IDwWEA9UY0Qe4G49GJWLIcoOEf2wpzQ1+YolBS8PNny9H4a9LjG3+XkCdkVL676PjEykMF/aMEQkSNPkkjiHzl+ftiQXuzAMT/1IxvCwfjwzXHqmHM91jeLk5POw0PkqxfFAvYIBzodXMNygBihmkpAeuXgBpH4qo1unqfdETDAgMBAAGjggGRMIIBjTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCEGA1UdEQQaMBiBFmRpc19wYXRyaWNpYUB5YWhvby5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBS5UPPPJNJvf5jr4HwdRfcu37ZOWTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAGXcN3ocVIpJ/GKOQwlnK3vF49BDGRbXmhrB8wg/VekOUQI6Z4AUMlAcLzi+K2rKJLwbf0bw0psOdLT6Gu2X1DP4bxPaVAqePxjY0t4H2QBmm5MZ8jxJIFgYzf53Bhgu7slJk2bRPsGt8ujAX4EjqyjfhVOnzzLk2QOH/beZK+GsaXduRxvnfBDbknYysdFTDq8J1Hn0lWHjYFhb76doEputR9KYkrTHmqFFyeOyJF2+waJkfDPuVVjWTmYlLLZCzKFKxrjWF/paNE2cJm28QcoVUxBi8o4lq9BHhkBnO54tLZRtnptbMnUkAsmXZg8SmoPpaWzAkCISrGAoTIAXm2M=
+
+
+ 2.1
+ 2.0
+ F002-00052385
+ 2026-05-27
+ 13:47:01
+ 01
+ QUINIENTOS NUEVE Y 05/100
+ OPERACION SUJETA A DETRACCION
+ PEN
+
+ 20154645005
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+
+
+ #SignatureKG
+
+
+
+
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+ 0000
+ LIMA
+ LIMA
+ SANTIAGO DE SURCO
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+
+
+ 001
+
+ 00000-451754
+
+
+
+ 027
+ 4
+ 20
+
+
+ FormaPago
+ Credito
+ 489.05
+
+
+ FormaPago
+ Cuota001
+ 489.05
+ 2026-06-06
+
+
+ 77.65
+
+ 431.40
+ 77.65
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 431.4
+ 509.05
+ 0
+ 509.05
+
+
+ 1
+ 1
+ 431.40
+
+
+ 509.050000
+ 01
+
+
+
+ 77.65
+
+ 431.40
+ 77.65
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ SE000001
+
+
+ 80141623
+
+
+
+ 431.398305
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/008_correo/20154645005-31-2605-33.pdf b/tests/correos_prueba/008_correo/20154645005-31-2605-33.pdf
new file mode 100644
index 0000000..cd96884
Binary files /dev/null and b/tests/correos_prueba/008_correo/20154645005-31-2605-33.pdf differ
diff --git a/tests/correos_prueba/008_correo/20154645005-31-V001-4156.xml b/tests/correos_prueba/008_correo/20154645005-31-V001-4156.xml
new file mode 100644
index 0000000..74d0a9c
--- /dev/null
+++ b/tests/correos_prueba/008_correo/20154645005-31-V001-4156.xml
@@ -0,0 +1,130 @@
+
+
+
+
+ J59YkgHRtOUOgTDb+AsI0L9wUwo=E9cCCqtUJWIhTHxgOmfjBVVrTj0vvKDOzSnYz+RQPgbQokF95kUVYv/I10d0y5MsgFQy+ivoNd4ULp5B0kI1CsEXRFlxb5ZPhur2LXpbnMzynmccOfmIbpp7ke5OE+5DNeeC/B6fCpoPp3sjBsD9WYDY2JktLcrIpXiRNeQycH3SIkOxsMSnQCfmqH7pn30kqO8nlJEcb0r0bCu8c/AvexYXW0iEWeKPgpkPyVlHjHGE01hVBhGy09oFspYepeu7T2rQEfGXsyYfJxNHzjdUvLmZJBkV5GZcMfAJ4DCXv1jazNydCDQbH4UnnAmQN3mgz0rO3HJDasKD5OQayPZ4cw==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 VIRREYNAMIIFgzCCBGugAwIBAgIIGTcLfd6CAQswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTgzNDIxWhcNMjYxMDE0MTgzNDAwWjCCASYxNTAzBgNVBAkMLEFWLiBUT01BUyBNQVJTQU5PIE5STy4gNDMzMCBVUkIuIExBIFZJUlJFWU5BMSUwIwYJKoZIhvcNAQkBFhZkaXNfcGF0cmljaWFAeWFob28uY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjAxNTQ2NDUwMDUxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjErMCkGA1UECgwiRElTVFJJQlVJRE9SQSBTQU5UQSBQQVRSSUNJQSBTIFIgTDENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmsa8aNxkqzWWk19zfoD/cIhArrgjNFx0TeKtdN+/m+6y8ucQDeqbjtnTHEcLjyeGiWNzowP+VLI9EJFOhsQBHjDMUxF33BYdRQw4Ii5u72voovryE8EAIsuHUkrGwnI4q+ZYq3s/MF/dDNr1Fq5gQYcWju0Qcw5uR18+LDZPxc7IDwWEA9UY0Qe4G49GJWLIcoOEf2wpzQ1+YolBS8PNny9H4a9LjG3+XkCdkVL676PjEykMF/aMEQkSNPkkjiHzl+ftiQXuzAMT/1IxvCwfjwzXHqmHM91jeLk5POw0PkqxfFAvYIBzodXMNygBihmkpAeuXgBpH4qo1unqfdETDAgMBAAGjggGRMIIBjTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCEGA1UdEQQaMBiBFmRpc19wYXRyaWNpYUB5YWhvby5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBS5UPPPJNJvf5jr4HwdRfcu37ZOWTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAGXcN3ocVIpJ/GKOQwlnK3vF49BDGRbXmhrB8wg/VekOUQI6Z4AUMlAcLzi+K2rKJLwbf0bw0psOdLT6Gu2X1DP4bxPaVAqePxjY0t4H2QBmm5MZ8jxJIFgYzf53Bhgu7slJk2bRPsGt8ujAX4EjqyjfhVOnzzLk2QOH/beZK+GsaXduRxvnfBDbknYysdFTDq8J1Hn0lWHjYFhb76doEputR9KYkrTHmqFFyeOyJF2+waJkfDPuVVjWTmYlLLZCzKFKxrjWF/paNE2cJm28QcoVUxBi8o4lq9BHhkBnO54tLZRtnptbMnUkAsmXZg8SmoPpaWzAkCISrGAoTIAXm2M=
+
+
+ 2.1
+ 2.0
+ V001-00004156
+ 2026-05-25
+ 00:00:00
+ 31
+ SEGÚN: GR T001-0129437, CODIGO DE INSCRIPCION : 151903049
+
+ 20154645005
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+
+
+ #SignatureKG
+
+
+
+
+ 20154645005
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA SRL
+ 1525019CNG
+
+
+
+
+ 20154645005
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+
+
+ SUNAT_Envio
+ 16150
+ SUNAT_Envio_IndicadorPagadorFlete_Remitente
+
+
+
+ 1525019CNG
+
+
+
+
+
+ 42833005
+ RUBEN
+ PEREZ HUACHO
+ Principal
+
+ Q42833005
+
+
+
+
+
+ 2026-05-25
+
+
+
+
+ 150140
+ JR. LOMA DE LOS PENSAMIENTOS MZ. W4 LT. 7 URB. PROL. BENAVIDES
+
+ JR. LOMA DE LOS PENSAMIENTOS MZ. W4 LT. 7 URB. PROL. BENAVIDES
+
+
+
+
+ 150143
+ AV. ATOCONGO 1860
+
+ AV. ATOCONGO 1860
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+
+
+
+
+ A1Y872
+
+
+
+
+ 1
+ 380
+
+ 1
+
+
+ CEMENTO APU
+ CEMENTO APU
+
+ CE000002
+
+
+ 30111601
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/008_correo/pdf_resultado_008.json b/tests/correos_prueba/008_correo/pdf_resultado_008.json
new file mode 100644
index 0000000..2997b37
--- /dev/null
+++ b/tests/correos_prueba/008_correo/pdf_resultado_008.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/008_correo/xml_resultado_008.json b/tests/correos_prueba/008_correo/xml_resultado_008.json
new file mode 100644
index 0000000..e2dd1cf
--- /dev/null
+++ b/tests/correos_prueba/008_correo/xml_resultado_008.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407-VPP1-516.pdf b/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407-VPP1-516.pdf
new file mode 100644
index 0000000..9801f98
Binary files /dev/null and b/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407-VPP1-516.pdf differ
diff --git a/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.pdf b/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.pdf
new file mode 100644
index 0000000..ab4a7ad
Binary files /dev/null and b/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.pdf differ
diff --git a/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.xml b/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.xml
new file mode 100644
index 0000000..0c77919
--- /dev/null
+++ b/tests/correos_prueba/009_correo/10091153136-01-FPP1-15407.xml
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ G7SzTRDnTkSZdOyu+9zgFKHwWnx55GfjPVWrIV1uLx4=
+
+
+ AjOMqnf60Ht+zfmOSy8RcWl2nzXAFSwAiLXKQ6UwumxeXiIuD0oBhRNTPv5AGXHUELJsFAozlPNQOm/NNMvALdTa0JG3OCJuhCD8Bj4CanCfgF4ucl5QbwjZaZDSqeKCseE9iHcOdi/oOSdeI2r6d3OaO1wu4tRNM+DeagQep3RscEHNsLIY5TtXcfHXYXTDmEYywfR6sBWlHGLc+OnzbCrgB3/oa6ZbWUmdMDaRcfa82efT1GFpRJ+x6naq/7WxfheGnyLx/jv1NUx5gleaBKboT2eFTb/bsedGWFhnRFO0IySk0VbsdZlSB0BkCbuADDA7gJ7KpRSSxOk/36YSnA==
+
+
+ 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
+ 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=
+
+
+
+
+
+
+
+ 2.1
+ 2.0
+ FPP1-15407
+ 2026-05-29
+ 16:32:15
+ 01
+ SEISCIENTOS NOVENTA Y SEIS CON 59/100 SOLES
+ Operacion sujeta a detraccion
+ PEN
+
+ 10091153136
+ WWW.NUBEFACT.COM
+
+
+ 10091153136
+
+
+ ZAPATA ARAPA EUSEBIO
+
+
+
+
+ 10091153136
+
+
+
+
+
+
+ 10091153136
+
+
+ FERRETERÍA DEPOSITO 1° DE MAYO
+
+
+ ZAPATA ARAPA EUSEBIO
+
+ 150142
+ 0000
+ LIMA
+ LIMA
+ VILLA SALVADOR
+
+ Av. 1 DE MAYO MZ C LT 17 ADEICOSUR, PARQUE INDUSTRIAL
+
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+ AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES - LIMA LIMA VILLA MARIA DEL TRIUNFO
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 0000000000
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 28.00
+
+
+ FormaPago
+ Credito
+ 668.59
+
+
+ FormaPago
+ Cuota001
+ 668.59
+ 2026-06-29
+
+
+ 106.26
+
+ 590.33
+ 106.26
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 590.33
+ 696.59
+ 0.00
+ 0.00
+ 0.00
+ 696.59
+
+
+
+ 1
+ 520.0
+ 590.33
+
+
+ 1.3396
+ 01
+
+
+
+ 106.26
+
+ 590.33
+ 106.26
+
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 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
+
+ 001
+
+
+
+ 1.1352542373
+
+
+
+
diff --git a/tests/correos_prueba/009_correo/10091153136-31-VPP1-516.xml b/tests/correos_prueba/009_correo/10091153136-31-VPP1-516.xml
new file mode 100644
index 0000000..d50fa28
--- /dev/null
+++ b/tests/correos_prueba/009_correo/10091153136-31-VPP1-516.xml
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ pGFus9mok5BsHOvwP9jXVzznwtgwSX8F9LIyJYnikxk=
+
+
+ jJovOUNvc7dTBurWODbsH4GaeGH3N7bFZkPjfHCS3BSNiQH4YR6ykNGLAzZY8M2SgP+y/RNHrUI3ZMfo+WQ6dXjXJYiC95lnYY3zf+KKT9XI/nsPztOUCtm8yyCO5W2zuZQkh9WQRJCg0G8TKwd7mf/gZ5xWurVWSzlMo9tyz+gRIyFsnt+nvSJ0Lx8d0VduUrNVsUBG31ruSdAavU0Dm5r86njdnlPLVnXVy42FMjlCAmgNEedtkFBQ0+ipCfTuCis8gUv5XI6GPBrCuwR3c1nO9Bmh+zVuijc4J1R6jLuPvRT96iMykyB1UXatK0isFcHG209moHUlpfn+C0OEoQ==
+
+
+ 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
+ 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=
+
+
+
+
+
+
+
+ 2.1
+ 2.0
+ VPP1-516
+ 2026-05-29
+ 16:28:14
+ 31
+ Obs: MARCA VEHICULO: VOLVO N CONF.VEHICULAR: T2 S2
+
+ T001-129749
+ 09
+ Guía de Remisión Remitente
+
+
+ 20100029741
+
+
+
+
+ 10091153136
+ WWW.NUBEFACT.COM
+
+
+ 10091153136
+
+
+ ZAPATA ARAPA EUSEBIO
+
+
+
+
+ 10091153136
+
+
+
+
+ 10091153136
+
+
+ 10091153136
+
+
+ ZAPATA ARAPA EUSEBIO
+
+
+
+
+
+
+ 10091153136
+
+
+ ZAPATA ARAPA EUSEBIO
+
+
+
+
+ SUNAT_Envio
+ 22.1
+
+
+ 2026-05-29
+
+
+
+ 1516491CNG
+
+
+
+
+ ABB758
+
+
+
+ 42327525
+ LUIS AUGUSTO
+ YARANGA MARTINEZ
+ Principal
+
+ Q42327525
+
+
+
+
+
+ 150142
+
+ PQ. INDUSTRIAL-AV. 1 DE MAYO MZ. C LT. 17- ADEICOSUR- PARC. 1 -VILLA EL SALVADOR - LIMA - LIMA
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 VILLA MARIA DE L TRIUNFO
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+
+
+
+
+ ABB758
+
+ 0151601857
+
+
+ A6T980
+
+ 0151834688
+
+
+
+
+
+
+
+ 1
+ 520.0
+
+ 2
+
+
+ CEMENTO SOL 42.50KG
+
+ CEM01
+
+
+
+
+
diff --git a/tests/correos_prueba/009_correo/pdf_resultado_009.json b/tests/correos_prueba/009_correo/pdf_resultado_009.json
new file mode 100644
index 0000000..91c7f1c
--- /dev/null
+++ b/tests/correos_prueba/009_correo/pdf_resultado_009.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/009_correo/xml_resultado_009.json b/tests/correos_prueba/009_correo/xml_resultado_009.json
new file mode 100644
index 0000000..dc710ff
--- /dev/null
+++ b/tests/correos_prueba/009_correo/xml_resultado_009.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/010_correo/10154500010-01-FF01-3308.pdf b/tests/correos_prueba/010_correo/10154500010-01-FF01-3308.pdf
new file mode 100644
index 0000000..9aafb33
Binary files /dev/null and b/tests/correos_prueba/010_correo/10154500010-01-FF01-3308.pdf differ
diff --git a/tests/correos_prueba/010_correo/10154500010-31-2605-33.pdf b/tests/correos_prueba/010_correo/10154500010-31-2605-33.pdf
new file mode 100644
index 0000000..859b38c
Binary files /dev/null and b/tests/correos_prueba/010_correo/10154500010-31-2605-33.pdf differ
diff --git a/tests/correos_prueba/010_correo/10154500010-31-EG03-216.xml b/tests/correos_prueba/010_correo/10154500010-31-EG03-216.xml
new file mode 100644
index 0000000..3998919
--- /dev/null
+++ b/tests/correos_prueba/010_correo/10154500010-31-EG03-216.xml
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+ LRNvMuKGRIobuArlf74KDR/Lcpg=
+
+
+ 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PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA9211231144834552139Cumple propositoCumple revocacionCumple tslNo ha expirado
+
+ 2.1
+ 2.0
+
+
+
+ 2026-05-29
+ 01:31:47
+ 31
+
+
+
+
+ 09
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #SUNAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31.45
+
+
+
+
+
+
+
+
+ SUNAT_Envio_IndicadorPagadorFlete_Remitente
+
+
+
+
+
+
+
+
+
+
+
+ 2026-05-29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QUINTANA QUISPE GERARDO
+
+
+ QUINTANA QUISPE GERARDO
+
+
+ Principal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 15M25060472E
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 15M25060473E
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/010_correo/CDR-10154500010-01-FF01-3308.xml b/tests/correos_prueba/010_correo/CDR-10154500010-01-FF01-3308.xml
new file mode 100644
index 0000000..fa6f4a5
--- /dev/null
+++ b/tests/correos_prueba/010_correo/CDR-10154500010-01-FF01-3308.xml
@@ -0,0 +1,54 @@
+
+
+
+ ++vnz3BA+AEgNvaNnn09EAeVPnx8MvxiZFfdr66SKzM=XshakaqeaE2tLh9WLCy3Yh/hFbp22djvtmq3AxjRL4zIA0VJzL/dePHQopZ89Gd2uRpMfRI33m9zZkNTbyRPvz3JorVZspo7lpKUxqolX5o+EeB4N5XI/5Et5kq/m2ptEpyZvtdB4EwU4AswzYdUAaAEuh9PzDtkRUM8YnzWG4L0CzlGEGwtl6hsSB9WWOWoOAMQ3IMdlyAB1lGmieUmTiDSjhQraGRI2kkQHfDzi2zqX3TglWAoz7avrUlrifOfb3PORh4wmae6HE5ecpG31eFBHazEQOGJaokfrj33E1TQvIG8qAs/qy1g4cnih+IlJjhBcPsmCr4h3Jocr6Wx6Q==C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CAMIIFrjCCBJagAwIBAgIIc2eNOs0y3WswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwMTI1MTkyMzQxWhcNMjYwMTI0MTkyMzAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/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
+
+ 2.1
+ 1.0
+ 427906d5-dcc7-4922-bf74-32f599a3e547
+ 2026-05-29
+ 08:25:10.93801
+ 2026-05-29
+ 08:25:10.97135
+
+ SignSUNAT
+
+
+ 20131312955
+
+
+ SUNAT
+
+
+
+
+ #SignSUNAT
+
+
+
+
+
+ 20131312955
+
+
+
+
+ 10154500010
+
+
+
+
+ FF01-3308
+ 0
+ La Factura numero FF01-3308, ha sido aceptado
+
+
+ FF01-3308
+
+
+
+ 6-20100029741
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/010_correo/pdf_resultado_010.json b/tests/correos_prueba/010_correo/pdf_resultado_010.json
new file mode 100644
index 0000000..ca32fff
--- /dev/null
+++ b/tests/correos_prueba/010_correo/pdf_resultado_010.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/010_correo/xml_resultado_010.json b/tests/correos_prueba/010_correo/xml_resultado_010.json
new file mode 100644
index 0000000..be6eba1
--- /dev/null
+++ b/tests/correos_prueba/010_correo/xml_resultado_010.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.pdf b/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.pdf
new file mode 100644
index 0000000..2c45bee
Binary files /dev/null and b/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.pdf differ
diff --git a/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.xml b/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.xml
new file mode 100644
index 0000000..2104991
--- /dev/null
+++ b/tests/correos_prueba/011_correo/20516287641-01-FF03-1100.xml
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ iqqbui/4mECjZwCUF7Pzs/N3icjZktM24HG7wEB4PM4=
+
+
+ W8oT+dnoylFsSrUUc8Wn0o1ly02bKaD95gC3IRnhe/TmtbezqYzPPgpB4/QpgcAUO0o62OH7N7F7n0YY0qBIjBrTQ8dZrUe5MC8EeulFYRRfZg+tWVQC0+xpxUuAmNWio8qakT/dXC1pK/mjFJU3y3v4OoU4u02uCRinNt27NB/TYlOC0pyF5/bM0W3EuQ/p8wDEyelevBnU/rbJkXXaEpMR+OhV+3SPoS5jFED/RW0V1MqWhKZxjU2nv2Vl72T9i9lSY8Sf+bTIpqxRCbEQsrZ0f2k19FiDAkyPxAJOy9+TQjhQgg4cuNVp5Oi8BuMI9hp6Bhkq6T+9DD3IA0sOYQ==
+
+
+ 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
+ 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=
+
+
+
+
+
+
+
+ 2.1
+ 2.0
+ FF03-1100
+ 2026-05-28
+ 21:01:03
+ 01
+ TRESCIENTOS SESENTA Y UNO CON 69/100 SOLES
+ Obs: OPERACION SUJETA AL SPOT CON EL GOBIERNO CENTRAL CTA CTE 00-058-189227-BANCO DE LA NACION N REG MTC 1548287 CNG
+ PEN
+
+ 20516287641
+ WWW.NUBEFACT.COM
+
+
+ 20516287641
+
+
+ FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL
+
+
+
+
+ 20516287641
+
+
+
+
+
+
+ 20516287641
+
+
+ FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL
+
+
+ FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL
+
+ 150133
+ 0000
+ LIMA
+ LIMA
+ SAN JUAN DE MIRAFLORES
+
+ MZA. H2 LOTE. 31 P.J. PAMPLONA ALTA-SEC M. GRAU (AV SOLIDARIDAD CON SALVADOR ALLENDE) LIMA - LIMA - SAN JUAN DE MIRAFLORES
+
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+ AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES (PARADERO 14 NUEVA ESPERANZA - PISO 2) LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+
+
+ FormaPago
+ Credito
+ 361.69
+
+
+ FormaPago
+ Cuota001
+ 361.69
+ 2026-06-28
+
+
+ 55.17
+
+ 306.52
+ 55.17
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 306.52
+ 361.69
+ 0.00
+ 0.00
+ 0.00
+ 361.69
+
+
+
+ 1
+ 1.0
+ 306.52
+
+
+ 361.6936
+ 01
+
+
+
+ 55.17
+
+ 306.52
+ 55.17
+
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 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.
+
+ 01
+
+
+
+ 306.52
+
+
+
+
diff --git a/tests/correos_prueba/011_correo/20516287641-31-EG03-253.pdf b/tests/correos_prueba/011_correo/20516287641-31-EG03-253.pdf
new file mode 100644
index 0000000..7a2cbed
Binary files /dev/null and b/tests/correos_prueba/011_correo/20516287641-31-EG03-253.pdf differ
diff --git a/tests/correos_prueba/011_correo/20516287641-31-EG03-253.xml b/tests/correos_prueba/011_correo/20516287641-31-EG03-253.xml
new file mode 100644
index 0000000..67a1373
--- /dev/null
+++ b/tests/correos_prueba/011_correo/20516287641-31-EG03-253.xml
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+ sWk7w54B3qSkE66OsIliqVPlC98=
+
+
+ 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PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA9211231144834552139Cumple propositoCumple revocacionCumple tslNo ha expirado
+
+ 2.1
+ 2.0
+
+
+
+ 2026-05-22
+ 16:26:26
+ 31
+
+
+
+
+
+ 01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #SUNAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11.475
+
+
+
+
+
+
+
+
+ SUNAT_Envio_IndicadorPagadorFlete_Remitente
+
+
+
+
+
+
+
+
+
+
+
+ 2026-05-22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CUELLAR ALMERCO EDWIN GUIDO
+
+
+ CUELLAR ALMERCO EDWIN GUIDO
+
+
+ Principal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0151319401
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 270
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/011_correo/pdf_resultado_011.json b/tests/correos_prueba/011_correo/pdf_resultado_011.json
new file mode 100644
index 0000000..7392532
--- /dev/null
+++ b/tests/correos_prueba/011_correo/pdf_resultado_011.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/011_correo/xml_resultado_011.json b/tests/correos_prueba/011_correo/xml_resultado_011.json
new file mode 100644
index 0000000..51a0b3f
--- /dev/null
+++ b/tests/correos_prueba/011_correo/xml_resultado_011.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/012_correo/20220631541-01-E001-6942.pdf b/tests/correos_prueba/012_correo/20220631541-01-E001-6942.pdf
new file mode 100644
index 0000000..ab29efc
Binary files /dev/null and b/tests/correos_prueba/012_correo/20220631541-01-E001-6942.pdf differ
diff --git a/tests/correos_prueba/012_correo/20220631541-01-E001-6942.xml b/tests/correos_prueba/012_correo/20220631541-01-E001-6942.xml
new file mode 100644
index 0000000..50476aa
--- /dev/null
+++ b/tests/correos_prueba/012_correo/20220631541-01-E001-6942.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ jp+43Xx8RPmSvDKRvsjnomUPipo=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-6942
+ 2026-05-30
+ 10:54:25.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-6942
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20220631541
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00571016788
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 57.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 1363.65
+
+
+
+ FormaPago
+ Cuota001
+ 1363.65
+ 2026-06-12
+
+
+
+
+
+
+ 216.71
+
+
+
+
+ 1203.94
+ 216.71
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1203.94
+ 0.00
+ 0.00
+ 0.00
+
+ 1420.65
+
+
+
+ 1
+ 1.00
+ 1203.941
+
+ false
+
+
+
+ 1420.65038
+ 01
+
+
+
+
+
+
+ 150509
+
+ AV. PANAMERICANA NRO 602 - LIMA - CAÑETE - MALA
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 216.70938
+
+
+
+
+
+ 1203.941
+ 216.70938
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1203.941
+
+
+
+
diff --git a/tests/correos_prueba/012_correo/20220631541-31-EG03-2502.pdf b/tests/correos_prueba/012_correo/20220631541-31-EG03-2502.pdf
new file mode 100644
index 0000000..9dbd648
Binary files /dev/null and b/tests/correos_prueba/012_correo/20220631541-31-EG03-2502.pdf differ
diff --git a/tests/correos_prueba/012_correo/pdf_resultado_012.json b/tests/correos_prueba/012_correo/pdf_resultado_012.json
new file mode 100644
index 0000000..74bc4c4
--- /dev/null
+++ b/tests/correos_prueba/012_correo/pdf_resultado_012.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/012_correo/xml_resultado_012.json b/tests/correos_prueba/012_correo/xml_resultado_012.json
new file mode 100644
index 0000000..f300d57
--- /dev/null
+++ b/tests/correos_prueba/012_correo/xml_resultado_012.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.pdf b/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.pdf
new file mode 100644
index 0000000..2c45bee
Binary files /dev/null and b/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.pdf differ
diff --git a/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.xml b/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.xml
new file mode 100644
index 0000000..2104991
--- /dev/null
+++ b/tests/correos_prueba/013_correo/20516287641-01-FF03-1100.xml
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ iqqbui/4mECjZwCUF7Pzs/N3icjZktM24HG7wEB4PM4=
+
+
+ W8oT+dnoylFsSrUUc8Wn0o1ly02bKaD95gC3IRnhe/TmtbezqYzPPgpB4/QpgcAUO0o62OH7N7F7n0YY0qBIjBrTQ8dZrUe5MC8EeulFYRRfZg+tWVQC0+xpxUuAmNWio8qakT/dXC1pK/mjFJU3y3v4OoU4u02uCRinNt27NB/TYlOC0pyF5/bM0W3EuQ/p8wDEyelevBnU/rbJkXXaEpMR+OhV+3SPoS5jFED/RW0V1MqWhKZxjU2nv2Vl72T9i9lSY8Sf+bTIpqxRCbEQsrZ0f2k19FiDAkyPxAJOy9+TQjhQgg4cuNVp5Oi8BuMI9hp6Bhkq6T+9DD3IA0sOYQ==
+
+
+ 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
+ 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=
+
+
+
+
+
+
+
+ 2.1
+ 2.0
+ FF03-1100
+ 2026-05-28
+ 21:01:03
+ 01
+ TRESCIENTOS SESENTA Y UNO CON 69/100 SOLES
+ Obs: OPERACION SUJETA AL SPOT CON EL GOBIERNO CENTRAL CTA CTE 00-058-189227-BANCO DE LA NACION N REG MTC 1548287 CNG
+ PEN
+
+ 20516287641
+ WWW.NUBEFACT.COM
+
+
+ 20516287641
+
+
+ FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL
+
+
+
+
+ 20516287641
+
+
+
+
+
+
+ 20516287641
+
+
+ FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL
+
+
+ FERREMAURO Y HNOS SOCIEDAD COMERCIAL DE RESPONSABILIDAD LIMITADA - FERREMAURO Y HNOS SRL
+
+ 150133
+ 0000
+ LIMA
+ LIMA
+ SAN JUAN DE MIRAFLORES
+
+ MZA. H2 LOTE. 31 P.J. PAMPLONA ALTA-SEC M. GRAU (AV SOLIDARIDAD CON SALVADOR ALLENDE) LIMA - LIMA - SAN JUAN DE MIRAFLORES
+
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+ AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES (PARADERO 14 NUEVA ESPERANZA - PISO 2) LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+
+
+ FormaPago
+ Credito
+ 361.69
+
+
+ FormaPago
+ Cuota001
+ 361.69
+ 2026-06-28
+
+
+ 55.17
+
+ 306.52
+ 55.17
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 306.52
+ 361.69
+ 0.00
+ 0.00
+ 0.00
+ 361.69
+
+
+
+ 1
+ 1.0
+ 306.52
+
+
+ 361.6936
+ 01
+
+
+
+ 55.17
+
+ 306.52
+ 55.17
+
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 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.
+
+ 01
+
+
+
+ 306.52
+
+
+
+
diff --git a/tests/correos_prueba/013_correo/20516287641-31-EG03-253.pdf b/tests/correos_prueba/013_correo/20516287641-31-EG03-253.pdf
new file mode 100644
index 0000000..7a2cbed
Binary files /dev/null and b/tests/correos_prueba/013_correo/20516287641-31-EG03-253.pdf differ
diff --git a/tests/correos_prueba/013_correo/20516287641-31-EG03-253.xml b/tests/correos_prueba/013_correo/20516287641-31-EG03-253.xml
new file mode 100644
index 0000000..67a1373
--- /dev/null
+++ b/tests/correos_prueba/013_correo/20516287641-31-EG03-253.xml
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+ sWk7w54B3qSkE66OsIliqVPlC98=
+
+
+ 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PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA9211231144834552139Cumple propositoCumple revocacionCumple tslNo ha expirado
+
+ 2.1
+ 2.0
+
+
+
+ 2026-05-22
+ 16:26:26
+ 31
+
+
+
+
+
+ 01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #SUNAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11.475
+
+
+
+
+
+
+
+
+ SUNAT_Envio_IndicadorPagadorFlete_Remitente
+
+
+
+
+
+
+
+
+
+
+
+ 2026-05-22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CUELLAR ALMERCO EDWIN GUIDO
+
+
+ CUELLAR ALMERCO EDWIN GUIDO
+
+
+ Principal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0151319401
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 270
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/013_correo/pdf_resultado_013.json b/tests/correos_prueba/013_correo/pdf_resultado_013.json
new file mode 100644
index 0000000..4df6268
--- /dev/null
+++ b/tests/correos_prueba/013_correo/pdf_resultado_013.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/013_correo/xml_resultado_013.json b/tests/correos_prueba/013_correo/xml_resultado_013.json
new file mode 100644
index 0000000..bb1dcea
--- /dev/null
+++ b/tests/correos_prueba/013_correo/xml_resultado_013.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/014_correo/10154500010-01-FF01-3308.pdf b/tests/correos_prueba/014_correo/10154500010-01-FF01-3308.pdf
new file mode 100644
index 0000000..9aafb33
Binary files /dev/null and b/tests/correos_prueba/014_correo/10154500010-01-FF01-3308.pdf differ
diff --git a/tests/correos_prueba/014_correo/10154500010-31-2605-33.pdf b/tests/correos_prueba/014_correo/10154500010-31-2605-33.pdf
new file mode 100644
index 0000000..859b38c
Binary files /dev/null and b/tests/correos_prueba/014_correo/10154500010-31-2605-33.pdf differ
diff --git a/tests/correos_prueba/014_correo/10154500010-31-EG03-216.xml b/tests/correos_prueba/014_correo/10154500010-31-EG03-216.xml
new file mode 100644
index 0000000..3998919
--- /dev/null
+++ b/tests/correos_prueba/014_correo/10154500010-31-EG03-216.xml
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+ LRNvMuKGRIobuArlf74KDR/Lcpg=
+
+
+ eIySJdU3J3ZZxhOLcqLx9BqFBYodYvOTo5bZnLr5Mnh9n9xWPCaax24IWjVVcxCXXyXOe1m/8QJ4Zg9V8YvCnNYLFw1NcDOueLijfa3JxTZ0bU91pziPRcM81l3AK1/fy0A96W5FswvwDOtmJ8FZb3ezEIM9UuYnlh7UkwcfmjEqINE28zQZqWALzRljpCkGDeYPNXU2Z89xdwRqVUyA0bbMB0HvtNYDqRjcOLpp4vv3lyAhcnE5LQQ5au/7Wm6JXPiMgwROumE9RhMpD1OcKr3sRm0ZYn7OQRIHIqHtES0g6E2cxrPIJ71bSW4eCa8s16HjmvIxzILJYHxWmSqw2Q==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+J0KnDDcfJlhxgnkgoT5tV3Sr6z5PpQH6C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CA9211231144834552139Cumple propositoCumple revocacionCumple tslNo ha expirado
+
+ 2.1
+ 2.0
+
+
+
+ 2026-05-29
+ 01:31:47
+ 31
+
+
+
+
+ 09
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #SUNAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31.45
+
+
+
+
+
+
+
+
+ SUNAT_Envio_IndicadorPagadorFlete_Remitente
+
+
+
+
+
+
+
+
+
+
+
+ 2026-05-29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QUINTANA QUISPE GERARDO
+
+
+ QUINTANA QUISPE GERARDO
+
+
+ Principal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 15M25060472E
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 15M25060473E
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/014_correo/CDR-10154500010-01-FF01-3308.xml b/tests/correos_prueba/014_correo/CDR-10154500010-01-FF01-3308.xml
new file mode 100644
index 0000000..fa6f4a5
--- /dev/null
+++ b/tests/correos_prueba/014_correo/CDR-10154500010-01-FF01-3308.xml
@@ -0,0 +1,54 @@
+
+
+
+ ++vnz3BA+AEgNvaNnn09EAeVPnx8MvxiZFfdr66SKzM=XshakaqeaE2tLh9WLCy3Yh/hFbp22djvtmq3AxjRL4zIA0VJzL/dePHQopZ89Gd2uRpMfRI33m9zZkNTbyRPvz3JorVZspo7lpKUxqolX5o+EeB4N5XI/5Et5kq/m2ptEpyZvtdB4EwU4AswzYdUAaAEuh9PzDtkRUM8YnzWG4L0CzlGEGwtl6hsSB9WWOWoOAMQ3IMdlyAB1lGmieUmTiDSjhQraGRI2kkQHfDzi2zqX3TglWAoz7avrUlrifOfb3PORh4wmae6HE5ecpG31eFBHazEQOGJaokfrj33E1TQvIG8qAs/qy1g4cnih+IlJjhBcPsmCr4h3Jocr6Wx6Q==C=PE, O=LLAMA.PE, CN=Llama.pe SHA256 Standard CAMIIFrjCCBJagAwIBAgIIc2eNOs0y3WswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwMTI1MTkyMzQxWhcNMjYwMTI0MTkyMzAwWjCCAVQxKzApBgNVBAkMIkFWLiBHQVJDSUxBU08gREUgTEEgVkVHQSBOUk8uIDE0NzIxIjAgBgkqhkiG9w0BCQEWE3JtZXphZ0BzdW5hdC5nb2IucGUxQTA/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
+
+ 2.1
+ 1.0
+ 427906d5-dcc7-4922-bf74-32f599a3e547
+ 2026-05-29
+ 08:25:10.93801
+ 2026-05-29
+ 08:25:10.97135
+
+ SignSUNAT
+
+
+ 20131312955
+
+
+ SUNAT
+
+
+
+
+ #SignSUNAT
+
+
+
+
+
+ 20131312955
+
+
+
+
+ 10154500010
+
+
+
+
+ FF01-3308
+ 0
+ La Factura numero FF01-3308, ha sido aceptado
+
+
+ FF01-3308
+
+
+
+ 6-20100029741
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/014_correo/pdf_resultado_014.json b/tests/correos_prueba/014_correo/pdf_resultado_014.json
new file mode 100644
index 0000000..98d3059
--- /dev/null
+++ b/tests/correos_prueba/014_correo/pdf_resultado_014.json
@@ -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"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/014_correo/xml_resultado_014.json b/tests/correos_prueba/014_correo/xml_resultado_014.json
new file mode 100644
index 0000000..0889ada
--- /dev/null
+++ b/tests/correos_prueba/014_correo/xml_resultado_014.json
@@ -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
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/015_correo/20552807970-01-E001-2403.pdf b/tests/correos_prueba/015_correo/20552807970-01-E001-2403.pdf
new file mode 100644
index 0000000..e902596
Binary files /dev/null and b/tests/correos_prueba/015_correo/20552807970-01-E001-2403.pdf differ
diff --git a/tests/correos_prueba/015_correo/20552807970-01-E001-2403.xml b/tests/correos_prueba/015_correo/20552807970-01-E001-2403.xml
new file mode 100644
index 0000000..51b0527
--- /dev/null
+++ b/tests/correos_prueba/015_correo/20552807970-01-E001-2403.xml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+ fHXaBZDbcyFKAwxERtUkQx3t8KU=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-2403
+ 2026-06-13
+ 11:51:27.0Z
+
+ 01
+
+
+ PEN
+
+ T001 - 00130229
+ 09
+
+
+
+ 0002 - 000608
+ 31
+
+
+
+
+ E001-2403
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20552807970
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00061035508
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 41.81
+
+
+
+
+
+ FormaPago
+ Credito
+ 1003.39
+
+
+
+ FormaPago
+ Cuota001
+ 1003.39
+ 2026-07-03
+
+
+
+
+
+
+ 159.44
+
+
+
+
+ 885.76
+ 159.44
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 885.76
+ 0.00
+ 0.00
+ 0.00
+
+ 1045.20
+
+
+
+ 1
+ 780.00
+ 885.76254
+
+ false
+
+
+
+ 1.33999974
+ 01
+
+
+
+
+
+
+ 150142
+
+ AV GUARDIA REPUBLICANA MZ N LOTE 20 - LIMA - LIMA - VILLA EL SALVADOR
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 159.4372572
+
+
+
+
+
+ 885.76254
+ 159.4372572
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+ 001
+
+
+
+
+
+
+ 1.135593
+
+
+
+
diff --git a/tests/correos_prueba/015_correo/pdf_resultado_015.json b/tests/correos_prueba/015_correo/pdf_resultado_015.json
new file mode 100644
index 0000000..51aa75e
--- /dev/null
+++ b/tests/correos_prueba/015_correo/pdf_resultado_015.json
@@ -0,0 +1,37 @@
+[
+ {
+ "ruc_emisor": "20552807970",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "fecha_emision": "13/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "2403",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "total_factura": "1003.39",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "41.81",
+ "lineas": [
+ {
+ "descripcion": "BOLSA 001 SERVICIO DE TRANSPORTE BLS X S/ / 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",
+ "cantidad": "780.00",
+ "precio_unitario": "1.34",
+ "total_linea": "1.135593",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 885.76",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "885.76",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/015_correo/20552807970-01-E001-2403.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/015_correo/xml_resultado_015.json b/tests/correos_prueba/015_correo/xml_resultado_015.json
new file mode 100644
index 0000000..59c890f
--- /dev/null
+++ b/tests/correos_prueba/015_correo/xml_resultado_015.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20552807970",
+ "razon_social_emisor": "MATERIALES DE CONSTRUCCION LOS PORTALES S.A.C.",
+ "fecha_emision": "2026-06-13",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "2403",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1045.2,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130229"
+ },
+ {
+ "tipo": "31",
+ "serie": "0002",
+ "numero": "608"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 41.81,
+ "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 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",
+ "cantidad": 780.0,
+ "precio_unitario": 1.33999974,
+ "total_linea": 885.76254,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130229"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "0002",
+ "numero": "608"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/015_correo/20552807970-01-E001-2403.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.pdf b/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.pdf
new file mode 100644
index 0000000..69a4bed
Binary files /dev/null and b/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.pdf differ
diff --git a/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.xml b/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.xml
new file mode 100644
index 0000000..f67c6a8
--- /dev/null
+++ b/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.xml
@@ -0,0 +1,994 @@
+
+
+
+ yBOPvv4YrCRCxMEYgfHDH5gBbos=OpnDLyZ/WQMdCb+C6EzyxmP3Bh4JnrwLeeBwVYgOsffj7nhgX5NxUwsfx6PJI+piEp09oGosneFn
+lMol4QwqjudVwkWzIJfWgyq1GxaDplIbY7RzXPXgzDVU0jfjiB/RN5UlHKkaMo0hZTW+oYRFCozO
+oNM5vZ2GaUlrnCBPyUX020LGdXFNntS6szMdpaDu5jnC3EzLy/M9fWVu/BRYzykBqjvKrc4KlpvE
+b3PqSH9PdxGa0x51MkmV6rRyOvnnBWIx/7eZDMNKB531T/PkiXK1eE1YckR6sgICmnAE6EyMRV6J
+0OeBvOffAx5qWFZmrdPq10Y7sDuscPWQH0zDIg==2.5.4.13=#0c2a436572746966696361646f207061726120466163747572616369c3b36e20456c65637472c3b36e696361,1.3.6.1.4.1.47286.30.2=#0c03525543,1.3.6.1.4.1.47286.30.3=#0c0b3230323631333734383938,1.3.6.1.4.1.47286.30.4=#0c03444e49,1.2.840.113549.1.9.1=#16156c6f7370696e6f7340696e647573666572722e7065,CN=WALTER EDUARDO ALMANZA VARGAS,2.5.4.5=#13083036313936323939,2.5.4.42=#0c0e57414c544552204544554152444f,2.5.4.4=#0c0e414c4d414e5a4120564152474153,2.5.4.12=#0c11544954554c4152202d20474552454e5445,OU=ADMINISTRACION,OU=20261374898,O=INDUSFERR EMPRESA INDIVIDUAL DE RESPONSABILIDAD LIMITADA,L=LIMA,C=PEMIIImTCCBoGgAwIBAgIIPxZafdPW2HswDQYJKoZIhvcNAQELBQAwgbgxCzAJBgNVBAYTAkVTMUQw
+QgYDVQQHDDtCYXJjZWxvbmEgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LnVhbmF0YWNhLmNv
+bS9hZGRyZXNzKTEWMBQGA1UECgwNVUFOQVRBQ0EgUy5BLjEVMBMGA1UECwwMVFNQLVVBTkFUQUNB
+MRowGAYDVQQDDBFVQU5BVEFDQSBDQTEgMjAxNjEYMBYGA1UEYQwPVkFURVMtQTY2NzIxNDk5MB4X
+DTI1MTEyMDE0NDkwMFoXDTI4MTExOTE0NDkwMFowggG5MQswCQYDVQQGEwJQRTENMAsGA1UEBwwE
+TElNQTFBMD8GA1UECgw4SU5EVVNGRVJSIEVNUFJFU0EgSU5ESVZJRFVBTCBERSBSRVNQT05TQUJJ
+TElEQUQgTElNSVRBREExFDASBgNVBAsMCzIwMjYxMzc0ODk4MRcwFQYDVQQLDA5BRE1JTklTVFJB
+Q0lPTjEaMBgGA1UEDAwRVElUVUxBUiAtIEdFUkVOVEUxFzAVBgNVBAQMDkFMTUFOWkEgVkFSR0FT
+MRcwFQYDVQQqDA5XQUxURVIgRURVQVJETzERMA8GA1UEBRMIMDYxOTYyOTkxJjAkBgNVBAMMHVdB
+TFRFUiBFRFVBUkRPIEFMTUFOWkEgVkFSR0FTMSQwIgYJKoZIhvcNAQkBFhVsb3NwaW5vc0BpbmR1
+c2ZlcnIucGUxEzARBgorBgEEAYLxNh4EDANETkkxGzAZBgorBgEEAYLxNh4DDAsyMDI2MTM3NDg5
+ODETMBEGCisGAQQBgvE2HgIMA1JVQzEzMDEGA1UEDQwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0dXJh
+Y2nDs24gRWxlY3Ryw7NuaWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqve/s0UH
+eg3o8PIcVzStx7Q/4o7o8LNUutQ0lQC78g3sJ5whnCg0JzSihlEl/b4FjwL+HP0ReIdyJS3AfkvV
+9FfUSKf16iNe2cTI7YEm5E7nkiIfm4RNfcH/cfEQzCedmbuGxLl7FDryDMYcKr02UlbhEjthmkcV
+FBoyhd5EarKhoevd8Wg6XdUBFOpkI5l6/3cJ6nhgcpnag2jHvGrsWauGBB+GPNXcC97x28iRTFgv
+Hmeb4NbYF37b/eET1dzgt5lK15A+zFmpF1qyLVeNb8uaWBhMkYcGghy9oBv3Gk47TF5haTy3TaJF
+93vLfhLhwaeb/HXvLIbKiX4XTUtB8wIDAQABo4ICoTCCAp0wgdYGCCsGAQUFBwEBBIHJMIHGMFQG
+CCsGAQUFBzAChkhodHRwOi8vd3d3LnVhbmF0YWNhLmNvbS9wdWJsaWMvZG93bmxvYWQvdHNwX2Nl
+cnRpZmljYXRlcy90cnVzdGVkUm9vdC5wN2MwNgYIKwYBBQUHMAGGKmh0dHA6Ly9vY3NwMS51YW5h
+dGFjYS5jb20vcHVibGljL3BraS9vY3NwLzA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AyLnVhbmF0
+YWNhLmNvbS9wdWJsaWMvcGtpL29jc3AvMB0GA1UdDgQWBBTeZx85VGHOnjXWGr7f+TyGNhMYzjAM
+BgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFC1x77Bjf/X94IMiRH9EEDCBT03lMIGQBgNVHSAEgYgw
+gYUwgYIGDCsGAQQBgvE2AgICAjByMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LnVhbmF0YWNhLmNv
+bS9wdWJsaWMvcGtpL2RwYy1wZS8wOAYIKwYBBQUHAgIwLAwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0
+dXJhY2nDs24gRWxlY3Ryw7NuaWNhMIGPBgNVHR8EgYcwgYQwQKA+oDyGOmh0dHA6Ly9jcmwxLnVh
+bmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwQKA+oDyGOmh0dHA6
+Ly9jcmwyLnVhbmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwDgYD
+VR0PAQH/BAQDAgbAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAgBgNVHREEGTAXgRVs
+b3NwaW5vc0BpbmR1c2ZlcnIucGUwDQYJKoZIhvcNAQELBQADggIBAGsG27BxbnS5p5xLs4t/pfrc
+8RCWhIpTLAymTnRLrrkbshAx36bchd0vUctaum6UiD3RqWI/kPERdmvFkUZBoDN/2cnQTXWaabE7
+QuhHjsznTLlwsRK92QcvmxbusOAph7n9Sm6o7R72MRatOZeRGBEeS/LUutKMTUU6/R+vn/oa7pss
+wrJeTv2abLyAvHQuqnOCN7BKD93t+iPY63EHEa7ijbalRna2qHLvxSl/PGAvXsHhlY/mZvccojSo
+9jwmmZhpaB859uCOp8Mv9pua4KJlpWfkCqw9pUlldLBQgkkNxzBKsaF8AXAgnTZnaXmJ+Hd/k2ck
+gIa6vmesyF7lpg0saij7fIudvILOjzDUlvI/gaTE6ZJLkYdbsrNBEXHDV/p7+53/KGzZmSrAgSZb
+ly0U4RiA/QZ0BM1ghqzwal2FweB/6uet50e4EIqNuo3k+XmPFPzOvaQmaDPYJNsdFWFoKnt49OFE
+hM2RHLOWZhWTQg8/yN7LRtI1uFPu4OpyxCMnYhi+uyJyaqR26FgvcYn4cWi4G0SW1ouqOYVza8hK
+KICC6N/uOlS/YEZOpoA4UmYAiL67NgYjYju08HG6t3qRJDvO3ysUIA/8dr17ijYF6jfpCoLbDjUt
+05UMg7SMvJhYmy+CBYxecyoeJHvQ0prxtqbA4QF2q9pEEcDhfeEI
+
+
+ 2.1
+ 2.0
+ FF05-0100429
+ 2026-06-03
+ 14:39:15
+ 01
+ DIECISEIS MIL NOVECIENTOS OCHENTA Y SEIS Y 06/100 SOLES
+ OPERACION SUJETA A DETRACCION
+ PEN
+ 10
+
+ 20261374898
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+
+
+ 20261374898
+
+
+
+
+ 20261374898
+ 6
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+ INDUSFERR EIRL
+
+ 0000
+
+
+
+
+ 1515956CNG
+
+
+
+
+
+ 20100029741
+ 6
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C
+
+
+
+
+ Detraccion
+ 001
+
+ 00000855529
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 1076.00
+
+
+ FormaPago
+ Credito
+ 15910.06
+
+
+ FormaPago
+ Cuota001
+ 15910.06
+ 2026-06-18
+
+
+ 2591.11
+
+ 14394.95
+ 2591.11
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 14394.95
+ 16986.06
+ 16986.06
+
+
+ 1
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 2
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 3
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 4
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 5
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 6
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 7
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 8
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 9
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 10
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/017_correo/pdf_resultado_017.json b/tests/correos_prueba/017_correo/pdf_resultado_017.json
new file mode 100644
index 0000000..c7524aa
--- /dev/null
+++ b/tests/correos_prueba/017_correo/pdf_resultado_017.json
@@ -0,0 +1,197 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "fecha_emision": "03/06/2026",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100429",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "total_factura": "1.00",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "1076.00",
+ "lineas": [
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128374 GRT 1692.18 EG03-1967]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [290 SOL GRR T001-128454 GRT 1692.18 EG03-1969 / 500 APU GRR T001-128453 GRT EG03-1969]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128454"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 ULTRA GRR T001-128512 GRT 1692.18 EG03-1971]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 APU GRR T001-128540 GRT 1692.18 EG03-1972]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [800 SOL GRR T001-128650 GRT 1713.60 EG03-1975]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [200 ULTRA GRR T001-128725 GRT 1713.60 EG03-1978 / 600 SOL GRR T001-128724 GRT EG03-1978]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128681 GRT 1692.18 EG03-1976]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [246 ULTRA GRR T001-128727 GRT 1692.18 EG03-1977 / 544 SOL GRR T001-128726 GRT EG03-1977]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [400 SOL GRR T001-128807 GRT 1713.60 EG03-1979 / 400 APU GRR T001-128808 GRT EG03-1979]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128910 GRT 1692.18 EG03-1981] P.P: AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO P.L: MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CAÑETE V.R: S/. 26897.97 CARGA TM: 337.03 MTC: 1515956CNG CONF: T3S3",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/017_correo/xml_resultado_017.json b/tests/correos_prueba/017_correo/xml_resultado_017.json
new file mode 100644
index 0000000..6deaede
--- /dev/null
+++ b/tests/correos_prueba/017_correo/xml_resultado_017.json
@@ -0,0 +1,220 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "INDUSFERR EIRL",
+ "fecha_emision": "2026-06-03",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100429",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C",
+ "total_factura": 16986.06,
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 1076.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",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128454"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/017_correo/20261374898-01-FF05-100429.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/018_correo/20500864703-01-F002-20851.pdf b/tests/correos_prueba/018_correo/20500864703-01-F002-20851.pdf
new file mode 100644
index 0000000..eefbc6b
Binary files /dev/null and b/tests/correos_prueba/018_correo/20500864703-01-F002-20851.pdf differ
diff --git a/tests/correos_prueba/018_correo/20500864703-01-F002-20851.xml b/tests/correos_prueba/018_correo/20500864703-01-F002-20851.xml
new file mode 100644
index 0000000..4d16330
--- /dev/null
+++ b/tests/correos_prueba/018_correo/20500864703-01-F002-20851.xml
@@ -0,0 +1,307 @@
+
+
+
+ clkzOA2Kk+jMX1AdkpHZmFO5wEo=LVE3AxERHI5z7ToPy/WFT0tNGfy3MegTTJS0cF6TbcUfqgxug5I+80LyanqK5VxSY4qeANn94maMqpmPGYKqAxjlSk2XwmsSHRsRpZE5Kb0SJJJ/+/2P507Ud3vcNeAz3sHW6EPH4GpsK58DZ3lYfbSSgtdDnAy1JV82PwUDdPs7zd9+JNxxfsdVK15WqdLRBfZfuxgpkrbaALqAHJt+O4daCQL8QLFYkvpnQgMlSnf2wwnsxf4gQUwxwBTPhJD/qj6JdohxA6peifCKxRUK8ubIWnlah0Uz1oVpp7Jq16xJIc3n9fjVsVIgCcNDbA1S8QZbrq/6qVM8K1fFjaOLTw==C=PE, L=LIMA, O=THE FACTORY HKA PERU SOCIEDAD ANONIMA CERRADA, OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20550728762, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=rhuamani@thefactoryhka.com, STREET=JR. TOBAGO NRO. 257 URB. CEDROS DE VILLAMIIFkjCCBHqgAwIBAgIINtWoLsl5h6YwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwNTA5MjEwMTE2WhcNMjcwNTA5MjEwMTAwWjCCATExMTAvBgNVBAkMKEpSLiBUT0JBR08gTlJPLiAyNTcgVVJCLiBDRURST1MgREUgVklMTEExKTAnBgkqhkiG9w0BCQEWGnJodWFtYW5pQHRoZWZhY3Rvcnloa2EuY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjA1NTA3Mjg3NjIxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjE2MDQGA1UECgwtVEhFIEZBQ1RPUlkgSEtBIFBFUlUgU09DSUVEQUQgQU5PTklNQSBDRVJSQURBMQ0wCwYDVQQHDARMSU1BMQswCQYDVQQGEwJQRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMJd2vPsbwJyY9Bwk/mrCsU/QUHOb7Jqj2mTsGnP5qkbdUObmK3hTrXzRS6NwUe1nT6VsN/efBOlE1DaBYdwIttOu1jYB/ES1TsPhkykz7AIbZ/sQvYaerJUqi+Y0Xga5W7H+oH0SCWajVcHe0JzP1sRxJQZQzKaj6cenPchxV1mIU7JCpNsbstlc2IWB1ipiZ8SOMXV0tG9LPyjXStOP+hJVEARyXyIqiFfCK8lTobVvHxFbwsEnfM7PzcmyzJrjLHXbVR6139srkzj65QQKYkpw/iC3EhqjUjBi9F+7rcRcpU/T1kUM+Sr5oi5qNAufP0HKKWPJUVTwrwQv0e1YoUCAwEAAaOCAZUwggGRMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUXYhbretl+/5oouTZbz1XcqLvK5kwZwYIKwYBBQUHAQEEWzBZMDUGCCsGAQUFBzAChilodHRwOi8vY3J0LmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNlcjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3AubGxhbWEucGUwJQYDVR0RBB4wHIEacmh1YW1hbmlAdGhlZmFjdG9yeWhrYS5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBRukXU3fFIvxqBWWVLHgv7lUdqKHzAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAHHPp45FldlKcmdYPcMcw8duVbkp7YD85TGHZFGd4Y0miTrZHGC5KNRfqg2IZeMnx0w9/dBmOOd0BYoyBmi8KBNW3rEu6n6wBbj9m6rRmG2oGwJcmmoMzuTmv/pXY0fCuoyzRAZoc7v4Ogj7Csoj5ruPyAcait5o9dgwZUAnLUAB1sgUIUKnqK/9N/yWVLleeX+rH+MBUuephWNnsTVFfHhGhalZdtGFSROjSUjlakvuPdyMaO4VaS1C2YvdYsvXBe3qHuj/uNTG9kV9oPLCYxsL3+apxDi8b89IPUgXW99b9hfwxeUWRK6qpmHgsWUIQ1Aa0RNFMxA41VvpTpv15u8=
+
+
+ 2.1
+ 2.0
+ F002-20851
+ 2026-06-01
+ 11:03:30
+ 01
+ PEN
+
+ LlamaSign
+
+
+ 20500864703
+
+
+
+
+
+
+
+ #LlamaSign
+
+
+
+
+ IDSignSP
+
+
+ 20500864703
+
+
+ DEPOSITOS Y FERRETERIA NICHAR S.A.C.
+
+
+
+
+ #SignatureSP
+
+
+
+
+
+
+ 20500864703
+
+
+
+
+
+
+
+ 0000
+
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 150143
+ LIMA
+ DEPARTAMENTO LIMA
+ VILLA MARIA DEL TRIUNFO
+
+ AV. 26 DE NOVIEMBRE 2473
+
+
+ PE
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00063009024
+
+
+
+ Detraccion
+ 027
+ 4.00000
+ 40.00
+
+
+ FormaPago
+ Credito
+ 964.70
+
+
+ FormaPago
+ Cuota001
+ 964.70
+ 2026-06-16
+
+
+ 153.26
+
+ 851.44
+ 153.26
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+ 0.00
+ 0.00
+
+
+ 2000
+ ISC
+ EXC
+
+
+
+
+ 0
+ 0
+
+
+ 9995
+ EXP
+ FRE
+
+
+
+
+ 0
+ 0.00
+
+
+ 9996
+ GRA
+ FRE
+
+
+
+
+ 0
+ 0
+
+
+ 9997
+ EXO
+ VAT
+
+
+
+
+ 0
+ 0
+
+
+ 9998
+ INA
+ FRE
+
+
+
+
+ 0.00
+ 0.00
+
+
+ 9999
+ OTROS
+ OTH
+
+
+
+
+
+ 851.44
+ 1004.70
+ 0.00
+ 0.00
+ 1004.70
+
+
+ 1
+ 750
+ 851.44
+
+
+ 1.3396
+ 01
+
+
+
+
+
+ 150143
+
+
+
+
+
+
+ 1
+
+ 150143
+
+
+
+
+
+
+ 01
+ 1
+
+
+ 02
+ 1
+
+
+ 03
+ 1
+
+
+ 01
+
+ 1
+ 1
+
+
+ 150143
+
+
+
+
+ 150143
+
+
+
+ 1.00
+
+
+
+ C2
+ false
+
+
+ 1.00
+
+
+
+
+ 01
+ 1.00
+
+
+ 02
+ 1.00
+
+
+
+
+
+
+ 153.26
+
+ 851.44
+ 153.26
+
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+ SER01
+
+
+ 78101802
+
+
+
+ 1.1352540000
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/018_correo/CDR-20500864703-01-F002-20851.xml b/tests/correos_prueba/018_correo/CDR-20500864703-01-F002-20851.xml
new file mode 100644
index 0000000..b884f38
--- /dev/null
+++ b/tests/correos_prueba/018_correo/CDR-20500864703-01-F002-20851.xml
@@ -0,0 +1,63 @@
+
+
+
+ ipQcxoFR04Oh5BT5LUJRnbOAJhM=TtMIzyLgjcoo++sJPr9KEs5q3fCoSLwBtmkvmbD1yeqjdBoCCpYn0P3kgWZQ2Wu7iPUhxrf/1NaTE0Gf1zot2wGC/klxnLFBLftA+KVSFRLS0O3zg8Rg1wqQG5rLT7Ch4q2InGwXUQ3eK9BC77r+Er6aVpmX5p4QSpP2Zl2PSEwfiOpNNwPepZfJvpofWwjtu/y9fy2IATH7wAIOgSdYrnC176Kj0ktz8UuQzWMDlIT0QTN1JQulf/Qmtn8omz5szDbc5vA3d6t0yO6b3JRCqmfwsXvxB8l/NPn+MATedNHbOKXXrZArAzNq4KdDkBweSar/DmfTzan6l3q0626fvw==System.Security.Cryptography.X509Certificates.X500DistinguishedName5740275299046747460C=PE, L=LIMA, O=THE FACTORY HKA PERU SOCIEDAD ANONIMA CERRADA, OU=Validado por Llama.pe ER, OU=20550728762, CN=20550728762, E=rhuamani@thefactoryhka.com, STREET=JR. TOBAGO NRO. 257 URB. CEDROS DE VILLAMIIFYjCCBEqgAwIBAgIIT6mN+KChbUQwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwNjEzMjAzMDQ5WhcNMjcwNjEzMjAzMDAwWjCCAQExMTAvBgNVBAkMKEpSLiBUT0JBR08gTlJPLiAyNTcgVVJCLiBDRURST1MgREUgVklMTEExKTAnBgkqhkiG9w0BCQEWGnJodWFtYW5pQHRoZWZhY3Rvcnloa2EuY29tMRQwEgYDVQQDDAsyMDU1MDcyODc2MjEUMBIGA1UECwwLMjA1NTA3Mjg3NjIxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjE2MDQGA1UECgwtVEhFIEZBQ1RPUlkgSEtBIFBFUlUgU09DSUVEQUQgQU5PTklNQSBDRVJSQURBMQ0wCwYDVQQHDARMSU1BMQswCQYDVQQGEwJQRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALarDRoOpB5SXk1XAOSsS2HHLmw5sXEQYbaRVKyWInMSW4aczw7LSnRV+jF6iSd8HvMdQj/BvEQdwo0EmAs32kuNkFWbYUYRUvPr2JbR202AP1kpmo/XpeeHCyVUPfUgdFLKnvSa5kCEYCpipNNi4Mye3ryzxgi7E6jMTqvYjv7SyRZCLSz3dU8Hxh7bqTa6frsUoaMpB0EqCVCVGGjVRnNzhhWu7pLThZuOWLHPYLWAxyCyn06Q4JJ6zIuBc5jteBwHZ6G1r8Y6QJN+jBbCakY+3d0g8BMb+yeMmdse6Aqa9CF4UYuUC3IeaooPCEl+SSWehNuPmVDkG8M81DL3dl8CAwEAAaOCAZUwggGRMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUXYhbretl+/5oouTZbz1XcqLvK5kwZwYIKwYBBQUHAQEEWzBZMDUGCCsGAQUFBzAChilodHRwOi8vY3J0LmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNlcjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3AubGxhbWEucGUwJQYDVR0RBB4wHIEacmh1YW1hbmlAdGhlZmFjdG9yeWhrYS5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBQzzDwWX2tL1xLpcXxX55XsvZcQ+DAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAChoGdk54ss+32TapubQN4Il1tSBAI6NLeWHOz2ahBf0TgfQEGA64zs2iYYYu8DTxYoa/ycVCqN8WIOENbuEUcWaor9M/R9Ja/34mwERSrhG+up+Lxc8QrwUCDfac/nbfAOZI0fQmxrMxcRxy2dnY1ZtSnDeXR1OiJCiJln9+9bVnzZerB5oeOu6EgmHgREHdGlloFk+VzgGQP4dww3zOLDISSUQ11QhmYowuuTtA4OcsjDmc93TVGWbErQTklXpbQKgN+xwwJEz2HZhH1dF5QHvCIcuHEspSyqa5+eVqfzs+5CFOH/NFF5tpzGVnh0qynacCQPcnjRwHFRWMGuNQzk=
+
+
+ 2.1
+ 1.0
+ 456f07b7-ff9f-4219-b72d-e412dbb1c458
+ 2026-06-01
+ 11:07:01
+ 2026-06-01
+ 11:07:03
+
+
+ 20550728762
+
+
+
+
+ 20550728762
+
+
+
+
+ 0
+ La FACTURA numero 20500864703-01-F002-20851, ha sido aceptada
+
+ 4265
+ El XML no contiene el codigo de leyenda 2006 para tipo de operación de detracciones
+
+
+ 4270
+ El dato ingresado como detalle del viaje no cumple con el formato establecido.
+
+
+ 4271
+ El dato ingresado como descripcion del tramo no cumple con el formato establecido.
+
+
+
+ F002-20851
+ 2026-06-01
+ 11:03:30
+ 01
+
+
+ clkzOA2Kk+jMX1AdkpHZmFO5wEo=
+
+
+
+
+
+ 20500864703
+
+
+
+
+ 20100029741
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/018_correo/pdf_resultado_018.json b/tests/correos_prueba/018_correo/pdf_resultado_018.json
new file mode 100644
index 0000000..b9a26a5
--- /dev/null
+++ b/tests/correos_prueba/018_correo/pdf_resultado_018.json
@@ -0,0 +1,39 @@
+[
+ {
+ "ruc_emisor": "20500864703",
+ "razon_social_emisor": "/ Usuario",
+ "fecha_emision": null,
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "20851",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "/ Usuario",
+ "total_factura": "1004.70",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [
+ {
+ "descripcion": "NIU 78101802 SERVICIO DE TRANSPORTE S/ S/ Información adicional DETRACCIONES Código del Bien Sujeto a Detracción: 027 SERVICIO DE TRANSPORTE 750 BLS CEMENTO, Número de Cuenta Banco de la Nación: 00063009024 S/G.R.R: T001-129717 Monto de la Detracción: 40.00 S/G.R.T: EG04-4549, PTO. Porcentaje Detracción: 4.00 PARTIDA: AV ATOCONGO 1860- V.M.T, Servicio de transporte de Carga PTO.LLEGADA: AV 27 DE DICIEMBRE 652-V.M.T, CONFIGURACION.C3S2, Ubigeo Origen: 150143 PESO TN : 31.880, Dirección Origen: av atocongo 1860 MTC: 1510426CNG, Ubigeo Destino: 150143 VALOR REFERENCIA: 1,00470 Dirección Destino: av 27 de diciembre",
+ "cantidad": "750.000",
+ "precio_unitario": "1.135254",
+ "total_linea": "851.44",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "129717"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG04",
+ "numero": "4549"
+ }
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/018_correo/20500864703-01-F002-20851.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/018_correo/xml_resultado_018.json b/tests/correos_prueba/018_correo/xml_resultado_018.json
new file mode 100644
index 0000000..17f1165
--- /dev/null
+++ b/tests/correos_prueba/018_correo/xml_resultado_018.json
@@ -0,0 +1,53 @@
+[
+ {
+ "ruc_emisor": "20500864703",
+ "razon_social_emisor": "DEPOSITOS Y FERRETERIA NICHAR S.A.C.",
+ "fecha_emision": "2026-06-01",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "20851",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA. S.A.C",
+ "total_factura": 1004.7,
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 40.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",
+ "cantidad": 750.0,
+ "precio_unitario": 1.3396,
+ "total_linea": 851.44,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "129717"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG04",
+ "numero": "4549"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/018_correo/20500864703-01-F002-20851.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/019_correo/20552793499-01-E001-5506.pdf b/tests/correos_prueba/019_correo/20552793499-01-E001-5506.pdf
new file mode 100644
index 0000000..d06cb89
Binary files /dev/null and b/tests/correos_prueba/019_correo/20552793499-01-E001-5506.pdf differ
diff --git a/tests/correos_prueba/019_correo/20552793499-01-E001-5506.xml b/tests/correos_prueba/019_correo/20552793499-01-E001-5506.xml
new file mode 100644
index 0000000..21c3564
--- /dev/null
+++ b/tests/correos_prueba/019_correo/20552793499-01-E001-5506.xml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+ THtiV7Hv4bPGRqk8UNLfMAyiYUM=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-5506
+ 2026-06-10
+ 16:09:24.0Z
+
+ 01
+
+
+ PEN
+
+ T001 - 130266
+ 09
+
+
+
+ EG03 - 1941
+ 31
+
+
+
+
+ E001-5506
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20552793499
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00074064787
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 135.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 1784.27
+
+
+
+ FormaPago
+ Cuota001
+ 1784.27
+ 2026-06-12
+
+
+
+
+
+
+ 292.77
+
+
+
+
+ 1626.50
+ 292.77
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1626.50
+ 0.00
+ 0.00
+ 0.00
+
+ 1919.27
+
+
+
+ 1
+ 780.00
+ 1626.49812
+
+ false
+
+
+
+ 2.46059972
+ 01
+
+
+
+
+
+
+ 110501
+
+ AV FERMIN TANGUISMZ A LT 3-B URB JUAN JOSE - ICA - PISCO - ICA - PISCO - PISCO
+
+
+
+
+
+ 150143
+
+ AV.ATOCONGO 1860-LIMA-LIMA-V.M.T - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 292.7696616
+
+
+
+
+
+ 1626.49812
+ 292.7696616
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.085254
+
+
+
+
diff --git a/tests/correos_prueba/019_correo/pdf_resultado_019.json b/tests/correos_prueba/019_correo/pdf_resultado_019.json
new file mode 100644
index 0000000..d4d8140
--- /dev/null
+++ b/tests/correos_prueba/019_correo/pdf_resultado_019.json
@@ -0,0 +1,37 @@
+[
+ {
+ "ruc_emisor": "20552793499",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "fecha_emision": "10/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "5506",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "total_factura": "1784.27",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "135.00",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERVICIO DE TRANSPORTE 750 BLS DE CEMENTO P.P.AV.ATOCONGO 1860-LIMA-LIMA-V.M.T P.LL.AV FERMIN TANGUISMZ A LT 3-B URB JUAN JOSE-ICA-PISCOMTC 1550071CNGTN:33.15 V.R S.3371.355PLACA:F8A923 C.VEHICULAR:T3S3",
+ "cantidad": "780.00",
+ "precio_unitario": "780.00",
+ "total_linea": "2.085254",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 1,626.50",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1626.50",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/019_correo/20552793499-01-E001-5506.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/019_correo/xml_resultado_019.json b/tests/correos_prueba/019_correo/xml_resultado_019.json
new file mode 100644
index 0000000..1d7b246
--- /dev/null
+++ b/tests/correos_prueba/019_correo/xml_resultado_019.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20552793499",
+ "razon_social_emisor": "CORPORACION AQUILES S.A.C.",
+ "fecha_emision": "2026-06-10",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "5506",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1919.27,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130266"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1941"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 135.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 750 BLS DE CEMENTO P.P.AV.ATOCONGO 1860-LIMA-LIMA-V.M.T P.LL.AV FERMIN TANGUISMZ A LT 3-B URB JUAN JOSE-ICA-PISCOMTC 1550071CNGTN:33.15 V.R S.3371.355PLACA:F8A923 C.VEHICULAR:T3S3",
+ "cantidad": 780.0,
+ "precio_unitario": 2.46059972,
+ "total_linea": 1626.49812,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130266"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1941"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/019_correo/20552793499-01-E001-5506.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.pdf b/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.pdf
new file mode 100644
index 0000000..0e28a20
Binary files /dev/null and b/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.pdf differ
diff --git a/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.xml b/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.xml
new file mode 100644
index 0000000..40bfa53
--- /dev/null
+++ b/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.xml
@@ -0,0 +1,994 @@
+
+
+
+ zGkSPWeCj785eE+jxHzlbHtcZk8=DQPM2A+CrvHzAday6h3G8smr2vSJBal4FtaYmR7heQJXuEtaUcu6s8RGTjO3CGE8kVqLQAdPdS4J
+FxZ3n/x3dYJFW8epiJWByHxWxQp/MQn6RGbYOzQLC3TnaZV5GRgNkksGwKAUkuHrMhxs1/iSigNS
+FxXfgCl4JlqNcN2QM6cI0lB2HCQ426xdDpRiFneeWi2cJpXUynmwGF5MVO9fk/0LTPu4CDFeWFaC
+Ar9kQx7xpnDWSd4l1oYu/H0h1WbdxdThwxJZwixV/GV34hajhQhiMoK1lLyk9ZqfHe44TZPnJilL
+Kep8PDZ81SzIvB/i9f2VK9qUK49n1HesgB9BbQ==2.5.4.13=#0c2a436572746966696361646f207061726120466163747572616369c3b36e20456c65637472c3b36e696361,1.3.6.1.4.1.47286.30.2=#0c03525543,1.3.6.1.4.1.47286.30.3=#0c0b3230323631333734383938,1.3.6.1.4.1.47286.30.4=#0c03444e49,1.2.840.113549.1.9.1=#16156c6f7370696e6f7340696e647573666572722e7065,CN=WALTER EDUARDO ALMANZA VARGAS,2.5.4.5=#13083036313936323939,2.5.4.42=#0c0e57414c544552204544554152444f,2.5.4.4=#0c0e414c4d414e5a4120564152474153,2.5.4.12=#0c11544954554c4152202d20474552454e5445,OU=ADMINISTRACION,OU=20261374898,O=INDUSFERR EMPRESA INDIVIDUAL DE RESPONSABILIDAD LIMITADA,L=LIMA,C=PEMIIImTCCBoGgAwIBAgIIPxZafdPW2HswDQYJKoZIhvcNAQELBQAwgbgxCzAJBgNVBAYTAkVTMUQw
+QgYDVQQHDDtCYXJjZWxvbmEgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LnVhbmF0YWNhLmNv
+bS9hZGRyZXNzKTEWMBQGA1UECgwNVUFOQVRBQ0EgUy5BLjEVMBMGA1UECwwMVFNQLVVBTkFUQUNB
+MRowGAYDVQQDDBFVQU5BVEFDQSBDQTEgMjAxNjEYMBYGA1UEYQwPVkFURVMtQTY2NzIxNDk5MB4X
+DTI1MTEyMDE0NDkwMFoXDTI4MTExOTE0NDkwMFowggG5MQswCQYDVQQGEwJQRTENMAsGA1UEBwwE
+TElNQTFBMD8GA1UECgw4SU5EVVNGRVJSIEVNUFJFU0EgSU5ESVZJRFVBTCBERSBSRVNQT05TQUJJ
+TElEQUQgTElNSVRBREExFDASBgNVBAsMCzIwMjYxMzc0ODk4MRcwFQYDVQQLDA5BRE1JTklTVFJB
+Q0lPTjEaMBgGA1UEDAwRVElUVUxBUiAtIEdFUkVOVEUxFzAVBgNVBAQMDkFMTUFOWkEgVkFSR0FT
+MRcwFQYDVQQqDA5XQUxURVIgRURVQVJETzERMA8GA1UEBRMIMDYxOTYyOTkxJjAkBgNVBAMMHVdB
+TFRFUiBFRFVBUkRPIEFMTUFOWkEgVkFSR0FTMSQwIgYJKoZIhvcNAQkBFhVsb3NwaW5vc0BpbmR1
+c2ZlcnIucGUxEzARBgorBgEEAYLxNh4EDANETkkxGzAZBgorBgEEAYLxNh4DDAsyMDI2MTM3NDg5
+ODETMBEGCisGAQQBgvE2HgIMA1JVQzEzMDEGA1UEDQwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0dXJh
+Y2nDs24gRWxlY3Ryw7NuaWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqve/s0UH
+eg3o8PIcVzStx7Q/4o7o8LNUutQ0lQC78g3sJ5whnCg0JzSihlEl/b4FjwL+HP0ReIdyJS3AfkvV
+9FfUSKf16iNe2cTI7YEm5E7nkiIfm4RNfcH/cfEQzCedmbuGxLl7FDryDMYcKr02UlbhEjthmkcV
+FBoyhd5EarKhoevd8Wg6XdUBFOpkI5l6/3cJ6nhgcpnag2jHvGrsWauGBB+GPNXcC97x28iRTFgv
+Hmeb4NbYF37b/eET1dzgt5lK15A+zFmpF1qyLVeNb8uaWBhMkYcGghy9oBv3Gk47TF5haTy3TaJF
+93vLfhLhwaeb/HXvLIbKiX4XTUtB8wIDAQABo4ICoTCCAp0wgdYGCCsGAQUFBwEBBIHJMIHGMFQG
+CCsGAQUFBzAChkhodHRwOi8vd3d3LnVhbmF0YWNhLmNvbS9wdWJsaWMvZG93bmxvYWQvdHNwX2Nl
+cnRpZmljYXRlcy90cnVzdGVkUm9vdC5wN2MwNgYIKwYBBQUHMAGGKmh0dHA6Ly9vY3NwMS51YW5h
+dGFjYS5jb20vcHVibGljL3BraS9vY3NwLzA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AyLnVhbmF0
+YWNhLmNvbS9wdWJsaWMvcGtpL29jc3AvMB0GA1UdDgQWBBTeZx85VGHOnjXWGr7f+TyGNhMYzjAM
+BgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFC1x77Bjf/X94IMiRH9EEDCBT03lMIGQBgNVHSAEgYgw
+gYUwgYIGDCsGAQQBgvE2AgICAjByMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LnVhbmF0YWNhLmNv
+bS9wdWJsaWMvcGtpL2RwYy1wZS8wOAYIKwYBBQUHAgIwLAwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0
+dXJhY2nDs24gRWxlY3Ryw7NuaWNhMIGPBgNVHR8EgYcwgYQwQKA+oDyGOmh0dHA6Ly9jcmwxLnVh
+bmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwQKA+oDyGOmh0dHA6
+Ly9jcmwyLnVhbmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwDgYD
+VR0PAQH/BAQDAgbAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAgBgNVHREEGTAXgRVs
+b3NwaW5vc0BpbmR1c2ZlcnIucGUwDQYJKoZIhvcNAQELBQADggIBAGsG27BxbnS5p5xLs4t/pfrc
+8RCWhIpTLAymTnRLrrkbshAx36bchd0vUctaum6UiD3RqWI/kPERdmvFkUZBoDN/2cnQTXWaabE7
+QuhHjsznTLlwsRK92QcvmxbusOAph7n9Sm6o7R72MRatOZeRGBEeS/LUutKMTUU6/R+vn/oa7pss
+wrJeTv2abLyAvHQuqnOCN7BKD93t+iPY63EHEa7ijbalRna2qHLvxSl/PGAvXsHhlY/mZvccojSo
+9jwmmZhpaB859uCOp8Mv9pua4KJlpWfkCqw9pUlldLBQgkkNxzBKsaF8AXAgnTZnaXmJ+Hd/k2ck
+gIa6vmesyF7lpg0saij7fIudvILOjzDUlvI/gaTE6ZJLkYdbsrNBEXHDV/p7+53/KGzZmSrAgSZb
+ly0U4RiA/QZ0BM1ghqzwal2FweB/6uet50e4EIqNuo3k+XmPFPzOvaQmaDPYJNsdFWFoKnt49OFE
+hM2RHLOWZhWTQg8/yN7LRtI1uFPu4OpyxCMnYhi+uyJyaqR26FgvcYn4cWi4G0SW1ouqOYVza8hK
+KICC6N/uOlS/YEZOpoA4UmYAiL67NgYjYju08HG6t3qRJDvO3ysUIA/8dr17ijYF6jfpCoLbDjUt
+05UMg7SMvJhYmy+CBYxecyoeJHvQ0prxtqbA4QF2q9pEEcDhfeEI
+
+
+ 2.1
+ 2.0
+ FF05-0100595
+ 2026-06-09
+ 08:56:59
+ 01
+ DIECISEIS MIL NOVECIENTOS OCHENTA Y SEIS Y 06/100 SOLES
+ OPERACION SUJETA A DETRACCION
+ PEN
+ 10
+
+ 20261374898
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+
+
+ 20261374898
+
+
+
+
+ 20261374898
+ 6
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+ INDUSFERR EIRL
+
+ 0000
+
+
+
+
+ 1515956CNG
+
+
+
+
+
+ 20100029741
+ 6
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C
+
+
+
+
+ Detraccion
+ 001
+
+ 00000855529
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 1076.00
+
+
+ FormaPago
+ Credito
+ 15910.06
+
+
+ FormaPago
+ Cuota001
+ 15910.06
+ 2026-06-24
+
+
+ 2591.11
+
+ 14394.95
+ 2591.11
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 14394.95
+ 16986.06
+ 16986.06
+
+
+ 1
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 2
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 3
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 4
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 5
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 6
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 7
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 8
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 9
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 10
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/020_correo/pdf_resultado_020.json b/tests/correos_prueba/020_correo/pdf_resultado_020.json
new file mode 100644
index 0000000..32383f5
--- /dev/null
+++ b/tests/correos_prueba/020_correo/pdf_resultado_020.json
@@ -0,0 +1,221 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "fecha_emision": "09/06/2026",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100595",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "total_factura": "1.00",
+ "documentos_referencia": [],
+ "tiene_detraccion": false,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128374 GRT EG03-1967] 1692.18",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1967"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [290 SOL GRR T001-128452 GRT EG03-1969 / 1692.18 500 APU GRR T001-128453 GRT EG03-1969]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128452"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 ULTRA GRR T001-128512 GRT EG03-1971] 1692.18",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1971"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 APU GRR T001-128540 GRT EG03-1972] 1692.18",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1972"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [800 SOL GRR T001-128650 GRT EG03-1975] 1713.60",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1975"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [200 ULTRA GRR T001-128725 GRT EG03-1978 / 1713.60 600 SOL GRR T001-128724 GRT EG03-1978]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128681 GRT EG03-1976] 1692.18",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1976"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [246 ULTRA GRR T001-128727 GRT EG03-1977 / 1692.18 544 SOL GRR T001-128726 GRT EG03-1977]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [400 SOL GRR T001-128807 GRT EG03-1979 / 1713.60 400 APU GRR T001-128808 GRT EG03-1979]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128910 GRT EG03-1981] 1692.18",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1981"
+ }
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/020_correo/xml_resultado_020.json b/tests/correos_prueba/020_correo/xml_resultado_020.json
new file mode 100644
index 0000000..2636f27
--- /dev/null
+++ b/tests/correos_prueba/020_correo/xml_resultado_020.json
@@ -0,0 +1,244 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "INDUSFERR EIRL",
+ "fecha_emision": "2026-06-09",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100595",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C",
+ "total_factura": 16986.06,
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 1076.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",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1967"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128452"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1971"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1972"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1975"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1976"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1981"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/020_correo/20261374898-01-FF05-100595.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.pdf b/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.pdf
new file mode 100644
index 0000000..b7e2a9b
Binary files /dev/null and b/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.pdf differ
diff --git a/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.xml b/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.xml
new file mode 100644
index 0000000..40bfa53
--- /dev/null
+++ b/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.xml
@@ -0,0 +1,994 @@
+
+
+
+ zGkSPWeCj785eE+jxHzlbHtcZk8=DQPM2A+CrvHzAday6h3G8smr2vSJBal4FtaYmR7heQJXuEtaUcu6s8RGTjO3CGE8kVqLQAdPdS4J
+FxZ3n/x3dYJFW8epiJWByHxWxQp/MQn6RGbYOzQLC3TnaZV5GRgNkksGwKAUkuHrMhxs1/iSigNS
+FxXfgCl4JlqNcN2QM6cI0lB2HCQ426xdDpRiFneeWi2cJpXUynmwGF5MVO9fk/0LTPu4CDFeWFaC
+Ar9kQx7xpnDWSd4l1oYu/H0h1WbdxdThwxJZwixV/GV34hajhQhiMoK1lLyk9ZqfHe44TZPnJilL
+Kep8PDZ81SzIvB/i9f2VK9qUK49n1HesgB9BbQ==2.5.4.13=#0c2a436572746966696361646f207061726120466163747572616369c3b36e20456c65637472c3b36e696361,1.3.6.1.4.1.47286.30.2=#0c03525543,1.3.6.1.4.1.47286.30.3=#0c0b3230323631333734383938,1.3.6.1.4.1.47286.30.4=#0c03444e49,1.2.840.113549.1.9.1=#16156c6f7370696e6f7340696e647573666572722e7065,CN=WALTER EDUARDO ALMANZA VARGAS,2.5.4.5=#13083036313936323939,2.5.4.42=#0c0e57414c544552204544554152444f,2.5.4.4=#0c0e414c4d414e5a4120564152474153,2.5.4.12=#0c11544954554c4152202d20474552454e5445,OU=ADMINISTRACION,OU=20261374898,O=INDUSFERR EMPRESA INDIVIDUAL DE RESPONSABILIDAD LIMITADA,L=LIMA,C=PEMIIImTCCBoGgAwIBAgIIPxZafdPW2HswDQYJKoZIhvcNAQELBQAwgbgxCzAJBgNVBAYTAkVTMUQw
+QgYDVQQHDDtCYXJjZWxvbmEgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LnVhbmF0YWNhLmNv
+bS9hZGRyZXNzKTEWMBQGA1UECgwNVUFOQVRBQ0EgUy5BLjEVMBMGA1UECwwMVFNQLVVBTkFUQUNB
+MRowGAYDVQQDDBFVQU5BVEFDQSBDQTEgMjAxNjEYMBYGA1UEYQwPVkFURVMtQTY2NzIxNDk5MB4X
+DTI1MTEyMDE0NDkwMFoXDTI4MTExOTE0NDkwMFowggG5MQswCQYDVQQGEwJQRTENMAsGA1UEBwwE
+TElNQTFBMD8GA1UECgw4SU5EVVNGRVJSIEVNUFJFU0EgSU5ESVZJRFVBTCBERSBSRVNQT05TQUJJ
+TElEQUQgTElNSVRBREExFDASBgNVBAsMCzIwMjYxMzc0ODk4MRcwFQYDVQQLDA5BRE1JTklTVFJB
+Q0lPTjEaMBgGA1UEDAwRVElUVUxBUiAtIEdFUkVOVEUxFzAVBgNVBAQMDkFMTUFOWkEgVkFSR0FT
+MRcwFQYDVQQqDA5XQUxURVIgRURVQVJETzERMA8GA1UEBRMIMDYxOTYyOTkxJjAkBgNVBAMMHVdB
+TFRFUiBFRFVBUkRPIEFMTUFOWkEgVkFSR0FTMSQwIgYJKoZIhvcNAQkBFhVsb3NwaW5vc0BpbmR1
+c2ZlcnIucGUxEzARBgorBgEEAYLxNh4EDANETkkxGzAZBgorBgEEAYLxNh4DDAsyMDI2MTM3NDg5
+ODETMBEGCisGAQQBgvE2HgIMA1JVQzEzMDEGA1UEDQwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0dXJh
+Y2nDs24gRWxlY3Ryw7NuaWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqve/s0UH
+eg3o8PIcVzStx7Q/4o7o8LNUutQ0lQC78g3sJ5whnCg0JzSihlEl/b4FjwL+HP0ReIdyJS3AfkvV
+9FfUSKf16iNe2cTI7YEm5E7nkiIfm4RNfcH/cfEQzCedmbuGxLl7FDryDMYcKr02UlbhEjthmkcV
+FBoyhd5EarKhoevd8Wg6XdUBFOpkI5l6/3cJ6nhgcpnag2jHvGrsWauGBB+GPNXcC97x28iRTFgv
+Hmeb4NbYF37b/eET1dzgt5lK15A+zFmpF1qyLVeNb8uaWBhMkYcGghy9oBv3Gk47TF5haTy3TaJF
+93vLfhLhwaeb/HXvLIbKiX4XTUtB8wIDAQABo4ICoTCCAp0wgdYGCCsGAQUFBwEBBIHJMIHGMFQG
+CCsGAQUFBzAChkhodHRwOi8vd3d3LnVhbmF0YWNhLmNvbS9wdWJsaWMvZG93bmxvYWQvdHNwX2Nl
+cnRpZmljYXRlcy90cnVzdGVkUm9vdC5wN2MwNgYIKwYBBQUHMAGGKmh0dHA6Ly9vY3NwMS51YW5h
+dGFjYS5jb20vcHVibGljL3BraS9vY3NwLzA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AyLnVhbmF0
+YWNhLmNvbS9wdWJsaWMvcGtpL29jc3AvMB0GA1UdDgQWBBTeZx85VGHOnjXWGr7f+TyGNhMYzjAM
+BgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFC1x77Bjf/X94IMiRH9EEDCBT03lMIGQBgNVHSAEgYgw
+gYUwgYIGDCsGAQQBgvE2AgICAjByMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LnVhbmF0YWNhLmNv
+bS9wdWJsaWMvcGtpL2RwYy1wZS8wOAYIKwYBBQUHAgIwLAwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0
+dXJhY2nDs24gRWxlY3Ryw7NuaWNhMIGPBgNVHR8EgYcwgYQwQKA+oDyGOmh0dHA6Ly9jcmwxLnVh
+bmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwQKA+oDyGOmh0dHA6
+Ly9jcmwyLnVhbmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwDgYD
+VR0PAQH/BAQDAgbAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAgBgNVHREEGTAXgRVs
+b3NwaW5vc0BpbmR1c2ZlcnIucGUwDQYJKoZIhvcNAQELBQADggIBAGsG27BxbnS5p5xLs4t/pfrc
+8RCWhIpTLAymTnRLrrkbshAx36bchd0vUctaum6UiD3RqWI/kPERdmvFkUZBoDN/2cnQTXWaabE7
+QuhHjsznTLlwsRK92QcvmxbusOAph7n9Sm6o7R72MRatOZeRGBEeS/LUutKMTUU6/R+vn/oa7pss
+wrJeTv2abLyAvHQuqnOCN7BKD93t+iPY63EHEa7ijbalRna2qHLvxSl/PGAvXsHhlY/mZvccojSo
+9jwmmZhpaB859uCOp8Mv9pua4KJlpWfkCqw9pUlldLBQgkkNxzBKsaF8AXAgnTZnaXmJ+Hd/k2ck
+gIa6vmesyF7lpg0saij7fIudvILOjzDUlvI/gaTE6ZJLkYdbsrNBEXHDV/p7+53/KGzZmSrAgSZb
+ly0U4RiA/QZ0BM1ghqzwal2FweB/6uet50e4EIqNuo3k+XmPFPzOvaQmaDPYJNsdFWFoKnt49OFE
+hM2RHLOWZhWTQg8/yN7LRtI1uFPu4OpyxCMnYhi+uyJyaqR26FgvcYn4cWi4G0SW1ouqOYVza8hK
+KICC6N/uOlS/YEZOpoA4UmYAiL67NgYjYju08HG6t3qRJDvO3ysUIA/8dr17ijYF6jfpCoLbDjUt
+05UMg7SMvJhYmy+CBYxecyoeJHvQ0prxtqbA4QF2q9pEEcDhfeEI
+
+
+ 2.1
+ 2.0
+ FF05-0100595
+ 2026-06-09
+ 08:56:59
+ 01
+ DIECISEIS MIL NOVECIENTOS OCHENTA Y SEIS Y 06/100 SOLES
+ OPERACION SUJETA A DETRACCION
+ PEN
+ 10
+
+ 20261374898
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+
+
+ 20261374898
+
+
+
+
+ 20261374898
+ 6
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+ INDUSFERR EIRL
+
+ 0000
+
+
+
+
+ 1515956CNG
+
+
+
+
+
+ 20100029741
+ 6
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C
+
+
+
+
+ Detraccion
+ 001
+
+ 00000855529
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 1076.00
+
+
+ FormaPago
+ Credito
+ 15910.06
+
+
+ FormaPago
+ Cuota001
+ 15910.06
+ 2026-06-24
+
+
+ 2591.11
+
+ 14394.95
+ 2591.11
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 14394.95
+ 16986.06
+ 16986.06
+
+
+ 1
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 2
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 3
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 4
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 5
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 6
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 7
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 8
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 9
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 10
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/021_correo/pdf_resultado_021.json b/tests/correos_prueba/021_correo/pdf_resultado_021.json
new file mode 100644
index 0000000..4510d0a
--- /dev/null
+++ b/tests/correos_prueba/021_correo/pdf_resultado_021.json
@@ -0,0 +1,197 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "fecha_emision": "09/06/2026",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100595",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "total_factura": "1.00",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "1076.00",
+ "lineas": [
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128374 GRT 1692.18 EG03-1967]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [290 SOL GRR T001-128452 GRT 1692.18 EG03-1969 / 500 APU GRR T001-128453 GRT EG03-1969]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128452"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 ULTRA GRR T001-128512 GRT 1692.18 EG03-1971]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 APU GRR T001-128540 GRT 1692.18 EG03-1972]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [800 SOL GRR T001-128650 GRT 1713.60 EG03-1975]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [200 ULTRA GRR T001-128725 GRT 1713.60 EG03-1978 / 600 SOL GRR T001-128724 GRT EG03-1978]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128681 GRT 1692.18 EG03-1976]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [246 ULTRA GRR T001-128727 GRT 1692.18 EG03-1977 / 544 SOL GRR T001-128726 GRT EG03-1977]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [400 SOL GRR T001-128807 GRT 1713.60 EG03-1979 / 400 APU GRR T001-128808 GRT EG03-1979]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128910 GRT 1692.18 EG03-1981] P.P: AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO P.L: MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CAÑETE V.R: S/. 26897.97 CARGA TM: 337.03 MTC: 1515956CNG CONF: T3S3",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/021_correo/xml_resultado_021.json b/tests/correos_prueba/021_correo/xml_resultado_021.json
new file mode 100644
index 0000000..633e025
--- /dev/null
+++ b/tests/correos_prueba/021_correo/xml_resultado_021.json
@@ -0,0 +1,220 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "INDUSFERR EIRL",
+ "fecha_emision": "2026-06-09",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100595",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C",
+ "total_factura": 16986.06,
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 1076.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",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128452"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/021_correo/20261374898-01-FF05-100595.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/022_correo/20154645005-01-F002-53135.pdf b/tests/correos_prueba/022_correo/20154645005-01-F002-53135.pdf
new file mode 100644
index 0000000..031b2b2
Binary files /dev/null and b/tests/correos_prueba/022_correo/20154645005-01-F002-53135.pdf differ
diff --git a/tests/correos_prueba/022_correo/20154645005-01-F002-53135.xml b/tests/correos_prueba/022_correo/20154645005-01-F002-53135.xml
new file mode 100644
index 0000000..c1367b6
--- /dev/null
+++ b/tests/correos_prueba/022_correo/20154645005-01-F002-53135.xml
@@ -0,0 +1,148 @@
+
+
+
+
+ pQuy2Uh71k71DsWF5rc3k/D/ssA=dFozU6I2BEMW3zHy3v/MAvwBZ7xE829JneuEz2CpqguR94XFN/08cSxCf59ZINXnj2jNeSWcgJThDV4mXRYVAO+6LqrylEqAJGw3bM4hGJqwPaxu2sTp3Hb6S97ZvL8PimWd5CMN93xAXXeg7zTkgbOymdR2LuvP90Yktn569qIDLU2WBnM/339ludkaSOv8hWI5VJPmKtP2dCftM0kBgBGOQR6eXerIV3LKy2IvWrqN/cxRTh3YTvd+VCiWptbGCNaXhiIqNYsEcqw1AHeGtn2hVRTP0ci8V91J7PvmL8averjtUvury+Lml80M/EXXne70cJaq6MiCsux+SHOinw==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 VIRREYNAMIIFgzCCBGugAwIBAgIIGTcLfd6CAQswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTgzNDIxWhcNMjYxMDE0MTgzNDAwWjCCASYxNTAzBgNVBAkMLEFWLiBUT01BUyBNQVJTQU5PIE5STy4gNDMzMCBVUkIuIExBIFZJUlJFWU5BMSUwIwYJKoZIhvcNAQkBFhZkaXNfcGF0cmljaWFAeWFob28uY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjAxNTQ2NDUwMDUxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjErMCkGA1UECgwiRElTVFJJQlVJRE9SQSBTQU5UQSBQQVRSSUNJQSBTIFIgTDENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmsa8aNxkqzWWk19zfoD/cIhArrgjNFx0TeKtdN+/m+6y8ucQDeqbjtnTHEcLjyeGiWNzowP+VLI9EJFOhsQBHjDMUxF33BYdRQw4Ii5u72voovryE8EAIsuHUkrGwnI4q+ZYq3s/MF/dDNr1Fq5gQYcWju0Qcw5uR18+LDZPxc7IDwWEA9UY0Qe4G49GJWLIcoOEf2wpzQ1+YolBS8PNny9H4a9LjG3+XkCdkVL676PjEykMF/aMEQkSNPkkjiHzl+ftiQXuzAMT/1IxvCwfjwzXHqmHM91jeLk5POw0PkqxfFAvYIBzodXMNygBihmkpAeuXgBpH4qo1unqfdETDAgMBAAGjggGRMIIBjTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCEGA1UdEQQaMBiBFmRpc19wYXRyaWNpYUB5YWhvby5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBS5UPPPJNJvf5jr4HwdRfcu37ZOWTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAGXcN3ocVIpJ/GKOQwlnK3vF49BDGRbXmhrB8wg/VekOUQI6Z4AUMlAcLzi+K2rKJLwbf0bw0psOdLT6Gu2X1DP4bxPaVAqePxjY0t4H2QBmm5MZ8jxJIFgYzf53Bhgu7slJk2bRPsGt8ujAX4EjqyjfhVOnzzLk2QOH/beZK+GsaXduRxvnfBDbknYysdFTDq8J1Hn0lWHjYFhb76doEputR9KYkrTHmqFFyeOyJF2+waJkfDPuVVjWTmYlLLZCzKFKxrjWF/paNE2cJm28QcoVUxBi8o4lq9BHhkBnO54tLZRtnptbMnUkAsmXZg8SmoPpaWzAkCISrGAoTIAXm2M=
+
+
+ 2.1
+ 2.0
+ F002-00053135
+ 2026-06-25
+ 15:16:51
+ 01
+ QUINIENTOS NUEVE Y 05/100
+ OPERACION SUJETA A DETRACCION
+ PEN
+
+ 20154645005
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+
+
+ #SignatureKG
+
+
+
+
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+ 0000
+ LIMA
+ LIMA
+ SANTIAGO DE SURCO
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+
+
+ 001
+
+ 00000-451754
+
+
+
+ 027
+ 4
+ 20
+
+
+ FormaPago
+ Credito
+ 489.05
+
+
+ FormaPago
+ Cuota001
+ 489.05
+ 2026-07-05
+
+
+ 77.65
+
+ 431.4
+ 77.65
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 431.4
+ 509.05
+ 0
+ 509.05
+
+
+ 1
+ 1
+ 431.40
+
+
+ 509.050000
+ 01
+
+
+
+ 77.65
+
+ 431.40
+ 77.65
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ SE000001
+
+
+ 80141623
+
+
+
+ 431.400000
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/022_correo/pdf_resultado_022.json b/tests/correos_prueba/022_correo/pdf_resultado_022.json
new file mode 100644
index 0000000..78f0acb
--- /dev/null
+++ b/tests/correos_prueba/022_correo/pdf_resultado_022.json
@@ -0,0 +1,39 @@
+[
+ {
+ "ruc_emisor": "20154645005",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. MONEDA: SOLES",
+ "fecha_emision": "25/06/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "53135",
+ "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-0130881 SEGÚN GRT : V001-00004245 VALOR REFERENCIAL : S/ 509.05 CONFIG. VEHICULAR : C3 CARGA TM. : 16.150 NO REGISTRO M.T.C. : 1525019 CNG NRO. DE PLACA : B7Y-942",
+ "cantidad": "1.0000",
+ "precio_unitario": "0.00",
+ "total_linea": "509.05",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130881"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "V001",
+ "numero": "4245"
+ }
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/022_correo/20154645005-01-F002-53135.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/022_correo/xml_resultado_022.json b/tests/correos_prueba/022_correo/xml_resultado_022.json
new file mode 100644
index 0000000..e1c316d
--- /dev/null
+++ b/tests/correos_prueba/022_correo/xml_resultado_022.json
@@ -0,0 +1,53 @@
+[
+ {
+ "ruc_emisor": "20154645005",
+ "razon_social_emisor": "DISTRIBUIDORA SANTA PATRICIA S R L",
+ "fecha_emision": "2026-06-25",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "53135",
+ "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": "130881"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "V001",
+ "numero": "4245"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/022_correo/20154645005-01-F002-53135.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/023_correo/20538637280-01-F001-70705.pdf b/tests/correos_prueba/023_correo/20538637280-01-F001-70705.pdf
new file mode 100644
index 0000000..b9be1ba
Binary files /dev/null and b/tests/correos_prueba/023_correo/20538637280-01-F001-70705.pdf differ
diff --git a/tests/correos_prueba/023_correo/20538637280-01-F001-70705.xml b/tests/correos_prueba/023_correo/20538637280-01-F001-70705.xml
new file mode 100644
index 0000000..e26a10a
--- /dev/null
+++ b/tests/correos_prueba/023_correo/20538637280-01-F001-70705.xml
@@ -0,0 +1,146 @@
+
+
+
+
+
+ VQmXtlxldBVKnwt2PWB/agdswus=Rjg6V7mjekP8GjLrw2KVsm+d+ze83Bv++YjkVbmxkjp12jj7AZGYt025/V452/8faK75PKhrlfjl2aHmDnaHaSZo62/eCyM0Vyy+Hxi79tzmJM3kHAbOQ+3Jcx5ih+6xCJb2ISOdQskVtvR06uXjNP1kiF1zo3W6PZHeyyk+JX+8AymgFhYesBDDHInZ0ddMhCE00FTI6pFbDgBdDj+x9xb7u1w1RWzpL81/d9Lf5o/Kx+BXL/8x6LOAYJtJmqtcRIQleCZvLX9Antpo051Xd8bMoVw6q+DL5NvI4IhRbft/u0K2SqWm+cZxMo4KKrGnTs4WstbGUHwYzgCFVg4FLg==C=PE, L=LIMA, O=INVERSIONES LA ECONOMICA A E SOCIEDAD ANONIMA CERRADA - INVERSIONES LA ECONOMICA A E S.A.C., OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20538637280, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=bobregon@laeconomica.pe, STREET=CAL. B LT. 15 MZ. B A.H. BENJAMIN DOIG LOSSIOMIIFwTCCBKmgAwIBAgIIb9ZMwtWbe4cwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjMwOTE1MDE0MDIyWhcNMjQwOTE0MDE0MDAwWjCCAWMxNjA0BgNVBAkMLUNBTC4gQiBMVC4gMTUgTVouIEIgQS5ILiBCRU5KQU1JTiBET0lHIExPU1NJTzEmMCQGCSqGSIb3DQEJARYXYm9icmVnb25AbGFlY29ub21pY2EucGUxLDAqBgNVBAMMI1NPRlRXQVJFIERFIEZBQ1RVUkFDSU9OIEVMRUNUUk9OSUNBMSwwKgYDVQQLDCNGQUNUVVJBIEVMRUNUUk9OSUNBIFJVQyAyMDUzODYzNzI4MDEhMB8GA1UECwwYVmFsaWRhZG8gcG9yIExsYW1hLnBlIEVSMWYwZAYDVQQKDF1JTlZFUlNJT05FUyBMQSBFQ09OT01JQ0EgQSAgRSBTT0NJRURBRCBBTk9OSU1BIENFUlJBREEgLSBJTlZFUlNJT05FUyBMQSBFQ09OT01JQ0EgQSAgRSBTLkEuQy4xDTALBgNVBAcMBExJTUExCzAJBgNVBAYTAlBFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7ASYW55h7pD3kN/fuesq5aUQdKqXTGljpKDq1rHpqQ5nihlRZJh15uF9oUZC6c7zRme3G3FJyChCQzDXfS5hx6Fh8ON7Xbx8sOGksUhg1WGakwRTvOiOoAx+ije+j71bI6aK81MBwBj4vJosutTIEknBjdU0zUXQZyoON85nxyzwtBlh6WohR9x7V4kbUXBOMHNMxXIuPlZ5zXsSEWmAJjHJD+nQRwH3eosajkjo8CZYMgl1QwU3YT8wQrJR0RGTz1gaOuJYCgoGXH1R3iAxP8EvVfzuxRotWVpUgPvKFsIQmrtV11wT9ryhMW15LpF9TBZBtxhtrTsQiwXUu0lQSQIDAQABo4IBkjCCAY4wDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRdiFut62X7/mii5NlvPVdyou8rmTBnBggrBgEFBQcBAQRbMFkwNQYIKwYBBQUHMAKGKWh0dHA6Ly9jcnQubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5sbGFtYS5wZTAiBgNVHREEGzAZgRdib2JyZWdvbkBsYWVjb25vbWljYS5wZTBGBgNVHSAEPzA9MDsGDSsGAQQBg5d3AAEAAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9sbGFtYS5wZS9yZXBvc2l0b3J5LzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jcmwwHQYDVR0OBBYEFI0cG7UR9INUgYNt2G87lPqh4J4KMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEAOItF7Gigk30YbNUfQ1Y11Zgdj/JZoFY5VENZ2kXezfyFvYP2A4OrpclKpn3/Hak030aNWttpM0EDy8g1xzML0TUDONWh4OjZVo2nwNlIV0VucZx8h47Ws+/w3QWdY96sE5nogQkqYEdcy0elfV40x2kv5zwKgAu/PqpZFUlyNj2qJD6EXuqLK4ydsu+62BzfN1CPC8VUIXF/QmffdeN8ejsE0YakO5sHsA00B4MFGNEPZBijq28P/Wu1xmcsOP8PbMrfuQT0jxX2gHhCLf6iGaXw1VDvHCMyA4CtZQY7lPEZY87XRf+pwbuaEj3rc9Wi7x/kTeHZwXU1V43yzhnAxg==
+
+
+2.1
+2.0
+F001-0070705
+2026-06-30
+09:26:01
+01
+MIL TRESCIENTOS CUARENTA Y OCHO CON 50/100 SOLESOperación sujeta a detracciónPEN
+1
+ IDSignCF
+
+
+ 20538637280
+
+
+
+
+
+
+
+ #SignatureSP
+
+
+
+
+
+
+ 20538637280
+
+
+
+
+
+
+
+ 150124
+ 0000
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00-052-005434
+
+
+ Detraccion
+ 027
+ 4.00
+ 54.00
+
+FormaPago
+Credito
+1294.50
+
+FormaPago
+Cuota001
+1294.50
+2026-07-10
+
+ 205.70
+
+ 1142.80
+ 205.70
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+ 1142.80
+ 1348.50
+ 1348.50
+
+1
+1.000
+1142.80
+
+
+ 1348.50000
+ 01
+
+
+
+205.70
+
+ 1142.80
+ 205.70
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+ 0902-010001
+
+
+ 44103000
+
+
+
+ 1142.7966000
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/023_correo/pdf_resultado_023.json b/tests/correos_prueba/023_correo/pdf_resultado_023.json
new file mode 100644
index 0000000..607edc0
--- /dev/null
+++ b/tests/correos_prueba/023_correo/pdf_resultado_023.json
@@ -0,0 +1,39 @@
+[
+ {
+ "ruc_emisor": "20538637280",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "F001",
+ "numero": "70705",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "1348.50",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": "4.00",
+ "monto_detraccion": "54.00",
+ "lineas": [
+ {
+ "descripcion": "0902-010001 UNDSERVICIO DE TRANSPORTE ND 1,142.79 870 BLS DE CEMENTO X 1.8116 P. PARTIDA AV ATOCONGO 1860 VMT P. LLEGADA MZ CH1 LOTE 04 A.H. OLOF PALME CHILCA-CAÑETE-LIMA SEGUN GRT EG03-1477 GRR T001-131386 PLACA BJY- 903/ AXJ-987 VALOR REFERENCIAL S/1576.09 CONFIGURACION VEHICULAR T 3S3 CARGA TN 36.98 REGISTRO MTC 1533890 CNG SON :MIL TRESCIENTOS CUARENTA Y OCHO CON 50/100 SOLES Total Gravado S/: 1,142.80",
+ "cantidad": "1.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1142.79",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131386"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1477"
+ }
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/023_correo/20538637280-01-F001-70705.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/023_correo/xml_resultado_023.json b/tests/correos_prueba/023_correo/xml_resultado_023.json
new file mode 100644
index 0000000..8e78d4a
--- /dev/null
+++ b/tests/correos_prueba/023_correo/xml_resultado_023.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20538637280",
+ "razon_social_emisor": "INVERSIONES LA ECONOMICA A & E S.A.C.",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "F001",
+ "numero": "70705",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1348.5,
+ "documentos_referencia": [
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1477"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131386"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 54.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 870 BLS DE CEMENTO X 1.8116 /P. PARTIDA AV ATOCONGO 1860 VMT /P. LLEGADA MZ CH1 LOTE 04 A.H. OLOF PALME /CHILCA-CAÑETE-LIMA /SEGUN GRT EG03-1477 GRR T001-131386 /PLACA BJY- 903/ AXJ-987 /VALOR REFERENCIAL S/1576.09 /CONFIGURACION VEHICULAR T 3S3 CARGA TN 36.98 /REGISTRO MTC 1533890 CNG /",
+ "cantidad": 1.0,
+ "precio_unitario": 1348.5,
+ "total_linea": 1142.8,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131386"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1477"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/023_correo/20538637280-01-F001-70705.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/024_correo/20537929520-01-F002-486.pdf b/tests/correos_prueba/024_correo/20537929520-01-F002-486.pdf
new file mode 100644
index 0000000..a94a0f5
Binary files /dev/null and b/tests/correos_prueba/024_correo/20537929520-01-F002-486.pdf differ
diff --git a/tests/correos_prueba/024_correo/pdf_resultado_024.json b/tests/correos_prueba/024_correo/pdf_resultado_024.json
new file mode 100644
index 0000000..5f8b5db
--- /dev/null
+++ b/tests/correos_prueba/024_correo/pdf_resultado_024.json
@@ -0,0 +1,20 @@
+[
+ {
+ "ruc_emisor": "20537929520",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "fecha_emision": "12/06/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "486",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "total_factura": "747.50",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/024_correo/20537929520-01-F002-486.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/025_correo/20537929520-01-F002-488.pdf b/tests/correos_prueba/025_correo/20537929520-01-F002-488.pdf
new file mode 100644
index 0000000..28f1644
Binary files /dev/null and b/tests/correos_prueba/025_correo/20537929520-01-F002-488.pdf differ
diff --git a/tests/correos_prueba/025_correo/pdf_resultado_025.json b/tests/correos_prueba/025_correo/pdf_resultado_025.json
new file mode 100644
index 0000000..8aa6996
--- /dev/null
+++ b/tests/correos_prueba/025_correo/pdf_resultado_025.json
@@ -0,0 +1,20 @@
+[
+ {
+ "ruc_emisor": "20537929520",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "fecha_emision": "12/06/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "488",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "total_factura": "747.50",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/025_correo/20537929520-01-F002-488.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/026_correo/20537929520-01-F002-486.pdf b/tests/correos_prueba/026_correo/20537929520-01-F002-486.pdf
new file mode 100644
index 0000000..a94a0f5
Binary files /dev/null and b/tests/correos_prueba/026_correo/20537929520-01-F002-486.pdf differ
diff --git a/tests/correos_prueba/026_correo/pdf_resultado_026.json b/tests/correos_prueba/026_correo/pdf_resultado_026.json
new file mode 100644
index 0000000..858e3e7
--- /dev/null
+++ b/tests/correos_prueba/026_correo/pdf_resultado_026.json
@@ -0,0 +1,20 @@
+[
+ {
+ "ruc_emisor": "20537929520",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "fecha_emision": "12/06/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "486",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "total_factura": "747.50",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/026_correo/20537929520-01-F002-486.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/027_correo/20537929520-01-F002-486.pdf b/tests/correos_prueba/027_correo/20537929520-01-F002-486.pdf
new file mode 100644
index 0000000..a94a0f5
Binary files /dev/null and b/tests/correos_prueba/027_correo/20537929520-01-F002-486.pdf differ
diff --git a/tests/correos_prueba/027_correo/pdf_resultado_027.json b/tests/correos_prueba/027_correo/pdf_resultado_027.json
new file mode 100644
index 0000000..146fce9
--- /dev/null
+++ b/tests/correos_prueba/027_correo/pdf_resultado_027.json
@@ -0,0 +1,20 @@
+[
+ {
+ "ruc_emisor": "20537929520",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "fecha_emision": "12/06/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "486",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "total_factura": "747.50",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/027_correo/20537929520-01-F002-486.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/028_correo/20537929520-01-F002-486.pdf b/tests/correos_prueba/028_correo/20537929520-01-F002-486.pdf
new file mode 100644
index 0000000..a94a0f5
Binary files /dev/null and b/tests/correos_prueba/028_correo/20537929520-01-F002-486.pdf differ
diff --git a/tests/correos_prueba/028_correo/20537929520-01-F002-486.xml b/tests/correos_prueba/028_correo/20537929520-01-F002-486.xml
new file mode 100644
index 0000000..b781261
--- /dev/null
+++ b/tests/correos_prueba/028_correo/20537929520-01-F002-486.xml
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+ dIuY02p/WSSKIQCYoHEfw9pHruA=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
+
+
+ 2.1
+ 2.0
+ F002-486
+ 2026-06-12
+ 19:47:3801Operación sujeta a detracciónPEN
+ GRRE: T001-127773 / GRET :EG03-11
+ 09
+
+ 20537929520
+
+
+ 20537929520
+
+
+
+
+
+
+
+ 20537929520
+
+
+
+
+
+
+ 20537929520
+
+
+
+
+
+
+
+ 150140
+ 0000
+ Lima
+ Lima
+ Santiago de Surco
+
+ MZA. E LOTE. 9 COO. LA ESPERANZA (MONTERRICO-ALT CDRA 3 PISTA NUEVA) LIMA - LIMA - SANTIAGO DE SURCO
+
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00-093-006097
+
+
+ FormaPago
+ Credito
+ 717.50
+
+ FormaPago
+ Cuota001
+ 717.50
+ 2026-06-26
+
+ Detraccion
+ 027
+ 4
+ 30
+
+ 114.03
+ 633.47
+ 114.03
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+ 633.47
+ 747.50
+ 0.00
+ 0.00
+ 0.00
+ 747.50
+
+ 1
+ 1.00
+ 633.47
+
+
+ 747.5
+ 01
+
+
+ 114.03
+
+ 633.47
+ 114.03
+
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+ C00-159
+
+
+ -
+
+
+
+ 633.474576
+
+
+
diff --git a/tests/correos_prueba/028_correo/pdf_resultado_028.json b/tests/correos_prueba/028_correo/pdf_resultado_028.json
new file mode 100644
index 0000000..bf2a321
--- /dev/null
+++ b/tests/correos_prueba/028_correo/pdf_resultado_028.json
@@ -0,0 +1,20 @@
+[
+ {
+ "ruc_emisor": "20537929520",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "fecha_emision": "12/06/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "486",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. Número: F002",
+ "total_factura": "747.50",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/028_correo/20537929520-01-F002-486.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/028_correo/xml_resultado_028.json b/tests/correos_prueba/028_correo/xml_resultado_028.json
new file mode 100644
index 0000000..af13ed5
--- /dev/null
+++ b/tests/correos_prueba/028_correo/xml_resultado_028.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20537929520",
+ "razon_social_emisor": "FERRETERIA Y MATERIALES",
+ "fecha_emision": "2026-06-12",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "486",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 747.5,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "127773"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 30.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 TRANSPORTE : 650 BOLSAS DE CEMENTO/CARGA:27.625Tn/ Operación sujeta a spot código: 027 - 4% - S/.30 / Valor referencial 747.50/ C. VEHC:T2S3 /C.INSC: 150312420 /MTC 1546095 CNG/ PLACAS:B1L-940/A5I-978",
+ "cantidad": 1.0,
+ "precio_unitario": 747.5,
+ "total_linea": 633.47,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "127773"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/028_correo/20537929520-01-F002-486.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.pdf b/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.pdf
new file mode 100644
index 0000000..b7e2a9b
Binary files /dev/null and b/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.pdf differ
diff --git a/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.xml b/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.xml
new file mode 100644
index 0000000..40bfa53
--- /dev/null
+++ b/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.xml
@@ -0,0 +1,994 @@
+
+
+
+ zGkSPWeCj785eE+jxHzlbHtcZk8=DQPM2A+CrvHzAday6h3G8smr2vSJBal4FtaYmR7heQJXuEtaUcu6s8RGTjO3CGE8kVqLQAdPdS4J
+FxZ3n/x3dYJFW8epiJWByHxWxQp/MQn6RGbYOzQLC3TnaZV5GRgNkksGwKAUkuHrMhxs1/iSigNS
+FxXfgCl4JlqNcN2QM6cI0lB2HCQ426xdDpRiFneeWi2cJpXUynmwGF5MVO9fk/0LTPu4CDFeWFaC
+Ar9kQx7xpnDWSd4l1oYu/H0h1WbdxdThwxJZwixV/GV34hajhQhiMoK1lLyk9ZqfHe44TZPnJilL
+Kep8PDZ81SzIvB/i9f2VK9qUK49n1HesgB9BbQ==2.5.4.13=#0c2a436572746966696361646f207061726120466163747572616369c3b36e20456c65637472c3b36e696361,1.3.6.1.4.1.47286.30.2=#0c03525543,1.3.6.1.4.1.47286.30.3=#0c0b3230323631333734383938,1.3.6.1.4.1.47286.30.4=#0c03444e49,1.2.840.113549.1.9.1=#16156c6f7370696e6f7340696e647573666572722e7065,CN=WALTER EDUARDO ALMANZA VARGAS,2.5.4.5=#13083036313936323939,2.5.4.42=#0c0e57414c544552204544554152444f,2.5.4.4=#0c0e414c4d414e5a4120564152474153,2.5.4.12=#0c11544954554c4152202d20474552454e5445,OU=ADMINISTRACION,OU=20261374898,O=INDUSFERR EMPRESA INDIVIDUAL DE RESPONSABILIDAD LIMITADA,L=LIMA,C=PEMIIImTCCBoGgAwIBAgIIPxZafdPW2HswDQYJKoZIhvcNAQELBQAwgbgxCzAJBgNVBAYTAkVTMUQw
+QgYDVQQHDDtCYXJjZWxvbmEgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LnVhbmF0YWNhLmNv
+bS9hZGRyZXNzKTEWMBQGA1UECgwNVUFOQVRBQ0EgUy5BLjEVMBMGA1UECwwMVFNQLVVBTkFUQUNB
+MRowGAYDVQQDDBFVQU5BVEFDQSBDQTEgMjAxNjEYMBYGA1UEYQwPVkFURVMtQTY2NzIxNDk5MB4X
+DTI1MTEyMDE0NDkwMFoXDTI4MTExOTE0NDkwMFowggG5MQswCQYDVQQGEwJQRTENMAsGA1UEBwwE
+TElNQTFBMD8GA1UECgw4SU5EVVNGRVJSIEVNUFJFU0EgSU5ESVZJRFVBTCBERSBSRVNQT05TQUJJ
+TElEQUQgTElNSVRBREExFDASBgNVBAsMCzIwMjYxMzc0ODk4MRcwFQYDVQQLDA5BRE1JTklTVFJB
+Q0lPTjEaMBgGA1UEDAwRVElUVUxBUiAtIEdFUkVOVEUxFzAVBgNVBAQMDkFMTUFOWkEgVkFSR0FT
+MRcwFQYDVQQqDA5XQUxURVIgRURVQVJETzERMA8GA1UEBRMIMDYxOTYyOTkxJjAkBgNVBAMMHVdB
+TFRFUiBFRFVBUkRPIEFMTUFOWkEgVkFSR0FTMSQwIgYJKoZIhvcNAQkBFhVsb3NwaW5vc0BpbmR1
+c2ZlcnIucGUxEzARBgorBgEEAYLxNh4EDANETkkxGzAZBgorBgEEAYLxNh4DDAsyMDI2MTM3NDg5
+ODETMBEGCisGAQQBgvE2HgIMA1JVQzEzMDEGA1UEDQwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0dXJh
+Y2nDs24gRWxlY3Ryw7NuaWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqve/s0UH
+eg3o8PIcVzStx7Q/4o7o8LNUutQ0lQC78g3sJ5whnCg0JzSihlEl/b4FjwL+HP0ReIdyJS3AfkvV
+9FfUSKf16iNe2cTI7YEm5E7nkiIfm4RNfcH/cfEQzCedmbuGxLl7FDryDMYcKr02UlbhEjthmkcV
+FBoyhd5EarKhoevd8Wg6XdUBFOpkI5l6/3cJ6nhgcpnag2jHvGrsWauGBB+GPNXcC97x28iRTFgv
+Hmeb4NbYF37b/eET1dzgt5lK15A+zFmpF1qyLVeNb8uaWBhMkYcGghy9oBv3Gk47TF5haTy3TaJF
+93vLfhLhwaeb/HXvLIbKiX4XTUtB8wIDAQABo4ICoTCCAp0wgdYGCCsGAQUFBwEBBIHJMIHGMFQG
+CCsGAQUFBzAChkhodHRwOi8vd3d3LnVhbmF0YWNhLmNvbS9wdWJsaWMvZG93bmxvYWQvdHNwX2Nl
+cnRpZmljYXRlcy90cnVzdGVkUm9vdC5wN2MwNgYIKwYBBQUHMAGGKmh0dHA6Ly9vY3NwMS51YW5h
+dGFjYS5jb20vcHVibGljL3BraS9vY3NwLzA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AyLnVhbmF0
+YWNhLmNvbS9wdWJsaWMvcGtpL29jc3AvMB0GA1UdDgQWBBTeZx85VGHOnjXWGr7f+TyGNhMYzjAM
+BgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFC1x77Bjf/X94IMiRH9EEDCBT03lMIGQBgNVHSAEgYgw
+gYUwgYIGDCsGAQQBgvE2AgICAjByMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LnVhbmF0YWNhLmNv
+bS9wdWJsaWMvcGtpL2RwYy1wZS8wOAYIKwYBBQUHAgIwLAwqQ2VydGlmaWNhZG8gcGFyYSBGYWN0
+dXJhY2nDs24gRWxlY3Ryw7NuaWNhMIGPBgNVHR8EgYcwgYQwQKA+oDyGOmh0dHA6Ly9jcmwxLnVh
+bmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwQKA+oDyGOmh0dHA6
+Ly9jcmwyLnVhbmF0YWNhLmNvbS9wdWJsaWMvcGtpL2NybC9DQTFzdWJvcmRpbmFkYS5jcmwwDgYD
+VR0PAQH/BAQDAgbAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAgBgNVHREEGTAXgRVs
+b3NwaW5vc0BpbmR1c2ZlcnIucGUwDQYJKoZIhvcNAQELBQADggIBAGsG27BxbnS5p5xLs4t/pfrc
+8RCWhIpTLAymTnRLrrkbshAx36bchd0vUctaum6UiD3RqWI/kPERdmvFkUZBoDN/2cnQTXWaabE7
+QuhHjsznTLlwsRK92QcvmxbusOAph7n9Sm6o7R72MRatOZeRGBEeS/LUutKMTUU6/R+vn/oa7pss
+wrJeTv2abLyAvHQuqnOCN7BKD93t+iPY63EHEa7ijbalRna2qHLvxSl/PGAvXsHhlY/mZvccojSo
+9jwmmZhpaB859uCOp8Mv9pua4KJlpWfkCqw9pUlldLBQgkkNxzBKsaF8AXAgnTZnaXmJ+Hd/k2ck
+gIa6vmesyF7lpg0saij7fIudvILOjzDUlvI/gaTE6ZJLkYdbsrNBEXHDV/p7+53/KGzZmSrAgSZb
+ly0U4RiA/QZ0BM1ghqzwal2FweB/6uet50e4EIqNuo3k+XmPFPzOvaQmaDPYJNsdFWFoKnt49OFE
+hM2RHLOWZhWTQg8/yN7LRtI1uFPu4OpyxCMnYhi+uyJyaqR26FgvcYn4cWi4G0SW1ouqOYVza8hK
+KICC6N/uOlS/YEZOpoA4UmYAiL67NgYjYju08HG6t3qRJDvO3ysUIA/8dr17ijYF6jfpCoLbDjUt
+05UMg7SMvJhYmy+CBYxecyoeJHvQ0prxtqbA4QF2q9pEEcDhfeEI
+
+
+ 2.1
+ 2.0
+ FF05-0100595
+ 2026-06-09
+ 08:56:59
+ 01
+ DIECISEIS MIL NOVECIENTOS OCHENTA Y SEIS Y 06/100 SOLES
+ OPERACION SUJETA A DETRACCION
+ PEN
+ 10
+
+ 20261374898
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+
+
+ 20261374898
+
+
+
+
+ 20261374898
+ 6
+
+
+ 20261374898
+
+
+ INDUSFERR EIRL
+
+
+ INDUSFERR EIRL
+
+ 0000
+
+
+
+
+ 1515956CNG
+
+
+
+
+
+ 20100029741
+ 6
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C
+
+
+
+
+ Detraccion
+ 001
+
+ 00000855529
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 1076.00
+
+
+ FormaPago
+ Credito
+ 15910.06
+
+
+ FormaPago
+ Cuota001
+ 15910.06
+ 2026-06-24
+
+
+ 2591.11
+
+ 14394.95
+ 2591.11
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 14394.95
+ 16986.06
+ 16986.06
+
+
+ 1
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 2
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 3
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 4
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 5
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 6
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 7
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 8
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
+ 9
+ 1.0000000000
+ 1452.20
+
+
+ 1713.6000000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 261.40
+
+ 1452.20
+ 261.40
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1452.2033898305
+
+
+
+ 10
+ 1.0000000000
+ 1434.05
+
+
+ 1692.1800000000
+ 01
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ TRANSPORTE DE BOLSAS DE CEMENTO
+
+ 150501
+
+ MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CANETE
+
+
+
+
+ 01
+ 26897.97
+
+
+ 02
+ 26897.97
+
+
+ 03
+ 18604.45
+
+
+ 01
+
+ 0
+
+
+ T3S3
+ true
+
+
+ 01
+ 337.03
+
+
+
+
+
+
+ 258.13
+
+ 1434.05
+ 258.13
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ 1595
+
+
+
+ 1434.0508474576
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/029_correo/pdf_resultado_029.json b/tests/correos_prueba/029_correo/pdf_resultado_029.json
new file mode 100644
index 0000000..d3e265a
--- /dev/null
+++ b/tests/correos_prueba/029_correo/pdf_resultado_029.json
@@ -0,0 +1,197 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "fecha_emision": "09/06/2026",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100595",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C Ruc: 20100029741",
+ "total_factura": "1.00",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "1076.00",
+ "lineas": [
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128374 GRT 1692.18 EG03-1967]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [290 SOL GRR T001-128452 GRT 1692.18 EG03-1969 / 500 APU GRR T001-128453 GRT EG03-1969]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128452"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 ULTRA GRR T001-128512 GRT 1692.18 EG03-1971]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 APU GRR T001-128540 GRT 1692.18 EG03-1972]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [800 SOL GRR T001-128650 GRT 1713.60 EG03-1975]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [200 ULTRA GRR T001-128725 GRT 1713.60 EG03-1978 / 600 SOL GRR T001-128724 GRT EG03-1978]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128681 GRT 1692.18 EG03-1976]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [246 ULTRA GRR T001-128727 GRT 1692.18 EG03-1977 / 544 SOL GRR T001-128726 GRT EG03-1977]",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [400 SOL GRR T001-128807 GRT 1713.60 EG03-1979 / 400 APU GRR T001-128808 GRT EG03-1979]",
+ "cantidad": "1.00",
+ "precio_unitario": "1713.60",
+ "total_linea": "1713.60",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "Und. SERVICIO DE TRANSPORTE [790 SOL GRR T001-128910 GRT 1692.18 EG03-1981] P.P: AV ATOCONGO 1860 - VILLA MARIA DEL TRIUNFO P.L: MZ B10 LT 30 URB TERCER MUNDO - SAN VICENTE DE CAÑETE V.R: S/. 26897.97 CARGA TM: 337.03 MTC: 1515956CNG CONF: T3S3",
+ "cantidad": "1.00",
+ "precio_unitario": "1692.18",
+ "total_linea": "1692.18",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/029_correo/xml_resultado_029.json b/tests/correos_prueba/029_correo/xml_resultado_029.json
new file mode 100644
index 0000000..e2c01b7
--- /dev/null
+++ b/tests/correos_prueba/029_correo/xml_resultado_029.json
@@ -0,0 +1,220 @@
+[
+ {
+ "ruc_emisor": "20261374898",
+ "razon_social_emisor": "INDUSFERR EIRL",
+ "fecha_emision": "2026-06-09",
+ "tipo": "01",
+ "serie": "FF05",
+ "numero": "100595",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C",
+ "total_factura": 16986.06,
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 1076.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",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128374"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128452"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128453"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1969"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128512"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128540"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128650"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128725"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128724"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1978"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128681"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128727"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128726"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1977"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1713.6,
+ "total_linea": 1452.2,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128807"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128808"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1979"
+ }
+ },
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE",
+ "cantidad": 1.0,
+ "precio_unitario": 1692.18,
+ "total_linea": 1434.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "128910"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/029_correo/20261374898-01-FF05-100595.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/030_correo/20154645005-01-F002-53359.pdf b/tests/correos_prueba/030_correo/20154645005-01-F002-53359.pdf
new file mode 100644
index 0000000..af1cda4
Binary files /dev/null and b/tests/correos_prueba/030_correo/20154645005-01-F002-53359.pdf differ
diff --git a/tests/correos_prueba/030_correo/20154645005-01-F002-53359.xml b/tests/correos_prueba/030_correo/20154645005-01-F002-53359.xml
new file mode 100644
index 0000000..f57fe94
--- /dev/null
+++ b/tests/correos_prueba/030_correo/20154645005-01-F002-53359.xml
@@ -0,0 +1,136 @@
+
+
+
+
+ l2hjhjENbSBH6D7CwHauK1EE6Mk=WxM2Inil9+HSmH23TedTfaYYA1rkPtfpEZWzK2XUahwh0upC8dJ7Lza9E61VeM0YVKNiEDkCDSRc/+Ynz8AxYwm63kCYCrTlx5Ceq9B9LfcUkOFShoCIKuwH3OnH9Ptk3PCwvVN+p+kGh1XG0jo5eF23IjBzlBpxvfprgclGZKIvfvqJhJLJ4M9R/+leQTMgiF/u9x5tK5Vgu44OZWZ6k/9ZPrwjO2mDLPQbwdeqZsHOjkkJe+RDboYW+LLtx/4yDbnGK5YlJIo2qo65xfRpvt7+mZath6tfJgoH4SGetgZV1A+wCgp/8RKC+JKGXV32f2zq5Y0qi4jy04wd4OaJyQ==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 VIRREYNAMIIFgzCCBGugAwIBAgIIGTcLfd6CAQswDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQxMDE0MTgzNDIxWhcNMjYxMDE0MTgzNDAwWjCCASYxNTAzBgNVBAkMLEFWLiBUT01BUyBNQVJTQU5PIE5STy4gNDMzMCBVUkIuIExBIFZJUlJFWU5BMSUwIwYJKoZIhvcNAQkBFhZkaXNfcGF0cmljaWFAeWFob28uY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjAxNTQ2NDUwMDUxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjErMCkGA1UECgwiRElTVFJJQlVJRE9SQSBTQU5UQSBQQVRSSUNJQSBTIFIgTDENMAsGA1UEBwwETElNQTELMAkGA1UEBhMCUEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmsa8aNxkqzWWk19zfoD/cIhArrgjNFx0TeKtdN+/m+6y8ucQDeqbjtnTHEcLjyeGiWNzowP+VLI9EJFOhsQBHjDMUxF33BYdRQw4Ii5u72voovryE8EAIsuHUkrGwnI4q+ZYq3s/MF/dDNr1Fq5gQYcWju0Qcw5uR18+LDZPxc7IDwWEA9UY0Qe4G49GJWLIcoOEf2wpzQ1+YolBS8PNny9H4a9LjG3+XkCdkVL676PjEykMF/aMEQkSNPkkjiHzl+ftiQXuzAMT/1IxvCwfjwzXHqmHM91jeLk5POw0PkqxfFAvYIBzodXMNygBihmkpAeuXgBpH4qo1unqfdETDAgMBAAGjggGRMIIBjTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFF2IW63rZfv+aKLk2W89V3Ki7yuZMGcGCCsGAQUFBwEBBFswWTA1BggrBgEFBQcwAoYpaHR0cDovL2NydC5sbGFtYS5wZS9sbGFtYXBlc3RhbmRhcmRjYS5jZXIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLmxsYW1hLnBlMCEGA1UdEQQaMBiBFmRpc19wYXRyaWNpYUB5YWhvby5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBS5UPPPJNJvf5jr4HwdRfcu37ZOWTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAGXcN3ocVIpJ/GKOQwlnK3vF49BDGRbXmhrB8wg/VekOUQI6Z4AUMlAcLzi+K2rKJLwbf0bw0psOdLT6Gu2X1DP4bxPaVAqePxjY0t4H2QBmm5MZ8jxJIFgYzf53Bhgu7slJk2bRPsGt8ujAX4EjqyjfhVOnzzLk2QOH/beZK+GsaXduRxvnfBDbknYysdFTDq8J1Hn0lWHjYFhb76doEputR9KYkrTHmqFFyeOyJF2+waJkfDPuVVjWTmYlLLZCzKFKxrjWF/paNE2cJm28QcoVUxBi8o4lq9BHhkBnO54tLZRtnptbMnUkAsmXZg8SmoPpaWzAkCISrGAoTIAXm2M=
+
+
+ 2.1
+ 2.0
+ F002-00053359
+ 2026-07-03
+ 09:13:12
+ 01
+ DOSCIENTOS Y 94/100
+ PEN
+
+ 20154645005
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+
+
+ #SignatureKG
+
+
+
+
+
+
+ 20154645005
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+
+ DISTRIBUIDORA SANTA PATRICIA S R L
+
+ 0000
+ LIMA
+ LIMA
+ SANTIAGO DE SURCO
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+
+
+ FormaPago
+ Credito
+ 200.94
+
+
+ FormaPago
+ Cuota001
+ 200.94
+ 2026-07-13
+
+
+ 30.65
+
+ 170.29
+ 30.65
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 170.29
+ 200.94
+ 0
+ 200.94
+
+
+ 1
+ 1
+ 170.29
+
+
+ 200.940000
+ 01
+
+
+
+ 30.65
+
+ 170.29
+ 30.65
+
+ S
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE
+
+ SE000001
+
+
+ 80141623
+
+
+
+ 170.290000
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/030_correo/pdf_resultado_030.json b/tests/correos_prueba/030_correo/pdf_resultado_030.json
new file mode 100644
index 0000000..facd136
--- /dev/null
+++ b/tests/correos_prueba/030_correo/pdf_resultado_030.json
@@ -0,0 +1,39 @@
+[
+ {
+ "ruc_emisor": "20154645005",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. MONEDA: SOLES",
+ "fecha_emision": "03/07/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "53359",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. MONEDA: SOLES",
+ "total_factura": "200.94",
+ "documentos_referencia": [],
+ "tiene_detraccion": false,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [
+ {
+ "descripcion": "SERVICIO DE TRANSPORTE UND SERVICIO DE TRANSPORTE 150 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-0131496 SEGÚN GRT : V001-00004308 VALOR REFERENCIAL : S/ 200.94 CONFIG. VEHICULAR : C3 CARGA TM. : 6.375 NO REGISTRO M.T.C. : 1525019 CNG NRO. DE PLACA : A1Y-872",
+ "cantidad": "1.0000",
+ "precio_unitario": "0.00",
+ "total_linea": "200.94",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131496"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "V001",
+ "numero": "4308"
+ }
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/030_correo/20154645005-01-F002-53359.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/030_correo/xml_resultado_030.json b/tests/correos_prueba/030_correo/xml_resultado_030.json
new file mode 100644
index 0000000..7a13fa3
--- /dev/null
+++ b/tests/correos_prueba/030_correo/xml_resultado_030.json
@@ -0,0 +1,53 @@
+[
+ {
+ "ruc_emisor": "20154645005",
+ "razon_social_emisor": "DISTRIBUIDORA SANTA PATRICIA S R L",
+ "fecha_emision": "2026-07-03",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "53359",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 200.94,
+ "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": 200.94,
+ "total_linea": 170.29,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131496"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "V001",
+ "numero": "4308"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/030_correo/20154645005-01-F002-53359.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/031_correo/20500864703-01-F002-21184.pdf b/tests/correos_prueba/031_correo/20500864703-01-F002-21184.pdf
new file mode 100644
index 0000000..9f78c64
Binary files /dev/null and b/tests/correos_prueba/031_correo/20500864703-01-F002-21184.pdf differ
diff --git a/tests/correos_prueba/031_correo/20500864703-01-F002-21184.xml b/tests/correos_prueba/031_correo/20500864703-01-F002-21184.xml
new file mode 100644
index 0000000..8bfb896
--- /dev/null
+++ b/tests/correos_prueba/031_correo/20500864703-01-F002-21184.xml
@@ -0,0 +1,224 @@
+
+
+
+ Z6gdRCeS0KZtFV+bNR3gOnhAgrw=KAc/XRVZi869iNSsJUat941GN3JIc5lB64mPtmZJvGmHegjlX6pbPywf78sZRAl09NtlgfIxBXnXy6GBD1gbhvbNpth1VVotee+YU/J6Bldapnh1PvI0dkbhv7tHkiO5R3z7l02ik5sHc/E+ZrTlmJaUrNjCQdBi+QIcfzYCFsoVox6Qzw91yG5/9/3cusJ1UVFMYrcMboOfc8YWmpFJ1I2TriBuEoYW4k1d+IhDrpBL5PSvwEKEeXkUr/0kdZY8wMvlvFGBKb7TD3D44TRkLzB+g2f0C94NGVZc4aHvzKyMSjymSyowMN36N1CZ2QK1tqPQSG3VKRHfxCuLroc+JA==C=PE, L=LIMA, O=THE FACTORY HKA PERU SOCIEDAD ANONIMA CERRADA, OU=Validado por Llama.pe ER, OU=FACTURA ELECTRONICA RUC 20550728762, CN=SOFTWARE DE FACTURACION ELECTRONICA, E=rhuamani@thefactoryhka.com, STREET=JR. TOBAGO NRO. 257 URB. CEDROS DE VILLAMIIFkjCCBHqgAwIBAgIINtWoLsl5h6YwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwNTA5MjEwMTE2WhcNMjcwNTA5MjEwMTAwWjCCATExMTAvBgNVBAkMKEpSLiBUT0JBR08gTlJPLiAyNTcgVVJCLiBDRURST1MgREUgVklMTEExKTAnBgkqhkiG9w0BCQEWGnJodWFtYW5pQHRoZWZhY3Rvcnloa2EuY29tMSwwKgYDVQQDDCNTT0ZUV0FSRSBERSBGQUNUVVJBQ0lPTiBFTEVDVFJPTklDQTEsMCoGA1UECwwjRkFDVFVSQSBFTEVDVFJPTklDQSBSVUMgMjA1NTA3Mjg3NjIxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjE2MDQGA1UECgwtVEhFIEZBQ1RPUlkgSEtBIFBFUlUgU09DSUVEQUQgQU5PTklNQSBDRVJSQURBMQ0wCwYDVQQHDARMSU1BMQswCQYDVQQGEwJQRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMJd2vPsbwJyY9Bwk/mrCsU/QUHOb7Jqj2mTsGnP5qkbdUObmK3hTrXzRS6NwUe1nT6VsN/efBOlE1DaBYdwIttOu1jYB/ES1TsPhkykz7AIbZ/sQvYaerJUqi+Y0Xga5W7H+oH0SCWajVcHe0JzP1sRxJQZQzKaj6cenPchxV1mIU7JCpNsbstlc2IWB1ipiZ8SOMXV0tG9LPyjXStOP+hJVEARyXyIqiFfCK8lTobVvHxFbwsEnfM7PzcmyzJrjLHXbVR6139srkzj65QQKYkpw/iC3EhqjUjBi9F+7rcRcpU/T1kUM+Sr5oi5qNAufP0HKKWPJUVTwrwQv0e1YoUCAwEAAaOCAZUwggGRMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUXYhbretl+/5oouTZbz1XcqLvK5kwZwYIKwYBBQUHAQEEWzBZMDUGCCsGAQUFBzAChilodHRwOi8vY3J0LmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNlcjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3AubGxhbWEucGUwJQYDVR0RBB4wHIEacmh1YW1hbmlAdGhlZmFjdG9yeWhrYS5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBRukXU3fFIvxqBWWVLHgv7lUdqKHzAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAHHPp45FldlKcmdYPcMcw8duVbkp7YD85TGHZFGd4Y0miTrZHGC5KNRfqg2IZeMnx0w9/dBmOOd0BYoyBmi8KBNW3rEu6n6wBbj9m6rRmG2oGwJcmmoMzuTmv/pXY0fCuoyzRAZoc7v4Ogj7Csoj5ruPyAcait5o9dgwZUAnLUAB1sgUIUKnqK/9N/yWVLleeX+rH+MBUuephWNnsTVFfHhGhalZdtGFSROjSUjlakvuPdyMaO4VaS1C2YvdYsvXBe3qHuj/uNTG9kV9oPLCYxsL3+apxDi8b89IPUgXW99b9hfwxeUWRK6qpmHgsWUIQ1Aa0RNFMxA41VvpTpv15u8=
+
+
+ 2.1
+ 2.0
+ F002-21184
+ 2026-07-06
+ 12:38:13
+ 01
+ PEN
+
+ LlamaSign
+
+
+ 20500864703
+
+
+
+
+
+
+
+ #LlamaSign
+
+
+
+
+ IDSignSP
+
+
+ 20500864703
+
+
+ DEPOSITOS Y FERRETERIA NICHAR S.A.C.
+
+
+
+
+ #SignatureSP
+
+
+
+
+
+
+ 20500864703
+
+
+
+
+
+
+
+ 0000
+
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 150143
+ LIMA
+ DEPARTAMENTO LIMA
+ VILLA MARIA DEL TRIUNFO
+
+ AV. 26 DE NOVIEMBRE 2473
+
+
+ PE
+
+
+
+
+
+
+ FormaPago
+ Credito
+ 267.92
+
+
+ FormaPago
+ Cuota001
+ 267.92
+ 2026-07-21
+
+
+ 40.87
+
+ 227.05
+ 40.87
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+ 0.00
+ 0.00
+
+
+ 2000
+ ISC
+ EXC
+
+
+
+
+ 0
+ 0
+
+
+ 9995
+ EXP
+ FRE
+
+
+
+
+ 0
+ 0.00
+
+
+ 9996
+ GRA
+ FRE
+
+
+
+
+ 0
+ 0
+
+
+ 9997
+ EXO
+ VAT
+
+
+
+
+ 0
+ 0
+
+
+ 9998
+ INA
+ FRE
+
+
+
+
+ 0.00
+ 0.00
+
+
+ 9999
+ OTROS
+ OTH
+
+
+
+
+
+ 227.05
+ 267.92
+ 0.00
+ 0.00
+ 267.92
+
+
+ 1
+ 200
+ 227.05
+
+
+ 1.3396
+ 01
+
+
+
+ 40.87
+
+ 227.05
+ 40.87
+
+ 18
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+ SER01
+
+
+ 78101802
+
+
+
+ 1.1352540000
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/031_correo/CDR-20500864703-01-F002-21184.xml b/tests/correos_prueba/031_correo/CDR-20500864703-01-F002-21184.xml
new file mode 100644
index 0000000..b0a9715
--- /dev/null
+++ b/tests/correos_prueba/031_correo/CDR-20500864703-01-F002-21184.xml
@@ -0,0 +1,51 @@
+
+
+
+ I+w1dW2M8rn+Qs/+Hi9FOU81KqU=qE6jUjlxxkDk+soWwwLLtgCoVbxiAT4eMV4PMos0lVWNRD1HHAyyTR8xBL9nFzWb2UpCLBk7Vmu/IM/XlFaf7zCUWssGBS+aqn1qzwblfGQHqSY6cN/JQLw/OJ8sKqiL/4DHqSOZHQpw8+0ch461cQhmXGYlEHtBmtf+Ja7LTacd70MvlmPQNClU6GsZqQSiRb0n2b6T2fooxKJWiIRUkRg0EihIfOHgiMf5p+Al1FIW/O4FlUVimNjmGU8YfibEVM0slvDjAyh7Mq21nN6T8OK5Sy2DPknB20kG0dQz0+/a4+tuPCOoDJeW97Ngtr6Orq3E+mEloMauCi0NDTf1fw==System.Security.Cryptography.X509Certificates.X500DistinguishedName5740275299046747460C=PE, L=LIMA, O=THE FACTORY HKA PERU SOCIEDAD ANONIMA CERRADA, OU=Validado por Llama.pe ER, OU=20550728762, CN=20550728762, E=rhuamani@thefactoryhka.com, STREET=JR. TOBAGO NRO. 257 URB. CEDROS DE VILLAMIIFYjCCBEqgAwIBAgIIT6mN+KChbUQwDQYJKoZIhvcNAQELBQAwRjEkMCIGA1UEAwwbTGxhbWEucGUgU0hBMjU2IFN0YW5kYXJkIENBMREwDwYDVQQKDAhMTEFNQS5QRTELMAkGA1UEBhMCUEUwHhcNMjQwNjEzMjAzMDQ5WhcNMjcwNjEzMjAzMDAwWjCCAQExMTAvBgNVBAkMKEpSLiBUT0JBR08gTlJPLiAyNTcgVVJCLiBDRURST1MgREUgVklMTEExKTAnBgkqhkiG9w0BCQEWGnJodWFtYW5pQHRoZWZhY3Rvcnloa2EuY29tMRQwEgYDVQQDDAsyMDU1MDcyODc2MjEUMBIGA1UECwwLMjA1NTA3Mjg3NjIxITAfBgNVBAsMGFZhbGlkYWRvIHBvciBMbGFtYS5wZSBFUjE2MDQGA1UECgwtVEhFIEZBQ1RPUlkgSEtBIFBFUlUgU09DSUVEQUQgQU5PTklNQSBDRVJSQURBMQ0wCwYDVQQHDARMSU1BMQswCQYDVQQGEwJQRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALarDRoOpB5SXk1XAOSsS2HHLmw5sXEQYbaRVKyWInMSW4aczw7LSnRV+jF6iSd8HvMdQj/BvEQdwo0EmAs32kuNkFWbYUYRUvPr2JbR202AP1kpmo/XpeeHCyVUPfUgdFLKnvSa5kCEYCpipNNi4Mye3ryzxgi7E6jMTqvYjv7SyRZCLSz3dU8Hxh7bqTa6frsUoaMpB0EqCVCVGGjVRnNzhhWu7pLThZuOWLHPYLWAxyCyn06Q4JJ6zIuBc5jteBwHZ6G1r8Y6QJN+jBbCakY+3d0g8BMb+yeMmdse6Aqa9CF4UYuUC3IeaooPCEl+SSWehNuPmVDkG8M81DL3dl8CAwEAAaOCAZUwggGRMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUXYhbretl+/5oouTZbz1XcqLvK5kwZwYIKwYBBQUHAQEEWzBZMDUGCCsGAQUFBzAChilodHRwOi8vY3J0LmxsYW1hLnBlL2xsYW1hcGVzdGFuZGFyZGNhLmNlcjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3AubGxhbWEucGUwJQYDVR0RBB4wHIEacmh1YW1hbmlAdGhlZmFjdG9yeWhrYS5jb20wRgYDVR0gBD8wPTA7Bg0rBgEEAYOXdwABAAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vbGxhbWEucGUvcmVwb3NpdG9yeS8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwubGxhbWEucGUvbGxhbWFwZXN0YW5kYXJkY2EuY3JsMB0GA1UdDgQWBBQzzDwWX2tL1xLpcXxX55XsvZcQ+DAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAChoGdk54ss+32TapubQN4Il1tSBAI6NLeWHOz2ahBf0TgfQEGA64zs2iYYYu8DTxYoa/ycVCqN8WIOENbuEUcWaor9M/R9Ja/34mwERSrhG+up+Lxc8QrwUCDfac/nbfAOZI0fQmxrMxcRxy2dnY1ZtSnDeXR1OiJCiJln9+9bVnzZerB5oeOu6EgmHgREHdGlloFk+VzgGQP4dww3zOLDISSUQ11QhmYowuuTtA4OcsjDmc93TVGWbErQTklXpbQKgN+xwwJEz2HZhH1dF5QHvCIcuHEspSyqa5+eVqfzs+5CFOH/NFF5tpzGVnh0qynacCQPcnjRwHFRWMGuNQzk=
+
+
+ 2.1
+ 1.0
+ 43d77f4a-d277-4fb4-aca9-d0fd9272adf0
+ 2026-07-06
+ 12:42:28
+ 2026-07-06
+ 12:42:30
+
+
+ 20550728762
+
+
+
+
+ 20550728762
+
+
+
+
+ 0
+ La FACTURA numero 20500864703-01-F002-21184, ha sido aceptada
+
+
+ F002-21184
+ 2026-07-06
+ 12:38:13
+ 01
+
+
+ Z6gdRCeS0KZtFV+bNR3gOnhAgrw=
+
+
+
+
+
+ 20500864703
+
+
+
+
+ 20100029741
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/031_correo/pdf_resultado_031.json b/tests/correos_prueba/031_correo/pdf_resultado_031.json
new file mode 100644
index 0000000..af1b958
--- /dev/null
+++ b/tests/correos_prueba/031_correo/pdf_resultado_031.json
@@ -0,0 +1,39 @@
+[
+ {
+ "ruc_emisor": "20500864703",
+ "razon_social_emisor": "/ Usuario",
+ "fecha_emision": null,
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "21184",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "/ Usuario",
+ "total_factura": "267.92",
+ "documentos_referencia": [],
+ "tiene_detraccion": false,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": null,
+ "lineas": [
+ {
+ "descripcion": "NIU 78101802 SERVICIO DE TRANSPORTE S/ S/ Información adicional Total impuestos SERVICIO DE TRANSPORTE 200 BLS CEMENTO, Total IGV 18%: S/ 40.87 S/G.R.R: T001-131440 S/G.R.T: EG04-4640, PTO. Totales del documento PARTIDA: AV ATOCONGO 1860- V.M.T,",
+ "cantidad": "200.000",
+ "precio_unitario": "1.135254",
+ "total_linea": "227.05",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131440"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG04",
+ "numero": "4640"
+ }
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/031_correo/20500864703-01-F002-21184.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/031_correo/xml_resultado_031.json b/tests/correos_prueba/031_correo/xml_resultado_031.json
new file mode 100644
index 0000000..673f709
--- /dev/null
+++ b/tests/correos_prueba/031_correo/xml_resultado_031.json
@@ -0,0 +1,53 @@
+[
+ {
+ "ruc_emisor": "20500864703",
+ "razon_social_emisor": "DEPOSITOS Y FERRETERIA NICHAR S.A.C.",
+ "fecha_emision": "2026-07-06",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "21184",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA. S.A.C",
+ "total_factura": 267.92,
+ "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": 200.0,
+ "precio_unitario": 1.3396,
+ "total_linea": 227.05,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131440"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG04",
+ "numero": "4640"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/031_correo/20500864703-01-F002-21184.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/032_correo/20604034303-01-F002-3210.pdf b/tests/correos_prueba/032_correo/20604034303-01-F002-3210.pdf
new file mode 100644
index 0000000..6fe0334
Binary files /dev/null and b/tests/correos_prueba/032_correo/20604034303-01-F002-3210.pdf differ
diff --git a/tests/correos_prueba/032_correo/20604034303-01-F002-3210.xml b/tests/correos_prueba/032_correo/20604034303-01-F002-3210.xml
new file mode 100644
index 0000000..69c13af
--- /dev/null
+++ b/tests/correos_prueba/032_correo/20604034303-01-F002-3210.xml
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SUHexIBupAw0fD3KcfJ3k6GAHF4pw5OSyqX2h2Xetcs=
+
+
+ ONcDG5jwmFvZTSaojkiXz7NyfQRce++Nzp7MofsdcjHacPyl7t8BDaPL/VApia3yXj0b1QlUIRXANtXs6qXSzLbTFDVeR6vYb3gb8zNRxitoQdRkJNrfiitTydWCR02AYFOm5OB25wyoelSEFFNBrn/PZau+GNa3XdlLadZS/lrbDbXpm/wXa7LRgfRVXOtXtcHzY+9abFixF6tQyK+TM/+cJZUu7KaLToSozPleRSbjlbPMWGctcord9pPV7wpMs7C2fVDgL9yh9Y/0tYa6lHmBKC3zwxeVGyaSNCEn67e5g3Jb0uRaASl78UR+mxzIQSrOcrHWCvtyfuAY8RkeEg==
+
+
+ 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
+ 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=
+
+
+
+
+
+
+
+ 2.1
+ 2.0
+ F002-3210
+ 2026-07-02
+ 14:59:06
+ 2026-07-08
+ 01
+ MIL SETECIENTOS SESENTA Y CINCO CON 80/100 SOLES
+ Operacion sujeta a detraccion
+ PEN
+
+ T001-0131541
+ 09
+
+
+ EG03-1859
+ 31
+
+
+ 20604034303
+ WWW.NUBEFACT.COM
+
+
+ 20604034303
+
+
+ AQUIFAST LOGISTIC S.A.C.
+
+
+
+
+ 20604034303
+
+
+
+
+
+
+ 20604034303
+
+
+ AQUIFAST LOGISTIC S.A.C.
+
+
+ AQUIFAST LOGISTIC S.A.C.
+
+ 150135
+ 0000
+ LIMA
+ LIMA
+ SAN MARTIN DE PORRES
+
+ AV. SAN FRANCISCO DE CAYRAN MZA. H1 LOTE. 13 ASC. SAN FRANCISCO DE CAYRAN
+
+
+ PE
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+ A. BERIO Y CIA S.A.C.
+
+
+ AV. 26 DE NOVIEMBRE NRO. 2473 A.H. VIRGEN DE LOURDES (PARADERO 14 NUEVA ESPERANZA - PISO 2)
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 000-63129380
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 114.00
+
+
+ FormaPago
+ Credito
+ 1651.80
+
+
+ FormaPago
+ Cuota001
+ 1651.80
+ 2026-07-08
+
+
+ 269.36
+
+ 1496.44
+ 269.36
+
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1496.44
+ 1765.80
+ 0.00
+ 0.00
+ 0.00
+ 1765.80
+
+
+
+ 1
+ 750.0
+ 1496.44
+
+
+ 2.3544
+ 01
+
+
+
+ 269.36
+
+ 1496.44
+ 269.36
+
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ SERVICIO DE TRANSPORTE DE CEMENTO P.P AV.ATOCONGO 1860-V.M.T - LIMA - LIMA P.LL. OTR. PAGO DE ÑOCO BAJO 997A SEC. EL CARRIZO BRAZO TASAYCO UC 00997-A - ICA- CHINCHA- SUNAMPE- SUNAMPE- CHINCHA- ICA MTC 15109718 CNG TN 31.875 PLACA: D4H908 C.VEHC: T3S3 -V.R.S/ 2,839.74
+
+ VESE-CEMENTO
+
+
+
+ 1.995254
+
+
+
+
diff --git a/tests/correos_prueba/032_correo/pdf_resultado_032.json b/tests/correos_prueba/032_correo/pdf_resultado_032.json
new file mode 100644
index 0000000..b56924a
--- /dev/null
+++ b/tests/correos_prueba/032_correo/pdf_resultado_032.json
@@ -0,0 +1,20 @@
+[
+ {
+ "ruc_emisor": "20604034303",
+ "razon_social_emisor": null,
+ "fecha_emision": "02/07/2026",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "3210",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": null,
+ "total_factura": "1765.80",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": "4.00",
+ "monto_detraccion": null,
+ "lineas": [],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/032_correo/20604034303-01-F002-3210.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/032_correo/xml_resultado_032.json b/tests/correos_prueba/032_correo/xml_resultado_032.json
new file mode 100644
index 0000000..980de03
--- /dev/null
+++ b/tests/correos_prueba/032_correo/xml_resultado_032.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20604034303",
+ "razon_social_emisor": "AQUIFAST LOGISTIC S.A.C.",
+ "fecha_emision": "2026-07-02",
+ "tipo": "01",
+ "serie": "F002",
+ "numero": "3210",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1765.8,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131541"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1859"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 114.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 CEMENTO P.P AV.ATOCONGO 1860-V.M.T - LIMA - LIMA P.LL. OTR. PAGO DE ÑOCO BAJO 997A SEC. EL CARRIZO BRAZO TASAYCO UC 00997-A - ICA- CHINCHA- SUNAMPE- SUNAMPE- CHINCHA- ICA MTC 15109718 CNG TN 31.875 PLACA: D4H908 C.VEHC: T3S3 -V.R.S/ 2,839.74",
+ "cantidad": 750.0,
+ "precio_unitario": 2.3544,
+ "total_linea": 1496.44,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131541"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1859"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/032_correo/20604034303-01-F002-3210.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/033_correo/20552793499-01-E001-5554.pdf b/tests/correos_prueba/033_correo/20552793499-01-E001-5554.pdf
new file mode 100644
index 0000000..4a0b885
Binary files /dev/null and b/tests/correos_prueba/033_correo/20552793499-01-E001-5554.pdf differ
diff --git a/tests/correos_prueba/033_correo/20552793499-01-E001-5554.xml b/tests/correos_prueba/033_correo/20552793499-01-E001-5554.xml
new file mode 100644
index 0000000..ec479fd
--- /dev/null
+++ b/tests/correos_prueba/033_correo/20552793499-01-E001-5554.xml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+ CTSZ5fq3cpchxYoU2/kNfbdRmS8=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-5554
+ 2026-07-03
+ 15:37:31.0Z
+
+ 01
+
+
+ PEN
+
+ T001 - 131601
+ 09
+
+
+
+ EG03 - 1984
+ 31
+
+
+
+
+ E001-5554
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20552793499
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00074064787
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 138.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 1830.48
+
+
+
+ FormaPago
+ Cuota001
+ 1830.48
+ 2026-07-10
+
+
+
+
+
+
+ 300.28
+
+
+
+
+ 1668.20
+ 300.28
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1668.20
+ 0.00
+ 0.00
+ 0.00
+
+ 1968.48
+
+
+
+ 1
+ 800.00
+ 1668.2032
+
+ false
+
+
+
+ 2.46059972
+ 01
+
+
+
+
+
+
+ 110501
+
+ AV FERMIN TANGUISMZ A LT 3-B URB JUAN JOSE - ICA - PISCO - ICA - PISCO - PISCO
+
+
+
+
+
+ 150143
+
+ AV.ATOCONGO 1860-LIMA-LIMA-V.M.T - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 300.276576
+
+
+
+
+
+ 1668.2032
+ 300.276576
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.085254
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/033_correo/pdf_resultado_033.json b/tests/correos_prueba/033_correo/pdf_resultado_033.json
new file mode 100644
index 0000000..d9401d6
--- /dev/null
+++ b/tests/correos_prueba/033_correo/pdf_resultado_033.json
@@ -0,0 +1,45 @@
+[
+ {
+ "ruc_emisor": "20552793499",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "fecha_emision": "03/07/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "5554",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "total_factura": "1830.48",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "138.00",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERVICIO DE TRANSPORTE 800 BLS DE CEMENTO P.P. AV.ATOCONGO 1860-LIMA-LIMA-V.M.T P.LL. AV FERMIN TANGUISMZ A LT 3-B URB JUAN JOSE - ICA - PISCOMTC",
+ "cantidad": "800.00",
+ "precio_unitario": "800.00",
+ "total_linea": "2.085254",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "V.R S/ PLACA:CFU878 C.VEHICULAR:T3S3",
+ "cantidad": "34.00",
+ "precio_unitario": "34.00",
+ "total_linea": "3457.80",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 1,668.20",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1668.20",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/033_correo/20552793499-01-E001-5554.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/033_correo/xml_resultado_033.json b/tests/correos_prueba/033_correo/xml_resultado_033.json
new file mode 100644
index 0000000..96496fc
--- /dev/null
+++ b/tests/correos_prueba/033_correo/xml_resultado_033.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20552793499",
+ "razon_social_emisor": "CORPORACION AQUILES S.A.C.",
+ "fecha_emision": "2026-07-03",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "5554",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1968.48,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131601"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1984"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 138.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 800 BLS DE CEMENTO P.P. AV.ATOCONGO 1860-LIMA-LIMA-V.M.T P.LL. AV FERMIN TANGUISMZ A LT 3-B URB JUAN JOSE - ICA - PISCOMTC 1550071CNGTN:34.00 V.R S/3457.80 PLACA:CFU878 C.VEHICULAR:T3S3",
+ "cantidad": 800.0,
+ "precio_unitario": 2.46059972,
+ "total_linea": 1668.2032,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131601"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1984"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/033_correo/20552793499-01-E001-5554.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/035_correo/20614715252-01-E001-737.pdf b/tests/correos_prueba/035_correo/20614715252-01-E001-737.pdf
new file mode 100644
index 0000000..3f947c2
Binary files /dev/null and b/tests/correos_prueba/035_correo/20614715252-01-E001-737.pdf differ
diff --git a/tests/correos_prueba/035_correo/20614715252-01-E001-737.xml b/tests/correos_prueba/035_correo/20614715252-01-E001-737.xml
new file mode 100644
index 0000000..a7dacf9
--- /dev/null
+++ b/tests/correos_prueba/035_correo/20614715252-01-E001-737.xml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+ AUBZpMZ5F/0bAomkHzrBTDuwbDI=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-737
+ 2026-06-30
+ 10:50:39.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-737
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20614715252
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00019161498
+
+
+
+ Detraccion
+ 020
+ 12.00
+ 193.00
+
+
+
+
+
+ FormaPago
+ Contado
+
+
+
+
+
+
+ 245.59
+
+
+
+
+ 1364.41
+ 245.59
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1364.41
+ 0.00
+ 0.00
+ 0.00
+
+ 1610.00
+
+
+
+ 1
+ 1.00
+ 1364.4067
+
+ false
+
+
+
+ 1609.999906
+ 01
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 245.593206
+
+
+
+
+
+ 1364.4067
+ 245.593206
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1364.4067
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/035_correo/pdf_resultado_035.json b/tests/correos_prueba/035_correo/pdf_resultado_035.json
new file mode 100644
index 0000000..3728c64
--- /dev/null
+++ b/tests/correos_prueba/035_correo/pdf_resultado_035.json
@@ -0,0 +1,37 @@
+[
+ {
+ "ruc_emisor": "20614715252",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "737",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "193.00",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "193.00",
+ "lineas": [
+ {
+ "descripcion": "UNIDAD ACCESORIOS DE SISTEMA DE EMBRAGUE SPICER 380X10X2 RODAJE DE VOLANTE, JUEGO DE PASTILLAS, COLLARIN, JUEGO DE RESORTE, FRENO DE MONTSAJE, CUBO DE EMBRAGUE",
+ "cantidad": "1.00",
+ "precio_unitario": "1.00",
+ "total_linea": "1364.4067",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 1,364.41",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1364.41",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/035_correo/20614715252-01-E001-737.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/035_correo/xml_resultado_035.json b/tests/correos_prueba/035_correo/xml_resultado_035.json
new file mode 100644
index 0000000..b3566c8
--- /dev/null
+++ b/tests/correos_prueba/035_correo/xml_resultado_035.json
@@ -0,0 +1,43 @@
+[
+ {
+ "ruc_emisor": "20614715252",
+ "razon_social_emisor": "LENINQ EMBRAGUES S.A.C.",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "737",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1610.0,
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "020",
+ "porcentaje_detraccion": 12.0,
+ "monto_detraccion": 193.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": "ACCESORIOS DE SISTEMA DE EMBRAGUE SPICER 380X10X2 RODAJE DE VOLANTE, JUEGO DE PASTILLAS, COLLARIN, JUEGO DE RESORTE, FRENO DE MONTSAJE, CUBO DE EMBRAGUE",
+ "cantidad": 1.0,
+ "precio_unitario": 1609.999906,
+ "total_linea": 1364.4067,
+ "notes_text": "",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/035_correo/20614715252-01-E001-737.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/036_correo/20520758829-01-E001-1214.pdf b/tests/correos_prueba/036_correo/20520758829-01-E001-1214.pdf
new file mode 100644
index 0000000..0f56207
Binary files /dev/null and b/tests/correos_prueba/036_correo/20520758829-01-E001-1214.pdf differ
diff --git a/tests/correos_prueba/036_correo/20520758829-01-E001-1214.xml b/tests/correos_prueba/036_correo/20520758829-01-E001-1214.xml
new file mode 100644
index 0000000..1e4bc4f
--- /dev/null
+++ b/tests/correos_prueba/036_correo/20520758829-01-E001-1214.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ Be7X+x85wgLk6A0/Bn/JXZVnZYc=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-1214
+ 2026-06-30
+ 16:22:33.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-1214
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20520758829
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ 15102518CNG
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00013005672
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 41.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 977.10
+
+
+
+ FormaPago
+ Cuota001
+ 977.10
+ 2026-07-16
+
+
+
+
+
+
+ 155.30
+
+
+
+
+ 862.79
+ 155.30
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 862.79
+ 0.00
+ 0.00
+ 0.00
+
+ 1018.10
+
+
+
+ 1
+ 760.00
+ 862.793192
+
+ false
+
+
+
+ 1.339599956
+ 01
+
+
+
+
+
+
+ 150133
+
+ MZA.C LT.12 COO.DE VIVIENDA URANMARCA LIMA-SJM - LIMA - LIMA - SAN JUAN DE MIRAFLORES
+
+
+
+
+
+ 150143
+
+ AV.ATOCONGO 1860 LIMA-VMT - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 1018.10
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ T3S3
+ false
+
+
+ 01
+ 32.30
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 155.30277456
+
+
+
+
+
+ 862.793192
+ 155.30277456
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.1352542
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/036_correo/pdf_resultado_036.json b/tests/correos_prueba/036_correo/pdf_resultado_036.json
new file mode 100644
index 0000000..8efff19
--- /dev/null
+++ b/tests/correos_prueba/036_correo/pdf_resultado_036.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20520758829",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "1214",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "977.10",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "41.00",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERVICIO DE TRANSPORTE 760 BOLSAS DE CEMENTO POR 1.339600 G.R.R: T001-00131243 G.R.T: EG03-01022 C. VEHC:",
+ "cantidad": "760.00",
+ "precio_unitario": "760.00",
+ "total_linea": "1.1352542",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131243"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1022"
+ }
+ },
+ {
+ "descripcion": "VALOR REFERENCIAL: CARGA: TN PLACA: BSS804/TLS972",
+ "cantidad": "1018.10",
+ "precio_unitario": "1018.10",
+ "total_linea": "32.300",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 862.79",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "862.79",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/036_correo/20520758829-01-E001-1214.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/036_correo/xml_resultado_036.json b/tests/correos_prueba/036_correo/xml_resultado_036.json
new file mode 100644
index 0000000..a72f1f4
--- /dev/null
+++ b/tests/correos_prueba/036_correo/xml_resultado_036.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20520758829",
+ "razon_social_emisor": "INVERSIONES PRADA SAC",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "1214",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1018.1,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131243"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1022"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 41.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 760 BOLSAS DE CEMENTO POR 1.339600 G.R.R: T001-00131243 G.R.T: EG03-01022 C. VEHC: T3S3 VALOR REFERENCIAL: 1018.10 CARGA: 32.300 TN PLACA: BSS804/TLS972",
+ "cantidad": 760.0,
+ "precio_unitario": 1.339599956,
+ "total_linea": 862.793192,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131243"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1022"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/036_correo/20520758829-01-E001-1214.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/037_correo/20524528992-01-E001-861.pdf b/tests/correos_prueba/037_correo/20524528992-01-E001-861.pdf
new file mode 100644
index 0000000..3298614
Binary files /dev/null and b/tests/correos_prueba/037_correo/20524528992-01-E001-861.pdf differ
diff --git a/tests/correos_prueba/037_correo/20524528992-01-E001-861.xml b/tests/correos_prueba/037_correo/20524528992-01-E001-861.xml
new file mode 100644
index 0000000..aee16d3
--- /dev/null
+++ b/tests/correos_prueba/037_correo/20524528992-01-E001-861.xml
@@ -0,0 +1,306 @@
+
+
+
+
+
+
+
+
+
+
+
+ 8AgYf7AwPJvEEOtEKblhhz7O6C4=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-861
+ 2026-06-30
+ 11:21:30.0Z
+
+ 01
+
+
+
+ PEN
+
+ EG03 - 204
+ 31
+
+
+
+ T001 - 131180
+ 09
+
+
+
+ T001 - 131181
+ 09
+
+
+
+
+ E001-861
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20524528992
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ 1530145 CNG
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00052003296
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 40.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 964.70
+
+
+
+ FormaPago
+ Cuota001
+ 964.70
+ 2026-07-17
+
+
+
+
+
+
+ 153.26
+
+
+
+
+ 851.44
+ 153.26
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 851.44
+ 0.00
+ 0.00
+ 0.00
+
+ 1004.70
+
+
+
+ 1
+ 750.00
+ 851.4375
+
+ false
+
+
+
+ 1.339595
+ 01
+
+
+
+
+
+
+ 150119
+
+ CARR. ANT. PAN. SUR KM. 39.5 FND SANTA GENOVEVA LURIN-LIMA-LIMA - LIMA - LIMA - LURIN
+
+
+
+
+
+ 150143
+
+ AV ATONCONGO 1860 - V.M.T. LIMA - LIMA. - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 1004.70
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ T3S3
+ false
+
+
+ 01
+ 31.88
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 153.25875
+
+
+
+
+
+ 851.4375
+ 153.25875
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.13525
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/037_correo/pdf_resultado_037.json b/tests/correos_prueba/037_correo/pdf_resultado_037.json
new file mode 100644
index 0000000..adf4634
--- /dev/null
+++ b/tests/correos_prueba/037_correo/pdf_resultado_037.json
@@ -0,0 +1,37 @@
+[
+ {
+ "ruc_emisor": "20524528992",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION TRANSPORTISTA : EG03",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "861",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION TRANSPORTISTA : EG03",
+ "total_factura": "964.70",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "40.00",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERVICIO DE TRANSPORTE DE BLS X S/ / CONF.VEH: T3S3/ CARGA: 31.875 TN/ PARTIDA: AV ATONCONGO 1860 - V.M.T. LIMA - LIMA. / LLEGADA: CARR. ANT. PAN. SUR KM. 39.5 FND SANTA GENOVEVA LURIN-LIMA-LIMA /MTC: 1530145 CNG /VALOR REFERENCIAL S/ 1004.7",
+ "cantidad": "750.00",
+ "precio_unitario": "1.3396",
+ "total_linea": "1.13525",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 851.44",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "851.44",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/037_correo/20524528992-01-E001-861.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/037_correo/xml_resultado_037.json b/tests/correos_prueba/037_correo/xml_resultado_037.json
new file mode 100644
index 0000000..5257ce1
--- /dev/null
+++ b/tests/correos_prueba/037_correo/xml_resultado_037.json
@@ -0,0 +1,74 @@
+[
+ {
+ "ruc_emisor": "20524528992",
+ "razon_social_emisor": "TRANSPORTE A & M SEÑOR DE LUREN S.A.C.",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "861",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1004.7,
+ "documentos_referencia": [
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "204"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131180"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131181"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 40.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 BLS X S/ 1.3396 / CONF.VEH: T3S3/ CARGA: 31.875 TN/ PARTIDA: AV ATONCONGO 1860 - V.M.T. LIMA - LIMA. / LLEGADA: CARR. ANT. PAN. SUR KM. 39.5 FND SANTA GENOVEVA LURIN-LIMA-LIMA /MTC: 1530145 CNG /VALOR REFERENCIAL S/ 1004.7",
+ "cantidad": 750.0,
+ "precio_unitario": 1.339595,
+ "total_linea": 851.4375,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131180"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131181"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "204"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/037_correo/20524528992-01-E001-861.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/038_correo/20612674133-01-E001-2.pdf b/tests/correos_prueba/038_correo/20612674133-01-E001-2.pdf
new file mode 100644
index 0000000..59c3755
Binary files /dev/null and b/tests/correos_prueba/038_correo/20612674133-01-E001-2.pdf differ
diff --git a/tests/correos_prueba/038_correo/20612674133-01-E001-2.xml b/tests/correos_prueba/038_correo/20612674133-01-E001-2.xml
new file mode 100644
index 0000000..4106b4f
--- /dev/null
+++ b/tests/correos_prueba/038_correo/20612674133-01-E001-2.xml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+ AJI02v+sk6B7rFY5RE75yxmYlLE=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-2
+ 2026-06-30
+ 13:15:06.0Z
+
+ 01
+
+
+ PEN
+
+
+ E001-2
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20612674133
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 003
+
+ 00020071079
+
+
+
+ Detraccion
+ 022
+ 12.00
+ 566.00
+
+
+
+
+
+ FormaPago
+ Contado
+
+
+
+
+
+
+ 720.00
+
+
+
+
+ 4000.00
+ 720.00
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 4000.00
+ 0.00
+ 0.00
+ 0.00
+
+ 4720.00
+
+
+
+ 1
+ 1.00
+ 4000.00
+
+ false
+
+
+
+ 4720.00
+ 01
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 720.00
+
+
+
+
+
+ 4000.00
+ 720.00
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+ 001SERCONT
+
+
+
+
+
+
+ 4000.00
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/038_correo/pdf_resultado_038.json b/tests/correos_prueba/038_correo/pdf_resultado_038.json
new file mode 100644
index 0000000..5079003
--- /dev/null
+++ b/tests/correos_prueba/038_correo/pdf_resultado_038.json
@@ -0,0 +1,37 @@
+[
+ {
+ "ruc_emisor": "20612674133",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "2",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "566.00",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "566.00",
+ "lineas": [
+ {
+ "descripcion": "UNIDAD ASESORIA CONTABLE CORRESPONDIENTE AL PERIODO T 062026,REVISION DE REGISTROS CONTABLES, REPORTES FINANCIEROS Y ORIENTACION TRIBUTARIA.",
+ "cantidad": "1.00",
+ "precio_unitario": "1.00",
+ "total_linea": "4000.00",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 4,000.00",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "4000.00",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/038_correo/20612674133-01-E001-2.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/038_correo/xml_resultado_038.json b/tests/correos_prueba/038_correo/xml_resultado_038.json
new file mode 100644
index 0000000..925c8cb
--- /dev/null
+++ b/tests/correos_prueba/038_correo/xml_resultado_038.json
@@ -0,0 +1,43 @@
+[
+ {
+ "ruc_emisor": "20612674133",
+ "razon_social_emisor": "HA & ASOCIADOS SAC",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "2",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 4720.0,
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "022",
+ "porcentaje_detraccion": 12.0,
+ "monto_detraccion": 566.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": "ASESORIA CONTABLE CORRESPONDIENTE AL PERIODO 062026,REVISION DE REGISTROS CONTABLES, REPORTES FINANCIEROS Y ORIENTACION TRIBUTARIA.",
+ "cantidad": 1.0,
+ "precio_unitario": 4720.0,
+ "total_linea": 4000.0,
+ "notes_text": "",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/038_correo/20612674133-01-E001-2.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/039_correo/10154250161-01-E001-858.pdf b/tests/correos_prueba/039_correo/10154250161-01-E001-858.pdf
new file mode 100644
index 0000000..4867b63
Binary files /dev/null and b/tests/correos_prueba/039_correo/10154250161-01-E001-858.pdf differ
diff --git a/tests/correos_prueba/039_correo/10154250161-01-E001-858.xml b/tests/correos_prueba/039_correo/10154250161-01-E001-858.xml
new file mode 100644
index 0000000..3c80c63
--- /dev/null
+++ b/tests/correos_prueba/039_correo/10154250161-01-E001-858.xml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+ C2fbddQQNVg6YfCURIzAMMIBjoE=waOfbTHg6lU6E5ZfzfZ64/bI0Pg/rC700E1ADtsvUf4G7RAtS8vZn+SgN+wfo4czmfn/2UxyD2kZwGMMtQzEZAcWFSJtCgNs4C9Jil8qNRMz7FCPe7YUyZscO9QUy0Dz4BlZjMKbRueQ9i6DiQWSL/CZF3y4Q/owshV1DwNFa6BOmz9xquDE/06c1Ci8dSip186ZrLTfpEuefnjLFvJdEB/jeq5/Pom15bzav+AfMS22zbFWBuD2asUDfHdgYCjAmyK6hdgg0qzFnkkE7OrGIFOjnnh+ieENDVLG1R3pSb1k7l2O18FULgp9hY84q+vtXlhif6kPxWCh60wANG3lsg==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
+
+
+
+ 2.1
+ 2.0
+
+ E001-858
+ 2026-06-30
+ 15:49:15.0Z
+
+ 01
+
+
+ PEN
+
+ EG03 - 00000687
+ 31
+
+
+
+ T001 - 0131460
+ 09
+
+
+
+
+ E001-858
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 10154250161
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ 152411
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00575006221
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 23.91
+
+
+
+
+
+ FormaPago
+ Credito
+ 573.92
+
+
+
+ FormaPago
+ Cuota001
+ 573.92
+ 2026-07-15
+
+
+
+
+
+
+ 91.19
+
+
+
+
+ 506.64
+ 91.19
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 506.64
+ 0.00
+ 0.00
+ 0.00
+
+ 597.83
+
+
+
+ 1
+ 1.00
+ 506.63559322
+
+ false
+
+
+
+ 597.8299999996
+ 01
+
+
+
+
+
+
+ 150124
+
+ MZ J LT. 26 PJ BENJAMIN DOIG LOSSIO PUCUSANA LIMA - LIMA - LIMA - PUCUSANA
+
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 VILLA MARIA DEL TRIUNFO LIMA - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 573.92
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ T2S3
+ false
+
+
+ 01
+ 14.03
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 91.1944067796
+
+
+
+
+
+ 506.63559322
+ 91.1944067796
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 506.63559322
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/039_correo/pdf_resultado_039.json b/tests/correos_prueba/039_correo/pdf_resultado_039.json
new file mode 100644
index 0000000..178f3d3
--- /dev/null
+++ b/tests/correos_prueba/039_correo/pdf_resultado_039.json
@@ -0,0 +1,45 @@
+[
+ {
+ "ruc_emisor": "10154250161",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. EG03",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "858",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. EG03",
+ "total_factura": "573.92",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "23.91",
+ "lineas": [
+ {
+ "descripcion": "UNIDAD SERVICIO DE TRANSPORTE 330 BLS DE CEMENTO SOL X 1.8116 P.PARTIDA:AV. ATOCONGO 1860 V.M.T. P.LLEGADA:MZJ LT.26 PJBENJAMIN DOIG LOSSIO P. VALOR REFERENCIAL:",
+ "cantidad": "1.00",
+ "precio_unitario": "1.00",
+ "total_linea": "506.63559322",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "CONFIGURACION VEHICULAR: TN. N.REG. MTC: 152411 CNG. PLACA :D0A848/W2M972",
+ "cantidad": "597.83",
+ "precio_unitario": "597.83",
+ "total_linea": "14.03",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 506.64",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "506.64",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/039_correo/10154250161-01-E001-858.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/039_correo/xml_resultado_039.json b/tests/correos_prueba/039_correo/xml_resultado_039.json
new file mode 100644
index 0000000..0e613de
--- /dev/null
+++ b/tests/correos_prueba/039_correo/xml_resultado_039.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "10154250161",
+ "razon_social_emisor": "PAZ URBINA MAXIMO MARCOS",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "858",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 597.83,
+ "documentos_referencia": [
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "687"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131460"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 23.91,
+ "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 330 BLS DE CEMENTO SOL X 1.8116 P.PARTIDA:AV. ATOCONGO 1860 V.M.T. P.LLEGADA:MZJ LT.26 PJBENJAMIN DOIG LOSSIO P. VALOR REFERENCIAL: 597.83 CONFIGURACION VEHICULAR: T2S3/CTN 14.03 TN. N.REG. MTC: 152411 CNG. PLACA :D0A848/W2M972",
+ "cantidad": 1.0,
+ "precio_unitario": 597.8299999996,
+ "total_linea": 506.63559322,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131460"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "687"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/039_correo/10154250161-01-E001-858.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/040_correo/20520758829-01-E001-1214.pdf b/tests/correos_prueba/040_correo/20520758829-01-E001-1214.pdf
new file mode 100644
index 0000000..0f56207
Binary files /dev/null and b/tests/correos_prueba/040_correo/20520758829-01-E001-1214.pdf differ
diff --git a/tests/correos_prueba/040_correo/20520758829-01-E001-1214.xml b/tests/correos_prueba/040_correo/20520758829-01-E001-1214.xml
new file mode 100644
index 0000000..1e4bc4f
--- /dev/null
+++ b/tests/correos_prueba/040_correo/20520758829-01-E001-1214.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ Be7X+x85wgLk6A0/Bn/JXZVnZYc=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-1214
+ 2026-06-30
+ 16:22:33.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-1214
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20520758829
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ 15102518CNG
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00013005672
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 41.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 977.10
+
+
+
+ FormaPago
+ Cuota001
+ 977.10
+ 2026-07-16
+
+
+
+
+
+
+ 155.30
+
+
+
+
+ 862.79
+ 155.30
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 862.79
+ 0.00
+ 0.00
+ 0.00
+
+ 1018.10
+
+
+
+ 1
+ 760.00
+ 862.793192
+
+ false
+
+
+
+ 1.339599956
+ 01
+
+
+
+
+
+
+ 150133
+
+ MZA.C LT.12 COO.DE VIVIENDA URANMARCA LIMA-SJM - LIMA - LIMA - SAN JUAN DE MIRAFLORES
+
+
+
+
+
+ 150143
+
+ AV.ATOCONGO 1860 LIMA-VMT - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 1018.10
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ T3S3
+ false
+
+
+ 01
+ 32.30
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 155.30277456
+
+
+
+
+
+ 862.793192
+ 155.30277456
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.1352542
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/040_correo/pdf_resultado_040.json b/tests/correos_prueba/040_correo/pdf_resultado_040.json
new file mode 100644
index 0000000..8961146
--- /dev/null
+++ b/tests/correos_prueba/040_correo/pdf_resultado_040.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20520758829",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "1214",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "977.10",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "41.00",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERVICIO DE TRANSPORTE 760 BOLSAS DE CEMENTO POR 1.339600 G.R.R: T001-00131243 G.R.T: EG03-01022 C. VEHC:",
+ "cantidad": "760.00",
+ "precio_unitario": "760.00",
+ "total_linea": "1.1352542",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131243"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1022"
+ }
+ },
+ {
+ "descripcion": "VALOR REFERENCIAL: CARGA: TN PLACA: BSS804/TLS972",
+ "cantidad": "1018.10",
+ "precio_unitario": "1018.10",
+ "total_linea": "32.300",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 862.79",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "862.79",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/040_correo/20520758829-01-E001-1214.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/040_correo/xml_resultado_040.json b/tests/correos_prueba/040_correo/xml_resultado_040.json
new file mode 100644
index 0000000..cae9300
--- /dev/null
+++ b/tests/correos_prueba/040_correo/xml_resultado_040.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20520758829",
+ "razon_social_emisor": "INVERSIONES PRADA SAC",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "1214",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1018.1,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131243"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1022"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 41.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 760 BOLSAS DE CEMENTO POR 1.339600 G.R.R: T001-00131243 G.R.T: EG03-01022 C. VEHC: T3S3 VALOR REFERENCIAL: 1018.10 CARGA: 32.300 TN PLACA: BSS804/TLS972",
+ "cantidad": 760.0,
+ "precio_unitario": 1.339599956,
+ "total_linea": 862.793192,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131243"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "1022"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/040_correo/20520758829-01-E001-1214.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/041_correo/20524528992-01-E001-861.pdf b/tests/correos_prueba/041_correo/20524528992-01-E001-861.pdf
new file mode 100644
index 0000000..3298614
Binary files /dev/null and b/tests/correos_prueba/041_correo/20524528992-01-E001-861.pdf differ
diff --git a/tests/correos_prueba/041_correo/20524528992-01-E001-861.xml b/tests/correos_prueba/041_correo/20524528992-01-E001-861.xml
new file mode 100644
index 0000000..aee16d3
--- /dev/null
+++ b/tests/correos_prueba/041_correo/20524528992-01-E001-861.xml
@@ -0,0 +1,306 @@
+
+
+
+
+
+
+
+
+
+
+
+ 8AgYf7AwPJvEEOtEKblhhz7O6C4=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-861
+ 2026-06-30
+ 11:21:30.0Z
+
+ 01
+
+
+
+ PEN
+
+ EG03 - 204
+ 31
+
+
+
+ T001 - 131180
+ 09
+
+
+
+ T001 - 131181
+ 09
+
+
+
+
+ E001-861
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20524528992
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ 1530145 CNG
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00052003296
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 40.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 964.70
+
+
+
+ FormaPago
+ Cuota001
+ 964.70
+ 2026-07-17
+
+
+
+
+
+
+ 153.26
+
+
+
+
+ 851.44
+ 153.26
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 851.44
+ 0.00
+ 0.00
+ 0.00
+
+ 1004.70
+
+
+
+ 1
+ 750.00
+ 851.4375
+
+ false
+
+
+
+ 1.339595
+ 01
+
+
+
+
+
+
+ 150119
+
+ CARR. ANT. PAN. SUR KM. 39.5 FND SANTA GENOVEVA LURIN-LIMA-LIMA - LIMA - LIMA - LURIN
+
+
+
+
+
+ 150143
+
+ AV ATONCONGO 1860 - V.M.T. LIMA - LIMA. - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 1004.70
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ T3S3
+ false
+
+
+ 01
+ 31.88
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 153.25875
+
+
+
+
+
+ 851.4375
+ 153.25875
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.13525
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/041_correo/pdf_resultado_041.json b/tests/correos_prueba/041_correo/pdf_resultado_041.json
new file mode 100644
index 0000000..8004028
--- /dev/null
+++ b/tests/correos_prueba/041_correo/pdf_resultado_041.json
@@ -0,0 +1,37 @@
+[
+ {
+ "ruc_emisor": "20524528992",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION TRANSPORTISTA : EG03",
+ "fecha_emision": "30/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "861",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION TRANSPORTISTA : EG03",
+ "total_factura": "964.70",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "40.00",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERVICIO DE TRANSPORTE DE BLS X S/ / CONF.VEH: T3S3/ CARGA: 31.875 TN/ PARTIDA: AV ATONCONGO 1860 - V.M.T. LIMA - LIMA. / LLEGADA: CARR. ANT. PAN. SUR KM. 39.5 FND SANTA GENOVEVA LURIN-LIMA-LIMA /MTC: 1530145 CNG /VALOR REFERENCIAL S/ 1004.7",
+ "cantidad": "750.00",
+ "precio_unitario": "1.3396",
+ "total_linea": "1.13525",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 851.44",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "851.44",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/041_correo/20524528992-01-E001-861.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/041_correo/xml_resultado_041.json b/tests/correos_prueba/041_correo/xml_resultado_041.json
new file mode 100644
index 0000000..554c26d
--- /dev/null
+++ b/tests/correos_prueba/041_correo/xml_resultado_041.json
@@ -0,0 +1,74 @@
+[
+ {
+ "ruc_emisor": "20524528992",
+ "razon_social_emisor": "TRANSPORTE A & M SEÑOR DE LUREN S.A.C.",
+ "fecha_emision": "2026-06-30",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "861",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1004.7,
+ "documentos_referencia": [
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "204"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131180"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131181"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 40.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 BLS X S/ 1.3396 / CONF.VEH: T3S3/ CARGA: 31.875 TN/ PARTIDA: AV ATONCONGO 1860 - V.M.T. LIMA - LIMA. / LLEGADA: CARR. ANT. PAN. SUR KM. 39.5 FND SANTA GENOVEVA LURIN-LIMA-LIMA /MTC: 1530145 CNG /VALOR REFERENCIAL S/ 1004.7",
+ "cantidad": 750.0,
+ "precio_unitario": 1.339595,
+ "total_linea": 851.4375,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131180"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "131181"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "204"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/041_correo/20524528992-01-E001-861.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/042_correo/20220631541-01-E001-6994.pdf b/tests/correos_prueba/042_correo/20220631541-01-E001-6994.pdf
new file mode 100644
index 0000000..c1d10bc
Binary files /dev/null and b/tests/correos_prueba/042_correo/20220631541-01-E001-6994.pdf differ
diff --git a/tests/correos_prueba/042_correo/20220631541-01-E001-6994.xml b/tests/correos_prueba/042_correo/20220631541-01-E001-6994.xml
new file mode 100644
index 0000000..a075680
--- /dev/null
+++ b/tests/correos_prueba/042_correo/20220631541-01-E001-6994.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ ZBmXKuRV/6QvqeFLDjFrkbb+CjI=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-6994
+ 2026-06-13
+ 16:42:40.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-6994
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20220631541
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00571016788
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 57.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 1363.65
+
+
+
+ FormaPago
+ Cuota001
+ 1363.65
+ 2026-06-26
+
+
+
+
+
+
+ 216.71
+
+
+
+
+ 1203.94
+ 216.71
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1203.94
+ 0.00
+ 0.00
+ 0.00
+
+ 1420.65
+
+
+
+ 1
+ 1.00
+ 1203.941
+
+ false
+
+
+
+ 1420.65038
+ 01
+
+
+
+
+
+
+ 150509
+
+ AV. PANAMERICANA NRO 602 - LIMA - CAÑETE - MALA
+
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 216.70938
+
+
+
+
+
+ 1203.941
+ 216.70938
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1203.941
+
+
+
+
diff --git a/tests/correos_prueba/042_correo/pdf_resultado_042.json b/tests/correos_prueba/042_correo/pdf_resultado_042.json
new file mode 100644
index 0000000..e5ed079
--- /dev/null
+++ b/tests/correos_prueba/042_correo/pdf_resultado_042.json
@@ -0,0 +1,43 @@
+[
+ {
+ "ruc_emisor": "20220631541",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "13/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "6994",
+ "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:0001-28559 Y G.R.R: T001- 130612 DEL 12.06.26 F9V-838/C4E-990 CATEGORIA:T3S3",
+ "cantidad": "1.00",
+ "precio_unitario": "1.00",
+ "total_linea": "1203.941",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130612"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 1,203.94",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1203.94",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/042_correo/20220631541-01-E001-6994.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/042_correo/xml_resultado_042.json b/tests/correos_prueba/042_correo/xml_resultado_042.json
new file mode 100644
index 0000000..fdc1db1
--- /dev/null
+++ b/tests/correos_prueba/042_correo/xml_resultado_042.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20220631541",
+ "razon_social_emisor": "EMPRESA DE TRANSPORTE DE CARGA JUAN PABLO II SAC",
+ "fecha_emision": "2026-06-13",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "6994",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1420.65,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130612"
+ }
+ ],
+ "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:0001-28559 Y G.R.R: T001-130612 DEL 12.06.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": "130612"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/042_correo/20220631541-01-E001-6994.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/043_correo/20525144951-01-E001-15679.pdf b/tests/correos_prueba/043_correo/20525144951-01-E001-15679.pdf
new file mode 100644
index 0000000..4affdfb
Binary files /dev/null and b/tests/correos_prueba/043_correo/20525144951-01-E001-15679.pdf differ
diff --git a/tests/correos_prueba/043_correo/20525144951-01-E001-15679.xml b/tests/correos_prueba/043_correo/20525144951-01-E001-15679.xml
new file mode 100644
index 0000000..ce0d99c
--- /dev/null
+++ b/tests/correos_prueba/043_correo/20525144951-01-E001-15679.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ f0NNF5KJReTauXiS5O/+uTVeW58=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-15679
+ 2026-06-13
+ 08:49:20.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-15679
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20525144951
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00013018421
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 19.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 449.86
+
+
+
+ FormaPago
+ Cuota001
+ 449.86
+ 2026-06-30
+
+
+
+
+
+
+ 71.52
+
+
+
+
+ 397.34
+ 71.52
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 397.34
+ 0.00
+ 0.00
+ 0.00
+
+ 468.86
+
+
+
+ 1
+ 350.00
+ 397.33897
+
+ false
+
+
+
+ 1.339599956
+ 01
+
+
+
+
+
+
+ 150140
+
+ AV. SANTIAGO DE SURCO NRO.4869 - LIMA - LIMA - SANTIAGO DE SURCO
+
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 71.5210146
+
+
+
+
+
+ 397.33897
+ 71.5210146
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.1352542
+
+
+
+
diff --git a/tests/correos_prueba/043_correo/pdf_resultado_043.json b/tests/correos_prueba/043_correo/pdf_resultado_043.json
new file mode 100644
index 0000000..447c10f
--- /dev/null
+++ b/tests/correos_prueba/043_correo/pdf_resultado_043.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20525144951",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "13/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "15679",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "449.86",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "19.00",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERVICIO DE TRANSPORTE 350 BOLSAS DE CEMENTO X 1.339600 G.R.R:T001-130329 G.R.T: EG03-004473 C.VEHC: C3",
+ "cantidad": "350.00",
+ "precio_unitario": "350.00",
+ "total_linea": "1.1352542",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130329"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "4473"
+ }
+ },
+ {
+ "descripcion": "VALOR REFERENCIAL: CARGA: TN PLACA: ACE891",
+ "cantidad": "468.86",
+ "precio_unitario": "468.86",
+ "total_linea": "14.875",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 397.34",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "397.34",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/043_correo/20525144951-01-E001-15679.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/043_correo/xml_resultado_043.json b/tests/correos_prueba/043_correo/xml_resultado_043.json
new file mode 100644
index 0000000..7703bd2
--- /dev/null
+++ b/tests/correos_prueba/043_correo/xml_resultado_043.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20525144951",
+ "razon_social_emisor": "TRANSPORTES Y NEGOCIACIONES PRADA S.A.C.",
+ "fecha_emision": "2026-06-13",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "15679",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 468.86,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130329"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "4473"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 19.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 350 BOLSAS DE CEMENTO X 1.339600 G.R.R:T001-130329 G.R.T: EG03-004473 C.VEHC: C3 VALOR REFERENCIAL: 468.86 CARGA: 14.875 TN PLACA: ACE891",
+ "cantidad": 350.0,
+ "precio_unitario": 1.339599956,
+ "total_linea": 397.33897,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130329"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "4473"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/043_correo/20525144951-01-E001-15679.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/044_correo/20220631541-01-E001-6994.pdf b/tests/correos_prueba/044_correo/20220631541-01-E001-6994.pdf
new file mode 100644
index 0000000..c1d10bc
Binary files /dev/null and b/tests/correos_prueba/044_correo/20220631541-01-E001-6994.pdf differ
diff --git a/tests/correos_prueba/044_correo/20220631541-01-E001-6994.xml b/tests/correos_prueba/044_correo/20220631541-01-E001-6994.xml
new file mode 100644
index 0000000..a075680
--- /dev/null
+++ b/tests/correos_prueba/044_correo/20220631541-01-E001-6994.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ ZBmXKuRV/6QvqeFLDjFrkbb+CjI=r9EC76hFI3clkk7DvMxWp0b+i7fi8bH+/6BqgO9QU3gxP1rNAz1YfV5GK1j10YD9rlbvUj1gP/BZbHfo841o+5N+NBQE4YbgAkDysMpvszV7pc1t0eskZYp690AWxCLaRuRRvJtM5JrzDqt+GZ7JhsxYfM7k+UfNjh4SJDZZbBcthc+frHCP57iZcTX37QS+2L4aFUWVtX7hCotDr0vzB811WFupLB5SLncEKwkZ1c1qJxaiiNK6yf+6oMx4amllz4Mtv45t37EGT2kFy25c3mKaEf0XlxwrDGEvthVhtFpnGueMdyjKeB4Dra6Sb5UOhxP9/aaf18+Sq68tNMEWGw==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
+
+
+
+ 2.1
+ 2.0
+
+ E001-6994
+ 2026-06-13
+ 16:42:40.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-6994
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20220631541
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00571016788
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 57.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 1363.65
+
+
+
+ FormaPago
+ Cuota001
+ 1363.65
+ 2026-06-26
+
+
+
+
+
+
+ 216.71
+
+
+
+
+ 1203.94
+ 216.71
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1203.94
+ 0.00
+ 0.00
+ 0.00
+
+ 1420.65
+
+
+
+ 1
+ 1.00
+ 1203.941
+
+ false
+
+
+
+ 1420.65038
+ 01
+
+
+
+
+
+
+ 150509
+
+ AV. PANAMERICANA NRO 602 - LIMA - CAÑETE - MALA
+
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 216.70938
+
+
+
+
+
+ 1203.941
+ 216.70938
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1203.941
+
+
+
+
diff --git a/tests/correos_prueba/044_correo/pdf_resultado_044.json b/tests/correos_prueba/044_correo/pdf_resultado_044.json
new file mode 100644
index 0000000..5d3a1df
--- /dev/null
+++ b/tests/correos_prueba/044_correo/pdf_resultado_044.json
@@ -0,0 +1,43 @@
+[
+ {
+ "ruc_emisor": "20220631541",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "13/06/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "6994",
+ "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:0001-28559 Y G.R.R: T001- 130612 DEL 12.06.26 F9V-838/C4E-990 CATEGORIA:T3S3",
+ "cantidad": "1.00",
+ "precio_unitario": "1.00",
+ "total_linea": "1203.941",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130612"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 1,203.94",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1203.94",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/044_correo/20220631541-01-E001-6994.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/044_correo/xml_resultado_044.json b/tests/correos_prueba/044_correo/xml_resultado_044.json
new file mode 100644
index 0000000..0551870
--- /dev/null
+++ b/tests/correos_prueba/044_correo/xml_resultado_044.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20220631541",
+ "razon_social_emisor": "EMPRESA DE TRANSPORTE DE CARGA JUAN PABLO II SAC",
+ "fecha_emision": "2026-06-13",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "6994",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1420.65,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "130612"
+ }
+ ],
+ "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:0001-28559 Y G.R.R: T001-130612 DEL 12.06.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": "130612"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/044_correo/20220631541-01-E001-6994.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/045_correo/10075211215-01-E001-7266.pdf b/tests/correos_prueba/045_correo/10075211215-01-E001-7266.pdf
new file mode 100644
index 0000000..5e4c199
Binary files /dev/null and b/tests/correos_prueba/045_correo/10075211215-01-E001-7266.pdf differ
diff --git a/tests/correos_prueba/045_correo/10075211215-01-E001-7266.xml b/tests/correos_prueba/045_correo/10075211215-01-E001-7266.xml
new file mode 100644
index 0000000..5eb527f
--- /dev/null
+++ b/tests/correos_prueba/045_correo/10075211215-01-E001-7266.xml
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+
+
+
+
+
+ yYfVrNUpeapxNDwHUU8gsV1bwiM=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-7266
+ 2026-07-11
+ 12:40:25.0Z
+
+ 01
+
+
+
+ PEN
+
+ T001 - 0132215
+ 09
+
+
+
+ EG03 - 0003144
+ 31
+
+
+
+
+ E001-7266
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 10075211215
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ 1536131CNG
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00063055972
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 38.58
+
+
+
+
+
+ FormaPago
+ Credito
+ 925.93
+
+
+
+ FormaPago
+ Cuota001
+ 925.93
+ 2026-08-29
+
+
+
+
+
+
+ 147.13
+
+
+
+
+ 817.38
+ 147.13
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 817.38
+ 0.00
+ 0.00
+ 0.00
+
+ 964.51
+
+
+
+ 1
+ 720.00
+ 817.38288
+
+ false
+
+
+
+ 1.33959972
+ 01
+
+
+
+
+
+
+ 150133
+
+ AV DEFENSORES DE LIMA MZA LT5 PJ ALF UGARTE - LIMA - LIMA - SAN JUAN DE MIRAFLORES
+
+
+
+
+ CEMENTO EMBOLSADO 42.5KG
+
+ 150143
+
+ AV 26 DE NOVIEMBRE 2473 AH VIRGEN DE LOURDES PARADERO 14 NVA ESPERANZA - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 964.51
+
+
+ 02
+ 925.93
+
+
+ 03
+ 964.51
+
+
+ 01
+
+
+ 0
+
+
+ T3 S3
+ false
+
+
+ 01
+ 30600.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 147.1289184
+
+
+
+
+
+ 817.38288
+ 147.1289184
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.135254
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/045_correo/pdf_resultado_045.json b/tests/correos_prueba/045_correo/pdf_resultado_045.json
new file mode 100644
index 0000000..1b5e8aa
--- /dev/null
+++ b/tests/correos_prueba/045_correo/pdf_resultado_045.json
@@ -0,0 +1,37 @@
+[
+ {
+ "ruc_emisor": "10075211215",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "fecha_emision": "11/07/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "7266",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C. GUIA DE REMISION REMITENTE : T001",
+ "total_factura": "925.93",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "38.58",
+ "lineas": [
+ {
+ "descripcion": "BOLSA SERV DE TRANSP: 720 BOL CEMENTO PTO DE PDA: AV ATOCONGO 1860 VMT PTO DE LLEGADA AV DEFENSORES DE LIMA MZA A LTE 5 SJM CONF VEHICULAR: T3 S3. PLACAS :B3E887 / F4S714 NRO DE REGISTRO 1536131CNG CARGA TN 30.600. V.R. S/964.51 CTA BN: 00-063-055972 COD:",
+ "cantidad": "720.00",
+ "precio_unitario": "720.00",
+ "total_linea": "1.135254",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 817.38",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "817.38",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/045_correo/10075211215-01-E001-7266.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/045_correo/xml_resultado_045.json b/tests/correos_prueba/045_correo/xml_resultado_045.json
new file mode 100644
index 0000000..22a4feb
--- /dev/null
+++ b/tests/correos_prueba/045_correo/xml_resultado_045.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "10075211215",
+ "razon_social_emisor": "FERRETERIA DEPOSITO FABIAN",
+ "fecha_emision": "2026-07-11",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "7266",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 964.51,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132215"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "3144"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 38.58,
+ "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 DE TRANSP: 720 BOL CEMENTO PTO DE PDA: AV ATOCONGO 1860 VMT PTO DE LLEGADA AV DEFENSORES DE LIMA MZA A LTE 5 SJM CONF VEHICULAR: T3 S3. PLACAS :B3E887 / F4S714 NRO DE REGISTRO 1536131CNG CARGA TN 30.600. V.R. S/964.51 CTA BN: 00-063-055972 COD:",
+ "cantidad": 720.0,
+ "precio_unitario": 1.33959972,
+ "total_linea": 817.38288,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132215"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "3144"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/045_correo/10075211215-01-E001-7266.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/046_correo/20525144951-01-E001-15864.pdf b/tests/correos_prueba/046_correo/20525144951-01-E001-15864.pdf
new file mode 100644
index 0000000..d263f95
Binary files /dev/null and b/tests/correos_prueba/046_correo/20525144951-01-E001-15864.pdf differ
diff --git a/tests/correos_prueba/046_correo/20525144951-01-E001-15864.xml b/tests/correos_prueba/046_correo/20525144951-01-E001-15864.xml
new file mode 100644
index 0000000..770296c
--- /dev/null
+++ b/tests/correos_prueba/046_correo/20525144951-01-E001-15864.xml
@@ -0,0 +1,291 @@
+
+
+
+
+
+
+
+
+
+
+
+ JuetyvwmdgqQGTk2t2mVn8xIWHk=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-15864
+ 2026-07-11
+ 11:22:32.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-15864
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20525144951
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00013018421
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 19.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 449.86
+
+
+
+ FormaPago
+ Cuota001
+ 449.86
+ 2026-07-31
+
+
+
+
+
+
+ 71.52
+
+
+
+
+ 397.34
+ 71.52
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 397.34
+ 0.00
+ 0.00
+ 0.00
+
+ 468.86
+
+
+
+ 1
+ 350.00
+ 397.33897
+
+ false
+
+
+
+ 1.339599956
+ 01
+
+
+
+
+
+
+ 150133
+
+ MZA.C LT.12 COO.DE VIVIENDA URANMARCA - LA LIBERTAD - LIMA - SAN JUAN DE MIRAFLORES
+
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 71.5210146
+
+
+
+
+
+ 397.33897
+ 71.5210146
+
+ S
+ 18.00
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.1352542
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/046_correo/pdf_resultado_046.json b/tests/correos_prueba/046_correo/pdf_resultado_046.json
new file mode 100644
index 0000000..6df2902
--- /dev/null
+++ b/tests/correos_prueba/046_correo/pdf_resultado_046.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20525144951",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "11/07/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "15864",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "449.86",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "19.00",
+ "lineas": [
+ {
+ "descripcion": "UNIDAD SERVICIO DE TRANSPORTE 350 BOLSAS DE CEMENTO X 1.339600 G.R.R:T001-132131 G.R.T: EG03-004643 C.VEHC: C3",
+ "cantidad": "350.00",
+ "precio_unitario": "350.00",
+ "total_linea": "1.1352542",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132131"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "4643"
+ }
+ },
+ {
+ "descripcion": "VALOR REFERENCIAL: CARGA: TN PLACA: A1Z889",
+ "cantidad": "468.86",
+ "precio_unitario": "468.86",
+ "total_linea": "14.875",
+ "guias_remision": [],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 397.34",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "397.34",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/046_correo/20525144951-01-E001-15864.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/046_correo/xml_resultado_046.json b/tests/correos_prueba/046_correo/xml_resultado_046.json
new file mode 100644
index 0000000..799c1c6
--- /dev/null
+++ b/tests/correos_prueba/046_correo/xml_resultado_046.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20525144951",
+ "razon_social_emisor": "TRANSPORTES Y NEGOCIACIONES PRADA S.A.C.",
+ "fecha_emision": "2026-07-11",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "15864",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 468.86,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132131"
+ },
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "4643"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 19.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 350 BOLSAS DE CEMENTO X 1.339600 G.R.R:T001-132131 G.R.T: EG03-004643 C.VEHC: C3 VALOR REFERENCIAL: 468.86 CARGA: 14.875 TN PLACA: A1Z889",
+ "cantidad": 350.0,
+ "precio_unitario": 1.339599956,
+ "total_linea": 397.33897,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132131"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "4643"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/046_correo/20525144951-01-E001-15864.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/047_correo/20603551151-01-E001-3915.pdf b/tests/correos_prueba/047_correo/20603551151-01-E001-3915.pdf
new file mode 100644
index 0000000..0d56592
Binary files /dev/null and b/tests/correos_prueba/047_correo/20603551151-01-E001-3915.pdf differ
diff --git a/tests/correos_prueba/047_correo/20603551151-01-E001-3915.xml b/tests/correos_prueba/047_correo/20603551151-01-E001-3915.xml
new file mode 100644
index 0000000..7e9691b
--- /dev/null
+++ b/tests/correos_prueba/047_correo/20603551151-01-E001-3915.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ vmt4f6LQVavNKCTELhq7BqB9mAE=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
+
+
+
+ 2.1
+ 2.0
+
+ E001-3915
+ 2026-07-11
+ 16:17:56.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-3915
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20603551151
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00058345407
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 64.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 1546.07
+
+
+
+ FormaPago
+ Cuota001
+ 1546.07
+ 2026-07-24
+
+
+
+
+
+
+ 245.60
+
+
+
+
+ 1364.47
+ 245.60
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1364.47
+ 0.00
+ 0.00
+ 0.00
+
+ 1610.07
+
+
+
+ 1
+ 1.00
+ 1364.466
+
+ false
+
+
+
+ 1610.06988
+ 01
+
+
+
+
+
+
+ 150509
+
+ AV. PANAMERICANA NRO 602 - LIMA - CAÑETE - MALA
+
+
+
+
+
+ 150143
+
+ AV. ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 245.60388
+
+
+
+
+
+ 1364.466
+ 245.60388
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1364.466
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/047_correo/pdf_resultado_047.json b/tests/correos_prueba/047_correo/pdf_resultado_047.json
new file mode 100644
index 0000000..c3abc10
--- /dev/null
+++ b/tests/correos_prueba/047_correo/pdf_resultado_047.json
@@ -0,0 +1,47 @@
+[
+ {
+ "ruc_emisor": "20603551151",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "11/07/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "3915",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "1546.07",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "64.00",
+ "lineas": [
+ {
+ "descripcion": "UNIDAD SERVICIO DE TRANSPORTE DE CARGA DE MERCANCIAS CERTIFICADO DE INSCRIPCION:15157277-CNG 850 BLS RUTA: LIMA-(LIMA)- MALA (CAÑETE) S/GRT: EG03-130 Y G.R.R: T001- 132078 DEL 09.07.26 F0I-756/BUT-978 CATEGORIA: T3S3",
+ "cantidad": "1.00",
+ "precio_unitario": "1.00",
+ "total_linea": "1364.466",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132078"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "130"
+ }
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 1,364.47",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1364.47",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/047_correo/20603551151-01-E001-3915.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/047_correo/xml_resultado_047.json b/tests/correos_prueba/047_correo/xml_resultado_047.json
new file mode 100644
index 0000000..6f6add6
--- /dev/null
+++ b/tests/correos_prueba/047_correo/xml_resultado_047.json
@@ -0,0 +1,64 @@
+[
+ {
+ "ruc_emisor": "20603551151",
+ "razon_social_emisor": "TRANSPORTE Y LOGISTICA JUAN PABLO II S.A.C.",
+ "fecha_emision": "2026-07-11",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "3915",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1610.07,
+ "documentos_referencia": [
+ {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "130"
+ },
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132078"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 64.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:15157277-CNG 850 BLS RUTA: LIMA-(LIMA)- MALA (CAÑETE) S/GRT: EG03-130 Y G.R.R: T001-132078 DEL 09.07.26 F0I-756/BUT-978 CATEGORIA: T3S3",
+ "cantidad": 1.0,
+ "precio_unitario": 1610.06988,
+ "total_linea": 1364.466,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132078"
+ }
+ ],
+ "guia_transportista": {
+ "tipo": "31",
+ "serie": "EG03",
+ "numero": "130"
+ }
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/047_correo/20603551151-01-E001-3915.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/048_correo/20220631541-01-E001-7055.pdf b/tests/correos_prueba/048_correo/20220631541-01-E001-7055.pdf
new file mode 100644
index 0000000..6e1c63d
Binary files /dev/null and b/tests/correos_prueba/048_correo/20220631541-01-E001-7055.pdf differ
diff --git a/tests/correos_prueba/048_correo/20220631541-01-E001-7055.xml b/tests/correos_prueba/048_correo/20220631541-01-E001-7055.xml
new file mode 100644
index 0000000..65abd95
--- /dev/null
+++ b/tests/correos_prueba/048_correo/20220631541-01-E001-7055.xml
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+ eN3XECBba/wsMG+cLp8BbvnA32Q=Edyi0rUdcicQQ9IxHPoq9rUr+oZs/38SIMfk3OIPcQo6qQ1MtyRSXtVuZWgf6esvHEOlLx9JZGnyvjei2S5nXFkoExgNfxA3Y3xcy2abTl/wnUQrF5u0eJ7e56tjICdbmahrRNdAoG4SVzGFQTk1nHvJOCcoPbZCi50lmMYv1IspD13Tq4bero1hMXaHhjkYwNxmTTuhZ9jES5WmGAizO2DH3zTJasshs1M7nxo7gmob/EGoFPrCGkeP09DT6FKyMcEaWffNs+98MqRZmk0r4OQcm1BlBXxTNyM+Hjx/eAePtvRLk9+2zhtTVrfY6/p+fX8DhVXqmL4s0JAAQXsDlQ==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
+
+
+
+ 2.1
+ 2.0
+
+ E001-7055
+ 2026-07-11
+ 16:14:59.0Z
+
+ 01
+
+
+
+ PEN
+
+
+ E001-7055
+
+
+ SUNAT
+
+
+
+
+ SignSUNAT
+
+
+
+
+
+
+ 20220631541
+
+
+
+
+
+
+
+ 0
+
+ -
+
+
+
+
+
+
+
+
+ PE
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ 20100029741
+
+
+
+
+ 0
+
+
+ LIMA
+ LIMA
+
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+
+ LIMA
+ LIMA
+ 150143
+ VILLA MARIA DEL TRIUNFO
+
+
+
+
+ PE
+
+
+
+
+
+
+
+
+
+
+ Detraccion
+ 001
+
+ 00571016788
+
+
+
+ Detraccion
+ 027
+ 4.00
+ 118.00
+
+
+
+
+
+ FormaPago
+ Credito
+ 1739.11
+
+
+
+ FormaPago
+ Cuota001
+ 1739.11
+ 2026-07-24
+
+
+
+
+
+
+ 283.29
+
+
+
+
+ 1573.83
+ 283.29
+
+ S
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+ 1573.83
+ 0.00
+ 0.00
+ 0.00
+
+ 1857.11
+
+
+
+ 1
+ 1.00
+ 1573.825
+
+ false
+
+
+
+ 1857.1135
+ 01
+
+
+
+
+
+
+ 150501
+
+ AV.M. BENAVIDES MZ. P LT.28 SIND.CHOFERES - LIMA - CAÑETE - SAN VICENTE DE CAÑETE
+
+
+
+
+
+ 150143
+
+ AV ATOCONGO 1860 - LIMA - LIMA - VILLA MARIA DEL TRIUNFO
+
+
+
+
+ 01
+ 0.00
+
+
+ 02
+ 0.00
+
+
+ 03
+ 0.00
+
+
+ 01
+
+
+ 0
+
+
+ -
+ false
+
+
+ 01
+ 0.00
+
+
+
+
+
+
+
+
+ true
+ 0.00
+
+
+
+
+ 283.2885
+
+
+
+
+
+ 1573.825
+ 283.2885
+
+ S
+ 18.00
+
+ 10
+
+ 1000
+ IGV
+ VAT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1573.825
+
+
+
+
\ No newline at end of file
diff --git a/tests/correos_prueba/048_correo/pdf_resultado_048.json b/tests/correos_prueba/048_correo/pdf_resultado_048.json
new file mode 100644
index 0000000..e4cf249
--- /dev/null
+++ b/tests/correos_prueba/048_correo/pdf_resultado_048.json
@@ -0,0 +1,43 @@
+[
+ {
+ "ruc_emisor": "20220631541",
+ "razon_social_emisor": "A. BERIO Y CIA S.A.C.",
+ "fecha_emision": "11/07/2026",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "7055",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": "1739.11",
+ "documentos_referencia": [],
+ "tiene_detraccion": true,
+ "codigo_detraccion": null,
+ "porcentaje_detraccion": null,
+ "monto_detraccion": "118.00",
+ "lineas": [
+ {
+ "descripcion": "UNIDAD SERVICIO DE TRANSPORTE DE CARGA DE MERCANCIAS CERTIFICADO DE INSCRIPCION:157935-CNG 867 BLS RUTA: LIMA-(LIMA)- SAN VICENTE DE CAÑETE (CAÑETE) S/GRT:0001- 28642 Y G.R.R: T001-132098,132099 DEL 09.07.26 F6G-856/ASU- 978 CATEGORIA: T3S3",
+ "cantidad": "1.00",
+ "precio_unitario": "1.00",
+ "total_linea": "1573.825",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132098"
+ }
+ ],
+ "guia_transportista": null
+ },
+ {
+ "descripcion": "Valor de Venta de Operaciones Gratuitas : S/ Sub Total Ventas : S/ Anticipos : S/ 0.00 Descuentos : S/ 0.00 Valor Venta : S/ 1,573.83",
+ "cantidad": "0.00",
+ "precio_unitario": "0.00",
+ "total_linea": "1573.83",
+ "guias_remision": [],
+ "guia_transportista": null
+ }
+ ],
+ "ruta_pdf": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/048_correo/20220631541-01-E001-7055.pdf"
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/048_correo/xml_resultado_048.json b/tests/correos_prueba/048_correo/xml_resultado_048.json
new file mode 100644
index 0000000..1cf535c
--- /dev/null
+++ b/tests/correos_prueba/048_correo/xml_resultado_048.json
@@ -0,0 +1,55 @@
+[
+ {
+ "ruc_emisor": "20220631541",
+ "razon_social_emisor": "EMPRESA DE TRANSPORTE DE CARGA JUAN PABLO II SAC",
+ "fecha_emision": "2026-07-11",
+ "tipo": "01",
+ "serie": "E001",
+ "numero": "7055",
+ "ruc_receptor": "20100029741",
+ "razon_social_receptor": "A. BERIO Y CIA S.A.C.",
+ "total_factura": 1857.11,
+ "documentos_referencia": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132098"
+ }
+ ],
+ "tiene_detraccion": true,
+ "codigo_detraccion": "027",
+ "porcentaje_detraccion": 4.0,
+ "monto_detraccion": 118.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 867 BLS RUTA: LIMA-(LIMA)- SAN VICENTE DE CAÑETE (CAÑETE) S/GRT:0001-28642 Y G.R.R: T001-132098,132099 DEL 09.07.26 F6G-856/ASU-978 CATEGORIA: T3S3",
+ "cantidad": 1.0,
+ "precio_unitario": 1857.1135,
+ "total_linea": 1573.825,
+ "notes_text": "",
+ "guias_remision": [
+ {
+ "tipo": "09",
+ "serie": "T001",
+ "numero": "132098"
+ }
+ ],
+ "guia_transportista": null
+ }
+ ],
+ "tipo_descripcion": "Factura",
+ "ruta_xml": "/Users/george/Documents/Desarrollo/Python/aberio/descarga_factura_transporte/tests/correos_prueba/048_correo/20220631541-01-E001-7055.xml",
+ "ruta_pdf": null
+ }
+]
\ No newline at end of file
diff --git a/tests/correos_prueba/indice_correos.json b/tests/correos_prueba/indice_correos.json
new file mode 100644
index 0000000..f6a5af7
--- /dev/null
+++ b/tests/correos_prueba/indice_correos.json
@@ -0,0 +1,232 @@
+{
+ "001": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAB4w1WAAA=",
+ "fecha": "2026-06-06 12:01:15",
+ "subject": "RE: FACTURAS, XML"
+ },
+ "002": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEqQitAAA=",
+ "fecha": "2026-06-10 17:15:07",
+ "subject": "CEMFISUR FACTURA F002-2188"
+ },
+ "003": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEqQiuAAA=",
+ "fecha": "2026-06-10 17:20:22",
+ "subject": "MATERIALES D'CASA FACTURA FE07-1559"
+ },
+ "004": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEqQivAAA=",
+ "fecha": "2026-06-10 17:26:57",
+ "subject": "R & P TRANSFER SAC FACTURA F004-5989"
+ },
+ "005": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEsIB2AAA=",
+ "fecha": "2026-06-10 17:29:30",
+ "subject": "DISTRIBUIDORA FERRETERA NASCA SAC F004-3544"
+ },
+ "006": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEsIB3AAA=",
+ "fecha": "2026-06-11 10:23:07",
+ "subject": "TREFILADOS EL SALVADOR SRL - FACTURA F011-2786"
+ },
+ "007": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEsIB4AAA=",
+ "fecha": "2026-06-11 10:38:25",
+ "subject": "RV: GUIA VPP1-516"
+ },
+ "008": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEsIB5AAA=",
+ "fecha": "2026-06-11 11:06:50",
+ "subject": "DISTRIBUIDORA SANTA PATRICIA SRL - FACTURA F002-52385"
+ },
+ "009": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEsIB6AAA=",
+ "fecha": "2026-06-11 11:17:33",
+ "subject": "ZAPATA ARAPA EUSEBIO - FACTURA FPP1-15407"
+ },
+ "010": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEsIB7AAA=",
+ "fecha": "2026-06-11 16:51:45",
+ "subject": "REMUZGO PISCONTI LIZ GIANNINA - FACTURA FF01-3308"
+ },
+ "011": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAEsIB8AAA=",
+ "fecha": "2026-06-11 18:45:03",
+ "subject": "FERREMAURO Y HNOS SRL - FACTURA FF03-1100"
+ },
+ "012": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAGcVUJAAA=",
+ "fecha": "2026-06-13 12:55:25",
+ "subject": "EMPRESA DE TRANSPORTE DE CARGA JUAN PABLO II SAC - FACTURA E001-6942"
+ },
+ "013": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAANdfjoAAA=",
+ "fecha": "2026-06-24 15:11:01",
+ "subject": "RV: FERREMAURO Y HNOS SRL - FACTURA FF03-1100"
+ },
+ "014": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAANdfjpAAA=",
+ "fecha": "2026-06-24 15:11:20",
+ "subject": "RV: REMUZGO PISCONTI LIZ GIANNINA - FACTURA FF01-3308"
+ },
+ "015": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAO902nAAA=",
+ "fecha": "2026-06-26 09:35:32",
+ "subject": "factura transporte"
+ },
+ "017": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAQQ0MNAAA=",
+ "fecha": "2026-06-30 14:54:34",
+ "subject": "envio facturas"
+ },
+ "018": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAQQ0MOAAA=",
+ "fecha": "2026-06-30 15:07:09",
+ "subject": "F002-20851"
+ },
+ "019": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAQQ0MPAAA=",
+ "fecha": "2026-06-30 15:11:58",
+ "subject": "E001-5506"
+ },
+ "020": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzoAAA=",
+ "fecha": "2026-07-01 13:09:37",
+ "subject": "20261374898-01-FF05-0100595 (1)"
+ },
+ "021": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzpAAA=",
+ "fecha": "2026-07-01 13:22:48",
+ "subject": "FF05-100959"
+ },
+ "022": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzqAAA=",
+ "fecha": "2026-07-02 12:16:41",
+ "subject": "f002-00053135"
+ },
+ "023": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzrAAA=",
+ "fecha": "2026-07-07 10:02:01",
+ "subject": "F001-70705"
+ },
+ "024": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzsAAA=",
+ "fecha": "2026-07-07 10:55:34",
+ "subject": "F002-486"
+ },
+ "025": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGztAAA=",
+ "fecha": "2026-07-07 10:56:25",
+ "subject": "F002-488"
+ },
+ "026": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzuAAA=",
+ "fecha": "2026-07-07 13:16:29",
+ "subject": "RV: F002-486"
+ },
+ "027": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzvAAA=",
+ "fecha": "2026-07-07 13:19:51",
+ "subject": "f002-486"
+ },
+ "028": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzwAAA=",
+ "fecha": "2026-07-07 13:21:05",
+ "subject": "f002-486"
+ },
+ "029": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzxAAA=",
+ "fecha": "2026-07-07 15:09:32",
+ "subject": "FF05-100595"
+ },
+ "030": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzyAAA=",
+ "fecha": "2026-07-08 16:07:08",
+ "subject": "f002-00053359"
+ },
+ "031": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGzzAAA=",
+ "fecha": "2026-07-08 16:18:53",
+ "subject": "F002-21184"
+ },
+ "032": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGz0AAA=",
+ "fecha": "2026-07-08 16:48:04",
+ "subject": "F002-003210"
+ },
+ "033": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAASMGz1AAA=",
+ "fecha": "2026-07-08 16:52:54",
+ "subject": "E001-5554"
+ },
+ "035": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAaIwvBAAA=",
+ "fecha": "2026-07-13 16:17:40",
+ "subject": "E001-5252"
+ },
+ "036": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAaIwvCAAA=",
+ "fecha": "2026-07-13 16:18:24",
+ "subject": "e001-121420"
+ },
+ "037": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAaIwvDAAA=",
+ "fecha": "2026-07-13 16:19:43",
+ "subject": "flete"
+ },
+ "038": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAaIwvEAAA=",
+ "fecha": "2026-07-13 16:20:12",
+ "subject": "facturas de flete cliente"
+ },
+ "039": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAaIwvFAAA=",
+ "fecha": "2026-07-13 16:20:46",
+ "subject": "flete 8581"
+ },
+ "040": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAaIwvGAAA=",
+ "fecha": "2026-07-13 16:45:28",
+ "subject": "e00"
+ },
+ "041": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAaIwvHAAA=",
+ "fecha": "2026-07-13 16:57:44",
+ "subject": "861"
+ },
+ "042": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAa3YW6AAA=",
+ "fecha": "2026-07-14 08:57:31",
+ "subject": "factura"
+ },
+ "043": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAa3YW7AAA=",
+ "fecha": "2026-07-14 09:19:21",
+ "subject": "E001-15679"
+ },
+ "044": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAa3YW8AAA=",
+ "fecha": "2026-07-14 09:26:29",
+ "subject": "factura E001 6994"
+ },
+ "045": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAgylkOAAA=",
+ "fecha": "2026-07-24 12:50:05",
+ "subject": "factura E001"
+ },
+ "046": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAgylkPAAA=",
+ "fecha": "2026-07-24 12:50:24",
+ "subject": "envio factura"
+ },
+ "047": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAgylkQAAA=",
+ "fecha": "2026-07-24 12:50:45",
+ "subject": "Factura enviada"
+ },
+ "048": {
+ "id": "AAMkADljMzNhYmQwLTQyMjgtNDY2My05ZDUwLWEzNTBiNDZhZjFlMwBGAAAAAAB386nfKhkcTbYV6pPUJ245BwBdNWALkxgeSJ3BdBRukthBAAAAAAEMAABdNWALkxgeSJ3BdBRukthBAAAgylkRAAA=",
+ "fecha": "2026-07-24 12:51:06",
+ "subject": "envio"
+ }
+}
\ No newline at end of file
diff --git a/tests/descargar_correos_prueba.py b/tests/descargar_correos_prueba.py
new file mode 100644
index 0000000..5ad9990
--- /dev/null
+++ b/tests/descargar_correos_prueba.py
@@ -0,0 +1,99 @@
+import os
+import sys
+import json
+import shutil
+from datetime import datetime
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
+
+from dotenv import load_dotenv
+import outlook_utilities
+import email_utilities
+
+
+CARPETA_BASE = os.path.join(os.path.dirname(__file__), "correos_prueba")
+
+
+def limpiar_carpetas():
+ if os.path.exists(CARPETA_BASE):
+ shutil.rmtree(CARPETA_BASE)
+ print(f"🗑️ Carpeta {CARPETA_BASE} eliminada")
+ os.makedirs(CARPETA_BASE, exist_ok=True)
+ print(f"📁 Carpeta {CARPETA_BASE} creada")
+
+
+def descargar_correos():
+ load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), "..", ".env"))
+
+ EMAIL = os.getenv("EMAIL", "")
+ if not EMAIL:
+ print("❌ Variable EMAIL no encontrada en .env")
+ return
+
+ print("🔑 Autenticando en Microsoft Graph...")
+ token = outlook_utilities.get_access_token()
+ if not token:
+ print("❌ No se pudo obtener token")
+ return
+
+ fecha_inicio = "2026-06-01"
+ fecha_fin = "2026-07-31"
+ print(f"📬 Descargando correos de {fecha_inicio} a {fecha_fin}...")
+
+ emails = outlook_utilities.get_emails(EMAIL, token, fecha_inicio, fecha_fin)
+ if not emails:
+ print("❌ No se encontraron correos")
+ return
+
+ print(f"📨 Total correos encontrados: {len(emails)}")
+
+ indice = {}
+
+ for idx, email in enumerate(emails, start=1):
+ correlativo = f"{idx:03d}"
+ carpeta_correo = os.path.join(CARPETA_BASE, f"{correlativo}_correo")
+ os.makedirs(carpeta_correo, exist_ok=True)
+
+ print(f"\n[{correlativo}] 📬 {email.get('fecha','')} - {email.get('subject','')[:60]}...")
+
+ adjuntos = outlook_utilities.download_attachments(
+ EMAIL, email["id"], token, carpeta_correo
+ )
+
+ if not adjuntos:
+ print(f" ├── ⏭️ Sin adjuntos")
+ os.rmdir(carpeta_correo)
+ continue
+
+ email["adjuntos"] = adjuntos
+ email_utilities.descomprimir_adjuntos([email], carpeta_correo)
+
+ archivos_validos = email_utilities.filtrar_archivos_validos(email.get("adjuntos", []))
+ carpeta_abs = os.path.abspath(carpeta_correo)
+ for archivo in email.get("adjuntos", []):
+ ruta = os.path.join(carpeta_abs, archivo)
+ if archivo not in archivos_validos and os.path.exists(ruta):
+ os.remove(ruta)
+
+ if archivos_validos:
+ email["adjuntos"] = archivos_validos
+
+ indice[correlativo] = {
+ "id": email["id"],
+ "fecha": email.get("fecha", ""),
+ "subject": email.get("subject", ""),
+ }
+ print(f" └── ✅ {len(archivos_validos)} archivo(s) válido(s)")
+
+ ruta_indice = os.path.join(CARPETA_BASE, "indice_correos.json")
+ with open(ruta_indice, "w", encoding="utf-8") as f:
+ json.dump(indice, f, ensure_ascii=False, indent=2)
+
+ print(f"\n{'='*60}")
+ print(f"📊 Total correos descargados: {len(indice)}")
+ print(f"📄 Índice guardado en: {ruta_indice}")
+
+
+if __name__ == "__main__":
+ limpiar_carpetas()
+ descargar_correos()
diff --git a/tests/explorar_notes_xml.py b/tests/explorar_notes_xml.py
new file mode 100644
index 0000000..27ccfb5
--- /dev/null
+++ b/tests/explorar_notes_xml.py
@@ -0,0 +1,49 @@
+import os
+import sys
+import json
+import xml.etree.ElementTree as ET
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
+
+from sunat_schema import NAMESPACES, _find_text
+
+ns = NAMESPACES
+ns["cbc"] = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
+
+CARPETA_BASE = os.path.join(os.path.dirname(__file__), "correos_prueba")
+
+
+def explorar_notes(ruta_carpeta):
+ archivos = sorted(
+ os.path.join(ruta_carpeta, f) for f in os.listdir(ruta_carpeta)
+ if f.lower().endswith(".xml") and os.path.isfile(os.path.join(ruta_carpeta, f))
+ )
+
+ for xml_path in archivos:
+ tree = ET.parse(xml_path)
+ root = tree.getroot()
+
+ if "Invoice" not in root.tag:
+ continue
+
+ tipo = _find_text(root, "inv:InvoiceTypeCode", ns) or _find_text(root, "cbc:InvoiceTypeCode", ns) or ""
+ if tipo != "01":
+ continue
+
+ print(f"\n=== {os.path.basename(xml_path)} ===")
+ lineas = root.findall(".//cac:InvoiceLine", ns)
+ for i, linea in enumerate(lineas):
+ notes = linea.findall("cbc:Note", ns)
+ desc = _find_text(linea, "cac:Item/cbc:Description", ns) or ""
+ print(f" Línea {i}: Description={desc[:80]}...")
+ for note in notes:
+ print(f" Note[{note.attrib.get('languageLocaleID', '?')}]: {note.text}")
+
+
+if __name__ == "__main__":
+ carpeta = sys.argv[1] if len(sys.argv) > 1 else "001_correo"
+ ruta = os.path.join(CARPETA_BASE, carpeta)
+ if os.path.isdir(ruta):
+ explorar_notes(ruta)
+ else:
+ print(f"❌ Carpeta no encontrada: {ruta}")
diff --git a/tests/procesar_pdfs_prueba.py b/tests/procesar_pdfs_prueba.py
new file mode 100644
index 0000000..e6f8856
--- /dev/null
+++ b/tests/procesar_pdfs_prueba.py
@@ -0,0 +1,146 @@
+import os
+import sys
+import json
+from typing import Optional
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
+
+from pdf_utilities import extraer_datos_pdf, TIPO_MAP, renombrar_pdf
+from sunat_schema import split_serie_numero
+
+
+CARPETA_BASE = os.path.join(os.path.dirname(__file__), "correos_prueba")
+
+
+def normalizar_datos_pdf(data: dict) -> Optional[dict]:
+ if not data or data.get("error"):
+ return None
+
+ tipo = TIPO_MAP.get((data.get("tipo_documento") or "").upper())
+ if not tipo:
+ return None
+
+ serie_numero = data.get("serie_numero") or ""
+ serie, numero = split_serie_numero(serie_numero)
+
+ doc = {
+ "ruc_emisor": data.get("ruc_emisor"),
+ "razon_social_emisor": data.get("nombre_receptor"),
+ "fecha_emision": data.get("fecha_emision"),
+ "tipo": tipo,
+ "serie": serie,
+ "numero": numero,
+ "ruc_receptor": data.get("ruc_receptor"),
+ "razon_social_receptor": data.get("nombre_receptor"),
+ "total_factura": data.get("monto_total"),
+ "documentos_referencia": [],
+ "tiene_detraccion": False,
+ "codigo_detraccion": None,
+ "porcentaje_detraccion": None,
+ "monto_detraccion": None,
+ "lineas": [],
+ }
+
+ # Detracción
+ det = data.get("detraccion")
+ if det and det.get("tiene"):
+ doc["tiene_detraccion"] = True
+ doc["porcentaje_detraccion"] = det.get("porcentaje")
+ doc["monto_detraccion"] = det.get("monto")
+
+ # Documentos relacionados (para guía transportista)
+ for rel in data.get("documentos_relacionados") or []:
+ if isinstance(rel, dict):
+ doc_ref = rel.get("documento", "")
+ else:
+ doc_ref = str(rel)
+ r_serie, r_numero = split_serie_numero(doc_ref)
+ if r_serie:
+ doc["documentos_referencia"].append({
+ "tipo": "09" if r_serie[:1] == "T" else "31",
+ "serie": r_serie,
+ "numero": r_numero,
+ })
+
+ # Líneas de detalle
+ for item in data.get("items") or []:
+ linea = {
+ "descripcion": item.get("descripcion", ""),
+ "cantidad": item.get("cantidad"),
+ "precio_unitario": item.get("precio_unitario"),
+ "total_linea": item.get("total"),
+ "guias_remision": [],
+ "guia_transportista": None,
+ }
+ # Guías de remisión desde el PDF
+ for g in item.get("guias_remision") or []:
+ m = __import__("re").search(r"\b([TVE][A-Z0-9]{3,4})\s*-?\s*(\d+)", g)
+ if m:
+ linea["guias_remision"].append({
+ "tipo": "09",
+ "serie": m.group(1).upper(),
+ "numero": m.group(2).lstrip("0") or "0",
+ })
+ # Guía transportista desde el PDF
+ gt = item.get("guia_transportista")
+ if gt:
+ m = __import__("re").search(r"\b([TVE][A-Z0-9]{3,4})\s*-?\s*(\d+)", gt)
+ if m:
+ linea["guia_transportista"] = {
+ "tipo": "31",
+ "serie": m.group(1).upper(),
+ "numero": m.group(2).lstrip("0") or "0",
+ }
+ doc["lineas"].append(linea)
+
+ return doc
+
+
+def procesar_carpetas():
+ carpetas = sorted(
+ [d for d in os.listdir(CARPETA_BASE) if os.path.isdir(os.path.join(CARPETA_BASE, d))]
+ )
+
+ total = 0
+ for carpeta in carpetas:
+ ruta_carpeta = os.path.join(CARPETA_BASE, carpeta)
+ archivos_pdf = sorted(
+ os.path.join(ruta_carpeta, f) for f in os.listdir(ruta_carpeta)
+ if f.lower().endswith(".pdf") and os.path.isfile(os.path.join(ruta_carpeta, f))
+ )
+
+ if not archivos_pdf:
+ continue
+
+ correlativo = carpeta.split("_")[0]
+
+ documentos = []
+ for pdf_path in archivos_pdf:
+ print(f"📄 {carpeta}/{os.path.basename(pdf_path)}")
+ data = extraer_datos_pdf(pdf_path)
+ if data and not data.get("error"):
+ nuevo_path = renombrar_pdf(pdf_path, data)
+ if nuevo_path != pdf_path:
+ data["archivo"] = os.path.basename(nuevo_path)
+ doc = normalizar_datos_pdf(data)
+ if doc:
+ doc["ruta_pdf"] = nuevo_path
+ documentos.append(doc)
+ desc = f"{doc.get('tipo','?')} {doc.get('serie','?')}-{doc.get('numero','?')}"
+ print(f" ├── ✅ {desc}")
+ else:
+ print(f" ├── ⚠️ Error: {data.get('error', 'desconocido')}")
+
+ if documentos:
+ ruta_json = os.path.join(ruta_carpeta, f"pdf_resultado_{correlativo}.json")
+ with open(ruta_json, "w", encoding="utf-8") as f:
+ json.dump(documentos, f, ensure_ascii=False, indent=2)
+ print(f" └── 💾 Guardado: pdf_resultado_{correlativo}.json ({len(documentos)} doc(s))")
+ total += len(documentos)
+
+ print(f"\n{'='*60}")
+ print(f"📊 Total documentos PDF procesados: {total}")
+
+
+if __name__ == "__main__":
+ procesar_carpetas()
diff --git a/tests/procesar_xmls_prueba.py b/tests/procesar_xmls_prueba.py
new file mode 100644
index 0000000..9897a0d
--- /dev/null
+++ b/tests/procesar_xmls_prueba.py
@@ -0,0 +1,118 @@
+import os
+import sys
+import json
+import glob
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
+
+from sunat_schema import extraer_datos_xml
+
+
+def renombrar_xml(ruta_actual: str, data: dict, carpeta: str) -> str | None:
+ """Renombra el XML a {prefijo}{ruc}-{tipo}-{serie}-{numero}.xml y retorna la nueva ruta.
+ Si es un CDR (ApplicationResponse), el prefijo es 'CDR-'."""
+ if not data:
+ return None
+ prefijo = "CDR-" if data.get("es_cdr") else ""
+ nombre = f"{prefijo}{data.get('ruc_emisor', '')}-{data.get('tipo', '')}-{data.get('serie', '')}-{data.get('numero', '')}.xml"
+ destino = os.path.join(carpeta, nombre)
+ if destino != ruta_actual:
+ if os.path.exists(destino):
+ os.remove(destino)
+ os.rename(ruta_actual, destino)
+ return destino
+
+
+CARPETA_BASE = os.path.join(os.path.dirname(__file__), "correos_prueba")
+
+
+def procesar_carpetas():
+ carpetas = sorted(
+ [d for d in os.listdir(CARPETA_BASE) if os.path.isdir(os.path.join(CARPETA_BASE, d))]
+ )
+
+ total = 0
+ for carpeta in carpetas:
+ ruta_carpeta = os.path.join(CARPETA_BASE, carpeta)
+ archivos_xml = sorted(
+ os.path.join(ruta_carpeta, f) for f in os.listdir(ruta_carpeta)
+ if f.lower().endswith(".xml") and os.path.isfile(os.path.join(ruta_carpeta, f))
+ )
+
+ if not archivos_xml:
+ continue
+
+ correlativo = carpeta.split("_")[0]
+
+ documentos = []
+ for xml_path in archivos_xml:
+ print(f"📄 {carpeta}/{os.path.basename(xml_path)}")
+ data = extraer_datos_xml(xml_path)
+ if data:
+ ruta_xml = renombrar_xml(xml_path, data, ruta_carpeta)
+ data["ruta_xml"] = ruta_xml or xml_path
+ data["ruta_pdf"] = None
+ if data.get("es_cdr"):
+ print(f" ├── ℹ️ {data.get('serie','?')}-{data.get('numero','?')} (CDR) — omitido del resultado")
+ continue
+ documentos.append(data)
+ print(f" ├── ✅ {data.get('serie','?')}-{data.get('numero','?')} ({data.get('tipo_descripcion','?')})")
+ else:
+ print(f" ├── ℹ️ No es factura 01 ni guía 31")
+
+ if documentos:
+ # Post-procesamiento
+ # 1. Distribuir documentos_referencia (tipo 09 y 31) a cada línea
+ for doc in documentos:
+ if doc.get("tipo") != "01":
+ continue
+ refs_09 = [r for r in doc.get("documentos_referencia", []) if r.get("tipo") == "09"]
+ refs_31 = [r for r in doc.get("documentos_referencia", []) if r.get("tipo") == "31"]
+ for i, linea in enumerate(doc.get("lineas", [])):
+ if linea.get("guias_remision"):
+ continue
+ if i < len(refs_09):
+ es_ultima = i == len(doc["lineas"]) - 1
+ if es_ultima:
+ linea["guias_remision"] = [dict(r) for r in refs_09[i:]]
+ else:
+ linea["guias_remision"] = [dict(refs_09[i])]
+ if not linea.get("guia_transportista") and i < len(refs_31):
+ linea["guia_transportista"] = dict(refs_31[i])
+
+ # 2. Resolver GREs desde guías de transporte (tipo 31 → tipo 09)
+ guia_lookup = {}
+ for doc in documentos:
+ if doc.get("tipo") in ("31", "09"):
+ guia_lookup[(doc["tipo"], doc["serie"], doc["numero"])] = doc
+ for doc in documentos:
+ if doc.get("tipo") != "01":
+ continue
+ for ref in doc.get("documentos_referencia", []):
+ if ref["tipo"] == "31":
+ guia_doc = guia_lookup.get(("31", ref["serie"], ref["numero"]))
+ if guia_doc:
+ gre_list = [g for g in guia_doc.get("documentos_referencia", []) if g.get("tipo") == "09"]
+ if gre_list:
+ for i, linea in enumerate(doc.get("lineas", [])):
+ if not linea.get("guias_remision"):
+ es_ultima = i == len(doc["lineas"]) - 1
+ if es_ultima:
+ linea["guias_remision"] = gre_list[i:]
+ elif i < len(gre_list):
+ linea["guias_remision"] = [gre_list[i]]
+ if not linea.get("guia_transportista"):
+ linea["guia_transportista"] = dict(ref)
+
+ ruta_json = os.path.join(ruta_carpeta, f"xml_resultado_{correlativo}.json")
+ with open(ruta_json, "w", encoding="utf-8") as f:
+ json.dump(documentos, f, ensure_ascii=False, indent=2)
+ print(f" └── 💾 Guardado: xml_resultado_{correlativo}.json ({len(documentos)} doc(s))")
+ total += len(documentos)
+
+ print(f"\n{'='*60}")
+ print(f"📊 Total documentos XML procesados: {total}")
+
+
+if __name__ == "__main__":
+ procesar_carpetas()
diff --git a/tools/aberio.http b/tools/aberio.http
new file mode 100644
index 0000000..0f0d98b
--- /dev/null
+++ b/tools/aberio.http
@@ -0,0 +1,24 @@
+@url= https://192.168.9.3:50000/b1s/v1
+
+
+###
+# @noRejectUnauthorized
+
+POST {{url}}/Login
+Content-Type: application/json
+
+{
+ "UserName": "manager",
+ "Password": "s1st3m4s",
+ "CompanyDB": "SBO_ABERIO_PRODUCCION"
+}
+
+###
+# @noRejectUnauthorized
+GET {{url}}/BusinessPartners('PL20555929006')
+
+
+
+###
+# @noRejectUnauthorized
+GET {{url}}/PaymentTermsTypes
\ No newline at end of file
diff --git a/tools/aberio/BusinessPartners.yml b/tools/aberio/BusinessPartners.yml
deleted file mode 100644
index dfa66d5..0000000
--- a/tools/aberio/BusinessPartners.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-info:
- name: BusinessPartners
- type: http
- seq: 1
-
-http:
- method: GET
- url: https://192.168.9.3:50000/b1s/v1/BusinessPartners('PL10040532043')
- auth: inherit
-
-settings:
- encodeUrl: true
- timeout: 0
- followRedirects: true
- maxRedirects: 5
diff --git a/tools/aberio/EmployeesInfo.yml b/tools/aberio/EmployeesInfo.yml
deleted file mode 100644
index 47b8216..0000000
--- a/tools/aberio/EmployeesInfo.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-info:
- name: EmployeesInfo
- type: http
-
-http:
- method: GET
- url: https://192.168.9.3:50000/b1s/v1/EmployeesInfo
- auth: inherit
-
-settings:
- encodeUrl: true
- timeout: 0
- followRedirects: true
- maxRedirects: 5
diff --git a/tools/aberio/Login.yml b/tools/aberio/Login.yml
deleted file mode 100644
index e128208..0000000
--- a/tools/aberio/Login.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-info:
- name: Login
- type: http
- seq: 1
-
-http:
- method: POST
- url: https://192.168.9.3:50000/b1s/v1/Login
- body:
- type: json
- data: |-
- {
- "CompanyDB" :"PRUEBA_20260609",
- "UserName": "manager",
- "Password":"s1st3m4s"
- }
- auth: inherit
-
-settings:
- encodeUrl: true
- timeout: 0
- followRedirects: true
- maxRedirects: 5
diff --git a/tools/aberio/PurchaseInvoices.yml b/tools/aberio/PurchaseInvoices.yml
deleted file mode 100644
index dcc838e..0000000
--- a/tools/aberio/PurchaseInvoices.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-info:
- name: PurchaseInvoices
- type: http
- seq: 1
-
-http:
- method: GET
- url: https://192.168.9.3:50000/b1s/v1/PurchaseInvoices?$filter=DocDate eq '2026-06-10'
- params:
- - name: $filter
- value: DocDate eq '2026-06-10'
- type: query
- auth: inherit
-
-settings:
- encodeUrl: true
- timeout: 0
- followRedirects: true
- maxRedirects: 5
diff --git a/tools/aberio/opencollection.yml b/tools/aberio/opencollection.yml
deleted file mode 100644
index c9e815d..0000000
--- a/tools/aberio/opencollection.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-opencollection: 1.0.0
-
-info:
- name: aberio
-bundled: false
-extensions:
- bruno:
- ignore:
- - node_modules
- - .git