;** Rm_1260 ********************************************************************
;* Registro de Titulos                                                                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 04/02/2019 por Bruno Carvalho                
;Ultima Alteracao: 05/02/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 24/03/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 Order Registros                                      *
;*******************************************************************************
Proc RM_0330C_Seleciona()
ClearAll

If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos") And
   IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"TitBaixa")  
   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
        Moveto [Numero do Lancamento] CheckPlus Example "NLAN" TypeIn "!"  
        Moveto [Codigo da Empresa   ] CheckPlus TypeIn "~VSDGEMPRESA.."
        Moveto [Numero do Documento ] CheckPlus
        Moveto [Serie do Documento  ] CheckPlus 
        Switch
          Case VSDGOPDATA="1" : Moveto [Data de Emissao   ]           TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                                Moveto [Data Competencia  ] CheckPlus 
          Case VSDGOPDATA="2" : Moveto [Data de Vencimento]           TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                                Moveto [Data Competencia  ] CheckPlus
          Case VSDGOPDATA="3" : Moveto [Data Competencia  ] CheckPlus 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 do Emitente  ] 
        Moveto [Data de Vencimento  ] CheckPlus
        Moveto [Valor do Documento  ] CheckPlus
        Moveto [Saldo do Documento  ] CheckPlus
        Moveto [Codigo do Emitente  ] CheckPlus
        Moveto [Razao Social        ] CheckPlus
        Moveto [Documento Referente ] CheckPlus
        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                                  
        {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"TitBaixa" Enter
        Moveto [Numero do Lancamento] Example "NLAN"
        Moveto [Data do Pagamento   ] TypeIn "Calc Max as Data do Pagamento"
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Saldo do Documento  ] TypeIn ">0.01" 
        Moveto [Data do Pagamento   ] TypeIn "Changeto Blank"
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Numero do Lancamento] Example "NLAN" 
        Moveto [Codigo da Empresa   ] Example "EMPRE"
        Moveto [Numero do Documento ] Example "DOCTO"
        Moveto [Serie do Documento  ] Example "SERIE"
        Moveto [Data Competencia    ] Example "DATEM"
        Moveto [Codigo do Emitente  ] Example "CODIG"
        Moveto [Razao Social        ] Example "NOMEC"
        Moveto [Data de Vencimento  ] Example "DATVE"
        Moveto [Valor do Documento  ] Example "VRDUP"
        Moveto [Documento Referente ] Example "NNF"
        Moveto [Data do Pagamento   ] Example "DATPG"

        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
        Moveto [Numero do Lancamento] Example "NLAN"
        Moveto [Codigo da Empresa   ] Example "EMPRE"
        Moveto [Numero do Documento ] Example "DOCTO"
        Moveto [Serie do Documento  ] Example "SERIE"
        Moveto [Codigo              ] Example "CODIG"
        Moveto [Razao Social        ] Example "NOMEC"
        Moveto [Data de Emissao     ] Example "DATEM"
        Moveto [Data Vencimento     ] Example "DATVE"
        Moveto [Valor               ] Example "VRDUP"
        Moveto [Documento Referente ] Example "NNF"
        Moveto [Data Pagamento      ] Example "DATPG"
        Do_It!
        ClearAll
EndIf
EndProc  ; (RM_0330C_Seleciona)

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc RM_0330C_Processa()

View "\\Sistemas\\Cadastro\\Destinat"
CoEdit Tabela
Scan
  COD=[Codigo]

  Moveto "\\Sistemas\\Cadastro\\Destinat"
  Moveto [Codigo]
  Locate COD
  If RetVal
     Then CODANTER=SubStr([Conta Contabil],2,5)
          CGC     =[CGC]  
     Else CODANTER=""
          CGC     =""
  EndIf

  Moveto Tabela
  [Codigo Alternativo]=CODANTER
  [CGC               ]=CGC

EndScan
Do_It!
ClearAll

If VSDGCODMODELO="78A"
   Then Sort Tabela on "Codigo da Empresa","Data de Emissao","Serie do Documento","Numero do Documento","Ordem do Documento"
   Else Sort Tabela on "Codigo da Empresa","Serie do Documento","Numero do Documento","Ordem do Documento"
EndIf

EndProc    ;  (Processa)

;*******************************************************************************
;* Rotina p/ Impressao                                                         *
;*******************************************************************************
Proc RM_0330C_Imprimir()

AGUARDE("Aguarde, processando dados")

If Not IsAssigned(NOMEMPRESA) Then NOMEMPRESA="TESTE" EndIf

View NoWindow "\\Sistemas\\Cadastro\\Empresas"
View NoWindow Tabela
CODEMP="****"
DTEMIS="****"
pag=VSDGPAGINI-1
CONT=0
INICIO=True
c     =0
TOTAL_DIA    =0
TOTAL_EMPRESA=0
DATA_ANTERIOR=BlankDate()
Scan
  If VSDGCODMODELO="78A"
     Then If [Codigo da Empresa  ] <> CODEMP Or
             [Data de Emissao    ] <> DTEMIS
             Then RM_0330C_TotalDia()
                  If [Codigo da Empresa]<>CODEMP
                     Then RM_0330C_TotalEmpresa()
                          RM_0330C_Ler_Empresa()
                          RM_0330C_Cabecalho()
                  EndIf
                  If [Data de Emissao]=DATA_ANTERIOR
                     Then RM_0330C_GRUPO_DATA_ANTERIOR()
                     Else RM_0330C_GRUPO_DATA()
                  EndIf
                  INICIO=False
                  CODEMP=[Codigo da Empresa  ]
                  DTEMIS=[Data de Emissao    ]

          EndIf
     Else If [Codigo da Empresa  ] <> CODEMP
             Then RM_0330C_TotalEmpresa()
                  RM_0330C_Ler_Empresa()
                  RM_0330C_Cabecalho()
                  CODEMP=[Codigo da Empresa  ]
                  DTEMIS=[Data de Emissao    ]
                  INICIO=False
          EndIf
  EndIf
  
  RM_0330C_Detalhe()

EndScan
If VSDGCODMODELO="78A" Then RM_0330C_TotalDia() EndIf
RM_0330C_TotalEmpresa()
ClearAll
EndProc   ;  (Imprimir)

;*******************************************************************************
;* Rotina p/ quebrar pelo grupo data                                           *
;*******************************************************************************
Proc RM_0330C_GRUPO_DATA()
RM_0330C_ChecaLinhaPagina()
RM_0330C_printline(Spaces(2)+"Competencia: "+Format("D13",[Data de Emissao])+"\n")
c=c+1
EndProc

;*******************************************************************************
;* Rotina p/ quebrar pelo grupo data Anterior                                  *
;*******************************************************************************
Proc RM_0330C_GRUPO_DATA_ANTERIOR()
RM_0330C_printline(Spaces(2)+"Competencia: "+Format("D13",DATA_ANTERIOR)+"\n")
c=c+1
EndProc

;*******************************************************************************
;* Rotina p/ Ler dados da Empresa                                              *
;*******************************************************************************
Proc RM_0330C_Ler_Empresa()
CODEMP=[Codigo da Empresa]
Moveto "\\Sistemas\\Cadastro\\Empresas"
Moveto [Codigo da Empresa]
Locate CODEMP
NOMEMP=[Razao Social Empresa]
CGC   =[CGC EMPRESA]
IE    =[IE EMPRESA]
Moveto TABELA

EndProc
;*******************************************************************************
;* Rotina p/ Totalizar o Dia                                                   *
;*******************************************************************************
Proc RM_0330C_TotalDia()
If INICIO=False
	 Then If CONT>1
           Then RM_0330C_ChecaLinhaPagina()
                If c=9 Then RM_0330C_GRUPO_DATA_ANTERIOR() EndIf
								RM_0330C_printline(SPACES(68)+"Total Dia.... "+Format("W13.2,EIC,AR",TOTAL_DIA)+"\n\n")
                c=c+2
					 Else RM_0330C_printline("\n")
        EndIf
        c=c+1
        CONT=0
        TOTAL_DIA=0
EndIf
EndProc

;*******************************************************************************
;* Rotina p/ Totalizar por Empresa                                             *
;*******************************************************************************
Proc RM_0330C_TotalEmpresa()
If INICIO=False
   Then If VSDGCODMODELO="78A"
					 Then RM_0330C_printline(SPACES(61)+"Total da Empresa.... "+Format("W13.2,EIC,AR",TOTAL_EMPRESA)+"\n")
					 Else RM_0330C_printline(SPACES(72)+"Total da Empresa.... "+Format("W13.2,EIC,AR",TOTAL_EMPRESA)+"\n")
        EndIf
        TOTAL_EMPRESA=0
        RM_0330C_Rodape()
        c=100
EndIf
EndProc
            
;*******************************************************************************
;* Rotina p/ Cabecalho                                                         *
;*******************************************************************************
Proc RM_0330C_ChecaLinhaPagina()

If VSDGCODMODELO="78A"
   Then TOT_LINHAS=64
   Else TOT_LINHAS=53
EndIf
If C>=TOT_LINHAS
   Then RM_0330C_Rodape()
        RM_0330C_printline("\f"+"\n")
        RM_0330C_Cabecalho()
        If VSDGCODMODELO="78A"
           Then If [Data de Emissao]=DATA_ANTERIOR
                   Then RM_0330C_GRUPO_DATA_ANTERIOR()
                EndIf
        EndIf
EndIf

EndProc

;*******************************************************************************
;* Rotina p/ Cabecalho                                                         *
;*******************************************************************************
Proc RM_0330C_Cabecalho()
Private DATA_CABECALHO

If SYS_CODIGO_CLIENTE="0296"
   Then DATA_CABECALHO=VSDGDTFIM
        HORA = "        "
   Else DATA_CABECALHO=Today()
        HORA = "-"+AlinhM(LTrim(Time()),8)
EndIf

pag=pag+1
RM_0330C_printline(CI_15CPP+CI_6LPP+"\n")
RM_0330C_printline(Spaces(2)+Fill("-",132)+"\n")
RM_0330C_printline(Spaces(2)+Completa(NOMEMPRESA,90," ")+"Emissao.: "+
					AlinhM(LTrim(Format("D13",DATA_CABECALHO)),10)+HORA+
          "   Folha:"+Format("W4,EIC",pag)+"\n")
RM_0330C_printline(Spaces(2)+Fill("-",132)+"\n\n")
RM_0330C_printline(Spaces(2)+"Empresa: "+COMPLETA(NOMEMP,40," ")+Spaces(15)+"Tˇtulos Emitidos + Pagamento de "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM)+"\n")
RM_0330C_printline(Spaces(2)+"   CNPJ: "+Completa(CGC,20," ")+ "IE: "+Completa(IE,20," ")+"\n\n")

If VSDGCODMODELO="78A"
	 Then
				RM_0330C_printline(Spaces(2)+"Titulo    Emitente                           CNPJ/CPF           CodAn   Vencto          Valor Referente          Pagto    Obs      "+"\n")
				RM_0330C_printline(Spaces(2)+"--------- ---------------------------------- ------------------ ----- ---------- ------------ ---------------- ---------- ---------"+"\n")
	 Else
				RM_0330C_printline(Spaces(2)+"Titulo    Emitente                           CNPJ/CPF           CodAn  Comptncia   Vencto          Valor Referente          Pagto   "+"\n")
				RM_0330C_printline(Spaces(2)+"--------- ---------------------------------- ------------------ ----- ---------- ---------- ------------ ---------------- ----------"+"\n")
EndIf

C=10

EndProc   ; (RM_0330C_Cabecalho)

;*******************************************************************************
;* Rotina p/ Detalhe                                                           *
;*******************************************************************************
Proc RM_0330C_Detalhe()

RM_0330C_ChecaLinhaPagina()
If VSDGCODMODELO="78A"
   Then
				s=Spaces(2)+COMPLETA([Numero do Documento],9," ")+" "
				s=s+COMPLETA([Codigo],5," ")+Completa([Razao Social],28," ")+"  "
				s=s+Completa([CGC],19," ")
				s=s+Completa([Codigo Alternativo],6," ")
				s=s+Completa(Format("D13",[Data Vencimento]),10," ")+" "
				s=s+Completa(Format("W12.2,EIC,AR",[Valor]),12," ")+" "
				s=s+Completa([Documento Referente  ],17," ")
				s=s+Completa(Format("D13",[Data Pagamento]),10," ")+" "
				s=s+"\n"
   Else
				s=Spaces(2)+COMPLETA([Numero do Documento],9," ")+" "
				s=s+COMPLETA([Codigo],5," ")+Completa([Razao Social],28," ")+"  "
				s=s+Completa([CGC],19," ")
				s=s+Completa([Codigo Alternativo],6," ")
				s=s+Completa(Format("D13",[Data de Emissao]),10," ")+" "
				s=s+Completa(Format("D13",[Data Vencimento]),10," ")+" "
				s=s+Completa(Format("W12.2,EIC,AR",[Valor]),12," ")+" "
				s=s+Completa([Documento Referente  ],17," ")
				s=s+Completa(Format("D13",[Data Pagamento]),10," ")+" "
				s=s+"\n"
EndIf
RM_0330C_printline(s)
CONT=CONT+1
TOTAL_DIA    =TOTAL_DIA    +[Valor]
TOTAL_EMPRESA=TOTAL_EMPRESA+[Valor]
DATA_ANTERIOR=[Data de Emissao]
C=C+1
EndProc    ;  (RM_0330C_Detalhe)

;*******************************************************************************
;* Rotina p/ Imprimir Linha 																									 *
;*******************************************************************************
Proc RM_0330C_printline(linha)

If OPCAOPAG<>"Todas"
   Then If pag<OPCAOPAGINI Or
           pag>OPCAOPAGFIM
					 Then Return
				EndIf
EndIf
Print File ARQIMP linha
endproc

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

If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos") And
   IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"TitBaixa")  
   Then {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter
        Moveto [Numero do Lancamento ] Check     Example "NLAN" TypeIn "!"  
        Moveto [Codigo da Empresa    ] Check     TypeIn "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa] Check 
        Moveto [Tipo do Documento    ] Check 
        Moveto [Numero do Documento  ] Check    
        Moveto [Serie do Documento   ] Check     
        Moveto [Data Competencia     ] Check     TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Data de Vencimento   ] Check    
        Moveto [Valor do Documento   ] Check    
        Moveto [Codigo do Emitente   ] Check typein "As Codigo"    
        Moveto [Razao Social         ] Check    
        Moveto [Documento Referente  ] Check    
        Moveto [Situacao             ] Check    
        {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"TitBaixa" Enter
        Moveto [Numero do Lancamento ] Example "NLAN"
        Moveto [Sequencia da Baixa   ] Check     
        Moveto [Data do Pagamento    ] Check     
        Moveto [Valor do Pagamento   ] Check     
        Moveto [Valor do Juros       ] Check     
        Moveto [Valor do Desconto    ] Check     
        Moveto [Tipo da Baixa        ] Check     
        Moveto [Codigo Plano_Conta   ] Check     
        Moveto [Descricao Plano_Conta] Check     
        Do_It!
        ClearAll
EndIf

endproc

;*******************************************************************************
;* Organiza Registro p/ Exibir em Arquivo                                      *
;*******************************************************************************
Proc Rm_0330C_Gera_Arquivo()

{Ask} TypeIn Tabela Enter Check
Do_It!
ClearAll

Sort "Answer" On "Codigo da Empresa", "Data Competencia", "Tipo do Documento", "Numero do Documento", "Serie do Documento"  

Adiciona_Campo_EmOrdem("Answer","Codigo da Empresa(A4),"+      
                                "Nome Fantasia Empresa(A20),"+
                                "Numero do Lancamento(A6),"+
                                "Tipo do Documento(A4),"+
                                "Numero do Documento(A10),"+
                                "Serie do Documento(A4),"+
                                "Data Competencia(D),"+                  
                                "Codigo(A4),"+
                                "Razao Social(A40),"+
                                "Data de Vencimento(D),"+                  
                                "Valor do Documento($),"+    
                                "Sequencia da Baixa(A1),"+
                                "Data do Pagamento(D),"+                  
                                "Valor do Pagamento($),"+    
                                "Valor do Juros($),"+    
                                "Valor do Desconto($),"+    
                                "Codigo Plano_Conta(A13),"+     
                                "Descricao Plano_Conta(A48),"+     
                                "Tipo da Baixa(A10)")    
                               
clearAll

IMPRIREL("Answer","R")

EndProc ;Gera_Arquivo()

;*******************************************************************************
;* Rotina p/ Imprimir Rodape                                                   *
;*******************************************************************************
Proc RM_0330C_Rodape()
RM_0330C_printline(CI_10CPP+CI_6LPP+"\n")
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0330C_Principal()

AGUARDE("Aguarde, Gerando Relat˘rio")
Tabela=Cria_Temp(PrivDir())
switch
   case IMPRIME_ARQUIVO:
      
        Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
        While Novo_Dir_Trab()
          If IsTable("Answer")     Then Delete "Answer" EndIf
          RM_0330C_Seleciona2()
          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("N„o existem registros a processar")
                Delete Tabela
                Return
        EndIf
      
        Rm_0330C_Gera_Arquivo()
  
  otherwise:
      Empty "\\Base\\Sistemas\\Vendas\\RM_0260"
      Copy "\\Base\\Sistemas\\Vendas\\RM_0260" Tabela
    
      Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
      While Novo_Dir_Trab()
        RM_0330C_Seleciona()
      EndWhile
      RM_0330C_Processa()
    
      If IsEmpty(Tabela)
         Then MENSAGEM("N„o existem registros a processar")
              Delete Tabela
              Return
      EndIf
    
      ARQIMP = PrivDir()+"REGDUP.TXT"
      Switch
        Case OK="A": ARQIMP = DIREPORT+ARQUIVO+".TXT"
      EndSwitch
      If IsFile(ARQIMP) 
         Then Deleta_Arquivo(ARQIMP)
      EndIf
      If IsTable("Answer") Then Delete "Answer" EndIf
    
      AGUARDE("Imprimindo")
      RM_0330C_Imprimir()
    
      If OK="V"
         Then ImpriArq(ARQIMP)
              Deleta_Arquivo(ARQIMP)
         Else Mensagem("Impress„o Concluida !")
              If OK="I"
    						 Then ;---- Imprime Arquivo Impressao ------------------------------------------------
    									ImpriArq(ARQIMP)
    									Deleta_Arquivo(ARQIMP) 
    					EndIf
    	EndIf
endswitch
If IsTable("Answer") Then Delete "Answer" EndIf
If IsTable(Tabela) Then Delete Tabela EndIf

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0330C_Principal()

Release Vars Tabela
Release Procs RM_0330C_Principal,RM_0330C_Seleciona,RM_0330C_Seleciona2,RM_0330C_Processa,Rm_0330C_Gera_Arquivo,
              RM_0330C_Imprimir,RM_0330C_GRUPO_DATA,RM_0330C_GRUPO_DATA_ANTERIOR,RM_0330C_Ler_Empresa,
              RM_0330C_TotalDia,RM_0330C_TotalEmpresa,RM_0330C_Cabecalho,RM_0330C_ChecaLinhaPagina,
              RM_0330C_Detalhe,RM_0330C_printline,RM_0330C_Rodape