Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. DATOS GENERALES


Producto

Solucoes_espanhol
SolucaoTOTVS Backoffice

Línea de producto: 

Linhas_totvs_espanhol
LinhaLínea Protheus

Segmento:

Segmentos_totvs_espanhol
Segmento

Backoffice

Servicios

Módulo:SIGAGPE - Gestión de Personal
Función:
Rutina(s)Nombre TécnicoFecha
GPEM022Cálculo de Periodos29/04/2021
País:Colombia
Ticket:10598668
Requisito/Story/Issue (informe el requisito vinculado):DMINA-11311


02. SITUACIÓN/REQUISITO

Cuando se realiza el cálculo de nómina habilitando el trace para obtener el log de cálculo, el sistema visualiza incompleta la información del log, mostrando el siguiente mensaje  "ATENCION: Interrupción en la visualización del contenido del archivo, pues este es superior al permitido para visualización."


03. SOLUCIÓN

En el archivo GPEM022.PRW, dentro de la función LoadMemo() se realiza el llamado al Se crea el punto de entrada GPM022LOG solo cuando la cadena cRetorno sobrepasa los 500,000.00 caracteres.El punto de entrada GPM022LOG , el cual será ejecutado cuando se visualice un el archivo log de cálculo desde protheus y si este, sobrepase los 500,000 .00 caracteres.

Para el almacenamiento del archivo log el usuario contará con las siguientes opciones:

...

De esta forma el usuario programador podrá hacer alguna funcionalidad para copiar el archivo LOG que está ubicado en la carpeta del system/log, para alguna carpeta local y así el usuario final podrá consultar dicho archivo.

En el ejemplo que estamos aportando en esta solución es que a través de un parámetro (el que desee el usuario programador, en nuestro caso usaremos el ES_LOGLOC) , el cual servirá para que  se abra una pantalla donde el usuario final pueda elegir la carpeta local donde se copiara el log (para nuestro ejemplo ES_LOGLOC = .T.)

...

, o que no se abra la pantalla y que haga la copia siempre en la carpeta del smartclient  sin que abra la pantalla (para nuestro ejemplo ES_LOGLOC = .F.)

...


Totvs custom tabs box
tabsPaso 01, Paso 02, Paso 03, Paso 04Pre-Condiciones,Pasos
idspaso1Pre-Condiciones,paso2Pasos
Si MVparámetro ES_LOGLOC (Ver apartado "Información adicional").
  • Compilar el punto de entrada GPM022LOG en el RPO (Ver apartado "Información adicional").

  • Configurar el módulo de Gestión de Personal (SIGAGPE) para el cálculo de nómina ordinaria:
    • Mnemónicos -  SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Mnemónicos (GPEA300)"

    • Formulas -  SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Formulas (GPEA290)"

    • Definición de Tablas - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Definición de Tablas (GPEA310)"

    • Mantenimiento de Tablas - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Mantenimiento Tab. (GPEA320)"
    • Procesos - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Procesos (GPEA420)"
    • Procedimientos - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Tipos de procedim. (GPEA162)"
      1. Procedimiento LIQ con Tipo procedimiento igual a 1 -Planilla de Haberes
    • Periodos - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Periodos (GPEA400)"
    • Conceptos - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Conceptos (GPEA040)"
    • Conceptos por proceso - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Conceptos por proceso (GPEA161)"
    • Empleados - SIGAGPE Menú "Actualizaciones | Empleados | Empleados (GPEA010)"
      1. Dar de alta 2 empleados con un año de antigüedad.

  • Totvs custom tabs box items
    defaultyes
    referenciapaso1Pre-Condiciones
    • Realizar respaldo del repositorio (RPO).
    • Aplicar el parche correspondiente al issue issue DMINA-11311.
    • Validar que las rutinas actualizadas correspondan con las mencionadas en la sección "Función" del encabezado del presente Documento Técnico.
    • Crear parámetro MV_LOGLOC.

      Nota: La creación del parámetro no es obligaría.

      Compilar el punto de entrada GPM022LOG en el RPO.

    Punto de Entrada:

    MV_LOGLOC

    Descripción:
    Totvs custom tabs box items
    defaultno
    referenciaPasos


    CASO 1 - Visualización de log sin interrupción (No sobrepasa el límite de caracteres permitidos) 

    Configurar ES_LOGLOC = .T.  (parámetro ejemplo)

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

    1. Asignar el proceso y el procedimiento LIQ del periodo activo.
    2. Habilitar grabación y trace.
    3. Realizar el cálculo solo para un empleado.
    4. Verificar que el cálculo se haya ejecutado sin errores.
    5. En el menú "Otras Acciones" seleccionar la opción "Log"
      Se habré una pantalla donde se muestran los archivos de log agrupados por mes.
    6. Seleccionar el log del proceso generado anteriormente.
      No se interrumpe la visualización del log ya que el archivo no sobrepasa el límite de caracteres permitidos para la visualización.

      Image Added


    CASO 2 - Visualización de log con interrupción (Sobrepasa el límite de caracteres permitidos) 

    Configurar ES_LOGLOC = .T.

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

    1. Asignar el proceso y el procedimiento LIQ del periodo activo.
    2. Habilitar grabación y trace.
    3. Realizar el cálculo para dos empleados.
    4. Verificar que el cálculo se haya ejecutado sin errores.
    5. En el menú "Otras Acciones" seleccionar la opción "Log"
      Se abre una pantalla donde se muestran los archivos de log agrupados por mes.
    6. Seleccionar el log del proceso generado anteriormente.
      Se abre una pantalla que solicita el directorio dónde será guardada la copia del Log.

      Image Added
    7. Seleccionar el directorio.
      Image Added

    8. Confirmar el guardado del log. 

      Image Added

    9. Se interrumpe la visualización del log ya que el archivo sobrepasa el límite de caracteres permitidos para la visualización, sin embargo, el archivo log se guarda en el directorio indicado.

      Image Added

    10. Revisar que el archivo se haya almacenado en la ruta indicada.

      Image Added



    CASO 3 - Visualización de log sin interrupción (No sobrepasa el límite de caracteres permitidos)

    Configurar ES_LOGLOC = .F.

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

    1. Asignar el proceso y el procedimiento LIQ del periodo activo.
    2. Habilitar grabación y trace.
    3. Realizar el cálculo solo para un empleado.
    4. Verificar que el cálculo se haya ejecutado sin errores.
    5. En el menú "Otras Acciones" seleccionar la opción "Log"
      Se habré una pantalla donde se muestran los archivos de log agrupados por mes.
    6. Seleccionar el log del proceso generado anteriormente.
      No se interrumpe la visualización del log ya que el archivo no sobrepasa el límite de caracteres permitidos para la visualización.

      Image Added




    CASO 4 - Visualización de log con interrupción (Sobrepasa el límite de caracteres permitidos)

    Configurar MV_LOGLOC = .F.

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

    1. Asignar el proceso y el procedimiento LIQ del periodo activo.
    2. Habilitar grabación y trace.
    3. Realizar el cálculo para dos empleados.
    4. Verificar que el cálculo se haya ejecutado sin errores.
    5. En el menú "Otras Acciones" seleccionar la opción "Log"
      Se abre una pantalla donde se muestran los archivos de log agrupados por mes.
    6. Seleccionar el log del proceso generado anteriormente.
      Se interrumpe la visualización del log ya que el archivo sobrepasa el limite de caracteres permitidos para la visualización, sin embargo, el archivo log se guarda en el directorio donde se está ejecutando el SmartClient.
      Image Added
    7. Revisar que el archivo se haya almacenado en la ruta donde se está ejecutando el SmartClient.

      Image Added




    04. INFORMACIÓN ADICIONAL


    Ejemplo de configuración de punto de entrada:

    Punto de Entrada:

    GPM022LOG

    Descripción:
    • Si ES_ LOGLOC = .T. el sistema mostrará una pantalla donde se podrá seleccionar el directorio para guardar una copia del archivo log (Solo si P.E. GPM022LOG está compilado en el RPO)
    • Si

    ...

    •  ES_ LOGLOC = .F. o el parámetro noexiste  el sistema guardará automáticamente una copia del archivo log en la carpeta donde se esté ejecutando el SmartClient (Solo si P.E. GPM022LOG está compilado en el RPO)

    Ubicación en Menú:

    Miscelánea | Cálculos | Por Procedimiento.

    Eventos:

    Visualización de Log de cálculo.

    Programa Fuente:

    GPEM022.PRX

    Función:

    LOADMEMO()

    Retorno:

    Nombre

    Tipo

    Descripción

    Obligatorio

    cRetorno

    String

    Cadena de caracteres que indica la ubicación donde fue guardado el archivo log o los errores generados durante el proceso de guardado.

    No



    Importante

    CASO 1 - Visualización de log sin interrupción (No sobrepasa el límite de caracteres permitidos) 

    Configurar MV_LOGLOC = .T.

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

  • Asignar el proceso y el procedimiento LIQ del periodo activo.
  • Habilitar grabación y trace.
  • Realizar el calculo solo para un empleado.
  • Verificar que el calculo se haya ejecutado sin errores.
  • En el menú "Otras Acciones" seleccionar la opción "Log"
    Se habré una pantalla donde se muestran los archivos de log agrupados por mes.
  • Seleccionar el log del proceso generado anteriormente.
    No se interrumpe la visualización del log ya que el archivo no sobrepasa el limite de caracteres permitidos para la visualización.


    Image Removed

    CASO 2 - Visualización de log con interrupción (Sobrepasa el límite de caracteres permitidos) 

    Configurar MV_LOGLOC = .T.

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

  • Asignar el proceso y el procedimiento LIQ del periodo activo.
  • Habilitar grabación y trace.
  • Realizar el calculo para dos empleados.
  • Verificar que el calculo se haya ejecutado sin errores.
  • En el menú "Otras Acciones" seleccionar la opción "Log"
    Se abre una pantalla donde se muestran los archivos de log agrupados por mes.
  • Seleccionar el log del proceso generado anteriormente.
    Se abre una pantalla que solicita el directorio dónde será guardada la copia del Log.
    Image RemovedSeleccionar el directorio.
    Image Removed
    Confirmar el guardado del log. 
    Image Removed
    Se interrumpe la visualización del log ya que el archivo sobrepasa el limite de caracteres permitidos para la visualización, sin embargo, el archivo log se guarda en el directorio indicado.
    Image Removed
    Revisar que el archivo se haya almacenado en la ruta indicada.
    Image Removed

    CASO 3 - Visualización de log sin interrupción (No sobrepasa el límite de caracteres permitidos)

    Configurar MV_LOGLOC = .F.

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

  • Asignar el proceso y el procedimiento LIQ del periodo activo.
  • Habilitar grabación y trace.
  • Realizar el calculo solo para un empleado.
  • Verificar que el calculo se haya ejecutado sin errores.
  • En el menú "Otras Acciones" seleccionar la opción "Log"
    Se habré una pantalla donde se muestran los archivos de log agrupados por mes.
  • Seleccionar el log del proceso generado anteriormente.
    No se interrumpe la visualización del log ya que el archivo no sobrepasa el limite de caracteres permitidos para la visualización.
    Image Removed

    CASO 4 - Visualización de log con interrupción (Sobrepasa el límite de caracteres permitidos)

    Configurar MV_LOGLOC = .F.

    En el módulo SIGAGPE acceder al menú “Miscelánea | Cálculos | Por Procedimiento (GPEM020)

  • Asignar el proceso y el procedimiento LIQ del periodo activo.
  • Habilitar grabación y trace.
  • Realizar el calculo para dos empleados.
  • Verificar que el calculo se haya ejecutado sin errores.
  • En el menú "Otras Acciones" seleccionar la opción "Log"
    Se abre una pantalla donde se muestran los archivos de log agrupados por mes.
  • Seleccionar el log del proceso generado anteriormente.
    Se interrumpe la visualización del log ya que el archivo sobrepasa el limite de caracteres permitidos para la visualización, sin embargo, el archivo log se guarda en el directorio donde se está ejecutando el SmartClient.
    Image Removed
  • Revisar que el archivo se haya almacenado en la ruta donde se está ejecutando el SmartClient.
    Image Removed
    Dica
    title
    Sugerencia


    #INCLUDE "PROTHEUS.CH"  
    /*
    {Protheus.doc} GPM022LOG
    Punto de entrada 
    Muestra una pantalla para elegir el directorio donde será guardada una copia del archivo log 
    @author Alfredo Medrano
    @version 1.0
    @since   27/04/2021
    @return  String
    @sample  
    */
    User Function GPM022LOG()
        Local cPath     := PARAMIXB[1//Directorio
        Local cArquivo  := PARAMIXB[2//Nombre Archivo
        Local cRetorno  := PARAMIXB[3//Texto de log
        Local lGerLog   := SuperGetMv("

    MV

    ES_LOGLOC",.T.,.F.//parametro creado por el cliente
        Local cDirC     := ""
        Local cPathAbs  := ""
        Local lCopy     := .F.
        Local lOk       := .F.
        Local lSave     := .F.
        Local oDlgDir
        Local oDirC



        Default cPath   := ""
        Default cArquivo:= ""
        Default cRetorno:= ""


        cPathRel :=  GetPvProfStringGetEnvServer() , "StartPath" , "" , GetAdv97() ) 
        cPathRel += "LOG_CALC\" +  cArquivo // ruta relativa con archivo
        cPathAbs := cPath + cArquivo // ruta absoluta con archivo

        If lGerLog  

            DEFINE MSDIALOG oDlgDir FROM 10,05 TO 15, 40 TITLE " Guardar Archivo " // "Directorio"
            @   6,2 Say "Directorio: " SIZE 31,07 OF oDlgDir PIXEL
            @  5,35  MSGET oDirC VAR cDirC SIZE 100, 08 OF oDlgDir PIXEL HASBUTTON ; 
            VALID {|| cDirC:= cGetFile(,"Selecione el directorio",,,.F.,GETF_LOCALFLOPPY+GETF_LOCALHARD+GETF_NETWORKDRIVE+GETF_RETDIRECTORY), IIF(cDirC!="", .T., .f.)}
            DEFINE SBUTTON FROM 20,76 TYPE 1 ACTION (lOk:=.T.,oDlgDir:End()) ENABLE OF oDlgDir
            DEFINE SBUTTON FROM 20, 106 TYPE 2  ACTION  oDlgDir:End() ENABLE OF oDlgDir
            ACTIVATE MSDIALOG oDlgDir CENTERED

            If lOk
               //Verifica si el archivo existe en el directorio del server
                If File(cPathRel,0 ) 
                    //Verifica si el directorio destino existe
                    If ExistDircDirC )
                        lSave := .T.
                        If substr(cDirC, len(cDirC),len(cDirC) ) != "\"
                            cDirC+= "\"
                        EndIf
                         //Verifica si el archivo existe en el directorio destino
                        If File(cDirC+cArquivo)
                            If !(MsgYesNo("El Archivo " + cArquivo + " ya existe en la ruta especificada. Desea sobrescribirlo ?",; 
                                        "Atención" ))
                                lSave := .F.
                            EndIf
                        EndIf
                    Else
                        MsgInfo"El directorio especificado " + cDirC + " no existe. Asigne un directorio valido.", "Atención" )
                    EndIf
                EndIf
            EndIf
        Else
             cDirC :=  GetClientDir() // obtiene el directorio en donde se esta ejecutando el SmartClient
             lSave := .T. 
        EndIf

        If lSave
            //Copia el archivo de la carpeta del servidor a la carpeta especificada
            lCopy := CpyS2TcPathRel, cDirC)
            If lCopy
                cRetorno += "El Archivo " + cArquivo + " se envio a la siguiente ruta " + cDirC
                // MsgInfo( "El archivo " + cArquivo + " se guardo correctamente", "Atención" )   
            Endif

            If Ferror() # 0 .And. !lCopy
                cRetorno += "Error de grabación de archivo - Codigo DOS: " + STR(Ferror(),3
                //MsgInfo(  "Error de grabación de archivo - Codigo DOS: " + STR(Ferror(),3), "Atención" )
            EndIf
        EndIf
        

    return cRetorno


  • Configurar el módulo de Gestión de Personal (SIGAGPE) para el cálculo de nómina ordinaria:
    • Mnemónicos -  SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Mnemónicos (GPEA300)"

    • Formulas -  SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Formulas (GPEA290)"

    • Definición de Tablas - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Definición de Tablas (GPEA310)"

    • Mantenimiento de Tablas - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Mantenimiento Tab. (GPEA320)"
    • Procesos SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Procesos (GPEA420)"
    • Procedimientos SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Tipos de procedim. (GPEA162)"
      1. Procedimiento LIQ con Tipo procedimiento  igual a 1 -Planilla de Haberes
    • Periodos SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Periodos (GPEA400)"
    • Conceptos - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Conceptos (GPEA040)"
    • Conceptos por proceso - SIGAGPE Menú "Actualizaciones | Definic. Cálculo | Conceptos por proceso (GPEA161)"
    • Empleados  - SIGAGPE Menú "Actualizaciones | Empleados | Empleados (GPEA010)"
      1. Dar de alta 2 empleados  con un año de antigüedad.
  • Totvs custom tabs box items
    defaultno
    referenciapaso2

    04. INFORMACIÓN ADICIONAL

    Configurar el parámetros (SX6):

    ...

    Parámetro

    ...

    MV_LOGLOC

    ...

    Tipo

    ...

    L

    ...

    Descripción

    ...

    Si .T. muestra pantalla para seleccionar directorio y guardar una copia del log. Si .F. guarda copia de log en directorio de SmartCliet  

    ...

    Valor Estándar

    ...

    .T.






    Card documentos
    InformacaoLa solución aplica para todos los países, en las versiones 12.1.17 o posteriores.
    Titulo¡IMPORTANTE!


    05. ASUNTOS RELACIONADOS


    HTML
    <style>
    div.theme-default .ia-splitter #main {
        margin-left: 0px;
    }
    .ia-fixed-sidebar, .ia-splitter-left {
        display: none;
    }
    #main {
        padding-left: 10px;
        padding-right: 10px;
        overflow-x: hidden;
    }
    
    .aui-header-primary .aui-nav,  .aui-page-panel {
        margin-left: 0px !important;
    }
    .aui-header-primary .aui-nav {
        margin-left: 0px !important;
    }
    
    .aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
    	background: #FF9900; !important 
    }
    
    .menu-item.active-tab { 
    	border-bottom: none !important; 
    }
    
    </style>