Exemplo n.º 1
0
        private void AgregarComplementoImpuestosLocales(ComprobanteCFDI32 Comprobante)
        {
            //Codigo de ejemplo para crear complemento de impuestos locales

            FIGeneradorFacturaElectronica.Complementos.ImpuestosLocales ImpLoc = new FIGeneradorFacturaElectronica.Complementos.ImpuestosLocales();

            //Crear valores de impuesto local
            FIGeneradorFacturaElectronica.Complementos.TrasladosLocales TrasLoc = new FIGeneradorFacturaElectronica.Complementos.TrasladosLocales();
            TrasLoc.ImpLocTrasladado = "ISH";
            TrasLoc.TasadeTraslado   = new FIGeneradorFacturaElectronica.Complementos.ImporteImpuestosLocales(10);
            TrasLoc.Importe          = new FIGeneradorFacturaElectronica.Complementos.ImporteImpuestosLocales(120.25);


            //Agregar el traslado
            ImpLoc.TrasladosLocales.Add(TrasLoc);

            ImpLoc.TotaldeTraslados   = new FIGeneradorFacturaElectronica.Complementos.ImporteImpuestosLocales(120.25);
            ImpLoc.TotaldeRetenciones = new FIGeneradorFacturaElectronica.Complementos.ImporteImpuestosLocales(0);

            cErrores Errores = null;

            if (!Comprobante.Complementos.AgregarComplemento(ImpLoc, out Errores))
            {
                lstErrores.DataSource = Errores;
            }
        }
Exemplo n.º 2
0
        private void AgregarComplementoDonatarios(ComprobanteCFDI32 Comprobante)
        {
            FIGeneradorFacturaElectronica.Complementos.donat Donatarios = new FIGeneradorFacturaElectronica.Complementos.donat();

            Donatarios.fechaAutorizacion = System.DateTime.Now;
            Donatarios.leyenda           = "Donatarios leyenda";
            Donatarios.noAutorizacion    = "12545";

            String   XMLDonatarios = String.Empty;
            cErrores Errores       = null;

            if (!Comprobante.Complementos.AgregarComplemento(Donatarios, out Errores))
            {
                lstErrores.DataSource = Errores;
            }
        }
Exemplo n.º 3
0
        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";
            }
        }