La versión de su navegador no está debidamente actualizada. Le recomendamos actualizarla a la versión más reciente.

CFDi v4.0 2022Ya contamos con factura electrónica CFDi 4.0
con más de 20 ejemplos; descarga ya el KIT de desarrollo..

Ejemplo código fuente nomina con .net

Ejemplo código fuente nomina con .net

Publicado 27/08/2020

Recibos de Nómina .net

Los recibos de nómina son facturas electrónicas con el complemento de nómina; es decir, información adicional para los recibos con información propia por ejemplo número de seguro social, clave patronal, puesto, entre otros..

Ejemplo código fuente

 Contamos con varios métodos para generar el cfdi de nómina, te muestro fragmentos para lo alargar mucho esta publicación.

Podrás notas que la mayoria de lineas es pase de parametros y muy pocas en organizar los nodos.

Ejemplo en archivo INI (texto)

Este formato se utiliza para timbrar ejecutando linea de comandos o también por webservice en ambientes donde es difícil instalar el KIT de desarrollo por ejemplo en Hosting compartido con ASP

[receptor]
rfc=SOHM7509289MA
nombre=MIGUEL ANGEL SOSA HERNANDEZ
UsoCFDI=P01
[conceptos]
[conceptos.0]
cantidad=1.000
ClaveUnidad=ACT
ClaveProdServ=84111505
descripcion=Pago de nómina
valorunitario=500.00
importe=500.00
[nomina12]
TipoNomina=O
FechaPago=2016-10-31
FechaInicialPago=2016-10-16
FechaFinalPago=2016-10-31
NumDiasPagados=15
TotalPercepciones=500.00
TotalDeducciones=250.00
TotalOtrosPagos=0.00
[nomina12.Emisor]
RegistroPatronal=546879213
RfcPatronOrigen=AAA010101AAA
[nomina12.Receptor]
ClaveEntFed=JAL
Curp=CACF880922HJCMSR03
NumEmpleado=060
PeriodicidadPago=04
TipoContrato=01
TipoRegimen=02
Antiguedad=P21W
Banco=021
CuentaBancaria=1234567890
FechaInicioRelLaboral=2016-01-01
NumSeguridadSocial=04078873454
Puesto=Desarrollador
RiesgoPuesto=2
SalarioBaseCotApor=435.50
SalarioDiarioIntegrado=435.50
[nomina12.Percepciones]
TotalGravado=250.00
TotalExento=250.00
TotalSueldos=500.00
[nomina12.Percepciones.0]
TipoPercepcion=001
Clave=001
Concepto=Sueldos, Salarios Rayas y Jornales
ImporteGravado=250.00
ImporteExento=250.00
[nomina12.Percepciones.AccionesOTitulos]
ValorMercado=0.00
PrecioAlOtorgarse=0.00
[nomina12.Deducciones]
TotalOtrasDeducciones=150.00
TotalImpuestosRetenidos=100.00
[nomina12.Deducciones.0]
TipoDeduccion=002
Clave=001
Concepto=ISR
Importe=100.00

Ejemplo con CSharp

DLL compatible con .net, aqui un ejemplo de parámetros con csharp

            MFObject nomina = new MFObject("Nomina");
            nomina["TipoNomina"] = "O";
            nomina["FechaPago"] = "2016 - 10 - 31";
            nomina["FechaInicialPago"] = "2016-10-16";
            nomina["FechaFinalPago"] = "2016-10-31";
            nomina["NumDiasPagados"] = "15";
            nomina["TotalPercepciones"] = "7500.05";
            nomina["TotalDeducciones"] = "1234.09";
            nomina["TotalOtrosPagos"] = "0.0";
            //receptor de nómina
            MFObject nreceptor = new MFObject("Receptor");
            nreceptor["ClaveEntFed"] = "JAL";
            nreceptor["Curp"] = "CACF880922HJCMSR03";
            nreceptor["NumEmpleado"] = "060";
            nreceptor["PeriodicidadPago"] = "04";
            nreceptor["TipoContrato"] = "01";
            nreceptor["TipoRegimen"] = "02";
            nreceptor["Antigüedad"] = "P21W";
            nreceptor["Banco"] = "021";
            nreceptor["CuentaBancaria"] = "1234567890";
            nreceptor["Departamento"] = "";
            nreceptor["FechaInicioRelLaboral"] = "2016-06-01";
            nreceptor["NumSeguridadSocial"] = "04078873454";
            nreceptor["Puesto"] = "Desarrollador";
            nreceptor["RiesgoPuesto"] = "2";
            nreceptor["SalarioBaseCotApor"] = "435.50";
            nreceptor["SalarioDiarioIntegrado"] = "435.50";
            nreceptor["Sindicalizado"] = "";
            nreceptor["TipoJornada"] = "";

            //subcontratación
            MFObject subcontratacion = new MFObject("SubContratacion");
            subcontratacion["RfcLabora"] = "VOC990129I26";
            subcontratacion["PorcentajeTiempo"] = "100.00";
            nreceptor.AgregaSubnodo(subcontratacion);
            nomina.AgregaSubnodo(nreceptor);

            //emisor de nómina
            MFObject nemisor = new MFObject("Emisor");
            nemisor["RegistroPatronal"] = "5525665412";
            //Complemento NominaGobierno
            MFObject entidad = new MFObject("EntidadSNCF");
            entidad["OrigenRecurso"] = "IF";
            nemisor.AgregaSubnodo(entidad);
            nomina.AgregaSubnodo(nemisor);

            //percepciones de nómina
            MFObject npercepciones = new MFObject("Percepciones");
            npercepciones["TotalGravado"] = "7500.05";
            npercepciones["TotalExento"] = "0.00";
            npercepciones["TotalSueldos"] = "7500.05";
            npercepciones["TotalSeparacionIndemnizacion"] = "15000.00";
            npercepciones["TotalJubilacionPensionRetiro"] = "21300.00";
            MFObject nper0 = new MFObject("0");
            nper0["TipoPercepcion"] = "001";
            nper0["Clave"] = "001";
            nper0["Concepto"] = "Sueldos, Salarios Rayas y Jornales";
            nper0["ImporteGravado"] = "6250.05";
            nper0["ImporteExento"] = "0.00";
            MFObject nper1 = new MFObject("1");
            nper1["TipoPercepcion"] = "049";
            nper1["Clave"] = "014";
            nper1["Concepto"] = "Premios de asistencia";
            nper1["ImporteGravado"] = "625.00";
            nper1["ImporteExento"] = "0.00";
            MFObject nper2 = new MFObject("2");
            nper2["TipoPercepcion"] = "010";
            nper2["Clave"] = "013";
            nper2["Concepto"] = "Premios por puntualidad";
            nper2["ImporteGravado"] = "625.00";
            nper2["ImporteExento"] = "0.00";

            //Complemento horas extra
            MFObject horasextra = new MFObject("HorasExtra");
            MFObject hora0 = new MFObject("0");
            hora0["Dias"] = "2";
            hora0["TipoHoras"] = "01";
            hora0["HorasExtra"] = "8";
            hora0["ImportePagado"] = "105.70";
            MFObject hora1 = new MFObject("1");
            hora1["Dias"] = "1";
            hora1["TipoHoras"] = "02";
            hora1["HorasExtra"] = "6";
            hora1["ImportePagado"] = "1000.00";
            horasextra.AgregaSubnodo(hora0);
            horasextra.AgregaSubnodo(hora1);
            nper2.AgregaSubnodo(horasextra);
            MFObject percepcion3 = new MFObject("3");
            percepcion3["TipoPercepcion"] = "045";
            percepcion3["Clave"] = "045";
            percepcion3["Concepto"] = "Premios por puntualidad";
            percepcion3["ImporteGravado"] = "3000.00";
            percepcion3["ImporteExento"] = "0.00";
            //Complemento acciones
            MFObject acciones = new MFObject("AccionesOTitulos");
            acciones["ValorMercado"] = "1000.00";
            acciones["PrecioAlOtorgarse"] = "2000.00";
            percepcion3.AgregaSubnodo(acciones);
            npercepciones.AgregaSubnodo(nper0);
            npercepciones.AgregaSubnodo(nper1);
            npercepciones.AgregaSubnodo(nper2);
            npercepciones.AgregaSubnodo(percepcion3);
            //Complemento jubilación
            MFObject jubilacion = new MFObject("JubilacionPensionRetiro");
            jubilacion["IngresoAcumulable"] = "1000.00";
            jubilacion["IngresoNoAcumulable"] = "300.00";
            jubilacion["TotalUnaExhibicion"] = "20000.00";
            npercepciones.AgregaSubnodo(jubilacion);
            //Complemento separación
            MFObject separacion = new MFObject("SeparacionIndemnizacion");
            separacion["TotalPagado"] = "15000.00";
            separacion["NumAñosServicio"] = "3";
            separacion["UltimoSueldoMensOrd"] = "5000.00";
            separacion["IngresoAcumulable"] = "3000.00";
            separacion["IngresoNoAcumulable"] = "1000.00";
            npercepciones.AgregaSubnodo(separacion);
            nomina.AgregaSubnodo(npercepciones);
            //deducciones de nómina
            MFObject ndeducciones = new MFObject("Deducciones");
            ndeducciones["TotalOtrasDeducciones"] = "179.34";
            ndeducciones["TotalImpuestosRetenidos"] = "1054.75";
            MFObject nded0 = new MFObject("Nomina.Deducciones.0");
            nded0["TipoDeduccion"] = "002";
            nded0["Clave"] = "001";
            nded0["Concepto"] = "ISR";
            nded0["Importe"] = "1054.75";
            MFObject nded1 = new MFObject("1");
            nded1["TipoDeduccion"] = "001";
            nded1["Clave"] = "012";
            nded1["Concepto"] = "Seguridad social";
            nded1["Importe"] = "179.34";
            ndeducciones.AgregaSubnodo(nded0);
            ndeducciones.AgregaSubnodo(nded1);
            nomina.AgregaSubnodo(ndeducciones);
            //Complemento otros pagos
            MFObject pagos = new MFObject("OtrosPagos");
            MFObject pago0 = new MFObject("0");
            pago0["TipoOtroPago"] = "002";
            pago0["Clave"] = "012";
            pago0["Concepto"] = "Subsidio para el empleo";
            pago0["Importe"] = "5000.00";
            //Complemento subsidio
            MFObject subsidio = new MFObject("SubsidioAlEmpleo");
            subsidio["SubsidioCausado"] = "5000.00";

            //Compensación saldos a favor
            MFObject compensacion = new MFObject("CompensacionSaldosAFavor");
            compensacion["SaldoAFavor"] = "300.00";
            compensacion["Año"] = "2017";
            compensacion["RemanenteSalFav"] = "100.00";
            pago0.AgregaSubnodo(compensacion);
            pago0.AgregaSubnodo(subsidio);
            pagos.AgregaSubnodo(pago0);
            nomina.AgregaSubnodo(pagos);
            // Incapacidades
            MFObject incapacidades = new MFObject("Incapacidades");
            MFObject incapacidad0 = new MFObject("0");
            incapacidad0["DiasDeIncapacidad"] = "2";
            incapacidad0["TipoIncapacidad"] = "01";
            incapacidad0["ImporteMonetario"] = "300.00";
            incapacidades.AgregaSubnodo(incapacidad0);
            nomina.AgregaSubnodo(incapacidades);

Ejemplo con Visual Basic

        sdk = New MFSDK()

        sdk.Iniciales.Add("version_cfdi", "3.3")
        sdk.Iniciales.Add("complemento", "nomina12")
        sdk.Iniciales.Add("MODOINI", "DIVISOR")
        sdk.Iniciales.Add("cfdi", "C:\sdk2\timbrados\cfdi_ejemplo_factura_nomina" + ".xml")
        sdk.Iniciales.Add("xml_debug", "C:\sdk2\timbrados\sin_timbrar_ejemplo_factura_nomina" + ".xml")
        sdk.Iniciales.Add("remueve_acentos", "NO")
        sdk.Iniciales.Add("RESPUESTA_UTF8", "SI")
        sdk.Iniciales.Add("html_a_txt", "NO")

        Dim factura As New MFObject("factura")
        factura("serie") = "F"
        factura("folio") = "123"
        factura("fecha_expedicion") = DateTime.Now.ToString("s")
        factura("metodo_pago") = "PUE"
        factura("forma_pago") = "99"
        factura("tipocomprobante") = "N"
        factura("moneda") = "MXN"
        factura("tipocambio") = "1"
        factura("LugarExpedicion") = "27000"
        factura("RegimenFiscal") = "601"
        factura("subtotal") = "500.00"
        '100.00
        factura("descuento") = "0.00"
        factura("total") = "500.00"
        '100.00
        Dim cfdiRelacionados As New MFObject("CfdiRelacionados")
        Dim cfdirel As New MFObject("UUID")
        cfdiRelacionados("TipoRelacion") = "01"
        'Se pueden agregar varios relacionados con UUID
        cfdirel("0") = "9FB6ED1A-5F37-4FEF-980A-7F8C83B51894"
        cfdirel("1") = "4329C28A-FEDB-9016-754A-FACEB0041996"
        cfdiRelacionados.AgregaSubnodo(cfdirel)

        Dim emisor As New MFObject("emisor")
        'emisor["rfc"] = "LAN7008173R5";
        'emisor["nombre"] = "General";
        emisor("rfc") = "LAN7008173R5"
        emisor("nombre") = "CINDEMEX SA DE CV"
        emisor("RegimenFiscal") = "601"

        Dim receptor As New MFObject("receptor")
        receptor("rfc") = "SOHM7509289MA"
        receptor("nombre") = "MIGUEL ANGEL SOSA HERNANDEZ"
        receptor("UsoCFDI") = "P01"

        ' Concepto Normal
        Dim conceptos As New MFObject("conceptos")
        Dim concepto0 As New MFObject("0")
        concepto0("ClaveProdServ") = "84111505"
        concepto0("ClaveUnidad") = "ACT"
        concepto0("Cantidad") = "1"
        concepto0("Descripcion") = "Pago de nómina"
        concepto0("ValorUnitario") = "500.00"
        concepto0("Importe") = "500.00"

        conceptos.AgregaSubnodo(concepto0)

        Dim nomina As New MFObject("nomina12")
        nomina("TipoNomina") = "O"
        nomina("FechaPago") = "2016-10-31"
        nomina("FechaInicialPago") = "2016-10-16"
        nomina("FechaFinalPago") = "2016-10-31"
        nomina("NumDiasPagados") = "15"
        nomina("TotalPercepciones") = "500.00"
        nomina("TotalDeducciones") = "250.00"
        nomina("TotalOtrosPagos") = "0.0"
        'receptor de nómina
        Dim nreceptor As New MFObject("Receptor")
        nreceptor("ClaveEntFed") = "JAL"
        nreceptor("Curp") = "CACF880922HJCMSR03"
        nreceptor("NumEmpleado") = "060"
        nreceptor("PeriodicidadPago") = "04"
        nreceptor("TipoContrato") = "01"
        nreceptor("TipoRegimen") = "02"
        nreceptor("Antigüedad") = "P21W"
        nreceptor("Banco") = "021"
        nreceptor("CuentaBancaria") = "1234567890"
        nreceptor("FechaInicioRelLaboral") = "2016-06-01"
        nreceptor("NumSeguridadSocial") = "04078873454"
        nreceptor("Puesto") = "Desarrollador"
        nreceptor("RiesgoPuesto") = "2"
        nreceptor("SalarioBaseCotApor") = "435.50"
        nreceptor("SalarioDiarioIntegrado") = "435.50"
        nomina.AgregaSubnodo(nreceptor)

        'emisor de nómina
        Dim nemisor As New MFObject("Emisor")
        nemisor("RegistroPatronal") = "546879213"
        nomina.AgregaSubnodo(nemisor)

        'percepciones de nómina
        Dim npercepciones As New MFObject("Percepciones")
        npercepciones("TotalGravado") = "250.00"
        npercepciones("TotalExento") = "250.00"
        npercepciones("TotalSueldos") = "500.00"

        Dim nper0 As New MFObject("0")
        nper0("TipoPercepcion") = "001"
        nper0("Clave") = "001"
        nper0("Concepto") = "Sueldos, Salarios Rayas y Jornales"
        nper0("ImporteGravado") = "200.00"
        nper0("ImporteExento") = "250.00"
        Dim nper1 As New MFObject("1")
        nper1("TipoPercepcion") = "049"
        nper1("Clave") = "014"
        nper1("Concepto") = "Premios de asistencia"
        nper1("ImporteGravado") = "25.00"
        nper1("ImporteExento") = "0.00"
        Dim nper2 As New MFObject("2")
        nper2("TipoPercepcion") = "010"
        nper2("Clave") = "013"
        nper2("Concepto") = "Premios por puntualidad"
        nper2("ImporteGravado") = "25.00"
        nper2("ImporteExento") = "0.00"
        npercepciones.AgregaSubnodo(nper0)
        npercepciones.AgregaSubnodo(nper1)
        npercepciones.AgregaSubnodo(nper2)
        nomina.AgregaSubnodo(npercepciones)

        'deducciones de nómina
        Dim ndeducciones As New MFObject("Deducciones")
        ndeducciones("TotalOtrasDeducciones") = "150.00"
        ndeducciones("TotalImpuestosRetenidos") = "100.00"
        Dim nded0 As New MFObject("0")
        nded0("TipoDeduccion") = "002"
        nded0("Clave") = "001"
        nded0("Concepto") = "ISR"
        nded0("Importe") = "100.00"
        Dim nded1 As New MFObject("1")
        nded1("TipoDeduccion") = "001"
        nded1("Clave") = "012"
        nded1("Concepto") = "Seguridad social"
        nded1("Importe") = "150.00"
        ndeducciones.AgregaSubnodo(nded0)
        ndeducciones.AgregaSubnodo(nded1)
        nomina.AgregaSubnodo(ndeducciones)

        sdk.AgregaObjeto(PAC())
        sdk.AgregaObjeto(Conf())
        sdk.AgregaObjeto(factura)
        sdk.AgregaObjeto(cfdiRelacionados)
        sdk.AgregaObjeto(emisor)
        sdk.AgregaObjeto(receptor)
        sdk.AgregaObjeto(conceptos)
        sdk.AgregaObjeto(nomina)