;** Recurtim *******************************************************************
;*  Manutencao da Programacao do Recurtimento                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 02/09/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 03/11/2004 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Alterado em     : 29/06/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao ImpriArq()
;Ultima Alteracao: 27/07/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 29/01/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Requisicao()
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 14/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 06/01/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cria_Ficha*()
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite
;Ultima Alteracao: 01/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes descricao do movimento/operacao                   
;Ultima Alteracao: 06/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 20/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 08/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Form, logica, recursos
;Ultima Alteracao: 17/05/2019 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustea
;Ultima Alteracao: 16/04/2021 por Bruno Carvalho
;Motivo Alteracao: Adicionado biblioteca "Bib_Bloq" 

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVEC()
INICIO=True
While True
  FINALIZADO_OK=False
  Moveto [Numero_Partida]
  End
  SEQ = [Numero_Partida]
  If OPCAO_FORM="F"
     Then Down
     Else CtrlPgDn
  EndIf
  Moveto [Numero_Partida]
  MSGCAMPO="Numero da Partida"

  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()

   Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="1"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVEC=5
           Return
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             INICIO=True
             FINALIZADO_OK=False
             If OPCAO_FORM="F"
                Then PAGINA("Recurt_C","MR")
                Else PAGINA("Recurt_C","MT")
             EndIf
             PARTIDA = [Numero_Partida ]
             If EDITAR="S"
                Then CHAVEC=0
                     If OPCAO_FORM="F"
                        Then PickForm "4"
                     EndIf
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("este lan‡amento")
                                Then If OPCAO_FORM="F"
                                        Then PickForm "4"
                                     EndIf
                                     EXCLUSAO()
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             If OPCAO_FORM="F"
                Then PickForm "F"
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
    Case Retval="ESC":
         Switch
           Case Field()="Numero_Partida":
                CHAVEC=9
                Del
                Return
           OtherWise:
                Left
         EndSwitch
    Case Retval="ENTER":
         If Numero_Lancamento("","F")
            Then PARTIDA = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC  
            Else QuitLoop
         EndIf

         PickForm "4"
         moveto [Numero_Partida]
         If PROXIMO_LANCTO_REG_ACHOU
          Then CHAVEC=0
          Else CHAVEC=1    
               [Codigo da Empresa    ]=SYS_EMPRESA_DEFAULT
         EndIf
         return
    EndSwitch
  EndWhile
EndWhile
EndProc       ; (ChaveC)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITAC()
private Ncampo  

IF CHAVEC=0
   Then Moveto [Data_Fim_Processo ]
   Else Moveto [Codigo da Empresa ]
        If Not IsBlank(SYS_EMPRESA_DEFAULT)
           Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
        EndIf
EndIf

Pedido = True

SpeedBar "~Fun‡”es~"      :-33,
         Chr(060)+Chr(17) :-115,
         Chr(16)+Chr(062) :-116,
         "~?~"            :-94,
         "["+Chr(16)+"]"  :"PGDN"

While True
  Tecla_Funcao=BlankNum()

  TECLA= ""
  If CHAVEC=0
     Then TECLA=TECLA + "Del=Excluir  "
     else TECLA=TECLA + "             "
  EndIf
  TECLA=TECLA+"Alt+F=Fun‡”es  PgDn=Finalizar "

  MSGCAMPO=Field()
  Switch
    Case Field()="Data_Programacao"    : MSGCAMPO="Data da Programa‡„o"
    Case Field()="Hora_Programacao"    : MSGCAMPO="Hora da Programa‡„o"
    Case Field()="Data_Inicio_Processo": MSGCAMPO="Data do In¡cio do Processo"
    Case Field()="Hora_Inicio_Processo": MSGCAMPO="Hora do In¡cio do Processo"
    Case Field()="Data_Fim_Processo"   : MSGCAMPO="Data do Fim do Processo"
    Case Field()="Hora_Fim_Processo"   : MSGCAMPO="Hora do Fim do Processo"
    Case Field()="Item do Pedido"      : Monta_Opcoes("ItemPedido",[Numero do Pedido])
  EndSwitch
  If Field()="Numero do Pedido"  Or
     Field()="Item do Pedido"    Or
     Field()="Codigo"            Or
     Field()="Codigo da Empresa" Or
     Field()="Codigo do Item"    Or
     Field()="Codigo da Cor_Tecido"
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  Prompt TECLA

  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F1","F3",
             "F5","F6",-33,"F2",-115,-116

  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
           "F2 Carregar ~F~ormula‡„o     " : " Carregar/Recarregar a Formula‡„o, consumo desta etapa" : "F2",
;;;;;      "F3 ~B~aixar estoque consumo  " : " Gerar requisi‡Æo de consumo no estoque               " : "F3",
           "F5 ~O~bserva‡”es             " : " Observa‡”es gerais da Partida   " : "F5",
           "F6 ~I~mprimir                " : " Imprimir Partida                " : "F6",
           "~M~edia Metragem             " : " Informar nova Media Metragem    " : "MEDIAMTS",
           "~C~ancelar                   " : " Cancelar a Opera‡„o             " : "CANCELAR"
          EndMenu
           To MenuVar

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

          If MenuVar="MEDIAMTS" And CHAVEC=1
              Then 
                   NCampo=Field()
                   Media_Mts()
                   Moveto Field NCampo
                   Loop
          EndIf

          RetVal=MenuVar
  EndIf

  Switch
   Case RetVal=-115 Or RetVal=-116 : 
        If Field()="Data de Entrega"      Or
           Field()="Data_Inicio_Processo" Or
           Field()="Hora_Inicio_Processo" Or
           Field()="Data_Fim_Processo"    Or
           Field()="Hora_Fim_Processo"    Or
           Field()="Peso Apara" 
           then
                 If IsBlank([Data_Programacao]) 
                    Then Fastmsg("Data Programa‡„o inv lida !")
                         Loop
                 EndIf
                 If IsBlank([Data_Inicio_Processo])
                    Then Fastmsg("Data In¡cio Programa‡„o inv lida !")
                         Loop
                 EndIf

                 CampoAnt=Field()
                 Tecla_Funcao=RetVal
                 Return
       EndIf

  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case RetVal="F5":
       NCampo=Field()
       Edita_Memo("Observacao",10,01,13,76,"Observa‡”es")
       Moveto Field NCampo

  Case RetVal="F6":
       If IsBlank([Data_Programacao]) 
          Then Fastmsg("Data Programa‡„o inv lida !")
               Loop
       EndIf
       If IsBlank([Data_Inicio_Processo])
          Then Fastmsg("Data In¡cio Programa‡„o inv lida !")
               Loop
       EndIf

       If IMPRIMIR()
          Then 
               DIGITAC      =false 
               FINALIZADO_OK=True
               Return
               
          else moveto [Data_Fim_Processo]     
       EndIf
  Case Retval="F2":
       If IsBlank([Data_Programacao]) 
          Then Fastmsg("Data Programa‡„o inv lida !")
               Loop
       EndIf
       If IsBlank([Data_Inicio_Processo])
          Then Fastmsg("Data In¡cio Programa‡„o inv lida !")
               Loop
       EndIf
  
       if Confgeral("Deseja carregar/recarregar a formula‡Æo")
          then 
               CampoAnt=Field()
               Tecla_Funcao=-116
                
               Adiciona_Formulacao("")

               Moveto "Recurt_C"
               moveto field CampoAnt
               
               Return

       endif

  Case Retval="PGDN":
       If IsBlank([Data_Programacao]) 
          Then Fastmsg("Data Programa‡„o inv lida !")
               Loop
       EndIf
       If IsBlank([Data_Inicio_Processo])
          Then Fastmsg("Data In¡cio Programa‡„o inv lida !")
               Loop
       EndIf

       DIGITAC      =false 
       FINALIZADO_OK=True
       Return

  Case RetVal="F1":
       Switch
         Case Field()="Codigo"           Or
              Field()="Codigo da Empresa"   Or
              Field()="Codigo do Item"   Or
              Field()="Codigo da Cor_Tecido":
              ConsultaF1()
         Case Field()="Numero do Pedido":
              Moveto [Lookup_PedidoC]
              if ConsultaF1()
                 then [Numero do Pedido]=[Lookup_PedidoC]
              endif   
              [Lookup_PedidoC  ]=""
              Moveto [Numero do Pedido]

         Case Field()="Item do Pedido" And PEDIDO_OK:
              Monta_Opcoes("ItemPedido",[Numero do Pedido])
              Seleciona_Opcoes("ItemPedido","SR")
              If Resultado_F1
                 Then [Item do Pedido      ]=Registro_F1["Item do Pedido"       ]
                      [Codigo do Item      ]=Registro_F1["Codigo do Item"       ]

                      Moveto [Lookup_PedidoI]
                      Ativa_Lookup()
                      Moveto [Numero do Pedido]
                      Locate [Recurt_C->Numero do Pedido],
                             [Recurt_C->Item do Pedido]
                      If RetVal
                         Then CopytoArray Registro_F1
                              KeyPress "ESC"
                              [Descricao do Item   ]=Registro_F1["Descricao do Item"    ]
                              [Codigo da Cor_Tecido]=Registro_F1["Codigo da Cor_Tecido"]
                         Else KeyPress "ESC"
                      EndIf
                      Moveto [Item do Pedido]
              EndIf
       EndSwitch
  Case Retval="ESC":
       Switch
         Case Field()="Codigo da Empresa":
              If QuerDesfazer("")
                      Then EXCLUSAO()
                           DIGITAC      =false 
                           FINALIZADO_OK=false
                           QuitLoop
              EndIF
         Case Field()="Data_Programacao":
              If CHAVEC=0 
                 then if QuerDesfazer("")
                         Then Undo
                              DIGITAC      =false 
                              QuitLoop
                      endif
                 else moveto [Codigo da Empresa]             
              EndIf
         Case Field()="Numero do Pedido"    : Moveto [Hora_Programacao    ]
         Case Field()="Codigo"              : Moveto [Numero do Pedido    ]
         Case Field()="Item do Pedido"      : Moveto [Codigo              ]
         Case Field()="Codigo do Item"      : Moveto [Item do Pedido      ]
         Case Field()="Codigo da Cor_Tecido": Moveto [Codigo do Item      ]
         Case Field()="Espessura"           : Moveto [Codigo da Cor_Tecido]
         Case Field()="Data de Entrega"     : Moveto [Espessura           ]
         Case Field()="Quantidade_Meios"    : Moveto [Data de Entrega     ]
         Case Field()="Quantidade_Kg"       : Moveto [Quantidade_Meios    ]
         Case Field()="Quantidade_Mt"       : Moveto [Quantidade_Kg       ]
         Case Field()="Peso Apara"          : Moveto [Hora_Fim_Processo   ]
         OtherWise:
              Left
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field()="Codigo da Empresa":
              If IsBlank([]) Then fastmsg("Valor inv lido !") Loop EndIf
              Moveto [Data_Programacao]
         Case Field()="Data_Programacao":
              If IsBlank([]) Then []=Today() EndIf
              Moveto [Hora_Programacao]
         Case Field()="Hora_Programacao":
              If IsBlank([]) Then []=Time() EndIf
              Moveto [Numero do Pedido]
         Case Field()="Numero do Pedido":
              PEDIDO_OK=False
              If Not IsBlank([])
                 Then []=Alinh()
                      Moveto [Lookup_PedidoC]
                      Ativa_Lookup()
                      Moveto [Numero do Pedido]
                      Locate [Recurt_C->Numero do Pedido]
                      If RetVal
                         Then KeyPress "ESC"
                              [Lookup_PedidoC]=[Numero do Pedido]
                              [Lookup_PedidoC]=""
                              PEDIDO_OK=True
                         Else KeyPress "ESC"
                      EndIf
              EndIf
              Moveto [Codigo]
         Case Field()="Codigo":
              If IsBlank([]) Then fastmsg("Pessoa inv lida !") Loop EndIf
              Moveto [Item do Pedido]
         Case Field()="Item do Pedido":
              If Not IsBlank([Numero do Pedido]) And not isblank([Numero do Pedido])
                 Then If Checa_Opcoes("ItemPedido",[Item do Pedido])
                         Then [Item do Pedido   ]=Registro_F1["Item do Pedido"   ]
                              [Codigo do Item   ]=Registro_F1["Codigo do Item"   ]

                              Moveto [Lookup_PedidoI]
                              Ativa_Lookup()
                              Moveto [Numero do Pedido]
                              Locate [Recurt_C->Numero do Pedido],
                                     [Recurt_C->Item do Pedido  ]
                              If RetVal
                                 Then CopytoArray Registro_F1
                                      KeyPress "ESC"
                                      [Descricao do Item   ]=Registro_F1["Descricao do Item"    ]
                                      [Codigo da Cor_Tecido]=Registro_F1["Codigo da Cor_Tecido"]
                                 Else KeyPress "ESC"
                              EndIf
                              Moveto [Codigo da Cor_Tecido]
                      EndIf
                 Else Moveto [Codigo do Item]
              EndIf
         Case Field()="Codigo do Item":
              If IsBlank([]) Then fastmsg("Item inv lido !") Loop EndIf
              Moveto [Codigo da Cor_Tecido]
         Case Field()="Codigo da Cor_Tecido":
              Moveto [Lookup_FormulaC]
              FORMULA_OK=True
              Ativa_Lookup()
              Moveto [Codigo do Produto]
              Locate [Recurt_C->Codigo do Item],
                     [Recurt_C->Codigo da Cor_Tecido]
              If Not RetVal
                 Then fastmsg("Formula n„o cadastrada !")
                      FORMULA_OK=False
              EndIf
              KeyPress "ESC"
              If Not FORMULA_OK
                 Then Moveto [Codigo da Cor_Tecido]
                 Else Moveto [Espessura]
              EndIf
         Case Field()="Espessura":
              If IsBlank([]) Then fastmsg("Valor inv lido !") Loop EndIf
              Moveto [Data de Entrega]
         Case Field()="Data de Entrega":
              Moveto [Quantidade_Meios]
         Case Field()="Quantidade_Meios":
              If IsBlank([]) Then fastmsg("Valor inv lido !") Loop EndIf
              If IsBlank([Quantidade_Mt]) Or CHAVEC=1
                 Then [Quantidade_Mt]=Round([Quantidade_Meios]*PARAM_MEDIAMTS,1)
              EndIf
              Moveto [Quantidade_Kg]
         Case Field()="Quantidade_Kg":
              If IsBlank([]) Then fastmsg("Valor inv lido !") Loop EndIf
              Moveto [Quantidade_Mt]
         Case Field()="Quantidade_Mt":
              If IsBlank([]) Then fastmsg("Valor inv lido !") Loop EndIf
              Moveto [Data_Inicio_Processo]
         Case Field()="Data_Inicio_Processo":
              If IsBlank([]) 
                 Then [Data_Inicio_Processo]=[Data_Programacao]
                      [Hora_Inicio_Processo]=[Hora_Programacao] 
              EndIf
              Moveto [Hora_Inicio_Processo]
         Case Field()="Hora_Inicio_Processo":
              If IsBlank([]) Then fastmsg("Valor inv lido !") Loop EndIf
              MOveto [Data_Fim_Processo]

         Case Field()="Data_Fim_Processo":
              If IsBlank([]) Then fastmsg("Data inv lida !") Loop EndIf
              If Not Checa_Data([Data_Inicio_Processo],[Data_Fim_Processo])
                 Then fastmsg("Data Inv lida !")
                      [Data_Fim_Processo]=BlankDate()
                 Else Moveto [Hora_Fim_Processo]
              EndIf

         Case Field()="Hora_Fim_Processo":
               If Not IsBlank ([])
                  Then If Not Checa_Hora_Data([Data_Inicio_Processo],[Hora_Inicio_Processo],[Data_Fim_Processo],[Hora_Fim_Processo])
                          Then fastmsg("Hora e/ou Data Inv lida !")
                               [Total_Hora_Processo]=""
                               MUDA_CAMPO=False
                          Else MUDA_CAMPO=True
                       EndIf
                  Else fastmsg("Hora e/ou Data Inv lida!!")
                       MUDA_CAMPO=False
                       [Total_Hora_Processo]=""
                EndIf

               If MUDA_CAMPO
                  Then
                       Moveto [Peso Apara]                     
                       ;If DMin([Data_Inicio_Processo],HoraMin([Hora_Inicio_Processo]),[Data_Fim_Processo],HoraMin([Hora_Fim_Processo]))>=6000
                       ;   Then fastmsg("Verificar se a data est  OK!!")
                       ;        [Total_Hora_Processo]=""
                       ;        Moveto [Data_Fim_Processo]
                       ;        [Data_Fim_Processo]=BlankDate()
                       ;   Else [Total_Hora_Processo]= FormatHora(DMin([Data_Inicio_Processo],HoraMin([Hora_Inicio_Processo]),[Data_Fim_Processo],HoraMin([Hora_Fim_Processo])))
                       ;        Moveto [Peso Apara]
                       ;EndIf
               EndIf

         Case Field()="Peso Apara":
              Moveto [Data_Inicio_Processo]
         OtherWise:
              Right
       EndSwitch
  Case Retval="DEL" And CHAVEC=0:
       If QuerExcluir("")
          Then EXCLUSAO()
               DIGITAC      =false 
               FINALIZADO_OK=false
               Return
       EndIf

  EndSwitch
EndWhile
EndProc    ; (DigitaC)

;*******************************************************************************
;* Rotina para Transformar Horas em Minutos                                    *
;*******************************************************************************
Proc HoraMin(HORA)
Private HORA
 Return  (Numval(SubStr(HORA,1,(Search(":",HORA)-1)))*60)+NumVal(SubStr(HORA,(Search(":",HORA)+1),(Len(HORA)-(Search(":",HORA)))))
EndProc ;(HoraMin)

;*******************************************************************************
;* Rotina para Calcular Dura‡ao em Minutos                                     *
;*******************************************************************************
Proc DMin(DINI,MINI,DFIM,MINF)
Private MINI,MINF,DINI,DFIM,DIAS
  Return NumVal((MINF)+((DFIM-DINI)*1440))-NumVal(MINI)
EndProc  ;(DMin)

;*******************************************************************************
;* Rotina para Formatar Hora (00:00)                                           *
;*******************************************************************************
Proc FormatHora(MINUTOS)
Private MINUTOS
If MINUTOS<=59
   Then Return "00:"+AlinhM(StrVal(MINUTOS),2)
   Else Return AlinhM(StrVal(Int(MINUTOS/60)),2)+":"+AlinhM(StrVal(Round(((MINUTOS/60)-Int(MINUTOS/60))*60,0)),2)
EndIf
EndProc   ;(FormatHora)

;*******************************************************************************
;* Rotina para Valida‡ao da Data                                               *
;*******************************************************************************
Proc Checa_Data(DINI,DFIM)
Private DINI, DFIM
If DINI>DFIM
    Then Return False
    Else Return True
EndIf
EndProc  ;(Checa_data)

;*******************************************************************************
;* Rotina para Verifica‡ao da Hora e Data                                           *
;*******************************************************************************
Proc Checa_Hora_Data(DINI,HORAINI,DFIM,HORAFIM)
Private HORAI, MINUI,HORAF,MINUF

 HORAI=SubStr(HORAINI,1,2)
 MINUI=SubStr(HORAINI,4,2)
 HORAF=SubStr(HORAFIM,1,2)
 MINUF=SubStr(HORAFIM,4,2)

 If (NumVal(HORAI)>24 or NumVal(MINUI)>59) or (NumVal(HORAF)>24 or NumVal(MINUF)>59)
    Then  Return False
    Else If DINI=DFIM
            Then If HORAINI=HORAFIM and MINUI=MINUF
                    Then Return False
                    Else If HORAINI>HORAFIM
                            Then Return False
                            Else Return True
                         EndIf
                 EndIf
            Else Return True
         EndIf
 EndIf

EndProc; (Checa_hora_data)

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

While True
  Moveto [Sequencia]
  End
  SEQ=[Sequencia]
  Down
  Moveto [Sequencia]
  Seta_Sequencia(SEQ,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While true
      Tecla_Funcao=BlankNum()
      MSGCAMPO=""
      
      Switch
        Case Field()=""      : MSGCAMPO=""
      EndSwitch
      
      Tecla=""
      AguardaTeclasPadraoIt2()

      Switch
      Case RetVal=-115 Or RetVal=-116 Or
           RetVal=-133:
           Tecla_Funcao=RetVal
           chaveit=9
           Del
           Return   
    
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             PAGINA("Recurt_W","MR")
             If EDITAR="S"
                Then CHAVEIT=0
                     SEQ=[Sequencia]
                     Controla_EdicaoIT()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then DEL
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           Del
           CHAVEIT=9
           Continuar=False
           Return
      Case Retval="PGDN":
           If IsBlank([Recurt_C->Data_Programacao]) Or
              IsBlank([Recurt_C->Data_Inicio_Processo])
              Then Mensagem("Programa‡„o n„o concluida !")
                   Loop
           EndIf

           CHAVEIT=9
           DIGITAC      =false 
           FINALIZADO_OK=True
           Del
           Return
      Case Retval="ENTER":
           If Not Seta_Sequencia(SEQ,True)
              Then Del
                   QuitLoop
           EndIf
           SEQ=[]
           Del
           Locate SEQ
           If RetVal
              Then CHAVEIT=0
                   Moveto [Sequencia]
              Else CHAVEIT=1
                   End Down
                   [Sequencia]=SEQ
           Endif
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveIT)

;*******************************************************************************
;* Rotina para Digitacao dos Itens                                             *
;*******************************************************************************
Proc DIGITAIT()

Moveto [Codigo do Item_Consumido]

While True

      TECLA=" Esc=Retornar  "

      If Field()="Codigo do Item_Consumido"
         Then TECLA=TECLA+"F1=Tabelas  "
      Endif

      If CHAVEIT=0
         Then TECLA=TECLA+"Del=Excluir  "
      EndIf

      Prompt TECLA

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

      Switch
      Case RetVal="F1":
           If Field()="Codigo do Item_Consumido" or Field()="Codigo da Cor_Tecido"
              Then ConsultaF1()
           Endif
      Case Retval="ESC":
         Switch
          Case Field()="Codigo do Item_Consumido":
               If QuerDesfazer("")
                  Then If CHAVEIT=1
                           Then Del
                           Else Undo
                        EndIf
                        CHAVEIT=9
                        QuitLoop
                EndIF
           Case Field()="Quantidade"          :Moveto [Codigo do Item_Consumido]
        EndSwitch
      Case Retval="ENTER":
         Switch
           Case Field()="Unidade Fiscal": QuitLoop
           Case Field()="Codigo do Item_Consumido":
                If IsBlank([])
                   Then Loop
                   Else Moveto [Quantidade]
                Endif
          Case Field()="Quantidade"          : Quitloop
        EndSwitch
     Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEIT=0
              Then If QuerExcluir("")
                      Then DEL
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc   ;  (DigitaIT)

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc CHAVEI()
While True
  Moveto [Codigo da Etapa]
  End
  Down
  Moveto [Codigo da Etapa]

  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While True
      Tecla_Funcao=BlankNum()

      MSGCAMPO=""
      
      Switch
        Case Field()=""      : MSGCAMPO=""
      EndSwitch
      
      Tecla=""
      AguardaTeclasPadraoIt2()

    Switch
      Case RetVal=-115 Or RetVal=-116 Or
           RetVal=-133:
           Tecla_Funcao=RetVal
           chavei=9
           Del
           Return   
    
    Case Retval="F3":
         Del
         Moveto [Codigo da Etapa]
         If RecordStatus("New")
            Then MENSAGEM("Sem Item p/ ver !")
                 QuitLoop
         EndIf
         Opcao_Ver=True
         CHAVEI=0
         Home
         ETAPA=[Codigo da Etapa]
         FASE =[Fase     ]
         SEQIT=[Sequencia]
         Inicia_Registro()
         DigitaI()
         QuitLoop
    Case Retval="PGDN":
           If IsBlank([Recurt_C->Data_Programacao]) Or
              IsBlank([Recurt_C->Data_Inicio_Processo])
              Then Mensagem("Programa‡„o n„o concluida !")
                   Loop
           EndIf

         Del

         CHAVEI=9
         DIGITAC      =false 
         FINALIZADO_OK=True
         Return
    Case RetVal="ESC":
         If Field()="Codigo da Etapa"
            Then Del
                 CHAVEI=9
                 Return
            Else Left
         EndIf
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("Recurt_I","MR")
           If EDITAR="S"
              Then CHAVEI=0
                   ETAPA=[Codigo da Etapa]
                   FASE =[Fase     ]
                   SEQIT=[Sequencia]
                   Controla_EdicaoI()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEI=8
                                   Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":
         If Field()="Codigo da Etapa"
            Then ETAPA=[]
                 Right
                 Loop
         EndIf
         If Field()="Fase"
            Then FASE =[]
                 Right
                 Loop
         EndIf
         SEQIT=[]
         Del
         Locate PARTIDA, ETAPA, FASE, SEQIT
         If Retval
            Then CHAVEI=0
            Else CHAVEI=1
                 End
                 Down
                 [Numero_Partida   ]=PARTIDA
                 [Codigo da Etapa  ]=ETAPA
                 [Fase             ]=FASE
                 [Sequencia        ]=SEQIT
                 UnLockRecord
                 Locate PARTIDA, ETAPA, FASE, SEQIT
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEI)

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

If INICIO_DIALOG
   Then If SEQIT<1
           Then Campo="I_Descricao_Item"
           Else Campo="I_Codigo_Item"
        EndIf
        INICIO_DIALOG=False
EndIf
If Opcao_Ver=True Then Campo="I_Fase" EndIf

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   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 ETAPA=[Codigo da Etapa]
                      FASE =[Fase     ]
                      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"] = -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 "Recurt_I"
          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"    : Campo="I_Codigo_Item"
                 If SEQIT<1
                    Then If QuerDesfazer("")
                            Then If CHAVEI=1
                                    Then Del
                                    Else CopyFromArray RegItem
                                 EndIf
                                 CHAVEI=9
                                 CancelDialog
                         EndIf
                 EndIf
            Case Campo="I_UN_Item"           : Campo="I_Descricao_Item"
            Case Campo="I_Tipo_Item"         : Campo="I_UN_Item"
            Case Campo="I_Porcentagem"       :
                 If IsBlank(VSD_I_Codigo_Item)
                    Then Campo="I_Tipo_Item"
                    Else Campo="I_Codigo_Item"
                 EndIf
            Case Campo="I_Temperatura"       : Campo="I_Porcentagem"
            Case Campo="I_Tempo"             : Campo="I_Temperatura"
            Case Campo="I_Obs"               : Campo="I_Tempo"
            Case Campo="I_Flag"              : Campo="I_Obs"
          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]
                                 KeyPress "ESC"
                                 [Codigo do Material]=VSD_I_Codigo_Item
                                 [Descricao do Item ]=VSD_I_Descricao_Item
                                 Registro_Item("Ler")
                                 Campo="I_Porcentagem"
                            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")
                 If SEQIT<1
                    Then VSD_I_Descricao_Item=" [ "+VSD_I_Descricao_Item+" ] "

                         ci=Search(" [ ",VSD_I_Descricao_Item)
                         cf=Search(" ] ",VSD_I_Descricao_Item)
                         tm=(cf+3)-ci
                         VSD_I_Descricao_Item=Fill("-",Int((28-tm)/2))+SubStr(VSD_I_Descricao_Item,ci,tm)
                         VSD_I_Descricao_Item=VSD_I_Descricao_Item+Fill("-",28-Len(VSD_I_Descricao_Item))
                         AcceptDialog
                 EndIf
                 If IsBlank(VSD_I_Descricao_Item)
                    Then VSD_I_UN_Item       =""
                         VSD_I_Tipo_Item     =""
                         VSD_I_Porcentagem   =BlankNum()
                         VSD_I_Temperatura   =BlankNum()

                         Campo="I_Obs"
                    Else Campo="I_UN_Item"
                 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_Tipo_Item"
                             Else Mensagem("Unidade n„o Cadastrada !")
                                  VSD_I_UN_Item=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                  EndIf
            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_Porcentagem"
                            Else Mensagem("Tipo do Item n„o Cadastrado !")
                                 VSD_I_Tipo_Item=""
                                 KeyPress "ESC"
                         EndIf
                         Echo Off
                 EndIf
            Case Campo="I_Porcentagem":
                 VSD_I_Porcentagem=ControlValue("I_Porcentagem")

                 If [Sequencia]>0
                    Then VSD_I_Quantidade =NDecimal((VSD_I_Porcentagem*[Recurt_C->Quantidade_Kg])/100,6)
                 EndIf

                 Campo="I_Temperatura"
            Case Campo="I_Temperatura":
                 VSD_I_Temperatura=ControlValue("I_Temperatura")
                 Campo="I_Tempo"
            Case Campo="I_Tempo":
                 VSD_I_Tempo=ControlValue("I_Tempo")
                 Campo="I_Obs"
            Case Campo="I_Obs":
                 VSD_I_Obs=ControlValue("I_Obs")
                 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_Flag"          : MSGCAMPO="[pausa]"
  Case Campo="I_Porcentagem"   : MSGCAMPO="Porcentagem"
  Case Campo="I_Temperatura"   : MSGCAMPO="Temperatura"
  Case Campo="I_Tempo"         : MSGCAMPO="Tempo"
  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  "
EndIf

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
RefreshDialog
Return TEMP
EndProc   ; (Item_Dialog)

;*******************************************************************************
;* 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

       [Porcentagem               ]=VSD_I_Porcentagem
       [Temperatura               ]=VSD_I_Temperatura
       [Tempo                     ]=VSD_I_Tempo
       [Observacoes               ]=VSD_I_Obs
  Case Funcao_Registro="Ler":
       VSD_I_Fase                   =[Fase                     ]
       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_Porcentagem            =[Porcentagem               ]
       VSD_I_Temperatura            =[Temperatura               ]
       VSD_I_Tempo                  =[Tempo                     ]
       VSD_I_Obs                    =[Observacoes               ]
EndSwitch
EndProc   ; (Registro_Item)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
Moveto [Fase]
Locate PARTIDA, ETAPA, FASE, 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","ClearArea","HOME","END","PGDN","PGUP"
     @ 11,3 height 08 width 71

   Accept @ -01,36 Width 5 "S" Tag "I_Fase" To VSD_I_FASE
   Accept @ -01,42 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 "UN" For "I_UN_Item"
   Accept @ 01,58 Width 05 "A2" picture "!*!" Tag "I_UN_Item" to VSD_I_UN_Item
   Label  @ 00,64 "TI" For "I_Tipo_Item"
   Accept @ 01,64 Width 04 "A1" picture "&" Tag "I_Tipo_Item" to VSD_I_Tipo_Item

   Label  @ 02,06 "%" For "I_Porcentagem"
   Accept @ 03,06 Width 08 "N" picture "#*#.[####]" Tag "I_Porcentagem" to VSD_I_Porcentagem
   Label  @ 02,15 "C§" For "I_Porcentagem"
   Accept @ 03,15 Width 07 "S" picture "#*#"        Tag "I_Temperatura" to VSD_I_Temperatura
   Label  @ 02,23 "Tempo" For "I_Porcentagem"
   Accept @ 03,23 Width 08 "A5" picture "##:##"     Tag "I_Tempo"       to VSD_I_Tempo
   Label  @ 02,33 "Quantidade" For "I_Quantidade"
   Accept @ 03,33 Width 13 "N" picture "#*#.[###]" Tag "I_Quantidade" to VSD_I_Quantidade

   Label  @ 04,01 "Observa‡„o" For "I_Obs"
   Accept @ 05,01 Width 62 "A255" picture "!*!" Tag "I_Obs"  to VSD_I_Obs

   Accept @ 05,64 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 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
EndProc   ; (Finaliza_Registro)

;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAO()
Aguarde("Aguarde, Excluindo Dados")

Moveto "Recurt_I"
While RecordStatus("New")=False
  Del
EndWhile

Moveto "Recurt_w"
While RecordStatus("New")=False
  Del
EndWhile

REQUISICAO("Exclusao")

Moveto "Recurt_c"
Del

LimpAguarde()
EndProc

;*******************************************************************************
;* Atualizacao Requisicao                                                      *
;*******************************************************************************
Proc REQUISICAO(Tipo)
Private NUMEROL, RQ_ENCONTRADA, MES_EST, ANO_EST, CUSTO,
        SEQ, Tipo, CODIGO_ITEM, i, QTD_ITEM

Moveto "Recurt_C"
UnLockRecord
FormKey

If IsBlank([Recurt_C->Lancamento RqCabeca])
   Then RQ_ENCONTRADA=False
   Else Moveto "\\Sistemas\\Estoque\\RQCabeca"
        Moveto [Numero do Lancamento]
        Locate [Recurt_C->Lancamento RqCabeca]
        If RetVal
           then If [Codigo da Empresa]=[Recurt_C->Codigo da Empresa]
                   Then RQ_ENCONTRADA=True
                   Else RQ_ENCONTRADA=False
                EndIf
           Else RQ_ENCONTRADA=False
        EndIf
EndIf

If Not RQ_ENCONTRADA
   Then If Not IsBlank([Recurt_C->Lancamento RqCabeca])
           Then MSG="Requisi‡„o de Estoque N. "+[Recurt_C->Lancamento RqCabeca]+" n„o localizada !// //"
                MSG=MSG+"Este lan‡amento n„o ser  corrigido no Estoque !// //"
                MSG=MSG+"Motivos: - Fechamento Mensal do Estoque efetuado;          //"
                MSG=MSG+"         - Empresa da requisi‡„o n„o corresponde;          //"
                MSG=MSG+"         - Algum erro ocorrido no momento deste Lan‡amento.//"
                Mensagem(MSG)

                Moveto "Recurt_C"
                FormKey
                Return
        EndIf

	 Else NUMEROL=[\Sistemas\Estoque\RQCabeca->Numero do Lancamento]

        Moveto "\\Sistemas\\Estoque\\RqItem"
        Moveto [Numero do Lancamento]
        Locate NUMEROL
        If RetVal
           Then While [Numero do Lancamento]=NUMEROL
                  MES_EST = AlinhM(StrVal(Month([\Sistemas\Estoque\RqCabeca->Data de Ocorrencia])),2)
                  ANO_EST = StrVal(Year([\Sistemas\Estoque\RqCabeca->Data de Ocorrencia]))

                  Moveto "\\Sistemas\\Estoque\\SdEstq"
                  Moveto [Codigo da Empresa]
                  Locate [\Sistemas\Estoque\RqItem->Codigo da Empresa],
                         [\Sistemas\Estoque\RqItem->Codigo do Item], ANO_EST, MES_EST
                  If RetVal
                     Then While True
                            If Not IsLockRecord()
                               Then QuitLoop
                            EndIf
                          EndWhile

                          CUSTO=NDecimal([Custo Total Atual]/[Saldo Atual],5)
                          If CUSTO<=0
                             Then CUSTO=[Ultimo Custo Atual]
                          EndIf
                          [Saldo Atual      ]=NDecimal([Saldo Atual      ]+[\Sistemas\Estoque\RqItem->Quantidade ],3)
                          [Custo Total Atual]=NDecimal([Custo Total Atual]+(CUSTO*[\Sistemas\Estoque\RqItem->Quantidade ]),2)
                          If ([Custo Total Atual]/[Saldo Atual])>0
                             Then [Ultimo Custo Atual]=NDecimal([Custo Total Atual]/[Saldo Atual],5)
                          EndIf
                          UnLockRecord
                  EndIf

                  Moveto "\\Sistemas\\Estoque\\RqItem"
                  Del
                EndWhile
        EndIf
        Moveto "\\Sistemas\\Estoque\\RqCabeca"
        Del
EndIf

If Tipo="Exclusao"
   Then Moveto "Recurt_C"
        FormKey
        Return
EndIf





Moveto "\\Sistemas\\Estoque\\Requisit"
Moveto [Codigo do Requisitante]
Locate "000003"
If RetVal
   Then WS_CREQ=[Codigo do Requisitante]
        WS_DREQ=[Descricao Requisitante]
   Else WS_CREQ=""
        WS_DREQ=""
EndIf

SEQ=0
While True
 Moveto "\\Sistemas\\Estoque\\RqCabeca"
 End
 If Not IsBlank([Recurt_C->Lancamento RqCabeca ]) And SEQ=0
    Then NUMEROL=[Recurt_C->Lancamento RqCabeca]
    Else Moveto [Numero do Lancamento]
         If Numero_Lancamento("Interno","")
            Then NUMEROL = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
         EndIf
 EndIf
 SEQ=SEQ+1
 Down
 [Numero do Lancamento  ]=NUMEROL
 If IsLockRecord()
    Then Del
         Loop
 EndIf

 QuitLoop
EndWhile
[Codigo da Empresa     ]=[Recurt_C->Codigo da Empresa]
[Tipo de Movimento     ]="S" 
[Descricao do Movimento]="SAIDA"
[Tipo de Operacao      ]="C"
[Descricao da Operacao ]="CONSUMO"
[Codigo do Documento   ]="REQ"
[Numero do Documento   ]=AlinhM(StrVal([Recurt_C->Numero_Partida   ]),6)
[Data de Ocorrencia    ]=[Recurt_C->Data_Inicio_Processo]
[Requisitante          ]=WS_CREQ
[Descricao Requisitante]=WS_DREQ
[Sistema Gerador       ]="CR"
[Lancamento Gerador    ]=AlinhM(strval([Recurt_C->Numero_Partida]),6)

Controle_Dia()
UnLockrecord

SEQ=0
For i From 1 to 2
  If i=1
     Then Moveto "Recurt_I"
     Else Moveto "Recurt_W"
  EndIf
  If Recno()=0 Then Loop EndIf

  Moveto [Numero_Partida]
  Locate [Recurt_C->Numero_Partida]
  if retval
     then
  While [Numero_Partida]=[Recurt_C->Numero_Partida]
    If i=1
       Then CODIGO_ITEM=[Codigo do Material]
       Else CODIGO_ITEM=[Codigo do Item_Consumido]
    EndIf
    If IsBlank(CODIGO_ITEM) Or
       CODIGO_ITEM="0000009999"
       Then Skip
            If EOT() Then QuitLoop EndIf
            Loop
    EndIf
    QTD_ITEM=[Quantidade]

    MES_EST = AlinhM(StrVal(Month([Recurt_C->Data_Inicio_Processo])),2)
    ANO_EST = StrVal(Year([Recurt_C->Data_Inicio_Processo]))

    While True
      Moveto "\\Sistemas\\Estoque\\SdEstq"
      Moveto [Codigo da Empresa]
      Locate [Recurt_C->Codigo da Empresa ],
             CODIGO_ITEM, ANO_EST, MES_EST
      If Not RetVal
         Then Cria_Ficha([Recurt_C->Codigo da Empresa ],CODIGO_ITEM,False)
              Loop
      EndIf
      If IsLockRecord()
         Then Loop
      EndIf

      CUSTO=NDecimal([Custo Total Atual]/[Saldo Atual],5)
      If CUSTO<=0
         Then CUSTO=[Ultimo Custo Atual]
      EndIf
      [Saldo Atual      ]=NDecimal([Saldo Atual]-QTD_ITEM,3)
      [Custo Total Atual]=NDecimal([Custo Total Atual]-(QTD_ITEM*CUSTO),2)
      If ([Custo Total Atual]/[Saldo Atual])>0
         Then [Ultimo Custo Atual]=NDecimal([Custo Total Atual]/[Saldo Atual],5)
      EndIf
      UnLockRecord

      QuitLoop
    EndWhile

    While True
      Moveto "\\Sistemas\\Estoque\\EstqPrm"
      Moveto [Codigo da Empresa]
      Locate [Recurt_C->Codigo da Empresa], CODIGO_ITEM
      If Not RetVal
         Then End Down
              [Codigo da Empresa   ]=[Recurt_C->Codigo da Empresa ]
              [Codigo do Item      ]=CODIGO_ITEM
              UnLockRecord
              Loop
      EndIf
      If IsLockRecord()
         Then Loop
      EndIf
      If [Recurt_C->Data_Inicio_Processo]>[Data da Ultima Saida]
         Then [Data da Ultima Saida]=[Recurt_C->Data_Inicio_Processo]
      EndIf

      UnLockRecord
      QuitLoop
    EndWhile

    Moveto "\\Sistemas\\Estoque\\Itens"
    Moveto [Codigo do Item]
    Locate CODIGO_ITEM
    If RetVal
       Then WS_TITEM=[Tipo do Item     ]
            WS_DITEM=[Descricao do Item]
            WS_UNI  =[Unidade Interna  ]
       Else WS_TITEM=""
            WS_DITEM=""
            WS_UNI  =""
    EndIf

    Moveto "\\Sistemas\\Estoque\\RqItem"
    End
    Down
    SEQ=SEQ+1
    [Numero do Lancamento       ]=NUMEROL
    [Sequencia do Lancamento    ]=SEQ
    [Codigo da Empresa          ]=[Recurt_C->Codigo da Empresa ]
    [Tipo do Item               ]=WS_TITEM
    [Codigo do Item             ]=CODIGO_ITEM
    [Descricao do Item          ]=WS_DITEM
    [Quantidade                 ]=QTD_ITEM
    [Unidade Interna            ]=WS_UNI
    [Custo Unitario             ]=CUSTO
    [Custo Total                ]=NDecimal(CUSTO*[Quantidade],2)
    UnLockrecord

    If i=1
       Then Moveto "Recurt_I"
       Else Moveto "Recurt_W"
    EndIf
    Skip
    If EOT() Then QuitLoop EndIf
  EndWhile
  endif
EndFor

If Seq>0
   then 
        Moveto "Recurt_C"
        [Lancamento RQCabeca]=NUMEROL
        UnLockRecord
   else
        Moveto "\\Sistemas\\Estoque\\RqCabeca"
        Del

        Moveto "Recurt_C"
        [Lancamento RQCabeca]=""
        UnLockRecord

endif        

FormKey
EndProc

;*******************************************************************************
;* Atualiza Custo                                                              *
;*******************************************************************************
Proc ATUALIZA_CUSTO()
View "\\Sistemas\\Estoque\\SdEstq"
CoEdit "Answer"
Scan For Not IsBlank([Codigo do Material]) and
                     [Codigo do Material]<>"0000009999"
  Moveto "\\Sistemas\\Estoque\\SdEstq"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA,[Answer->Codigo do Material],VSDGANO, VSDGMES
  If RetVal
     Then Moveto "Answer"
          [Custo Unitario]=[\Sistemas\Estoque\SdEstq->Preco de Custo]
          [Observacoes   ]=StrVal([\Sistemas\Estoque\SdEstq->Data do Preco de Custo])
     Else Moveto "Answer"
          [Observacoes]=""
          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",[Answer->Codigo do Material])+"| "+Format("W30,AL",[Answer->Descricao do Item])+"//"
          MSG=MSG+"Observacoes:                                                           //"
          MSG=MSG+"1. Talvez n„o foi executada a transferencia de saldos do mes anterior; //"
          MSG=MSG+"// "
          MENSAGEM(MSG)
  EndIf
  [Custo Total]=[Custo Unitario]*[Quantidade]
  Moveto "Answer"
EndScan
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina Ficha Estoque                                                        *
;*******************************************************************************
Proc Seleciona_Ficha()
VSDGEMPRESA     =CDEMPRESA
VSDGMESANO      =AlinhM(StrVal(Month(DTINICIO)),2)+"."+
                 AlinhM(StrVal(Year(DTINICIO)),4)
Op_Show="FichaEstoque"
While True

  ShowDialog "Referencia de Custo" Proc "SD_Dialog2"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB"
    @ 10,17 Height 09 Width 38

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

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

    Pushbutton @ 05,07 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 05,21 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

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog2(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"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_MEDIAMTS"      : Campo="NO"
            Case Campo="TG_MESANO"        : Campo="TG_EMPRESA"
            Case Campo="YES" Or Campo="NO":
                 If Op_Show="FichaEstoque"
                    Then Campo="TG_EMPRESA"
                    Else Campo="TG_MEDIAMTS"
                 EndIf
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"    : Campo="TG_MESANO"
                    Case Campo="TG_MESANO"     : 
                         VSDGMES=SubStr(VSDGMESANO,1,2)
                         VSDGANO=SubStr(VSDGMESANO,4,4)
                         If NumVal(VSDGMES) > 12 Or NumVal(VSDGMES) = 0
                            Then MENSAGEM("Mˆs Inv lido!")
                            Else Campo = "YES"
                         EndIf

                    Case Campo="TG_MEDIAMTS"   : Campo="YES"
                         VSDGMEDIAMTS=ControlValue("TG_MEDIAMTS")

                    Case Campo="YES"  : AcceptDialog
                    Case Campo="NO"   : CancelDialog
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe a Empresa de referˆncia p/ ficha de estoque"
  Case Campo="TG_MEDIAMTS":
       MSG_CAMPO="Informe o indice de referˆncia p/ calculo da Metragem"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina para Criar Ficha do Estoque e Parametros                             *
;*******************************************************************************
Proc Cria_Ficha(ESTQ_EMPRESA,ESTQ_ITEM,ESTQ_CONFIRMA)
Private ESTQ_EMPRESA,ESTQ_ITEM,ESTQ_CONFIRMA,ESTQ_ANO,ESTQ_MES
ESTQ_MES=ALINHM(StrVal(Month([\Sistemas\Estoque\RQCabeca->Data de Ocorrencia])),2)
ESTQ_ANO=ALINHM(StrVal(Year([\Sistemas\Estoque\RQCabeca->Data de Ocorrencia])),4)

Moveto "\\Sistemas\\Estoque\\EstqPrm"
Moveto [Codigo da Empresa]
Locate ESTQ_EMPRESA, ESTQ_ITEM
If Not RetVal
   Then End Down
        [Codigo da Empresa   ]=ESTQ_EMPRESA
        [Codigo do Item      ]=ESTQ_ITEM
        UnLockRecord
EndIf

Moveto "\\Sistemas\\Estoque\\SdEstq"
While True
  Moveto [Codigo da Empresa]
  Locate ESTQ_EMPRESA, ESTQ_ITEM, ESTQ_ANO, ESTQ_MES
  If Not RetVal
     Then End Down
          [Codigo da Empresa   ]=ESTQ_EMPRESA
          [Codigo do Item      ]=ESTQ_ITEM
          [Ano Referencia      ]=ESTQ_ANO
          [Mes Referencia      ]=ESTQ_MES
          If IsLockRecord()
             Then Del
             Else UnLockRecord
          EndIf
          Loop
  EndIf
  QuitLoop
EndWhile

Return True
EndProc  ; (Cria_Ficha)

;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc Imprimir()
private ntable, ncampo

Echo Normal
Echo Off
ShowPopup " Imprimir " CENTERED
 "~1~ Formula‡„o s/ custo "   : " Imprimir Formula‡„o sem custo   " : "FORMULACAO",
 "~2~ Formula‡„o c/ custo "   : " Imprimir Formula‡„o com custo   " : "FORMULACAOC",
 "~3~ Ficha ~A~companhamento" : " Imprimir Ficha de Acompanhamento" : "FICHA",
 "~C~ancelar            "     : " Cancelar a Opera‡„o             " : "CANCELAR"
EndMenu
 To MenuVar

echo off
If MenuVar="CANCELAR" or MenuVar="Esc"
    Then Return False
EndIf

ntable=table()
ncampo=field()

if MenuVar="FORMULACAO" or
   MenuVar="FORMULACAOC"
   then
        Moveto "Recurt_i"
        if RecordStatus("New")=True
           then Mensagem("Programa‡Æo sem Formula‡Æo !")

                moveto ntable
                moveto field ncampo

                Return False
        endif
endif

Moveto "Recurt_c" 

VSDGNPARTIDA =[Numero_Partida]
CDEMPRESA    =[Codigo da Empresa   ]
DTINICIO     =[Data_Inicio_Processo]
DHINICIO     =StrVal([Data_Inicio_Processo])+" "+[Hora_Inicio_Processo]
DHFIM        =StrVAl([Data_Fim_Processo   ])+" "+[Hora_Fim_Processo   ]

Do_It!
ClearAll

origemprg="RECURTIMENTO"

DISPOSITIVO()
If OK<>""
   Then 
        while true
        
           Switch
             Case MenuVar="FORMULACAOC":
                 If Not Seleciona_Ficha()
                    Then QuitLoop
                 EndIf
           EndSwitch
          AGUARDE("Aguarde, gerando o relat¢rio")
        
          switch  
            case MenuVar="FORMULACAO"  : Play "PR_0045" 
            case MenuVar="FORMULACAOC" : Play "PR_0040" 
            case MenuVar="FICHA"       : play "FO_0035"
          endswitch  

          Mensagem("Impress„o Concluida !")

          quitloop
        endwhile
EndIf

LimpAguarde()

CarregaTabelas()

Return True
EndProc  ; (Imprimir)

;*******************************************************************************
;* Rotina de Formulacao                                                        *
;*******************************************************************************
Proc Adiciona_Formulacao(Tipo)

Moveto "Recurt_I"
While RecordStatus("New")=False
	Del
EndWhile

Moveto "Recurt_C"
UnLockRecord

Moveto "FormulaI"
Moveto [Codigo do Produto]
Locate [Recurt_C->Codigo do Item      ],
       [Recurt_C->Codigo da Cor_Tecido]
If RetVal
   Then
        While [Codigo do Produto]=[Recurt_C->Codigo do Item      ] and
              [Codigo Cor_Tecido]=[Recurt_C->Codigo da Cor_Tecido]

          If [Codigo da Etapa  ]<>"004"
             Then Skip
                  If EOT() Then QuitLoop EndIf
                  Loop
          EndIf

          Moveto "Recurt_I"
          End Down
          [Numero_Partida         ]=[Recurt_C->Numero_Partida         ]
          [Codigo da Etapa        ]=[FormulaI->Codigo da Etapa        ]
          [Fase                   ]=[FormulaI->Fase                   ]
          [Sequencia              ]=[FormulaI->Sequencia              ]
          [Codigo do Material     ]=[FormulaI->Codigo do Material     ]
          [Descricao do Item      ]=[FormulaI->Descricao do Item      ]
          [Tipo do Item           ]=[FormulaI->Tipo do Item           ]
          [Descricao Tipo do Item ]=[FormulaI->Descricao Tipo do Item ]
          [Unidade Interna        ]=[FormulaI->Unidade Interna        ]
          [Porcentagem            ]=[FormulaI->Porcentagem            ]
          [Temperatura            ]=[FormulaI->Temperatura            ]
          [Tempo                  ]=[FormulaI->Tempo                  ]
          [Observacoes            ]=[FormulaI->Observacoes            ]
          If [Sequencia]>0
             Then [Quantidade]=NDecimal(([Porcentagem]*[Recurt_C->Quantidade_Kg])/100,6)
          EndIf

          Moveto "FormulaI"
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
EndIf

Moveto "Recurt_C"
UnLockRecord
PickForm "4"
EndProc

;*******************************************************************************
;* Rotina Media em Mts                                                         *
;*******************************************************************************
Proc Media_Mts()
VSDGMEDIAMTS=PARAM_MEDIAMTS

Op_Show="MediaMts"
While True

  ShowDialog "Media em Mts" Proc "SD_Dialog2"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB"
    @ 10,17 Height 06 Width 38

    Label  @ 00,08 "Indice" For "TG_MEDIAMTS"
    Accept @ 00,16 Width 10 "N" picture "#*#.[####]" Tag "TG_MEDIAMTS" to VSDGMEDIAMTS

    Pushbutton @ 02,07 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 02,21 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal
     Then Return False
  EndIf

  If IsBlank(VSDGMEDIAMTS) Or
     VSDGMEDIAMTS=0
     Then Mensagem("Valor Inv lido !")
          Loop
  EndIf

  PARAM_MEDIAMTS=VSDGMEDIAMTS

  FileWrite        "Cfg_Mts.sc" From ";****** Variaveis de Media Metragem"+"\n"
  FileWrite Append "Cfg_Mts.sc" From "PARAM_MEDIAMTS ="+StrVal(VSDGMEDIAMTS)+"\n"

  Play "Cfg_Mts"

  Return True
EndWhile
EndProc


;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
Inicia_Registro()
DIGITAI()
Moveto "Recurt_I"
If RecordStatus("Locked") Then UnLockRecord EndIf
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoIT()
DIGITAIT()
Moveto "Recurt_W"
If RecordStatus("Locked") Then UnLockRecord EndIf
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro cabeca                             *
;*******************************************************************************
Proc Controla_EdicaoC()

DIGITAC=True
While DIGITAC
  Tecla_Funcao=BlankNum()
  MSGCAMPO   =""

  Moveto "Recurt_C"
  SetaCorRegistro("Editar")
  DIGITAC()
  If CHAVEC=9
     Then QuitLoop
  EndIf
  SetaCorRegistro("Padrao")

  While Not IsBlank(Tecla_Funcao)
    
    Switch
      Case Tecla_Funcao=-116:
           Switch
             Case Table()="Recurt_c"                     : Tecla_Funcao="FORMUL"
						 Case Table()="Recurt_i"                     : Tecla_Funcao="CONSUM"
             Case Table()="Recurt_w"                     : Tecla_Funcao=""
             OtherWise                                   : Tecla_Funcao=""
           EndSwitch
			Case Tecla_Funcao=-115:
           Switch
						 Case Table()="Recurt_c"                     : Tecla_Funcao="CONSUM"
             Case Table()="Recurt_i"                     : Tecla_Funcao=""
             Case Table()="Recurt_w"                     : Tecla_Funcao="FORMUL"
             OtherWise                                   : Tecla_Funcao=""
           EndSwitch  
    EndSwitch
    
    Switch
      Case Tecla_Funcao="FORMUL" :  
           Moveto "Recurt_C"
           moveto [Flag1]
           Moveto "Recurt_I"
           While True
             CHAVEI()
             If CHAVEI=9
                Then QuitLoop
             EndIf
             Controla_EdicaoI()
           EndWhile
           
      Case Tecla_Funcao="CONSUM" :  
           Moveto "Recurt_C"
           moveto [Flag2]
           Moveto "Recurt_W"
           While True
              CHAVEIT()
              If CHAVEIT=9 Then QuitLoop EndIf
              Controla_EdicaoIT()
           EndWhile
           
      OtherWise             : QuitLoop
    EndSwitch

    SetaCorRegistro("Padrao")

  EndWhile

  If FINALIZADO_OK And not IsBlank([Recurt_c->Data_Fim_Processo])
     Then Requisicao("Inclusao")
  EndIf
  
EndWhile

Moveto "Recurt_c"
If RecordStatus("Locked") Then UnLockRecord EndIf
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
proc CarregaTabelas()

View "\\Sistemas\\Estoque\\RqCabeca"
View "\\Sistemas\\Estoque\\RqItem"
View "\\Sistemas\\Estoque\\EstqPrm"
View "\\Sistemas\\Estoque\\SdEstq"
View "\\Sistemas\\Estoque\\Itens"
View "\\Sistemas\\Estoque\\Requisit"
View "Recurt_I"
View "Recurt_W"
CoEdit "Recurt_C"

PickForm OPCAO_FORM

endproc


;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Cadastro\\Bib_Proc,"+
        "\\Sistemas\\Cadastro\\Bib_Bloq"

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf

sys_Valor()

If Not IsFile("Cfg_Mts.sc")
   Then PARAM_MEDIAMTS=0
   Else Play "Cfg_Mts"
EndIf

OPCAO_FORM="F"
CarregaTabelas()

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