ASIGNATURA ROUTINE if Prs:Debug RRU:NOMBRE = ' ASIGNATURA HSL:TPSALARIO ' & HSL:TPSALARIO & ' Prs:AgrupEMPMD ' & Prs:AgrupEMPMD & ' Prs:AgrupEMPMM ' & Prs:AgrupEMPMM ADD(RRU) end CASE UPPER(clip(HSL:TPSALARIO)) OF 'D' LOC:AGRUPA = Prs:AgrupEMPMD OF 'M' LOC:AGRUPA = Prs:AgrupEMPMM ELSE EXIT END Loc:SlrBscPrd = O_SALEMPM(emp:empleado,HSL:CNSEMD,HSL:TPSALARIO,LOC:AGRUPA) if Prs:Debug RRU:NOMBRE = ' ASIGNATURA HSL:TPSALARIO ' & HSL:TPSALARIO & ' Prs:AgrupEMPMD ' & Prs:AgrupEMPMD & ' Prs:AgrupEMPMM ' & Prs:AgrupEMPMM ADD(RRU) end Loc:SlrBscPrd = Loc:SlrBscPrd * TNM:HRS_DIA * TNM:DIAS_P if Prs:Debug RRU:NOMBRE = ' FIN ASIGNATURA SALARIO PERIODO ' & Loc:SlrBscPrd & ' TNM:HRS_DIA ' & TNM:HRS_DIA & ' TNM:DIAS_P ' & TNM:DIAS_P ADD(RRU) end FUNCION O_SALEMPM PROCESO ROUTINE hslfactor$ = 0 case Upper(clip(IN:TPSALARIO)) OF 'D' DO HORACATEDRA OF 'M' DO HORACATEDRA LOC:VALOR /= 240 end IF LOC:DEBUG RRU:NOMBRE = ' TIPO SALARIO ' & IN:TPSALARIO & ' LOC:VALOR ' & LOC:VALOR ADD(RRU) END HORACATEDRA ROUTINE LOC:VALOR = 0 LOC:FILTRADO = | 'SELECT * FROM EMPM ' & | ' WHERE ' & | ' EMPM.EMPLEADO = ' & FNSQLFMT(in:EMPLEADO) & ' AND ' & | ' EMPM.CNSEMPH = ' & FNSQLFMT(in:CNSEMD) & ' AND ' & | ' EMPM.ASIGNATRURA IN(SELECT CAD.CONCEPTO FROM CAD ' & | ' WHERE ' & | ' CAD.AGRUPACION = ' & FnSqlFmt(IN:Agrupacion) & | ') ' IF LOC:DEBUG RRU:NOMBRE = ' HORACATEDRA FILRADO EMPM ' & CLIP(LOC:FILTRADO) ADD(RRU) END EMPM{PROP:SQL} = | CLIP(LOC:FILTRADO) IF ERRORCODE() THEN STOP(ERRORCODE() & ' ' & FILEERROR()). LOOP IF ACCESS:EMPM.NEXT() THEN BREAK. IF LOC:DEBUG RRU:NOMBRE = ' Despues de Verificar CAD CONCEPTO ' & CLIP(EMPM:ASIGNATRURA) & ' VALOR ' & EMPM:VALOR & ' IND_SALARIO ' & EMPM:IND_SALARIO & | ' EMPM:TIPO ' & EMPM:TIPO ADD(RRU) END ! IF EMPM:IND_SALARIO = FALSE THEN CYCLE. LOC:VALOR += EMPM:VALOR IF LOC:DEBUG RRU:NOMBRE = ' Despues de encontrar LOC:VALOR ' & LOC:VALOR & ' EMPM:VALOR ' & EMPM:VALOR ADD(RRU) END END FLEXIBLE ROUTINE if Prs:Debug RRU:NOMBRE = ' FLEXIBLE HSL:TPSALARIO ' & HSL:TPSALARIO & ' Prs:AgrupEMPC ' & Prs:AgrupEMPC ADD(RRU) end CASE UPPER(clip(HSL:TPSALARIO)) OF 'F' LOC:AGRUPA = Prs:AgrupEMPC ELSE EXIT END IF CLIP(LOC:AGRUPA) <= '' THEN EXIT. Loc:FLEXIBLE = O_SALEMPC(emp:empleado,HSL:CNSEMPB,HSL:TPSALARIO,LOC:AGRUPA) if Prs:Debug RRU:NOMBRE = ' SALARIO ' & Loc:SlrBscPrd & ' HSL:CNSEMPB ' & HSL:CNSEMPB & ' HSL:TPSALARIO ' & HSL:TPSALARIO & ' AGRUPACION ' & LOC:AGRUPA & | ' Loc:FLEXIBLE ' & Loc:FLEXIBLE& ' Prs:TipoFlex ' & Prs:TipoFlex ADD(RRU) end CASE CLIP(UPPER(Prs:TipoFlex)) ! 20/02/2014 LF EXELA OF 'M' Loc:SlrBscPrd += LOC:FLEXIBLE if Prs:Debug RRU:NOMBRE = ' SALARIO PERIODO ' & Loc:SlrBscPrd & ' LOC:FLEXIBLE ' & LOC:FLEXIBLE ADD(RRU) end OF 'SF' Loc:SlrBscPrd = LOC:FLEXIBLE if Prs:Debug RRU:NOMBRE = ' SALARIO PERIODO ' & Loc:SlrBscPrd & ' LOC:FLEXIBLE ' & LOC:FLEXIBLE ADD(RRU) end ELSE LOC:FLEXIBLE = (LOC:FLEXIBLE / TNM:HORS_POR_MES) * TNM:HRS_DIA * TNM:DIAS_P Loc:SlrBscPrd += LOC:FLEXIBLE if Prs:Debug RRU:NOMBRE = ' SALARIO PERIODO ' & Loc:SlrBscPrd & ' LOC:FLEXIBLE ' & LOC:FLEXIBLE ADD(RRU) end END FUNCION O_SALEMPC LOC:VALOR = 0 LOC:FILTRADO = | 'Select * FROM EMPC ' & | ' WHERE ' & | ' EMPC.EMPLEADO = ' & FNSQLFMT(in:EMPLEADO) & ' AND ' & | ' EMPC.CNSEMPB = ' & FNSQLFMT(in:CNSEMD) IF LOC:DEBUG RRU:NOMBRE = ' FILTRADO EMPC ' & CLIP(LOC:FILTRADO) ADD(RRU) END EMPC{PROP:SQL} = | CLIP(LOC:FILTRADO) IF ERRORCODE() THEN STOP(ERRORCODE() & ' ' & FILEERROR()). LOOP IF ACCESS:EMPC.NEXT() THEN BREAK. IF LOC:DEBUG RRU:NOMBRE = ' CONCEPTO ' & CLIP(EMPC:CONCEPTO) & ' VALOR ' & EMPC:VALOR ADD(RRU) END DO VERIFICA_CAD IF LOC:DEBUG RRU:NOMBRE = ' CONCEPTO ' & CLIP(EMPC:CONCEPTO) & ' VALOR ' & EMPC:VALOR & ' encontro# ' & encontro# ADD(RRU) END IF encontro# = 0 THEN CYCLE. LOC:VALOR += EMPC:VALOR IF LOC:DEBUG RRU:NOMBRE = ' LOC:VALOR ' & LOC:VALOR & ' EMPC:VALOR ' & EMPC:VALOR ADD(RRU) END END VERIFICA_CAD ROUTINE encontro# = 0 qcadl:concepto = CLIP(EMPC:CONCEPTO) get(qcadl,qcadl:concepto) if error() then exit. encontro# = 1 IF LOC:DEBUG RRU:NOMBRE = ' CONCEPTO ' & CLIP(EMPC:CONCEPTO) & ' ENCONTRO EN AGRUPACION ' & encontro# ADD(RRU) END AGRUPACION ROUTINE loc:filtrado = | 'SELECT * FROM CAD ' & | 'WHERE ' & | 'CAD.AGRUPACION = ' & FNSQLFMT(IN:Agrupacion) & ' AND ' & | 'CAD.CONCEPTO > ' & FNSQLFMT(' ') & ' ' & | 'ORDER BY CAD.CONCEPTO' IF LOC:DEBUG RRU:NOMBRE = ' FILTRADO CAD ' & CLIP(LOC:FILTRADO) ADD(RRU) END CAD{PROP:SQL} = | CLIP(LOC:FILTRADO) IF ERRORCODE() THEN STOP(ERRORCODE() & ' ' & FILEERROR()). Loop IF ACCESS:CAD.next() then break. qcadl:concepto = cad:concepto get(qcadl,qcadl:concepto) if error() qcadl:concepto = cad:concepto qcadl:porcent = cad:porcent qcadl:signo = cad:signo add(qcadl,qcadl:concepto) end end