;** TrocaIt ********************************************************************
;* Substituicao de Item nas Formulas                                           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 13/11/2003 por Anivel Augusto Rodrigues
;Ultima Alteracao: 09/06/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado filtro por Familia e Marca
;Ultima Alteracao: 21/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog.  
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()                  
;Ultima Alteracao: 03/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao ajustar preco por porcentagem
;Ultima Alteracao: 06/08/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_GRP e Removido TG_TAMANHO 
;Ultima Alteracao: 10/11/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado coluna para Item d  F¢rmula, com op‡Æo para Familia, Grupop, Marca e Cor do Tecido e ajustes no layout da tela 
;Ultima Alteracao: 22/01/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes para alinhar vari vel VSDGITEM1 em 10 d¡gitos (zero a esquerda)   

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Seleciona()
ClearAll

Formula_Aterada=False

CoEdit "FormulaC"
PickForm "1"
NR = NRecords("FormulaC")
Scan
  
  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando "+BARRA_STRING)

  If not IsBlank(VSDGITEM) And
     [Codigo do Produto]<>VSDGITEM
     Then Loop
  EndIf

  If not IsBlank(VSDGCORTECIDO) And [Codigo Cor_Tecido]<>VSDGCORTECIDO
     Then Loop
  EndIf
  
  If not IsBlank(VSDGFAMI) Or not IsBlank(VSDGGRP) Or not IsBlank(VSDGMARCA)
     Then FAMILIA = ""
          MARCA   = ""
          GRUPO   = ""
          GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Produto] To REG_ITEM
          If RetVal
             Then FAMILIA = REG_ITEM["Codigo da Familia"]
                  MARCA   = REG_ITEM["Codigo da Marca"  ]
                  GRUPO   = REG_ITEM["Codigo do Grupo"  ]
          EndIf 
          
          If not IsBlank(VSDGFAMI) And VSDGFAMI<>FAMILIA
             Then Loop
          EndIf
          
          If not IsBlank(VSDGGRP) And VSDGGRP<>GRUPO
             Then Loop
          EndIf
          
          If not IsBlank(VSDGMARCA) And VSDGMARCA<>MARCA
             Then Loop
          EndIf
  EndIf         

  Atualiza_Custo=False
  Moveto "FormulaI"
  Scan 
    If Verifica_Item([Codigo do Material])
       Then Formula_Aterada=True

            If VSDGOPCAO[1]=True 
               Then [Codigo do Material]=VSDGITEM2
                    [Lookup_Material   ]=VSDGITEM2
                    [Lookup_Material   ]=""                         
            EndIf
            If VSDGOPCAO[2]=True
               Then [Quantidade                ]=VSDGQUANTIDADE
                    Atualiza_Custo=True
            EndIf
            If VSDGOPCAO[3]=True
               Then [Valor Unitario            ]=VSDGPRECO_UNITARIO
                    Atualiza_Custo=True
            EndIf
            If VSDGOPCAO[4]=True
               Then [Valor Unitario            ]=NDecimal(([Valor Unitario]+(([Valor Unitario]*VSDGPORC1_UNITARIO)/100)),5)
                    Atualiza_Custo=True
            EndIf
    EndIf
  EndScan

  If Atualiza_Custo
     Then Custo()
  EndIf

  Moveto "FormulaC"
EndScan
Do_It!
ClearAll

If Not Formula_Aterada
   Then Mensagem("Item a substituir n„o encontrado em formulas !")
EndIf

EndProc ; (Seleciona)

;*******************************************************************************
;* Calculo Custo                                                               *
;*******************************************************************************
Proc Verifica_Item(ITEM)
Private ITEM,FAMILIA1,GRUPO1,MARCA1,COR1,REG_ITEM2 
 
If VSDGITEM1<>"" And ITEM<>VSDGITEM1
   Then Return False  
EndIF

If Not IsBlank(ITEM) Or Not IsBlank(VSDGFAMI1) Or Not IsBlank(VSDGGRP1) Or Not IsBlank(VSDGMARCA1) Or Not IsBlank(VSDGCORTECIDO1)
   Then FAMILIA1 = ""
        MARCA1   = ""
        GRUPO1   = ""
        COR1     = ""
        GetRecord "\\Sistemas\\Estoque\\Itens" ITEM To REG_ITEM2
        If RetVal
           Then FAMILIA1 = REG_ITEM2["Codigo da Familia"   ]
                MARCA1   = REG_ITEM2["Codigo da Marca"     ]
                GRUPO1   = REG_ITEM2["Codigo do Grupo"     ]
                COR1     = REG_ITEM2["Codigo da Cor_Tecido"]
           Else Return False     
        EndIf 
         
        If not IsBlank(VSDGFAMI1) And VSDGFAMI1<>FAMILIA1
           Then Return False
        EndIf
         
        If not IsBlank(VSDGGRP1) And VSDGGRP1<>GRUPO1
           Then Return False
        EndIf
         
        If not IsBlank(VSDGMARCA1) And VSDGMARCA1<>MARCA1
           Then Return False
        EndIf
         
        If not IsBlank(VSDGCORTECIDO1) And VSDGCORTECIDO1<>COR1
           Then Return False
        EndIf
EndIf
Release Vars FAMILIA1,GRUPO1,MARCA1,COR1,REG_ITEM2,ITEM

Return True

EndProc ;Verifica_Item()

;*******************************************************************************
;* Calculo Custo                                                               *
;*******************************************************************************
Proc CUSTO()
CUSTO=0
CFP  =0
Scan For Not IsBlank([Codigo do Material])
  Switch
    Case SYS_CODIGO_CLIENTE="0102":
         If [Codigo do Material]="0000001437"
            Then CFP=[Quantidade]
                 Loop
         EndIf
  EndSwitch

  If [Quantidade]>0
     Then CUSTO=CUSTO+([Quantidade]*[Valor Unitario])
     Else CUSTO=CUSTO+[Valor Unitario]
  EndIf
EndScan
Moveto "FormulaC"

Switch
  Case SYS_CODIGO_CLIENTE="0102":
       CUSTO=NDecimal(CUSTO+((CUSTO*CFP)/100),5)
EndSwitch

[Custo Total]=Round(CUSTO,2)
[Custo Unitario]=NDecimal([Custo Total]/[Quantidade Produzida],5)
[Preco de Venda_Calculado]=NDecimal([Custo Unitario]+(([Custo Unitario]*[Indice Preco de Venda])/100),2)
EndProc

;*******************************************************************************
;* Rotina para Atualziar Dados                                                 *
;*******************************************************************************
Proc Atualiza_Dados()
Private Valor

Valor=True
Switch
  Case Campo="TG_FAMI1"        :   
       COD_CONTROLE      = VSDGFAMI
       NOM_CONTROLE      = VSDGNOMFAMI

       VSDGFAMI          = VSDGFAMI1 
       VSDGNOMFAMI       = VSDGNOMFAMI1
       
       Switch
         Case IsBlank(VSDGFAMI)                   : VSDGNOMFAMI="Todas"
       Otherwise                                  :
          VSDGFAMI=ALINHM(VSDGFAMI,3)
          getrecord "\\Sistemas\\Estoque\\Familia" VSDGFAMI to tgreg_familia
          If Not RetVal
             Then FastMsg("Familia n„o cadastrada !")
                  Valor=False
             Else VSDGNOMFAMI=tgreg_familia["Descricao da Familia"]
          EndIf
       Endswitch
       If (Valor Or Upper(VSDGNOMFAMI)="TODAS") And Not Valida_ShowDialog("Familia")
          Then VSDGNOMFAMI=""
               Valor=False
       EndIf     
                      
       VSDGFAMI1    = VSDGFAMI 
       VSDGNOMFAMI1 = VSDGNOMFAMI
       
       VSDGFAMI     = COD_CONTROLE 
       VSDGNOMFAMI  = NOM_CONTROLE      
            
  Case Campo="TG_GRP1"         :  
       COD_CONTROLE      = VSDGGRP
       NOM_CONTROLE      = VSDGNOMGRP

       VSDGGRP     = VSDGGRP1 
       VSDGNOMGRP  = VSDGNOMGRP1
       
       Switch
         Case IsBlank(VSDGGRP)                   : VSDGNOMGRP="Todos"
         Otherwise                                  :
          VSDGGRP=ALINHM(VSDGGRP,3)
          getrecord "\\Sistemas\\Estoque\\Grupos" VSDGGRP to tgreg_grupos
          If Not RetVal
             Then FastMsg("Grupo n„o cadastrado !")
                  Valor=False
             Else VSDGNOMGRP=tgreg_grupos["Descricao do Grupo"]
          EndIf
       Endswitch
       If (Valor Or Upper(VSDGNOMGRP)="TODOS") And Not Valida_ShowDialog("Grupos")
          Then VSDGNOMGRP=""
               Valor=False
       EndIf     
       
       VSDGGRP1    = VSDGGRP 
       VSDGNOMGRP1 = VSDGNOMGRP
       
       VSDGGRP     = COD_CONTROLE 
       VSDGNOMGRP  = NOM_CONTROLE
       
  Case Campo="TG_MARCA1"       :  
       COD_CONTROLE      = VSDGMARCA
       NOM_CONTROLE      = VSDGNOMMARCA

       VSDGMARCA         = VSDGMARCA1 
       VSDGNOMMARCA      = VSDGNOMMARCA1
       
       Switch
         Case IsBlank(VSDGMARCA)                    : VSDGNOMMARCA="Todas"
         Otherwise                                  :
          VSDGMARCA=ALINHM(VSDGMARCA,3)
          getrecord "\\Sistemas\\Estoque\\Marcas" VSDGMARCA to tgreg_marcas
          If Not RetVal
             Then FastMsg("Marca n„o cadastrada !")
                  Valor=False
             Else VSDGNOMMARCA=tgreg_marcas["Descricao da Marca"]
          EndIf
       Endswitch
       If (Valor Or Upper(VSDGNOMMARCA)="TODAS") And Not Valida_ShowDialog("Marca")
          Then VSDGNOMMARCA=""
               Valor=False
       EndIf
       VSDGMARCA1    = VSDGMARCA 
       VSDGNOMMARCA1 = VSDGNOMMARCA
       
       VSDGMARCA     = COD_CONTROLE 
       VSDGNOMMARCA  = NOM_CONTROLE
       
       
  Case Campo="TG_COR_TECIDO1" :
       COD_CONTROLE      = VSDGCORTECIDO
       NOM_CONTROLE      = VSDGNOMCORTECIDO

       VSDGCORTECIDO     = VSDGCORTECIDO1 
       VSDGNOMCORTECIDO  = VSDGNOMCORTECIDO1
                                        
       Switch
         Case IsBlank(VSDGCORTECIDO) : VSDGNOMCORTECIDO="Todas"
       Otherwise                                  :
          VSDGCORTECIDO=ALINHM(VSDGCORTECIDO,4)
          getrecord "\\Sistemas\\Estoque\\Cores" VSDGCORTECIDO to tgreg_cores
          If Not RetVal
             Then FastMsg("Cor do Tecido n„o cadastrada !")
                  Valor=False
             Else VSDGNOMCORTECIDO=tgreg_cores["Descricao da Cor_Tecido"]
          EndIf
       EndSwitch
       If (Valor Or Upper(VSDGNOMCORTECIDO)="TODAS") And Not Valida_ShowDialog("Cores")
          Then VSDGNOMCORTECIDO=""
               Valor=False
       EndIf
       VSDGCORTECIDO1    = VSDGCORTECIDO 
       VSDGNOMCORTECIDO1 = VSDGNOMCORTECIDO
       
       VSDGCORTECIDO     = COD_CONTROLE 
       VSDGNOMCORTECIDO  = NOM_CONTROLE
EndSwitch

Return Valor

EndProc ;Atualiza_Dados()

;*******************************************************************************
;* Proximo Campo                                                               *
;*******************************************************************************
Proc Proximo_Campo(num)
Private num

While num<=4

  If num=4 or
     VSDGOPCAO[num+1]=True
     Then num=num+1
          QuitLoop
  EndIf

  num=num+1
EndWhile

Switch
  Case num=1 : Campo="TG_ITEM2"
  Case num=2 : Campo="TG_QUANTIDADE"
  Case num=3 : Campo="TG_PRECO_UNITARIO"
  Case num=4 : Campo="TG_PORC1_UNITARIO"
  Case num=5 : Campo="YES"
EndSwitch

If VSDGOPCAO[1]=False Then VSDGITEM2         =""
                           VSDGNOMITEM2      =""         EndIf
If VSDGOPCAO[2]=False Then VSDGQUANTIDADE    =BlankNum() EndIf
If VSDGOPCAO[3]=False Then VSDGPRECO_UNITARIO=BlankNum() EndIf
If VSDGOPCAO[4]=False Then VSDGPORC1_UNITARIO=BlankNum() EndIf

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Complemento(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
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_OPCOES"         : Campo="NO"
            Case Campo="TG_ITEM2"          Or
                 Campo="TG_QUANTIDADE"     Or
                 Campo="TG_PRECO_UNITARIO" Or
                 Campo="TG_PORC1_UNITARIO" : Campo="TG_OPCOES"
            Case Campo="YES" Or Campo="NO" : Campo="TG_OPCOES"
          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_OPCOES"         : Proximo_Campo(0)
                    Case Campo="TG_ITEM2"          : Proximo_Campo(1)
                    Case Campo="TG_QUANTIDADE"     : Proximo_Campo(2)
                         VSDGQUANTIDADE    =ControlValue("TG_QUANTIDADE")
                    Case Campo="TG_PRECO_UNITARIO" : Proximo_Campo(3)
                         VSDGPRECO_UNITARIO=ControlValue("TG_PRECO_UNITARIO")
                    Case Campo="TG_PORC1_UNITARIO" : Proximo_Campo(4)
                         VSDGPORC1_UNITARIO=ControlValue("TG_PORC1_UNITARIO")
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_TAMANHO"       : MSG_CAMPO="Informe o Tamanho da F¢rmula"
  Case Campo="TG_ITEM2"         : MSG_CAMPO="Informe o novo valor do Material na Formula‡„o"
  Case Campo="TG_QUANTIDADE"    : MSG_CAMPO="Informe o novo valor da Quantidade na Formula‡„o"
  Case Campo="TG_PRECO_UNITARIO": MSG_CAMPO="Informe o novo valor do Pre‡o Unit rio na Formula‡„o"
  Case Campo="TG_PORC1_UNITARIO": MSG_CAMPO="Informe % '+' ou '-' no Valor do Pre‡o Unit rio na Formula‡„o"
  Case Campo="TG_OPCOES":
       MensagemCheckBoxes()
EndSwitch

If Campo="TG_COR_TECIDO1" 
   Then MSG_CAMPO = MSG_CAMPO + ", [F1]Consultar tabela" 
EndIf    

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Dados_Complementares()  
                 
Array VSDGOPCAO[4]
                 
While True
  ShowDialog "Substitui‡„o de valores nas formula‡”es" Proc "SD_Complemento"
   Trigger "OPEN","ARRIVE"
   Key "F1","ENTER","ESC","TAB",
   -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 04,10   Height 20 Width 73
  
   Label  @ 00,00 "Novos valores a substituir " For "TG_OPCOES"
   CheckBoxes @01,00 Height 4 Width 30 Tag "TG_OPCOES"
   "Item      " to VSDGOPCAO[1],
   "Quantidade" to VSDGOPCAO[2],
   "Pre‡o     " to VSDGOPCAO[3],
   "% no Pre‡o" to VSDGOPCAO[4]
   
    Label  @ 06,00 "Material.."  For "TG_ITEM2"
    Accept @ 07,01 Width 33 "A10" Picture "#*#" Tag "TG_ITEM2"    To VSDGITEM2
    Accept @ 08,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM2" To VSDGNOMITEM2
    
    Label  @ 09,00 "Quantidade" For "TG_QUANTIDADE"
    Accept @ 10,01 Width 13 "N" picture "#*#.[######]" Tag "TG_QUANTIDADE" to VSDGQUANTIDADE
   
    Label  @ 11,00 "Vr.Unit rio" For "TG_PRECO_UNITARIO"
    Accept @ 12,01 Width 13 "N" picture "#*#.[####]" Tag "TG_PRECO_UNITARIO" to VSDGPRECO_UNITARIO
  
    Label  @ 13,00 "% no Vr.Unit rio" For "TG_PORC1_UNITARIO"
    Accept @ 14,01 Width 13 "N"                      Tag "TG_PORC1_UNITARIO" to VSDGPORC1_UNITARIO
  
    Pushbutton @ 16,22 width 11 "~O~k"      OK     Default Value "Ok"  Tag "YES" To BottonValue
    Pushbutton @ 16,36 width 11 "~C~ancela" CANCEL                     Tag "NO"  To BottonValue
  
  EndDialog
  If Not RetVal 
     Then Return False
  EndIf
  
  If Not IsBlank(VSDGITEM2) And IsBlank(VSDGITEM1)
     Then FastMsg("Informe o c¢digo do material para realizar a substitui‡Æo do item!")
          Loop
  EndIf
  
  If IsBlank(VSDGITEM2)          And
     IsBlank(VSDGQUANTIDADE)     And
     IsBlank(VSDGPRECO_UNITARIO) And
     IsBlank(VSDGPORC1_UNITARIO)
     Then Mensagem("Informe o processo a ser substitu¡do!")
          Loop
  EndIf       
  
  ConfGeral("Confirma realmente a troca dos valores ?")
  If OK<>"S" Then Loop EndIf
  
  AGUARDE("Aguarde, processando")
  SELECIONA()
  
  Mensagem("Opera‡„o Finalizada !")
  QuitLoop
EndWhile

Return True

EndProc ;Dados_Complementares()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False
     Case Evento["KeyCode"] = -59:  
          AuxCampo=""
          Switch                        
            Case Campo="TG_FAMI1"        : AuxCampo = Campo 
                                           Campo="TG_FAMI"
                                           COD_CONTROLE = VSDGFAMI 
                                           NOM_CONTROLE = VSDGNOMFAMI      
                                        
            Case Campo="TG_GRP1"         : AuxCampo = Campo 
                                           Campo="TG_GRP"
                                           COD_CONTROLE = VSDGGRP 
                                           NOM_CONTROLE = VSDGNOMGRP 
                                           
            Case Campo="TG_MARCA1"       : AuxCampo = Campo 
                                           Campo="TG_MARCA"
                                           COD_CONTROLE = VSDGMARCA 
                                           NOM_CONTROLE = VSDGNOMMARCA 
                                    
            Case Campo="TG_COR_TECIDO1"  : AuxCampo = Campo 
                                           Campo="TG_COR_TECIDO"
                                           COD_CONTROLE = VSDGCORTECIDO 
                                           NOM_CONTROLE = VSDGNOMCORTECIDO                                                                       
          EndSwitch                          
          Dialog_F1()
          Switch
            Case AuxCampo="TG_FAMI1"       : Campo=AuxCampo
                                             VSDGFAMI1    = VSDGFAMI
                                             VSDGNOMFAMI1 = VSDGNOMFAMI
                                             
                                             VSDGFAMI     = COD_CONTROLE
                                             VSDGNOMFAMI  = NOM_CONTROLE
                                             
            Case AuxCampo="TG_GRP1"        : Campo=AuxCampo
                                             VSDGGRP1    = VSDGGRP
                                             VSDGNOMGRP1 = VSDGNOMGRP
                                             
                                             VSDGGRP    = COD_CONTROLE
                                             VSDGNOMGRP = NOM_CONTROLE
                                             
                                            
            Case AuxCampo="TG_MARCA1"      : Campo=AuxCampo
                                             VSDGMARCA1    = VSDGMARCA
                                             VSDGNOMMARCA1 = VSDGNOMMARCA
                                             
                                             VSDGMARCA     = COD_CONTROLE
                                             VSDGNOMMARCA  = NOM_CONTROLE  
                                                                              
            Case AuxCampo="TG_COR_TECIDO1" : Campo=AuxCampo
                                             VSDGCORTECIDO1    = VSDGCORTECIDO
                                             VSDGNOMCORTECIDO1 = VSDGNOMCORTECIDO
                                             
                                             VSDGCORTECIDO     = COD_CONTROLE
                                             VSDGNOMCORTECIDO  = NOM_CONTROLE
          EndSwitch                    
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_ITEM"           : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_ITEM"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_COR_TECIDO"     : Campo="TG_MARCA"
            Case Campo="TG_ITEM1"          : Campo="TG_COR_TECIDO"
            Case Campo="TG_FAMI1"          : Campo="TG_ITEM1"
            Case Campo="TG_GRP1"           : Campo="TG_FAMI1"
            Case Campo="TG_MARCA1"         : Campo="TG_GRP1"
            Case Campo="TG_COR_TECIDO1"    : Campo="TG_MARCA1"
            Case Campo="YES" Or Campo="NO" : Campo="TG_ITEM"            
          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_ITEM"           : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"           : Campo="TG_GRP"
                    Case Campo="TG_GRP"            : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"          : Campo="TG_COR_TECIDO"
                    Case Campo="TG_COR_TECIDO"     : Campo="TG_ITEM1"
                    Case Campo="TG_ITEM1"          : Campo="TG_FAMI1"           ;Campo="TG_OPCOES"
                         VSDGITEM1=ControlValue("TG_ITEM1")
                         If Not IsBlank(VSDGITEM1)
                            Then VSDGITEM1 = Alinhm(VSDGITEM1,10)
                         EndIf   
                    Case Campo="TG_FAMI1"          : 
                         VSDGFAMI1=ControlValue("TG_FAMI1")
                         If Atualiza_Dados() Then Campo="TG_GRP1" EndIf
                    Case Campo="TG_GRP1"           : 
                         VSDGGRP1=ControlValue("TG_GRP1")
                         If Atualiza_Dados() Then Campo="TG_MARCA1" EndIf
                    Case Campo="TG_MARCA1"         : 
                         VSDGMARCA1=ControlValue("TG_MARCA1")
                         If Atualiza_Dados() Then Campo="TG_COR_TECIDO1" EndIf
                    Case Campo="TG_COR_TECIDO1"    : 
                         VSDGCORTECIDO1=ControlValue("TG_COR_TECIDO1")
                         If Atualiza_Dados() Then Campo="YES" EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_ITEM"          : MSG_CAMPO="Informe o Produto da F¢rmula"
  Case Campo="TG_FAMI1"      Or    
       Campo="TG_GRP1"       Or    
       Campo="TG_MARCA1"        : MSG_CAMPO = "Em Branco=Todas, [F1]Consultar tabela"
  Case Campo="TG_COR_TECIDO" Or
       Campo="TG_COR_TECIDO1"   : MSG_CAMPO="Informe a Cor/Tecido da F¢rmula"
  Case Campo="TG_ITEM1"         : MSG_CAMPO="Informe o Material da Formula‡„o"
EndSwitch

If Campo="TG_COR_TECIDO1" 
   Then MSG_CAMPO = MSG_CAMPO + ", [F1]Consultar tabela" 
EndIf    

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"    EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf

COR_MENSAGEM="1"
MSG="- Antes de efetuar esta opera‡„o de altera‡„o de dados,     //"
MSG=MSG+"  recomendamos que seja feito um backup do sistema.         //"
MSG=MSG+"- Caso a altera‡„o de dados fique errada ‚ poss¡vel retornar//"
MSG=MSG+"  aos valores anteriores com a restaura‡„o do backup.       //"
MSG=MSG+"- Recomendamos tamb‚m que durante este processo ningu‚m     //"
MSG=MSG+"  esteja usando o sistema.                                  //"
Mensagem(MSG)

VSDGITEM           = ""
VSDGITEM1          = ""
VSDGITEM2          = ""
VSDGCORTECIDO      = ""
VSDGFAMI           = ""
VSDGNOMFAMI        = ""
VSDGMARCA          = ""
VSDGNOMMARCA       = ""
VSDGGRP            = ""
VSDGNOMGRP         = ""
VSDGITEM1          = ""
VSDGNOMITEM1       = ""
VSDGFAMI1          = ""
VSDGNOMFAMI1       = ""
VSDGGRP1           = ""
VSDGNOMGRP1        = ""
VSDGMARCA1         = ""
VSDGNOMMARCA1      = ""
VSDGCORTECIDO1     = ""
VSDGNOMCORTECIDO1  = ""

VSDGQUANTIDADE     = BlankNum()
VSDGPRECO_UNITARIO = BlankNum()
VSDGPORC1_UNITARIO = BlankNum()

If Checa_Supervisor()
   Then Supervisor_OK=True
   Else Supervisor_OK=False
EndIf

While Supervisor_OK

 ShowDialog "Substitui‡„o de valores nas formula‡”es" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
  @ 04,10   Height 19 Width 73

    ;---- Dados da Formula -----------------------------------------------------
    Frame Single From 00,00 to 13,34
    @ 00,08 ?? " Sele‡„o da F¢rmula "

    Label  @ 01,01 "Item"  For "TG_ITEM"
    Accept @ 02,01 Width 33 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 03,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM
    
    Label  @ 04,01 "Familia"  For "TG_FAMI"
    Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"    To VSDGFAMI
    Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI
    
    Label  @ 06,01 "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,01 "Marca"  For "TG_MARCA"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 09,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 10,01 "Cor/Tecido" For "TG_COR_TECIDO"
    Accept @ 11,01 Width 07 "A4"  Picture "#*#" Tag "TG_COR_TECIDO"    To VSDGCORTECIDO
    Accept @ 11,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMCOR_TECIDO" To VSDGNOMCORTECIDO
    
    ;---- Material da Formula ------------------------------------------------------
    Frame Single From 00,35 to 13,69
    @ 00,44 ?? " Material da F¢rmula "
    Label  @ 01,36 "Material"  For "TG_ITEM1"
    Accept @ 02,36 Width 33 "A10" Picture "#*#" Tag "TG_ITEM1"    To VSDGITEM1
    Accept @ 03,36 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM1" To VSDGNOMITEM1
    
    Label  @ 04,36 "Familia"  For "TG_FAMI1"
    Accept @ 05,37 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI1"    To VSDGFAMI1
    Accept @ 05,44 Width 25 "A30" Picture "!*!" Tag "TG_NOMFAMI1" To VSDGNOMFAMI1
    
    Label  @ 06,36 "Grupo"  For "TG_GRP1"
    Accept @ 07,37 Width 06 "A3"  Picture "#*#" Tag "TG_GRP1" To VSDGGRP1
    Accept @ 07,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP1" To VSDGNOMGRP1
                                                                                              
    Label  @ 08,36 "Marca"  For "TG_MARCA1"
    Accept @ 09,37 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA1"    To VSDGMARCA1
    Accept @ 09,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMMARCA1" To VSDGNOMMARCA1

    Label  @ 10,36 "Cor/Tecido" For "TG_COR_TECIDO1"
    Accept @ 11,36 Width 07 "A4"  Picture "#*#" Tag "TG_COR_TECIDO1"    To VSDGCORTECIDO1
    Accept @ 11,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMCOR_TECIDO1" To VSDGNOMCORTECIDO1
    
    Pushbutton @ 15,22 width 11 "~O~k"      OK     Default Value "Ok"  Tag "YES" To BottonValue
    Pushbutton @ 15,36 width 11 "~C~ancela" CANCEL                     Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGITEM1)      And 
     IsBlank(VSDGFAMI1)      And
     IsBlank(VSDGGRP1)       And
     IsBlank(VSDGMARCA1)     And
     IsBlank(VSDGCORTECIDO1) 
     Then MENSAGEM("Informe o(s) dado(s) referente ao material da formula‡„o!")
          Loop
  EndIf
  
  If Not Dados_Complementares()
     Then Loop 
  EnDIf
EndWhile
ClearAll
Release Vars All
Release Procs All