sexta-feira, 29 de novembro de 2013

Programa Gera um movimento referente a desconto de refeição em movimento agrícola (movto_agric_det) - Colcam


/***************************************************************************************************************************
Este programa gerar um movimento referente a desconto de refeicao em movimento agricola (movto_agric_det).
Deve ser executado antes do calculo diario do ponto agricola e apos a importacao ou integracao do movimento do Colcam.
***************************************************************************************************************************/

def var i_emp_ini   as  int     format ">>9"        initial 0           label "De Empresa".
def var i_emp_fim   as  int     format ">>9"        initial 0           label "At‚".
def var i_est_ini   as  int     format ">>9"        initial 0           label "De Estab".
def var i_est_fim   as  int     format ">>9"        initial 0           label "At‚".
DEF VAR c_lotac_ini AS  CHAR    FORMAT "x(11)"      INITIAL ""          LABEL "De Lotac.".
DEF VAR c_lotac_fim AS  CHAR    FORMAT "x(11)"      INITIAL "ZZZZZZZZZZZ" LABEL "De Lotac.".
def var i_fun_ini   as  int     format ">>>>>>>9"   initial 1           label "De Matricula".
def var i_fun_fim   as  int     format ">>>>>>>9"   initial 99999999    label "At‚".
def var d_data_ini  as  date    format "99/99/9999" initial 01/01/0001  label "De data".
def var d_data_fim  as  date    format "99/99/9999" initial 12/31/9999  label "At‚".
DEF VAR i_servico   LIKE        movto_agric_det.cdn_serv_agric          LABEL "Servi‡o Refei‡Æo"    INITIAL 235 FORMAT ">>>>>>>>9".
DEF VAR v_valor     LIKE        movto_agric_det.val_serv_agric          LABEL "Valor Refei‡Æo"      INITIAL 2.5.

DEF VAR num_lancto  LIKE        movto_agric_det.num_lancto_movto_agric.

DEF BUFFER bf1_movto_agric_det FOR movto_agric_det.
DEF BUFFER bf2_movto_agric_det FOR movto_agric_det.

update "1 - Este procedimento deve ser executado antes do"
       "    c lculo do dia."
       "2 - Somente gerar  refei‡Æo para funcion rios com"
       "    movimento agr¡cola do tipo tarefa"
       SKIP (2)
       i_emp_ini    i_emp_fim
       i_est_ini    i_est_fim
       c_lotac_ini  c_lotac_fim
       i_fun_ini    i_fun_fim
       d_data_ini   d_data_fim  
       i_servico    v_valor            SKIP (1)
       with frame f_param overlay 2 COLUMN TITLE "Gerar Refei‡Æo" view-as dialog-box.

FOR EACH movto_agric_det NO-LOCK,
    EACH funcionario OF movto_agric_det NO-LOCK 
    WHERE movto_agric_det.cdn_empresa           >=  i_emp_ini
    AND   movto_agric_det.cdn_empresa           <=  i_emp_fim
    AND   movto_agric_det.cdn_estab             >=  i_est_ini
    AND   movto_agric_det.cdn_estab             <=  i_est_fim
    AND   movto_agric_det.cdn_funcionario       >=  i_fun_ini
    AND   movto_agric_det.cdn_funcionario       <=  i_fun_fim
    AND   movto_agric_det.dat_movto_agric       >=  d_data_ini
    AND   movto_agric_det.dat_movto_agric       <=  d_data_fim
    AND   movto_agric_det.idi_tip_serv_agric    =   1 /*Tarefa*/
    AND   funcionario.cod_unid_lotac            >=  c_lotac_ini
    AND   funcionario.cod_unid_lotac            <=  c_lotac_fim
    BREAK BY movto_agric_det.cdn_empresa
          BY movto_agric_det.cdn_estab
          BY movto_agric_det.cdn_funcionario
          BY movto_agric_det.dat_movto_agric:

    DISP movto_agric_det.cdn_empresa     SKIP  
         movto_agric_det.cdn_estab       SKIP
         movto_agric_det.cdn_funcionario SKIP
         movto_agric_det.dat_movto_agric
         WITH FRAME f_param.
    PAUSE 0.
    FIND bf1_movto_agric_det 
        WHERE bf1_movto_agric_det.cdn_empresa        =   movto_agric_det.cdn_empresa    
        AND   bf1_movto_agric_det.cdn_estab          =   movto_agric_det.cdn_estab      
        AND   bf1_movto_agric_det.cdn_funcionario    =   movto_agric_det.cdn_funcionario
        AND   bf1_movto_agric_det.dat_movto_agric    =   movto_agric_det.dat_movto_agric
        AND   bf1_movto_agric_det.cdn_serv_agric     =   i_servico
        NO-LOCK NO-ERROR.
    IF NOT AVAIL bf1_movto_agric_det 
    THEN DO:
        FIND LAST bf2_movto_agric_det USE-INDEX mvtgrcdt_id
            WHERE bf2_movto_agric_det.cdn_empresa        =   movto_agric_det.cdn_empresa    
            AND   bf2_movto_agric_det.cdn_estab          =   movto_agric_det.cdn_estab      
            AND   bf2_movto_agric_det.cdn_funcionario    =   movto_agric_det.cdn_funcionario
            AND   bf2_movto_agric_det.dat_movto_agric    =   movto_agric_det.dat_movto_agric
            NO-LOCK NO-ERROR.
        IF AVAIL bf2_movto_agric_det 
        THEN ASSIGN num_lancto = bf2_movto_agric_det.num_lancto_movto_agric + 1.
        ELSE ASSIGN num_lancto = 1.
         
        FIND serv_agric 
            WHERE serv_agric.cdn_empresa    =   movto_agric_det.cdn_empresa
            AND   serv_agric.cdn_serv_agric =   i_servico
            NO-LOCK NO-ERROR.

        CREATE bf1_movto_agric_det.
        ASSIGN 
            bf1_movto_agric_det.cdn_empresa             =   movto_agric_det.cdn_empresa    
            bf1_movto_agric_det.cdn_estab               =   movto_agric_det.cdn_estab      
            bf1_movto_agric_det.cdn_funcionario         =   movto_agric_det.cdn_funcionario
            bf1_movto_agric_det.dat_movto_agric         =   movto_agric_det.dat_movto_agric
            bf1_movto_agric_det.cdn_serv_agric          =   i_servico
            bf1_movto_agric_det.val_serv_agric          =   v_valor
            bf1_movto_agric_det.idi_tip_serv_agric      =   serv_agric.idi_tip_serv_agric
            bf1_movto_agric_det.idi_tip_unid_serv_agric =   serv_agric.idi_tip_unid_serv_agric
            bf1_movto_agric_det.idi_orig_movto_agric    =   1 /*Importado*/
            bf1_movto_agric_det.num_lancto_movto_agric  =   num_lancto.
    END.
END.

Nenhum comentário:

Postar um comentário