;** P_Cheq   *******************************************************************
;*  Configuracao de Paramentos p/ Cheques Terceiros                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 30/12/2008 por Anivel Augusto Rodrigues
;Ultima Alteracao: 01/01/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Tp/Tx Juros
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 12/06/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina para Leitor de Cheque 
;Ultima Alteracao: 04/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Codigo da Empresa/Chave           
;Ultima Alteracao: 18/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆ usa configura‡Æo leitor cheque  
;Ultima Alteracao: 03/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usar no dialog Monta_Prompt(MSGCAMPO,TECLA)
;Ultima Alteracao: 23/03/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado IsAssigned(VSD_LEITORCHQ) na proc PARAM_OPCAO("Gravar")
;Ultima Alteracao: 25/10/2016 por Rafael Matos
;Motivo Alteracao: Inclusao Gerapag e PlContaP

;*******************************************************************************
;* Rotina de Controle de Paramentros                                           *
;*******************************************************************************
Proc PARAM_DIALOG(Disparo,Campo,Evento,Elemento)
Temp=True

TECLA   =""
MSGCAMPO=""

If INICIO_DIALOGO
   Then INICIO_DIALOGO=False
EndIf

If Disparo="OPEN"
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Temp=False
   Switch
       Case Evento["KeyCode"] = -59:
            If Campo="I_EMPRESA"     Or
               Campo="I_PLCONTAR"    Or
               Campo="I_PLCONTAP"   
               Then
                    Dynarray WinArray5[]
                    Window Handle Dialog to JANELA
                    Window GetAttributes JANELA To WinArray5
                    WinArray5["FLOATING"]=False
                    Window SetAttributes JANELA From WinArray5

                    If Campo="I_EMPRESA"     Then Moveto [Codigo_Empresa          ] EndIf
										If Campo="I_PLCONTAR"    Then Moveto [Plano_Conta_CtaReceber  ] EndIf
										If Campo="I_PLCONTAP"    Then Moveto [Plano_Conta_CtaPagar    ] EndIf
                    ConsultaF1()

                    Window Select JANELA
                    WinArray5["FLOATING"]=True
                    Window SetAttributes JANELA From WinArray5

                    echo Normal
                    echo off

                    Switch
                      Case Campo="I_EMPRESA"    : VSD_EMPRESA     =[Codigo_Empresa        ]
                      Case Campo="I_PLCONTAR"   : VSD_PLCONTAR    =[Plano_Conta_CtaReceber]
                      Case Campo="I_PLCONTAP"   : VSD_PLCONTAP    =[Plano_Conta_CtaPagar]
                    EndSwitch
           EndIf
           
      Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
           If CHAVE=0
              Then If QuerExcluir("")
                      Then Del
                           CancelDialog
                   EndIf
           EndIf
      Case Evento["KeyCode"] = -81: 
           If Campo<>"I_EMPRESA" And Chave=0
              then 
                   ConfirmaGravar()
           EndIf
              
      Case Evento["KeyCode"] = 27:
           Switch
             Case Campo="I_EMPRESA"             :
                  If IsBlank([Codigo_Empresa])
                     Then Del
                  EndIf
                  CHAVE=9
                  CancelDialog
             Case Campo="I_CHLIVRE" :
                  If QuerDesfazer("")
                     Then
                          If Chave=1
                             Then Del  ; Registro Novo
                                  CancelDialog
                             Else Undo ; Registro Existente
                                  CancelDialog
                          EndIf   
                  EndIf   
                                    
						 Case Campo="I_GERACXBC"        : Campo="I_CHLIVRE"
						 Case Campo="I_FORMA_TXJUROS"   : Campo="I_GERACXBC"
						 Case Campo="I_TXJUROS"         : Campo="I_FORMA_TXJUROS"
						 Case Campo="I_GERAREC"         : Campo="I_TXJUROS"
             Case Campo="I_PLCONTAR"        : Campo="I_GERAREC"
             Case Campo="I_GERAPAG"         : Campo="I_PLCONTAR"
             Case Campo="I_PLCONTAP"        : Campo="I_GERAPAG"
           EndSwitch
      Case Evento["KeyCode"] = 13:
           Switch
             Case Campo="I_EMPRESA":
                  VSD_EMPRESA=ControlValue("I_EMPRESA")
                  If Not IsBlank(VSD_EMPRESA)
                     Then VSD_EMPRESA=Alinhm(VSD_EMPRESA,4)
                          Moveto [Codigo_Empresa]
                          Ativa_Lookup()
                          Locate VSD_EMPRESA
                          If Not RetVal
                             Then Mensagem("Codigo n„o Cadastrado !")
                                  KeyPress "ESC"
                             Else VSD_EMPRESA=[Codigo da Empresa]
                                  KeyPress "ESC"
                                  Chave()
                                  Campo= "I_CHLIVRE"
                          EndIf
                  EndIf           
						 Case Campo="I_CHLIVRE":
									VSD_CHLIVRE=ControlValue("I_CHLIVRE")
									If IsBlank(VSD_CHLIVRE)
										 Then VSD_CHLIVRE="N"
                  EndIf
									Campo= "I_GERACXBC"
						 Case Campo="I_GERACXBC":
									VSD_GERACXBC=ControlValue("I_GERACXBC")
									If IsBlank(VSD_GERACXBC)
										 Then VSD_GERACXBC="N"
                  EndIf
									Campo= "I_FORMA_TXJUROS"
						 Case Campo="I_FORMA_TXJUROS":
                  VSD_FORMA_TXJUROS=ControlValue("I_FORMA_TXJUROS")
                  If IsBlank(VSD_FORMA_TXJUROS)
                     Then Campo="I_PLCONTAR"
                     Else Campo="I_TXJUROS"
                  EndIf
             Case Campo="I_TXJUROS":
                  VSD_TXJUROS=ControlValue("I_TXJUROS")
                  If IsBlank(VSD_TXJUROS)
                     Then VSD_FORMA_TXJUROS=""
                  EndIf
                  Campo= "I_GERAREC"     
						 Case Campo="I_GERAREC":
									VSD_GERAREC=ControlValue("I_GERAREC")
									If IsBlank(VSD_GERAREC)
										 Then VSD_GERAREC="N"
                  EndIf
                  Campo="I_PLCONTAR"
                  
             Case Campo="I_PLCONTAR": 
                  VSD_PLCONTAR=ControlValue("I_PLCONTAR")
                  
                  If Not IsBlank(VSD_PLCONTAR)
										 Then Moveto [Plano_Conta_CtaReceber]
                          Ativa_Lookup()
                          Locate VSD_PLCONTAR
                          If Not RetVal
                             Then Mensagem("Codigo n„o Cadastrado !")
                                  KeyPress "ESC"
                                  
                             Else VSD_PLCONTAR=[Codigo Plano_Conta]
                                  KeyPress "ESC"
                          EndIf
                  EndIf
                  Campo="I_GERAPAG"
             Case Campo="I_GERAPAG":
  								VSD_GERAPAG=ControlValue("I_GERAPAG")
  								If IsBlank(VSD_GERAPAG)
  									 Then VSD_GERAPAG="N"
                  EndIf
                  Campo="I_PLCONTAP"
             
             Case Campo="I_PLCONTAP": 
                  VSD_PLCONTAP=ControlValue("I_PLCONTAP")          
                  
                  ultimocampook=true
                  If Not IsBlank(VSD_PLCONTAP)
										 Then Moveto [Plano_Conta_CtaPagar]
                          Ativa_Lookup()
                          Locate VSD_PLCONTAP
                          If Not RetVal
                             Then Mensagem("Codigo n„o Cadastrado !")
                                  KeyPress "ESC"
                                  ultimocampook=false
                             Else VSD_PLCONTAP=[Codigo Plano_Conta]
                                  KeyPress "ESC"
                          EndIf
                  EndIf
                  
                  if ultimocampook
									   then 
                          ConfirmaGravar()
									endif
                      
           EndSwitch
   EndSwitch
EndIf

TECLA="//Esc=Retornar  "
If Campo="I_EMPRESA" Or
   Campo="I_PLCONTAR" Or
   Campo="I_PLCONTAP"
   Then TECLA=TECLA+"F1=Tabelas  "
   Else TECLA=TECLA+"            "
EndIf

If Campo<>"I_EMPRESA"
   Then If Chave=0
           Then TECLA=TECLA+"Ctrl+Del=Excluir  "
           Else TECLA=TECLA+"                  "
        EndIf
        TECLA=TECLA+"PgDn=Finalizar  "
EndIf

Switch
  Case Campo="I_EMPRESA"       : MSGCAMPO="Codigo da Empresa Padr„o"
  Case Campo="I_FORMA_TXJUROS" : MSGCAMPO="Forma da Taxa de Juros? Dia/Mes/Ano"
  Case Campo="I_TXJUROS"       : MSGCAMPO="Informe a Taxa de Juros"
  Case Campo="I_PLCONTAR"      : MSGCAMPO="Plano de Contas padrÆo para entrada de Cheque Devolvido"
  Case Campo="I_PLCONTAP"      : MSGCAMPO="Plano de Contas padrÆo para sa¡da de Cheque Devolvido"
  Otherwise                    : MSGCAMPO="Utiliza este recurso? Sim/N„o"
EndSwitch

Mouse Hide
Monta_Prompt(MSGCAMPO,TECLA)

Return TEMP
EndProc   ;(Param_Dialog)

;*******************************************************************************
;* Rotina Localiza_Registro                                                    *
;*******************************************************************************
Proc Chave()
Moveto [Codigo_Empresa]
Del
Locate VSD_EMPRESA
If RetVal
   Then While True
          If Not IsLockRecord() Then QuitLoop EndIf
        EndWhile
        CHAVE=0
   Else CHAVE=1
        End Down
        [Codigo_Empresa]=VSD_EMPRESA
EndIf
PARAM_OPCAO("Ler")
EndProc  ; (Chave)

;*******************************************************************************
;* Rotina para Verificar Parametros                                            *
;*******************************************************************************
Proc Verifica()
WV=True

VSD_CHLIVRE=ControlValue("I_CHLIVRE")
If IsBlank(VSD_CHLIVRE) 	 Then VSD_CHLIVRE="N"    EndIf

VSD_GERACXBC=ControlValue("I_GERACXBC")
If IsBlank(VSD_GERACXBC) Then VSD_GERACXBC="N" EndIf

VSD_GERAREC=ControlValue("I_GERAREC")
If IsBlank(VSD_GERAREC) Then VSD_GERAREC="N" EndIf

VSD_GERAPAG=ControlValue("I_GERAPAG")
If IsBlank(VSD_GERAPAG) Then VSD_GERAPAG="N" EndIf

VSD_FORMA_TXJUROS=ControlValue("I_FORMA_TXJUROS")

VSD_TXJUROS=ControlValue("I_TXJUROS")
If IsBlank(VSD_TXJUROS)
   Then VSD_FORMA_TXJUROS=""
EndIf

VSD_PLCONTAR=ControlValue("I_PLCONTAR")
If Not IsBlank(VSD_PLCONTAR)
	 Then Moveto [Plano_Conta_CtaReceber]
        Ativa_Lookup()
        Locate VSD_PLCONTAR
        If Not RetVal
           Then Mensagem("Plano de Contas nÆo Cadastrado !// Padr„o para CH em Contas a Receber !")
                KeyPress "ESC"
                Return False
           Else VSD_PLCONTAR=[Codigo Plano_Conta]
                KeyPress "ESC"
        EndIf
EndIf

VSD_PLCONTAP=ControlValue("I_PLCONTAP")
If Not IsBlank(VSD_PLCONTAP)
	 Then Moveto [Plano_Conta_CtaPagar]
        Ativa_Lookup()
        Locate VSD_PLCONTAP
        If Not RetVal
           Then Mensagem("Plano de Contas nÆo Cadastrado !// Padr„o para CH em Contas a Pagar !")
                KeyPress "ESC"
                Return False
           Else VSD_PLCONTAP=[Codigo Plano_Conta]
                KeyPress "ESC"
        EndIf
EndIf

If ( Not IsBlank(VSD_FORMA_TXJUROS) and
    (IsBlank(VSD_TXJUROS) or VSD_TXJUROS=0) ) or
   ( IsBlank(VSD_FORMA_TXJUROS) and
    (not IsBlank(VSD_TXJUROS) or VSD_TXJUROS>0) ) 
   Then Mensagem("Forma e ou Taxa de Juros inv lida !")
        Return False
endif

Return WV

EndProc ; (Verifica)

;*******************************************************************************
;* Rotina Gravacao ou Leitura dos Parametros                                   *
;*******************************************************************************
Proc PARAM_OPCAO(OP)
Private OP
Switch
  Case OP = "Gravar":
       [Codigo_Empresa      ] = VSD_EMPRESA
       [Utiliza_Inserir_CHLivre] = VSD_CHLIVRE
       [Utiliza_Gera_CaixaBanco] = VSD_GERACXBC
       [Utiliza_Gera_CtaReceber] = VSD_GERAREC
       [Plano_Conta_CtaReceber ] = VSD_PLCONTAR
       [Utiliza_Gera_CtaPagar  ] = VSD_GERAPAG
       [Plano_Conta_CtaPagar ]   = VSD_PLCONTAP
       [Cheque_TxJuros         ] = VSD_TXJUROS
       [Cheque_Forma_TxJuros   ] = VSD_FORMA_TXJUROS
       UnLockRecord
      
       If IsAssigned(VSD_LEITORCHQ) And VSD_LEITORCHQ<>""
          Then LINHA =         GravaExpressao("[Leitor de Cheque]","T","")
               LINHA = LINHA + GravaExpressao("VSD_LEITORCHQ","S",VSD_LEITORCHQ)        
               FileWrite PrivDir()+"LER_CHQ.ini" From LINHA 
       EndIf

  Case OP = "Ler":
       VSD_EMPRESA            = [Codigo_Empresa    ]
       VSD_CHLIVRE          = [Utiliza_Inserir_CHLivre]
       VSD_GERACXBC         = [Utiliza_Gera_CaixaBanco]
       VSD_GERAREC          = [Utiliza_Gera_CtaReceber]
       VSD_PLCONTAR         = [Plano_Conta_CtaReceber ]
       VSD_GERAPAG          = [Utiliza_Gera_CtaPagar  ]
       VSD_PLCONTAP         = [Plano_Conta_CtaPagar   ]       
       VSD_TXJUROS          = [Cheque_TxJuros         ]
       VSD_FORMA_TXJUROS    = [Cheque_Forma_TxJuros   ]
        
       If IsFile(PrivDir()+"LER_CHQ.ini")
          Then LeiaINI(PrivDir()+"LER_CHQ.ini","VSD_LEITORCHQ.S.null")
       EndIf   

   Case OP = "Inicio":
       VSD_EMPRESA       = ""
			 VSD_CHLIVRE	     = ""
			 VSD_GERACXBC      = ""
			 VSD_GERAREC     	 = ""
			 VSD_PLCONTAR      = ""
			 VSD_GERAPAG     	 = ""
			 VSD_PLCONTAP      = ""
       VSD_TXJUROS       = BlankNum()
       VSD_FORMA_TXJUROS = ""
       VSD_LEITORCHQ     = ""
EndSwitch
EndProc   ; (Param_Opcao)

;*******************************************************************************
;* Rotina para posicionar registro                                             *
;*******************************************************************************
Proc Posiciona()
If IsBlank([Codigo_Empresa])
   Then Del
EndIf
Moveto [Codigo_Empresa]
End Down
EndProc    ;  (Posiciona)

;*******************************************************************************
;* Rotina Gravacao dos dados                                                   *
;*******************************************************************************
Proc ConfirmaGravar()

if verifica()
   then 
        If ConfGeral("Confirma novos parametros?")
           Then PARAM_OPCAO("Gravar")
        EndIf
        AcceptDialog
endif    

endproc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf

VSD_EMPRESA=SYS_EMPRESA_DEFAULT
If Not Checa_Supervisor()
   Then Return
EndIf

CoEdit NoWindow "P_cheq"
While True
  INICIO_DIALOGO  = True
  Posiciona()
  PARAM_OPCAO("Ler")

  Showdialog "Configura‡„o Cheques/Terceiros" Proc "Param_Dialog"
     Trigger "OPEN","ARRIVE"
      Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN",-6,-147
       @ 01,00 height 22 width 80
  
     Label  @ 00,00 "Empresa" for "I_EMPRESA"
     Accept @ 01,01 Width 07 "A4" picture "#*#" Tag "I_EMPRESA" to VSD_EMPRESA
  
     Label  @ 03,00 "[    ] Permitir inserir Cheque Livre - Bordero" for "I_CHLIVRE"
     Accept @ 03,02 Width 04 "A1" picture "S,N" Tag "I_CHLIVRE" to VSD_CHLIVRE
     Label  @ 04,00 "[    ] Gera lan‡amentos Caixa/Banco - Bordero" for "I_GERACXBC"
     Accept @ 04,02 Width 04 "A1" picture "S,N" Tag "I_GERACXBC" to VSD_GERACXBC
     Label  @ 05,00 "[    ] Forma Taxa de Juros Cheque/Cobran‡a" for "I_FORMA_TXJUROS"
     Accept @ 05,02 Width 04 "A1" picture "D,M,A" Tag "I_FORMA_TXJUROS" to VSD_FORMA_TXJUROS
     Label  @ 06,00 "[       ] Taxa de Juros Cheque/Cobran‡a" for "I_TXJUROS"
     Accept @ 06,02  Width 07 "N" picture "#*#.[##]" Tag "I_TXJUROS" to VSD_TXJUROS

     Label  @ 07,00 "[    ] Gera lan‡amento Contas a Receber - Bordero" for "I_GERAREC"
     Accept @ 07,02 Width 04 "A1" picture "S,N" Tag "I_GERAREC" to VSD_GERAREC
     Label  @ 08,00 "[                ] Pl.Contas para entrada de Cheque Devolvido"  for "I_PLCONTAR"
     Accept @ 08,02 Width 16 "A13" picture "!*!" Tag "I_PLCONTAR" to VSD_PLCONTAR
     
     Label  @ 09,00 "[    ] Gera lan‡amento Contas a Pagar - Bordero" for "I_GERAPAG"
     Accept @ 09,02 Width 04 "A1" picture "S,N" Tag "I_GERAPAG" to VSD_GERAPAG
     Label  @ 10,00 "[                ] Pl.Contas para sa¡da de Cheque Devolvido"  for "I_PLCONTAP"
     Accept @ 10,02 Width 16 "A13" picture "!*!" Tag "I_PLCONTAP" to VSD_PLCONTAP
     

  Enddialog
  If Not RetVal
     Then If CHAVE=9 Then QuitLoop EndIf
  EndIf
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
