;** P_Titulo *******************************************************************
;*  Configuracao de Paramentos p/ Titulos                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 28/10/2011 por Bruno Carvalho
;Ultima Alteracao: 17/11/2011 por Karina Andrade 
;Motivo Alteracao: Add Campo Codigo Cliente Nominal Padrao
;Ultima Alteracao: 30/11/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Plano Conta a Vista/Prazo
;Ultima Alteracao: 05/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Plano Conta Geracao de Credito
;Ultima Alteracao: 04/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Codigo da Empresa/Chave           
;Ultima Alteracao: 03/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usar no dialog Monta_Prompt(MSGCAMPO,TECLA)

;*******************************************************************************
;* 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_PLCONTAV"    Or
               Campo="I_PLCONTAP"    Or 
               Campo="I_PLCONTGC"   Or 
               Campo="I_NOMINAL_COD"
               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_PLCONTAV"    Then Moveto [Plano_Conta_AVista   ] EndIf
                    If Campo="I_PLCONTAP"    Then Moveto [Plano_Conta_APrazo   ] EndIf
                    If Campo="I_PLCONTGC"    Then Moveto [Plano_Conta_GCredito ] EndIf
                    If Campo="I_NOMINAL_COD" Then Moveto [Codigo_Nominal       ] 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_PLCONTAV"   : VSD_PLCONTAV    =[Plano_Conta_AVista  ]
                      Case Campo="I_PLCONTAP"   : VSD_PLCONTAP    =[Plano_Conta_APrazo  ]
                      Case Campo="I_PLCONTGC"   : VSD_PLCONTAGC   =[Plano_Conta_GCredito]
                      Case Campo="I_NOMINAL_COD": VSD_NOMINAL_COD =[Codigo_Nominal      ]
                    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_EMITE_CHEQUE" :
                  If QuerDesfazer("")
                     Then
                          If Chave=1
                             Then Del  ; Registro Novo
                                  CancelDialog
                             Else Undo ; Registro Existente
                                  CancelDialog
                          EndIf   
                  EndIf   
                                    
             Case Campo="I_NOMINAL_COD"        : Campo="I_EMITE_CHEQUE" 
             Case Campo="I_PORTA_IMP"          : Campo="I_EMITE_CHEQUE"
             Case Campo="I_CONTROLA_TALAO"     : Campo="I_PORTA_IMP"
             Case Campo="I_PROXIMO_LANCAMENTO" : Campo="I_CONTROLA_TALAO"
             Case Campo="I_RECIBO"             : Campo="I_PROXIMO_LANCAMENTO"
             Case Campo="I_PLCONTAV"           : Campo="I_RECIBO" 
             Case Campo="I_PLCONTAP"           : Campo="I_PLCONTAV"
             Case Campo="I_PLCONTGC"           : Campo="I_PLCONTAP"
           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_EMITE_CHEQUE"
                          EndIf
                  EndIf           
             Case Campo="I_EMITE_CHEQUE" : 
                  VSD_EMITE_CHEQUE=ControlValue("I_EMITE_CHEQUE")
                  If IsBlank(VSD_EMITE_CHEQUE) Or VSD_EMITE_CHEQUE="N"
                     Then VSD_EMITE_CHEQUE="N"
                          Campo="I_PORTA_IMP"
                     Else Campo="I_NOMINAL_COD"     
                  EndIf
                  
             Case Campo="I_NOMINAL_COD": 
                  VSD_NOMINAL_COD=ControlValue("I_NOMINAL_COD")
                  If Not IsBlank (VSD_NOMINAL_COD)
                    Then Campo="I_PORTA_IMP"
                  EndIf  
             Case Campo="I_PORTA_IMP"  : Campo="I_CONTROLA_TALAO"
                  VSD_PORTA_IMP=ControlValue("I_PORTA_IMP")             
             Case Campo="I_CONTROLA_TALAO" : Campo="I_PROXIMO_LANCAMENTO"
                  VSD_CONTROLA_TALAO=ControlValue("I_CONTROLA_TALAO")     
                  If IsBlank(VSD_CONTROLA_TALAO)
                     Then VSD_CONTROLA_TALAO="N"
                  EndIf        
             Case Campo="I_PROXIMO_LANCAMENTO" : Campo="I_RECIBO"
                  VSD_PROXIMO_LANCAMENTO=ControlValue("I_PROXIMO_LANCAMENTO")            
             Case Campo="I_RECIBO":
                  VSD_RECIBO=ControlValue("I_RECIBO")
                  Campo="I_PLCONTAV"    
                  
             Case Campo="I_PLCONTAV":
                  VSD_PLCONTAV=ControlValue("I_PLCONTAV")
                  If Not IsBlank(VSD_PLCONTAV)
                     Then Moveto [Plano_Conta_AVista]
                          Ativa_Lookup()
                          Locate VSD_PLCONTAV
                          If Not RetVal
                             Then Mensagem("Codigo n„o Cadastrado !")
                                  KeyPress "ESC"
                             Else VSD_PLCONTAV=[Codigo Plano_Conta]
                                  KeyPress "ESC"
                                  Campo="I_PLCONTAP"
                          EndIf
                     Else Campo="I_PLCONTAP"
                  EndIf
						 Case Campo="I_PLCONTAP": 
									VSD_PLCONTAP=ControlValue("I_PLCONTAP")
									If Not IsBlank(VSD_PLCONTAP)
                     Then Moveto [Plano_Conta_APrazo]
                          Ativa_Lookup()
													Locate VSD_PLCONTAP
                          If Not RetVal
                             Then Mensagem("Codigo n„o Cadastrado !")
                                  KeyPress "ESC"
                             Else VSD_PLCONTAP=[Codigo Plano_Conta]
                                  KeyPress "ESC"
                                  Campo="I_PLCONTGC"   
                          EndIf
                     Else Campo="I_PLCONTGC"             
									EndIf
						 Case Campo="I_PLCONTGC": 
									VSD_PLCONTGC=ControlValue("I_PLCONTGC")

                  ultimocampook=true
									If Not IsBlank(VSD_PLCONTGC)
                     Then Moveto [Plano_Conta_GCredito]
                          Ativa_Lookup()
													Locate VSD_PLCONTGC
                          If Not RetVal
                             Then Mensagem("Codigo n„o Cadastrado !")
                                  KeyPress "ESC"
                                  ultimocampook=false
                                  
                             Else VSD_PLCONTGC=[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_PLCONTAV"    Or
   Campo="I_PLCONTAP"    Or 
   Campo="I_PLCONTGC"   Or 
   Campo="I_NOMINAL_COD"
   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_EMITE_CHEQUE"             : MSGCAMPO="Emite Cheques? Sim ou N„o"
  Case Campo="I_PORTA_IMP"                : MSGCAMPO="Informe a Porta para Impress„o"
  Case Campo="I_CONTROLA_TALAO"           : MSGCAMPO="Controla Tal„o? Sim ou N„o"
  Case Campo="I_PROXIMO_LANCAMENTO"       : MSGCAMPO="Inform o Pr¢ximo Lan‡amento"
  Case Campo="I_RECIBO"                   : MSGCAMPO="Script para impress„o de recibos"
  Case Campo="I_NOMINAL_COD"              : MSGCAMPO="Codigo Cliente Nominal Padrao" 
  Case Campo="I_PLCONTAV"                 : MSGCAMPO="Plano de Contas padr„o para pagamento a vista"
  Case Campo="I_PLCONTAP"                 : MSGCAMPO="Plano de Contas padr„o para pagamento a prazo"
  Case Campo="I_PLCONTGC"                 : MSGCAMPO="Plano de Contas padr„o para gera‡Æo t¡tulo de crˆdito"
  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_EMITE_CHEQUE=ControlValue("I_EMITE_CHEQUE")
If IsBlank(VSD_EMITE_CHEQUE)    Then VSD_EMITE_CHEQUE="N"    EndIf

VSD_CONTROLA_TALAO=ControlValue("I_CONTROLA_TALAO")
If IsBlank(VSD_CONTROLA_TALAO)    Then VSD_CONTROLA_TALAO="N"    EndIf

VSD_PLCONTAV=ControlValue("I_PLCONTAV")
If Not IsBlank(VSD_PLCONTAV)
   Then Moveto [Plano_Conta_AVista]
        Ativa_Lookup()
        Locate VSD_PLCONTAV
        If Not RetVal
           Then Mensagem("Plano de Contas nÆo Cadastrado !// Padr„o para pagamento a vista !")
                KeyPress "ESC"
                Return False
           Else VSD_PLCONTAV=[Codigo Plano_Conta]
                KeyPress "ESC"
        EndIf
EndIf

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

VSD_PLCONTGC=ControlValue("I_PLCONTGC")
If Not IsBlank(VSD_PLCONTGC)
   Then Moveto [Plano_Conta_GCredito]
        Ativa_Lookup()
        Locate VSD_PLCONTGC
        If Not RetVal
           Then Mensagem("Plano de Contas nÆo Cadastrado !// Padr„o para gera‡Æo t¡tulo de crˆdito !")
                KeyPress "ESC"
                Return False
           Else VSD_PLCONTGC=[Codigo Plano_Conta]
                KeyPress "ESC"
        endif        
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
       [Emite_Cheque        ] = VSD_EMITE_CHEQUE
       [Porta_Impressora    ] = VSD_PORTA_IMP
       [Controla_Talao      ] = VSD_CONTROLA_TALAO
       [Proximo Lancamento  ] = VSD_PROXIMO_LANCAMENTO 
       [Impressao_Recibo    ] = VSD_RECIBO
       [Codigo_Nominal      ] = VSD_NOMINAL_COD
       [Plano_Conta_AVista  ] = VSD_PLCONTAV
       [Plano_Conta_APrazo  ] = VSD_PLCONTAP
       [Plano_Conta_GCredito] = VSD_PLCONTGC
       UnLockRecord


  Case OP = "Ler":
       VSD_EMPRESA            = [Codigo_Empresa    ]
       VSD_EMITE_CHEQUE       = [Emite_Cheque      ]
       VSD_PORTA_IMP          = [Porta_Impressora  ]
       VSD_CONTROLA_TALAO     = [Controla_Talao    ]
       VSD_PROXIMO_LANCAMENTO = [Proximo Lancamento] 
       VSD_RECIBO             = [Impressao_Recibo  ]
       VSD_NOMINAL_COD        = [Codigo_Nominal    ]
       VSD_PLCONTAV           = [Plano_Conta_AVista]
       VSD_PLCONTAP           = [Plano_Conta_APrazo]
       VSD_PLCONTGC          = [Plano_Conta_GCredito]

   Case OP = "Inicio":
       VSD_EMPRESA            = ""
       VSD_EMITE_CHEQUE       = ""
       VSD_PORTA_IMP          = ""
       VSD_CONTROLA_TALAO     = ""
       VSD_PROXIMO_LANCAMENTO = BlankNum()
       VSD_RECIBO             = ""
       VSD_NOMINAL_COD        =""
       VSD_PLCONTAV           =""
       VSD_PLCONTAP           =""
       VSD_PLCONTGC          =""

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_Titulo"
While True
  INICIO_DIALOGO  = True
  Posiciona()
  PARAM_OPCAO("Ler")

  Showdialog "Configura‡„o T¡tulos a Pagar" 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 "[          ] Emite Cheques" for "I_EMITE_CHEQUE"
     Accept @ 03,02 Width 10 "A1" picture "S,N" Tag "I_EMITE_CHEQUE" to VSD_EMITE_CHEQUE
     
     Label  @ 04,00 "[          ] Nominal PadrÆo" for "I_NOMINAL_COD"
     Accept @ 04,02 Width 10 "A4" picture "#*#" Tag "I_NOMINAL_COD" to VSD_NOMINAL_COD
  
     Label  @ 05,00 "[          ] Porta Impressora" for "I_PORTA_IMP"
     Accept @ 05,02 Width 10 "A5" picture "!*!" Tag "I_PORTA_IMP" to VSD_PORTA_IMP
     
     Label  @ 06,00 "[          ] Controla Tal„o" for "I_CONTROLA_TALAO"
     Accept @ 06,02 Width 10 "A1" picture "S,N" Tag "I_CONTROLA_TALAO" to VSD_CONTROLA_TALAO
  
     Label  @ 07,00 "[          ] Pr¢ximo Lan‡amento" for "I_PROXIMO_LANCAMENTO"
     Accept @ 07,02 Width 10 "N" picture "#*#" Tag "I_PROXIMO_LANCAMENTO" to VSD_PROXIMO_LANCAMENTO
    
     Label  @ 08,00 "[          ] Script Recibo" for "I_RECIBO"
     Accept @ 08,02 Width 10 "A8" picture "!*!" Tag "I_RECIBO" to VSD_RECIBO  
  
     Label  @ 09,00 "[                ] Pl.Contas Pagamentos a Vista"  for "I_PLCONTAV"
     Accept @ 09,02 Width 16 "A13" picture "!*!" Tag "I_PLCONTAV" to VSD_PLCONTAV

     Label  @ 10,00 "[                ] Pl.Contas Pagamentos a Prazo"  for "I_PLCONTAP"
     Accept @ 10,02 Width 16 "A13" picture "!*!" Tag "I_PLCONTAP" to VSD_PLCONTAP

     Label  @ 11,00 "[                ] Pl.Contas Gera‡Æo de T¡tulo de Cr‚dito"  for "I_PLCONTGC"
     Accept @ 11,02 Width 16 "A13" picture "!*!" Tag "I_PLCONTGC" to VSD_PLCONTGC
                                                                
  Enddialog
  If Not RetVal
     Then If CHAVE=9 Then QuitLoop EndIf
  EndIf
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
