miércoles, julio 30, 2008

"Hint" para Set de pruebas

Cuando en el desarrollo e implementación de un sistema de factura electrónica nos vemos enfrentado al "set de pruebas" del SII, comenzamos a entrar a un terreno que no manejamos completamente. Lo peor, es que la ayuda que debiese venir del área contable tampoco llega como esperamos, sobre todo con las diferencias de "contabilidad tributaria" y la que llevan las empresas.

Bueno, en el set de pruebas el caso que es más complejo de manejar es el del libro de compra en donde se deben considerar documentos de compra, que hasta el momento siempre tienen el mismo folio y para el tratamiento se debiese considerar:

Folio 9 Factura de Compra Electrónica, Tipo DTE 46

Para este folio se debe calcular el IVA y colocarlo como Monto IVA e IVA retenido. Ojo con el cálculo del iva, al sacar el 19% da un decimal .45 el cual no se debe redondear. Por ejemplo, si el set de pruebas dice "Factura de compra electrónica, compra con retención total de iva monto afecto: 9855", el detalle del documento en el libro de compra se debería ver como:

Monto Exento: 0
Monto Neto: 9855
Monto IVA: 1872
Otros Impuestos:
Código: 15 (retención total de IVA)
Tasa: 0.19
Monto: 1872
Monto Total: 9855

Folios 234 y 781 Facturas Tipo DTE 30

Estos documentos tienen dos casos. El folio 234 es la factura típica, con monto neto, monto iva (0.19 * monto neto) y monto total (monto neto + monto iva) en donde el iva recuperable es el monto total de iva e iva no recuperable es 0. Si por ejemplo el set de pruebas dice que el monto afecto es 29770, los montos que de deben especificar en el detalle del libro de compra para este documento son:

Monto Exento: 0
Monto Neto: 29770
Monto IVA: 5656
Monto Total: 35426

Para el caso del folio 781, que tiene IVA de uso común se debe considerar que el monto de IVA como cero y el IVA de uso común como el 19% del valor neto, además se debe considerar que el monto sin derecho a crédito debe ser el iva multiplicado por (1 - factor proporcionalidad) y el monto total es el monto neto más el IVA. Si por ejemplo el set de pruebas dice que el monto afecto es de 29887 y tiene iva de uso común con factor de proporcionalidad 0.60:

Monto Exento: 0
Monto Neto: 29887
Monto IVA: 0
Monto IVA uso común: 3407
Monto Total: 33294

Para el resumen del libro de compra para este tipo de documento se debe considerar como el monto de iva uso común la suma de los detalles, el factor de proporcionalidad el indicado por el set de pruebas, el crédito iva uso común el iva uso común multiplicado por el factor proporcionalidad y el total sin crédito como la suma de los detalles.

miércoles, noviembre 16, 2005

Manipulación en Java de los CAF del SII

Cuando se desarrolla un sistema de emisión de DTEs en Java, uno de las primeras tareas es "procesar" el archivo XML de autorización de Folios que se descarga desde el SII, con la intención de recuperar la llave privada y llave pública del CAF. La llave privada se utiliza para firmar el timbre de todos los DTEs que utilizarán este rango de folios.
Para usar la llave privada que entrega el SII en Java, se debe hacer una transformacion sobre ella, dicha transformación se puede hacer con la herramienta OpenSSL:

http://gnuwin32.sourceforge.net/packages/openssl.htm (windows)
http://www.openssl.org (linux)

Se sugiere descargar e instalar la herramienta y utilizarla con el comando "pkcs8", que de acuerdo a la documentación:

http://www.openssl.org/docs/apps/pkcs8.html

Permite transformar una llave privada de formato tradicional a un formato pkcs8 que puede ser leido y manipulado con Java. A la ejecución del comando se debe dar como entrada la llave privada que entrega el SII (sólo la llave, la que se encuentra dentro de los tags ), aplicar la transformación y usar en Java la llave transformada. Esta transformación seria algo como:

openssl pkcs8 -in llaveSII.pem -topk8 -nocrypt -out llaveOK.pem

en donde llaveSII.pem es la llave que entrega el SII (lo que viene entre las lineas "-----BEGIN RSA PRIVATE KEY-----" y "-----END RSA PRIVATE KEY-----", incluidas estas lineas) y llaveOK.pem es el nombre del archivo que tendrá la llave transformada, y es la que debe usar con Java para crear el PrivateKey.

miércoles, octubre 26, 2005

Inauguración

Estimados Sres,

En este espacio pretendo ir publicando diversos articulos referentes a la implementación de un sistema de DTEs y las respuestas que me han tocado dar más de una vez a las personas encargadas de diseñar y desarrollar un sistema de este tipo.
La documentación del SII al respecto es bastante poca y no existen espacios para debatir entre los desarrolladores, el cual pretendo lograr con este blog.