;** FormulaC *******************************************************************
;*  Cadastro de Formulas                                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 28/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Novo Layout
;Ultima Alteracao: 29/11/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Gera Grade/Cor
;Ultima Alteracao: 22/02/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Gera Cor/Grade
;Ultima Alteracao: 04/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TN
;Ultima Alteracao: 27/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 21/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Contrala_Edicao()
;Ultima Alteracao: 18/06/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TN
;Ultima Alteracao: 30/07/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 31/07/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Clientes 0003,0200
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 30/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Iten_Cor
;Ultima Alteracao: 03/06/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Codigo Cor_Tecido/Tamanho = "" na chave
;Ultima Alteracao: 24/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F2/F5/F9 CahveI
;Ultima Alteracao: 21/01/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Atualiza_Ficha()
;Ultima Alteracao: 15/09/2010 por Karina Andrade
;Motivo Alteracao: Ajustes codigo cliente confec‡Æo
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 19/01/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes cria_grade..()
;Ultima Alteracao: 20/01/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes cria semi sem baixa estoque Isabela garcia
;Ultima Alteracao: 27/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Isabela Garcia
;Ultima Alteracao: 30/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Isabela Garcia Nova Codifica‡Æo
;Ultima Alteracao: 12/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novas fun‡äes para confec‡äes  
;Ultima Alteracao: 19/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Unlockrecord depois Busca_Loockp e Atualiza_Ficha()
;Ultima Alteracao: 21/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Variavel errada CODNOVO  
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 31/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sleciona_Ficha com tipo do item de estoque
;Ultima Alteracao: 18/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Atualiza_Ficha(), SYS_CODIGO_CLIENTE=0266  
;Ultima Alteracao: 13/05/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Cria_Grade_Tamanhos() Inclu¡do "Valor Unitario"
;Ultima Alteracao: 11/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado Observacoes no FormulaC
;Ultima Alteracao: 13/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustado ATUALIZA_Ficha() "Criando ficha de estoque quando nÆo existir"
;Ultima Alteracao: 23/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina p/ atualizar/adicionar item na tabela de pre‡o
;Ultima Alteracao: 28/01/2014 por Bruno Carvalho
;Motivo Alteracao: Adapta‡Æo p/ quando edita descri‡Æo do item, permitir altera‡Æo
;Ultima Alteracao: 15/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes para posicionamento de campo quando item da formula editado #0227#
;Ultima Alteracao: 27/01/2015 por Luis Gustavo
;Motivo Alteracao: Implementado op‡ao F1(para pesquisar o item) ao Copiar Formula.
;Ultima Alteracao: 18/03/2015 por Luis Gustavo
;Motivo Alteracao: Implementado a Proc Checa_Empresa_Custo(), para checar se tem empresa padrao no
;                  parametro e buscar o custo da ficha de estoque
;Ultima Alteracao: 28/04/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes Checa_Empresa_Custo(), somente quando ‚ novo registro
;Ultima Alteracao: 25/05/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina para #0085# na proc ATUALIZA_Ficha() 
;Ultima Alteracao: 10/07/2015 por Andrey Fillipe                      
;Motivo Alteracao: Ajustes na proc Atualiza_Ficha(), criar ficha quando nao existir e nao dar mensagem
;Ultima Alteracao: 21/09/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado VSD_I_Tipo_Item p/ quando for Aplica‡Æo Direta, BAE ser igual a "N" (NÆo controla estoque de aplica‡Æo direta)  
;Ultima Alteracao: 05/10/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado processo para posicionar no campo I_Baixa_Automatica somente se o tipo do item controla estoque
;Ultima Alteracao: 11/03/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Cria formula cor e tamanho para semiacabados (Lupus e Zuggy-zi)
;Ultima Alteracao: 28/03/2016 por Kamila Gomes
;Motivo Alteracao: Ajuste op‡ao F1(para pesquisar o item) ao Copiar Formula.
;Ultima Alteracao: 20/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes GetRecord "Iten_Com" -> [Edita Descricao do Item]
;Ultima Alteracao: 21/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog.                  
;Ultima Alteracao: 23/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SetaCorRegistro(), MSGCAMPO no Form, Carrega_Tabelas()
;Ultima Alteracao: 10/04/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes NOVAREF() ao concluir a copia da f¢rmula, retornava erro.
;Ultima Alteracao: 12/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Referencia] no FORMULAC
;Ultima Alteracao: 12/07/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao copiar f¢rmula, adicionado [Descricao do Item] e [Tipo do Item] na visualiza‡Æo ao informar o produto 
;Ultima Alteracao: 15/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ShowPopup
;Ultima Alteracao: 23/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar cores 0388
;Ultima Alteracao: 06/04/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes ATUALIZA_CUSTO() onde a msg de erro ocorrer  apenas uma vez, 
;                  pois os erros foram armazenados em arquivos p/ ser impresso no final do procedimento  
;Ultima Alteracao: 25/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes criacao de grades e cores

;*******************************************************************************
;* Rotina para Localizar Registro Cabeca                                       *
;*******************************************************************************
Proc CHAVEC()

While True
  Moveto [Codigo do Produto]
  End

  If OPCAO_FORM="F"
     Then Down
     Else PgDn
  EndIf

  SetaCorRegistro("Editar")
  While True

     If Field()="Codigo do Produto"
        Then TECLA="F1=Tabelas"
        Else TECLA=""
     EndIf

      MSGCAMPO=""
      AguardaTeclasPadrao()
                              
      If RetVal=-33
         Then Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED
               "F2 ~C~alcular Custos           " : " Recalcular custo de todas f¢rmulas                       " : "F2",
               "F5 ~A~tualizar Custos          " : " Atualizar todas f¢rmulas com £ltimo custo                " : "F5",
               "F6 Atualizar ~T~abela de Pre‡o " : " Atualizar Tabela de Pre‡o                                " : "F6",
               "F9 Atualizar ~F~icha Estoque   " : " Atualizar Ficha de Estoque com £ltimo custo das f¢rmulas " : "F9",
               Separator,
               "~C~ancelar                     " : " Cancelar a Opera‡„o                                      " : "CANCELAR"
              EndMenu
               To MenuVar

              echo off
              If MenuVar="CANCELAR" or MenuVar="Esc"
                  Then Loop
              EndIf

              RetVal=MenuVar
      EndIf

    Switch
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F2":
           MSG=    "Recalcular o Custo de todas as F¢rmulas.// //"
           MSG=MSG+"Confirma opera‡„o ?"
           ConfGeral(MSG)
           If OK<>"S"
              Then Loop
           EndIf

           Del
           NR = NRecords("FormulaC")
           PickForm "1"
           Scan For Not IsBlank([Codigo do Produto])
              Barra(NR, RecNo())
              Aguarde("Aguarde, Processando "+BARRA_STRING)
              Moveto "FormulaI"
              CUSTO()
              Moveto "FormulaC"
           EndScan
           
           Mensagem("Fim do processo !")
           If OPCAO_FORM="F"
              Then PickForm "F"
           EndIf
           QuitLoop
           
      Case RetVal="F6":
           Release Vars CODIGOIT 
           MSG="Deseja Atualizar a tabela de pre‡o ?"
           ConfGeral(MSG)
           If OK<>"S"
              Then Loop
              Else Del
                   UnLockRecord
                   MSGCAMPO=""
                   
                   Do_It!
                   ClearAll
                   
                   MODO="TAB_PRECO"
                   
                   ShowDialog "Atualizar Tabela de Pre‡o" Proc "SD_Dialog"
                   Trigger "OPEN","ARRIVE"
                   Key "F1","ENTER","ESC",
                   -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    
                   @ 5,19   Height 11 Width 72

                   Label  @ 00,00 "Tabela"  For "TG_TABELA"
                   Accept @ 01,01 Width 08 "A5"  Picture "[&,#][#*#]" Tag "TG_TABELA" To VSDGTABELA
                   Accept @ 01,10 Width 24 "A20" Picture "!*!" Tag "TG_NOMNOMTAB" To VSDGNOMTAB              
                   
                   Label @ 03,00 "Op‡„o de Pre‡o " For "TG_TABPRECO"
                   RadioButtons @ 04,01 Height 2 Width 28
                   "Venda ~C~alculado",
                   "Venda a ~P~raticar"
                   Tag "TG_TABPRECO"
                   To VSDGTABPRECO            
                   
                   Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
                   Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

                   EndDialog
                   If ReTval 
                      Then MSG = "Vocˆ escolheu a op‡„o "
                           If VSDGTABPRECO=1
                              Then PARAM="VENDA_CALC"
                                   MSG = MSG + "Venda Calculada"
                              Else PARAM="VENDA_PRAT"
                                   MSG = MSG + "Venda a Praticar"
                           EndIf
                           MSG = MSG + ", deseja continuar ?"
                           ConfGeral(MSG)
                           If Ok="S"
                              Then Tabela_Preco(PARAM)
                           EndIf
                   EndIf

                   Do_It!
                   ClearAll
                   
                   Carrega_Tabelas()
                   
                   QuitLoop
           EndIf

      Case RetVal="F5":
           PickForm "1"
           If Not Seleciona_Ficha("Atualizar com £ltimo custo")
              Then Del
              Else Echo Normal
                   Echo Off
                   Del
                   NR = NRecords("FormulaC")
                   PickForm "1"
                   Scan 
                      Barra(NR, RecNo())
                      Aguarde("Aguarde, Processando "+BARRA_STRING)

                      If IsBlank([Codigo do Produto]) Or [Tipo do Item]="D"
                         Then Loop
                      EndIf    

                      If Not IsBlank(VSDGTIPOEST) And
                         [Tipo do Item]<>VSDGTIPOEST
                         Then Loop
                      EndIf

                      If VSDGMARCA<>"000"
                         Then GetRecord "\\Sistemas\\Estoque\\Itens" [FormulaC->Codigo do Produto] To REG_BUSCA_LOOKUP
                              If Not Retval
                                 Then UnLockRecord
                                      Loop
                                 Else UnLockRecord
                                      If REG_BUSCA_LOOKUP["Codigo da Marca"]<>VSDGMARCA
                                         Then Loop
                                      EndIf
                              EndIf
                      EndIf

                      Moveto "FormulaI"
                      If Not ATUALIZA_CUSTO()
                         Then Moveto "FormulaC"
                              QuitLoop
                         Else Moveto "FormulaC"
                      EndIf
                   EndScan
                   Imprime_Erro()
                   Mensagem("Fim do processo !")
           EndIf
           If OPCAO_FORM="F"
              Then PickForm "F"
           EndIf
           QuitLoop
      Case RetVal="F9": 
           PickForm "1"
           If Not Seleciona_Ficha("Atualizar ficha estoque com £ltimo custo")
              Then Del
              Else Echo Normal
                   Echo Off
                   Del
                   NR = NRecords("FormulaC")
                   PickForm "1"
                   Scan For [Tipo do Item]<>"D" And Not IsBlank([Codigo do Produto]) 
                      Barra(NR, RecNo())
                      Aguarde("Aguarde, Processando "+BARRA_STRING)
                      
                      If Not IsBlank(VSDGTIPOEST) And [Tipo do Item]<>VSDGTIPOEST
                         Then Loop
                      EndIf

                      If [FormulaC->Custo Unitario]<=0
                         Then Loop 
                      EndIf
                      
                      GetRecord "\\Sistemas\\Estoque\\Itens" [FormulaC->Codigo do Produto] To REG_BUSCA_LOOKUP
                      If Not Retval
                         Then Loop
                         Else If VSDGMARCA<>"000" And REG_BUSCA_LOOKUP["Codigo da Marca"]<>VSDGMARCA
                                 Then Loop
                              EndIf
                      EndIf
                      
                      If Not ATUALIZA_FICHA()
                         Then Moveto "FormulaC"
                              QuitLoop
                         Else Moveto "FormulaC"
                      EndIf   
                   EndScan 
                   Imprime_Erro()
                   Mensagem("Fim do processo !")
           EndIf
           If OPCAO_FORM="F"
              Then PickForm "F"
           EndIf
           QuitLoop
      Case RetVal="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="2"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVEC=5
           Return
      Case RetVal="F1":
           Switch
             Case Field()="Codigo do Produto":
                  Moveto [Lookup_Produto]
                  ConsultaF1()
                  [Codigo do Produto]=[]
                  []=""
                  Moveto [Codigo do Produto]
             OtherWise:
                If Field()=""
                   Then CONSULTAF1()
                EndIf
           EndSwitch    
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
            If OPCAO_FORM="F"
               Then PAGINA("FormulaC","MR")
               Else PAGINA("FormulaC","MT")
            EndIf  
            CODIGOI=[Codigo do Produto]
            CODIGOC=[Codigo Cor_Tecido]
            TAMANHO=[Tamanho          ]
            If EDITAR="S"
               Then CHAVEC=0
                    PickForm "1"
                    Controla_EdicaoC()
               Else If EXCLUIR="S"
                       Then If QuerExcluir("desta formula")
                               Then PickForm "1"
                                    EXCLUSAO("Cabeca")
                               Else UnLockRecord     
                            EndIf
                            If OPCAO_FORM="2"
                               Then PickForm "1"
                               Else PickForm "F"
                            EndIf
                       Else QuitLoop     
                    EndIf
            EndIf
            SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           Switch
             Case Field()="Codigo do Produto":
               CHAVEC=9
               Del
               Return
             Case Field()="":
           EndSwitch
      Case Retval="ENTER":
           Switch
             Case Field()="Codigo do Produto":
                  If IsBlank([]) Then Loop EndIf
                  CODREF =""
                  CODIGOI=AlinhM([],10)
                  Moveto [Lookup_Produto]
                  Ativa_Lookup()
                  Moveto [Codigo do Item]
                  Locate CODIGOI
                  If Not RetVal
                     Then Mensagem("Codigo do Item Invalido !")
                          KeyPress "ESC"
                          Moveto [Codigo do Produto]
                          Loop
                  EndIf
                  KeyPress "ESC"
                  [Lookup_Produto   ]=CODIGOI
                  [Codigo do Produto]=CODIGOI
                  CODIGOC=""
                  TAMANHO=""
                  Del
                  PickForm "1"
                  Locate CODIGOI, CODIGOC, TAMANHO
                  If Retval
                     Then CHAVEC=0
                     Else CHAVEC=1
                          End PgDn
                          [Codigo do Produto]=CODIGOI
                          [Lookup_Produto   ]=CODIGOI
                          [Codigo Cor_Tecido]=CODIGOC
                          [Tamanho          ]=TAMANHO
                  EndIf
                  If IsLockRecord()
                     Then If OPCAO_FORM="F"
                             Then PickForm "F"
                          EndIf
                          Quitloop
                  EndIf
                  Return
           EndSwitch
     EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveC)

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()

[Lookup_Produto]=""
Moveto [Baixa_Automatica]
While True
      SetaCorRegistro("Editando")

      TECLA=" Esc=Retornar  "

      If CHAVEC=0
         Then TECLA=TECLA + "F8/=Itens  Del=Excluir  Alt+F=Fun‡”es  "
      EndIf
      
      MSGCAMPO=Field()
      Switch
        Case Field()="Baixa_Automatica"     : MSGCAMPO="Baixa autom tica no estoque pela entrada por produ‡„o (Sim/N„o)"
        Case Field()="Quantidade Produzida" : MSGCAMPO="Quantidade Produzida/Lote M¡nimo"
      EndSwitch

      Prompt TECLA
      
      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","DOWN",-65,-33,"F2","F5","F6","F4","F7","F8","F9"

      If RetVal=-33
         Then MSGCAMPO=""
              Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED
               "F2 ~C~alcular Custos           " : " Recalcular custo desta f¢rmula                           " : "F2",
               "F4 Copia~r~ F¢rmula            " : " Copiar esta f¢rmula p/ outra                             " : "F4",
               "F5 ~A~tualizar Custos          " : " Atualizar esta f¢rmula com £ltimo custo                  " : "F5",
               "F6 Atualizar ~T~abela de Pre‡o " : " Atualizar Tabela de Pre‡o                                " : "F6",
               "F7 ~O~bserva‡”es               " : " Observa‡”es da Formula                                   " : "F7",
               "F9 Atualizar ~F~icha Estoque   " : " Atualizar Ficha de Estoque com £ltimo custo das f¢rmulas " : "F9",
               Separator,                                                                                     
               "~C~ancelar                     " : " Cancelar a Opera‡„o                                      " : "CANCELAR"
              EndMenu
              To MenuVar

              Echo Off
              If MenuVar="CANCELAR" or MenuVar="Esc"
                  Then Loop
              EndIf

              RetVal=MenuVar
      EndIf

      Switch
      Case RetVal="F8" or RetVal="DOWN":
           If CHAVEC=0
              Then QuitLoop
           EndIf
      Case RetVal="F2":
           CampoForm=Field()
           MSG=    "Recalcular o Custo desta F¢rmula.// //"
           MSG=MSG+"Confirma opera‡„o ?"
           ConfGeral(MSG)
           If OK<>"S"
              Then Loop
           EndIf

           Moveto "FormulaI"
           CUSTO()
           Moveto "FormulaC"
           Moveto Field CampoForm
      Case RetVal="F5":
           CampoForm=Field()
           If Seleciona_Ficha("Atualizar com £ltimo custo")
              Then Moveto "FormulaI"
                   ATUALIZA_CUSTO()
                   Moveto "FormulaC"
           EndIf
           Imprime_Erro()
           Moveto Field CampoForm
      Case RetVal="F6":
           MSG="Deseja Atualizar o item "+[FormulaC->Codigo do Produto]+" na tabela de pre‡o a ser informada ?"
           ConfGeral(MSG)
           If OK<>"S"
              Then Loop
              Else CODIGOIT = [Codigo do Produto] 
                   COD_ITEM = [Codigo do Produto]
                   TIP_ITEM = [Tipo do Item]
                   PRECO1   = [Preco de Venda_Calculado] 
                   PRECO2   = [Preco de Venda_Livre]
                   UnLockRecord
                   MSGCAMPO=""
                   
                   Do_It!
                   ClearAll
                   
                   MODO="TAB_PRECO"
                   
                   ShowDialog "Atualizar Tabela de Pre‡o" Proc "SD_Dialog"
                   Trigger "OPEN","ARRIVE"
                   Key "F1","ENTER","ESC",
                   -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    
                   @ 5,19   Height 11 Width 72

                   Label  @ 00,00 "Tabela"  For "TG_TABELA"
                   Accept @ 01,01 Width 08 "A5"  Picture "[&,#][#*#]" Tag "TG_TABELA" To VSDGTABELA
                   Accept @ 01,10 Width 24 "A20" Picture "!*!" Tag "TG_NOMNOMTAB" To VSDGNOMTAB              
                   
                   Label @ 03,00 "Op‡„o de Pre‡o " For "TG_TABPRECO"
                   RadioButtons @ 04,01 Height 2 Width 28
                   "Venda ~C~alculado",
                   "Venda a ~P~raticar"
                   Tag "TG_TABPRECO"
                   To VSDGTABPRECO            
                   
                   Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
                   Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

                   EndDialog
                   If ReTval 
                      Then MSG = "Vocˆ escolheu a op‡„o "
                           If VSDGTABPRECO=1
                              Then PARAM="VENDA_CALC"
                                   MSG = MSG + "Venda Calculada"
                              Else PARAM="VENDA_PRAT"
                                   MSG = MSG + "Venda a Praticar"
                           EndIf
                           MSG = MSG + ", deseja continuar ?"
                           ConfGeral(MSG)
                           If Ok="S"
                              Then Tabela_Preco(PARAM)
                           EndIf
                   EndIf

                   Do_It!
                   ClearAll
                   
                   Carrega_Tabelas()
                   
                   Moveto [Codigo do Produto]
                   Locate CODIGOIT
                   PickForm "1"
                   
                   QuitLoop
           EndIf
      Case Retval="F7" Or RetVal=-65 :
           CampoAnt=Field()
           Edita_Memo("Observacoes",08,01,15,76,"Observa‡”es")
           Moveto Field CampoAnt
           Prompt TECLA              
      Case RetVal="F9": 
           CampoForm=Field()
           If Seleciona_Ficha("Atualizar ficha estoque com £ltimo custo")
              Then Moveto [Lookup_Produto]
                   If Busca_Lookup("Codigo do Item",[Codigo do Produto],"")
                      Then ATUALIZA_Ficha()
                           Moveto "FormulaC"
                   EndIf        
           EndIf
           Moveto Field CampoForm
      Case RetVal="F4" And CHAVEC=0: 
           NOVA()
           QuitLoop
      Case Retval="ESC":
           Switch
           Case Field()="Baixa_Automatica":
                If QuerDesfazer("")
                   Then If CHAVEC=1
                           Then EXCLUSAO("Cabeca")
                           Else Undo
                        EndIf
                        CHAVEC=9
                        Return
                EndIf
           Case Field()="Quantidade Produzida" : Moveto [Baixa_Automatica]
           Otherwise:
                Left
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEC=0
              Then If QuerExcluir("desta formula")
                      Then EXCLUSAO("Cabeca")
                           CHAVEC=9
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="ENTER":
           Switch
           Case Field()="Baixa_Automatica":
                If IsBlank([])
                   Then Loop
                   Else Moveto [Quantidade Produzida]
                EndIf
           Case Field()="Quantidade Produzida":
                If IsBlank([])
                   Then []=1
                EndIf
                [Custo Unitario]=NDecimal([Custo Total]/[Quantidade Produzida],5)
                [Preco de Venda_Calculado]=NDecimal([Custo Unitario]+(([Custo Unitario]*[Indice Preco de Venda])/100),2)
                QuitLoop
           OtherWise:
                Right
           EndSwitch
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Valores Calculo                                                             *
;*******************************************************************************
Proc Valores()
SetaCorRegistro("Editando")

Moveto [Indice Preco de Venda]
While True

  TECLA=" Esc=Retornar  "

  MSGCAMPO=Field()
  Switch
    Case Field()="Indice Preco de Venda": MSGCAMPO="Indice sobre Custo para Calculo do Pre‡o de Venda"
    Case Field()="Preco de Venda_Livre" : MSGCAMPO="Informe o Pre‡o de Venda Final a praticar"
    Case Field()="Flag 1"               : MSGCAMPO="[pausa]"
    OtherWise                           : MSGCAMPO=""
  EndSwitch

  Prompt TECLA

  Wait Field
       Until "ESC","ENTER","FIELDVIEW","F35"

  Switch
  Case Retval="ESC":
       Switch
       Case Field()="Indice Preco de Venda":
            QuitLoop
       Case Field()="Preco de Venda_Livre" : Moveto [Indice Preco de Venda]
       Otherwise:
            Left
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="ENTER":
       Switch
       Case Field()="Indice Preco de Venda":
            [Custo Unitario]=NDecimal([Custo Total]/[Quantidade Produzida],5)
            [Preco de Venda_Calculado]=NDecimal([Custo Unitario]+(([Custo Unitario]*[Indice Preco de Venda])/100),2)
            Moveto [Preco de Venda_Livre]
       Case Field()="Preco de Venda_Livre":
            Moveto [Flag 1]
       Case Field()="Flag 1":
            []=""
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
SetaCorRegistro("Padrao")

EndProc

;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAO(TIPO)
Private TIPO
Switch
Case TIPO="Cabeca":
     Moveto "FormulaC"
     PickForm "1"
     Moveto [Codigo do Produto]
     Locate CODIGOI, CODIGOC, TAMANHO
     Moveto "FormulaI"
     While RecordStatus("New")=False
       Del
     EndWhile
     Moveto "FormulaC"
     Del
     PickForm "F"
Case TIPO="Item":
     Del
     CUSTO()
EndSwitch
EndProc

;*******************************************************************************
;* 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)
Moveto "FormulaI"
EndProc

;*******************************************************************************
;* Atualiza Custo                                                              *
;*******************************************************************************
Proc ATUALIZA_CUSTO()
Private REG_ITEM

Scan For Not IsBlank([Codigo do Material]) And
         [Tipo do Item]<>"C" And
         [Tipo do Item]<>"D" And
         [Tipo do Item]<>"G" And
         [Tipo do Item]<>"H" And
         [Tipo do Item]<>"I"

  GetRecord "\\Sistemas\\Estoque\\Itens" [FormulaI->Codigo do Material] To REG_ITEM
  If RetVal
     Then If REG_ITEM["Inativo"]="S"
             Then Loop
          EndIf    
  EndIf
  
  Moveto "\\Sistemas\\Estoque\\SdEstq"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA,[FormulaI->Codigo do Material],VSDGANO, VSDGMES
  If RetVal
     Then If [Preco de Custo]>0
             Then Moveto "FormulaI"
                  [Valor Unitario]=[\Sistemas\Estoque\SdEstq->Preco de Custo]
             Else If TIT_CUSTO="" Then TIT_CUSTO="1" EndIf
                  Linha_Erro()
                  Print File ARQ_ERRO "\""+"2-4"+ Format("W08,AL",VSDGEMPRESA)+"| "+Format("W11,AL",[FormulaI->Codigo do Material])+"| "+
                                                  Format("W30,AL",[FormulaI->Descricao do Item])+"\""+"\n"
                  If Not MSG_ERRO
                     Then MSG_ERRO = True
                          MSG=" Sem custo informado na ficha de estoque referente a "+VSDGMES+"/"+VSDGANO+" !// //"
                          MSG=MSG+Format("W08,AL","Empresa")  +"| "+Format("W11,AL","Item")   +"| "+Format("W30,AL","Descri‡„o")+"//"
                          MSG=MSG+Format("W08,AL",VSDGEMPRESA)+"| "+Format("W11,AL",[FormulaI->Codigo do Material])+"| "+
                                  Format("W30,AL",[FormulaI->Descricao do Item])+"//"
                          MSG=MSG+"//"
                          MSG=MSG+"Esta mensagem sem custo informado na f¢rmula nÆo ser  mais exibida,"+"//"  
                          MSG=MSG+"pois um relat¢rio ser  impresso no final de todo o processo!"+"//"
                          MSG=MSG+"Deseja continuar ?"
                          ConfGeral(MSG)
                          If OK="N"
                             Then Return False
                          EndIf
                  EndIf     
          EndIf
     Else If TIT_FICHA="" Then TIT_FICHA="1" EndIf
          Linha_Erro()
          Print File ARQ_ERRO "\""+"1-4"+Format("W08,AL",VSDGEMPRESA)+"| "+Format("W11,AL",[FormulaI->Codigo do Material])+"| "+
                                         Format("W30,AL",[FormulaI->Descricao do Item])+"\""+"\n"
          If Not MSG_ERRO
             Then MSG_ERRO = True
                  MSG="N„o foi encontrada a ficha de estoque referente a "+VSDGMES+"/"+VSDGANO+" !// //"
                  MSG=MSG+Format("W08,AL","Empresa")  +"| "+Format("W11,AL","Item")   +"| "+Format("W30,AL","Descri‡„o")+"//"
                  MSG=MSG+Format("W08,AL",VSDGEMPRESA)+"| "+Format("W11,AL",[FormulaI->Codigo do Material])+"| "+
                          Format("W30,AL",[FormulaI->Descricao do Item])+"//"
                  MSG=MSG+"Observacoes:                                                           //"
                  MSG=MSG+"1. Talvez n„o foi executada a transferencia de saldos do mes anterior; //"
                  MSG=MSG+"// "
                  MSG=MSG+"Esta mensagem informando que determinado item esta sem ficha de estoque,"+"//"  
                  MSG=MSG+"n„o ser  exibida novamente, pois um relat¢rio ser  impresso no final de"+"//"
                  MSG=MSG+"todo o processo!"+"//"
                  MSG=MSG+"Deseja continuar ?"
                  ConfGeral(MSG)
                  If OK="N"
                     Then Return False
                  EndIf
          EndIf         
  EndIf
  Moveto "FormulaI"
EndScan
CUSTO()
Return True

EndProc

;*******************************************************************************
;* Rotina grava registro conciliacao c/ erro                                   *
;*******************************************************************************
Proc Linha_Erro()
Private linha

if TIT_ERRO=""
   Then TIT_ERRO="1"
        Print File ARQ_ERRO "\""+"0-1"+ "Ocorrencias de erros na atualiza‡Æo de custos"+"\""+"\n"
        Print File ARQ_ERRO "\""+"0-2"+"\""+ "\n"
        Print File ARQ_ERRO "\""+"0-3"+"\""+ "\n"
Endif

If TIT_FICHA="1"
   Then TIT_FICHA="2"
        Print File ARQ_ERRO "\""+"1-1"+ "N„o foi encontrada a ficha de estoque referente a "+VSDGMES+"/"+VSDGANO+"\""+"\n"
        Print File ARQ_ERRO "\""+"1-2"+"\""+ "\n"
        Print File ARQ_ERRO "\""+"1-3"+ Format("W08,AL","Empresa")  +"| "+Format("W11,AL","Item")   +"| "+
                                        Format("W30,AL","Descri‡„o")+"\""+"\n"
EndIf

If TIT_CUSTO="1" 
   Then TIT_CUSTO="2"
        Print File ARQ_ERRO "\""+"2-0"+"\""+ "\n"
        Print File ARQ_ERRO "\""+"2-1"+ "Sem custo informado na ficha de estoque referente a "+VSDGMES+"/"+VSDGANO+"\""+"\n"
        Print File ARQ_ERRO "\""+"2-2"+"\""+ "\n"
        Print File ARQ_ERRO "\""+"2-3"+ Format("W08,AL","Empresa")  +"| "+Format("W11,AL","Item")   +"| "+
                                        Format("W30,AL","Descri‡„o")+"\""+"\n"
EndIf        

CONT_ERRO=CONT_ERRO+1
TEVE_ERRO=True

EndProc ;Linha_Erro()

;*******************************************************************************
;* Rotina para Imprimir Erros                                                  *
;*******************************************************************************
Proc Imprime_Erro() 
If TEVE_ERRO
      Then MSG=    "Foram detectados erros na atualiza‡Æo do custo!////"
           MSG=MSG+"Verificar relatorios de erros !                "
           Mensagem(MSG)
           
           DISPOSITIVO()
 
           Moveto "FormulaC" 
           FormKey
           Do_IT!
              
           Tabela_ERRO=Cria_Temp(PrivDir())
           Copy "\\Base\\Sistemas\\Estoque\\RM_tx250" Tabela_ERRO
        
           {Tools} {ExportImport} {Import} {ASCII} {AppendDelimited} TypeIn ARQ_ERRO Enter
           TypeIn Tabela_ERRO Enter 
                
           Sort Tabela_ERRO on "Text"
           
           Moveto Tabela_ERRO
           ClearImage
           
           TAB_ERRO = Cria_Temp(PrivDir())                       
           Cria_Tabela(TAB_ERRO,"Tipo(A3),"+
                                "Empresa(A4),"+
                                "Codigo do Item(a10),"+ 
                                "Descricao(A30)")
               
           View TAB_ERRO 
           CoEdit Tabela_ERRO
           Scan
             TEXTO = [Text]
             
             SEQ  = Rtrim(SubStr(TEXTO,1,3))
             EMPR = Rtrim(SubStr(TEXTO,4,8))
             ITEM = Rtrim(SubStr(TEXTO,14,11))
             DESC = Rtrim(SubStr(TEXTO,27,30))
             
             If SEQ<>"1-4" And SEQ<>"2-4"
                Then Loop 
             EndIf
             
             Moveto TAB_ERRO
             End Down
             [Tipo          ] = SEQ   
             [Empresa       ] = EMPR
             [Codigo do Item] = ITEM
             [Descricao     ] = DESC
             
             Moveto Tabela_ERRO
           EndScan
           Do_it!
           Moveto Tabela_ERRO
           ClearImage
           Moveto TAB_ERRO
           ClearImage
           
           ;---- Apenas uma ocorrˆncia de cada registro ----------
           {Ask} TypeIn TAB_ERRO Enter Check
           Do_it!
           Moveto TAB_ERRO
           ClearImage
           Moveto "Answer"
           ClearImage
           
           {Ask} TypeIn Tabela_ERRO Enter TypeIn "Fast Delete" 
           Moveto [Text] TypeIn "..1-4.. Or ..2-4.."
           Do_it!
           Moveto Tabela_ERRO
           ClearImage
           
           View Tabela_ERRO
           Coedit "Answer"
           Scan
             SEQ  = [Tipo          ]   
             EMPR = [Empresa       ]
             ITEM = [Codigo do Item]
             DESC = [Descricao     ]
             
             TEXTO = SEQ + Format("W08,AL",EMPR) + "| " + Format("W11,AL",ITEM) + "| " + Format("W30,AL",DESC)
                                         
             Moveto Tabela_ERRO
             End Down                            
             [Text] = TEXTO
             
             Moveto "Answer"
           EndScan
           Do_it!
           Moveto Tabela_ERRO
           ClearImage
           Moveto "Answer"
           ClearImage
           
           Sort Tabela_ERRO on "Text"
           Moveto Tabela_ERRO
           ClearImage
           
           ;---- Apenas uma ocorrˆncia de cada registro ----------
           Coedit Tabela_ERRO
           Scan
             [Text] = SubStr([Text],4,Len([Text]))
           EndScan
           Do_it!
           ClearImage  
                      
           OPCAOPAG="Todas"
           IMPRIREL(Tabela_ERRO,"2")
           
           Moveto "FormulaC"
           CoeditKey  
 EndIf
 EndProc

;*******************************************************************************
;* Atualiza Custo Ficha de Estoque                                             *
;*******************************************************************************
Proc ATUALIZA_Ficha()
Private cditem,tpitem

Switch
  Case (SYS_CODIGO_CLIENTE="0185"   Or 
        SYS_CODIGO_CLIENTE="0227"   Or 
        SYS_CODIGO_CLIENTE="0266") And [FormulaC->Tipo do Item]="D" And REG_BUSCA_LOOKUP["Codigo da Grade"]<>"" :
       Return True
  
  Case SYS_CLIENTE_CONFEC<>"" And 
       SYS_CODIGO_CLIENTE<>"0227" And
       SYS_CODIGO_CLIENTE<>"0185" And  
       SYS_CODIGO_CLIENTE<>"0266" And 
       [FormulaC->Tipo do Item]="P" And 
       REG_BUSCA_LOOKUP["Codigo da Grade"]<>"":
       Return True

EndSwitch

If [FormulaC->Custo Unitario]<=0
   Then
       ;MSG="Custo unit rio inv lido na formula !// //"
       ;MSG=MSG+Format("W08,AL","Empresa")  +"| "+Format("W11,AL","Item")   +"| "+Format("W30,AL","Descri‡„o")+"//"
       ;MSG=MSG+Format("W08,AL",VSDGEMPRESA)+"| "+Format("W11,AL",[FormulaC->Codigo do Produto])+"| "+Format("W30,AL",[FormulaC->Descricao do Item])+"//"
       ;MSG=MSG+"// "
       ;MSG=MSG+"Deseja continuar ?"
       ;ConfGeral(MSG)
       ;If OK="N"
       ;   Then Return False
       ;   Else Return True
       ;EndIf
        Return True
EndIf

Switch
  Case [FormulaC->Tipo do Item]="P" Or [FormulaC->Tipo do Item]="S":
       Moveto "\\Sistemas\\Estoque\\SdEstq"
       Moveto [Codigo da Empresa]
       Locate VSDGEMPRESA,[FormulaC->Codigo do Produto],VSDGANO,VSDGMES
       If RetVal
          Then [Preco de Custo        ] = [FormulaC->Custo Unitario]
               [Data do Preco de Custo] = Today()
               UnLockRecord
          Else End Down
               [Codigo da Empresa     ] = VSDGEMPRESA
               [Codigo do Item        ] = [FormulaC->Codigo do Produto]
               [Ano Referencia        ] = VSDGANO
               [Mes Referencia        ] = VSDGMES
               [Preco de Custo        ] = [FormulaC->Custo Unitario]
               [Data do Preco de Custo] = Today()
               UnLockRecord
       EndIf        
  Case [FormulaC->Tipo do Item]="D":
       cditem=[FormulaC->Codigo do Produto]
       
       Switch;Alterado Karina
         Case (SYS_CLIENTE_CONFEC="0185" Or
               SYS_CLIENTE_CONFEC="0195" Or
               SYS_CLIENTE_CONFEC="0196") And SubStr([FormulaC->Codigo do Produto],8,3)="000":
               cditem=SubStr([FormulaC->Codigo do Produto],1,7)+".."

         Case (SYS_CODIGO_CLIENTE="0003") And SubStr([FormulaC->Codigo do Produto],7,4)="0000":
               cditem=SubStr([FormulaC->Codigo do Produto],1,6)+".."

         Case (SYS_CLIENTE_CONFEC="0222") And SubStr([FormulaC->Codigo do Produto],7,4)="0000":
               cditem=SubStr([FormulaC->Codigo do Produto],1,6)+".."

         Case (SYS_CLIENTE_CONFEC="0200") And SubStr([FormulaC->Codigo do Produto],9,2)="00":
               cditem=SubStr([FormulaC->Codigo do Produto],1,8)+".."

         Case (SYS_CLIENTE_CONFEC="0204") And SubStr([FormulaC->Codigo do Produto],9,2)="00":
               cditem=SubStr([FormulaC->Codigo do Produto],1,8)+".."

         Case (SYS_CLIENTE_CONFEC="0079") And SubStr([FormulaC->Codigo do Produto],7,4)="0000":
               cditem=SubStr([FormulaC->Codigo do Produto],1,6)+".."

       EndSwitch

       Moveto "\\Sistemas\\Estoque\\SdEstq"
       Moveto [Codigo do Item]
       Locate Pattern cditem
       If RetVal
          Then While True
                 If [Codigo da Empresa]=VSDGEMPRESA And
                    [Ano Referencia   ]=VSDGANO     And
                    [Mes Referencia   ]=VSDGMES
                    Then [Preco de Custo        ]=[FormulaC->Custo Unitario]
                         [Data do Preco de Custo]=Today()
                         UnLockRecord
                 Endif
                 Skip
                 If EOT() Then QuitLoop EndIf
                 Locate Next Pattern cditem
                 If Not RetVal
                    Then QuitLoop
                 Endif
               EndWhile
       EndIf
EndSwitch
Return True
EndProc

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

Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TIPOEST"        : Campo="TG_EMPRESA"
            Case Campo="TG_MARCA"          : Campo="TG_TIPOEST" 
            Case Campo="TG_MESANO"         : Campo="TG_MARCA"
            Case Campo="TG_TABELA"         : Campo="NO"
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="YES" Or Campo="NO" : 
                 If MODO="TAB_PRECO"
                    Then Campo="TG_TABELA"
                    Else Campo="TG_EMPRESA"
                 EndIf    
          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"] = -59 :
          Switch
            Case Campo="TG_TABELA"                        : Dialog_F1()
            Case Campo="TG_EMPRESA" Or Campo="TG_TIPOEST" :  
                 Dynarray WinArray5[]
                 Window Handle Dialog to JANELA
                 Window GetAttributes JANELA To WinArray5
                 WinArray5["FLOATING"]=False
                 Window SetAttributes JANELA From WinArray5

                 If Campo="TG_EMPRESA"                 
                    Then Moveto [Lookup_Empresa         ] 
                         If ConsultaF1()
                            Then VSDGEMPRESA   =[Lookup_Empresa]
                                 Moveto [Lookup_Empresa]
                                 Ativa_Lookup()
                                 Moveto [Codigo da Empresa]
                                 Locate VSDGEMPRESA
                                 If Not RetVal
                                    Then VSDGEMPRESA = ""
                                         VSDGNOMEMP  = ""
                                    Else VSDGEMPRESA   =[Codigo da Empresa    ]
                                         VSDGNOMEMP    =[Nome Fantasia Empresa]
                                 EndIf
                                 KeyPress "ESC"
                         EndIf
                 EndIf
                 If Campo="TG_TIPOEST"                 
                    Then Moveto [Tipo do Item           ] 
                         If ConsultaF1()
                            Then VSDGTIPOEST   =[Tipo do Item]
                                 Moveto [Tipo do Item]
                                 Ativa_Lookup()
                                 Moveto [Tipo do Item]
                                 Locate VSDGTIPOEST
                                 If Not RetVal
                                    Then VSDGTIPOEST    =""
                                         VSDGDESCTIPOEST=""
                                    Else VSDGTIPOEST    =[Tipo do Item          ]
                                         VSDGDESCTIPOEST=[Descricao Tipo do Item]
                                 EndIf
                                 KeyPress "ESC"
                         EndIf
                 EndIf

                 Window Select JANELA
                 WinArray5["FLOATING"]=True
                 Window SetAttributes JANELA From WinArray5
                 
                 Echo Normal
                 Echo off
         EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          Switch
            Case Campo="TG_TABELA" :
                 VSDGTABELA = ControlValue("TG_TABELA")
                 If Not Isblank(VSDGTABELA)
                    Then VSDGTABELA=AlinhM(VSDGTABELA,5)
                         GetRecord "\\Sistemas\\Vendas\\Tbprcab" VSDGTABELA To TABELA
                         If Not RetVal
                            Then Mensagem("Informe uma tabela de pre‡o v lida!") 
                            Else VSDGNOMTAB = TABELA["Descricao da Tabela"]
                                 Campo="YES"  
                         EndIf
                    Else Mensagem("Informe a tabela de pre‡o !") 
                 EndIf
            Case Campo="TG_EMPRESA":
                 VSDGEMPRESA=ControlValue("TG_EMPRESA")
                 If Not IsBlank(VSDGEMPRESA)
                    Then VSDGEMPRESA=AlinhM(VSDGEMPRESA,4)
                         Moveto [Lookup_Empresa]
                         Ativa_Lookup()
                         Moveto [Codigo da Empresa]
                         Locate VSDGEMPRESA
                         If Not RetVal
                            Then Mensagem("Empresa n„o Cadastrada !")
                                 VSDGEMPRESA = ""
                                 VSDGNOMEMP  = ""
                            Else VSDGEMPRESA   =[Codigo da Empresa    ]
                                 VSDGNOMEMP    =[Nome Fantasia Empresa]
                                 Campo="TG_TIPOEST"
                         EndIf
                         KeyPress "ESC"
                         Echo Off
                 EndIf
            Case Campo="TG_TIPOEST" :
                 VSDGTIPOEST=ControlValue("TG_TIPOEST")
                 If IsBlank(VSDGTIPOEST)
                    Then VSDGDESCTIPOEST="TODOS"
                         Campo="TG_MARCA"
                    Else getrecord "\\Sistemas\\Estoque\\Tpitem" VSDGTIPOEST to regtpitem
                         If Not RetVal
                            Then Mensagem("Tipo do item n„o cadastrado !")
                            Else VSDGDESCTIPOEST=regtpitem["Descricao Tipo do Item"]
                                 Campo="TG_MARCA"
                         EndIf
                 EndIf
            Case Campo="TG_MARCA"   : Campo="TG_MESANO"
                 VSDGMARCA=AlinhM(ControlValue("TG_MARCA"),3)
                 
                 
                 
            Case Campo="TG_MESANO"  :
                 VSDGMESANO=ControlValue("TG_MESANO")
                 If IsBlank(VSDGMESANO)
                    Then VSDGMESANO=AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)
                 EndIf
                 VSDGMES=SubStr(VSDGMESANO,1,2)
                 VSDGANO=SubStr(VSDGMESANO,4,4)
                 If NumVal(VSDGMES) > 12 Or NumVal(VSDGMES) <= 0
                    Then MENSAGEM("mes Inv lido!")
                    Else Campo = "YES"
                 EndIf
                 Campo="YES"
            Case Campo="YES"  : AcceptDialog
            Case Campo="NO"   : CancelDialog
          EndSwitch
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe a Empresa de referlncia p/ ficha de estoque"
  Case Campo="TG_MESANO":
       MSG_CAMPO="Informe o Mes/Ano referlncia (MM.AAAA), Em Branco = Mes/Ano Atual"
  Case Campo="TG_TABPRECO":
       MensagemRadioButtons()     
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Ficha Estoque                                                        *
;*******************************************************************************
Proc Seleciona_Ficha(Titulo)

MODO="FICHA"

Echo Normal
Echo Off

VSDGEMPRESA     = ""
VSDGMARCA       = ""
VSDGMESANO      = ""
VSDGTIPOEST     = ""
VSDGDESCTIPOEST = ""

While True
                                   
  ShowDialog Titulo Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
    @ 07,14 Height 13 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

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

    Label  @ 04,00 "Marca"  For "TG_MARCA"
    Accept @ 05,02  Width 06 "A03"  Picture "#*#" Tag "TG_MARCA" To VSDGMARCA

    Label  @ 06,00 "Mˆs/Ano Estoque"  For "TG_MESANO"
    Accept @ 07,01  Width 10 "A07"  Picture "##.####" Tag "TG_MESANO" To VSDGMESANO

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

  EndDialog

  If Not RetVal
     Then Return False
  EndIf

  If IsBlank(VSDGEMPRESA)
     Then Loop
  EndIf
  Return True
EndWhile
EndProc

;*******************************************************************************
;* Nova Referencia                                                             *
;*******************************************************************************
Proc NOVAREF()
Private codok,CODIGOIT

CODIGOIT = [Codigo do Produto]

Moveto [Lookup_Produto]
Ativa_Lookup()
Moveto [Codigo do Item]
Locate COD1
If Retval
   Then codok=True
   Else codok=False
EndIf
KeyPress "ESC"
If not codok
   Then Mensagem("O Item desta formula n„o esta cadastrado !// //F¢rmula n„o copiada.")
        Return
EndIf

Aguarde("Copiando F¢rmula")
CopyToArray REGC
End PgDn
CopyFromArray REGC
[Codigo do Produto]=COD1
[Codigo Cor_Tecido]=""
[Tamanho          ]=""
[Lookup_Produto   ]=COD1
UnLockRecord
Do_It!
{Ask} {FormulaI} Check
Moveto [Codigo do Produto] TypeIn "~CODIGOANT"
Moveto [Codigo Cor_Tecido] TypeIn "~CORANT"
Moveto [Tamanho          ] TypeIn "~TAMANHOANT"
Do_It!
ClearAll
If Not IsEmpty("Answer")
   Then {Ask} {Answer} TypeIn "Fast"
        Moveto [Codigo do Produto] TypeIn "Changeto ~COD1"
        Moveto [Codigo Cor_Tecido] TypeIn "Changeto ~COD2"
        Moveto [Tamanho          ] TypeIn "Changeto ~COD3"
        Do_It!
        Add "Answer" "FormulaI"
        ClearAll
EndIf

LimpAguarde()
Carrega_Tabelas()

Moveto [Codigo do Produto]
Locate CODIGOIT
PickForm "1"
                  
Mensagem("F¢rmula Copiada !")
EndProc

;*******************************************************************************
;* Rotina de Troca de Referencia                                               *
;*******************************************************************************
Proc Muda(Disparo,Campo,Evento,Elemento)
Private Cod_item_Ant
TECLA=""
MSG_CAMPO=""
Temp=True

If INICIO_DIALOG
   Then Campo="CodProduto"
        INICIO_DIALOG=False
EndIf
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If (Disparo="EVENT") And (DynArraySize(Evento)>0) And (Evento["Type"]="KEY")
   Then Switch
           Case Evento["KeyCode"] = 9:
                TEMP=False
           Case Evento["KeyCode"] = 27:
                Switch
                  Case Campo="CodProduto"        : Campo="NO"
                  Case Campo="TG_NOMITEM"        : Campo="CodProduto"
                  Case Campo="TG_TPITEM"         : Campo="CodProduto"
                  Case Campo="TG_NOMTPITEM"      : Campo="CodProduto"
                  Case Campo="TG_REFERENCIA"     : Campo="CodProduto"
                  Case Campo="YES" Or Campo="NO" : Campo="CodProduto"
                EndSwitch
                TEMP=False
          Case Evento["KeyCode"] = -59 :  
                If Campo="CodProduto" 
                   Then Moveto "FormulaI"
                   
                        Cod_item_Ant = [Lookup_Material]
                        
                        Dynarray WinArray5[]
                        Window Handle Dialog to JANELA
                        Window GetAttributes JANELA To WinArray5
                        WinArray5["FLOATING"]=False
                        Window SetAttributes JANELA From WinArray5
      
                        If Campo="CodProduto" Then Moveto [Lookup_Material] EndIf
                        ConsultaF1()
                        
                        If Campo="CodProduto"
                           Then COD1   =[Lookup_Material  ]
                                GetRecord "\\Sistemas\\Estoque\\Itens" COD1 To REG_ITEM
                                If RetVal
                                   Then VSDGNOMITEM    = REG_ITEM["Descricao do Item"]
                                        VSDGTPITEM     = "           "+REG_ITEM["Tipo do Item"]+" "+REG_ITEM["Descricao Tipo do Item"]
                                        VSDGREFERENCIA = "Referˆncia "+REG_ITEM["Referencia"]     
                                EndIf
                        EndIf
                         
                        [Lookup_Material] = Cod_item_Ant
                        RefreshDialog
                        
                        Window Select JANELA
                        WinArray5["FLOATING"]=True
                        Window SetAttributes JANELA From WinArray5
      
                        echo Normal
                        echo off
      
                        Moveto "FormulaC"
                        RefreshDialog
                EndIf             
           Case Evento["KeyCode"] = 13:
                If Checa_TAG()
                   Then Switch
                          Case Campo="CodProduto" :
                               COD1=AlinhM(ControlValue("CodProduto"),10)
                               If Not IsBlank(COD1)
                                  Then GetRecord "\\Sistemas\\Estoque\\Itens" COD1 To REG_ITEM
                                       If RetVal
                                          Then VSDGNOMITEM    = REG_ITEM["Descricao do Item"]
                                               VSDGTPITEM     = "           "+REG_ITEM["Tipo do Item"]+" "+REG_ITEM["Descricao Tipo do Item"]
                                               VSDGREFERENCIA = "Referˆncia "+REG_ITEM["Referencia"]
                                               Campo="YES"
                                          Else Mensagem("Item "+COD1+" n„o localizado no cadastro de itens!")     
                                       EndIf
                                 EndIf
                          Case Campo="TG_NOMITEM"        : Campo="CodProduto"
                          Case Campo="TG_TPITEM"         : Campo="CodProduto"
                          Case Campo="TG_NOMTPITEM"      : Campo="CodProduto"
                          Case Campo="TG_REFERENCIA"     : Campo="CodProduto"
                        EndSwitch
                EndIf
                RefreshDialog
                TEMP=False
        EndSwitch
EndIf

Switch
  Case Campo="CodProduto"   : MSG_CAMPO="Informe o Novo C¢digo do Item"
  OtherWise                 : MSG_CAMPO=""
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return TEMP
EndProc

;*******************************************************************************
;* Rotina Para Janela do Novo Produto                                          *
;*******************************************************************************
Proc Nova()
Private campoant,itemok

CODIGOANT =[Codigo do Produto]
CORANT    =[Codigo Cor_Tecido]
TAMANHOANT=[Tamanho]

COD1           = ""
VSDGNOMITEM    = ""
VSDGTPITEM     = ""
VSDGREFERENCIA = "Referˆncia "

Echo Normal
Echo Off
                                  
Campoant=Field()
While True

  INICIO_DIALOG=True
  ShowDialog "Nova F¢rmula" Proc "Muda"
   Trigger "OPEN","ARRIVE"
   Key "ENTER","ESC","F1"
   @ 09,19 Height 09 Width 49  

    Label  @ 00,00 "Novo Item " for "CodProduto"
    Accept @ 01,01 Width 13 "A10" picture "#*#" Tag "CodProduto" to COD1
    Accept @ 01,12 Width 34 "A30" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM
                         
    Accept @ 02,01 Width 45 "A30"  Picture "!" Tag "TG_TPITEM" To VSDGTPITEM
    Accept @ 03,01 Width 45 "A30" Picture "#*#" Tag "TG_REFERENCIA" To VSDGREFERENCIA
                  
    Pushbutton @ 05,12 width 11 "~O~k"      OK     Default Value "Ok"  Tag "YES" To BottonValue
    Pushbutton @ 05,26 width 11 "~C~ancela" CANCEL                     Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal
     Then QuitLoop
  EndIf

  COD1=AlinhM(COD1,10)
  COD2=""
  COD3=""

  GetRecord "\\Sistemas\\Estoque\\Itens" COD1 To REG_ITEM
  If RetVal
     Then VSDGNOMITEM    = REG_ITEM["Descricao do Item"]
          VSDGTPITEM     = "           "+REG_ITEM["Tipo do Item"]+" "+REG_ITEM["Descricao Tipo do Item"]
          VSDGREFERENCIA = "Referˆncia "+REG_ITEM["Referencia"]
     Else Mensagem("Item "+COD1+" n„o localizado no cadastro de itens!")
          Loop
  EndIf
                           
  itemok=True
  If COD1="0000000000"
     Then Mensagem("Novo c¢digo inv lido !")
          itemok=false
  EndIf
  Moveto [Codigo do Produto]
  Locate COD1, COD2, COD3
  If RetVal
     Then Mensagem("O novo Item ja' existe !")
          itemok=false
  EndIf

  Locate CODIGOANT, CORANT, TAMANHOANT
  If ItemOk
     Then NovaRef()
          QuitLoop
  EndIf
EndWhile

Moveto Field campoant
EndProc

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc CHAVEI()

While True
  Moveto [Sequencia]
  End
  NITEM = [Sequencia]
  Down
  Moveto [Sequencia]

  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While True

    TECLA= " Esc=Retornar  F3=Ver Ficha  F7=Paginar  Alt+F=Fun‡”es           PgDn=Finalizar"

    MSGCAMPO=""
    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F3","F7","HOME","UP","PGDN","PGUP",-33,"F2","F5","F6"

    If RetVal=-33
       Then MSGCAMPO=""
            Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
             "F2 ~C~alcular Custos "        : " Recalcular custo desta f¢rmula          " : "F2",
             "F5 ~A~tualizar Custos"        : " Atualizar esta f¢rmula com £ltimo custo " : "F5",
             "F9 ~A~tualizar Ficha Estoque" : " Atualizar Ficha de Estoque com £ltimo custo das f¢rmulas" : "F9",
             "F6 ~V~alores Unit rios"       : " Informar dados Valores Unit rios        " : "F6",
             SEPARATOR,
             "Gerar Grade de Tamanhos                          " : " Gera f¢rmulas s¢ de Tamanhos para esta F¢rmula"                    : "GRADE",
             "Gerar Grade de Cores/Tamanhos                    " : " Gera f¢rmulas de Cores e Tamanhos para esta F¢rmula"               : "GRADE/COR/SEMI",
             "Gerar Grade de Cores/Tamanhos - Item Acabado     " : " Gera f¢rmulas de Cores e Tamanhos s¢ com consumo de semi-acabado"  : "GRADE/COR",
             SEPARATOR,
             "Gerar Varia‡äes de Cores                         " : " Gera f¢rmulas de Cores para esta F¢rmula"                          : "COR01",
             SEPARATOR,
             "~C~ancelar           " : " Cancelar a Opera‡„o                     " : "CANCELAR"
            EndMenu
             To MenuVar

            echo off
            If MenuVar="CANCELAR" or MenuVar="Esc"
                Then Loop
            EndIf

            If MenuVar="GRADE"
                Then If [FormulaC->Tipo do Item]="D"
                        Then Mensagem("Tipo do Item da Formula Invalido !") 
                             Loop
                     EndIf        
                     Del
                     If Grade()
                        Then CHAVEI=9
                             Return
                        Else QuitLoop
                     EndIf   
            EndIf
            If MenuVar="GRADE/COR"
                Then If [FormulaC->Tipo do Item]<>"D"
                        Then Mensagem("Tipo do Item da Formula Invalido !// //S¢ Aplica‡Æo Direta !") 
                             Loop
                     EndIf        
                     Del 
                     If Grade_Cor()
                        Then CHAVEI=9
                             Return
                        Else QuitLoop
                     EndIf   
            EndIf
            If MenuVar="GRADE/COR/SEMI"
                Then If [FormulaC->Tipo do Item]="D"
                        Then Mensagem("Tipo do Item da Formula Invalido !") 
                             Loop
                     EndIf        
                     Del
                     If Grade_Cor_Semi()
                        Then CHAVEI=9
                             Return
                        Else QuitLoop
                     EndIf   
            EndIf
            If MenuVar="COR01"
                Then If [FormulaC->Tipo do Item]<>"D"
                        Then Mensagem("Tipo do Item da Formula Invalido !// //S¢ Aplica‡Æo Direta !") 
                             Loop
                     EndIf   
                     
                     Del
                     If COR01()
                        Then CHAVEI=9
                             Return
                        Else QuitLoop
                     EndIf  
            EndIf

            RetVal=MenuVar
    EndIf

    Switch
    Case RetVal="F2":
         MSG=    "Recalcular o Custo desta F¢rmula.// //"
         MSG=MSG+"Confirma opera‡„o ?"
         ConfGeral(MSG)
         If OK<>"S"
            Then Loop
         EndIf

         Del
         CUSTO()
         Moveto "FormulaI"
         QuitLoop
    Case RetVal="F5":
         Del
         Moveto "FormulaC"
         If Seleciona_Ficha("Atualizar com £ltimo custo")
            Then Moveto "FormulaI"
                 ATUALIZA_CUSTO()
         EndIf
         Imprime_Erro() 
         Moveto "FormulaI"
         QuitLoop
    Case RetVal="F9": 
         Del
         Moveto "FormulaC"
         If Seleciona_Ficha("Atualizar ficha estoque com £ltimo custo")
            Then Moveto [Lookup_Produto]
                 If Busca_Lookup("Codigo do Item",[Codigo do Produto],"")
                    Then ATUALIZA_Ficha()
                 EndIf        
         EndIf
         Moveto "FormulaI"
         QuitLoop
    Case RetVal="F6":
         Del
         SetaCorRegistro("Padrao")

         Moveto "FormulaC"
         Valores()
         Moveto "FormulaI"
         QuitLoop
    Case Retval="F3":
         Del
         Moveto [Sequencia]
         If RecordStatus("New")
            Then MENSAGEM("Sem Item p/ ver !")
                 QuitLoop
         EndIf
         Opcao_Ver=True
         CHAVEI=0
         Home
         SEQIT=[Sequencia]
         Inicia_Registro()
         DigitaI()
         QuitLoop
    Case Retval="PGDN":
         Del
         CHAVEI=9
         Return
    Case RetVal="ESC":
         Del
         CHAVEI=5
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
          PAGINA("FormulaI","MR")
          If EDITAR="S"
             Then CHAVEI=0
                  SEQIT=[Sequencia]
                  Controla_EdicaoI()
             Else If EXCLUIR="S"
                     Then If QuerExcluir("")
                             Then CHAVEI=8
                                  EXCLUSAO("Item")
                             Else UnLockRecord     
                          EndIf
                     Else QuitLoop     
                  EndIf
          EndIf
          SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         SEQIT=[]
         Del           
         Locate CODIGOI,CODIGOC,TAMANHO,SEQIT
         If Retval
            Then CHAVEI=0
                 SEQIT=[]
            Else CHAVEI=1
                 End
                 Down
                 [Codigo do Produto]=CODIGOI
                 [Codigo Cor_Tecido]=CODIGOC
                 [Tamanho          ]=TAMANHO
                 [Sequencia        ]=SEQIT
                 UnLockRecord
                 Locate CODIGOI,CODIGOC,TAMANHO,SEQIT
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEI)

;*******************************************************************************
;* Rotina de Digitacao Dados do Item                                           *
;*******************************************************************************
Proc Item_Dialog(Disparo,Campo,Evento,Elemento)
TECLA=" Esc=Retornar  "
MSGCAMPO=""
Temp=True

Mouse Show
If INICIO_DIALOG
   Then Switch                               
          Case SYS_CODIGO_CLIENTE = "0227" : 
               ;**** Em 15.04.2014 - Processo antigo, quando permitia a altera‡Æo do item em um lancto existente 02.2013 **** 
               Campo="I_Codigo_Item"
          OtherWise :
               If CHAVEI=0
                  Then GetRecord "\\Sistemas\\Estoque\\Iten_Com" VSD_I_Codigo_Item To ITEM 
                       If RetVal
                          Then VSD_I_Edita_Descr = ITEM["Edita Descricao do Item"]
                          Else VSD_I_Edita_Descr = "N" 
                       EndIf
                       Switch
                         Case VSD_I_Edita_Descr="S" : Campo="I_Descricao_Item"
                         OtherWise                  : Campo="I_Quantidade"    
                       EndSwitch
                  Else Campo="I_Codigo_Item"
               EndIf 
               
        EndSwitch
        INICIO_DIALOG=False
EndIf

If Opcao_Ver=True Then Campo="I_Seq" EndIf

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then

   If Evento["KeyCode"] = -33
      Then Echo Normal
           Echo Off
           ShowPopup " Fun‡”es " CENTERED
           "F4 ~D~escri‡„o              ": " Descri‡„o do Item                  " :"F4",
           "~C~ancelar                  ": " Cancelar a Opera‡„o                " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off  
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Return
          EndIf                                         
          Evento["KeyCode"]=MenuVar
   EndIf 

   Switch
     Case Opcao_Ver=True:
          Temp=False
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                     EndIf
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                     EndIf
              EndSwitch
              If Mover_Reg=True
                 Then SEQIT=[Sequencia]
                      Inicia_Registro()
              EndIf
          EndSwitch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
          If CHAVEI=0
             Then If QuerExcluir("")
                     Then CopyFromArray RegItem
                          CHAVEI=8
                          CancelDialog
                  EndIf
          EndIf
     Case (Evento["KeyCode"] = -62 Or Evento["KeyCode"] = "F4") :
          Campo_Ant=Campo
          If Not IsAssigned(VSD_I_Edita_Descr)    
             Then GetRecord "\\Sistemas\\Estoque\\Iten_Com" VSD_I_Codigo_Item To ITEM
                  If RetVal
                     Then VSD_I_Edita_Descr = ITEM["Edita Descricao do Item"]
                     Else VSD_I_Edita_Descr = "N"
                  EndIf
          EndIf   
          If VSD_I_Edita_Descr="S"
             Then Campo="I_Descricao_Item"
             Else Mensagem("Permiss„o bloqueada p/ altera‡„o da descri‡„o do item !")
          EndIf          
     Case Evento["KeyCode"] = -59 :
          If Campo="I_Codigo_Item" Or
             Campo="I_UN_Item"     Or
             Campo="I_Tipo_Item"
             Then
                  Dynarray WinArray5[]
                  Window Handle Dialog to JANELA
                  Window GetAttributes JANELA To WinArray5
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA From WinArray5

                  If Campo="I_Codigo_Item"       Then Moveto [Lookup_Material]      EndIf
                  If Campo="I_Tipo_Item"         Then Moveto [Tipo do Item]         EndIf
                  If Campo="I_UN_Item"           Then Moveto [Unidade Interna]      EndIf
                  ConsultaF1()

                  Window Select JANELA
                  WinArray5["FLOATING"]=True
                  Window SetAttributes JANELA From WinArray5

                  echo Normal
                  echo off

                  If Campo="I_Codigo_Item"
                     Then VSD_I_Codigo_Item   =[Lookup_Material  ]
                          VSD_I_Descricao_Item=[Descricao do Item]
                          VSD_I_UN_Item       =[Unidade Interna  ]
                          VSD_I_Tipo_Item     =[Tipo do Item     ]
                          Campo="I_Codigo_Item"
                  EndIf
                  If Campo="I_UN_Item"
                     Then VSD_I_UN_Item     =[Unidade Interna]
                          Campo="I_UN_Item"
                  EndIf
                  If Campo="I_Tipo_Item"
                     Then VSD_I_Tipo_Item     =[Tipo do Item     ]
                          Campo="I_Tipo_Item"
                  EndIf
                  Moveto "FormulaI"
          EndIf
         Temp=False
     Case Evento["KeyCode"] = 27:
          Switch
            Case Campo="I_Codigo_Item"      :
                 If QuerDesfazer("")
                    Then If CHAVEI=1
                            Then Del
                            Else CopyFromArray RegItem
                         EndIf
                         CHAVEI=9
                         CancelDialog
                 EndIf
            Case Campo="I_Descricao_Item"    : If CHAVEI=1
                                                  Then Campo="I_Codigo_Item"
                                                  Else CHAVEI=9
                                                       CancelDialog
                                               EndIf
            Case Campo="I_Tipo_Item"         : Campo="I_Descricao_Item"
            Case Campo="I_Quantidade"        :
                 Switch
                   Case IsBlank(VSD_I_Codigo_Item)        : Campo="I_Tipo_Item"
                   Case Not IsAssigned(VSD_I_Edita_Descr) :   
                        GetRecord "\\Sistemas\\Estoque\\Iten_Com" VSD_I_Codigo_Item To ITEM
                        If RetVal
                           Then VSD_I_Edita_Descr = ITEM["Edita Descricao do Item"]
                           Else VSD_I_Edita_Descr = "N"
                        EndIf
                        If VSD_I_Edita_Descr="S"
                           Then Campo="I_Descricao_Item"
                           Else If CHAVEI=1
                                   Then Campo="I_Codigo_Item"
                                   Else CopyFromArray RegItem
                                        CHAVEI=9
                                        CancelDialog
                                EndIf
                        EndIf
                   Case IsAssigned(VSD_I_Edita_Descr) :
                        If VSD_I_Edita_Descr="S"
                           Then Campo="I_Descricao_Item"
                           Else If CHAVEI=1
                                   Then Campo="I_Codigo_Item"
                                   Else CopyFromArray RegItem
                                        CHAVEI=9
                                        CancelDialog
                                EndIf
                        EndIf
                 EndSwitch  
            Case Campo="I_UN_Item"           : Campo="I_Quantidade"
            Case Campo="I_Preco_Unitario"    :
                 If IsBlank(VSD_I_Codigo_Item)
                    Then Campo="I_UN_Item"
                    Else Campo="I_Quantidade"
                 EndIf
            Case Campo="I_Baixa_Automatica"  : Campo="I_Preco_Unitario"
            Case Campo="I_Flag"              : Campo="I_Preco_Unitario"
                 GetRecord "\\Sistemas\\Estoque\\Tpitem" VSD_I_Tipo_Item To REG_TPITEM
                 If RetVal
                    Then If Upper(SubStr(REG_TPITEM["Controla Estoque"],1,1))="S"
                            Then Campo="I_Baixa_Automatica"
                         EndIf 
                 EndIf        
                 Release Vars REG_TPITEM
          EndSwitch
          Temp=False
     Case Evento["KeyCode"] = 13:
          Switch
            Case Campo="I_Codigo_Item":
                 VSD_I_Codigo_Item=ControlValue("I_Codigo_Item")
                 If IsBlank(VSD_I_Codigo_Item)
                    Then Campo="I_Descricao_Item"
                    Else Moveto [Lookup_Material]
                         Ativa_Lookup()
                         Moveto [Codigo do Item]
                         Locate ALINHM(ControlValue("I_Codigo_Item"),10)
                         If RetVal
                            Then VSD_I_Codigo_Item   =[Codigo do Item         ]
                                 VSD_I_Descricao_Item=[Descricao do Item      ]
                                 VSD_I_Tipo_Item     =[Tipo do Item           ]
                                 KeyPress "ESC"
                                 
                                 GetRecord "\\Sistemas\\Estoque\\Iten_Com" VSD_I_Codigo_Item To REG_ITEMCOMP
                                 If RetVal
                                    Then VSD_I_Edita_Descr = REG_ITEMCOMP["Edita Descricao do Item"]
                                    Else VSD_I_Edita_Descr = "N" 
                                 EndIf       
                                 
                                 [Codigo do Material]=VSD_I_Codigo_Item
                                 [Lookup_Material   ]=VSD_I_Codigo_Item

                                 [Codigo Cor_Tecido ]=""
                                 [Tamanho           ]=""

                                 Registro_Item("Ler")
                                 
                                 If VSD_I_Edita_Descr="S"
                                    Then Campo="I_Descricao_Item"
                                    Else Campo="I_Quantidade" 
                                 EndIf  
                            Else Mensagem("Item n„o Cadastrado !")
                                 VSD_I_Codigo_Item   =""
                                 VSD_I_Descricao_Item=""
                                 VSD_I_UN_Item       =""
                                 VSD_I_Tipo_Item     =""
                                 KeyPress "ESC"
                         EndIf
                         Echo Off
                 EndIf  
            Case Campo="I_Descricao_Item":
                 VSD_I_Descricao_Item=ControlValue("I_Descricao_Item")
                 Campo="I_Quantidade"
            Case Campo="I_Tipo_Item":
                 VSD_I_Tipo_Item=ControlValue("I_Tipo_Item")
                 If Not IsBlank(VSD_I_Tipo_Item)
                    Then Moveto [Tipo do Item]
                         Ativa_Lookup()
                         Moveto [Tipo do Item]
                         Locate VSD_I_Tipo_Item
                         If RetVal
                            Then KeyPress "ESC"
                                 [Tipo do Item]=VSD_I_Tipo_Item
                                 Campo="I_Quantidade"
                            Else Mensagem("Tipo do Item n„o Cadastrado !")
                                 VSD_I_Tipo_Item=""
                                 KeyPress "ESC"
                         EndIf
                         Echo Off
                 EndIf
            Case Campo="I_Quantidade":
                 VSD_I_Quantidade=ControlValue("I_Quantidade")
                 If IsBlank(VSD_I_Codigo_Item)
                    Then Campo="I_UN_Item"
                    Else Campo="I_Preco_Unitario"
                 EndIf
             Case Campo="I_UN_Item":
                  VSD_I_UN_Item=ControlValue("I_UN_Item")
                  If Not IsBlank(VSD_I_UN_Item)
                     Then Moveto [Unidade Interna]
                          Ativa_Lookup()
                          Moveto [Sigla da Unidade]
                          Locate VSD_I_UN_Item
                          If RetVal
                             Then VSD_I_UN_Item=[Sigla da Unidade]
                                  KeyPress "ESC"
                                  [Unidade Interna]=VSD_I_UN_Item
                                  Campo="I_Preco_Unitario"
                             Else Mensagem("Unidade n„o Cadastrada !")
                                  VSD_I_UN_Item=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                  EndIf
            Case Campo="I_Preco_Unitario":
                 VSD_I_Preco_Unitario=ControlValue("I_Preco_Unitario")
                 If VSD_I_Quantidade>0 and VSD_I_Preco_Unitario>0
                    Then VSD_I_Preco_Total=VSD_I_Quantidade*VSD_I_Preco_Unitario
                    Else If VSD_I_Preco_Unitario>0
                            Then VSD_I_Preco_Total=VSD_I_Preco_Unitario
                         EndIf
                 EndIf
                 Campo="I_Flag"
                 GetRecord "\\Sistemas\\Estoque\\Tpitem" VSD_I_Tipo_Item To REG_TPITEM
                 If RetVal
                    Then If Upper(SubStr(REG_TPITEM["Controla Estoque"],1,1))="S"
                            Then Campo="I_Baixa_Automatica"
                            Else VSD_I_Baixa_Automatica="N"
                         EndIf
                 EndIf        
                 Release Vars REG_TPITEM
            Case Campo="I_Baixa_Automatica":
                 VSD_I_Baixa_Automatica=ControlValue("I_Baixa_Automatica")
                 If IsBlank(VSD_I_Baixa_Automatica)
                    Then VSD_I_Baixa_Automatica=[FormulaC->Baixa_Automatica]
                 EndIf
                 Campo="I_Flag"
            Case Campo="I_Flag":
                 AcceptDialog
          EndSwitch
          Temp=False
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  Enter=Avan‡ar  "
If Campo="I_Codigo_Item" Or
   Campo="I_Tipo_Item" Or
   Campo="I_UN_Item"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf
Switch
  Case Campo="I_Codigo_Item"   : MSGCAMPO="C¢digo do Item"
  Case Campo="I_Descricao_Item": MSGCAMPO="Descri‡„o do Item"
  Case Campo="I_Tipo_Item"     : MSGCAMPO="Tipo do Item"
  Case Campo="I_Quantidade"    : MSGCAMPO="Quantidade"
  Case Campo="I_UN_Item"       : MSGCAMPO="Unidade Interna"
  Case Campo="I_Preco_Unitario": MSGCAMPO="Valor Unit rio"
  Case Campo="I_Baixa_Automatica" : MSGCAMPO="Baixa autom tica no estoque para este item ? <Sim/N„o)"
  Case Campo="I_Flag"          : MSGCAMPO="[pausa]"
  OtherWise                    : MSGCAMPO=""
EndSwitch

If CHAVEI=0
    Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf

If Opcao_Ver
   Then TECLA=" Esc=Retornar  Home/End/PgDn/PgUp=Paginar  "
   Else TECLA=TECLA+"Alt+F=Fun‡”es  "  
EndIf

MontaRodapeSD(MSGCAMPO, TECLA)
RefreshDialog

Return TEMP
EndProc   ; (Item_Dialog)
;*******************************************************************************
;  Rotina pra Checar Ficha de Estoque                                          *
;*******************************************************************************
Proc Checa_Custo()

If Not IsBlank(VSD_I_Codigo_Item) And
              [Tipo do Item]<>"C" And
              [Tipo do Item]<>"D" And
              [Tipo do Item]<>"G" And
              [Tipo do Item]<>"H" And
              [Tipo do Item]<>"I"

   Then Moveto "\\Sistemas\\Estoque\\SdEstq"
        Moveto [Codigo da Empresa]
        Locate VSDGEMPRESA,[FormulaI->Codigo do Material],VSDGANO, VSDGMES
        If RetVal
           Then If [Preco de Custo]>0
                   Then Moveto "FormulaI"
                        [Valor Unitario]=[\Sistemas\Estoque\SdEstq->Preco de Custo]
                        If VSD_EMPRESA_CUSTO = True
                           Then Return True
                        EndIf   
                   Else Return False
                EndIf
           Else Return False
        EndIf
   Else Return False     
EndIf                       
Moveto "FormulaI"          

EndProc  ; Checa_Custo()
;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Checa_Empresa_Custo()

VSD_EMPRESA_CUSTO = True
VSD_COD_EMPRESA   = [P_Form->Codigo_Empresa]
VSD_ULTIMO_CUSTO  = [P_Form->Ultimo_Custo]
If Not IsBlank(VSD_COD_EMPRESA) And VSD_ULTIMO_CUSTO = "S"
   Then VSDGMES     = AlinhM(StrVal(Month(Today())),2)
        VSDGANO     = AlinhM(StrVal(Year(Today())),4)
        VSDGEMPRESA = VSD_COD_EMPRESA
        If Checa_Custo()
           Then VSD_I_Preco_Unitario = [Valor Unitario]
                Return True
           Else Moveto "FormulaI"
                Return False
        EndIf 
   Else Return False       
EndIf

EndProc   ;Checa_Empresa_Custo()
;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Registro_Item(Funcao_Registro)
Private Funcao_Registro

Switch
  Case Funcao_Registro="Gravar":
       [Tipo do Item              ]=VSD_I_Tipo_Item
       [Codigo do Material        ]=VSD_I_Codigo_Item
       [Descricao do Item         ]=VSD_I_Descricao_Item

       [Quantidade                ]=VSD_I_Quantidade
       [Unidade Interna           ]=VSD_I_UN_Item
       [Valor Unitario            ]=VSD_I_Preco_Unitario
       [Item_Baixa_Automatica     ]=VSD_I_Baixa_Automatica
                                           
       [Codigo Cor_Tecido         ]=CODIGOC
       [Tamanho                   ]=""

  Case Funcao_Registro="Ler": 
       VSD_I_Seq                   =[Sequencia                 ]

       VSD_I_Tipo_Item             =[Tipo do Item              ]
       VSD_I_Codigo_Item           =[Codigo do Material        ]
       VSD_I_Descricao_Item        =[Descricao do Item         ]
       VSD_I_Quantidade            =[Quantidade                ]
       VSD_I_UN_Item               =[Unidade Interna           ]
       VSD_I_Preco_Unitario        =[Valor Unitario            ]
       
       If Not IsBlank(VSD_I_Codigo_Item) And 
              VSD_I_Preco_Unitario <= 0
          Then Checa_Empresa_Custo()
       EndIf
       
       Moveto "FormulaI"   
             
       If VSD_I_Quantidade>0 and VSD_I_Preco_Unitario>0
          Then VSD_I_Preco_Total=VSD_I_Quantidade*VSD_I_Preco_Unitario
          Else If VSD_I_Preco_Unitario>0
                  Then VSD_I_Preco_Total=VSD_I_Preco_Unitario
                  Else VSD_I_Preco_Total=BlankNum()
               EndIf
       EndIf
       VSD_I_Baixa_Automatica       =[Item_Baixa_Automatica     ]
EndSwitch
EndProc   ; (Registro_Item)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()

INICIO_DIALOG=True
Moveto [Sequencia]
Locate CODIGOI,CODIGOC,TAMANHO,SEQIT
CopyToArray RegItem
Registro_Item("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DigitaI()

Showdialog "Dados do Item [     ]" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4",-33,"ClearArea","HOME","END","PGDN","PGUP"
     @ 11,5 height 06 width 67

   Accept @ -01,37 Width 5 "S" Tag "I_Seq" To VSD_I_SEQ

   Label  @ 00,01 "C¢digo Item" For "I_Codigo_Item"
   Accept @ 01,01 Width 13 "A10" picture "!*!" Tag "I_Codigo_Item" to VSD_I_Codigo_Item
   Label  @ 00,15 "Descri‡„o Item" For "I_Descricao_Item"
   Accept @ 01,15 Width 42 "A100" picture "!*!" Tag "I_Descricao_Item" to VSD_I_Descricao_Item
   Label  @ 00,58 "TI" For "I_Tipo_Item"
   Accept @ 01,58 Width 04 "A1" picture "&" Tag "I_Tipo_Item" to VSD_I_Tipo_Item

   Label  @ 02,01 "Quantidade" For "I_Quantidade"
   Accept @ 03,01 Width 13 "N" picture "#*#.[######]" Tag "I_Quantidade" to VSD_I_Quantidade
   Label  @ 02,15 "UN" For "I_UN_Item"
   Accept @ 03,15 Width 05 "A2" picture "!*!" Tag "I_UN_Item" to VSD_I_UN_Item
   Label  @ 02,21 "Vr.Unit rio" For "I_Preco_Unitario"
   Accept @ 03,21 Width 12 "N" picture "#*#.[#####]" Tag "I_Preco_Unitario" to VSD_I_Preco_Unitario
   Label  @ 02,34 "Vr.Total" For "I_Preco_Total"
   Accept @ 03,34 Width 12 "$" picture "#*#.[##]" Tag "I_Preco_Total" to VSD_I_Preco_Total
   Label  @ 02,49 "BAE" For "I_Baixa_Automatica"
   Accept @ 03,50 Width 04 "A1" picture "S,N" Tag "I_Baixa_Automatica" to VSD_I_Baixa_Automatica

   Accept @ 03,58 Width 3 "A1" picture "!*!" Tag "I_Flag" to VSD_I_Flag

EndDialog
If RetVal
   Then Finaliza_Registro(True)
   Else Finaliza_Registro(False)
EndIf
EndProc   ; (DigitaI)




;*******************************************************************************
;* Rotina Monta Aray Grade                                                     *
;*******************************************************************************
Proc Monta_Array_Grade()

Moveto [Codigo da Grade]
If Not Busca_Lookup("Codigo da Grade",[Codigo da Grade],"")
   Then Return False
EndIf

DynArray Array_TM[]
Array_TM[1] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade1"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item1"]))
Array_TM[2] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade2"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item2"]))
Array_TM[3] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade3"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item3"]))
Array_TM[4] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade4"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item4"]))
Array_TM[5] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade5"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item5"]))
Array_TM[6] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade6"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item6"]))
Array_TM[7] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade7"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item7"]))
Array_TM[8] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade8"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item8"]))
Array_TM[9] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade9"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item9"]))
Array_TM[10]="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade10"],2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item10"]))
Array_TM[11]="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade11"],2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item11"]))
Array_TM[12]="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade12"],2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item12"]))

Return True
EndProc

;*******************************************************************************
;* Rotina para geracao das grades/cores                                        *
;*******************************************************************************
Proc Grade_Cor()
Private Campo_Anterior,i,CODITEM,CODANTERIOR

If SYS_CLIENTE_CONFEC=""
   Then Return False
EndIf

MSG="Deseja gerar f¢rmulas com Cores/Tamanhos para este Item-Acabado ?"
ConfGeral(MSG)
If OK<>"S"
   Then Return False
EndIf

Moveto "FormulaC"
CODITEM=[Codigo do Produto]
UnLockRecord
Formkey

{TableAdd} {\\Sistemas\\Estoque\\Iten_Cor} 
{TableAdd} {\\Sistemas\\Estoque\\Itens} 

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate CODITEM
If RetVal
   Then Monta_Array_Grade()
        
        Aguarde("Gerando formulas das Grades")
        
        Moveto "\\Sistemas\\Estoque\\Iten_Cor"
        Moveto [Codigo do Item]
        Locate CODITEM
        If RetVal
           Then While [Codigo do Item]=CODITEM
                  Switch                 
                    Case SYS_CLIENTE_CONFEC="0185" Or
                         SYS_CLIENTE_CONFEC="0195" Or
                         SYS_CLIENTE_CONFEC="0196" Or
                         SYS_CLIENTE_CONFEC="0222" Or
                         SYS_CLIENTE_CONFEC="0079" Or
                         SYS_CODIGO_CLIENTE="0003" :
                         Cria_Grade(AlinhM(StrVal(NumVal([Sequencia da Cor_Tecido])),2))
                  EndSwitch
           
                  Moveto "\\Sistemas\\Estoque\\Iten_Cor"
                  Skip
                  If Eot()
                     Then QuitLoop
                  EndIf
                EndWhile
           Else Switch; Alterado Karina
                  Case SYS_CLIENTE_CONFEC<>"":
                       Cria_Grade("")
                EndSwitch  
        EndIf
EndIf
Do_It!

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

Moveto "FormulaC"
CoEditKey
FormKey
Moveto [Codigo do Produto]
Locate CODITEM
Moveto "FormulaI"

LimpAguarde()
Return True
EndProc

;*******************************************************************************
;* Rotina Cria Grade                                                           *
;*******************************************************************************
Proc Cria_Grade(Cor)
Private CODNOVO,wi,i,ITEM_F

For i From 1 to 12
  If LTrim(RTrim(SubStr(Array_TM[i],4,2)))<>""
     Then 
          tm=LTrim(RTrim(SuBstr(Array_TM[i],4,2)))

          CODNOVO=CODITEM
          CODNOVO=SubStr(CODNOVO,1,(10-Len(Cor+Tm)))+Cor+tm
          If CODNOVO=CODITEM Then Loop EndIf

          Moveto "FormulaI"
          Moveto [Codigo do Produto]
          Locate CODNOVO,"",""
          If RetVal
             Then While [Codigo do Produto]=CODNOVO
                    Del
                    If EOT() Then QuitLoop EndIf
                  EndWhile  
          EndIf

          Moveto "FormulaC"
          Moveto [Codigo do Produto]
          Locate CODNOVO
          If RetVal
             Then Del
          EndIf

          GetRecord "\\Sistemas\\Estoque\\Itens" CODNOVO To ITEM_F
          If not RetVal
             Then 
                  Mensagem("Item "+CODNOVO+" n„o cadastrado, Formula n„o criada!")
                  Loop
          endif       
          End
          Down
          [Codigo do Produto   ]=CODNOVO
          [Lookup_Produto      ]=CODNOVO
          [Codigo Cor_Tecido   ]=""
          [Tamanho             ]=""
          [Baixa_Automatica    ]="S"
          [Quantidade Produzida]=1
          unLockrecord
          
          CODNOVOS=MudaCodigoPara(CODNOVO,"S")
          GetRecord "\\Sistemas\\Estoque\\Itens" CODNOVOS To ITEM_F
          If not RetVal
             Then 
                  Mensagem("Item "+CODNOVOS+" n„o cadastrado !// //Item da Formula "+CODNOVO+" n„o adicionado !")
                  Loop
          endif       

          Moveto "FormulaI"
          End
          Down
          [Codigo do Produto    ]=CODNOVO
          [Sequencia            ]=1
          [Codigo do Material   ]=CODNOVOS
          [Lookup_Material      ]=CODNOVOS

          [Codigo Cor_Tecido    ]=""
          [Tamanho              ]=""

          [Item_Baixa_Automatica]="S"
          [Quantidade           ]=1
          unLockrecord
          
          If SYS_CODIGO_CLIENTE="0079" 
            Then
                  Moveto "FormulaC"
                  Moveto [Codigo do Produto]
                  Locate CODNOVOS
                  If Not RetVal
                     Then 
                          End
                          Down
                          [Codigo do Produto   ]=CODNOVOS
                          [Lookup_Produto      ]=CODNOVOS
                      
                          [Quantidade Produzida]=1
                          [Baixa_Automatica    ]="N"
                          If IsLockRecord()
                             Then Del
                             Else UnLockRecord
                          EndIf   
                  EndIf        
          EndIf
  EndIf
EndFor

EndProc


;*******************************************************************************
;* Rotina para geracao das grades/cores                                        *
;*******************************************************************************
Proc Grade_Cor_Semi()
Private Campo_Anterior,i,CODITEM,CODANTERIOR

If SYS_CLIENTE_CONFEC="" 
   Then Return False
EndIf   

MSG="Deseja gerar f¢rmulas com Cores/Tamanhos para este Item ?"
ConfGeral(MSG)
If OK<>"S"
   Then Return False
EndIf

CODLOCATE=[FormulaC->Codigo do Produto]
CODITEM  =[FormulaC->Codigo do Produto]

CODREF =[FormulaC->Codigo do Produto]
CODREF =MudaCodigoPara(CODREF,"P")
CODREF =PegaCodigoRaiz(CODREF)

If IsAssigned(Array_Materiais) Then Release Vars Array_Materiais  EndIf
DynArray Array_Materiais[]
i=0
Moveto "FormulaI" 
Scan
  i=i+1
  Array_Materiais[i]=[Codigo do Material]+"|"+AlinhM(Strval([Quantidade]),13)+"|"+AlinhM(Strval([Valor Unitario]),13)+
                     "|"+[Tipo do Item]
EndScan

Moveto "FormulaC"
CopyToArray REG_ITEM_FORMULA
UnLockRecord
Formkey

{TableAdd} {\\Sistemas\\Estoque\\Iten_Cor} 
{TableAdd} {\\Sistemas\\Estoque\\Itens} 

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate CODITEM
If RetVal
   Then Monta_Array_Grade()
        
        Aguarde("Gerando formulas das Grades")
        
        Moveto "\\Sistemas\\Estoque\\Iten_Cor"
        Moveto [Codigo do Item]
        Locate CODREF
        If RetVal
           Then While [Codigo do Item]=CODREF
                  Switch 
                    Case SYS_CLIENTE_CONFEC="0185" Or
                         SYS_CLIENTE_CONFEC="0195" Or
                         SYS_CLIENTE_CONFEC="0196" Or
                         SYS_CLIENTE_CONFEC="0222" Or
                         SYS_CODIGO_CLIENTE="0003" Or
                         SYS_CLIENTE_CONFEC="0079":  
                         Cria_Grade_Semi(AlinhM(StrVal(NumVal([Sequencia da Cor_Tecido])),2))
                  EndSwitch
           
                  Moveto "\\Sistemas\\Estoque\\Iten_Cor"
                  Skip
                  If Eot()
                     Then QuitLoop
                  EndIf
                EndWhile
           Else Switch ; Alterado Karina
                  Case SYS_CLIENTE_CONFEC<>"":
                       Cria_Grade_Semi("")
                EndSwitch  
        EndIf
EndIf
Do_It!

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

Moveto "FormulaC"
CoEditKey
FormKey
Moveto [Codigo do Produto]
Locate CODLOCATE
Moveto "FormulaI"

LimpAguarde()
Return True
EndProc

;*******************************************************************************
;* Rotina Cria Grade                                                           *
;*******************************************************************************
Proc Cria_Grade_Semi(Cor)
Private CODNOVO,wi,ia,gradeMP, ItemRaiz,regitemformula

For ia From 1 to 12
  If LTrim(RTrim(SubStr(Array_TM[ia],4,2)))<>""
     Then 
          tm=LTrim(RTrim(SuBstr(Array_TM[ia],4,2)))

          CODNOVO=CODITEM
          CODNOVO=SubStr(CODNOVO,1,(10-Len(Cor+Tm)))+Cor+tm
          If CODNOVO=CODITEM Then Loop EndIf

          Moveto "FormulaI"
          Moveto [Codigo do Produto]
          Locate CODNOVO,"",""
          If RetVal
             Then While [Codigo do Produto]=CODNOVO
                    Del
                    If EOT() Then QuitLoop EndIf
                  EndWhile  
          EndIf

          Moveto "FormulaC"
          Moveto [Codigo do Produto]
          Locate CODNOVO
          If RetVal
             Then Del
          EndIf        

          GetRecord "\\Sistemas\\Estoque\\Itens" CODNOVO To ITEM_F
          If not RetVal
             Then 
                  Mensagem("Item "+CODNOVO+" n„o cadastrado, Formula n„o criada!")
                  Loop
          endif       
          End
          Down
          CopyFromArray REG_ITEM_FORMULA
          [Codigo do Produto   ]=CODNOVO
          [Lookup_Produto      ]=CODNOVO
          unLockrecord
          
          For wi From 1 To DynArraySize(Array_Materiais)
            
            CODNOVOS=SubStr(Array_Materiais[wi],1,10)
            GetRecord "\\Sistemas\\Estoque\\Itens" CODNOVOS To ITEM_MP
            If not RetVal
               Then Mensagem("Item "+CODNOVOS+" n„o cadastrado !// //Item da Formula "+CODNOVO+" n„o adicionado !")
                    Loop
            endif   

            switch
              case ITEM_MP["Tipo do Item"        ]<>"D"                            and
                   ITEM_MP["Codigo da Grade"     ] =ITEM_F["Codigo da Grade"     ] and
                   ITEM_MP["Codigo da Cor_Tecido"]<>""                             :

                tm2=tm
                Switch 
                  Case SYS_CLIENTE_CONFEC="0185" Or
                       SYS_CLIENTE_CONFEC="0195" Or
                       SYS_CLIENTE_CONFEC="0196":

                       CODNOVOS=SubStr(CODNOVOS,1,7)+Cor+tm2
                       
                  Case SYS_CODIGO_CLIENTE="0003" Or
                       SYS_CLIENTE_CONFEC="0222":

                       CODNOVOS=SubStr(CODNOVOS,1,6)+Cor+tm2
                       
                  Case SYS_CLIENTE_CONFEC="0200" Or
                       SYS_CLIENTE_CONFEC="0204":

                       CODNOVOS=SubStr(CODNOVOS,1,8)+tm2
                       
                EndSwitch

              case ITEM_MP["Tipo do Item"        ]<>"D"                            and
                   ITEM_MP["Codigo da Grade"     ] =ITEM_F["Codigo da Grade"     ] and
                   ITEM_MP["Codigo da Cor_Tecido"] =""                             :

                tm2=tm
                if len(tm2)=1 then CODNOVOS=SubStr(CODNOVOS,1,9)+tm2 endif
                if len(tm2)=2 then CODNOVOS=SubStr(CODNOVOS,1,8)+tm2 endif

              case ITEM_MP["Tipo do Item"        ]<>"D"                            and
                   ITEM_MP["Codigo da Grade"     ] =""                             and
                   ITEM_MP["Codigo da Cor_Tecido"]<>""                             :

                ItemRaiz=CODNOVOS
                Switch 
                  Case (SYS_CLIENTE_CONFEC="0185" Or
                        SYS_CLIENTE_CONFEC="0195" Or
                        SYS_CLIENTE_CONFEC="0196") : 
                        ItemRaiz=SubStr(CODNOVOS,1,7)+".."
               
                  Case (SYS_CODIGO_CLIENTE="0003") : 
                        ItemRaiz=SubStr(CODNOVOS,1,6)+".."
               
                  Case (SYS_CLIENTE_CONFEC="0222") : 
                        ItemRaiz=SubStr(CODNOVOS,1,6)+".."
               
                  Case (SYS_CLIENTE_CONFEC="0200") : 
                        ItemRaiz=SubStr(CODNOVOS,1,8)+".."
               
                  Case (SYS_CLIENTE_CONFEC="0204") : 
                        ItemRaiz=SubStr(CODNOVOS,1,8)+".."
               
                  Case (SYS_CLIENTE_CONFEC="0079") : 
                        ItemRaiz=SubStr(CODNOVOS,1,6)+".."
               
                EndSwitch
  
                Moveto "\\Sistemas\\Estoque\\Itens"
                Moveto [Codigo do Item]
                Locate Pattern ItemRaiz
                If RetVal
                   Then While True

                          if ITEM_MP["Codigo da Grade"] =""                              and
                             [Codigo da Grade         ] =""                              and
                             [DTamanho                ] =""                              and 
                             [Tipo do Item            ] =ITEM_MP["Tipo do Item"        ] and 
                             [Codigo da Cor_Tecido    ] = ITEM_F["Codigo da Cor_Tecido"]     
                             then  
                                  CODNOVOS = [Codigo do Item]
                                  QuitLoop
                          endif        
                   
                          Skip
                          If EOT() Then QuitLoop EndIf

                          Locate Next Pattern ItemRaiz
                          If Not RetVal
                             Then QuitLoop
                          EndIf
                        EndWhile
                EndIf

            endswitch

            GetRecord "\\Sistemas\\Estoque\\Itens" CODNOVOS To ITEM_MAT
            If not RetVal
               Then 
                    Mensagem("Item "+CODNOVOS+" n„o cadastrado !// //Item da Formula "+CODNOVO+" n„o adicionado !")
                    Loop
            endif        
            Moveto "FormulaI"
            Moveto [Codigo do Produto]
            Locate CODNOVO,"","",wi
            If Not RetVal
               Then End
                    Down
                    [Codigo do Produto    ]=CODNOVO
                    [Sequencia            ]=wi
                    [Codigo do Material   ]=CODNOVOS
                    [Lookup_Material      ]=CODNOVOS

                    [Codigo Cor_Tecido    ]=""
                    [Tamanho              ]=""

                    [Item_Baixa_Automatica]="S"
                    [Quantidade           ]=NumVal(SubStr(Array_Materiais[wi],12,13))
                    [Valor Unitario       ]=NumVal(SubStr(Array_Materiais[wi],26,13))
                    unLockrecord

                    If SYS_CODIGO_CLIENTE="0079" and ITEM_MP["Tipo do Item"]="S"
                      Then
                           Moveto "FormulaC"
                           Moveto [Codigo do Produto]
                           Locate CODNOVOS
                           If Not RetVal
                              Then 
                                   End
                                   Down
                                   [Codigo do Produto   ]=CODNOVOS
                                   [Lookup_Produto      ]=CODNOVOS
                              
                                   [Quantidade Produzida]=1
                                   [Baixa_Automatica    ]="N"
                                   If IsLockRecord()
                                      Then Del
                                      Else UnLockRecord
                                   EndIf   
                           EndIf        
                    EndIf
           EndIf
          EndFor
  EndIf
EndFor

EndProc


;*******************************************************************************
;* Rotina para geracao das grades/Tamanhos                                     *
;*******************************************************************************
Proc Grade()
Private Campo_Anterior,i,CODITEM,CODANTERIOR

If SYS_CLIENTE_CONFEC="" 
   Then Return False
EndIf   

MSG="Deseja gerar formula com Grade dos tamanhos ?"
ConfGeral(MSG)
If OK<>"S"
   Then Return False
EndIf

CODLOCATE=[FormulaC->Codigo do Produto]
CODITEM  =[FormulaC->Codigo do Produto]
  
If IsAssigned(Array_Materiais) Then Release Vars Array_Materiais  EndIf
DynArray Array_Materiais[]
i=0
Moveto "FormulaI"  
Scan
  i=i+1
  Array_Materiais[i]=[Codigo do Material]+"|"+AlinhM(Strval([Quantidade]),13)+"|"+AlinhM(Strval([Valor Unitario]),13)+
                     "|"+[Tipo do Item]
EndScan

Moveto "FormulaC"
CopyToArray REG_ITEM_FORMULA
UnLockRecord
Formkey

{TableAdd} {\\Sistemas\\Estoque\\Itens} 

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate CODITEM
If RetVal
   Then Monta_Array_Grade()
        
        Aguarde("Gerando formulas das Grades")
        Cria_Grade_Tamanhos()
EndIf
Do_It!

Moveto "\\Sistemas\\Estoque\\Itens"    ClearImage

Moveto "FormulaC"
CoEditKey
FormKey
Moveto [Codigo do Produto]
Locate CODLOCATE
Moveto "FormulaI"

LimpAguarde()
Return True
EndProc

;*******************************************************************************
;* Rotina Cria Grade                                                           *
;*******************************************************************************
Proc Cria_Grade_Tamanhos()
Private CODNOVO,wi,i,regitemdaformula

For i From 1 to 12
  If LTrim(RTrim(SubStr(Array_TM[i],4,2)))<>""
     Then 
          tm=LTrim(RTrim(SuBstr(Array_TM[i],4,2)))

          CODNOVO=CODITEM
          CODNOVO=SubStr(CODNOVO,1,(10-Len(Tm)))+tm
          If CODNOVO=CODITEM Then Loop EndIf
         
          Moveto "FormulaI"
          Moveto [Codigo do Produto]
          Locate CODNOVO,"",""
          If RetVal
             Then While [Codigo do Produto]=CODNOVO
                    Del
                    If EOT() Then QuitLoop EndIf
                  EndWhile  
          EndIf

          Moveto "FormulaC"
          Moveto [Codigo do Produto]
          Locate CODNOVO
          If RetVal
             Then Del
          EndIf

          GetRecord "\\Sistemas\\Estoque\\Itens" CODNOVO To ITEM_F
          If not RetVal
             Then
                  Mensagem("Item "+CODNOVO+" n„o cadastrado, Formula n„o criada!")
                  Loop
          EndIf
          End
          Down
          CopyFromArray REG_ITEM_FORMULA
          [Codigo do Produto   ]=CODNOVO
          [Lookup_Produto      ]=CODNOVO
          unLockrecord

          For wi From 1 To DynArraySize(Array_Materiais)

            CODNOVOS=SubStr(Array_Materiais[wi],1,10)
            getrecord "\\sistemas\\estoque\\itens" CODNOVOS to regitemdaformula
            if not retval
               then 
                    Mensagem("Item "+CODNOVOS+" n„o cadastrado !// //Item da Formula "+CODNOVO+" n„o adicionado !")
                    loop
            endif    

            if regitemdaformula["Tipo do Item"   ]<>"D" and
               regitemdaformula["Codigo da Grade"] =ITEM_F["Codigo da Grade"]
               then              
                    if len(tm)=1 then CODNOVOS=SubStr(CODNOVOS,1,9)+tm endif
                    if len(tm)=2 then CODNOVOS=SubStr(CODNOVOS,1,8)+tm endif

                    getrecord "\\sistemas\\estoque\\itens" CODNOVOS to regitemdaformula
                    if not retval
                       then
                            Mensagem("Item "+CODNOVOS+" n„o cadastrado !// //Item da Formula "+CODNOVO+" n„o adicionado !")
                          Loop
                    endif    
            endif
          
            Moveto "FormulaI"
            Moveto [Codigo do Produto]
            Locate CODNOVO,"","",wi
            If Not RetVal
               Then 
                    End
                    Down
                    [Codigo do Produto    ]=CODNOVO
                    [Sequencia            ]=wi
                    [Codigo do Material   ]=CODNOVOS
                    [Lookup_Material      ]=CODNOVOS

                    [Codigo Cor_Tecido    ]=""
                    [Tamanho              ]=""
                    
                    [Item_Baixa_Automatica]="S"
                    [Quantidade           ]=NumVal(SubStr(Array_Materiais[wi],12,13))
                    [Valor Unitario       ]=NumVal(SubStr(Array_Materiais[wi],26,13))
                    unLockrecord
            EndIf
          EndFor
  EndIf
EndFor

EndProc



;*******************************************************************************
;* Rotina para geracao das varia‡äes de cores                                  *
;*******************************************************************************
Proc COR01()
Private i,CODLOCATE,NOVOPA,NOVOMP,regitens,regformulac

If SYS_CLIENTE_CONFEC<>"" 
   Then Return False
EndIf   

if sys_Codigo_Cliente="0388"
  then ;ok !
  else Mensagem("Fun‡Æo Inativa, verificar suporte da VISE !")
       return False
endif 

MSG="Deseja gerar f¢rmulas com Cores para este Item ?"
ConfGeral(MSG)
If OK<>"S"
   Then Return False
EndIf

CODLOCATE=[FormulaC->Codigo do Produto]

If IsAssigned(Array_Materiais) Then Release Vars Array_Materiais  EndIf
DynArray Array_Materiais[]
i=0
Moveto "FormulaI" 
Scan
  i=i+1
  Array_Materiais[i]=[Codigo do Material]+"|"+AlinhM(Strval([Quantidade]),13)+"|"+AlinhM(Strval([Valor Unitario]),13)+
                     "|"+[Item_Baixa_Automatica]
EndScan

Moveto "FormulaC"
CopyToArray regformulac
UnLockRecord
Formkey

{TableAdd} {\\Sistemas\\Estoque\\Iten_Cor} 
{TableAdd} {\\Sistemas\\Estoque\\Itens} 

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate CODLOCATE
If RetVal
   Then 
        Aguarde("Gerando formulas das Cores")
        
        Moveto "\\Sistemas\\Estoque\\Iten_Cor"
        Moveto [Codigo do Item]
        Locate CODLOCATE
        If not RetVal
           then
                Mensagem("Item "+CODLOCATE+" sem cores cadastradas, Formula n„o criada!")
           else 
                While [Codigo do Item]=CODLOCATE and [Codigo da Cor_Tecido]<>""

                  NOVOPA=Substr(CODLOCATE,1,6)+[Codigo da Cor_Tecido]
                  GetRecord "\\Sistemas\\Estoque\\Itens" NOVOPA To regItens
                  If not RetVal
                     then
                          Mensagem("Item "+NOVOPA+" n„o cadastrado, Formula n„o criada!")
                     else
                          Moveto "FormulaI"
                          Moveto [Codigo do Produto]
                          Locate NOVOPA,"",""
                          If RetVal
                             Then While [Codigo do Produto]=NOVOPA
                                    Del
                                    If EOT() Then QuitLoop EndIf
                                  EndWhile  
                          EndIf

                          Moveto "FormulaC"
                          Moveto [Codigo do Produto]
                          Locate NOVOPA,"",""
                          If RetVal
                             Then Del
                          EndIf        

                          End
                          Down
                          CopyFromArray regformulac
                          [Codigo do Produto   ]=NOVOPA
                          [Lookup_Produto      ]=NOVOPA
                          unLockrecord
            
                          For wi From 1 To DynArraySize(Array_Materiais)
                            
                            NOVOMP=SubStr(Array_Materiais[wi],1,10)
                            
                            GetRecord "\\Sistemas\\Estoque\\Itens" NOVOMP To regitens
                            If not RetVal
                               Then 
                                    Mensagem("Item "+NOVOMP+" n„o cadastrado !// //Item da Formula "+NOVOPA+" n„o adicionado !")
                               else
                                    Moveto "FormulaI"
                                    End
                                    Down
                                    [Codigo do Produto    ]=NOVOPA
                                    [Sequencia            ]=wi
                                    [Codigo do Material   ]=NOVOMP
                                    [Lookup_Material      ]=NOVOMP
      
                                    [Codigo Cor_Tecido    ]=""
                                    [Tamanho              ]=""
      
                                    [Quantidade           ]=NumVal(SubStr(Array_Materiais[wi],12,13))
                                    [Valor Unitario       ]=NumVal(SubStr(Array_Materiais[wi],26,13))
                                    [Item_Baixa_Automatica]=SubStr(Array_Materiais[wi],40,01)
                                    unLockrecord
                            endif
                          EndFor
                  endif
                  
                  Moveto "\\Sistemas\\Estoque\\Iten_Cor"
                  Skip
                  If Eot()
                     Then QuitLoop
                  EndIf
                EndWhile
        EndIf
EndIf
Do_It!

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

Moveto "FormulaC"
CoEditKey
FormKey
Moveto [Codigo do Produto]
Locate CODLOCATE
Moveto "FormulaI"

LimpAguarde()
Return True
EndProc





;*******************************************************************************
;* Rotina para Finalizar o Registro                                            *
;*******************************************************************************
Proc Finaliza_Registro(ok)
Private ok
If Ok
   Then Registro_Item("Gravar")
   Else If CHAVEI=8
           Then CopyFromArray RegItem
                Del
        EndIf
EndIf
CUSTO()
EndProc   ; (Finaliza_Registro)

;*******************************************************************************
;* Rotina para atualizar/adicionar item na tabela de pre‡o                     *
;*******************************************************************************
Proc Tabela_Preco(PARAM)
Private PARAM, PRECO, DES_ITEM, UN 

NR=NRecords("FormulaC")

If Not IsAssigned(CODIGOIT)
   Then View "\\Sistemas\\Estoque\\Itens"
        View "\\Sistemas\\Vendas\\TbprIte"
        Coedit "FormulaC"
   Else Coedit "\\Sistemas\\Vendas\\TbprIte"     
EndIf

Scan
 Barra(NR, RecNo())
 Aguarde("Aguarde, Ajustando Tabela de Pre‡o "+BARRA_STRING)
  
 If Not IsAssigned(CODIGOIT)
    Then TIP_ITEM = [FormulaC->Tipo do Item]
         COD_ITEM = [FormulaC->Codigo do Produto]
 EndIf        

 If TIP_ITEM<>"P" And TIP_ITEM<>"D" And TIP_ITEM<>"T"
    Then If Not IsAssigned(CODIGOIT)
            Then Loop
            Else QuitLoop
         EndIf         
 EndIf   

 If TIP_ITEM="P"
    Then COD_ITEM=PegaCodigoRaiz(COD_ITEM)
 EndIf
 
 GetRecord "\\Sistemas\\Estoque\\Itens" COD_ITEM To ITEM
 If Not RetVal
    Then If Not IsAssigned(CODIGOIT)
            Then Moveto "FormulaC"
                 Loop
            Else QuitLoop
         EndIf 
    Else DES_ITEM = ITEM["Descricao do Item"]
         UN       = ITEM["Unidade Fiscal"]       
 EndIf      
 
 If Not IsAssigned(CODIGOIT)
    Then Switch
           Case PARAM="VENDA_CALC" : PRECO = [Preco de Venda_Calculado]  
           Case PARAM="VENDA_PRAT" : PRECO = [Preco de Venda_Livre]   
         EndSwitch 
    Else Switch
           Case PARAM="VENDA_CALC" : PRECO = PRECO1 
           Case PARAM="VENDA_PRAT" : PRECO = PRECO2
         EndSwitch      
 EndIf
 
 If PRECO="" Or PRECO=BlankNum()
    Then If Not IsAssigned(CODIGOIT)
            Then Moveto "FormulaC"
                 Loop
            Else QuitLoop
         EndIf 
 EndIf
 
 Moveto "\\Sistemas\\Vendas\\TbprIte"
 Moveto [Codigo da Tabela]
 Locate VSDGTABELA,COD_ITEM
 If RetVal
    Then If [Preco Unitario      ]=PRECO
            Then If Not IsAssigned(CODIGOIT)
                    Then Moveto "FormulaC"
                         Loop
                    Else QuitLoop
                 EndIf         
         EndIf   
         [Taxa Ultimo Reajuste]=((PRECO-[Preco Unitario])*100)/[Preco Unitario]  
         [Preco Unitario      ]=PRECO
         [Data Ultimo Reajuste]=Today()
         UnLockRecord
    Else End Down
         [Codigo da Tabela    ]=VSDGTABELA
         [Codigo do Item      ]=COD_ITEM
         [Tipo do Item        ]=TIP_ITEM
         [Descricao do Item   ]=DES_ITEM
         [Preco Unitario      ]=PRECO
         [Unidade Fiscal      ]=UN
         ;[Data Ultimo Reajuste]=
         ;[Taxa Ultimo Reajuste]=
         [Lookup_Item         ]=COD_ITEM
         UnLockRecord
 EndIf
 
 If IsAssigned(CODIGOIT)
    Then QuitLoop
 EndIf   
 
 Moveto "FormulaC"
EndScan
Do_It!
ClearAll

Mensagem("Processo conlu¡do com sucesso !")
        
EndProc ;Tabela_Preco()

;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Closed Carrega_Tabelas()
UseVars Autolib, ErrorProc

View NOWINDOW "P_Form"
View NOWINDOW "FormulaI"
CoEdit NOWINDOW "FormulaC"
;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Do_It!
        return False
EndIf
          
PickForm "1"
Moveto "\\Sistemas\\estoque\\Sdestq" SetaCorRegistro("Invisivel")
Moveto "FormulaI" SetaCorRegistro("Padrao")
Moveto "FormulaC" SetaCorRegistro("Padrao")
PickForm "F"
                             
Return True
EndProc   ; (Carrega_Tabelas)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
  Moveto [Codigo do Produto]
  Locate CODIGOI, CODIGOC, TAMANHO
  LockRecord
  While True
    DIGITAC()
    SetaCorRegistro("Padrao")

    If CHAVEC=9
       Then QuitLoop
    EndIf
    Moveto "FormulaI"
    While True
      CHAVEI()
      If CHAVEI=9 Or CHAVEI=5
         Then QuitLoop
      EndIf
      Controla_EdicaoI()
    EndWhile
    SetaCorRegistro("Padrao")
    CUSTO()
    
    Moveto "FormulaC"
    UnLockRecord
    If CHAVEI=9
       Then QuitLoop
    EndIf
  EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf         
  If OPCAO_FORM="F"
     Then PickForm "F"
  EndIf
EndProc

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

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
SYS_VALOR()

If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999" EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"    EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""      EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""    EndIf

MSG_ERRO  = False
TEVE_ERRO = False
TIT_ERRO  = ""
TIT_FICHA = ""
TIT_CUSTO = ""
CONT_ERRO = 0
ARQ_ERRO  = PrivDir()+"ERRO.ERR"
Deleta_Arquivo(ARQ_ERRO)

COD1=""
COD2=""
COD3=""

Carrega_Tabelas()

OPCAO_FORM="F"
VSD_EMPRESA_CUSTO = False

While True
  CHAVEC()
  If CHAVEC=9
     Then QuitLoop
  EndIf
  If CHAVEC=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
