;** Trvender ***********************************************************************
;*  Manutencao do Tabela de Descontos e Comissoes                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 13/08/1999 por Anivel Augusto Rodrigues
;Ultima Alteracao: 18/04/2004 por Anivel Augusto Rodrigues
;Motivo Alteracao: Novo Layout
;Ultima Alteracao: 04/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas     
;Ultima Alteracao: 17/08/2012 por Kamila Gomes
;Motivo Alteracao: Ajustes Novos forms e funcionalidades
;Ultima Alteracao: 18/02/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro()
;Ultima Alteracao: 02/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ESC no CHAVE()
;Ultima Alteracao: 20/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagens
;Ultima Alteracao: 29/04/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes no filtro ao buscar a empresa -> Monta_Opcoes("Empresas","")         

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  Moveto [Codigo da Empresa]
  End
  If OPCAO_FORM="F"
     Then Down Down
     Else PgDn 
  EndIf

  Moveto [Codigo da Empresa]
  SetaCorRegistro("Editar")
  While True
    Finalizar=False
    TECLA=""
    If Field()="Codigo da Empresa"  Or
       Field()="Codigo da Tabela"   Or
       Field()="Codigo do Representante" 
       Then Tecla=Tecla+"F1=Tabelas  "
    EndIf
    MSGCAMPO=""
    If Field()="Codigo do Representante" 
       Then MSGCAMPO="Vendedor/Representante=0000 -> regra igual para todos "
    EndIf
    If Field()="Codigo da Tabela" 
       Then MSGCAMPO="Tabela=000000 -> regra igual para todas "
    EndIf
    If Field()="Codigo da Empresa"      
       Then Monta_Opcoes("Empresas","")     
    EndIf
    
    AguardaTeclasPadrao() 
    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F1":
             If Field()="Codigo da Tabela"  Or
                Field()="Codigo do Representante"
                Then CONSULTAF1()
             Endif
             If Field()="Codigo da Empresa"         
                Then Seleciona_Opcoes("Empresas","CR")
             Endif
      Case RetVal="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="1"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVE=5
           Return
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             Finalizar=False
             If OPCAO_FORM="F"
                 Then PAGINA("Trvender","MR")
                 Else PAGINA("Trvender","MT")
             EndIf
             If EDITAR="S"
                Then CHAVE=0
                     PickForm "1"
                     Controla_EdicaoC()
                 Else If EXCLUIR="S"
                         Then If QuerExcluir("deste Registro")
                                 Then PickForm "1"
                                      EXCLUSAOM()
                                 Else UnLockRecord
                              EndIf
                              If OPCAO_FORM="1"
                                 Then PickForm "1"
                                 Else PickForm "F"
                              EndIf
                         Else QuitLoop
                    EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC": 
           Switch
           Case Field()="Codigo da Empresa":
                CHAVE=9
                Del
                Return
           Case Field()="Codigo da Tabela"          : Moveto [Codigo da Empresa]
           Case Field()="Codigo do Representante"   : Moveto [Codigo da Tabela ]
           OtherWise:
                Left
           EndSwitch 
                   
      Case Retval="ENTER": 
          
         If IsBlank([])
            Then Loop
         EndIf
         Switch
            Case Field()="Codigo da Empresa":
                 If Not Checa_Opcoes("Empresas",[])
                    Then Mensagem("Empresa inv lida !")
                         Loop
                 EndIf    
                 EMPRESA=[Codigo da Empresa]
                 Moveto [Codigo da Tabela] 
            Case Field()="Codigo da Tabela":
                 TABELA  =[Codigo da Tabela]
                 Moveto [Codigo do Representante]
            Case Field()="Codigo do Representante":
                 REPRESEN=[Codigo do Representante] 
                 Del
                 
                 If OPCAO_FORM="F"
                    Then PickForm "1"
                 EndIf
                 Locate EMPRESA, TABELA, REPRESEN                 
                 If Retval
                    Then CHAVE=0
                    Else CHAVE=1
                         End          
                         Down
                         Moveto [Codigo do Representante]
                         PgDn 
                         [Codigo da Empresa      ]=EMPRESA
                         [Codigo da Tabela       ]=TABELA
                         [Codigo do Representante]=REPRESEN
                 EndIf
                 
                 If Not IsLockRecord() 
                    Then Return
                 EndIf     
                 
                 If CHAVE=1
                    Then Del
                 EndIf
                 If OPCAO_FORM="F"
                    Then PickForm "F"
                 EndIf
                 QuitLoop
         EndSwitch
       EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVEP()
Moveto "Trcompdd"
While True
  Moveto [Composicao de Dias]
  End
  Down
  LockRecord
  
  Atualiza()
  del
  End
  Down

  SetaCorRegistro("Editar")
  While true

   MSGCAMPO="Informe: TODAS; A VISTA; A PRAZO; ou informe a especˇfica ! "

   TECLA=""
   AguardaTeclasPadraoIt()

   Switch
    Case RetVal=-33  : SemFuncoes()
    Case RetVal=-94  : MsgTeclasPadrao()
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA2("Trcompdd")
           If EDITAR="S"
               Then CHAVEP=0
                    Controla_EdicaoP()
                    If Finalizar Then QuitLoop EndIf
               Else If EXCLUIR="S"
                       Then If QuerExcluir("deste Registro")
                               Then EXCLUSAOP()
                               Else UnLockRecord
                            EndIf
                       Else QuitLoop
                  EndIf
           EndIf
           SetaPosForm()
         EndWhile
         If Finalizar 
            Then CHAVEP=9
                 Return 
         EndIf
         QuitLoop
    Case Retval="ESC":
         If CHAVE=1
            Then ExclusaoM()
            Else Undo
         EndIf
         Del
         CHAVEP=9
         Return
    Case Retval="PGDN":
         Del
         CHAVEP=9
         Return
    Case Retval="ENTER":
         If IsBlank([])
            Then Loop
         EndIf
         COMPDIAS   = []
         Del
         Locate COMPDIAS
         If RetVal
            Then CHAVEP = 0
            Else CHAVEP = 1
                 End Down
                 [Composicao de Dias   ] = COMPDIAS
         EndIf
         Atualiza()
         If IsLockRecord()
            Then QuitLoop
         EndIf
         Locate COMPDIAS
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVEI()

Moveto "TrDescto"
While True
  Moveto [Taxa de Desconto]
  End
  Down

  SetaCorRegistro("Editar")
  While true

   MSGCAMPO=""
   TECLA=""
   AguardaTeclasPadraoIt()

   Switch
    Case RetVal=-33  : SemFuncoes()
    Case RetVal=-94  : MsgTeclasPadrao()
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("TrDescto","MR")
           If EDITAR="S"
               Then CHAVEI=0
                    CODIGO=[Taxa de Desconto]
                    Return
               Else If EXCLUIR="S"
                       Then If QuerExcluir("deste Registro")
                               Then Del
                               Else UnLockRecord
                            EndIf
                       Else QuitLoop
                  EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         Del
         CHAVEI=9
         Return
    Case Retval="PGDN":
         Del
         CHAVEI=9
         Finalizar=True
         Return
    Case Retval="ENTER":
         If IsBlank([])
            Then Loop
         EndIf
         CODIGO  = []
         Del
         Locate CODIGO
         If RetVal
            Then CHAVEI = 0
            Else CHAVEI = 1
                 End Down
                 [Taxa de Desconto   ] = CODIGO
         EndIf
         If IsLockRecord()
            Then QuitLoop
         EndIf
         Locate CODIGO
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITAI()
Moveto [Taxa de Comissao Normal]

While True

  TECLA=" Esc=Retornar  "

  If CHAVEI=0
     Then TECLA=TECLA+"Del=Excluir"
  EndIf

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

  Switch
  Case Retval="ESC":
       If Field()="Taxa de Comissao Normal"
          Then If CHAVEI=1
                  Then Del
                  Else If RecordStatus("Modified")
                          Then Undo
                       EndIf
               EndIf
               CHAVEI=9
               QuitLoop
          Else Left
       EndIf
  Case Retval="ENTER":
       If Field() = "Taxa de Comissao Promocao"
          Then QuitLoop
          Else Right
       EndIf
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEI=0
          Then CONFIRMA()
               If OK="S"
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAOM()
Aguarde("Excluindo")
Moveto "Trcompdd"
While RecordStatus("New")=False
  EXCLUSAOP()
EndWhile
Moveto "Trvender"
Del
LimpAguarde()
EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAOP()
Aguarde("Excluindo")
Atualiza()
Moveto "TrDescto"
While RecordStatus("New")=False
  Del
EndWhile
Moveto "Trcompdd"
Del
LimpAguarde()
EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc Atualiza()
Private vrcampo

If Table()="Trcompdd"
   Then 
   
       vrcampo=[Trcompdd->Composicao de Dias]
       Moveto "Trvender"
       [Composicao de Dias]=vrcampo
       Moveto "Trcompdd"
        
EndIf
EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc waitproc2(Triggertype, EventRecord, CycleNumber)
private vr

vr=0
Switch
  Case TriggerType="ARRIVEROW":
       Atualiza()
  Case TriggerType="EVENT":
       Switch
         Case EventRecord["KEYCODE"]=ASC("F1"):
              vr=1
         Case EventRecord["KEYCODE"]=ASC("ESC"):
              vr=2
         Case EventRecord["KEYCODE"]=ASC("ZOOM"):
              PESQUISA()
              Atualiza()
              vr=1
         Case EventRecord["KEYCODE"]=ASC("ZOOMNEXT"):
              PESQUISACON()
              Atualiza()
              vr=1
         Case EventRecord["KEYCODE"]=ASC("DEL"):
              If Not IsLockRecord()
                 Then EXCLUIR="S"
                      vr=2
              EndIf
         Case EventRecord["KEYCODE"]=ASC("ENTER") Or
              EventRecord["KEYCODE"]=ASC("F9") Or
              EventRecord["KEYCODE"]=ASC("F2"):
              If EventRecord["KEYCODE"]=ASC("ENTER") And Tipo="MT"
                 Then Return 1
              EndIf
              If Not IsLockRecord()
                 Then EDITAR="S"
                      vr=2
              EndIf
         Case EventRecord["KEYCODE"]=ASC("DOWN"):
              If Tipo = "MR" And AtLast()
                 Then If Table()="Trcompdd"
                         Then vr=2
                      EndIf
              EndIf
       EndSwitch
EndSwitch
Return vr
EndProc

;*******************************************************************************
;*  ROTINA PARA PAGINACAO DE TABELA EM FORM                                    *
;*******************************************************************************
Proc Pagina2(TabIda)
Private TABIDA,TIPO

Tipo="MR"

SEMREGISTRO=False

Mouse Show
If RecordStatus("New")=True
   Then Del
EndIf

tpform =TIPO
EDITAR ="N"
EXCLUIR="N"
If RecordStatus("New")
   Then If SubStr(TIPO,1,2)="MT"
           Then MENSAGEM("Tabela sem Registros !")
        EndIf   
        Return
EndIf

Moveto TABIDA
If SubStr(TIPO,1,2)="MR"
   Then Switch
          Case RetVal="F7" or RetVal="HOME":
               Home
          Case RetVal="PGUP":
               PgUp
        EndSwitch
   Else Switch
          Case RetVal="F7" or RetVal="HOME":
               Home
        EndSwitch
EndIf
TABIDA=Table()

Atualiza()

ImageRights ReadOnly
SetaCorRegistro("Paginar")

msgcampo =""
Prompt ""
SpeedBar "["+Chr(17)+"]"     :"ESC",
         "~Alterar~"         :"F9",
         "~Excluir~"         :"DEL",
         "~Localizar~"       :"ZOOM",
         "~Loc~|"+Chr(16)    :"ZOOMNEXT",
         "~?~"               :-94,
         "|"+Chr(17)         :"HOME",
         Chr(17)             :"PGUP",
         Chr(16)             :"PGDN",
         Chr(16)+"|"         :"END"

FIELD_LOCATE=Field()
TEXTO_LOCATE=""

wait workspace
  proc "waitproc2"
  trigger "ALL"
  Message "ALL"
  Key "ALL"
endwait
ClearSpeedBar

If Table()<>TABIDA
   Then Moveto TABIDA
EndIf   
If EDITAR="S" Or EXCLUIR="S"
   Then PegaPosForm()
EndIf
SetaCorRegistro("Editar")
ImageRights

EndProc




;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoP()

While True
  CHAVEI()
  If CHAVEI=9   Then QuitLoop EndIf
  DIGITAI()
EndWhile
SetaCorRegistro("Padrao")

Moveto "Trcompdd"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
SetaCorRegistro("Padrao")
While Not Finalizar
  CHAVEP()
  If CHAVEP=9
     Then QuitLoop
     Else Controla_EdicaoP()
  EndIf
EndWhile
Moveto "Trvender"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc

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

CoEdit "Trvender"
PickForm "1"
Moveto "Trcompdd"  SetaCorRegistro("Padrao")
Moveto "Trdescto"  SetaCorRegistro("Padrao")

Moveto "Trvender"
PickForm "F"
OPCAO_FORM="F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  If CHAVE=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile

Do_It!
ClearAll
Release Vars All
Release Procs All

