;** CFACG **********************************************************************
;*  Programacao de Corte                                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 26/03/2007 por Anivel Augusto Rodrigues
;Ultima Alteracao: 26/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Lookup PedidoC
;Ultima Alteracao: 26/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 27/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 03/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Gera_CFacRI
;Ultima Alteracao: 15/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo Item="S"
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 11/06/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: 03/10/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes imprimir
;Ultima Alteracao: 10/10/2008 por Nikolas
;Motivo Alteracao: Acerto Bug
;Ultima Alteracao: 27/10/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Descricao
;Ultima Alteracao: 27/11/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes array_Grade()
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 23/10/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Carrega_Itenspedidos()
;Ultima Alteracao: 15/01/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ordem consulta cores             
;Ultima Alteracao: 26/04/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Inclusao de Pedidos em ABERTO          
;Ultima Alteracao: 14/06/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Gera_Cfacri()     
;Ultima Alteracao: 15/09/2010 por Karina Andrade
;Motivo Alteracao: Ajustes codigo cliente confec‡Æo
;Ultima Alteracao: 14/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas   
;Ultima Alteracao: 27/04/2011 por Bruno Carvalho
;Motivo Alteracao: Otimiza‡Æo Monta_Array_Grade
;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: 23/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exibir cores em ordem Alfabetica               
;Ultima Alteracao: 07/06/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exibir cores em ordem sequencia lupus         
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 26/09/2012 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes bloqueio de registro durante carrega_parametros()        
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LimpaRodape()                  
;Ultima Alteracao: 23/05/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Seleciona_Opcoes() quando ocorrer maior que 10 cores  
;Ultima Alteracao: 25/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes TOTQTD ao informar no campo [Quantidade_Programada], nÆo atualizava
;Ultima Alteracao: 02/09/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ se tipo do item ‚ "S" ou "D" conforme referˆncia #Flag# no Item_Dialog() 
;Ultima Alteracao: 26/09/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes "tipo do item" 
;Ultima Alteracao: 13/11/2014 por Bruno Carvalho/ Luis Gustavo
;Motivo Alteracao: Ajustes na proc Carrega_ItensPedidos(), "tipo do item" 
;Ultima Alteracao: 16/12/2014 por Bruno Carvalho
;Motivo Alteracao: Comentado Linha onde veirifca na TAG "Flag" o tipo do item "tpitemref"
;Ultima Alteracao: 06/04/2015 por Bruno Carvalho
;Motivo Alteracao: Alterado Monta_Array_Grade() -> Array_Monta_Grade() e adicionado-o na Bibliot
;Ultima Alteracao: 30/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado novo processo para gera‡Æo/verifica‡Æo do [Numero do Lancamento]
;Ultima Alteracao: 13/09/2016 por Bruno Carvalho 
;Motivo Alteracao: Removido o novo processo para gera‡Æo/verifica‡Æo do [Numero do Lancamento] #Sol. 25558#
;                  Utiliza o mesmo numero do corte e o numero da produ‡Æo do corte  
;Ultima Alteracao: 05/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_NCONTROLE                   
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 25/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desativar tecla alt+O (-24) ir ao prompt do DOS
;Ultima Alteracao: 23/01/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SetaCorRegistro()
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 28/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado TECLA="DOWN" no DigitaC() p/ ir direto aos itens caso seja um registro editado 
;Ultima Alteracao: 28/06/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustado proc EXCLUSAO p/ nÆo gerar log de itens excluidos quando for excluir a cabe‡a do registro
;Ultima Alteracao: 17/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Carrega_ItensPedidos() mensagem
;Ultima Alteracao: 18/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Filtro selecao
;Ultima Alteracao: 18/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Alterado Array_Monta_Grade() p/ Array_Monta_Grade_Producao() e essa proc foi adicionado neste script
;                  Foi criado esta nova proc a fim de verificar um melhor desempenho ao montar a grade do item, #0232# questionou muita lentidÆo
;Ultima Alteracao: 02/07/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado [Producao Esgotada] da tabela "Iten_Com" p/ a tabela "Itens"
;Ultima Alteracao: 09/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes cor_tecido #0232
;Ultima Alteracao: 27/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Alterado vari vel da estrutura de repeti‡Æo FOR de "i" p/ "iy" na proc Array_Monta_Grade_Producao()
;Ultima Alteracao: 31/10/2019 por Bruno Carvalho
;Motivo Alteracao: Movido o Controle_Dia() p/ o Controla_EdicaoC()
;Ultima Alteracao: 31/10/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado IntervaloData()
;Ultima Alteracao: 11/12/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes [Numero do Lancamento] p/ utiliza‡Æo do modo padrÆo, add AjustaDadosCabeca() onde ajusta pre‡o e quantidade na cabe‡a do processo
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 06/01/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes Controla_EdicaoI() onde foi adicionado a vari vel de controle ITEM, utilizado na proc INICIA_REGISTRO()
;Ultima Alteracao: 11/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes de padroniza‡Æo nos campos [TG_CIDADE] e [TG_ESTADO]
;Ultima Alteracao: 06/05/2020 por Bruno Carvalho
;Motivo Alteracao: Alterado Array_Monta_Grade_Producao() p/ Array_Monta_Grade() e realizado ajustes conforme procedure anterior
;Ultima Alteracao: 09/10/2020 por Bruno Carvalho                       
;Motivo Alteracao: Ajustes para avisar a execu‡Æo do FechaMes
;Ultima Alteracao: 11/11/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ exibir mensagem com informativo de desempenho somente quando quantidade de registros for maior que zero
;Ultima Alteracao: 15/01/2021 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo de filtro
;Ultima Alteracao: 08/02/2021 por Bruno Carvalho
;Motivo Alteracao: Add processo para incluir/editar/filtrar titulos apenas da empresa vinculado ao usu rio conforme parƒmetro.

;*******************************************************************************
;* Rotina para Controlar Chave                                                 *
;*******************************************************************************
Proc CHAVE()
INICIO=True
campocorrente=""

TOTQTD = BlankNum()

While True
  Moveto TabelaControle
  End
  Moveto [Numero_Corte]
  NCORT=[Numero_Corte]
  
  If OPCAO_FORM="F"
     Then Down
     Else PgDn PgDn PgDn
  EndIf
  Moveto [Numero_Corte]

  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadraoCF()
  
  If RetVal="F5" 
     Then RetVal = MenuFiltrar()
          Release Vars MfOpcao
  EndIf       

  Switch
        ;---- FILTRO -----------------------------------------------------------
        Case RetVal="MENUFILTRAR" :
             CHAVEC=99
             Del
             Return
        Case RetVal="MENUFILTROTODOS" :
             MODOFILTRAR=False
             CHAVEC=98
             Del
             Return
        ;-----------------------------------------------------------------------    
        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":
             MODOPAGINA = True
             Del
             While True
               INICIO=True
               campocorrente=""
               TOTQTD = BlankNum()
               If OPCAO_FORM="F"
                  Then PAGINA(TabelaControle,"MR")
                  Else PAGINA(TabelaControle,"MT")
               EndIf
               CHAVEC=0
               NCORT   =[Numero_Corte]
               If EDITAR="S"
                  Then If PegaRegistroControle("Numero_Corte",NCORT)
                          Then If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>MODOFILTRAR_EMPRESA
                                  Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                       AtualizaRegistroControle("Numero_Corte",NCORT,MODOPAGINA)
                                  Else PickForm "2"
                                       If Checa_Controle([Numero_Controle_Dia])
                                          Then Controla_EdicaoC()
                                          Else UnLockRecord
                                               AtualizaRegistroControle("Numero_Corte",NCORT,MODOPAGINA)       
                                       EndIf
                               EndIf        
                       EndIf
                  Else If EXCLUIR="S"
                          Then If QuerExcluir("") And Checa_Supervisor() And Carrega_Parametros()
                                  Then If PegaRegistroControle("Numero_Corte",NCORT)
                                          Then If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>MODOFILTRAR_EMPRESA 
                                                  Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                                  Else PickForm "2"
                                                       GRAVA_LOG=True
                                                       EXCLUSAO("Cabeca")
                                                       PickForm "F"
                                               EndIF   
                                               AtualizaRegistroControle("Numero_Corte",NCORT,MODOPAGINA)
                                          Else UnLockRecord       
                                       EndIf
                               EndIf        
                          Else QuitLoop
                       EndIf
               EndIf
               If OPCAO_FORM=FORM_RELACAO
                  Then PickForm FORM_RELACAO
               EndIf
               SetaPosForm()
             EndWhile
             QuitLoop
        Case Retval="ESC":
             CHAVEC=9
             Del
             Return
        Case Retval="ENTER":
             If MODOFILTRAR  
                Then If TabelaControle<>TabelaPrincipal
                        Then NCORT=[Numero_Corte]    
                             Del
                             End Down
                             FormKey                         
                             Moveto TabelaPrincipal
                             End Down FormKey
                             [Numero_Corte] = NCORT
                             SetaCorRegistro("Editar")                
                     EndIf
             EndIf
             MODOPAGINA = False
             If Numero_Lancamento("","F")
                Then NCORT = PROXLANCTO_NLANC
                     Release Vars PROXLANCTO_NLANC   
                Else If MODOFILTRAR Then FormKey Moveto TabelaControle FormKey EndIf        
                     QuitLoop
             EndIf
             PickForm "2" 
             Moveto [Numero_Corte]
             If PROXIMO_LANCTO_REG_ACHOU
                Then CHAVEC=0
                     Echo Normal
                     Echo Off
                     If MODOFILTRAR
                        Then If MODOFILTRAR_EMPRESA<>""
                                Then If [Codigo da Empresa]<>MODOFILTRAR_EMPRESA
                                        Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                             UnLockRecord FormKey Moveto TabelaControle FormKey
                                             QuitLoop
                                        EndIf
                             EndIf
                             STATUSFILTRO = "UPDATE"
                     EndIf
                     If Checa_Controle([Numero_Controle_Dia])
                        Then Return
                     EndIf                
                Else CHAVEC=1
                     If MODOFILTRAR Then STATUSFILTRO = "INSERT" EndIf
                     If Checa_Controle(SYS_CONTROLE_DIA)
                        Then Return  
                        Else OPCAO_FORM="F"
                     EndIf
             EndIf           
             If TabelaControle<>TabelaPrincipal
                Then FormKey
                     Moveto TabelaControle
                     FormKey
             EndIf
             QuitLoop
        EndSwitch
  EndWhile
EndWhile
EndProc   ; (Chave)

;*******************************************************************************
;* Rotina para Digitacao Dados Gerais                                          *
;*******************************************************************************
Proc DIGITA()
gerou_cfacri=False

SetaCorRegistro("Editar")

If IsBlank(campocorrente)
   Then If [Situacao_Programacao]="FINALIZADA" And INICIO
           Then Mensagem("Programa‡„o Corte Finalizada !")
                If Not Checa_Supervisor()
                   Then CHAVEC=9
                        Return
                EndIf
        EndIf

        If INICIO
           Then If (Not IsBlank(SYS_EMPRESA_DEFAULT) Or MODOFILTRAR_EMPRESA<>"") And CHAVEC=1
                   Then If MODOFILTRAR_EMPRESA<>""
                           Then [Codigo da Empresa]=MODOFILTRAR_EMPRESA
                           Else [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
                        EndIf
                EndIf
        EndIf
        INICIO=False

        Moveto [Codigo da Empresa]
        If CHAVEC=1
           Then [Situacao_Programacao]="PROGRAMADA"
                If MODOFILTRAR_EMPRESA<>""
                   Then [Codigo da Empresa]=MODOFILTRAR_EMPRESA
                EndIf  
           Else If Not IsBlank([Codigo da Empresa])
                   Then If Not Carrega_Parametros()
                           Then CHAVEC=9
                                Return
                           EndIf
                EndIf
                Moveto [Situacao_Programacao]
        EndIf
   Else Moveto Field campocorrente
EndIf

While True

      TECLA=" Esc=Retornar  "
      If Field()="Codigo da Empresa" Or
         Field()="Situacao_Programacao"
         Then TECLA=TECLA+"F1=Tabelas  "
      EndIf
      If CHAVEC=0
         Then TECLA=TECLA+"Del=Exclui  "
      EndIf
      TECLA=TECLA+"Alt+F=Fun‡”es  PgDn=Finalizar  "

      MSGCAMPO=Field()

      campocorrente=Field()
      Tecla_Funcao =""

      Prompt TECLA

      Wait Field
           Message MSGCAMPO
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35",
                 "DOWN","PGDN",-33,-25,-24,-19,"F6","F5",-145

      If RetVal=-33
        Then If Not Seleciona_Funcao()
                Then Loop
                Else Return
             EndIf
      EndIf

      If CHAVEC=0 And (RetVal="DOWN" Or RetVal=-145)
         Then Tecla_Funcao=-25
              Return 
      EndIf

      Switch
      Case RetVal=-25  Or RetVal=-24  Or RetVal=-19  Or
           RetVal="F6" Or RetVal="F5":
           Tecla_Funcao=RetVal
           Return

      Case RetVal="F1":
           If Field()="Codigo da Empresa"
              Then CONSULTAF1()
           EndIf
           If Field()="Situacao_Programacao"
              Then
                   ShowPopup " Situa‡„o " @ 03,57
                        "~P~rogramada ": " Programa‡„o    " : "PROGRAMADA",
                        "~E~m produ‡„o": " Em produ‡„o    " : "EM PRODUCAO",
                        "~S~uspensa   ": " Suspensa       " : "SUSPENSA",
                        "~F~inalizada ": " Finalizada     " : "FINALIZADA"
                   EndMenu
                    To MenuVar
                       If MenuVar<>"Esc"
                          Then [Situacao_Programacao]=MenuVar
                       EndIf
           EndIf
      Case Retval="ESC":
           Switch
           Case Field()="Codigo da Empresa":
                If QuerDesfazer("")
                   Then If CHAVEC=1
                           Then Exclusao("Cabeca")
                           Else Undo
                        EndIf
                        CHAVEC=9
                        QuitLoop
                EndIf
           Case Field()="Situacao_Programacao":
                If CHAVEC=0
                   Then If QuerDesfazer("")
                           Then Undo
                                CHAVEC=9
                                QuitLoop
                        EndIf
                   Else Left
                EndIf
           Case Field()="Data_Programacao":
                Moveto [Codigo da Empresa]
           OtherWise:
                Left
           EndSwitch
      Case Retval="PGDN":
           FINALIZADO=True
           CHAVEC=9
           OPCAO=""
           QuitLoop

      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEC=0
              Then If QuerExcluir("") And Checa_Supervisor()
                      Then CHAVEC=9
                           GRAVA_LOG=True
                           EXCLUSAO("Cabeca")
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="ENTER":
           Switch
             Case Field()="Codigo da Empresa"  :
                 If Not IsBlank([])
                    Then If Not Carrega_Parametros()
                            Then Loop
                         EndIf
                         If MODOFILTRAR_EMPRESA<>""
                            Then If [Codigo da Empresa]<>MODOFILTRAR_EMPRESA
                                    Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                         Loop
                                 EndIf
                         EndIf
                         Moveto [Data_Programacao]
                 EndIf
            Case Field()="Data_Programacao"  :
                 If IsBlank([])
                    Then []=Today()
                 EndIf
                 
                 If Not IntervaloData([Data_Programacao])
                    Then Loop
                 EndIf
                 
                 Moveto [Hora_Programacao]
            Case Field()="Hora_Programacao"  :
                 If IsBlank([])
                    Then []=Time()
                 EndIf
                 Moveto [Situacao_Programacao]
            Case Field()="Situacao_Programacao"  :
                 If IsBlank([])
                    Then []="PROGRAMADA"
                 EndIf
                 Tecla_Funcao=-25
                 Return
            OtherWise: Right
           EndSwitch
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para                                                                 *
;*******************************************************************************
Proc Seleciona_Funcao()

Tecla_Funcao=""
Echo Normal
Echo Off

ShowPopup " Fun‡”es " CENTERED
 "~I~mprimir     ": " [F6]  = Imprimir programa‡„o corte " :"F6",
 "~S~ele‡„o      ": " [F5]  = Sele‡„o de Pedidos         " :"F5",
 "~O~bs          ": " Alt+O = Observa‡”es                " :"-24",
 "~P~edidos      ": " Alt+P = Rela‡„o de Pedidos         " :"-25",
 "~R~ela‡„o Itens": " Alt+R = Rela‡„o de Itens           " :"-19",
 "C~a~rrega Itens": " Alt+A = Carregar Itens dos Pedidos " :"-30",
 "~E~ditar       ": " Alt+E = Editar quantidades         " :"-18",
 "~C~ancelar     ": " Cancelar a Opera‡„o                " : "CANCELAR"
EndMenu
 To MenuVar

Echo Off

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

If MenuVar<>"F5" And MenuVar<>"F6"
   Then Tecla_Funcao=NumVal(MenuVar)
   Else Tecla_Funcao=MenuVar
EndIf

Return True

EndProc


;*******************************************************************************
;* Rotina para Localizar Despesas                                              *
;*******************************************************************************
Proc PEDIDOS()

Moveto "CFACP"
While True
  SomatoriaDosItens()
  
  Moveto [Numero do Pedido]
  End Down

  SetaCorRegistro("Editar")
  While True

    TECLA=" Esc=Retornar  F1=Tabelas  Alt+F=Fun‡”es  F7=Paginar  PgDn=Finalizar  "

    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","HOME","UP","PGUP","PGDN","F7","F1",
         -33,-25,-24,-19,"F6","F5"

    If RetVal=-33
      Then If Not Seleciona_Funcao()
              Then Loop
              Else Del
                   Return
           EndIf
    EndIf

    Switch
    Case RetVal=-25  Or RetVal=-24  Or RetVal=-19 Or RetVal="F6" Or RetVal="F5":
         Del
         Tecla_Funcao=RetVal
         Return
    Case RetVal="F1":
         If Field()="Numero do Pedido"
            Then Moveto [Lookup_PedidoC]
                 If CONSULTAF1()
                    Then [Numero do Pedido]=[Lookup_PedidoC]
                         [Lookup_PedidoC  ]=""
                 EndIf
                 Moveto [Numero do Pedido]
         EndIf
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         While True
           Moveto "CFACP"
           
           NPED=[Numero do Pedido]
           SomatoriaDosItens()
           
           Moveto [Numero do Pedido]
           Locate NPED
           
           PAGINA("CFACP","MR")
           If EXCLUIR="S"
              Then If QuerExcluir("")
                      Then Del
                      Else UnLockRecord
                   EndIf
              Else If EDITAR="S"
                      Then UnLockRecord
                      Else QuitLoop
                   EndIf
           EndIf
           SomatoriaDosItens()
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         Del
         Tecla_Funcao=BlankNum()
         Return
    Case Retval="PGDN":
         Del
         Tecla_Funcao=BlankNum()
         FINALIZADO  =True
         Return
    Case Retval="ENTER":

       Switch
       Case Field() = "Numero do Pedido":
            If IsBlank([])
               Then Loop
            EndIf

            NPED=AlinhM([],6)
            Del
            Locate NPED
            If Retval
               Then Mensagem("Pedido j  existe na rela‡„o !")
               Else End Down
                    Moveto [Lookup_PedidoC]
                    If Busca_Lookup("Numero do Pedido",NPED,"SM")
                       Then If REG_BUSCA_LOOKUP["Situacao do Pedido"]<>"ABERTO"
				                       Then Mensagem("Verificar a Situa‡„o do Pedido !//Status="+REG_BUSCA_LOOKUP["Situacao do Pedido"])
				                            Del
														   Else [Lookup_PedidoC  ]=NPED
				                            [Numero do Pedido]=NPED
				                            Atualiza_Itens("Entrada")
				                    EndIf
                       Else Mensagem("Pedido n„o encontrado !")
                            Del
                            QuitLoop
                    EndIf
            EndIf

            QuitLoop
       EndSwitch

    EndSwitch
  EndWhile
EndWhile
EndProc

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

Moveto "Cfacrig"
While True
  SomatoriaDosItens()
  
  Moveto [Sequencia do Lancamento]
  End
  ITEM = [Sequencia do Lancamento]
  Down
  Moveto [Sequencia do Lancamento]
  Seta_Sequencia(ITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While True 
        Moveto "Cfacrig"
        
        TECLA=" Esc=Retornar  Alt+F=Fun‡”es  F3=Ver Ficha  PgDn=Finalizar  F7=Paginar  "
        Prompt TECLA

        Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","PGDN","F3",
                 -33,-25,-24,-19,-30,"F6",-18,"F5"

        If RetVal=-33
          Then If Not Seleciona_Funcao()
                  Then Loop
                  Else Del
                       CHAVEI=9
                       Return
               EndIf
        EndIf

        Switch
        Case RetVal="F3":
             Del
             Moveto [Sequencia do Lancamento]
             If RecordStatus("New")
                Then MENSAGEM("Sem Item p/ ver !")
                     QuitLoop
             EndIf
             Opcao_Ver=True
             CHAVEI=0
             Home
             ITEM=[Sequencia do Lancamento]
             Inicia_Registro()
             DigitaI()
             QuitLoop
        Case RetVal="PGDN":
             Del
             Moveto [Sequencia do Lancamento]
             If RecordStatus("New")=True
                Then MENSAGEM("O Lancamento deve ter pelo menos 1(um) Item Ok !")
                     QuitLoop
             EndIf
             CHAVEI=9
             FINALIZADO=True
             Tecla_Funcao=""
             AjustaDadosCabeca()
             Return
        Case RetVal=-24 Or RetVal="F6" or RetVal=-19 Or
             RetVal=-25 Or RetVal="F5" or RetVal=-30 Or RetVal=-18:
             Tecla_Funcao=RetVal
             Del
             CHAVEI=9
             Return
        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
             Del
             While True
               Moveto "Cfacrig"
               
               ITEM = [Sequencia do Lancamento]
               SomatoriaDosItens()
               
               Moveto [Sequencia do Lancamento]
               Locate ITEM
               
               PAGINA("Cfacrig","MR")
               If EDITAR="S"
                  Then CHAVEI=0
                       Controla_EdicaoI()
                  Else If EXCLUIR="S"
                          Then If QuerEXcluir("")
                                  Then EXCLUSAO("Item")
                                       Moveto "Cfacrig"
                                  Else UnLockRecord
                               EndIf
                          Else QuitLoop
                       EndIf
               EndIf
               SomatoriaDosItens()
               SetaPosForm()
             EndWhile
             QuitLoop
        Case Retval="ESC":
             Del
             CHAVEI=9
             Tecla_Funcao=""
             Return
        Case Retval="ENTER":
             If Not Seta_Sequencia(ITEM,True)
                Then Del
                     QuitLoop
             EndIf
             ITEM=[]
             Del
             Locate NCORT,ITEM
             If Retval
                Then CHAVEI=0
                Else CHAVEI=1
                     End Down
                     [Numero_Corte           ] = NCORT
                     [Sequencia do Lancamento] = ITEM
                     Locate NCORT,ITEM
             EndIf
             Return
        EndSwitch
  EndWhile
EndWhile
EndProc    ; (ChaveI)

;*******************************************************************************
;* Somatoria de valores dos itens para variaveis do FORM Fatura                *
;*******************************************************************************
Proc SomatoriaDosItens()

TOTQTD = 0
scan
  TOTQTD = TOTQTD + [Quantidade Programada]
endscan

EndProc ;SomatoriaDosItens()

;*******************************************************************************
;* Rotina de Digitacao Dados do Item                                           *
;*******************************************************************************
Proc Item_Dialog(Disparo,Campo,Evento,Elemento)
Private JANELA, WinArray5
TECLA=" Esc=Retornar  "
MSG_CAMPO=""
Temp=True
If INICIO_DIALOG
   Then If CHAVEI=0
           Then Campo=AvancaCampo("I_Qtd0")
           Else Campo="I_Codigo_Item"
        EndIf
        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
   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 ITEM=[Sequencia do Lancamento]
                       Inicia_Registro()
               EndIf
           EndSwitch
       Case Evento["KeyCode"] = 9 Or
            Evento["KeyCode"] = -15:
            Temp=False
       Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
            If CHAVEI=0
               Then If QuerExcluir("")
                       Then CHAVEI=8
                            CancelDialog
                    EndIf
            EndIf
       Case Evento["KeyCode"] = -59:
            If Campo="I_Codigo_Item" Or
               Campo="I_Codigo_Cor_Tecido"
               Then
                    If Campo="I_Codigo_Cor_Tecido"  
                       Then Monta_Opcoes("Codigo da Cor_Tecido","")
                            Seleciona_Opcoes("Codigo da Cor_Tecido","")
                            Moveto [Codigo da Cor_Tecido ]
                       Else
                            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 [Codigo do Item ] EndIf
        
                            ConsultaF1()
                            Window Select JANELA
                            WinArray5["FLOATING"]=True
                            Window SetAttributes JANELA From WinArray5
        
                            echo Normal
                            echo off
                    Endif
                    
                    If Campo="I_Codigo_Item"
                       Then VSD_I_Codigo_Item    =[Codigo do Item    ]
                            VSD_I_Descricao_Item =[Descricao do Item ]
                            VSD_I_Tipo_Item      =[Tipo do Item      ]
                            VSD_I_UN_Item        =[Unidade Interna   ]
                            Campo="I_Codigo_Item"
                    EndIf

                    If Campo="I_Codigo_Cor_Tecido"
                       Then VSD_I_Codigo_Cor_Tecido   =[Codigo da Cor_Tecido   ]
                            VSD_I_Descricao_Cor_Tecido=[Descricao da Cor_Tecido]
                    EndIf

                    Moveto "Cfacrig"
                    RefreshDialog
           EndIf
           Temp=False
      Case Evento["KeyCode"] = 27:
           Switch
             Case Campo="I_Codigo_Item":
                  If QuerDesfazer("")
                     Then CHAVEI=9
                          Del
                          CancelDialog
                  EndIf
             Case Campo="I_Codigo_Cor_Tecido"   :
                  Campo="I_Codigo_Item"
                  VSD_I_Codigo_Item   =""
                  VSD_I_Descricao_Item=""
                  VSD_I_UN_Item       =""
                  VSD_I_CF_Item       =""
                  VSD_I_CST_Item      =""
                  VSD_I_Tipo_Item     =""
                  VSD_I_Modelo_Item   =""
             Case SubStr(Campo,1,5)="I_Qtd": Campo=VoltaCampo(Campo)
             Case Campo="I_Flag":
                  Campo=VoltaCampo("I_Qtd13")
           EndSwitch
           Temp=False
      Case Evento["KeyCode"] = 13:
           Switch
             Case Campo="I_Codigo_Item": 
                  VSD_I_REFERENCIA  =ControlValue("I_Codigo_Item")
                  Moveto [Codigo do Item]
                  Ativa_Lookup()

                  If PARAM_COR_TECIDO="S" 
                     Then tpitemref="D"
                     Else tpitemref="S"
                  EndIf   

                  Moveto [Referencia]
                  Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, tpitemref
                  If RetVal
                     Then VSD_I_Codigo_Item   =[Codigo do Item] 
                          KeyPress "ESC"
                          [Codigo do Item       ]=VSD_I_Codigo_Item
                          [Referencia           ]=VSD_I_REFERENCIA
                          
                          VERIFICA_GRADE_GETRECORD=True
                          If Array_Monta_Grade("Valida")
                             Then Registro_Item("Ler")
                                  Monta_Opcoes("Codigo da Cor_Tecido","")
                                  RefreshDialog
        
                                  Moveto "Cfacrig"
                  
                                  If PARAM_COR_TECIDO="S"
                                     Then Campo="I_Codigo_Cor_Tecido"
                                     Else Campo=Avancacampo("I_Qtd0")
                                  EndIf
                             Else Campo="I_Codigo_Item"
                                  VSD_I_Codigo_Item   =""
                                  VSD_I_Descricao_Item=""
                                  VSD_I_UN_Item       =""
                                  VSD_I_CF_Item       =""
                                  VSD_I_CST_Item      =""
                                  VSD_I_Tipo_Item     =""
                                  VSD_I_Modelo_Item   =""
                          EndIf
                     Else KeyPress "ESC"
                          Mensagem("Referˆncia n„o Cadastrada !")
                          VSD_I_Codigo_Item   =""
                          VSD_I_Descricao_Item=""
                          VSD_I_UN_Item       =""
                          VSD_I_CF_Item       =""
                          VSD_I_CST_Item      =""
                          VSD_I_Tipo_Item     =""
                  EndIf
                  Echo Off
            Case Campo="I_Codigo_Cor_Tecido":
                 VSD_I_Codigo_Cor_Tecido=AlinhM(ControlValue("I_Codigo_Cor_Tecido"),4)
                 If Not IsBlank(VSD_I_Codigo_Cor_Tecido)
                    Then If Checa_Opcoes("Codigo da Cor_Tecido",VSD_I_Codigo_Cor_Tecido)
                            Then Moveto "Cfacrig"
                                 [Codigo da Cor_Tecido]=VSD_I_Codigo_Cor_Tecido
                                 VSD_I_Descricao_Cor_Tecido=[Descricao da Cor_Tecido]

                                 Moveto [Codigo do Item]
                                 Ativa_Lookup()

                                 tpitemref="S"
                                 Moveto [Referencia]
                                 Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, tpitemref, VSD_I_Codigo_Cor_Tecido
                                 If RetVal
                                    Then VSD_I_Codigo_Item   =[Codigo do Item   ]
                                         KeyPress "ESC"
                                         [Codigo do Item       ]=VSD_I_Codigo_Item
                                         [Referencia           ]=VSD_I_REFERENCIA

                                         VERIFICA_GRADE_GETRECORD=True
                                         If Array_Monta_Grade("Valida")
                                            Then Registro_Item("Ler")
                                                 RefreshDialog
        
                                                 Moveto "Cfacrig"
                                                 Campo=Avancacampo("I_Qtd0")
                                            Else Campo="I_Codigo_Item"
                                                 VSD_I_Codigo_Cor_Tecido=""
                                                 VSD_I_Descricao_Cor_Tecido=""
                                                 VSD_I_Codigo_Item   =""
                                                 VSD_I_Descricao_Item=""
                                                 VSD_I_UN_Item       =""
                                                 VSD_I_CF_Item       =""
                                                 VSD_I_CST_Item      =""
                                                 VSD_I_Tipo_Item     =""
                                                 VSD_I_Modelo_Item   =""
                                         EndIf
                                    Else Mensagem("Referlncia n„o Cadastrada !")
                                         KeyPress "ESC"
                                 EndIf

                            Else Mensagem("Cor/Tecido n„o cadastrado para esta referencia !")
                                 VSD_I_Codigo_Cor_Tecido   =""
                                 VSD_I_Descricao_Cor_Tecido=""
                                 KeyPress "ESC"
                         EndIf
                 EndIf
                 Echo Off

             Case SubStr(Campo,1,5)="I_Qtd" : Campo=AvancaCampo(Campo)
             Case Campo="I_Flag"  : AcceptDialog                                    
           EndSwitch
           Temp=False
   EndSwitch
EndIf
SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="I_Codigo_Item" Or
   Campo="I_Codigo_Cor_Tecido"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf
Switch
  Case Campo="I_Seq":
       MSGCAMPO="Sequencia"
  Case Campo="I_Codigo_Item":
       MSGCAMPO="Referlncia"
  Case SubStr(Campo,1,5)="I_Qtd" :
       MSGCAMPO="Quantidade ["+SubStr(Array_TM[NumVal( RTrim( SubStr(Campo,6,2) ) )],2,2)+"] "
  Case Campo="I_Codigo_Cor_Tecido":
       MSGCAMPO="Codigo da Cor"
  Case Campo="I_Flag":
       MSGCAMPO="[pausa]"
  OtherWise:
       MSGCAMPO=""
EndSwitch

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

If Opcao_Ver=True
   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)
Mouse Hide
RefreshDialog
Return TEMP
EndProc  ; (Item_Dialog)

;*******************************************************************************
;* Rotina para AvancaCampo                                                      *
;*******************************************************************************
Proc AvancaCampo(Campo)
VSD_I_Qtd1 =ControlValue("I_Qtd1")
VSD_I_Qtd2 =ControlValue("I_Qtd2")
VSD_I_Qtd3 =ControlValue("I_Qtd3")
VSD_I_Qtd4 =ControlValue("I_Qtd4")
VSD_I_Qtd5 =ControlValue("I_Qtd5")
VSD_I_Qtd6 =ControlValue("I_Qtd6")
VSD_I_Qtd7 =ControlValue("I_Qtd7")
VSD_I_Qtd8 =ControlValue("I_Qtd8")
VSD_I_Qtd9 =ControlValue("I_Qtd9")
VSD_I_Qtd10=ControlValue("I_Qtd10")
VSD_I_Qtd11=ControlValue("I_Qtd11")
VSD_I_Qtd12=ControlValue("I_Qtd12")

VSD_I_Quantidade=VSD_I_QTD1+VSD_I_QTD2+VSD_I_QTD3+VSD_I_QTD4+
                 VSD_I_QTD5+VSD_I_QTD6+VSD_I_QTD7+VSD_I_QTD8+
                 VSD_I_QTD9+VSD_I_QTD10+VSD_I_QTD11+VSD_I_QTD12
[Quantidade Programada ]=VSD_I_Quantidade
indice=NumVal(RTrim(SubStr(Campo,6,2)))

For i From indice To 12
  If (i+1)=13
     Then Campo="I_Flag"
          QuitLoop
     Else If (i+1) > NumVal(SubStr(Campo,6,2)) And
             SubStr(Array_TM[i+1],1,1)="T"
             Then Campo=SubStr(Campo,1,5)+StrVal(i+1)
                  QuitLoop
          EndIf

  EndIf
EndFor

Return Campo
EndProc

;*******************************************************************************
;* Rotina para VoltaCampo                                                      *
;*******************************************************************************
Proc VoltaCampo(Campo)
For i From 12 to 0 Step -1
  If i=0
     Then If CHAVEI=1
             Then Campo="I_Codigo_Item"
                  VSD_I_Codigo_Item   =""
                  VSD_I_Descricao_Item=""
                  VSD_I_UN_Item       =""
                  VSD_I_CF_Item       =""
                  VSD_I_CST_Item      =""
                  VSD_I_Tipo_Item     =""
                  VSD_I_Modelo_Item   =""
                  VSD_I_Codigo_Cor_Tecido   =""
                  VSD_I_Descricao_Cor_Tecido=""
             Else CHAVEI=9
                  CopyFromArray RegItem
                  CancelDialog
          EndIf
          QuitLoop
     Else If i < NumVal(SubStr(Campo,6,2)) And
             SubStr(Array_TM[i],1,1)="T"
             Then Campo=SubStr(Campo,1,5)+StrVal(i)
                  QuitLoop
          EndIf
  EndIf
EndFor

If Campo="I_Qtd13" Then Campo="I_Custo_Unitario" EndIf

Return Campo
EndProc

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
Moveto [Sequencia do Lancamento]
Locate [Cfacc->Numero_Corte],ITEM
CopyToArray RegItem

Echo Normal
Echo Off

Registro_Item("Ler")

VERIFICA_GRADE_GETRECORD=True
Array_Monta_Grade("Valida")
 
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"
     @ 10,01 height 10 width 78

   Accept @ -01,42 Width 5 "A2" Tag "I_Seq" To VSD_I_SEQ

   Label  @ 00,01 "Ref/C¢digo" For "I_Codigo_Item"
   Accept @ 01,01 Width 13 "A10" picture "!*!" Tag "I_Codigo_Item" to VSD_I_Codigo_Item
   Label  @ 00,15 "Descricao Item" For "I_Descricao_Item"
   Accept @ 01,15 Width 33 "A30" picture "!*!" Tag "I_Descricao_Item" to VSD_I_Descricao_Item
   Label  @ 00,49 "TI" For "I_Tipo_Item"
   Accept @ 01,49 Width 04 "A1" picture "&" Tag "I_Tipo_Item" to VSD_I_Tipo_Item

   Label  @ 02,02 "Cor/Tecido" For "I_Codigo_Cor_Tecido"
   Accept @ 03,07 Width 07 "A4" picture "!*!" Tag "I_Codigo_Cor_Tecido" to VSD_I_Codigo_Cor_Tecido
   Label  @ 02,15 "Descricao Cor/Tecido" For "I_Descricao_Cor_Tecido"
   Accept @ 03,15 Width 22 "A20" picture "!*!" Tag "I_Descricao_Cor_Tecido" to VSD_I_Descricao_Cor_Tecido

   @ 04,01 ?? "Prog"
   @ 04,06 ?? SubStr(Array_TM[1],2,2)
   @ 04,11 ?? SubStr(Array_TM[2],2,2)
   @ 04,16 ?? SubStr(Array_TM[3],2,2)
   @ 04,21 ?? SubStr(Array_TM[4],2,2)
   @ 04,26 ?? SubStr(Array_TM[5],2,2)
   @ 04,31 ?? SubStr(Array_TM[6],2,2)
   @ 04,36 ?? SubStr(Array_TM[7],2,2)
   @ 04,41 ?? SubStr(Array_TM[8],2,2)
   @ 04,46 ?? SubStr(Array_TM[9],2,2)
   @ 04,51 ?? SubStr(Array_TM[10],2,2)
   @ 04,56 ?? SubStr(Array_TM[11],2,2)
   @ 04,61 ?? SubStr(Array_TM[12],2,2)

   Accept @ 05,05 Width 05 "S" Tag "I_Qtd1"  to VSD_I_Qtd1
   Accept @ 05,10 Width 05 "S" Tag "I_Qtd2"  to VSD_I_Qtd2
   Accept @ 05,15 Width 05 "S" Tag "I_Qtd3"  to VSD_I_Qtd3
   Accept @ 05,20 Width 05 "S" Tag "I_Qtd4"  to VSD_I_Qtd4
   Accept @ 05,25 Width 05 "S" Tag "I_Qtd5"  to VSD_I_Qtd5
   Accept @ 05,30 Width 05 "S" Tag "I_Qtd6"  to VSD_I_Qtd6
   Accept @ 05,35 Width 05 "S" Tag "I_Qtd7"  to VSD_I_Qtd7
   Accept @ 05,40 Width 05 "S" Tag "I_Qtd8"  to VSD_I_Qtd8
   Accept @ 05,45 Width 05 "S" Tag "I_Qtd9"  to VSD_I_Qtd9
   Accept @ 05,50 Width 05 "S" Tag "I_Qtd10" to VSD_I_Qtd10
   Accept @ 05,55 Width 05 "S" Tag "I_Qtd11" to VSD_I_Qtd11
   Accept @ 05,60 Width 05 "S" Tag "I_Qtd12" to VSD_I_Qtd12


   Label  @ 04,69 "Total" For "I_Quantidade"
   Accept @ 05,66 Width 09 "N" picture "#*#.[###]" Tag "I_Quantidade" to VSD_I_Quantidade

   Label  @ 06,00 "UN" For "I_UN_Item"
   Accept @ 07,01 Width 05 "A2" picture "!*!" Tag "I_UN_Item" to VSD_I_UN_Item
              
   Accept @ 07,43 Width 1 "A1" picture "!*!" Tag "I_Flag" to VSD_I_Flag

Enddialog
Mouse Show
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
                Exclusao("Item")
        EndIf
EndIf
EndProc   ; (Finaliza_Registro)

;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Registro_Item(Funcao_Registro)
Private Funcao_Registro
Switch
  Case Funcao_Registro="Gravar":
       [Codigo do Item       ]=VSD_I_Codigo_Item
       [Descricao do Item    ]=VSD_I_Descricao_Item
       [Tipo do Item         ]=VSD_I_Tipo_Item

       [Qtd1                      ]=VSD_I_Qtd1
       [Qtd2                      ]=VSD_I_Qtd2
       [Qtd3                      ]=VSD_I_Qtd3
       [Qtd4                      ]=VSD_I_Qtd4
       [Qtd5                      ]=VSD_I_Qtd5
       [Qtd6                      ]=VSD_I_Qtd6
       [Qtd7                      ]=VSD_I_Qtd7
       [Qtd8                      ]=VSD_I_Qtd8
       [Qtd9                      ]=VSD_I_Qtd9
       [Qtd10                     ]=VSD_I_Qtd10
       [Qtd11                     ]=VSD_I_Qtd11
       [Qtd12                     ]=VSD_I_Qtd12

       [Quantidade Programada]=VSD_I_Quantidade
       [Unidade Interna      ]=VSD_I_UN_Item

       [Referencia                ]=VSD_I_Referencia

       [Codigo da Cor_Tecido      ]=VSD_I_Codigo_Cor_Tecido
       [Descricao da Cor_Tecido   ]=VSD_I_Descricao_Cor_Tecido

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

       VSD_I_Tipo_Item              =[Tipo do Item              ]
       VSD_I_Codigo_Item            =[Codigo do Item            ]
       VSD_I_Descricao_Item         =[Descricao do Item]
       If CHAVEI=1
          Then VSD_I_Descricao_Item=TiraTamanhoDescricaoItem(VSD_I_Descricao_Item)
       EndIf
       VSD_I_Qtd1                   =[Qtd1                      ]
       VSD_I_Qtd2                   =[Qtd2                      ]
       VSD_I_Qtd3                   =[Qtd3                      ]
       VSD_I_Qtd4                   =[Qtd4                      ]
       VSD_I_Qtd5                   =[Qtd5                      ]
       VSD_I_Qtd6                   =[Qtd6                      ]
       VSD_I_Qtd7                   =[Qtd7                      ]
       VSD_I_Qtd8                   =[Qtd8                      ]
       VSD_I_Qtd9                   =[Qtd9                      ]
       VSD_I_Qtd10                  =[Qtd10                     ]
       VSD_I_Qtd11                  =[Qtd11                     ]
       VSD_I_Qtd12                  =[Qtd12                     ]

       VSD_I_Quantidade             =[Quantidade Programada     ]
       VSD_I_UN_Item                =[Unidade Interna           ]

       VSD_I_Referencia             =[Referencia                ]

       VSD_I_Codigo_Cor_Tecido      =[Codigo da Cor_Tecido      ]
       VSD_I_Descricao_Cor_Tecido   =[Descricao da Cor_Tecido   ]

EndSwitch

EndProc  ; (Registro_Item)

;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAO(TIPO)
Private TIPO

If Not Isassigned(GRAVA_LOG) Then GRAVA_LOG=False EndIf

Switch
Case TIPO="Cabeca":
     Moveto "Cfacri"
     Moveto [Numero_Corte]
     Locate [Cfacc->Numero_Corte]
     If RetVal
        Then While [Numero_Corte]=[Cfacc->Numero_Corte]               
               Del
             EndWhile
     EndIf

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

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

     Moveto "Cfacc"
     If GRAVA_LOG Then Grava_LogEx("Cfac") EndIf
     Del
     
     If MODOFILTRAR and STATUSFILTRO="UPDATE" Then STATUSFILTRO="DEL" EndIf
     If MODOFILTRAR and STATUSFILTRO="INSERT" Then STATUSFILTRO=""    EndIf   
Case TIPO="Item":
     Moveto "Cfacrig"
     Del
EndSwitch
EndProc  ; (Exclusao)

;*******************************************************************************
;* Rotina para Digitacao das Quantidades                                       *
;*******************************************************************************
Proc Editar(Opcao)
Private Opcao

Moveto [Qtd1]

While True

   Prompt " Esc=Retornar  Ctrl+Z=Pesquisar  Alt+Z=Pr¢ximo"

   Switch
     Case SubStr(Field(),1,3)="Qtd"     : ImageRights
     OtherWise                          : ImageRights ReadOnly
   EndSwitch

   Wait Field
     Until "F35","ESC","ENTER","DOWN","UP","FIELDVIEW","ZOOM","ZOOMNEXT","LEFT","RIGHT","HOME","END"

      Switch
      Case RetVal="ZOOM":
           PESQUISA()
      Case RetVal="ZOOMNEXT":
           PESQUISACON()
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If QuerExcluir("")
              Then ImageRights
                   Del
                   ImageRights ReadOnly
           EndIf
      OtherWise:
           Tecla_Press=RetVal
           If Retval="ESC"
              Then If RecordStatus("Modified")
                      Then Atualiza()
                   EndIf
                   QuitLoop
              Else If RecordStatus("Modified")
                      Then Atualiza()
                   EndIf
           EndIf
           If SubStr(Field(),1,3)="Qtd" and Tecla_Press="ENTER"
              Then Retval="RIGHT"
           EndIf

           Switch
             Case RetVal="LEFT"  And Field()="Qtd1"  : Moveto [Qtd12]
             Case RetVal="RIGHT" And Field()="Qtd12" : Moveto [Qtd1]
             OtherWise : KeyPress Tecla_Press
           EndSwitch

           If RecordStatus("New")
              Then Del
           EndIf
      EndSwitch
EndWhile

ImageRights
EndProc

;*******************************************************************************
;* Atualiza Dados na Programacao                                               *
;*******************************************************************************
Proc Atualiza()
Private ITEM 

ITEM = [Sequencia do Lancamento]

[Quantidade Programada]=[Qtd1 ]+[Qtd2 ]+[Qtd3 ]+[Qtd4 ]+[Qtd5 ]+[Qtd6 ]+
                        [Qtd7 ]+[Qtd8 ]+[Qtd9 ]+[Qtd10]+[Qtd11]+[Qtd12]
UnLockRecord

SomatoriaDosItens()
               
Moveto [Sequencia do Lancamento]
Locate ITEM

EndProc

;*******************************************************************************
;* Rotina Gera Tabela Cfacrig                                                  *
;*******************************************************************************
Proc Gera_Cfacri()
Private codite

Aguarde("Convertendo programa‡„o modo padr„o")
Moveto "Cfacri"
Moveto [Numero_Corte]
Locate [Cfacc->Numero_Corte]
If RetVal
   Then While [Numero_Corte]=[Cfacc->Numero_Corte]
          Del
        EndWhile
EndIf

refant="****"

Seq=0
Moveto "Cfacrig"
NR = NIMAGERECORDS()
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Convertendo programa‡„o modo padr„o "+BARRA_STRING)

  CopyToArray RegRq
   
	If RegRq["Referencia"]<>refant
	   Then VERIFICA_GRADE_GETRECORD=True
            Array_Monta_Grade("")
	        refant=[Referencia]
	EndIf        

  For ic From 1 to 12
    Qtd=0
    TM=RTrim(SubStr(Array_TM[ic],4,2))
    Switch
      Case ic=1:  Qtd=RegRq["Qtd1"]  
      Case ic=2:  Qtd=RegRq["Qtd2"]  
      Case ic=3:  Qtd=RegRq["Qtd3"]  
      Case ic=4:  Qtd=RegRq["Qtd4"]  
      Case ic=5:  Qtd=RegRq["Qtd5"]  
      Case ic=6:  Qtd=RegRq["Qtd6"]  
      Case ic=7:  Qtd=RegRq["Qtd7"]  
      Case ic=8:  Qtd=RegRq["Qtd8"]  
      Case ic=9:  Qtd=RegRq["Qtd9"]  
      Case ic=10: Qtd=RegRq["Qtd10"] 
      Case ic=11: Qtd=RegRq["Qtd11"] 
      Case ic=12: Qtd=RegRq["Qtd12"] 
    EndSwitch

    If Qtd>0
       Then If Len(TM)=1
               Then codite=SubStr(RegRq["Codigo do Item"],1,9)+TM
               Else codite=SubStr(RegRq["Codigo do Item"],1,8)+TM
            EndIf

            Moveto "Cfacri"
            Moveto [Numero_Corte]
            Locate RegRq["Numero_Corte"],codite
            If Not RetVal
               Then End Down
                    Seq=Seq+1
                    [Numero_Corte             ]=RegRq["Numero_Corte"]

                    [Codigo do Item           ]=codite
            EndIf
            [Quantidade Programada    ]=[Quantidade Programada    ]+Qtd

            Moveto "Cfacri"
            UnlockRecord
    EndIf
  EndFor

  Moveto "Cfacrig"
EndScan
CHAVEF=8
LimpAguarde()
EndProc

;*******************************************************************************
;* Rotina Atualiza Itens                                                       *
;*******************************************************************************
Proc Atualiza_Itens(tipo)
private pedok, qtdped, qtdprog

pedok =true
qtdped=0

Moveto "CFACC"

Moveto "\\Sistemas\\Vendas\\PedidoI"
Moveto [Numero do Pedido]
Locate NPED
If Not Retval
   Then Mensagem("Item(s) do pedido n„o localizado(s) !")
        pedok=false
EndIf

While [Numero do Pedido]=NPED And pedok
  CopyToArray REGISTRO_F1
  
  itemok=true
  qtdprog=REGISTRO_F1["Quantidade"]-REGISTRO_F1["Quantidade Faturada"]
  If tipo="Entrada"
     Then If qtdprog<=0
             Then Mensagem("Item "+StrVal([Item do Pedido])+" do pedido "+NPED+" j  faturado !")
                  itemok=false
          EndIf
  Endif
  If itemok
     then
          qtdped=qtdped+qtdprog
  EndIf

  Moveto "\\Sistemas\\Vendas\\PedidoI"
  Skip
  If EOT() Then QuitLoop EndIf

EndWhile

Moveto "CFACP"
Moveto [Numero do Pedido]
Locate NPED
If Tipo="Entrada"
   Then [Quantidade Programada]=qtdped
        UnLockRecord
   Else Del
EndIf

EndProc

;*******************************************************************************
;* Rotina Atualiza Itens Pedidos                                               *
;*******************************************************************************
Proc Carrega_ItensPedidos()
private qtdped,qtdprog,coditem,itemnovo,indice,seq,refer,cor,msg

Moveto "Cfacrig"
Moveto [Sequencia do Lancamento]
if imageccount()>0
   then
        if not confgeral("Deseja realmente recarregar os itens novamente//conforme rela‡Æo dos Pedidos")
           then 
                 return
        endif
endif    

Aguarde("Processando Pedidos")
Moveto "Cfacrig"
While RecordStatus("New")=False
  Del
EndWhile

qtdped=0
seq   =0

Moveto "CFACP"
NR = NIMAGERECORDS()
Scan
  NPED=[Numero do Pedido]

  Barra(NR, RecNo())
  Aguarde("Aguarde, processando pedido "+NPED+" "+BARRA_STRING)

  Moveto "\\Sistemas\\Vendas\\Pedidoi"
  Moveto [Numero do Pedido]
  Locate NPED
  If Not Retval
     Then Mensagem("Item(s) do pedido "+NPED+" n„o localizado(s) !")
          Moveto "CFACP"
          Loop
  EndIf

  While [Numero do Pedido]=NPED
   CopyToArray REGISTRO_F1

   ;---- Transformando em Semi-Acabado -------------------
   If SubStr(REGISTRO_F1["Codigo do Item"],1,2) = "02"
      Then REGISTRO_F1["Codigo do Item"] = "03"+SubStr(REGISTRO_F1["Codigo do Item"],3,10)      
   EndIf  

   Itemok=False
   Moveto "CFACRIG"
   End 
   Down
   Moveto [Codigo do Item]
   If Busca_Lookup("Codigo do Item",REGISTRO_F1["Codigo do Item"],"Item "+REGISTRO_F1["Codigo do Item"]+" n„o cadastrado!//Corrigir este item no pedido "+NPED)
      Then 
           refer=REG_BUSCA_LOOKUP["Referencia"]
           cor  =REG_BUSCA_LOOKUP["Codigo da Cor_Tecido"]
           
           [Codigo do Item]=REGISTRO_F1["Codigo do Item"]
           
           VERIFICA_GRADE_GETRECORD=True
           Array_Monta_Grade("")
        
           indice=1
           For i From 1 to 12
             TM=RTrim(SubStr(Array_TM[i],4,2))
             If Len(TM)=1
                Then If SubStr(REGISTRO_F1["Codigo do Item"],10,1)=TM
                        Then coditem=SubStr(REGISTRO_F1["Codigo do Item"],1,9)+TM
                             Indice=i
                             QuitLoop
                     EndIf
                Else If SubStr(REGISTRO_F1["Codigo do Item"],09,2)=TM
                        Then coditem=SubStr(REGISTRO_F1["Codigo do Item"],1,8)+TM
                             Indice=i
                             QuitLoop
                     EndIf
             EndIf
           EndFor

           ;Moveto [Codigo do Item]
           ;If Busca_Lookup("Codigo do Item",coditem,"Item "+coditem+" n„o cadastrado!//Corrigir referencia "+refer+" no pedido "+NPED)
           ;   Then refer=REG_BUSCA_LOOKUP["Referencia"]
           ;        cor  =REG_BUSCA_LOOKUP["Codigo da Cor_Tecido"]
           ;EndIf

           qtdprog=REGISTRO_F1["Quantidade"]-REGISTRO_F1["Quantidade Faturada"]
           If qtdprog<=0
              Then Mensagem("Item "+StrVal([\Sistemas\Vendas\PedidoI->Item do Pedido])+" do pedido "+NPED+" j  faturado !")
              Else itemok=true 
           EndIf
   EndIf
   Del

   If itemok
      Then qtdped=qtdped+qtdprog

           ItemNovo=True
           Moveto "CFACRIG"
           Moveto [Referencia]
           Locate refer
           While [Referencia]=refer
             If [Codigo da Cor_Tecido]=cor
                Then ItemNovo=False
                     QuitLoop
             EndIf
             Skip
             If EOT() Then QuitLoop EndIf
             Locate Next refer
           EndWhile
           If ItemNovo
              Then Seq=Seq+1
                   End
                   Down
                   [Sequencia do Lancamento ]=Seq
                   [Codigo do Item          ]=codItem
                   [Descricao do Item       ]=Completa(Substr([Descricao do Item],1,27),30," ")
           EndIf

           Switch
             Case indice=1:   [Qtd1]  =[Qtd1] +QtdProg
             Case indice=2:   [Qtd2]  =[Qtd2] +QtdProg
             Case indice=3:   [Qtd3]  =[Qtd3] +QtdProg
             Case indice=4:   [Qtd4]  =[Qtd4] +QtdProg
             Case indice=5:   [Qtd5]  =[Qtd5] +QtdProg
             Case indice=6:   [Qtd6]  =[Qtd6] +QtdProg
             Case indice=7:   [Qtd7]  =[Qtd7] +QtdProg
             Case indice=8:   [Qtd8]  =[Qtd8] +QtdProg
             Case indice=9:   [Qtd9]  =[Qtd9] +QtdProg
             Case indice=10:  [Qtd10] =[Qtd10]+QtdProg
             Case indice=11:  [Qtd11] =[Qtd11]+QtdProg
             Case indice=12:  [Qtd12] =[Qtd12]+QtdProg
           EndSwitch

           [Quantidade Programada]=[Quantidade Programada]+QtdProg
           UnLockRecord

   EndIf

   Moveto "\\Sistemas\\Vendas\\PedidoI"
   Skip
   If EOT() Then QuitLoop EndIf
  EndWhile

  Moveto "CFACP"
EndScan                     

Moveto "CFACC"
[Quantidade_Programada]=QtdPed
UnLockRecord

Moveto "CFACRIG"
LimpAguarde()
EndProc

;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc IMPRIME()
Private OPCAOC,OPCAON,ntab,ant_field    

ntab=table()
ant_field = field()

Moveto "CFACRIG"
If RecordStatus("New")
   Then MENSAGEM("Sem Item p/ imprimir !")
        Moveto ntab
        Return False
EndIf
Moveto ntab


Echo Normal
Echo Off
ShowPopup " Relatorio " CENTERED
   "~I~mprimir " : " Imprime Programca‡„o Corte"   :"Program01",
   "~C~ancelar"  : " Cancelar                  "   :"CANCELAR"
EndMenu
To Opcaoc

Echo off

If Opcaoc="Esc" Or Opcaoc="CANCELAR"
   Then Return False
EndIf

Gera_Cfacri()
Moveto "CFACC"

NCORT=[CFACC->Numero_Corte]
UnLockRecord
Do_It!

Dispositivo()
If OK=""
   Then CoEditKey
        Return False
EndIf

gerou_cfacri=True
LoopdoDispositivo=False

Play PARAM_RELATORIO

Carrega_Tabelas(OPCAO_FORM,TabelaPrincipal)
Moveto [Numero_Corte]
Locate NCORT
PickForm "2"

Moveto ntab
Moveto Field ant_field

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"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_REPRESEN"       : Campo="TG_EMPRESA"
            Case Campo="TG_CIDADE"         : Campo="TG_REPRESEN"
            Case Campo="TG_ESTADO"         : Campo="TG_CIDADE"
            Case Campo="TG_NCONTROLE"      : Campo="TG_ESTADO"
            Case Campo="TG_NCARREG"        : Campo="TG_NCONTROLE"
            Case Campo="TG_MARCA"          : Campo="TG_NCARREG"
            Case Campo="TG_SITUACAOPEDIDO" : Campo="TG_MARCA"
            Case Campo="TG_OPERACAOPEDIDO" : Campo="TG_SITUACAOPEDIDO"
            Case Campo="TG_OPDTPEEI"       : Campo="TG_OPERACAOPEDIDO"
            Case Campo="TG_DTINI"          : Campo="TG_OPDTPEEI"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"        : Campo="TG_REPRESEN"
                    Case Campo="TG_REPRESEN"       : Campo="TG_CIDADE"
                    Case Campo="TG_CIDADE"         : Campo="TG_ESTADO"
                    Case Campo="TG_ESTADO"         : Campo="TG_NCONTROLE"
                    Case Campo="TG_NCONTROLE"      : Campo="TG_NCARREG"
                    Case Campo="TG_NCARREG"        : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"          : Campo="TG_SITUACAOPEDIDO"
                    Case Campo="TG_SITUACAOPEDIDO" : Campo="TG_OPERACAOPEDIDO"
                    Case Campo="TG_OPERACAOPEDIDO" : Campo="TG_OPDTPEEI"
                    Case Campo="TG_OPDTPEEI"       : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"          : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"          : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="": MSG_CAMPO=""
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Filtrar Registros                                                    *
;*******************************************************************************
Proc Selecao()
LimpAguarde()
Do_It!
ClearAll

Echo Normal
Echo Off

While True

  ShowDialog "Sele‡„o de Pedidos" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 17 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 "Representante"  For "TG_REPRESEN"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

    Label  @ 04,00 "Cidade"  For "TG_CIDADE"
    Accept @ 05,01 Width 27 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE
                                   
    Label  @ 04,27 "Estado"  For "TG_ESTADO"
    Accept @ 05,28 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO

    Label  @ 06,00 "Controle Dia" For "TG_NCONTROLE"
    Accept @ 07,01 Width 9  "A6"  Picture "#*#" Tag "TG_NCONTROLE"    To VSDGNCONTROLE
    Accept @ 07,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMNCONTROLE" To VSDGNOMNCONTROLE

    Label  @ 08,00 "N§ Carregamento" For "TG_NCARREG"
    Accept @ 09,01 Width 9  "A6"  Picture "[&,#][#*#]" Tag "TG_NCARREG"    To VSDGNCARREG
    Accept @ 09,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG

    Label  @ 10,00 "Marca"  For "TG_MARCA"
    Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 11,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 00,35 "Situacao do Pedido"  For "TG_SITUACAOPEDIDO"
    Accept @ 01,36 Width 33 "A30"  Picture "ABERTO,SUSPENSO,CANCELADO,FATURADO,TODAS,!*!" Tag "TG_SITUACAOPEDIDO"  To VSDGSITUACAOPEDIDO

    Label  @ 02,35 "Opera‡Æo do Pedido"  For "TG_OPERACAOPEDIDO"
    Accept @ 03,36 Width 33 "A30"  Picture "VENDAS,BONIFICACAO/BRINDE,REMESSAS,TODAS,!*!" Tag "TG_OPERACAOPEDIDO"  To VSDGOPERACAOPEDIDO

    Label  @ 04,35 "Op‡äes de Datas" For "TG_OPDTPEEI"
    Accept @ 05,39 Width 04 "A1"  Picture "1,2,3,4,5"  Tag "TG_OPDTPEEI"  To VSDGOPDTPEEI
    Accept @ 05,44 Width 25 "A20" Picture "!*!"      Tag "TG_NOMOPDTPEEI" To VSDGNOMOPDTPEEI

    Label  @ 06,35 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 07,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 07,51 "at‚" For "TG_DTFIM"
    Accept @ 07,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

  EndDialog

  SelecaoOK=False
  If Not RetVal
     Then QuitLoop
  endif

  switch
    case VSDGSITUACAOPEDIDO="ABERTO"                     : SelecaoOK=True
    case VSDGSITUACAOPEDIDO="SUSPENSO"                   : SelecaoOK=True
    case VSDGSITUACAOPEDIDO="JUNTAR ABERTO+SUSPENSO"     : SelecaoOK=True
  EndSwitch
  if not SelecaoOK
     then Mensagem("Op‡Æo de situa‡Æo do pedido inv lida !")
          loop
  endif        
  SelecaoOK=False
          
  LimpaRodape(0)
  Aguarde("Aguarde, Selecionando registros")
  ClearAll

  switch
    case Not IsBlank(VSDGNCONTROLE):
      {Ask} {\\Sistemas\\Vendas\\PedidoC} 
      Moveto [Numero do Pedido       ] check
      Moveto [Numero_Controle_Dia    ] TypeIn "~VSDGNCONTROLE.."
      
    otherwise:

      switch
        case not isblank(VSDGMARCA):
          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item         ] Example "item"
          Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
          {Ask} {\\Sistemas\\Vendas\\PedidoC} 
          Moveto [Numero do Pedido      ] check typein "_nped"

        otherwise:
         {Ask} {\\Sistemas\\Vendas\\PedidoC}
         Moveto [Numero do Pedido       ] check
      endswitch 

      Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
      If Upper(VSDGCIDADE)<>"TODAS"
         Then Moveto [Cidade         ] TypeIn "~VSDGCIDADE"
      EndIf
      If IsAssigned(VSDGESTADO)
         Then Moveto [UF            ] TypeIn "~VSDGESTADO.."
      EndIf
      
      if VSDGOPDTPEEI="1" Then Moveto [Data de Entrega ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" endif
      If VSDGOPDTPEEI="2" Then Moveto [Data de Emissao ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" endif
      if VSDGOPDTPEEI="3" Then Moveto [Data_Inclusao   ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" endif
      
      Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
      Moveto [Numero_Carregamento    ] TypeIn "~VSDGNCARREG.."
      Moveto [Situacao do Pedido     ]    
      switch
        case VSDGSITUACAOPEDIDO="JUNTAR ABERTO+SUSPENSO"     : TypeIn "ABERTO or SUSPENSO"
        case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO+SUSPENSO" : TypeIn "not CANCELADO, not SUSPENSO"
        case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO"          : TypeIn "not CANCELADO"
        case VSDGSITUACAOPEDIDO<>"TODAS"                     : TypeIn "~VSDGSITUACAOPEDIDO.."
      EndSwitch
      
      switch
        case VSDGOPERACAOPEDIDO="VENDAS"             : Moveto [Descricao da Destinacao] TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
        case VSDGOPERACAOPEDIDO="BONIFICACAO/BRINDE" : Moveto [Descricao da Destinacao] TypeIn "..BONIF.. Or ..BRINDE.."
        case VSDGOPERACAOPEDIDO="REMESSAS"           : Moveto [Descricao da Destinacao] TypeIn "..REMESSA.."
        case VSDGOPERACAOPEDIDO="VENDAS+REMESSAS"    : Moveto [Descricao da Destinacao] TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.. or ..REMESSA.."
      endswitch  

      switch
        case not isblank(VSDGMARCA):
          {Ask} {\\Sistemas\\Vendas\\PedidoI}
          moveto [Numero do Pedido       ] typein "_nped"
          Moveto [Codigo do Item         ] Example "item"
      endswitch 
  
  endswitch
  Do_It!
  ClearAll

  If IsEmpty("Answer")
     Then Mensagem("N„o exitem registros conforme sele‡„o !")
          Loop
  endif

  View "CFACP"
  Coedit "Answer"
  Scan
    Moveto "CFACP"
    Moveto [Numero_Corte]
    Locate NCORT,[Answer->Numero do Pedido]
    If Not RetVal
       Then End
            Down
            [Numero_Corte     ]=NCORT
            [LooKup_PedidoC   ]=[Answer->Numero do Pedido ]
            [Numero do Pedido ]=[Answer->Numero do Pedido ]
            [LooKup_PedidoC   ]=""

            SelecaoOK=True
    EndIf

    Moveto "Answer"
  EndScan
  Do_It!
  ClearAll

  QuitLoop

EndWhile
ClearAll
If IsTable("Answer")
   Then Delete "Answer"
EndIf

View NoWindow "CFACRIG"
View NoWindow "CFACP"
CoEdit "CFACC"
PickForm "2"
Moveto [Numero_Corte]
Locate NCORT
If Not RetVal
   Then FINALIZADO=True
        Tecla_Funcao=""
   Else Tecla_Funcao=-25

        Moveto "CFACP"
        If SelecaoOk
           Then Scan For IsBlank([Quantidade Programada])
                  NPED=[Numero do Pedido]
                  Atualiza_Itens("Entrada")

                  Moveto "CFACP"
                EndScan
        EndIf
EndIf

EndProc

;*******************************************************************************
;* Rotina p/ Montar Opcoes p/ Grade                                            *
;*******************************************************************************
Proc Monta_Opcoes(OPCAODIVERSAS, ITEMDESEJADO)
Private OPCAODIVERSAS, ITEMDESEJADO, wcg, icg, icgt, tnovo, nomecampo,opconta
nomecampo=Field()
If IsAssigned(Opcoes)
   Then Release Vars Opcoes
EndIf
DynArray Opcoes[]
Switch
  Case OPCAODIVERSAS="Codigo da Cor_Tecido":
       Moveto [Lookup_Itens_Cor]
EndSwitch
Ativa_Lookup()
Moveto [Codigo do item]
Locate VSD_I_Codigo_Item 

wcg=0
While [Codigo do Item]=VSD_I_Codigo_Item   
  Switch
    Case OPCAODIVERSAS="Codigo da Cor_Tecido" And 
         (SYS_CODIGO_CLIENTE="0222" or
          SYS_CODIGO_CLIENTE="0232" ):
         wcg=wcg+1
         Opcoes[wcg]=AlinhM(StrVal([Sequencia da Cor_Tecido]),4)+"  "+[Codigo da Cor_Tecido]+"-"+Completa([Descricao da Cor_Tecido],30," ")
         
    Case OPCAODIVERSAS="Codigo da Cor_Tecido":
         wcg=wcg+1
         Opcoes[wcg]=Completa([Descricao da Cor_Tecido],30," ")+" "+[Codigo da Cor_Tecido]+" - "+Format("W2,AR",[Sequencia da Cor_Tecido])
  EndSwitch
  Skip
  IF EOT() Then QuitLoop EndIf
EndWhile
KeyPress "ESC"
Moveto Field nomecampo
EndProc    ; (Monta_Opcoes)

;*******************************************************************************
;* Rotina p/ Checagem Opcoes p/ Grade                                          *
;*******************************************************************************
Proc Checa_Opcoes(OPCAODIVERSAS, VALORDESEJADO)
Private OPCAODIVERSAS, VALORDESEJADO, icg, resultado

If DynArraySize(Opcoes)=0
   Then Return False
EndIf

resultado=false
For icg From 1 To DynArraySize(Opcoes)
  Switch
    Case OPCAODIVERSAS="Codigo da Cor_Tecido" And 
         ( SYS_CODIGO_CLIENTE="0222" or
           SYS_CODIGO_CLIENTE="0232" ):
         If RTrim(SubStr(Opcoes[icg],07,4))=VALORDESEJADO
            Then resultado=true
         EndIf
         
    Case OPCAODIVERSAS="Codigo da Cor_Tecido":
         If RTrim(SubStr(Opcoes[icg],32,4))=VALORDESEJADO
            Then resultado=true
         EndIf
  EndSwitch
  If resultado
     then MontaRegistro_F1(OPCAODIVERSAS,icg)
          QuitLoop
  EndIf
EndFor
return resultado
EndProc         ;  (Checa_Opcoes)

;*******************************************************************************
;* Rotina Montar Registro_F1 p/ Grade                                          *
;*******************************************************************************
Proc MontaRegistro_F1(OPCAODIVERSAS, indice)
private OPCAODIVERSAS, indice

If IsAssigned(Registro_F1)
   Then Release Vars Registro_F1
EndIf
DynArray Registro_F1[]
Switch
  Case OPCAODIVERSAS="Codigo da Cor_Tecido" And 
       ( SYS_CODIGO_CLIENTE="0222" Or
         SYS_CODIGO_CLIENTE="0232" ):
       Registro_F1["Codigo da Cor_Tecido"]         =RTrim(SubStr(Opcoes[indice],07,4))
       Registro_F1["Descricao da Cor_Tecido"]      =RTrim(SubStr(Opcoes[indice],12,30))
       If IsAssigned(VSDGCORTECIDO)
          Then VSD_I_Codigo_Cor_Tecido   =Registro_F1["Codigo da Cor_Tecido"]
               VSD_I_Descricao_Cor_Tecido=Registro_F1["Descricao da Cor_Tecido"]
       EndIf
       
  Case OPCAODIVERSAS="Codigo da Cor_Tecido"  :
       Registro_F1["Codigo da Cor_Tecido"]         =RTrim(SubStr(Opcoes[indice],32,4))
       Registro_F1["Descricao da Cor_Tecido"]      =RTrim(SubStr(Opcoes[indice],01,30))
       If IsAssigned(VSDGCORTECIDO)
          Then VSD_I_Codigo_Cor_Tecido   =Registro_F1["Codigo da Cor_Tecido"]
               VSD_I_Descricao_Cor_Tecido=Registro_F1["Descricao da Cor_Tecido"]
       EndIf
EndSwitch
EndProc    ;  (Monta_RegistroF1)

;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc Seleciona_Opcoes(OPCAODIVERSAS,SEMRETORNO)
Private OPCAODIVERSAS, LJ, AJ, nc, SEMRETORNO

If DynArraySize(Opcoes)=0
   Then Mensagem("Tabela sem Registros !")
        Return False
EndIf

AJ=DynArraySize(Opcoes)
If AJ>10
   Then AJ=10
   Else If AJ<3 Then AJ=3 EndIf
EndIf

Switch
  Case OPCAODIVERSAS="Codigo da Cor_Tecido"   : LJ=43 nc=1
EndSwitch

ArrayElement=0
Showdialog "Consulta "+OPCAODIVERSAS Proc "Opcoes_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ENTER","ESC"
     @ 13,09 height AJ+2 width LJ+5

   PickDynArray @0,01 Height AJ width LJ
   Columns nc
   Opcoes
   Tag "TG_OPCAO"
   To ArrayElement
EndDialog
Mouse Show
If RetVal
   Then If SEMRETORNO<>"SR"
           Then Switch
                  Case OPCAODIVERSAS="Codigo da Cor_Tecido":
                  [Codigo da Cor_Tecido   ]=Registro_F1["Codigo da Cor_Tecido"]
                  [Descricao da Cor_Tecido]=Registro_F1["Descricao da Cor_Tecido"]
                EndSwitch
                Return True
        EndIf
   Else Return False
EndIf
EndProc   ; (Seleciona_Opcoes)

;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()
Private Result

If IsEmpty("P_Fac")
   Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o !")
        Result=False
   Else 
        UnLockRecord
        KeyPress "F7"
        While True
          If Not IsLockRecord()
             Then QuitLoop
          EndIf
        EndWhile
        
        Moveto "P_Fac"
        Moveto [Codigo_Empresa]
        Locate [Cfacc->Codigo da Empresa]
        If Not RetVal
           Then Mensagem("Parametros n„o Cadastrado para esta Empresa !")
                Result=False
           Else     
                PARAM_EMPRESA         = [Codigo_Empresa           ]
                PARAM_COR_TECIDO      = [Cor_Tecido               ]
                PARAM_RELATORIO       = [Script_Impressao_ProgCort]

                Result=True
        EndIf
EndIf

Moveto "Cfacc"
KeyPress "F7"

Return Result
EndProc

;*******************************************************************************
;* Selecionar Registros                                                       *
;*******************************************************************************
Proc SelecionaFiltroCfacc()
ClearAll

If Not IsAssigned(SDFILTRO_ATIVO) Then SDFILTRO_ATIVO = False EndIf
        
If Not SDFILTRO_ATIVO
   Then {Ask} {Cfacc} Check
        If MODOFILTRAR_EMPRESA<>""
           Then Moveto [Codigo da Empresa] TypeIn "~FILTRAREMPRESA.."
        EndIf
        Do_It!
        ClearAll            
   Else If VSDGREFERENCIA<>"" Or VSDGFAMI<>"" Or VSDGMARCA<>"" Or VSDGGRP<>""
           Then {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item        ] TypeIn "_citem"
                Moveto [Referencia            ] TypeIn "~VSDGREFERENCIA.."
                Moveto [Codigo da Familia     ] TypeIn "~VSDGFAMI.."
                Moveto [Codigo da Marca       ] TypeIn "~VSDGMARCA.."
                Moveto [Codigo do Grupo       ] TypeIn "~VSDGGRP.."
        EndIf                                   
        {Ask} {Cfacc} Check                      
        If MODOFILTRAR_EMPRESA<>""
           Then Moveto [Codigo da Empresa] TypeIn "~FILTRAREMPRESA.." 
           Else Moveto [Codigo da Empresa] TypeIn  "~VSDGEMPRESA.."
        EndIf
        Moveto [Data_Programacao       ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        If VSDGSITUACAO<>"TODOS" And VSDGSITUACAO<>""
           Then Moveto [Situacao_Programacao] TypeIn "~VSDGSITUACAO"
        EndIf
        If VSDGREFERENCIA<>"" Or 
           VSDGFAMI<>""       Or
           VSDGMARCA<>""      Or  
           VSDGGRP<>""        Or 
           VSDGITEM<>""
           Then Moveto [Numero_Corte         ] TypeIn "_num"
                {Ask} {CfacRI}
                Moveto [Numero_Corte         ] TypeIn "_num"
                If VSDGREFERENCIA<>"" Or VSDGFAMI<>"" Or VSDGMARCA<>"" Or VSDGGRP<>""
                   Then Moveto [Codigo do Item] TypeIn "_citem, ~VSDGITEM.."
                   Else Moveto [Codigo do Item] TypeIn "~VSDGITEM.."          
                EndIf
        EndIf
        Do_It!
        ClearAll
EndIf  

Release Vars REG_USUARIO
CriaTabelaControle()                     

Return True

EndPRoc ;SelecionaFiltroCfacc()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_DialogCfacg(Disparo,Campo,Evento,Elemento)
Temp = True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"    : Campo="NO"
            Case Campo="TG_MARCA"      : Campo="TG_EMPRESA"
            Case Campo="TG_FAMI"       : Campo="TG_MARCA"
            Case Campo="TG_GRP"        : Campo="TG_FAMI"
            Case Campo="TG_ITEM"       : Campo="TG_GRP"
            Case Campo="TG_REFERENCIA" : Campo="TG_ITEM"
            Case Campo="TG_DTINI"      : Campo="TG_REFERENCIA"
            Case Campo="TG_DTFIM"      : Campo="TG_DTINI"
            Case Campo="TG_SITUACAO"   : Campo="TG_DTFIM"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"    : Campo="TG_MARCA"
                         If Not IsBlank(VSDGEMPRESA) And MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>VSDGEMPRESA
                            Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                 Campo="TG_EMPRESA"
                         EndIf
                    Case Campo="TG_MARCA"      : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"       : Campo="TG_GRP"
                    Case Campo="TG_GRP"        : Campo="TG_ITEM"
                    Case Campo="TG_ITEM"       : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA" : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="TG_SITUACAO"
                    Case Campo="TG_SITUACAO"   : Campo="YES"
                         VSDGSITUACAO=ControlValue("TG_SITUACAO")
                         If IsBlank(VSDGSITUACAO)
                            Then VSDGSITUACAO="TODOS"
                         EndIf
                    
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch 
  Case Campo="TG_SITUACAO":
     MSG_CAMPO="P=PROGRAMADA  E=EM PRODUCAO  S=SUSPENSA  F=FINALIZADA  Branco=Todos"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_DialogCfacg

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc FiltrarCfacc()
Private Result
LimpAguarde()                 
Do_It!
ClearAll                                                                  

Echo Normal
Echo Off

If MODOFILTRAR_EMPRESA<>"" Then VSDGEMPRESA=MODOFILTRAR_EMPRESA EndIf

CONSULTAF1     =  False
SDFILTRO_ATIVO = True
While True
  ShowDialog "Crit‚rio para filtro ?" Proc "SD_DialogCfacg"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 22 Width 80

    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 "Marca"  For "TG_MARCA"
    Accept @ 03,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 03,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
    
    Label  @ 04,00 "Familia"  For "TG_FAMI"
    Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"    To VSDGFAMI
    Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 06,00 "Grupo"  For "TG_GRP"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP"    To VSDGGRP
    Accept @ 07,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 08,00 "Item"  For "TG_ITEM"                                                                 
    Accept @ 09,01 Width 13 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 10,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM

    Label  @ 08,13 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 09,13 Width 21 "A20" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA

    Label  @ 11,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 12,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 12,16 "at‚" For "TG_DTFIM"
    Accept @ 12,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 13,00 "Situa‡„o"  For "TG_SITUACAO"
    Accept @ 14,01 Width 33 "A11"  Picture "PROGRAMADA,EM PRODUCAO,SUSPENSA,FINALIZADA,TODOS" Tag "TG_SITUACAO"  To VSDGSITUACAO        

    Pushbutton @ 18,24 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,38 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
    
    @ 19,52 ?? "[NÆo filtra mˆs fechado!]"

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf
  
  If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>VSDGEMPRESA
     Then Mensagem("O usu rio deve informar a empresa "+MODOFILTRAR_EMPRESA+"!")
          Loop
  EnDIf
  
  AGUARDE("Filtrando dados")
  If Not SelecionaFiltroCfacc() Then Loop EndIf    
  Result=True
                             
  QuitLoop
EndWhile

SDFILTRO_ATIVO=False

Return Result

EndProc ;FiltrarCfacc

;*******************************************************************************
;* Rotina Limpa Variaveis do Filtro                                            *
;*******************************************************************************
Proc LimpaFiltroCfacc()                                                                        
                                                                                       
VSDGEMPRESA      = ""
VSDGNOMEMP       = ""
VSDGMARCA        = ""
VSDGNOMMARCA     = ""
VSDGFAMI         = ""
VSDGNOMFAMI      = ""
VSDGGRP          = ""
VSDGNOMGRP       = ""
VSDGITEM         = ""
VSDGNOMITEM      = ""
VSDGREFERENCIA   = ""   
VSDGREFERENCIA   = ""
VSDGDTINI        = BlankDate()
VSDGDTFIM        = BlankDate()
VSDGSITUACAO     = ""
REGRAFILTRO      = ""

EndProc ;LimpaFiltroCfacc()     

;*******************************************************************************
;* Rotina para ajustar dados na cabe‡a                                         *
;*******************************************************************************
Proc AjustaDadosCabeca()
Private TAB_ANT
 
TAB_ANT  = Table()

Moveto "CFACC"
If IsAssigned(TOTQTD) Then [Quantidade_Programada]=TOTQTD EndIf
UnLockRecord

Moveto TAB_ANT 

EndProc ;AjustaDadosCabeca()      
 
;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
ITEM=[Sequencia do Lancamento]
INICIA_REGISTRO()
DIGITAI()
EndProc

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

If Not IsAssigned(STATUSFILTRO) then STATUSFILTRO="" Endif
FINALIZADO  =False
While Not FINALIZADO

  Tecla_Funcao=BlankNum()
  DIGITA()
  SetaCorRegistro("Padrao")

  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=1
     Then Controle_Dia()
  EndIf   

  While Not IsBlank(Tecla_Funcao)

    Switch
      Case Tecla_Funcao="F6":
           Imprime()
           Switch
             Case Table()="Cfacc"  : Tecla_Funcao=""
             Case Table()="Cfacp"  : Tecla_Funcao=-25
             Case Table()="Cfacrig": Tecla_Funcao=-19
           EndSwitch

      Case Tecla_Funcao="F5":
           Switch
             Case Table()="Cfacc" Or
                  Table()="Cfacp"   :
                                      Tecla_Funcao=-25
                                      Selecao()
             Case Table()="Cfacrig" : Tecla_Funcao=""
                                      Mensagem("Fun‡Æo ativa em Rela‡„o de Pedidos")
           EndSwitch

      Case Tecla_Funcao=-24:
           Tabela=Table()
           Moveto "CFACC"
           Edita_Memo("Observacoes",08,07,12,65,"Observa‡”es")
           Moveto Tabela
           Switch
             Case Table()="Cfacc"   : Tecla_Funcao=""
             Case Table()="Cfacp"   : Tecla_Funcao=-25
             Case Table()="Cfacrig" : Tecla_Funcao=-19
           EndSwitch

      Case Tecla_Funcao=-25:
           Pedidos()
           SetaCorRegistro("Padrao")

      Case Tecla_Funcao=-18:
           Switch
             Case Table()="Cfacc"   : Tecla_Funcao=""
                                      Mensagem("Fun‡Æo ativa em Rela‡„o de Itens")
             Case Table()="Cfacp"   : Tecla_Funcao=-25
                                      Mensagem("Fun‡Æo ativa em Rela‡„o de Itens")
             Case Table()="Cfacrig" : Tecla_Funcao=-19
                                      Editar("")
           EndSwitch

      Case Tecla_Funcao=-30:
           Switch
             Case Table()="Cfacc"   : Tecla_Funcao=""
                                      Mensagem("Fun‡Æo ativa em Rela‡„o de Itens")
             Case Table()="Cfacp"   : Tecla_Funcao=-25
                                      Mensagem("Fun‡Æo ativa em Rela‡„o de Itens")
             Case Table()="Cfacrig" : Tecla_Funcao=-19
                                      Carrega_ItensPedidos()
           EndSwitch

      Case Tecla_Funcao=-19:
           While True
             CHAVEI()
             If CHAVEI=9 Then QuitLoop EndIf
             Controla_EdicaoI()
           EndWhile
           SetaCorRegistro("Padrao")
           
      OtherWise            : QuitLoop
    EndSwitch

  EndWhile

  If Finalizado
     Then If Not gerou_cfacri
             Then Gera_Cfacri()
          Endif
  EndIf

  Moveto "CFACC"
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf

AtualizaRegistroControle("Numero_Corte",NCORT,MODOPAGINA)         
If OPCAO_FORM=FORM_RELACAO Then PickForm FORM_RELACAO EndIf

EndProc

;*******************************************************************************
;* Rotina para carregar tabela                                                 *
;*******************************************************************************
Proc Carrega_Tabelas(PARAM,TABELA)
Private PARAM,TABELA
ClearAll
                
View NoWindow "P_FAC"
View NoWindow "CFACP"
View NoWindow "CFACRI"
View NoWindow "CFACRIG"
                                                                 
If Not MODOFILTRAR
   Then CoEdit "CFACC"
   Else If Not CoEditaTabelaControle() 
           Then Return False
        EndIf
EndIf

PickForm "2"
Moveto "Cfacp"  SetaCorRegistro("Padrao")      
Moveto "Cfacri"  SetaCorRegistro("Padrao")
;Moveto "Cfacrig" SetaCorRegistro("Padrao")

Moveto TabelaControle
PickForm PARAM       

If MODOFILTRAR And TABELA<>TabelaControle  
   Then FormKey
        Moveto TABELA
        FormKey
        PickForm PARAM
EndIf

Return True

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

MSG=""
COR_MENSAGEM="PRETO"

{Ask}{CFACC}
Moveto [Numero_Corte        ] Typein "Calc Count as Qtde"
Moveto [Data_Programacao    ] Typein "<(today-547)"
Moveto [Situacao_Programacao] TypeIn "FINALIZADA"
do_it!
if not IsEmpty("Answer")
   then if [Qtde]>0 
           Then MSG=MSG+"  Existe(m) "+strval([Qtde])+" Programa‡Æo(äes) lan‡ada(s) !   // //"
                MSG=MSG+"Para melhor seguran‡a e desempenho do Sistema,//"
                MSG=MSG+"recomendamos que fa‡a o fechamento mensal  das//"
                MSG=MSG+"mais antigas. Recomendamos manter apenas 1 ano//"
                MSG=MSG+"em aberto!                                    // //"
                MSG=MSG+"Verificar com o supervisor fechamento mensal !"
         EndIf       
endif   
ClearAll
if MSG<>"" then Mensagem(MSG) endif
Release Vars COR_MENSAGEM,MSG 

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""   EndIf
If Not IsAssigned(SYS_NCONEXAO)        Then SYS_NCONEXAO      =""    EndIf
If Not IsAssigned(SYS_ESTACAO)         Then SYS_ESTACAO       =""    EndIf
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_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""      EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""      EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf

VSDGEMPRESA  =""
VSDGREPRESEN =""
VSDGCIDADE   =""
VSDGESTADO   ="" 
VSDGNCONTROLE=""
VSDGNCARREG  =""
VSDGDTINI    =BlankDate()
VSDGDTFIM    =BlankDate()

TG_OPDTPEEI       =""
VSDGMARCA         =""
VSDGSITUACAOPEDIDO="ABERTO"
VSDGOPERACAOPEDIDO=""

OPCAO_FORM   = "F"    
FORM_RELACAO = OPCAO_FORM

TabelaTemp           = ""
TabelaPrincipal      = "Cfacc"
TabelaControle       = TabelaPrincipal
MODOFILTRAR            = True
MODOFILTRARATIVO       = True
MODOFILTRAR_EMPRESA    = ""        
MODOFILTRATODOS        = False      
If IsAssigned(MODOFILTRAR) And MODOFILTRAR 
   Then FILTRAREMPRESA = ""
        GetRecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO To REG_USUARIO
        If RetVal
            Then If Not isblank(REG_USUARIO["Cod_Empresa"])
                    Then FILTRAREMPRESA = REG_USUARIO["Cod_Empresa"]
                 EndIf 
        EndIf
        If FILTRAREMPRESA<>""
           Then MODOFILTRAR_EMPRESA = FILTRAREMPRESA
                SelecionaFiltroCfacc()      
        EndIf
EndIf

If MODOFILTRAR_EMPRESA=""
   Then TabelaControle    = TabelaPrincipal
        MODOFILTRAR       = False
        MODOFILTRARATIVO  = True
        MODOFILTRARINCLUI = False
        MODOFILTRATODOS   = True
EndIf

Array Array_TM[12]
grdant="***"

KeyEnable -24 ; usando tecla alt+o que pode ir ao prompt do DOS

If Carrega_Tabelas(OPCAO_FORM,TabelaControle)
   Then While True
          CHAVE()
          ;--- FILTRO ----------------------------------------------------------
          If CHAVEC=99 
             Then If FiltrarCfacc()
                     Then MODOFILTRAR=True
                  EndIf
                  Carrega_Tabelas(OPCAO_FORM,TabelaControle)
                  Loop
          EndIf                 
          If CHAVEC=98 
             Then AGUARDE("Visualizando todos registros")
                  MODOFILTRAR=False
                  Do_It!
                  
                  TabelaControle=TabelaPrincipal
                  Carrega_Tabelas(OPCAO_FORM,TabelaControle)
                  Loop
          EndIf   
          ;---------------------------------------------------------------------               
          If CHAVEC=9 Then QuitLoop EndIf
          If CHAVEC=5
             Then If OPCAO_FORM="F"
                     Then PickForm "F"
                     Else PickForm "2"
                  EndIf
                  Loop
          EndIf
          Controla_EdicaoC()
        EndWhile
EndIF
Do_It!
ClearAll

KeyDisable -24 ; usando tecla alt+o que pode ir ao prompt do DOS

Release Vars All
Release Procs All