sexta-feira, 21 de março de 2014

Relatório de Movimento de Estoque Customizado EOF001RP.P



/****************************************************************************************************
**    Programa: eof001RP.P
**   Descricao: Relatorio Movto Estoque
**        Data: 21/04/2006
****************************************************************************************************/

{include/i-prgvrs.i eof001RP 1.00.00.000}

{utp/ut-glob.i}
/****************************  Definitions  ***************************/

&global-define programa eof001

/* definicao de variaveis locais */
 DEFINE TEMP-TABLE tt-ordem
          FIELD ordem-1   AS INTE  FORMAT "9999999999"
          FIELD ordem-2   AS INTE  FORMAT "9999999999"  
          FIELD ordem-3   AS INTE  FORMAT "999999"
          FIELD ordem-4   AS INTE  FORMAT "9999999"
          FIELD ordem-5   AS INTE  FORMAT "9999999"
          FIELD ordem-6   AS INTE  FORMAT "9999999"
          FIELD ordem-7   AS INTE  FORMAT "999999999"
          FIELD ordem-8   AS char  FORMAT "x(15)"
          FIELD ordem-9   AS char  FORMAT "x(15)"
          FIELD ordem-10  AS INTE  FORMAT "9"
          FIELD ordem-11  AS INTE  FORMAT "9999999"
          FIELD ordem-12  AS CHAR  FORMAT "99999999999999"
          FIELD ordem-13  AS INTE  FORMAT "9999999"
          FIELD ordem-14  AS INTE  FORMAT "99999"
          FIELD ordem-15  AS INTE  FORMAT "9999"
          FIELD ordem-16  AS INTE  FORMAT "9999999999"
          FIELD ordem-17  AS INTE  FORMAT "9999999999"
          FIELD ordem-18  AS INTE  FORMAT "9999999"
          FIELD ordem-19  AS INTE  FORMAT "99"
          FIELD ordem-20  AS INTE  FORMAT "99999999"
          FIELD ordem-21  AS INTE  FORMAT "9"
          FIELD ordem-22  AS INTE  FORMAT "999"
          FIELD ordem-23  AS INTE  FORMAT "999"
          FIELD ordem-24  AS INTE  FORMAT "99"
          FIELD ordem-25  AS INTE  FORMAT "9999999999"
          FIELD ordem-26  AS INTE  FORMAT "999999999"
          FIELD ordem-27  AS INTE  FORMAT "9999999"
          FIELD ordem-28  AS INTE  FORMAT "99"
          FIELD dia       AS INTE  FORMAT "99"
          FIELD mes       AS INTE  FORMAT "99"
          FIELD ano       AS INTE  FORMAT "9999"
          FIELD ordem-30  AS CHAR  FORMAT "x(10)"
          FIELD classe    AS INT   FORMAT "9".



define variable c-liter-par                     As Char Format "x(13)":U.
define variable c-liter-sel                     As Char Format "x(10)":U.
define variable c-liter-imp                     As Char Format "x(12)":U.    
define variable c-destino                       As Char Format "x(15)":U.
define variable h-acomp                         As Handle No-undo.
define variable c-valor                         as char format "x(15)":U.
DEFINE VARIABLE cod-ag                          AS CHAR FORMAT "x(15)":U.
/* definicao de temp-tables */

define temp-table tt-param no-undo
    field destino          as integer
    field arquivo          as char format "x(35)"
    field usuario          as char format "x(12)"
    field data-exec        as date
    field hora-exec        as integer
    field classifica       as integer
    field desc-classifica  as char format "x(40)"
    FIELD cod-estabel      AS CHAR FORMAT "x(03)"
    FIELD dt-ini           AS DATE FORMAT "99/99/9999"
    FIELD dt-fim           AS DATE FORMAT "99/99/9999"
    field c-deposito       as char.

define temp-table tt-digita no-undo
    field ordem            as integer   format ">>>>9"
    field exemplo          as character format "x(30)"
    index id ordem.

Def Temp-table tt-raw-digita
    Field raw-digita                    As Raw.

Def Input Param raw-param               As Raw No-undo.
Def Input Param Table For tt-raw-digita.

define buffer bf-tt-ordem for tt-ordem.

Create tt-param.
Raw-transfer raw-param To tt-param.

define variable sequencial        AS INTEGER   FORMAT "9999999999".
define variable cod-agente        AS CHARACTER FORMAT "x(10)" .
define variable mesano            AS CHARACTER FORMAT "x(6)".
define variable totreg            AS INTEGER   FORMAT "9999999" INITIAL 1.
define variable codinsta          AS CHAR      FORMAT "x(07)".
define variable datanota          AS CHAR      FORMAT "x(08)".
define variable dia               AS INTE      FORMAT "99".
define variable mes               AS INTE      FORMAT "99".
define variable ano               AS INTE      FORMAT "9999".
define variable i-it-codigo       AS INTEGER   NO-UNDO.
define variable i-cod-oper        AS INTEGER   NO-UNDO.
define variable i-esp-docto       as char Initial  "1,20,21,22,28" /* ,6,16,33"*/  .
define variable c-item-codigo     as char initial ",1,9,13645".
define variable v_de_valor_ent    as DECIMAL   FORMAT ">>>>>>>>>>9.9999" no-undo.
define variable v_de_valor_sai    as DECIMAL   FORMAT ">>>>>>>>>>9.9999" no-undo.
define variable v_de_quantidade   as DECIMAL   FORMAT ">>>>>>>>>>9.9999" no-undo.
define variable v_de_valor_prod   as DECIMAL   FORMAT ">>>>>>>>>>9.9999" no-undo.
DEFINE VARIABLE c_classe          AS INTEG     FORMAT "9" .
DEFINE VARIABLE fin-conta-entrada AS DECIMAL   FORMAT ">>>>>>>>>9.9999" .
DEFINE VARIABLE fin-conta-saida   AS DECIMAL   FORMAT ">>>>>>>>>9.9999" .
DEFINE VARIABLE fin-ini-proprio   AS DECIMAL   FORMAT ">>>>>>>>>9.9999".

def var h-handle as com-handle.
def var hreg-handle as com-handle.
DEF var fca-codigo  AS CHAR FORMAT "x(07)".
DEF VAR  ordem-12  AS CHAR FORMAT "x(14)".
def var fca-encontra as char.
DEF VAR fca-cgc      AS CHAR FORMAT "x(14)".
/*
create "excel.application" h-handle.
h-handle:Workbooks:OPEN("C:\anp\codigos_de_Instalacao_20060508.xls").
h-handle:Visible=YES. 
*/

{include/i-rpvar.i}

Find empresa Where empresa.ep-codigo = v_cdn_empres_usuar No-lock No-error.

Find First param-global No-lock No-error.

Assign c-empresa     = param-global.grupo
       c-programa    = "eof001RP":U
       c-versao      = "1.00":U
       c-revisao     = "000"
       c-destino     = {varinc/var00002.i 04 tt-param.destino}.

mesano   = string(month(tt-param.dt-ini),"99") + string(year(tt-param.dt-ini),"9999").
codinsta = "1029671"  /*"1029671" "1029671"*/.
            
Do On Stop Undo, Leave:    
    
    output  to value(tt-param.arquivo) page-size 0.

    Run utp/ut-acomp.p Persistent Set h-acomp.
    
    Run pi-inicializar In h-acomp (Input "":U).

    /*Run pi-processar In This-procedure ("").*/
    Run pi-processar In This-procedure ("1").
    Run pi-processar In This-procedure ("9").   
        
 FOR EACH tt-ordem WHERE tt-ordem.ordem-4 = 3020003.
     MESSAGE "tt-ordem.ordem-7 " tt-ordem.ordem-7 SKIP
             "tt-ordem.ordem-8 " tt-ordem.ordem-8 SKIP
             "tt-ordem.ordem-9 " tt-ordem.ordem-9 SKIP
         VIEW-AS ALERT-BOX INFO BUTTONS OK.
 END.

 put sequencial   at 1 
     "1044330975" at 11
     mesano       at 21
     totreg       at 27  skip.

for each tt-ordem no-lock.    

    run pi-acompanhar in h-acomp (input "Exportando Dados : " + string(tt-ordem.ordem-18)).

    put tt-ordem.ordem-1  at 1     /* 01 Contador Seq±encial                                       */
        tt-ordem.ordem-30 at 11    /* 02 Agente Regulado Informante                                */
        mesano            at 21    /* 03 M¼s de Refer¼ncia (MMAAAA)                                */    
        tt-ordem.ordem-4  at 27    /* 04 C½digo da Opera»’o                                        */
        tt-ordem.ordem-5  at 34    /* 05 C½digo da Instala»’o 1                                    */
        tt-ordem.ordem-6  at 41    /* 06 C½digo da Instala»’o 2                                    */
        tt-ordem.ordem-7  at 48    /* 07 C½digo do Produto Operado                                 */
        tt-ordem.ordem-8  at 57    /* 08 Qtde. do Produto Operado na Unidade de Medida Oficial ANP */
        tt-ordem.ordem-9  at 72    /* 08 Qtde. do Produto Operado em Quilogramas (kg)              */
        tt-ordem.ordem-10 at 87    /* 10 C½digo do Modal Utilizado na Movimenta»’o                 */
        tt-ordem.ordem-11 at 88    /* 11 C½digo do Ve­culo Utilizado no Modal                      */
        tt-ordem.ordem-12 at 95    /* 12 Identifica»’o do Terceiro Envolvido na Opera»’o           */
        tt-ordem.ordem-13 at 109   /* 13 C½digo do Munic­pio (Origem/Destino)                      */
        tt-ordem.ordem-14 at 116   /* 14 C½digo de atividade EconËmica do Terceiro                 */ 
        tt-ordem.ordem-15 at 121   /* 15 C½digo do Pa­s (Origem/Destino)                           */
        tt-ordem.ordem-16 at 125   /* 16 Nœmero da Licen»a de Importa»’o (LI)                      */
        tt-ordem.ordem-17 at 135   /* 17 Nœmero da Declara»’o de Importa»’o (DI)                   */
        tt-ordem.ordem-18 at 145   /* 18 Nœmero da Nota Fiscal da Opera»’o Comercial -             */
        tt-ordem.ordem-19 at 152   /* 19 C½digo da S²rie da Nota Fiscal da Opera»’o Comercial      */
        tt-ordem.dia      at 154   /* 20 Data da Opera»’o Comercial (DDMMAAAA)                     */
        tt-ordem.mes      at 156   /* 20 Data da Opera»’o Comercial (DDMMAAAA)                     */
        tt-ordem.ano      at 158   /* 20 Data da Opera»’o Comercial (DDMMAAAA)                     */
        tt-ordem.ordem-21 at 162   /* 21 C½digo do Servi»o Acordado (Dutos)                        */
        tt-ordem.ordem-22 at 163   /* 22 C½digo da Caracter­stica F­sico-Qu­mica do Produto        */
        tt-ordem.ordem-23 at 166   /* 23 C½digo do M²todo Utilizado para Aferi»’o da Caracter­stica*/ 
        tt-ordem.ordem-24 at 169   /* 24 C½digo da Unidade de Medida da Caracter­stica             */
        tt-ordem.ordem-25 at 171   /* 25 Valor Encontrado da Caracter­stica                        */
        tt-ordem.ordem-26 at 181   /* 26 C½digo do Produto/Opera»’o Resultante                     */
        tt-ordem.ordem-27 at 190   /* 27 Massa Espec­fica do Produto                               */
        tt-ordem.ordem-28 at 197   /* 28 Recipiente de GLP                                         */   
        skip.

    delete tt-ordem.
       
end.

/*sequencial = next-value(seq-anp,mgesp).*/

    run pi-finalizar In h-acomp.

end. /* Do On Stop Undo, Leave */

Procedure pi-processar:
Define Input  Parameter p-item As Character  No-undo.

for each movto-estoq use-index item-data  no-lock
    where movto-estoq.it-codigo    = p-item                and
          movto-estoq.cod-estabel  = tt-param.cod-estabel  and
          movto-estoq.dt-trans    >= tt-param.dt-ini       and
          movto-estoq.dt-trans    <= tt-param.dt-fim       AND 
    Lookup(string(movto-estoq.esp-docto), i-esp-docto) > 0 
 break by movto-estoq.it-codigo:

    run pi-acompanhar in h-acomp (input "Documento: " + movto-estoq.nro-docto).
    
    if (movto-estoq.esp-docto  = 28  /* REQ ---*/     or
        movto-estoq.esp-docto  = 22) /* NFS ---*/     and
        movto-estoq.tipo-trans = 1   /* Entrada ---*/ then next.

    if (movto-estoq.esp-docto  = 20  /* RFD ---*/     or
        movto-estoq.esp-docto  = 21) /* NFE ---*/     and
        movto-estoq.tipo-trans = 2   /* Saida ---*/   then next.

    if movto-estoq.quantidade = 0 then next.
    
    fca-codigo = "0000000".
    fca-cgc    = "00000000000000".
    /*
    find emitente of movto-estoq  no-lock no-error.
    if avail emitente THEN DO:
        ordem-12 = emitente.cgc.
        fca-encontra = h-handle:cells:FIND(ordem-12,,,,,,):activate no-error.
        if fca-encontra = ? then do:
           fca-codigo =  "0000000".
           fca-cgc    = STRING(emitente.cgc,"99999999999999").
         
        end.
        else do: 
           fca-codigo = h-handle:Cells(h-handle:selection:cells():row,h-handle:selection:cells():column - 1):VALUE.
           fca-codigo = string(fca-codigo,"9999999").
           fca-cgc    = STRING(emitente.cgc,"99999999999999").
        END.
    END.
    ELSE DO:
        fca-codigo = "0000000".
        fca-cgc    = "00000000000000" .
    END.
    */
        
    if movto-estoq.esp-docto  = 1 then 
       assign i-cod-oper      = 1021002     /* Producao propria */ 
              codinsta        = "1029671"
              v_de_valor_prod = v_de_valor_prod + movto-estoq.quantidade
              c_classe        = 1.  
    
/*     if movto-estoq.esp-docto  = 6 AND                                           */
/*        movto-estoq.tipo-trans = 1 then                                          */
/*        assign i-cod-oper      = 1021999 /* Outras entradas operacionais  ---*/  */
/*               codinsta        = "1029671"                                       */
/*               c_classe        = 1                                               */
/*               v_de_valor_ent  = v_de_valor_ent + movto-estoq.quantidade.        */
/*                                                                                 */
/*     if movto-estoq.esp-docto  = 16 AND                                          */
/*        movto-estoq.tipo-trans = 1 then                                          */
/*        assign i-cod-oper      = 1021999 /* Outras entradas operacionais  ---*/  */
/*               codinsta        = "1029671"                                       */
/*               c_classe        = 1                                               */
/*               v_de_valor_ent  = v_de_valor_ent + movto-estoq.quantidade.        */

    if (movto-estoq.esp-docto  = 20  /* RFD ---*/     or
        movto-estoq.esp-docto  = 21) /* NFE ---*/     then 
        assign i-cod-oper      = 1011999  /* outras entradas nao especificadas */ 
               codinsta        = "1029671"
               v_de_valor_ent  = v_de_valor_ent + movto-estoq.quantidade
               c_classe        = 1 .  

/*     if movto-estoq.cod-depos  = "17" and                                   */
/*        movto-estoq.esp-docto  = 33  AND                                    */
/*        movto-estoq.tipo-trans = 1   then                                   */
/*        assign i-cod-oper = 1021999 /* Outras entradas operacionais  ---*/  */
/*               codinsta   = "1029671"                                       */
/*               c_classe   = 1                                               */
/*          v_de_valor_ent  = v_de_valor_ent + movto-estoq.quantidade.        */
    
    if (movto-estoq.esp-docto  = 28  /* REQ ---*/     or
        movto-estoq.esp-docto  = 22) /* NFS ---*/     then 
        assign i-cod-oper      = 1012001    /* Venda para agente regulado */ 
               codinsta        = "1029671"
               v_de_valor_sai  = v_de_valor_sai + movto-estoq.quantidade
               c_classe        = 2 .  

    if movto-estoq.serie-docto = "qe" and 
       movto-estoq.tipo-trans = 2 then 
       assign i-cod-oper      = 1022004    /* Perdas de processo */    
              codinsta        = "1029671"
              c_classe        = 2
              v_de_valor_sai  = v_de_valor_sai + movto-estoq.quantidade.  

    if movto-estoq.cod-depos = "17" and
       movto-estoq.esp-docto  = 28    then
       assign i-cod-oper = 1012999 /* Outras saidas nao especificadas  ---*/
              codinsta   = "1029671"
              c_classe   = 2
              v_de_valor_sai  = v_de_valor_sai + movto-estoq.quantidade.
    
/*     if movto-estoq.cod-depos = "20" and                                       */
/*        movto-estoq.esp-docto  = 33  AND                                       */
/*        movto-estoq.tipo-trans = 2   then                                      */
/*        assign i-cod-oper = 1012999 /* Outras saidas nao especificadas  ---*/  */
/*               codinsta   = "1029671"                                          */
/*               c_classe   = 2                                                  */
/*               v_de_valor_sai  = v_de_valor_sai + movto-estoq.quantidade.      */


    if movto-estoq.it-codigo    = "1" then /* Alcool etilico hidratado comum ---*/
        assign i-it-codigo = 810101001.

    if movto-estoq.it-codigo    = "9" then /* etilico anidro padrao ---*/
        assign i-it-codigo = 810102003.
    
    if movto-estoq.it-codigo    = "13645" then /* Alcool etilico hidratado comum ---*/
        assign i-it-codigo = 810101001.
    
    assign c-valor = string((movto-estoq.quantidade * 1000),"999999999999999").    
   
    create tt-ordem.
    ASSIGN  tt-ordem.ordem-1  =  totreg                         /* 01 */ 
            tt-ordem.ordem-30  = "1044330975"                   /* 02 */         
            tt-ordem.ordem-4  =  i-cod-oper                     /* 04 */ 
            tt-ordem.ordem-5  =  integer(codinsta)              /* 05 */ 
            tt-ordem.ordem-6  =  integer(fca-codigo)            /* 06 */ 
            tt-ordem.ordem-7  =  i-it-codigo                    /* 07 */
            tt-ordem.ordem-8  =  c-valor                        /* 08 */
            tt-ordem.ordem-9  =  c-valor                        /* 09 */               
            tt-ordem.ordem-10 =  integer("1")                   /* 10 */
            tt-ordem.ordem-11 =  integer("0000000")             /* 11 */
            tt-ordem.ordem-12 =  fca-cgc                        /* 12 */
            tt-ordem.ordem-13 =  integer("0000000")             /* 13 */
            tt-ordem.ordem-14 =  integer("00000")               /* 14 */ 
            tt-ordem.ordem-15 =  integer("0000")                /* 15 */
            tt-ordem.ordem-16 =  integer("0000000000")          /* 16 */
            tt-ordem.ordem-17 =  integer("0000000000")          /* 17 */
            tt-ordem.ordem-18 =  integer(movto-estoq.nro-docto) /* 18 */
            tt-ordem.ordem-19 =  integer(4)                     /* 19 S‚rie t‚cnica */
            tt-ordem.ordem-21 =  integer("0")                   /* 21 */
            tt-ordem.ordem-22 =  integer("004")                 /* 22 */
            tt-ordem.ordem-23 =  integer("096")                 /* 23 */ 
            tt-ordem.ordem-24 =  integer("12")                  /* 24 õINPM */
            tt-ordem.ordem-25 =  integer("0000000000")          /* 25 */
            tt-ordem.ordem-26 =  integer("000000000")           /* 26 */
            tt-ordem.ordem-28 =  integer("00")                  /* 28 */
            tt-ordem.dia      =  day(movto-estoq.dt-trans)      /* 20 */
            tt-ordem.mes      =  month(movto-estoq.dt-trans)    /* 20 */
            tt-ordem.ano      =  year(movto-estoq.dt-trans)     /* 20 */
            totreg            = totreg + 1
            tt-ordem.classe   = c_classe.

    if last-of(movto-esto.it-codigo) then do:   
       run pi-tot-oper      in this-procedure (input i-cod-oper).
       run pi-saldo-inicial in this-procedure (input movto-esto.it-codigo).
       run pi-saldo-final   in this-procedure (input movto-esto.it-codigo).     
       run pi-totalizador   in this-procedure (input movto-esto.it-codigo).
       assign v_de_valor_sai  = 0
              v_de_valor_ent  = 0
              v_de_valor_prod = 0.
    end.
end.
End Procedure.

Procedure pi-saldo-inicial:
DEFINE INPUT  PARAMETER p-it-codigo AS CHARACTER  NO-UNDO.

  v_de_quantidade = 0.0000.
  fin-ini-proprio = 0.0000.
  For each sl-it-per No-lock
   Use-index per-item      
     Where sl-it-per.periodo    >= (tt-param.dt-ini - 30)
       and sl-it-per.periodo    <= tt-param.dt-ini
       And sl-it-per.it-codigo   = p-it-codigo
       And sl-it-per.cod-estabel = tt-param.cod-estabel
       /*And sl-it-per.cod-depos   = tt-param.c-deposito*/ :
       assign v_de_quantidade = v_de_quantidade + sl-it-per.quantidade.
  End.
  
  assign i-cod-oper = 3010003 /* Estocagem Inicial Sem movimentacao ---*/
         c-valor    = string((v_de_quantidade * 1000),"999999999999999").  
  fin-ini-proprio = v_de_quantidade.
MESSAGE fin-ini-proprio
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
  create tt-ordem.
  assign  tt-ordem.ordem-1  =  totreg                         /* 01 */
          tt-ordem.ordem-30  =  "1044330975"                  /* 02 */
          tt-ordem.ordem-4  =  i-cod-oper                     /* 04 */
          tt-ordem.ordem-5  =  integer(codinsta)              /* 05 */
          tt-ordem.ordem-6  =  integer("0000000")             /* 06 */
          tt-ordem.ordem-7  =  i-it-codigo                    /* 07 */
          tt-ordem.ordem-8  =  c-valor                        /* 08 */
          tt-ordem.ordem-9  =  c-valor                        /* 09 */
          tt-ordem.ordem-10 =  integer("1")                   /* 10 */
          tt-ordem.ordem-11 =  integer("0000000")             /* 11 */
          tt-ordem.ordem-12 =  "00000000000000"               /* 12 */
          tt-ordem.ordem-13 =  integer("0000000")             /* 13 */
          tt-ordem.ordem-14 =  integer("00000")               /* 14 */ 
          tt-ordem.ordem-15 =  integer("0000")                /* 15 */
          tt-ordem.ordem-16 =  integer("0000000000")          /* 16 */
          tt-ordem.ordem-17 =  integer("0000000000")          /* 17 */
          tt-ordem.ordem-18 =  integer(0)                     /* 18 */
          tt-ordem.ordem-19 =  integer(4)                     /* 19 S‚rie £nica */
          tt-ordem.ordem-21 =  integer("0")                   /* 21 */
          tt-ordem.ordem-22 =  integer("004")                 /* 22 */
          tt-ordem.ordem-23 =  integer("096")                 /* 23 */ 
          tt-ordem.ordem-24 =  integer("12")                  /* 24 õINPM */
          tt-ordem.ordem-25 =  integer("0000000000")          /* 25 */
          tt-ordem.ordem-26 =  integer("000000000")           /* 26 */
          tt-ordem.ordem-28 =  integer("00")                  /* 28 */
          tt-ordem.dia      =  day(movto-estoq.dt-trans)      /* 20 */
          tt-ordem.mes      =  month(movto-estoq.dt-trans)    /* 20 */
          tt-ordem.ano      =  year(movto-estoq.dt-trans)     /* 20 */
          totreg            = totreg + 1.
End Procedure.

Procedure pi-saldo-final:
DEFINE INPUT  PARAMETER p-it-codigo AS CHARACTER  NO-UNDO.
define variable v_de_vl_final as decimal FORMAT ">>>>>>>>>>9.9999"   no-undo.
DEF VAR inout-codigo AS INTEGER. 
if p-it-codigo    = "1" then /* Alcool etilico hidratado comum ---*/
    assign inout-codigo = 810101001.
if p-it-codigo = "9" THEN
    assign inout-codigo = 810102003.
    
fin-conta-entrada = 0.
fin-conta-saida   = 0.

FOR EACH tt-ordem  WHERE tt-ordem.ordem-7 = inout-codigo AND
                         tt-ordem.ordem-4 <>  3010003.
    IF tt-ordem.classe = 1 THEN
        fin-conta-entrada = fin-conta-entrada + int(tt-ordem.ordem-8).
    IF tt-ordem.classe = 2 THEN
        fin-conta-saida   = fin-conta-saida   + int(tt-ordem.ordem-8).
END.

   ASSIGN fin-ini-proprio = fin-ini-proprio * 1000.
   assign v_de_vl_final = (fin-ini-proprio + (fin-conta-entrada - fin-conta-saida)).

  assign i-cod-oper    = 3020003. /* Estocagem Final Sem movimentacao ---*/
        /*  v_de_vl_final = v_de_vl_final - v_de_valor_sai. */
         
         if v_de_vl_final > 0 then
            assign c-valor       = string((v_de_vl_final),"999999999999999").  
         else
            assign c-valor       = string((v_de_vl_final),"-99999999999999"). 

  create tt-ordem.
  assign  tt-ordem.ordem-1  =  totreg                         /* 01 */
          tt-ordem.ordem-30  =  "1044330975"                  /* 02 */
          tt-ordem.ordem-4  =  i-cod-oper                     /* 04 */
          tt-ordem.ordem-5  =  integer(codinsta)              /* 05 */
          tt-ordem.ordem-6  =  integer("0000000")             /* 06 */
          tt-ordem.ordem-7  =  i-it-codigo                    /* 07 */
          tt-ordem.ordem-8  =  c-valor                        /* 08 */
          tt-ordem.ordem-9  =  c-valor                        /* 09 */
          tt-ordem.ordem-10 =  integer("1")                   /* 10 */
          tt-ordem.ordem-11 =  integer("0000000")             /* 11 */
          tt-ordem.ordem-12 =  "00000000000000"               /* 12 */
          tt-ordem.ordem-13 =  integer("0000000")             /* 13 */
          tt-ordem.ordem-14 =  integer("00000")               /* 14 */ 
          tt-ordem.ordem-15 =  integer("0000")                /* 15 */
          tt-ordem.ordem-16 =  integer("0000000000")          /* 16 */
          tt-ordem.ordem-17 =  integer("0000000000")          /* 17 */
          tt-ordem.ordem-18 =  integer(0)                     /* 18 */
          tt-ordem.ordem-19 =  integer(4)                     /* 19 S‚rie ‚nica */
          tt-ordem.ordem-21 =  integer("0")                   /* 21 */
          tt-ordem.ordem-22 =  integer("004")                 /* 22 */
          tt-ordem.ordem-23 =  integer("096")                 /* 23 */ 
          tt-ordem.ordem-24 =  integer("12")                  /* 24 õINPM */
          tt-ordem.ordem-25 =  integer("0000000000")          /* 25 */
          tt-ordem.ordem-26 =  integer("000000000")           /* 26 */
          tt-ordem.ordem-28 =  integer("00")                  /* 28 */
          tt-ordem.dia      =  day(movto-estoq.dt-trans)      /* 20 */
          tt-ordem.mes      =  month(movto-estoq.dt-trans)    /* 20 */
          tt-ordem.ano      =  year(movto-estoq.dt-trans)     /* 20 */
          totreg            = totreg + 1.


End Procedure.

Procedure pi-totalizador:
DEFINE INPUT  PARAMETER p-it-codigo AS CHARACTER  NO-UNDO.
DEF VAR inout-codigo AS INTEGER. 
if p-it-codigo    = "1" then /* Alcool etilico hidratado comum ---*/
    assign inout-codigo = 810101001.
if p-it-codigo = "9" THEN
    assign inout-codigo = 810102003.
    
fin-conta-entrada = 0.
fin-conta-saida   = 0.

FOR EACH tt-ordem  WHERE tt-ordem.ordem-7 = inout-codigo.
    if substring(string(tt-ordem.ordem-4),5,3) = "998" or 
       substring(string(tt-ordem.ordem-4),1,2) = "30"  then next.

    IF tt-ordem.classe = 1 THEN
        fin-conta-entrada = fin-conta-entrada + int(tt-ordem.ordem-8).
    ELSE
        fin-conta-saida   = fin-conta-saida   + int(tt-ordem.ordem-8).
END.
  
  assign i-cod-oper    = 4011998. /* Controle Total Geral Entradas ---*/
  create tt-ordem.
  assign  tt-ordem.ordem-1  =  totreg                                       /* 01 */
          tt-ordem.ordem-30  =  "1044330975"                                /* 02 */
          tt-ordem.ordem-4  =  i-cod-oper                                   /* 04 */
          tt-ordem.ordem-5  =  integer(codinsta)                            /* 05 */
          tt-ordem.ordem-6  =  integer("0000000")                           /* 06 */
          tt-ordem.ordem-7  =  inout-codigo                                 /* 07 */
          tt-ordem.ordem-8  =  STRING(fin-conta-entrada,"999999999999999")  /* 08 */
          tt-ordem.ordem-9  =  STRING(fin-conta-entrada,"999999999999999")  /* 09 */
          tt-ordem.ordem-10 =  integer("1")                                 /* 10 */
          tt-ordem.ordem-11 =  integer("0000000")                           /* 11 */
          tt-ordem.ordem-12 =  "00000000000000"                             /* 12 */
          tt-ordem.ordem-13 =  integer("0000000")                           /* 13 */
          tt-ordem.ordem-14 =  integer("00000")                             /* 14 */ 
          tt-ordem.ordem-15 =  integer("0000")                              /* 15 */
          tt-ordem.ordem-16 =  integer("0000000000")                        /* 16 */
          tt-ordem.ordem-17 =  integer("0000000000")                        /* 17 */
          tt-ordem.ordem-18 =  integer(movto-estoq.nro-docto)               /* 18 */
          tt-ordem.ordem-19 =  integer(4)                                   /* 19 S²rie ‚nica */
          tt-ordem.ordem-21 =  integer("0")                                 /* 21 */
          tt-ordem.ordem-22 =  integer("004")                               /* 22 */
          tt-ordem.ordem-23 =  integer("096")                               /* 23 */ 
          tt-ordem.ordem-24 =  integer("12")                                /* 24 õINPM */
          tt-ordem.ordem-25 =  integer("0000000000")                        /* 25 */
          tt-ordem.ordem-26 =  integer("000000000")                         /* 26 */
          tt-ordem.ordem-28 =  integer("00")                                /* 28 */
          tt-ordem.dia      =  day(movto-estoq.dt-trans)                    /* 20 */
          tt-ordem.mes      =  month(movto-estoq.dt-trans)                  /* 20 */
          tt-ordem.ano      =  year(movto-estoq.dt-trans)                   /* 20 */
          totreg            = totreg + 1.

       assign i-cod-oper    = 4012998. /* Controle Total Geral Saidas ---*/
       
  create tt-ordem.
  assign  tt-ordem.ordem-1  =  totreg                                    /* 01 */
          tt-ordem.ordem-30  =  "1044330975"                             /* 02 */
          tt-ordem.ordem-4  =  i-cod-oper                                /* 04 */
          tt-ordem.ordem-5  =  integer(codinsta)                         /* 05 */
          tt-ordem.ordem-6  =  integer("0000000")                        /* 06 */
          tt-ordem.ordem-7  =  inout-codigo                              /* 07 */
          tt-ordem.ordem-8  =  string(fin-conta-saida,"999999999999999") /* 08 */
          tt-ordem.ordem-9  =  string(fin-conta-saida,"999999999999999") /* 09 */
          tt-ordem.ordem-10 =  integer("1")                              /* 10 */
          tt-ordem.ordem-11 =  integer("0000000")                        /* 11 */
          tt-ordem.ordem-12 =  "00000000000000"                          /* 12 */
          tt-ordem.ordem-13 =  integer("0000000")                        /* 13 */
          tt-ordem.ordem-14 =  integer("00000")                          /* 14 */ 
          tt-ordem.ordem-15 =  integer("0000")                           /* 15 */
          tt-ordem.ordem-16 =  integer("0000000000")                     /* 16 */
          tt-ordem.ordem-17 =  integer("0000000000")                     /* 17 */
          tt-ordem.ordem-18 =  integer(0)                                /* 18 */
          tt-ordem.ordem-19 =  integer(4)                                /* 19 S²rie ‚nica */
          tt-ordem.ordem-21 =  integer("0")                              /* 21 */
          tt-ordem.ordem-22 =  integer("004")                            /* 22 */
          tt-ordem.ordem-23 =  integer("096")                            /* 23 */ 
          tt-ordem.ordem-24 =  integer("12")                             /* 24 õINPM */
          tt-ordem.ordem-25 =  integer("0000000000")                     /* 25 */
          tt-ordem.ordem-26 =  integer("000000000")                      /* 26 */
          tt-ordem.ordem-28 =  integer("00")                             /* 28 */
          tt-ordem.dia      =  day(movto-estoq.dt-trans)                 /* 20 */
          tt-ordem.mes      =  month(movto-estoq.dt-trans)               /* 20 */
          tt-ordem.ano      =  year(movto-estoq.dt-trans)                /* 20 */
          totreg            = totreg + 1.

End Procedure.




procedure pi-tot-oper:

DEFINE INPUT  PARAMETER p-it-codigo AS CHARACTER  NO-UNDO.
define variable v_de_totalizador as DECIMAL FORMAT ">>>>>>>>>>9.9999"  no-undo.
for each bf-tt-ordem WHERE  bf-tt-ordem.ordem-7 = i-it-codigo 
    break by bf-tt-ordem.ordem-4:

    if substring(string(bf-tt-ordem.ordem-4),5,3) = "998" or 
       substring(string(bf-tt-ordem.ordem-4),1,2) = "30"  then next.

 assign v_de_totalizador = v_de_totalizador + dec(bf-tt-ordem.ordem-8)
        c-valor = string(v_de_totalizador,"999999999999999").
   
 if last-of(bf-tt-ordem.ordem-4) then do:
  assign i-cod-oper    = int(substring(string(bf-tt-ordem.ordem-4),1,4) + "998"). /* Total Operacional ---*/

  create tt-ordem.
  assign  tt-ordem.ordem-1  =  totreg                         /* 01 */
          tt-ordem.ordem-30  =  "1044330975"                  /* 02 */
          tt-ordem.ordem-4  =  i-cod-oper                     /* 04 */
          tt-ordem.ordem-5  =  integer(codinsta)              /* 05 */
          tt-ordem.ordem-6  =  integer("0000000")             /* 06 */
          tt-ordem.ordem-7  =  i-it-codigo                    /* 07 */
          tt-ordem.ordem-8  =  c-valor                        /* 08 */
          tt-ordem.ordem-9  =  c-valor                        /* 09 */
          tt-ordem.ordem-10 =  integer("1")                   /* 10 */
          tt-ordem.ordem-11 =  integer("0000000")             /* 11 */
          tt-ordem.ordem-12 =  "00000000000000"               /* 12 */
          tt-ordem.ordem-13 =  integer("0000000")             /* 13 */
          tt-ordem.ordem-14 =  integer("00000")               /* 14 */ 
          tt-ordem.ordem-15 =  integer("0000")                /* 15 */
          tt-ordem.ordem-16 =  integer("0000000000")          /* 16 */
          tt-ordem.ordem-17 =  integer("0000000000")          /* 17 */
          tt-ordem.ordem-18 =  integer(0)                     /* 18 */
          tt-ordem.ordem-19 =  integer(4)                     /* 19 S‚rie £nica */
          tt-ordem.ordem-21 =  integer("0")                   /* 21 */
          tt-ordem.ordem-22 =  integer("004")                 /* 22 */
          tt-ordem.ordem-23 =  integer("096")                 /* 23 */ 
          tt-ordem.ordem-24 =  integer("12")                  /* 24 õINPM */
          tt-ordem.ordem-25 =  integer("0000000000")          /* 25 */
          tt-ordem.ordem-26 =  integer("000000000")           /* 26 */
          tt-ordem.ordem-28 =  integer("00")                  /* 28 */
          tt-ordem.dia      =  day(movto-estoq.dt-trans)      /* 20 */
          tt-ordem.mes      =  month(movto-estoq.dt-trans)    /* 20 */
          tt-ordem.ano      =  year(movto-estoq.dt-trans)     /* 20 */
          totreg            = totreg + 1
          v_de_totalizador  = 0.
 end.
end.
end procedure.

Nenhum comentário:

Postar um comentário