;** PED_GRP ********************************************************************
;*  Ajusta cores para itens relacionados a grupos vinculados a regras          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 13/02/2015 por Bruno Carvalho
;Ultima Alteracao: 20/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes Ask "Iten_Com" p/ o campo [Producao Esgotada]
;Ultima Alteracao: 27/01/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes TG_REFERENCIA
;Ultima Alteracao: 13/03/2017 por Bruno Carvalho 
;Motivo Alteracao: Adicionado ClearImage na tabela "\\Sistemas\\Estoque\\Iten_Com" -> Carrega_Array()
;Ultima Alteracao: 13/03/2017 por Bruno Carvalho 
;Motivo Alteracao: Ajustes Carrega_Array()
;Ultima Alteracao: 05/03/2017 por Bruno Carvalho 
;Motivo Alteracao: Ajustes com o IsLockRecord ao abrir a tabela "Ped_regc" -> Sol. 34331 
;Ultima Alteracao: 02/07/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado [Producao Esgotada] da tabela "Iten_Com" p/ a tabela "Itens"
                
; Para validar estas regras, ser  preciso adicionar nos parmetros do P_FAC no  
; diret¢rio faccao qual o modo de utilizaÆo para gerar pedidos, se S para SORTIDOS
; ou R para ser conforme as regras determinadas. 
;Ultima Alteracao: 20/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia

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

While True
  Moveto [Codigo_Regra]
  End
  NLANC = [Codigo_Regra]
  If OPCAO_FORM="F"
     Then Down Down
     Else PgDn 
  EndIf
  
  Seta_Sequencia(NLANC,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Moveto [Descricao_Regra]
  SetaCorRegistro("Editar")
  While True
    Finalizar=False
    TECLA=""
                                                     
    AguardaTeclasPadrao() 
    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             Finalizar=False
             If OPCAO_FORM="F"
                 Then PAGINA("Ped_regc","MR")
                 Else PAGINA("Ped_regc","MT")
             EndIf
             If EDITAR="S"                         
                Then CHAVEC=0
                     Echo Normal
                     Echo Off
                     REGRA     = [Descricao_Regra]
                     INATIVO   = [Inativo_Regra]
                     ALTERA_REGRA = True
                     DIGITAC()
                     UnLockRecord
                     If CHAVEC<>9
                        Then PickForm "1"
                             Controla_EdicaoC()
                        Else QuitLoop     
                     EndIf        
                 Else If EXCLUIR="S"
                         Then If QuerExcluir("deste Registro")
                                 Then PickForm "1"
                                      EXCLUSAOM()
                                 Else UnLockRecord
                              EndIf
                              If OPCAO_FORM="1"
                                 Then PickForm "1"
                                 Else PickForm "F"
                              EndIf
                         Else QuitLoop
                    EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC": 
           Switch
           Case Field()="Descricao_Regra" Or Field()="Codigo_Regra":
                If [Descricao_Regra] <> "" Or [Inativo_Regra] <> ""
                   Then If QuerDesfazer("")
                           Then Del
                                QuitLoop
                           Else Loop     
                        EndIf   
                EndIf
                CHAVEC=9
                Del
                Return                       
           OtherWise:
                Left
           EndSwitch     
      Case Retval="ENTER":
         Switch
            Case Field()="Codigo_Regra"    : If IsBlank([]) Then Loop EndIf
                                             Moveto [Descricao_Regra]
            Case Field()="Descricao_Regra" : If IsBlank([]) Then Loop EndIf
                                             Moveto [Inativo_Regra]
            Case Field()="Inativo_Regra"   :
                 If IsBlank([]) 
                    Then []="N" 
                 EndIf
                 COD_REGRA = [Codigo_Regra]
                 DES_REGRA = [Descricao_Regra]
                 INA_REGRA = [Inativo_Regra]
                 Del
                 
                 If OPCAO_FORM="F"
                    Then PickForm "1"
                 EndIf
                 Moveto [Codigo_Regra]
                 Locate COD_REGRA                 
                 If Retval
                    Then CHAVEC=0
                    Else CHAVEC=1
                         End Down PgDn 
                         [Codigo_Regra   ]=COD_REGRA
                         [Descricao_Regra]=DES_REGRA
                         [Inativo_Regra  ]=INA_REGRA
                 EndIf
                 Moveto [Inativo_Regra]
                 
                 If Not IsLockRecord() 
                    Then Return
                 EndIf     
                 
                 If CHAVEC=1
                    Then Del
                 EndIf
                 If OPCAO_FORM="F"
                    Then PickForm "F"
                 EndIf
                 QuitLoop
         EndSwitch
       EndSwitch
  EndWhile
EndWhile
                      
EndProc                

;*******************************************************************************
;* Rotina para Digitacao do(s) Grupo(s) vinculados  Regra                     *
;*******************************************************************************
Proc CHAVEG()

While True 
  Moveto "Ped_regg"
  Moveto [Codigo_Grupo]
  End
  COD_GRP = [Codigo_Grupo]
  Down
  [Codigo_Regra   ] = [Ped_regc->Codigo_Regra]
  
  Moveto [Codigo_Grupo]                       
  
  Seta_Sequencia(COD_GRP,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  
  SetaCorRegistro("Editar")
  Moveto [Descricao_Grupo]
  While True
   
   TECLA= " Esc=Retornar  Alt+F=Funes  PgUp/PgDn "
   Nome_Campo()
   Prompt TECLA
   Wait Field
        Message MSGCAMPO
        Until "ESC","ENTER","F3","F5","F7","HOME","UP","PGUP","PGDN","PGUP",-33
   
   Switch
    Case RetVal=-94  : MsgTeclasPadrao()
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME": 
         Del
         While True
           PAGINA2("Ped_regg")
           If EDITAR="S"
               Then CHAVEG=0
                    Atualiza("")
                    Controla_EdicaoI()
                    If Finalizar Then QuitLoop EndIf
               Else If EXCLUIR="S"
                       Then If QuerExcluir("deste Registro")
                               Then EXCLUSAOI()
                               Else UnLockRecord
                            EndIf
                       Else QuitLoop
                  EndIf
           EndIf
           SetaPosForm()
         EndWhile
         If Finalizar 
            Then CHAVEG=9
                 Return 
         EndIf
         QuitLoop
    Case Retval="ESC": 
         Switch        
           Case Field()="Data_Entrega"    : Moveto [Descricao_Grupo]
           Case Field()="Descricao_Grupo" : If CHAVEC=1
                                               Then If QuerDesfazer("as incluses de registro neste agrupamento")
                                                       Then ExclusaoM()     
                                                       Else Loop                                               
                                                    EndIf
                                               Else COR_MENSAGEM = "1"
                                                    ConfGeral("Desejar sair desta rotina ?")
                                                    If Ok<>"S"
                                                       Then Loop
                                                    EndIf
                                                    Del
                                            EndIf
                                            CHAVEG=9
                                            Return
         EndSwitch                                   
    Case Retval="PGDN":
         Del
         CHAVEG=9
         Return
    Case Retval="ENTER":
         Switch
           Case Field()="Descricao_Grupo" : If IsBlank([]) Then Loop EndIf
                                            Moveto [Data_Entrega]
           Case Field()="Data_Entrega"    : If IsBlank([Data_Entrega]) 
                                               Then [Data_Entrega] = Today() 
                                            EndIf
                                            Moveto "Ped_RegC"
                                            [Codigo_Grupo   ] = [Ped_RegG->Codigo_Grupo]
                                            [Descricao_Grupo] = [Ped_RegG->Descricao_Grupo]
                                            [Data_Entrega   ] = [Ped_RegG->Data_Entrega]        
                                            Moveto "Ped_RegG"
                                            CHAVEG=5
                                            Return
         EndSwitch
    EndSwitch
  EndWhile
EndWhile

EndProc   ; CHAVEG()

;*******************************************************************************
;* Rotina para Digitacao do(s) Grupo(s) vinculados  Regra                     *
;*******************************************************************************
Proc CHAVEI()
FACA_DIGITAI = True
           
While True
  Moveto "Ped_regi"
  
  Moveto [Sequencia do Item]
  End
  COD_GRUP = [Codigo_Grupo]
  COD_REGR = [Codigo_Regra]
  COD_ITE  = [Sequencia do Item]
  Down
  [Codigo_Regra] = [Ped_regc->Codigo_Regra]                                                                            
  Moveto [Sequencia do Item]
         
  Seta_Sequencia(COD_ITE,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  
  SetaCorRegistro("Editar")
  ;Moveto [Codigo do Item]
  While True

    TECLA= " Esc=Retornar               Alt+F=Funes  PgUp/PgDn "
    ;If Field()="Codigo do Item"
    ;   Then TECLA= " Esc=Retornar  F1=Consulta  Alt+F=Funes  PgUp/PgDn "
    ;EndIf
    
    Nome_Campo()
    Prompt TECLA
    If IsAssigned(PAGINA)
       Then If PAGINA = "F7"
               Then RetVal="F7"
               Else Release Vars PAGINA
            EndIf
    EndIf           
   
    If Not IsAssigned(PAGINA)
       Then Wait Field
            Message MSGCAMPO
            Until "ESC","ENTER","F3","F5","F7","HOME","UP","PGUP","PGDN","PGUP","F4","F8","F9",-33     
    EndIf
     
    If RetVal=-33
       Then Echo Normal
            Echo Off
  
            ShowPopup " Funes " CENTERED
             "F4 ~S~eleciona Itens           " : " Procedimento p/ Selecionar Itens " :"F4",
             "F8 ~A~ltera Descrio do Grupo " : " Altera Descrio do Grupo        " :"F8",
             Separator,
             "~C~ancelar                     " : " Cancelar a Operao              " : "CANCELAR"
            EndMenu
            To MenuVar
                                                                                                  
            Echo Off
            If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
            EndIf                                         
            RetVal=MenuVar
    EndIf
      
    Switch        
    Case RetVal="F1"   :
         If Field()="Codigo do Item" Or Field()="Sequencia do Item"  
            Then Moveto [Lookup_Item]
                 If ConsultaF1()
                    Then If Not Atualiza_Item("F1")
                            Then Mensagem("Item no localizado!")
                            Else [Lookup_Item] = ""
                                 Moveto [Codigo do Item]
                                 QuitLoop
                         EndIf
                 EndIf
                 Moveto [Codigo do Item]
                 Loop
         EndIf     
    Case RetVal="F4" :
         Del
         Seleciona_Itens()
         QuitLoop       
    Case RetVal="F8" :
         Del                
         Moveto "Ped_RegC"
         GRUPO     = [Descricao_Grupo]
         DTEntrega = [Data_Entrega   ]
         ALTERA_GRUPO = True 
         DIGITAC()
         SetaCorRegistro("Padrao")
         If GRUPO <> [Ped_RegC->Descricao_Grupo] Or 
            DTEntrega <> [Ped_RegC->Data_Entrega]
            Then Moveto "Ped_RegG"
                 Moveto [Codigo_Grupo]
                 Locate [Ped_RegC->Codigo_Grupo]
                 If RetVal
                    Then [Descricao_Grupo] = [Ped_RegC->Descricao_Grupo]
                         [Data_Entrega   ] = [Ped_RegC->Data_Entrega]
                 EndIf
         EndIf            
         Release Vars ALTERA_GRUPO,GRUPO,DTEntrega
         Moveto "Ped_RegI"
         QuitLoop
    Case Retval="PGDN":
         Del
         If RecordStatus("New")=True
            Then MENSAGEM("O grupo deve ter pelo menos 1(um) Item!")
                 QuitLoop
         EndIf
         CHAVEI=9
         Return
    Case RetVal="ESC" : 
         Switch
           Case Field()="Codigo do Item"  Or  
                Field()="Sequencia do Item":
                Del
                If RecordStatus("New")=True
                   Then ConfGeral("O grupo deve ter pelo menos 1(um) Item !////"+
                                  "Deseja retornar para a relao dos grupos sem incluir itens?")
                        If OK<>"S"
                           Then QuitLoop
                        EndIf         
                EndIf
                CHAVEI = 9 
                Return
          Otherwise : Left
         EndSwitch 
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           If IsAssigned(PAGINA)
              Then Release Vars PAGINA
                   Moveto [Sequencia do Item]
                   Locate SEQ_ITEM
           EndIf
           PAGINA("Ped_RegI","MR")
           If EDITAR="S"
               Then ;CHAVEI=0
                    ;Return
               Else If EXCLUIR="S"
                       Then If QuerExcluir("deste Registro")
                               Then Del
                               Else UnLockRecord
                            EndIf
                       Else QuitLoop
                  EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER": 
         If IsBlank([]) 
            Then Loop 
         EndIf
         Switch
           Case Field()="Codigo do Item" : 
                [] = AlinhM([],10)
                SEQ_ITEM = [Sequencia do Item]
                COD_ITEM = []
                If Atualiza_Item("CAMPO") And Verifica_Duplicidade("ITEM")
                   Then Quitloop
                   Else Mensagem(MSG_ERRO)
                        Loop
                EndIf
           Case Field()="Sequencia do Item" : 
                SEQ_ITEM = [Sequencia do Item]
                Del
                Locate SEQ_ITEM
                If Not RetVal
                   Then End
                        Switch
                          Case (SEQ_ITEM > [Sequencia do Item]+1) And [Sequencia do Item] >= 1 :
                               Mensagem("A sequncia do item deve ser sequencial !")
                               QuitLoop
                          Case SEQ_ITEM = 0 :
                               Mensagem("A sequncia do item deve ser um n£mero v lido !")
                               QuitLoop
                        EndSwitch   
                        Down
                        [] = SEQ_ITEM
                        Del
                        Seleciona_Itens()
                        QuitLoop
                   Else PAGINA = "F7"    
                        QuitLoop  
                EndIf
         EndSwitch
    EndSwitch
  EndWhile
EndWhile             

EndProc   ; CHAVEI()

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()
If Not IsAssigned(ALTERA_GRUPO) Then ALTERA_GRUPO = False EndIF

If ALTERA_GRUPO
   Then Moveto [Descricao_Grupo]
   Else Moveto [Descricao_Regra]    
EndIf
   
While True                                            
  TECLA= " Esc=Retornar"
  
  Nome_Campo()
  Prompt TECLA
  SetaCorRegistro("Editando")
  
  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","FIELDVIEW","F35"
  
  Switch
  Case Retval="ESC": 
       CHAVEC=9
       Switch
       Case Field()="Descricao_Grupo" And ALTERA_GRUPO :
            Switch 
              Case IsBlank([Data_Entrega])    : Mensagem("A data de Entrega deve ser informada !")
                                                Moveto [Data_Entrega]
                                                Loop
              Case IsBlank([Descricao_Grupo]) : Mensagem("A descrio do grupo deve ser informada !")
                                                Moveto [Descricao_Grupo]
                                                Loop 
            EndSwitch    
            Return 
       Case Field()="Descricao_Regra" And ALTERA_REGRA :
            Switch 
              Case IsBlank([Descricao_Regra]): Mensagem("A descrio do agrupamento deve ser informado !")
                                               Moveto [Descricao_Regra]
                                               Loop
              Case IsBlank([Inativo_Regra])  : Mensagem("O campo inativo deve ser informado como (S)SIM / (N)NAO !")
                                               Moveto [Inativo_Regra]
                                               Loop 
            EndSwitch
            Return 
       Case Field()="Data_Entrega" And ALTERA_GRUPO :
            Moveto [Descricao_Grupo]
       Case Field()="Descricao_Regra":
            If RecordStatus("Modified")
               Then If QuerDesfazer("")
                       Then If CHAVEC=1
                               Then EXCLUSAO_C()
                               Else Undo
                            EndIf
                    EndIf
            EndIf       
            CHAVEC=9
            Return
       Otherwise:
            Left
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field() = "Descricao_Grupo" And ALTERA_GRUPO : If IsBlank([]) Then Loop EndIf
                                                             Moveto [Data_Entrega]
         Case Field() = "Data_Entrega" And ALTERA_GRUPO    : If IsBlank([]) Then Loop EndIf                                          
                                                             Return
         Case Field() = "Descricao_Regra" And ALTERA_REGRA : If IsBlank([]) Then Loop EndIf
                                                             Moveto [Inativo_Regra]
         Case Field() = "Inativo_Regra" And ALTERA_REGRA   : If IsBlank([]) 
                                                                Then [] = "N" 
                                                                Else If INATIVO <> [Inativo_Regra]
                                                                        Then Switch
                                                                               Case [Inativo_Regra] = "N" : MSG="Deseja realmente ativar este agrupamento ?"
                                                                               Case [Inativo_Regra] = "S" : MSG="Deseja realmente inativar este agrupamento ?"
                                                                             EndSwitch  
                                                                             ConfGeral(MSG)
                                                                             If Ok<>"S"
                                                                                Then [Inativo_Regra] = INATIVO     
                                                                             EndIf    
                                                                     EndIf
                                                             EndIf                            
                                                             Return                                                    
         Case Field() = "Descricao_Regra" : If IsBlank([]) Then Loop EndIf
                                            Moveto [Inativo_Regra]
         Case Field() = "Inativo_Regra"   : If IsBlank([])
                                               Then [] = "N"
                                            EndIf 
                                                
                                            Return
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  EndSwitch
EndWhile

EndProc  ; (DigitaC)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITAG()
      
Moveto [Descricao_Grupo] 
While True
  
  TECLA=" Esc=Retornar  "

  If CHAVEG=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf
  
  Nome_Campo()
  Prompt TECLA
  SetaCorRegistro("Editando")
       
  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35"

  Switch
    Case Retval="ESC":
         If Field()="Descricao_Grupo"
            Then If QuerDesfazer("")
                    Then If CHAVEG=1
                            Then Del
                            Else If RecordStatus("Modified")
                                    Then Undo
                                 EndIf
                         EndIf
                         CHAVEG=9
                         QuitLoop
                 EndIf
            Else Left
         EndIf
    Case Retval="ENTER":   
         If IsBlank([]) 
            Then Loop
         EndIf
         If Field()="Data_Entrega"
            Then QuitLoop
            Else Right
         Endif
    Case Retval="FIELDVIEW" or Retval="F35":
         EDITFIELD()
    Case Retval="DEL":
         If CHAVERVC=0
            Then If QuerExcluir("")
                    Then DEL
                         QuitLoop
                 EndIf
         EndIf
  EndSwitch
EndWhile

EndProc  ;DIGITAG()       

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITAI()
      
While True
  If CHAVEI=0
     Then TECLA=TECLA+"Del=Excluir"
  EndIf

  TECLA= " Esc=Retornar  F1=Consulta  "
  ;If Field()="Codigo do Item"
  ;   Then If CHAVEI=0
  ;           Then TECLA= " Esc=Retornar  F1=Consulta  Del=Excluir  "
  ;        EndIf    
  ;   Else TECLA=" Esc=Retornar  "
  ;EndIf

  Nome_Campo()
  Prompt TECLA
  SetaCorRegistro("Editando")

  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35"
  
  Switch
  Case RetVal = "F1" : 
       If Field()="Codigo do Item" 
          Then Moveto [Lookup_Item]
               If ConsultaF1()
                  Then If Not Atualiza_Item("F1")
                          Then Mensagem("Item no localizado!")
                          Else [Lookup_Item   ] = ""
                       EndIf       
               EndIf
               Moveto [Codigo do Item]
               Loop
       EndIf      
  Case Retval="ESC":
       If Field()="Codigo do Item"
          Then If CHAVEI=1
                  Then Del
                  Else If RecordStatus("Modified")
                          Then Undo
                       EndIf
               EndIf
               CHAVEI=9
               QuitLoop
          Else Left
       EndIf
  Case Retval="ENTER":
       If Field() = "Codigo do Item"
          Then If Not IsBlank([])
                  Then [] = AlinhM([],10)
                       SEQ_ITEM = [Sequencia do Item]
                       COD_ITEM = []
                       If Atualiza_Item("CAMPO") And Verifica_Duplicidade("ITEM")
                          Then Quitloop
                          Else Mensagem(MSG_ERRO)
                               Loop
                       EndIf     
               EndIf        
          Else Right
       EndIf
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEI=0
          Then CONFIRMA()
               If OK="S"
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile

EndProc ;DigitaI()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAOM()
Aguarde("Excluindo")

Moveto "Ped_regg"
Del
While RecordStatus("New")=False
  EXCLUSAOI()
EndWhile
Moveto "Ped_regc"
Moveto [Codigo_Regra]
Del
LimpAguarde()
EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAOI()
Aguarde("Excluindo")
Atualiza("")
Moveto "Ped_regi"
While RecordStatus("New")=False
  Del
EndWhile
Moveto "Ped_regg"
Del
LimpAguarde()
EndProc

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc EXCLUSAO_C()

Moveto "Ped_regi"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  EXCLUSAO_I()
EndWhile

Moveto "Ped_regg"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  Del
EndWhile

Moveto "Ped_regc"
UnLockRecord
KeyPress "F7"

Del

EndProc   ; EXCLUSAO_C()

;*******************************************************************************
;* Exclusao do Item                                                            *
;*******************************************************************************
Proc EXCLUSAO_I()
CHAVEI=8

Moveto "Ped_regi"
Del

EndProc   ; (Exclusao_I)
       
;*******************************************************************************
;* Rotina para Atualizar o Item                                                *
;*******************************************************************************
Proc Atualiza_Item(PARAM)
Private REG_ITEM,ITEM,PARAM

If PARAM = "LIMPAR"
   Then [Descricao do Item   ] = ""  
        [Referencia          ] = ""  
        [Descricao Cor_Tecido] = ""  
        [Descricao_Grupo     ] = ""  
        [Codigo da Marca     ] = ""  
        [Descricao da Marca  ] = ""
        
        Return True
EndIf

If PARAM = "F1"
   Then ITEM = [Lookup_Item]
   Else ITEM = [Codigo do Item]
EndIf   

GetRecord "\\Sistemas\\Estoque\\Itens" ITEM To REG_ITEM
If RetVal
   Then [Codigo do Item      ] = REG_ITEM["Codigo do Item"]
        [Descricao do Item   ] = REG_ITEM["Descricao do Item"]  
        [Referencia          ] = REG_ITEM["Referencia"]
        If PARAM = "COR"
           Then [Descricao Cor_Tecido] = DESC_COR
           Else [Descricao Cor_Tecido] = REG_ITEM["Descricao da Cor_Tecido"]
        EndIf     
        
        If PARAM <> "COR"
           Then COD_GRUP = [Ped_RegG->Codigo_Grupo]
                DES_GRUP = [Ped_RegG->Descricao_Grupo]
        EndIf
        
        [Codigo_Regra        ] = [Ped_regc->Codigo_Regra]
        [Codigo_Grupo        ] = COD_GRUP  
        [Descricao_Grupo     ] = DES_GRUP   
        [Codigo da Marca     ] = REG_ITEM["Codigo da Marca"]  
        [Descricao da Marca  ] = REG_ITEM["Descricao da Marca"]
   Else [Codigo do Item] = ""
        MSG_ERRO         = "Item no localizado!"
        Return False                      
EndIf

Return True

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

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

;*******************************************************************************
;* Rotina para identificar o nome do campo                                     *
;*******************************************************************************
Proc Nome_Campo()  

Switch
  Case Field()="Codigo_Regra"         : MSGCAMPO = "Codigo do Agrupamento"
  Case Field()="Sequencia do Item"    : MSGCAMPO = "Sequncia do Item"
  Case Field()="Codigo do Item"       : MSGCAMPO = "Codigo do Item"
  Case Field()="Descricao do Item"    : MSGCAMPO = "Descrio do Item"
  Case Field()="Referencia"           : MSGCAMPO = "Referncia"
  Case Field()="Descricao Cor_Tecido" : MSGCAMPO = "Descrio da Cor do Tecido"
  Case Field()="Codigo_Grupo"         : MSGCAMPO = "Codigo do Grupo"
  Case Field()="Descricao_Grupo"      : MSGCAMPO = "Descrio do Grupo"
  Case Field()="Descricao_Regra"      : MSGCAMPO = "Descrio do Agrupamento"
  Case Field()="Codigo da Marca"      : MSGCAMPO = "Codigo da Marca"
  Case Field()="Descricao da Marca"   : MSGCAMPO = "Descrio da Marca"
  Case Field()="Inativo_Regra"        : MSGCAMPO = "Agrupamento Inativa ? (S)Sim / (N)No"
  Case Field()="Data_Entrega"         : MSGCAMPO = "Data de Entrega"
  Case Field()="Flag"                 : MSGCAMPO = "ENTER=Prosseguir"
  OtherWise                           : MSGCAMPO = Field() 
EndSwitch
  
EndProc ;Nome_Campo()  

;*******************************************************************************
;* Carrega F1 Personalizado do ShowDialog                                      *
;*******************************************************************************
Proc SDCarrega_F1(PARAM)
Private PARAM 

If DynArraysize(Array_Lista2) > 0
   Then Mensagem(" preciso remover os itens que esto selecionados !") 
        Return False
EndIf        
   
UnlockREcord
FormKey
Do_it!

Switch 
  Case PARAM = "Marcas"     : {Ask} {\\Sistemas\\Estoque\\Itens}
                              Moveto [Codigo da Marca   ] Check 
                              Moveto [Descricao da Marca] Check
                              Moveto [Tipo do Item      ] TypeIn "D"
                              If VSDGREFERENCIA <> ""
                                 Then Moveto [Referencia] TypeIn "~VSDGREFERENCIA.."   
                              EndIf   
                              Do_it!
                              Moveto "\\Sistemas\\Estoque\\Itens"
                              ClearImage
                              Monta_Opcoes("Marcas","F1_Temp")
                              Moveto "Answer" ClearImage
                              If Table()="Answer" Then ClearImage EndIf
  Case PARAM = "Referencia" : {Ask} {\\Sistemas\\Estoque\\Itens}                               
                              Moveto [Referencia       ] Check
                              Moveto [Descricao do Item] Check
                              Moveto [Tipo do Item     ] TypeIn "D"
                              If VSDGMARCA <> ""
                                 Then Moveto [Codigo da Marca] TypeIn "~VSDGMARCA.."
                              EndIf                             
                              Do_it!
                              Moveto "\\Sistemas\\Estoque\\Itens"
                              ClearImage                                                                                       
                              Monta_Opcoes("Referencia","F1_Temp")
                              Moveto "Answer" ClearImage
                              If Table()="Answer" Then ClearImage EndIf
EndSwitch                           

Moveto "Ped_regc"
CoeditKey
PickForm "1"
IsLockRecord()   
Moveto "Ped_regi"

Return True

EndProc ;SDCarrega_F1()

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
Proc Inclusao_Tabela_Item()
Private MSG

ADICAO=False

Switch
  Case Campo="TG_TABELA_MASTER":IND = NumVal(ControlValue("TG_TABELA_MASTER"))
                            
                                If DynArraySize(Array_Lista1)=0
                                   Then Return
                                EndIf
                                
                                ITEM_REF = Rtrim(SubStr(Array_Lista1[IND],1,8))
                                DESC_COR = Rtrim(SubStr(Array_Lista1[IND],10,20))
                                ITEM_GRP = Rtrim(SubStr(Array_Lista1[IND],30,8))     
                                DESC_GRP = Rtrim(SubStr(Array_Lista1[IND],38,20)) 
                                                 
                                PosI = Search(" X",Upper(ITEM_REF))                                
                                If PosI > 0
                                   Then If NumVal([Ped_regi->Codigo_Grupo]) <> NumVal(ITEM_GRP)
                                           Then MSG_AUX = "** Referncia j  existe na relao de itens do GRUPO "+Rtrim(ITEM_GRP)+" !"
                                           Else MSG_AUX = "** Referncia j  existe nesta relao de itens !"
                                        EndIf   
                                        ITEM_REF = SubstR(ITEM_REF,1,PosI-1)
                                        MSG = "//" + Completa("REFERENCIA: "+ITEM_REF+" "+Rtrim(DESC_COR),57," ")+"////"+
                                                     Completa(MSG_AUX,57," ")
                                        Mensagem(MSG)
                                        Release Vars ITEM_GRP, DESC_GRP, DESC_COR, ITEM_REF, MSG_AUX 
                                        Return
                                EndIf
                                
                                FormKey
                                Do_it!
                                                
                                Sort Tabela_Item_Temp On "Referencia","Descricao da Cor_Tecido"
                                                
                                View Tabela_Item_Temp
                                Moveto [Descricao da Cor_Tecido]
                                Locate DESC_COR
                                If RetVal
                                   Then While [Descricao da Cor_Tecido] = DESC_COR 
                                          If Rtrim(ITEM_REF) = Rtrim(([Referencia]))
                                             Then CopyToArray REG_ITEM
                                        
                                                  Coedit Tabela_Item
                                                  End Down
                                                  CopyFromArray REG_ITEM
                                                  UnLockRecord
                                                  ADICAO=True
                                                  Exclusao_Tabela_Item() 
                                                  QuitLoop          
                                          EndIf
                                          Skip
                                          If Eot() Then QuitLoop EnDIf
                                          Locate Next DESC_COR
                                          If Not RetVal 
                                             Then QuitLoop
                                          EndIf
                                        EndWhile          
                                EndIf
                                Carrega_Array("ATUALIZA")
                                
  Case Campo="TG_TABELA_TEMP" And           
       EXCLUSAO = True          : Moveto Tabela_Item_Temp
                                  Moveto [Descricao da Cor_Tecido]
                                  End Down
                                  UnLockRecord
                                  CopyFromArray REG_ITEM_REMOVE
EndSwitch

EndProc ;Inclusao_Tabela_Item()

;*******************************************************************************
;* ExclusÆo Tabela de Preo                                                    *
;*******************************************************************************
Proc Exclusao_Tabela_Item()                   
                                    
EXCLUSAO=False                          
              
Switch                                               
  Case Campo="TG_TABELA_MASTER" And
       ADICAO=True            : Moveto Tabela_Item_Temp
                                Moveto [Descricao da Cor_Tecido]
                                Locate DESC_COR
                                If RetVal
                                   Then While [Descricao da Cor_Tecido] = DESC_COR 
                                          If Rtrim(ITEM_REF) = Rtrim(([Referencia]))
                                             Then If RetVal                 
                                                     Then Del
                                                  EndIf
                                                  QuitLoop          
                                          EndIf
                                          Skip
                                          If Eot() Then QuitLoop EnDIf
                                          Locate Next DESC_COR
                                          If Not RetVal 
                                             Then QuitLoop
                                          EndIf
                                        EndWhile          
                                EndIf
  Case Campo="TG_TABELA_TEMP" : IND = NumVal(ControlValue("TG_TABELA_TEMP"))
                                If DynArraySize(Array_Lista2)=0
                                   Then Return
                                EndIf
                                
                                DESC_COR = Rtrim(SubStr(Array_Lista2[IND],10,20))
                                ITEM_REF = Rtrim(SubStr(Array_Lista2[IND],1,8))  
                                
                                FormKey
                                Do_it! 
                                 
                                Sort Tabela_Item On "Referencia","Descricao da Cor_Tecido" 
                                 
                                Coedit Tabela_Item
                                Moveto [Descricao da Cor_Tecido]
                                Locate DESC_COR
                                If RetVal
                                   Then While [Descricao da Cor_Tecido] = DESC_COR 
                                          If Rtrim(ITEM_REF) = Rtrim(([Referencia]))
                                             Then If RetVal
                                                     Then CopyToArray REG_ITEM_REMOVE
                                                          Del
                                                  EndIf
                                                  QuitLoop          
                                          EndIf
                                          Skip
                                          If Eot() Then QuitLoop EnDIf
                                          Locate Next DESC_COR
                                          If Not RetVal 
                                             Then QuitLoop
                                          EndIf
                                        EndWhile          
                                EndIf
                                EXCLUSAO=True
                                Inclusao_Tabela_Item()
                                
                                Carrega_Array("ATUALIZA")
EndSwitch

EndProc ;Exclusao_Tabela_Item()          

;*******************************************************************************
;* Carrega Array e Verifica AlteraÆo                                          *
;*******************************************************************************
Proc Carrega_Array(PARAM)
Private CAMPO_ANT,WHI,WHK,PARAM

WHI=0
WHK=0

If PARAM <> "ATUALIZA"
   Then CAMPO_ANT = Field()
        UnLockRecord
        FormKey
        Do_it!    

        If PARAM = "NOVO"
           Then If IsAssigned(Tabela_Item_Temp) Then If IsTable(Tabela_Item_Temp) Then Delete Tabela_Item_Temp EndIf EndIf
                If IsAssigned(Tabela_Item)      Then If IsTable(Tabela_Item)      Then Delete Tabela_Item      EndIf EndIf
                Release Vars Tabela_Item_Temp, Tabela_Item             
        EndIf
         
        If Not IsAssigned(Tabela_Item_Temp)
           Then {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "Item"
                Moveto [Tipo do Item           ] TypeIn "P Or T"
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [Inativo                ] TypeIn "Not S"
                Moveto [Referencia             ] Check TypeIn "~VSDGREFERENCIA.."
                Moveto [Descricao da Cor_Tecido] Check
                Moveto [Codigo_Servico         ] Check
                Moveto [Descricao da Simbologia] Check
                Moveto [Producao Esgotada      ] TypeIn "Not S"
                Do_It!
                
                Moveto "\\Sistemas\\Estoque\\Itens"
                ClearImage
                
                Moveto "Answer"
                ClearImage
                
                {Ask} {Answer} TypeIn "Fast" Enter
                Moveto [Codigo_Servico         ] TypeIn "Changeto Blank" Down
                Moveto [Descricao da Simbologia] TypeIn "Changeto Blank"
                Do_It!
                
                Tabela_Item_Temp = Cria_Temp(PrivDir())
                Rename "Answer" Tabela_Item_Temp

                Sort Tabela_Item_Temp On "Referencia","Descricao da Cor_Tecido"
                ClearImage
                
                NR = DynArraySize(Ped_Regi)
                
                Cont_ArrayTemp = 0
                DynArray Array_ListaTemp[]
                
                View "Ped_Regi"
                Scan For [Codigo_Regra]=COD_REGR ;And [Codigo_Grupo]=COD_GRUP 
                  Barra(NR, RecNo())
                  Aguarde("Aguarde, verificando itens inseridos "+BARRA_STRING)
                  Cont_ArrayTemp = Cont_ArrayTemp + 1
                  Array_ListaTemp[Cont_ArrayTemp]=Completa([Referencia],8," ")+Spaces(01)+Completa([Descricao Cor_Tecido],20," ")+
                                                  Completa(StrVal([Codigo_Grupo]),8," ")
                                          
                EndScan
                ClearImage
                
                If DynArraySize(Array_ListaTemp)>0
                   Then Coedit Tabela_Item_Temp
                        For iu From 1 To DynArraySize(Array_ListaTemp)
                          DESC_COR = Rtrim(SubStr(Array_ListaTemp[iu],10,20))
                          ITEM_REF = Rtrim(SubStr(Array_ListaTemp[iu],1,8))
                          ITEM_GRP = NumVal(Rtrim(SubStr(Array_ListaTemp[iu],30,8)))
                  
                          Home
                          Moveto [Descricao da Cor_Tecido] 
                          Locate DESC_COR
                          If RetVal
                             Then While [Descricao da Cor_Tecido] = DESC_COR 
                                    If Rtrim(ITEM_REF) = Rtrim(([Referencia]))
                                       Then If RetVal
                                               Then GetRecord "\\Sistemas\\Vendas\\Ped_regg" COD_REGR,ITEM_GRP To DESC_GRP
                                                    If RetVal
                                                       Then DESC_GRP = DESC_GRP["Descricao_Grupo"]
                                                       Else DESC_GRP = ""
                                                    EndIf   
                                                    ;Del
                                                    [Referencia             ] = Format("W6",Rtrim(ITEM_REF)+" X")
                                                    [Descricao da Simbologia] = Rtrim(DESC_GRP)
                                                    [Codigo_Servico         ] = ITEM_GRP
                                            EndIf   
                                            QuitLoop          
                                    EndIf
                                    Skip
                                    If Eot() Then QuitLoop EnDIf
                                    Locate Next DESC_COR
                                    If Not RetVal 
                                       Then QuitLoop
                                    EndIf
                                  EndWhile          
                          EndIf
                        EndFor
                        Do_it!
                        ClearImage
                EndIf        
                Release Vars Array_ListaTemp
                
                If IsEmpty(Tabela_Item_Temp)
                   Then Release Vars Array_Lista1
                        DynArray Array_Lista1[]
                EndIf
        EndIf

        If Not IsAssigned(Tabela_Item)
           Then If IsAssigned(Tabela_Item) Then If IsTable(Tabela_Item) Then Delete Tabela_Item EndIf EndIf
                Tabela_Item = Cria_Temp(PrivDir())
                Copy Tabela_Item_Temp Tabela_Item
                Empty Tabela_Item 
        EndIf
EndIf

If PARAM = "ATUALIZA"
   Then Release Vars Array_Lista1,Array_Lista2
        DynArray Array_Lista1[]
        DynArray Array_Lista2[]
   Else Switch
          Case Not IsEmpty(Tabela_Item_Temp) : Release Vars Array_Lista1
                                               DynArray Array_Lista1[]
          Case Not IsEmpty(Tabela_Item)      : Release Vars Array_Lista2
                                               DynArray Array_Lista2[]
        EndSwitch    
EndIf

If Not IsEmpty(Tabela_Item_Temp)
   Then If PARAM <> "ATUALIZA"
           Then Sort Tabela_Item_Temp On "Referencia","Descricao da Cor_Tecido"
                View Tabela_Item_Temp
           Else Moveto Tabela_Item_Temp
                Home
        EndIf   
        
        Scan
          WHI=WHI+1
          Array_Lista1[WHI]=Completa([Referencia],8," ")+Spaces(01)+Completa([Descricao da Cor_Tecido],20," ")+
                            Completa(StrVal([Codigo_Servico]),8," ")+Completa(StrVal([Descricao da Simbologia]),20," ")                       
        EndScan
        
        If PARAM <> "ATUALIZA"
           Then Moveto Tabela_Item_Temp ClearImage
        EndIf       
EndIf  

If Not IsEmpty(Tabela_Item) 
   Then If PARAM <> "ATUALIZA"
           Then Sort Tabela_Item On "Referencia","Descricao da Cor_Tecido"
                View Tabela_Item
           Else Moveto Tabela_Item
                Home
        EndIf   
        Scan 
          WHK=WHK+1
          Array_Lista2[WHK]=Completa([Referencia],8," ")+Spaces(01)+Completa([Descricao da Cor_Tecido],20," ")
          ;If PARAM = "ATUALIZA"
          ;   Then If [Referencia] = ITEM_REF And
          ;           [Descricao da Cor_Tecido] = DESC_COR
          ;           Then INDICE_POSICAO = WHK
          ;        EndIf     
          ;EndIf  
        EndScan
        
        If PARAM <> "ATUALIZA"
           Then Moveto Tabela_Item ClearImage
        EndIf     
EndIf
                         
Moveto "Ped_regc"
CoeditKey
PickForm "1"
IsLockRecord()
Moveto "Ped_regi" 
        
If PARAM <> "ATUALIZA"
   Then Moveto Field CAMPO_ANT
EndIf        

EndProc ;Carrega_Array() 
                                      
;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

Temp=True
MSG_CAMPO=""                              
TECLA=""

If Campo="TG_MARCA2" Or Campo="TG_REFERENCIA2"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf     

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf

If Disparo="CLOSE"
   Then Switch
          Case Campo="YES": AcceptDialog
          Case Campo="NO" : CancelDialog
        EndSwitch
        Return Temp
EndIf                                                                                                      

If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_ADD" : Temp=True 
                                Campo="TG_TABELA_MASTER"
                                Inclusao_Tabela_Item()
          Case Campo="TG_REM" : Temp=True
                                Campo="TG_TABELA_TEMP"
                                Exclusao_Tabela_Item()
          Case Campo="YES"    : AcceptDialog
          Case Campo="NO"     : CancelDialog
          OtherWise           : Return Temp
        EndSwitch
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9  : Temp=False
     Case Evento["KeyCode"] = -59: 
          Switch
            Case Campo="TG_MARCA2"      : If SDCarrega_F1("Marcas")
                                             Then AUX_MAR = "1" 
                                                  Seleciona_Opcoes("Marcas","F1_Temp")   
                                          EndIf
            Case Campo="TG_REFERENCIA2" : If SDCarrega_F1("Referencia")
                                             Then AUX_REF = "1"
                                                  Seleciona_Opcoes("Referencia","F1_Temp")  
                                          EndIf
          EndSwitch                          
     Case Evento["KeyCode"] =-147: 
          Switch
            Case Campo="TG_TABELA_MASTER" : INDICE = ControlValue("TG_TABELA_MASTER")
                                            If IsAssigned(Array_Lista1) And DynArraySize(Array_Lista1)<>0 
                                               Then ConfGeral("Confirma a excluso deste item ?//"+Array_Lista1[INDICE])
                                                    If OK="S"
                                                       Then Exclusao_Tabela_Item()
                                                    EndIF
                                            EndIf   
         EndSwitch    
                 
     Case Evento["KeyCode"] = -75: If Campo= "TG_TABELA_TEMP" Then Exclusao_Tabela_Item() EndIf    
     Case Evento["KeyCode"] = -77: If Campo= "TG_TABELA_MASTER" Then Inclusao_Tabela_Item() EndIf        
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_MARCA2"         : Campo="NO"
            Case Campo="TG_REFERENCIA2"    : Campo="TG_MARCA2"
            Case Campo="TG_TABELA_MASTER"  : Campo="TG_REFERENCIA2" 
            Case Campo="TG_TABELA_TEMP"    : Campo="TG_TABELA_MASTER"
            Case Campo="YES" Or Campo="NO" : Campo="TG_MARCA2"   
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13: 
          Temp=False
          If Checa_TAG()
             Then Switch 
                    Case Campo="TG_MARCA2"     : Campo="TG_REFERENCIA2"
                         VSDGMARCA = ControlValue("TG_MARCA2")
                         If VSDGMAR_ANT <> VSDGMARCA And VSDGMAR_ANT <> "0" And DynArraysize(Array_Lista2) > 0
                            Then Mensagem("Para alterar a marca  preciso remover os itens selecionados !")
                                 VSDGMARCA = VSDGMAR_ANT
                                 Checa_Opcoes("Marcas",VSDGMARCA)
                                 Campo = "TG_MARCA2"
                            Else If IsBlank(VSDGMARCA) 
                                    Then VSDGNOMMARCA = "TODAS"   
                                    Else If DynArraysize(Array_Lista2) = 0
                                            Then If AUX_MAR <> "1"
                                                    Then SDCarrega_F1("Marcas")
                                                 EndIf
                                                 VSDGMARCA = AlinhM(VSDGMARCA,3)
                                                 If Not Checa_Opcoes("Marcas",VSDGMARCA)
                                                    Then VSDGMARCA    = ""
                                                         VSDGNOMMARCA = ""
                                                         Mensagem("Marca Inv lida !")
                                                         Campo="TG_MARCA2"
                                                    Else Carrega_Array("NOVO")
                                                 EndIf
                                          EndIf
                                 EndIf
                         EndIf
                         VSDGMAR_ANT = VSDGMARCA
                         AUX_MAR = ""
                    Case Campo="TG_REFERENCIA2" : Campo="TG_TABELA_MASTER"
                         VSDGREFERENCIA = ControlValue("TG_REFERENCIA2")
                         If VSDGREF_ANT <> VSDGREFERENCIA And VSDGREF_ANT <> "0" And DynArraysize(Array_Lista2) > 0
                            Then Mensagem("Para alterar a referencia  preciso remover os itens selecionados !")
                                 VSDGREFERENCIA = VSDGREF_ANT
                                 Checa_Opcoes("Referencia",VSDGREFERENCIA)
                                 Campo = "TG_REFERENCIA2"
                            Else If IsBlank(VSDGREFERENCIA) 
                                    Then VSDGNOMITEM = ""
                                         If IsBlank(VSDGREFERENCIA) And IsBlank(VSDGMARCA)
                                            Then Mensagem("Marca ou Referncia deve ser informada !")
                                                 Campo="TG_REFERENCIA2"
                                            Else If DynArraysize(Array_Lista2) = 0
                                                    Then Carrega_Array("NOVO")
                                                         VSDGNOMITEM    = "TODAS"     
                                                 EndIf
                                         EndIf
                                    Else If DynArraysize(Array_Lista2) = 0
                                            Then If AUX_REF <> "1"
                                                    Then SDCarrega_F1("Referencia")
                                                 EndIf   
                                                 If Not Checa_Opcoes("Referencia",VSDGREFERENCIA)
                                                    Then VSDGREFERENCIA = ""
                                                         VSDGNOMITEM    = ""
                                                         Mensagem("Referncia Inv lida !")
                                                         Campo="TG_REFERENCIA2"
                                                    Else If DynArraysize(Array_Lista2) = 0
                                                            Then Carrega_Array("NOVO")
                                                         EndIf        
                                                 EndIf
                                         EndIf
                                 EndIf
                         EndIf        
                         VSDGREF_ANT = VSDGREFERENCIA
                         AUX_REF = ""  
                    Case Campo="TG_TABELA_MASTER"  : Campo="TG_TABELA_TEMP"
                    Case Campo="TG_TABELA_TEMP"    : Campo="YES"
                  EndSwitch                    
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
  Case Campo="TG_TABELA_MASTER" : 
     MSG_CAMPO=" >> Adiciona o item"
     TECLA=TECLA+" >=Adicionar"
  Case Campo="TG_TABELA_TEMP"   : 
     MSG_CAMPO=" << Remove o item"  
     TECLA=TECLA+" <=Remover"
Endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc      

;*******************************************************************************
;* Rotina p/ Selecionar Itens conforme MARCA/REFERENCIA informada              *
;*******************************************************************************
Proc Seleciona_Itens()
Private FAZ_PROCESSO

FAZ_PROCESSO   = False
VSDGMARCA      = ""
VSDGNOMMARCA   = ""
VSDGMAR_ANT    = "0"
VSDGREF_ANT    = "0"
VSDGREFERENCIA = ""
VSDGNOMITEM    = ""
AUX_MAR        = ""
AUX_REF        = ""
                                   
Release Vars Tabela_Item_Temp
Release Vars Tabela_Item 

DynArray Array_Lista2[] 
DynArray Array_Lista1[]
          
While True
  ShowDialog "Seleo de Itens" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE","UPDATE","CLOSE","SELECT"
  Key "F1","ENTER","ESC",
    -75, -77, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140, -147  
    @ 02,16   Height 19 Width 66                                                              

    Label  @ 00,00 "Marca"  For "TG_MARCA2"
    Accept @ 01,01 Width 07 "A3"  Picture "#*#" Tag "TG_MARCA2"   To VSDGMARCA
    Accept @ 01,09 Width 35 "A32" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 02,00 "Referencia"  For "TG_REFERENCIA2"
    Accept @ 03,01 Width 13 "A20" Picture "!*!" Tag "TG_REFERENCIA2" To VSDGREFERENCIA
    Accept @ 03,15 Width 29 "A26" Picture "!*!" Tag "TG_DESCITEM" To VSDGNOMITEM    

    Frame Single From 13,01 to 05,61
    @ 05,02 ?? " RelaÆo de Itens "   
    @ 06,02 ?? " Itens a Selecionar " 
    @ 06,37 ?? " Itens Selecionados " 
      
    PickDynArray @07,02 Height 6 width 24 ;58              
    Columns 1
     Array_Lista1
      Tag "TG_TABELA_MASTER"
       To ArrayElement

    PickDynArray @07,37 Height 6 width 24 ;58
    Columns 1      
     Array_Lista2
      Tag "TG_TABELA_TEMP"
       To ArrayElement

    Pushbutton @ 09,27 width 9 "~>~>"   Tag "TG_ADD"  To BottonValue
    Pushbutton @ 10,27 width 9 "~<~<"   Tag "TG_REM"  To BottonValue

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If DynArraySize(Array_Lista2)=0                                                     
     Then Mensagem("Nenhum item adicionado na selao !")
          Loop
  EndIf

  If IsBlank(VSDGREFERENCIA) And IsBlank(VSDGMARCA)
     Then Mensagem("Marca ou Referncia deve ser informada !")
          Loop
  EndIf
  
  FAZ_PROCESSO = True
  QuitLoop
EndWhile

If FAZ_PROCESSO
  Then Adiciona_Itens()
EndIF  

EndProc ;Seleciona_Itens()
                               
;*******************************************************************************
;*  Rotina p/ Adicionar Itens na relaÆo de itens do Grupo                     *
;*******************************************************************************
Proc Adiciona_Itens()
Private SEQ_ITEM,COD_ITEM,Array_Temp,Cont_Temp,i, ii,CAMPO_ANT

If DynArraySize(Array_Lista2)=0                                                     
   Then Mensagem("No h  itens para serem adicionados na relao !")
        Return
EndIf

COD_REGR = [Codigo_Regra]
COD_GRUP = [Codigo_Grupo]
DES_GRUP = [Descricao_Grupo]

CAMPO_ANT = Field()
SEQ_ITEM  = 0
Cont_Temp = 0
DynArray Array_Temp[]

Moveto "Ped_RegI"
Home
Scan
  Cont_Temp = Cont_Temp + 1
  Array_Temp[Cont_Temp] = [Codigo do Item]
  SEQ_ITEM = [Sequencia do Item]
EndScan
UnlockRecord
FormKey
Do_it!

AUX_ITEM_REF = "***"

View "Ped_regi"
View "\\Sistemas\\Estoque\\Iten_Cor"
Coedit "\\Sistemas\\Estoque\\Itens"

NR = DynArraySize(Array_Lista2)

For i From 1 To DynArraySize(Array_Lista2)
  Barra(NR, RecNo())
  Aguarde("Aguarde, processando referencia "+BARRA_STRING)
  For ii From 1 To DynArraySize(Array_Temp)
    If Array_Lista2[i] = Array_Temp[ii]
       Then Array_Lista2[i] = ""
            QuitLoop
    EndIf   
  Endfor
  If Array_Lista2[i] = "" Then Loop EndIf

  DESC_COR = Rtrim(SubStr(Array_Lista2[i],10,20))
  ITEM_REF = Rtrim(SubStr(Array_Lista2[i],1,8))
  
  Moveto "\\Sistemas\\Estoque\\Itens"
  Moveto [Referencia]
  Locate ITEM_REF
  If RetVal
     Then COD_ITEM = [Codigo do Item]
          Moveto "\\Sistemas\\Estoque\\Iten_Cor"
          Moveto [Codigo do Item] 
          Locate IndexOrder by "Refcor_01" COD_ITEM,DESC_COR 
          If RetVal
             Then Moveto "Ped_regi"
                  End Down
                  SEQ_ITEM = SEQ_ITEM + 1
                  [Sequencia do Item] = SEQ_ITEM
                  [Codigo do Item   ] = COD_ITEM
                  Atualiza_Item("COR")
                  UnLockRecord
             Else If AUX_ITEM_REF <> ITEM_REF 
                     Then AUX_ITEM_REF = ITEM_REF 
                          Mensagem("A referncia "+ITEM_REF+" no est  na tabela de cores !")
                          Loop
                  EndIf        
          EndIf        
     Else Mensagem("A Referncia "+ITEM_REF+" no est  no cadastro de itens !")     
  EndIf        
EndFor

Do_it!
Moveto "\\Sistemas\\Estoque\\Itens"
ClearImage

Moveto "\\Sistemas\\Estoque\\Iten_Cor"
ClearImage

Moveto "Ped_regi"
ClearImage

If IsAssigned(Tabela_Item_Temp) Then If IsTable(Tabela_Item_Temp) Then Delete Tabela_Item_Temp EndIf EndIf
If IsAssigned(Tabela_Item)      Then If IsTable(Tabela_Item) Then Delete Tabela_Item           EndIf EndIf

Moveto "Ped_regc"
CoeditKey
PickForm "1"
IsLockRecord()
Moveto "Ped_regi"
Moveto Field CAMPO_ANT

EndProc ;Adiciona_Itens()

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

SEMREGISTRO=False       

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

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

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

ImageRights ReadOnly
SetaCorRegistro("Paginar")

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

FIELD_LOCATE=Field()
TEXTO_LOCATE=""

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

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

EndProc

;*******************************************************************************
;* Processo p/ Veirificar a Duplicidade do Item                                *
;*******************************************************************************
Proc Verifica_Duplicidade(PARAM)
Private PARAM,SEQ

Moveto "Ped_RegI"
If PARAM = "ITEM"
   Then Moveto [Codigo do Item]
        Locate COD_ITEM
        If RetVal
           Then While COD_ITEM = [Codigo do Item]
                  SEQ = [Sequencia do Item]
                  If SEQ <> SEQ_ITEM 
                     Then MSG_ERRO = "O Item "+COD_ITEM+" j  foi inclu¡do nesta relaÆo na sequncia "+StrVal(SEQ)+" !"
                          Moveto [Sequencia do Item]
                          Locate SEQ_ITEM
                          Moveto [Codigo do Item]
                          Atualiza_Item("LIMPAR")  
                          Return False
                   EndIf        
                   Skip
                   If Eot() Then QuitLoop EndIf
                   Locate Next COD_ITEM
                   If Not RetVal Then QuitLoop EndIf 
                EndWhile  
        EndIf
EndIf
   
Return True         
   
EndProc ;Verifica_Duplicidade() 

;*******************************************************************************
;* Processo de AtualizaÆo do Item                                             *
;*******************************************************************************
Proc Atualiza(PARAM)
Private regra_codigo,regra_descricao,regra_dataent

Switch
  Case PARAM = "Limpar" :                 
       Moveto "Ped_regc"
       [Codigo_Grupo   ] = BlankNum()
       [Descricao_Grupo] = ""
       [Data_Entrega   ] = BlankDate()
       UnLockRecord
  OtherWise :  
  If Table()="Ped_regg"
     Then regra_codigo    = [Ped_regg->Codigo_Grupo]
          regra_descricao = [Ped_regg->Descricao_Grupo]
          regra_dataent   = [Ped_regg->Data_Entrega]
          Moveto "Ped_regc"
          [Codigo_Grupo   ] = regra_codigo
          [Descricao_Grupo] = regra_descricao
          [Data_Entrega   ] = regra_dataent
          Moveto "Ped_regg"
  EndIf
EndSwitch   

EndProc ;Atualiza
                      
;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
                     
SetaCorRegistro("Padrao")
While Not Finalizar
  Atualiza("Limpar")
  CHAVEG()
  If CHAVEG=9
     Then QuitLoop
     Else Controla_EdicaoI()
  EndIf
EndWhile

Moveto "Ped_regc"
If RecordStatus("Locked") Then UnLockRecord EndIf         

If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

EndProc                      

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

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

Moveto "Ped_regg"
If RecordStatus("Locked") Then UnLockRecord EndIf         

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
Sys_Valor()
        
;{Ask} {\\Sistemas\\Estoque\\Itens}
;Moveto [Codigo do Item         ] Check TypeIn "_Item"
;Moveto [Tipo do Item           ] TypeIn "D"
;Moveto [Referencia             ] Check
;{Ask} {\\Sistemas\\Estoque\\Iten_Cor}
;Moveto [Codigo do Item         ] TypeIn "_Item"
;Moveto [Descricao da Cor_Tecido] Check
;Do_it!
;ClearAll

;Monta_Opcoes("Itens","F1_Temp")         
        
CoEdit "Ped_regc"
PickForm "1"
Moveto "Ped_regg"  SetaCorRegistro("Padrao")
Moveto "Ped_regi"  SetaCorRegistro("Padrao")

Moveto "Ped_regc"
PickForm "F"

OPCAO_FORM="F"
While True
  CHAVE()
  If CHAVEC=9
     Then QuitLoop
  EndIf
  If CHAVEC=6
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
