;** Rm_0012A  ******************************************************************
;*  Emissao dos Titulos a Programados por Plano de Contas/Centro de Custo      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 02/06/2010 por Bruno Carvalho
;Ultima Alteracao: 08/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: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog
;Ultima Alteracao: 10/05/2017 por Rafael Matos
;Motivo Alteracao: Incluso TG_OPCCUSTO                   
;Ultima Alteracao: 02/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sequencia da Baixa TitRat        
;Ultima Alteracao: 02/08/2019 por Kamila Gomes
;Motivo Alteracao: Ajustes Sequencia da Baixa TitRat
;Ultima Alteracao: 13/01/2020 por Bruno Carvalho                                     
;Motivo Alteracao: Adicionado scripts "RM_0012" (23), "RM_0210" (24), "RM_0210A" (28) neste script "RM_0012A" (27)
;Ultima Alteracao: 05/02/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 03/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Showdialog                       
;Ultima Alteracao: 12/01/2021 por Bruno Carvalho                        
;Motivo Alteracao: Ajustes p/ chamar filtro padrao *RM_0330*

;*******************************************************************************
;* Rotina p/ Selecionar e Ordenar Registros                                    *
;*******************************************************************************
Proc RM_0330D_Seleciona()
ClearAll

If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos")
  Then If VSDGATIVIDADE<>""
          Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Destinat" Enter
               Moveto [Codigo            ] example "cemit"
               Moveto [Codigo Atividade  ] TypeIn "~VSDGATIVIDADE.."
       EndIf
       {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter Check
       Moveto [Codigo da Empresa ] TypeIn "~VSDGEMPRESA2.."
       Switch
         Case VSDGOPDATA="1" : Moveto [Data de Emissao   ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
         Case VSDGOPDATA="2" : Moveto [Data de Vencimento] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
         Case VSDGOPDATA="3" : Moveto [Data Competencia  ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
       EndSwitch
       If VSDGATIVIDADE<>""
          Then Moveto [Codigo do Emitente] Example "cemit" TypeIn ", ~VSDGDESTINAT.."
          Else Moveto [Codigo do Emitente]                 TypeIn "~VSDGDESTINAT.."
       EndIf    
       Moveto [Codigo da Conta   ] TypeIn "~VSDGCONTA.."
       Moveto [Codigo Plano_Conta] TypeIn PLCONTAS
       If CheckTG_OPCCUSTO[1]
          Then Moveto [Codigo CCusto          ] TypeIn "Not Blank, ~VSDGCCUSTO.."
          Else Moveto [Codigo CCusto          ] TypeIn "~VSDGCCUSTO.."
       Endif
       Do_It!
       ClearAll
       {Ask} "Answer" Enter
       Moveto [Numero do Lancamento] example "NumLan"        
       {Ask} "TitRat" Enter TypeIn "Delete"
       Moveto [Numero do Lancamento] example "NumLan" 
       Moveto [Sequencia da Baixa  ] TypeIn "0"
       Do_It!
       ClearAll                
       
       Primeirav="******"
       Coedit "Answer","TitRat","Deleted"
       Scan
         If [Numero do Lancamento]<>Primeirav 
            then Primeirav = [Numero do Lancamento] 
                 CopyToArray Array_Del      
                 Moveto "TitRat"
                 Moveto [Numero do Lancamento]
                 Locate [deleted->Numero do Lancamento],"0"
                 If RetVal             
                    Then While [Numero do Lancamento]=[Deleted->Numero do Lancamento] and
                               [Sequencia da Baixa  ]="0"

                           If Not IsBlank([Codigo Plano_Conta]) Then
                           Moveto "Answer"
                           End Down
                           CopyFromArray Array_del
                           [Codigo Plano_Conta   ]=[TitRat->Codigo Plano_Conta   ]
                           [Descricao Plano_Conta]=[TitRat->Descricao Plano_Conta] 
                           [Codigo CCusto        ]=[TitRat->Codigo CCusto        ]
                           [Descricao CCusto     ]=[TitRat->Descricao CCusto     ]
                           [Valor do Documento   ]=[TitRat->Valor                ]                            
                           UnLockRecord
                           EndIf
                           Moveto "TitRat"      
                           Skip
                           If EOT() Then QuitLoop EndIf
                         EndWhile
                 EndIf 
                 Moveto "Deleted"  
         EndIf       
       EndScan
       Do_It!
       ClearAll  
EndIf
EndProc  ; (RM_0330D_Seleciona)

;*******************************************************************************
;* Rotina p/ Ajustar tipocusto                                                   *
;*******************************************************************************
Proc RM_0330D_Ajusta()
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
EndIf

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Pag_1             ] TypeIn "Changeto X"
Do_It!
ClearAll

{Ask} {\\Sistemas\\Ctacor\\Plcontas}
Moveto [Codigo Plano_Conta] example "plc"
Moveto [Tipo_Custo        ] example "tc"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo Plano_Conta] example "plc"
Moveto [Pag_1             ] TypeIn "Changeto _tc"
Do_It!
ClearAll

EndProc

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

If VSDGCODMODELO="24" 
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo CCusto   ] TypeIn "Changeto Blank"
        Moveto [Descricao CCusto] TypeIn "Changeto Blank"
        Do_It!
        ClearAll
EndIf

{Ask} {\\Sistemas\\Ctacor\\PlContas}
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] Example "dpl"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] TypeIn "Changeto " Example "dpl"
Do_It!
ClearAll

{Ask} {\\Sistemas\\Ctacor\\PlContas}
Moveto [Codigo Plano_Conta    ] Example "cpl" TypeIn ", Not 1.."
Moveto [Descricao Plano_Conta ] Example "dpl"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa     ] TypeIn VSDGEMPRESA
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] Example "dpl"
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

RM_0330D_Processa2()

{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 [Valor do Documento    ] 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

Switch
  Case VSDGCODMODELO="24" : Sort "Answer" On "Codigo da Empresa", "Nome Fantasia Empresa",
                                             "Codigo Plano_Conta", "Descricao Plano_Conta"
  Case VSDGCODMODELO="28" : CoEdit "Answer"
                            Scan For Not IsBlank([Codigo 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"                                                     
EndSwitch                                             

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

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)
If VSDGCODMODELO="28"
   Then c5=SubStr([Codigo Plano_Conta],01,13)
EnDIf   

While True

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

  g1=g1+[Valor]
  g2=g2+[Valor]
  g3=g3+[Valor]
  g4=g4+[Valor]
  If VSDGCODMODELO="28"
     Then g5=g5+[Valor]
  EndIf   
  
  t1=t1+[Valor]

  Down
  If RecordStatus("New")
     Then RM_0330D_Totaliza(1)
          If VSDGEMPRESA="0000"
             Then [Codigo da Empresa     ]=VSDGEMPRESA
             Else [Codigo da Empresa     ]=VSDGEMPRESA2
          EndIf
          [Nome Fantasia Empresa ]=VSDGNOMEMP
          [Codigo Plano_Conta    ]="T"
          [Descricao Plano_Conta ]="[SAIDAS]..."
          [Valor                 ]=t1           
          QuitLoop
  EndIf

EndWhile
Do_It!
ClearAll

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

Switch
  Case VSDGCODMODELO="24" : CopyReport  "\\Base\\Sistemas\\Ctapag\\RM_0210" "R" "Answer" "R"
  Case VSDGCODMODELO="28" : CopyReport  "\\Base\\Sistemas\\Ctapag\\RM_0210" "1" "Answer" "R" 
EndSwitch

EndProc  

;*******************************************************************************
;* Totaliza                                                                    *
;*******************************************************************************
Proc RM_0330D_Totaliza(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
                 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 RM_0330D_Processa2()

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

AGUARDE("Aguarde, Gerando o RelatĒrio")
Tabela=Cria_Temp(PrivDir())

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  If IsTable("Answer")     Then Delete "Answer" EndIf
  RM_0330D_Seleciona()
  If Not IsTable("Answer") Then Loop EndIf
  If IsTable(Tabela)
     Then Add "Answer" Tabela
     Else Rename "Answer" Tabela
  EndIf
EndWhile

If IsEmpty(Tabela)
   Then MENSAGEM("No existem registros a processar")
        Delete Tabela
        Return
EndIf
If VSDGCODMODELO="23" Or VSDGCODMODELO="27"
   Then RM_0330D_Ajusta()
   Else RM_0330D_Processa()
EndIf   

Switch
  Case VSDGCODMODELO="23"  : CopyReport "\\Base\\Sistemas\\CtaPag\\Rm_1001" "1" Tabela "R"
                             IMPRIREL(Tabela,"R") 
  Case VSDGCODMODELO="27"  : CopyReport "\\Base\\Sistemas\\CtaPag\\Rm_1001" "7" Tabela "R"
                             IMPRIREL(Tabela,"R") 
  Case VSDGCODMODELO="24" Or 
       VSDGCODMODELO="28"  : IMPRIREL("Answer","R")
                             Delete "Answer"
EndSwitch
Delete Tabela

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0330D_Principal()

Release Vars Tabela
Release Procs RM_0330D_Principal,RM_0330D_Seleciona,RM_0330D_Processa,RM_0330D_Processa2,RM_0330D_Ajusta,
              RM_0330D_Totaliza