martes, enero 04, 2011

Its Alive!, el validador del SAT funciona de nuevo!

Acabo de revisar el validador del SAT y aparentemente el post de Asteka, les dijo que tenian que componer… todo de vuelta a la normalidad.

image

Error al generar la cadena, misterio resuelto, (Gracias Asteka!)

En uno de los comentarios al post anterior, Asteka ha publicado lo siguiente:

La respuesta a esta burla del SAT.

Ya no le busquen mas, el problema es del SAT les explico por que...
Accesen con explorer a este link:
http://www.sat.gob.mx/sitio_internet/cfd/2/cadenaoriginal_2_0/cadenaoriginal_2_0.xslt

Dentro de esta pagina
Este xlst hace referencia a otros xlst si abren cada uno de ellos funcionan EXCEPTO el ultimo. Esto es el verdadero problema que nos envia el validador. Alguien del SAT ha eliminado el archivo terceros.xslt o en caso de no ocuparse han olvidado quitar la referencia de llamada al mismo.

Atte.
Asteka

Asi que mis sospechas eran correctas, un error al generar la cadena del lado del validador del SAT esta generando un sello digital basado probablemente en una cadena vacia, que al ser comparado contra el contenido del sello de nuestros CFD’s esta reportando obvias diferencias. Bravo SAT, espero que no sea un indicador de lo que nos espera este 2011!

Saludos!

How To : Agregar informacion adicional a la addenda

Para agregar informacion adicional a la addenda, se puede usar el metodo AgregaXMLAddenda  enviando como argumento una cadena que represente un fragmento XML de la siguiente manera

image

Esto dara como resultado que el archivo XML generado contenga ese fragmento en el nodo Addenda

image

Una vez que esta informacion se encuentra en el XML podemos usarla como dato desde el formato de generacion de nuestros PDF’ s editando el archivo .REPX

image

lunes, enero 03, 2011

Error al Generar la Cadena Original

Si al validar tus comprobantes usando el validador en linea del SAT te aparece el mensaje “Error al generar la cadena” esto es lo que responde el SAT.

image

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