GUÍA SII (Emitidas) – Instalación y Ejecución (Windows)
====================================================

Carpetas usadas
---------------
Base:
  C:\Tools\SII\

Validador:
  C:\Tools\SII\validador\

XSD (cache):
  C:\Tools\SII\validador\xsd_cache\SuministroLR.xsd


1) Requisitos (una sola vez)
----------------------------
1.1) Tener Python instalado
- En PowerShell:
  python --version

(En tu equipo el comando 'py' también funciona dentro de validador, pero si falla usa 'python'.)

1.2) Instalar dependencias del validador (lxml, etc.)
- En PowerShell:
  cd C:\Tools\SII\validador
  python -m pip install -r requirements.txt

(Alternativa si usas 'py'):
  py -m pip install -r requirements.txt


2) Colocar archivos (una sola vez)
----------------------------------
En C:\Tools\SII\ debe existir:
- excel_to_sii.py
- Plantilla_SII_FacturasEmitidas.xlsx

En C:\Tools\SII\validador\ debe existir:
- extract_sii_payload.py
- validate_sii_xsd.py
- debug_xsd.py (opcional, para ver errores completos)
- requirements.txt
- carpeta xsd_cache\ con el XSD:
  xsd_cache\SuministroLR.xsd


3) Flujo de trabajo (cada vez que generas/validas)
--------------------------------------------------
IMPORTANTE:
- NO valides el SOAP directamente.
- Siempre valida el payload extraído (sii_payload.xml).

3.1) Limpiar salidas anteriores (recomendado)
- En PowerShell:
  cd C:\Tools\SII
  del .\SII_FacturasEmitidas.xml -ErrorAction SilentlyContinue
  del .\validador\sii_payload.xml -ErrorAction SilentlyContinue

3.2) Generar el XML SOAP desde Excel
- En PowerShell:
  cd C:\Tools\SII
  python .\excel_to_sii.py

Salida esperada:
  OK -> SII_FacturasEmitidas.xml

Archivo generado:
  C:\Tools\SII\SII_FacturasEmitidas.xml

3.3) Extraer el payload (sin SOAP)
- En PowerShell:
  cd C:\Tools\SII\validador
  py .\extract_sii_payload.py --in ..\SII_FacturasEmitidas.xml --out sii_payload.xml --tag SuministroLRFacturasEmitidas

(Si 'py' no existe, usa:)
  python .\extract_sii_payload.py --in ..\SII_FacturasEmitidas.xml --out sii_payload.xml --tag SuministroLRFacturasEmitidas

Archivo generado:
  C:\Tools\SII\validador\sii_payload.xml

3.4) Validar contra el XSD REAL (el de xsd_cache)
- En PowerShell:
  cd C:\Tools\SII\validador
  py .\validate_sii_xsd.py --xml .\sii_payload.xml --schema SuministroLR.xsd

Salida esperada si todo está OK:
  ✅ XML VÁLIDO contra SuministroLR.xsd


4) Comprobaciones rápidas (para evitar validar XML viejo)
---------------------------------------------------------
4.1) Ver que se generó el XML:
  cd C:\Tools\SII
  dir .\SII_FacturasEmitidas.xml

4.2) Ver que el payload existe:
  cd C:\Tools\SII\validador
  dir .\sii_payload.xml

4.3) Buscar nodos clave (ejemplo):
  Select-String .\sii_payload.xml -Pattern "<sii:TipoDesglose" | Select LineNumber, Line


5) Si vuelve a fallar: ver el error COMPLETO del XSD
----------------------------------------------------
(Útil cuando PowerShell corta el “Expected is (...)”.)

- En PowerShell:
  cd C:\Tools\SII\validador
  py .\debug_xsd.py --xml .\sii_payload.xml --schema ".\xsd_cache\SuministroLR.xsd"

Te imprimirá:
- Línea exacta
- Mensaje completo del XSD
- XPath aproximado del nodo que falla


6) Notas IMPORTANTES (lo que ya hemos aprendido)
------------------------------------------------
- En tu XSD real, el nodo <sii:ImporteTotal> NO está permitido en la estructura que estabas generando.
  Por eso, el generador final NO lo incluye.
- El total se puede deducir del desglose (bases/cuotas).

Fin.
