quinta-feira, 28 de novembro de 2013

Programa Gera os arquivos de Funcionários para serem atualizados no PIMS / Colcam



def var emp_ini             as int  format 999              initial 1           label "De".
def var emp_fim             as int  format 999              initial 5           label "Ate".
def var est_ini             as int  format 999              initial 1           label "De".
def var est_fim             as int  format 999              initial 999         label "Ate".
def var cs_ini              as int  format 9                initial 1           label "De".
def var cs_fim              as int  format 9                initial 9           label "Ate".
def var func_ini            as int  format 99999999         initial 1           label "De".
def var func_fim            as int  format 99999999         initial 99999999    label "Ate".
DEF VAR dt_ini              AS DATE FORMAT "99/99/9999"     INITIAL 01/01/0001  LABEL "De".
DEF VAR dt_fim              AS DATE FORMAT "99/99/9999"     INITIAL 12/31/9999  LABEL "Ate".
DEF VAR dt_ini_desligto     AS DATE FORMAT "99/99/9999"     INITIAL 01/01/2004  LABEL "De".

DEF VAR c_saida1    AS CHAR FORMAT "x(70)"  INITIAL "y:\exp\Func_Fixo.txt"  LABEL "Saida Mensalista......".
DEF VAR c_saida2    AS CHAR FORMAT "x(70)"  INITIAL "y:\exp\func_Rural.txt" LABEL "Saida Tarefeiro.........".

DEF VAR fg_freq_pgto    AS  INT.
DEF VAR fg_situacao     AS  CHAR    FORMAT "X".
DEF VAR fg_sexo         AS  CHAR    FORMAT "X".
DEF VAR cd_classe       AS  CHAR    FORMAT "XX".
DEF VAR cd_func         AS  INT     FORMAT "999999999".
DEF VAR cd_transp       AS  CHAR    FORMAT "x(05)".
DEF VAR cd_turma        AS  CHAR    FORMAT "x(05)".
DEF VAR c_dat_desligto_func AS  CHAR    FORMAT "x(10)".
def var cd_horario      as  char    format "99999".
def var cd_escala       as  char    format "999999".
def var dt_ini_esca     as  char    format "x(10)".
DEF VAR d_salario_func  AS  DEC.
DEF VAR fc_digito       AS  CHAR FORMAT "x(01)".

def var i_qtde      as int.
def var i_movto as int.

def stream s_saida1.
def stream s_saida2.

REPEAT:
    ASSIGN dt_ini_desligto  =   DATE (MONTH(TODAY),01,YEAR(TODAY)).

    update  "Este programa gerar  os arquivos de Funcion rios para serem atualizados no PIMS / Colcam"  SKIP (1)
            "Empresa "              emp_ini         AT  22  emp_fim     AT  40  skip
            "Estabelecimento"       est_ini         AT  22  est_fim     AT  40  skip
            "Categ.Salarial"        cs_ini          AT  22  cs_fim      AT  40  skip
            "Matr¡cula"             func_ini        AT  22  func_fim    AT  40  skip
            "Admitidos"             dt_ini          AT  22  dt_fim      AT  40  SKIP
            "Desligados a partir"   dt_ini_desligto AT  22                      SKIP
            "---------- Destino ----------" SKIP
            with frame pede VIEW-AS DIALOG-BOX TITLE "Sele‡Æo".

    UPDATE  c_saida1 with frame pede with SIDE-LABELS view-as DIALOG-BOX SCROLLABLE.

    output stream s_saida1 TO VALUE (c_saida1) CONVERT TARGET SESSION:CHARSET.

    FOR EACH funcionario no-lock,
        EACH rh_pessoa_fisic OF funcionario
        where funcionario.cdn_empresa           >=  emp_ini
        and   funcionario.cdn_empresa           <=  emp_fim
        and   funcionario.cdn_estab             >=  est_ini
        and   funcionario.cdn_estab             <=  est_fim
        AND   funcionario.cdn_categ_sal         >=  cs_ini
        AND   funcionario.cdn_categ_sal         <=  cs_fim
        and   funcionario.cdn_funcionario       >=  func_ini
        and   funcionario.cdn_funcionario       <=  func_fim
        BREAK BY funcionario.num_pessoa_fisic
              BY funcionario.dat_admis_func
              BY funcionario.cdn_empresa
              BY funcionario.cdn_estab
              BY funcionario.cdn_funcionario:

        disp funcionario.num_pessoa_fisic
             funcionario.dat_admis_func
             funcionario.cdn_empresa 
             funcionario.cdn_estab 
             funcionario.cdn_funcionario 
             funcionario.cdn_categ_sal
             with frame func view-as dialog-box.
        pause 0.
        
        IF funcionario.dat_desligto_func    <>  ? 
        THEN DO:
            IF funcionario.dat_desligto_func    <  dt_ini_desligto 
            THEN NEXT.
        END.
        ELSE DO:
            IF funcionario.dat_admis_func   <   dt_ini  
            THEN NEXT.
            IF funcionario.dat_admis_func   >   dt_fim  
            THEN NEXT.
        END.

        ASSIGN fg_freq_pgto                     =   1 /* 1 - hora funcionario.cdn_categ_sal*/
               fg_situacao                      =   IF funcionario.dat_desligto_func     =   ?
                                                    THEN "V"
                                                    ELSE "D"
               c_dat_desligto_func              =   IF funcionario.dat_desligto_func     =   ?
                                                    THEN ""
                                                    ELSE STRING (funcionario.dat_desligto_func,"99/99/9999")
               fg_sexo                          =   IF funcionario.idi_sexo = 1 THEN "M" ELSE "F"                                          
               cd_func                          =   int (string (funcionario.cdn_estab,"999") + string (funcionario.cdn_funcionario,"999999") )
               cd_transp                        =   "0"
               cd_turma                         =   IF funcionario.cdn_categ_sal = 5 
                                                    THEN substring(funcionario.cod_unid_lotac,6,3)
                                                    ELSE ""
               cd_classe                        = "1"
               d_salario_func                   = funcionario.val_salario_atual.



        find first func_lotac_interv_refei of funcionario no-error.
        if not avail func_lotac_interv_refei then next.
        assign cd_horario  = "100"
               cd_escala   = string (func_lotac_interv_refei.cdn_turno_trab,"9999") + string (func_lotac_interv_refei.cdn_turma_trab,"99") 
               dt_ini_esca = string (func_lotac_interv_refei.dat_inic_lotac_func_turno_trab,"99/99/9999").

        IF funcionario.dat_desligto_func = ? THEN DO:
           FIND FIRST sit_afast_func OF funcionario  
                WHERE sit_afast_func.cdn_sit_afast_func = 81
                   OR sit_afast_func.cdn_sit_afast_func = 83
                   OR sit_afast_func.cdn_sit_afast_func = 84
                   OR sit_afast_func.cdn_sit_afast_func = 85
                   OR sit_afast_func.cdn_sit_afast_func = 87
                   OR sit_afast_func.cdn_sit_afast_func = 88
                   OR sit_afast_func.cdn_sit_afast_func = 89
                   OR sit_afast_func.cdn_sit_afast_func = 91
                   NO-LOCK NO-ERROR.
                   IF AVAIL sit_afast_func THEN
                      ASSIGN c_dat_desligto_func = string(sit_afast_func.dat_term_sit_afast,"99/99/9999")
                             fg_situacao         = "D".
        END.

        IF cd_turma = "" THEN DO:
             ASSIGN cd_turma  = "99999"
                    cd_classe = "10".
        END.

        IF funcionario.cdn_estab = 10 THEN DO:
           ASSIGN d_salario_func = 0.
        END.

        /*
        IF funcionario.cdn_estab = 50 THEN DO:
           ASSIGN d_salario_func = 13.42
                  fg_freq_pgto   = 2.
        END.
        */

        IF cd_classe = "10" 
        THEN ASSIGN fc_digito = string(funcionario.num_digito_verfdor_func).
        ELSE ASSIGN fc_digito = "".

        PUT STREAM s_saida1
            funcionario.cdn_funcionario                                     FORMAT  "999999"                /* codigo do funcionario */
            funcionario.num_digito_verfdor_func
            ";"
            funcionario.cod_rh_ccusto                                       FORMAT  "999999"                /*cd_custo = c.custo*/  
            ";"                                                            
            funcionario.cdn_cargo_basic                                     FORMAT  "999"                   /*cd_cargo = nivel*/
            "00"                                                                                            /* nivel */
            ";"
            SUBSTRING (funcionario.nom_pessoa_fisic,1,40)                   FORMAT  "x(40)"                 /*de_func = nome*/
            ";"
            fg_freq_pgto                                                    FORMAT  "9"                     /*categoria salarial*/
            ";"
            d_salario_func                                                  FORMAT  "99999.99999"           /*salario atual*/
            ";"
            fg_situacao                                                     FORMAT  "X"                     /*fg_situacao = Ativo*/
            ";"
            "99"                                                                                            /* cd_lotacao fixo 99 proxima */
            ";"
            "P"                                                             FORMAT  "X"                     /*fg_prop_terc = Pr¢prio*/
            ";"
            cd_transp                                                       FORMAT  "99999"                 /*cd_transp*/
            ";"
            fg_sexo                                                         FORMAT  "X"                     /* sexo */
            ";"
            rh_pessoa_fisic.dat_nascimento                                  FORMAT  "99/99/9999"            /* dt nascimento */
            ";"
            cd_classe                                                       FORMAT  "99"                    /*cd_classe 1 - rural */
            ";"
            cd_turma                                                                                        /* codigo turma */   
            ";"
            rh_pessoa_fisic.nom_ender_rh                                    FORMAT  "x(40)"                 /* endereco */
            ";"
            ""                                                              FORMAT  "999"                   /*cd_munic*/ /*rh_pessoa_fisic.nom_cidad_rh*/
            ";"
            rh_pessoa_fisic.cod_cep_rh                                                                      /* cep */
            ";"
            SUBSTRING (funcionario.cod_cart_trab,5,6)                       FORMAT  "X(06)"                 /* CTPS */
            SUBSTRING (funcionario.cod_ser_cart_trab,4,5)                   FORMAT  "X(05)"                 /* CTPS */
            SUBSTRING (funcionario.cod_unid_federac_cart_trab,1,2)          FORMAT  "X(02)"                 /* CTPS */
            ";"
            funcionario.dat_admis_func                                      FORMAT  "99/99/9999"            /* dt admissao */
            ";"
            funcionario.cdn_sindicato                                                                       /* sindicato */
            ";"
            c_dat_desligto_func                                             FORMAT  "XXXXXXXXXX"            /* dt rescisao */
            ";"
            cd_horario                                                      FORMAT  "99999"                 /* codigo horario */
            ";"
            ""                                                                                              /* codigo escala */
            ";"
            ""                                                                                              /* dt inicio escala */
            ";"
            ""                                                                                              /* dt fim experiencia */
            ";"
            ""                                                                                              /* controle vcto experiencia */
            ";"
            ""                                                                                              /* codigo da rescisao */
            ";"
            funcionario.cdn_funcionario                                     FORMAT  "999999"                /* codigo do funcionario */
            fc_digito
            ";"
            funcionario.cdn_empresa                                                                         /* codigo da empresa */
            ";"
            funcionario.cod_rh_ccusto                                       FORMAT  "999999"                /*cd_custo = c.custo*/  
            ";"                                                            
            STRING (funcionario.cdn_estab,"999")   FORMAT "x(03)"                                           /* cod unid. negocio - estb */
            ";"
            "P"                                                                                             /*fg_tp_contrato*/
            ";"
            funcionario.cod_id_feder                                                                        /* id funcionario - cpf */
            ";"
            "S"                                                                                             /*fg_dsr_fer_perd*/
            SKIP.
        END.
    output stream s_saida1 CLOSE.
END.

hide frame func.
 

Nenhum comentário:

Postar um comentário