;** P_DEST *********************************************************************
;*  Parƒmetro para cadastrar destinatarios - Fac‡Æo                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 23/10/2013 por Bruno Carvalho
;Ultima Alteracao: 29/10/2013 por Bruno Carvalho 
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 31/08/2015 por Kamila Gomes 
;Motivo Alteracao: Adicionado Tabela de Pre‡o
;Ultima Alteracao: 25/05/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes no campo TG_ZERADO p/ as op‡äes serem verificadas pelo F1 
;Ultima Alteracao: 30/05/2018 por Bruno Carvalho
;Motivo Alteracao: Movido TG_ZERADO na BibShow e ajustado neste script

;Foi observado que TG_ZERADO nÆo esta sendo usado no FORM,m as foi ajustado por padrÆo como todos 
;O Destino OUTROS por ser obrigat¢rio, ficou sendo o valor de "X" nÆo tendo entÆo uma numera‡Æo em espec¡fico  

;*******************************************************************************
;* Rotina para Selecionar Empresa                                              *
;*******************************************************************************
Proc ChaveC()
Monta_Opcoes("Empresas","")

While True
  Moveto [Codigo da Empresa]
  TECLA="F1=Consulta  =Empresañ"
  
  MSGTELA="Informe a empresa !"
  
  SetaCorRegistro("Editando")
  AguardaTeclasPadrao()
                                                                    
  tmpretval=retval

  If Retval="F1"
     Then If Seleciona_Opcoes("Empresas","")
             Then [Nome Fantasia Empresa]=Registro_F1["Nome Fantasia Empresa"]
                  RetVal="ENTER"
          EndIf
  EndIf
  
  Switch
  Case RetVal=-94 : MsgTeclasPadrao()
  Case Retval="UP"   Or
       Retval="HOME" Or
       Retval=-72    Or
       Retval=-75     :
       tmpretval=retval

       EMPRESA=[P_DESTC->Codigo da Empresa]
       Do_It!
       ClearAll
       Empty "P_DESTC" 
       
       View "P_DESTT"
       Coedit "P_DESTC"
       PickForm "F" 
       If Not IsBlank(EMPRESA)
          Then [Codigo da Empresa]=EMPRESA
       EndIf   

       Moveto [Lookup_Empresa]
       Ativa_Lookup()
       If IsBlank(EMPRESA) Or tmpRetval="HOME"
          Then HOME
          Else Moveto [Codigo da Empresa]
               Locate EMPRESA
               Skip -1
               If BOT() Then Beep EndIf
       EndIf
       KeyPress "F2"
       [Codigo da Empresa]=[Lookup_Empresa]
       Resynckey
  Case Retval="DOWN" Or
       Retval="END"  Or 
       Retval=-80    Or
       Retval=-77     :
       
       EMPRESA=[P_DESTC->Codigo da Empresa]
       Do_It!
       ClearAll
       Empty "P_DESTC" 
       
       View "P_DESTT"
       Coedit "P_DESTC"
       PickForm "F" 
       If Not IsBlank(EMPRESA)
          Then [Codigo da Empresa]=EMPRESA
       EndIf       
       
       Moveto [Lookup_Empresa]
       Ativa_Lookup()
       If IsBlank(EMPRESA) Or tmpRetval="END"
          Then Down
          Else Moveto [Codigo da Empresa]
               Locate EMPRESA
               Skip
               If EOT() Then Beep EndIf
       EndIf
       KeyPress "F2"
       [Codigo da Empresa]=[Lookup_Empresa]
       Resynckey
  Case Retval="ESC":
       Executa=False
       Return
  Case Retval="ENTER":
       If IsBlank([]) Then Loop EndIf
       []=ALINH()
       EMPRESA=[Codigo da Empresa]
       
       Moveto [Lookup_Empresa]
       Ativa_Lookup()
       Moveto [Codigo da Empresa]
       Locate EMPRESA
       If RetVal
          Then CopyToArray Registro_Empresas
               KeyPress "F2"
               [Nome Fantasia Empresa]=Registro_Empresas["Nome Fantasia Empresa"]
               Return True
          Else KeyPress "ESC"
               Mensagem("Empresa ["+EMPRESA+"] n„o cadastrada !")
               [Codigo da Empresa    ]=""
               [Nome Fantasia Empresa]=""
       EndIf
  EndSwitch
EndWhile

EndProc  ; ChaveC()

;*******************************************************************************
;* Rotina para Selecionar Filho                                                *
;*******************************************************************************
Proc ChaveI()
Resynckey

Moveto "P_DESTI"

While True
 
  SetaCorRegistro("Editar")

  Moveto [Destino]
  End                 
  Down
  
  While True
    If Field()="Destino"
       Then Monta_Opcoes("Op‡”es de Desinat rio","")
            TECLA="F1=Consulta  PGDN=Finalizar" 
       Else TECLA=""
    EndIf
  
    AguardaTeclasPadrao()

    Switch
    Case RetVal="F3" : SemFicha()
    Case RetVal=-33 : SemFuncao()
    Case RetVal=-94  : MsgTeclasPadrao()
    Case Retval="F1" : 
         If Field()="Destino"
            Then Seleciona_Opcoes("Op‡”es de Desinat rio","CR")
         EndIf 
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" Or RetVal=-72 Or RetVal=-75 :
         While True
           PAGINA("P_DESTI","MR")
           If EDITAR="S"
              Then CHAVE=0
                   Controla_EdicaoC()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then DEL
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="PGDN" :
         If Not Verifica_Sequencia_Recurso("")
            Then Del 
                 QuitLoop
         EndIf   
         Executa=False
         Del
         Grava_Registro("P_DESTT")
         CHAVE=9
         Return
    Case Retval="ESC" : 
         If Not Verifica_Sequencia_Recurso("")
            Then Del 
                 QuitLoop
         EndIf   
         Del
         Grava_Registro("P_DESTT")
         CHAVE=9
         Return
    Case RetVal="ENTER":         
         If IsBlank([])
            Then Mensagem("Para inserir um novo destino, ser  preciso entrar em contato com o//suporte da Vise Inform tica !")
                 Loop
            Else VSDGDESTINO = []   
         EndIf
         
         Del
         Locate VSDGDESTINO
         If Retval
            Then CHAVE=0
            Else CHAVE=1
                 End Down
                 [] =  VSDGDESTINO
                 
                 GetRecord "\\Sistemas\\Faccao\\P_Facd" [Destino] TO VSDGDESTINO
                 If Retval
                    Then [Retorno_Destino  ] = VSDGDESTINO["Retorno_Destino"]
                         [Descritivo       ] = VSDGDESTINO["Descritivo"]
                         [Titulo Relatorio ] = VSDGDESTINO["Titulo Relatorio"]
                 EndIf
                 Release Vars VSDGDESTINO        
         EndIf
         Return True
    EndSwitch
  EndWhile
EndWhile
ImageRights

EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Moveto [Utiliza Destino]                     

RETORNO                = [Retorno_Destino]
ANT_UTILIZA_RELATORIO  = [Utiliza Relatorio]
  
While True

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

  If Field()="Destino" Or Field()="Codigo do Requisitante" Then TECLA=TECLA+"  F1=Tabela" EndIf
  If Field()="Descritivo" Then TECLA=TECLA+"  ENTER=Prosseguir" EndIf
  
  Switch 
    Case Field()="Destino"                : MSGCAMPO="Destino"
    Case Field()="Utiliza Destino"        : MSGCAMPO="Utiliza Destino? Sim/Nao"
    Case Field()="Baixa Estoque"          : MSGCAMPO="Remessa para "+[Destino]+" -> Baixa Estoque Semi-Acabado? Sim/Nao"
    Case Field()="Utiliza Relatorio"      : MSGCAMPO="Ordem da coluna no relat¢rio de Posi‡„o do Estoque/Grade"
    Case Field()="Codigo do Requisitante" : MSGCAMPO="Informe o C¢digo do Requisitante !"
    Case Field()="Descritivo"             : MSGCAMPO="Informe uma descri‡„o para este Destino !"
    Case Field()="Retorno_Destino"        : MSGCAMPO="Informe o retorno como (P) Produto Acabado ou (S) Semi-Acabado !"
    Case Field()="Utiliza Preco_Tamanho"  : MSGCAMPO="Utiliza Tabela de Preco por Tamanho? Sim/Nao"                   
    Case Field()="Codigo da Tabela"        : MSGCAMPO="Informe a Tabela de Preco padrao para este Destino"              
  EndSwitch 
    
  If Field()="Destino"
     Then Monta_Opcoes("Op‡”es de Desinat rio","")
  EndIf
  
  If Field()="Codigo do Requisitante"
     Then Monta_Opcoes("Requisitante","")
   EndIf
   
  If Field()="Codigo da Tabela"
     Then Monta_Opcoes("Tabela",[Utiliza Preco_Tamanho])
   EndIf 
  
  Prompt TECLA
  SetaCorRegistro("Editando")
  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

  Switch
  Case Retval="F1" :
       If Field()="Codigo do Requisitante"
          Then Seleciona_Opcoes("Requisitante","CR")
       EndIf
        
       If Field()="Destino"
          Then Seleciona_Opcoes("Op‡”es de Desinat rio","CR")
       EndIf
       
       If Field()="Codigo da Tabela"
          Then Seleciona_Opcoes("Tabela","CR")
       EndIf
               
  Case Retval="ESC":
       If Field()="Destino"
          Then If QuerDesfazer("")
                  Then If CHAVE=1
                          Then Del
                          Else If RecordStatus("Modified")
                                  Then Undo
                               EndIf
                       EndIf
                       CHAVE=9
                       QuitLoop
               EndIf
          Else If [Destino]="OUTROS"
                  Then If Field()="Retorno_Destino" 
                          Then Moveto [Baixa Estoque]
                          Else Left
                       EndIf
                  Else Left     
               EndIf
       EndIf
  Case Retval="ENTER":  
       Switch             
         Case Field()="Utiliza Destino" : 
              If IsBlank([])  
                 Then []="S" 
              EndIf
              If [Destino]="OUTROS" 
                 Then [Utiliza Relatorio]="X"
              EndIf
              Right
         Case Field()="Baixa Estoque" :        
              If IsBlank([])  
                 Then []="N" 
              EndIf
              If [Destino]="OUTROS"
                 Then Moveto [Retorno_Destino]
                 Else Right
              EndIf
          Case Field()="Utiliza Preco_Tamanho" :
              If IsBlank([])
                 Then []="N"
              EndIf
              If []="S"
                 Then If Bloqueia_Rotina("P_DEST") Then []="N" loop EndIf
              EndIf
              Right
         Case Field()="Codigo da Tabela" :
              If [Utiliza Preco_Tamanho]="S" And IsBlank([])
                 Then FastMSg("Obrigatorio informar uma tabela !")
                      loop
              EndIf
              Right
         Case Field()="Utiliza Relatorio" :        
              If Not IsBlank([])
                 Then If Verifica_Sequencia_Recurso("Verifica")
                         Then Right
                         Else Loop 
                      EndIf    
                 Else Right      
              EndIf
         Case Field()="Retorno_Destino" :
              If IsBlank([])
                 Then Mensagem("Informe o retorno como (P) Produto Acabado ou (S) Semi-Acabado!")
                      Loop              
              EndIf
              
              MSG_S = "Deve ser informado o retorno como (S) de Semi-Acabado !"
              MSG_P = "Deve ser informado o retorno como (P) de Produto Acabado !"
              
              If []="S"
                 Then MSG_C = "Deseja alterar o retorno para (S) de Semi-Acabado ?"
                 Else MSG_C = "Deseja alterar o retorno para (P) de Produto Acabado ?"
              EndIf    
                                  
              Switch
                Case [Destino] = "ACABAMENTO"  : If []<>"S" Then Mensagem(MSG_S) Loop EndIf
                Case [Destino] = "BORDARIA"    : If []<>"S" Then Mensagem(MSG_S) Loop EndIf
                Case [Destino] = "CONSERTO"    : If []<>"S" Then Mensagem(MSG_S) Loop EndIf
                Case [Destino] = "ESTAMPARIA"  : If []<>"S" Then Mensagem(MSG_S) Loop EndIf
                Case [Destino] = "FACCAO"      : If []<>"P" Then Mensagem(MSG_P) Loop EndIf
                Case [Destino] = "FACCAO-SA"   : If []<>"S" Then Mensagem(MSG_S) Loop EndIf
                Case [Destino] = "INTERNO"     : If []<>"P" Then Mensagem(MSG_P) Loop EndIf
                Case [Destino] = "LAVANDERIA"  : If []<>"S" Then Mensagem(MSG_S) Loop EndIf
                Case [Destino] = "OUTROS"      : If []<>RETORNO And RETORNO<>""
                                                    Then ConfGeral(MSG_C) 
                                                         If OK<>"S"
                                                            Then Loop 
                                                         EndIf
                                                 EndIf        
              EndSwitch 
              Right
         Case Field()="Codigo do Requisitante" :
              If Not Checa_Opcoes("Requisitante",[])
               Then Mensagem("Requisitante inv lido !")
                    Loop     
               Else If IsBlank([])
                       Then Loop
                    EndIf 
            EndIf
            Right
         Case Field()="Descritivo" :
            CampoAnt=Field()
            Edita_Memo("Descritivo",08,01,15,76,"Descritivo")
            Moveto Field CampoAnt 
            Return  
         OtherWise                    : Right    
       EndSwitch   
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile

EndProc  ; (Digita)

;*******************************************************************************
;* Rotina para Verificar a Sequencia do Recurso a ser exibido no Relatorio     *
;*******************************************************************************
Proc Verifica_Sequencia_Recurso(PARAM)
Private ANT_FIELD,SEQ,CONTADOR_ARRAY,CONTADOR,MSG_UR,NUM_SEQ,ii,ui,PARAM

ANT_FIELD = Field()
SEQ       = [Destino]

CONTADOR_ARRAY = 0
DynArray AUX_CONTADOR[]

;---- Apurando as sequencias inseridas nas colunas UTILIZA RELATORIO -----------
Moveto [Utiliza Relatorio]
Scan
  If []<>"" And []<>"X" And SEQ<>[Destino] 
     Then CONTADOR_ARRAY=CONTADOR_ARRAY+1
          AUX_CONTADOR[CONTADOR_ARRAY] = NumVal([])
  EndIf
EndScan

;---- Ordenando array na sequencia a ser utilizada no relat¢rio ----------------
If DynArraySize(AUX_CONTADOR)=0
   Then Return True 
EndIf
   
CONTADOR_ARRAY = 0
Array CONTADOR[DynArraySize(AUX_CONTADOR)]
For ii From 1 To DynArraySize(AUX_CONTADOR)
  If AUX_CONTADOR[ii]="" Then Loop EndIf
  NUM_SEQ = AUX_CONTADOR[ii]
  ALINHOU = True
  For ui From 1 To DynArraySize(AUX_CONTADOR)
    If NUM_SEQ > AUX_CONTADOR[ui]
       Then ALINHOU=False 
    EndIf   
  Endfor
  If ALINHOU
     Then CONTADOR_ARRAY = CONTADOR_ARRAY + 1
          CONTADOR[CONTADOR_ARRAY] = NUM_SEQ
          AUX_CONTADOR[ii] = ""
          ii=0
  EndIf
EndFor

Moveto [Destino]
Locate SEQ
If PARAM="" 
   Then If [Destino]<>""
           Then Return True
        EndIf
        SEQUENCIA_OK = True
        MSG_UR       = ""
        For ii From 1 To ArraySize(CONTADOR)
          If CONTADOR[ii]<>ii
             Then SEQUENCIA_OK = False
                  Moveto [Utiliza Relatorio] 
                  Locate StrVal(CONTADOR[ii])
                  MSG_UR = "A sequˆncia da coluna UTILIZA RELATORIO est  incorreta//"+
                           "Para prosseguir ser  preciso organizar a sequˆncia!////"+
                           "DESTINO: "+[Destino]+"   Sequˆncia: "+StrVal(CONTADOR[ii])
                  QuitLoop
          EndIf 
        EndFor
        Moveto [Destino]
        Locate SEQ
        Moveto Field ANT_FIELD
        If SEQUENCIA_OK
           Then Return True
           Else Mensagem(MSG_UR)
                Return False
        EndIf
EndIf

;---- Verificando se h  ocorrˆncia da sequˆncia informada pelo usu rio ---------
Moveto [Utiliza Relatorio]
MSG_UR = ""
For ii from 1 To ArraySize(CONTADOR)
  If NumVal([])=CONTADOR[ii]
     Then Locate StrVal(CONTADOR[ii])
          MSG_UR = "Sequˆncia "+StrVal(CONTADOR[ii])+" localizada no destino "+[Destino]+"!"
          QuitLoop
  EndIf  
EndFor

;---- Posicionando no meu registro atual de onde o processo foi disparado ------
Moveto [Destino]
Locate SEQ
Moveto [Utiliza Relatorio]

If MSG_UR<>""
   Then Mensagem(MSG_UR)
        []=""
        Return False
EndIf

If NumVal([])>9
   Then Mensagem("Apenas 8 Destinos ser„o mostrados no relat¢rio !")
        []=""
        Return False
EndIf

;---- Pr¢ximo n£mero sequencial a ser verificado -------------------------------  
If ANT_UTILIZA_RELATORIO=[Utiliza Relatorio]
   Then Return True
EndIf

If ArraySize(CONTADOR)=0
   Then NUM_SEQ = 1
   Else NUM_SEQ = CONTADOR[ArraySize(CONTADOR)]+1
EndIf

If NumVal([Utiliza Relatorio]) <= NUM_SEQ
   Then Return True
EndIf

If NumVal([])<>NUM_SEQ
   Then Mensagem("O n£mero a ser informado na coluna UTILIZA RELATORIO deve ser sequencial//Pr¢ximo n£mero: "+StrVal(NUM_SEQ))
        []=""
        Return False
EndIf        
              
Return True
                              
EndProc ;Verifica_Sequencia_Recurso()

;*******************************************************************************
;* Rotina para Gravar Registro                                                 *
;*******************************************************************************
Proc Grava_Registro(PARAM)
Private PARAM,Aux_Destino,Destino,Cont_Dest
                               
Switch
  Case PARAM = "P_DESTT" :
       Cont_Dest = 0
       DynArray Destino[]
       DynArray Aux_Destino[]
       
       Moveto "P_DESTI"   
       Scan
         If [Utiliza Destino]="S"
            Then Cont_Dest = Cont_Dest + 1
                 Destino[Cont_Dest] = [P_DESTI->Destino]
                 Aux_Destino[Cont_Dest] = Format("W1",[Retorno_Destino])+Format("W80",[Descritivo])
         EndIf        
       EndScan
       
       Moveto "P_DESTC"
       UnLockRecord 
       FormKey
              
       Moveto "P_DESTT"
       Moveto [Codigo da Empresa]
       Locate [P_DESTC->Codigo da Empresa]
       If RetVal
          Then While [Codigo da Empresa]=[P_DESTC->Codigo da Empresa]
                 Del
                 Home
                 Locate Next [P_DESTC->Codigo da Empresa]
                 If Not RetVal Then QuitLoop EndIf 
               EndWhile
       EndIf
               
       For Cont_Dest From 1 To DynArraySize(Destino)
          End Down
          [Codigo da Empresa    ]=[P_DESTC->Codigo da Empresa]      
          [Destino              ]=Destino[Cont_Dest]
          [Utiliza Destino      ]="S"
          [Retorno_Destino      ]=SubStr(Aux_Destino[Cont_Dest],1,1)
          [Descritivo           ]=SubStr(Aux_Destino[Cont_Dest],2,80)
          ;[Utiliza Preco_Tamanho]=
       EndFor                              
       UnLockRecord
       
       Moveto "P_DESTC"
       FormKey
       Moveto "P_DESTI" 
EndSwitch
                              
EndProc ;Grava_Registro("P_DESTT")
                                   
;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para Montar Titulos na Form                                          *
;*******************************************************************************
Proc Exclusao_Registro()
Moveto "P_DESTI"
While RecordStatus("New")=False
  Del
EndWhile

CHAVE=8
EndProc

;*******************************************************************************
;* Carrega Array e Verifica Altera‡Æo                                          *
;*******************************************************************************
Proc Carrega_Array()
Private WHI,WHK

WHI=0
WHK=0

DynArray Array_Lista1[]
DynArray Array_Lista2[]                       

If Not IsTable("\\Sistemas\\Faccao\\Destino")
   Then Return
EndIf
   
;**** Gerando Tabela Temporarias ***********************************************
If Not IsAssigned(Tabela_Destino)
   Then {Ask} {\\Sistemas\\Faccao\\Destino} Check
        Moveto [Utiliza Destino  ] TypeIn "S"
        Moveto [Utiliza Relatorio] TypeIn "Not S"
        Do_It!
        ClearAll
        
        Tabela_Destino=Cria_Temp(PrivDir())
        Copy "Answer" Tabela_Destino 
EndIf

If Not IsAssigned(Tabela_Destino_Temp)
   Then Tabela_Destino_Temp=Cria_Temp(PrivDir())
        {Ask} {\\Sistemas\\Faccao\\Destino} Check
        Moveto [Utiliza Relatorio] TypeIn "S"
        Do_It!
        ClearAll
        
        If IsEmpty("Answer")
           Then Copy Tabela_Destino Tabela_Destino_Temp
                Empty Tabela_Destino_Temp
           Else Copy "Answer" Tabela_Destino_Temp 
        EndIf
EndIf
;*******************************************************************************

If Not IsEmpty(Tabela_Destino)
   Then View Tabela_Destino
        Scan
          WHI=WHI+1
          Array_Lista1[WHI] = [Destino] 
        EndScan 
        ClearImage    
EndIf  

If Not IsEmpty(Tabela_Destino_Temp)
   Then Edit Tabela_Destino_Temp
        Scan
          WHK=WHK+1
          Array_Lista2[WHK]=[Destino] 
        EndScan 
        Do_It!
        ClearImage
        
        {Ask} {\\Sistemas\\Faccao\\Destino}
        Moveto [Utiliza Relatorio] TypeIn "Changeto Blank"
        Do_It!
        ClearImage
        
        CoEdit "\\Sistemas\\Faccao\\Destino"
        For WHI From 1 To DynArraySize(Array_Lista2)
          Home
          Moveto [Destino]
          Locate Array_Lista2[WHI]
          If RetVal
             Then [Utiliza Relatorio]="S"  
          EndIf
        EndFor
        Do_It!
        ClearImage
EndIf                                     
ClearAll

EndProc ;Carrega_Array() 

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
Proc Inclusao_Registro()

ADICAO=False

Switch
  Case Campo="TG_TABELA1"     : IND=NumVal(ControlValue("TG_TABELA1"))
                                
                                If DynArraySize(Array_Lista1)=0
                                   Then Return
                                EndIf
                                
                                TpDestino=Rtrim(Array_Lista1[IND])
                                
                                View Tabela_Destino
                                Moveto [Destino]
                                Locate TpDestino
                                If RetVal
                                   Then CopyToArray REG
                                        Coedit Tabela_Destino_Temp
                                        End Down
                                        CopyFromArray REG
                                        Do_It!
                                        ClearAll
                                        ADICAO=True
                                        Exclusao_Registro()
                                EndIf
                            
  Case Campo="TG_TABELA2" And 
       EXCLUSAO = True        : Coedit Tabela_Destino
                                Moveto [Destino]
                                End Down
                                CopyFromArray REG_REMOVE
                                Do_It!
                                ClearAll
EndSwitch

Carrega_Array()

EndProc ;Inclusao_Registro()

;*******************************************************************************
;* ExclusÆo Tabela de Pre‡o                                                    *
;*******************************************************************************
Proc Exclusao_Registro()                   
                                    
EXCLUSAO=False                          
                     
Switch                                    
  Case Campo="TG_TABELA1" And
       ADICAO=True            : Coedit Tabela_Destino
                                Moveto [Destino]
                                Locate TpDestino
                                If RetVal                 
                                   Then Del
                                EndIf
                                Do_It!   
                                ClearAll

  Case Campo="TG_TABELA2"     : IND=NumVal(ControlValue("TG_TABELA2"))

                                If DynArraySize(Array_Lista2)=0
                                   Then Return
                                EndIf
                                
                                TpDestino=Rtrim(Array_Lista2[IND])
                                
                                Coedit Tabela_Destino_Temp
                                Moveto [Destino]
                                Locate TpDestino
                                If RetVal
                                   Then CopyToArray REG_REMOVE
                                        Del
                                EndIf
                                Do_It!   
                                ClearAll
                                EXCLUSAO=True
                                Inclusao_Registro()
EndSwitch

Carrega_Array()                    

EndProc ;Exclusao_Registro()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA="F10=Parƒmetros"

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf

If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_ADICIONA": If DynArraySize(Array_Lista2)=6
                                       Then Mensagem("Somente 6 destinos poder  ser escolhidos para esta visualiza‡„o !")
                                       Else Temp=True
                                            Campo="TG_TABELA1"
                                            Inclusao_Registro() 
                                    EndIF
          Case Campo="TG_REMOVE"  : Temp=True
                                    Campo="TG_TABELA2"
                                    Exclusao_Registro()
          Case Campo="YES"        : AcceptDialog
          Case Campo="NO"         : CancelDialog
          OtherWise               : Return Temp
        EndSwitch
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9    : Temp=False
     Case Evento["KeyCode"] = -59  : Dialog_F1()
     Case Evento["KeyCode"] = -68  :
            Temp=False
            Relatorios()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TABELA1" Or
                 Campo="TG_EMPRESA"          : Campo="YES"
            Case Campo="TG_TABELA2" Or
                 Campo="YES"        Or 
                 Campo="NO"                  : Campo="TG_TABELA1"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA" : Campo="TG_MESANO"
                    Case Campo="TG_OPOF"        : Campo = "YES"
                         VSDGOPOF=ControlValue("TG_OPOF")
                         Switch
                           Case VSDGOPOF="N": VSDGNOMOPOF="NAO"
                           OtherWise:
                                VSDGOPOF="S"  VSDGNOMOPOF="SIM"
                         EndSwitch
                         Campo="TG_ZERADO"  
                    Case Campo="TG_ZERADO"      : Campo="YES"               
                  EndSwitch
          EndIf
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPPE":
       MSG_CAMPO=""                
Endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc

;*******************************************************************************
;* Rotina para configurar destino                                              *
;*******************************************************************************
Proc Configura_Destino()  

EMPRESA=[P_DESTC->Codigo da Empresa]
Do_It!

Carrega_Array()

While True
  ShowDialog "Op‡„o do Destinat rio" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE","UPDATE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,-68
    @ 01,07 Height 14 Width 39

    PickDynArray @01,01 Height 7 width 12 ;58
    Columns 1
     Array_Lista1
      Tag "TG_TABELA1"
       To ArrayElement

    PickDynArray @01,24 Height 7 width 12 ;58
    Columns 1
     Array_Lista2
      Tag "TG_TABELA2"
       To ArrayElement

    Pushbutton @ 04,14 width 9 "~>~>"   Tag "TG_ADICIONA"  To BottonValue
    Pushbutton @ 05,14 width 9 "~<~<"   Tag "TG_REMOVE"    To BottonValue

    Pushbutton @ 10,13 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue

  EndDialog
  QuitLoop
EndWhile   

CoeditKey
Moveto "P_DESTI"

EndProc ;Configura_Destino()  


;*******************************************************************************
;* Checa Rotina Liberada                                                       *
;*******************************************************************************
Proc LiberaRotina()
LIBERADA = False

If SYS_CODIGO_CLIENTE = ""
   Then LIBERADA = True
EndIf


EndProc
;*******************************************************************************
;* Rotina aguarda teclas padrao                                                *
;*******************************************************************************
Proc AguardaTeclasPadrao()

BarraPadrao()

Wait Field
  Until "ESC","ENTER","DOWN","DEL","FIELDVIEW","LEFT","RIGHT",
        "HOME","END","UP","PGDN","PGUP","INS","F35","ZOOM","ZOOMNEXT",
        -94,-33,-22,
        "F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12",-72,-80,-75,-77,
        -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140

ClearSpeedBar      

IsTeclaAtalho()
Endproc

;*******************************************************************************
;* Rotina Barra Funcoes                                                        *
;*******************************************************************************
Proc BarraPadrao()
If Not IsAssigned(TECLA) Then TECLA="" EndIf

Prompt TECLA 
SpeedBar "["+Chr(254)+"]" :"ESC",
         "~Novo~"         :"INS",
         "~Exibi‡„o~"     :"F5",
         "~Ficha/Lista~"  :"F3",
         "~?~"            :-94
Endproc

;*******************************************************************************
;* Rotina Mensagem Teclas Padrao                                               *
;*******************************************************************************
Proc MsgTeclasPadrao()
MSG=    "    Esc= Voltar Menu                 //"
MSG=MSG+" Insert= Novo registro               //"
MSG=MSG+"     F5= Exibi‡„o                    "
MsgHelp("Teclas/Fun‡”es",MSG)
Endproc

;*******************************************************************************
;* Rotina Principal Nota Fiscal                                                *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Bloq"
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE="" EndIf

Executa = True
LiberaRotina()

View "P_DESTT"
CoEdit "P_DESTC"
PickForm "F" 

[Codigo da Empresa]=SYS_EMPRESA_DEFAULT
                 
If ErrorCode()=4
   Then Do_It!
        ClearAll
        Release Vars All
        Release Procs All
        Return
EndIf

While Executa
  ChaveC()
  While Executa
    ChaveI()
    If CHAVE=9 Then QuitLoop EndIf
    Digita()
    If CHAVE=9  Then QuitLoop EndIf
  EndWhile
  Do_It!
  ClearAll
  Empty "P_DESTC" 
  
  View "P_DESTT"
  Coedit "P_DESTC"
  PickForm "F" 
EndWhile

;** Deletando Registro Master **
Do_It!
ClearAll
Empty "P_DESTC"

ClearAll
Release Vars All
Release Procs All
