01. DATOS GENERALES
Producto | TOTVS Backoffice | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||
Segmento: | Servicios | |||||||||
Módulo: | SIGAGPE - Gestión de Personal. | |||||||||
Función: |
| |||||||||
País: | México | |||||||||
Ticket: | 10497786 | |||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-10926 |
02. SITUACIÓN/REQUISITO
Dentro de la rutina Recibos de nómina CFDI v 1.2 (GPER884), al momento de realizar el envió de recibos de nómina por email (Pre-Imp/Mail = "Email") de forma masiva (800 recibos o más ), se observa que existe un desborde de memoria, detonando el siguiente error.log :
"Memory Allocation Failure ( 3355832 bytes ) in file d:\bamboo-agent-5.7.2\xml-data\build-dir\tp11-buildv2appsrv-tec11win32rpo32\advtec9_tt11\lib_base\list.hpp at line 813 VALIDARECIBO - TIMBRERN.PRW(174)".
03. SOLUCIÓN
En la rutina de Funciones Timbrado recibo de nómina (TIMBRERN):
- En la función que Valida si el CFDi ya está timbrado (ValidaRecibo) mediante la búsqueda del UUID en el XML, se observa que el uso constante de la función la XmlParserFile esta ocasionando el problema del desbordamiento de memoria.
- Para evitar el uso de dicha función se realiza un tratamiento para leer el XML en formato Texto, haciendo uso de la función FREADSTR() y buscando el elemento TIMBREFISCALDIGITA para validar si el recibo ya fue timbrado.
En la rutina de Recibos de nómina CFDI v 1.2 (GPER884):
- En la función encargada del Procesamiento de los recibos de nomina (R030Imp), se agrega la referencia del área de trabajo que se esta usando a las instrucciones usadas para moverse al próximo registro (DBSkip()).
- En la función que Procesa XML para generar PDF (ImpXML) y la función que Envía correo electrónico con XML y PDF (EnvRecMail), se eliminan las instancias de los objetos en la memoria del servidor al terminar cada proceso con el uso de la función FreeObj() para evitar el desbordamiento de memoria.
- Realizar un respaldo del repositorio del ambiente (archivo .RPO).
- Aplicar el parche correspondiente al issue DMINA-10926.
- Verificar que las rutinas actualizadas en el repositorio, coincida con las descritas en el encabezado del presente Documento Técnico (con fecha igual o superior).
- En la rutina de Cálculo por procedimiento (GPEM020), realizar el cálculo para los empleados.
- En la rutina de Recibos de nómina CFDI v 1.2 (GPER884), contar con los recibos ya timbrados de los empleados (800 o más).
- Ingresar al módulo Gestión de Personal (SIGAGPE), e ir al menú "Informes | Periódicos | Recibo de Nómina CFDI v1.2" (GPER884).
- Indicar los parámetros requeridos para realizar el envío por email de los recibos de nómina previamente timbrados.
- Pre-Imp/Mail = "Email"
- Enviar Timbrar = "NO".
- Verificar que no se presente el desbordamiento de memoria, que se realice el envío masivo correctamente y que se concluya el proceso correctamente.
04. INFORMACIÓN ADICIONAL
No aplica.
Esta solución aplica para versión Protheus 12.1.17 o superior, con un RPO que cuente con las rutinas correspondientes actualizadas como se indicada en la sección 01 - Datos Generales.¡IMPORTANTE!