Exemple #1
0
        private void btnCFDI_Click(object sender, EventArgs e)
        {
            //crear un nuevo comprobante CFDI para la version 3.3
            FacturaElectronica.CFDI33.Comprobante Comprobante = new FacturaElectronica.CFDI33.Comprobante(new FacturaElectronica.Certificado(PosicionCertificado + ArchivoCertificado, PosicionCertificado + ArchivoKey, ContraseñaCertificado));
            Comprobante.Serie = "MER";
            Comprobante.Folio = "8223"; //dato no obligatorio
            Comprobante.Fecha = System.DateTime.Now;

            Comprobante.SubTotal          = new FacturaElectronica.CFDI33.t_Importe(32700);
            Comprobante.Total             = new FacturaElectronica.CFDI33.t_Importe(58860);
            Comprobante.TipoDeComprobante = FacturaElectronica.CFDI33.c_TipoDeComprobante.I;

            Comprobante.TipoCambio = 1; // Solo porque PAX lo solicita a fuerzas

            Comprobante.Moneda    = FacturaElectronica.CFDI33.c_Moneda.MXN;
            Comprobante.Moneda    = FacturaElectronica.CFDI33.Comprobante.toMoneda("MXN");
            Comprobante.FormaPago = FacturaElectronica.CFDI33.Comprobante.toFormaPago("01");



            Comprobante.LugarExpedicion = "08500"; //solo Codigo postal



            //Campo nuevo en Emisor
            Comprobante.Emisor.RegimenFiscal = FacturaElectronica.CFDI33.c_RegimenFiscal.RegimenFiscal601;
            Comprobante.Emisor.RegimenFiscal = (FacturaElectronica.CFDI33.c_RegimenFiscal) 601;
            Comprobante.Emisor.RegimenFiscal = FacturaElectronica.CFDI33.Comprobante.ToRegimenFiscal("601");

            //Llenado de datos del emisor
            //Comprobante.Emisor.Rfc = new t_RFC(RFC); // El RFC fue llenado directamente desde el certificado
            Comprobante.Emisor.Nombre = "Emisor de prueba SA de CV";


            //Llenado de datos del receptor
            Comprobante.Receptor.Rfc    = new FacturaElectronica.CFDI33.t_RFC("LFB230312S22");
            Comprobante.Receptor.Nombre = "Receptor de prueba SA de CV";


            /* solo para extranjeros
             * Comprobante.Receptor.ResidenciaFiscal = c_Pais.USA;
             * Comprobante.Receptor.ResidenciaFiscal = LFFacturaElectronica.CFDI33.Comprobante.toPais("USA");
             */


            Comprobante.Receptor.UsoCFDI = FacturaElectronica.CFDI33.c_UsoCFDI.G01;
            Comprobante.Receptor.UsoCFDI = FacturaElectronica.CFDI33.Comprobante.toUsoCFDI("G01");
            //Comprobante.Receptor.Domicilio.codigoPostal = "03810";


            //Crear un nuevo concepto
            FacturaElectronica.CFDI33.ComprobanteConcepto Concepto1 = new FacturaElectronica.CFDI33.ComprobanteConcepto();
            Concepto1.Cantidad      = 1;
            Concepto1.Descripcion   = "Software";
            Concepto1.ValorUnitario = new FacturaElectronica.CFDI33.t_Importe(1000);
            Concepto1.Importe       = new FacturaElectronica.CFDI33.t_Importe(1000);

            Concepto1.ClaveUnidad = FacturaElectronica.CFDI33.c_ClaveUnidad.ClaveUnidad_KGM; // Kilogramos
            Concepto1.ClaveUnidad = FacturaElectronica.CFDI33.Comprobante.toClaveUnidad("KGM");
            //Concepto1.Unidad = "Servicio"; // Especificamos unidad manualmente


            Concepto1.ClaveProdServ = FacturaElectronica.CFDI33.c_ClaveProdServ.ClaveProdServ_43231500;
            Concepto1.ClaveProdServ = (FacturaElectronica.CFDI33.c_ClaveProdServ) 43231500;
            Concepto1.ClaveProdServ = FacturaElectronica.CFDI33.Comprobante.toClaveProdServ("43231500");

            Concepto1.Impuestos           = new FacturaElectronica.CFDI33.ComprobanteConceptoImpuestos();
            Concepto1.Impuestos.Traslados = new List <FacturaElectronica.CFDI33.ComprobanteConceptoImpuestosTraslado>();

            FacturaElectronica.CFDI33.ComprobanteConceptoImpuestosTraslado TrasladoConcepto = new FacturaElectronica.CFDI33.ComprobanteConceptoImpuestosTraslado();
            TrasladoConcepto.Base = 1000;

            TrasladoConcepto.Impuesto = FacturaElectronica.CFDI33.c_Impuesto.IVA;
            //TrasladoConcepto.Impuesto = FacturaElectronica.CFDI33.Comprobante.toImpuesto("IVA"); // mediante texto

            TrasladoConcepto.TipoFactor = FacturaElectronica.CFDI33.c_TipoFactor.Tasa;
            //TrasladoConcepto.TipoFactor = FacturaElectronica.CFDI33.Comprobante.toTipoFactor("Tasa"); // mediante texto

            /*----------------- Tasa o cuota -----------------*/
            TrasladoConcepto.TasaOCuota = 16;

            /*TrasladoConcepto.TasaOCuota = LFFacturaElectronica.CFDI33.Comprobante.toTasaOCuota("0.160000");
             * TrasladoConcepto.TasaOCuota = (c_TasaOCuota) 16;*/


            TrasladoConcepto.Importe = new FacturaElectronica.CFDI33.t_Importe(160);

            Concepto1.Impuestos.Traslados.Add(TrasladoConcepto);

            Comprobante.Impuestos           = new FacturaElectronica.CFDI33.ComprobanteImpuestos();
            Comprobante.Impuestos.Traslados = new List <FacturaElectronica.CFDI33.ComprobanteImpuestosTraslado>();

            Comprobante.Impuestos.TotalImpuestosTrasladados = new FacturaElectronica.CFDI33.t_Importe(160);

            Comprobante.Conceptos.Add(Concepto1);

            FacturaElectronica.CFDI33.ComprobanteImpuestosTraslado Traslado = new FacturaElectronica.CFDI33.ComprobanteImpuestosTraslado();
            Traslado.Impuesto = FacturaElectronica.CFDI33.c_Impuesto.IVA;
            //Traslado.Impuesto = FacturaElectronica.CFDI33.Comprobante.toImpuesto("IVA"); // mediante texto

            Traslado.TipoFactor = FacturaElectronica.CFDI33.c_TipoFactor.Tasa;
            //Traslado.TipoFactor = FacturaElectronica.CFDI33.Comprobante.toTipoFactor("Tasa"); // mediante texto

            /*----------------- Tasa o cuota -----------------*/
            Traslado.TasaOCuota = FacturaElectronica.CFDI33.c_TasaOCuota.TasaOCuota_16;

            /*Traslado.TasaOCuota = FacturaElectronica.CFDI33.Comprobante.toTasaOCuota("0.160000"); // mediante valores
             * Traslado.TasaOCuota = (FacturaElectronica.CFDI33.c_TasaOCuota)16;*/


            Traslado.Importe = new FacturaElectronica.CFDI33.t_Importe(160);

            Comprobante.Impuestos.Traslados.Add(Traslado);

            List <String> Errores;
            String        XML;

            txtXML.Text = String.Empty;

            /*
             * LFFacturaElectronica.CFDI33.Complementos.Pagos Pagos = new LFFacturaElectronica.CFDI33.Complementos.Pagos();
             *
             * LFFacturaElectronica.CFDI33.Complementos.PagosPago Pago = new LFFacturaElectronica.CFDI33.Complementos.PagosPago();
             * Pago.FechaPago=System.DateTime.Now;
             * Pago.FormaDePagoP = (c_FormaPago) 6;
             * Pago.MonedaP = c_Moneda.MXN;
             * Pago.Monto = new t_Importe(10000);
             * Pago.RfcEmisorCtaOrd = Comprobante.Receptor.Rfc;
             * Pago.CtaOrdenante = "1234567890";
             *
             * Pagos.Pago.Add(Pago);
             *
             * Comprobante.Pagos = Pagos;*/

            Comprobante.Nomina = new FacturaElectronica.CFDI33.Complementos.Nomina12.Nomina();
            Comprobante.Nomina.FechaFinalPago    = new DateTime(2020, 1, 15, 0, 0, 0);
            Comprobante.Nomina.FechaInicialPago  = new DateTime(2020, 01, 01, 0, 0, 0);
            Comprobante.Nomina.FechaPago         = new DateTime(2020, 01, 15, 0, 0, 0);
            Comprobante.Nomina.NumDiasPagados    = new decimal(15.208);
            Comprobante.Nomina.TipoNomina        = FacturaElectronica.CFDI33.Complementos.Nomina12.c_TipoNomina.O;
            Comprobante.Nomina.TotalDeducciones  = new decimal(1151.13);
            Comprobante.Nomina.TotalOtrosPagos   = new decimal(84.37);
            Comprobante.Nomina.TotalPercepciones = new decimal(1873.97);

            Comprobante.Nomina.Emisor = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaEmisor();
            Comprobante.Nomina.Emisor.RegistroPatronal = "Y6653628104";

            Comprobante.Nomina.Receptor                        = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaReceptor();
            Comprobante.Nomina.Receptor.Antigüedad             = "P15W";
            Comprobante.Nomina.Receptor.Banco                  = FacturaElectronica.CFDI33.Complementos.Nomina12.c_Banco.Banco014;
            Comprobante.Nomina.Receptor.ClaveEntFed            = FacturaElectronica.CFDI33.Complementos.Nomina12.c_Estado.DIF;
            Comprobante.Nomina.Receptor.Curp                   = "HEPN701115MDFRRR06";
            Comprobante.Nomina.Receptor.Departamento           = "ADMINISTRACION";
            Comprobante.Nomina.Receptor.FechaInicioRelLaboral  = new DateTime(2019, 10, 01, 0, 0, 0);
            Comprobante.Nomina.Receptor.NumEmpleado            = "8";
            Comprobante.Nomina.Receptor.NumSeguridadSocial     = "39907010506";
            Comprobante.Nomina.Receptor.PeriodicidadPago       = FacturaElectronica.CFDI33.Complementos.Nomina12.c_PeriodicidadPago.Periodo04;
            Comprobante.Nomina.Receptor.Puesto                 = "AUXILIAR";
            Comprobante.Nomina.Receptor.RiesgoPuesto           = FacturaElectronica.CFDI33.Complementos.Nomina12.c_RiesgoPuesto.Riesgo1;
            Comprobante.Nomina.Receptor.SalarioBaseCotApor     = new decimal(128.79);
            Comprobante.Nomina.Receptor.SalarioDiarioIntegrado = new decimal(128.79);
            Comprobante.Nomina.Receptor.Sindicalizado          = FacturaElectronica.CFDI33.Complementos.Nomina12.NominaReceptorSindicalizado.No;
            Comprobante.Nomina.Receptor.TipoContrato           = FacturaElectronica.CFDI33.Complementos.Nomina12.c_TipoContrato.TipoContrato01;
            Comprobante.Nomina.Receptor.TipoJornada            = FacturaElectronica.CFDI33.Complementos.Nomina12.c_TipoJornada.TipoJornada01;
            Comprobante.Nomina.Receptor.TipoRegimen            = FacturaElectronica.CFDI33.Complementos.Nomina12.c_TipoRegimen.TipoRegimen02;

            Comprobante.Nomina.Percepciones              = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaPercepciones();
            Comprobante.Nomina.Percepciones.TotalExento  = 0;
            Comprobante.Nomina.Percepciones.TotalGravado = new decimal(1873.97);
            Comprobante.Nomina.Percepciones.TotalSueldos = new decimal(1873.97);

            FacturaElectronica.CFDI33.Complementos.Nomina12.NominaPercepcionesPercepcion percepcion = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaPercepcionesPercepcion();
            percepcion.Clave          = "P001";
            percepcion.Concepto       = "SUELDO";
            percepcion.ImporteExento  = 0;
            percepcion.ImporteGravado = new decimal(1873.97);
            percepcion.TipoPercepcion = FacturaElectronica.CFDI33.Complementos.Nomina12.c_TipoPercepcion.TipoPercepcion001;
            Comprobante.Nomina.Percepciones.Percepcion.Add(percepcion);

            Comprobante.Nomina.Deducciones = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaDeducciones();
            Comprobante.Nomina.Deducciones.TotalOtrasDeducciones = new decimal(1151.13);
            FacturaElectronica.CFDI33.Complementos.Nomina12.NominaDeduccionesDeduccion deduccion = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaDeduccionesDeduccion();
            deduccion.Clave         = "D094";
            deduccion.Concepto      = "CREDITO INFONAVIT";
            deduccion.Importe       = new decimal(1151.13);
            deduccion.TipoDeduccion = FacturaElectronica.CFDI33.Complementos.Nomina12.c_TipoDeduccion.TipoDeduccion010;
            Comprobante.Nomina.Deducciones.Deduccion.Add(deduccion);

            FacturaElectronica.CFDI33.Complementos.Nomina12.NominaOtroPago otropago = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaOtroPago();
            otropago.Clave            = "D100";
            otropago.Concepto         = "SUBSIDIO PARA EL EMPLEO";
            otropago.Importe          = new decimal(84.37);
            otropago.TipoOtroPago     = FacturaElectronica.CFDI33.Complementos.Nomina12.c_TipoOtroPago.TipoOtroPago002;
            otropago.SubsidioAlEmpleo = new FacturaElectronica.CFDI33.Complementos.Nomina12.NominaOtroPagoSubsidioAlEmpleo();
            otropago.SubsidioAlEmpleo.SubsidioCausado = new decimal(191.33);
            Comprobante.Nomina.OtrosPagos             = new List <FacturaElectronica.CFDI33.Complementos.Nomina12.NominaOtroPago>();
            Comprobante.Nomina.OtrosPagos.Add(otropago);

            string Error;

            Comprobante.Nomina.GenerarXML(out XML, out Error);

            if (Comprobante.GenerarPreCFDI(out XML, out Errores, true))
            {
                txtXML.Text  = XML;
                ComprobanteT = Comprobante;
            }
        }
Exemple #2
0
        private void btnCargar_Click(object sender, EventArgs e)
        {
            List <string> Errores;

            FacturaElectronica.CFDI33.Comprobante Comprobante = FacturaElectronica.CFDI33.Comprobante.CargarXMLCFDI(txtXML.Text, out Errores, true);
        }