;** OPAF_FP *******************************************************************
;*  Manutencao Cadastro de Formas de Pagamento p/ ECF                          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 09/02/2011 por Karina Andrade
;Ultima Alteracao: 15/08/2011 por Karina Andrade 
;Motivo Alteracao: Ajustes Edicao
;Ultima Alteracao: 22/08/2011 por Karina Andrade 
;Motivo Alteracao: Ajustes Exclusao e Edicao
;Ultima Alteracao: 19/02/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro() 
;Ultima Alteracao: 14/12/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes Digita() Permitir apenas uma forma de pagamento dos 
;                  tipos DINHEIRO OU CARTEIRA
;Ultima Alteracao: 06/08/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando [Tipo] for "(P)OS CARTAO" ou "(T)EF"
;Ultima Alteracao: 32/12/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem par dinheiro e carteira uma unica ocorrencia
 
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()

Moveto [Codigo Operacao]
End
SEQ=[Codigo Operacao]
Down

While True
  SetaCorRegistro("Editar")

  TECLA=""
  AguardaTeclasPadrao()

  Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal="F3": SemFicha()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
              PAGINA("OPAF_FP","MR")
              If EDITAR="S"
                 Then CHAVE=0
                      Controla_EdicaoC()
                 Else If EXCLUIR="S"
                         Then Moveto [Tipo]
                              If []="D" or []="X"
                               Then Mensagem("Forma de Pagamento Obrigat¢ria! // NÆo ‚ possiv‚l sua exclus„o.")
                                    CHAVE=8
                                    Return
                               Else If QuerExcluir("")
                                     Then DEL
                                     Else UnLockRecord
                                   EndIf
                              EndIf     
                         Else Moveto [Codigo Operacao]
                              End
                              SEQ=[Codigo Operacao]
                              Down
                              QuitLoop
                      EndIf
              EndIf
              SetaPosForm()
           EndWhile
      Case Retval="ESC":
           CHAVE=9
           Del
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([])
              Then If IsBlank(SEQ)
                      Then SEQ="1"
                      Else If SEQ="99" Then Loop EndIf
                           SEQ=StrVal(NumVal(SEQ)+1)
                   EndIf
                   []=SEQ
           EndIf
           []=ALINH()
           CODIGO=[]
           Del
           Locate CODIGO
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Down
                   [Codigo Operacao]=CODIGO
                   [ATIVO          ]="ATIVO"
          EndIf
          If IsLockRecord()
             Then End
                  SEQ=[Codigo Operacao]
                  Down
                  Moveto [Tipo]
                  Loop
          EndIf
          Quitloop
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()

Moveto [Tipo]
If []="D" or []="X"
 Then Mensagem("Forma de Pagamento Obrigat¢ria! // NÆo ‚ possiv‚l sua edi‡„o.")
      Return
EndIf

Moveto [Tipo]      
While True
     TECLA=" Esc=Retornar  "
     If CHAVE=0
        Then TECLA=TECLA + "Enter=Avancar  "
     EndIf
      
     If Field()="Tipo" Or Field()="Forma de Pagamento" Or (Field()="Descricao Operacao" And ([Tipo]="P" Or [Tipo]="T"))
        Then TECLA=TECLA + "F1=Tabela  "
     EndIf

     MSGCAMPO=Field()
     Switch
       Case Field()="Descricao Operacao"    : MSGCAMPO="Descricao da Forma de Pagamento"
       Case Field()="Descricao ECF"         : MSGCAMPO="Descricao da Forma de Pagamento no ECF"
       Case Field()="Tipo"                  : MSGCAMPO="Tipo de Pagamento"
       Case Field()="Condicao de Pagamento" : MSGCAMPO="Condi‡„o de Pagamento: Vista/Prazo (V/P)"
       Case Field()="Ativo"                 : MSGCAMPO="Ativo/Inativo (A/I)" 
     EndSwitch

     Prompt TECLA
     SetaCorRegistro("Editando")
      Wait Field
           Message MSGCAMPO
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

      Switch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="F1" :
           Switch
             Case Field()="Forma de Pagamento" : ConsultaF1()
             Case Field()="Descricao Operacao" : If [Tipo]="P" Or [Tipo]="T"
                                                    Then Seleciona_Opcoes("Cartao","F1_Temp")
                                                 EndIf   
             Case Field()="Tipo"               :
                  Echo Normal
                  Echo Off
                  ShowPopup " Tipo " CENTERED
                   "~D~inheiro         ": " Dinheiro            " : "D",
                   "~C~heque           ": " Cheque              " : "C",
                   "Con~s~ulta Cheque  ": " Consulta Cheque     " : "S", 
                   "~P~OS - Cart„o     ": " CartÆo              " : "P",  
                   "~T~EF              ": "TEF                  " : "T",
                   "Cart~e~ira         ": " Carteira            " : "E",
                   "~T~roco            ": " Troco               " : "X",
                   "~O~utros           ": " Outros              " : "O",
                   "~C~ancelar         ": " Cancelar a Opera‡„o " : "CANCELAR"
                  EndMenu
                  To MenuVar
                  Echo Off

                 If MenuVar="CANCELAR" or MenuVar="Esc"
                     Then Loop
                     Else []=MenuVar
                 EndIf      
           EndSwitch                           
      Case Retval="ESC":
           If Field()="Tipo"
              Then If QuerDesfazer("")
                      Then If CHAVE=1
                              Then Del
                              Else Undo
                           EndIf
                           CHAVE=9
                           QuitLoop
                   Endif
              Else Left
           EndIf
      Case Retval="ENTER":
           Switch
                Case Field()="Tipo":
                     Switch
                      Case IsBlank([]): Loop
                      Case []="D" or []="E" :
                           Mensagem("Nesta rela‡Æo ‚ permitido apenas 1(uma) Forma de Pagamento do tipo // DINHEIRO (D) ou CARTEIRA (E) !")
                           Right
                      OtherWise: Right     
                     EndSwitch
                Case Field()="Descricao Operacao":
                     If IsBlank([])
                      Then Loop
                      Else VSDGNOMECARTAO=[]
                           If [Tipo]="P"
                              Then GetRecord "\\Sistemas\\Cadastro\\Cartoes" VSDGNOMECARTAO To REG_CARTAO
                                   If Not RetVal
                                      Then Mensagem("Cart„o n„o Cadastrado !")
                                      Else Right
                                   EndIf
                              Else Right     
                           EndIf
                     EndIf                      
                Case Field()="Descricao ECF":
                     If IsBlank([])
                      Then Loop
                     EndIf 
                     Right     
                Case Field()="Condicao de Pagamento":
                     If []="V" or []="P"
                      Then Right
                      Else Loop
                     EndIf
                Case Field()="Numero Maximo de Parcelas":
                     If IsBlank([])
                      Then []="0" 
                     EndIf
                     []=ALINH()
                     Right
                Case Field()="Forma de Pagamento":
                     If IsBlank([])
                      Then Loop
                      Else Right
                     EndIf       
                Case Field()="Ativo":
                     QuitLoop     
                OtherWise:
                     Right
           EndSwitch
      Case Retval="DEL":
           If CHAVE=0
              Then Moveto [Descricao Operacao]
                   If []="DINHEIRO" or []="TROCO"
                      Then Mensagem("Forma de Pagamento Obrigat¢ria! // NÆo ‚ possiv‚l sua exclus„o.")
                      QuitLoop 
                   EndIf   
              Else If QuerExcluir("")
                      Then Del
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         
Endproc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

{Ask} {\\Sistemas\\Cadastro\\Cartoes}
Moveto [Nome do Cartao] Check
Do_it!
Monta_Opcoes("Cartao","F1_Temp")


View NOWINDOW "\\Sistemas\\Cadastro\\Cartoes"
CoEdit "OPAF_FP"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9 Then QuitLoop EndIf
  If CHAVE=8 Then Chave() EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
