;** Rm_0020  *******************************************************************
;*  Extrato Movimentacao de Estoque                                            *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 25/05/2001 por Anivel Augusto Rodrigues
;Ultima Alteracao: 02/06/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Totais
;Alterado em     : 29/06/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao ImpriArq()
;Ultima Alteracao: 23/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Custo Total centavos
;Ultima Alteracao: 03/07/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DTREF
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 12/09/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 15/10/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data Inicial e Data Final
;Ultima Alteracao: 07/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Impressao
;Ultima Alteracao: 23/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Imprimir Item sem Movimentacao S/N
;Ultima Alteracao: 11/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes VSDGREFERENCIA
;Ultima Alteracao: 04/08/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Exportar p/ Arquivo
;Ultima Alteracao: 02/12/2009 por Cleber Alves
;Motivo Alteracao: Ajustes Exportar p/ Arquivo
;Ultima Alteracao: 21/06/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes nos Campos CUSTO UNITARIO
;Ultima Alteracao: 16/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tipo de documento       
;Ultima Alteracao: 28/01/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes parar ordenar balan‡o "ZERAMENTO/BALANCO" 
;Ultima Alteracao: 10/02/2014 por Bruno Carvalho
;Motivo Alteracao: Add "Data", na rotina onde ‚ montado o SORT da Tabela - Imprimir()
;Ultima Alteracao: 15/01/2015 por Luis Gustavo
;Motivo Alteracao: Ajustes na Proc Imprimir(), quando selecionava um periodo em que a data inicial nao tinha saldo inicial, nao gerava o relatorio
;Ultima Alteracao: 05/02/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes alinhamento de totais  
;Ultima Alteracao: 27/03/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes verificar se a Data Inicial = BlankDate() 
;Ultima Alteracao: 18/09/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado verificacao de Mes/Ano fechado "Existe_Mes_Ano_Fechado()" 
;Ultima Alteracao: 04/11/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes CalcMovto() onde ‚ verifica o tipo de opera‡Æo
;Ultima Alteracao: 10/11/2015 por Bruno Carvalho
;Motivo Alteracao: Refazendo no SCAN da proc Imprimir() os calculos das entradas e saidas conforme o custo unit rio
;Ultima Alteracao: 10/11/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado campo saldo inicial para permitr mais caracteres  
;Ultima Alteracao: 24/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valor inicial sem saldo
;Ultima Alteracao: 25/06/2016 por Bruno Carvalho
;Motivo Alteracao: Removido Link nos Report "RM_0020A" e ajustado dados na tabela TabelaExt                  
;Ultima Alteracao: 08/07/2016 por Kamila Gomes
;Motivo Alteracao: Adicionado Sys_Valor()
;Ultima Alteracao: 10/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 26/10/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado REG_TIPO[""] p/ DESCRICAO_TPITEM, onde havia erro se tipo n„o localizado
;Ultima Alteracao: 26/10/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado p/ ImpriArq e removido ASP1+ASP2 e foi adicionado Tabela_ERRO_ITEM
;Ultima Alteracao: 09/11/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado controle de escolha do usu rio p/ processamento das informa‡äes -> ESCOLHA_USUARIO ("V" ou "A")                
;Ultima Alteracao: 19/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes alinhamento total empresa
;Ultima Alteracao: 04/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes layout impressao
;Ultima Alteracao: 22/08/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ RM_0020 e RM_0020S ser apenas um £nico script
;Ultima Alteracao: 06/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes seramento saldo diferen‡a centavos
;Ultima Alteracao: 08/10/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes DESCRICAO_TPITEM na proc SubTotal()

;*******************************************************************************
;* Rotina p/ Impressao                                                         *
;*******************************************************************************
Proc Imprimir()
AGUARDE("Aguarde, processando dados")

If Not IsAssigned(NOMEMPRESA) Then NOMEMPRESA="" EndIf

MES_AUX = AlinhM(StrVal(Month(VSDGDTFIM)),2)
ANO_AUX = StrVal(Year(VSDGDTFIM))
VSDGMESANO = MES_AUX+"."+ANO_AUX                  ;Utiliza no Relat¢rio de Erros
                            
TabelaExt=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\Rm_0020A" TabelaExt
Empty(TabelaExt)

Tabela_ERRO_ITEM = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\RM_REPRO" Tabela_ERRO_ITEM
Empty Tabela_ERRO_ITEM

Print File ARQIMP CI_15CPP+"\n"
If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
   Then If VSDGOPRELANALSINT="2"
           Then If CI_15CPP="\027x0\015"
                   Then Print File ARQIMP Chr(27)+"M"+"\n"
                   Else Print File ARQIMP Chr(27)+"(s17.5H"+"\n"
                EndIf
        EndIf
EndIf

NR = NRecords(Tabela)

View NoWindow "\\Sistemas\\Cadastro\\Empresas"
View NoWindow "\\Sistemas\\Estoque\\Itens"
View NoWindow "\\Sistemas\\Estoque\\TpItem"
View NoWindow Tabela
View Tabela_ERRO_ITEM
Coedit TabelaExt
Moveto Tabela

EMPANT   = "****"
TIPOANT  = "****"
PRODANT  = "****"
DESPROD  = "****"
pag =0
lin =0
wc  =0
wcit=0

Ctot=0
Cuni=0
scontit=0
tcontit=0

TotIQtd = 0
TotEQtd = 0
TotSQtd = 0
TotAQtd = 0

Scan For [Codigo do Item] <> ""
  Barra(NR, RecNo())
  Aguarde("Aguarde, processando relatorio "+BARRA_STRING)

  ;---- Informa‡äes sobre o CUSTO ----------------------------------------------
  If [Tipo do Movimento]="S" 
     Then ; Saida 
          If [Saida Qtde]=BlankNum() Or [Saida Qtde]=0
             Then CUSTO         = [Saida CTot]
                  [Saida CTot ] = CUSTO
                  [Saida CUnit] = CUSTO
             Else CUSTO         = NDecimal([Saida CTot]/[Saida Qtde],5)                 
                  [Saida CTot ] = NDecimal([Saida Qtde]*CUSTO,2)
                  [Saida CUnit] = CUSTO
          EndIf
     Else ; Entrada 
          If [Entrada Qtde]=BlankNum() Or [Entrada Qtde]=0       
              Then CUSTO           = [Entrada CTot]
                   [Entrada CTot ] = CUSTO
                   [Entrada CUnit] = CUSTO        
              Else CUSTO           = NDecimal([Entrada CTot]/[Entrada Qtde],5)
                   [Entrada CTot ] = NDecimal([Entrada Qtde]*CUSTO,2)
                   [Entrada CUnit] = CUSTO
          EndIf  
  EndIf

  If [Codigo da Empresa]<>EMPANT
     Then If Not IsAssigned(DESCRICAO_TPITEM)
             Then DESCRICAO_TPITEM=""
                  GetRecord "\\Sistemas\\Estoque\\TpItem" TIPOANT To REG_TIPO
                  If RetVal
                     Then DESCRICAO_TPITEM = REG_TIPO["Descricao Tipo do Item"]
                     Else DESCRICAO_TPITEM = "????"
                  EndIf
          EndIf
          TotalItem()
          SubTotal()
          Total()

          EMPANT =[Codigo da Empresa]
          GetRecord "\\Sistemas\\Cadastro\\Empresas" EMPANT To REG_EMPRESA
          If Not RetVal
             Then REG_EMPRESA=""
          EndIf

          Moveto TABELA
          Cabecalho()
          Grupo_Empresa()
          wc=0
  EndIf

  If [Tipo do Item]<>TIPOANT
     Then TIPOANT=[Tipo do Item]
          DESCRICAO_TPITEM=""
          GetRecord "\\Sistemas\\Estoque\\TpItem" TIPOANT To REG_TIPO
          If RetVal
             Then DESCRICAO_TPITEM = REG_TIPO["Descricao Tipo do Item"]
             Else DESCRICAO_TPITEM = "????"
          EndIf
          TotalItem()
          SubTotal()
          
          Moveto TABELA
          Grupo_TpItem()
          wc=0
  EndIf
         
  If [Codigo do Item   ]<>PRODANT
     Then TotalItem()

          NDOC   =[Numero do Documento]  
          PRODANT=[Codigo do Item     ]
          DESPROD=[Descricao do Item  ]
          
          If VSDGCOMPLEMENTO="C"
             Then GetRecord "\\Sistemas\\Estoque\\Itens" PRODANT To REG_COMPITEM
                  If Not RetVal
                     Then REG_COMPITEM=""
                  EndIf
          EndIf
          CopyToArray REG_TAB

          Grupo_Item()
          
          If Search("INICIAL",[Numero do Documento])>0
             Then IQtde=NDecimal([Qtde Inicial ],3)
                  ICTot=NDecimal([Ctot Inicial ],2)
                  ICUni=NDecimal([CUnit Inicial],5)

                  Qtde=NDecimal([Qtde Inicial ],3)
                  CTot=NDecimal([Ctot Inicial ],2)
                  CUni=NDecimal([CUnit Inicial],5)

             Else IQtde=0  Qtde=0
                  ICTot=0  CTot=0
                  ICUni=0  CUni=0
                  
                  Moveto Tabela_ERRO_ITEM
                  End If [Codigo do Item]<>"" Then Down EndIf
                  [Codigo da Empresa] = EMPANT 
                  [Codigo do Item   ] = PRODANT
                  [Descricao do Item] = DESPROD
                  [MSG_Erro         ] = "SEM SALDO INICIAL EM "+Alinhm(strval(month(VSDGDTINI)),2)+"/"+Alinhm(strval(year(VSDGDTINI)),4)
                  Moveto TABELA 
          EndIf
          wc  =1
          wcit=0
          PrimeiraVez=True
          scontit=scontit+1
          tcontit=tcontit+1
            
  EndIf

  Switch
    Case REFDTINI<>VSDGDTINI:
      If [Data]<VSDGDTINI
         Then CalcMovto()
              Loop
      EndIf
      If [Data]>=VSDGDTINI And Primeiravez
         Then Primeiravez=False

              IQtde=Qtde
              ICTot=Ctot
              ICUni=Cuni

              If VSDGOPRELANALSINT="1"
                 Then DetalheIni("INICIAL:",VSDGDTINI)
                      wcit=wcit+1
              EndIf

              EQtde=0     SQtde=0
              ECtot=0     SCtot=0
              ECUni=0     SCUni=0

      EndIf
  EndSwitch
  CalcMovto()

  If VSDGOPRELANALSINT="1"
     Then Detalhe()
          wcit=wcit+1
  EndIf
           
EndScan
TotalItem()
SubTotal()
Total()
Do_It!
ClearAll

If Not IsEmpty(Tabela_ERRO_ITEM) 
   Then Aguarde("Aguarde, relat¢rio de inconsistˆncia") 
        Mensagem("O Sistema detectou inconsistˆncia de dados, referente ao Estoque "+MES_AUX+"."+StrVal(ANO_AUX)+"//Ser  exibido um Relat¢rio dos mesmos !//")
        PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        IMPRIREL(Tabela_ERRO_ITEM,"R")
EndIf
AGUARDE("Aguarde, liberando saida")

EndProc   ;  (Imprimir)

;*******************************************************************************
;* Rotina p/ Calculo movimento                                                 *
;*******************************************************************************
Proc CalcMovto()

If [Tipo do Movimento] = "E"
   Then 
        EQtde=NDecimal(EQtde+[Entrada Qtde],3)
        ECtot=NDecimal(ECtot+[Entrada CTot],2)
        ECUni=NDecimal(ECtot/EQtde,5)

        Qtde =NDecimal(Qtde +[Entrada Qtde],3)
        Ctot =NDecimal(Ctot +[Entrada CTot],2)
endif
If [Tipo do Movimento] = "S"
 then   
        SQtde=NDecimal(SQtde+[Saida Qtde],3)
        SCtot=NDecimal(SCtot+[Saida CTot],2)
        SCUni=NDecimal(SCtot/SQtde,5)
        
        If [Tipo de Operacao]="O"
           Then Qtde =NDecimal(Qtde-[Saida Qtde],3)
                Ctot =NDecimal(Ctot-[Saida CTot],2)
           Else Qtde =NDecimal(Qtde-[Saida Qtde],3)
                If Qtde=0
                   Then Ctot = 0
                   Else Ctot =NDecimal(Ctot-[Saida CTot],2)
                EndIf   
        EndIf       
EndIf     

If Qtde=0 And (Ctot>=-0.15 And Ctot<=0.15)
   Then Ctot=0
EndIf                     

CUni =NDecimal(Ctot/Qtde,5)

EndProc

;*******************************************************************************
;* Rotina p/ Cabecalho                                                         *
;*******************************************************************************
Proc ChecaLinhaPagina(Tp)
Private Tp
If lin>=60
   Then If wc>0
           Then While True
                  If OPCAOPAG<>"Todas"
                     Then If pag<OPCAOPAGINI Or
                             pag>OPCAOPAGFIM
                             Then QuitLoop
                          EndIf
                  EndIf
                  Print File ARQIMP "\f"+"\n"
                  QuitLoop
                EndWhile
        Endif
        Cabecalho()
        Grupo_Empresa()
        If Tp<>"Total"
           Then Grupo_TpItem()
        EndIf
        If Tp<>"Total" and
           Tp<>"SubTotal"
           Then Grupo_Item()
        EndIf
EndIf
EndProc
      
;*******************************************************************************
;* Rotina p/ Cabecalho                                                         *
;*******************************************************************************
Proc Cabecalho()
While True
  pag=pag+1

  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf
  
  ;---- Cabe‡alho p/ Extrato SEM movimenta‡Æo de CUSTO ------------------------- 
  If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
     Then Print File ARQIMP CI_15CPP+CI_6LPP+"\n"
          Print File ARQIMP Fill("-",132)+"\n"
          Print File ARQIMP COMPLETA(NOMEMPRESA,93," ")+"Emissao.: "+
                            Format("D10",Today())+"-"+
                            AlinhM(LTrim(Time()),8)+"   Pag.:"+Format("W4,EIC",pag)+"\n"
          Print File ARQIMP Fill("-",132)+"\n\n"
          
          If VSDGOPRELANALSINT="1" Then 
          Print File ARQIMP Spaces(35)+"Analitico da Movimentacao do Estoque de "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM)+"\n\n"
          Print File ARQIMP "Item                           _Entradas__ ___Saidas___ ___Saldos___                                                   "+"\n"
          Print File ARQIMP "   Data     Documento     TOp   Quantidade   Quantidade   Quantidade Origem/Destino                                    "+"\n"
          Print File ARQIMP "----------  ------------- ---- ----------- ------------ ------------ "+Fill("-",60)+"\n"
       
          Else
          Print File ARQIMP Spaces(35)+"Sintetico da Movimentacao do Estoque de "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM)+"\n\n"
          Print File ARQIMP "                                             ___Inicial__ __Entradas__ ___Saidas___ ____Atual___ "+"\n"
          Print File ARQIMP "Item                                      Un   Quantidade   Quantidade   Quantidade   Quantidade "+"\n"
          Print File ARQIMP "----------------------------------------- -- ------------ ------------ ------------ ------------ "+"\n" 
          EndIf
  EndIf

  ;---- Cabe‡alho p/ Extrato COM movimenta‡Æo de CUSTO -------------------------
  If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO" Then
    If VSDGOPRELANALSINT="1" Then 
       Print File ARQIMP Fill("-",137)+"\n"
       Print File ARQIMP COMPLETA(NOMEMPRESA,90," ")+"Emissao.: "+
                         AlinhM(LTrim(Format("D13",Today())),10)+"-"+
                         AlinhM(LTrim(Time()),8)+"         Pag.:"+Format("W4,EIC",pag)+"\n"
                       
       Print File ARQIMP Fill("-",137)+"\n\n"
       Print File ARQIMP Spaces(32)+"Analitico da Movimentacao do Estoque de "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM)+"\n\n"
       Print File ARQIMP "Item                     ______________Entradas_____________ _______________Saidas_______________ "+
                              "________________Saldos_________________"+"\n"
       Print File ARQIMP "Dia   Documento     TOp   Quantidade  Ct.Unitario   Ct.Total   Quantidade  Ct.Unitario   Ct.Total "+
                              "    Quantidade  Ct.Unitario    Ct.Total"+"\n"
       Print File ARQIMP "----- ------------- ---- ----------- ------------ ---------- ------------ ------------ ---------- "+
                              "-------------- ------------ -----------"+"\n"
       Else 
       Print File ARQIMP Fill("-",160)+"\n"
       Print File ARQIMP COMPLETA(NOMEMPRESA,118," ")+"Emissao.: "+
                         AlinhM(LTrim(Format("D13",Today())),10)+"-"+
                         AlinhM(LTrim(Time()),8)+"    Pag.:"+Format("W4,EIC",pag)+"\n"
       Print File ARQIMP Fill("-",160)+"\n\n"
       Print File ARQIMP Spaces(42)+"Sintetico da Movimentacao do Estoque de "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM)+"\n\n"
       Print File ARQIMP "                                             ________Inicial__________ _______Entradas________ ________Saidas_________ "+
       "________________Atual__________________"+"\n"
       Print File ARQIMP "Item                                      Un     Quantidade   Ct.Total   Quantidade   Ct.Total   Quantidade   Ct.Total "+
       "     Quantidade  Ct.Unitario   Ct.Total"+"\n"
       Print File ARQIMP "----------------------------------------- -- -------------- ---------- ------------ ---------- ------------ ---------- "+
       "--------------- ------------ ----------"+"\n"
                         ;1234567890 123456789012345678901234567890 XX999.999.999,999 777.777,779.999.999,999 777.777,779.999.999,999 777.777,77
       ;  9.999.999,999  8.888,88888 777.777,77
    EndIf
  EndIf
  QuitLoop
EndWhile

If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
   Then lin=9
   Else lin=10
EndIf   
                                                                         
EndProc   ; (Cabecalho)

;*******************************************************************************
;* Rotina p/ Detalhe                                                           *
;*******************************************************************************
Proc DetalheIni(tp,dtref)
private tp,dtref

ChecaLinhaPagina("")
While True
  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf


  If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
     Then Print File ARQIMP CI_INEG+Format("D13",dtref)+" "
          Print File ARQIMP COMPLETA(tp,31," ")
          Print File ARQIMP Format("W13.3,EIC",BlankNum())
          Print File ARQIMP Format("W13.3,EIC",Qtde)
          Print File ARQIMP CI_FNEG+"\n"
  EndIf
     
  If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO" 
     Then Print File ARQIMP CI_INEG+SubStr(Format("D10",dtref),1,5)+" "
          Print File ARQIMP COMPLETA(tp,30," ")
          Print File ARQIMP Format("W13.5,EIC",BlankNum())
          Print File ARQIMP Format("W11.2,EIC",BlankNum())
          Print File ARQIMP Format("W13.3,EIC",BlankNum())
          Print File ARQIMP Format("W13.5,EIC",BlankNum())
          Print File ARQIMP Format("W11.2,EIC",BlankNum())
          Print File ARQIMP Format("W15.3,EIC",Qtde)
          Print File ARQIMP Format("W13.5,EIC",CUni)
          Print File ARQIMP Format("W12.2,EIC",CTot)
          Print File ARQIMP CI_FNEG+"\n"
  EndIf
  QuitLoop
EndWhile
lin=lin+1
EndProc    ;  (Detalhe)

;*******************************************************************************
;* Rotina p/ Detalhe                                                           *
;*******************************************************************************
Proc Detalhe()

ChecaLinhaPagina("")
While True
  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf
  
  If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
     Then Print File ARQIMP Format("D13",[Data])+"  "
          Print File ARQIMP COMPLETA([Tipo do Documento ],4," ")+" "
          Print File ARQIMP COMPLETA([Numero do Documento],8," ")+" "
          Print File ARQIMP COMPLETA([CFO],4," ")
          Print File ARQIMP Format("W12.3,EIC",[Entrada Qtde])
          Print File ARQIMP Format("W13.3,EIC",[Saida Qtde])
          Print File ARQIMP Format("W13.3,EIC",Qtde)
          
          ;Solicitado por #0204#
          Switch
            Case SubStr([CFO],1,3) = "S/C" :
                 GetRecord "\\Sistemas\\Faccao\\Pfacc" [Numero do Documento] To Obs
                 If Retval And [Tipo do Documento] = "PROG"
                    Then Obs = Completa(Obs["Destino_Producao"],20," ")+"|"+Obs["Razao Social"]
                    Else Obs = [Descricao Origem_Destino]
                 EndIf
          
            Case SubStr([CFO],1,3) = "E/D" :
                 GetRecord "\\Sistemas\\Faccao\\Rfacc" [Numero do Documento] To Obs
                 If Retval And [Tipo do Documento] = "PROD"
                    Then Obs = Completa(Obs["Destino_Producao"],20," ")+"|"+Obs["Razao Social"]
                    Else Obs = [Descricao Origem_Destino]
                 EndIf   
               
            OtherWise : Obs = [Descricao Origem_Destino]
                        pos = searchfrom("|",obs,1)
                        switch
                          case pos=1 : obs=fill(" ",20)+obs
                          case pos>1 : obs=completa(substr(obs,1,pos-1),20, " ")+substr(obs,pos,50)
                        endswitch
          EndSwitch     
          Print File ARQIMP " "+Obs
          Print File ARQIMP "\n"
          
          TotEQtd = TotEQtd + [Entrada Qtde]
          TotSQtd = TotSQtd + [Saida Qtde]
  EndIf        
    
  If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
     Then Print File ARQIMP SubStr(Format("D10",[Data]),1,5)+" "
          Print File ARQIMP COMPLETA([Tipo do Documento ],4," ")+" "
          Print File ARQIMP COMPLETA([Numero do Documento],8," ")+" "
          Print File ARQIMP COMPLETA([CFO],4," ")
          Print File ARQIMP Format("W12.3,EIC",[Entrada Qtde])
          Print File ARQIMP Format("W13.5,EIC",[Entrada CUnit])
          Print File ARQIMP Format("W11.2,EIC",[Entrada CTot])
          Print File ARQIMP Format("W13.3,EIC",[Saida Qtde])
          Print File ARQIMP Format("W13.5,EIC",[Saida CUnit])
          Print File ARQIMP Format("W11.2,EIC",[Saida CTot])
          Print File ARQIMP Format("W15.3,EIC",Qtde)
          Print File ARQIMP Format("W13.5,EIC",CUni)
          Print File ARQIMP Format("W12.2,EIC",CTot)
          Print File ARQIMP "\n"
  EndIf
  
  QuitLoop
EndWhile
lin=lin+1
EndProc    ;  (Detalhe)

;*******************************************************************************
;* Rotina p/ SubTotal                                                          *
;*******************************************************************************
Proc TotalItem()
ChecaLinhaPagina("")

If wc>0
   Then While True
          If OPCAOPAG<>"Todas"
             Then If pag<OPCAOPAGINI Or
                     pag>OPCAOPAGFIM
                     Then QuitLoop
                  EndIf
          EndIf

          If REFDTINI<>VSDGDTINI
             Then If Primeiravez
                     Then Primeiravez=False

                          IQtde=Qtde
                          ICTot=Ctot
                          ICUni=Cuni

                          EQtde=0  SQtde=0
                          ECtot=0  SCtot=0
                          ECUni=0  SCUni=0

                  EndIf
          EndIf

          ;---- Extrato SEM movimenta‡Æo de CUSTO ------------------------------
          If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO" Then
          If VSDGOPRELANALSINT="1"
             Then Switch
                   Case wcit>1:
                     Print File ARQIMP CI_INEG+COMPLETA("    Total Item...",29," ")
                     Print File ARQIMP Format("W13.3,EIC",EQtde)
                     Print File ARQIMP Format("W13.3,EIC",SQtde)
                     Print File ARQIMP Format("W13.3,EIC",Qtde)
                     Print File ARQIMP Ci_FNEG+"\n"
                     
                   OtherWise:
                     DetalheIni("ate "+Format("D13",VSDGDTFIM)+" SEM MOVIMENTO",VSDGDTINI)
                     lin=lin-1
                  EndSwitch

                  Print File ARQIMP Fill("-",132)+"\n"
             Else Print File ARQIMP Completa(REG_TAB["Codigo do Item"],11," ")+Completa(REG_TAB["Descricao do Item"],31," ")+Completa(REG_TAB["Unidade Interna"],2," ")
                  Print File ARQIMP Format("W13.3,EIC",IQtde)
                  Print File ARQIMP Format("W13.3,EIC",EQtde)
                  Print File ARQIMP Format("W13.3,EIC",SQtde)
                  Print File ARQIMP Format("W13.3,EIC",Qtde)
                  Print File ARQIMP "\n"
                  
                  IQtd= IQtd+IQtde
                  EQtd= EQtd+EQtde
                  SQtd= SQtd+SQtde
                  AQtd= AQtd+Qtde 
                  
                  TotIQtd = TotIQtd + IQtde
                  TotEQtd = TotEQtd + EQtde
                  TotSQtd = TotSQtd + SQtde
                  TotAQtd = TotAQtd + Qtde

                  GetRecord "\\Sistemas\\Estoque\\Itens" REG_TAB["Codigo do Item"] To REG_ITEM
                  If RetVal
                     Then ITEM_OBS  = Rtrim(REG_ITEM["Observacao"])
                          ITEM_TIPO = REG_ITEM["Tipo do Item"]
                          ITEM_DTIPO= REG_ITEM["Descricao Tipo do Item"]
                          ITEM_DESC = REG_ITEM["Descricao do Item"]
                          ITEM_TIPO = REG_ITEM["Tipo do Item"]
                          ITEM_REFE = REG_ITEM["Referencia"]
                          ITEM_UNID = REG_ITEM["Unidade Interna"]
                     Else ITEM_OBS  = ""
                          ITEM_TIPO = ""
                          ITEM_DTIPO= ""
                          ITEM_DESC = ""
                          ITEM_TIPO = ""
                          ITEM_REFE = ""
                          ITEM_UNID = ""
                  EndIf   

                  Moveto TabelaExt                  
                  End Down
                  [Codigo da Empresa     ] = REG_TAB["Codigo da Empresa"]
                  [Nome Fantasia Empresa ] = REG_TAB["Nome Fantasia Empresa"] 
                  [Codigo do Item        ] = REG_TAB["Codigo do Item"]
                  [Quatidade Inicial     ] = IQtde                  
                  [Entrada Quantidade    ] = EQtde                  
                  [Saida Quantidade      ] = SQtde                  
                  [Quantidade Atual      ] = Qtde
                  [Descricao do Item     ] = ITEM_DESC
                  [Tipo do Item          ] = ITEM_TIPO
                  [Unidade Interna       ] = ITEM_UNID
                  [Descricao Tipo do Item] = ITEM_DTIPO      
                  [Referencia            ] = ITEM_REFE
                  [Observacao            ] = ITEM_OBS
                                   
                  Moveto Tabela     
          EndIf EndIf        

          ;---- Extrato COM movimenta‡Æo de CUSTO ------------------------------
          If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO" Then
          If VSDGOPRELANALSINT="1"
             Then Switch  
                   Case wcit>1:
                     Print File ARQIMP CI_INEG+COMPLETA("    Total Item...",23," ")
                     Print File ARQIMP Format("W13.3,EIC",EQtde)
                     Print File ARQIMP Completa(" ",13," ")                      ;Format("W13.5,EIC",ECUni)
                     Print File ARQIMP Format("W11.2,EIC",ECTot)
                     Print File ARQIMP Format("W13.3,EIC",SQtde)
                     Print File ARQIMP Completa(" ",13," ")                      ;Format("W13.5,EIC",SCUni)
                     Print File ARQIMP Format("W11.2,EIC",SCTot)
                     Print File ARQIMP Format("W15.3,EIC",Qtde)
                     Print File ARQIMP Completa(" ",13," ")                      ;Format("W13.5,EIC",CUni)
                     Print File ARQIMP Format("W12.2,EIC",CTot)
                     Print File ARQIMP CI_FNEG+"\n"
                   OtherWise:
                     DetalheIni("ate "+SubStr(Format("D10",VSDGDTFIM),1,5)+" SEM MOVIMENTO",VSDGDTINI)
                     lin=lin-1
                  EndSwitch

                  Print File ARQIMP Fill("-",137)+"\n"

             Else Print File ARQIMP Completa(REG_TAB["Codigo do Item"],11," ")+Completa(REG_TAB["Descricao do Item"],31," ")+Completa(REG_TAB["Unidade Interna"],2," ")
                  Print File ARQIMP Format("W15.3,EIC",IQtde)
                  Print File ARQIMP Format("W11.2,EIC",ICTot)
                  Print File ARQIMP Format("W13.3,EIC",EQtde)
                  Print File ARQIMP Format("W11.2,EIC",ECTot)
                  Print File ARQIMP Format("W13.3,EIC",SQtde)
                  Print File ARQIMP Format("W11.2,EIC",SCTot)
                  Print File ARQIMP Format("W16.3,EIC",Qtde)
                  Print File ARQIMP Format("W13.5,EIC",CUni)
                  Print File ARQIMP Format("W11.2,EIC",CTot)
                  Print File ARQIMP "\n"
                  
                  GetRecord "\\Sistemas\\Estoque\\Itens" REG_TAB["Codigo do Item"] To REG_ITEM
                  If RetVal
                     Then ITEM_OBS  = Rtrim(REG_ITEM["Observacao"])
                          ITEM_TIPO = REG_ITEM["Tipo do Item"]
                          ITEM_DTIPO= REG_ITEM["Descricao Tipo do Item"]
                          ITEM_DESC = REG_ITEM["Descricao do Item"]
                          ITEM_TIPO = REG_ITEM["Tipo do Item"]
                          ITEM_REFE = REG_ITEM["Referencia"]
                          ITEM_UNID = REG_ITEM["Unidade Interna"]
                     Else ITEM_OBS  = ""
                          ITEM_TIPO = ""
                          ITEM_DTIPO= ""
                          ITEM_DESC = ""
                          ITEM_TIPO = ""
                          ITEM_REFE = ""
                          ITEM_UNID = ""
                  EndIf   
                  
                  Moveto TabelaExt                  
                  End Down
                  [Codigo da Empresa     ] = REG_TAB["Codigo da Empresa"]
                  [Nome Fantasia Empresa ] = REG_TAB["Nome Fantasia Empresa"] 
                  [Codigo do Item        ] = REG_TAB["Codigo do Item"]                   
                  [Quatidade Inicial     ] = IQtde
                  [Custo Total Inicial   ] = ICTot
                  [Entrada Quantidade    ] = EQtde
                  [Entrada Custo Total   ] = ECTot
                  [Saida Quantidade      ] = SQtde
                  [Saida Custo Total     ] = SCTot
                  [Quantidade Atual      ] = Qtde
                  [Custo Unitario Atual  ] = CUni                             
                  [Custo Total Atual     ] = CTot
                  [Descricao do Item     ] = ITEM_DESC
                  [Tipo do Item          ] = ITEM_TIPO
                  [Unidade Interna       ] = ITEM_UNID
                  [Descricao Tipo do Item] = ITEM_DTIPO      
                  [Referencia            ] = ITEM_REFE
                  [Observacao            ] = ITEM_OBS
                  
                  
                  Moveto Tabela  
          EndIf EndIf
          QuitLoop
        EndWhile

        If VSDGOPRELANALSINT="1"
           Then lin=lin+2
           Else lin=lin+1
        EndIf

        STECTot=STECTot+ECTot
        STSCTot=STSCTot+SCTot

        STQtde=STQtde+Qtde
        STCTot=STCTot+CTot

        STICTot=STICTot+ICTot
EndIf

IQtde=0  EQtde=0  SQtde=0  Qtde=0
ICUni=0  ECUni=0  SCUni=0  CUni=0
ICTot=0  ECTot=0  SCTot=0  CTot=0

EndProc ;TotalItem()

;;*******************************************************************************
;* Rotina p/ SubTotal                                                          *
;*******************************************************************************
Proc SubTotal()
ChecaLinhaPagina("SubTotal")
If wc>0
   Then While True
          If OPCAOPAG<>"Todas"
             Then If pag<OPCAOPAGINI Or
                     pag>OPCAOPAGFIM
                     Then QuitLoop
                  EndIf
          EndIf

          ;---- Extrato SEM movimenta‡Æo de CUSTO ------------------------------
          If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
             Then If VSDGOPRELANALSINT="2"
                     Then Print File ARQIMP CI_INEG+Spaces(15)+COMPLETA("SubTotal...",29," ")
                          Print File ARQIMP Format("W13.3,EIC",IQtd) 
                          Print File ARQIMP Format("W13.3,EIC",EQtd)
                          Print File ARQIMP Format("W13.3,EIC",SQtd)
                          Print File ARQIMP Format("W13.3,EIC",AQtd)
                          Print File ARQIMP CI_FNEG+"\n"  
                  
                          ;TotIQtd = TotIQtd + IQtd
                          ;TotEQtd = TotEQtd + EQtd
                          ;TotSQtd = TotSQtd + SQtd
                          ;TotAQtd = TotAQtd + AQtd 
                            
                  EndIf
                  
                  Print File ARQIMP "\n"
                  Print File ARQIMP Ci_INEG+Spaces(11)+Format("W10,EIC",scontit)
                  Print File ARQIMP " Iten(s) "+DESCRICAO_TPITEM+CI_FNEG+"\n"
                  Print File ARQIMP Fill("=",132)+"\n"
          EndIf

          ;---- Extrato COM movimenta‡Æo de CUSTO ------------------------------
          If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO" 
             Then If VSDGOPRELANALSINT="1"
                     Then Print File ARQIMP CI_INEG+COMPLETA("    SubTotal Tipo...",23," ")
                          Print File ARQIMP Format("W13","")
                          Print File ARQIMP Format("W10","")
                          Print File ARQIMP Spaces(01)+Format("W13.2,EIC",STECTot)
                          Print File ARQIMP Format("W13","")
                          Print File ARQIMP Format("W10","")
                          Print File ARQIMP Spaces(01)+Format("W13.2,EIC",STSCTot)
                          Print File ARQIMP Format("W15","")
                          Print File ARQIMP Format("W10","")
                          Print File ARQIMP Format("W15.2,EIC",STCTot)
                          Print File ARQIMP CI_FNEG+"\n"
        
                          Print File ARQIMP Fill("-",137)+"\n"
        
                     Else Print File ARQIMP CI_INEG+COMPLETA("           SubTotal Tipo...",44," ")
                          Print File ARQIMP Format("W08","")
                          Print File ARQIMP Format("W18.2,EIC",STICTot)
                          Print File ARQIMP Format("W08","")
                          Print File ARQIMP Format("W16.2,EIC",STECTot)
                          Print File ARQIMP Format("W08","")
                          Print File ARQIMP Format("W16.2,EIC",STSCTot)
                          Print File ARQIMP Format("W16.3,EIC",STQtde)
                          Print File ARQIMP Format("W07","")
                          Print File ARQIMP Format("W17.2,EIC",STCTot)
                          Print File ARQIMP CI_FNEG+"\n"
        
                          Print File ARQIMP Fill("-",158)+"\n"
                  EndIf 
          EndIf
          QuitLoop
        EndWhile
    
        If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
           Then lin=lin+2
           Else lin=lin+3
        EndIf
        
        TTICTot=TTICTot+STICTot
        TTECTot=TTECTot+STECTot
        TTSCTot=TTSCTot+STSCTot
        TTQtde =TTQtde+STQtde
        TTCTot =TTCTot+STCTot

EndIf
STICTot=0  STECTot=0  STSCTot=0  STCTot=0  STQtde=0  scontit=0

EndProc ;SubTotal()

;*******************************************************************************
;* Rotina p/ Total                                                             *
;*******************************************************************************
Proc Total()
ChecaLinhaPagina("Total")
If wc>0
   Then While True
          If OPCAOPAG<>"Todas"
             Then If pag<OPCAOPAGINI Or
                     pag>OPCAOPAGFIM
                     Then QuitLoop
                  EndIf
          EndIf
          ;---- Extrato SEM movimenta‡Æo de CUSTO ------------------------------
          If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
             Then If VSDGOPRELANALSINT="2"                             
                     Then Print File ARQIMP CI_INEG+Spaces(15)+COMPLETA("   Total...",29," ")
                          Print File ARQIMP Format("W13.3,EIC",TotIQtd) 
                          Print File ARQIMP Format("W13.3,EIC",TotEQtd)
                          Print File ARQIMP Format("W13.3,EIC",TotSQtd)
                          Print File ARQIMP Format("W13.3,EIC",TotAQtd)
                          Print File ARQIMP CI_FNEG+"\n\n" 
                     Else 
                          TotAQtd = TotEQtd - TotSQtd
                          ;--- Comentado em 11.02.2015 devido ao calculo errado do TotAQtd 
                          ;--- e devido a op‡Æo de relatorio an litico o qual nÆo precisa deste total
                          ;Print File ARQIMP Spaces(15)+COMPLETA("   Total...",14," ") 
                          ;Print File ARQIMP Format("W13.3,EIC",TotEQtd)
                          ;Print File ARQIMP Format("W13.3,EIC",TotSQtd)
                          ;Print File ARQIMP Format("W13.3,EIC",TotAQtd)
                          ;Print File ARQIMP "\n\n" 
                  EndIf          
        
                  Print File ARQIMP CI_INEG+Spaces(11)+Format("W10,EIC",tcontit)
                  Print File ARQIMP " Iten(s) Total "+CI_FNEG"\n"
                  Print File ARQIMP "\f"
          EndIf
          
          ;---- Extrato COM movimenta‡Æo de CUSTO ------------------------------
          If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
             Then If VSDGOPRELANALSINT="1"
                     Then Print File ARQIMP CI_INEG+COMPLETA("    Total Empresa...",23," ")
                          Print File ARQIMP Format("W13","")
                          Print File ARQIMP Format("W11","")
                          Print File ARQIMP Format("W13.2,EIC",TTECTot)
                          Print File ARQIMP Format("W13","")
                          Print File ARQIMP Format("W11","")
                          Print File ARQIMP Format("W13.2,EIC",TTSCTot)
                          Print File ARQIMP Format("W15","")
                          Print File ARQIMP Format("W10","")
                          Print File ARQIMP Format("W15.2,EIC",TTCTot)
                          Print File ARQIMP CI_FNEG+"\f"
        
                     Else Print File ARQIMP "\n"
                          Print File ARQIMP CI_INEG+COMPLETA("      Total Empresa...",44," ")
                          Print File ARQIMP Format("W08","")
                          Print File ARQIMP Format("W18.2,EIC",TTICTot)
                          Print File ARQIMP Format("W08","")
                          Print File ARQIMP Format("W16.2,EIC",TTECTot)
                          Print File ARQIMP Format("W08","")
                          Print File ARQIMP Format("W16.2,EIC",TTSCTot)
                          Print File ARQIMP Format("W16.3,EIC",TTQtde)
                          Print File ARQIMP Format("W07","")
                          Print File ARQIMP Format("W17.2,EIC",TTCTot)
                          Print File ARQIMP CI_FNEG+"\f"+"\n"
        
                  EndIf
          EndIf
          QuitLoop
        EndWhile
        If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
            Then lin=lin+1
            Else lin=lin+2
        EndIf
EndIf
TTICTot=0  TTECTot=0  TTSCTot=0  TTQtde=0  TTCTot=0  tcontit=0

EndProc ;Total()

;*******************************************************************************
;* Grupo: Empresa                                                              *
;*******************************************************************************
Proc Grupo_Empresa()

While True
  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf
  Print File ARQIMP CI_INEG+"Empresa: "+REG_EMPRESA["Codigo da Empresa"]+"  "+REG_EMPRESA["Nome Fantasia Empresa"]+CI_FNEG+"\n"
  QuitLoop
EndWhile
lin=lin+1

EndProc ;Grupo_Empresa()

;*******************************************************************************
;* Grupo: Tipo do Item                                                         *
;*******************************************************************************
Proc Grupo_TpItem()
While True
  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf
  
  
  
  Print File ARQIMP "\n"
  Print File ARQIMP CI_INEG+"           "+DESCRICAO_TPITEM+CI_FNEG+"\n"
  
  ;---- Extrato SEM movimenta‡Æo de CUSTO ------------------------------
  If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
     Then If VSDGOPRELANALSINT="2"
             Then IQtd=0
                  EQtd=0
                  SQtd=0
                  AQtd=0    
          EndIf
  EndIf
  QuitLoop
EndWhile
lin=lin+2

EndProc ;Grupo_TpItem()

;*******************************************************************************
;* Grupo: Item                                                                 *
;*******************************************************************************
Proc Grupo_Item()
If VSDGOPRELANALSINT="2"
   Then Return
EndIf 

While True
  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf
  
  ;---- Extrato SEM movimenta‡Æo de CUSTO ------------------------------
  If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
      Then Print File ARQIMP CI_INEG + Completa(REG_TAB["Codigo do Item"],11," ")+
                                       Completa(REG_TAB["Descricao do Item"],32," ")+
                                       Completa(REG_TAB["Unidade Interna"],2," ")
  EndIf
  
  ;---- Extrato COM movimenta‡Æo de CUSTO ------------------------------
  If PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
      Then Print File ARQIMP CI_INEG + Completa(REG_TAB["Codigo do Item"],11," ")+ 
                                       Completa(REG_TAB["Descricao do Item"],32," ")+
                                       Completa(REG_TAB["Unidade Interna"],6," ") + REG_TAB["Referencia"]
  EndIf    
  
  If VSDGCOMPLEMENTO="C" And VSDGOPRELANALSINT="1"
     Then Print File ARQIMP "  - "+Format("W50,L",REG_COMPITEM["Descricao Complementar"])
  EndIf
  Print File ARQIMP CI_FNEG+"\n"
  QuitLoop  
EndWhile
lin=lin+1

EndProc ;Grupo_Item()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_TIPOEST"       : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"         : Campo="TG_TIPOEST"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_ITEM"          : Campo="TG_DTFIM"
            Case Campo="TG_REFERENCIA"    : Campo="TG_ITEM"
            Case Campo="TG_FAMI"          : Campo="TG_REFERENCIA"
            Case Campo="TG_GRP"           : Campo="TG_FAMI"
            Case Campo="TG_MARCA"         : Campo="TG_GRP"
            Case Campo="TG_ITEM_SEMMOVTO" : Campo="TG_MARCA"
            Case Campo="TG_OPRELANALSINT" : Campo="TG_ITEM_SEMMOVTO"
            Case Campo="TG_COMPLEMENTO"   : Campo="TG_OPRELANALSINT"
            Case Campo="TG_OPRELCODALF"   :
                 If VSDGOPRELANALSINT="1"
                    Then Campo="TG_COMPLEMENTO"
                    Else Campo="TG_OPRELANALSINT"
                 EndIf
            Case Campo="TG_OPOF"          : Campo="TG_OPRELCODALF"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA" : Campo="TG_TIPOEST"
                    Case Campo="TG_TIPOEST" : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"   : 
                         If VSDGDTINI=BlankDate()
                            Then Mensagem("Data Inicial Inv lida !")
                            Else Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"      : Campo="TG_ITEM"
                    Case Campo="TG_ITEM"       : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA" : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"       : Campo="TG_GRP"
                    Case Campo="TG_GRP"        : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"      : Campo="TG_ITEM_SEMMOVTO"

                    Case Campo="TG_ITEM_SEMMOVTO"        : Campo="TG_OPRELANALSINT"
                         VSDGITEM_SEMMOVTO=ControlValue("TG_ITEM_SEMMOVTO")
                         Switch
                           Case VSDGITEM_SEMMOVTO="N": VSDGNOMITEM_SEMMOVTO="NAO"
                           OtherWise:
                                VSDGITEM_SEMMOVTO="S"  VSDGNOMITEM_SEMMOVTO="SIM"
                         EndSwitch
                    Case Campo="TG_OPRELANALSINT":
                         If VSDGOPRELANALSINT="2"
                            Then VSDGCOMPLEMENTO ="S"
                                 VSDGDESCCOMP    ="SEM COMPLEMENTO"
                                 Campo = "TG_OPRELCODALF"
                            Else Campo = "TG_COMPLEMENTO"
                         EndIf
                    Case Campo="TG_COMPLEMENTO" :
                         VSDGCOMPLEMENTO=ControlValue("TG_COMPLEMENTO")
                         Switch
                           Case VSDGCOMPLEMENTO="C":
                                VSDGDESCCOMP="COM COMPLEMENTO"
                           OtherWise:
                                VSDGCOMPLEMENTO="S"
                                VSDGDESCCOMP   ="SEM COMPLEMENTO"
                         EndSwitch
                         Campo="TG_OPRELCODALF"
                    Case Campo="TG_OPRELCODALF" : Campo = "TG_OPOF"
                    Case Campo="TG_OPOF"        : Campo = "YES"
                         VSDGOPOF=ControlValue("TG_OPOF")
                         Switch
                           Case VSDGOPOF="N": VSDGNOMOPOF="NAO"
                           OtherWise:
                                VSDGOPOF="S"  VSDGNOMOPOF="SIM"
                         EndSwitch
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_COMPLEMENTO":
       MSG_CAMPO="C=Com Complemento, S=Sem Complemento"
  Case Campo="TG_OPOF":
       MSG_CAMPO="Incluir Ordem de Faturamento n„o emitida ? (Sim/N„o)"
  Case Campo="TG_ITEM_SEMMOVTO":
       MSG_CAMPO="Imprimir item sem movimenta‡„o no per¡odo ? (Sim/N„o)"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()
SYS_VALOR()

If Not IsAssigned(PARAM_EXTRATO_MOVIMENTACAO) Then PARAM_EXTRATO_MOVIMENTACAO="COM CUSTO" EndIf

;PARAM_EXTRATO_MOVIMENTACAO = "COM CUSTO"
;PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"

VSDGEMPRESA     = ""
VSDGTIPOEST     = ""
VSDGDESCTIPOEST = ""
VSDGITEM        = ""
VSDGFAMI        = ""
VSDGMARCA       = ""
VSDGGRP         = ""
VSDGDTREF       = BlankDate()
VSDGDTINI       = BlankDate()
VSDGDTFIM       = BlankDate()
VSDGOPRELCODALF = ""
VSDGCOMPELENTO  = ""
VSDGDESCCOMP    = ""
VSDGOPOF        = ""
VSDGNOMOPOF     = ""
VSDGITEM_SEMMOVTO="S"
VSDGREFERENCIA  = ""

If PARAM_EXTRATO_MOVIMENTACAO = "SEM CUSTO"
   Then TITULO = "Extrato da Movimenta‡„o do Estoque s/ Custo"
   Else TITULO = "Extrato da Movimenta‡„o do Estoque c/ Custo"
EndIf   

While True
  ShowDialog TITULO Proc "SD_Dialog"             
  Trigger "OPEN","ARRIVE"                                                     
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
    @ 03,08 Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,01 "Tipo Estoque"  For "TG_TIPOEST"
    Accept @ 03,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 03,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

    Label  @ 04,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,16 "at‚" For "TG_DTFIM"
    Accept @ 05,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 06,00 "Item"  For "TG_ITEM"
    Accept @ 07,01 Width 33 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 08,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM

    Label  @ 09,00 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 10,01 Width 33 "A20" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA

    Label  @ 11,00 "Familia"  For "TG_FAMI"
    Accept @ 12,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 12,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 13,00 "Grupo"  For "TG_GRP"
    Accept @ 14,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 14,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 15,00 "Marca"  For "TG_MARCA"
    Accept @ 16,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 16,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 00,35 "Imprimir Item sem movimenta‡„o ?" For "TG_ITEM_SEMMOVTO"
    Accept @ 01,39 Width 04 "A1"  Picture "S,N" Tag "TG_ITEM_SEMMOVTO" To VSDGITEM_SEMMOVTO
    Accept @ 01,44 Width 25 "A3"  Picture "!*!" Tag "TG_NOMITEM_SEMMOVTO" To VSDGNOMITEM_SEMMOVTO

    Label  @ 02,35 "Op‡„o do Relat¢rio" For "TG_OPRELANALSINT"
    Accept @ 03,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT
    Accept @ 03,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELANASINT" To VSDGNOMOPRELANALSINT

    Label  @ 04,35 "Op‡„o de Complemento" For "TG_COMPLEMENTO"
    Accept @ 05,39 Width 04 "A1"  Picture "S,C" Tag "TG_COMPLEMENTO" To VSDGCOMPLEMENTO
    Accept @ 05,44 Width 25 "A25"  Picture "!*!" Tag "TG_DESCCOMP" To VSDGDESCCOMP

    Label  @ 06,35 "Op‡„o de Ordem" For "TG_OPRELCODALF"
    Accept @ 07,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 07,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF

    Label  @ 08,35 "Op‡„o de Ordem Fatura" For "TG_OPOF"
    Accept @ 09,39 Width 04 "A1"  Picture "S,N" Tag "TG_OPOF" To VSDGOPOF
    Accept @ 09,44 Width 25 "A3"  Picture "!*!" Tag "TG_NOMOPOF" To VSDGNOMOPOF

    Pushbutton @ 18,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf

  If VSDGDTINI=BlankDate()
     Then Mensagem("Data Inicial Inv lida !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  If Existe_Mes_Ano_Fechado(VSDGDTINI,"Estoque","Sdestq") Then Loop EndIf

  ESCOLHA_USUARIO = OK
  Play "RM_Movto"

  If Not PROCESSAR_DADOS
     Then Loop
  EndIf

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o Existem Registros a Processar")
          If IsTable(Tabela) Then Delete Tabela EndIf
          Loop
  EndIf

  ARQIMP = PrivDir()+"EXTREST.TXT"
  Switch
    Case ESCOLHA_USUARIO="A": ARQIMP = DIREPORT+ARQUIVO+".TXT"
  EndSwitch
  Deleta_Arquivo(ARQIMP)

  AGUARDE("Imprimindo")
  Imprimir()
  
  If  IsEmpty(Tabela)
     Then MENSAGEM("N„o Existem Registros a Processar")
          If IsTable(Tabela) Then Delete Tabela EndIf
          Loop
  EndIf   
  
  DISPOSITIVO_OPCAO=ESCOLHA_USUARIO
  If ESCOLHA_USUARIO="V" Or ESCOLHA_USUARIO="A"
     Then Switch
            Case ESCOLHA_USUARIO="A" And (Tipo_Docto<>5 And Tipo_Docto<>6):
              If VSDGOPRELANALSINT="1"
                 Then ImpriRel(Tabela,"")
                 Else ImpriRel(TabelaExt,"")
              EndIf        
            OtherWise : ImpriArq(ARQIMP) 
          EndSwitch
     Else Mensagem("Impress„o Concluida !")
          If ESCOLHA_USUARIO="I"
             Then ImpriArq(ARQIMP)
                  Deleta_Arquivo(ARQIMP)
          EndIf
  EndIf
  If IsFile(ARQIMP)                         Then Deleta_Arquivo(ARQIMP) EndIf
  If IsAssigned(Tabela) And IsTable(Tabela) Then Delete Tabela          EndIf
   If VSDGOPRELANALSINT="2" 
      Then If IsTable(TabelaExt) Then Delete TabelaExt EndIf   
  EndIf
EndWhile
ClearAll
Release Vars All
Release Procs All
