;** P_CxBco ********************************************************************
;*  Configuracao de Paramentos p/ Caixa Banco                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 14/01/2016 por Bruno Carvalho  
;Ultima Alteracao: 03/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usar no dialog Monta_Prompt(MSGCAMPO,TECLA)
;Ultima Alteracao: 14/07/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Plano de Contas p/ Juros e Desconto -> APagar e AReceber
;Ultima Alteracao: 20/09/2018 por Bruno Carvalho
;Motivo Alteracao: Alterado no layout do showdialog "A PAGAR" -> "SAIDA" e "A RECEBER" -> "ENTRADA"
;Ultima Alteracao: 21/09/2018 por Bruno Carvalho
;Motivo Alteracao: Tratamento ao ser informado o plano de contas na SAIDA ou ENTRADA, verificando a inicializa‡Æo de cada PlConta
;Ultima Alteracao: 25/06/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes no plano de contas "SAIDA" ou "ENTRADA" -> Fun‡Æo PlContas() p/ verificar o plano de conta informado
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc

;*******************************************************************************
;* 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_J_PLCONTAS_APAGAR"   Or
						   Campo="I_D_PLCONTAS_APAGAR"   Or
						   Campo="I_J_PLCONTAS_ARECEBER" Or 
						   Campo="I_D_PLCONTAS_ARECEBER"
               Then Dynarray WinArray5[]
                    Window Handle Dialog to JANELA
                    Window GetAttributes JANELA To WinArray5
                    WinArray5["FLOATING"]=False
                    Window SetAttributes JANELA From WinArray5

                    Switch
                      Case Campo="I_J_PLCONTAS_APAGAR"   : Moveto [Codigo PlContas_J_APagar] 
						          Case Campo="I_D_PLCONTAS_APAGAR"   : Moveto [Codigo PlContas_D_APagar] 
						          Case Campo="I_J_PLCONTAS_ARECEBER" : Moveto [Codigo PlContas_J_AReceb] 
						          Case Campo="I_D_PLCONTAS_ARECEBER" : Moveto [Codigo PlContas_D_AReceb] 
                      Case Campo="I_EMPRESA"             : Moveto [Codigo_Empresa          ] 
                    Endswitch  
                    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_J_PLCONTAS_APAGAR"   : VSD_J_PLCONTAS_APAGAR   = [Codigo PlContas_J_APagar]
                      Case Campo="I_D_PLCONTAS_APAGAR"   : VSD_D_PLCONTAS_APAGAR   = [Codigo PlContas_D_APagar]
                      Case Campo="I_J_PLCONTAS_ARECEBER" : VSD_J_PLCONTAS_ARECEBER = [Codigo PlContas_J_AReceb]
                      Case Campo="I_D_PLCONTAS_ARECEBER" : VSD_D_PLCONTAS_ARECEBER = [Codigo PlContas_D_AReceb]
                    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_TIT_CRED" :
                  If QuerDesfazer("")
                     Then If Chave=1
                             Then Del 
                                  CancelDialog
                             Else Undo 
                                  CancelDialog
                          EndIf   
                  EndIf             
             Case Campo="I_IMP_RECIBO"          : Campo= "I_TIT_CRED"         
             Case Campo="I_IMP_RELACAO"         : Campo= "I_IMP_RECIBO"
             Case Campo="I_J_PLCONTAS_APAGAR"   : Campo="I_IMP_RELACAO"
						 Case Campo="I_D_PLCONTAS_APAGAR"   : Campo="I_J_PLCONTAS_APAGAR"
						 Case Campo="I_J_PLCONTAS_ARECEBER" : Campo="I_D_PLCONTAS_APAGAR"
						 Case Campo="I_D_PLCONTAS_ARECEBER" : Campo="I_J_PLCONTAS_ARECEBER"
           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_TIT_CRED"
                          EndIf
                  EndIf
						 Case Campo="I_TIT_CRED": Campo="I_IMP_RECIBO"
									VSD_TIT_CRED=ControlValue("I_TIT_CRED")
									If IsBlank(VSD_TIT_CRED)
                     Then VSD_TIT_CRED = "N"
									EndIf
						 Case Campo="I_IMP_RECIBO"          : Campo="I_IMP_RELACAO"
									VSD_IMP_RECIBO=ControlValue("I_IMP_RECIBO")
						 Case Campo="I_IMP_RELACAO"         : Campo="I_J_PLCONTAS_APAGAR" 
									VSD_IMP_RELACAO=ControlValue("I_IMP_RELACAO")
						 
             ;SAIDA
             Case Campo="I_J_PLCONTAS_APAGAR"   : Campo="I_D_PLCONTAS_APAGAR"
                  VSD_J_PLCONTAS_APAGAR = ControlValue("I_J_PLCONTAS_APAGAR")
                  If Not IsBlank(VSD_J_PLCONTAS_APAGAR) 
                     Then If Not PlContas(VSD_J_PLCONTAS_APAGAR,"E")
                             Then Campo="I_J_PLCONTAS_APAGAR"  
                          EndIf 
                  EndIf
						 Case Campo="I_D_PLCONTAS_APAGAR"   : Campo="I_J_PLCONTAS_ARECEBER"
                  VSD_D_PLCONTAS_APAGAR = ControlValue("I_D_PLCONTAS_APAGAR")
                  If Not IsBlank(VSD_D_PLCONTAS_APAGAR)
                     Then If Not PlContas(VSD_D_PLCONTAS_APAGAR,"S")
                             Then Campo="I_D_PLCONTAS_APAGAR" 
                          EndIf  
                  EndIf
             ;ENTRADA     
						 Case Campo="I_J_PLCONTAS_ARECEBER" : Campo="I_D_PLCONTAS_ARECEBER"
                  VSD_J_PLCONTAS_ARECEBER = ControlValue("I_J_PLCONTAS_ARECEBER")
                  If Not IsBlank(VSD_J_PLCONTAS_ARECEBER) 
                     Then If Not PlContas(VSD_J_PLCONTAS_ARECEBER,"S")
                             Then Campo="I_J_PLCONTAS_ARECEBER" 
                          EndIf  
                  EndIf
						 Case Campo="I_D_PLCONTAS_ARECEBER" :
                  VSD_D_PLCONTAS_ARECEBER =   ControlValue("I_D_PLCONTAS_ARECEBER")
                  If Not IsBlank(VSD_D_PLCONTAS_ARECEBER) 
                     Then If Not PlContas(VSD_D_PLCONTAS_ARECEBER,"E")
                             Then Campo="I_D_PLCONTAS_ARECEBER"
                             Else ConfirmaGravar() 
                          EndIf  
                     Else ConfirmaGravar()             
                  EndIf                  
           EndSwitch
   EndSwitch
EndIf

TECLA="//Esc=Retornar  "
If Campo="I_EMPRESA"
   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_TIT_CRED"                 : MSGCAMPO="Utiliza t¡tulo de cr‚dito? Sim/N„o"  
  Case Campo="I_IMP_RECIBO"               : MSGCAMPO="Script de impress„o do recibo"
  Case Campo="I_IMP_RELACAO"              : MSGCAMPO="Script de impress„o da rela‡„o"
  Case Campo="I_J_PLCONTAS_APAGAR"        : MSGCAMPO="Plano de Contas JUROS -> A Pagar"
  Case Campo="I_D_PLCONTAS_APAGAR"        : MSGCAMPO="Plano de Contas DESCONTO -> A Pagar"
  Case Campo="I_J_PLCONTAS_ARECEBER"      : MSGCAMPO="Plano de Contas JUROS -> A Receber"
  Case Campo="I_D_PLCONTAS_ARECEBER"      : MSGCAMPO="Plano de Contas DESCONTO -> A Receber"
  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()

VSD_TIT_CRED=ControlValue("I_TIT_CRED")
If IsBlank(VSD_TIT_CRED) Then VSD_TIT_CRED="N" EndIf

Return True

EndProc ;Verifica()

;*******************************************************************************
;* Rotina Gravacao ou Leitura dos Parametros                                   *
;*******************************************************************************
Proc PARAM_OPCAO(OP)
Private OP

Switch
  Case OP = "Gravar":
       [Codigo_Empresa           ] = VSD_EMPRESA
       [Utiliza_Titulo_Credito   ] = VSD_TIT_CRED
       [Impressao_Recibo         ] = VSD_IMP_RECIBO 
       [Impressao_Relacao        ] = VSD_IMP_RELACAO
       [Codigo PlContas_J_APagar ] = VSD_J_PLCONTAS_APAGAR
       [Codigo PlContas_D_APagar ] = VSD_D_PLCONTAS_APAGAR
       [Codigo PlContas_J_AReceb ] = VSD_J_PLCONTAS_ARECEBER
       [Codigo PlContas_D_Areceb ] = VSD_D_PLCONTAS_ARECEBER
       UnLockRecord
       
  Case OP = "Ler":
       VSD_EMPRESA                 = [Codigo_Empresa           ]
       VSD_TIT_CRED                = [Utiliza_Titulo_Credito   ]
       VSD_IMP_RECIBO              = [Impressao_Recibo         ]
       VSD_IMP_RELACAO             = [Impressao_Relacao        ]
       VSD_J_PLCONTAS_APAGAR       = [Codigo PlContas_J_APagar ]
       VSD_D_PLCONTAS_APAGAR       = [Codigo PlContas_D_APagar ]
       VSD_J_PLCONTAS_ARECEBER     = [Codigo PlContas_J_AReceb ]
       VSD_D_PLCONTAS_ARECEBER     = [Codigo PlContas_D_Areceb ]
                                   
   Case OP = "Inicio":
       VSD_EMPRESA                 = ""
       VSD_TIT_CRED                = ""
       VSD_IMP_RECIBO              = ""
       VSD_IMP_RELACAO             = ""
       VSD_J_PLCONTAS_APAGAR       = ""
       VSD_D_PLCONTAS_APAGAR       = ""
       VSD_J_PLCONTAS_ARECEBER     = ""
       VSD_D_PLCONTAS_ARECEBER     = ""
       Moveto [Codigo_Empresa]
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,\\Sistemas\\Cadastro\\Bib_Proc"
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_CxBco"
While True
  INICIO_DIALOGO  = True
  Posiciona()
  PARAM_OPCAO("Ler")

  Showdialog "Configura‡„o Caixa/Banco" 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 "[    ] Utiliza titulo de cr‚dito?" for "I_TIT_CRED"
     Accept @ 03,02 Width 04 "A1" picture "S,N" Tag "I_TIT_CRED" to VSD_TIT_CRED
  
     Label  @ 04,00 "[           ] Impressao Recibo" for "I_IMP_RECIBO"
     Accept @ 04,02 Width 11 "A8" picture "!*!" Tag "I_IMP_RECIBO" to VSD_IMP_RECIBO
   
     Label  @ 05,00 "[           ] Impressao Rela‡„o" for "I_IMP_RELACAO"
     Accept @ 05,02 Width 11 "A8" picture "!*!" Tag "I_IMP_RELACAO" to VSD_IMP_RELACAO
     
     Frame Single From 07,00 to 16,76
     @ 07,01 ?? " Rateio Autom tico em Relat¢rios "
     @ 08,01 ?? " SAIDA"
     @ 12,01 ?? " ENTRADA"
     
     Label  @ 09,01 "[                ] Plano de Conta JUROS" for "I_J_PLCONTAS_APAGAR"
     Accept @ 09,03 Width 16 "A13" picture "!*!" Tag "I_J_PLCONTAS_APAGAR" to VSD_J_PLCONTAS_APAGAR
     
     Label  @ 10,01 "[                ] Plano de Conta DESCONTO" for "I_D_PLCONTAS_APAGAR"
     Accept @ 10,03 Width 16 "A13" picture "!*!" Tag "I_D_PLCONTAS_APAGAR" to VSD_D_PLCONTAS_APAGAR
       
     Label  @ 13,01 "[                ] Plano de Conta JUROS" for "I_J_PLCONTAS_ARECEBER"
     Accept @ 13,03 Width 16 "A13" picture "!*!" Tag "I_J_PLCONTAS_ARECEBER" to VSD_J_PLCONTAS_ARECEBER
     
     Label  @ 14,01 "[                ] Plano de Conta DESCONTO" for "I_D_PLCONTAS_ARECEBER"
     Accept @ 14,03 Width 16 "A13" picture "!*!" Tag "I_D_PLCONTAS_ARECEBER" to VSD_D_PLCONTAS_ARECEBER  
       
       
  Enddialog
  If Not RetVal
     Then If CHAVE=9 Then QuitLoop EndIf
  EndIf
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
