;** Rm_0220 *******************************************************************
;*  Sintetico II p/ Plano de Contas/Centro de Custo                           *
;******************************************************************************
;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: 12/03/2007 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: 01/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CCusto 
;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: 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: 27/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao novo processo concetrador RM_0210,RM_0220
;Ultima Alteracao: 16/07/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao rateio                                       

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaRM_0210B3()
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_0210B()
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"

        switch
          case VSDGOPPLCONTAS="C" :
          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_0210B3()
          
          otherwise              :
           Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
           Do_It!
           ClearAll
          
        endswitch
EndIf
EndProc     

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

        switch
          case VSDGOPPLCONTAS="C" :
            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_0210B3()
          
          otherwise              :
            Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
            Do_It!
            ClearAll
          
        endswitch
EndIf
EndProc     

;*******************************************************************************
;* Rotina p/ Processar Registros                                               *
;*******************************************************************************
Proc ProcessaRM_0210B()
private tot

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} {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_0210B2()

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

EstruturaDaTabelaNoKey("Answer","\\base\\sistemas\\ctacor\\rm_0210")

CoEdit "Answer"
Scan For Not IsBlank([Codigo CCusto]) Or Not IsBlank([Descricao CCusto]) 
  [Codigo Plano_Conta   ]=Completa([Codigo Plano_Conta],14," ")+[Codigo CCusto]
  [Descricao Plano_Conta]="          "+LTrim([Descricao CCusto])
EndScan
Do_It!
ClearAll

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

g1=0     c1=""  
g2=0     c2=""  
g3=0     c3=""
g4=0     c4=""
g5=0     c5=""

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)
c5=SubStr([Codigo Plano_Conta],01,13)
While True

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

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

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

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

          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
          [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   


EndProc     

;*******************************************************************************
;* Totaliza                                                                    *
;*******************************************************************************
Proc TotalizaRM_0210B(Tipo)
Moveto [Codigo Plano_Conta]
For i From Tipo To 5
  Switch
    Case i=1:
         If Not IsBlank(SubStr(c1,01,01))
            Then Locate c1
                 If RetVal
                    Then [Valor]=g1
                         Switch
                           Case [Tipo Movimento]="E": [Sinal]="(+)"
                           Case [Tipo Movimento]="S": [Sinal]="(-)"
                         EndSwitch
                 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
    Case i=5:
         If Not IsBlank(SubStr(c5,11,03))
            Then Locate c5
                 If RetVal
                    Then [Valor]=g5
                 EndIf
         EndIf
         g5=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)
c5=SubStr([Codigo Plano_Conta],01,13)
EndProc

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

;***** 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_0210B()

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_0210B()
      Case ii=2: SelecionaRM_0210B2()
    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_0210B()
        
        CopyReport  "\\Base\\Sistemas\\Ctacor\\RM_0210" "1" "Answer" "R"
        IMPRIREL("Answer","R")
EndIf
Delete Tabela
Delete "Answer"

EndProc

;-- Chamada principal ----------------------------------------------------------
PrincipalRM_0210B()

Release Vars Tabela
Release Procs PrincipalRM_0210B,  
              SelecionaRM_0210B, SelecionaRM_0210B2, SelecionaRM_0210B3,
              ProcessaRM_0210B, ProcessaRM_0210B2,
              TotalizaRM_0210B
