;** ExpedicV *******************************************************************
;*  Digitacao de Ordem de Expedicao - Varia‡äes                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 30/04/2019 por Bruno Carvalho            
;Ultima Alteracao: 06/05/2019 por Bruno Carvalho                          
;Motivo Alteracao: Ajustes p/ nÆo agrupar itens de pedido com varia‡äes diferentes
;Ultima Alteracao: 05/06/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado ABA [Volumes]
;Ultima Alteracao: 06/06/2019 por Bruno Carvalho                                                                      
;Motivo Alteracao: Adicionado Verifica_Sistema_Gerador() onde ‚ verificado o Sistema Gerador e a permissÆo de acesso  
;Motivo Alteracao: Alterado e ajustado tabela "ExpedOfC" p/ "ExpedC"
;Ultima Alteracao: 03/07/2019 por Bruno Carvalho 
;Motivo Alteracao: Ajustes na proc Calc_Itens() e adicionado proc Ajusta_Dados() p/ gravar valor total na cabe‡a quando concluir todo o processo
;Ultima Alteracao: 04/07/2019 por Bruno Carvalho 
;Motivo Alteracao: Adicionado Mensagem_Expedicao() p/ quando existir mensagem de expedi‡Æo por cliente ("DestExp" na Destinat)
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 06/01/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado Cliente_Inativo()
;Ultima Alteracao: 14/07/2020 por Bruno Carvalho                       
;Motivo Alteracao: Adicionado parƒmetro para [Sistema Gerador]="LT" na proc Verifica_Sistema_Gerador()
;Ultima Alteracao: 09/10/2020 por Anivel Augusto Rodrigues                       
;Motivo Alteracao: Ajustes aviso para fazer fechames
;Ultima Alteracao: 13/10/2020 por Bruno Carvalho                       
;Motivo Alteracao: Ajustes na cor da mensagem do aviso para fazer fechames

;*******************************************************************************
;* 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="5" 
            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 "5"
                  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 "5"
                  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 Verifica_Sistema_Gerador("EXCLUSAO")
                                             Then If QuerExcluir("")
                                                     Then GRAVA_LOG=True
                                                          EXCLUSAO_C()
                                                     Else UnLockRecord
                                                  EndIf
                                             Else UnLockRecord     
                                          EndIf
                                  EndIf
                          EndIf
                     Else UnLockRecord
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           Switch
             Case OPCAO_FORM="5" : PickForm "5"
             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 "5"
         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 Not Verifica_Sistema_Gerador("") 
           Then CHAVEC=9
                Return
        EndIf         
EndIf   

;------------------------------------------------------------------------------- 
;Excluir este processo em 06/06/2020, pois processo acima realzia esta etapa de verifica‡Æo pelo SISTEMA GERADOR incluso em 06/06/2019
If CHAVEC=0
   Then Moveto "ExpedIQ"
        If RecordStatus("New")=True
           Then Moveto "ExpedC"
                MSG =       Completa("Este lan‡amento pertence a rotina:",68," ")+"////"
                MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 17. ORDEM DE EXPEDICAO - ETIQUETA",68," ")
                Mensagem(MSG)
                CHAVEC=9
                Return
        EndIf
        Calc_Itens()
        Home End
        SetaCorRegistro("Padrao")
        Moveto "ExpedC"
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 "ExpedIq"
        SetaCorRegistro("Padrao")
        
        Moveto "ExpedC"
        Moveto [Numero_Carregamento]
        
   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_Carregamento" : 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 Verifica_Sistema_Gerador("EXCLUSAO")
                  Then If QuerExcluir("")
                          Then GRAVA_LOG=True
                               EXCLUSAO_C()
                               CHAVEC=9
                               QuitLoop
                       EndIf
               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_Carregamento": 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
            Moveto [Numero do Pedido]
               
       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_PEDIDO
                            If RetVal
                               Then If [Codigo da Empresa] <> REG_PEDIDO["Codigo da Empresa"]
                                       Then Mensagem("Empresa "+[Codigo da Empresa]+" difere da empresa do pedido "+REG_PEDIDO["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 [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_PEDIDO["Codigo"]
                            [Razao Social]=REG_PEDIDO["Razao Social"]
                            Release Vars REG_PEDIDO
                            
                            Mensagem_Expedicao()
                            QuitLoop
                    EndIf  
               Else Moveto [Codigo]     
            EndIf
       Case Field()="Codigo":
            If IsBlank([])
               Then Moveto [Razao Social]
               Else If CHAVEC=1
                       Then If Cliente_Inativo([Codigo])
                               Then Loop
                            EndIf   
                    EndIf
                    Mensagem_Expedicao()
                    QuitLoop
            EndIf   
       Case Field()="Razao Social":
            QuitLoop
       Case Field()="Numero_Carregamento" : QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile

EndProc  ;(DigitaC)

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

Moveto "ExpedC"
SetaCorRegistro("Padrao")
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=" PgDn=Finalizar  "
    MSGCAMPO=""
    AguardaTeclasPadraoIt2()
    
    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  ~R~ecarregar Pedido   " : " Recarregar itens do Pedido                       " : "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 = -115 Or RetVal = -116:
         Del
         FACA_CHAVEV = True
         CHAVEI      = 9
         Return    
    Case Retval="F3" Or RetVal=-61 :
         Del
         FACA_CHAVEV=True
         CHAVEI     = 9
         Return            
    Case RetVal="F5"  :
         Del
         Carrega_Pedido()
         QuitLoop  
    Case RetVal="F1": 
         If Field()="Item_Digitacao" 
            Then Moveto [Codigo do Item]
                 CONSULTAF1()
                 CODIGO = []
                 [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 : 
         Mensagem("Fun‡Æo nÆo habilitada para este processo!")
         ;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
                                   GRAVA_LOG=True
                                   EXCLUSAO_I()
                                   Release Vars GRAVA_LOG
                                   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
                 PostRecord KeyViol LeaveLocked
                 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]
        Moveto [Quantidade_Expedida]
   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()="Item_Digitacao"           : MSGCAMPO="Informe a Referˆncia do Item, [F1]Consultar tabela"
       ;Case Field()="Flag"                     : MSGCAMPO="ENTER=Imprimir Etiqueta"
      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]
                           CODIGO             = REFERENCIA
                           [Codigo do Item   ] = LOC_CODIGO_ITEM
                           [Descricao do Item] = LOC_DESCRICAO_ITEM
                           [Referencia       ] = REFERENCIA
                           [Item_Digitacao   ] = REFERENCIA
                    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() = "Variacoes"             : Moveto [Codigo da Cor_Tecido]
             Case Field() = "Quantidade_Expedida"   : Moveto [Variacoes           ]   
             OtherWise   : Left
           EndSwitch
      Case Retval="ENTER":  
           Switch
              Case Field() = "Item_Digitacao"  : 
                   If [Item_Digitacao]="" Then Loop EndIf
                   REFERENCIA          = [Item_Digitacao]
                   CODIGO              = REFERENCIA
                   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
                   [Descricao do Item] = LOC_DESCRICAO_ITEM
                   [Item_Digitacao   ] = REFERENCIA
                   Moveto [Codigo da Cor_Tecido]   
              Case Field() = "Codigo da Cor_Tecido"  : 
                   If [Codigo da Cor_Tecido]<>""
                      Then If Verifica_Item()
                              Then If [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
                                                   Moveto [Variacoes]
                                           EndIf
                                      Else Moveto [Variacoes]     
                                   EndIf        
                              Else Moveto [Descricao da Cor_Tecido]   
                           EndIf 
                      Else Moveto [Descricao da Cor_Tecido]           
                   EndIf        
              Case Field() = "Descricao da Cor_Tecido"  : Moveto [Variacoes]
              Case Field() = "Variacoes"                :
                   ACHOU_REF = 0 
                   AUX_REF = [Referencia          ] 
                   AUX_COD = [Codigo do Item      ]
                   AUX_COR = [Codigo da Cor_Tecido]
                   AUX_VAR = [Variacoes           ]
                   AUX_SEQ = [Sequencia           ]
                   Scan
                     If AUX_REF  = [Referencia          ] And 
                        AUX_COD  = [Codigo do Item      ] And
                        AUX_COR  = [Codigo da Cor_Tecido] And
                        AUX_VAR  = [Variacoes           ] And
                        AUX_SEQ <> [Sequencia           ] 
                        Then ACHOU_REF = [Sequencia] 
                             QuitLoop
                     EndIf
                   EndScan
                   Moveto [Sequencia]
                   Locate AUX_SEQ
                   If ACHOU_REF = 0 And [ExpedC->Numero do Pedido]<>""
                      Then Mensagem("NÆo ‚ poss¡vel a inclusÆo de itens!")
                           Moveto [Variacoes]
                      Else If ACHOU_REF <> 0
                              Then Del
                                   Moveto [Sequencia]
                                   Locate ACHOU_REF
                            EndIf
                            Moveto [Quantidade_Expedida]
                   EndIf       
              Case Field() = "Quantidade_Expedida"      :
                   If [Quantidade_Expedida]>1000
                      then Mensagem("Quantidade Inv lida !")
                           Loop
                   EndIf
                   If [Quantidade_Expedida]=0
                      Then [Quantidade_Expedida]=BlankNum()
                   EndIf
                   If [Quantidade_Expedida]=BlankNum()
                      Then Loop
                      Else QuitLoop
                   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="0374" Or
                   ;                              SYS_CODIGO_CLIENTE="0380" Or 
                   ;                              SYS_CODIGO_CLIENTE="0382" Or 
                   ;                              SYS_CODIGO_CLIENTE="0408" Or
                   ;                              SYS_CODIGO_CLIENTE="0404" Or
                   ;                              SYS_CODIGO_CLIENTE="0419" Or
                   ;                              SYS_CODIGO_CLIENTE="0431" :
                   ;                              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
									 
									 ;SaveTables
                   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 para digita‡Æo do Volume                                             *
;*******************************************************************************
Proc DIGITAV()

Moveto "ExpedC"
Moveto [Numero Ordem de Volumes]
SetaCorRegistro("Editar")

While True
  TECLA=" Esc=Retornar  "

  MSGCAMPO=Field()
  AguardaTeclasPadraoIt2()

  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
            "F3  ~C~alcular Volumes    " : " Calcular Volumes   " : "F3",
            Separator,
            "~C~ancelar                " : " Cancelar a Opera‡„o" : "CANCELAR"
          EndMenu
          To MenuVar
          echo off
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf
          RetVal=MenuVar
  EndIf

  Switch
  Case RetVal = -115 Or RetVal = -116 Or Retval="PGDN":
       FACA_CHAVEV = False
       CHAVEV      = 9
       Return
  Case RetVal = "F3" : CALC_VOLUMES("EXPED_ETIQ")
  Case Retval="ESC"  :
       If Field()="Numero Ordem de Volumes"
          Then If QuerDesfazer("")
                  Then CHAVEV=9
                       FACA_CHAVEV=False
                       Undo
                       QuitLoop
               EndIf
          Else Left
       EndIf
  Case Retval="ENTER" : Right
       If Field() = "Situacao do Pedido" 
          Then CHAVEV=9
               FACA_CHAVEV=False
               QuitLoop
       EndIf
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  EndSwitch
EndWhile

EndProc ;DIGITAV()

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

If [Codigo da Cor_Tecido]<>""  
   Then 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()
        Moveto [Referencia]
        
        TIPO_ITEM = "T"
        Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, TIPO_ITEM, VSD_I_Codigo_Cor_Tecido
         
        ;---- 2¦ Tentativa ao localizar o item pelo tipo do item ----------------
        If Not RetVal   
           Then TIPO_ITEM = "P"
                Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, TIPO_ITEM, VSD_I_Codigo_Cor_Tecido
        EndIf
         
        If RetVal
           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("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

If RecordStatus("New")=True
   Then Mensagem("A Ordem de Expedi‡„o deve ter pelo menos 1(um) Item Ok !")  
        Return False
EndIf

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"
        
        If PARAM="ET_Z343"
           Then FileWrite Append Arquivo From "A170,325,0,3,1,1,N,\""+TIT2+"\"\n"
                FileWrite Append Arquivo From "A430,350,0,3,1,1,N,\""+TIT3+"\"\n\n"
           Else FileWrite Append Arquivo From "A170,325,0,3,1,1,N,\""+TIT2+"\"\n\n"
        EndIf    
                      
        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
        If PARAM="ET_Z343"
           Then TIT3 = "Expedicao: "+ORDEXP
        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()

VSQTDP = BlankNum()
VSQTDE = BlankNum()
Moveto "ExpedIQ"
Scan
  VSQTDP  = VSQTDP  + [Quantidade_Pedido     ]
  VSQTDE  = VSQTDE  + [Quantidade_Expedida   ]
EndScan

If VSQTDP =0 Then VSQTDP =BlankNum() EndIf
If VSQTDE =0 Then VSQTDE =BlankNum() EndIf

EndProc   ; (Calc_Itens)

;*******************************************************************************
;* Rotina para Ajustar dados na cabe‡a                                         *
;*******************************************************************************
Proc Ajusta_Dados()

Calc_Itens()

Moveto "ExpedC"
[Quantidade_Pedido     ]=VSQTDP
[Quantidade_Expedida   ]=VSQTDE

EndProc   ; (Ajusta_Dados)

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc Verifica_Sistema_Gerador(PARAM)

If [Sistema Gerador]<>"" And [Sistema Gerador]<>SISTEMA_GERADOR
   Then MSG = Completa("Este lan‡amento pertence a rotina:",68," ")+"////"
        Switch
          Case [ExpedC->Sistema Gerador] = "IC" : MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 18. ORDEM DE EXPEDICAO - PEDIDO     ",68," ")
          Case [ExpedC->Sistema Gerador] = "LT" : MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 23. ORDEM DE EXPEDICAO - LOTE       ",68," ")
          Case [ExpedC->Sistema Gerador] = "IQ" : MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 17. ORDEM DE EXPEDICAO - ETIQUETA   ",68," ")
         ;Case [ExpedC->Sistema Gerador] = "IV" : MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 22. ORDEM DE EXPEDICAO - VARIA€åES  ",68," ")
          Case [ExpedC->Sistema Gerador] = "OF" : MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > 21. ORDEM DE EXPEDICAO - FATURAMENTO",68," ")
          Case [ExpedC->Sistema Gerador] = "I3" : MSG = MSG + Completa("FATURAMENTO > EXPEDICAO > ??. ORDEM DE EXPEDICAO",68," ") 
        EndSwitch
        If PARAM = "EXCLUSAO"
           Then MSG = MSG + "////"
                MSG = MSG + Completa("NÆo ‚ poss¡vel a exclusÆo deste registro!",68," ")
        EndIf
        Mensagem(MSG)
        CHAVEC=9
        Return False
EndIf

Return True

EndProc ;Verifica_Sistema_Gerador() 

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc EXCLUSAO_C()
Private ANT_GRAVA_LOG

If Not Isassigned(GRAVA_LOG) Then GRAVA_LOG=False EndIf

ANT_GRAVA_LOG = GRAVA_LOG
GRAVA_LOG     = False

Moveto "ExpedIQ"
While RecordStatus("New")=False
  EXCLUSAO_I()
EndWhile
Moveto "ExpedC"
GRAVA_LOG = ANT_GRAVA_LOG
If GRAVA_LOG Then Grava_LogEx("Expedic2") EndIf
Del
EndProc   ; (Exclusao_C)

;*******************************************************************************
;* Exclusao do Item                                                            *
;*******************************************************************************
Proc EXCLUSAO_I()
If Not Isassigned(GRAVA_LOG) Then GRAVA_LOG=False EndIf

Moveto "ExpedIQ"
ITEM=[Sequencia]
If GRAVA_LOG Then Grava_LogEx("Item da Expedic2") EndIf
Del
EndProc  ; (Exclusao_I)

;*******************************************************************************
;* 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 para Carregar Pedido                                                 *
;*******************************************************************************
Proc Carrega_Pedido()
Private codite

if isblank([ExpedC->Numero do Pedido])
   Then Moveto "ExpedIq"
        Return
EndIf

Moveto "PedidoI"
Moveto [Numero do Pedido]
Locate [ExpedC->Numero do Pedido]
If Not RetVal
   Then Moveto "ExpedIq"
        Return
EndIf

Moveto "ExpedIq"
Scan
  [Quantidade_Pedido]=BlankNum()
EndScan

while RecordStatus("New")=True
   Del
Endwhile        

Moveto "PedidoI"
While [Numero do Pedido]=[ExpedC->Numero do Pedido]
  If IsBlank([Quantidade Faturada]) Or [Quantidade Faturada]>=0
     Then SDPED=[Pedidoi->Quantidade]-[PedidoI->Quantidade Faturada]
          If SDPED>0
             Then ACHOU_PEDIDO = False
                  Moveto "ExpedIq"
                  Moveto [Codigo do Item]
                  Locate [PedidoI->Codigo do Item]
                  If RetVal
                     Then While [Codigo do Item] = [PedidoI->Codigo do Item]
                            If [Variacoes]=[PedidoI->Variacoes]
                               Then ACHOU_PEDIDO = True
                                    QuitLoop
                            EndIf                        
                            Skip
                            If Eot() Then QuitLoop EndIf
                            Locate Next [PedidoI->Codigo do Item]
                            If Not RetVal Then QuitLoop EndIf 
                          EndWhile     
                  EndIf
                  If Not ACHOU_PEDIDO 
                     Then End
                          If [Referencia]<>"" Or [Codigo do Item]<>""
                             Then Down
                          EndIf
                          [Sequencia              ] = [PedidoI->Item do Pedido         ]
                          [Codigo do Item         ] = [PedidoI->Codigo do Item         ]
                          [Codigo da Cor_Tecido   ] = [PedidoI->Codigo da Cor_Tecido   ]
                          [Descricao da Cor_Tecido] = [PedidoI->Descricao da Cor_Tecido]
                          [Item_Digitacao         ] = [PedidoI->Referencia             ]
                          [Variacoes              ] = [PedidoI->Variacoes              ]
                  EndIf
                  [Quantidade_Pedido] = [Quantidade_Pedido] + SDPED 
                  UnLockRecord

                  Moveto "PedidoI"
          EndIf
  EndIf
  Skip
  If EOT() Then QuitLoop Endif
EndWhile

Moveto "ExpedIq"
Scan
  If [Quantidade_Expedida]=0 Then [Quantidade_Expedida]=BlankNum() EndIf
EndScan
Calc_Itens()

Getrecord "PedidoC" [ExpedC->Numero do Pedido] To REG_PEDC
If RetVal
  Then Moveto "ExpedC"
       If [Codigo da Empresa      ]<>REG_PEDC["Codigo da Empresa"]       Then [Codigo da Empresa      ]=REG_PEDC["Codigo da Empresa"]       EndIf
       If [Nome Fantasia Empresa  ]<>REG_PEDC["Nome Fantasia Empresa"]   Then [Nome Fantasia Empresa  ]=REG_PEDC["Nome Fantasia Empresa"]   EndIf
       If [Codigo                 ]<>REG_PEDC["Codigo"]                  Then [Codigo                 ]=REG_PEDC["Codigo"]                  EndIf
       If [Razao Social           ]<>REG_PEDC["Razao Social"]            Then [Razao Social           ]=REG_PEDC["Razao Social"]            EndIf
       If [Codigo do Representante]<>REG_PEDC["Codigo do Representante"] Then [Codigo do Representante]=REG_PEDC["Codigo do Representante"] EndIf
       If [Nome Fantasia Represent]<>REG_PEDC["Nome Fantasia Represent"] Then [Nome Fantasia Represent]=REG_PEDC["Nome Fantasia Represent"] EndIf
EndIf

Moveto "ExpedIq"

EndProc ; (Carrega_Pedido)

;*******************************************************************************
;* 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 controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()

DIGITAI()
Calc_Itens()

EndProc

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

FACA_DIGITAC = True
FACA_CHAVEI  = False
FACA_CHAVEV  = False

If ([ExpedC->Situacao da OE]="FATURADO" Or [ExpedC->Situacao da OE]="LIBERADO" ) and not CHECA_SUPERVISOR() 
   Then FACA_DIGITAC=false
EndIf   

While FACA_DIGITAC
  MSGCAMPO=""
  DIGITAC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=1
     Then Controle_Dia()
          [Situacao da OE ]="EM ABERTO"
          [Sistema Gerador] = "IV"
          Carrega_Pedido()
  EndIf
  While FACA_CHAVEI
    While True
      MSGCAMPO=""
      CHAVEI()
      If CHAVEI=9 Then QuitLoop EndIf
      Controla_EdicaoI()
    EndWhile
    While FACA_CHAVEV
      DIGITAV()
      If CHAVEV=9 Then QuitLoop EndIf
    EndWhile
  EndWhile
EndWhile
Ajusta_Dados()
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                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Cadastro\\Bib_Proc,"+        
        "\\Sistemas\\Vendas\\Bib_Bal,"+
        "\\Sistemas\\Vendas\\Bib_Vend"
        
SYS_VALOR()

MSG=""
COR_MENSAGEM="PRETO"

{Ask}{ExpedC}
Moveto [Numero da OE      ]       Typein "Calc Count as Qtde" 
Moveto [Data_Inclusao     ]       Typein "<(today-547)" 
do_it!
if not IsEmpty("Answer")
   then
        MSG=MSG+"Existe(m) "+strval([Qtde])+" Ordem(s) de Expedi‡Æo(äes) criadas !   // //"
        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   
ClearAll
if MSG<>"" then Mensagem(MSG) endif
Release Vars COR_MENSAGEM,MSG 

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="0001"   EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999"     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_NOME_USUARIO)    Then SYS_NOME_USUARIO=""          EndIf
If Not IsAssigned(NOMEMPRESA)          Then NOMEMPRESA=""                EndIf

Switch
  Case SYS_CODIGO_CLIENTE="0429" Or SYS_CHAPA_USUARIO="9999"  : ROTINA_LIBERADA = True
  OtherWise                                                   : ROTINA_LIBERADA = False 
EndSwitch

If Not ROTINA_LIBERADA
   Then Mensagem("Rotina indispon¡vel !//Verificar com o Suporte VISE !")
        Return
EndIf              

SISTEMA_GERADOR       = "IV"
DUPLICIDADE_ITEM      = False
CARREGA_SIMBOLOGIA    = False
TIPO_IMPRESSORA       = "ZEBRA"
TAMANHO_SIMBOLOGIA    = "P"
LOCALIZA_CODIGO       = "LOC_CODREF"
LOC_POR               = "Referˆncia"
MSGCAMPO              = ""
PARAM_PEDIDO_POREXPED = True
ROTINA_EXPEDICAO      = "ETIQ"

;CARREGA_SIMBOLOGIA    = True
;TIPO_IMPRESSORA       = "ZEBRA"

;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 "5"

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 "5"
          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
