La tabla temporal de cálculo de planilla se llena con los empleados que retorna el cursor principal. Por tal razón la única manera en que existan empleados que no son activos debe ser porque esas planillas se ejecutaron antes, en alguna oportunidad en la que todavia esos empleados estaban activos.
Ultimamente he estado recomendando a todos los implantadores modificar la función que verfica si el empleado debe participar de los cálculos, agregando una verificación contra la columna pge_ejecucion_completa = 1
, como aparece en la función que adjunto. Al agregar este IF, se asegura de incluir a todos los empleados en todos los cursores e instrucciones de los procedimientos de inicialización y finalización, ya que no valida si existe en la tabla sal.pge cuando se genera una planilla para TODOS los empleados (sin usar la funcionalidad de ejecución individual)
ALTER FUNCTION [sal].[empleado_en_gen_planilla] (
@sessionId uniqueidentifier,
@codemp int)
RETURNS bit
AS
BEGIN
if @sessionId is not null
if exists (select null from sal.ppg_periodo_planilla_generados where ppg_id_sesion = @sessionId)
begin
if exists (select null from sal.ppg_periodo_planilla_generados where ppg_id_sesion = @sessionId and pge_ejecucion_completa = 1)
return 1
else if exists (select null from sal.pge_per_planilla_generado_emps where pge_id_sesion = @sessionId and pge_codemp = @codemp)
return 1
else
return 0
end
return 1
END
answered
19 Jun '15, 11:34
Fernando Paz ♦♦
17.3k●8●16●35
accept rate:
51%