;** Marcas *********************************************************************
;*  Manutencao Cadastro de Marcas                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 20/06/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Atualiza_Itens()
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 09/02/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Campos Comissao/Tabela Cosignacao
;Ultima Alteracao: 19/02/2009 por Antonio Marcelo Alves   
;Motivo Alteracao: Inclusao Campo Codigo_Fornecedor_Marca
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas   
;Ultima Alteracao: 10/01/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Atualiza_Itens()
;Ultima Alteracao: 10/04/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Atualiza_Itens()
;Ultima Alteracao: 17/09/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustado rotina p/ adicionar acima de 999 cądigos 

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
Moveto [Codigo da Marca]
End
SEQ  = [Codigo da Marca]
Down

While true
  SetaCorRegistro("Editar")
  
  TECLA="F5=Atualiza Itens  "
  AguardaTeclasPadrao()

   Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal="F3": SemFicha()
      Case RetVal="F5":
           ConfGeral("Aplicar as alteraes no cadastro de Itens ?")
           If Ok="S"
            Then Atualiza_Itens()
                 CHAVE=9
                 Quitloop
           EndIf      
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             PAGINA("Marcas","MR")
             If EDITAR="S"
                Then CHAVE=0
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then DEL
                                Else UnLockrecord
                             EndIf
                        Else Moveto [Codigo da Marca]
                             End
                             SEQ = [Codigo da Marca]
                             Down
                             QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="ESC":
           CHAVE=9
           Del
           QuitLoop
      Case Retval="ENTER": 
           SEQ=[]   
           Del
           SEQ=Checa_Codigo(SEQ)
           If IsBlank(SEQ)
              Then QuitLoop
           EndIf                       

           Locate SEQ
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Down
                   [Codigo da Marca]=SEQ
           EndIf
           If IsLockRecord()
              Then End
                   SEQ=[Codigo da Marca]
                   Down
                   Moveto [Codigo da Marca]
                   Loop
           EndIf
           Quitloop
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Checagem do Cądigo                                              *
;*******************************************************************************
Proc Checa_Codigo(cod)
Private cod

If Not IsBlank(cod)
   Then cod=AlinhE(cod)
EndIf   

If IsBlank(cod)
   Then End
        cod=Novo_Codigo()
EndIf
Return cod
EndProc ;Checa_Codigo()

;*******************************************************************************
;* Rotina para Criar Novo Cądigo                                               *
;*******************************************************************************
proc Novo_Codigo()
Private cod,vr

cod=[Codigo da Marca]
If IsBlank(cod)
   Then cod="0"
EndIf  
vr=SubStr(cod,1,1)
If vr>"9" or cod="999"
   Then If SubStr(cod,2,2)="99"
	         Then Switch
					        Case vr="9" : cod="A00"
					        Case vr="Z" : Mensagem("Fim de codigo disponivel !")
									              cod=""
					        OtherWise   : cod=Chr(asc(vr)+1)+"00"
					      EndSwitch
					 Else cod=AlinhE(vr+StrVal(NumVal(SubStr(cod,2,2))+1))     
				EndIf	      
   Else cod=AlinhE(StrVal(NumVal(cod)+1))
EndIf

Return cod 
EndProc ;Novo_Codigo()

;******************************************************************************
;** Rotina Alinhamento Especial Codigo Destinat Letras e Numeros            ***
;******************************************************************************
proc AlinhE(vr)
Private vr
If Len(vr)<3 And SubStr(vr,1,1)>"9"
   Then vr=SubStr(vr,1,1)+AlinhM(SubStr(vr,2,2),2)     
   Else vr=AlinhM(vr,3)			   
EndIf	  
Return vr
EndProc

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

Moveto [Descricao da Marca]
While True

  TECLA=" Esc=Retornar  "

  If CHAVE=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf
  If Field()="Tabela Preco Consignacao" Or
     Field()="Codigo_Fornecedor_Marca"
     Then TECLA=TECLA+"F1=Tabelas  "
  EndIf
  MSGCAMPO=Field()

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

  Switch

  Case Retval="F1":
       If Field()="Tabela Preco Consignacao" Or
          Field()="Codigo_Fornecedor_Marca"
          Then ConsultaF1()
          
       EndIf
  Case Retval="ESC":
       If Field()="Descricao da Marca"
          Then If QuerDesfazer("")
                  Then If CHAVE=1
                          Then Del
                          Else Undo
                       EndIf
                       CHAVE=9
                       QuitLoop
               EndIf
          Else Left
       EndIf
  Case Retval="ENTER":
       If Field() = "Codigo_Fornecedor_Marca"
          Then QuitLoop
          Else Right
       EndIf
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Atualizar Itens                                                 *
;*******************************************************************************
Proc Atualiza_Itens()

Do_It!
ClearAll

NR = NRecords("Itens")
CoEdit "Itens"
Moveto [Codigo da Marca]
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando Itens "+BARRA_STRING)
  If Busca_Lookup("Codigo da Marca",[Codigo da Marca],"SM")
     Then cod=[Codigo da Marca]
          [Codigo da Marca]=""
          [Codigo da Marca]=cod
  EndIf
EndScan
Do_It!
ClearAll

EndProc

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

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
CoEdit "Marcas"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll

Release Vars All
Release Procs All
