Buscar en este blog

viernes, 1 de noviembre de 2024

Recuperador de registros compras y ventas SII 2024

Estimados clientes, tenemos disponible la nueva versión 2024 para recuperación de registros de compras y ventas desde el SII. Esta versión incorpora la posibilidad de recuperar los libros masivos (descargas diferidas) y soluciona el problema de la recuperación de los registros utilizando un 'RECAPTCHA' aceptado por el SII.



DESCRIPCIÓN DEL PRODUCTO


Nombre de la DLL

Hefesto.SIIRegCV.2024

Plataforma

CSHARP (Framework 4.6.2) Windows

Estado del producto

Producto disponible para la venta en formato DLL (Compilada)

Contacto

Marcelo Rojas Rojas 
Abaddon.1974@gmail.com
997800285

ℹ️
Información: Proximamente version web
ℹ️
Información: Proximamente version .net core


Solución problema RECAPTCHA (2024)

Desde el mes de octubre de 2024 el SII agrego seguridad de acceso a la página web con RECAPTCHA V3 de GOOGLE lo cual impide la recolección de los registros utilizando las herramientas actuales. por esta razón fue necesario actualizar los desarrollos de recuperación de los datos con nuevas técnicas.

ℹ️
Información: Esta DLL utiliza recuperación de código RECAPTCHA utilizando un generador Independiente. El cual debe ser instalado de forma separada de este proyecto pues corresponde a un servicio windows.

Solución Descarga de documentos masivos (Descarga Diferida 2024)

Esta versión también incluye la posibilidad de recuperar los libros masivos de compras y ventas, esto debido a que el SII dependiendo de la cantidad de registros a recuperar solicita descargar el archivo de forma diferida. Diferida indica que debe esperar a que el SII generé un archivo y luego descargarlo manualmente.


Acciones disponibles para libros de ventas del SII


Libro Tipo Recaptcha Normal Diferido
  Ventas Resúmenes
  Ventas Registros

Acciones disponibles para libros de compras del SII


Libro Tipo Recaptcha Normal Diferido
  Compras Resúmenes
  Compras Registros
  Compras No Incluir
  Compras Pendientes
  Compras Reclamados


Mejoras respecto a versiones anteriores


  • Soluciona problema del 'RECAPTCHA'
  • Recupera información completa de los registros compra y venta ( descargas diferidas )
  • Genera archivos XML masivos de resultado
  • Framework 4.6.2
  • Mejoras en algoritmo transformación a XML
  • Menor tiempo de procesamiento.
  • Recupera archivos masivos superiores a 1 mega y más.
  • Permite consultar con credenciales del usuario en el SII
  • Permite consultar con el certificado PFX utilizado en el SII
  • Recupera toda la información disponible (facturas, notas, guías, etc)
  • Solo recupera resumen de boletas electrónicas ( sin detalle )

Ejemplos

Ejemplos
  • Agregar una referencia a su proyecto
  • Recuperar resumenes de ventas desde el SII
  • Recuperar resumenes de compras desde el SII
  • Recuperar registros de ventas desde el SII
  • Recuperar registros de compras desde el SII
Resultados XML
  • Ejemplo resultado registros ventas xml
  • Ejemplo resultado registros compras xml


Para agregar una referencia a su proyecto

Referencie en su proyecto la dll, no copie la dll en una ubicación nueva sino más bien utilize la carpeta con todos los archivos suministrados.


////
//// Referencie la libreria hefesto aquí
using Hefesto.SIIRegCV._2024;

////
//// Otras librerias de su proyecto
using System;
using System.CodeDom;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;




Recuperar resumenes de ventas desde el SII

Utilice este código para recuperar el resumen de documentos de ventas desde el SII.


 ////
 //// Parámetros
 string rutEmpresa = "99999999-9";
 string pathCert = "fullpath certificado PFX";
 string passCert = "password";
 string periodo = "2024-10";

 ////
 //// Inicie la consulta 
 HefRespuesta resp = await SIIRegVentas.ResumenVentas(
     rutEmpresa,
         pathCert,
             passCert,
                 periodo);

 ////
 //// Muestre el resultado
 Console.WriteLine(resp.EsCorrecto);
 Console.WriteLine(resp.Detalle);
 Console.WriteLine(resp.Mensaje);

////
//// Guarde el archivo en disco
if (resp.EsCorrecto)
	File.WriteAllText(
	"HefResumen_R" +
	  $"R{rutEmpresa}_" +
	    $"P{periodo}.Registro.xml",
	      resp.Resultado as string,
	        Encoding.GetEncoding("ISO-8859-1"));



Recuperar resumenes de compras desde el SII

Utilice este código para recuperar el resumen de documentos de compras desde el SII.



////
//// Parametros
string rutEmpresa = "99999999-9";
string pathCert = "fullpath certificado";
string passCert = "password";
string periodo = "2024-10";

////
//// Seleccione el tipo de consulta
hefTipoRegistros tipoRegistro = hefTipoRegistros.Registro;

/*

Puede seleccioanr el tipo de consulta

hefTipoRegistros tipoRegistro = hefTipoRegistros.No_Incluir;
hefTipoRegistros tipoRegistro = hefTipoRegistros.Pendiente;
hefTipoRegistros tipoRegistro = hefTipoRegistros.Reclamado;

*/

////
//// Inicie la consulta 
HefRespuesta resp = await SIIRegCompras.ResumenCompras(
    rutEmpresa,
        pathCert,
            passCert,
                periodo,
                    tipoRegistro);

////
//// Muestre el resultado
Console.WriteLine(resp.EsCorrecto);
Console.WriteLine(resp.Detalle);
Console.WriteLine(resp.Mensaje);

////
//// Guarde el archivo en disco
if (resp.EsCorrecto)
    File.WriteAllText(
        $"HefResumenCompras_" +
		  "R{rutEmpresa}" +
		    "P{periodo}_Registro.xml",
              resp.Resultado as string,
                Encoding.GetEncoding("ISO-8859-1"));





Recuperar registros de ventas desde el SII

Utilice este código para recuperar el registro de ventas desde el SII.


 ////
 //// Parámetros
 string rutEmpresa = "99999999-9";
 string pathCert = "fullpath certificado PFX";
 string passCert = "password";
 string periodo = "2024-10";

 ////
 //// Inicie la consulta 
 HefRespuesta resp = await SIIRegVentas.RegistrosVentas(
     rutEmpresa,
         pathCert,
             passCert,
                 periodo);

 ////
 //// Muestre el resultado
 Console.WriteLine(resp.EsCorrecto);
 Console.WriteLine(resp.Detalle);
 Console.WriteLine(resp.Mensaje);

////
//// Guarde el archivo en disco
if (resp.EsCorrecto)
	File.WriteAllText(
	"HefRegistros_R" +
	  $"R{rutEmpresa}_" +
	    $"P{periodo}.Registro.xml",
	      resp.Resultado as string,
	        Encoding.GetEncoding("ISO-8859-1"));



Recuperar resumenes de compras desde el SII

Utilice este código para recuperar todos los registros de compras desde el SII.



////
//// Parametros
string rutEmpresa = "99999999-9";
string pathCert = "fullpath certificado";
string passCert = "password";
string periodo = "2024-11"

////
//// Seleccione el tipo de registro que quiere descargar
hefTipoRegistros tipoRegistro = hefTipoRegistros.Registro;

/*

Puede seleccioanr el tipo de consulta

hefTipoRegistros tipoRegistro = hefTipoRegistros.No_Incluir;
hefTipoRegistros tipoRegistro = hefTipoRegistros.Pendiente;
hefTipoRegistros tipoRegistro = hefTipoRegistros.Reclamado;

*/



//// Inicie la consulta 
HefRespuesta resp = await SIIRegCompras.RegistrosCompras(
    rutEmpresa,
        pathCert,
            passCert,
                periodo,
                    tipoRegistro);

////
//// Muestre el resultado
Console.WriteLine(resp.EsCorrecto);
Console.WriteLine(resp.Detalle);
Console.WriteLine(resp.Mensaje);

////
//// Guarde el archivo en disco
if (resp.EsCorrecto)
    File.WriteAllText(
        $"HefRegistroCompras_"+
		  "R{rutEmpresa}"+
		    "P{periodo}_Registro.xml",
              resp.Resultado as string,
                Encoding.GetEncoding("ISO-8859-1"));





Ejemplo de libro de ventas recuperado desde el SII

Representa el resultado de la consulta de registros de ventas. Este es un ejemplo ficticio.


<?xml version="1.0" encoding="ISO-8859-1"?>
<Hefesto_Resultado>
  <!--
    AUTOR : HEFESTO INVESTIGACION Y DESARROLLO
    URL   : https://lenguajedemaquinas.blogspot.com/ 
    -->
  <Encabezado>
    <RutEmpresa>99999999-9</RutEmpresa>
    <Periodo>2024-02</Periodo>
    <Libro>VENTAS/REGISTRO</Libro>
    <FchConsulta>2024-11-08 15:19:34</FchConsulta>
    <RsmnTotDoc>360</RsmnTotDoc>
  </Encabezado>
  <Resumenes>
    <Resumen>
      <dcvCodigo>401394117</dcvCodigo>
      <rsmnCodigo>1846234314</rsmnCodigo>
      <rsmnTipoDocInteger>33</rsmnTipoDocInteger>
      <dcvNombreTipoDoc>Factura Electrónica</dcvNombreTipoDoc>
      <dcvTipoIngresoDoc>DET_ELE</dcvTipoIngresoDoc>
      <rsmnLink>true</rsmnLink>
      <rsmnMntExe>0</rsmnMntExe>
      <rsmnMntNeto>60498086</rsmnMntNeto>
      <rsmnMntIVA>11494635</rsmnMntIVA>
      <rsmnMntIVANoRec>0</rsmnMntIVANoRec>
      <rsmnIVAUsoComun>0</rsmnIVAUsoComun>
      <dcvOperacion />
      <rsmnMntTotal>71992721</rsmnMntTotal>
      <rsmnEstadoContab />
      <rsmnTotDoc>360</rsmnTotDoc>
      <rsmnTotalRutEmisor />
    </Resumen>
  </Resumenes>
  <Registros>
    <Registro>
      <Nro>1</Nro>
      <TipoDoc>33</TipoDoc>
      <TipoVenta>Del Giro</TipoVenta>
      <Rutcliente>8430708-4</Rutcliente>
      <RazonSocial>BERNARDO ANTONIO CORNEJO HIDALGO</RazonSocial>
      <Folio>30133</Folio>
      <FechaDocto>29/02/2024</FechaDocto>
      <FechaRecepcion>06/03/2024 10:49:36</FechaRecepcion>
      <FechaAcuseRecibo />
      <FechaReclamo />
      <MontoExento>0</MontoExento>
      <MontoNeto>160000</MontoNeto>
      <MontoIVA>30400</MontoIVA>
      <Montototal>190400</Montototal>
      <IVARetenidoTotal>0</IVARetenidoTotal>
      <IVARetenidoParcial>0</IVARetenidoParcial>
      <IVAnoretenido>0</IVAnoretenido>
      <IVApropio>0</IVApropio>
      <IVATerceros>0</IVATerceros>
      <RUTEmisorLiquidFactura>-</RUTEmisorLiquidFactura>
      <NetoComisionLiquidFactura>0</NetoComisionLiquidFactura>
      <ExentoComisionLiquidFactura>0</ExentoComisionLiquidFactura>
      <IVAComisionLiquidFactura>0</IVAComisionLiquidFactura>
      <IVAfueradeplazo>0</IVAfueradeplazo>
      <TipoDoctoReferencia />
      <FolioDoctoReferencia />
      <NumIdentReceptorExtranjero />
      <NacionalidadReceptorExtranjero />
      <Creditoempresaconstructora>0</Creditoempresaconstructora>
      <ImptoZonaFrancaLey18211 />
      <GarantiaDepEnvases>0</GarantiaDepEnvases>
      <IndicadorVentasinCosto>1</IndicadorVentasinCosto>
      <IndicadorServicioPeriodico>0</IndicadorServicioPeriodico>
      <MontoNofacturable>0</MontoNofacturable>
      <TotalMontoPeriodo>0</TotalMontoPeriodo>
      <VentaPasajesTransporteNacional />
      <VentaPasajesTransporteInternacional />
      <NumeroInterno />
      <CodigoSucursal>0</CodigoSucursal>
      <NCEoNDEsobreFactdeCompra />
      <CodigoOtroImp />
      <ValorOtroImp />
      <TasaOtroImp />
    </Registro>
  </Registros>
</Hefesto_Resultado>






Ejemplo de libro de compras recuperado desde el SII

Representa el resultado de la consulta de registros de compras. Este es un ejemplo ficticio.


<?xml version="1.0" encoding="ISO-8859-1"?>
<Hefesto_Resultado>
  <!--
    AUTOR : HEFESTO INVESTIGACION Y DESARROLLO
    URL   : https://lenguajedemaquinas.blogspot.com/ 
    -->
  <Encabezado>
    <RutEmpresa>99999999-9</RutEmpresa>
    <Periodo>2024-02</Periodo>
    <Libro>COMPRAS/REGISTRO</Libro>
    <FchConsulta>2024-11-08 15:19:34</FchConsulta>
    <RsmnTotDoc>92</RsmnTotDoc>
  </Encabezado>
  <Resumenes>
     <Resumen>
      <dcvCodigo>492469268</dcvCodigo>
      <rsmnCodigo>2009316861</rsmnCodigo>
      <rsmnTipoDocInteger>33</rsmnTipoDocInteger>
      <dcvNombreTipoDoc>Factura Electrónica</dcvNombreTipoDoc>
      <dcvTipoIngresoDoc>DET_ELE</dcvTipoIngresoDoc>
      <rsmnLink>true</rsmnLink>
      <rsmnMntExe>740464</rsmnMntExe>
      <rsmnMntNeto>72901272</rsmnMntNeto>
      <rsmnMntIVA>13851241</rsmnMntIVA>
      <rsmnMntIVANoRec>0</rsmnMntIVANoRec>
      <rsmnIVAUsoComun>0</rsmnIVAUsoComun>
      <dcvOperacion />
      <rsmnMntTotal>87716269</rsmnMntTotal>
      <rsmnEstadoContab />
      <rsmnTotDoc>92</rsmnTotDoc>
      <rsmnTotalRutEmisor />
    </Resumen>
  </Resumenes>
  <Registros>
    <Registro>
      <Nro>1</Nro>
      <TipoDoc>33</TipoDoc>
      <TipoCompra>Del Giro</TipoCompra>
      <RUTProveedor>81821100-7</RUTProveedor>
      <RazonSocial>TURISMO COCHA S.A.</RazonSocial>
      <Folio>7631532</Folio>
      <FechaDocto>22/10/2024</FechaDocto>
      <FechaRecepcion>23/10/2024 17:58:09</FechaRecepcion>
      <FechaAcuse />
      <MontoExento>53924</MontoExento>
      <MontoNeto>14130</MontoNeto>
      <MontoIVARecuperable>2685</MontoIVARecuperable>
      <MontoIvaNoRecuperable />
      <CodigoIVANoRec />
      <MontoTotal>70739</MontoTotal>
      <MontoNetoActivoFijo />
      <IVAActivoFijo />
      <IVAusoComun />
      <ImptoSinDerechoaCredito />
      <IVANoRetenido>0</IVANoRetenido>
      <TabacosPuros />
      <TabacosCigarrillos />
      <TabacosElaborados />
      <NCEoNDEsobreFactdeCompra>0</NCEoNDEsobreFactdeCompra>
      <CodigoOtroImpuesto />
      <ValorOtroImpuesto />
      <TasaOtroImpuesto />
    </Registro>
  </Registros>
</Hefesto_Resultado>







14 comentarios:

  1. Marcelo es un programador con amplia experiencia en consultas al SII. Tuve una inquietud y no dudé en contactarlo; me respondió rápidamente, a pesar de que mi implementación está en Python. ¡Muchas gracias, Marcelo! Tu blog es un gran aporte.

    Si tienes preguntas sobre consultas al SII, te recomiendo contactarlo también.

    ResponderEliminar
  2. Marcelo me salvó la vida con una asesoría para rescatar información del SII. Me contestó rapidisimo, muy buena voluntad y sabe mucho.

    ResponderEliminar
  3. Marcelo... Agredecer los años q llevamos trabajando juntos.. Las herramientas muy utiles y practicas q nos proveido para simplificar el timbrado de documentos electrónicos y resto de herramientas para los documentis electronicos un abrazo y felicitaciones.. Rene Jara

    ResponderEliminar
  4. Respuestas
    1. Estimado envíeme un email para responderle. Mi email es abaddon.1974@gmail.com

      Eliminar
  5. Muy agradecido con tu ayuda, no solo me ayudó a solucionar mi problema con la actualización del SII sino que además me enseñó a comprender mejor el código. Un experto en el área, gracias nuevamente. Un abrazo.

    ResponderEliminar
  6. Alguien tiene la ruta nueva (endpoint) para obtener el registro de compras?

    ResponderEliminar
    Respuestas
    1. Buenos días, mi nombre es Marcelo, soy el administrador del blog, llámame y me explica el problema estimado. Mi número es 997800285

      Eliminar
  7. hola, a mi me funcionaba con php, pero con el recaptcha v3 no he podido hacerlo funcionar

    ResponderEliminar
    Respuestas
    1. Si me pudieran ayudar, cuando probe con el recaptcha, lo agregue en data despues de COMPRA, me indica error 400. $pUrl = "https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport";


      $estados = ["PENDIENTE", "REGISTRO"];

      foreach ($estados as $estado) {
      $data = array(
      "metaData" => array(
      "conversationId" => $token,
      "namespace" => "cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport",
      "page" => null,
      "transactionId" => "0"
      ),
      "data" => array(
      "rutEmisor" => $rt,
      "dvEmisor" => $dv,
      "ptributario" => $periodo,
      "estadoContab" => $estado,
      "codTipoDoc" => 0,
      "operacion" => "COMPRA"
      )
      );

      $data_json = json_encode($data);

      $ch = curl_init($pUrl);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Content-Type: application/json;charset=utf-8',
      'Cookie: TOKEN='.$token.'; RUT_NS='.$rt.'; DV_NS='.$dv
      ));
      curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);

      $response = curl_exec($ch);

      Eliminar
    2. Cuando puedas me llamas y lo vemos 997800285 Marcelo Rojas

      Eliminar
  8. Holaa, Me gustaría saber como se hizo la confección de la descarga diferida, si solo esperas a leer desde el Excel o realizas alguna consulta a otro endpoint..

    ResponderEliminar
    Respuestas
    1. Buenas tardes, para realizar esta acción es necesario solicitar el archivo masivo y luego cuando este disponible descargarlo directamente desde el SII. Generalmente tarda unos 4 o 5 segundos en generarlo. Todo esto desde csharp.

      Eliminar
    2. Muchas gracias Amigo por tu pronta respuesta. Te escribiré al mail para ver el valor de la DLL. Gracias!

      Eliminar