;** Consulta *******************************************************************
;*  Consulta geral de cheques                                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/07/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 21/09/2001 por Douglas Rodrigues
;Motivo Alteracao: Ajustes para tecla F5 ver ficha
;Ultima Alteracao: 15/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Run
;Ultima Alteracao: 10/09/2010 por Bruno Carvalho
;Motivo Alteracao: Rotina Copia Familia e Ajustes
;Ultima Alteracao: 20/09/2010 por Bruno Carvalho
;Motivo Alteracao: Altera‡Ćo do Pickform (Cheque) de F para 3
;Ultima Alteracao: 19/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()                 
;Ultima Alteracao: 16/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes copia familia so fechames, naä excluir pasta no fechames   

;*******************************************************************************
;* Rotina para Consultar Itens da Entrada                                      *
;*******************************************************************************
Proc Item_Dialog(Disparo,Campo,Evento,Elemento)

MSG_CAMPO=""
Temp=True
If Opcao_Ver=True Then Campo="I_Seq" EndIf
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Opcao_Ver=True:
           Temp=False
           Switch
             Case Evento["KeyCode"] =  27:
                  CancelDialog
             OtherWise:
               Mover_Reg=True
               Switch
                 Case Evento["KeyCode"] = -71:
                      If AtFirst()
                         Then Mover_Reg=False Beep
                         Else Home
                      EndIf
                 Case Evento["KeyCode"] = -79:
                      If AtLast()
                         Then Mover_Reg=False Beep
                         Else End
                      EndIf
                 Case Evento["KeyCode"] = -73:
                      If AtFirst()
                         Then Mover_Reg=False Beep
                         Else Up
                      EndIf
                 Case Evento["KeyCode"] = -81:
                      If AtLast()
                         Then Mover_Reg=False Beep
                         Else Down
                      EndIf
               EndSwitch
               If Mover_Reg=True
                  Then If Table()="Chequei"
                          Then ITEM=[Sequencia do Cheque]
                               Inicia_Registro()
                       EndIf
               EndIf
           EndSwitch
   EndSwitch
EndIf
Switch
  Case Campo="I_Seq":
       MSGCAMPO="Sequencia"
  OtherWise:
       MSGCAMPO=""
EndSwitch

TECLA=" Esc=Retornar  Home/End/PgDn/PgUp=Paginar  "

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
RefreshDialog
Return TEMP
EndProc  ; (Item_Dialog)

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Registro_Item(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       VSD_I_SEQ    =[Sequencia do Cheque ]
       VSD_DataV    =[Data Vencimento     ]
       VSD_CBanco   =[Codigo_Banco        ]
       VSD_NBanco   =[Nome_Banco          ]
       VSD_Agencia  =[Agencia             ]
       VSD_CCorrente=[Numero_Conta        ]
       VSD_NCheque  =[Numero_Cheque       ]
       VSD_TipoEmit =[Tipo_Emitente       ]
       VSD_Nome     =[Titular_Cheque      ]
       VSD_Cidade   =[Cidade              ]
       VSD_UF       =[UF                  ]
       VSD_Valor    =[Valor               ]
       VSD_Obs      =[Observacao do Cheque]
       VSD_Situacao =[Situacao            ]
       VSD_CPF      =[CPF                 ]
EndSwitch
EndProc  ; (Registro_Item)
;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
Switch
  Case Table()="Chequei":
       INICIO_DIALOG=True
       Moveto [Sequencia do Cheque]
       ITEM=[Sequencia do Cheque]
       Locate [ChequeC->Numero do Lancamento],ITEM
       CopyToArray RegItem
EndSwitch
Registro_Item("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Digitacao de Cheques                                                        *
;*******************************************************************************
Proc Ficha_Cheque()
Tabela=Table()
Moveto "ChequeI"
Inicia_Registro()

Showdialog "Dados do Cheque" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP"
     @ 11,4 height 12 width 71

   Label  @ 0,00 "Seq." for "I_Seq"
   Accept @ 1,01  Width 05 "S" picture "#*#" Tag "I_Seq" to VSD_I_Seq

   Label  @ 0,06 "Situa‡„o" for "Situacao"
   Accept @ 1,07  Width 15 "A12" picture "EM ABERTO,LIQUIDADO,PRORROGADO,SEM FUNDO" Tag "Situacao" to VSD_Situacao

   Label  @ 0,23 "N§ Banco  Nome Banco" for "CBanco"
   Accept @ 1,24  Width 8 "A4" picture "!*!" Tag "CBanco" to VSD_CBanco
   Accept @ 1,34  Width 23 "A20" picture "!*!" Tag "NBanco" to VSD_NBanco

   Label  @ 0,58 "Agencia" for "Agencia"
   Accept @ 1,59  Width 9 "A6" picture "!*!" Tag "Agencia" to VSD_Agencia

   Label  @ 2,00 "C/C" for "CCorrente"
   Accept @ 3,01  Width 13 "A10" picture "!*!" Tag "CCorrente" to VSD_CCorrente

   Label  @ 2,16 "N§ Cheque" for "NCheque"
   Accept @ 3,17  Width 13 "A10" picture "!*!" Tag "NCheque" to VSD_NCheque

   Label  @ 2,36 "Emitente" for "TipoEmit"
   Accept @ 3,37  Width 11 "A8" picture "PROPRIO,TERCEIRO" Tag "TipoEmit" to VSD_TipoEmit

   Label  @ 4,00 "CPF/CGC" for "CPF"
   Accept @ 5,01  Width 21 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "CPF" to VSD_CPF

   Label  @ 4,24 "Nome do Titular" for "Nome"
   Accept @ 5,25  Width 43 "A40" picture "!*!" Tag "Nome" to VSD_Nome

   Label  @ 6,00 "Cidade" for "Cidade"
   Accept @ 7,01  Width 23 "A20" picture "!*!" Tag "Cidade" to VSD_Cidade

   Label  @ 6,24 "UF" for "UF"
   Accept @ 7,25  Width 5  "A2" picture "!*!" Tag "UF" to VSD_UF

   Label  @ 6,37 "Data Vencto " for "DataV"
   Accept @ 7,37  Width 13 "D" picture "#[#];.##;.##[##]" Tag "DataV" to VSD_DataV

   Label  @ 6,51 "Valor do Cheque" for "Valor"
   Accept @ 7,52  Width 16 "$" picture "#*#.[##]" Tag "Valor" to VSD_Valor

   Label  @ 08,00 "Observa‡„o do Cheque" for "Obs"
   Accept @ 09,01  Width 67 "A70" picture "!*!" Tag "Obs" to VSD_Obs

Enddialog
Moveto Tabela
EndProc ; (Ficha_Cheque)

;*******************************************************************************
;* ChequeC/ChequeI                                                             *
;*******************************************************************************
Proc CHEQUES()
If IsTable("ChequeC") And
   IsTable("ChequeI")
   Then If Not IsEmpty("ChequeC")
           Then View "ChequeC"
                PickForm "3"
                While True

                  Prompt " Esc=Sair  Ctrl+Z=Procurar  Alt+Z=Pr˘ximo  F3/F4=Muda Tabela F5=Ver Ficha"

                  Wait Table Until "ESC","ZOOM","ZOOMNEXT","F3","F4","F5"

                  If RetVal = "F3" Or RetVal = "F4"
                     Then KeyPress RetVal
                  EndIf
                  If RetVal="F5"
                     Then Opcao_Ver=True
                          Ficha_Cheque()
                  EndIf
                  If RetVal = "ZOOM"
                     Then PESQUISA()
                  EndIf
                  If RetVal = "ZOOMNEXT"
                     Then PESQUISACON()
                  EndIf
                  If Retval = "ESC"
                     Then QuitLoop
                  EndIf

                EndWhile
                ClearAll
           Else LimpAguarde()
                Mensagem("Tabela sem registros !")
        EndIf
   Else LimpAguarde()
        Mensagem("Tabela [ChequeC] referente ao lan‡mento de cheques n„o encontrada !")
EndIf
EndProc

;*******************************************************************************
;* BordChC/BordChI                                                             *
;*******************************************************************************
Proc BORDEROS()
If IsTable("BordChC") And
   IsTable("BordChI")

   Then If Not IsEmpty("BordChC")
           Then
                  View "BordChC"
                  PickForm "2"
                  While True

                  Prompt " Esc=Sair  Ctrl+Z=Procurar  Alt+Z=Pr˘ximo  F3/F4=Muda Tabela "

                  Wait Table Until "ESC", "ZOOM", "ZOOMNEXT", "F3", "F4"

                  If RetVal = "F3" Or RetVal = "F4"
                     Then KeyPress RetVal
                  EndIf
                  If RetVal = "ZOOM"
                     Then PESQUISA()
                  EndIf
                  If RetVal = "ZOOMNEXT"
                     Then PESQUISACON()
                  EndIf
                  If Retval = "ESC"
                     Then QuitLoop
                  EndIf

                EndWhile
                ClearAll
           Else LimpAguarde()
                Mensagem("Tabela sem registros !")
        EndIf
   Else LimpAguarde()
        Mensagem("Tabela [BordChC] referente ao bordero de cheques n„o encontrada !")
EndIf
EndProc

;*******************************************************************************
;* 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_DIRETORIOS"    : Campo="NO"
            Case Campo="TG_OPCOES"        : Campo="TG_DIRETORIOS"
            Case Campo="YES" Or Campo="NO": Campo="TG_OPCOES"
          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_DIRETORIOS" : Campo="TG_OPCOES"
                    Case Campo="TG_OPCOES"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_OPCOES":
       MensagemRadioButtons()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Copia Familia                                                           *
;*******************************************************************************
Proc Copia_Familia(caminho,tabela)
Private caminho,tabela

{Tools} {Copy} {JustFamily} TypeIn "\\BASE"+caminho+"\\"+tabela Enter TypeIn tabela Enter
If MenuChoice()="Cancel"
   Then Down
        If MenuChoice()="Replace"
           Then {Replace}
           Else {Cancel}
                Esc Esc Esc Esc
                MSG="Tabela [ "+tabela+" ] em [ "+caminho+" ], //"
                MSG=MSG+"com estrutura diferente !// //"
                MSG=MSG+"Anote o nome da tabela e pasta !//"
                MSG=MSG+"Depois entre em contato com o suporte Ok !"
                Mensagem(MSG)
        Endif
EndIf
Esc Esc Esc Esc
EndProc

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

Diretorio="\\Sistemas\\CheqRec\\"
Diretorios_Fechames_C(Diretorio)

While True
  ShowDialog "Consulta" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 04,12   Height 17 Width 72

    Label @ 00,00 "Ano_Mes Fechado"  For "TG_DIRETORIOS"
    PickDynArray @1,00 Height 7 width 69
     Columns 7
      Array_Diretorios
       Tag "TG_DIRETORIOS"
        To ArrayElement

    Label @ 09,00 "Op‡”es de Tabelas" For "TG_OPCOES"
    RadioButtons @ 10,01 Height 3 Width 41
      "~C~heques           ",
      "~B~orderos          "
      Tag "TG_OPCOES"
      To VSDGOPCAO

    Pushbutton @ 13,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 13,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  ANO_MES=Array_Diretorios[ArrayElement]
  If ANO_MES<>" Atual"
     Then Diretorio="\\Sistemas\\CheqRec\\Fechames\\"+ANO_MES
     Else Diretorio="\\Sistemas\\CheqRec"
  EndIf
  If DirExists(Diretorio)=0
     Then Mensagem("N„o existe a pasta do "+ANO_MES+" selecionado !")
          Loop
  EndIf
  SetDir Diretorio

  if search("FECHAMES",upper(Diretorio))>0
     then 
          Array Nom_Tab[4]
          Nom_Tab[1]="ChequeC"
          Nom_Tab[2]="ChequeI"
          Nom_Tab[3]="BordChC"
          Nom_Tab[4]="BordChI"
        
          For i From 1 To 4
              If IsTable(Nom_Tab[i])
                  Then Copia_Familia("\\Sistemas\\CheqRec",Nom_Tab[i])  
              EndIf
          EndFor
  endif
  
  Switch
    Case VSDGOPCAO=1: CHEQUES()
    Case VSDGOPCAO=2: BORDEROS()
  EndSwitch
  Echo Normal
  Echo Off
  SetDir "\\Sistemas\\CheqRec"
;;If Not Tem_Tabelas(Diretorio)
;;   Then Deleta_Arvore(SubStr(Directory(),1,2)+Diretorio)
;;EndIf

  LimpAguarde()

EndWhile
ClearAll
Release Vars All
Release Procs All
