;** Rm_0011  *******************************************************************
;*  Emissao dos Titulos a Pagar por Plano de Contas                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 15/02/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao: 19/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Novo cliterio #0294 por plano de conta
;Ultima Alteracao: 12/04/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado modelo 02 - Anal¡tico 

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

If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos")
  Then {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter Check
       Moveto [Codigo da Empresa ] TypeIn "~VSDGEMPRESA2.."
       Moveto [Data de Vencimento] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
       switch
         case sys_Codigo_cliente="0294":
          moveto [Codigo Plano_Conta] typein "2.2.01.01.001"

         otherwise:
          Moveto [Tipo do Lancamento] TypeIn "C"

       endswitch
       Moveto [Sistema Gerador   ] typein "not OC"
       Do_It!
       ClearAll
       AdicionaDados("Realizado")
       
       {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter Check
       Moveto [Codigo da Empresa ] TypeIn "~VSDGEMPRESA2.."
       Moveto [Data de Vencimento] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"

       switch
         case sys_Codigo_cliente="0294":
          moveto [Codigo Plano_Conta] typein "2.2.01.01.001"

         otherwise:
          Moveto [Tipo do Lancamento] TypeIn "C"

       endswitch
       Moveto [Sistema Gerador   ] typein "OC"
       Do_It!
       ClearAll
       AdicionaDados("OC")
       
EndIf
EndProc  ;Seleciona_Sintetico()

;*******************************************************************************
;* Rotina p/ Selecionar e Ordenar Registros                                    *
;*******************************************************************************
Proc Seleciona_Analitico(PARAM)
Private PARAM
ClearAll

If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos")
   Then {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter
        Moveto [Numero do Lancamento ] CheckPlus Example "NLAN" TypeIn "!"  
        Moveto [Codigo da Empresa    ] CheckPlus TypeIn "~VSDGEMPRESA2.."
        Moveto [Nome Fantasia Empresa] CheckPlus
        Moveto [Data de Emissao      ] CheckPlus 
        Moveto [Data de Vencimento   ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo do Documento    ] CheckPlus
        Moveto [Numero do Documento  ] CheckPlus
        Moveto [Serie do Documento   ] CheckPlus
        Moveto [Valor do Documento   ] CheckPlus
        Moveto [Saldo do Documento   ] CheckPlus
        Moveto [Codigo do Emitente   ] CheckPlus
        Moveto [Razao Social         ] CheckPlus
        Moveto [Documento Referente  ] CheckPlus
        Switch
          Case SYS_CODIGO_CLIENTE="0294":
               Moveto [Codigo Plano_Conta] typein "2.2.01.01.001"
          Otherwise:
               Moveto [Tipo do Lancamento] TypeIn "C"
       EndSwitch
       If PARAM="Realizado"
          Then Moveto [Sistema Gerador] typein "Not OC"
          Else Moveto [Sistema Gerador] typein "OC"
       EndIf   
       Do_It!
       ClearAll
       AdicionaDados_Analitico(PARAM)
EndIf

EndProc ;Seleciona_Analitico()

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc AdicionaDados(tipo)

if isempty("Answer")
   then return
endif    

{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_cemp"
Moveto [Nome Fantasia Empresa  ] TypeIn "_nemp"
Moveto [Tipo do Documento      ] TypeIn "_tdoc"
Moveto [Numero do Documento    ] TypeIn "_ndoc"
Moveto [Data de Vencimento     ] TypeIn "_dtv"
Moveto [Valor do Documento     ] TypeIn "_vrd"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] TypeIn "_cemp"
Moveto [Nome Fantasia Empresa  ] TypeIn "_nemp"
Moveto [Tipo do Documento      ] TypeIn "_tdoc"
Moveto [Numero do Documento    ] TypeIn "_ndoc"
Moveto [Data de Vencimento     ] TypeIn "_dtv"
Switch
  Case tipo="Realizado" : Moveto [Valor Realizado] TypeIn "_vrd"
                          Moveto [Valor Total    ] TypeIn "_vrd"
  Case tipo="OC"        : Moveto [Valor OC       ] TypeIn "_vrd"
                          Moveto [Valor Total    ] TypeIn "_vrd"
EndSwitch
Do_It!
ClearAll

EndProc  ;AdicionaDados()

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc AdicionaDados_Analitico(tipo)

If IsEmpty("Answer")
   Then Return
EndIf    

{Ask} {Answer} 
Moveto [Numero do Lancamento ] TypeIn "_NLanc"
Moveto [Codigo da Empresa    ] TypeIn "_cemp"
Moveto [Nome Fantasia Empresa] TypeIn "_nemp"
Moveto [Data de Emissao      ] TypeIn "_dte"
Moveto [Data de Vencimento   ] TypeIn "_dtv"
Moveto [Tipo do Documento    ] TypeIn "_tdoc"
Moveto [Numero do Documento  ] TypeIn "_ndoc"
Moveto [Serie do Documento   ] TypeIn "_sdoc"
Moveto [Valor do Documento   ] TypeIn "_vrd"
Moveto [Saldo do Documento   ] TypeIn "_sld"
Moveto [Codigo do Emitente   ] TypeIn "_cod" 
Moveto [Razao Social         ] TypeIn "_nom"
Moveto [Documento Referente  ] TypeIn "_doc"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Numero do Lancamento ] TypeIn "_NLanc"
Moveto [Codigo da Empresa    ] TypeIn "_cemp"
Moveto [Nome Fantasia Empresa] TypeIn "_nemp"
Moveto [Data de Emissao      ] TypeIn "_dte"
Moveto [Data de Vencimento   ] TypeIn "_dtv"
Moveto [Tipo do Documento    ] TypeIn "_tdoc"
Moveto [Numero do Documento  ] TypeIn "_ndoc"
Moveto [Serie do Documento   ] TypeIn "_sdoc"
Moveto [Valor do Documento   ] TypeIn "_vrd"
Moveto [Saldo do Documento   ] TypeIn "_sld"
Moveto [Codigo do Emitente   ] TypeIn "_cod" 
Moveto [Razao Social         ] TypeIn "_nom"
Moveto [Documento Referente  ] TypeIn "_doc"
Switch
  Case tipo="Realizado" : Moveto [Sistema Gerador   ] TypeIn "Realizados"
                          Moveto [Valor Total       ] TypeIn "_vrd"
  Case tipo="OC"        : Moveto [Sistema Gerador   ] TypeIn "OC"
                          Moveto [Valor Total       ] TypeIn "_vrd"
EndSwitch
Do_It!
ClearAll

EndProc  ;AdicionaDados_Analitico()


;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc AdicionaDados_Analitico2(tipo)

If IsEmpty("Answer")
   Then Return
EndIf    

{Ask} {Answer} 
Moveto [Numero do Lancamento ] TypeIn "_NLanc"
Moveto [Codigo da Empresa    ] TypeIn "_cemp"
Moveto [Nome Fantasia Empresa] TypeIn "_nemp"
Moveto [Data de Emissao      ] TypeIn "_dte"
Moveto [Data de Vencimento   ] TypeIn "_dtv"
Moveto [Tipo do Documento    ] TypeIn "_tdoc"
Moveto [Numero do Documento  ] TypeIn "_ndoc"
Moveto [Serie do Documento   ] TypeIn "_sdoc"
Moveto [Valor do Documento   ] TypeIn "_vrd"
Moveto [Saldo do Documento   ] TypeIn "_sld"
Moveto [Codigo do Emitente   ] TypeIn "_cod" 
Moveto [Razao Social         ] TypeIn "_nom"
Moveto [Documento Referente  ] TypeIn "_doc"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Numero do Lancamento ] TypeIn "_NLanc"
Moveto [Codigo da Empresa    ] TypeIn "_cemp"
Moveto [Nome Fantasia Empresa] TypeIn "_nemp"
Moveto [Data de Emissao      ] TypeIn "_dte"
Moveto [Data de Vencimento   ] TypeIn "_dtv"
Moveto [Tipo do Documento    ] TypeIn "_tdoc"
Moveto [Numero do Documento  ] TypeIn "_ndoc"
Moveto [Serie do Documento   ] TypeIn "_sdoc"
Moveto [Saldo do Documento   ] TypeIn "_sld"
Moveto [Codigo do Emitente   ] TypeIn "_cod" 
Moveto [Razao Social         ] TypeIn "_nom"
Moveto [Documento Referente  ] TypeIn "_doc"
Switch
  Case tipo="Realizado" : Moveto [Valor Realizado      ] TypeIn "_vrd"
                          Moveto [Valor Total Realizado] TypeIn "_vrd"

  Case tipo="OC"        : Moveto [Valor OC             ] TypeIn "_vrd"
                          Moveto [Valor Total OC       ] TypeIn "_vrd"
EndSwitch
Do_It!
ClearAll

EndProc  ;AdicionaDados_Analitico()

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc Processa()
;***** 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 PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Data Vencimento - Ano/Mˆs Sint‚tico")
ModeloRelatoriosAdd("02  Fornecedor/Data Vencimento - Ano/Mˆs Anal¡tico")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9  : Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1() 
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESATE"     : Campo="NO"
            Case Campo="TG_DTINI"         : Campo="TG_EMPRESATE"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_CODMODELO"     : Campo="TG_DTFIM"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESATE"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESATE"  : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"  : Campo="YES"  
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo=""     : MSG_CAMPO=""
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

sys_Valor()

VSDGEMPRESA=""
VSDGPLCONTAS=""
VSDGDTINI  =Primeiro_Dia_Data(Today())
VSDGDTFIM  =BlankDate()
VSDGMODELOREL=""

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "T¡tulos … Pagar - S¢ Lan‡amento Fornecedores" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC", "TAB","ReverseTab",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 12 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESATE"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESATE" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 03,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 03,16 "at‚" For "TG_DTFIM"
    Accept @ 03,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
    
    Label  @ 05,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 06,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 06,06  Width 63 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        
    
    Pushbutton @ 08,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 08,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  if not ValidarModelosRelatorios() then loop endif         

  If IsBlank(VSDGDTINI)
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando o Relat¢rio")

  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Compras\\Rm_0011" Tabela
  Empty(Tabela)   

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    If VSDGCODMODELO="01"
       Then Seleciona_Sintetico()
       Else Seleciona_Analitico("Realizado")
            Seleciona_Analitico("OC")
    EndIf 
  EndWhile
  
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  Processa()

  If VSDGCODMODELO="01" Then CopyReport "\\Base\\Sistemas\\Compras\\Rm_0011" "R" Tabela "R"  EndIf 
  If VSDGCODMODELO="02" Then CopyReport "\\Base\\Sistemas\\Compras\\Rm_0011" "1" Tabela "R" EndIf
  IMPRIREL(Tabela,"R")

  Delete Tabela
EndWhile
ClearAll
Release Vars All
Release Procs All
