GenerarCFDI DLL
Esta librería provee de métodos para la generación de facturas electrónicas (CFDI) versión 3.2 localmente, sin necesidad de tener una conexión constante a internet.
EL CFDI resultante será sellado con el certificado y la llave privada que se brinde, sólo se tiene que seguir la cadena de configuración para obtener los datos definida más abajo.
Usted sólo tendrá que envíar a timbrar sus facturas a Solución Factible para que estas sean tomadas en cuenta por el SAT.
Para hacer uso de estos métodos en su proyecto solo tiene que agregar la librería dll_generaCFDI.zip para saber como agregarla por favor siga este enlace: Documentación DLL's .
Actualización: se agregó soporte para complemento: ImpuestosLocales
Actualización: la cadena configuración ha sido actualizada, se agregaron
campos para abarcar el elemento "expedidoEn":
EMISOR_EXPEDIDO_EN_PAIS|EMISOR_EXPEDIDO_EN_CALLE|EMISOR_EXPEDIDO_EN_ESTADO|EMISOR_EXPEDIDO_EN_COLONIA|EMISOR_EXPEDIDO_EN_LOCALIDAD|EMISOR_EXPEDIDO_EN_MUNICIPIO|EMISOR_EXPEDIDO_EN_REFERENCIA|EMISOR_EXPEDIDO_EN_NO_EXTERIOR|EMISOR_EXPEDIDO_EN_NO_INTERIOR|EMISOR_EXPEDIDO_EN_CODIGO_POSTAL|
.
Actualización: se ha agregado en la linea de configuración los campos: |COMPLEMENTO_TIPO|COMPLEMENTO_DATOS|
En COMPLEMENTO_TIPO
se especifica el nombre del complemento: DONATARIAS
, IMPUESTOS_LOCALES
, en el campo
COMPLEMENTO_DATOS se esperan los datos del complemento separados con el caracter
¬
.
Nota: actualmente solo se pueden generar CFDI con los complementos:
Donatarias versión 1.1
Impuestos locales 1.0
Ejemplo donatarias 11:
Configuración impuestos locales
En la cadena configuración, en el campo: "COMPLEMENTO_TIPO" se debe poner: "IMPUESTOS_LOCALES"
Los datos del complemento deberán ir en el campo: "COMPLEMENTO_DATOS" separados por
¬
, para agregar los datos
de los impuestos como traslados, o retenciones se deben agregar en grupos delimitados por ()
y se pueden agregar m´s de 1 de cualquier tipo, puede
consultar la sección de ejemplos para más detalles.
|IMPUESTOS_LOCALES|TOTAL_DE_RETENCIONES¬TOTALDETRASLADOS¬(retencion,IMP_LOC_RETENIDO,TASA_DE_RETENCION,IMPORTE),(traslado,IMP_LOC_TRASLADADO,TASA_DE_TRASLADO,IMPORTE)|
Cadena configuración completa
La cadena de configuración completa (incluye las ultimas actualizaciones) para versión actual de la DLL se especifica a continuación:
|FOLIO|SERIE|TIPO_COMPROBANTE|LUGAR_EXPEDICION|RAZON_SOCIAL_EMISOR|RFC_EMISOR|PAIS_FISCAL_EMISOR|ESTADO_FISCAL_EMISOR|MUNICIPIO_FISCAL_EMISOR|CIUDAD_FISCAL_EMISOR|CALLE_FISCAL_EMISOR|NUMERO_EXT_FISCAL_EMISOR|NUMERO_INT_FISCAL_EMISOR|COLONIA_FISCAL_EMISOR|CP_FISCAL_EMISOR|RAZON_SOCIAL_RECEPTOR|RFC_RECEPTOR|PAIS_FISCAL_RECEPTOR|ESTADO_FISCAL_RECEPTOR|MUNICIPIO_FISCAL_RECEPTOR|CIUDAD_FISCAL_RECEPTOR|CALLE_FISCAL_RECEPTOR|NUMERO_EXT_FISCAL_RECEPTOR|NUMERO_INT_FISCAL_RECEPTOR|COLONIA_FISCAL_RECEPTOR|CP_FISCAL_RECEPTOR|FECHA|UNIDAD|CANTIDAD|PRECIO|CONCEPTO|IMPORTE_LINEA|TASA_IVA|IMPORTE_IVA|TASA_IEPS|IMPORTE_IEPS|IMPORTE_RET_IVA|IMPORTE_RET_ISR|MONEDA_NOMBRE|TIPO_CAMBIO|FORMA_PAGO|CONDICIONES_PAGO|METODO_PAGO|NUM_CTA_PAGO|REGIMEN|IMPORTE_TOTAL_FACTURA|SUBTOTAL_FACTURA|IMPORTE_DESCUENTOS_FACTURA|TOTAL_IMPUESTOS_RETENIDOS|TOTAL_IMPUESTOS_TRASLADADOS|FOLIO_FISCAL_ORIGINAL|SERIE_FISCAL_ORIGINAL|FECHA_FOLIO_ORIGINAL|TOTAL_FISCAL_ORIGINAL|COMPLEMENTO_TIPO|COMPLEMENTO_DATOS|EMISOR_EXPEDIDO_EN_PAIS|EMISOR_EXPEDIDO_EN_CALLE|EMISOR_EXPEDIDO_EN_ESTADO|EMISOR_EXPEDIDO_EN_COLONIA|EMISOR_EXPEDIDO_EN_LOCALIDAD|EMISOR_EXPEDIDO_EN_MUNICIPIO|EMISOR_EXPEDIDO_EN_REFERENCIA|EMISOR_EXPEDIDO_EN_NO_EXTERIOR|EMISOR_EXPEDIDO_EN_NO_INTERIOR|EMISOR_EXPEDIDO_EN_CODIGO_POSTAL|IEDU|IEDU_DATOS|
Por cada linea se incluirán los datos del concepto, para agregar más de un concepto a una factura
debe haber otra linea precedida por el caracter de salto de linea (\n
) en la cual solo
se actualizará con nuevos datos la información del concepto nuevo, y asi sucesivamente, ejemplo:
Ejemplos
|1539|E|ingreso|METEPEC, ESTADO DE MEXICO|ESCUELA KEMPER URGATE SA DE CV|EKU9003173C9|MéXICO|ESTADO DE MEXICO|MATEPEC|METEPEC|Uniroyal|18-A||La Michoacana|52166|XENON INDUSTRIAL ARTICLES S DE CV|XIA190128J61|MEXICO|JALISCO|GUADALAJARA|GUADALAJARA|AV. INGLATERRA||4120|TECHNOLOGY PARK CK|4120|2013-01-30T16:26:54|CJ|1|14.52|Concepto2|30.52|14|5|||||PESOS|1|UNA SOLA EXHIBICION|30 DIAS|EFECTIVO|No aplica|General de las personas morales |500|400|20|10|50|||||DONATARIAS|1.1¬0001¬2012-10-01¬Este comprobante ampara un donativo.|MEXICO|CALLE DEL RIO|DURANGO|CEL ROBLE|DURANGO|DURANGO||145|1A|14526|
|1539|E|ingreso|METEPEC, ESTADO DE MEXICO|ESCUELA KEMPER URGATE SA DE CV|EKU9003173C9|MeéXICO|ESTADO DE MEXICO|MATEPEC|METEPEC|Uniroyal|18-A||La Michoacana|52166|XENON INDUSTRIAL ARTICLES S DE CV|XIA190128J61|MEXICO|JALISCO|GUADALAJARA|GUADALAJARA|AV. INGLATERRA||4120|TECHNOLOGY PARK CK|4120|2013-01-30T16:26:54|CJ|1|14.52|Concepto3|40.52|16|5|10|9.56|||PESOS|1|UNA SOLA EXHIBICION|30 DIAS|EFECTIVO|No aplica|General de las personas morales |500|400|20|10|50|||||DONATARIAS|1.1¬0001¬2012-10-01¬Este comprobante ampara un donativo.|MEXICO|CALLE DEL RIO|DURANGO|CEL ROBLE|DURANGO|DURANGO||145|1A|14526|
Identificador de la DLL
ProgID | SF.GenerarCFDI |
ControlName | SFGenerarCFDI |
Métodos principales:
String |
generaCFDI(String conector, String rutaCer, String rutaKey, String passKey, String rutaEscribir) Genera una factura electronica (CFDI) versión 3.2. |
String |
generaCFDIFromFile(String rutaConector, String rutaCer, String rutaKey, String passKey, String rutaEscribir) Genera una factura electronica (CFDI) versión 3.2. |
String |
calcularSello(String cadenaOriginalBase64, String rutaArchivoKEY, Strig passArchivoKEY) Calcula el valor que lleva un CFDI en el atributo SELLO |
Descripción detallada de los métodos
generaCFDI
String generaCFDI(String conector, String rutaCer, String rutaKey, String passKey, String rutaEscribir)
-
Genera un comprobante fiscal digital sellado/firmado y sin timbre fiscal digital, el argumento conector
espera un string en base64 que a su vez contiene la información en lineas de tipo
conector txt para la generación
de la factura electrónica.
Una vez formada las lineas deberán ser codificadas en base64.
- Parámetros:
String conector
- cadena de caracteres codificada en base64 que a su vez contiene las lineas de información para generar el comprobante fiscal digital.String rutaCer
- Ruta del archivo certificado (.cer).String rutaKey
- Ruta de la llave privada (.key).String passKey
- Contraseña de la llave privada.String rutaEscribir
- Ruta la ruta puede ser a un directorio o a un archivo,
si la ruta representa un directorio se guardará el XML generado con un nombre generado automáticamente siguiendo la nomenclatura:CFDI_FolioSerie.xml
.
si la ruta contiene el nombre de archivo se utilizará este para almacenar el CFDI.
- Returns:
- Un String que contiene la ruta completa donde se almacenó el archivo, incluyendo el nombre.
generaCFDIFromFile
String generaCFDIFromFile(String rutaConector, String rutaCer, String rutaKey, String passKey, String rutaEscribir)
-
Genera un comprobante fiscal digital sellado/firmado y sin timbre fiscal digital, el argumento rutaConector
espera un string con la ruta del archivo que contendrá la información en lineas de tipo
conector txt para la generación
de la factura electrónica.
- Parámetros:
String rutaConector
- Ruta del archivo conector.String rutaCer
- Ruta del archivo certificado (.cer).String rutaKey
- Ruta de la llave privada (.key).String passKey
- Contraseña de la llave privada.String rutaEscribir
- La ruta puede ser a un directorio o a un archivo,
si la ruta representa un directorio se guardará el XML generado con un nombre generado automáticamente siguiendo la nomenclatura:CFDI_FolioSerie.xml
.
si la ruta contiene el nombre de archivo se utilizará este para almacenar el CFDI.
- Returns:
- Un String que contiene la ruta completa donde se almacenó el archivo, incluyendo el nombre.
calcularSello
String calcularSello(String cadenaOriginalBase64, String rutaArchivoKEY, Strig passArchivoKEY)
- Recibe la cadena original del comprobante en un String en base64, así como la ruta de la llave privada y su contraseña.
- Parámetros:
String cadenaOriginalBase64
- Cadena original codificada en base64.String rutaArchivoKEY
- Ruta de la llave privada (.key).String passArchivoKEY
- Contraseña de la llave privada.
- Returns:
- Un String que es el resultado de firmar la cadena original con la llave privada.