private void btnTimbrar_Click(object sender, EventArgs e) { //crear un nuevo comprobante CFDI para la version 3.2 FIGeneradorFacturaElectronica.ComprobanteCFDI32 Comprobante = new ComprobanteCFDI32(); Comprobante.serie = "MER"; Comprobante.folio = "8223"; //dato no obligatorio Comprobante.fecha = System.DateTime.Now; Comprobante.formaDePago = "Pago en una sola exhibición"; Comprobante.subTotal = new FIGeneradorFacturaElectronica.Importe(1100); Comprobante.total = new FIGeneradorFacturaElectronica.Importe(1276); Comprobante.tipoDeComprobante = "ingreso"; Comprobante.Moneda = "MXN"; //Comprobante.TipoCambio = "1"; //utilizar en caso de moneda extranjera // Campos nuevos en comprobante Comprobante.LugarExpedicion = "VERACRUZ"; Comprobante.NumCtaPago = "NO IDENTIFICADO"; Comprobante.metodoDePago = "NO IDENTIFICADO"; //Campo nuevo en Emisor Comprobante.Emisor.RegimenFiscal.Add("REGIMEN GENERAL DE LEY PERSONAS MORALES"); //Llenado de datos del emisor Comprobante.Emisor.rfc = RFC; Comprobante.Emisor.nombre = "Empresa de prueba"; Comprobante.Emisor.DomicilioFiscal.calle = "Av. Paseo de la Reforma"; Comprobante.Emisor.DomicilioFiscal.noExterior = "89"; Comprobante.Emisor.DomicilioFiscal.noInterior = "103"; Comprobante.Emisor.DomicilioFiscal.colonia = "Cuauhtemoc"; Comprobante.Emisor.DomicilioFiscal.localidad = "Ciudad de Mexico"; Comprobante.Emisor.DomicilioFiscal.municipio = "Cuauhtemoc"; Comprobante.Emisor.DomicilioFiscal.estado = "Distrito Federal"; Comprobante.Emisor.DomicilioFiscal.pais = "MEXICO"; Comprobante.Emisor.DomicilioFiscal.codigoPostal = "06500"; Comprobante.Emisor.ExpedidoEn.calle = "FRANCISCO PEREZ"; Comprobante.Emisor.ExpedidoEn.noExterior = "35"; Comprobante.Emisor.ExpedidoEn.noInterior = "1"; Comprobante.Emisor.ExpedidoEn.colonia = "RICARDO FLORES MAGON"; Comprobante.Emisor.ExpedidoEn.localidad = "VERACRUZ, VER."; Comprobante.Emisor.ExpedidoEn.municipio = "VERACRUZ"; Comprobante.Emisor.ExpedidoEn.estado = "Veracruz"; Comprobante.Emisor.ExpedidoEn.pais = "México"; Comprobante.Emisor.ExpedidoEn.codigoPostal = "91900"; //Llenado de datos del receptor Comprobante.Receptor.rfc = "FID080111867"; Comprobante.Receptor.nombre = "FREIGHTIDEAS S.A DE C.V."; Comprobante.Receptor.Domicilio.calle = "ARIZONA"; Comprobante.Receptor.Domicilio.noExterior = "108"; //Comprobante.Receptor.Domicilio.noInterior = "1"; Comprobante.Receptor.Domicilio.colonia = "COL. NAPOLES"; //Comprobante.Receptor.Domicilio.localidad = "TEOLOYUCAN"; Comprobante.Receptor.Domicilio.municipio = "Benito Juarez"; Comprobante.Receptor.Domicilio.estado = "Distrito Federal"; Comprobante.Receptor.Domicilio.pais = "MEXICO"; Comprobante.Receptor.Domicilio.codigoPostal = "03810"; //Crear un nuevo concepto FIGeneradorFacturaElectronica.Concepto Concepto1 = new FIGeneradorFacturaElectronica.Concepto(); Concepto1.cantidad = 1; Concepto1.descripcion = "Software"; Concepto1.valorUnitario = new FIGeneradorFacturaElectronica.Importe(1000); Concepto1.importe = new FIGeneradorFacturaElectronica.Importe(1000); //Concepto1.noIdentificacion = "PINO"; //nuevo en los conceptos Concepto1.unidad = "Pieza"; //ejemplo para agregar una cuenta predial al concepto //Concepto1.CuentaPredial="rur85859"; //ejemplo para agregarle informacion aduanera en el concepto FIGeneradorFacturaElectronica.t_InformacionAduanera informacionAduanera = new t_InformacionAduanera(); informacionAduanera.numero = "120"; informacionAduanera.fecha = System.DateTime.Now; informacionAduanera.numero = "234"; informacionAduanera.aduana = "AICM"; Parte parte = new Parte(); parte.InformacionAduanera.Add(informacionAduanera); parte.cantidad = 1; parte.descripcion = "Prueba"; Concepto1.Parte.Add(parte); //crear otro concepto FIGeneradorFacturaElectronica.Concepto Concepto2 = new FIGeneradorFacturaElectronica.Concepto(); Concepto2.cantidad = 1; Concepto2.descripcion = "VALIDACION"; Concepto2.valorUnitario = new FIGeneradorFacturaElectronica.Importe(100); Concepto2.importe = new FIGeneradorFacturaElectronica.Importe(100); Concepto2.unidad = "No aplica"; //agregando complemento concepto al comprobante por order y cuenta de terceros AgregarComplementoterceros(Concepto2); //crear otro concepto FIGeneradorFacturaElectronica.Concepto Concepto3 = new FIGeneradorFacturaElectronica.Concepto(); Concepto3.cantidad = 1; Concepto3.descripcion = "Factura"; Concepto3.valorUnitario = new FIGeneradorFacturaElectronica.Importe(1.50); Concepto3.importe = new FIGeneradorFacturaElectronica.Importe(1.50); Concepto3.unidad = "Pieza"; //Invocamos a la muestra de como crear complemento iedu //AgregarComplementoiedu(Concepto3); //Agregando los conceptos al comprobante Comprobante.Conceptos.Add(Concepto1); Comprobante.Conceptos.Add(Concepto2); Comprobante.Conceptos.Add(Concepto3); //totales de impuestos Comprobante.Impuestos.totalImpuestosRetenidos = new FIGeneradorFacturaElectronica.Importe(2317.44); Comprobante.Impuestos.totalImpuestosTrasladados = new FIGeneradorFacturaElectronica.Importe(176); //nuevo impuesto de tipo Traslado FIGeneradorFacturaElectronica.Traslado Traslado = new FIGeneradorFacturaElectronica.Traslado(); Traslado.impuesto = FIGeneradorFacturaElectronica.Traslado.TipoImpuesto.IVA; Traslado.tasa = new FIGeneradorFacturaElectronica.Importe(16); Traslado.importe = new FIGeneradorFacturaElectronica.Importe(176); //agregar el impuesto Comprobante.Impuestos.Traslados.Add(Traslado); //Nuevo impuesto tipo retencion FIGeneradorFacturaElectronica.Retencion Retencion = new FIGeneradorFacturaElectronica.Retencion(); Retencion.impuesto = FIGeneradorFacturaElectronica.Retencion.TipoImpuesto.IVA; Retencion.importe = new FIGeneradorFacturaElectronica.Importe(2317.44); //agregar retencion Comprobante.Impuestos.Retenciones.Add(Retencion); //invocamos a la muestra de como crear complemento de impuestos locales //AgregarComplementoImpuestosLocales(Comprobante); //Invocamos a la muestra de como crear complemento de donatarios //AgregarComplementoDonatarios(Comprobante); //nuevo objeto para la generacion del CFDI especificando el tipo FIGeneradorFacturaElectronica.Generador GenCFDI = new FIGeneradorFacturaElectronica.Generador(FIGeneradorFacturaElectronica.Generador.TipoFacturacion.CFDI); //Generar el nuevo comprobante y obtener el numero de errores List <cErrores> Errores = GenCFDI.NuevoComprobante(Comprobante); //si el listado de errores es mayor a 1 quiere decir que existen un error y no puede generarse el preCFDI if (Errores.Count == 0) { String PreCFDI = String.Empty; cErrores ErroresPreCFDI = null; //generar el preCFDI si es correcto se regresa true y puede ahora timbrase if (GenCFDI.GenerarPreCFDI(PosicionCertificado + ArchivoKey, PosicionCertificado + ArchivoCertificado, ContraseñaCertificado, out PreCFDI, out ErroresPreCFDI)) { //Timbrando preCFDI String CFDITimbrado = String.Empty; //Conexion para timbrado FIGeneradorFacturaElectronica.Timbre Timbrado = new FIGeneradorFacturaElectronica.Timbre(); //Si Timbrar devuelve true quiere decir que el timbre esta generado y podemos obtener las informacion del timbre de sus metodos if (Timbrado.Timbrar(CodigoUsuarioProveedor, CodigoUsuario, IdSucursal, PreCFDI, Comprobante.total.Valor.ToString(), out CFDITimbrado, cbQR.Checked)) { String XMLTimbre = Timbrado.XMLTimbre; //nuestro timbre generado txtResultado.Text = CFDITimbrado; //nuestro CFDI ya timbrado txtUUID.Text = Timbrado.UUID; if (cbQR.Checked) { pbQR.Image = Timbrado.QRImagen; //imagen QR } lstErrores.Items.Clear(); lstErrores.Items.Add("Sin errores"); } else { lstErrores.Items.Clear(); lstErrores.DataSource = Timbrado.Errores; lstErrores.ValueMember = "Error"; } } else { lstErrores.Items.Clear(); lstErrores.Items.Add(ErroresPreCFDI.Descripcion); } } else { lstErrores.Items.Clear(); lstErrores.DataSource = Errores; lstErrores.DisplayMember = "Descripcion"; } }
private void btnTimbrar_Click(object sender, EventArgs e) { //crear un nuevo comprobante CFDI para la version 3.2 FIGeneradorFacturaElectronica.ComprobanteCFDI32 Comprobante=new ComprobanteCFDI32(); Comprobante.serie = "MER"; Comprobante.folio = "8223"; //dato no obligatorio Comprobante.fecha = System.DateTime.Now; Comprobante.formaDePago = "Pago en una sola exhibición"; Comprobante.subTotal = new FIGeneradorFacturaElectronica.Importe(1100); Comprobante.total = new FIGeneradorFacturaElectronica.Importe(1276); Comprobante.tipoDeComprobante = "ingreso"; Comprobante.Moneda = "MXN"; //Comprobante.TipoCambio = "1"; //utilizar en caso de moneda extranjera Comprobante.noCertificado = NoCertificado; // Campos nuevos en comprobante Comprobante.LugarExpedicion = "VERACRUZ"; Comprobante.NumCtaPago = "NO IDENTIFICADO"; Comprobante.metodoDePago = "NO IDENTIFICADO"; //Campo nuevo en Emisor Comprobante.Emisor.RegimenFiscal.Add("REGIMEN GENERAL DE LEY PERSONAS MORALES"); //Llenado de datos del emisor Comprobante.Emisor.rfc = RFC; Comprobante.Emisor.nombre = "Empresa de prueba"; Comprobante.Emisor.DomicilioFiscal.calle = "Av. Paseo de la Reforma"; Comprobante.Emisor.DomicilioFiscal.noExterior = "89"; Comprobante.Emisor.DomicilioFiscal.noInterior = "103"; Comprobante.Emisor.DomicilioFiscal.colonia = "Cuauhtemoc"; Comprobante.Emisor.DomicilioFiscal.localidad = "Ciudad de Mexico"; Comprobante.Emisor.DomicilioFiscal.municipio = "Cuauhtemoc"; Comprobante.Emisor.DomicilioFiscal.estado = "Distrito Federal"; Comprobante.Emisor.DomicilioFiscal.pais = "MEXICO"; Comprobante.Emisor.DomicilioFiscal.codigoPostal = "06500"; Comprobante.Emisor.ExpedidoEn.calle = "FRANCISCO PEREZ"; Comprobante.Emisor.ExpedidoEn.noExterior = "35"; Comprobante.Emisor.ExpedidoEn.noInterior = "1"; Comprobante.Emisor.ExpedidoEn.colonia = "RICARDO FLORES MAGON"; Comprobante.Emisor.ExpedidoEn.localidad = "VERACRUZ, VER."; Comprobante.Emisor.ExpedidoEn.municipio = "VERACRUZ"; Comprobante.Emisor.ExpedidoEn.estado = "Veracruz"; Comprobante.Emisor.ExpedidoEn.pais = "México"; Comprobante.Emisor.ExpedidoEn.codigoPostal = "91900"; //Llenado de datos del receptor Comprobante.Receptor.rfc = "FID080111867"; Comprobante.Receptor.nombre = "FREIGHTIDEAS S.A DE C.V."; Comprobante.Receptor.Domicilio.calle = "ARIZONA"; Comprobante.Receptor.Domicilio.noExterior = "108"; //Comprobante.Receptor.Domicilio.noInterior = "1"; Comprobante.Receptor.Domicilio.colonia = "COL. NAPOLES"; //Comprobante.Receptor.Domicilio.localidad = "TEOLOYUCAN"; Comprobante.Receptor.Domicilio.municipio = "Benito Juarez"; Comprobante.Receptor.Domicilio.estado = "Distrito Federal"; Comprobante.Receptor.Domicilio.pais = "MEXICO"; Comprobante.Receptor.Domicilio.codigoPostal = "03810"; //Crear un nuevo concepto FIGeneradorFacturaElectronica.Concepto Concepto1 = new FIGeneradorFacturaElectronica.Concepto(); Concepto1.cantidad = 1; Concepto1.descripcion = "Software"; Concepto1.valorUnitario = new FIGeneradorFacturaElectronica.Importe(1000); Concepto1.importe = new FIGeneradorFacturaElectronica.Importe(1000); //Concepto1.noIdentificacion = "PINO"; //nuevo en los conceptos Concepto1.unidad = "Pieza"; //ejemplo para agregar una cuenta predial al concepto //Concepto1.CuentaPredial="rur85859"; //ejemplo para agregarle informacion aduanera en el concepto FIGeneradorFacturaElectronica.t_InformacionAduanera informacionAduanera=new t_InformacionAduanera(); informacionAduanera.numero = "120"; informacionAduanera.fecha = System.DateTime.Now; informacionAduanera.numero = "234"; informacionAduanera.aduana = "AICM"; Parte parte=new Parte(); parte.InformacionAduanera.Add(informacionAduanera); parte.cantidad = 1; parte.descripcion = "Prueba"; Concepto1.Parte.Add(parte); //crear otro concepto FIGeneradorFacturaElectronica.Concepto Concepto2 = new FIGeneradorFacturaElectronica.Concepto(); Concepto2.cantidad=1; Concepto2.descripcion = "VALIDACION"; Concepto2.valorUnitario=new FIGeneradorFacturaElectronica.Importe(100); Concepto2.importe = new FIGeneradorFacturaElectronica.Importe(100); Concepto2.unidad = "No aplica"; //agregando complemento concepto al comprobante por order y cuenta de terceros AgregarComplementoterceros(Concepto2); //crear otro concepto FIGeneradorFacturaElectronica.Concepto Concepto3 = new FIGeneradorFacturaElectronica.Concepto(); Concepto3.cantidad = 1; Concepto3.descripcion = "Factura"; Concepto3.valorUnitario = new FIGeneradorFacturaElectronica.Importe(1.50); Concepto3.importe = new FIGeneradorFacturaElectronica.Importe(1.50); Concepto3.unidad = "Pieza"; //Invocamos a la muestra de como crear complemento iedu AgregarComplementoiedu(Concepto3); //Agregando los conceptos al comprobante Comprobante.Conceptos.Add(Concepto1); Comprobante.Conceptos.Add(Concepto2); Comprobante.Conceptos.Add(Concepto3); //totales de impuestos Comprobante.Impuestos.totalImpuestosRetenidos = new FIGeneradorFacturaElectronica.Importe(2317.44); Comprobante.Impuestos.totalImpuestosTrasladados = new FIGeneradorFacturaElectronica.Importe(176); //nuevo impuesto de tipo Traslado FIGeneradorFacturaElectronica.Traslado Traslado = new FIGeneradorFacturaElectronica.Traslado(); Traslado.impuesto = FIGeneradorFacturaElectronica.Traslado.TipoImpuesto.IVA; Traslado.tasa = new FIGeneradorFacturaElectronica.Importe(16); Traslado.importe = new FIGeneradorFacturaElectronica.Importe(176); //agregar el impuesto Comprobante.Impuestos.Traslados.Add(Traslado); //Nuevo impuesto tipo retencion FIGeneradorFacturaElectronica.Retencion Retencion = new FIGeneradorFacturaElectronica.Retencion(); Retencion.impuesto = FIGeneradorFacturaElectronica.Retencion.TipoImpuesto.IVA; Retencion.importe = new FIGeneradorFacturaElectronica.Importe(2317.44); //agregar retencion Comprobante.Impuestos.Retenciones.Add(Retencion); //invocamos a la muestra de como crear complemento de impuestos locales //AgregarComplementoImpuestosLocales(Comprobante); //Invocamos a la muestra de como crear complemento de donatarios //AgregarComplementoDonatarios(Comprobante); //nuevo objeto para la generacion del CFDI especificando el tipo FIGeneradorFacturaElectronica.Generador GenCFDI = new FIGeneradorFacturaElectronica.Generador(FIGeneradorFacturaElectronica.Generador.TipoFacturacion.CFDI); //Generar el nuevo comprobante y obtener el numero de errores List<String> Errores = GenCFDI.NuevoComprobante(Comprobante); //si el listado de errores es mayor a 1 quiere decir que existen un error y no puede generarse el preCFDI if(Errores.Count==0) { String PreCFDI=String.Empty; String ErroresPreCFDI = String.Empty; //generar el preCFDI si es correcto se regresa true y puede ahora timbrase if (GenCFDI.GenerarPreCFDI(PosicionCertificado + ArchivoKey, PosicionCertificado + ArchivoCertificado, ContraseñaCertificado,out PreCFDI,out ErroresPreCFDI)) { //Timbrando preCFDI String CFDITimbrado = String.Empty; //Conexion para timbrado FIGeneradorFacturaElectronica.Timbre Timbrado = new FIGeneradorFacturaElectronica.Timbre(); //Si Timbrar devuelve true quiere decir que el timbre esta generado y podemos obtener las informacion del timbre de sus metodos if (Timbrado.Timbrar(CodigoUsuarioProveedor, CodigoUsuario, IdSucursal, PreCFDI, Comprobante.total.Valor.ToString(), out CFDITimbrado,cbQR.Checked)) { String XMLTimbre = Timbrado.XMLTimbre; //nuestro timbre generado txtResultado.Text = CFDITimbrado; //nuestro CFDI ya timbrado txtUUID.Text = Timbrado.UUID; if (cbQR.Checked) pbQR.Image = Timbrado.QRImagen; //imagen QR lstErrores.Items.Clear(); lstErrores.Items.Add("Sin errores"); } else { lstErrores.Items.Clear(); lstErrores.DataSource = Timbrado.Errores; lstErrores.ValueMember = "Error"; } } else { lstErrores.Items.Clear(); lstErrores.Items.Add(ErroresPreCFDI); } } else { lstErrores.Items.Clear(); lstErrores.DataSource = Errores; } }