;** Rm_0210A ******************************************************************
;*  Sintetico I  p/ Plano de Contas                                           *
;******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 03/12/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 06/12/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 21/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Calculo Final
;Ultima Alteracao: 22/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Descricao Plano_Conta
;Ultima Alteracao: 05/05/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: TOTALIZA EMPRESAS
;Ultima Alteracao: 28/03/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes Filtro por Plano de Contas 
;Ultima Alteracao: 03/09/2014 por Luis Gustavo
;Motivo Alteracao: Adicionado filtro Op‡ao de data
;Ultima Alteracao: 05/01/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado campo de valor para 16 digitos no report "R" e "1" do RM_0210
;Ultima Alteracao: 06/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;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: 25/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo de Conta                
;Ultima Alteracao: 19/01/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo de Operacao 03, 12           
;Ultima Alteracao: 09/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes despresar contas analiticas       
;Ultima Alteracao: 27/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao novo processo concetrador RM_0210,RM_0220

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0210A()
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"
       If VSDGOPDTEMISCOMP="1"
          Then Moveto [Data Competencia] Check
               Moveto [Data            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Else Moveto [Data            ] Check
               Moveto [Data Competencia] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM, as Data"
       EndIf   
       Moveto [Cheque Pre-Datado     ] TypeIn "Not S"
       Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
       Do_It!
       ClearAll
EndIf             
EndProc     

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0210A2()
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 [Data Cheque Pre-Datado] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
       Moveto [Cheque Pre-Datado     ] TypeIn "S"
       Moveto [Codigo Plano_Conta    ] TypeIn "~VSDGPLCONTAS.."
       If VSDGOPDTEMISCOMP = "2"
          Then Moveto [Data                  ] Check
               Moveto [Data Competencia      ] TypeIn "as Data"
          Else Moveto [Data Competencia      ] Check
       EndIf
       Do_It!
       ClearAll
EndIf
EndProc     

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

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

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Tipo de Operacao       ] TypeIn "05"
Moveto [Cheque Pre-Datado      ] TypeIn "S"
Moveto [Data Cheque Pre-Datado ] TypeIn "_dchp"
Moveto [Data                   ] TypeIn "Changeto _dchp"
Do_It!
ClearAll

{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"
{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"
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 [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"
         Do_It!
         ClearAll
EndIf

{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_0210A2()

{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 [Tipo de Conta         ] Check
Moveto [Codigo CCusto         ] Check
Moveto [Descricao CCusto      ] Check
Moveto [Valor                 ] TypeIn "Calc Sum As Valor"
Do_It!
ClearAll

{Modify} {Restructure} {Answer}
Down Down Ins Right  "Codigo Plano_Conta" Enter
Down Left Left Ins Right  "Descricao Plano_Conta" Enter
Up Backspace Backspace  "21" Down Do_It! ClearImage

Sort "Answer" On "Codigo da Empresa", "Nome Fantasia Empresa",
                 "Codigo Plano_Conta", "Descricao Plano_Conta"

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

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_0210A(1) EndIf
  If SubStr([Codigo Plano_Conta],01,03)<>c2 Then TotalizaRM_0210A(2) EndIf
  If SubStr([Codigo Plano_Conta],01,06)<>c3 Then TotalizaRM_0210A(3) EndIf
  If SubStr([Codigo Plano_Conta],01,09)<>c4 Then TotalizaRM_0210A(4) EndIf

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

  Switch
    Case SubStr([Codigo Plano_Conta],01,01)="1": t1=t1+[Valor]
    Case SubStr([Codigo Plano_Conta],01,01)="2": t2=t2+[Valor]
  EndSwitch

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

          End
          Down
          If VSDGEMPRESA="0000"
             Then [Codigo da Empresa     ]="0000"
             Else [Codigo da Empresa     ]=VSDGEMPRESA2
          Endif
          [Nome Fantasia Empresa ]=VSDGNOMEMP
          [Codigo Plano_Conta    ]="3"
          [Descricao Plano_Conta ]="[ENTRADAS]-[SAIDAS]..."
          [Valor                 ]=t1-t2
          [Tipo de Conta         ]="S"
          QuitLoop
  EndIf
EndWhile
Do_It!
ClearAll

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

If CheckTG_OPCTAANALITICA[1]
   then
        {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Tipo de Conta  ] TypeIn "A" 
        Do_It!
        ClearAll
endif   
If CheckTG_OPCTAANALITICA[2]
   then
        {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Tipo de Conta  ] TypeIn "A" 
        Moveto [Valor          ] TypeIn "0 or blank" 
        Do_It!
        ClearAll
endif   

CopyReport  "\\Base\\Sistemas\\Ctacor\\RM_0210" "R" "Answer" "R"

EndProc     

;*******************************************************************************
;* Totaliza                                                                    *
;*******************************************************************************
Proc TotalizaRM_0210A(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_0210A2()

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

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc PrincipalRM_0210A()

Tabela=Cria_Temp(PrivDir())

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  For ii From 1 to 2
    If IsTable("Answer")     Then Delete "Answer" EndIf
    Switch
      Case ii=1: SelecionaRM_0210A()
      Case ii=2: SelecionaRM_0210A2()
    EndSwitch
    If Not IsTable("Answer") Then Loop EndIf
    If IsTable(Tabela)
       Then Add "Answer" Tabela
       Else Rename "Answer" Tabela
    EndIf
  EndFor
EndWhile

If IsEmpty(Tabela)
   Then
        MENSAGEM("N„o existem registros a processar")
   else 
        ProcessaRM_0210A()
        
        IMPRIREL("Answer","R")
EndIf

Delete Tabela
Delete "Answer"

EndProc

;-- Chamada principal ----------------------------------------------------------
PrincipalRM_0210A()

Release Vars Tabela
Release Procs PrincipalRM_0210A,  
              SelecionaRM_0210A, SelecionaRM_0210A2,
              ProcessaRM_0210A, ProcessaRM_0210A2,
              TotalizaRM_0210A
