;** 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
;Ultima Alteracao: 20/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes fun‡äes e mensagens
;Ultima Alteracao: 01/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nova fun‡Æo carregar ultimo custo/custo medio do estoque
;Ultima Alteracao: 07/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes inserir novos itens a partir de uma tabela                    
;Ultima Alteracao: 20/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro com departamento e ajustes erro aba represnetante                                       
;Ultima Alteracao: 01/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes incluir itens novos ou sobreescrever, op‡Æo com pre‡o e sem pre‡o                            
;Ultima Alteracao: 04/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0434 itens filhos e precos                            
;Ultima Alteracao: 11/04/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes INSERI() para permitir que o item nÆo pegue o c¢digo raiz #0434#  
;Ultima Alteracao: 19/07/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0437# itens filhos e precos -> AlterarFilhos()
;Ultima Alteracao: 23/08/2019 por Kamila Gomes
;Motivo Alteracao: Implementa‡Æo para alterar modo de pesquisa dos itens: F7
;Ultima Alteracao: 29/08/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes copiados de #0434# para a empresa #0439#
;Ultima Alteracao: 30/08/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado controle p/ quando utilizar o sistema de pontos [Utiliza_Pontuacao]
;Ultima Alteracao: 13/09/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes INSERI() para permitir que o item nÆo pegue o c¢digo raiz #0438#
;Ultima Alteracao: 24/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0397#
;Ultima Alteracao: 29/10/2019 por Bruno Carvalho
;Motivo Alteracao: Removido o campo [Utiliza_Pontuacao], pois a regra p/ utiliza‡Æo de pontos ‚ interna no script "FT_PONTOS"                             
;Ultima Alteracao: 07/11/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0227# itens filhos e precos
;Ultima Alteracao: 07/11/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao copiar itens com pre‡os de uma tabela para outra, onde APLICACAO DIRETA estava sendo ignorados -> INSERITAB()
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc

;*******************************************************************************
;* 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

  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","FIELDVIEW","F35",-33
                
  Switch
    Case RetVal=-33 : SemFuncoes()

    Case Retval="FIELDVIEW" or Retval="F35":
         EDITFIELD()
    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()  

while true
  Moveto "Tbprite"

  Moveto [Codigo do Item]
  End
  Down
  While true
    If IsAssigned(LOCALIZA_CODIGO)
       Then Switch
              Case LOCALIZA_CODIGO="LOC_CODFOR" : LOCALIZAR_POR="C¢d item Fornecedor"
              Case LOCALIZA_CODIGO="LOC_CODREF" : LOCALIZAR_POR="Referˆncia"
              Case LOCALIZA_CODIGO="LOC_CODBAR" : LOCALIZAR_POR="C¢digo Barras"
              otherwise:
                   LOCALIZA_CODIGO="LOC_CODITE"   LOCALIZAR_POR="C¢digo Item"
            EndSwitch
    EndIf
    
    Switch
      Case Field()="Codigo do Item" : MSGCAMPO=LOCALIZAR_POR +", [F1]Consultar tabela  [F7]Alterar modo localizar"
      OtherWise                     : MSGCAMPO=Field()
    EndSwitch

    SetaCorRegistro("Editar")
    TECLA="PgDn=Finalizar"
    AguardaTeclasPadraoEspecial()
  
    If RetVal=-33
       Then MSGCAMPO=""
            
            Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
               "[F4] ~C~opiar tabela       " : " Copiar Tabela Ativa para outra                        "   : "F4",
               "[F5] Rea~j~ustar pre‡os    " : " Reajustar Pre‡os em percentual                        "   : "F5",
               "[F6] ~N~ovos Itens         " : " Inserir novos itens nesta tabela                      "   : "F6",
               "[F8] ~P~egar pre‡o de custo" : " Alterar valor unitario por £ltimo custo ou custo m‚dio"   : "F8",
               "[F9] Edi‡Æ~o~ de pre‡os    " : " Editar pre‡os"                                            : "F9",
               Separator,
               "[Alt+P] Regras por Con~d~i‡äes Pagamentos" : " Regras por condi‡Æo de pagamento        " : "ALTP",
               "[Alt+C] Pre‡os por Cli~e~nte             " : " Tabela de Pre‡os por Cliente            " : "ALTC",
               "[Alt+R] Pre‡os por ~R~epresentante       " : " Tabela de Pre‡os por Representante      " : "ALTR",
               Separator,
               "~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="F3": SemFicha()          
        Case RetVal=-115 Or RetVal=-116 :  
             OpContinuar=""
             Tecla_Funcao=RetVal
             CHAVEI=9
             Del
             Return
        Case RetVal="F1":
             If Field()="Codigo do Item"
                Then Moveto [Lookup_Item]
                     CONSULTAF1()
                     [Codigo do Item]=[]
                     []=""
                     Moveto [Codigo do Item]
             EndIf
        Case 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 QuitLoop
                       EndIf
               EndIf
               SetaPosForm()
             EndWhile
             quitloop
        Case Retval="F9":
             Del
             EDITAR()
             quitloop
  
        Case Retval="F8":
             Del
             PegarCusto()
             quitloop
              
        Case RetVal="F6":
             Del
             
             Echo Normal
             Echo Off
             ShowPopup " Origem dos Itens " CENTERED
                "~1~ Itens do Cadastro"   : " Itens do cadastro de Itens"   : "CAD",
                "~2~ Itens de uma Tabela" : " Itens de uma tabela de pre‡o" : "TAB",
                Separator,
                "~C~ancelar             " : " Cancelar a Opera‡„o"          : "CANCELAR"
             EndMenu
             To MenuVar2
              
             Echo off
             If MenuVar2="CANCELAR" or MenuVar2="Esc"
                Then Quitloop
             EndIf
               
             If MenuVar2="CAD"
                Then INSERI()
                else INSERITAB()
             EndIf
             
             quitloop
  
        Case RetVal="F4":
             del
             COPIA()
             CHAVEI=9
             return
             
        Case RetVal="F5":
             del  
             
             CABECA=1
             moveto "tbprcab"
             REAJUSTE()
             CHAVEI=9
             QuitLoop            
        
        Case Retval = "F7" :
             ModoLocalizarItem("SELECAO","","TBPRECO")
             if search("LOC_",Menuvar)>0
               then Del
                    Chave2() 
             EndIf
             quitloop
        Case Retval=-25 or RetVal="ALTP" : 
             Del
             CHAVEI=9
             OpContinuar="CPagto"
             Tecla_Funcao=-25
             Continuar=False
             Return
             
        Case RetVal=-46 or RetVal="ALTC" : 
             Del
             CHAVEI=9
             OpContinuar="Cliente"
             Tecla_Funcao=-46
             Continuar=False
             Return
                 
        Case RetVal=-19 or RetVal="ALTR" : 
             Del
             CHAVEI=9
             OpContinuar="Representante"
             Tecla_Funcao=-19
             Continuar=False
             Return
               
        Case Retval="ESC":
             Del
             CHAVEI=9
             Tecla_Funcao=""
             Continuar=False
             Return
                
        Case Retval="PGDN": 
             Del
             CHAVEI=9
             Tecla_Funcao=""
             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]
                     quitLoop
             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 quitloop
             EndIf
             Return  
        EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveI)

;*******************************************************************************
;* Rotina para Leitura do Codigo de Barras                                     *
;*******************************************************************************
Proc Chave2()
while true
  End
  Down
  CODIGO= ModLocaliza()
  Del
  Switch
    Case CODIGO= ""   : 
         LOCALIZA_CODIGO="LOC_CODITE"   LOCALIZAR_POR="C¢digo Item"
         quitloop      
    Case CODIGO<> "??" And CODIGO<>"": 
         Moveto [Codigo do Item]
         Locate TABELA, CODIGO
         If RetVal
           Then If not IsLockRecord()
                  Then CHAVEI=0
                       Controla_EdicaoI()
                endif
           Else fastmsg("Item nÆo encontrado !")
         EndIf
  EndSwitch
Endwhile

Moveto [Codigo do Item]
;Return True

EndProc ;ModLocaliza()

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

      TECLA=" Esc=Retornar  F7=Paginar                                        PgDn=Finalizar"
      MSGCAMPO=Field()
      
      TECLA="PgDn=Finalizar"
      MSGCAMPO=Field()
      AguardaTeclasPadraoIt2()

      If Field()="Codigo"
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      EndIf

      Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal="F3": SemFicha()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal=-115 Or RetVal=-116 :  
           OpContinuar=""
           Tecla_Funcao=RetVal
           CHAVECLI=9
           Del
           Return
      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
           OpContinuar=""
           Tecla_Funcao="F5"
           Return
      Case Retval="PGDN": 
           Del
           CHAVECLI=9
           Tecla_Funcao=""
           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="PgDn=Finalizar"
    MSGCAMPO=Field()
    AguardaTeclasPadraoIt2()

    If Field()="Codigo do Representante"
       Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
    EndIf
    
    Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal="F3": SemFicha()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal=-115 Or RetVal=-116 :  
         OpContinuar=""
         Tecla_Funcao=RetVal
         CHAVEREP=9
         Del
         Return 
    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": 
         OpContinuar=""
         Tecla_Funcao="F5"
         CHAVEREP=9
         Del
         Return
    Case Retval="PGDN":
         Del
         CHAVEREP=9
         Tecla_Funcao=""
         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  Alt+F=Fun‡”es  F7=Paginar"
      MSGCAMPO=""

      If Field()="Codigo do Item"
         Then MSGCAMPO="Codigo do Item, [F1]Consultar tabela"
      endIf
      Prompt TECLA

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


      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=-115 Or RetVal=-116 :  
           OpContinuar=""
           Tecla_Funcao=RetVal
           CHAVEB=9
           Del
           Return
			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 
                   Del
                   Copia_Itens_TbPreco()
                   QuitLoop
           EndIf
           
           If Opcaoc="ITEM_CLI"
              Then 
                   del
                   Copia_Itens_Clientes()
                   QuitLoop
           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 
                   Del
                   Copia_Itens_TbPreco()
                   QuitLoop
           EndIf
           
           If Opcaoc="ITEM_REP"
              Then Del
                   Copia_Itens_Representantes()
                   QuitLoop
           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" :
           OpContinuar=""
           Tecla_Funcao="F5"
           CHAVEI=9
           Del
           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":
           switch
             case Field() = "Preco Unitario":
               If []<>VRANT
                  Then [Data Ultimo Reajuste]=Today()
                       If VRANT>0
                          Then [Taxa Ultimo Reajuste]=NDecimal((([Preco Unitario]*100)/VRANT),2)-100
                       EndIf
               EndIf
               moveto [Data Ultimo Reajuste]

             case Field() = "Data Ultimo Reajuste":
               AlterarFilhos()
               
               QuitLoop

             otherwise : Right
           endswitch

      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 AlterarFilhos()
private regtbprite,TM_ITEM

if sys_codigo_cliente<>"0434" And 
   sys_codigo_cliente<>"0437" And 
   sys_codigo_cliente<>"0439" And
   sys_codigo_cliente<>"0397" And
   sys_codigo_cliente<>"0227"
   then return
endif
if ([Tipo do Item]<>"D" And sys_codigo_cliente<>"0437")
   then return
endif

copytoarray regtbprite

If sys_codigo_cliente = "0437" or
   sys_codigo_cliente = "0397" Then Down EndIf

If sys_codigo_cliente="0227"
   Then TM_ITEM = 7
   Else TM_ITEM = 6  
EndIf

while substr([Codigo do Item],1,TM_ITEM) = substr(regtbprite["Codigo do Item"],1,TM_ITEM)

  if [Tipo do Item]<>"D"
     then
          [Preco Unitario      ]=regtbprite["Preco Unitario"      ]
          [Data Ultimo Reajuste]=regtbprite["Data Ultimo Reajuste"]
          [Taxa Ultimo Reajuste]=regtbprite["Taxa Ultimo Reajuste"]
          [Em Promocao         ]=regtbprite["Em Promocao"         ]
          unlockrecord
  endif   

  skip
  if eot() then quitloop endif
endwhile
Release Vars TM_ITEM

moveto [Codigo do Item]
Locate regtbprite["Codigo do Item"]

endproc

;*******************************************************************************
;* 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()
private nr,cc

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
                moveto [Preco Unitario]
                nr=imageccount()
                cc=0
                Scan
                
                   cc=cc+1
                   Barra(NR, cc)
                   Aguarde("Aguarde, reajustando itens "+BARRA_STRING)
                
                   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()
                
                Mensagem("Processo concluido !")
                
           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 CtrlPgDn
[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"
        Moveto [Data Ultimo Reajuste] typein "Changeto Blank"
        Moveto [Taxa Ultimo Reajuste] typein "Changeto Blank"
        Moveto [Valor_Base          ] 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"
        Moveto [Data Ultimo Reajuste] typein "Changeto Blank"
        Moveto [Taxa Ultimo Reajuste] 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"
        Moveto [Data Ultimo Reajuste] typein "Changeto Blank"
        Moveto [Taxa Ultimo Reajuste] 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()
private codtaborigem

Moveto "Tbprcab"
codtaborigem=[Codigo da Tabela]

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"
        PickForm "F"
        SetaCorRegistro("Padrao")

        moveto [Codigo da Tabela]
        locate codtaborigem
        if retval
           then while islockrecord() endwhile
        endif

        Mensagem("Copia efetuada !// // Verificar nova tabela ["+CodTab+"] !")
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"] =  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_DEPART"         : Campo="TG_MARCA"
            Case Campo="TG_REFERENCIA"     : Campo="TG_DEPART"
            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_DEPART"
                    Case Campo="TG_DEPART"      : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA"  : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

switch
  case Campo="" : MSG_CAMPO=""
endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_TBPRECO()

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

LimpaRodape(0)

TABELA       = [TbPrCab->Codigo da Tabela]

Do_It!
ClearAll
LimpAguarde()

VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""
VSDGDEPART      = ""
VSDGNOMDEPART   = ""
VSDGREFERENCIA  = ""

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 17 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  @ 08,00 "Departamento"  For "TG_DEPART"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART    

    Label  @ 10,00 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 11,01 Width 33 "A20" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA
    
    Pushbutton @ 13,22 width 11 "~O~k"      OK     Default Value "Ok"  Tag "YES" To BottonValue
    Pushbutton @ 13,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
  Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."
  Moveto [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
  
  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<>""     And 
            sys_codigo_cliente<>"0434" And 
            sys_codigo_cliente<>"0439" And 
            sys_codigo_cliente<>"0397" And 
            sys_codigo_cliente<>"0437" And
            sys_codigo_cliente<>"0227"   :   ;Cliente nÆo pega c¢digo raiz  
  					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
             
             switch
               case sys_codigo_cliente="0434" Or 
                    sys_codigo_cliente="0434" Or 
                    sys_codigo_cliente="0439" Or
                    sys_codigo_cliente="0227"  :
                 if [Tipo do Item]<>"D"
                    then If sys_codigo_cliente="0227"
                            Then AUX_ITEM = substr(coditem,1,7)+"000"
                            Else AUX_ITEM = substr(coditem,1,6)+"0000"  
                         EndIf
                         getrecord "\\sistemas\\vendas\\tbprite" TABELA,AUX_ITEM to regtbprite
                         if retval
                            then if regtbprite["Tipo do Item"]="D"
                                    then [Preco Unitario      ]=regtbprite["Preco Unitario"      ]
                                         [Data Ultimo Reajuste]=regtbprite["Data Ultimo Reajuste"]
                                         [Taxa Ultimo Reajuste]=regtbprite["Taxa Ultimo Reajuste"]
                                         [Em Promocao         ]=regtbprite["Em Promocao"         ]
                                  endif
                         endif  
                         Release Vars AUX_ITEM 
                 endif   
             
             endswitch
     EndIf
     
     Moveto  "Answer"
  EndScan
  Do_It!
  ClearAll

  Mensagem("Processo concluido !")
  
  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("Padrao")
LimpAguarde()

return novosok
EndProc  ;Inseri()

;-------------------------------------------------------------------------------

;*******************************************************************************
;* Rotina Dialog                                                               *
;*******************************************************************************
Proc SD_INSERITAB(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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TABELA"         : Campo="NO"
            Case Campo="TG_TIPOEST"        : Campo="TG_TABELA"
            Case Campo="TG_FAMI"           : Campo="TG_TIPOEST"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_DEPART"         : Campo="TG_MARCA"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_DEPART"
            Case Campo="YES" Or Campo="NO" : Campo="TG_TABELA"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_TABELA"      : Campo="TG_TIPOEST"
                    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_DEPART"
                    Case Campo="TG_DEPART"      : 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_INSERITAB()

;*******************************************************************************
;* Inserir Itens a partir de uma tabela                                        *
;*******************************************************************************
Proc INSERITAB()
private novosok,coditem,regitens

LimpaRodape(0)

TABELA       = [TbPrCab->Codigo da Tabela]

Do_It!
ClearAll
LimpAguarde()

VSG_OPCAP_PRECO = 1
VSDGTABELA      = ""
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""
VSDGDEPART      = ""
VSDGNOMDEPART   = ""

novosok=false

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

    Label  @ 00,00 "Tabela"  For "TG_TABELA"
    Accept @ 01,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 01,10 Width 33 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

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

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

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

    Label  @ 08,00 "Marca"  For "TG_MARCA"
    Accept @ 09,01 Width 07 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 10,00 "Departamento"  For "TG_DEPART"
    Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 11,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART    
    
    Label  @ 00,35 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 4 Width 33
    "Com Pre‡o, S¢ os itens novos",
    "Com Pre‡o, Todos",
    "Sem Pre‡o, S¢ os itens novos",
    "Sem Pre‡o, Todos"
      Tag "TG_Opcao_Preco"
      To VSG_OPCAP_PRECO
      
    Pushbutton @ 13,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 13,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal Then QuitLoop EndIf

  If VSDGTABELA=""
     Then Fastmsg("Tabela obrigat¢ria !")
          loop
  EndIf

  View "Tbprcab"
  Moveto [Codigo da Tabela]
  Locate VSDGTABELA
  If Not RetVal
     Then Mensagem("Tabela n„o caastrada !")
          Loop
  EndIf

  Aguarde("Aguarde, adicionando novos itens")
  {Ask} {Tbprite} Check
  Moveto [Codigo da Tabela ] TypeIn "~VSDGTABELA.."
  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 [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 F, Not G, Not H, Not I"
  EndSwitch
  moveto [Inativo          ] TypeIn "N"
  Moveto [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
  Do_It!
  ClearAll
  
  If IsEmpty("Answer")
     Then 
          Mensagem("N„o h  registros conforme sele‡„o!")
          loop
     Else
          {Ask} {Answer} typein "Fast"
          Moveto [Codigo da Tabela] Typein "Changeto ~TABELA"
          Do_it!
          ClearAll
          
          If VSG_OPCAP_PRECO=3 or
             VSG_OPCAP_PRECO=4    
             Then
                  {Ask} {Answer} typein "Fast"
                  Moveto [Preco Unitario      ] TypeIn "Changeto Blank"
                  Moveto [Data Ultimo Reajuste] TypeIn "Changeto Blank"
                  Moveto [Taxa Ultimo Reajuste] TypeIn "Changeto Blank"
                  Do_it!
                  CleaRall
          EndIf 

          If VSG_OPCAP_PRECO=1 Or
             VSG_OPCAP_PRECO=3 
             then {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprite" Enter {NewEntries} clearall 
          endif
          
          If VSG_OPCAP_PRECO=2 Or 
             VSG_OPCAP_PRECO=4 
             then {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprite" Enter {Update}     clearall 
          endif

          Mensagem("Processo concluido !")
  EndIf

  QuitLoop
EndWhile

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

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

return novosok

EndProc ;INSERITAB()




;-------------------------------------------------------------------------------

;*******************************************************************************
;* 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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_DESTINAT"       : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_DESTINAT"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_DEPART"         : Campo="TG_MARCA"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_DEPART"
            Case Campo="YES" Or Campo="NO" : Campo="TG_DESTINAT"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_DESTINAT"    : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"        : Campo="TG_GRP"
                    Case Campo="TG_GRP"         : Campo="TG_MARCA" 
                    Case Campo="TG_MARCA"       : Campo="TG_DEPART"
                    Case Campo="TG_DEPART"      : 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_PRCLIENTE()

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

TABELA = [TbPrCab->Codigo da Tabela]

ANT_TAB  = Table()
ANT_CAMP = Field()

Do_It!
ClearAll
LimpAguarde()

VSG_OPCAP_PRECO = 1
VSDGDESTINAT    = ""
VSDGNOMDEST     = ""
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""
VSDGDEPART      = ""
VSDGNOMDEPART   = ""

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 15 Width 72

    Label  @ 00,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMDEST"  To VSDGNOMDEST

    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  @ 08,00 "Departamento"  For "TG_DEPART"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART    
    
    Label  @ 00,35 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 4 Width 33
    "Com Pre‡o, S¢ os itens novos",
    "Com Pre‡o, Todos",
    "Sem Pre‡o, S¢ os itens novos",
    "Sem Pre‡o, Todos"
      Tag "TG_Opcao_Preco"
      To VSG_OPCAP_PRECO
      
    Pushbutton @ 11,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 11,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal Then QuitLoop EndIf

  If VSDGDESTINAT=""
     Then Fastmsg("Cliente obrigat¢rio !")
          loop
  EndIf
  
  View "Tbprcli"
  Moveto [Codigo da Tabela]
  Locate TABELA, VSDGDESTINAT
  If Not RetVal
     Then Mensagem("Cliente n„o localizado nesta rela‡„o!")
          Loop
  EndIf

  Aguarde("Aguarde, adicionando novos itens")
  {Ask} {Tbprcit} Check
  Moveto [Codigo da Tabela ] TypeIn TABELA
  Moveto [Codigo           ] Typein "~VSDGDESTINAT.."
  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 [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
  Do_It!
  ClearAll
  
  If IsEmpty("Answer")
     Then 
          Mensagem("N„o h  registros conforme sele‡„o!")
          loop
     Else 
          {Ask} {Answer}
          Moveto [Codigo          ] Typein "Changeto ~CODCLI"
          Do_it!
          ClearAll
          
          If VSG_OPCAP_PRECO=3 or
             VSG_OPCAP_PRECO=4    
             Then
                 {Ask} {Answer}
                  Moveto [Codigo da Tabela] TypeIn "~TABELA"
                  Moveto [Codigo          ] Typein "~CODCLI"
                  Moveto [Preco Unitario  ] TypeIn "Changeto Blank"
                  Moveto [Data Ultimo Reajuste] TypeIn "Changeto Blank"
                  Moveto [Taxa Ultimo Reajuste] TypeIn "Changeto Blank"
                  Do_it!
                  CleaRall
          EndIf 

          If VSG_OPCAP_PRECO=1 Or
             VSG_OPCAP_PRECO=3 
             then {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprcit" Enter {NewEntries} clearall 
          endif
          
          If VSG_OPCAP_PRECO=2 Or 
             VSG_OPCAP_PRECO=4 
             then {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprcit" Enter {Update}     clearall 
          endif

          Mensagem("Processo concluido !")
  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("Padrao")
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()


;*******************************************************************************
;* 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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_REPRESEN"       : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_REPRESEN"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_DEPART"         : Campo="TG_MARCA"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_DEPART"
            Case Campo="YES" Or Campo="NO" : Campo="TG_REPRESEN"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_REPRESEN"    : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"        : Campo="TG_GRP"
                    Case Campo="TG_GRP"         : Campo="TG_MARCA" 
                    Case Campo="TG_MARCA"       : Campo="TG_DEPART"
                    Case Campo="TG_DEPART"      : 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_PRREPRESEN()

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

TABELA = [TbPrCab->Codigo da Tabela]

ANT_TAB  = Table()
ANT_CAMP = Field()

Do_It!
ClearAll
LimpAguarde()

VSG_OPCAP_PRECO = 1
VSDGREPRESEN    =""
VSDGNOMREPR     = ""
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGNOMFAMI     = ""
VSDGNOMGRP      = ""
VSDGNOMMARCA    = ""
VSDGDEPART      = ""
VSDGNOMDEPART   = ""

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 15 Width 72

    Label  @ 00,00 "Representante"  For "TG_REPRESEN"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 01,09 Width 25 "A15" 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  @ 08,00 "Departamento"  For "TG_DEPART"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART    
    
    Label  @ 00,35 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 4 Width 33
    "Com Pre‡o, S¢ os itens novos",
    "Com Pre‡o, Todos",
    "Sem Pre‡o, S¢ os itens novos",
    "Sem Pre‡o, Todos"
      Tag "TG_Opcao_Preco"
      To VSG_OPCAP_PRECO
      
    Pushbutton @ 11,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 11,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal Then QuitLoop EndIf

  If VSDGREPRESEN=""
     Then Fastmsg("Representante obrigat¢rio !")
          loop
  EndIf
  
  View "Tbprrep"
  Moveto [Codigo da Tabela]
  Locate TABELA, VSDGREPRESEN
  If Not RetVal
     Then Mensagem("Representante n„o localizado nesta rela‡„o!")
          Loop
  EndIf

  Aguarde("Aguarde, adicionando novos itens")
  {Ask} {Tbprrit} Check
  Moveto [Codigo da Tabela ] TypeIn TABELA
  Moveto [Codigo do Representante] Typein "~VSDGREPRESEN.."
  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 [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
  Do_It!
  ClearAll
  
  If IsEmpty("Answer")
     Then 
          Mensagem("N„o h  registros conforme sele‡„o!")
          Loop
     Else 
          {Ask} {Answer}
          Moveto [Codigo do Representante] Typein "Changeto ~CODREP"
          Do_it!
          ClearAll
          
          If VSG_OPCAP_PRECO=3 or
             VSG_OPCAP_PRECO=4    
             Then
                  {Ask} {Answer}
                  Moveto [Codigo da Tabela] TypeIn "~TABELA"
                  Moveto [Codigo do Representante] Typein "~CODREP"
                  Moveto [Preco Unitario  ] TypeIn "Changeto Blank"
                  Do_it!
                  CleaRall
          EndIf 

          If VSG_OPCAP_PRECO=1 Or
             VSG_OPCAP_PRECO=3 
             then {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprrit" Enter {NewEntries} clearall 
          endif
          
          If VSG_OPCAP_PRECO=2 Or 
             VSG_OPCAP_PRECO=4 
             then {Tools} {More} {Add} Typein "Answer" Enter Typein "Tbprrit" Enter {Update}     clearall 
          endif

          Mensagem("Processo concluido !")
  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("Padrao")
LimpAguarde()

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

Digitar=True

Moveto ANT_TAB
Moveto Field ANT_CAMP

Return True
EndProc ;Copia_Itens_Representantes()

;*******************************************************************************
;* Rotina Dialog                                                               *
;*******************************************************************************
Proc SD_TBPRECO_Copia_Itens_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"] =  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_DEPART"         : Campo="TG_MARCA"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_DEPART"
            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_DEPART"
                    Case Campo="TG_DEPART"      : 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 Copia_Itens_TbPreco()
Private Reg_item,NR,itemok,EXISTE_PRECO

TABELA = [TbPrCab->Codigo da Tabela]

Do_It!
ClearAll
LimpAguarde()

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

While True
  ShowDialog "Inclus„o de Itens" Proc "SD_TBPRECO_Copia_Itens_TbPreco"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 05,12   Height 15 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  @ 08,00 "Departamento"  For "TG_DEPART"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART    
    
    Label  @ 00,35 "Op‡Æo de Pre‡o"  For "TG_Opcao_Preco"
    RadioButtons @ 01,35 Height 4 Width 33
    "Com Pre‡o, S¢ os itens novos",
    "Com Pre‡o, Todos",
    "Sem Pre‡o, S¢ os itens novos",
    "Sem Pre‡o, Todos"
      Tag "TG_Opcao_Preco"
      To VSG_OPCAP_PRECO

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  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
  Moveto [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
  Do_It!
  ClearAll

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

  switch
    case OpContinuar="Cliente":
      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

       Itemok = False
       Moveto "TbPrcit"
       Moveto [Codigo do Item]
       Locate TABELA,CODCLI,Reg_Item["Codigo do Item"]
       If Not RetVal
          Then 
               Itemok = True
               End Down
               [Codigo da Tabela    ]=TABELA
               [Codigo              ]=CODCLI
               [Codigo do Item      ]=Reg_Item["Codigo do Item"]

          else
               If VSG_OPCAP_PRECO=2 Or 
                  VSG_OPCAP_PRECO=4 
                  then Itemok = True 
               endif
       EndIf

       If Itemok
          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=3 Or
                  VSG_OPCAP_PRECO=4
                  Then 
                       [Preco Unitario      ]=BlankNum()
                       [Data Ultimo Reajuste]=BlankDate()
                       [Taxa Ultimo Reajuste]=BlankNum()
                  Else 
                       [Preco Unitario      ]=Reg_Item["Preco Unitario"]
                       [Data Ultimo Reajuste]=Reg_Item["Data Ultimo Reajuste"]
                       [Taxa Ultimo Reajuste]=Reg_Item["Taxa Ultimo Reajuste"]
               EndIf   

               [Em Promocao         ]=Reg_Item["Em Promocao"]
               UnLockRecord
       Endif

       Moveto "Answer"
    EndScan
    Do_it!
    ClearAll
    
    case OpContinuar="Representante":
      NR=NRecords("Answer")
     
      View "\\Sistemas\\Estoque\\Itens"
      View "TbPrrit"
      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

       Itemok = False
       Moveto "TbPrrit"
       Moveto [Codigo do Item]
       Locate TABELA,CODREP,Reg_Item["Codigo do Item"]
       If Not RetVal
          Then 
               Itemok = True
               End Down
               [Codigo da Tabela    ]=TABELA
               [Codigo do Representante]=CODREP
               [Codigo do Item      ]=Reg_Item["Codigo do Item"]

          else
               If VSG_OPCAP_PRECO=2 Or 
                  VSG_OPCAP_PRECO=4 
                  then Itemok = True 
               endif
       EndIf

       If Itemok
          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=3 Or
                  VSG_OPCAP_PRECO=4
                  Then 
                       [Preco Unitario      ]=BlankNum()
                       [Data Ultimo Reajuste]=BlankDate()
                       [Taxa Ultimo Reajuste]=BlankNum()
                  Else 
                       [Preco Unitario      ]=Reg_Item["Preco Unitario"]
                       [Data Ultimo Reajuste]=Reg_Item["Data Ultimo Reajuste"]
                       [Taxa Ultimo Reajuste]=Reg_Item["Taxa Ultimo Reajuste"]
               EndIf   

               [Em Promocao         ]=Reg_Item["Em Promocao"]
               UnLockRecord
       Endif

       Moveto "Answer"
    EndScan
    Do_it!
    ClearAll
    
  endswitch

  LimpAguarde()

  Mensagem("Processo concluido !")
        
  QuitLoop
EndWhile 

LimpAguarde()


switch
  case OpContinuar="Cliente":
    View "TbPrIte"
    CoEdit "TbPrCab"
    Moveto [Codigo da Tabela]
    Locate TABELA
    PickForm "2"
    SetaCorRegistro("Padrao")
    
    Moveto "TbprIte" SetaCorRegistro("Padrao")
    Moveto "TbprCab" SetaCorRegistro("Padrao")
    Moveto "Tbprcli" SetaCorRegistro("Padrao")
    Locate TABELA, CODCLI
    Moveto "Tbprcit"

  case OpContinuar="Representante":
    View "TbPrIte"
    CoEdit "TbPrCab"
    Moveto [Codigo da Tabela]
    Locate TABELA
    PickForm "3"
    SetaCorRegistro("Padrao")
    
    Moveto "TbprIte" SetaCorRegistro("Padrao")
    Moveto "TbprCab" SetaCorRegistro("Padrao")
    Moveto "Tbprrep" SetaCorRegistro("Padrao")
    Locate TABELA, CODREP
    Moveto "Tbprrit"

endswitch


EndProc ;Copia_Itens_TbPreco()

;*******************************************************************************
;* 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="PgDn=Finalizar"
      MSGCAMPO=Field()
      AguardaTeclasPadraoIt2()

      Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal="F3": SemFicha()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal=-115 Or RetVal=-116 :  
             OpContinuar=""
             Tecla_Funcao=RetVal
             CHAVECOND=9
             Del
             Return
      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
           Tecla_Funcao="F5"
           OpContinuar=""
           Return
      Case Retval="PGDN": 
           Del
           CHAVECOND=9
           Tecla_Funcao=""
           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 CHAVECOND=0
         Then TECLA=TECLA+"Del=Excluir  "
         else TECLA=TECLA+"             "
      EndIf

      MSGCAMPO=Field()
      If Field()="Condicao de Pagamento"
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      EndIf
      If Field()="Taxa Financeira"
         Then MSGCAMPO="Taxa Financeira a ser aplicada"
      EndIf

      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 Dialog                                                               *
;*******************************************************************************
Proc SD_PegarCusto(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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESAS"       : Campo="NO"
            Case Campo="TG_TIPOEST"        : Campo="TG_EMPRESAS"
            Case Campo="TG_FAMI"           : Campo="TG_TIPOEST"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_DEPART"         : Campo="TG_MARCA"
            Case Campo="TG_MESANO"         : Campo="TG_DEPART"
            Case Campo="TG_Opcao_Preco"    : Campo="TG_MESANO"
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESAS"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESAS"    : Campo="TG_TIPOEST"
                    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_DEPART"
                    Case Campo="TG_DEPART"      : Campo="TG_MESANO"
                    Case Campo="TG_MESANO"      : 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_PegarCusto()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc PegarCusto()
Private TABELA,NR,showok

Mensagem("Tenha certeza que o Mˆs/Ano da ficha de estoque usada// como base para esta farefa esteja correta, caso necessario //reprocesse o estoque antes de prosseguir!")


TABELA = [TbPrCab->Codigo da Tabela]

Echo Normal
Echo Off

VSDGEMPRESA     = ""
VSDGMESANO      = ""
VSDGFAMI        = ""
VSDGGRP         = ""
VSDGMARCA       = ""
VSDGTIPOEST     = ""
VSDGDESCTIPOEST = ""
VSDGDEPART      = ""
VSDGNOMDEPART   = ""

;----------------------------
do_it!
ClearAll

While True
                                   
  ShowDialog "Carregar valor de custo" Proc "SD_PegarCusto"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB"
    @ 07,14 Height 17 Width 72
    
    Label  @ 00,00 "Empresa"  For "TG_EMPRESAS"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESAS"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
    
    Label  @ 02,00 "Tipo do Estoque"  For "TG_TIPOEST"
    Accept @ 03,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 03,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

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

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

    Label  @ 08,00 "Marca"  For "TG_MARCA"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 10,00 "Departamento"  For "TG_DEPART"
    Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 11,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART    
    
    Label  @ 00,35 "Mˆs/Ano"  For "TG_MESANO"
    Accept @ 01,36  Width 10 "A07"  Picture "##.####" Tag "TG_MESANO" To VSDGMESANO

    Label  @ 02,35 "Op‡Æo de Pre‡o/Atual"  For "TG_Opcao_Preco"
    RadioButtons @ 03,35 Height 2 Width 33
     "éltimo Custo",
     "Custo M‚dio"
       Tag "TG_Opcao_Preco"
       To VSG_OPCAP_PRECO    

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

  EndDialog
  If Not RetVal
     Then showok=false
          quitloop
  EndIf

  If IsBlank(VSDGEMPRESA)
     Then Loop
  EndIf

  showok=true
  quitloop
EndWhile

while showok

  VSDGMES=SubStr(VSDGMESANO,1,2)
  VSDGANO=SubStr(VSDGMESANO,4,4)

  LimpAguarde()
  
  Aguarde("Aguarde, selecionando 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 do Departamento ] TypeIn "~VSDGDEPART.."
  Do_It!
  ClearAll

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

  NR=NRecords("Answer")
 
  View "\\Sistemas\\Estoque\\SdEstq"
  View "Tbprite"
  Coedit "Answer"
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, atualizando dados "+BARRA_STRING)

    moveto "\\sistemas\\estoque\\sdestq"
    moveto [codigo da empresa]
    locate vsdgempresa,[answer->codigo do item],vsdgano,vsdgmes
    if retval
       then 
            Moveto "Tbprite"
            Moveto [Codigo da Tabela]
            Locate TABELA,[Answer->Codigo do Item]
            If RetVal
               Then
                    switch
                      case VSG_OPCAP_PRECO=1 :[Preco Unitario]=round([\sistemas\estoque\sdestq->Preco de Custo],2)
                      case VSG_OPCAP_PRECO=2 :[Preco Unitario]=round([\sistemas\estoque\sdestq->Custo Total Atual]/[\sistemas\estoque\sdestq->Saldo Atual],2)
                    endswitch
                    [Data Ultimo Reajuste]=BlankDate()
                    [Taxa Ultimo Reajuste]=BlankNum()
                    UnLockRecord
            endif         
   Endif

   Moveto "Answer"
  EndScan
  Do_it!
  ClearAll

  LimpAguarde()

  Mensagem("Processo concluido !")

QuitLoop
EndWhile 

LimpAguarde()

Coedit "TbprCab"
PickForm "F"
SetaCorRegistro("Padrao")
moveto [Codigo da Tabela]
Locate TABELA
while islockrecord() endwhile

Moveto "Tbprite"

EndProc ;PegarCusto()

;*******************************************************************************
;* Rotina aguarda teclas padrao                                                *
;*******************************************************************************
Proc AguardaTeclasPadraoEspecial()

BarraPadraoIt2()
Wait Field
  Until "ESC","ENTER",
        "HOME","UP","PGUP","PGDN",
        -94,-33,-115,-116,-133,-134,-68,-25,-46,-19,
        "F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"
ClearSpeedBar      

Endproc

;*******************************************************************************
;* 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

OpContinuar="Cliente"                        

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

OpContinuar="Representante"

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")
  Tecla_Funcao="F5"
  
  While Not IsBlank(Tecla_Funcao)
    If OpContinuar=""
       Then Switch
              Case Tecla_Funcao=-116:
                   Switch
                     Case Table()="Tbprite"        : Tecla_Funcao=-25
        						 Case Table()="Tbprcpg"        : Tecla_Funcao=-46
                     Case Table()="Tbprcli"        : Tecla_Funcao=-19
                     Case Table()="Tbprrep"        : Tecla_Funcao="F5"
                     OtherWise                     : Tecla_Funcao=""
                   EndSwitch
        			Case Tecla_Funcao=-115:
                   Switch
                     Case Table()="Tbprite"        : Tecla_Funcao=-19
        						 Case Table()="Tbprcpg"        : Tecla_Funcao="F5"
                     Case Table()="Tbprcli"        : Tecla_Funcao=-25
                     Case Table()="Tbprrep"        : Tecla_Funcao=-46
                     OtherWise                     : Tecla_Funcao=""
                   EndSwitch  
            EndSwitch
    EndIf
    
    If Table()="Tbprcli" OR 
       Table()="Tbprrep"
       Then Moveto "TbPrCab"
            UnLockRecord
            PickForm "F"
    EndIf
             
    Continuar=True
    While Continuar
      Switch
        Case Tecla_Funcao="F5" Or OpContinuar="Tbpreco"  :
             Moveto "Tbprite"
             While True
               CHAVEI()
               If CHAVEI=9
                  Then Continuar=False
                       QuitLoop
               EndIf
               Controla_EdicaoI()
             EndWhile
             
        Case Tecla_Funcao=-25 Or OpContinuar="CPagto":
             Moveto "Tbprite" SetaCorRegistro("Padrao")
             Moveto "TbPrCPg"
             While True
               CHAVECOND()
               If CHAVECOND=9
                  Then Continuar=False
                       QuitLoop
               EndIf
               Controla_EdicaoCPG()
             EndWhile
             
        Case Tecla_Funcao=-46 Or OpContinuar="Cliente":
             Moveto "TbPrCab"
             UnLockRecord
             PickForm "2"
             
             Moveto "Tbprite" SetaCorRegistro("Padrao")
             Moveto "Tbprcli"
             TabCliente=True
             While TabCliente
               CHAVECLI()
               If CHAVECLI=9
                  Then Continuar=False
                       QuitLoop
               EndIf
               Controla_EdicaoCli()
             EndWhile  
                
        Case Tecla_Funcao=-19 Or OpContinuar="Representante":
             Moveto "TbPrCab"
             UnLockRecord
             PickForm "3"
  
             Moveto "Tbprite" SetaCorRegistro("Padrao")
             Moveto "Tbprrep"
             TabRepres=True
             While TabRepres
               CHAVEREP()
               If CHAVEREP=9
                  Then Continuar=False
                       QuitLoop
               EndIf
               Controla_EdicaoRep()
             EndWhile
             
      EndSwitch        
      OpContinuar=""
      If Tecla_Funcao=""
         Then Moveto "TbPrCab"
              UnLockRecord
              PickForm "F"
      EndIf
    EndWhile   
  EndWhile
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,\\Sistemas\\Cadastro\\Bib_Proc"

SYS_VALOR()

;---- M‚todo p/ Localizar o Item -----------------------------------------------
If IsFile(PrivDir()+"TBPRECO.ini")
   Then LeiaINI(PrivDir()+"TBPRECO.ini","LOCALIZA_CODIGO.S.null")
EndIf
If Not IsAssigned(LOCALIZA_CODIGO) Then LOCALIZA_CODIGO=""  EndIf
ModoLocalizarItem("","","")

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
