Duda
¿Cómo obtener la estructura requerida para el timbrado de recibos “Asimilados al Salario”?
Ambiente
TOTVS RH - TOTVS RH (LINEA PROTHEUS) - MI – Gestión de Personal (SIGAGPE) – Release 12
Solución
En cumplimento de legislación, para la generación de los recibos de nómina asimilados a salarios se propone la siguiente configuración e implementación especifica la cual debe ser ejecutada por un analista de servicios TOTVS y/o Administrador del sistema Protheus.
Antecedente Guía SAT:
El expedir comprobantes fiscales digitales por internet (CFDI) por concepto de nómina, es una obligación de los contribuyentes personas físicas o morales que en la realización de una actividad económica efectúen pagos a sus trabajadores por concepto de salarios y en general por la prestación de un servicio personal subordinado o a contribuyentes asimilados a salarios, conforme a lo establecido en los artículos 27, fracciones V, segundo párrafo y XVIII y 99, fracción III de la Ley del ISR y artículo 54 del Reglamento de dicha Ley, en relación con los artículos 29, segundo párrafo, fracción IV del CFF y 39 del Reglamento del CFF y las reglas 2.7.5.1., 2.7.5.2. y 2.7.5.3., de la Resolución Miscelánea Fiscal vigente.
Consideraciones previas:
- Para reléase vigentes debe verificar tener la rutina GPER884.PRW con fecha 17/12/2019 igual o superior, caso contrario, solicite el patch de actualización a Soporte Mercado Internacional a través de un ticket de atención.
- Dentro del archivo GPER884.INI, debe actualizar los apartados de la Cadena original y nodos para agregar en cada campo la validación para generar la estructura del XML requerida para recibo de asimilados verificando el Tipo Régimen del empleado (revisar el ejemplo de sintaxis en la sección de procedimiento para implementación punto 2 de este artículo).
- Esta actualización de estructura, debe cumplir con el requerimiento del SAT donde deben ser omitidos los siguientes campos dentro del archivo de configuración GPER884.ini (ver ejemplo de sintaxis punto 2 de este artículo).
- RegistroPatronal;
- NumSeguridadSocial;
- FechaInicioRelLaboral;
- Antigüedad;
- TipoJornada;
- RiesgoPuesto;
- SalarioDiarioIntegrado;
- Nodo:OtrosPagos – (Subsidio al Empleado efectivamente pagado);
- Sindicalizado: Se debe registrar el valor “No” cuando el empleador realice el pago a contribuyentes asimilados a salarios, o a asalariados no sindicalizados;
- TipoRegimen – Se debe informar “05-Asimilados Miembros Sociedades Cooperativas Producción”, “06-Asimilados Integrantes Sociedades Asociaciones Civiles”, “07-Asimilados Miembros consejos”, “08-Asimilados comisionistas”, “09- Asimilados Honorarios”, “10-Asimilados acciones” y “11-Asimilados otros”;
- TipoContrato Si el campo TipoContrato tiene un valor 09 o superior, entonces este atributo debe contener algún valor del 05 hasta el 99;
- Para la la representación impresa (archivo PDF) deberá ajustar de igual forma homologando la estructura del XML, omitiendo los campos que no son requeridos. En este caso, se debe utilizar al Punto de Entrada G884IMPREC - e impresión especifica. Para su compilación solicite el archivo ".CH" a través de un ticket de atención, para obtener el programa ingrese al siguiente articulo KCS:
Procedimiento de Implementación:
1.- Configuración de los campos del empleado, ingrese a: Actualizaciones | Empleados | Empleados – Selecciona al empleado y dar clic en el botón “Modificar” buscar los campos:
- Tipo Contrato – RA_TIPCON, seleccione un valor del 05 hasta el 99;

- Tipo Régimen – RA_TIPREG; seleccione un valor del 05 hasta el 11;

Ejemplo de sintaxis:
2.- Para realizar los ajustes en los nodos que no deben generarse en el XML cuando el empleador realice el pago a contribuyentes asimilados a salarios; Ingrese al archivo \Protheus_data\system\GPER884.ini para agregar las siguientes validaciones:
//CADENA ORIGINAL
[SRA CADENAORIGINAL_SELLO]
//Subtotal
(PRE) cCadOrig += Alltrim(Transform(Round(nTotPGrav+nTotPExen+IIf(!SRA->RA_TIPREG $ '05|06|07|08|09|10|11',nTotOtroP,0),2), "99999999.99")) + _aTotal[098]
//Total
(PRE) cCadOrig += Alltrim(Transform(Round(nTotPGrav+nTotPExen+IIf(!SRA->RA_TIPREG $ '05|06|07|08|09|10|11',nTotOtroP,0)-(nOtroDedu+nImpReten),2), "99999999.99")) + _aTotal[098]
//TotalOtrosPagos
(PRE) cCadOrig += IIf(nTotOtroP <> 0 .AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', Alltrim(Transform(Round(nTotOtroP,2), "99999999.99")) + _aTotal[098], "")
// EMISOR
//RegistroPatronal
(PRE) cCadOrig += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', Alltrim(cRegPatr) + _aTotal[098], "")
//RECEPTOR
//NumSeguridadSocial
(PRE) IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', cCadOrig += Alltrim(SRA->RA_RG) + _aTotal[098], "")
//FechaInicioRelLaboral
(PRE) IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', cCadOrig += Alltrim(STR(YEAR(dFchInLab)))+"-"+ STRZERO(MONTH(dFchInLab),2) +"-"+STRZERO(DAY(dFchInLab),2) + _aTotal[098], "")
//Antigüedad
(PRE) IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', cCadOrig += 'P' + Alltrim(Str(nAntigue)) + 'W' + _aTotal[098], "")
//TipoJornada
(PRE) IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', cCadOrig += Alltrim(cTipJorn) + _aTotal[098], "")
//RiesgoPuesto
(PRE) cCadOrig += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', Alltrim(cRiegCFDi), Alltrim("99")) + _aTotal[098]
//SalarioDiarioIntegrado
(PRE) IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', cCadOrig += Alltrim(Transform(Round(SRA->RA_SALINT,2), "99999999.99")) + _aTotal[098], "")
//CFDI: CFDI:COMPROBANTE
[XXX CFDI]
(PRE) _aTotal[001] += ' SubTotal="' + Alltrim(Transform(Round(nTotPGrav+nTotPExen+IIf(!SRA->RA_TIPREG $ '05|06|07|08|09|10|11',nTotOtroP,0),2), "99999999.99")) + '"'
(PRE) _aTotal[001] += ' Total="' + Alltrim(Transform(Round(nTotPGrav+nTotPExen+IIf(!SRA->RA_TIPREG $ '05|06|07|08|09|10|11',nTotOtroP,0)-(nOtroDedu+nImpReten),2), "99999999.99")) + '"'
//COMPLEMENTO: NOMINA:NOMINA
[XXX NOMINA]
(PRE) _aTotal[001] += IIf(nTotOtroP <> 0 .AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', ' TotalOtrosPagos="' + Alltrim(Transform(Round(nTotOtroP,2), "99999999.99")) + '" ', "")
[XXX EMISOR]
(PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A' .AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', ' RegistroPatronal="' + Alltrim(cRegPatr) +'"', "")
(PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', ' NumSeguridadSocial="' + Alltrim(SRA->RA_RG) +'"', "")
(PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', ' FechaInicioRelLaboral="' + Alltrim(STR(YEAR(dFchInLab)))+"-"+ STRZERO(MONTH(dFchInLab),2) +"-"+STRZERO(DAY(dFchInLab),2) + '"', "")
(PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', DecodeUTF8(' Antigüedad="') + 'P' + Alltrim(Str(nAntigue)) + 'W' + '" ', "")
(PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', ' TipoJornada="' + Alltrim(cTipJorn) + '"', "")
(PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', ' RiesgoPuesto="' + Alltrim(cRiegCFDi) + '"', ' RiesgoPuesto="' + Alltrim("99") + '"')
(PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A'.AND. !SRA->RA_TIPREG $ '05|06|07|08|09|10|11', ' SalarioDiarioIntegrado="' + Alltrim(Transform(Round(SRA->RA_SALINT,2), "99999999.99")) + '"', "")
//COMPLEMENTO: NOMINA:OTROSPAGOS
[XXX OTROSPAGOS]
(PREREG) Iif(!SRA->RA_TIPREG $ '05|06|07|08|09|10|11',.T.,.F. )
(PRE) _aTotal[002] := ' <nomina12:OtrosPagos>'
(PREREG) ENCODEUTF8(_aTotal[002])
[XXX OTROSPAGOS1]
(PREREG) Iif(!SRA->RA_TIPREG $ '05|06|07|08|09|10|11',.T.,.F. )
(PREREG) _aTotal[002] :=''
(PREREG) _aTotal[002] := fOtrosPag()
(PREREG) ENCODEUTF8(_aTotal[002])
[XXX OTROSPAGOS]
(PREREG) Iif(!SRA->RA_TIPREG $ '05|06|07|08|09|10|11',.T.,.F. )
OTROSPAGOS C 030 0 ENCODEUTF8(XMLConv("",,,"nomina12:OtrosPagos",.F.,.T.,8))
Procedimiento de Ejecución:
Una vez realizados los ajustes en el archivo de la normativa GPER884.ini ingrese al módulo Gestión de Personal (SIGAGPE) desde el menú Informes | Periódicos | Recibo Nomina CFDI - GPER884:
- Informar los parámetros necesarios e indicar el timbrado del documento;
- Genera el recibo de nómina para el empleado anteriormente calculado;
- Confirmar la generación y timbrado del recibo;
- Al terminar el proceso revisar el PDF del recibo (previa homologación de campos del archivo GPER884.ini con Punto de Entrada G884IMPREC;
- Verificar archivo XML con la estructura requerida para el timbrado de recibo, contribuyentes asimilados a salarios.
Al final del artículo puede consultar y descargar el vídeo de validación de Soporte “EvidenciadeSoporte_timbrado_recibo_Asimiliado_salarios.rar” donde se puede visualizar que una vez aplicada la configuraciones indicadas en este artículo se obtienen resultados favorables al obtener el archivo XML timbrado con estructura requerida por el SAT para recibos de asimilados a salarios.
0 Comentarios