;** Expedic2 *******************************************************************
;*  Digitacao de Ordem de Expedicao                                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 08/07/2015 por Kamila Gomes            
;Ultima Alteracao: 24/07/2015 por Bruno Carvalho                         
;Motivo Alteracao: Adaptado modo p/ imprimir etiquetas ZEBRA ap¢s a inser‡Æo de cada item    
;Ultima Alteracao: 21/10/2015 por Kamila Gomes                         
;Motivo Alteracao: Adicionada op‡Æo de alterar localiza‡Æo por referencia   
;Ultima Alteracao: 22/10/2015 por Andrey Fillipe                         
;Motivo Alteracao: Adicionado etiqueta ET_Z361 para SYS_CODIGO_CLIENTE="0361"
;Ultima Alteracao: 03/03/2016 por Bruno Carvalho                         
;Motivo Alteracao: Ajsutes de otimiza‡Æo na rotina de impressÆo das etiquetas #0359# e #0361# 
;Ultima Alteracao: 14/03/2016 por Bruno Carvalho                         
;Motivo Alteracao: Ajustes p/ Etiqueta #0361# 
;Ultima Alteracao: 28/03/2016 por Bruno Carvalho                         
;Motivo Alteracao: Adicionado modelo de etiqueta p/ #0343# e alterado modelo de etiqueta p/ #0361#
;Ultima Alteracao: 08/04/2016 por Bruno Carvalho                         
;Motivo Alteracao: Ajustes no modelo #0361# onde foi alterado a posi‡Æo da composi‡Æo na etiqueta com a posi‡Æo da cor  
;Ultima Alteracao: 10/05/2016 por Bruno Carvalho                         
;Motivo Alteracao: Ajustes p/ utilizar apenas um £nico FORM ao procurar o item ou referencia e adapta‡Æo de processos no P_EXPED 
;Ultima Alteracao: 13/05/2016 por Bruno Carvalho                         
;Motivo Alteracao: Criado modelo ET_Z359D
;Ultima Alteracao: 16/05/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Codigo da Empresa" no FORM
;Ultima Alteracao: 17/05/2016 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes LIBERADO/FATURADO com checa_supervisor()                    
;Ultima Alteracao: 20/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Iten_Com" -> [Codigo Concentrador]
;Ultima Alteracao: 09/06/2016 por Kamila Gomes
;Motivo Alteracao: Criado modelo ET_Z357 e Empresa 0357 IMPERIO TEXTIL
;Ultima Alteracao: 17/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado novo processo para gera‡Æo/verifica‡Æo do [Numero da OE]
;Ultima Alteracao: 23/06/2016 por Bruno Carvalho
;Motivo Alteracao: Criado modelo ET_Z357C #0357#
;Ultima Alteracao: 02/07/2016 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes SO FATURADO com checa_supervisor() 0343 Thardelly Tecidos                    
;Ultima Alteracao: 02/08/2016 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes no modelo "ET_Z361"
;Ultima Alteracao: 08/08/2016 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado Variaveis_Impressao() -> Armazena em vari veis comandos da ultima impressÆo da etiqueta
;Ultima Alteracao: 09/08/2016 por Bruno Carvalho                           
;Motivo Alteracao: Ajustado processo de impressÆo para armazenar variaveis utilizadas e assim configurar a impressora uma £nica vez
;Ultima Alteracao: 10/08/2016 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes no cliente p/ regualiraza‡Æo da rotina de impressÆo da etiqueta
;Ultima Alteracao: 09/09/2016 por Bruno Carvalho                           
;Motivo Alteracao: Alterado o modelo de impressÆo para a empresa #0359# de acordo com o modelo da empresa #0361# *nÆo ser  mais a etq adesiva
;Ultima Alteracao: 30/01/2017 por Kamila Gomes                          
;Motivo Alteracao: Inclu¡do Sys_codigo_cliente 0345 (Vit¢ria Textil)
;Ultima Alteracao: 02/02/2017 por Bruno Carvalho                          
;Motivo Alteracao: Ajustado etiqueta para o cliente #0345# - Adicionado Simbologia -> Ajustado nos parƒmetros da expedi‡Æo *ET_Z345E"
;Ultima Alteracao: 03/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Adicionado ajustes no DIGITAC para verificar se lan‡amento pertence a qual tipo de expedi‡Æo 
;Ultima Alteracao: 03/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Adicionado [Numero do Pedido] e ajustes para a inser‡Æo de itens referentes ao pedido informado -> #0345#,#0390#,#0388# 
;Ultima Alteracao: 04/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Alterado TECLA de Libera‡Æo da OE -> De "F10" para "F11" conforme o script EXPEDIC e add tamb‚m RetVal=-133 para esta tecla
;Ultima Alteracao: 09/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Adicionado "Not IsAssigned(SYS_NOME_USUARIO)"
;Ultima Alteracao: 14/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Ajuste no processo para realizar download das simbologias para a impressora -> Download_Simbologia() 
;Ultima Alteracao: 14/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Adicionado TIPO_IMPRESSORA para especificar se ZEBRA ou BEMATECH
;Ultima Alteracao: 22/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Ajustes ao verificar a existˆncia do item no pedido 
;Ultima Alteracao: 23/02/2017 por Bruno Carvalho  
;Motivo Alteracao: Ajustes #0359# com permissÆo p/ nÆo obrigar a inserir cor do tecido
;Ultima Alteracao: 07/04/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processos de #0388# para #0396#    
;Ultima Alteracao: 03/05/2017 por Bruno Carvalho  
;Motivo Alteracao: Adicionado op‡Æo "F4" para informar volumes
;Ultima Alteracao: 03/05/2017 por Bruno Carvalho  
;Motivo Alteracao: Adicionado PARAM_PEDIDO_POREXPED p/ permitir apenas um pedido por expedi‡Æo
;Ultima Alteracao: 15/05/2017 por Bruno Carvalho  
;Motivo Alteracao: Adicionado Verifica_Data_Arquivo() -> Ser  carregado a simbologia diariamente quando impressora for BEMATECH 
;Ultima Alteracao: 22/05/2017 por Bruno Carvalho  
;Motivo Alteracao: Ajustes DispositivoEtq()
;Ultima Alteracao: 22/06/2017 por Bruno Carvalho  
;Motivo Alteracao: Ajustado novo layout de impressÆo de etiqueta #0357#  **ImpressÆo Interna 
;Ultima Alteracao: 26/06/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustado p/ #0388# um nova tentativa ao localizar o item pelo tipo do item "P"
;Ultima Alteracao: 27/06/2017 por Bruno Carvalho
;Motivo Alteracao: Ajsutado ImpressÆo de Simbologia p/ #0318#
;Ultima Alteracao: 29/08/2017 por Bruno Carvalho                          
;Motivo Alteracao: Novo modelo de eiqueta para #0361# - Adicionado Simbologia -> Ajustado nos parƒmetros da expedi‡Æo *ET_Z361A"
;Ultima Alteracao: 15/09/2017 por Bruno Carvalho                          
;Motivo Alteracao: Ajustes ao verificar item que nÆo esteja no pedido
;Ultima Alteracao: 21/02/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes s¢ descri‡Æo da cor 0370, 0382                    
;Ultima Alteracao: 01/03/2018 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes ao pressionar F4 p/ carregar impressora -> Atribuindo CARREGA_SIMBOLOGIA=True
;Ultima Alteracao: 16/04/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado Etiqueta "ET_Z408E" para #0408#
;Ultima Alteracao: 25/04/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado tamanho Download_Simbologia() no terceiro parƒmetro -> TAMANHO_SIMBOLOGIA

;*******************************************************************************
;* Rotina para Controlar Chave da Ordem de Expedicao                           *
;*******************************************************************************
Proc CHAVEC()
FACA_DIGITAC=True
FACA_CHAVEI =True
INICIO_PAGINA=True

While True
  Moveto "ExpedC"
  Moveto [Numero da OE]
  End
  Moveto [Numero da OE]
  ORDEXP=[Numero da OE]

  If OPCAO_FORM="F"
    Then Down
    Else PgDn 
  EndIf
  Moveto [Numero da OE]

  SetaCorRegistro("Editar")
  While True
  
  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadrao()

  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM="F"
            Then OPCAO_FORM="2" 
            Else OPCAO_FORM="F"
         EndIf
         Del
         CHAVEC=5
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           If OPCAO_FORM="F"
              Then PAGINA("ExpedC","MR")
              Else PAGINA("ExpedC","MT")
           EndIf
           INICIO_PAGINA=True
           ORDFAT=[Numero da OE]
           Switch
             Case EDITAR="S":
                  PickForm "2"
                  Echo Normal
                  Echo Off
                  
                  If Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          FACA_DIGITAC=True
                          FACA_CHAVEI =True
                          INICIO_PAGINA=True

                          ORDEXP=[Numero da OE]
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  PickForm "2"
                  Echo Normal
                  Echo Off

                  If Checa_Controle([Numero_Controle_Dia])
                     Then 
                          If ( ( [Situacao da OE]="FATURADO" Or [Situacao da OE]="LIBERADO" ) and not CHECA_SUPERVISOR() )
                             then
                                  UnLockRecord
                             else
                                  If [Situacao da OE]="FATURADO"
                                     Then Mensagem("Esta Ordem de Expedi‡„o n„o pode ser excluida !// J  foi FATURADO !")
                                          UnLockRecord
                                     Else If QuerExcluir("")
                                             Then EXCLUSAO_C()
                                             Else UnLockRecord
                                          EndIf
                                  EndIf
                          EndIf
                     Else UnLockRecord
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           Switch
             Case OPCAO_FORM="2" : PickForm "2"
             OtherWise           : PickForm "3"
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
   Case Retval="ENTER":
         If Numero_Lancamento("","3")
            Then ORDEXP = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
            Else QuitLoop
         EndIf
         PickForm "2"
         Moveto [Numero da OE]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    Then Return 
                    Else OPCAO_FORM="F"
                 EndIf
         EndIf        
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="F"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveC)

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()
Moveto "ExpedC"

If CHAVEC=0
   Then If ROTINA_EXPEDICAO = "ETIQ"
           Then Moveto "ExpedIQ"
                If RecordStatus("New")=True
                   Then MSG =       Completa("Este lan‡amento pertence a rotina:",68," ")+"////"
                        MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 17. ORDEM DE EXPEDICAO - ETIQUETA",68," ")
                        Mensagem(MSG)
                        Moveto "ExpedC"
                        CHAVEC=9
                        Return
                EndIf
                Moveto "ExpedC"
           Else Moveto "ExpedI"
                If RecordStatus("New")=True
                   Then Moveto "ExpedC" 
                        MSG =       Completa("Este lan‡amento pertence a rotina:",68," ")+"////"
                        MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 18. ORDEM DE EXPEDICAO",68," ")
                        Mensagem(MSG)
                        CHAVEC=9        
                        Return
                EndIf          
                Moveto "ExpedC"
        EndIf
EndIf  

If INICIO_PAGINA
   Then If Not IsBlank(SYS_EMPRESA_DEFAULT) And CHAVEC=1
           Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
        EndIf
        
        If [Situacao da OE]="FATURADO"
           Then MSG_T="Esta Ordem de Expedi‡„o j  foi FATURADA !//"
                Mensagem(MSG_T)
                If Not CHECA_SUPERVISOR()
                   Then CHAVEC=9
                        Return
                EndIf
        EndIf
EndIf

If CHAVEC=0 
   Then Carrega_Parametros()
        Moveto [Numero de Volumes]
   Else Moveto [Codigo da Empresa] 
EndIf

FACA_CHAVEI=True
INICIO_PAGINA=False

While True                     
  TECLA=" Esc=Retornar  "
  If Field()="Codigo da Empresa" Or
     Field()="Codigo"         
     Then TECLA=TECLA + "F1=Tabelas  "
  EndIf
  TECLA=TECLA+"F8=Observa‡„o  "
  
  MSGCAMPO=Field()
  Switch
    Case Field()="Razao Social"      : MSGCAMPO="Observa‡Æo"
    Case Field()="Numero de Volumes" : MSGCAMPO="ENTER=Prosseguir"
  EndSwitch   

  Prompt TECLA
  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F8","F35"
  
  Switch
  Case RetVal="F1":
       If Field()="Codigo da Empresa" Or
          Field()="Numero do Pedido"  Or
          Field()="Codigo"         
          Then CONSULTAF1()
        EndIf                  
  Case Retval="F8":
       CampoAnterior=Field()
       Edita_Memo("Observacao",10,01,13,76,"Observa‡”es")
       Moveto Field CampoAnterior
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If QuerExcluir("")
                  Then EXCLUSAO_C()
                       CHAVEC=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC" :
       Switch
       Case Field()="Codigo da Empresa":
            If CHAVEC=1
               Then If QuerExcluir("")
                       Then EXCLUSAO_C()
                            CHAVEC=9
                            QuitLoop
                    EndIf        
            EndIf
       Case Field()="Numero do Pedido"   : Moveto [Codigo da Empresa]
       Case Field()="Numero de Volumes"  : If QuerDesfazer("")
                                              Then Undo
                                                   CHAVEC=9
                                                   QuitLoop
                                           EndIf
       Case Field()="Codigo"             : Moveto [Codigo da Empresa]    
       Case Field()="Razao Social"       : Moveto [Codigo]
       EndSwitch
  Case Retval="ENTER":
       Switch
       Case Field()="Codigo da Empresa" :
            If IsBlank([]) 
               Then If Not IsBlank(SYS_EMPRESA_DEFAULT)
                       Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
                    EndIf
            EndIf
            If IsBlank([]) Then Loop EndIf 
            If Not IsBlank([Codigo da Empresa])
               Then If Not Carrega_Parametros()
                       Then Loop
                    EndIf
            EndIf
            If SYS_CODIGO_CLIENTE="0345" OR SYS_CODIGO_CLIENTE="0388" Or SYS_CODIGO_CLIENTE="0390" Or SYS_CODIGO_CLIENTE="0396"
               Then Moveto [Numero do Pedido]
               Else Moveto [Codigo]
            EndIf   
       Case Field()="Numero do Pedido" :
            If Not IsBlank([])
               Then If CHAVEC=1 
                       Then If PARAM_PEDIDO_POREXPED
                               Then ACHOU_OE=""
                                    NPED = [Numero do Pedido]
                                    Moveto "ExpedC"
                                    UnLockRecord
                                    FormKey
                                    Moveto [Numero do Pedido]
                                    Locate NPED
                                    If RetVal
                                       Then While True
                                              If ORDEXP<>[Numero da OE]
                                                 Then ACHOU_OE=[Numero da OE]
                                                      QuitLoop
                                              EndIf
                                              Skip
                                              If Eot() Then QuitLoop EndIf
                                              Locate Next NPED
                                              If Not RetVal
                                                 Then QuitLoop
                                              EndIf   
                                            EndWhile
                                    EndIf                                       
                                    Moveto "ExpedC"
                                    Moveto [Numero da OE]
                                    Locate ORDEXP
                                    FormKey
                                    IsLockRecord()
                                    Moveto [Numero do Pedido]
                                    If ACHOU_OE<>""
                                       Then Mensagem("Pedido "+[Numero do Pedido]+" foi localizado na Expedi‡„o "+ACHOU_OE+"!")
                                            Loop
                                    EndIf   
                            EndIf
                       
                            GetRecord "\\Sistemas\\Vendas\\PedidoC" [Numero do Pedido] To REG_PEDICO
                            If RetVal
                               Then If [Codigo da Empresa] <> REG_PEDICO["Codigo da Empresa"]
                                       Then Mensagem("Empresa "+[Codigo da Empresa]+" difere da empresa do pedido "+REG_PEDICO["Codigo da Empresa"]+"!")
                                            Loop
                                    EndIf   
                               Else Mensagem("Pedido "+[Numero do Pedido]+" inv lido! ")  
                                    Loop
                            EndIf   
                            
                            If [Situacao do Pedido]<>"ABERTO"
                               Then Mensagem("Verificar a Situa‡„o do Pedido !//Status="+[Situacao do Pedido])
                                    Loop
                            EndIf
                                                                            
                            If Not Carrega_Parametros()
                               Then Loop
                            EndIf
                                   
                            [Codigo      ]=REG_PEDICO["Codigo"]
                            [Razao Social]=REG_PEDICO["Razao Social"]
                            Release Vars REG_PEDICO
                            QuitLoop
                    EndIf  
               Else Moveto [Codigo]     
            EndIf
       Case Field()="Numero de Volumes" : QuitLoop     
       Case Field()="Codigo":
            If IsBlank([])
               Then Moveto [Razao Social]
               Else QuitLoop
            EndIf   
       Case Field()="Razao Social":
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ;(DigitaC)

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

Moveto "ExpedIQ"

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

  SetaCorRegistro("Editar")
  While True
    TECLA= " F7=Paginar  PgDn=Finalizar  "
    Prompt TECLA

    Wait Field
         Until "ESC","ENTER",
               "HOME","UP","PGUP","PGDN","DEL",
               -94,-33,-22, -18,
               "F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12",-68,-62,
               -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -133, -134, -139, -140,-61
    
    If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
              "F3  ~V~olume              " : " Volume                                           " : "F3",
              "F4  ~R~ecarrega Impressora" : " Recarrega a Impressora p/ Impress„o das Etiquetas" : "F4",
              "F5  ~A~ltera Localiza‡„o  " : " Altera forma de localizar o item                 " : "F5",
              "F6  ~I~mprimir            " : " Imprimir Rela‡„o de Itens                        " : "F6",              
              "F11 ~L~iberar Ordem       " : " Ordem de Expedi‡„o Liberada                      " : "F11",              
              "~C~ancelar                " : " Cancelar a Opera‡„o                              " : "CANCELAR"
            EndMenu
            To MenuVar
            echo off
            If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
            EndIf

            RetVal=MenuVar
    EndIf

    Switch
    Case RetVal="F3" Or RetVal=-61 :
         Del
         Volume()
         QuitLoop
    Case RetVal="F5"  :
         ModoLocalizarItem("SELECAO","","EXPEDC")  
    Case RetVal="F1": 
         If Field()="Item_Digitacao" 
            Then Moveto [Codigo do Item]
                 CONSULTAF1()
                 If LOCALIZA_CODIGO="LOC_CODITE"
                    Then CODIGO = AlinhM([],10)
                    Else CODIGO = []
                 EndIf
                 [Item_Digitacao]=[]
                 Moveto [Item_Digitacao]
         EndIf    
    Case RetVal="F6" :
         Del
         If IMPRIME() 
            Then
               FACA_CHAVEI =False
               FACA_DIGITAC=False
               CHAVEI=9
               Return        
               Quitloop
            Else Quitloop EndIf        
    Case RetVal="F4" OR RetVal=-62 : 
         If IsFile(PrivDir()+"Simbol.ini") Then Deleta_Arquivo(PrivDir()+"Simbol.ini") EndIf 
         CARREGA_SIMBOLOGIA=True
         Carrega_Impressora("RECARREGAR")
    Case Retval="PGDN":
         Del
         Moveto [Sequencia]
         If RecordStatus("New")=True
            Then MENSAGEM("A Ordem de Expedi‡„o deve ter pelo menos 1(um) Item Ok !")
                 Loop
         EndIf
         FACA_CHAVEI =False
         FACA_DIGITAC=False
         CHAVEI=9
         Return
    Case Retval="F11" Or Retval=-133:
         Del            
         Moveto [Sequencia]
         If RecordStatus("New")=True
            Then MENSAGEM("A Ordem de Expedi‡„o deve ter pelo menos 1(um) Item Ok !")
                 QuitLoop
         EndIf
         Moveto "ExpedC"
         [ExpedC->Situacao da OE]="LIBERADO"
         [Data_Liberacao]=Today()
         [Hora_Liberacao]=Time()
         
         Moveto "ExpedIQ"
         FACA_CHAVEI =False
         FACA_DIGITAC=False
         CHAVEI=9
         Return    
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         del
         While True
           PAGINA("ExpedIQ","MR")
           If EDITAR="S"
              Then CHAVEI=0
                   DigitaI()
                   Calc_Itens()
              Else If EXCLUIR="S" And [Quantidade_Pedido]<=0
                      Then If QuerExcluir("")
                              Then CHAVEI=8
                                   EXCLUSAO_I()
                                   Calc_Itens()
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
         
    Case Retval="ESC":   
         Del
         Moveto [Codigo do Item]
         If RecordStatus("New")=True
            Then If QuerExcluir("")
                    Then FACA_CHAVEI =False
                         FACA_DIGITAC=False
                         CHAVEC=8
                    Else Loop     
                 EndIf         
         EndIf
         CHAVEI=9
         Return
    Case Retval="ENTER": 
       If Not Seta_Sequencia(ITEM,True) 
           Then Del
                QuitLoop
        EndIf
        Moveto [Sequencia     ]
        ITEM=[]
        
        Del
        Locate ORDEXP,ITEM
        If Retval
           Then CHAVEI=0
                CODIT=[]
           Else CHAVEI=1
                End Down
                [Numero da OE  ]=ORDEXP
                [Sequencia     ]=ITEM
                UnLockRecord
                Locate ORDEXP,ITEM

        EndIf
        Return       
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveI)          

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

If Not IsAssigneD(LOC_POR) Then LOC_POR="Codigo do Item" EndIf

If CHAVEI=0
   Then QTD_EXPED = [Quantidade_Expedida]
        If Not Verifica_Item()
           Then Moveto [Item_Digitacao]
           Else Moveto [Quantidade_Expedida]
        EndIf      
   Else Moveto [Item_Digitacao]
EndIf

While True
      TECLA=" Esc=Retornar  "
      
      If CHAVEI=0
         Then TECLA=TECLA+"Del=Excluir  "
      EndIf
      
      MSGCAMPO=Field()
      
      Switch
        Case Field()="Codigo da Cor_Tecido"     : MSGCAMPO="Codigo da Cor do Item/Referˆncia"
        Case Field()="Descricao da Cor_Tecido"  : MSGCAMPO="Descri‡„o da Cor do Item/Referˆncia"
        Case Field()="Quantidade_Expedida"      : MSGCAMPO="Informe a Quantidade"
        Case Field()="Flag"           : MSGCAMPO="ENTER=Imprimir Etiqueta"
        Case Field()="Item_Digitacao" : Switch
                                          Case LOCALIZA_CODIGO="LOC_CODFOR"       : MSGCAMPO="Informe o C¢digo do Fornecedor"
                                          Case LOCALIZA_CODIGO="LOC_CODREF"       : MSGCAMPO="Informe a Referˆncia do Item"
                                          Case LOCALIZA_CODIGO="LOC_CODBAR"       : MSGCAMPO="Informe o C¢digo de Barra"
                                          Otherwise: LOCALIZA_CODIGO="LOC_CODITE"   MSGCAMPO="Informe o C¢digo do Item"
                                        EndSwitch
                                        MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      EndSwitch

      Prompt TECLA
      SetaCorRegistro("Editando")
      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

      Switch
      Case RetVal="F1":  
           If Field()="Item_Digitacao"
              Then Moveto [Codigo do Item]
                   CONSULTAF1()
                   If RetVal
                      Then LOC_CODIGO_ITEM    = Alinhm([Codigo do Item],10)
                           LOC_DESCRICAO_ITEM = [Descricao do Item]
                           REFERENCIA         = [Referencia]
                           If LOCALIZA_CODIGO="LOC_CODREF"
                              Then CODIGO = REFERENCIA
                              Else CODIGO = LOC_CODIGO_ITEM
                           EndIf
                           [Codigo do Item   ] = LOC_CODIGO_ITEM
                           [Descricao do Item] = LOC_DESCRICAO_ITEM
                           [Referencia       ] = REFERENCIA
                           If LOC_POR="Referˆncia"
                              Then [Item_Digitacao] = REFERENCIA
                              Else [Item_Digitacao] = CODIGO
                           EndIf
                    EndIf
                    Moveto [Item_Digitacao]
            EndIf
      Case Retval="ESC":
           Switch
             Case Field()="Item_Digitacao" Or (Field()="Quantidade_Expedida" And CHAVEI=0):
                  If QuerDesfazer("")
                      Then If CHAVEI=1
                              Then Del
                              Else Undo
                           EndIf
                           QuitLoop
                   EndIf 
             Case Field() = "Codigo da Cor_Tecido"  : Moveto [Item_Digitacao]
             Case Field() = "Quantidade_Expedida"   :
                  If SYS_CODIGO_CLIENTE="0408" 
                     Then Moveto [Item_Digitacao]
                     Else Moveto [Codigo da Cor_Tecido]
                  EndIf   
             OtherWise   : Left
           EndSwitch
      Case Retval="ENTER":  
           Switch
              Case Field() = "Item_Digitacao"  :
                   If [Item_Digitacao]="" Then Loop EndIf
                   If LOCALIZA_CODIGO="LOC_CODREF"
                      Then REFERENCIA = [Item_Digitacao]
                           CODIGO     = REFERENCIA
                      Else REFERENCIA = [Referencia]
                           CODIGO     = Alinhm([Item_Digitacao],10)
                   EndIf
                   LOC_RETORNO_CODITEM = True
                   Moveto [Codigo do Item]
                   Ativa_Lookup()
                   ModoLocalizarItem("LOCALIZAR",CODIGO,"")
                   If LOC_CODIGO_ITEM=""
                      Then Moveto [Item_Digitacao]
                           Mensagem("Item/Referˆncia n„o localizado !")
                           Loop
                   EndIf
                   [Codigo do Item   ] = LOC_CODIGO_ITEM     
                   [Referencia       ] = REFERENCIA
                   [Descricao do Item] = LOC_DESCRICAO_ITEM
                   If LOC_POR="Referˆncia"
                      Then [Item_Digitacao] = REFERENCIA
                      Else [Item_Digitacao] = CODIGO
                   EndIf            
                   If SYS_CODIGO_CLIENTE="0408"
                      Then Moveto [Quantidade_Expedida]
                      Else Moveto [Codigo da Cor_Tecido]
                   EndIf   
              Case Field() = "Codigo da Cor_Tecido"  : 
                   If [Codigo da Cor_Tecido]<>""
                      Then If Verifica_Item()
                              Then If (SYS_CODIGO_CLIENTE="0345" Or 
                                       SYS_CODIGO_CLIENTE="0388" Or 
                                       SYS_CODIGO_CLIENTE="0390" Or
                                       SYS_CODIGO_CLIENTE="0396") And [ExpedC->Numero do Pedido]<>""
                                      Then ACHOU_ITEM=False
                                           Moveto "PedidoI"
                                           Moveto [Numero do Pedido]
                                           Locate [ExpedC->Numero do Pedido]
                                           If RetVal
                                              Then While [Numero do Pedido]=[ExpedC->Numero do Pedido]
                                                     If [Codigo do Item]=[ExpedIQ->Codigo do Item]
                                                        Then ACHOU_ITEM=True 
                                                             QuitLoop
                                                     EndIf
                                                     Skip
                                                     If Eot() Then QuitLoop EndIf
                                                   EndWhile
                                           EnDIf
                                           Moveto "ExpedIQ"
                                           If Not ACHOU_ITEM
                                              Then MSG =       Completa("Item "+[Item_Digitacao]+" referente a cor "+[Codigo da Cor_Tecido]+
                                                               " n„o foi localizado no pedido "+ [ExpedC->Numero do Pedido]+"!",68," ")+"////"
                                                   MSG = MSG + Completa("Antes  de  prosseguir  com a adi‡„o deste item nesta expedi‡„o, ser ",68," ")+"//"
                                                   MSG = MSG + Completa("necess rio adicion -lo na rotina de pedidos!",68," ")+"//"             
                                                   Mensagem(MSG)
                                                   Moveto [Codigo da Cor_Tecido]
                                              Else If DUPLICIDADE_ITEM
                                                      Then AUX_SEQ = [Sequencia]
                                                           Home
                                                           While True
                                                             If AUX_SEQ = [Sequencia] Then QuitLoop EndIf   
                                                             
                                                             If AUX_CODIGO_ITEM=[Codigo do Item] 
                                                                Then Mensagem("Item "+[Item_Digitacao]+" referente a cor "+[Codigo da Cor_Tecido]+
                                                                              " j  est  lan‡ado na sequˆncia "+StrVal([Sequencia])+"!")
                                                                     Moveto [Sequencia]
                                                                     Locate AUX_SEQ
                                                                     Moveto [Codigo da Cor_Tecido]
                                                                     QuitLoop
                                                                Else Skip
                                                                     If Eot() Then QuitLoop EndIf
                                                             EndIf
                                                           EndWhile
                                                   EndIf
                                           EndIf
                                   EndIf        
                              Else If SYS_CODIGO_CLIENTE="0345" Or SYS_CODIGO_CLIENTE="0388" Or SYS_CODIGO_CLIENTE="0390" Or SYS_CODIGO_CLIENTE="0396"
                                      Then Moveto [Codigo da Cor_Tecido]
                                      Else Moveto [Descricao da Cor_Tecido]
                                   EndIf   
                           EndIf 
                      Else If SYS_CODIGO_CLIENTE="0359" Or SYS_CODIGO_CLIENTE="0361" Or SYS_CODIGO_CLIENTE="0318" or
                              SYS_CODIGO_CLIENTE="0370" Or SYS_CODIGO_CLIENTE="0382"   
                              Then Moveto [Descricao da Cor_Tecido]
                              Else Moveto [Quantidade_Expedida]
                           EndIf           
                   EndIf        
              Case Field() = "Descricao da Cor_Tecido"  :
                      Moveto [Quantidade_Expedida]
              Case Field() = "Quantidade_Expedida" :
                   If [Quantidade_Expedida]>1000
                      then Mensagem("Quantidade Inv lida !")
                           Loop
                   EndIf
                   [Quantidade_Diferenca]=[Quantidade_Expedida]-[Quantidade_Pedido]
                   If [Quantidade_Diferenca]=0
                      Then [Quantidade_Diferenca]=BlankNum()
                   EndIf
                   If [Quantidade_Diferenca]>0
                      Then [Quantidade_Fora_Pedido]=[Quantidade_Diferenca]
                      Else [Quantidade_Fora_Pedido]=BlankNum()
                   EndIf
                   If [Quantidade_Expedida]=0
                      Then [Quantidade_Expedida]=BlankNum()
                   EndIf
                   If [Quantidade_Expedida]=BlankNum()
                      Then Loop
                      Else Moveto [Flag]
                   EndIf                                                                         
              Case Field() = "Flag"  :  
                   IMP_ETQ = False
                   If (CHAVEI=0 And QTD_EXPED<>[Quantidade_Expedida]) Or CHAVEI=1
                      Then IMP_ETQ = True
                      Else If ConfGeral("Deseja imprimir a Etiqueta para o item "+[Codigo do Item]+" ?")  
                              Then IMP_ETQ = True
                           EndIf   
                   EndIf           
                   If IMP_ETQ
                      Then MSG = "N„o h  uma etiqueta definida nos parametros para utiliza‡„o!"
                           If Carrega_Impressora("")
                              Then If CARREGA_IMPRESSORA
                                      Then Switch  
                                            Case SYS_CODIGO_CLIENTE="0343" :
                                                 Imprime_Zebra("ET_Z343")
                                            ;Case SYS_CODIGO_CLIENTE="0361" :      -> Criado novo modelo em 29.06.2017 com a adi‡Æo da simbologia
                                            ;     Imprime_Zebra("ET_Z361")            Utilizando o script ET_Z361A
                                            Case SYS_CODIGO_CLIENTE="0357" :
                                                 Imprime_Zebra("ET_Z357")
                                            ;Case SYS_CODIGO_CLIENTE="0359" :
                                            ;     Imprime_Zebra("ET_Z359")
                                                 ;Os Scripts ET_Z359C e ET_Z359D nÆo estÆo sendo utilizados                                                                                                       
                                            Case SYS_CODIGO_CLIENTE="0318" Or
                                                ;SYS_CODIGO_CLIENTE="0357" Or   ;Criado novo modelo interno em 22/06
                                                 SYS_CODIGO_CLIENTE="0345" Or 
                                                 SYS_CODIGO_CLIENTE="0359" Or
                                                 SYS_CODIGO_CLIENTE="0361" or
                                                 SYS_CODIGO_CLIENTE="0370" Or 
                                                 SYS_CODIGO_CLIENTE="0382" Or 
                                                 SYS_CODIGO_CLIENTE="0408"  :
                                                 If PARAM_EXPED_ETIQUETA<>""
                                                    Then ;Para a empresa 0359, quando for alterar a etiqueta para o 
                                                         ;modelo 8,5 x 5,5, mudar nos parƒmetros p/ ET_Z359D
                                                         Play "\\Sistemas\\Estoque\\"+PARAM_EXPED_ETIQUETA
                                                    Else Mensagem(MSG)
                                                 EndIf
                                            OtherWise                      : 
                                           EndSwitch
                                   EndIf
                           EndIf                   
                   EndIf
                   Release Vars IMP_ETQ
									 UnLockRecord
                   QuitLoop
              OtherWise     : Right
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEI=0 And [Quantidade_Pedido]<=0
              Then If QuerExcluir("")
                      Then DEL
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile

EndProc   ; (DigitaI)

;*******************************************************************************
;* Rotina p/ Verificar o Codigo da Cor                                        *
;*******************************************************************************
Proc Verifica_Item()                           

;Caso cliente #0359# utilizar cor do tecido, inclu¡-lo na condi‡Æo abaixo.                              

If SYS_CODIGO_CLIENTE="0388" Or SYS_CODIGO_CLIENTE="0390" Or SYS_CODIGO_CLIENTE="0345" Or SYS_CODIGO_CLIENTE="0396"  
   Then If CHAVEI=0
           Then If [Codigo da Cor_Tecido]=""
                   Then Mensagem("O C¢digo da Cor do Tecido deve ser informado!")
                        Return False
                EndIf    
        EndIf
        AUX_CODIGO_ITEM         = [Codigo do Item]
        VSD_I_REFERENCIA        = [Referencia]
        VSD_I_Codigo_Cor_Tecido = [Codigo da Cor_Tecido]
        Moveto [Codigo do Item]
        Ativa_Lookup()
        If SYS_CODIGO_CLIENTE="0359"
           Then Moveto [Codigo do Item]
           Else Moveto [Referencia]
        EndIf   
        If SYS_CODIGO_CLIENTE="0388" Or SYS_CODIGO_CLIENTE="0390" Or SYS_CODIGO_CLIENTE="0345" Or SYS_CODIGO_CLIENTE="0359" Or SYS_CODIGO_CLIENTE="0396" 
            Then TIPO_ITEM = "T"
            Else TIPO_ITEM = "P"
         EndIf
         If SYS_CODIGO_CLIENTE="0359"
           Then Locate AUX_CODIGO_ITEM
           Else Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, TIPO_ITEM, VSD_I_Codigo_Cor_Tecido
         EndIf
         
         ;---- 2¦ Tentativa ao localizar o item pelo tipo do item ----------------
         If Not RetVal And SYS_CODIGO_CLIENTE="0388"  
            Then TIPO_ITEM = "P"
                 Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, TIPO_ITEM, VSD_I_Codigo_Cor_Tecido
         EndIf
         
         If RetVal
            Then ACHOU_ITEM=True
                 If SYS_CODIGO_CLIENTE="0359"
                    Then If [Codigo da Cor_Tecido]<>VSD_I_Codigo_Cor_Tecido
                            Then ACHOU_ITEM=False
                         EndIf
                 EndIf
                 If ACHOU_ITEM 
                    Then AUX_CODIGO_ITEM = [Codigo do Item]
                         KeyPress "ESC"
                         [Codigo do Item] = AUX_CODIGO_ITEM 
                         Moveto [Quantidade_Expedida]
                    Else KeyPress "ESC"
                         Moveto [Codigo da Cor_Tecido]
                         FastMsg("A Cor "+[Codigo da Cor_Tecido]+" n„o pertence ao item "+[Codigo do Item]+"!")
                 EndIf        
            Else KeyPress "ESC"
                 Moveto [Codigo da Cor_Tecido]
                 FastMsg("Codigo da Cor "+[Codigo da Cor_Tecido]+" n„o localizado para esta referˆncia!")
                 Return False
        EnDIf
   Else Moveto [Quantidade_Expedida]     
EndIf    

Return True
                                         
EndProc ;Verifica_Item()

;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc IMPRIME()
Private OPCAOC

Moveto "ExpedC"
Do_It!
Dispositivo()
If OK=""
  Then CoEditKey
       Return False
EndIf

If PARAM_EXPED_TIPO = "C"
   Then Play("OE_0011")
   Else Play("OE_0012")
EndIf
         
Do_It!
ClearAll

View NoWindow "P_Pedido"
Coedit NoWindow "ExpedC"
PickForm "R"
Return True

EndProc ;Imprime

;*******************************************************************************
;Monta Etiqueta                                                                *
;*******************************************************************************
Proc Monta_Etiqueta_interno(PARAM)
Private PARAM
  
If PARAM="ET_Z357" Or PARAM="ET_Z361" Or PARAM="ET_Z343" Or PARAM="ET_Z359"
   Then FileWrite Append Arquivo From "O\n"
        FileWrite Append Arquivo From "N\n"
        FileWrite Append Arquivo From "q680\n"
        FileWrite Append Arquivo From "Q440,24\n"
        FileWrite Append Arquivo From "S2\n"
        FileWrite Append Arquivo From "D8\n"
        FileWrite Append Arquivo From "ZT\n"

        FileWrite Append Arquivo From "A40,20,0,4,1,1,N,\""+"REFERENCIA: "+"\"\n"
        FileWrite Append Arquivo From "A220,24,0,3,1,1,N,\""+Rtrim(SubStr(ITEM,1,31))+"\"\n"
        FileWrite Append Arquivo From "A220,51,0,3,1,1,N,\""+Rtrim(SubStr(ITEM,32,31))+"\"\n"
        
        FileWrite Append Arquivo From "A40,86,0,4,1,1,N,\""+"   LARGURA: "+"\"\n"
        FileWrite Append Arquivo From "A220,90,0,3,1,1,N,\""+ITEM_CON+"\"\n"

        FileWrite Append Arquivo From "A40,126,0,4,1,1,N,\""+"  METRAGEM: "+"\"\n"
        FileWrite Append Arquivo From "A220,130,0,3,1,1,N,\""+ITEM_QTD+"\"\n"

        FileWrite Append Arquivo From "A40,166,0,4,1,1,N,\""+"       COR:"+"\"\n"
        FileWrite Append Arquivo From "A220,170,0,3,1,1,N,\""+ITEM_COR+"\"\n" 
        
        FileWrite Append Arquivo From "A40,206,0,4,1,1,N,\""+"COMPOSICAO:"+"\"\n"
        FileWrite Append Arquivo From "A220,210,0,3,1,1,N,\""+Ltrim(Rtrim(SubStr(ITEM_DESC,1,31)))+"\"\n"
        FileWrite Append Arquivo From "A220,237,0,3,1,1,N,\""+Ltrim(Rtrim(SubStr(ITEM_DESC,32,31)))+"\"\n"
        FileWrite Append Arquivo From "A220,264,0,3,1,1,N,\""+Ltrim(Rtrim(SubStr(ITEM_DESC,63,30)))+"\"\n"
        
        FileWrite Append Arquivo From "A200,295,0,4,1,1,N,\""+TIT+"\"\n"
        FileWrite Append Arquivo From "A170,325,0,3,1,1,N,\""+TIT2+"\"\n\n"              
        FileWrite Append Arquivo From "P"+StrVal(1)+"\n"
EndIf

EndProc ;Monta_Etiqueta_interno()

;*******************************************************************************
;* Monta Comandos p/ Impressora Termica                                        *
;*******************************************************************************
Proc Imprime_Zebra(PARAM)
Private PARAM

;Criado novo modelo em 29.06.2017 com a adi‡Æo da simbologia
If PARAM="ET_Z361"
   Then Return
EndIf   

If IsAssigned(DITEA)
   Then Release Vars ITEM_COD, ITEM_QTD, ITEM_COR, ITEM_DES, ITEM_DESC, ITEM_CON, REG_ITEM
EndIf

If PARAM="ET_Z357" Or PARAM="ET_Z361" Or PARAM="ET_Z343" Or PARAM="ET_Z359"
   Then GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
        If Not RetVal
           Then Mensagem("O Item "+[Codigo do Item]+" n„o est  cadastro dos itens!")
                Return
        EndIf   
        If Not IsAssigned(sys_chapa_usuario) Or sys_chapa_usuario="" Then sys_chapa_usuario = "9999" EndIf
        Arquivo="\\Sistemas\\Vendas\\Et_"+sys_chapa_usuario+".ext"
        FileWrite Arquivo From ""
        
        GetRecord "\\Sistemas\\Estoque\\Iten_Com" [Codigo do Item] To REG_ITEMCOMP     
        If RetVal
           Then CONCENTRADOR = REG_ITEMCOMP["Codigo Concentrador"]
           Else CONCENTRADOR = ""
        EndIf   
        
        ;---- Se alterar o modo para referˆncia, comentar a linha Codigo do Item e demarcar a linha Referencia --------
        ITEM_COD = [Codigo do Item]             
        ;ITEM_COD = [Referencia]
        ;--------------------------------------------------------------------------------------------------------------
        PAIS     = REG_ITEM["Pais"]
        Switch
          Case PARAM="ET_Z343" : TIT = " THARDELY TECIDOS "     
          Case PARAM="ET_Z357" : TIT = " IMPERIO TECIDOS  "
          Case PARAM="ET_Z361" : TIT = "IGARATINGA TECIDOS"
          Case PARAM="ET_Z359" : TIT = "   TECIDOS TOTAL  "          
          OtherWise            : TIT = ""                
        EndSwitch
        If PARAM="ET_Z359"
           Then TIT2 = "(37) 9922-0538 (Whatsaap)"
           Else TIT2 = Format("W25,AC",StrVal(Today()))
        EndIf
        
        ITEM_DES = REG_ITEM["Descricao do Item"]
        ITEM     = Format("W10,AR",ITEM_COD) + " " + ITEM_DES
        ITEM_QTD = StrVal([Quantidade_Expedida])
        If PAIS <> ""
           Then ITEM_COR = Format("W15",[Descricao da Cor_Tecido]) + "  Origem: "+Format("W15",PAIS)
           Else ITEM_COR = [Descricao da Cor_Tecido] 
        EndIf   
        ITEM_DESC= REG_ITEM["Descricao Complementar"]
        ITEM_CON = CONCENTRADOR
        
        Switch
          Case PARAM="ET_Z357" : Monta_Etiqueta_interno("ET_Z357")
          Case PARAM="ET_Z361" : Monta_Etiqueta_interno("ET_Z361") 
          Case PARAM="ET_Z359" : Monta_Etiqueta_interno("ET_Z359")
          Case PARAM="ET_Z343" : Monta_Etiqueta_interno("ET_Z343")
        EndSwitch   
        ExecVise("EXE c:\\vise\\Vdpr.exe /raw /sel'"+Seta_Printer+"' "+Arquivo)
EndIf

EndProc ;Imprime_Zebra()

;*******************************************************************************
;* Rotina para Calculos                                                        *
;*******************************************************************************
Proc Calc_Itens()
Moveto "ExpedIQ"

Moveto [Quantidade_Expedida] VSQTDE  =ImageCSum()

If VSQTDE =0 Then VSQTDE =BlankNum() EndIf

Moveto "ExpedC"
[Quantidade_Expedida   ]=VSQTDE

Moveto "ExpedIQ"
EndProc   ; (ChaveCdBar)

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc EXCLUSAO_C()
Moveto "ExpedIQ"
While RecordStatus("New")=False
  EXCLUSAO_I()
EndWhile
Moveto "ExpedC"
Del
EndProc   ; (Exclusao_C)

;*******************************************************************************
;* Exclusao do Item                                                            *
;*******************************************************************************
Proc EXCLUSAO_I()
Moveto "ExpedIQ"
ITEM=[Sequencia]
Del
EndProc  ; (Exclusao_I)

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
FACA_DIGITAC=True

switch
  case sys_Codigo_Cliente="0343":
    If ( [ExpedC->Situacao da OE]="FATURADO" )                                        and not CHECA_SUPERVISOR() 
       then FACA_DIGITAC=false
    endif   
  
  otherwise:
    If ( [ExpedC->Situacao da OE]="FATURADO" Or [ExpedC->Situacao da OE]="LIBERADO" ) and not CHECA_SUPERVISOR() 
       then FACA_DIGITAC=false
    endif   
  
endswitch

While FACA_DIGITAC
  MSGCAMPO=""
  DIGITAC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=1
     Then Controle_Dia()
          [Situacao da OE]="EM ABERTO"
  EndIf
  While FACA_CHAVEI
    While True
      MSGCAMPO=""
      CHAVEI()
      If CHAVEI=9 Then QuitLoop EndIf
      Controla_EdicaoI()
    EndWhile
  EndWhile
EndWhile
Moveto "ExpedC" 
If CHAVEC=8 Then EXCLUSAO_C() EndIf

MSGCAMPO=""
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "3"
EndIf

SaveTables
EndProc

;*******************************************************************************
;* Rotina Principal Emissao Nota Fiscal ou Romaneio                            *
;*******************************************************************************
Proc Carrega_Impressora(PARAM)
Private PARAM,ACHOU
CARREGA_IMPRESSORA = False
                            
If Not Verifica_Impressora() Or PARAM="RECARREGAR" 
   Then If IsFile(IMP_FILE)
           Then Deleta_Arquivo(IMP_FILE)
        EndIf
EndIf       

If Not IsFile(IMP_FILE) 
   Then MSGDISPOSITIVO="Etiqueta"
        
        DispositivoEtq()
        If OK="" 
           Then Return False
        EndIf     
        If OK<>"I" And OK<>""
           Then Mensagem("Apenas para Impress„o em Etiquetas!")
                If Isfile(PrivDir()+"ETQ_IMP.SC")
                   Then Deleta_Arquivo(PrivDir()+"ETQ_IMP.SC")
                EndIf  
                Return False
         EndIf 
         If Isfile(PrivDir()+"ETQ_IMP.SC")
            Then If Verifica_Impressora_Termica(PrivDir()+"ETQ_IMP.SC")
                    Then Copia_Arquivo(PrivDir()+"ETQ_IMP.SC "+IMP_FILE)
                    
                         LINHA =         GravaExpressao("NUMCOPIA","N",Strval(NUMCOPIA))
                         LINHA = LINHA + GravaExpressao("DISPOSITIVO_OPCAO","S",DISPOSITIVO_OPCAO)
                         LINHA = LINHA + GravaExpressao("VSDGIMPOPCAO","S",VSDGIMPOPCAO)        
                         LINHA = LINHA + GravaExpressao("Seta_Printer","S","")
                         FileWrite Append IMP_FILE From LINHA
                    
                         Variaveis_Impressao("Salvar")
                         CARREGA_IMPRESSORA = True
                    Else Mensagem("A escolha deve ser para uma impressora T‚rmica!")
                         Return False
                 EndIf        
            Else Return False
         EndIf
         If Not Verifica_Impressora_Termica(IMP_FILE)
            Then Mensagem("Erro ao localizar a impressora t‚rmica//Utilize a o‡„o para recarregar a impressora t‚rmica antes de prosseguir!")
                 Return False 
         EndIf
    Else Variaveis_Impressao("Carregar")
         CARREGA_IMPRESSORA = True
         If CARREGA_SIMBOLOGIA
            Then CARREGA_SIMBOLOGIA=False
                 Switch
                   Case TIPO_IMPRESSORA = "BEMATECH" : If Not Download_Simbologia("BEMATECH","",TAMANHO_SIMBOLOGIA)
                                                          Then Return False   
                                                       EndIf     
                   Case TIPO_IMPRESSORA = "ZEBRA"    : If Not Download_Simbologia("ZEBRA","",TAMANHO_SIMBOLOGIA)
                                                          Then Return False   
                                                       EndIf    
                 EndSwitch
         EndIf         
EndIf

Return True

EndProc ;Carrega_Impressora()
 
;*******************************************************************************
;* Rotina para Verificar Impressora Zebra                                      *
;*******************************************************************************
Proc Verifica_Impressora_Termica(PARAM)
Private PARAM,ACHOU,TIPO_IMPRESORA

TIPO_IMPRESORA=""

ACHOU = False
If IsAssigned(Varinner) Then Release Vars Varinner  EndIf                            
FileRead PARAM to Varinner
Pos=1
While True
  Posf=SearchFrom("\n",Varinner,Pos) 
  If Posf=0 Then QuitLoop EndIf
  Linha=Substr(Varinner,Pos,(Posf-Pos))
  If Search("ZEBRA",Upper(Linha)) > 0 Or Search("ZDESIG",Upper(Linha)) > 0
     Then TIPO_IMPRESORA = "ZEBRA"
          If Not CARREGA_SIMBOLOGIA  
             Then ACHOU=True    
             Else If Download_Simbologia(TIPO_IMPRESORA,"",TAMANHO_SIMBOLOGIA)
                     Then ACHOU=True  
                  EndIf
          EndIf
     Else If Search("BEM",Upper(Linha)) > 0
             Then TIPO_IMPRESORA = "BEMATECH"
                  If Not CARREGA_SIMBOLOGIA  
                     Then ACHOU=True    
                     Else If Download_Simbologia(TIPO_IMPRESORA,"",TAMANHO_SIMBOLOGIA)
                            Then ACHOU=True        
                          EndIf
                  EndIf  
          EndIf        
  EndIf
  If ACHOU Then QuitLoop EndIf   
  Pos=Posf+1
EndWhile    
If IsAssigned(Varinner) Then Release Vars Varinner  EndIf

If ACHOU
   Then Return True
   Else Return False
EndIf

EndProc ;Verifica_Impressora_Termica()

;*******************************************************************************
;* Rotina para Verificar Impressora                                            *
;*******************************************************************************
Proc Verifica_Impressora()
                         
If IsFile(IMP_FILE)
   Then Ler_Captura(IMP_FILE)                     
   Else If Not Isfile(PrivDir()+"ETQ_IMP.SC")
           Then Return False
        EndIf
        Ler_Captura(PrivDir()+"ETQ_IMP")
EndIf        
NUMCOPIA=1

Op_Disp  =False
Op_DispG =False
Op_DispI =True

If Not IsAssigned(MSGDISPOSITIVO) Or MSGDISPOSITIVO="" 
   Then MSGDISPOSITIVO="Selecionar Destino"
EndIf

Dispositivo=2
Return True

EndProc ;Verifica_Impressora()

;*******************************************************************************
;* Rotina p/ Carregar Parƒmetro                                                *
;*******************************************************************************
Proc Variaveis_Impressao(PARAM)
Private PARAM

Switch
  Case PARAM="Salvar"   : ANT_NUMCOPIA          = NUMCOPIA         
                          ANT_DISPOSITIVO_OPCAO = DISPOSITIVO_OPCAO         
                          ANT_VSDGIMPOPCAO      = VSDGIMPOPCAO     
                                                      
  Case PARAM="Carregar" : NUMCOPIA              = ANT_NUMCOPIA         
                          DISPOSITIVO_OPCAO     = ANT_DISPOSITIVO_OPCAO    
                          PDFZEBRA              = False                       
                          VSDGIMPOPCAO          = ANT_VSDGIMPOPCAO                                
EndSwitch

EndProc ;Variaveis_Impressao()                                                           
;*******************************************************************************
;* Rotina p/ Carregar Parƒmetro                                                *
;*******************************************************************************
Proc Carrega_Parametros()

PARAM_EXPED_TIPO     = ""
PARAM_EXPED_ETIQUETA = ""
If Not IsBlank("\\Sistemas\\Vendas\\P_Exped")
   Then GetRecord "\\Sistemas\\Vendas\\P_Exped" SYS_EMPRESA_DEFAULT To REG_EXPED 
        If RetVal
           Then PARAM_EXPED_ETIQUETA = REG_EXPED["Script_Etiqueta"]
                PARAM_EXPED_TIPO     = REG_EXPED["Tipo_Expedicao"]
           Else Mensagem("Parametros n„o cadastrado para esta empresa !")
                Return False       
        EndIf
  Else Mensagem("N„o est„o configurados os parametros de expedicao para digita‡„o !")
       Return False         
EnDIf     

Return True

EndProc

;*******************************************************************************
;* Rotina para verificar a data do arquivo                                     *
;*******************************************************************************
Proc Verifica_Data_Arquivo()
Private ARQUIVO,DATA

ARQUIVO = PrivDir()+"Simbol.ini"
DATA    = Today()

If Not IsFile(ARQUIVO)
   Then Return
EndIf
                        
;---- Conferindo o Nome do Arquivo ---------------------------------------------                        
PosI = Search("\\",ARQUIVO)
If PosI > 0
   Then AUX_ARQ = ARQUIVO
        While PosI > 0
          AUX_ARQ = SubStr(AUX_ARQ,PosI+1,Len(AUX_ARQ))
          PosI=Search("\\",AUX_ARQ)
        EndWhile
   Else AUX_ARQ = ARQUIVO      
EndIf 
   
   
MSG   = ""               
LINHA = ""
DTA   = BlankDate()

{Tools} {Info} {Inventory} {Files} TypeIn ARQUIVO Enter
Scan For [Name]<>"" 
  If Upper([Name])=AUX_ARQ                     
     Then If DATA<>[Date]
             Then Deleta_Arquivo(ARQUIVO)
                  QuitLoop
          EndIf
  EndIf   
EndScan
ClearImage
       
EndProc ;Verifica_Data_Arquivo()  

;*******************************************************************************
;* Rotina para Calculos de Caracteristicas de Volumes                          *
;*******************************************************************************
Proc CALC_VOLUMES()
Private NVOL, PESOL, PESOB, DMARCA, NMARCA, DUNID, NUNID

NVOL   = 0
PESOL  = 0
PESOB  = 0
NMARCA = 0
NUNID  = 0
DUNID  = ""
DMARCA = ""

Moveto "ExpedIQ"
Scan
  AUX_UND = [Unidade Fiscal]
  GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
  If Not RetVal
     Then Loop
     Else AUX_VOL = REG_ITEM["Volumes"]
          AUX_PLQ = REG_ITEM["Peso Liquido"]
          AUX_PBR = REG_ITEM["Peso Embalagem"]
          AUX_MAR = REG_ITEM["Descricao da Marca"]
  EndIf   
  
  If DUNID<>AUX_UND
     Then DUNID = AUX_UND
          NUNID = NUNID+1
  EndIf   
  
  If DMARCA<>AUX_MAR
     Then DMARCA=AUX_MAR
          NMARCA=NMARCA+1
  EndIf
  NVOL = NVOL +NDecimal(([Quantidade_Expedida]*AUX_VOL),2)
  If AUX_UND="KG"
     Then PESOL=PESOL+NDecimal([Quantidade_Expedida],2)
          PESOB=PESOB+NDecimal([Quantidade_Expedida],2)
     Else PESOL=PESOL+NDecimal(([Quantidade_Expedida]*AUX_PLQ),2)
          PESOB=PESOB+NDecimal(([Quantidade_Expedida]*AUX_PBR),2)     
  EndIf
  
  If AUX_VOL>0 And AUX_VOL<1
     Then NUNID = NUNID+2
  EndIf
EndScan

If AUX_UND<>"KG"
   Then If (PESOB+PESOL)>0
           Then VSDGPESOBRUTO=PESOB+PESOL
           Else VSDGPESOBRUTO=BlankNum()
        EndIf
   Else VSDGPESOBRUTO=PESOB     
EndIf
If PESOL>0
   Then VSDGPESOLIQ=PESOL
   Else VSDGPESOLIQ=BlankNum()
EndIf
If NVOL>0
   Then If NVOL-Int(NVOL)>0
           Then NVOL=NVOL+1
        EndIf
        VSDGQTD=NVOL
   Else VSDGQTD=BlankNum()
EndIf
If NMARCA>1
   Then VSDGMARCA="DIVERSAS"
   Else VSDGMARCA=DMARCA
EndIf
If NUNID>1
   Then VSDGESPECIE="VOLUME(S)"
   Else GetRecord "\\Sistemas\\Estoque\\Unidades" DUNID To REG_UNIDADE
        DUNID = REG_UNIDADE["Descricao da Unidade"]
        VSDGESPECIE=DUNID
EndIf

Moveto "ExpedIQ"

EndProc   ;  (Calc_Volumes)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_DialogVolume(Disparo,Campo,Evento,Elemento)
Temp=True
MSGCAMPO=""
TECLA="F4=Calcular Volume"

If Disparo="OPEN"  Then AoCriarShowDialog() 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_NVOL"           : Campo="NO"
            Case Campo="TG_QTD"            : Campo="TG_NVOL"
            Case Campo="TG_ESPECIE"        : Campo="TG_QTD"
            Case Campo="TG_MARCA2"         : Campo="TG_ESPECIE"
            Case Campo="TG_PESOBRUTO"      : Campo="TG_MARCA2"
            Case Campo="TG_PESOLIQ"        : Campo="TG_PESOBRUTO"
            Case Campo="YES" Or Campo="NO" : Campo="TG_NVOL"
          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"] = -62  :
          ATIVA_FUNCAO=True
          CALC_VOLUMES()
          AcceptDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_NVOL"      : Campo="TG_QTD"
                         VSDGNVOL      = ControlValue("TG_NVOL")
                    Case Campo="TG_QTD"       : Campo="TG_ESPECIE"
                         VSDGQTD       = ControlValue("TG_QTD")
                    Case Campo="TG_ESPECIE"   : Campo="TG_MARCA2"
                         VSDGESPECIE   = ControlValue("TG_ESPECIE")
                    Case Campo="TG_MARCA2"    : Campo="TG_PESOBRUTO"
                         VSDGMARCA     = ControlValue("TG_MARCA2")
                    Case Campo="TG_PESOBRUTO" : Campo="TG_PESOLIQ"
                         VSDGPESOBRUTO = ControlValue("TG_PESOBRUTO")
                    Case Campo="TG_PESOLIQ"   : Campo="YES"
                         VSDGPESOLIQ   = ControlValue("TG_PESOLIQ")
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_NVOL"           :
       MSGCAMPO="Numero da Ordem de Volumes"
  Case Campo="TG_QTD"            :
       MSGCAMPO="Numero de Volumes"
  Case Campo="TG_ESPECIE"        :
       MSGCAMPO="Esp‚cie de Volumes"
  Case Campo="TG_MARCA2"          :
       MSGCAMPO="Marca dos Volumes"
  Case Campo="TG_PESOBRUTO"      :
       MSGCAMPO="Peso Bruto"
  Case Campo="TG_PESOLIQ"        :
       MSGCAMPO="Peso L¡quido"
EndSwitch
Monta_Prompt(MSGCAMPO,TECLA)
Return Temp

EndProc ;SD_DialogVolume()

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
Proc Volume()

VSDGNVOL      = [ExpedC->Numero Ordem de Volumes]
VSDGQTD       = [ExpedC->Numero de Volumes      ]
VSDGESPECIE   = [ExpedC->Especie de Volumes     ]
VSDGMARCA     = [ExpedC->Marca dos Volumes      ]
VSDGPESOBRUTO = [ExpedC->Peso Bruto             ]
VSDGPESOLIQ   = [ExpedC->Peso Liquido           ]
ATIVA_FUNCAO  = False

While True
  ShowDialog "Volume" Proc "SD_DialogVolume"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,-62  
    @ 05,12   Height 09 Width 77

    Label  @ 00,00 "N§Volume" For "TG_NVOL"
    Accept @ 01,01 Width 15 "N"  Picture "#*#" Tag "TG_NVOL" To VSDGNVOL
   
    Label  @ 00,16 "Quantidade" For "TG_QTD"
    Accept @ 01,17 Width 15 "N"  Picture "#*#" Tag "TG_QTD" To VSDGQTD

    Label  @ 00,32 "Esp‚cie" For "TG_ESPECIE"
    Accept @ 01,33 Width 20 "A17"  Picture "!*!" Tag "TG_ESPECIE" To VSDGESPECIE
    
    Label  @ 00,53 "Marca" For "TG_MARCA2"                     
    Accept @ 01,54 Width 20 "A17"  Picture "!*!" Tag "TG_MARCA2" To VSDGMARCA
    
    Label  @ 02,00 "Peso Bruto" For "TG_PESOBRUTO"
    Accept @ 03,01 Width 15 "N"  Picture "#*#.[##]" Tag "TG_PESOBRUTO" To VSDGPESOBRUTO
    
    Label  @ 02,16 "Peso Liquido" For "TG_PESOLIQ"
    Accept @ 03,17 Width 15 "N"  Picture "#*#.[##]" Tag "TG_PESOLIQ" To VSDGPESOLIQ
    
    Pushbutton @ 05,25 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 05,39 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If ATIVA_FUNCAO
     Then ATIVA_FUNCAO = False
          Loop
  EndIf
  
  Moveto "ExpedC"
  UnLockRecord
  FormKey
  
  If Rtrim(VSDGMARCA)<>""
     Then MSG = ""
          ACHOU_MARCA = False         
          {TableAdd} {\\Sistemas\\Estoque\\Marcas}         
          Scan
            If Rtrim(Upper(VSDGMARCA))=Upper([Descricao da Marca])
               Then ACHOU_MARCA = True
                    QuitLoop
            EndIf   
          EndScan
          ClearImage
          
          If Not ACHOU_MARCA And VSDGMARCA<>"DIVERSAS" 
             Then MSG       = "Marca "+VSDGMARCA+" n„o localizada no cadastro das MARCAS!"
                  VSDGMARCA = ""  
          EndIf
          
          If MSG <> ""
             Then UnLockRecord
  
                  Moveto "ExpedC"
                  IsLockRecord()
                
                  FormKey
                  Moveto "ExpedIQ"
                  If IsBlank([Referencia]) And IsBlank([Descricao do Item]) Then Del EndIf
                  
                  Mensagem(MSG)
                  Loop
          EndIf  
  EndIf
  
  Moveto "ExpedC"     
  [Marca dos Volumes      ]=VSDGMARCA
  [Numero Ordem de Volumes]=VSDGNVOL
  [Numero de Volumes      ]=VSDGQTD
  [Especie de Volumes     ]=VSDGESPECIE
  [Peso Bruto             ]=VSDGPESOBRUTO
  [Peso Liquido           ]=VSDGPESOLIQ
  UnLockRecord
  
  Moveto "ExpedC"
  IsLockRecord()
               
  FormKey
  Moveto "ExpedIQ"
  If IsBlank([Referencia]) And IsBlank([Descricao do Item]) Then Del EndIf
  
  QuitLoop
EndWhile  
  
EndProc ;Volume() 
                              
;*******************************************************************************
;* Rotina Principal Emissao Nota Fiscal ou Romaneio                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Vendas\\Bib_Bal"
SYS_VALOR()
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="0001"   EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""        EndIf
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""        EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""        EndIf
If Not IsAssigned(SYS_VERSAO_SO)       Then SYS_VERSAO_SO="Windows"      EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""          EndIf
If Not IsAssigned(NOMEMPRESA)          Then NOMEMPRESA=""                EndIf

DUPLICIDADE_ITEM      = False
ROTINA_EXPEDICAO      = "ETIQ"
PARAM_PEDIDO_POREXPED = False
CARREGA_SIMBOLOGIA    = False
TIPO_IMPRESSORA       = "ZEBRA"
TAMANHO_SIMBOLOGIA    = "P"

Switch
  Case SYS_CODIGO_CLIENTE="0359" Or
       SYS_CODIGO_CLIENTE="0361" Or
       SYS_CODIGO_CLIENTE="0318" Or
       SYS_CODIGO_CLIENTE="0370" Or
       SYS_CODIGO_CLIENTE="0382"  : CARREGA_SIMBOLOGIA    = True
                                    TIPO_IMPRESSORA       = "ZEBRA"
  Case SYS_CODIGO_CLIENTE="0345"  : PARAM_PEDIDO_POREXPED = True
                                    CARREGA_SIMBOLOGIA    = True
                                    TIPO_IMPRESSORA       = "BEMATECH"
EndSwitch

MSGCAMPO=""                                            
If IsFile(PrivDir()+"EXPEDC.ini")
   Then LeiaINI(PrivDir()+"EXPEDC.ini","LOCALIZA_CODIGO.S.null")
   Else ;NÆo tem necessidade de estar setando LOCALIZA_CODIGO de acordo com o PARAM_EXPED_TIPO
        ;pois existe o modo p/ gravar LOCALIZA_CODIGO e armazenar localmente a op‡Æo utilizada
        ;Caso ocorra exclusao do PARAM_EXPED_TIPO, o mesmo pode ser retirado
        LOCALIZA_CODIGO="LOC_CODITE"   
EndIf

If CARREGA_SIMBOLOGIA And TIPO_IMPRESSORA = "BEMATECH"
   Then Verifica_Data_Arquivo()     
EndIf

;---- Nome do Arquivo que ‚ utilizado para armazenar o nome da impressora ------
IMP_FILE=PrivDir()+"EXPEDI2.SC"
If IsFile(IMP_FILE) 
   Then LeiaINI(IMP_FILE,"NUMCOPIA.N.null")
        LeiaINI(IMP_FILE,"DISPOSITIVO_OPCAO.S.null")
        LeiaINI(IMP_FILE,"VSDGIMPOPCAO.S.null")
        LeiaINI(IMP_FILE,"Seta_Printer.S.null")

        If Seta_Printer=""
           Then LeiaINI(IMP_FILE,"Sys_Set_Porta.S.null")
                Seta_Printer= Sys_Set_Porta
        EndIf

        If NUMCOPIA=BlankNum() Or DISPOSITIVO_OPCAO="" Or VSDGIMPOPCAO=""
           Then Deleta_Arquivo(IMP_FILE)
           Else Variaveis_Impressao("Salvar")
        EndIf           
EndIf      

View NoWindow "P_Pedido"
CoEdit NoWindow "ExpedC"

;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Do_It!
        ClearAll
        Release Vars All
        Release Procs All
        return
EndIf
PickForm "2"

Moveto "\\Sistemas\\Estoque\\Itens" SetaCorRegistro("Invisivel")
Moveto "PedidoI"   SetHighLight Current Record 119 Field 119
Moveto "ExpedC"
PickForm "3"
OPCAO_FORM        = "F"

While True
  CHAVEC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=5
     Then If OPCAO_FORM="F"
             Then PickForm "3"
             Else PickForm "2"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll

If IsAssigned(Arquivo) And IsFile(Arquivo) Then Deleta_Arquivo(Arquivo) EndIf

Release Vars All
Release Procs All
