;** TbPreco ********************************************************************
;*  Manutencao da Tabela de Preco                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 25/04/1997 por Anivel Augusto Rodrigues
;Ultima Alteracao: 23/03/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao de Rotinas para Copia Tabela/Cliente
;Ultima Alteracao: 28/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes itens 0185
;Ultima Alteracao: 21/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Contrala_Edicao()
;Ultima Alteracao: 10/07/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes INSERI()
;Ultima Alteracao: 31/07/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Clientes 0003,0200
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 09/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Funcoes
;Ultima Alteracao: 15/09/2010 por Karina Andrade
;Motivo Alteracao: Ajustes codigo cliente confec‡Æo
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 30/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Isabela Garcia Nova Codifica‡Æo
;Ultima Alteracao: 12/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novas fun‡äes para confec‡äes 
;Ultima Alteracao: 30/05/2011 por Bruno Carvalho
;Motivo Alteracao: Adicionado Rotina TLMK para VisePedidos
;Ultima Alteracao: 10/06/2011 por Karina Andrade
;Motivo Alteracao: Add Tipo produto P sem grade p/ Confeccao,Proc Inseri()
;Ultima Alteracao: 15/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustres Inseri() p/ Confeccao
;Ultima Alteracao: 25/01/2013 por Kamila Gomes
;Motivo Alteracao: Ajustres ALINH()
;Ultima Alteracao: 01/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SetaCorRegistro("Editando") 
;Ultima Alteracao: 24/06/2013 por Bruno Carvalho
;Motivo Alteracao: Add mensagem personalizada ao excluir a tabela de pre‡o "MsgExcluir()"
;Ultima Alteracao: 15/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao excluir tabela de pre‡o  
;Ultima Alteracao: 15/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes na inser‡Æo de itens inativos
;Ultima Alteracao: 23/06/2014 por Luis Gustavo
;Motivo Alteracao: Inclusao de Rotina para Copiar Tabela/Representante
;Ultima Alteracao: 28/08/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado controle p/ quando [Usa_TLMK] for igual a "F"
;Ultima Alteracao: 01/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Fun‡oes, setcorRegistro 
;Ultima Alteracao: 13/04/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro p/ incluir novos itens e op‡Æo para copiar pre‡os de cliente para outros cliente
;Ultima Alteracao: 26/04/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na op‡Æo que copia pre‡os de cliente para outros cliente
;Ultima Alteracao: 20/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro novos itens tipo do item
;Ultima Alteracao: 14/06/2017 por Rafael Matos
;Motivo Alteracao: Ajustes Copia_Itens_TbPreco()
;Ultima Alteracao: 29/06/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo p/ ser inserir ou nÆo o pre‡o ao gerar automaticamente a tabela de pre‡o
;Ultima Alteracao: 23/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro novos itens tipo do item
;Ultima Alteracao: 23/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes MSGCAMPO e TECLA
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 28/06/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustado proc EXCLUSAO p/ nÆo gerar log de itens excluidos quando for excluir a cabe‡a do registro
;Ultima Alteracao: 08/08/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes GRAVA_LOG
 
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()   
While True
  End
  Moveto [Codigo da Tabela]

  If OPCAO_FORM="1"
    Then Down
    Else PgDn PgDn
  EndIf
  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()

  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    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
           If OPCAO_FORM="1"
              Then PAGINA("TbPrCab","MR")
              Else PAGINA("TbPrCab","MT")
           EndIf
           TABELA=[Codigo da Tabela]
           If EDITAR="S"
              Then CHAVE=0
                   If [Usa_TLMK]="F" 
                        Then Mensagem("Tabela de pre‡o pertence a confec‡„o!//Pre‡os espec¡ficos por Referˆncia/Tamanho!")
                             Loop
                   EndIf 
                   If OPCAO_FORM="1"
                      Then PickForm "F"
                   EndIf
                   Controla_EdicaoC()
              Else If EXCLUIR="S"
                      Then If Checa_Supervisor()
                              Then If MsgExcluir()
                                      Then If OK="S"
                                              Then If OPCAO_FORM="1"
                                                      Then PickForm "F"
                                                   EndIf
                                                   EXCLUSAO("Cabeca")
                                                   If OPCAO_FORM="1"
                                                      Then PickForm "1"
                                                   EndIf
                                              Else UnLockRecord
                                           EndIf
                                   EndIf           
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVE=9
         Del
         Return
    Case Retval="ENTER":  
         If IsBlank([])
            Then Loop
         EndIf
         []=ALINH()
         TABELA=[]
         Del
         If OPCAO_FORM="1"
            Then PickForm "F"
         EndIf
         Locate TABELA
         If Retval
            Then CHAVE=0
                 If [Usa_TLMK]="F" 
                    Then Mensagem("Tabela de pre‡o pertence a confec‡„o!//Pre‡os espec¡ficos por Referˆncia/Tamanho!")
                         PickForm "1"
                         QuitLoop
                 EndIf 
            Else CHAVE=1
                 End
                 PgDn PgDn
                 Moveto [Codigo da Tabela]
                 [Codigo da Tabela]=TABELA
         EndIf
         If IsLockRecord()
            Then If OPCAO_FORM="1"
                    Then PickForm "1"
                 EndIf
                 QuitLoop
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (Chave)

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc DIGITA()   
Moveto "Tbprite" SetaCorRegistro("Padrao")

Moveto "TbprCab" SetaCorRegistro("Editar")
OpContinuar="Itens"
Moveto [Descricao da Tabela]
If CHAVE=1
   Then [Ativa]="S"
EndIf
While True

  TECLA=" Esc=Retornar  "

  If CHAVE=0
     Then TECLA=TECLA + "Del=Excluir  "
     Else TECLA=TECLA + "             "
  EndIf
  TECLA=TECLA + "Alt+F=Fun‡”es  "

  MSGCAMPO=Field()
  Switch
     Case Field()="Usa_TLMK":
          MSGCAMPO="Utiliza Sistema Windows ? Sim/N„o"
     Case Field()="Ativa":
          MSGCAMPO="Tabela Ativa: Sim/N„o"
     OtherWise:
  EndSwitch
  Prompt TECLA

  Wait Field
       Until "ESC","ENTER","DEL","F5","F3","F4","F8","FIELDVIEW","F35","F5","F9",
                 -33
  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
             "F3  ~N~ovos Itens       " : " Inserir novos itens do cadastro nesta tablea"   : "F3",
             "F4  ~C~opiar            " : " Copiar Tabela Ativa para outra  "   : "F4",
             "F5  Rea~j~ustar         " : " Reajustar Pre‡os em percentual  "   : "F5",
             "F8  Cli~e~nte           " : " Tabela de Pre‡os por Cliente    "   : "F8",
             "F9  ~R~epresentante     " : " Tabela de Pre‡os por Representante" : "F9",
             "~C~ancelar              " : " Cancelar a Opera‡„o             "   : "CANCELAR"
          EndMenu
          To MenuVar

          echo off
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf

          RetVal=MenuVar
  EndIf

  Switch
    Case Retval="FIELDVIEW" or Retval="F35":
         EDITFIELD()
    Case RetVal="F3":
         if INSERI()
            then CHAVE=0
         endif   
    Case RetVal="F4":
         If CHAVE=0
            Then COPIA()
         EndIf
    Case RetVal="F5":
         If CHAVE=0
            Then CABECA=1
                 REAJUSTE()
         EndIf
    Case RetVal="F8":
         If IsBlank([Descricao da Tabela])
            Then Loop
         EndIf
         If IsBlank([]) Then []="S" EndIf

         OpContinuar="Cliente"
         QuitLoop
   Case RetVal="F9":
         If IsBlank([Descricao da Tabela])
            Then Loop
         EndIf
         If IsBlank([]) Then []="S" EndIf

         OpContinuar="Representante"
         QuitLoop

    Case RetVal="DEL":
         If CHAVE=0
            Then If Checa_Supervisor()
                    Then If MsgExcluir()
                            Then EXCLUSAO("Cabeca")
                                 CHAVE=9
                                 QuitLoop
                         EndIf
                 EndIf        
         Endif
    Case RetVal="ESC":
         Switch
           Case Field()="Descricao da Tabela":
                If CHAVE=1
                   Then Del
                   Else If RecordStatus("Modified")
                           Then Undo
                        EndIf
                EndIf
                CHAVE=9
                QuitLoop
           Case Field()="Usa_TLMK":
                Moveto [Descricao da Tabela]
           Case Field()="Ativa":
                Moveto [Usa_TLMK]
           OtherWise:
                Left
         EndSwitch
    Case RetVal="ENTER":
         Switch
           Case Field()="Descricao da Tabela":
                If IsBlank([Descricao da Tabela])
                   Then Loop
                EndIf
                Moveto [Usa_TLMK]
           Case Field()="Usa_TLMK":
                If IsBlank([Usa_TLMK])
                   Then [Usa_TLMK]="N"
                EndIf
                [Usa_TLMK]=Upper([])
                Moveto [Ativa]
           Case Field()="Ativa":
                If IsBlank([]) Then []="S" EndIf
                If []="N"
                   Then ConfGeral("Deseja Realmente Desativar esta Tabela de Pre‡o ?")
                        If OK="S"
                           Then CHAVE=9
                                QuitLoop
                           Else Loop
                        EndIf
                   Else QuitLoop
                EndIf
           OtherWise:
                Right
         EndSwitch
  EndSwitch
EndWhile
EndProc   ; (Digita)

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

Moveto [Codigo do Item]
End
Down
While true

      SetaCorRegistro("Editar")
      TECLA=" Esc=Retornar  F1=Tabelas  "
      MSGCAMPO=""

      Prompt TECLA + "F7=Paginar  F6=C.Pagto  F9=Editar     PgDn=Finalizar  "

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","F1","PGDN","F9","F6"

      Switch
      Case RetVal="F1":
           If Field()="Codigo do Item"
              Then Moveto [Lookup_Item]
                   CONSULTAF1()
                   [Codigo do Item]=[]
                   []=""
                   Moveto [Codigo do Item]
           EndIf
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             PAGINA("Tbprite","MR")
             If EDITAR="S"
                Then CHAVEI=0
                     CODIGO=[Codigo do Item]
                     Controla_EdicaoI()
                Else If EXCLUIR="S"
                        Then CONFIRMA()
                             If OK="S"
                                Then Grava_LogEx("Item da Tabela de Preco")
                                     DEL
                                Else UnLockRecord
                             EndIf
                        Else Moveto [Codigo do Item]
                             End Down
                             QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="F6":
           Del
           CHAVEI=9
           OpContinuar="CPagto"
           QuitLoop
      Case Retval="F9":
           Del
           EDITAR()
           End Down
           Moveto [Codigo do Item]
      Case Retval="ESC":
           Del
           CHAVEI=9
           Continuar=False
           QuitLoop
      Case Retval="PGDN":
           Del
           CHAVEI=9
           Continuar=False
           Digitar  =False
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([]) Then Loop EndIf
           CODIGO=AlinhM([],10)
           Moveto [Lookup_Item]
           Ativa_Lookup()
           Moveto [Codigo do Item]
           Locate CODIGO
           If Not RetVal
              Then Mensagem("Codigo do Item Invalido !")
                   KeyPress "ESC"
                   Moveto [Codigo do Item]
                   Loop
           EndIf
           KeyPress "ESC"
           Moveto [Codigo do Item]
           Del
           Locate TABELA, CODIGO
           If RetVal
              Then CHAVEI = 0
              Else CHAVEI = 1
                   End Down
                   [Codigo do Item ] = CODIGO
                   [Lookup_Item    ] = CODIGO
                   [Lookup_Item    ] = ""
           EndIf
           If IsLockRecord()
              Then End Down
                   Moveto [Codigo do Item]
                   Loop
           EndIf
           QuitLoop
      EndSwitch
EndWhile
EndProc  ; (ChaveI)


;*******************************************************************************
;* Rotina para Localizar Registro Cliente                                      *
;*******************************************************************************
Proc CHAVECLI() 
While True
  Moveto [Codigo]
  End
  Down
  SetaCorRegistro("Editar")
  While True

      TECLA=" Esc=Retornar  F1=Tabelas  F7=Paginar                            PgDn=Finalizar"
      MSGCAMPO=""

      Prompt TECLA 
      
      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","F1","PGDN"

      Switch
      Case RetVal="F1":
           If Field()="Codigo"
              Then CONSULTAF1()
           EndIf
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             PAGINA("Tbprcli","MR")
             If EDITAR="S"
                Then CHAVECLI=0
                     CODCLI=[Codigo]
                     Controla_EdicaoCli()
                Else If EXCLUIR="S"
                        Then CONFIRMA()
                             If OK="S"
                                Then CODCLI=[Codigo]
                                     Exclusao("Cliente")
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           Del
           CHAVECLI=9
           Continuar=False
           Return
      Case Retval="PGDN":
           Del
           CHAVECLI=9
           Continuar=False
           Digitar  =False
           Return
      Case Retval="ENTER":
           If IsBlank([]) Then Loop EndIf
           CODCLI=[Codigo]
           Del
           Locate TABELA, CODCLI
           If RetVal
              Then CHAVECLI = 0
              Else CHAVECLI = 1
                   End Down
                   [Codigo da Tabela] = TABELA
                   [Codigo          ] = CODCLI
           EndIf
           If IsLockRecord()
              Then QuitLoop
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveCli)

;*******************************************************************************
;* Rotina para Localizar Registro Representante                                *
;*******************************************************************************
Proc CHAVEREP()
While true
  Moveto [Codigo do Representante]
  End
  Down
  SetaCorRegistro("Editar")
  While true

    TECLA=" Esc=Retornar  F1=Tabelas  F7=Paginar                            PgDn=Finalizar"  
    MSGCAMPO=""

    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","F1","PGDN"

    Switch
    Case RetVal="F1":
         If Field()="Codigo do Representante"
            Then CONSULTAF1()
         EndIf
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("Tbprrep","MR")
           If EDITAR="S"
              Then CHAVEREP=0
                   CODREP=[Codigo do Representante]
                   Controla_EdicaoREP()
              Else If EXCLUIR="S"
                      Then CONFIRMA()
                           If OK="S"
                              Then CODREP=[Codigo do Representante]
                                   Exclusao("Representante")
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         Del
         CHAVEREP=9
         Continuar=False
         Return
    Case Retval="PGDN":
         Del
         CHAVEREP=9
         Continuar=False
         Digitar  =False
         Return
    Case Retval="ENTER":
         If IsBlank([]) Then Loop EndIf
         CODREP=[Codigo do Representante]
         Del
         Locate TABELA, CODREP
         If RetVal
            Then CHAVEREP = 0
            Else CHAVEREP = 1
                 End Down
                 [Codigo da Tabela       ] = TABELA
                 [Codigo do Representante] = CODREP
         EndIf
         If IsLockRecord()
            Then QuitLoop
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveRep)

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

While true
  Moveto [Codigo do Item]
  End
  Down
  SetaCorRegistro("Editar")
  While true

      TECLA=" Esc=Retornar  F1=Tabelas  F7=Paginar  Alt+F=Fun‡”es             PgDn=Finalizar"
      MSGCAMPO=""

      Prompt TECLA

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","F1","PGDN","F9","F4","F5",-33


      If RetVal=-33 And OpContinuar="Cliente"
         Then Echo Normal
              Echo Off
							ShowPopup " Fun‡”es " CENTERED
                 "F4  ~C~opiar            " : " Copiar Tabela para o Cliente    "   : "F4",
                 "F5  Rea~j~ustar         " : " Reajustar Pre‡os para p Cliente "   : "F5",
                 "F9  ~E~ditar            " : " Editar Itens                    "   : "F9",
                 "~C~ancelar              " : " Cancelar a Opera‡„o             "   : "CANCELAR"
              EndMenu
              To MenuVar

              echo off
              If MenuVar="CANCELAR" or MenuVar="Esc"
                 Then Loop
              EndIf

              RetVal=MenuVar
      EndIf
			If RetVal=-33 And OpContinuar="Representante"
         Then Echo Normal
              Echo Off
							ShowPopup " Fun‡”es " CENTERED
							   "F4  ~C~opiar            " : " Copiar Tabela para o Representante  "   : "F4",
                 "F5  Rea~j~ustar         " : " Reajustar Pre‡os para Representante "   : "F5",
                 "F9  ~E~ditar            " : " Editar Itens                        "   : "F9",
                 "~C~ancelar              " : " Cancelar a Opera‡„o                 "   : "CANCELAR"
              EndMenu
              To MenuVar

              echo off
              If MenuVar="CANCELAR" or MenuVar="Esc"
                 Then Loop
              EndIf

              RetVal=MenuVar
      EndIf

      Switch
			Case RetVal="F4" And OpContinuar="Cliente":
           Echo Normal
           Echo Off
           ShowPopup " Op‡”es " CENTERED
               "Copiar Itens da Tabela de Pre‡o" : " Processo para copiar todos os itens da tabela de pre‡o para este cliente" : "ITEM_PR",
               "Copiar Itens de Clientes"        : " Processo para copiar todos os itens do cliente a ser informado"           : "ITEM_CLI",
               Separator,
               "~S~air"                   : " Ignorar op‡äes"                         :"Cancela"
           EndMenu
           To Opcaoc
           echo off

           If Not Retval Or Opcaoc="Cancela" or Opcaoc="Esc"
              Then Loop
           EndIf
           
           If Opcaoc="ITEM_PR"
              Then ConfGeral("Confirma a copia dos Itens da Tabela para este Cliente ?")
                   If Ok="S"
                      Then Del
                           Copia_Itens_TbPreco()
                           QuitLoop
                   EndIf
           EndIf
           
           If Opcaoc="ITEM_CLI"
              Then If Copia_Itens_Clientes()
                      Then QuitLoop
                   EndIf
           EndIf
           
      Case RetVal="F4" And OpContinuar="Representante":
           Echo Normal
           Echo Off
           ShowPopup " Op‡”es " CENTERED
               "Copiar Itens da Tabela de Pre‡o" : " Processo para copiar todos os itens da tabela de pre‡o para este Representante" : "ITEM_PR",
               "Copiar Itens de Representantes"  : " Processo para copiar todos os itens do representante a ser informado"           : "ITEM_REP",
               Separator,
               "~S~air"                   : " Ignorar op‡äes"                         :"Cancela"
           EndMenu
           To Opcaoc
           echo off

           If Not Retval Or Opcaoc="Cancela" or Opcaoc="Esc"
              Then Loop
           EndIf
           
           If Opcaoc="ITEM_PR"
              Then ConfGeral("Confirma a copia dos Itens da Tabela para este Representante ?")
                   If Ok="S"
                      Then Del
                           Copia_Itens_TbPreco()
                           QuitLoop
                   EndIf
           EndIf
           
           If Opcaoc="ITEM_REP"
              Then If Copia_Itens_Representantes()
                      Then QuitLoop
                   EndIf
           EndIf    
      Case RetVal="F5":
           Del
           CABECA=1
           REAJUSTE()
           QuitLoop
      Case RetVal="F1":
           If Field()="Codigo do Item"
              Then Moveto [Lookup_Item]
                   CONSULTAF1()
                   [Codigo do Item]=[]
                   []=""
                   Moveto [Codigo do Item]
           EndIf
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             If OpContinuar="Cliente"
                Then PAGINA("Tbprcit","MR")
                Else PAGINA("Tbprrit","MR")
             Endif
             If EDITAR="S"
                Then CHAVEI=0
                     CODIGO=[Codigo do Item]
                     Controla_EdicaoI()
                Else If EXCLUIR="S"
                        Then CONFIRMA()
                             If OK="S"
                                Then DEL
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="F9":
           Del
           EDITAR()
           QuitLoop
      Case Retval="ESC":
           Del
           CHAVEI=9
           Return
      Case Retval="PGDN":
           Del
           CHAVEI=9
           TabCliente=False
           TabRepres =False
           Continuar=False
           Digitar  =False
           Return
      Case Retval="ENTER":
           If IsBlank([]) Then Loop EndIf
           CODIGO=AlinhM([],10)
           Moveto [Lookup_Item]
           Ativa_Lookup()
           Moveto [Codigo do Item]
           Locate CODIGO
           If Not RetVal
              Then Mensagem("Codigo do Item Invalido !")
                   KeyPress "ESC"
                   Moveto [Codigo do Item]
                   Loop
           EndIf
           KeyPress "ESC"
           Moveto [Codigo do Item]
           Del
           If OpContinuar="Cliente"
              Then Locate TABELA, CODCLI, CODIGO
              Else Locate TABELA, CODREP, CODIGO
           Endif
           If RetVal
              Then CHAVEI = 0
              Else CHAVEI= 1
                   End Down
                   If OpContinuar="Cliente"
                      Then [Codigo         ] = CODCLI
                      Else [Codigo do Representante] = CODREP
                   Endif
                   [Codigo do Item ] = CODIGO
                   [Lookup_Item    ] = CODIGO
                   [Lookup_Item    ] = ""
           EndIf
           If IsLockRecord()
              Then QuitLoop
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveIC)

;*******************************************************************************
;* Rotina para Digitacao dos Precos                                            *
;*******************************************************************************
Proc Editar() 
Home
Moveto [Preco Unitario]

While True

      TECLA=" Esc=Retornar  Del=Excluir   (Use as Teclas p/ mover)"

      MSGCAMPO=Field()
      If Field()="Em Promocao"
         Then MSGCAMPO=MSGCAMPO+": Sim/N„o"
      EndIf

      VRANT=[Preco Unitario]

      Prompt TECLA
      
      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","UP","DOWN","PGUP","PGDN","HOME","END","DEL","RIGHT","LEFT"

      Switch
      Case Retval="ESC":
           CHAVEI=9
           QuitLoop
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           CONFIRMA()
           If OK="S"
              Then DEL
                   If RecordStatus("New")
                      Then QuitLoop
                   EndIf
           EndIf
      OtherWise:
           TECLAPRESS=RetVal

           If VRANT>0 And VRANT<>[Preco Unitario]
              Then [Taxa Ultimo Reajuste]=NDecimal((([Preco Unitario]*100)/VRANT),2)-100
                   [Data Ultimo Reajuste]=Today()

           EndIf

           If TECLAPRESS="LEFT" And Field()="Preco Unitario"
              Then Loop
           EndIf
           If (TECLAPRESS="ENTER" or  TECLAPRESS="RIGHT") And Field()="Taxa Ultimo Reajuste"
              Then Down
                   Moveto [Preco Unitario]
              Else KeyPress TECLAPRESS
            EndIf
            If RecordStatus("New")
               Then QuitLoop
            EndIf
      EndSwitch
EndWhile
EndProc ; (Editar)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITAI() 
VRANT=[Preco Unitario]
Moveto [Preco Unitario]
While True

      TECLA=" Esc=Retornar  "

      If CHAVEI=0
         Then TECLA=TECLA+"Del=Excluir  F5=Reajustar  "
         else TECLA=TECLA+"                           "
      EndIf
      MSGCAMPO=Field()
      If Field()="Em Promocao"
         Then MSGCAMPO=MSGCAMPO+": Sim/N„o"
      EndIf

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

      Switch
      Case Retval="F5":
           If CHAVEI=0
              Then CABECA=0
                   REAJUSTE()
           EndIf
      Case Retval="ESC":
           If Field()="Preco Unitario"
              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() = "Preco Unitario" And []<>VRANT
              Then [Data Ultimo Reajuste]=Today()
                   If VRANT>0
                      Then [Taxa Ultimo Reajuste]=NDecimal((([Preco Unitario]*100)/VRANT),2)-100
                   EndIf
           EndIf
           If Field() = "Taxa Ultimo Reajuste"
              Then QuitLoop
              Else Right
           EndIf
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then CONFIRMA()
                   If OK="S"
                      Then Grava_LogEx("Item da Tabela de Preco")
                           DEL
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc  ; (DigitaI)

;*******************************************************************************
;* Rotina de Entra Reajuste de Preco                                           *
;*******************************************************************************
Proc Muda(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
  Switch
    Case Evento["KeyCode"] = 9: Temp=False
    Case Evento["KeyCode"] = 27:
         Switch
           Case Campo="Codigo1"           : Campo="NO"
           Case Campo="YES" Or Campo="NO" : Campo="Codigo1"
         EndSwitch
         TEMP=False
    Case Evento["KeyCode"] = 13:
    Switch
       Case Campo="Codigo1"               : Campo="YES"
         COD1=ControlValue("Codigo1")
         
       Case Campo="YES"                   : AcceptDialog
       Case Campo="NO"                    : CancelDialog
    EndSwitch
    TEMP=false
  EndSwitch
endif
switch
  case Campo="Codigo1" : MSG_CAMPO="Informe a % desejada (-% = diminuir)" 
endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Principal De Reajuste de Preco                                       *
;*******************************************************************************
Proc ReaJuste()
If CABECA=1
   Then Switch
          Case Table()="Tbprcab": TITULO="Reajusta Itens/Tabela"
          Case Table()="Tbprcit": TITULO="Reajusta Itens/Cliente"
          Case Table()="Tbprrit": TITULO="Reajusta Itens/Representante"
        EndSwitch
   Else TITULO="Reajusta Item"
EndIf

ShowDialog TITULO Proc "Muda"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB"
   @ 05,12   Height 07 Width 72

  Label  @ 00,00 "Percentual" for "Codigo1"
  Accept @ 01,01 Width 13 "N" Tag "Codigo1" to COD1

  Pushbutton @ 03,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 03,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

Enddialog
if retval
   then
        If CABECA=1
           Then 
                Aguarde("Aguarde, reajustando itens")
                
                If Table()="Tbprcab" Then Moveto "TbPrIte" EndIf
                Scan
                   vrnew=Round([Preco Unitario] +([Preco Unitario] * (COD1 / 100)),2)
                   
                   [Preco Unitario      ]=vrnew
                   [Data Ultimo Reajuste]=Today()
                   [Taxa Ultimo Reajuste]=COD1
                EndScan
                Home
                If Table()="Tbprite" Then Moveto "TbPrCab" EndIf
                
                LimpAguarde()
                
           Else 
                vrnew=Round([Preco Unitario] +([Preco Unitario] * (COD1 / 100)),2)
                [Preco Unitario      ]=vrnew
                [Data Ultimo Reajuste]=Today()
                [Taxa Ultimo Reajuste]=COD1
        EndIf
endif
   
EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAO(TIPO)
Private TIPO

Switch
Case TIPO="Cabeca":
     Aguarde("Excluindo")
     Moveto "Tbprite"
     While RecordStatus("New")=False
        Del
     EndWhile

     Moveto "TbprCpg"
     While RecordStatus("New")=False
        Del
     EndWhile

     Moveto "TbprCab"
     UnLockRecord
     PickForm "2"
     Moveto [Codigo da Tabela]
     Locate TABELA

     Moveto "TbprCli"
     While RecordStatus("New")=False
       CODCLI=[Codigo]
       Moveto "TbprCab"
       [Codigo_Cliente]=CODCLI
       Resynckey

       Moveto "TbprCIt"
       While RecordStatus("New")=False
          Del
       EndWhile

       Moveto "TbprCli"
       Del
     EndWhile

     Moveto "TbprCab"
     UnLockRecord
     PickForm "3"
     Moveto [Codigo da Tabela]
     Locate TABELA

     Moveto "TbprRep"
     While RecordStatus("New")=False
       CODREP=[Codigo do Representante]
       Moveto "TbprCab"
       [Codigo_Representante]=CODREP
       Resynckey

       Moveto "TbprRIt"
       While RecordStatus("New")=False
          Del
       EndWhile

       Moveto "TbprRep"
       Del
     EndWhile

     Moveto "TbprCab"
     UnLockRecord
     PickForm "1"
     Moveto [Codigo da Tabela]
     Locate TABELA
     Grava_LogEx("Tabela de Preco") 
     Del
     LimpAguarde()
Case TIPO="Cliente":
     Aguarde("Excluindo")
     Moveto "TbprCab"
     [Codigo_Cliente]=CODCLI
     Resynckey

     Moveto "TbprCIt"
     While RecordStatus("New")=False
        Del
     EndWhile

     Moveto "TbprCli"
     Moveto [Codigo]
     Locate TABELA, CODCLI
     Del
     LimpAguarde()
Case TIPO="Representante":
     Aguarde("Excluindo")
     Moveto "TbprCab"
     [Codigo_Representante]=CODREP
     Resynckey

     Moveto "TbprrIt"
     While RecordStatus("New")=False
        Del
     EndWhile

     Moveto "TbprRep"
     Moveto [Codigo do Representante]
     Locate TABELA, CODREP
     Del
     LimpAguarde()
Case TIPO="Item":
     Grava_LogEx("Item da Tabela de Preco")
     Del
EndSwitch
EndProc

;Procedimento para copiar a tabela ativa para outra

;*******************************************************************************
;* Rotina para excolha de exporta‡„o                                           *
;*******************************************************************************
Proc MsgExcluir()

MSG=    "Antes de excluir a tabela de pre‡o observe:                   //"
MSG=MSG+"  - N„o deve haver lan‡amentos de Entrada ou Saida,           //"
MSG=MSG+"    onde esteja utilizando esta tabela;                       // //"
MSG=MSG+"Automaticamente ser  excluido:                                //"
MSG=MSG+"  - da consulta [ F1=Tabelas ],                               //"
MSG=MSG+"  - dos relat¢rios onde utilizam;                             // //"
MSG=MSG+"Excluir uma tabela de pre‡o se for extremamente necess rio !! // //"
MSG=MSG+"Tem certeza que deseja excluir esta tabela ?"
ConfGeral_N(MSG)

If OK="S"
   Then Return True
   Else Return False
EndIf

EndProc ;Proc MsgExcluir()

;*******************************************************************************
;* Executa a copia da tabela                                                   *
;*******************************************************************************
Proc EXECUTA_COPIA() 
Aguarde("Aguarde, Copiando Tabela")

SAIR=True

Moveto "TbPrCab"
End PgDn PgDn
[Codigo da Tabela   ]=CodTab
[Descricao da Tabela]=DescTab
[Ativa              ]=AtivTab
Do_It!
ClearAll

{Ask} {TbPrIte} Check
Moveto [Codigo da Tabela] TypeIn "~TABELA.."
Do_It!
ClearAll
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo da Tabela] TypeIn "Changeto ~CODTAB"
Do_It!
Add "Answer" "TbPrIte"
ClearAll

If VSG_OPCAP_PRECO=2
   Then {Ask} {TbPrIte}
        Moveto [Codigo da Tabela] TypeIn "~CODTAB"
        Moveto [Preco Unitario  ] TypeIn "Changeto Blank"
        Do_it!
        CleaRall
EndIf        

{Ask} {TbPrCpg} Check
Moveto [Codigo da Tabela] TypeIn "~TABELA.."
Do_It!
ClearAll
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo da Tabela] TypeIn "Changeto ~CODTAB"
Do_It!
Add "Answer" "TbPrCpg"
ClearAll

{Ask} {TbPrCli} Check
Moveto [Codigo da Tabela] TypeIn "~TABELA.."
Do_It!
ClearAll
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo da Tabela] TypeIn "Changeto ~CODTAB"
Do_It!
Add "Answer" "TbPrCli"
ClearAll

{Ask} {TbPrCIt} Check
Moveto [Codigo da Tabela] TypeIn "~TABELA.."
Do_It!
ClearAll
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo da Tabela] TypeIn "Changeto ~CODTAB"
Do_It!
Add "Answer" "TbPrCIt"
ClearAll

If VSG_OPCAP_PRECO=2
   Then {Ask} {TbPrCIt}
        Moveto [Codigo da Tabela] TypeIn "~CODTAB"
        Moveto [Preco Unitario  ] TypeIn "Changeto Blank"
        Do_it!
        CleaRall
EndIf   

{Ask} {TbPrRep} Check
Moveto [Codigo da Tabela] TypeIn "~TABELA.."
Do_It!
ClearAll
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo da Tabela] TypeIn "Changeto ~CODTAB"
Do_It!
Add "Answer" "TbPrRep"
ClearAll

{Ask} {TbPrRIt} Check
Moveto [Codigo da Tabela] TypeIn "~TABELA.."
Do_It!
ClearAll
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo da Tabela] TypeIn "Changeto ~CODTAB"
Do_It!
Add "Answer" "TbPrRIt"
ClearAll

If VSG_OPCAP_PRECO=2
   Then {Ask} {TbPrRIt}
        Moveto [Codigo da Tabela] TypeIn "~CODTAB"
        Moveto [Preco Unitario  ] TypeIn "Changeto Blank"
        Do_it!
        CleaRall
EndIf   

TABELA=CodTab
Limpaguarde()

EndProc   ; (Executa_Copia)



;*******************************************************************************
;* Rotina para excolha de exporta‡„o                                           *
;*******************************************************************************
Proc COPIA_E(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
  Switch
    Case Evento["KeyCode"] = 9: Temp=False
    Case Evento["KeyCode"] = 27:
         Switch
           Case Campo = "CodTab"          : Campo="NO"
           Case Campo = "DescTab"         : campo="CodTab"
           Case Campo = "TG_Opcao_Preco"  : campo="DescTab"     
           Case Campo="YES" Or Campo="NO" : Campo="CodTab"
         EndSwitch
         TEMP=False
    Case Evento["KeyCode"] = 13:
    Switch
       Case Campo="CodTab":
             CodTab=ControlValue("CodTab")
             If Not IsBlank(CodTab)
                Then Moveto "TbPrCab"
                     TABELA=[TbPrCab->Codigo da Tabela]
                     Moveto [Codigo da Tabela]
                     Locate CodTab
                     If RetVal
                       Then MENSAGEM("Codigo da Tabela Indicada j  Existe !")
                            CodTab=""
                       Else campo="DescTab"
                    EndIf
               EndIf

       Case Campo="DescTab":
              DescTab=ControlValue("DescTab")
              If Not IsBlank(DescTab)
                 Then campo="TG_Opcao_Preco"
              EndIf

        Case Campo = "TG_Opcao_Preco"     : Campo="YES" 
            VSG_OPCAP_PRECO = ControlValue("TG_Opcao_Preco")
             
       Case Campo="YES"                   : AcceptDialog
       Case Campo="NO"                    : CancelDialog
    EndSwitch
    TEMP=false
  EndSwitch
endif
switch
  case Campo="CodTab"         : MSG_CAMPO="Informe o c¢digo da nova tabela" 
  case Campo="DescTab"        : MSG_CAMPO="Informe o descri‡Æo da nova tabela" 
  case Campo="TG_Opcao_Preco" :  MensagemRadioButtons()
endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Monta Janela para copia automatica de tabela ativa                          *
;*******************************************************************************
Proc COPIA()

COPIA_PRECO = "COM_PRECO"
CodTab      = ""
DescTab     = ""
AtivTab     = [Ativa]

ShowDialog "Copiar Tabela Ativa Para: " Proc "COPIA_E" 
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB"
   @ 05,12   Height 11 Width 72

   Label  @ 00,01 "Tabela"  For "CodTab"
   Accept @ 01,01 Width 08 "A5" Picture "!*!" Tag "CodTab" To CodTab
   
   Label  @ 00,10 "Descri‡„o da Tabela: "  For "DescTab"
   Accept @ 01,10 Width 59 "A59" Picture "!*!" Tag "DescTab" To DescTab

   Label  @ 02,01 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
   RadioButtons @ 03,00 Height 2 Width 28
   "Com Pre‡o",
   "Sem Pre‡o"
     Tag "TG_Opcao_Preco"
     To VSG_OPCAP_PRECO

  Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

Enddialog
if retval
   then
        EXECUTA_COPIA()
   
        Coedit "TbPrCab"
        Moveto [Codigo da Tabela]

        Locate TABELA
        Moveto [Descricao da Tabela]
        PickForm "F"
        SAIR=False
   Else 
        Moveto [Descricao da Tabela]
Endif

EndProc  ; (Copia)


;*******************************************************************************
;* Rotina Dialog                                                               *
;*******************************************************************************
Proc SD_TBPRECO(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59 : Dialog_F1()
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TIPOEST"        : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_TIPOEST"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_MARCA"
            Case Campo="YES" Or Campo="NO" : Campo="TG_TIPOEST"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_TIPOEST"     : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"        : Campo="TG_GRP"
                    Case Campo="TG_GRP"         : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"       : Campo="TG_Opcao_Preco"
                    Case Campo="TG_Opcao_Preco" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

switch
  case Campo="TG_Opcao_Preco" :  MensagemRadioButtons()
endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_TBPRECO()

;*******************************************************************************
;* Inserir Itens Automaticamente                                               *
;*******************************************************************************
Proc INSERI()
private novosok,coditem,regitens

LimpaRodape(0)

TABELA       = [TbPrCab->Codigo da Tabela]

Do_It!
ClearAll
LimpAguarde()

VSG_OPCAP_PRECO = 1
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""

novosok=false

While True
  ShowDialog "Inclus„o de Itens" Proc "SD_TBPRECO"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 05,12   Height 13 Width 72

    Label  @ 00,00 "Tipo do Estoque"  For "TG_TIPOEST"
    Accept @ 01,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 01,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

    Label  @ 02,00 "Familia"  For "TG_FAMI"
    Accept @ 03,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 03,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 04,00 "Grupo"  For "TG_GRP"
    Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 06,00 "Marca"  For "TG_MARCA"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 00,35 "..."  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 2 Width 14
    "...",
    "..."
      Tag "TG_Opcao_Preco"
      To VSG_OPCAP_PRECO    

    Pushbutton @ 09,22 width 11 "~O~k"      OK     Default Value "Ok"  Tag "YES" To BottonValue
    Pushbutton @ 09,36 width 11 "~C~ancela" CANCEL                     Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal 
     Then QuitLoop 
  EndIf

  Aguarde("Aguarde, adicionando novos itens")
  
  {Ask} {\\Sistemas\\Estoque\\Itens} Check
  Moveto [Codigo da Familia] TypeIn "~VSDGFAMI.."
  Moveto [Codigo do Grupo  ] TypeIn "~VSDGGRP.."
  Moveto [Codigo da Marca  ] TypeIn "~VSDGMARCA.."
  Moveto [Tipo do Item            ]
  Switch
     Case VSDGTIPOEST = "1"       : TypeIn "E or M or O or A or S"
     Case VSDGTIPOEST = "2"       : TypeIn "P or T"
     Case Not IsBlank(VSDGTIPOEST): TypeIn "~VSDGTIPOEST"
     OtherWise                    : TypeIn "Not C, Not D, Not F, Not G, Not H, Not I"
  EndSwitch
  
  Do_It!
  ClearAll
  
  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar !")
          Loop
  EndIf
  
  NR = NRecords("Answer")

  View "\\sistemas\\estoque\\itens"
  View "TbPrIte"
  CoEdit "Answer"
  Scan
     Barra(NR, RecNo())
     Aguarde("Aguarde, adicionando novos itens"+BARRA_STRING)

     if [Inativo]="S" then  Loop endif
     
     coditem=[Codigo do Item]
     Switch
       Case SYS_CLIENTE_CONFEC<>"" :
  					If ([Tipo do Item]<>"D" And [Tipo do Item]<>"T" And [Tipo do Item]<>"P")
              Then Loop
            EndIf
            
            if [Codigo da Grade]<>"" 
               then
                    coditem=pegacodigoraiz([Codigo do Item])
                    getrecord "\\sistemas\\estoque\\itens" coditem to regitens
                    if not retval
                       then loop
                    endif
            endif   
            
       OtherWise:
  					If ([Tipo do Item]<>"T" And [Tipo do Item]<>"P" and VSDGTIPOEST="")
               Then Loop
            EndIf
     EndSwitch

     Moveto "TbPrIte"
     Moveto [Codigo da Tabela]
     Locate TABELA,coditem
     If Not RetVal
        Then End Down
             [Codigo da Tabela] = TABELA
             [Codigo do Item  ] = coditem
             [Lookup_Item     ] = coditem
             novosok=true
     EndIf
     
     Moveto  "Answer"
  EndScan
  Do_It!
  ClearAll
  
  QuitLoop
EndWhile
ClearAll

View "TbPrIte"
CoEdit "TbPrCab"
Moveto [Codigo da Tabela]
Locate TABELA
Moveto [Descricao da Tabela]
PickForm "F"

Moveto "Tbprite" SetaCorRegistro("Padrao")
Moveto "TbprCab" SetaCorRegistro("Editar")
LimpAguarde()

return novosok
EndProc  ;Inseri()

;*******************************************************************************
;* Inserir Itens Automaticamente                                               *
;*******************************************************************************
Proc Copia_Itens_Clientes()
Private Reg_item,NR,itnovo,SOBRESCREVER

TABELA = [TbPrCab->Codigo da Tabela]

ANT_TAB  = Table()
ANT_CAMP = Field()

SOBRESCREVER = False
Moveto "Tbprcit"
Home
If [Codigo do Item]<>""
   Then SOBRESCREVER = True
EndIf

Do_It!
ClearAll
LimpAguarde()

VSG_OPCAP_PRECO = 1
VSDGCLIENTE     = ""
VSDGNOMCLIE     = ""
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""

While True
  ShowDialog "Informe o Cliente" Proc "SD_PRCLIENTE"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 05,12   Height 13 Width 72

    Label  @ 00,00 "Cliente"  For "TG_CLIENTE"
    Accept @ 01,01 Width 07 "A4"  Picture "#*#" Tag "TG_CLIENTE" To VSDGCLIENTE
    Accept @ 01,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMCLIENTE" To VSDGNOMCLIE

    Label  @ 02,00 "Familia"  For "TG_FAMI"
    Accept @ 03,01 Width 07 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 03,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 04,00 "Grupo"  For "TG_GRP"
    Accept @ 05,01 Width 07 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 06,00 "Marca"  For "TG_MARCA"
    Accept @ 07,01 Width 07 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 00,35 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 2 Width 14
    "Com Pre‡o",
    "Sem Pre‡o"
      Tag "TG_Opcao_Preco"
      To VSG_OPCAP_PRECO
      
    Pushbutton @ 09,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  Canvas Off
  If Not RetVal Then QuitLoop EndIf
  
  View "Tbprcli"
  Moveto [Codigo da Tabela]
  Locate TABELA, VSDGCLIENTE
  If Not RetVal
     Then Mensagem("Cliente n„o localizado nesta rela‡„o!")
          Loop
  EndIf

  If SOBRESCREVER
     Then ConfGeral("Sobrescrever os itens j  existentes para este cliente ?")
     Else Ok = "S"
  EndIf
  If Ok="S"
     Then Aguarde("Aguarde, adicionando novos itens")
          {Ask} {Tbprcit} Check
          Moveto [Codigo da Tabela ] TypeIn TABELA
          Moveto [Codigo           ] Typein "~VSDGCLIENTE.."
          Moveto [Codigo do Item   ] Example "CodI"
          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item   ] Example "CodI"
          Moveto [Codigo da Familia] TypeIn "~VSDGFAMI.."
          Moveto [Codigo do Grupo  ] TypeIn "~VSDGGRP.."
          Moveto [Codigo da Marca  ] TypeIn "~VSDGMARCA.."
          moveto [Inativo          ] TypeIn "N"
          Do_It!
          ClearAll
          
          If IsEmpty("Answer")
             Then Mensagem("N„o h  registros conforme sele‡„o!")
             Else {Ask} {Answer}
                  Moveto [Codigo          ] Typein "Changeto ~CODCLI"
                  Do_it!
                  ClearAll
                  
                  If VSG_OPCAP_PRECO=2
                     Then {Ask} {Answer}
                          Moveto [Codigo da Tabela] TypeIn "~TABELA"
                          Moveto [Codigo          ] Typein "~CODCLI"
                          Moveto [Preco Unitario  ] TypeIn "Changeto Blank"
                          Do_it!
                          CleaRall
                  EndIf 

                  {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprcit" Enter
                  If MenuChoice()="NewEntries"
                     Then If SOBRESCREVER
                             Then {Update}
                             Else {NewEntries}
                          EndIf
                  EndIf
          EndIf
     Else Loop
  EndIf
  QuitLoop
EndWhile

View "TbPrIte"
CoEdit "TbPrCab"
Moveto [Codigo da Tabela]
Locate TABELA
Moveto [Descricao da Tabela]
PickForm "F"

Moveto "Tbprite" SetaCorRegistro("Invisivel")
Moveto "TbprCab" SetaCorRegistro("Editar")
LimpAguarde()

UnLockRecord
PickForm "2"
Moveto "TbprCab" SetaCorRegistro("Padrao")
Moveto "Tbprcli"
Moveto [Codigo]
Locate CODCLI
SetaCorRegistro("Editar")

Digitar=True

Moveto ANT_TAB
Moveto Field ANT_CAMP

Return True

EndProc ;Copia_Itens_Clientes()

;*******************************************************************************
;* Inserir Itens Automaticamente                                               *
;*******************************************************************************
Proc Copia_Itens_Representantes()
Private Reg_item,NR,itnovo,SOBRESCREVER

TABELA = [TbPrCab->Codigo da Tabela]

ANT_TAB  = Table()
ANT_CAMP = Field()

SOBRESCREVER = False
Moveto "Tbprrit"
Home
If [Codigo do Item]<>""
   Then SOBRESCREVER = True
EndIf

Do_It!
ClearAll
LimpAguarde()

VSG_OPCAP_PRECO = 1
VSDGREPR     = ""
VSDGNOMREPR     = ""
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""

While True
  ShowDialog "Informe o Representante" Proc "SD_PRREPRESEN"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 05,12   Height 13 Width 72

    Label  @ 00,00 "Re‡presentante"  For "TG_REPR"
    Accept @ 01,01 Width 07 "A4"  Picture "#*#" Tag "TG_REPR" To VSDGREPR
    Accept @ 01,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMREPR" To VSDGNOMREPR

    Label  @ 02,00 "Familia"  For "TG_FAMI"
    Accept @ 03,01 Width 07 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 03,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 04,00 "Grupo"  For "TG_GRP"
    Accept @ 05,01 Width 07 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 06,00 "Marca"  For "TG_MARCA"
    Accept @ 07,01 Width 07 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 00,35 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 2 Width 14
    "Com Pre‡o",
    "Sem Pre‡o"
      Tag "TG_Opcao_Preco"
      To VSG_OPCAP_PRECO
      
    Pushbutton @ 09,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  Canvas Off
  If Not RetVal Then QuitLoop EndIf
  
  View "Tbprrep"
  Moveto [Codigo da Tabela]
  Locate TABELA, VSDGREPR
  If Not RetVal
     Then Mensagem("Representante n„o localizado nesta rela‡„o!")
          Loop
  EndIf

  If SOBRESCREVER
     Then ConfGeral("Sobrescrever os itens j  existentes para este representante ?")
     Else Ok = "S"
  EndIf
  If Ok="S"
     Then Aguarde("Aguarde, adicionando novos itens")
          {Ask} {Tbprrit} Check
          Moveto [Codigo da Tabela ] TypeIn TABELA
          Moveto [Codigo           ] Typein "~VSDGREPR.."
          Moveto [Codigo do Item   ] Example "CodI"
          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item   ] Example "CodI"
          Moveto [Codigo da Familia] TypeIn "~VSDGFAMI.."
          Moveto [Codigo do Grupo  ] TypeIn "~VSDGGRP.."
          Moveto [Codigo da Marca  ] TypeIn "~VSDGMARCA.."
          moveto [Inativo          ] TypeIn "N"
          Do_It!
          ClearAll
          
          If IsEmpty("Answer")
             Then Mensagem("N„o h  registros conforme sele‡„o!")
             Else {Ask} {Answer}
                  Moveto [Codigo          ] Typein "Changeto ~CODREP"
                  Do_it!
                  ClearAll
                  
                  If VSG_OPCAP_PRECO=2
                     Then {Ask} {Answer}
                          Moveto [Codigo da Tabela] TypeIn "~TABELA"
                          Moveto [Codigo          ] Typein "~CODREP"
                          Moveto [Preco Unitario  ] TypeIn "Changeto Blank"
                          Do_it!
                          CleaRall
                  EndIf 

                  {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprrit" Enter
                  If MenuChoice()="NewEntries"
                     Then If SOBRESCREVER
                             Then {Update}
                             Else {NewEntries}
                          EndIf
                  EndIf
          EndIf
     Else Loop
  EndIf
  QuitLoop
EndWhile

View "TbPrIte"
CoEdit "TbPrCab"
Moveto [Codigo da Tabela]
Locate TABELA
Moveto [Descricao da Tabela]
PickForm "F"

Moveto "Tbprite" SetaCorRegistro("Invisivel")
Moveto "TbprCab" SetaCorRegistro("Editar")
LimpAguarde()

UnLockRecord
PickForm "2"
Moveto "TbprCab" SetaCorRegistro("Padrao")
Moveto "Tbprrep"
Moveto [Codigo]
Locate CODREP
SetaCorRegistro("Editar")

Digitar=True

Moveto ANT_TAB
Moveto Field ANT_CAMP

Return True

EndProc ;Copia_Itens_Representantes()

;*******************************************************************************
;* Inserir Itens Automaticamente                                               *
;*******************************************************************************
Proc Copia_Itens_TbPreco()
Private Reg_item,NR,itnovo,EXISTE_PRECO

If Not RecordStatus("New")
   Then EXISTE_PRECO = True
   Else EXISTE_PRECO = False
EndIf
     
TABELA = [TbPrCab->Codigo da Tabela]

Do_It!
ClearAll
LimpAguarde()

VSG_OPCAP_PRECO = 1
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""
VSDGTIPOEST     = ""
VSDGDESCTIPOEST = ""

While True
  ShowDialog "Inclus„o de Itens" Proc "SD_TBPRECO"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 05,12   Height 13 Width 72

    Label  @ 00,00 "Tipo do Estoque"  For "TG_TIPOEST"
    Accept @ 01,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 01,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

    Label  @ 02,00 "Familia"  For "TG_FAMI"
    Accept @ 03,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 03,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 04,00 "Grupo"  For "TG_GRP"
    Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 06,00 "Marca"  For "TG_MARCA"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 00,35 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 2 Width 14
     "Com Pre‡o",
     "Sem Pre‡o"
       Tag "TG_Opcao_Preco"
       To VSG_OPCAP_PRECO    

    Pushbutton @ 09,22 width 11 "~O~k"      OK     Default Value "Ok"  Tag "YES" To BottonValue
    Pushbutton @ 09,36 width 11 "~C~ancela" CANCEL                     Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If EXISTE_PRECO
     Then ConfGeral("Sobrescrever os Itens j  existentes para este cliente?")
  EndIf
  If OK="S"
     Then CONT_ITEM = 0
          LimpAguarde()
          
          Aguarde("Aguarde, adicionando novos itens")
          {Ask} {\\Sistemas\\Vendas\\TbprIte} Check
          Moveto [Codigo da Tabela ] TypeIn TABELA
          Moveto [Codigo do Item   ] Example "CodI"
          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item   ] Example "CodI"
          Moveto [Codigo da Familia] TypeIn "~VSDGFAMI.."
          Moveto [Codigo do Grupo  ] TypeIn "~VSDGGRP.."
          Moveto [Codigo da Marca  ] TypeIn "~VSDGMARCA.."
          moveto [Inativo          ] TypeIn "N"
          Moveto [Tipo do Item     ] Check
          Switch
            Case VSDGTIPOEST = "1"       : TypeIn "E or M or O or A or S"
            Case VSDGTIPOEST = "2"       : TypeIn "P or T"
            Case Not IsBlank(VSDGTIPOEST): TypeIn "~VSDGTIPOEST"
          EndSwitch
          Moveto [Codigo da Grade  ] Check
          Do_It!
          ClearAll

          If IsEmpty("Answer")
             Then MENSAGEM("N„o existem registros a processar !")
                  Loop
          EndIf

          NR=NRecords("Answer")
         
          View "\\Sistemas\\Estoque\\Itens"
          View "TbPrcit"
          Coedit "Answer"
          Scan
            Barra(NR, RecNo())
            Aguarde("Aguarde, copiando itens da Tabela "+BARRA_STRING)

            CopyToArray Reg_Item

            Switch
              Case SYS_CLIENTE_CONFEC<>"":
          					If ([Tipo do Item]<>"D" And [Tipo do Item]<>"T" And ([Tipo do Item]<>"P" Or [Codigo da Grade]<>""))
                      Then Loop
                  EndIf
                  
             OtherWise:
       	 				If ([Tipo do Item]<>"T" And [Tipo do Item]<>"P")
                     Then Loop
                  EndIf
           EndSwitch

           ItNovo = False
           Moveto "TbPrcit"
           Moveto [Codigo do Item]
           Locate TABELA,CODCLI,Reg_Item["Codigo do Item"]
           If Not RetVal
              Then End Down
                   [Codigo da Tabela    ]=TABELA
                   [Codigo              ]=CODCLI
                   [Codigo do Item      ]=Reg_Item["Codigo do Item"]
                   ItNovo = True
              Else If Ok="S" Then ItNovo = true EndIf
           EndIf

           If ItNovo
              Then [Tipo do Item        ]=Reg_Item["Tipo do Item"]
                   [Descricao do Item   ]=Reg_Item["Descricao do Item"]
                   [Unidade Fiscal      ]=Reg_Item["Unidade Fiscal"]
                   If VSG_OPCAP_PRECO=2
                      Then [Preco Unitario]=BlankNum()
                      Else [Preco Unitario]=Reg_Item["Preco Unitario"]
                   EndIf   
                   [Data Ultimo Reajuste]=Reg_Item["Data Ultimo Reajuste"]
                   [Taxa Ultimo Reajuste]=Reg_Item["Taxa Ultimo Reajuste"]
                   [Em Promocao         ]=Reg_Item["Em Promocao"]
                   UnLockRecord
           Endif
           Moveto "Answer"
        EndScan
        Do_it!
        ClearAll
        
        LimpAguarde()
      QuitLoop
  EndIf
EndWhile 

LimpAguarde()

View "TbPrIte"
CoEdit "TbPrCab"
Moveto [Codigo da Tabela]
Locate TABELA
PickForm "2"

Moveto "TbprIte" SetaCorRegistro("Padrao")
Moveto "TbprCab" SetaCorRegistro("Padrao")
Moveto "Tbprcli" SetaCorRegistro("Padrao")
Locate TABELA, CODCLI
Moveto "Tbprcit"

EndProc ;Copia_Itens_TbPreco()

;*******************************************************************************
;* Rotina Dialog                                                               *
;*******************************************************************************
Proc SD_PRCLIENTE(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59 : Dialog_F1()
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_CLIENTE"        : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_CLIENTE"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_MARCA"
            Case Campo="YES" Or Campo="NO" : Campo="TG_CLIENTE"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_CLIENTE" :
                         If VSDGCLIENTE=""
                            Then Mensagem("O cliente deve ser informado!")
                            Else Campo="TG_FAMI"
                         EndIf
                    Case Campo="TG_FAMI"        : Campo="TG_GRP"
                    Case Campo="TG_GRP"         : Campo="TG_MARCA" 
                    Case Campo="TG_MARCA"       : Campo="TG_Opcao_Preco"
                    Case Campo="TG_Opcao_Preco" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

switch
  case Campo="TG_CLIENTE"     :  MSG_CAMPO="Informe o cliente para continuar com o processo!"
  case Campo="TG_Opcao_Preco" :  MensagemRadioButtons()
endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_PRCLIENTE()

;*******************************************************************************
;* Rotina Dialog                                                               *
;*******************************************************************************
Proc SD_PRREPRESEN(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59 : Dialog_F1()
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_REPR"           : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_REPR"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_MARCA"
            Case Campo="YES" Or Campo="NO" : Campo="TG_REPR"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_REPR" :
                         If VSDGREPR=""
                            Then Mensagem("O representante deve ser informado!")
                            Else Campo="TG_FAMI"
                         EndIf
                    Case Campo="TG_FAMI"        : Campo="TG_GRP"
                    Case Campo="TG_GRP"         : Campo="TG_MARCA" 
                    Case Campo="TG_MARCA"       : Campo="TG_Opcao_Preco"
                    Case Campo="TG_Opcao_Preco" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

switch
  case Campo="TG_REPR"     :  MSG_CAMPO="Informe o representante para continuar com o processo!"
  case Campo="TG_Opcao_Preco" :  MensagemRadioButtons()
endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_PRCLIENTE()

;*******************************************************************************
;* Rotina Chave das Condi‡oes de Pagamento                                     *
;*******************************************************************************
Proc CHAVECOND()
While True
  Moveto [Sequencia]
  End
  SEQ=[Sequencia]
  Down
  Moveto [Sequencia]
  Seta_Sequencia(SEQ,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While true

      TECLA=" Esc=Retornar  F7=Paginar                                        PgDn=Finalizar"
      MSGCAMPO=""

      Prompt TECLA

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","PGDN"

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             PAGINA("TbprCPg","MR")
             If EDITAR="S"
                Then CHAVECOND=0
                     SEQ=[Sequencia]
                     Controla_EdicaoCPG()
                Else If EXCLUIR="S"
                        Then CONFIRMA()
                             If OK="S"
                                Then DEL
                                Else UnLockRecord
                             EndIf
                     EndIf
                     QuitLoop
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           Del
           CHAVECOND=9
           Continuar=True
           OpContinuar="Itens"
           Return
      Case Retval="PGDN":
           Del
           CHAVECOND=9
           Continuar=False
           Digitar  =False
           Return
      Case Retval="ENTER":
           If Not Seta_Sequencia(SEQ,True)
              Then Del
                   QuitLoop
           EndIf
           SEQ=[]
           Del
           Locate SEQ
           If RetVal
              Then CHAVECOND=0
                   Moveto [Sequencia]
              Else CHAVECOND=1
                   End Down
                   [Sequencia]=SEQ
           Endif
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveCond)

;*******************************************************************************
;* Rotina para Digitacao das Condicoes de Pagamento                            *
;*******************************************************************************
Proc DIGITACOND()

Moveto [Condicao de Pagamento]

While True

      TECLA=" Esc=Retornar  "

      If Field()="Condicao de Pagamento"
         Then TECLA=TECLA+"F1=Tabelas  "
         else TECLA=TECLA+"            "
      Endif

      If CHAVECOND=0
         Then TECLA=TECLA+"Del=Excluir  "
         else TECLA=TECLA+"             "
      EndIf
      MSGCAMPO=Field()

      Prompt TECLA

      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

      Switch
      Case RetVal="F1":
           If Field()="Condicao de Pagamento"
              Then ConsultaF1()
           Endif
      Case Retval="ESC":
           If Field()="Condicao de Pagamento"
              Then If CHAVECOND=1
                      Then Del
                      Else If RecordStatus("Modified")
                              Then Undo
                           EndIf
                   EndIf
                   CHAVECOND=9
                   QuitLoop
           EndIf
           If Field()="Taxa Financeira"
              Then Moveto [Condicao de Pagamento]
           Endif
      Case Retval="ENTER":
           If Field()="Taxa Financeira"
              Then QuitLoop
           Endif
           If Field()="Condicao de Pagamento"
              Then If IsBlank([Condicao de Pagamento])
                      Then Loop
                      Else Moveto [Taxa Financeira]
                   Endif
           Endif
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then CONFIRMA()
                   If OK="S"
                      Then DEL
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc   ;  (DigitaCond)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
DIGITAI()
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoCPG()
DIGITACOND()
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoCli() 
Moveto "TbPrCab"
[Codigo_Cliente]=CODCLI
ResyncKey

Moveto "Tbprcit"
While True
  CHAVEIC()
  If CHAVEI=9
     Then QuitLoop
  EndIf
  Controla_EdicaoI()
EndWhile

Moveto "TbPrCab"
[Codigo_Cliente]=""
ResyncKey

Moveto "Tbprcli"
UnLockRecord
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoRep()
Moveto "TbPrCab"
[Codigo_Representante]=CODREP
ResyncKey

Moveto "Tbprrit"
While True
  CHAVEIC()
  If CHAVEI=9
     Then QuitLoop
  EndIf
  Controla_EdicaoI()
EndWhile

Moveto "TbPrCab"
[Codigo_Representante]=""
ResyncKey

Moveto "Tbprrep"
UnLockRecord
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
Digitar=True

While Digitar
  DIGITA()
  If CHAVE=9
     Then QuitLoop
  EndIf
  SetaCorRegistro("Padrao")
  Continuar=True
  While Continuar
    Switch
      Case OpContinuar="Itens":
           Moveto "Tbprite"
           While True
             CHAVEI()
             If CHAVEI=9
                Then QuitLoop
             EndIf
             Controla_EdicaoI()
           EndWhile
      Case OpContinuar="CPagto":
           Moveto "TbPrCPg"
           While True
             CHAVECOND()
             If CHAVECOND=9
                Then QuitLoop
             EndIf
             Controla_EdicaoCPG()
           EndWhile
      Case OpContinuar="Cliente":
           UnLockRecord
           PickForm "2"

           Moveto "Tbprite" SetaCorRegistro("Invisivel")
           Moveto "Tbprcli"
           TabCliente=True
           While TabCliente
             CHAVECLI()
             If CHAVECLI=9
                Then QuitLoop
             EndIf
             Controla_EdicaoCli()
           EndWhile

           Moveto "TbPrCab"
           UnLockRecord
           PickForm "F"
      Case OpContinuar="Representante": 
           UnLockRecord
           PickForm "3"

           Moveto "Tbprrep"
           TabRepres=True
           While TabRepres
             CHAVEREP()
             If CHAVEREP=9
                Then QuitLoop
             EndIf
             Controla_EdicaoRep()
           EndWhile

           Moveto "TbPrCab"
           UnLockRecord
           PickForm "F"
    EndSwitch

  EndWhile

  Moveto "TbprCab"
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf
If OPCAO_FORM="1"
   Then PickForm "1"
EndIf
EndProc

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

CoEdit "TbprCab"
PickForm "1"

OPCAO_FORM="1"
TABELA=""
CABECA=""
CHAVE =""
CodTab=""
SAIR=False
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  If CHAVE=5
     Then If OPCAO_FORM="1"
             Then PickForm "1"
             Else PickForm "F"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
