Buscar en este blog

jueves, 10 de octubre de 2013

CONSTRUIR DTE USANDO CLASE C#

CONSTRUIR DTE USANDO CLASE C#


Bueno mucha gente me ha preguntado cómo puede construir sus dtes utilizando una forma simple y didáctica para realizarlo. Con un poco de paciencia y unos cuantos dolores de cabeza he construido una clase compuesta que permite realizar este trabajo. Les dejo los ejemplos de como funciona. Si alguien esta interesado en ella puede llamarme y charlamos. 

Principios generales

 Esta clase está basada en la posibilidad de serializar un objeto. Utilizando etiquetas de System.Serialization de C#. Este proceso permite transformar un objeto en su representación XML, exponiendo solo los elementos públicos de la misma y ocultando los privados. Particularmente esta clase contiene métodos para serializar, calcular los montos de la totalera, crear el ID del documento.  Los cuales no son visibles al momento de realizar la serializacion.

Primer paso

Primero cree una instancia de la clase y asigne las propiedades básicas del documento a crear, en este caso asigno datos del objeto Dte como la versión, el Id del objeto Documento y Finalmente asigno los datos básicos de la zona de Identificación del documento.




















Segundo paso

Para continuar asignaremos a nuestra clase los valores del emisor, receptor y los totales del documento actual.



























Tercer paso


Ahora lo más importante, es agregar el detalle del documento. Esta operación se realiza de la siguiente forma:



Cuarto paso

Bueno finalmente solo falta serializar el documento para obtener su representación básica en formato XML








El resultado de toda esta operación regresara un archivo físico como el siguiente:












































Calcular los montos


La clase también permite calcular automáticamente los montos de la totalera utilizando un método interno de sumatoria de los valores afectos o exentos según corresponda. Calcula además el monto del IVA y el monto total del documento.










Luego solo debemos asignar el método adecuado:








Lo que dará de resultado lo siguiente:


Totales del documento calculados automaticamente















Nodo TED

Esta clase agrega automaticamente el nodo TED, el cual debe ser timbrado posteriormente por el suario. El resultado de su calculo automatico es el siguiente:





lunes, 29 de julio de 2013

Flujo Básico Módulo Recepción DTE


Flujo Básico Módulo Recepción DTE


Una de las cosas que solicita el SII para la implementación del sistema de Facturación Electrónica, es poner en funcionamiento el modulo de Recepción DTE, Este tiene como misión recuperar los documentos XML que los emisores electrónicos nos envían para realizar su facturación.

El siguiente es un modelo básico de Recepción de los documentos XML:






Servidor Correo Pop

En este ejemplo utilizo una cuenta de correo de gmail denominada hefesto.fe.valida.dte la cual me permite almacenar los emails de los clientes que me envían sus documentos XML  DTE. Puede en todo caso ser una cuenta de correo de empresa con su propio servidor de correo, lo importante aquí no es la tecnología sino mas bien el sentido que esta toma para el proceso de facturación electrónica.




Servidor de recepción DTE

El servidor de recepción DTE tiene como misión recepcionar los documentos XML enviados por los emisores electrónicos. Dicho esto, debe realizar la descarga de los emails enviados a nuestra casilla y verificar que los documentos recepcionados  sean documentos XML exigidos por el SII en forma y fondo. Para esto se debe realizar una validación de los documentos XML que fueron enviados y posterior a esto determinar si es posible agregarlos a nuestro sistema, o bien regresarlo al emisor del documento rechazando el envío.




Recuperación de emails de la casilla

Antes que nada es necesario recuperar los emails de nuestra casilla de correo, esto es debido a que el SII indica que los receptores de documentos tributarios electrónicos deben tener activo un método de transmisión de los documentos XML entre contribuyentes electrónicos. Este proceso debe ser automático y periódico.
En particular, el contenido de los emails no es relevante, pues lo que realmente importa es el archivo XML adjunto a este. Si el documento XML  adjunto  es efectivamente un DTE, se puede extraer de el los datos necesarios para identificar la empresa que lo envía y de esta forma agregarlos a nuestro sistema.




Validación de archivos adjuntos XML

La primera validación que debemos realizar es si el documento adjunto al email es un documento XML, puede darse el caso que por error, no se envíe el adjunto o simplemente el documento adjunto sea un XML no valido para nuestros procesos. Si no hay un documento adjunto del tipo XML o este no es valido para nosotros, descarte el documento y notifique al emisor del mismo del error, para su pronta solución. En este caso no es necesario una repuesta formal, sino mas bien una email simple indicando al emisor del problema.



Determinación de XML (DTE)

Una vez extraído el documento xml desde el email es necesario saber si este es un documento xml valido para el proceso de facturación electrónica. Para realizar esta función podemos utilizar los schemas del SII para verificar la estructura y forma del documento XML decepcionado. No entraré en detalles de como realizar la validación contra los schemas del SII. Solo expondré la idea a desarrollar.
Si el resultado de validar los schemas del SII es incorrecta, se debe notificar al emisor del documento, que esta enviando un documento xml no valido para los efectos de la facturación electrónica.




Validación exitosa

Sabiendo que ya contamos con un documento xml del tipo DTE, podremos entonces almacenarlo en nuestro sistema para su procesamiento. Aunque no es obligatorio, es prudente enviar un email al emisor del mismo indicando que tenemos conocimiento  del documento que nos enviaron.


Continua...