quinta-feira, 28 de novembro de 2013

Programa Gera o arquivo com as Situções de Afastamentos e Férias do período informado, para serem atualizados no PIMS / Colcam



def var emp_ini             as int  format 999              initial 10          label "De".
def var emp_fim             as int  format 999              initial 10          label "Ate".
def var est_ini             as int  format 999              initial 50          label "De".
def var est_fim             as int  format 999              initial 50          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/2004  LABEL "De".
DEF VAR dt_fim              AS DATE FORMAT "99/99/9999"     INITIAL 12/31/9999  LABEL "Ate".

DEF VAR c_saida1    AS CHAR FORMAT "x(70)"  INITIAL "c:\temp\AfastFer.txt" LABEL "Situa‡äes".

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

ASSIGN dt_ini = DATE (MONTH(TODAY),01,YEAR(TODAY)).

update  "Este programa gerar  o arquivo com as situa‡äes de Afastamentos e F‚rias," SKIP
        "do per¡odo informado, para serem atualizados no PIMS / Colcam"             SKIP (1)
        "Empresa "              emp_ini     AT  25  emp_fim     AT  45  skip
        "Estabelecimento"       est_ini     AT  25  est_fim     AT  45  skip
        "Categ.Salarial"        cs_ini      AT  25  cs_fim      AT  45  skip
        "Matr¡cula"             func_ini    AT  25  func_fim    AT  45  skip
        "F‚rias ou Afastamento" dt_ini      AT  25  dt_fim      AT  45  SKIP
        "---------- Destino ----------" SKIP
        with frame pede with SIDE-LABELS view-as DIALOG-BOX SCROLLABLE.

ASSIGN c_saida1 = "c:\temp\AfastFer_" + STRING(dt_ini,"99999999") + ".txt".

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

def stream s_saida1.

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

DEF VAR cd_func         AS  INT     FORMAT "99999999999".
DEF VAR fg_fer_afa      AS  CHAR    FORMAT "X".

FOR EACH  ag-situac                          NO-LOCK
   WHERE  ag-situac.ep-codigo               >= emp_ini
    AND   ag-situac.ep-codigo               <= emp_fim
    AND   ag-situac.es-codigo               >= est_ini
    AND   ag-situac.es-codigo               <= est_fim
    AND   ag-situac.dt-inicio               >= dt_ini
    AND   ag-situac.dt-fim                  <= dt_fim:

IF (ag-situac.af-codigo = 11 OR
    ag-situac.af-codigo = 12)
THEN DO:
    IF ag-situac.dt-fim - ag-situac.dt-inicio <= 15  THEN NEXT.
END.
   

FIND funcionario WHERE funcionario.cdn_funcionario = ag-situac.fc-codigo NO-LOCK NO-ERROR.

IF NOT AVAIL funcionario THEN NEXT.

FIND ag-afast WHERE ag-afast.af-codigo = ag-situac.af-codigo NO-LOCK NO-ERROR.

    disp funcionario.cdn_empresa 
         funcionario.cdn_estab 
         funcionario.cdn_funcionario 
         funcionario.num_pessoa_fisic
         with frame func view-as dialog-box.
    pause 0.
    
    IF  ag-situac.dt-inicio   >   dt_fim
    THEN NEXT.
        
    IF  ag-situac.dt-fim      <   dt_ini 
    THEN NEXT.
           
    IF ag-situac.af-codigo = 14 
    THEN ASSIGN fg_fer_afa  =   "F".
    ELSE ASSIGN fg_fer_afa  =   "A".

    ASSIGN cd_func  =   funcionario.num_pessoa_fisic.

    DISP fg_fer_afa
         cd_func
        WITH FRAME func.
    PAUSE 0.
                                                    
    PUT STREAM s_saida1
        funcionario.cdn_funcio
        ";"
        fg_fer_afa                                                      FORMAT  "x"                     /*tipo situa‡Æo*/
        ";"
        ag-situac.dt-inicio                                             FORMAT  "99/99/9999"
        ";"
        ag-situac.dt-fim                                                FORMAT  "99/99/9999"
        ";"
        ag-situac.af-codigo
        ";"
        ""
        SKIP.
    Pause 0.
end.

hide frame func.

Nenhum comentário:

Postar um comentário