;** Rm_0211 *******************************************************************
;*  Sintetico III p/ Plano de Contas/Mensal                                   *
;******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/05/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 11/05/2016 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes + A Realizar
;Ultima Alteracao: 14/05/2016 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes Sintetico/Analitico
;Ultima Alteracao: 16/05/2016 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Inclusao de saldos inicial/final
;Ultima Alteracao: 17/08/2016 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes soma total das colunas       
;Ultima Alteracao: 06/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 17/11/2016 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Inclusao cheques terceiros a realizar
;Ultima Alteracao: 22/11/2016 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Inclusao fluxo de caixa                 
;Ultima Alteracao: 17/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_EMPRESATE                 
;Ultima Alteracao: 28/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog    
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()                
;Ultima Alteracao: 25/05/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nova op‡Æo de movimento
;Ultima Alteracao: 19/06/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ plano de conta apenas ativos -> MontaTabela() Sol.30419
;Ultima Alteracao: 23/06/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes fluxo de caixa e outros
;Ultima Alteracao: 27/06/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro transferencias entre contas
;Ultima Alteracao: 25/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo de Conta                
;Ultima Alteracao: 29/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes contas de transferencia      
;Ultima Alteracao: 25/01/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes estorno cheques de terceiros
;Ultima Alteracao: 05/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ChequesEmitidos(), 2-Realizados + Saldos
;Ultima Alteracao: 04/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ChequesEmitidos(), 2-Realizados + Saldos ignorar

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc Realizado()
private wcc

ClearAll

if (VSDGOPCAO="1" or VSDGOPCAO="2" or VSDGOPCAO="4" or VSDGOPCAO="5") and
   IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")  
   then
        For wcc From 1 To 5
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          
          Switch
            Case wcc=1: Moveto [Tipo Movimento     ] TypeIn "E"      ;Entradas
                        Moveto [Tipo da Conta      ] TypeIn "Not C"  ;Caixa/Aplicacao
        
            Case wcc=2: Moveto [Tipo Movimento     ] TypeIn "S"      ; Saidas
                        Moveto [Tipo da Conta      ] TypeIn "Not C"  ;Caixa/Aplicacao
        
            Case wcc=3: Moveto [Tipo Movimento     ] TypeIn "E"      ; Entradas
                        Moveto [Tipo da Conta      ] TypeIn "C"      ; Conta Corrente  
        
            Case wcc=4: Moveto [Tipo Movimento     ] TypeIn "S"      ; Saidas
                        Moveto [Tipo da Conta      ] TypeIn "C"      ; Conta Corrente
                        Moveto [Tipo de Operacao   ] TypeIn "Not 05, Not 08"  ; menos cheques
        
            Case wcc=5: Moveto [Tipo Movimento     ] TypeIn "S"      ; Saidas
                        Moveto [Tipo da Conta      ] TypeIn "C"      ; Conta Corrente
                        Moveto [Tipo de Operacao   ] TypeIn "08"     ; Transferencias           
                        Moveto [Tipo do Lancamento ] TypeIn "O or P" ; menos cheques
        
          EndSwitch
          
          if VSDGOPCAO="4"
             then
                  Moveto [Data            ] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM"
             else
                  If VSDGOPDTEMISCOMP="1"
                     Then Moveto [Data            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                     Else Moveto [Data            ] Check
                          Moveto [Data Competencia] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM, as Data"
                  EndIf   
          endif   
          
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Do_It!
          ClearAll

          if CheckTG_OPCTATRANSF[2]
             then
                  {Ask} {Answer} TypeIn "Fast Delete"
                  Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
                  Do_It!
                  ClearAll
          endif    
  
          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "E"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 1.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "E"
          Moveto [Codigo da Conta Trf    ] TypeIn "blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 1.AAAAA9"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * ENTRADAS SEM PLANO DE CONTA\""
          Do_It!
          ClearAll
  
          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 5.AAAAA9"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * SAIDAS SEM PLANO DE CONTA\""
          Do_It!
          ClearAll
          AdicionaDados()
          
        endfor
endif

endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc ChequesEmitidos()
private wcc

ClearAll

if (VSDGOPCAO="4" or VSDGOPCAO="2") and
   IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")  
   then
        ;--- Cheques emitidos antes da data referente e descontados depois - Estornos---
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch
          Moveto [Data                  ] TypeIn "<~VSDGDTREF"
          Moveto [Data Cheque Descontado] TypeIn ">=~VSDGDTREF"
          Do_It!
          ClearAll
          
          {Ask} {Answer}
          moveto [Valor                  ] typeIn "calc sum as Valor"
          Do_It!
          if not isempty("Answer")
             then CHEQUESAENTRAR=CHEQUESAENTRAR+[Valor]
          endif   
          ClearAll
        
        EndFor
        
        ;--- Cheques emitidos antes da data referente e nÆo descontados - Estornos------
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch
          Moveto [Data                  ] TypeIn "<~VSDGDTREF"
          Moveto [Data Cheque Descontado] TypeIn "Blank"
          Do_It!
          ClearAll
          
          {Ask} {Answer}
          moveto [Valor                  ] typeIn "calc sum as Valor"
          Do_It!
          if not isempty("Answer")
             then CHEQUESAENTRAR=CHEQUESAENTRAR+[Valor]
          endif   
          ClearAll
        
        EndFor
endif
        
if (VSDGOPCAO="1" or VSDGOPCAO="2" or VSDGOPCAO="4" or VSDGOPCAO="5") and  
   IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")  
   then 
        ;--- Cheques descontados no periodo --------------------------------------------
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch
          If VSDGOPCAO="4"
             Then         Moveto [Data                  ] Check
                          Moveto [Data Cheque Descontado] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM, as Data"
             Else 
                  If VSDGOPDTEMISCOMP="1"
                     Then Moveto [Data                  ] Check
                          Moveto [Data Cheque Descontado] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM, as Data"
                     Else Moveto [Data                  ] Check
                          Moveto [Data Competencia      ] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM"
                          Moveto [Data Cheque Descontado] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM, as Data"
                  EndIf   
          EndIf   
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 5.AAAAA9"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * SAIDAS SEM PLANO DE CONTA\""
          Do_It!
          ClearAll
          AdicionaDados()
        
        EndFor
endif   

if (VSDGOPCAO="3" or VSDGOPCAO="4") and  
   IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")  
   then
        ;--- Cheques emitidos mˆs anterior ---------------------------------------------                   
        ;    nÆo pre-datados e nÆo descontados no per¡odo                   
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch
          if VSDGOPCAO="4"
             then
                          Moveto [Data            ] TypeIn "<~VSDGDTINI"
             else
                  If VSDGOPDTEMISCOMP = "1"
                     Then Moveto [Data            ] TypeIn "<~VSDGDTINI"
                     Else Moveto [Data            ] Check
                          Moveto [Data Competencia] TypeIn "<~VSDGDTINI, as Data"
                  EndIf
          EndIf
          Moveto [Cheque Pre-Datado     ] TypeIn "N or Blank"
          Moveto [Data Cheque Descontado] TypeIn "Blank or >~VSDGDTFIM"
          Do_It!
          ClearAll

          {Ask} {Answer} typein "fast"
          Moveto [Data                  ] TypeIn "changeto ~VSDGDTINI" 
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAAD"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * CHEQUES EMITIDOS E NAO APRESENTADOS\""
          Do_It!
          ClearAll
          AdicionaDados()
        
        EndFor
        
        ;--- Cheques emitidos no per¡odo -----------------------------------------------                   
        ;    nÆo pre-datados e nÆo descontados no per¡odo                   
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch
          if VSDGOPCAO="4"
             then
                          Moveto [Data            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
             else
                  If VSDGOPDTEMISCOMP = "1"
                     Then Moveto [Data            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                     Else Moveto [Data            ] Check
                          Moveto [Data Competencia] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM, as Data"
                  EndIf
          EndIf
          Moveto [Cheque Pre-Datado     ] TypeIn "N or Blank"
          Moveto [Data Cheque Descontado] TypeIn "Blank Or >~VSDGDTFIM"
          Do_It!
          ClearAll
          
          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAAD"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * CHEQUES EMITIDOS E NAO APRESENTADOS\""
          Do_It!
          ClearAll
          AdicionaDados()
        
        EndFor
        
        ;--- Cheques pre-datados mˆs anterior ------------------------------------------                   
        ;    nÆo descontados no per¡odo                   
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch
          if VSDGOPCAO="4"
             then
                          Moveto [Data Cheque Pre-Datado] TypeIn "<~VSDGDTINI"
             else
                  If VSDGOPDTEMISCOMP = "1"
                     Then Moveto [Data Cheque Pre-Datado] TypeIn "<=~VSDGDTINI"
                     Else Moveto [Data Cheque Pre-Datado] TypeIn "<=~VSDGDTINI"
                          Moveto [Data Competencia      ] TypeIn "<=~VSDGDTINI"
                  EndIf
          EndIf
          Moveto [Cheque Pre-Datado     ] TypeIn "S"
          Moveto [Data Cheque Descontado] TypeIn "Blank Or >~VSDGDTFIM"
          Do_It!
          ClearAll

          {Ask} {Answer} typein "fast"
          Moveto [Data                  ] TypeIn "changeto ~VSDGDTINI" 
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAAE"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * CHEQUES EMITIDOS PRE-DATADOS\""
          Do_It!
          ClearAll
          AdicionaDados()

        EndFor
        
        ;--- Cheques pre-datados no per¡odo --------------------------------------------                   
        ;    nÆo descontados no per¡odo                   
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch
          if VSDGOPCAO="4"
             then
                          Moveto [Data Cheque Pre-Datado] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
             else
                  If VSDGOPDTEMISCOMP = "1"
                     Then Moveto [Data Cheque Pre-Datado] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                     Else Moveto [Data Cheque Pre-Datado] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                          Moveto [Data Competencia      ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                  EndIf
          EndIf
          Moveto [Cheque Pre-Datado     ] TypeIn "S"
          Moveto [Data Cheque Descontado] TypeIn "Blank Or >~VSDGDTFIM"
          Do_It!
          ClearAll

          {Ask} {Answer} typein "fast"
          Moveto [Data Cheque Pre-Datado] TypeIn "_dtcp" 
          Moveto [Data                  ] TypeIn "changeto _dtcp" 
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAAE"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * CHEQUES EMITIDOS PRE-DATADOS\""
          Do_It!
          ClearAll
          AdicionaDados()
          
        EndFor
endif

EndProc     ;  

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc ARealizarReceber()

if VSDGOPCAO="3" or VSDGOPCAO="4" or VSDGOPCAO="5"
   then 
        {Ask} TypeIn "\\Sistemas\\Ctarec\\DupliC" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
        Moveto [Data de Vencimento    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM, as Data"
        Moveto [Saldo do Documento    ] TypeIn "> 0.01, as Valor"
        Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
        Moveto [Tipo do Lancamento    ] TypeIn "not A, as \"Tipo Movimento\""
        Moveto [Situacao              ] TypeIn "Blank"
        Do_It!
        ClearAll
    
        {Ask} {Answer} TypeIn "Fast"
        Moveto [Tipo Movimento         ] TypeIn "Changeto E"
        Do_It!
        ClearAll

        {Ask} {Answer} TypeIn "Fast"
        Moveto [Codigo Plano_Conta     ] TypeIn "blank, Changeto 1.AAAAA8"
        Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * A RECEBER SEM PLANO DE CONTA\""
        Do_It!
        ClearAll
        AdicionaDados()
endif
endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc ARealizarPagar()

if VSDGOPCAO="3" or VSDGOPCAO="4" or VSDGOPCAO="5"
   then
        {Ask} TypeIn "\\Sistemas\\CtaPag\\Titulos" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
        Moveto [Data de Vencimento    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM, as Data"
        Moveto [Saldo do Documento    ] TypeIn "> 0.01, as Valor"
        Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
        Moveto [Tipo do Lancamento    ] TypeIn "as \"Tipo Movimento\""
        Moveto [Situacao              ] TypeIn "Blank"
        Do_It!
        ClearAll
        
        {Ask} {Answer} TypeIn "Fast"
        Moveto [Tipo Movimento         ] TypeIn "Changeto S"
        Do_It!
        ClearAll

        {Ask} {Answer} TypeIn "Fast"
        Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 5.AAAAA8"
        Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * A PAGAR SEM PLANO DE CONTA\""
        Do_It!
        ClearAll
        AdicionaDados()
endif

endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc ARealizarChequesTerceiros()
          
if VSDGOPCAO="3" or VSDGOPCAO="4"
   then
        ;--- Cheques terceiros do per¡odo-----------------------------------------------
        {Ask} {\\Sistemas\\CheqRec\\ChequeC}
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA2.."
        {Ask} {\\Sistemas\\CheqRec\\ChequeI}
        Moveto [Numero do Lancamento  ] check Example "nl"
        Moveto [Sequencia do Cheque   ] check
        Moveto [Valor                 ] Check 
        Moveto [Situacao              ] TypeIn "Blank Or \"EM ABERTO\" Or \"PRORROGADO\""
        Moveto [Data Vencimento       ] check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM, as Data"
        Moveto [Numero_Conta          ] check TypeIn "as \"Codigo Plano_Conta\""
        Moveto [Titular_Cheque        ] check TypeIn "as \"Descricao Plano_Conta\""
        Moveto [UF                    ] check TypeIn "as \"Tipo Movimento\""
        Do_It!
        ClearAll
    
        {Ask} {Answer} typein "fast"
        Moveto [Codigo Plano_Conta    ] TypeIn "changeto 1.AAAAAB" 
        Moveto [Descricao Plano_Conta ] TypeIn "changeto \"  * CHEQUES DE TERCEIROS A DESCONTAR\""
        Moveto [Tipo Movimento        ] TypeIn "Changeto E"
        Do_It!
        ClearAll
        AdicionaDados()

        ;--- Cheques terceiros todos ---------------------------------------------------
        {Ask} {\\Sistemas\\CheqRec\\ChequeC}
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA2.."
        {Ask} {\\Sistemas\\CheqRec\\ChequeI}
        Moveto [Numero do Lancamento  ] check Example "nl"
        Moveto [Sequencia do Cheque   ] check
        Moveto [Valor                 ] Check 
        Moveto [Situacao              ] TypeIn "Blank Or \"EM ABERTO\" Or \"PRORROGADO\""
        Moveto [Data_Entrada          ] TypeIn "<~VSDGDTINI"
        Moveto [Data Vencimento       ] TypeIn "<=~VSDGDTFIM"
        Do_It!
        ClearAll

        {Ask} {Answer}
        moveto [Valor                  ] typeIn "calc sum as Valor"
        Do_It!
        if not isempty("Answer")
           then CHEQUESASAIR  =CHEQUESASAIR  +[Valor]
        endif   
        ClearAll


        {Ask} {\\Sistemas\\CheqRec\\ChequeC}
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA2.."
        {Ask} {\\Sistemas\\CheqRec\\ChequeI}
        Moveto [Numero do Lancamento  ] check Example "nl"
        Moveto [Sequencia do Cheque   ] check
        Moveto [Valor                 ] Check 
        Moveto [Situacao              ] TypeIn "Blank Or \"EM ABERTO\" Or \"PRORROGADO\""
        Moveto [Data Vencimento       ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Data_Entrada          ] Check TypeIn "~VSDGDTINI, as Data"
        Moveto [Numero_Conta          ] check TypeIn "as \"Codigo Plano_Conta\""
        Moveto [Titular_Cheque        ] check TypeIn "as \"Descricao Plano_Conta\""
        Moveto [UF                    ] check TypeIn "as \"Tipo Movimento\""
        Do_It!
        ClearAll
  
        {Ask} {Answer} typein "fast"
        Moveto [Data                  ] TypeIn "changeto ~VSDGDTINI" 
        Do_It!
        ClearAll
  
        {Ask} {Answer} typein "fast"
        Moveto [Codigo Plano_Conta    ] TypeIn "Changeto 5.AAAAAC"
        Moveto [Descricao Plano_Conta ] TypeIn "changeto \"  * CHEQUES DE TERCEIROS ESTORNO\""
        Moveto [Tipo Movimento        ] TypeIn "Changeto S"
        Do_It!
        ClearAll
        AdicionaDados()
endif

if VSDGOPCAO="xxxx2" ; nÆo fazer tem que estudar                      
   then 
        ;--- Cheques terceiros do per¡odo-----------------------------------------------
        {Ask} {\\Sistemas\\CheqRec\\ChequeC}
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA2.."
        {Ask} {\\Sistemas\\CheqRec\\ChequeI}
        Moveto [Numero do Lancamento  ] check Example "nl"
        Moveto [Sequencia do Cheque   ] check
        Moveto [Valor                 ] Check 
        Moveto [Situacao              ] TypeIn "Blank Or \"EM ABERTO\" Or \"PRORROGADO\""
        Moveto [Data Vencimento       ] check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM, as Data"
        Moveto [Numero_Conta          ] check TypeIn "as \"Codigo Plano_Conta\""
        Moveto [Titular_Cheque        ] check TypeIn "as \"Descricao Plano_Conta\""
        Moveto [UF                    ] check TypeIn "as \"Tipo Movimento\""
        Moveto [Data_Entrada          ] check 
        Do_It!
        ClearAll
    
        {Ask} {Answer} typein "fast"
        Moveto [Codigo Plano_Conta    ] TypeIn "Changeto 5.AAAAAC"
        Moveto [Descricao Plano_Conta ] TypeIn "changeto \"  * CHEQUES DE TERCEIROS ESTORNO\""
        Moveto [Tipo Movimento        ] TypeIn "Changeto S"
        Do_It!
        ClearAll
        AdicionaDados()

        ;--- Cheques terceiros todos ---------------------------------------------------
        {Ask} {\\Sistemas\\CheqRec\\ChequeC}
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA2.."
        {Ask} {\\Sistemas\\CheqRec\\ChequeI}
        Moveto [Numero do Lancamento  ] check Example "nl"
        Moveto [Sequencia do Cheque   ] check
        Moveto [Valor                 ] Check 
        Moveto [Situacao              ] TypeIn "Blank Or \"EM ABERTO\" Or \"PRORROGADO\""
        Moveto [Data_Entrada          ] TypeIn "<~VSDGDTINI"
        Moveto [Data Vencimento       ] TypeIn "<=~VSDGDTFIM"
        Do_It!
        ClearAll

        {Ask} {Answer}
        moveto [Valor                  ] typeIn "calc sum as Valor"
        Do_It!
        if not isempty("Answer")
           then CHEQUESASAIR  =CHEQUESASAIR  +[Valor]
        endif   
        ClearAll


        {Ask} {\\Sistemas\\CheqRec\\ChequeC}
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA2.."
        {Ask} {\\Sistemas\\CheqRec\\ChequeI}
        Moveto [Numero do Lancamento  ] check Example "nl"
        Moveto [Sequencia do Cheque   ] check
        Moveto [Valor                 ] Check 
        Moveto [Situacao              ] TypeIn "Blank Or \"EM ABERTO\" Or \"PRORROGADO\""
        Moveto [Data Vencimento       ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Data_Entrada          ] Check TypeIn "~VSDGDTINI, as Data"
        Moveto [Numero_Conta          ] check TypeIn "as \"Codigo Plano_Conta\""
        Moveto [Titular_Cheque        ] check TypeIn "as \"Descricao Plano_Conta\""
        Moveto [UF                    ] check TypeIn "as \"Tipo Movimento\""
        Do_It!
        ClearAll

        {Ask} {Answer} typein "fast"
        Moveto [Data                  ] TypeIn "changeto ~VSDGDTINI" 
        Do_It!
        ClearAll

        {Ask} {Answer} typein "fast"
        Moveto [Codigo Plano_Conta    ] TypeIn "Changeto 1.AAAAAC"
        Moveto [Descricao Plano_Conta ] TypeIn "changeto \"  * CHEQUES DE TERCEIROS ESTORNO\""
        Moveto [Tipo Movimento        ] TypeIn "Changeto E"
        Do_It!
        ClearAll
        AdicionaDados()
endif

endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc AdicionaDados()
private wi, mesano, coluna, dtant

if isempty("Answer")
   then return
endif    


dtant=blankdate()

Coedit Tabela, "Answer"
scan

  if [Answer->Data]<>dtant
     then 
          dtant=[Answer->Data]

          mesano=strval(month([Answer->Data]))+"/"+strval(year([Data]))
          
          coluna=0
          for wi from 1 to 12
        
            if mesano=Array_MesAno[wi]
               then coluna=wi
                    quitloop
            endif        
             
          endfor
  
  endif

  if coluna>0
     then
          moveto tabela
          moveto [Codigo Plano_Conta]
          locate [Answer->Codigo Plano_Conta]
          if not retval
             then end
                  down
                  [Codigo da Empresa     ]=VSDGEMPRESA2
                  [Codigo Plano_Conta    ]=[Answer->Codigo Plano_Conta    ]
                  [Descricao Plano_Conta ]=[Answer->Descricao Plano_Conta ]
                  
                  if search("SALDO",[Descricao Plano_Conta ])>0 and
                     ([Codigo Plano_Conta    ]="0"       or
                      [Codigo Plano_Conta    ]="9999999")
                     then [Tipo de Conta    ]="S"
                  endif   
          endif
        
          [Tipo Movimento        ]=[Answer->Tipo Movimento        ]
          switch
            case coluna=1  : [coluna1 ]=[coluna1 ]+[Answer->Valor]  
            case coluna=2  : [coluna2 ]=[coluna2 ]+[Answer->Valor]  
            case coluna=3  : [coluna3 ]=[coluna3 ]+[Answer->Valor]  
            case coluna=4  : [coluna4 ]=[coluna4 ]+[Answer->Valor]  
            case coluna=5  : [coluna5 ]=[coluna5 ]+[Answer->Valor]  
            case coluna=6  : [coluna6 ]=[coluna6 ]+[Answer->Valor]  
            case coluna=7  : [coluna7 ]=[coluna7 ]+[Answer->Valor]  
            case coluna=8  : [coluna8 ]=[coluna8 ]+[Answer->Valor]  
            case coluna=9  : [coluna9 ]=[coluna9 ]+[Answer->Valor]  
            case coluna=10 : [coluna10]=[coluna10]+[Answer->Valor]  
            case coluna=11 : [coluna11]=[coluna11]+[Answer->Valor]  
            case coluna=12 : [coluna12]=[coluna12]+[Answer->Valor]  
          endswitch
                  
  endif   

  moveto "answer"

endscan
do_it!
ClearAll

if PrimeiraVez
   then PrimeiraVez=false
   
        TabelaSaldos=Cria_Temp(PrivDir())
        Copy "Answer" TabelaSaldos
        Empty TabelaSaldos
endif   

endproc

;*******************************************************************************
;* Rotina p/ Processar Registros                                               *
;*******************************************************************************
Proc Processa()
private c1, c2, c3, c4, i, plok
ClearAll

Aguarde("Processando dados")

{Ask} typeIn tabela enter check
do_it!
Clearall

CoEdit tabela, "answer"
SetHighLight Current Record 23 Field 31
moveto [Codigo PLano_Conta]
scan for search(".AA",[Codigo Plano_Conta])=0

  c1=SubStr([Answer->Codigo Plano_Conta],01,01)
  c2=SubStr([Answer->Codigo Plano_Conta],01,03)
  c3=SubStr([Answer->Codigo Plano_Conta],01,06)
  c4=SubStr([Answer->Codigo Plano_Conta],01,09)
  c5=       [Answer->Codigo Plano_Conta]         
  
  moveto tabela
  For i From 1 To 4
  
    plok=false
    Moveto [Codigo Plano_Conta]
    Switch
      Case i=1:
           If Not IsBlank(SubStr(c2,02,02))
              Then Locate c1
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
      Case i=2:
           If Not IsBlank(SubStr(c3,04,03))
              Then Locate c2
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
      Case i=3:
           If Not IsBlank(SubStr(c4,07,03))
              Then Locate c3
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
      Case i=4:
           If Not IsBlank(SubStr(c5,10,04))
              Then Locate c4
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
    EndSwitch
    
    if plok
       then
            [Coluna1  ]=[Coluna1  ]+[Answer->Coluna1  ]
            [Coluna2  ]=[Coluna2  ]+[Answer->Coluna2  ]
            [Coluna3  ]=[Coluna3  ]+[Answer->Coluna3  ]
            [Coluna4  ]=[Coluna4  ]+[Answer->Coluna4  ]
            [Coluna5  ]=[Coluna5  ]+[Answer->Coluna5  ]
            [Coluna6  ]=[Coluna6  ]+[Answer->Coluna6  ]
            [Coluna7  ]=[Coluna7  ]+[Answer->Coluna7  ]
            [Coluna8  ]=[Coluna8  ]+[Answer->Coluna8  ]
            [Coluna9  ]=[Coluna9  ]+[Answer->Coluna9  ]
            [Coluna10 ]=[Coluna10 ]+[Answer->Coluna10 ]
            [Coluna11 ]=[Coluna11 ]+[Answer->Coluna11 ]
            [Coluna12 ]=[Coluna12 ]+[Answer->Coluna12 ]
  
    endif     
    
  EndFor

  moveto "answer"

Endscan
Do_It!
ClearAll

if VSDGOPCAO="2" or VSDGOPCAO="4" 
   Then PegaSaldos()
Endif

if VSDGOPCAO="2" or VSDGOPCAO="4" 
   Then FluxodeCaixa()
Endif

Sort Tabela On "Codigo Plano_conta"
ClearAll

CoEdit tabela
scan

  if [Codigo Plano_Conta]="0"       and [Descricao Plano_Conta]="SALDO INICIAL" then loop endif
  if [Codigo Plano_Conta]="9999999" and [Descricao Plano_Conta]="SALDO FINAL"   then loop endif

  [Total]=[coluna1 ]+[coluna2 ]+[coluna3 ]+[coluna4 ]+[coluna5 ]+[coluna6 ]+
          [coluna7 ]+[coluna8 ]+[coluna9 ]+[coluna10]+[coluna11]+[coluna12]

endscan
Do_It!
ClearAll

If CheckTG_OPCTAANALITICA[1]
   then
        {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
        Moveto [Tipo de Conta  ] TypeIn "A" 
        Do_It!
        ClearAll
endif   

if CheckTG_OPCTATRANSF[1]
   then
        {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
        Moveto [Codigo Plano_Conta     ] TypeIn "\"1.AAAAA5\" or \"5.AAAAA5\""
        Do_It!
        ClearAll
endif    

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Coluna1                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna2                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna3                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna4                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna5                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna6                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna7                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna8                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna9                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna10               ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna11               ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna12               ] TypeIn "0, Changeto Blank" 
Do_It!
ClearAll

;***** Ajusta Dados ************************************
If VSDGEMPRESA="0000"
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] TypeIn "changeto 0000"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto TOTALIZA EMPRESAS"
        Do_It!
        ClearAll
   else
        {Ask} {\\Sistemas\\Cadastro\\Empresas}
        Moveto [Codigo da Empresa     ] Example "cde"
        Moveto [Nome Fantasia Empresa ] Example "nfe"
        {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa     ] Example "cde"
        Moveto [Nome Fantasia Empresa ] TypeIn "changeto _nfe"
        Do_It!
        ClearAll
EndIf

EndProc     ;  (Processa)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc MontaTabela()

{Ask} {PlContas}
Moveto [Codigo Plano_Conta    ] Example "cpl" typeIn ", ~VSDGPLCONTAS.."
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Moveto [Inativo               ] TypeIn "N"  
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Do_It!
ClearAll

EndProc ;MontaTabela()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc PegaSaldos()
private anoref, mesref, wi, pos, saldoi, saldof

ClearAll

Aguarde("Processando saldos")

for wi from 1 to 12

  if isblank(Array_MesAno[wi]) then quitloop endif

  pos   =searchfrom("/",Array_MesAno[wi],1)
  MESREF=AlinhM(substr(Array_MesAno[wi],1,pos-1),2)
  ANOREF=AlinhM(substr(Array_MesAno[wi],pos+1,4),4)

  {Ask} TypeIn "\\Sistemas\\Ctacor\\Conta" Enter
  Moveto [Codigo da Conta       ] TypeIn "_cta"
  Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
  
  {Ask} TypeIn "\\Sistemas\\Ctacor\\SaldCont" Enter Check
  Moveto [Codigo da Conta       ] TypeIn "_cta"
  Moveto [Ano Referencia        ] typeIn "~ANOREF"
  Moveto [Mes Referencia        ] typeIn "~MESREF"
  do_it!
  ClearAll

  saldoi=0
  saldof=0
  Empty(TabelaSaldos)
  
  Coedit TabelaSaldos, "Answer"
  scan
    saldoi = saldoi +  [Saldo Inicial]
    saldof = saldof +(([Saldo Inicial]+[Entradas])-[Saidas])
  endscan
  
  moveto TabelaSaldos
  [Codigo da Empresa     ]=VSDGEMPRESA2
  [Data                  ]=Primeiro_Dia(MESREF+ANOREF)
  [Valor                 ]=saldoi
  [Codigo Plano_Conta    ]="0"
  [Descricao Plano_Conta ]="SALDO INICIAL"
  

  end 
  Down
  [Codigo da Empresa     ]=VSDGEMPRESA2
  [Data                  ]=Primeiro_Dia(MESREF+ANOREF)
  [Valor                 ]=saldof
  [Codigo Plano_Conta    ]="9999999"
  [Descricao Plano_Conta ]="SALDO FINAL"
  do_it!
  ClearAll


  {Ask} TypeIn TabelaSaldos Enter Check
  do_it!
  ClearAll

  AdicionaDados()

endfor

Delete TabelaSaldos
endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc FluxoDeCaixa()
private wi, e, s, sdi, sdf

ClearAll

Aguarde("Processando novos saldos")

sdi=0
sdf=0

Coedit Tabela

for wi from 1 to 12

  Moveto [Codigo Plano_Conta]
  locate "0"
  if retval and [Descricao Plano_Conta]="SALDO INICIAL"
     then
          switch
            case wi=1  : sdi=[coluna1 ]
                         sdi=(sdi+ENTRADAS)-SAIDAS
                         sdi=sdi+(CHEQUESAENTRAR)-CHEQUESASAIR
                         [coluna1 ]=sdi
                         
            case wi=2  : [coluna2 ]=sdi  
            case wi=3  : [coluna3 ]=sdi  
            case wi=4  : [coluna4 ]=sdi  
            case wi=5  : [coluna5 ]=sdi  
            case wi=6  : [coluna6 ]=sdi  
            case wi=7  : [coluna7 ]=sdi  
            case wi=8  : [coluna8 ]=sdi  
            case wi=9  : [coluna9 ]=sdi  
            case wi=10 : [coluna10]=sdi  
            case wi=11 : [coluna11]=sdi  
            case wi=12 : [coluna12]=sdi  
          endswitch
  endif

  e=0
  s=0
  scan
  
    if [Tipo de Conta     ]="S"                                                   then loop endif
    if [Codigo Plano_Conta]="0"       and [Descricao Plano_Conta]="SALDO INICIAL" then loop endif
    if [Codigo Plano_Conta]="9999999" and [Descricao Plano_Conta]="SALDO FINAL"   then loop endif

    switch
      case wi=1  : vr= [coluna1 ]  
      case wi=2  : vr= [coluna2 ]  
      case wi=3  : vr= [coluna3 ]  
      case wi=4  : vr= [coluna4 ]  
      case wi=5  : vr= [coluna5 ]  
      case wi=6  : vr= [coluna6 ]  
      case wi=7  : vr= [coluna7 ]  
      case wi=8  : vr= [coluna8 ]  
      case wi=9  : vr= [coluna9 ]  
      case wi=10 : vr= [coluna10]  
      case wi=11 : vr= [coluna11]  
      case wi=12 : vr= [coluna12]  
    endswitch
  
    if [Tipo Movimento]="E" then e=e+vr endif
    if [Tipo Movimento]="S" then s=s+vr endif
  
  endscan

  sdf=(sdi+e)-s
  
  Moveto [Codigo Plano_Conta]
  locate "9999999"
  if retval and [Descricao Plano_Conta]="SALDO FINAL"
     then 
          switch
            case wi=1  : [coluna1 ]=sdf  
            case wi=2  : [coluna2 ]=sdf  
            case wi=3  : [coluna3 ]=sdf  
            case wi=4  : [coluna4 ]=sdf  
            case wi=5  : [coluna5 ]=sdf  
            case wi=6  : [coluna6 ]=sdf  
            case wi=7  : [coluna7 ]=sdf  
            case wi=8  : [coluna8 ]=sdf  
            case wi=9  : [coluna9 ]=sdf  
            case wi=10 : [coluna10]=sdf  
            case wi=11 : [coluna11]=sdf  
            case wi=12 : [coluna12]=sdf  
          endswitch
  endif
  
  sdi=sdf
  sdf=0

endfor
do_it!
ClearAll

endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc pegatpmovimento()
switch
 case VSDGOPCAO="1": VSDGNOMOPCAO="REALIZADO"
 case VSDGOPCAO="2": VSDGNOMOPCAO="REALIZADO+SALDOS"
 case VSDGOPCAO="3": VSDGNOMOPCAO="· REALIZAR"
 case VSDGOPCAO="4": VSDGNOMOPCAO="FLUXO DE CAIXA"
 case VSDGOPCAO="5": VSDGNOMOPCAO="REALIZADO+· REALIZAR II"
endswitch
endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: 
          If Campo="TG_OPCAO"
             Then LimpaRodape(0)
             
                  ShowPopup " Op‡”es de Movimentos " @ 09,27
                  "1-REALIZADO               " : " Movimentos realizados             " : "1",
                  "2-REALIZADO+SALDOS        " : " Movimentos realizados + saldos    " : "2",
                  "3-· REALIZAR              " : " CH NÆo Apresentado/Pr‚ Datado + CH Terceiros + Cta … Pagar + Cta … Receber " : "3",
                  "4-FLUXO DE CAIXA          " : " Fluxo de Caixa                    " : "4",
                  "5-REALIZADO+· REALIZAR II " : " Movimentos realizados + Cta … Pagar + Cta … Receber " : "5"
                  EndMenu
                  To VSDGOPCAO
                  If RetVal
                     Then pegatpmovimento() 
                  EndIf
                  RefreshDialog
             Else Dialog_F1()
          EndIf
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESATE"     : Campo="NO"
            Case Campo="TG_PLCONTAS"      : Campo="TG_EMPRESATE"
            Case Campo="TG_OPCAO"         : Campo="TG_PLCONTAS"
            Case Campo="TG_OPDTEMISCOMP"  : Campo="TG_OPCAO"
            Case Campo="TG_DTINI"         : Campo="TG_OPCAO" 
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPCTAANALITICA": Campo="TG_DTFIM"
            case Campo="TG_OPCTATRANSF"   : Campo="TG_OPCTAANALITICA"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESATE"
          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_EMPRESATE"    :
                         If IsBlank(VSDGEMPRESA)
                            Then Mensagem("Informe uma Empresa !")
                            Else Campo="TG_PLCONTAS"
                         EndIf
                         
                    Case Campo="TG_PLCONTAS"      : Campo="TG_OPCAO"
                    Case Campo="TG_OPCAO"         : 
                         VSDGOPCAO = ControlValue("TG_OPCAO")
                         pegatpmovimento()
                         switch
                           case VSDGOPCAO="1": Campo="TG_OPDTEMISCOMP"
                           
                           case VSDGOPCAO="2": VSDGOPDTEMISCOMP="1"
                                               VSDGNOMOPDTEMISCOMP="LAN€AMENTO/EMISS¶O"
                                               
                                               Campo="TG_DTINI"
                           
                           case VSDGOPCAO="3": VSDGOPDTEMISCOMP="1"
                                               VSDGNOMOPDTEMISCOMP="VENCIMENTO"
                                               Campo="TG_DTINI"

                           case VSDGOPCAO="4": VSDGOPDTEMISCOMP="1"
                                               VSDGNOMOPDTEMISCOMP="EMISS¶O/VENCIMENTO"
                                               
                                               VSDGPLCONTAS    =""
                                               VSDGNOMPLCONTAS =""
                                               
                                               Campo="TG_DTINI"
                                               
                           case VSDGOPCAO="5": Campo="TG_OPDTEMISCOMP"
                           
                           otherwise         : fastmsg("Op‡Æo inv lida !")
                           
                         endswitch
                    Case Campo="TG_OPDTEMISCOMP"  : Campo="TG_DTINI"                         
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="TG_OPCTAANALITICA"
                    Case Campo="TG_OPCTAANALITICA": Campo="TG_OPCTATRANSF"
                    case Campo="TG_OPCTATRANSF"   : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESATE":
       MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_OPCAO":
       MSG_CAMPO="Movimentos, [F1]Consultar op‡äes"     
  Case Campo="TG_OPCTAANALITICA" or Campo="TG_OPCTATRANSF":
     MensagemCheckBoxes()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

Array Array_MesAno[12]
Array Array_Tit_MesAno[12]

VSDGEMPRESA         = ""
VSDGDTINI           = BlankDate()
VSDGDTFIM           = BlankDate()
VSDGNOMPLCONTAS     = ""
VSDGOPDTEMISCOMP    = ""
VSDGNOMOPDTEMISCOMP = ""   

Array TG_OPCTAANALITICA[1] 
TG_OPCTAANALITICA[1]="NÆo Visualizar"

Array CheckTG_OPCTAANALITICA[ArraySize(TG_OPCTAANALITICA)]
CheckTG_OPCTAANALITICA[1]=False

Array TG_OPCTATRANSF[2] 
TG_OPCTATRANSF[1]="NÆo Visualizar"
TG_OPCTATRANSF[2]="Desprezar Valores Apurados"

Array CheckTG_OPCTATRANSF[ArraySize(TG_OPCTATRANSF)]
CheckTG_OPCTATRANSF[1]=False
CheckTG_OPCTATRANSF[2]=False

While True
  ShowDialog "Sint‚tico III p/ Plano de Contas/Mensal" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 16 Width 72

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

    Label  @ 02,00 "Plano de Contas" For "TG_PLCONTAS"
    Accept @ 03,01 Width 33 "A13"  Picture "!*!" Tag "TG_PLCONTAS" To VSDGPLCONTAS
    Accept @ 04,01 Width 33 "A40" Picture "!*!" Tag "TG_NOMPLCONTAS"  To VSDGNOMPLCONTAS

    Label  @ 05,00 "Op‡ao dos Movimentos" For "TG_OPCAO"
    Accept @ 06,04 Width 04 "A1"  Picture "!*!" Tag "TG_OPCAO" To VSDGOPCAO
    Accept @ 06,09 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPCAO" To VSDGNOMOPCAO

    Label  @ 07,00 "Op‡äes de Datas" For "TG_OPDTEMISCOMP"
    Accept @ 08,04 Width 04 "A1"  Picture "1,2" Tag "TG_OPDTEMISCOMP" To VSDGOPDTEMISCOMP
    Accept @ 08,09 Width 25 "A20"  Picture "!*!" Tag "TG_NOMOPDTEMISCOMP" To VSDGNOMOPDTEMISCOMP

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

    Label @ 00,35 "Contas An liticas" For "TG_OPCTAANALITICA"
    CheckBoxes @ 01,35 Height 1 Width 33 Tag "TG_OPCTAANALITICA"
    TG_OPCTAANALITICA[1] to CheckTG_OPCTAANALITICA[1]

    Label @ 02,35 "Transferˆncias entre Contas" For "TG_OPCTATRANSF"
    CheckBoxes @ 03,35 Height 2 Width 33 Tag "TG_OPCTATRANSF"
    TG_OPCTATRANSF[1] to CheckTG_OPCTATRANSF[1],
    TG_OPCTATRANSF[2] to CheckTG_OPCTATRANSF[2]

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Informe uma Empresa !")
          Loop
  EndIf

  if IsBlank(VSDGDTINI) or IsBlank(VSDGDTFIM)
     Then Mensagem("Data inv lida !")
          Loop
  EndIf

  if (VSDGDTFIM-VSDGDTINI)>365
     Then Mensagem("Per¡odo Referente m ximo de 12 meses !")
          Loop
  EndIf
  
  If Len(VSDGPLCONTAS)<13
     Then PLCONTAS=VSDGPLCONTAS + ".."
     Else PLCONTAS=VSDGPLCONTAS
  EndIf

  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf
  
  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando o Relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Ctacor\\RM_0211" Tabela
  Empty Tabela
  
  ;------
  for wi from 1 to 12
    Array_MesAno[wi]    =blanknum()
    Array_Tit_MesAno[wi]=""
  endfor
  
  mesini=month(VSDGDTINI)
  anoini=year(VSDGDTINI)
  for wi from 1 to 12

     Array_MesAno[wi]    =strval(mesini)+"/"+strval(anoini)
     Array_Tit_MesAno[wi]=Format("W13,AR",rtrim(MesExt(mesini))+"/"+substr(strval(anoini),3,2))

     if mesini=12
        then mesini=1
             anoini=anoini+1
        else mesini=mesini+1
     endif

     if ( anoini=year(VSDGDTFIM) and mesini> month(VSDGDTFIM) ) or
        ( anoini>year(VSDGDTFIM) and mesini>=month(VSDGDTFIM) ) 
        then quitloop
     endif
  endfor
  ;------

  MontaTabela()

  PrimeiraVez   =true
  CHEQUESAENTRAR=0
  CHEQUESASAIR  =0
  ENTRADAS      =0
  SAIDAS        =0 
  VSDGDTREF     =Primeiro_Dia_Data(VSDGDTINI)

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    If IsTable("Answer")     Then Delete "Answer" EndIf
    Realizado()
    ChequesEmitidos()
  EndWhile
  ARealizarReceber()
  ARealizarPagar()
  ARealizarChequesTerceiros()

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  Processa()

  tit_opcao=VSDGNOMOPCAO+" - "+VSDGNOMOPDTEMISCOMP                                  

  Impressao_Orientacao="Paisagem"

  CI_FONT=chr(27)+"k10"

  IMPRIREL(Tabela,"R")

  Delete Tabela
  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All
