viernes, diciembre 31, 2010

How To : Controlar la generacion de los archivos generados por la libreria CFD 1.3.5

Una de las peticiones que nos han hecho es el poder tener mas control sobre los archivos que son generados por la libreria bueno pues con esta ultima actualizacion les ofrecemos un par de herramientas para lograr este control.

- NOMENCLATURA

Para cambiar el nombre de los archivos se incluyen en el MotorCFD un nuevo grupo de propiedades :

image

- GENERACION

Ahora si se especifican las rutas de archivo en el comprobante, el motor generara en esas ubicaciones los archivos

image

Ademas en el motor esta la opcion de omitir la generacion de los archivos de sello y cadena original

image

martes, diciembre 28, 2010

How To: Cancelar folios de comprobantes fiscales digitales emitidos

La cancelacion de folios relacionada con los comprobantes fiscales digitales (CFD’s) se reporta en el archivo mensual de uso de folios que se envia al SAT, para la generacion de este archivo usa el metodo

CFD.Generar.ReporteMensual

Enviando al final un arreglo de cadenas que representen al folio de la siguiente manera [Serie][Folio], ejemplo “A101”, “A115”

image

Validacion de Comprobantes Fiscales Digitales

En estos dias se actualizo el validador de CFD’s en la pagina del SAT, para verificar los archivos es necesario ir a esta liga: https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.asp

y seleccionar

  • Validaciones Estandar
  • Folio
  • Vigencia del CSD

image

CFDI : Version Beta

Acabo de integrar a la ultima version de las librerias, la DLL que genera los archivos XML correspondientes al CFDI, un ejemplo de codigo es el siguiente:

Sub Main()
 
        'licencia para el RFC del demo de SAT
        CFDI.Licenciamiento.AgregaLicencia("ckW2u05Nn5vSmlxpwURi995TfVMStrXgpAVD028yQR0=")
 
        'crea un nuevo comprobante CFDI
        Dim micomprobante As New CFDI.Comprobante
        With micomprobante
            .TruncarDecimales = True
            .TruncarDecimalesLongitud = 2
            .AgregaDatosEmisor("PPL961114GZ1", "PHARMA PLUS SA DE CV", _
                               "AV. RIO MIXCOAC", "No.140", "", _
                               "ACACIAS", "03240", "BENITO JUAREZ", _
                               "MEXICO, D.F.", "", "Mexico", "")
 
            .AgregaDatosExpedidoEn("AV. UNIVERSIDAD", 1858, "", _
                                   "OXTOPULCO", "03910", "", _
                                   "DISTRITO FEDERAL", "", "Mexico", "")
 
            .AgregaDatosReceptor("PEPJ8001019Q8", "JUAN PEREZ PEREZ", _
                                 "AV UNIVERSIDAD", "16 EDF 3", _
                                 "DPTO 101", "COPILCO UNIVERSIDAD", _
                                 "04360", "COYOACAN", "DISTRITO FEDERAL", _
                                 "", "Mexico", "")
 
            .formaDePago = "PAGO EN UNA SOLA EXHIBICION"
            .fecha = New Date(2010, 3, 6, 20, 38, 12)
            .tipoDeComprobante = CFDI.ComprobanteTipoDeComprobante.ingreso
            .AgregaConcepto(1, "CAPSULAS", "", "VIBRAMICINA 100MG 10", 244)
            .AgregaConcepto(1, "BOTELLA", "", "CLORUTO 500M", 137.93)
            .AgregaConcepto(1, "TABLETAS", "", "SEDEPRON 250MG 10", 84.5)
            .AgregaImpuesto(CFDI.ComprobanteImpuestosTrasladoImpuesto.IVA, 0, 0)
            .AgregaImpuesto(CFDI.ComprobanteImpuestosTrasladoImpuesto.IVA, 16, 22.07)
            .subTotal = "488.50"
            .total = "488.50"
            .folio = 1
            .serie = ""
        End With
        'crea el motor usando los certificados del demo del SAT
        Dim mCFDI As New CFDI.MotorCFDI( _
                                        "D:\FE\Certif_PACyEmisor\emisor.cer", _
                                        "D:\FE\Certif_PACyEmisor\emisor.key", _
                                        "a0123456789", "D:\FE\Test\CFDI")
 
        'agrega el comprobante al motor
        mCFDI.Comprobantes.Add(micomprobante)
 
        'revisa el resultado del procesamiento de comprobantes
        Dim resultado As CFDI.ResultadoProceso = mCFDI.ProcesarComprobantes(True, False)
        If resultado.Errores Then
            For Each c1 As CFDI.Comprobante In resultado.ComprobantesNoGenerados
                Console.WriteLine(c1.ErrorGeneracion)
            Next
            Console.ReadLine()
        Else
            Process.Start(mCFDI.DirectorioDestino)
            Console.WriteLine("termino")
        End If
 
End Sub

Los archivos CER y KEY los puedes descargar de http://www.sat.gob.mx/sitio_internet/asistencia_contribuyente/principiantes/comprobantes_fiscales/66_19430.html


y el validador para los archivos CFDI esta en : https://www.consulta.sat.gob.mx/sicofi_web/moduloECFD_plus/ValidadorCFDI/Validador%20cfdi.html

lunes, diciembre 27, 2010

Could not load file or assembly 'ChilkatDotNet2, Version=9.0.8.0, Culture=neutral, PublicKeyToken=eb5fc1fc52ef09bd' or one of its dependencies. Se ha intentado cargar un programa con un formato incorrecto."

Este mensaje se da cuando en visual studio esta seleccionada la opcion de ANY CPU como arquitectura de nuestra aplicacion

image

para usar la libreria CFD.NET es necesario elegir x86 o x64 y tomar como referencia las DLL’s correspondientes.
Para cambiar la arquitectura del proyecto en VS2008 sigue estos pasos:

Elige la opcion de configuracion

image

Selecciona la opcion para crear una nueva configuracion

image

Selecciona x86 o x64 y da clic en el boton OK

image

por ultimo cierra la ventana de administracion de configuracion y tu proyecto ha quedado listo para compilar en la arquitectura seleccionada. ahora solo asegurate de hacer referencia a las DLL’s adecuadas para la arquitectura seleccionada y el error debe desaparecer.

jueves, diciembre 23, 2010

How To : Modificar el formato PDF para que aparezcan los datos de informacion aduanera

Una vez que se agregan los datos de informacion aduanera a los conceptos es necesario modificar el formato PDF para que aparezcan, edita el archivo .REPX, agregando las etiquetas del nodo Concepto_InformacionAduanera

image

Este es el resultado

image

lunes, diciembre 20, 2010

CFD.NET 1.3 , ACTUALIZACION OBLIGATORIA!!!!

Se les notifica que al genera el reporte mensual se presenta por error el RFC del EMISOR en lugar del RECEPTOR, es obligatorio que actualicen la libreria antes de generar archivos de reporte mensual.

jueves, diciembre 16, 2010

How To : Examinar el numero de serie del certificado (archivo .cer)

Para examinar el numero de serie del archivo .CER que nos proporciona el SAT, a partir de la version 1.2.6 se incluye una nueva clase llamada CertificadoDigital esta clase lleva un constructor que recibe como parametro la ruta fisica del archivo CER.

image

Una vez creada la instancia podemos acceder a algunas propiedades de uso comun.

image

domingo, diciembre 12, 2010

How To : Agregar informacion adicional a la impresion del CFD en los conceptos

Para esas ocasiones en que se requiere imprimir informacion adicional en la seccion de conceptos en el PDF que entregamos al cliente, la libreria CFD.NET,  a partir de la version 1.2.5 permite agregar hasta 5 datos adicionales al concepto por medio de las propiedades ImpresionPDF1, ImpresionPDF2, ImpresionPDF3, ImpresionPDF4 e ImpresionPDF5.

 image

Una vez agregados los datos al concepto, debes editar el formato (archivo .REPX) con el editor de formato que viene en el paquete de la libreria CFD.NET para la generacion de comprobantes fiscales digitales.

Modifica la propiedad Data Source’s Schema especificando el archivo .pdf.xml

image

image

Una vez seleccionado el archivo .pdf.xml te deben aparecer en el listado del nodo Comprobante_Conceptos, los campos ImpresionPDF1, ImpresionPDF2, ImpresionPDF3, ImpresionPDF4 e ImpresionPDF5

image

Arrastra los que requieras mostrar al area de detalles en el editor del formato .repx y genera de nuevo tu factura, ahora aparecera la informacion en el area de conceptos

image

 

IMPORTANTE: El nodo donde se encuentran los datos ImpresionPDF es el Conceptos_Concepto

image

 

image

martes, noviembre 30, 2010

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

Cuando haces referencia a la libreria CFD para la generacion de comprobantes fiscales digitales en la facturacion electronica desde un proyecto de visual studio 2010, compilando con el framework 4.0, es probable que te aparezca el  mensaje :

 

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

Esto es porque falta agregar un parametro de configuracion que permita la compatibilidad con versiones anteriores del framework. Esto se logra modificando el archivo .config de la siguiente manera:

http://devonenote.com/2010/08/mixed-mode-assembly-error-after-upgrading-to-dotnet-4-0/

viernes, noviembre 19, 2010

Actualizacion : CFD.NET 1.2, Generacion del Sello Digital con encripcion SHA1

Acabo de hacer publica la version 1.2 del CFD.NET, en esta version ya se considera el cambio de encripcion MD5 a SHA1 en los comprobantes generados a partir del 1 de Enero de 2011.

Internamente lo que sucede es que cuando el motor detecta un comprobante con fecha anterior al 1 de Enero de 2011, aplicara la encripcion MD5 para el sello digital, si el comprobante tiene fecha igual o superior al 1 de Enero de 2011 entonces generara el sello digital con encripcion SHA1.

Esto es completamente transparente, lo unico que necesitas es actualizar la libreria en tus proyectos y listo!

jueves, noviembre 18, 2010

How To : Formatear los decimales de las cantidades en el comprobante fiscal digital

Para formatear la cantidad de decimales incluidos en los valores del comprobante fiscal, se agregaron las propiedades

  • TruncarDecimales
  • TruncarDecimalesLongitud

La manera de usarlos es: ANTES de agregar cualquier valor al comprobante establecer la manera en que se debe actuar sobre las cantidades

image

El codigo anterior se encargara de que cualquier cantidad que la libreria maneje, sea REDONDEADO a 2 posiciones decimales, y aparezca con 2 posiciones despues del cero en los archivos XML generados.

viernes, noviembre 05, 2010

How To: Agregar informacion aduanera

En el caso de que requieras agregar informacion aduanera a los conceptos del comprobante fiscal debes usar la coleccion Items del concepto de la siguiente manera:

Con versiones anteriores a la 1.1.12

image

Con versiones a partir de la 1.1.12

image

Esto generara la informacion requerida en el xml y a partir de ahi en el reporte mensual.

martes, octubre 26, 2010

How To: Agregar informacion de impresion al PDF

Es un caso comun que ademas de la informacion incluida en el XML del comprobante fiscal digital, requieras incluir otro grupo de datos a la hora de generar el PDF. Pues bien, a partir de la version 1.1.10  el comprobante incluye una propiedad llamada DatosImpresion esta propiedad es de tipo hashtable asi que te permite agregar una lista de “nombres-valor” que seran convertidos a elementos XML en el archivo que servira como origen de datos a la hora de generar el PDF.

Bueno … y entonces como se agregan estos datos a la impresion?

Supon que requieres agregar la direccion de envio del producto, estos datos no forman parte de la especificacion del SAT asi que tus opciones son:

  1. Agregar la informacion en la addenda
  2. Utilizar la propiedad DatosImpresion del objeto Comprobante

en este post, me enfocare en la segunda ya que la integracion de datos a la addenda depende enteramente de tus aplicaciones, asi que sin mayot preambulo aqui van los pasos…

PASO 1: Definicion de datos
Para agregar la informacion de la direccion de envio, le agrego el identificador y el valor a la propiedad DatosImpresion de la siguiente manera

image

Solo debes recordar que esto se traducira a nodos XML asi que el identificador es sensible a mayusculas. DomicilioEnvio NO es lo mismo que domicilioenvio una vez agregada esta informacion necesitas ejecutar el metodo ProcesarComprobantes para generar el archivo con terminacion .pdf.xml que sera usado en el siguiente paso.

image

El motor ha creado un elemento XML llamado Impresion y dentro de este, informacion que estara disponible para la generacion del PDF, incluidos los datos que acabamos de especificar.

image

PASO 2: Modificacion del REPX
Debes editar el archivo .REPX para que tome en cuenta la informacion que sera enviada (en este caso DomicilioEnvio) asi que abre el archivo .REPX que se encuentra en tu directorio de ejecucion de la aplicacion o el directorio especificado en la propiedad compartida CFD.Globales.DirectorioRecursosXSD

image

Una vez que abres el archivo con el editor de formato, debes ir a la propiedad DataSource’s Schema

image

Y seleccionar el archivo generado en el paso anterior

image

Una vez que se asigno el archivo como esquema de datos, aparecera disponible la propiedad DomicilioEnvio

image

Para incluirla en el reporte solo hay que agregar una etiqueta desde el toolbox

image

Dando un clic en el smarttag, aparece el editor de la etiqueta, modifica la propiedad DataBinding  para que tome el valor de la propiedad DomicilioEnvio

image

Listo, ahora si puedes generar tus pdf’s y la informacion que envies como DomicilioEnvio sera mostrada en la etiqueta.

ANTES
image
AHORA
image

Asi o mas facil? Espero sus comentarios!

martes, octubre 12, 2010

Libros Gratis!

Aqui les dejo unos recursos para programadores que pueden ser de utilidad, por no decir que son un MUST-READ

http://amazedsaint.blogspot.com/2010/09/7-freely-available-e-booksguides-i.html

martes, octubre 05, 2010

How To : Cambiar el formato de la cantidad en moneda con CFD.NET 1.1.7 +

Con la actualizacion 1.1.7 de la libreria de facturacion electronica, ahora puedes modificar la leyenda de la cantidad en pesos que aparece en el pdf de una manera muy sencilla, utilizando el mismo concepto del String.Format, puedes definir un formato considerando que el parametro con indice 0 representa la cantidad entera en palabras y el parametro con indice 1 el valor numerico de los decimales redondeado a 2 posiciones.

Aqui esta el ejemplo:

image

Y el resultado:

image

Espero sus comentarios!

miércoles, septiembre 29, 2010

HowTo : Cambiar la capitalizacion en la leyenda de cantidad en pesos

Antes de la version 1.1.6, la leyenda que se generaba en el pdf para las cantidades en pesos, aparecia en minusculas unicamente, a partir de la version 1.1.6 del 29 de Septiembre, la clase MotorCFD cuenta con una nueva propiedad llamada CapitalizacionCantidadConLetra . Esta propiedad permite las siguientes variaciones

  • Original : texto en minusculas
  • Minusculas : texto en minusculas
  • Mayusculas : texto en mayusculas
  • PrimeraLetraPalabra : asegura que la primera letra de cada palabra sea mayuscula
  • PrimeraLetraFrase : asegura que la primera letra de la leyenda sea mayuscula

Es importante que esta propiedad la modifiques ANTES de ejecutar el metodo ProcesarComprobantes para que afecte los archivos generados.

Aqui el codigo:

image

y el resultado en el PDF:

image

Addendas : Soriana

Para la generacion de la addenda de soriana, existe una dll que forma parte del servicio de soporte y actualizaciones que te permite trabajar con objetos desde .net y al final transformar ese objeto en el XML que requiere ser incrustado en el comprobante fiscal digital, aqui les dejo un ejemplo sencillo para que vean lo facil que es

image

El resultado en el xml es el siguiente

image

Por supuesto, a este ejemplo le faltan muchos datos que agregar pero te sirve para que notes el trabajo que realizan las librerias de addenda que complementan a CFD.NET.

Espero sus comentarios!

martes, septiembre 28, 2010

Nueva version CFD.NET 1.1.6

  • Se agregaron los metodos CFD.Obtener.CadenaOriginalXML  y  CFD.Obtener.SelloCadenaOriginal para obtener de manera rapida la cadena y sello original de un archivo xml que represente un comprobante fiscal digital
  • Se agrego la propiedad  Cancelado a la clase Comprobante para marcar un comprobante como cancelado en la generacion del reporte mensual
  • Se agrego la propiedad  CadenaOriginal a la clase Comprobante para que sea llenada por el motor al invocar el metodo ProcesarComprobantes
  • Se modifico el metodo ProcesarComprobantes del motor para que de manera automatica llene las propiedades  Sello y   CadenaOriginal de cada comprobante al intentar generar los archivos
  • Se modifico la cantidad de decimales permitidos en la generacion del xml, el maximo ahora es de 5 posiciones despues del punto decimal
  • Se modifico el metodo de generacion del reporte mensual para que acepte una lista de folios y los marque como cancelados
  • Se actualizo el formato de la cadena original  para que cumpla con la ultima definicion del sat publicada

viernes, septiembre 17, 2010

How To : Usar un archivo secundario para generar el formato del PDF

La libreria por default, genera un directorio llamado RECURSOSCFD en el directorio de ejecucion de la aplicacion. Bajo ese directorio crea algunos archivos necesarios para la ejecucion de la libreria, tal es el caso del archivo CFD.REPX que es el que se encarga de proporcionar el formato con el que se generaran los archivos PDF.

Pues bien, en ocasiones necesitaras especificar donde esta ubicado este archivo sea porque quieres utilizar distintos formatos o porque deseas controlar el directorio donde se encuentran dichos formatos.

Aqui les dejo un ejemplo de como crear el archivo base y asignarlo como el default para la generacion de archivos pdf

image

miércoles, septiembre 15, 2010

HowTo : Manejo de cantidades especificas, impuestos.

Hay ocasiones en que deseas manejar directamente los impuestos, evitando que la libreria haga los calculos de subtotal, iva y total , para esto debes marcar cada llamada a los metodos Agrega con la bandera recalcularTotales en falso.

image

Esto te permite total control sobre las cantidades, pero debes agregar manualmente los datos de subtotal y total, espero sus comentarios!

martes, septiembre 14, 2010

Actualizacion : CFD 1.1.3

  • Se corrigio el manejo de los decimales en la generacion del PDF para que solo aparecieran dos digitos despues del punto
  • Se corrigio el manejo de formato en las cantidades de la generacion del PDF para que aparecieran los separadores de miles

Como activar la libreria CFD.NET con la llave de activacion

Despues de crear una instancia al motor de CFD’s agrega la llave a la lista de licencias para activar la generacion de archivos
image

Nota: Para el caso de las librerias CFDI, el objeto motor es del tipo CFDI.MotorCFDI
y el metodo para agregar la licencia es CFDI.Licenciamiento.AgregaLicencia

HowTo : Reporte Mensual

Para la generacion del archivo de texto del reporte mensual debes usar el siguiente metodo

image

jueves, septiembre 09, 2010

HowTo : Agregar impuestos directamente al CFD con la libreria CFD.NET

Versiones soportadas:  1.1.2 o superior.

Para agregar impuestos a nuestro comprobante fiscal digital utilizando la libreria CFD.NET, utiliza el metodo AgregarImpuesto de la siguiente forma:

- PARA AGREGAR EL IVA AL 16%  CALCULANDO EL IMPORTE DE IVA SIN RECALCULAR LAS CANTIDADES EN EL COMPROBANTE

image

- PARA AGREGAR EL IVA AL 16% CALCULANDO EL IMPORTE DE IVA Y TAMBIEN  RECALCULANDO LAS CANTIDADES EN EL COMPROBANTE

image

- PARA AGREGAR EL IVA AL 16% ESPECIFICANDO EL IMPORTE SIN RECALCULAR LAS CANTIDADES EN EL COMPROBANTE

image

Es importante aclarar que el metodo AgregaImpuesto es simplemente un facilitador, tu puedes modificar directamente el arreglo de impuestos que esta representado por la propiedad Impuestos en el objeto Comprobante para tomar el completo control de los datos generados.

viernes, septiembre 03, 2010

Como activar la libreria CFD.NET con el archivo de licencia *.lic

Una vez que se ha realizado la compra de licencia de la libreria CFD.NET, recibiras un archivo con extension .LIC, guardalo en tu maquina.

image

ahora, descarga la ultima version de la libreria desde este sitio.

image

Por ultimo, en el codigo de tu aplicacion, despues de instanciar el motor de CFD’s  debes especificar el directorio donde se encuentra el archivo .LIC que recibiste por correo electronico para activar la generacion de archivos sin restricciones.

image

Espero tus comentarios!