;** Rm_0260A *******************************************************************
;*  Relatorio Analitico/ Plano de Contas - DRE                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 27/10/2014 por Kamila Gomes            
;Ultima Alteracao: 07/11/2014 por Kamila Gomes    
;Motivo Alteracao: Ajuste Ask [Sistema Gerador] diferente de CP e CR
;Ultima Alteracao: 27/11/2014 por Kamila Gomes    
;Motivo Alteracao: Ajuste Para subtrair baixas <> Normal
;Ultima Alteracao: 20/01/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes de procedimento e erros   
;Ultima Alteracao: 04/02/2015 por Kamila Gomes
;Motivo Alteracao: Adicionado filtro por tipo de Opera‡Æo Entrada ou Saida
;Ultima Alteracao: 11/11/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado Coluna Data Venc         
;Ultima Alteracao: 05/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Datas, filtro, lancamento origem, layout relatorio
;Ultima Alteracao: 11/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes rateio contas a pagar
;Ultima Alteracao: 06/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 19/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes titulos a receber - cancelado/devolucao
;Ultima Alteracao: 03/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes a pagar/a receber - cancelado/devolucao
;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: 19/06/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ plano de conta apenas ativos
;Ultima Alteracao: 10/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dispositivo arquivo    
;Ultima Alteracao: 19/01/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo de Operacao 03, 12           
;Ultima Alteracao: 26/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao novo processo concetrador RM_0260, RM_0250
;Ultima Alteracao: 02/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sequencia da Baixa TitRat        
;Ultima Alteracao: 16/07/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao rateio   
;Ultima Alteracao: 25/07/2019 por Kamila Gomes
;Motivo Alteracao: Ajustes nos campos da TitBaixa na proc SelecionaRM_0260A4                                     
;Ultima Alteracao: 19/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes data competencia titulos         
;Ultima Alteracao: 30/01/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes na proc ProcessaRM_0260A() p/ nÆo limpar o Centro de Custo como estava sendo realizado 
;Ultima Alteracao: 14/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_OPPLCONTAS, CheckTG_OPPLCONTAS[1]

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0260A5()
ClearAll

If not IsEmpty("Answer")
  then
       Edit "Answer"
       scan
         if not isblank([RT_Codigo Plano_Conta    ])
            then       
                 [Valor                 ]=[RT_Valor                 ]
                 [Codigo Plano_Conta    ]=[RT_Codigo Plano_Conta    ]     
                 [Descricao Plano_Conta ]=[RT_Descricao Plano_Conta ]
                 [Codigo CCusto         ]=[RT_Codigo CCusto         ]   
                 [Descricao CCusto      ]=[RT_Descricao CCusto      ]
                 [Valor do Juros        ]=BlankNum()     
                 [Valor do Desconto     ]=BlankNum()     
         endif
       endscan
       Do_It!
       ClearAll
endif
EstruturaDaTabelaNoKey("Answer","Movcont")
        
{ask} {Answer} check
Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
Do_It!
ClearAll

endproc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0260A6(tabelaref)
private tabelaref
ClearAll

If not IsEmpty("Answer")
  then
       Edit "Answer"
       scan
         if not isblank([RT_Codigo Plano_Conta    ])
            then       
                 [Valor do Documento    ]=[RT_Valor                 ]
                 [Codigo Plano_Conta    ]=[RT_Codigo Plano_Conta    ]     
                 [Descricao Plano_Conta ]=[RT_Descricao Plano_Conta ]
                 [Codigo CCusto         ]=[RT_Codigo CCusto         ]   
                 [Descricao CCusto      ]=[RT_Descricao CCusto      ]
         endif
       endscan
       Do_It!
       ClearAll
endif
EstruturaDaTabelaNoKey("Answer",tabelaref)
        
{ask} {Answer} check
Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
Do_It!
ClearAll

endproc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0260A()
ClearAll

If IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")
   Then {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
        Moveto [Tipo de Operacao      ] TypeIn "05 or 06 or 07 or 13 or 14 or 03 or 12"
        Moveto [Tipo Movimento        ] TypeIn "~VSDGOPERACAO.."
        If VSDGOPDTEMISCOMP="1"
           Then 
                ;Operacao
                Moveto [Data            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
           Else 
                ;Competencia
                Moveto [Data Competencia] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Sistema Gerador ] TypeIn "Not CP, Not CR"  
        EndIf 
        Moveto [Cheque Pre-Datado     ] TypeIn "Not S"

      switch
        case CheckTG_OPPLCONTAS[1] :
          Moveto [Numero do Lancamento  ]       TypeIn       "_nl!"
          
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovRat" Enter
          Moveto [Numero do Lancamento  ]       TypeIn       "_nl, as \"RT_Numero do Lancamento\""
          Moveto [Sequencia da Baixa    ] check TypeIn            "as \"RT_Sequencia da Baixa\""
          Moveto [Sequencia do Rateio   ] check TypeIn            "as \"RT_Sequencia do Rateio\""
          Moveto [Codigo Plano_Conta    ] check TypeIn "not blank, as \"RT_Codigo Plano_Conta\""
          Moveto [Descricao Plano_Conta ] check TypeIn            "as \"RT_Descricao Plano_Conta\""
          Moveto [Codigo CCusto         ] check TypeIn            "as \"RT_Codigo CCusto\""
          Moveto [Descricao CCusto      ] check TypeIn            "as \"RT_Descricao CCusto\""
          Moveto [Porcentagem           ] check TypeIn            "as \"RT_Porcentagem\""
          Moveto [Valor                 ] check TypeIn            "as \"RT_Valor\""
          Do_It!
          ClearAll
          SelecionaRM_0260A5()
        
        otherwise              :
          Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
          Do_It!
          ClearAll
        
      endswitch
       
       {Ask}{Answer} TypeIn "Fast"
       Moveto [Data_Inclusao] TypeIn "changeto blank"
       Do_It!
       ClearAll
       
       {Ask}{Answer} TypeIn "Fast"
       Moveto [Sistema Gerador     ] TypeIn "Blank or MA"  
       Moveto [Numero do Lancamento] TypeIn "_nl"
       Moveto [Lancamento Gerador  ] TypeIn "changeto _nl"
       Do_It!
       ClearAll
       
       Add "Answer" Tabela
       ClearAll
EndIf
EndProc     

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0260A2()
ClearAll

If IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")
  Then {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
       Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
       Moveto [Tipo de Operacao      ] TypeIn "05"
       Moveto [Cheque Pre-Datado     ] TypeIn "S"
       Moveto [Tipo Movimento        ] TypeIn "~VSDGOPERACAO.."
       If VSDGOPDTEMISCOMP="1"
          Then
               ;Operacao
               Moveto [Data Cheque Pre-Datado] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Else
               ;Competencia
               Moveto [Data Competencia] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
               Moveto [Sistema Gerador ] TypeIn "Not CP, Not CR"  
       EndIf 
      switch
        case CheckTG_OPPLCONTAS[1] :
          Moveto [Numero do Lancamento  ]       TypeIn       "_nl!"
          
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovRat" Enter
          Moveto [Numero do Lancamento  ]       TypeIn       "_nl, as \"RT_Numero do Lancamento\""
          Moveto [Sequencia da Baixa    ] check TypeIn            "as \"RT_Sequencia da Baixa\""
          Moveto [Sequencia do Rateio   ] check TypeIn            "as \"RT_Sequencia do Rateio\""
          Moveto [Codigo Plano_Conta    ] check TypeIn "not blank, as \"RT_Codigo Plano_Conta\""
          Moveto [Descricao Plano_Conta ] check TypeIn            "as \"RT_Descricao Plano_Conta\""
          Moveto [Codigo CCusto         ] check TypeIn            "as \"RT_Codigo CCusto\""
          Moveto [Descricao CCusto      ] check TypeIn            "as \"RT_Descricao CCusto\""
          Moveto [Porcentagem           ] check TypeIn            "as \"RT_Porcentagem\""
          Moveto [Valor                 ] check TypeIn            "as \"RT_Valor\""
          Do_It!
          ClearAll
          SelecionaRM_0260A5()
        
        otherwise              :
          Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
          Do_It!
          ClearAll
        
      endswitch
       
       If VSDGOPDTEMISCOMP="1" And Not IsEmpty("Answer")
          Then {Ask}{Answer} TypeIn "Fast"
               Moveto [Data Cheque Pre-Datado] TypeIn "_dtchp"
               Moveto [Data                  ] TypeIn "changeto _dtchp"
               Do_It!
               ClearAll
       EndIf
       
       {Ask}{Answer} TypeIn "Fast"
       Moveto [Data_Inclusao] TypeIn "changeto blank"
       Do_It!
       ClearAll
       
       {Ask}{Answer} TypeIn "Fast"
       Moveto [Sistema Gerador     ] TypeIn "Blank or MA"  
       Moveto [Numero do Lancamento] TypeIn "_nl"
       Moveto [Lancamento Gerador  ] TypeIn "changeto _nl"
       Do_It!
       ClearAll

       Add "Answer" Tabela
       ClearAll
EndIf
EndProc     

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0260A3()
private tabtit, tabtitrat, txref
ClearAll

If VSDGOPDTEMISCOMP="1"
   Then Return
EndIf   

If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic")
  Then 
      switch
        case CheckTG_OPPLCONTAS[1] :
          {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter Check 
           Moveto [Numero do Lancamento  ] TypeIn "_nlanc!"
           Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
           Moveto [Data de Emissao       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
           {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Dupbaixa" Enter
           Moveto [Numero do Lancamento  ] TypeIn "_nlanc"
           moveto [Tipo da Baixa         ] TypeIn "CANCELADO or DEVOLUCAO"
           Moveto [Valor do Recebimento  ] TypeIn "Calc Sum as ValorBaixa"
           Moveto [Valor do Juros        ] TypeIn "Calc Sum as ValorJuros"
           Moveto [Valor do Desconto     ] TypeIn "Calc Sum as ValorDesconto"
           Do_It!
           ClearAll
           tabtit=adiciona_indice_temp("Numero do Lancamento")
             
           {Ask} TypeIn tabtit    Enter check 
           Moveto [Numero do Lancamento  ] TypeIn "_nl!"
           {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duprat" Enter
           Moveto [Numero do Lancamento  ]       TypeIn       "_nl, as \"RT_Numero do Lancamento\""
           Moveto [Sequencia da Baixa    ] check TypeIn         "0, as \"RT_Sequencia da Baixa\""
           Moveto [Sequencia do Rateio   ] check TypeIn            "as \"RT_Sequencia do Rateio\""
           Moveto [Codigo Plano_Conta    ] check TypeIn "not blank, as \"RT_Codigo Plano_Conta\""
           Moveto [Descricao Plano_Conta ] check TypeIn            "as \"RT_Descricao Plano_Conta\""
           Moveto [Codigo CCusto         ] check TypeIn            "as \"RT_Codigo CCusto\""
           Moveto [Descricao CCusto      ] check TypeIn            "as \"RT_Descricao CCusto\""
           Moveto [Porcentagem           ] check TypeIn            "as \"RT_Porcentagem\""
           Moveto [Valor                 ] check TypeIn            "as \"RT_Valor\""
           Do_It!
           ClearAll

           delete tabtit
           
           Edit "Answer"
           Scan
             if not isblank([RT_Codigo Plano_Conta    ])
                then       
                     txref=([RT_Valor]/[Valor do Documento])/100
                     [RT_Valor          ]=[RT_Valor          ]- ndecimal(( ( (([ValorBaixa]+[ValorDesconto])-[ValorJuros]) *txref ) /100 ),2)
                else 
                     [Valor do Documento]=[Valor do Documento]-(([ValorBaixa]+[ValorDesconto])-[ValorJuros])
             endif        
           EndScan
           Do_It!
           ClearAll
    
           SelecionaRM_0260A6("\\base\\sistemas\\ctarec\\duplic")

           Ajusta_DadosRM_0260A(1)
        
        otherwise              :
          {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter Check 
           Moveto [Numero do Lancamento  ] TypeIn "_nlanc!"
           Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
           Moveto [Data de Emissao       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
           Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
           {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa" Enter 
           Moveto [Numero do Lancamento  ] TypeIn "_nlanc"
           moveto [Tipo da Baixa         ] TypeIn "CANCELADO or DEVOLUCAO"
           Moveto [Valor do Recebimento  ] TypeIn "Calc Sum as ValorBaixa"
           Moveto [Valor do Juros        ] TypeIn "Calc Sum as ValorJuros"
           Moveto [Valor do Desconto     ] TypeIn "Calc Sum as ValorDesconto"
           Do_It!
           ClearAll
    
           Edit "Answer"
           Scan
             [Valor do Documento]=[Valor do Documento]-(([ValorBaixa]+[ValorDesconto])-[ValorJuros])
           EndScan
           Do_It!
           ClearAll
    
           Ajusta_DadosRM_0260A(1)
        
      endswitch
EndIf

EndProc     

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0260A4()
private tabtit, tabtitrat, txref
ClearAll

If VSDGOPDTEMISCOMP="1"
   Then Return
EndIf   

If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos")
  Then
      switch
        case CheckTG_OPPLCONTAS[1] :
         {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter Check
           Moveto [Numero do Lancamento  ] TypeIn "_nlanc!"
           Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
           Moveto [Data Competencia      ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
           {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titbaixa" Enter
           Moveto [Numero do Lancamento  ] TypeIn "_nlanc"
           moveto [Tipo da Baixa         ] TypeIn "CANCELADO or DEVOLUCAO"
           Moveto [Valor do Pagamento    ] TypeIn "Calc Sum as ValorBaixa"
           Moveto [Valor do Juros        ] TypeIn "Calc Sum as ValorJuros"
           Moveto [Valor do Desconto     ] TypeIn "Calc Sum as ValorDesconto"
           Do_It!
           ClearAll
           tabtit=adiciona_indice_temp("Numero do Lancamento")
             
           {Ask} TypeIn tabtit    Enter check 
           Moveto [Numero do Lancamento  ] TypeIn "_nl!"
           {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titrat" Enter
           Moveto [Numero do Lancamento  ]       TypeIn       "_nl, as \"RT_Numero do Lancamento\""
           Moveto [Sequencia da Baixa    ] check TypeIn         "0, as \"RT_Sequencia da Baixa\""
           Moveto [Sequencia do Rateio   ] check TypeIn            "as \"RT_Sequencia do Rateio\""
           Moveto [Codigo Plano_Conta    ] check TypeIn "not blank, as \"RT_Codigo Plano_Conta\""
           Moveto [Descricao Plano_Conta ] check TypeIn            "as \"RT_Descricao Plano_Conta\""
           Moveto [Codigo CCusto         ] check TypeIn            "as \"RT_Codigo CCusto\""
           Moveto [Descricao CCusto      ] check TypeIn            "as \"RT_Descricao CCusto\""
           Moveto [Porcentagem           ] check TypeIn            "as \"RT_Porcentagem\""
           Moveto [Valor                 ] check TypeIn            "as \"RT_Valor\""
           Do_It!
           ClearAll

           delete tabtit
           
           Edit "Answer"
           Scan
             if not isblank([RT_Codigo Plano_Conta    ])
                then       
                     txref=([RT_Valor]/[Valor do Documento])/100
                     [RT_Valor          ]=[RT_Valor          ]- ndecimal(( ( (([ValorBaixa]+[ValorDesconto])-[ValorJuros]) *txref ) /100 ),2)
                else 
                     [Valor do Documento]=[Valor do Documento]-(([ValorBaixa]+[ValorDesconto])-[ValorJuros])
             endif        
           EndScan
           Do_It!
           ClearAll
    
           SelecionaRM_0260A6("\\base\\sistemas\\ctapag\\titulos")

           Ajusta_DadosRM_0260A(2)

        otherwise              :
         {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter Check
         Moveto [Numero do Lancamento  ] TypeIn "_nlanc!"
         Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
         Moveto [Data Competencia      ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
         Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
         {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"TitBaixa" Enter 
         Moveto [Numero do Lancamento  ] TypeIn "_nlanc"
         moveto [Tipo da Baixa         ] TypeIn "CANCELADO or DEVOLUCAO"
         Moveto [Valor do Pagamento    ] TypeIn "Calc Sum as ValorBaixa"
         Moveto [Valor do Juros        ] TypeIn "Calc Sum as ValorJuros"
         Moveto [Valor do Desconto     ] TypeIn "Calc Sum as ValorDesconto"
         Do_It!
         ClearAll
         
         Edit "Answer"
         Scan
           [Valor do Documento]=[Valor do Documento]-(([ValorBaixa]+[ValorDesconto])-[ValorJuros])
         EndScan
         Do_It!
         ClearAll
  
         Ajusta_DadosRM_0260A(2)
         
      endswitch
EndIf

EndProc     

;*******************************************************************************
;* Rotina p/ Ajustar dados na tabela temp                                      *
;*******************************************************************************
Proc Ajusta_DadosRM_0260A(s)
private s

ClearAll

If IsEmpty("Answer")
   Then Return
EndIf    
                  
Switch
  Case s=1 :  ;Duplic
    {Ask} {Answer} 
    Moveto [Numero do Lancamento   ] Example "nLanc"
    Moveto [Codigo da Empresa      ] Example "cEmp"
    Moveto [Nome Fantasia Empresa  ] Example "nEmp"
    Moveto [Codigo do Documento    ] Example "cDoc"
    Moveto [Tipo do Documento      ] Example "tDoc"
    Moveto [Serie do Documento     ] Example "sDoc"
    Moveto [Numero do Documento    ] Example "nDoc"
    Moveto [Tipo do Lancamento     ] Example "tLanc"
    Moveto [Descricao do Lancamento] Example "dLanc"
    Moveto [Tipo                   ] Example "tipo"
    Moveto [Codigo do Destinatario ] Example "cDest"
    Moveto [Nome Fantasia EmitDest ] Example "ndest"
    Moveto [Razao Social           ] Example "rsoc"
    Moveto [Data de Emissao        ] Example "data"
    Moveto [Data de Vencimento     ] Example "datav"
    Moveto [Valor do Documento     ] Example "vrDoc"
    Moveto [Codigo da Conta        ] Example "cCont"
    Moveto [Descricao da Conta     ] Example "dCont"
    Moveto [Codigo Plano_Conta     ] Example "plCont"
    Moveto [Descricao Plano_Conta  ] Example "dPlCt"

  Case s=2 :  ;Titulos
    {Ask} {Answer} 
    Moveto [Numero do Lancamento    ] Example "nLanc"
    Moveto [Codigo da Empresa       ] Example "cEmp" 
    Moveto [Nome Fantasia Empresa   ] Example "nEmp" 
    Moveto [Codigo do Documento     ] Example "cDoc" 
    Moveto [Tipo do Documento       ] Example "tDoc" 
    Moveto [Serie do Documento      ] Example "sDoc" 
    Moveto [Numero do Documento     ] Example "nDoc" 
    Moveto [Tipo do Lancamento      ] Example "tLanc"
    Moveto [Descricao do Lancamento ] Example "dLanc"
    Moveto [Tipo                    ] Example "tipo"  
    Moveto [Codigo do Emitente      ] Example "cDest" 
    Moveto [Nome Fantasia EmitDest  ] Example "ndest" 
    Moveto [Razao Social            ] Example "rsoc"
    Moveto [Data Competencia        ] Example "data"  
    Moveto [Data de Vencimento      ] Example "datav"
    Moveto [Valor do Documento      ] Example "vrDoc"
    Moveto [Codigo da Conta         ] Example "cCont" 
    Moveto [Descricao da Conta      ] Example "dCont" 
    Moveto [Codigo Plano_Conta      ] Example "plCont"
    Moveto [Descricao Plano_Conta   ] Example "dPlCt"
EndSwitch

{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"               
Moveto [Numero do Lancamento    ] Example "nLanc"      
Moveto [Codigo da Conta         ] Example "cCont"      
Moveto [Descricao da Conta      ] Example "dCont"      
Moveto [Codigo da Empresa       ] Example "cEmp"       
Moveto [Nome Fantasia Empresa   ] Example "nEmp"       
Moveto [Data                    ] Example "data"       
Moveto [Valor                   ] Example "vrDoc"      
Moveto [Codigo do Documento     ] Example "cDoc"       
Moveto [Tipo do Documento       ] Example "tDoc"       
Moveto [Serie do Documento      ] Example "sDoc"       
Moveto [Numero do Documento     ] Example "nDoc"       
Moveto [Tipo                    ] Example "tipo"       
Moveto [Codigo do EmitDest      ] Example "cDest"      
Moveto [Nome Fantasia EmitDest  ] Example "ndest"      
Moveto [Razao Social            ] Example "rsoc"
Moveto [Tipo do Lancamento      ] Example "tLanc"      
Moveto [Descricao do Lancamento ] Example "dLanc"      
Moveto [Codigo Plano_Conta      ] Example "plCont"     
Moveto [Descricao Plano_Conta   ] Example "dPlCt"      
Moveto [Descricao do Historico  ] TypeIn "\"* \"+_tDoc+\"/\"+_nDoc"

Moveto [Data_Inclusao           ] Example "datav"      
Moveto [Data Competencia        ] Example "data"      
Moveto [Lancamento Gerador      ] Example "nLanc"      
Switch
  Case s=1 :  ;Duplic
    Moveto [Sistema Gerador         ] TypeIn "CR"      
    Moveto [Tipo Movimento          ] TypeIn "E"      
  Case s=2 :  ;Titulos
    Moveto [Sistema Gerador         ] TypeIn "CP"      
    Moveto [Tipo Movimento          ] TypeIn "S"      
EndSwitch
Do_It!                                                 
ClearAll                                               

EndProc 

;*******************************************************************************
;* Rotina p/ Processar Registros                                               *
;*******************************************************************************
Proc ProcessaRM_0260A()
ClearAll

Adiciona_campo(Tabela,"Tipo de Conta(A1)")

;{Ask} TypeIn Tabela Enter TypeIn "Fast"
;Moveto [Codigo CCusto   ] TypeIn "Changeto Blank"
;Moveto [Descricao CCusto] TypeIn "Changeto Blank"
;Do_It!
;ClearAll

{Ask} {PlContas}
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Moveto [TipoEntradaSaida      ] Example "tpm"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] TypeIn "Changeto " Example "dpl"
Moveto [Tipo de Conta         ] typein "changeto " Example "tpc"
Moveto [Tipo Movimento        ] typein "changeto " Example "tpm"
Do_It!
ClearAll

If VSDGPLCONTAS=""
   Then 
        {Ask} {PlContas}
        Moveto [Codigo Plano_Conta    ] Example "cpl"
        Moveto [Descricao Plano_Conta ] Example "dpl"
        Moveto [Tipo de Conta         ] Example "tpc"
        Moveto [TipoEntradaSaida      ] Example "tpm"
        Moveto [Inativo               ] TypeIn "not S"  
        {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"
        Moveto [Tipo Movimento        ] Example "tpm"
        Do_It!
        ClearAll
EndIf

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 00"
Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"LANCAMENTOS NŽO INFORMADO PLANO DE CONTA =\""
Do_It!
ClearAll

{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

ProcessaRM_0260A2()

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa     ] Check
Moveto [Nome Fantasia Empresa ] Check
Moveto [Codigo Plano_Conta    ] Check
Moveto [Descricao Plano_Conta ] Check
;Moveto [Codigo CCusto         ] Check
;Moveto [Descricao CCusto      ] Check
Moveto [Tipo de Conta         ] Check
Moveto [Tipo Movimento        ] Check
Moveto [Valor                 ] TypeIn "Calc Sum As Valor"
Do_It!
ClearAll

Sort "Answer" On "Codigo da Empresa", "Codigo Plano_Conta"

g1=0     c1=""  t1=0
g2=0     c2=""  t2=0
g3=0     c3=""
g4=0     c4=""

tot=0

CoEdit "Answer"
SetHighLight Current Record 23 Field 31
CtrlEnd Left Left
c1=SubStr([Codigo Plano_Conta],01,01)
c2=SubStr([Codigo Plano_Conta],01,03)
c3=SubStr([Codigo Plano_Conta],01,06)
c4=SubStr([Codigo Plano_Conta],01,09)
While True

  nr=recno()
  If SubStr([Codigo Plano_Conta],01,01)<>c1 Then TotalizaRM_0260A(1) EndIf
  If SubStr([Codigo Plano_Conta],01,03)<>c2 Then TotalizaRM_0260A(2) EndIf
  If SubStr([Codigo Plano_Conta],01,06)<>c3 Then TotalizaRM_0260A(3) EndIf
  If SubStr([Codigo Plano_Conta],01,09)<>c4 Then TotalizaRM_0260A(4) EndIf

  g1=g1+[Valor]
  g2=g2+[Valor]
  g3=g3+[Valor]
  g4=g4+[Valor]

  Switch
    Case [Tipo Movimento]="E": tot=tot+[Valor]
    Case [Tipo Movimento]="S": tot=tot-[Valor]
  EndSwitch

  Down
  If RecordStatus("New")
     Then TotalizaRM_0260A(1)

          If VSDGPLCONTAS=""
             Then 
                  End
                  Down
                  If VSDGEMPRESA="0000"
                     Then [Codigo da Empresa     ]="0000"
                     Else [Codigo da Empresa     ]=VSDGEMPRESA2
                  Endif
                  [Nome Fantasia Empresa ]=VSDGNOMEMP
                  [Codigo Plano_Conta    ]="9"
                  [Descricao Plano_Conta ]="[ENTRADAS] - [SAIDAS]..."
                  [Valor                 ]=tot
             Else 
                  End
                  Down
                  If VSDGEMPRESA="0000"
                     Then [Codigo da Empresa     ]="0000"
                     Else [Codigo da Empresa     ]=VSDGEMPRESA2
                  Endif
                  [Nome Fantasia Empresa ]=VSDGNOMEMP
                  [Codigo Plano_Conta    ]="9"
                  [Descricao Plano_Conta ]="Total..."
                  [Valor                 ]=tot   
          EndIf
          
          End
          Down
          If VSDGEMPRESA="0000"
             Then [Codigo da Empresa     ]="0000"
             Else [Codigo da Empresa     ]=VSDGEMPRESA2
          Endif
          [Nome Fantasia Empresa ]=VSDGNOMEMP
          [Codigo Plano_Conta    ]="0"
          [Descricao Plano_Conta ]="* RELATORIO POR "+VSDGNOMOPDTEMISCOMP+" *"
          QuitLoop
  EndIf
EndWhile
Do_It!
ClearAll

{Ask} {Answer} TypeIn "Fast"
Moveto [Valor                  ] TypeIn "0, Changeto Blank"
Do_It!
ClearAll

;-------

{Ask} {Answer}
Moveto [Codigo da Empresa     ] Example "cde"
Moveto [Nome Fantasia Empresa ] Example "nfe"
Moveto [Codigo Plano_Conta    ] Example "cpl" TypeIn ", 0 Or 9"
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Moveto [Tipo Movimento        ] Example "tpm"
Moveto [Valor                 ] Example "vr"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa     ] Example "cde"
Moveto [Nome Fantasia Empresa ] Example "nfe"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Moveto [Tipo Movimento        ] Example "tpm"
Moveto [Valor do Desconto     ] Example "vr"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa     ] Example "cde"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Valor                 ] Example "vr"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa     ] Example "cde"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Valor do Desconto     ] TypeIn "Changeto " Example "vr"
Do_It!
ClearAll

EndProc    

;*******************************************************************************
;* Totaliza                                                                    *
;*******************************************************************************
Proc TotalizaRM_0260A(Tipo)
Moveto [Codigo Plano_Conta]
For i From Tipo To 4
  Switch
    Case i=1:
         If Not IsBlank(SubStr(c1,01,01))
            Then Locate c1
                 If RetVal
                    Then [Valor]=g1
                 EndIf
         EndIf
         g1=0
    Case i=2:
         If Not IsBlank(SubStr(c2,03,01))
            Then Locate c2
                 If RetVal
                    Then [Valor]=g2
                 EndIf
         EndIf
         g2=0
    Case i=3:
         If Not IsBlank(SubStr(c3,05,02))
            Then Locate c3
                 If RetVal
                    Then [Valor]=g3
                 EndIf
         EndIf
         g3=0
    Case i=4:
         If Not IsBlank(SubStr(c4,08,02))
            Then Locate c4
                 If RetVal
                    Then [Valor]=g4
                 EndIf
         EndIf
         g4=0
  EndSwitch
EndFor
Moveto Record nr
c1=SubStr([Codigo Plano_Conta],01,01)
c2=SubStr([Codigo Plano_Conta],01,03)
c3=SubStr([Codigo Plano_Conta],01,06)
c4=SubStr([Codigo Plano_Conta],01,09)
EndProc

;*******************************************************************************
;* ROTINA Ajusta Dados Empresa                                                 *
;*******************************************************************************
Proc ProcessaRM_0260A2()

;***** 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
EndIf

EndProc

;*******************************************************************************
;* Verifica Numero de Linhas                                                   *
;*******************************************************************************
Proc Checa_LinhaRM_0260A(NLinha)
Private NLinha

If LINHA+NLinha > 65
   Then LINHA = 0
        Print File ARQIMP "\f"
        CabecalhoRM_0260A()
   Else LINHA = LINHA + NLinha    
EndIf   
  
EndProc 

;*******************************************************************************
;* Rotina de ImpressÆo de Cabecalho                                            *
;*******************************************************************************
Proc CabecalhoRM_0260A()
NFOLHA = NFOLHA + 1   

Print File ARQIMP "\n\n"
Print File ARQIMP Spaces(2)+Fill("-",136)+"\n"
Print File ARQIMP Spaces(2)+Format("W38,AL",VSDGNOMEMP)+Spaces(60)+"Emissao: "+Format("D13",Today())+"-"+Time()+Spaces(01)+"Pag.: "+Format("W3,AR",StrVal(NFOLHA))+"\n"
Print File ARQIMP Spaces(2)+Fill("-",136)+"\n\n"
Print File ARQIMP Spaces(2)+Format("W136,AC","Anal¡tico por Plano de Contas/DRE de "+
                            StrVal(Format("D13",VSDGDTINI))+" Ate "+StrVal(Format("D13",VSDGDTFIM))+
                            " - "+VSDGNOMOPPLCONTAS)+"\n\n"

Print File ARQIMP "  Comptencia  Operacao    Vencto   Lancto    Conta M Origem/Destino                 Valor        Historico"+"\n"
Print File ARQIMP "  ---------- ---------- ---------- --------- ----- - ------------------------------ ------------ ----------------------------------------"+"\n" 
                  ;  99/99/9999 99/99/9999 99/99/9999 xx/999999 9999  X 1234567890123456789012345678901234567890123 1234567890123456789012345678901234567890
                  
                  
                  
Checa_LinhaRM_0260A(11)

EndProc 
 
;*******************************************************************************
;* Rotina de ImpressÆo                                                         *
;*******************************************************************************
Proc ImprimeRM_0260A()

ARQIMP=PrivDir()+"RM_0260.txt"
If IsFile(ARQIMP)
   Then Deleta_Arquivo(ARQIMP)
EndIf
Print File ARQIMP CI_15CPP

PLinha = False
NFOLHA     = 0
PL_CONTAS  = "***"
LINHA      = 0

CabecalhoRM_0260A()

Sort Tabela On "Codigo da Empresa","Codigo Plano_Conta","Data","Nome Fantasia EmitDest"

Scan
 If [Codigo Plano_Conta]<>PL_CONTAS 
    Then If len([Codigo Plano_Conta])<=1
            Then Checa_LinhaRM_0260A(1)  
                 Print File ARQIMP Spaces(2)+"\n"
         EndIf 
         If PLinha
            Then Checa_LinhaRM_0260A(1)  
                 Print File ARQIMP Spaces(2)+"\n"
                 PLinha = False
         EndIf
         Checa_LinhaRM_0260A(1)  
         Print File ARQIMP Spaces(2)+Format("W23",[Codigo Plano_Conta])+Spaces(1)+Format("W35",[Descricao Plano_Conta])
         Print File ARQIMP Spaces(22)+Format("W13.2,EIC",[Valor do Desconto])+"\n"
         If len([Codigo Plano_Conta])=1
            Then Checa_LinhaRM_0260A(1)  
                 Print File ARQIMP Spaces(2)+"\n"
         EndIf         
         PL_CONTAS = [Codigo Plano_Conta]
 EndIf
 
 If Not IsBlank([Data]) 
    Then 
         Checa_LinhaRM_0260A(1)
         PLinha = True
         Print File ARQIMP Spaces(2)+Format("D13",[Data Competencia])+Spaces(1)
         Print File ARQIMP Format("D13",[Data            ])+Spaces(1)
         Print File ARQIMP Completa(Format("D13",[Data_Inclusao   ]),10," ")+Spaces(1)
         Print File ARQIMP Format("W03,AL",[Sistema Gerador])+Format("W7,AL",[Lancamento Gerador]) 
         Print File ARQIMP Format("W06,AL",[Codigo da Conta])
         Print File ARQIMP Format("W02,AL",[Tipo movimento ])
         Print File ARQIMP Format("W30,AL",[Razao Social   ])
         Print File ARQIMP Format("W13.2,EIC",[Valor])+Spaces(1)
         Print File ARQIMP Format("W40,AL",[Descricao do Historico])+"\n" 
 EndIf
 
EndScan

EndProc 

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc PrincipalRM_0260A()

;-- Criando tabela espelho estrutura MovCont ---------------------------------
{Ask} TypeIn "\\Base\\Sistemas\\Ctacor\\Movcont" Enter Check
Do_It!
ClearAll
Empty "Answer"

Tabela=Cria_Temp(PrivDir())
Rename "Answer" Tabela
;-----------------------------------------------------------------------------

SetDir "\\Sistemas\\CtaCor"
Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  SelecionaRM_0260A()
  SelecionaRM_0260A2()
EndWhile

If (VSDGOPERACAO = "E" Or VSDGOPERACAO = "")
   Then SetDir "\\Sistemas\\CtaRec"
        Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
        While Novo_Dir_Trab()
          SelecionaRM_0260A3()
        EndWhile
EndIf

If (VSDGOPERACAO = "S" Or VSDGOPERACAO = "")
   Then SetDir "\\Sistemas\\CtaPag"
        Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
        While Novo_Dir_Trab()
          SelecionaRM_0260A4()
        EndWhile
EndIf

SetDir "\\Sistemas\\CtaCor"

If Not IsEmpty(Tabela)
   Then
        ProcessaRM_0260A()
        
        ImprimeRM_0260A()
        
        switch 
          case DISPOSITIVO_OPCAO="A":  ImpriRel(Tabela,"")
          otherWise                 :  ImpriArq(ARQIMP)
        endswitch 

   Else MENSAGEM("N„o existem registros a processar")
EndIf

If IsTable(Tabela)   Then Delete Tabela   EndIf
If IsTable("Answer") Then Delete "Answer" EndIf

EndProc

;-- Chamada principal ----------------------------------------------------------
PrincipalRM_0260A()

Release Vars Tabela
Release Procs PrincipalRM_0260A, SelecionaRM_0260A, SelecionaRM_0260A2, SelecionaRM_0260A3, SelecionaRM_0260A4, SelecionaRM_0260A5,  SelecionaRM_0260A6,
              Ajusta_DadosRM_0260A, TotalizaRM_0260A, ProcessaRM_0260A, ProcessaRM_0260A2, 
              Checa_LinhaRM_0260A, CabecalhoRM_0260A, ImprimeRM_0260A
