;** Cores  *********************************************************************
;*  Manutencao Cadastro de Cores                                               *
;*******************************************************************************
;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: 27/11/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Iten_Cor
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;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: 02/01/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro("Editando") 
;Ultima Alteracao: 16/07/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes CHAVE() Incluido Fun‡Æo
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 17/07/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ sequˆncia de c¢digos permitir lan‡amentos at‚ Z999

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

While true
  SetaCorRegistro("Editar")

  TECLA=""
  
  AguardaTeclasPadrao()
  
  If Retval=-33
     Then
       ShowPopup " Fun‡”es " CENTERED
        "~A~tualiza Itens"  : " Aplicar as altera‡”es no cadastro de Itens" : "F5",
        "~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="F5": 
           ConfGeral("Aplicar as altera‡”es 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("Cores","MR")
             If EDITAR="S"
                Then CHAVE=0
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then Grava_LogEx("Cores")
                                     DEL
                                Else UnLockRecord
                             EndIf
                        Else Moveto [Codigo da Cor_Tecido]
                             End
                             SEQ = [Codigo da Cor_Tecido]
                             Down
                             QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="ESC":
           CHAVE=9
           Del
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([])
              Then If IsBlank(SEQ)
                      Then SEQ="1"
                      Else ;SEQ=StrVal(NumVal(SEQ)+1)
                           vr=SubStr(SEQ,1,1)
                           If vr>"9" or SEQ="9999"
                              Then If SubStr(SEQ,2,3)="999"
                           	          Then Switch
                           					        Case vr="9" : SEQ="A000"
                           					        Case vr="Z" : Mensagem("Fim de codigo disponivel !")
                          									              SEQ=""
                          					        OtherWise   : SEQ=Chr(asc(vr)+1)+"000"
                           					       EndSwitch
                           			 		  Else SEQ=AlinhE(vr+StrVal(NumVal(SubStr(SEQ,2,3))+1))     
                          	 			 EndIf	      
                              Else SEQ=AlinhE(StrVal(NumVal(SEQ)+1))
                           EndIf
                    EndIf
                    []=SEQ
           EndIf
           []=ALINH()
           CODIGO=[]
           Del
           Locate CODIGO
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Down
                   [Codigo da Cor_Tecido]=CODIGO
           EndIf
           If IsLockRecord()
              Then End
                   SEQ=[Codigo da Cor_Tecido]
                   Down
                   Moveto [Codigo da Cor_Tecido]
           EndIF
           Quitloop
      EndSwitch

EndWhile
EndProc

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

Moveto [Descricao da Cor_Tecido]
While True

      TECLA=" Esc=Retornar  "
      If CHAVE=0
         Then TECLA=TECLA+"Del=Excluir  "
      EndIf

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

      Switch

      Case Retval="ESC":
           If Field()="Descricao da Cor_Tecido"
              Then If QuerDesfazer("")
                      Then If CHAVE=1
                              Then Del
                              Else Undo
                           EndIf
                           CHAVE=9
                           QuitLoop
                   EndIf
              Else Left     
           EndIf
      Case Retval="ENTER":
           Switch
                 Case Field()="Descricao da Cor_Tecido":
                      If IsBlank([])Then Loop EndIf
                      Moveto [Sigla Cor_Tecido]
                 Case Field()="Sigla Cor_Tecido":
                      If IsBlank([])Then Loop EndIf
                      QuitLoop
                      Right
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("")
                      Then Grava_LogEx("Cores")
                           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 Cor_Tecido]
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando Itens "+BARRA_STRING)
  If Busca_Lookup("Codigo da Cor_Tecido",[Codigo da Cor_Tecido],"SM")
     Then cod=[Codigo da Cor_Tecido]
          [Codigo da Cor_Tecido]=""
          [Codigo da Cor_Tecido]=cod
  EndIf
EndScan
Do_It!
ClearAll

NR = NRecords("Iten_Cor")
CoEdit "Iten_Cor"
Moveto [Codigo da Cor_Tecido]
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando Itens/Cores "+BARRA_STRING)
  If Busca_Lookup("Codigo da Cor_Tecido",[Codigo da Cor_Tecido],"SM")
     Then cod=[Codigo da Cor_Tecido]
          [Codigo da Cor_Tecido]=""
          [Codigo da Cor_Tecido]=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 "Cores"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9 Then QuitLoop EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll

Release Vars All
Release Procs All
