FUNCION PARA EL CÁLCULO DE SALARIOS PROMEDIOS

DOCUMENTO: O_PROMSAL001.RTF

Creado SIMON MENDEZ 24/01/2006

FUNCION O_PROMSAL

DEFINICION GENERAL: Esta función permite calcular los diferentes tipos de Salarios Promedios que se utilizan en cada una de las políticas de calculo.
Se encuentra definida dentro del MLLQ.DLL .
Existe en el directorio syfdat un modelo el o_pronsal.mdl , que se puede leer para entender todas y cada una de las variantes que se pueden utilizar para el calculo de un salario promedio.
El llamado de esta función se hace dentro de cada política normalmente del la forma :
Salarios = o_promsal(lista de parámetros)

En el debug cuando esta activado en los conceptos se reconoce la aplicación de esta funcion, porque aparece :

   ----------------Inicio del Salario Promedio O_promsal -------------------

Y sus cálculos se extienden hasta donde dice :

   ----------- Final del Salario Promedio O_promsal 

CASOS DE USO :

Caso 1-.
•	Primer componente
     Se valida el último sueldo, si éste no ha cambiado en los tres últimos meses   
          Ese es el que se toma para la liquidación, si éste ha cambiado se usa el  
          Promedio de los últimos DOCE meses.

•	El segundo componente es el bono;
-	valida el último sueldo, si éste no ha cambiado en los tres últimos meses, se toma la proporción mensual del el ultimo bono recibido. (Bono/6 ó Bono/meses trabajado en el semestre).
-	Si le el sueldo ha variado en los últimos tres meses, entonces se tomara como base el promedio mensual de los bonos pagados en el último año de servicio o en todo el tiempo servido si fuere menor a un año.
-	Ej: Si un funcionario trabajó todo el año y se liquida el 28 de febrero y su sueldo cambio en los últimos tres meses, sus bonos recibidos fueron los que se le pagaron en la 1ª quincena de diciembre y el recibido en la 1ª quincena de junio del año anterior a su liquidación, se suman los montos y dividen por 12 para obtener el promedio mensual de bonos recibidos. Si su sueldo no cambio, se toma la proporción mensual de último bono recibido.
-	Ej:  si un funcionario que nò trabajó todo el año y se liquida el 28 de febrero y su sueldo cambio en los últimos tres meses, se debe sumar los bonos recibidos durante el tiempo de servicio y dividirlo entre los meses de servicio. Si su sueldo no cambio, se toma la proporción mensual de último bono recibido.

•	Tercer Componente
      SI percibe horas extras se promedian la recibidas en el último año, 
      Incluyendo las que se le pagan al momento de liquidación, para el ejemplo   
      Serían las recibidas desde febrero del año anterior hasta las recibidas en la 
      Liquidación divididas por 12 para el promedio mensual.

•	Cuarto Componente
     Si percibe subsidio de transporte se usa el último vigente.

Si en el momento de liquidar tiene derecho, coja el valor actual por ley. Pero si su sueldo cambio en los últimos tres meses, tome el promedio mensual de lo pagado en el último año de servicio o en todo el tiempo servido si fuere menor a un año.

Solución:

Primer y Tercer componente:

La variables para la solución de este primer y tercer  componente son :

Si el salario NO  ha cambiado en los últimos tres meses, el sistema opera con las variables 

Agrup_Cpt_Bsv, Agrupación de los conceptos que se incluirán. 
Alfanumérica
Dato = Código de la Agrupación que contenga los conceptos que me suman al promedio, sin incluir el salario  pues este lo toma del valor matriculado en el HSL  )

DiasBsV , Días por los que se tiene que dividir los valores de la agrupación
Numérica
Dato = 360

Nota si el salario NO ha cambiado el sistema,  promedia los conceptos de la agrupación y el resultado se lo suma al salario matriculado en el HSL.

Si el salario HA cambiado en los últimos tres meses, el sistema opera con las variables

DiasChgSal,  Días para validar el cambio de salario
Numérica 
Dato = 90

Agrup_Cpt_BA  
Alfanumérica
Dato = Código de la Agrupación que contenga los conceptos que me suman al promedio promedio se debe incluir el salario básico y el concepto del bono. 

DiaCes: Días por los que se tiene que dividir los valores de la agrupación
Numérica
Dato = 360

Nota.  si el salario HA cambiado en lo surtimos tres meses el sistema,  promedia los conceptos de la agrupación donde esta incluido el salario y el bono y calcula un salario promedio

Variables que se utilizan para que el sistema promedie 

DiaSlrPrm, Días de salario promedio (Opera para el promedio de las variables Bsv y BA
Numérica 
Dato = 360 Cesantias 180 Prima 

Dias_Pag, Días a pagar 
Numérica 
Dato = 30 Cesantías 15 Prima

Ff_Au, Fecha final de Acumulados
Alfanumérica
Dato = 31 de diciembre del año en curso (Cesantias) La fecha de fin del semestre (Prima) 

Fi_Au, Fecha inicial de acumulados 
Alfanumérica
Dato = 01 de enero del año en curso

TipCld, Tipo de calendario
Alfanumérica
Dato =  C (Comercial ) J (Juliano paga 31 días calendario)

Tipo_Prom, Tipo de promedio 
Alfanumérica
Dato =  P (Promedio)

Tipo_Sal, Tipo de Salario
Alfanumérica
Dato =  B (Básico)

Prs:VerAntgTpChgSlr, Valida la antigüedad en el HSL, si el trabajador se retiro y reingreso en una fecha inferior a los 90 días
Alfanumerica 
Dato = S

Segundo componente:

Las variables para la solución de este segundo componente son :

Prs:PagOtraBase , Tomar otra base para incluirla dentro del Salario Promedio
Alfanumérica
Dato = F

Prs:AgrupOtraBase , Agrupación de los conceptos que se incluirán.
Alfanumérica
Dato = Código de la agrupación que contiene los conceptos (Concepto del Bono)

Prs:DiasOtraBase , Días que devolver para buscar los valores de la agrupación
Numérica
Dato = 180

Prs:DivOtraBase , Días por los que se tiene que dividir los valores de la agrupación
Numérica
Dato = 180

Prs: FIniOtraBase: Fecha en que se pago el ultimo bono
Fecha
Dato = Fecha de ultimo pago

El usuario en el caso de las liquidaciones definitivas y consolidaciones , debe matricular la fecha en que se pago el ultimo bono,   para que el sistema tome la proporción del ultimo BONO PAGADO. 

Nota: Cuando el empleado no ha trabajado el semestre completo el sistema automáticamente recompone estos días a partir de la fecha de antigüedad del empleado.

Si el sueldo ha cambiado, todo se hace al promedio por lo tanto,
En el dato de la variable (agrupación) :
Agrup_Cpt_AC o Agrup_Cpt_BA, dependiendo del concepto se debe incluir además de todos los conceptos que se van a promediar, Salario.... etc., el concepto del Bono

Cuarto Componente:

Las variables para la solución de este segundo componente son :

Prs: PrommasSub, Tomar al final del promedio el subsidio de transporte
Alfanumérica
Dato = N, para que no lo tome.

MnjSubProm, Compara El tope del subsidio con el promedio
Alfanumérica
Dato = N, el tope se compara con el Básico

Prs:Var_TopSub, Numero de la variable (1 a 10) donde se encuentra el valor del tope , Ver Variables del sistema , tabla VSY
Numérica
Dato , el numeró del cajón

Si el sueldo ha cambiado, todo se hace al promedio por lo tanto,
En el dato de la variable (agrupación) :
Agrup_Cpt_AC o Agrup_Cpt_BA, dependiendo del concepto se debe incluir además de todos los conceptos que se van a promediar , Salario.... etc , el concepto deL SUBSIDIO DE TRANSPORTE.

CASO 2 -. Este caso es el mas tipico, consiste en calcular un salario promedio basado en lo siguiente :
El Basico vigente  que tenga la persona + la suma de una agrupación de Conceptos que normamente son horas extras y/o recargos de unos dias (360 o 180) que existen en los acumulados) + la suma de unos conceptos que se estan pagando en el proceso (bien sea que se esten pagando en la liquidación periodica o en la liquidación definitiva y que por ende aun no estan en los acumulados) +  el ultimo subsidio de transporte si la persona tiene derecho.

La parametrizacion para este caso es la siguiente :

El Basico vigente  que tenga la persona 

Tipo_Sal, Tipo de Salario Promedio 
Alfanumerica
Dato = B

'TipCld, Tipo de Calendario
Alfanumerica
Dato = J o C dependiendo si es juliano (J) o comercial (C), sirve para calcular los dias existentes entre dos fechas.

+ la suma de una agrupación de Conceptos que normamente son horas extras y/o recargos de unos dias (360 o 180) que existen en los acumulados)

Para realizar esta suma se utilizan las variables BSV, asi

DiasBsV, Dias para Sumar Agrupacion al Basico
Numerica
Dato = # dias entre los cuales se busca la agrupación de conceptos que se le van a sumar.

Agrup_Cpt_BsV , Agrupacion que se suma al basico
Alfanumerica
Dato, codigo de la agrupación de conceptos , normamente son horas extras y/o recargos

FechaBsv, Fecha Final para sumar la agrupación , ejl. Estoy liquidando el 15/12/2007 y se necesita que el sistema se devuelva 360 dias para sumar esta agrupación. Entonces en esta fecha debe ir el 15/12/2007. Para liquidaciones definitivas normamelte no se indica. Y para el caso de primas se indica.
Fecha
Dato = Indicar la fecha (SI APLICA)

+ la suma de unos conceptos que se estan pagando en el proceso (bien sea que se esten pagando en la liquidación periodica o en la liquidación definitiva y que por ende aun no estan en los acumulados)

Para realizar esta suma se utilizan las variables EXT, asi

Ext_dias, ias para Sumar Agrupacion de Extras
Numerica
Dato = # dias entre los cuales se busca la agrupación de conceptos que se le van a sumar.

Ext_Agrup, Agrupación de Extras que se estan pagando
Alfanumerica
Dato = codigo de la agrupación de conceptos

ExtF_fin, Fecha Final para sumar la agrupación. Idem a FechaBsV
Fecha
Dato = Indicar la fecha si aplica-

+  el ultimo subsidio de transporte si la persona tiene derecho.

VlrSub,'valor subsidio transporte multiplicada por 100
Numerica
Dato = Valor del subsidio de transporte vigente

Var_TopSub, # de la variable general de nomina donde se indico el tope del subsidio
Numérica
Dato = # de la variable , (de 1 a 10)

NOTA, este caso 2 para :
1-.Las liquidaciones definitivas, basta con anteponerle  el prefijo LDF:
2-.Las consolidaciones,  basta con anteponerle  el prefijo PMC:

PRORRATEAR LAS VACACIONES 

Este caso consiste en que el valor delavacaciones, para efectos del calculo del salario promedio para las primas NO se debe de sumar al 100% sino proporcional asi:
 
Ejemplo :sale de 26 de diciembre de 2007 y regresa el 12 de enero de 2007 total dias de vacaciones: 18 dias  Valor de vacaciones: $700.000
 
Base a sumar en la prima de diciembre: 700000 / 18 * 6 dias = $233.3333
 
Base a sumar en la prima de Junio de 2008 correspondiente a los dias de enero = 700000 / 18 * 12 = $466.667

Como esta caso tambien se presenta en la primas de Junio es, decir si las vacaciones pasan de Junio a Julio , eN Junio solo debe hacer parte del salario promedio los dias que se dejaron de pagar en Dbre y solo los dias que corresponden a Junio.
Y en Dicembre los dias que se dejaron de pagar en Junio mas los dias que corresponden a Diciembre.

Para este caso se deben de parametrizar las siguientes variables del concepto

Prs:ProrrateaVac, Prroratear o promediar el valor de las vacaciones 
Alfanumerica 
Dato = S

Prs:TpVac , Tipo de Calculo de Valores de Vacaciones
Afanumerica
Dato = S

Prs:AgrupVac, Agrupación de Conceptos para sumar las vacaciones
Alfanumerica
Dato = Codigo de l agrupación, en esta agruapacion solo debe estar el concepto de Vacaciones

Prs:FuenteVac, Fuente de Donde se toman los valores de las Vacaciones del periodo Actual.
Alfanumerica
Dato = Si estan liquidadas por la nomina y no acumuladas se debe Indicar L, si ya estan acumuladas se debe  hincar A

Prs:FuenteBVac Fuente de Donde se toman los valores de las Vacaciones del periodo Anterior
Alfanumerica
Dato = Si estan liquidadas por la nomina y no acumuladas se debe Indicar L, si ya estan acumuladas se debe  hincar A
Si se deja en blanco asume A, puesto que se supone que las vacaciones ya estan acumuladas

Fechas que Intervienen :

Para el caso de Primas en Diciembre

Prs:FiniBVac , Fecha Inicial Periodo anterior o sea Junio
Fecha
Dato = 1 de Junio del Ano de pago de la prima

Prs:FfinBVac, Fecha Final  Periodo anterior o sea Junio
Fecha
Dato = 30 de Junio del Ano de pago de la prima

Prs:FiniVac, Fecha Inicial periodo de prima Actual o sea Diciembre
Fecha
Dato = 1 de Diciembre del Ano de pago de la prima

Prs:FfinVac, Fecha Final periodo de prima Actual o sea Diciembre 
Fecha
Dato = 30 / 31 de Diciembre del Ano de pago de la prima (Según sea el caso)

Para el caso de Primas en Junio

Prs:FiniBVac , Fecha Inicial Periodo anterior o sea Diciembre
Fecha
Dato = 1 de Diciembre del Ano de pago de la prima

Prs:FfinBVac, Fecha Final  Periodo anterior o sea Diciembre
Fecha
Dato = 30/31 de Diciembre del Ano de pago de la prima (Según sea el caso)

Prs:FiniVac, Fecha Inicial periodo de prima Actual o sea Junio
Fecha
Dato = 1 de Junio del Ano de pago de la prima

Prs:FfinVac, Fecha Final periodo de prima Actual o sea Junio 
Fecha
Dato = 30 de Junio del Ano de pago de la prima 

Lo que quiere decir que esta fechas hay que moverlas en Cada Semestre. 

AFECTAR EL SALARIO PROMEDIO POR UN FACTOR

Para efectos del que el salario promedio calculado, sea cual fuera su modalidad, es decir con Agrupaciones de conceptos para promedio (Bsv) + Agrupaciones de conceptos en momento de liquidación (EXT) + suma o no del subsidio de transporte y se requiera que este salario promedio sea afectado por un factor, se debe de crear la variable del concepto :

ClaseSal , Clase de Salario a devolver
Alfanumerica
Dato = F 

Prs:factorDia, Factor por dia
Numerica
Dato = un factor multiplicado * 100
Por defecto si no se indica el sistema toma 23.83

Este caso , para  

1-.Las liquidaciones definitivas, basta con anteponerle  el prefijo LDF:
2-.Las consolidaciones,  basta con anteponerle  el prefijo PMC:

Caso: 3 Para el consolidado mensual, se requiere el sistema sólo tenga en cuenta los acumulados de horas extras desde el primero de enero del presente año hasta la fecha del consolidado y no que se devuelva un año completo.

Se inserta variable en el concepto de CONSOLIDACIÓN DE CESANTÍAS, la variable: Pmc:DiasbsvIPrm con S, para que haga los días Bsv sean iguales a los días del cálculo normal para el salario promedios.