Arrastre para cambiar el tamaño
EasyNomina (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).

Nota Nota
A partir del 1 de enero es necesario emitir la factura con nuevos datos, por lo que la aplicación para generar la nómina se actualiza. Como una facilidad los patrones tendrán tres meses más para actualizar sus sistemas y realizar la emisión de la nómina digital con las nuevas actualizaciones, a partir del 1 de abril de 2017. Entre más rápido conozcas los cambios, más fácil será cumplir.

Jerarquía de herencia
SystemObject
  EasyOne.ComprobanteEasyNomina

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

El tipo EasyNomina expone a los siguientes miembros.

Métodos
  NombreDescripción
Método públicoMiembro estáticoEasyOne_nd_AddDeduccion
Método para expresar las deducciones aplicables.
Método públicoMiembro estáticoEasyOne_nd_AddDeduccionIncapacidad
Método para expresar información de las incapacidades.
Método públicoMiembro estáticoEasyOne_nd_AddOtros
Método para expresar la información detallada del otro pago.
Método públicoMiembro estáticoEasyOne_nd_AddOtrosCompensacion
Método para expresar la información referente a la compensación de saldos a favor de un trabajador.
Método públicoMiembro estáticoEasyOne_nd_AddOtrosSubsidioParaEmpleo
Método para expresar la información referente al subsidio al empleo del trabajador.
Método públicoMiembro estáticoEasyOne_nd_AddPercepcion
Método para expresar la información detallada de una percepción
Método públicoMiembro estáticoEasyOne_nd_AddPercepcionAccionesOTitulos
Método 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_nd_AddPercepcionHorasExtra
Método para expresar las horas extra aplicables.
Método públicoMiembro estáticoEasyOne_nd_AddPercepcionSeparacion
Método para expresar la percepción de otros pagos por separación.
Método públicoMiembro estáticoEasyOne_nd_AddPercepcionSubsidioIncapacidad
Método para expresar la información referente al subsidio por incapacidad.
Método públicoMiembro estáticoEasyOne_nd_AddSubContratacionTercero
Método para agregar la iformación de la empresa que subcontrata
Método públicoMiembro estáticoEasyOne_nd_Create
Construye el objeto on
Método públicoMiembro estáticoEasyOne_nd_Free
Libera los recursos usados por este objeto
Método públicoMiembro estáticoEasyOne_nd_SetClabe
Método para la expresión de la cuenta bancaria a 11 posiciones o número de teléfono celular a 10 posiciones o número de tarjeta de crédito, débito o servicios a 15 ó 16 posiciones o la CLABE a 18 posiciones o número de monedero electrónico, donde se realiza el depósito de nómina.
Método públicoMiembro estáticoEasyOne_nd_SetEmisorPersonaFisica
Método para agregar información del emisor cuando es persona física
Método públicoMiembro estáticoEasyOne_nd_SetEmisorPersonaMoral
Método para agregar información del emisor cuando es persona moral
Método públicoMiembro estáticoEasyOne_nd_SetExtraordinaria
Método para la generación de un recibo de nómina de tipo extraordinaria
Método públicoMiembro estáticoEasyOne_nd_SetIngresosMixtos
Método para expresar el monto del recurso pagado con cargo a sus participaciones u otros ingresos locales (importe bruto de los ingresos propios, es decir total de gravados y exentos), cuando el origen es mixto.
Método públicoMiembro estáticoEasyOne_nd_SetNominaDigital
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_nd_SetOrdinariaLaboral
Método para la generación de un recibo de nómina de tipo ordinario laboral
Método públicoMiembro estáticoEasyOne_nd_SetOrdinariaNoLaboral
Método para la generación de un recibo de nómina de tipo ordinario no laboral
Método públicoMiembro estáticoEasyOne_nd_SetOtro
Método para expresar el banco y la expresión de la cuenta bancaria a 11 posiciones o número de teléfono celular a 10 posiciones o número de tarjeta de crédito, débito o servicios a 15 ó 16 posiciones o la CLABE a 18 posiciones o número de monedero electrónico, donde se realiza el depósito de nómina.
Método públicoMiembro estáticoEasyOne_nd_SetOtrosIngresos
Método para identificar el origen del recurso utilizado para el pago de nómina del personal que presta o desempeña un servicio personal subordinado o asimilado a salarios en las dependencias.
Método públicoMiembro estáticoEasyOne_nd_SetPercepcionJubilacionParcial
Método para expresar la información detallada de pagos por jubilación parcial
Método públicoMiembro estáticoEasyOne_nd_SetPercepcionJubilacionTotal
Método para expresar la información detallada de pagos por jubilación total
Método públicoMiembro estáticoEasyOne_nd_SetReceptor
Método para llenar la información del Receptor de comrpobante de nómina
Método públicoMiembro estáticoEasyOne_nd_SetSeparacionInfo
Método para expresar la información detallada de otros pagos por separación.
Top
Observaciones

A continuación se describen las validaciones que se realizan al comprobante de nómina:

Reglas de validación para CFDI versión 3.2 que incluyan el complemento de Nómina 1.2

  • El atributo fecha, Debe cumplir con el patrón (20[1-9][0-9])-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]).
  • El atributo metodoDePago Debe tener el valor “NA”.
  • El atributo noCertificado, Debe cumplir con el patrón [0-9]{20}.
  • El atributo Moneda, Se debe registrar el valor MXN.
  • El atributo TipoCambio puede omitirse pero si se incluye deberá tener el valor "1".
  • El valor del atributo subTotal, debe registrar la suma de los atributos Nomina12:TotalPercepciones más Nomina12:TotalOtrosPagos.
  • El atributo descuento, debe registrar el valor del campo Nomina12:TotalDeducciones.
  • El atributo total, Debe cumplir con el patrón [0-9]{1,18}(.[0-9]{1,2})?.
  • El atributo total, Debe ser igual a la suma de Nomina12:TotalPercepciones más Nomina12:TotalOtrosPagos menos Nomina12:TotalDeducciones.
  • El atributo tipoDeComprobante El valor registrado debe ser “egreso”.
  • El atributo LugarExpedicion, Debe cumplir con el patrón [0-9]{5} que indique el código postal del lugar de expedición del comprobante (domicilio de la matriz o de la sucursal) de acuerdo con el catálogo c_CodigoPostal que se publica en la página de internet del SAT.
  • Los atributos motivoDescuento, NumCtaPago, condicionesDePago, SerieFolioFiscalOrig, FechaFolioFiscalOrig, MontoFolioFiscalOrig no deben existir.
  • Si el atributo Comprobante.Emisor.rfc contiene una longitud de 12 posiciones (RFC de persona moral), entonces no debe existir el atributo Nomina12:Emisor:Curp.
  • Si el atributo Comprobante.Emisor.rfc contiene una longitud de 13 posiciones (RFC de persona física), entonces debe existir el atributo Nomina12:Emisor:Curp.
  • Si el atributo Comprobante.Emisor.rfc se encuentra registrado en el listado de RFC inscritos en el SAT con marca de subcontratación se debe registrar el nodo Subcontratacion.
  • Los elementos cfdi:Comprobante.Emisor.DomicilioFiscal y ExpedidoEn No deben existir.
  • El nodo cfdi:Comprobante.Emisor.Emisor.RegimenFiscal Debe existir, solo un nodo.
  • El atributo Regimen, Debe contener una clave del catálogo c_RegimenFiscal publicado en la página del SAT.
  • Si el atributo Comprobante.Emisor.rfc contiene una longitud de 12 posiciones (RFC de persona moral), entonces el atributo Regimen debe contener una clave de acuerdo al tipo de Persona moral.
  • Si el atributo Comprobante.Emisor.rfc contiene una longitud de 13 posiciones (RFC de persona física), entonces el atributo Regimen debe contener una clave de acuerdo al tipo de Persona física.
  • El atributo cfdi:Comprobante.Receptor.rfc Debe ser de persona física.
  • El atributo cfdi:Comprobante.Receptor.rfc, El RFC debe estar en la lista de los RFC inscritos no cancelados en el SAT. (l_RFC).
  • El nodo cfdi:Comprobante.Receptor.Domicilio, No debe existir.
  • El nodo cfdi:Comprobante.Conceptos.Concepto.
  • Si versión del CFDI = 3.2 entonces en el atributo cfdi:Comprobante.Conceptos.Concepto.noIdentificacion, No debe registrarse.
  • Si versión del CFDI = 3.2 entonces en el atributo cfdi:Comprobante.Conceptos.Concepto.cantidad, se debe registrar el valor “1”.
  • Si versión del CFDI = 3.2 entonces en el atributo cfdi:Comprobante.Conceptos.Concepto.unidad, debe registrar el valor “ACT”.
  • Si versión del CFDI = 3.2 entonces en el atributo cfdi:Comprobante.Conceptos.Concepto.descripcion, debe registrar el valor “Pago de nómina”.
  • Si versión del CFDI = 3.2 entonces en el atributo cfdi:Comprobante.Conceptos.Concepto.valorUnitario, Debe registrar la suma de los atributos TotalPercepciones más TotalOtrosPagos.
  • Si versión del CFDI = 3.2 entonces en el atributo cfdi:Comprobante.Conceptos.Concepto.Importe, Debe registrar la suma de los atributos TotalPercepciones más TotalOtrosPagos.
  • El nodo cfdi:Comprobante.Impuestos Se debe registrar como o .

Reglas de validación para el complemento de Nómina 1.2

  • El nodo Nomina se debe registrar como un nodo hijo del nodo Complemento en el CFDI.
  • En el nodo Nomina, debe existir el atributo TotalPercepciones o TotalOtrosPagos, o ambos.
  • El atributo Nomina.TipoNomina debe ser una clave del catálogo c_TipoNomina.
  • Si el atributo Nomina.TipoNomina es ordinaria el tipo de periodicidad de pago debe ser del 01 al 09.
  • Si el atributo Nomina.TipoNomina es extraordinaria el tipo de periodicidad de pago debe ser 99.
  • El atributo Nomina.FechaInicialPago debe ser menor o igual al valor del atributo FechaFinalPago.
  • Si el nodo percepciones no existe, el atributo Nomina.TotalPercepciones no debe existir.
  • Si el nodo percepciones existe, el valor de Nomina.TotalPercepciones debe ser igual a la suma de los atributos TotalSueldos más TotalSeparacionIndemnizacion más TotalJubilacionPensionRetiro del nodo Percepciones.
  • Si el nodo Deducciones no existe, el valor de Nomina.TotalDeducciones , no debe existir.
  • Si el nodo Deducciones existe, el valor de Nomina.TotalDeducciones debe ser igual a la suma de los atributos TotalOtrasDeducciones más TotalImpuestosRetenidos del elemento Deducciones.
  • Si el nodo OtrosPagos existe, el atributo Nomina.TotalOtrosPagos debe existir y su valor debe ser igual a la suma de los atributos Importe de los nodos nomina12:OtrosPagos:OtroPago.
  • El atributo Nomina.Emisor.RfcPatronOrigen debe estar inscrito no cancelado en el SAT (l_RFC).
  • Si el atributo TipoContrato está entre 01 al 08, el atributo Nomina.Emisor.RegistroPatronal debe existir.
  • Si el atributo TipoContrato tiene el valor 09, 10 ó 99, el atributo Nomina.Emisor.RegistroPatronal no debe existir.
  • Si atributo Nomina.Emisor.RegistroPatronal existe, entonces deben existir los atributos nomina12:Receptor: NumSeguridadSocial, nomina12:Receptor:FechaInicioRelLaboral, nomina12:Receptor:Antigüedad, nomina12:Receptor:RiesgoPuesto y nomina12:Receptor:SalarioDiarioIntegrado.
  • Si el RFC del emisor existe en el listado de RFC inscritos no cancelados en el SAT (l_RFC) con marca de unidad adherida al Sistema Nacional de Coordinación Fiscal, el nodo Nomina.Emisor.EntidadSNCF debe existir.
  • Si el RFC del emisor existe en el listado de RFC inscritos no cancelados en el SAT (l_RFC) sin marca de unidad adherida al Sistema Nacional de Coordinación Fiscal, el nodo Nomina.Emisor.EntidadSNCF no debe existir.
  • El atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso debe ser una clave del catálogo c_OrigenRecurso publicado en el portal del SAT en internet.
  • El atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso Si el valor registrado corresponde a la clave IM (Ingresos Mixtos), el atributo MontoRecursoPropio debe existir.
  • El atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso Si el valor registrado es diferente a la clave IM (Ingresos Mixtos), el atributo MontoRecursoPropio no debe existir.
  • El atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio debe ser menor que la suma de los valores de los atributos TotalPercepciones y TotalOtrosPagos.
  • El atributo Nomina.Receptor.TipoContrato debe ser una clave del catálogo c_TipoContrato publicado en el portal del SAT en internet.
  • El atributo Nomina.Receptor.TipoJornada debe ser una clave del catálogo de c_TipoJornada publicado en el portal del SAT en internet.
  • El atributo Nomina.Receptor.FechaInicioRelLaboral, debe ser menor o igual al atributo FechaFinalPago.
  • Si el atributo Nomina.Receptor.Antigüedad tiene el patrón P[1-9][0-9]{0,3}W, entonces el valor numérico del atributo Nomina.Receptor.Antigüedad, debe ser menor o igual al cociente de (la suma del número de días transcurridos entre la FechaInicioRelLaboral y la FechaFinalPago más uno) dividido entre siete.
  • Si el atributo Nomina.Receptor.Antigüedad tiene el patrón P(([1-9][0-9]?Y)?([1-9]|1[012])M)?([0]|[1-9]|[12][0-9]|3[01])D, entonces el valor registrado debe corresponder con el número de años, meses y días transcurridos entre la FechaInicioRelLaboral y la FechaFinalPago.
  • El atributo Nomina.Receptor.TipoRegimen debe ser una clave del catálogo de c_TipoRegimen publicado en el portal del SAT en internet.
  • Si el atributo TipoContrato tiene una clave entre los valores 01 y 08 del catálogo c_TipoContrato entonces el atributo Nomina.Receptor.TipoRegimen debe ser 02, 03 ó 04.
  • Si el atributo TipoContrato tiene un valor 09 ó superior entonces el atributo Nomina.Receptor.TipoRegimen debe ser 05 hasta el 99.
  • El atributo RiesgoPuesto debe ser una clave del catálogo de c_RiesgoPuesto publicado en el portal del SAT en internet.
  • El atributo PeriodicidadPago debe ser una clave del catálogo de c_PeriodicidadPago publicado en el portal del SAT en internet.
  • El atributo Banco debe ser una clave del catálogo de c_Banco publicado en el portal del SAT en internet.
  • El atributo CuentaBancaria debe tener una longitud de 10, 11, 16 ó 18 posiciones.
  • Si se registra una cuenta CLABE (número con 18 posiciones), el atributo Banco no debe existir.
  • Se debe confirmar que el dígito de control es correcto.
  • Si se registra una cuenta de tarjeta de débito a 16 posiciones o una cuenta bancaria a 11 posiciones o un número de teléfono celular a 10 posiciones, debe existir el banco.
  • El valor del atributo ClaveEntFed debe ser una clave del catálogo de c_Estado, donde la clave de país es MEX.
  • El valor del atributo Nomina.Receptor.SubContratacion.RfcLabora debe existir en la lista de RFC inscritos no cancelados en el SAT (l_RFC).
  • El valor del atributo Nomina.Receptor.SubContratacion.PorcentajeTiempo La suma de los valores PorcentajeTiempo registrados debe ser igual a 100.
  • En el elemento Nomina.Percepciones , La suma de los valores de los atributos TotalSueldos más TotalSeparacionIndemnizacion más TotalJubilacionPensionRetiro debe ser igual a la suma de los valores de los atributos TotalGravado más TotalExento.
  • El valor del atributo Nomina.Percepciones.TotalSueldos , debe ser igual a la suma de los atributos ImporteGravado e ImporteExento donde la clave expresada en el atributo TipoPercepcion sea distinta de 022 Prima por Antigüedad, 023 Pagos por separación, 025 Indemnizaciones, 039 Jubilaciones, pensiones o haberes de retiro en una exhibición y 044 Jubilaciones, pensiones o haberes de retiro en parcialidades.
  • El valor del atributo Nomina.Percepciones.TotalSeparacionIndemnizacion, debe ser igual a la suma de los atributos ImporteGravado e ImporteExento donde la clave expresada en el atributo TipoPercepcion sea igual a 022 Prima por Antigüedad, 023 Pagos por separación ó 025 Indemnizaciones.
  • El valor del atributo Nomina.Percepciones.TotalJubilacionPensionRetiro, debe ser igual a la suma de los atributos ImporteGravado e importeExento donde la clave expresada en el atributo TipoPercepcion sea igual a 039(Jubilaciones, pensiones o haberes de retiro en una exhibición) ó 044 (Jubilaciones, pensiones o haberes de retiro en parcialidades).
  • El valor del atributo Nomina.Percepciones.TotalGravado, debe ser igual a la suma de los atributos ImporteGravado de los nodos Percepcion.
  • El valor del atributo Nomina.Percepciones.TotalExento, debe ser igual a la suma de los atributos ImporteExento de los nodos Percepcion.
  • El valor del atributo Nomina.Percepciones.Percepcion.ImporteGravado, La suma de los importes de los atributos ImporteGravado e ImporteExento debe ser mayor que cero.
  • El valor del atributo Nomina.Percepciones.Percepcion.TipoPercepcion, debe ser una clave del catálogo de c_TipoPercepcion publicado en el portal del SAT en internet.
  • El atributo TipoPercepcion: si la clave expresada es distinta de 022, 023, 025, 039 y 044, debe existir el atributo TotalSueldos.
  • Si la clave expresada en el atributo TipoPercepcion es 022 ó 023 ó 025, debe existir el atributo TotalSeparacionIndemnizacion y el elemento SeparacionIndemnizacion.
  • Si la clave expresada en el atributo TipoPercepcion es 039 ó 044, debe existir el atributo TotalJubilacionPensionRetiro y el elemento JubilacionPensionRetiro, en caso contrario no deben existir.
  • Si la clave expresada en el atributo TipoPercepcion es 039 debe existir TotalUnaExhibicion, no deben existir TotalParcialidad, MontoDiario.
  • Si la clave expresada en el atributo TipoPercepcion es 044 no debe existir TotalUnaExhibicion, deben existir TotalParcialidad, MontoDiario.
  • Si la clave expresada en el atributo TipoPercepcion es 045, debe existir el elemento AccionesOTitulos, en caso contrario no debe existir.
  • Si la clave expresada en el atributo TipoPercepcion no es 045, no debe existir el elemento AccionesOTitulos.
  • Si la clave expresada en el atributo TipoPercepcion es 019, debe existir el elemento HorasExtra, en caso contrario no debe existir.
  • Si la clave expresada en el atributo TipoPercepcion no es 019, no debe existir el elemento HorasExtra.
  • Si la clave expresada en el atributo TipoPercepcion es 014 el nodo Incapacidades debe existir.
  • Si la clave expresada en el atributo TipoPercepcion es 014 la suma de los campos ImporteMonetario debe ser igual a la suma de los valores ImporteGravado e ImporteExento de la percepción.
  • El atributo Nomina.Percepciones.Percepcon.HorasExtra.TipoHoras debe ser una clave del catálogo de c_TipoHoras publicado en el portal del SAT en internet.
  • Si existe valor en el atributo Nomina.Percepciones.JubilacionPensionRetiro.TotalUnaExhibicion los atributos MontoDiario y TotalParcialidad no deben existir.
  • Si existe valor en el atributo Nomina.Percepciones.JubilacionPensionRetiro.TotalParcialidad el atributo MontoDiario debe existir y el atributo TotalUnaExhibicion no debe existir.
  • El valor en el atributo Nomina.Deducciones.TotalImpuestosRetenidos debe ser igual a la suma de los atributos Importe de las deducciones que tengan expresada la clave 002 en el atributo TipoDeduccion.
  • Si no existen deducciones con clave 002, el valor en el atributo Nomina.Deducciones.TotalImpuestosRetenidos no debe existir.
  • El valor de Nomina.Deducciones.Deduccion.TipoDeduccion debe ser una clave del catálogo de c_TipoDeduccion publicado en el portal del SAT en internet.
  • Si la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es 006, debe existir el elemento Incapacidades.
  • Si la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es 006, el atributo Deduccion:Importe debe ser igual a la suma de los nodos Incapacidad:ImporteMonetario.
  • Nomina.Deducciones.Deduccion.Importe Debe ser mayor que cero.
  • Nomina.OtrosPagos.OtroPago.TipoOtroPago debe ser una clave del catálogo de c_TipoOtroPago publicado en el portal del SAT en internet.
  • Si el valor de Nomina.OtrosPagos.OtroPago.TipoOtroPago es 004 es obligatorio el nodo CompensacionSaldosAFavor.
  • Si el valor de Nomina.OtrosPagos.OtroPago.TipoOtroPago es 002 es obligatorio el nodo SubsidioAlEmpleo.
  • Nomina.OtrosPagos.OtroPago.Importe Debe ser mayor que cero.
  • Nomina.OtrosPagos.OtroPago.SubsidioAlEmpleo.SubsidioCausado debe ser mayor o igual que el valor del atributo "Importe” del nodo OtroPago.
  • Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.SaldoAFavor debe ser mayor o igual que el valor del atributo CompensacionSaldosAFavor:RemanenteSalFav.
  • Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.Año debe ser menor que el año en curso.
  • Incapacidades.Incapacidad.TipoIncapacidad debe ser una clave del catálogo de c_TIpoIncapacidad publicado en el portal del SAT en internet.

Ejemplos

El siguiente ejemplo muestra un codigo en C# que genera un recibo de nómina 1.2.

Ejemplo C#
//Iniciamos creando el objeto nomina 1.2 e indicamos el nombre del archivo de salida "Ejemplo.xml"
int p = EasyOne_nd_Create("Ejemplo.xml");


EasyOne_nd_SetNominaDigital(p, "", "210016", "2017-01-10T00:00:00", "04610", "", "2016-10-31", "2016-10-16", "2016-10-31", "16.000");
EasyOne_nd_SetEmisorPersonaMoral(p, "AAA010101AAA", "DESPACHO ARTEAGA Y CIA., S.C.", "601");

EasyOne_nd_SetOrdinariaLaboral(p, "01", "04", "37138000692", "2013-08-01", "P3Y3M1D", "1", "451.94", "415.00", "No", "01", "02", "AAA010101AAA");
EasyOne_nd_SetReceptor(p, "AEGB8008195E4", "ARTEAGA GAMERO BLANCA IVONNE", "0016", "Oficinas", "Auxiliar Contable", "DIF", "AEGB800819MDFRML02");
EasyOne_nd_SetOtro(p, "012", "2835627524");

EasyOne_nd_AddPercepcion(p, "001", "001", "Sueldo Nominal", "6640.00", "0.00");
EasyOne_nd_AddPercepcion(p, "005", "026", "Fondo de Ahorro Patron", "0.00", "498.00");

EasyOne_nd_AddDeduccion(p, "001", "001", "IMSS", "186.64");
EasyOne_nd_AddDeduccion(p, "002", "002", "ISR", "834.56");
EasyOne_nd_AddDeduccion(p, "004", "006", "Fondo de Ahorro Trabajador", "498.00");
EasyOne_nd_AddDeduccion(p, "009", "021", "Fondo de Ahorro Patron", "498.00");

//Enviamos el CFDI al metodo de PRUEBAS
EasyOne_SetInvoiceOneFachadaInfoPrueba(p, "QV1TAXSH", "QV1TAXSH");


//Para enviar el CFDI a PRODUCCION usar la linea abajo comentada.
//EasyOne_SetInvoiceOneFachadaInfo(p, "QV1TAXSH", "QV1TAXSH");

int i = EasyOne_FirmaComprobante(p, "CSD01_AAA010101AAA.cer", "CSD01_AAA010101AAA.key", "12345678a");

//Si el resultado es 0 = La nómina 1.2 se procesó correctamente
if (i == 0)
{
    string resultadoXML = String.Empty;

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

//Se deben liberar los recursos para evitar un elevado consumo de memoria.
EasyOne_nd_Free(p);
Vea también