Arrastre para cambiar el tamaño
nomina12 (Clase)
Experiencia simple con el gobierno digital con productos fáciles de usar
Complemento para incorporar al Comprobante Fiscal Digital por Internet (CFDI) la información que ampara conceptos de ingresos por salarios, la prestación de un servicio personal subordinado o conceptos asimilados a salarios (Nómina).
Jerarquía de herencia
SystemObject
  EasyOne.Comprobante.Complementonomina12

Espacio de nombres:  EasyOne.Comprobante.Complemento
Ensamblado:  EasyOne (en EasyOne.dll) Versión: 1.0.0.0 (1.0)
Sintaxis
C#
public class nomina12

El tipo nomina12 expone a los siguientes miembros.

Métodos
  NombreDescripción
Método públicoMiembro estáticoEasyOne_nomina12_AddDeduccion
Nodo requerido para expresar la información detallada de una deducción.
Método públicoMiembro estáticoEasyOne_nomina12_AddHorasExtra
Nodo condicional para expresar las horas extra aplicables.
Método públicoMiembro estáticoEasyOne_nomina12_AddIncapacidad
Nodo requerido para expresar información de las incapacidades.
Método públicoMiembro estáticoEasyOne_nomina12_AddOtroPago
Nodo requerido para expresar la información detallada del otro pago.
Método públicoMiembro estáticoEasyOne_nomina12_AddPercepcion
Nodo requerido para expresar la información detallada de una percepción
Método públicoMiembro estáticoEasyOne_nomina12_AddSubContratacion
Nodo condicional para expresar la lista de las personas que los subcontrataron.
Método públicoMiembro estáticoEasyOne_nomina12_Create
Construye el objeto nomina12
Método públicoMiembro estáticoEasyOne_nomina12_Free
Libera los recursos usados por este objeto
Método públicoMiembro estáticoEasyOne_nomina12_SetAccionesOTitulos
Nodo condicional para expresar ingresos por acciones o títulos valor que representan bienes. Se vuelve requerido cuando existan ingresos por sueldos derivados de adquisición de acciones o títulos (Art. 94, fracción VII LISR).
Método públicoMiembro estáticoEasyOne_nomina12_SetCompensacionSaldosAFavor
Nodo condicional para expresar la información referente a la compensación de saldos a favor de un trabajador.
Método públicoMiembro estáticoEasyOne_nomina12_SetDeducciones
Nodo opcional para expresar las deducciones aplicables.
Método públicoMiembro estáticoEasyOne_nomina12_SetEmisor
Nodo condicional para expresar la información del contribuyente emisor del comprobante de nómina.
Método públicoMiembro estáticoEasyOne_nomina12_SetEntidadSNCF
Nodo condicional para que las entidades adheridas al Sistema Nacional de Coordinación Fiscal realicen la identificación del origen de los recursos utilizados en el pago de nómina del personal que presta o desempeña un servicio personal subordinado en las dependencias de la entidad federativa, del municipio o demarcación territorial de la Ciudad de México, así como en sus respectivos organismos autónomos y entidades paraestatales y paramunicipales
Método públicoMiembro estáticoEasyOne_nomina12_SetJubilacionPensionRetiro
Nodo condicional para expresar la información detallada de pagos por jubilación, pensiones o haberes de retiro.
Método públicoMiembro estáticoEasyOne_nomina12_SetNomina
Complemento para incorporar al Comprobante Fiscal Digital por Internet (CFDI) la información que ampara conceptos de ingresos por salarios, la prestación de un servicio personal subordinado o conceptos asimilados a salarios (Nómina).
Método públicoMiembro estáticoEasyOne_nomina12_SetPercepciones
Nodo condicional para expresar las percepciones aplicables.
Método públicoMiembro estáticoEasyOne_nomina12_SetReceptor
Nodo requerido para precisar la información del contribuyente receptor del comprobante de nómina.
Método públicoMiembro estáticoEasyOne_nomina12_SetSeparacionIndemnizacion
Nodo condicional para expresar la información detallada de otros pagos por separación.
Método públicoMiembro estáticoEasyOne_nomina12_SetSubsidioAlEmpleo
Nodo requerido para expresar la información referente al subsidio al empleo del trabajador.
Top
Ejemplos
Ejemplo C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace Consola.EasyOne
{
    class ConsolaEasyOne
    {

        #region wrappers cfd32
        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern int EasyOne_FirmaComprobante(int p, string csd, string key, string pwd);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern string EasyOne_LeeResultado(int p, int valor);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_SetInvoiceOneFachadaInfoPrueba(int p, string AgenteId, string SoftwareId);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern int EasyOne_cfdi32_Create(string outFile);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetComprobante(int p, string serie, string folio, string fecha, string formaDePago, string condicionesDePago, string subTotal, string descuento, string motivoDescuento, string TipoCambio, string Moneda, string total, string tipoDeComprobante, string metodoDePago, string LugarExpedicion, string NumCtaPago, string FolioFiscalOrig, string SerieFolioFiscalOrig, string FechaFolioFiscalOrig, string MontoFolioFiscalOrig);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetEmisor(int p, string rfc, string nombre);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetEmisorDomicilioFiscal(int p, string calle, string noExterior, string noInterior, string colonia, string localidad, string referencia, string municipio, string estado, string pais, string codigoPostal);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetEmisorExpedidoEn(int p, string calle, string noExterior, string noInterior, string colonia, string localidad, string referencia, string municipio, string estado, string pais, string codigoPostal);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_AddRegimenFiscal(int p, string Regimen);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetReceptor(int p, string rfc, string nombre);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetReceptorDomicilio(int p, string calle, string noExterior, string noInterior, string colonia, string localidad, string referencia, string municipio, string estado, string pais, string codigoPostal);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_AddConcepto(int p, string cantidad, string unidad, string noIdentificacion, string descripcion, string valorUnitario, string importe);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_AddInformacionAduanera(int p, string numero, string fecha, string aduana);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetCuentaPredial(int p, string numero);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_AddParte(int p, string cantidad, string unidad, string noIdentificacion, string descripcion, string valorUnitario, string importe);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_AddParteInformacionAduanera(int p, string numero, string fecha, string aduana);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_SetImpuestos(int p, string totalImpuestosRetenidos, string totalImpuestosTrasladados);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_AddRetencion(int p, string impuesto, string importe);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_AddTraslado(int p, string impuesto, string tasa, string importe);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi32_Free(int p);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_AddComplemento(int p, int pComp);
        #endregion


        #region wrappers Nomina

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern int EasyOne_nomina12_Create();

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetNomina(int p, string TipoNomina, string FechaPago, string FechaInicialPago, string FechaFinalPago, string NumDiasPagados, string TotalPercepciones, string TotalDeducciones, string TotalOtrosPagos);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetEmisor(int p, string Curp, string RegistroPatronal, string RfcPatronOrigen);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetEntidadSNCF(int p, string OrigenRecurso, string MontoRecursoPropio);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetReceptor(int p, string Curp, string NumSeguridadSocial, string FechaInicioRelLaboral, string Antigüedad, string TipoContrato, string Sindicalizado, string TipoJornada, string TipoRegimen, string NumEmpleado, string Departamento, string Puesto, string RiesgoPuesto, string PeriodicidadPago, string Banco, string CuentaBancaria, string SalarioBaseCotApor, string SalarioDiarioIntegrado, string ClaveEntFed);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_AddSubContratacion(int p, string RfcLabora, string PorcentajeTiempo);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetPercepciones(int p, string TotalSueldos, string TotalSeparacionIndemnizacion, string TotalJubilacionPensionRetiro, string TotalGravado, string TotalExento);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_AddPercepcion(int p, string TipoPercepcion, string Clave, string Concepto, string ImporteGravado, string ImporteExento);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetAccionesOTitulos(int p, string ValorMercado, string PrecioAlOtorgarse);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_AddHorasExtra(int p, string Dias, string TipoHoras, string HorasExtra, string ImportePagado);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetJubilacionPensionRetiro(int p, string TotalUnaExhibicion, string TotalParcialidad, string MontoDiario, string IngresoAcumulable, string IngresoNoAcumulable);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetSeparacionIndemnizacion(int p, string TotalPagado, string NumAñosServicio, string UltimoSueldoMensOrd, string IngresoAcumulable, string IngresoNoAcumulable);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetDeducciones(int p, string TotalOtrasDeducciones, string TotalImpuestosRetenidos);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_AddDeduccion(int p, string TipoDeduccion, string Clave, string Concepto, string Importe);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_AddOtroPago(int p, string TipoOtroPago, string Clave, string Concepto, string Importe);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetSubsidioAlEmpleo(int p, string SubsidioCausado);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_SetCompensacionSaldosAFavor(int p, string SaldoAFavor, string Año, string RemanenteSalFav);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_AddIncapacidad(int p, string DiasIncapacidad, string TipoIncapacidad, string ImporteMonetario);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_nomina12_Free(int p);

        #endregion


        static void Main(string[] args)
        {
            try
            {
                GeneraCFDI32();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

        }

        public static void GeneraCFDI32()
        {

            //Iniciamos creando el objeto cfdi3.2 e indicamos el nombre del archivo de salida "Ejemplo.xml"
            int p = EasyOne_cfdi32_Create("Ejemplo.xml");

            //Llenamos la sección del comprobante
            EasyOne_cfdi32_SetComprobante(p, "serie0", "folio0", "2017-01-27T10:13:51", "formaDePago0", "condicionesDePago0", "0.000000", "0.000000", "motivoDescuento0", "TipoCambio0", "Moneda0", "0.000000", "ingreso", "metodoDePago0", "LugarExpedicion0", "NumCtaPago0", "FolioFiscalOrig0", "SerieFolioFiscalOrig0", "2006-05-04T18:13:51.0", "0.000000");


            //Llenamos la sección del Emisor
            EasyOne_cfdi32_SetEmisor(p, "AAA010101AAA", "nombre0");

            //Llenamos la sección del Domicilio Fiscal del Emisor
            EasyOne_cfdi32_SetEmisorDomicilioFiscal(p, "calle0", "noExterior0", "noInterior0", "colonia0", "localidad0", "referencia0", "municipio0", "estado0", "pais0", "codig");

            //Llenamos la sección del Expedido en del Emisor
            EasyOne_cfdi32_SetEmisorExpedidoEn(p, "calle1", "noExterior1", "noInterior1", "colonia1", "localidad1", "referencia1", "municipio1", "estado1", "pais1", "codigoPostal2");

            //Agregamos un Regimen fiscal del Emisor

            EasyOne_cfdi32_AddRegimenFiscal(p, "Regimen0");

            //Llenamos la sección del Receptor
            EasyOne_cfdi32_SetReceptor(p, "AAA010101AAA", "nombre1");

            //Llenamos la sección del domicilio fiscal del Receptor
            EasyOne_cfdi32_SetReceptorDomicilio(p, "calle2", "noExterior2", "noInterior2", "colonia2", "localidad2", "referencia2", "municipio2", "estado2", "pais2", "codigoPostal3");

            //Agregamos los concepto

            EasyOne_cfdi32_AddConcepto(p, "0", "unidad0", "noIdentificacion0", "descripcion0", "0.000000", "0.000000");

            EasyOne_cfdi32_SetCuentaPredial(p, "numero0");

            //Agregamos los Impuestos
            EasyOne_cfdi32_SetImpuestos(p, "0.000000", "0.000000");

            EasyOne_cfdi32_AddRetencion(p, "ISR", "0.000000");

            EasyOne_cfdi32_AddTraslado(p, "IVA", "0.000000", "0.000000");

            // Creamos el objeto del complemento CFDIRegistroFiscal
            int nom = EasyOne_nomina12_Create();

            //Llenamos la seccion Nomina
            EasyOne_nomina12_SetNomina(nom, "O", "2006-05-04", "2006-05-04", "2006-05-04", "18080.000", "50.00", "50.00", "50.00");

            //Llenamos la seccion Emisor

            EasyOne_nomina12_SetEmisor(nom, "AAAA000101HASBBB00", "RegistroPatronal0", "&&&000101000");

            EasyOne_nomina12_SetEntidadSNCF(nom, "IP", "50.00");


            //Llenamos la seccion Receptor

            EasyOne_nomina12_SetReceptor(nom, "AAAA000101HASBBB00", "0", "2006-05-04", "P1W", "01", "Sí", "02", "03", "NumEmpleado0", "Departamento0", "Puesto0", "1", "01", "002", "987654321321", "50.00", "50.00", "AGU");

            EasyOne_nomina12_AddSubContratacion(nom, "&&&000101000", "50.00");


            //Llenamos la seccion Percepciones

            EasyOne_nomina12_SetPercepciones(nom, "50.00", "50.00", "50.00", "50.00", "50.00");

            EasyOne_nomina12_AddPercepcion(nom, "001", "Clave0", "Concepto0", "50.00", "50.00");

            EasyOne_nomina12_SetAccionesOTitulos(nom, "50.000000", "50.000000");

            EasyOne_nomina12_AddHorasExtra(nom, "50", "01", "50", "50.00");

            EasyOne_nomina12_SetJubilacionPensionRetiro(nom, "50.00", "50.00", "50.00", "50.00", "50.00");

            EasyOne_nomina12_SetSeparacionIndemnizacion(nom, "50.00", "50", "50.00", "50.00", "50.00");


            //Llenamos la seccion Deducciones

            EasyOne_nomina12_SetDeducciones(nom, "50.00", "50.00");

            EasyOne_nomina12_AddDeduccion(nom, "001", "Clave1", "Concepto1", "50.00");


            //Llenamos la seccion OtrosPagos

            EasyOne_nomina12_AddOtroPago(nom, "001", "Clave2", "Concepto2", "50.00");

            EasyOne_nomina12_SetSubsidioAlEmpleo(nom, "50.00");

            EasyOne_nomina12_SetCompensacionSaldosAFavor(nom, "50.00", "17391", "50.00");


            //Llenamos la seccion Incapacidades

            EasyOne_nomina12_AddIncapacidad(nom, "50", "01", "50.00");



            //Añadimos Complemento al CFDI
            EasyOne_AddComplemento(p, nom);

           //Enviamos el CFDI al metodo de PRUEBAS
           //En la siguiente línea es necesario incluir la Clave de Integración que se proporciona en la Guía de Implementación (Menú "Ayuda" de su Oficina Virtual).
           EasyOne_SetInvoiceOneFachadaInfoPrueba(p, "USAR_CLAVE_DE_INTEGRACION", "USAR_CLAVE_DE_INTEGRACION");

           //Para enviar el CFDI a PRODUCCION se debe quitar la linea de arriba y usar la siguiente linea descomentada.
           //En la siguiente línea es necesario incluir la Clave de Integración que se proporciona en la Guía de Implementación (Menú "Ayuda" de su Oficina Virtual).
           //EasyOne_SetInvoiceOneFachadaInfo(p, "USAR_CLAVE_DE_INTEGRACION", "USAR_CLAVE_DE_INTEGRACION");

           //En la siguiente línea se deben colocar los nombres de los archivos de certificado de sellos del Emisor.
           //Para fines de esta prueba se usarán los certificados de sellos del Emisor AAA010101AAA.
           //Favor de colocar estos archivos (.CER y .KEY) en la misma carpeta donde se encuentra la aplicación.
           int i = EasyOne_FirmaComprobante(p, "CSD01_AAA010101AAA.cer", "CSD01_AAA010101AAA.key", "12345678a");

            //Si el resultado es 0 = El CFDI se procesó correctamente
            if (i == 0)
            {
                string resultadoXML = String.Empty;

                //Obtenemos el XML completo y timbrado
                Console.WriteLine(resultadoXML = EasyOne_LeeResultado(p, 8));
            }
            else
            {
                //En caso de error mostrar el detalle.
                Console.WriteLine(EasyOne_LeeResultado(p, 11));
            }

            Console.ReadLine();

        }
    }
}
Vea también