;** Rm_1002 ********************************************************************
;*  Rela‡Æo de Acertos                                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 21/09/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 29/09/2016 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes TC/NP Gerado
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 11/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes c¢cigos modelo de relatorios
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 03/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Showdialog                       

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc SELECIONA()
ClearAll

If IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"Bxautc") 
   Then
        {Ask} TypeIn "\\Sistemas\\Ctacor\\Conta" Enter
        Moveto [Codigo da Conta        ] Example "cta"
        Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
        {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"Bxautc" Enter Check
        Moveto [Codigo da Conta        ] Example "cta" typeIn ", ~VSDGCONTA.."
        Moveto [Codigo                 ]               typeIn "~VSDGDESTINAT.."
        Moveto [Codigo do Cobrador     ]               typeIn "~VSDGCOBRADOR.."
        if VSDGOPDT="1"
           Then Moveto [Data da Baixa          ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
           else Moveto [Data Base              ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        endif
        If not IsBlank(VSDGSITUACAO)
           then Moveto [Situacao       ] TypeIn "~VSDGNOMSITUACAO.."
        endif   
        Do_It!
        ClearAll
    
        if IsEmpty("Answer")
           then return
        endif
        
        {Ask} {Answer}
        moveto [Numero do Lote        ] typein "_nl"
        moveto [Data da Baixa         ] typein "_dtbx"
        moveto [Data Base             ] typein "_dtbs"
        moveto [Codigo da Conta       ] typein "_cc"
        moveto [Tipo da Conta         ] typein "_tc"
        moveto [Descricao da Conta    ] typein "_dc"
        moveto [Codigo                ] typein "_c"
        moveto [Razao Social          ] typein "_rs"
        moveto [Codigo do Cobrador    ] typein "_ccob"
        moveto [Descricao do Cobrador ] typein "_dcob"
        moveto [Total_Receber         ] typein "_tr"
        moveto [Total_Pagar           ] typein "_tp"
        moveto [Total_Cheque_Recebido ] typein "_tchr"
        moveto [Total_Cheque_Utilizado] typein "_tchu"
        moveto [Total_Cheque_Emitido  ] typein "_tche"
        moveto [Valor_Diferenca1      ] typein "_vrd1"
        moveto [OutrosValores_Recebido] typein "_or"
        moveto [OutrosValores_Pago    ] typein "_op"
        moveto [Valor_Diferenca2      ] typein "_vrd2"
        moveto [Valor_Troco           ] typein "_vt"
        moveto [SaldoAcerto           ] typein "_sa"
        moveto [Tipo_TCGerado         ] typein "_tpdocg"
        moveto [Valor_TCGerado        ] typein "_vrdocg"
        moveto [Situacao              ] typein "_sit"
        {Ask} typein Tabela Enter typeIn "Insert"
        moveto [Numero do Lote        ] typein "_nl"
        moveto [Data da Baixa         ] typein "_dtbx"
        moveto [Data Base             ] typein "_dtbs"
        moveto [Codigo da Conta       ] typein "_cc"
        moveto [Tipo da Conta         ] typein "_tc"
        moveto [Descricao da Conta    ] typein "_dc"
        moveto [Codigo                ] typein "_c"
        moveto [Razao Social          ] typein "_rs"
        moveto [Codigo do Cobrador    ] typein "_ccob"
        moveto [Descricao do Cobrador ] typein "_dcob"
        moveto [Total_Receber         ] typein "_tr"
        moveto [Total_Pagar           ] typein "_tp"
        moveto [Total_Cheque_Recebido ] typein "_tchr"
        moveto [Total_Cheque_Utilizado] typein "_tchu"
        moveto [Total_Cheque_Emitido  ] typein "_tche"
        moveto [Valor_Diferenca1      ] typein "_vrd1"
        moveto [OutrosValores_Recebido] typein "_or"
        moveto [OutrosValores_Pago    ] typein "_op"
        moveto [Valor_Diferenca2      ] typein "_vrd2"
        moveto [Valor_Troco           ] typein "_vt"
        moveto [SaldoAcerto           ] typein "_sa"
        moveto [Tipo_DOCGerado        ] typein "_tpdocg"
        moveto [Valor_DOCGerado       ] typein "_vrdocg"
        moveto [Situacao              ] typein "_sit"
        Do_It!
        ClearAll
        
        {Ask} typein Tabela Enter typeIn "Fast"
        moveto [Tipo_DOCGerado        ] typein "P"
        moveto [Valor_DOCGerado       ] typein "_vrdocg"
        moveto [Valor_TCGerado        ] typein "changeto _vrdocg"
        Do_It!
        ClearAll
        
        {Ask} typein Tabela Enter typeIn "Fast"
        moveto [Tipo_DOCGerado        ] typein "R"
        moveto [Valor_DOCGerado       ] typein "_vrdocg"
        moveto [Valor_NPGerado        ] typein "changeto _vrdocg"
        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  Agrupado por Conta/Data da Baixa")
ModeloRelatoriosAdd("02  Agrupado por Pessoa/Data da Baixa")
ModeloRelatoriosAdd("03  Agrupado por Cobrador/Situa‡Æo")
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"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"    : Campo="NO"
            Case Campo="TG_CONTA"      : Campo="TG_EMPRESA"
            Case Campo="TG_DESTINAT"   : Campo="TG_CONTA"
            Case Campo="TG_COBRADOR"   : Campo="TG_DESTINAT"
            Case Campo="TG_SITUACAO"   : Campo="TG_COBRADOR"
            Case Campo="TG_OPDT"       : Campo="TG_SITUACAO"
            Case Campo="TG_DTINI"      : Campo="TG_OPDT"
            Case Campo="TG_DTFIM"      : Campo="TG_DTINI"
            Case Campo="TG_CODMODELO"  : Campo="TG_DTFIM" 
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          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_EMPRESA"    : Campo="TG_CONTA"
                    Case Campo="TG_CONTA"      : Campo="TG_DESTINAT"
                    Case Campo="TG_DESTINAT"   : Campo="TG_COBRADOR"
                    Case Campo="TG_COBRADOR"   : Campo="TG_SITUACAO"
                    Case Campo="TG_SITUACAO"   : Campo="TG_OPDT"
                         VSDGSITUACAO=ControlValue("TG_SITUACAO")
                         Switch
                           Case VSDGSITUACAO="2": VSDGNOMSITUACAO="ATUALIZADO"
                           Case VSDGSITUACAO="1": VSDGNOMSITUACAO="EM ABERTO"
                           OtherWise:
                                VSDGSITUACAO=""   VSDGNOMSITUACAO="TODAS"
                         EndSwitch
                    Case Campo="TG_OPDT"       : Campo="TG_DTINI"
                         VSDGOPDT=ControlValue("TG_OPDT")
                         Switch
                           Case VSDGOPDT="2": VSDGNOMOPDT="DATA BASE"
                           OtherWise:
                                VSDGOPDT="1"  VSDGNOMOPDT="DATA DA BAIXA"
                         EndSwitch
                    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="TG_SITUACAO" :
       MSG_CAMPO="Situa‡Æo: 1=EM ABERTO  2=ATUALIZADO"     
  Case Campo="TG_OPDT" :
       MSG_CAMPO="Op‡Æo: 1=DATA DA BAIXA  2=DATA BASE"     
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGEMPRESA  =""
VSDGCONTA    =""
VSDGDESTINAT =""
VSDGCOBRADOR =""
VSDGDTINI    =BlankDate()
VSDGDTFIM    =BlankDate()
VSDGSITUACAO =""

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "Rela‡Æo de Acertos/Baixas Autom ticas" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 18 Width 72

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

    Label  @ 02,00 "Conta"  For "TG_CONTA"
    Accept @ 03,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA" To VSDGCONTA
    Accept @ 03,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMCONT" To VSDGNOMCONTA

    Label  @ 04,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST

    Label  @ 06,00 "Cobrador"  For "TG_COBRADOR"
    Accept @ 07,03 Width 05 "A2"  Picture "[&,#][#*#]" Tag "TG_COBRADOR" To VSDGCOBRADOR
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCOBRADOR" To VSDGNOMCOBRADOR

    Label  @ 08,00 "Situa‡Æo" For "TG_SITUACAO"
    Accept @ 09,04 Width 04 "A1"   Picture "1,2" Tag "TG_SITUACAO" To VSDGSITUACAO
    Accept @ 09,09 Width 25 "A20"  Picture "!*!" Tag "TG_NOMSITUACAO" To VSDGNOMSITUACAO

    Label  @ 00,35 "Op‡äes de Datas" For "TG_OPDT"
    Accept @ 01,39 Width 04 "A1"   Picture "1,2" Tag "TG_OPDT" To VSDGOPDT
    Accept @ 01,44 Width 25 "A20"  Picture "!*!" Tag "TG_NOMOPDT" To VSDGNOMOPDT

    Label  @ 02,35 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 03,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 03,51 "at‚" For "TG_DTFIM"
    Accept @ 03,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 11,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 12,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 12,06  Width 63 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 14,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 14,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
    
  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf
  if not ValidarModelosRelatorios() then loop endif         

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

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando o Relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  copy "\\base\\sistemas\\ctacor\\RM_1002" Tabela
  empty(Tabela)

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
  EndWhile

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf

  Impressao_Orientacao="Paisagem"
  switch
    case VSDGCODMODELO="01" : IMPRIREL(Tabela,"R")
    case VSDGCODMODELO="02" : IMPRIREL(Tabela,"1")
    case VSDGCODMODELO="03" : IMPRIREL(Tabela,"2")
  endswitch

  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All

