;** Bib_Show *******************************************************************
;*  Biblioteca de Rotinas de Trabalho p/ ShowDialog                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 18/10/1999 por Anivel Augusto Rodrigues
;Ultima Alteracao: 05/01/2018 por Kamila Gomes        
;Motivo Alteracao: InclusÆo do Privdir no local do arquivo .ini
;Ultima Alteracao: 12/01/2018 por Kamila Gomes        
;Motivo Alteracao: InclusÆo MAILTRO para email de troca
;Ultima Alteracao: 06/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicioando TG_OPANALISE3, TG_CURVAABCA,TG_CURVAABCB,TG_CURVAABCC
;Ultima Alteracao: 24/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_OPANALISE3
;Ultima Alteracao: 26/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPANALISE4, TG_OPANALISE5, TG_OPANALISE6
;Ultima Alteracao: 27/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPANALISE11
;Ultima Alteracao: 06/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPDTESI
;Ultima Alteracao: 08/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Numero do Documento" p/ Consultas de CUPOM -> Seleciona_Opcoes() e Monta_Opcoes() *F1_TEMP"
;Ultima Alteracao: 09/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_SITUACAOPEDIDOAS  
;Ultima Alteracao: 09/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Monta_Prompt() TG_EMPRESATE                              
;Ultima Alteracao: 21/03/2018 por Bruno Carvalho
;Motivo Alteracao: Removido Documento" p/ Consultas de CUPOM no Seleciona_Opcoes()
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_MOV, layout e valor
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ModeloRelatorios_CD(), SD_ModeloRelatorios_CD() e ajustes
;Ultima Alteracao: 23/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado SetaVisualizarCasasDecimais()
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ConfigOpcoes()
;Ultima Alteracao: 27/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seleciona_Opcoes() P_Cartao,Cartoes
;Ultima Alteracao: 10/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPDTRP
;Ultima Alteracao: 27/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ModeloRelatorios(),ModeloRelatorios_CD()
;Ultima Alteracao: 03/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_EMPRESAS
;Ultima Alteracao: 17/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tira_CharNum()
;Ultima Alteracao: 25/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_CCUSTO           
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 30/05/2018 por Bruno Carvalho
;Motivo Alteracao: InclusÆo TG_ZERADO 
;Ultima Alteracao: 18/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ImpriArq()          
;Ultima Alteracao: 28/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPDTPPE
;Ultima Alteracao: 30/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes versao SO s¢ Windows
;Ultima Alteracao: 13/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Add "TG_OPRELCODALFRANK2"
;Ultima Alteracao: 02/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Grava_Logt()
;Ultima Alteracao: 02/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado RegistroFoiAlterado()
;Ultima Alteracao: 31/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Add "TG_SITUACAOFAC"
;Ultima Alteracao: 03/09/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes Numero_Lancamento() -> "Locked_CtrlPgDn" e "Locked_Down" quando processo "Interno" e passado parƒmetro
;Ultima Alteracao: 25/09/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes Grava_Logt() -> Alinhamento SYS_NIVEL_USUARIO   direita 
;Ultima Alteracao: 29/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa_TAG(),Dialog_F1() add ShowDialogLookup()        
;Ultima Alteracao: 05/10/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes visualiza‡Æo de PDF ao enviar romaneio e pedido por email          
;Ultima Alteracao: 11/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo_Dir_Trab() - upper
;Ultima Alteracao: 24/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Add "TG_NUMCHEQ"
;Ultima Alteracao: 11/01/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado a cria‡Æo do arquivo ROIS p/ ser gerado apenas em seu mˆs atual em que os registros sÆo processados
;Ultima Alteracao: 18/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sequencia da cor iten_Cor lista
;Ultima Alteracao: 19/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Add "TG_TPOPEROC"
;Ultima Alteracao: 28/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Add "TG_DTVENCTO","TG_DTCOMPET"
;Ultima Alteracao: 12/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Numero_Lancamento() contrdia
;Ultima Alteracao: 14/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Numero_Lancamento() bxautc    
;Ultima Alteracao: 15/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_OPERACAOPEDIDO  
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_DTINI, TG_DTINI2    
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Numero_Lancamento() campo chave generico
;Ultima Alteracao: 23/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ListaRegra_F2, TG_TPPATGO, TPTPCAT
;Ultima Alteracao: 01/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Proximo_Lancamento()              
;Ultima Alteracao: 13/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_PLCONTAS3                
;Ultima Alteracao: 15/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPDTEMISENTRADA
;Ultima Alteracao: 16/05/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_LPRESENTE e TG_OP_LISTAPRESENTE                
;Ultima Alteracao: 22/05/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado na proc ListaRegra_F2() -> TG_REPRESEN
;Ultima Alteracao: 06/06/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado TG_EXPEDICAOOF -> De ExpedOfC p/ buscar registros na tabela ExpedC
;Ultima Alteracao: 28/06/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa_Controle()
;Ultima Alteracao: 01/07/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_COMPTECIDO
;Ultima Alteracao: 04/07/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_GPESSOA -> Pessoas Vinculadas (Sele‡Æo de um grupo de pessoas) 
;Ultima Alteracao: 15/07/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_OPPLCONTAS
;Ultima Alteracao: 31/07/2019 por Bruno Carvalho
;Motivo Alteracao: Adiciona Regras "EXP" MontaRegistro_F1() p/ quando OPCAODIVERSAS="Codigo da Cor_Tecido" 
;Ultima Alteracao: 06/08/2019 por Anivel Bruno Carvalho
;Motivo Alteracao: Ajustes Monta_Opcoes()... p/ "Cartao" e "F1_Temp"
;Ultima Alteracao: 14/08/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Valida_ShowDialog()
;Ultima Alteracao: 14/08/2019 por Bruno Carvalho
;Motivo Alteracao: Add Valida_ShowDialog() p/ valida‡Æo dos campos "TG_EMPRESA","TG_EMPRESAS","TG_EMPRESATE","TG_REPRESEN","TG_GERENCIA"
;Ultima Alteracao: 09/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cor_Tecido #0232
;Ultima Alteracao: 16/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_OPDTCP
;Ultima Alteracao: 19/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao VerificarRegras()
;Ultima Alteracao: 31/10/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado na proc ListaRegra_F2() -> TG_DESTIN
;Ultima Alteracao: 01/11/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado FONTES na proc Seta_Tipo_Impressora(), por‚m nÆo h  at‚ o momento (01/11/19) utiliza‡Æo destas fontes
;Ultima Alteracao: 22/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ListaRegra_F2, TG_MARCA                
;Ultima Alteracao: 04/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado comandos p/ imprimir em impressora t‚rmica EPSON na proc Seta_Tipo_Impressora() *TM-T20
;Ultima Alteracao: 07/12/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ListaRegra_F2, TG_EMPRESATE, prompt TOTALIZAR EMPRESAS
;Ultima Alteracao: 12/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Pedido_Motivo_Sequencia" nas procs Monta_Opcoes() e Seleciona_Opcoes() e Checa_Opcoes() 
;Ultima Alteracao: 12/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado "TG_MOTSITPED" para consulta do motivo da situa‡Æo do pedido
;Ultima Alteracao: 23/12/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes nas TG da proc Checa_TAG(), onde foi otimizado processos por GetRecord  
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Movido procs relacionada a baixo para BIB_PROC
;                  ConteudoNumerico,SD_Dialog_Checa_CST,Checa_CST,Checa_CSOSN,Checa_CSOSN2,FretePorConta,
;                  Lista_Dialog,Monta_Lista,Carrega_Variavel_ListaArray,Carrega_ListaArray,Verifica_Campo,
;                  Carrega_VarSeleciona,Monta_ComboBox,Pega_TipoTributacao,Opcoes_Dialog_Temp,MontaRegistro_F1_TEMP,
;                  Monta_Opcoes_TEMP,Checa_Opcoes_TEMP,Seleciona_Opcoes_TEMP,Existe_Mes_Ano_Fechado,
;                  SetaVisualizarCasasDecimais,ConfigOpcoes,RegistroFoiAlterado,VerificarRegras 
;Ultima Alteracao: 02/01/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes VSDGFRETEPC no controle do "F1" na proc Dialog_F1()           
;Ultima Alteracao: 07/01/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes na TG de controle "TG_TPPAGTO"
;Ultima Alteracao: 24/01/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_OPDTCHVEI
;Ultima Alteracao: 01/02/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado "TG_TPLANC" na ListaRegra_F2()
;Ultima Alteracao: 03/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_OPSITCLIE
;Ultima Alteracao: 04/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_OPDTCRB
;Ultima Alteracao: 06/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustess TG_DESTIN, ListaRegra_F2()        
;Ultima Alteracao: 06/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_TPMOVDESTIN
;Ultima Alteracao: 07/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustess TG_DESTIN com  TG_TPMOVDESTIN      
;Ultima Alteracao: 07/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustess [Enter] rodape botoes ok/cancela                    
;Ultima Alteracao: 10/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_DESTIN, TG_TPMOVDESTIN
;Ultima Alteracao: 10/02/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado BIBSHOW_IMPRESSORA_SETADA p/ controlar impressÆo em impressora Bematech e Daruma                  
;Ultima Alteracao: 09/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ListaRegra_F2, TG_CONTA                
;Ultima Alteracao: 13/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_COMPLEMENTO, TG_OPOF
;Ultima Alteracao: 14/05/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado ListaRegra_F2, TG_TPITEM
;Ultima Alteracao: 14/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado MensagemCheckBox()
;Ultima Alteracao: 14/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPCCUSTO"
;Ultima Alteracao: 14/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_OPPLCONTAS, CheckTG_OPPLCONTAS[1]
;Ultima Alteracao: 15/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPDTEMISCOMPDP
;Ultima Alteracao: 19/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_OPDTCHVL
;Ultima Alteracao: 08/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_OPDTPEEIR, TG_OPDTPEEIRF
;Ultima Alteracao: 30/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ListaRegra_F2, TG_TIPOEST
;Ultima Alteracao: 04/08/2020 por Bruno Carvalho
;Motivo Alteracao: Removido TG_TPITEM       
;Ultima Alteracao: 20/08/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Forma de Pagamento" e "Tipo de Pagamento" nas proc Monta_Opcoes(), Seleciona_Opcoes(), Monta_RegistroF1(), Checa_Opcoes()
;Ultima Alteracao: 27/08/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ "Forma de Pagamento" e "Tipo de Pagamento" nas proc Monta_Opcoes(), p/ quando receber "ECF" como parƒmetro 
;Ultima Alteracao: 23/09/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes foram desabilitado/comentados ";" rotina que nÆo usam TG_..
;Ultima Alteracao: 23/09/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado "TpDoctos" Monta_Opcoes()... 
;Ultima Alteracao: 23/03/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado ListaRegra_F2 para "TG_FAMI", "TG_GRP" e "TG_COR_TECIDO" 
;Ultima Alteracao: 25/09/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ListaRegra_F2() 
 
@ 22,28 ?? "Gerando Biblioteca Bib_Show.Lib"
Style Blink
?? "... "

If IsFile("\\Sistemas\\Cadastro\\Bib_Show.Lib")
   Then Run NoRefresh "Del \\Sistemas\\Cadastro\\Bib_Show.Lib>Nul"
EndIf
CreateLib "\\Sistemas\\Cadastro\\Bib_Show" Size 140

;************************************
;* ROTINA PARA JANELA DE RELATORIO  *
;************************************
Proc JanelaR(msga,x1,y1,x2,y2)
Private msga,x1,y1,x2,y2,coluna,wcx

If Not IsAssigned(SYS_COR_RODAPE) 
   Then SYS_COR_RODAPE =31 
EndIf

y1=y1-1
y2=y2+1
Limpa(1,0)
wcx=x1
While wcx <= x2
  @ wcx,y1 ?? Spaces(y2-y1)
  wcx=wcx+1
EndWhile
Frame Double From x1,y1 to x2,y2
Coluna=Y1+Round((((Y2-Y1)-len(MSGA))/2),0)
@ X1,coluna ?? " "+msga+" "
paintcanvas attribute SYS_COR_RODAPE x1, y1, x2, y2
paintcanvas border fill " " attribute 08 (x2+1), (y1+2), (x2+1), (y2+1)
paintcanvas border fill " " attribute 08 (x1+1), (y2+1), (x2+1), (y2+2)
Style Attribute SYS_COR_RODAPE
EndProc

;*******************************************************************************
;* Rotina para Checagem de Campos                                              *
;*******************************************************************************
Proc Checa_TAG()
Private Valor

Valor=True
Switch
  Case Campo="YES":
       MSG_CAMPO     ="//"
       TECLA         ="//"
       FIM_SHOWDIALOG=True
       LimpaRodape(0)
        
       KeyDisable -24
       AcceptDialog
  Case Campo="NO":
       MSG_CAMPO     ="//"
       TECLA         ="//"
       FIM_SHOWDIALOG=True
       LimpaRodape(0)

       KeyDisable -24
       CancelDialog


;-- Muita aten‡Æo no uso de TG_EMPRESA e TG_EMPRESATE, ver a diferen‡a ! -------
       
  Case Campo="TG_EMPRESA":                                                     ;tgreg_empresas
       VSDGEMPRESA=ControlValue("TG_EMPRESA")
       If Not IsBlank(VSDGEMPRESA)
         Then VSDGEMPRESA=ALINHE(VSDGEMPRESA)

              if VSDGEMPRESA="0000"
                 then
                      FastMsg("Totalizar Empresa n„o dispon¡vel !")
                      VSDGEMPRESA=""
                      Valor=False
                 else
                      getrecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA to tgreg_empresas
                      If Not RetVal
                         Then FastMsg("Empresa n„o cadastrada !")
                              Valor=False
                         Else If Not Valida_ShowDialog("Empresa")
                                 Then Valor=False
                                 Else VSDGNOMEMP=tgreg_empresas["Nome Fantasia Empresa"]
                              EndIf
                      EndIf
              endif
         Else If Not Valida_ShowDialog("Empresa")
                  Then Valor=False
                  Else VSDGNOMEMP="Todas"
               EndIf 
       EndIf
  Case Campo="TG_EMPRESAS":                                                     ;tgreg_empresas
       VSDGEMPRESA=ControlValue("TG_EMPRESAS")
       If Not IsBlank(VSDGEMPRESA) and VSDGEMPRESA<>"0000"
         Then VSDGEMPRESA=ALINHE(VSDGEMPRESA)
              GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA to tgreg_empresas
              If Not RetVal
                 Then FastMsg("Empresa n„o cadastrada !")
                      Valor=False
                 Else If Not Valida_ShowDialog("Empresa")
                         Then Valor=False
                         Else VSDGNOMEMP=tgreg_empresas["Nome Fantasia Empresa"]
                      EndIf
              EndIf
         Else if VSDGEMPRESA=""
                 then FastMsg("Empresa inv lida !")
                      VSDGEMPRESA=""
                      Valor=False
              endif
       EndIf

  Case Campo="TG_EMPRESATE":
       VSDGEMPRESA=ControlValue("TG_EMPRESATE")
       switch
         case IsBlank(VSDGEMPRESA)                   : 
           VSDGNOMEMP="Todas"
           ListaRegra_VSDGEMPRESA_Ativo =False    

         case VSDGEMPRESA ="0000"                    : 
           VSDGNOMEMP="TOTALIZA EMPRESAS"
           ListaRegra_VSDGEMPRESA_Ativo =False    

         case VSDGEMPRESA ="?"                       : 
           switch
             case substr(VSDGNOMEMP ,1,4)="Op: "     :
             otherwise                               : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch

         otherwise                                  :                           ;tgreg_empresas
           VSDGEMPRESA=ALINHE(VSDGEMPRESA)                                 
           GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA to tgreg_empresas
           If Not RetVal
              Then FastMsg("Empresa n„o cadastrada !")
                   Valor=False
              Else VSDGNOMEMP=tgreg_empresas["Nome Fantasia Empresa"]
           EndIf
           ListaRegra_VSDGEMPRESA_Ativo=False
       endswitch
       If (Valor Or Upper(VSDGNOMEMP)="TODAS") And Not Valida_ShowDialog("Empresa")
          Then VSDGNOMEMP=""
               Valor=False
       EndIf    


;-------------------------------------------------------------------------------
       
  Case Campo="TG_EMPRESA2":                                                     ;tgreg_empresas
       VSDGEMPRESA2=ControlValue("TG_EMPRESA2")
       If Not IsBlank(VSDGEMPRESA2)
         Then VSDGEMPRESA2=ALINHE(VSDGEMPRESA2)
              GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA2 to tgreg_empresas
              If Not RetVal
                 Then FastMsg("Empresa n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMEMP2=tgreg_empresas["Nome Fantasia Empresa"]
              EndIf
         Else VSDGNOMEMP2="Todas"
       EndIf
       
  Case Campo="TG_DESTINAT":                                                     ;tgreg_destinat
       VSDGDESTINAT=ControlValue("TG_DESTINAT")
       If Not IsBlank(VSDGDESTINAT)
         Then VSDGDESTINAT=ALINHE(VSDGDESTINAT)
              GetRecord "\\Sistemas\\Cadastro\\Destinat" VSDGDESTINAT to tgreg_destinat
              If Not RetVal
                 Then FastMsg("Pessoa n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMDEST=tgreg_destinat["Nome Fantasia EmitDest"]
                      VSDGRAZDEST=tgreg_destinat["Razao Social"]

                      VSDGCONTATO=tgreg_destinat["Contato" ]+" - "+
                                  tgreg_destinat["Telefone"]+", "+
                                  tgreg_destinat["Celular" ]+", "+
                                  tgreg_destinat["Fax"     ]+"  "
                                  
                      if isassigned(sys_codigo_cliente)
                         then if sys_codigo_cliente="0232"
                                 then VSDGNOMDEST=tgreg_destinat["Razao Social"]
                              endif
                      endif                        
                                   
              EndIf
         Else VSDGNOMDEST="Todas"
              VSDGRAZDEST=""
              CSDGCONTATO=""
       EndIf
       
  Case Campo="TG_CLIENTE":                                                      ;tgreg_destinat
       VSDGCLIENTE=ControlValue("TG_CLIENTE")
       If Not IsBlank(VSDGCLIENTE)
         Then VSDGCLIENTE=ALINHE(VSDGCLIENTE)
              GetRecord "\\Sistemas\\Cadastro\\Destinat" VSDGCLIENTE to tgreg_destinat
              If Not RetVal
                 Then FastMsg("Pessoa n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMCLIE=tgreg_destinat["Nome Fantasia EmitDest"]
              EndIf
         Else VSDGNOMCLIE="Todos"
       EndIf
  Case Campo="TG_SITUACAOCLIENTE":
       VSDGSITUACAOCLIENTE=ControlValue("TG_SITUACAOCLIENTE")
       If Not IsBlank(VSDGSITUACAOCLIENTE)
         Then Switch 
                 Case VSDGSITUACAOCLIENTE="O": VSDGNOMSITUACAOCLIENTE="OTIMO"
                 Case VSDGSITUACAOCLIENTE="B": VSDGNOMSITUACAOCLIENTE="BOM"
                 Case VSDGSITUACAOCLIENTE="R": VSDGNOMSITUACAOCLIENTE="REGULAR"
                 Case VSDGSITUACAOCLIENTE="P": VSDGNOMSITUACAOCLIENTE="PESSIMO"
              EndSwitch
          Else VSDGSITUACAOCLIENTE=""  
               VSDGNOMSITUACAOCLIENTE="TODOS"      
       EndIf
  Case Campo="TG_ZERADO"      :
       VSDGZERADO=ControlValue("TG_ZERADO")
       Switch
         Case VSDGZERADO="1": VSDGDESCZERADO="EMITE ZERADO"
         Case VSDGZERADO="2": VSDGDESCZERADO="EMITE Sà ZERADO"
         Case VSDGZERADO="3": VSDGDESCZERADO="EMITE Sà NEGATIVO"
         OtherWise:
              VSDGZERADO="0"  VSDGDESCZERADO="NAO EMITE ZERADO"
       EndSwitch  
  Case Campo="TG_TIPOBAIXA":
       VSDGTIPOBAIXA=ControlValue("TG_TIPOBAIXA")
       If Not IsBlank(VSDGTIPOBAIXA)
         Then Switch 
                 Case VSDGTIPOBAIXA="C": VSDGNOMTIPOBAIXA="CANCELADO"
                 Case VSDGTIPOBAIXA="D": VSDGNOMTIPOBAIXA="DEVOLU€ÇO"
                 Case VSDGTIPOBAIXA="N": VSDGNOMTIPOBAIXA="NORMAL"
              EndSwitch
          Else VSDGTIPOBAIXA=""  
               VSDGNOMTIPOBAIXA="TODAS"      
       EndIf
                       
  Case Campo="TG_DESTINATINI" :                                                 ;tgreg_destinat 
       VSDGDESTINATINI=ControlValue("TG_DESTINATINI")
       If Not IsBlank(VSDGDESTINATINI)
         Then VSDGDESTINATINI=ALINHE(VSDGDESTINATINI)
              GetRecord "\\Sistemas\\Cadastro\\Destinat" VSDGDESTINATINI to tgreg_destinat 
              If Not RetVal
                 Then FastMsg("Codigo n„o cadastrado !")
                      Valor=False
              EndIf
         Else VSDGDESTINATINI="0001"
       EndIf
  Case Campo="TG_DESTINATFIM":                                                  ;tgreg_destinat 
       VSDGDESTINATFIM=ControlValue("TG_DESTINATFIM")
       If Not IsBlank(VSDGDESTINATFIM) and VSDGDESTINATFIM <> "Z999"
         Then VSDGDESTINATFIM=ALINHE(VSDGDESTINATFIM)
              GetRecord "\\Sistemas\\Cadastro\\Destinat" VSDGDESTINATFIM to tgreg_destinat
              If Not RetVal
                 Then FastMsg("Codigo n„o cadastrado !")
                      Valor=False
              EndIf
         Else VSDGDESTINATFIM="Z999"
       EndIf

  Case Campo="TG_REPRESEN":
       VSDGREPRESEN=ControlValue("TG_REPRESEN")
       switch
         case IsBlank(VSDGREPRESEN)                   : 
           VSDGNOMREPR="Todos"
           ListaRegra_VSDGREPRESEN_Ativo =False    
         case VSDGREPRESEN ="?"                       : 
           switch
             case substr(VSDGNOMREPR ,1,4)="Op: "     :
             otherwise                                : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
       otherwise                                  :
            VSDGREPRESEN=ALINHE(VSDGREPRESEN)                                               ;tgreg_represen
              GetRecord "\\Sistemas\\Cadastro\\Represen" VSDGREPRESEN to tgreg_represen
              If Not RetVal
                 Then FastMsg("Representante n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMREPR=tgreg_represen["Nome Fantasia Represent"]
              EndIf
              ListaRegra_VSDGREPRESEN_Ativo=False
       endswitch
       If (Valor Or Upper(VSDGNOMREPR)="TODOS") And Not Valida_ShowDialog("Representante")
          Then VSDGNOMREPR=""
               Valor=False
       EndIf    

  Case Campo="TG_ETAPAP":                                                       ;tgreg_etapap
       VSDGETAPAP=ControlValue("TG_ETAPAP")
       If Not IsBlank(VSDGETAPAP)
         Then GetRecord "\\Sistemas\\Faccao\\Tbetapac" VSDGETAPAP to tgreg_etapap
              If Not RetVal
                 Then FastMsg("Etapa nÆo cadastrada !")
                      Valor=False
                 Else VSDGNOMETAPAP=tgreg_etapap["Descricao_Etapa"]
              EndIf
         Else VSDGNOMETAPAP="TODAS"
       EndIf     

  Case Campo="TG_TPCONTRATO":
        VSDGTPCONTRATO=ControlValue("TG_TPCONTRATO")
        If VSDGTPCONTRATO<>""
           Then VSDGTPCONTRATO=ALINHM(VSDGTPCONTRATO,6)
                GetRecord "\\Sistemas\\Geec\\TpContra" VSDGTPCONTRATO To REG_TPCONTRA
                If ReTval
                   Then VSDGNOMTPCONTRATO = REG_TPCONTRA["Descricao_TpContrato"]
                   Else FastMsg("Tipo nÆo cadastrado !")
                        Valor=False
                        VSDGNOMTPCONTRATO = ""
                EndIf
           Else VSDGNOMTPCONTRATO = "TODOS"       
        EndIf
  Case Campo="TG_GRPVENC":
        VSDGGRPVENC=ControlValue("TG_GRPVENC")
        If VSDGGRPVENC<>""
           Then VSDGGRPVENC=ALINHM(VSDGGRPVENC,4)
                GetRecord "\\Sistemas\\Geec\\GrpVenc" VSDGGRPVENC To REG_GRPVENC
                If ReTval
                   Then VSDGNOMGRPVENC = REG_GRPVENC["Descricao_GrupoVencimento"]
                   Else FastMsg("Grupo nÆo cadastrado !")
                        Valor=False
                        VSDGNOMGRPVENC = ""
                EndIf
           Else VSDGNOMGRPVENC = "TODOS"       
        EndIf 
       
  Case Campo="TG_ROTA":                                                        ;tgreg_rota
       VSDGROTA=ControlValue("TG_ROTA")
       If Not IsBlank(VSDGROTA)
         Then VSDGROTA=ALINHM(VSDGROTA,4)
              GetRecord "\\Sistemas\\Cadastro\\Rota" VSDGROTA to tgreg_rota
              If Not RetVal
                 Then FastMsg("Rota n„o cadastrada !")
                      Valor=False
                 Else VSDGDESCROTA=tgreg_rota["Descricao da Rota"]
              EndIf
         Else VSDGDESCROTA="Todas"
       EndIf

  Case Campo="TG_CHAPA":                                                        ;tgreg_usuarios
       VSDGCHAPA=ControlValue("TG_CHAPA")
       If Not IsBlank(VSDGCHAPA)
         Then VSDGCHAPA=ALINHM(VSDGCHAPA,4)
              GetRecord "\\Sistemas\\Cadastro\\Usuarios" VSDGCHAPA to tgreg_usuarios 
              If Not RetVal
                 Then FastMsg("Usuario n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMCHAPA=tgreg_usuarios["Nome"]
              EndIf
         Else VSDGNOMCHAPA="Todos"
       EndIf
  Case Campo="TG_ATEND" :                                                       ;tgreg_atendent
       VSDGATEND=ControlValue("TG_ATEND")
       If Not IsBlank(VSDGATEND)
         Then VSDGATEND=ALINHM(VSDGATEND,2)
              GetRecord "\\Sistemas\\Cadastro\\Atendent" VSDGATEND to tgreg_atendent
              If Not RetVal
                 Then FastMsg("Atendente n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMATEND=tgreg_atendent["Nome do Atendente"]
              EndIf
         Else VSDGNOMATEND="Todos"
       EndIf
  Case Campo="TG_TPDOCTO":                                                      ;tgreg_tpdoctos
       VSDGTPDOCTO=ControlValue("TG_TPDOCTO")
       If Not IsBlank(VSDGTPDOCTO)
         Then GetRecord "\\Sistemas\\Cadastro\\TpDoctos" VSDGTPDOCTO to tgreg_tpdoctos 
              If Not RetVal
                 Then FastMsg("Tipo n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMTPDOCTO=tgreg_tpdoctos["Descricao do Documento"]
                      VSDGTIPTPDOCTO=tgreg_tpdoctos["Tipo do Documento"     ]
                      VSDGSERTPDOCTO=tgreg_tpdoctos["Serie do Documento"    ]
              EndIf
         Else VSDGNOMTPDOCTO="Todos"
              VSDGTIPTPDOCTO=""
              VSDGSERTPDOCTO=""
       EndIf
  Case Campo="TG_TPDOCTO2":                                                     ;tgreg_tpdoctos
       VSDGTPDOCTO2=ControlValue("TG_TPDOCTO2")
       If Not IsBlank(VSDGTPDOCTO2)
         Then GetRecord "\\Sistemas\\Cadastro\\TpDoctos" VSDGTPDOCTO2 to tgreg_tpdoctos
              If Not RetVal
                 Then FastMsg("Tipo n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMTPDOCTO2=tgreg_tpdoctos["Descricao do Documento"]
                      VSDGTIPTPDOCTO2=tgreg_tpdoctos["Tipo do Documento"     ]
                      VSDGSERTPDOCTO2=tgreg_tpdoctos["Serie do Documento"    ]
              EndIf
         Else VSDGNOMTPDOCTO2="Todos"
              VSDGTIPTPDOCTO2=""
              VSDGSERTPDOCTO2=""
       EndIf                     
       
  Case Campo="TG_ESPDOCTO":
       VSDGESPDOCTO=ControlValue("TG_ESPDOCTO")
  
  Case Campo="TG_CIDADE":                                                       ;tgreg_cidades
       VSDGCIDADE=ControlValue("TG_CIDADE")
       If Not IsBlank(VSDGCIDADE) And VSDGCIDADE<>"TODAS"
          And SearchFrom("..",VSDGCIDADE,1)=0
          Then GetRecord "\\Sistemas\\Cadastro\\Cidades" VSDGCIDADE to tgreg_cidades 
               If Not RetVal
                  Then FastMsg("Cidade n„o cadastrada !")
                       Valor=False
                  else  
                       If IsAssigned(VSDGESTADO) Then VSDGESTADO=tgreg_cidades["UF"] EndIf                  
               EndIf
          Else If IsBlank(VSDGCIDADE)
                  Then VSDGCIDADE="Todas"
               EndIf
       EndIf
;  Case Campo="TG_PROGFUND":                                                     ;tgreg_progfc
;       VSDGPROGFUND=ControlValue("TG_PROGFUND")
;       If Not IsBlank(VSDGPROGFUND)
;          Then GetRecord "\\Sistemas\\Fundic2\\ProgfC" VSDGPROGFUND to tgreg_progfc 
;               If Not RetVal
;                  Then FastMsg("Programa‡„o nÆo localizada !")
;                       Valor=False
;               EndIf    
;       EndIf       
  Case Campo="TG_ATIVIDADE" :                                                   ;tgreg_ativid 
       VSDGATIVIDADE=ControlValue("TG_ATIVIDADE")
       If Not IsBlank(VSDGATIVIDADE)
         Then VSDGATIVIDADE=ALINHM(VSDGATIVIDADE,4)
              GetRecord "\\Sistemas\\Cadastro\\Ativid" VSDGATIVIDADE to tgreg_ativid 
              If Not RetVal
                 Then FastMsg("Atividade n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMATIV=tgreg_ativid["Descricao Atividade"]
              EndIf
         Else VSDGNOMATIV="TODAS"
       EndIf
  Case Campo="TG_AREA":                                                         ;tgreg_area
       VSDGAREA=ControlValue("TG_AREA")
       If Not IsBlank(VSDGAREA)
         Then VSDGAREA=ALINHM(VSDGAREA,2)
              GetRecord "\\Sistemas\\Cadastro\\Area" VSDGAREA to tgreg_area
              If Not RetVal
                 Then FastMsg("Area n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMAREA=tgreg_area["Descricao da Area"]
              EndIf
         Else VSDGNOMAREA="Todas"
       EndIf
  Case Campo="TG_COBRADOR":                                                     ;tgreg_cobrador
       VSDGCOBRADOR=ControlValue("TG_COBRADOR")
       If Not IsBlank(VSDGCOBRADOR)
         Then VSDGCOBRADOR=ALINHM(VSDGCOBRADOR,2)
              GetRecord "\\Sistemas\\Cadastro\\Cobrador" VSDGCOBRADOR to tgreg_cobrador
              If Not RetVal
                 Then FastMsg("Cobrador n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMCOBRADOR=tgreg_cobrador["Descricao do Cobrador"]
              EndIf
         Else VSDGNOMCOBRADOR="Todos"
       EndIf
       
  Case Campo="TG_ITEM":                                                         ;tgreg_itens
       VSDGITEM=ControlValue("TG_ITEM")
       If Not IsBlank(VSDGITEM)
         Then If Len(VSDGITEM)<10 Then VSDGITEM=ALINHM(VSDGITEM,10) EndIf
              GetRecord "\\Sistemas\\Estoque\\Itens" VSDGITEM to tgreg_itens 
              If Not RetVal
                 Then FastMsg("Item n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMITEM=tgreg_itens["Descricao do Item"]
              EndIf
         Else VSDGNOMITEM="Todos"
       EndIf       
  Case Campo="TG_ITEM1":                                                        ;tgreg_itens1
       VSDGITEM1=ControlValue("TG_ITEM1")
       If Not IsBlank(VSDGITEM1)
         Then VSDGITEM1=ALINHM(VSDGITEM1,10)
              GetRecord "\\Sistemas\\Estoque\\Itens" VSDGITEM1 to tgreg_itens1
              If Not RetVal
                 Then FastMsg("Item n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMITEM1=tgreg_itens1["Descricao do Item"]
              EndIf
         Else VSDGNOMITEM1="Todos"
       EndIf
  Case Campo="TG_ITEM2":                                                        ;tgreg_itens2
       VSDGITEM2=ControlValue("TG_ITEM2")
       If Not IsBlank(VSDGITEM2)
         Then VSDGITEM2=ALINHM(VSDGITEM2,10)
              GetRecord "\\Sistemas\\Estoque\\Itens" VSDGITEM2 to tgreg_itens2
              If Not RetVal
                 Then FastMsg("Item n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMITEM2=tgreg_itens2["Descricao do Item"]
              EndIf
         Else VSDGNOMITEM2="Todos"
       EndIf

  Case Campo="TG_CONTA":                                                        ;tgreg_conta
       VSDGCONTA=ControlValue("TG_CONTA")
       switch
         case IsBlank(VSDGCONTA)                   : 
           VSDGNOMCONTA="Todas"
           ListaRegra_VSDGCONTA_Ativo =False    

         case VSDGCONTA ="?"                       : 
           switch
             case substr(VSDGNOMCONTA ,1,4)="Op: "     :
             otherwise                               : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch

         otherwise                                  :                           ;tgreg_empresas
           VSDGCONTA=ALINHM(VSDGCONTA,4)
           GetRecord "\\Sistemas\\CtaCor\\Conta" VSDGCONTA to tgreg_conta 
           If Not RetVal
              Then FastMsg("Conta n„o cadastrada !")
                   Valor=False
              Else VSDGNOMCONTA=tgreg_conta["Descricao da Conta"]
                   VSDGTPCONTA =tgreg_conta["Tipo da Conta"     ]
           EndIf
           ListaRegra_VSDGCONTA_Ativo=False
       endswitch

  Case Campo="TG_CONTA2":                                                       ;tgreg_conta2
       VSDGCONTA2=ControlValue("TG_CONTA2")
       If Not IsBlank(VSDGCONTA2)
         Then VSDGCONTA2=ALINHM(VSDGCONTA2,4)
              GetRecord "\\Sistemas\\CtaCor\\Conta" VSDGCONTA2 to tgreg_conta2 
              If Not RetVal
                 Then FastMsg("Conta n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMCONTA2=tgreg_conta2["Descricao da Conta"]
                      VSDGTPCONTA2 =tgreg_conta2["Tipo da Conta"     ]
              EndIf
         Else VSDGNOMCONTA2="Todas"
       EndIf
  Case Campo="TG_TPCART":
       VSDGTPCART=ControlValue("TG_TPCART")
       switch
         case IsBlank(VSDGTPCART)                   : 
           VSDGNOMCART ="Todas"   
           ListaRegra_VSDGTPCART_Ativo =False    
         case VSDGTPCART ="?"                       : 
           switch
             case substr(VSDGNOMCART ,1,4)="Op: "   : ; ok!
             otherwise                              : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
         otherwise                                  :                           ;tgreg_tpcart
            GetRecord "\\Sistemas\\Ctarec\\Tpcart" VSDGTPCART to tgreg_tpcart 
            If Not RetVal
               Then FastMsg("Tipo n„o Cadastrado !")
                    Valor=False
               Else VSDGNOMCART=tgreg_tpcart["Descricao do Lancamento"]
            EndIf
            ListaRegra_VSDGTPCART_Ativo=False
       endswitch
       
  Case Campo="TG_DDPROTESTO":
       VSDGDDPROTESTO=ControlValue("TG_DDPROTESTO")

  Case Campo="TG_TPPAGTO":
       VSDGTPPAGTO=ControlValue("TG_TPPAGTO")
       switch
         case IsBlank(VSDGTPPAGTO)                  : 
           VSDGNOMTPPAGTO="Todos"   
           ListaRegra_VSDGTPPAGTO_Ativo=False    
         case VSDGTPPAGTO="?"                       : 
           switch
             case substr(VSDGNOMTPPAGTO,1,4)="Op: " : ; ok!
             otherwise                              : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
         otherwise                                  :                           ;tgreg_tppagto 
           GetRecord "\\Sistemas\\Cadastro\\TpPagto" VSDGTPPAGTO to tgreg_tppagto
           If Not RetVal
              Then FastMsg("Forma n„o cadastrada !")
                   Valor=False
              Else VSDGNOMTPPAGTO=tgreg_tppagto["Descricao Tipo Pagamento"]
           EndIf
           ListaRegra_VSDGTPPAGTO_Ativo=False
       endswitch
       
  Case Campo="TG_CONDPGTO" :                                                    ;tgreg_condpgto
       VSDGCONDPGTO=ControlValue("TG_CONDPGTO")
       If Not IsBlank(VSDGCONDPGTO)
         Then GetRecord "\\Sistemas\\Vendas\\CondPgto" VSDGCONDPGTO to tgreg_condpgto
              If Not RetVal
                 Then FastMsg("Condi‡„o n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMCONDPGTO=tgreg_condpgto["Descricao CondPagto"]
              EndIf
         Else VSDGNOMCONDPGTO="Todas"
       EndIf
  Case Campo="TG_CCUSTO":
       VSDGCCUSTO=ControlValue("TG_CCUSTO")
       
       tmp_VSDGCCUSTO=""
       If Not IsBlank(VSDGCCUSTO) 
          Then 
               switch
                 case Len(VSDGCCUSTO)=4 : VSDGCCUSTO    =SubStr(VSDGCCUSTO,1,3)
                                          tmp_VSDGCCUSTO=VSDGCCUSTO+".000"
                                          
                 case Len(VSDGCCUSTO)<3 : VSDGCCUSTO    =rtrim(SubStr(VSDGCCUSTO,1,3))
                                          VSDGNOMCUST="GRUPO.."
                                          
                 otherwise              : tmp_VSDGCCUSTO=VSDGCCUSTO
               endswitch
          
               if not isblank(tmp_VSDGCCUSTO)                                   ;tgreg_ccusto
                  then GetRecord "\\Sistemas\\Ctacor\\CCusto" tmp_VSDGCCUSTO to tgreg_ccusto
                       If Not Retval
                          Then FastMsg("Centro de Custo n„o cadastrado !")
                               Valor=False
                          Else VSDGNOMCUST=tgreg_ccusto["Descricao CCusto"]
                       EndIf
               endif
          Else VSDGNOMCUST="Todos"
       EndIf
       release vars tmp_VSDGCCUSTO
       
  Case Campo="TG_CCUSTO2" :                                                     ;tgreg_ccusto2
       VSDGCCUSTO2=ControlValue("TG_CCUSTO2")
       If Not IsBlank(VSDGCCUSTO2) And Len(VSDGCCUSTO2)=7
          Then GetRecord "\\Sistemas\\Ctacor\\CCusto" VSDGCCUSTO2 to tgreg_ccusto2 
               If Not Retval
                  Then FastMsg("Centro de Custo n„o cadastrado !")
                       Valor=False
                  Else VSDGNOMCUST2=tgreg_ccusto2["Descricao CCusto"]
               EndIf
          Else If IsBlank(VSDGCCUSTO2)
                  Then VSDGNOMCUST2="Todos"
                  Else If Len(VSDGCCUSTO2)=4
                          Then VSDGCCUSTO2=SubStr(VSDGCCUSTO2,1,3)
                       EndIf
                       VSDGNOMCUST2="Grupo.."
               EndIf
       EndIf
  Case Campo="TG_PLCONTAS" :                                                    ;tgreg_plcontas
       VSDGPLCONTAS=ControlValue("TG_PLCONTAS")
       If Not IsBlank(VSDGPLCONTAS)
          Then GetRecord "\\Sistemas\\Ctacor\\PlContas" VSDGPLCONTAS to tgreg_plcontas 
               If Not Retval
                  Then FastMsg("Conta do Plano n„o cadastrado !")
                       Valor=False
                  Else VSDGNOMPLCONTAS=LTrim(tgreg_plcontas["Descricao Plano_Conta"])
                       VSDGTPPLCONTAS =tgreg_plcontas["Tipo de Conta"]
               EndIf
          Else VSDGNOMPLCONTAS="Todas"
       EndIf
  Case Campo="TG_PLCONTAS2":                                                    ;tgreg_plcontas2
       VSDGPLCONTAS2=ControlValue("TG_PLCONTAS2")
       If Not IsBlank(VSDGPLCONTAS2)
          Then GetRecord "\\Sistemas\\Ctacor\\PlContas" VSDGPLCONTAS2 to tgreg_plcontas2 
               If Not Retval
                  Then FastMsg("Conta do Plano n„o cadastrado !")
                       VSDGNOMPLCONTAS2=""
                  Else VSDGNOMPLCONTAS2=LTrim(tgreg_plcontas2["Descricao Plano_Conta"])
                       VSDGTPPLCONTAS2 =tgreg_plcontas2["Tipo de Conta"]
               EndIf
          Else VSDGNOMPLCONTAS2="Todas"
       EndIf

  Case Campo="TG_PLCONTAS3":                                                    ;tgreg_plcontas3
       VSDGPLCONTAS3=ControlValue("TG_PLCONTAS3")
       If Not IsBlank(VSDGPLCONTAS3)
          Then GetRecord "\\Sistemas\\Ctacor\\PlContas" VSDGPLCONTAS3 to tgreg_plcontas3
               If Not Retval
                  Then FastMsg("Conta do Plano n„o cadastrado !")
                       Valor=False
                  Else VSDGNOMPLCONTAS=LTrim(tgreg_plcontas3["Descricao Plano_Conta"])
                       VSDGTPPLCONTAS =tgreg_plcontas3["Tipo de Conta"]
               EndIf
          Else VSDGNOMPLCONTAS="N¶O APLICAR !"
       EndIf

;  Case Campo="TG_ITEMTPGRADE":
;       VSDGITEMTPGRADE=ControlValue("TG_ITEMTPGRADE")
;       If Not IsBlank(VSDGITEMTPGRADE)
;         Then If Not Checa_Opcoes("Tipos/Grade",VSDGITEMTPGRADE)
;                 Then FastMsg("Grade n„o cadastrada !")
;                      Valor=False
;                 Else VSDGNOMITEMTPGRADE=Registro_F1["Descricao da Grade"]
;              EndIf
;         Else VSDGNOMITEMTPGRADE="Todas"
;              VSDGITEMGRADE     =""
;              VSDGNOMITEMGRADE  ="Todas"
;       EndIf
;  Case Campo="TG_ITEMGRADE":
;       VSDGITEMGRADE=ControlValue("TG_ITEMGRADE")
;       If Not IsBlank(VSDGITEMGRADE)
;         Then If Not Checa_Opcoes("Grade/Opcoes",VSDGITEMGRADE)
;                 Then FastMsg("Grade n„o cadastrada !")
;                      Valor=False
;                 Else VSDGNOMITEMGRADE=""
;              EndIf
;         Else VSDGNOMITEMGRADE="Todas"
;              If Not IsBlank(VSDGITEM)
;                 Then VSDGTIPOEST    =""
;                      VSDGNOMTPITEM  ="Todos"
;                      VSDGFAMILIA    =""
;                      VSDGNOMFAMILIA ="Todas"
;                      VSDGGRUPO      =""
;                      VSDGNOMGRUPO   ="Todos"
;                      VSDGSUBGRUPO   =""
;                      VSDGNOMSUBGRUPO="Todos"
;              EndIf
;       EndIf
  Case Campo="TG_TPTRIBUT" :                                                    ;tgreg_tptribut
       VSDGTPTRIBUT=ControlValue("TG_TPTRIBUT")
       If Not IsBlank(VSDGTPTRIBUT)
         Then GetRecord "\\Sistemas\\Estoque\\Tptribut" VSDGTPTRIBUT to tgreg_tptribut 
              If Not RetVal
                 Then FastMsg("Tipo n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMTPTRIBUT=tgreg_tptribut["Origem Tributacao"]
              EndIf
         Else VSDGNOMTPTRIBUT  ="Todos"
              VSDGTPTRIBUT    =""
       EndIf      
; Case Campo="TG_FAMILIA":
;      VSDGFAMILIA=ControlValue("TG_FAMILIA")
;      If Not IsBlank(VSDGFAMILIA)
;         Then VSDGFAMILIA=ALINHM(VSDGFAMILIA,3)
;              If Not Checa_Opcoes("Familia",VSDGFAMILIA)
;                 Then FastMsg("Familia n„o cadastrada !")
;                      Valor=False
;                 Else VSDGNOMFAMILIA=Registro_F1["Descricao da Familia"]
;              EndIf
;         Else VSDGNOMFAMILIA ="Todas"
;              VSDGGRUPO      =""
;              VSDGNOMGRUPO   ="Todos"
;              VSDGSUBGRUPO   =""
;              VSDGNOMSUBGRUPO="Todos"
;      EndIf
; Case Campo="TG_GRUPO":
;      VSDGGRUPO=ControlValue("TG_GRUPO")
;      If Not IsBlank(VSDGGRUPO)
;        Then VSDGGRUPO=ALINHM(VSDGGRUPO,3)
;             If Not Checa_Opcoes("Grupo",VSDGGRUPO)
;                Then FastMsg("Grupo n„o cadastrado p/ a familia !")
;                     Valor=False
;                Else VSDGNOMGRUPO=Registro_F1["Descricao do Grupo"]
;             EndIf
;        Else VSDGNOMGRUPO   ="Todos"
;             VSDGSUBGRUPO   =""
;             VSDGNOMSUBGRUPO="Todos"
;      EndIf
; Case Campo="TG_SUBGRUPO":
;      VSDGSUBGRUPO=ControlValue("TG_SUBGRUPO")
;      If Not IsBlank(VSDGSUBGRUPO)
;        Then VSDGSUBGRUPO=ALINHM(VSDGSUBGRUPO,3)
;             If Not Checa_Opcoes("SubGrupo",VSDGSUBGRUPO)
;                Then FastMsg("Subgrupo n„o cadastrado p/ o Grupo !")
;                     Valor=False
;                Else VSDGNOMSUBGRUPO=Registro_F1["Descricao do SubGrupo"]
;             EndIf
;        Else VSDGNOMSUBGRUPO="Todos"
;      EndIf

  Case Campo="TG_DEPART" :                                                      ;tgreg_depart
       VSDGDEPART=ControlValue("TG_DEPART")
       If Not IsBlank(VSDGDEPART)
         Then VSDGDEPART=ALINHM(VSDGDEPART,3)
              GetRecord "\\Sistemas\\Estoque\\Depart" VSDGDEPART to tgreg_depart 
              If Not RetVal
                 Then FastMsg("Departamento n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMDEPART=tgreg_depart["Descricao do Departamento"]
              EndIf
         Else VSDGNOMDEPART="Todos"
       EndIf

  Case Campo="TG_LPRESENTE" :                                                   ;tgreg_lpresenc
       VSDGLPRESENTE=ControlValue("TG_LPRESENTE")
       If Not IsBlank(VSDGLPRESENTE)
         Then VSDGLPRESENTE=ALINHM(VSDGLPRESENTE,6)
              GetRecord "\\Sistemas\\Vendas\\LPresenC" VSDGLPRESENTE to tgreg_lpresenc 
              If Not RetVal
                 Then FastMsg("Lista de Presente nÆo cadastrada !")
                      Valor=False
                 Else VSDGNOMLPRESENTE=tgreg_lpresenc["Nome Fantasia EmitDest"]+" - "+tgreg_lpresenc["Codigo"]
              EndIf
         Else VSDGNOMLPRESENTE="Todas"
       EndIf
       
  Case Campo="TG_MOTSITPED" :                                                   ;tgreg_pedmotiv
       VSDGSEQMOTSITPED=ControlValue("TG_MOTSITPED")
       If Not IsBlank(VSDGSEQMOTSITPED)
         Then VSDGSEQMOTSITPED=ALINHM(VSDGSEQMOTSITPED,2)
              GetRecord "\\Sistemas\\Vendas\\PedMotiv" VSDGSEQMOTSITPED to tgreg_pedmotiv                           
              If Not RetVal
                 Then FastMsg("Sequˆncia do Motivo da Situa‡Æo do Pedido nÆo cadastrado !")
                      Valor=False
                 Else VSDGDESMOTSITPED=tgreg_pedmotiv["Pedido_Motivo_Descricao"]
              EndIf
         Else VSDGNOMLPRESENTE="Todos"
       EndIf  
              
  Case Campo="TG_OP_LISTAPRESENTE"       :
       VSDGOPLISTAPRESENTE=ControlValue("TG_OP_LISTAPRESENTE")
       switch
         case VSDGOPLISTAPRESENTE="P" : VSDGOPNOMLISTAPRESENTE = "LISTA DE CHA DE PANELA"
         case VSDGOPLISTAPRESENTE="N" : VSDGOPNOMLISTAPRESENTE = "LISTA DE CASA NOVA"
         otherwise                    : VSDGOPLISTAPRESENTE    = "C"
                                        VSDGOPNOMLISTAPRESENTE = "LISTA DE CASAMENTO"
       endswitch     

  Case Campo="TG_TPCUSTO":
       VSDGTPCUSTO=ControlValue("TG_TPCUSTO")
       If Not IsBlank(VSDGTPCUSTO)
          Then If VSDGTPCUSTO="1"
									Then VSDGNOMTPCUSTO="Custo M‚dio"
									Else VSDGNOMTPCUSTO="éltimo Custo"
               EndIf
          Else Valor=False
       EndIf
       
       
  Case Campo="TG_OPDTES"       :
       VSDGOPDTES=ControlValue("TG_OPDTES")
       switch
         case VSDGOPDTES="2"       : VSDGNOMOPDTES="SAÖDA"
         otherwise                 : VSDGOPDTES   ="1"
                                     VSDGNOMOPDTES="EMISS¶O"
       endswitch
       
  Case Campo="TG_OPDTESI"       :
       VSDGOPDTESI=ControlValue("TG_OPDTESI")
       switch
         case VSDGOPDTESI="2"       : VSDGNOMOPDTES="SAÖDA"
         case VSDGOPDTESI="3"       : VSDGNOMOPDTES="INCLUSÇO"
         otherwise                  : VSDGOPDTESI   ="1"
                                      VSDGNOMOPDTES="EMISS¶O"
       endswitch
       
  Case Campo="TG_OPDTPEEI"     :
       VSDGOPDTPEEI=ControlValue("TG_OPDTPEEI")
       switch
         case VSDGOPDTPEEI="3"     : VSDGNOMOPDTPEEI="INCLUSÇO"
         case VSDGOPDTPEEI="2"     : VSDGNOMOPDTPEEI="EMISS¶O"
         otherwise                 : VSDGOPDTPEEI   ="1"
                                     VSDGNOMOPDTPEEI="ENTREGA"
       endswitch
       
  Case Campo="TG_OPDTPEEIR"     :
       VSDGOPDTPEEIR=ControlValue("TG_OPDTPEEIR")
       switch
         case VSDGOPDTPEEIR="4"     : VSDGNOMOPDTPEEIR="RELA€¶O PEDIDOS"
         case VSDGOPDTPEEIR="3"     : VSDGNOMOPDTPEEIR="INCLUSÇO"
         case VSDGOPDTPEEIR="2"     : VSDGNOMOPDTPEEIR="EMISS¶O"
         otherwise                  : VSDGOPDTPEEIR   ="1"
                                      VSDGNOMOPDTPEEIR="ENTREGA"
       endswitch
       
  Case Campo="TG_OPDTPEEIRF"    :
       VSDGOPDTPEEIRF=ControlValue("TG_OPDTPEEIRF")
       switch
         case VSDGOPDTPEEIRF="5"     : VSDGNOMOPDTPEEIRF="FATURADO"
         case VSDGOPDTPEEIRF="4"     : VSDGNOMOPDTPEEIRF="RELA€¶O PEDIDOS"
         case VSDGOPDTPEEIRF="3"     : VSDGNOMOPDTPEEIRF="INCLUSÇO"
         case VSDGOPDTPEEIRF="2"     : VSDGNOMOPDTPEEIRF="EMISS¶O"
         otherwise                   : VSDGOPDTPEEIRF   ="1"
                                       VSDGNOMOPDTPEEIRF="ENTREGA"
       endswitch
       
  Case Campo="TG_OPDTCHVLI"     :
       VSDGOPDTCHVLI=ControlValue("TG_OPDTCHVLI")
       switch
         case VSDGOPDTCHVLI="4"    : VSDGNOMOPDTCHVLI="ENTRADA"
         case VSDGOPDTCHVLI="3"    : VSDGNOMOPDTCHVLI="INCLUSÇO"
         case VSDGOPDTCHVLI="2"    : VSDGNOMOPDTCHVLI="LIQUIDA€¶O"
         otherwise                 : VSDGOPDTCHVLI   ="1"
                                     VSDGNOMOPDTCHVLI="VENCIMENTO"
       endswitch

  Case Campo="TG_OPDTCHVEI"     :
       VSDGOPDTCHVEI=ControlValue("TG_OPDTCHVEI")
       switch
         case VSDGOPDTCHVEI="4"    : VSDGNOMOPDTCHVEI="ENTRADA"
         case VSDGOPDTCHVEI="3"    : VSDGNOMOPDTCHVEI="INCLUSÇO"
         otherwise                 : VSDGOPDTCHVEI   ="1"
                                     VSDGNOMOPDTCHVEI="VENCIMENTO"
       endswitch
       
  Case Campo="TG_OPDTCHVL"      :
       VSDGOPDTCHVL=ControlValue("TG_OPDTCHVL")
       switch
         case VSDGOPDTCHVL ="2"    : VSDGNOMOPDTCHVL ="LIQUIDA€¶O"
         otherwise                 : VSDGOPDTCHVL    ="1"
                                     VSDGNOMOPDTCHVL ="VENCIMENTO"
       endswitch

  Case Campo="TG_OPDTCP"     :
       VSDGOPDTCP=ControlValue("TG_OPDTCP")
       switch
         case VSDGOPDTCP="6"    : VSDGNOMOPDTCP="INCLUSÇO"
         case VSDGOPDTCP="5"    : VSDGNOMOPDTCP="COMPETENCIA"
         case VSDGOPDTCP="4"    : VSDGNOMOPDTCP="ENTRADA"
         case VSDGOPDTCP="3"    : VSDGNOMOPDTCP="A PAGAR"
         case VSDGOPDTCP="2"    : VSDGNOMOPDTCP="EMISS¶O"
         otherwise              : VSDGOPDTCP   ="1"
                                  VSDGNOMOPDTCP="VENCIMENTO"
       endswitch       

  Case Campo="TG_OPDTCRB"     :
       VSDGOPDTCRB=ControlValue("TG_OPDTCRB")
       switch
         case VSDGOPDTCRB="4"    : VSDGNOMOPDTCRB="INCLUSÇO PAGTO"
         case VSDGOPDTCRB="3"    : VSDGNOMOPDTCRB="EMISSÇO"
         case VSDGOPDTCRB="2"    : VSDGNOMOPDTCRB="VENCIMENTO"
         otherwise               : VSDGOPDTCRB   ="1"
                                   VSDGNOMOPDTCRB="PAGAMENTO"
       endswitch       
       
  Case Campo="TG_OPDTEMISENTR"     :
       VSDGOPDTEMISENTR=ControlValue("TG_OPDTEMISENTR")
       If Not IsBlank(VSDGOPDTEMISENTR)
          Then If VSDGOPDTEMISENTR="1"
                  Then VSDGNOMOPDTEMISENTR="ENTREGA"
                  Else VSDGNOMOPDTEMISENTR="EMISS¶O"
							 EndIf
					Else Valor=False
			 EndIf
			 
  Case Campo="TG_OPDTEMISENTRADA"     :
       VSDGOPDTEMISENTRADA=ControlValue("TG_OPDTEMISENTRADA")
       If Not IsBlank(VSDGOPDTEMISENTRADA)
          Then If VSDGOPDTEMISENTRADA="1"
                  Then VSDGNOMOPDTEMISENTRADA="ENTRADA"
                  Else VSDGNOMOPDTEMISENTRADA="EMISS¶O"
							 EndIf
					Else Valor=False
			 EndIf
			 
  Case Campo="TG_OPDTEMISCOMP"     :
       VSDGOPDTEMISCOMP=ControlValue("TG_OPDTEMISCOMP")
       switch
         case VSDGOPDTEMISCOMP="2" : VSDGNOMOPDTEMISCOMP="COMPETÒNCIA"
         otherwise                 : VSDGOPDTEMISCOMP   ="1"
                                     VSDGNOMOPDTEMISCOMP="LAN€AMENTO/EMISS¶O"
       endswitch

  Case Campo="TG_OPDTEMISCOMPDP"     :
       VSDGOPDTEMISCOMP=ControlValue("TG_OPDTEMISCOMPDP")
       switch
         case VSDGOPDTEMISCOMP="4" : VSDGNOMOPDTEMISCOMP="PRE_DATADO"
         case VSDGOPDTEMISCOMP="3" : VSDGNOMOPDTEMISCOMP="DESCONTADO"
         case VSDGOPDTEMISCOMP="2" : VSDGNOMOPDTEMISCOMP="COMPETÒNCIA"
         otherwise                 : VSDGOPDTEMISCOMP   ="1"
                                     VSDGNOMOPDTEMISCOMP="LAN€AMENTO/EMISS¶O"
       endswitch
			 


			 
  Case Campo="TG_OPDTEMISVENC"     :
       VSDGOPDTEMISVENC=ControlValue("TG_OPDTEMISVENC")
       switch
         case VSDGOPDTEMISVENC="2" : VSDGNOMOPDTEMISVENC="EMISSÇO"
         otherwise                 : VSDGOPDTEMISVENC   ="1"
                                     VSDGNOMOPDTEMISVENC="VENCIMENTO"
       endswitch
	
  Case Campo="TG_OPDTRP"       :
       VSDGOPDTRP=ControlValue("TG_OPDTRP")
       switch
         case VSDGOPDTRP="2"       : VSDGNOMOPDTRP="NO PERÖODO"
         otherwise                 : VSDGOPDTRP   ="1"
                                     VSDGNOMOPDTRP="NA DATA"
       endswitch


  Case Campo="TG_OPDTPPE"     :
       VSDGOPDTPPE=ControlValue("TG_OPDTPPE")
       switch
         case VSDGOPDTPPE="3"     : VSDGNOMOPDTPPE="ENTREGA"
         case VSDGOPDTPPE="2"     : VSDGNOMOPDTPPE="PREVIS¶O"
         otherwise                : VSDGOPDTPPE   ="1"
                                    VSDGNOMOPDTPPE="PROGRAMA€¶O"
       endswitch
  		 
  Case Campo="TG_OPRELANALSINT":
       VSDGOPRELANALSINT=ControlValue("TG_OPRELANALSINT")
       If VSDGOPRELANALSINT="2"
          Then VSDGNOMOPRELANALSINT="Sint‚tico"
          Else VSDGNOMOPRELANALSINT="Anal¡tico"
               VSDGOPRELANALSINT="1"
       EndIf
  Case Campo="TG_OPRELCODALF":
       VSDGOPRELCODALF=ControlValue("TG_OPRELCODALF")
       Switch
         Case VSDGOPRELCODALF="2" : VSDGNOMOPRELCODALF="Alfab‚tica"
         OtherWise                : VSDGNOMOPRELCODALF="C¢digo"
                                    VSDGOPRELCODALF="1"
       EndSwitch  

  Case Campo="TG_OPRELCODALFRANK":
       VSDGOPRELCODALFRANK=ControlValue("TG_OPRELCODALFRANK")
       Switch
         Case VSDGOPRELCODALFRANK="2" : VSDGNOMOPRELCODALFRANK="Alfab‚tica"
         Case VSDGOPRELCODALFRANK="3" : VSDGNOMOPRELCODALFRANK="Ranking"
         OtherWise                    : VSDGNOMOPRELCODALFRANK="C¢digo"
                                        VSDGOPRELCODALFRANK="1"
       EndSwitch  

  Case Campo="TG_OPRELCODALFRANK2":
       VSDGOPRELCODALFRANK2=ControlValue("TG_OPRELCODALFRANK2")
       Switch
         Case VSDGOPRELCODALFRANK2="2" : VSDGNOMOPRELCODALFRANK2="Alfab‚tica"
         Case VSDGOPRELCODALFRANK2="3" : VSDGNOMOPRELCODALFRANK2="Ranking Quantidade"
         Case VSDGOPRELCODALFRANK2="4" : VSDGNOMOPRELCODALFRANK2="Ranking Valor"
         OtherWise                     : VSDGNOMOPRELCODALFRANK2="C¢digo"
                                         VSDGOPRELCODALFRANK2="1"
       EndSwitch  

  Case Campo="TG_OPATACVAREJ":
       VSDGOPATACVAREJ=ControlValue("TG_OPATACVAREJ")
       If VSDGOPATACVAREJ="1"
          Then VSDGNOMOPATACVAREJ="ATACADO"
          Else VSDGNOMOPATACVAREJ="VAREJO"
               VSDGOPATACVAREJ="2"
       EndIf

  Case Campo="TG_OPRELCODALFDIG":
       VSDGOPRELCODALFDIG=ControlValue("TG_OPRELCODALFDIG")
       If VSDGOPRELCODALFDIG="2"
          Then VSDGNOMOPRELCODALFDIG="Alfab‚tica"
          Else If VSDGOPRELCODALFDIG="3"
                  Then VSDGNOMOPRELCODALFDIG="Digitada"
                  Else VSDGNOMOPRELCODALFDIG="C¢digo"
                       VSDGOPRELCODALFDIG="1"
               EndIf
       EndIf
  Case Campo="TG_OPRELLISTCAD":
       VSDGOPRELLISTCAD=ControlValue("TG_OPRELLISTCAD")
       If Not IsBlank(VSDGOPRELLISTCAD)
          Then If VSDGOPRELLISTCAD="1"
                  Then VSDGNOMOPRELLISTCAD="Listagem de Clientes"
                  Else VSDGNOMOPRELLISTCAD="Cadastro de Clientes"
							 EndIf
					Else Valor=False
       EndIf
  Case Campo="TG_SITUACAOOE"          :
       VSDGSITUACAOOE=ControlValue("TG_SITUACAOOE")
       If IsBlank(VSDGSITUACAOOE) then VSDGSITUACAOOE="TODAS" EndIf
       if VSDGSITUACAOOE<>"EM ABERTO"                 And
          VSDGSITUACAOOE<>"LIBERADO"                  And
          VSDGSITUACAOOE<>"FATURADO"                  And
          VSDGSITUACAOOE<>"JUNTAR EM ABERTO+LIBERADO" And
          VSDGSITUACAOOE<>"IGNORAR LIBERADO"          And
          VSDGSITUACAOOE<>"TODAS"             
          Then FastMsg("Situa‡Æo inv lida !")
		 		 	    Valor=False
       EndIf
       
  Case Campo="TG_SITUACAOPEDIDO"      : 
     VSDGSITUACAOPEDIDO=ControlValue("TG_SITUACAOPEDIDO")

     if isBlank(VSDGSITUACAOPEDIDO) then VSDGSITUACAOPEDIDO="TODAS" endif
     if VSDGSITUACAOPEDIDO<>"ABERTO"                     And
        VSDGSITUACAOPEDIDO<>"SUSPENSO"                   And
        VSDGSITUACAOPEDIDO<>"FATURADO"                   And
        VSDGSITUACAOPEDIDO<>"CANCELADO"                  And
        VSDGSITUACAOPEDIDO<>"JUNTAR ABERTO+SUSPENSO"     And
        VSDGSITUACAOPEDIDO<>"IGNORAR CANCELADO+SUSPENSO" And
        VSDGSITUACAOPEDIDO<>"IGNORAR CANCELADO"          And
        VSDGSITUACAOPEDIDO<>"TODAS"             
        then FastMsg("Situa‡Æo inv lida !")
					   Valor=False
     EndIf
  
  Case Campo="TG_SITUACAOFAC"      : 
     VSDGSITUACAOFAC=ControlValue("TG_SITUACAOFAC")

     if isBlank(VSDGSITUACAOFAC) then VSDGSITUACAOFAC="TODAS" endif
     if VSDGSITUACAOFAC<>"PROGRAMADA"                  And
        VSDGSITUACAOFAC<>"EM PRODUCAO"                 And
        VSDGSITUACAOFAC<>"SUSPENSA"                    And
        VSDGSITUACAOFAC<>"FINALIZADA"                  And
        VSDGSITUACAOFAC<>"TODAS"             
        then FastMsg("Situa‡Æo inv lida !")
					   Valor=False
     EndIf
  
  Case Campo="TG_SITUACAOPEDIDOAS"      : 
     VSDGSITUACAOPEDIDO=ControlValue("TG_SITUACAOPEDIDOAS")

     if isBlank(VSDGSITUACAOPEDIDO) then VSDGSITUACAOPEDIDO="ABERTO" endif
     if VSDGSITUACAOPEDIDO<>"ABERTO"                     And
        VSDGSITUACAOPEDIDO<>"SUSPENSO"                   And
        VSDGSITUACAOPEDIDO<>"JUNTAR ABERTO+SUSPENSO"             
        then FastMsg("Situa‡Æo inv lida !")
					   Valor=False
     EndIf
  
  Case Campo="TG_SITUACAOOC"      : 
     VSDGSITUACAOOC=ControlValue("TG_SITUACAOOC")

     if isBlank(VSDGSITUACAOOC) then VSDGSITUACAOOC="TODAS" endif
     if VSDGSITUACAOOC<>"ABERTO"                     And
        VSDGSITUACAOOC<>"SUSPENSO"                   And
        VSDGSITUACAOOC<>"ENTREGUE"                   And
        VSDGSITUACAOOC<>"CANCELADO"                  And
        VSDGSITUACAOOC<>"JUNTAR ABERTO+SUSPENSO"     And
        VSDGSITUACAOOC<>"IGNORAR CANCELADO+SUSPENSO" And
        VSDGSITUACAOOC<>"IGNORAR CANCELADO"          And
        VSDGSITUACAOOC<>"TODAS"             
        then FastMsg("Situa‡Æo inv lida !")
					   Valor=False
     EndIf                                       
       
  Case Campo="TG_SITUACAONOTA"      : 
     VSDGSITUACAONOTA=ControlValue("TG_SITUACAONOTA")

     if isBlank(VSDGSITUACAONOTA) then VSDGSITUACAONOTA="TODAS" endif
     if VSDGSITUACAONOTA<>"NORMAL"                     And
        VSDGSITUACAONOTA<>"CANCELADA"                  And
        VSDGSITUACAONOTA<>"INUTILIZADA"                And
        VSDGSITUACAONOTA<>"CANCELADA+DENEGADA"         And
        VSDGSITUACAONOTA<>"CANCELADA+EXTEMPORANEA"     And
        VSDGSITUACAONOTA<>"TODAS"             
        then FastMsg("Situa‡Æo inv lida !")
					   Valor=False
     EndIf                                  
       
  Case Campo="TG_SITUACAOCHEQUE": 
     VSDGSITUACAOCHEQUE=ControlValue("TG_SITUACAOCHEQUE")
     if isBlank(VSDGSITUACAOCHEQUE) then VSDGSITUACAOCHEQUE="TODAS" endif
     if VSDGSITUACAOCHEQUE<>"EM ABERTO"             And
        VSDGSITUACAOCHEQUE<>"PRORROGADO"            And
        VSDGSITUACAOCHEQUE<>"LIQUIDADO"             And
        VSDGSITUACAOCHEQUE<>"EM COBRANCA"           And
        VSDGSITUACAOCHEQUE<>"TROCADO"               And
        VSDGSITUACAOCHEQUE<>"SEM FUNDO"             And
        VSDGSITUACAOCHEQUE<>"TODAS"             
        then FastMsg("Situa‡Æo inv lida !")
             Valor=False
     endif   
       
	Case Campo="TG_DTEMI":
       VSDGDTEMI=ControlValue("TG_DTEMI")
       If IsBlank(VSDGDTEMI)
          Then VSDGDTEMI=Today()
       EndIf
  Case Campo="TG_DTENT":
       VSDGDTENT=ControlValue("TG_DTENT")
  Case Campo="TG_DTREF":
       VSDGDTREF=ControlValue("TG_DTREF")
       If IsBlank(VSDGDTREF)
          Then VSDGDTREF=Today()
       EndIf
  Case Campo="TG_TPLANC" :                                                      ;tgreg_tplanc
       VSDGTPLANC=ControlValue("TG_TPLANC")
       switch
         case IsBlank(VSDGTPLANC)                   : 
           VSDGNOMLANC ="Todos"   
           ListaRegra_VSDGTPLANC_Ativo =False    
         case VSDGTPLANC ="?"                       : 
           switch
             case substr(VSDGNOMLANC ,1,4)="Op: "   : ; ok!
             otherwise                              : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
         otherwise                                  :                           
            GetRecord "\\Sistemas\\Cadastro\\Tplanc" VSDGTPLANC to tgreg_tplanc 
            If Not RetVal
               Then FastMsg("Tipo n„o Cadastrado !")
                    Valor=False
               Else VSDGNOMLANC=tgreg_tplanc["Descricao do Lancamento"]
            EndIf
            ListaRegra_VSDGTPLANC_Ativo=False
       endswitch
  Case Campo="TG_TPLANC2" :                                                     ;tgreg_tplanc2
       VSDGTPLANC2=ControlValue("TG_TPLANC2")
       If Not IsBlank(VSDGTPLANC2)
         Then GetRecord "\\Sistemas\\Cadastro\\Tplanc" VSDGTPLANC2 to tgreg_tplanc2
              If Not RetVal
                 Then FastMsg("Tipo n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMLANC2=tgreg_tplanc2["Descricao do Lancamento"]
              EndIf
         Else VSDGNOMLANC2="Todos"
       EndIf     
  Case Campo="TG_TPOPER" :                                                      ;tgreg_tpoperac
       VSDGTPOPER=ControlValue("TG_TPOPER")
       If Not IsBlank(VSDGTPOPER)
         Then VSDGTPOPER=AlinhM(VSDGTPOPER,2)
              GetRecord "\\Sistemas\\Cadastro\\Tpoperac" VSDGTPOPER to tgreg_tpoperac
              If Not RetVal
                 Then FastMsg("Opera‡Æo nÆo cadastrada !")
                      Valor=False
                 Else VSDGNOMOPER=tgreg_tpoperac["Descricao Operacao"]
              EndIf
         Else VSDGNOMOPER="Todos"
       EndIf
       
  Case Campo="TG_TPOPER2" :                                                     ;tgreg_tpoperac2 
       VSDGTPOPER2=ControlValue("TG_TPOPER2")
       If Not IsBlank(VSDGTPOPER2)
         Then VSDGTPOPER2=AlinhM(VSDGTPOPER2,2)
              GetRecord "\\Sistemas\\Cadastro\\Tpoperac" VSDGTPOPER2 to tgreg_tpoperac2
              If Not RetVal
                 Then FastMsg("Opera‡Æo n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMOPER2=tgreg_tpoperac2["Descricao Operacao"]
              EndIf
         Else VSDGNOMOPER2="Todos"
       EndIf     

  Case Campo="TG_DTINI":
       VSDGDTINI=ControlValue("TG_DTINI")
  Case Campo="TG_DTFIM":
       VSDGDTFIM=ControlValue("TG_DTFIM")

       If IsBlank(VSDGDTFIM)
          then VSDGDTFIM=today()
       endif   
       If (VSDGDTFIM<VSDGDTINI)
          Then FastMsg("Data Final inv lida !")
               Valor=False
       EndIf
  
       If IsAssigned(VSDGDTINI) And IsAssigned(VSDGDTFIM)
          Then
                SYS_DTINI=VSDGDTINI
                SYS_DTFIM=VSDGDTFIM
                
                Editor Open "Savevars.sc"
                Editor Find "SYS_DTINI"
                If RetVal
                   Then DELETELINE
                        ENTER
                        UP
                        TypeIn "SYS_DTINI = "
                        If IsBlank(SYS_DTINI)
                           Then TypeIn "BlankDate()"
                           Else TypeIn SYS_DTINI
                        Endif   
                        DOWN
                EndIf
                CtrlPgUp
                Editor Find "SYS_DTFIM"
                If RetVal
                   Then DELETELINE
                        ENTER
                        UP
                        TypeIn "SYS_DTFIM = "
                        If IsBlank(SYS_DTFIM)
                           Then TypeIn "BlankDate()"
                           Else TypeIn SYS_DTFIM
                        Endif   
                        DOWN
                EndIf
                Do_It!
       EndIf       
       

  Case Campo="TG_DTINI2":
       VSDGDTINI2=ControlValue("TG_DTINI2")
  Case Campo="TG_DTFIM2":
       VSDGDTFIM2=ControlValue("TG_DTFIM2")

       If IsBlank(VSDGDTFIM2)
          then VSDGDTFIM2=today()
       endif   
       If (VSDGDTFIM2<VSDGDTINI2)
          Then FastMsg("Data Final inv lida !")
               Valor=False
       EndIf

  Case Campo="TG_CPFCGCTIT":
       VSDGCPFCGCTIT=ControlValue("TG_CPFCGCTIT")
  Case Campo="TG_NOMETIT"  :
       VSDGNOMETIT=ControlValue("TG_NOMETIT")
  Case Campo="TG_NUMCHEQ"  : 
       VSDGNUMCHEQ=ControlValue("TG_NUMCHEQ")

  Case Campo="TG_HRINI":
       VSDGHRINI=ControlValue("TG_HRINI")
       If IsBlank(VSDGHRINI) Then VSDGHRINI="00:00" EndIf
       If VSDGHRINI>"24:00"  
          Then FastMsg("Hora Inicial Inv lida !")
               Valor=False
       EndIf
  Case Campo="TG_HRFIM":
       VSDGHRFIM=ControlValue("TG_HRFIM")
       If IsBlank(VSDGHRFIM) Then VSDGHRFIM="24:00" EndIf
       If VSDGHRFIM>"24:00"  
          Then FastMsg("Hora Final Inv lida !")
               Valor=False
          Else If IsAssigned(VSDGDTINI) And IsAssigned(VSDGDTFIM)
                  Then If VSDGDTFIM=VSDGDTINI
                          Then If VSDGHRFIM<VSDGHRINI
                                  Then FastMsg("Hora Final Inv lida !")
                                       Valor=False
                               EndIf
                       EndIf
                  Else If VSDGHRFIM<VSDGHRINI
                          Then FastMsg("Hora Final Inv lida !")
                               Valor=False
                       EndIf
               EndIf
       EndIf
  Case Campo="TG_DESTIN" :
       VSDGDESTIN=ControlValue("TG_DESTIN")
       switch
         case IsBlank(VSDGDESTIN)                   : 
           VSDGNOMDESTIN="Todas"
           ListaRegra_VSDGDESTIN_Ativo =False    
         case VSDGDESTIN ="?"                       : 
           switch
             case substr(VSDGNOMDESTIN,1,4)="Op: "     :
                If IsAssigned(VSDGTPMOVDESTIN) Then VSDGTPMOVDESTIN="" EndIf             
             otherwise                                : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
       otherwise                                  :                             ;tgreg_destin
            VSDGDESTIN=ALINHM(VSDGDESTIN,3)
            GetRecord "\\Sistemas\\Vendas\\Destin" VSDGDESTIN to tgreg_destin
            If Not RetVal
               Then FastMsg("Destina‡„o n„o cadastrada !")
                    Valor=False
               Else VSDGNOMDESTIN=tgreg_destin["Descricao da Destinacao"]

                    If IsAssigned(VSDGTPMOVDESTIN) Then VSDGTPMOVDESTIN=tgreg_destin["Tipo Movimento Estoque"] EndIf                  
               
            EndIf
            ListaRegra_VSDGDESTIN_Ativo=False             
      EndSwitch
      
  Case Campo="TG_TPMOVDESTIN"     :
       VSDGTPMOVDESTIN=ControlValue("TG_TPMOVDESTIN")
       switch
         case VSDGTPMOVDESTIN="S"   : VSDGNOMTPMOVIMENTO="SAIDAS"
         case VSDGTPMOVDESTIN="E"   : VSDGNOMTPMOVIMENTO="ENTRADAS"
         otherwise                  : VSDGTPMOVDESTIN   =""
                                      VSDGNOMTPMOVIMENTO="TODAS"
       endswitch

  Case Campo="TG_TAXAD":
       VSDGTAXAD=ControlValue("TG_TAXAD")       
       
  Case Campo="TG_TIPOEST":
       VSDGTIPOEST=ControlValue("TG_TIPOEST")
       switch
         case IsBlank(VSDGTIPOEST)                   : 
           VSDGDESCTIPOEST="Todos"
           VSDGNOMTPITEM  ="Todos"
           ListaRegra_VSDGTIPOEST_Ativo =False    

         case VSDGTIPOEST ="?"                       : 
           switch
             case substr(VSDGDESCTIPOEST ,1,4)="Op: ":
             otherwise                               : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch

         Case VSDGTIPOEST="1": VSDGDESCTIPOEST="ALMOXARIFADO"

         Case VSDGTIPOEST="2": VSDGDESCTIPOEST="VENDAS"

         otherwise                                  :  
           getrecord "\\Sistemas\\Estoque\\Tpitem" VSDGTIPOEST to tgreg_tpitem
           If Not RetVal
              Then FastMsg("Tipo n„o cadastrado !")
                   Valor=False
              Else VSDGDESCTIPOEST=tgreg_tpitem["Descricao Tipo do Item"]
                   VSDGNOMTPITEM  =tgreg_tpitem["Descricao Tipo do Item"]
           EndIf
           ListaRegra_VSDGTIPOEST_Ativo=False
       endswitch

  Case Campo="TG_MESANO":
       VSDGMESANO=ControlValue("TG_MESANO")
       If IsBlank(VSDGMESANO)
          Then VSDGMESANO=AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)
       EndIf
       Switch
         Case LEN(VSDGMESANO)<7                           : Valor=False
         Case NumVal(Substr(VSDGMESANO,1,2))<1            : Valor=False
         Case NumVal(Substr(VSDGMESANO,1,2))>12           : Valor=False
         Case NumVal(Substr(VSDGMESANO,4,4))<1900         : Valor=False
       EndSwitch
       If Not Valor
          Then VSDGMESANO=""
               FastMsg("Valor inv lido, formato MM/AAAA !")
       EndIf

  Case Campo="TG_MARCA":
       VSDGMARCA=ControlValue("TG_MARCA")
       switch
         case IsBlank(VSDGMARCA)                   : 
           VSDGNOMMARCA="Todas"
           ListaRegra_VSDGMARCA_Ativo =False    
         case VSDGMARCA ="?"                       : 
           switch
             case substr(VSDGNOMMARCA ,1,4)="Op: "     :
             otherwise                                : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
       otherwise                                  :
          VSDGMARCA=ALINHM(VSDGMARCA,3)
          getrecord "\\Sistemas\\Estoque\\Marcas" VSDGMARCA to tgreg_marcas
          If Not RetVal
             Then FastMsg("Marca n„o cadastrada !")
                  Valor=False
             Else VSDGNOMMARCA=tgreg_marcas["Descricao da Marca"]
          EndIf
          ListaRegra_VSDGMARCA_Ativo=False
       endswitch
       If (Valor Or Upper(VSDGNOMMARCA)="TODAS") And Not Valida_ShowDialog("Marca")
          Then VSDGNOMMARCA=""
               Valor=False
       EndIf    
  Case Campo="TG_COR_TECIDO" :                                                  ;tgreg_cores
       VSDGCORTECIDO=ControlValue("TG_COR_TECIDO")                                        
       switch
         case IsBlank(VSDGCORTECIDO)                   : 
           VSDGNOMCORTECIDO="Todas"
           ListaRegra_VSDGCORTECIDO_Ativo =False    
         case VSDGCORTECIDO ="?"                       : 
           switch
             case substr(VSDGNOMCORTECIDO ,1,4)="Op: "     :
             otherwise                                : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
       otherwise                                  :
          VSDGCORTECIDO=ALINHM(VSDGCORTECIDO,4)
          getrecord "\\Sistemas\\Estoque\\Cores" VSDGCORTECIDO to tgreg_cores
          If Not RetVal
             Then FastMsg("Cor do Tecido n„o cadastrada !")
                  Valor=False
             Else VSDGNOMCORTECIDO=tgreg_cores["Descricao da Cor_Tecido"]
          EndIf
          ListaRegra_VSDGCORTECIDO_Ativo=False
       endswitch
       If (Valor Or Upper(VSDGNOMCORTECIDO)="TODAS") And Not Valida_ShowDialog("Cores")
          Then VSDGNOMCORTECIDO=""
               Valor=False
       EndIf  
  Case Campo="TG_AGEND" :                                                       ;tgreg_agencc  
       VSDGAGEND=ControlValue("TG_AGEND")
       If Not IsBlank(VSDGAGEND)
         Then GetRecord "\\Sistemas\\Vendas\\AgencC" VSDGAGEND to tgreg_agencc
              If Not RetVal
                 Then FastMsg("Agendamento n„o localizado !")
                      Valor=False
                 Else VSDGNOMAGEND=tgreg_agencc["Titulo_Agendamento"]
              EndIf
         Else VSDGNOMAGEND="Todos"
       EndIf
  Case Campo="TG_MARCAINI" :                                                    ;tgreg_marcaini
       VSDGMARCAINI=ControlValue("TG_MARCAINI")
       If Not IsBlank(VSDGMARCAINI) and VSDGMARCAINI <> "001"
         Then VSDGMARCAINI=ALINHM(VSDGMARCAINI,3)
              GetRecord "\\Sistemas\\Estoque\\Marcas" VSDGMARCAINI to tgreg_marcaini
              If Not RetVal
                 Then FastMsg("Marca n„o cadastrada !")
                      Valor=False
              EndIf
       EndIf
  Case Campo="TG_MARCAFIM" :                                                    ;tgreg_marcafim
       VSDGMARCAFIM=ControlValue("TG_MARCAFIM")
       If Not IsBlank(VSDGMARCAFIM) and VSDGMARCAFIM <> "999"
         Then VSDGMARCAFIM=ALINHM(VSDGMARCAFIM,3)
              GetRecord "\\Sistemas\\Estoque\\Marcas" VSDGMARCAFIM to tgreg_marcafim 
              If Not RetVal
                 Then FastMsg("Marca n„o cadastrada !")
                      Valor=False
              EndIf
         Else VSDGMARCAFIM="999"
       EndIf
       If VSDGMARCAFIM < VSDGMARCAINI
          Then FastMsg("Marca final menor marca inicial !")
               Valor=False
       EndIf
  Case Campo="TG_CORINI" :                                                      ;tgreg_corini
       VSDGCORINI=ControlValue("TG_CORINI")
       If Not IsBlank(VSDGCORINI) and VSDGCORINI <> "001"
          Then VSDGCORINI=ALINHM(VSDGCORINI,4)
               GetRecord "\\Sistemas\\Estoque\\Cores" VSDGCORINI to tgreg_corini
               If Not RetVal
                  Then FastMsg("Cor/Tecido n„o cadastrado !")
                       Valor=False
               EndIf
       EndIf
  Case Campo="TG_CORFIM" :                                                      ;tgreg_corfim
       VSDGCORFIM=ControlValue("TG_CORFIM")
       If Not IsBlank(VSDGCORFIM) and VSDGCORFIM <> "9999"
          Then VSDGCORFIM=ALINHM(VSDGCORFIM,4)
               GetRecord "\\Sistemas\\Estoque\\Cores" VSDGCORFIM to tgreg_corfim 
               If Not RetVal
                  Then FastMsg("Cor/Tecido n„o cadastrado !")
                       Valor=False
               EndIf
          Else VSDGCORFIM="9999"
       EndIf
       If VSDGCORFIM < VSDGCORINI
          Then FastMsg("Cor final menor cor inicial !")
               Valor=False
       EndIf
  Case Campo="TG_UNI" :                                                         ;tgreg_unidades
       VSDGUNI=ControlValue("TG_UNI")
       If Not IsBlank(VSDGUNI)
          Then GetRecord "\\Sistemas\\Estoque\\Unidades" VSDGUNI to tgreg_unidades
               If Not RetVal
                  Then FastMsg("Unidade n„o cadastrada !")
                       Valor=False
                  Else VSDGNOMUNI=tgreg_unidades["Descricao da Unidade"]
               EndIf
          Else VSDGNOMUNI="Todas"
       EndIf
  Case Campo="TG_TABELA" :                                                      ;tgreg_tbprcab
       VSDGTABELA=ControlValue("TG_TABELA")
       If Not IsBlank(VSDGTABELA)
         Then VSDGTABELA=ALINHM(VSDGTABELA,5)
              GetRecord "\\Sistemas\\Vendas\\Tbprcab" VSDGTABELA to tgreg_tbprcab 
              If Not RetVal
                 Then FastMsg("Tabela n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMTAB =tgreg_tbprcab["Descricao da Tabela"]
                      VSDGTBATIVA=tgreg_tbprcab["Ativa"]
              EndIf
         Else VSDGNOMTAB="Todas"
       EndIf
  Case Campo="TG_TABELA2" :                                                     ;tgreg_tbprcab2
       VSDGTABELA2=ControlValue("TG_TABELA2")
       If Not IsBlank(VSDGTABELA2)
         Then VSDGTABELA2=ALINHM(VSDGTABELA2,5)
              GetRecord "\\Sistemas\\Vendas\\Tbprcab" VSDGTABELA2 to tgreg_tbprcab2
              If Not RetVal
                 Then FastMsg("Tabela n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMTAB2=tgreg_tbprcab2["Descricao da Tabela"]
              EndIf
         Else VSDGNOMTAB2="Todas"
       EndIf
  Case Campo="TG_TABELA3" :                                                     ;tgreg_tbprcab3
       VSDGTABELA3=ControlValue("TG_TABELA3")
       If Not IsBlank(VSDGTABELA3)
         Then VSDGTABELA3=ALINHM(VSDGTABELA3,5)
              GetRecord "\\Sistemas\\Vendas\\Tbprcab" VSDGTABELA3 to tgreg_tbprcab3
              If Not RetVal
                 Then FastMsg("Tabela n„o cadastrada !")
                      Valor=False
                 Else VSDGNOMTAB3=tgreg_tbprcab3["Descricao da Tabela"]
              EndIf
         Else VSDGNOMTAB3="Todas"
       EndIf     
  Case Campo="TG_NCARREG" :                                                     ;tgreg_accarrgc
       VSDGNCARREG=ControlValue("TG_NCARREG")
       If Not IsBlank(VSDGNCARREG)
         Then VSDGNCARREG=AlinhNL(VSDGNCARREG,6)
              GetRecord "\\Sistemas\\Vendas\\AcCarrgC" VSDGNCARREG to tgreg_accarrgc 
              If Not RetVal
                 Then FastMsg("Carregamento n„o localizado !")
                      Valor=False
                 Else VSDGNOMNCARREG    =tgreg_accarrgc["Tipo_Carregamento"      ]
                      VSDGNCARREG_CODREP=tgreg_accarrgc["Codigo do Representante"]
              EndIf
         Else VSDGNOMNCARREG="Todos"
       EndIf              
  Case Campo="TG_NCONTROLE" :                                                   ;tgreg_contrdia
       VSDGNCONTROLE=ControlValue("TG_NCONTROLE")
       If Not IsBlank(VSDGNCONTROLE)
         Then VSDGNCONTROLE=ALINHM(VSDGNCONTROLE,6)
              GetRecord "\\Sistemas\\Cadastro\\Contrdia" VSDGNCONTROLE to tgreg_contrdia
              If Not RetVal
                 Then FastMsg("Controle nÆo localizado !")
                      Valor=False
                 Else VSDGNOMNCONTROLE=SubStr(tgreg_contrdia["Nome"],1,15)+", "+StrVal(tgreg_contrdia["Data"])+"-"+tgreg_contrdia["Hora"]
              EndIf
         Else VSDGNOMNCONTROLE="Todos"
       EndIf
  Case Campo="TG_CODIGOI" :
       VSDGCODIGOI=ControlValue("TG_CODIGOI")
       If IsBlank(VSDGCODIGOI)
          Then VSDGCODIGOI="1"
       EndIf
       VSDGCODIGOI=AlinhM(VSDGCODIGOI,10)
  Case Campo="TG_CODIGOF" :
       VSDGCODIGOF=ControlValue("TG_CODIGOF")
       If IsBlank(VSDGCODIGOF)
          Then VSDGCODIGOF="9999999999"
       EndIf
       VSDGCODIGOF=AlinhM(VSDGCODIGOF,10)
  Case Campo="TG_REQUISIT" :                                                    ;tgreg_requisit
       VSDGREQUISIT=ControlValue("TG_REQUISIT")
       If Not IsBlank(VSDGREQUISIT)
         Then VSDGREQUISIT=ALINHM(VSDGREQUISIT,6)
              GetRecord "\\Sistemas\\Estoque\\Requisit" VSDGREQUISIT to tgreg_requisit
              If Not RetVal
                 Then FastMsg("Requisitante n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMREQUI = tgreg_requisit["Descricao Requisitante"]
              EndIf
         Else VSDGNOMREQUI="Todos"                  
       EndIf
  Case Campo="TG_FAMI" :                                                        ;tgreg_familia
       VSDGFAMI=ControlValue("TG_FAMI")
       switch
         case IsBlank(VSDGFAMI)                   : 
           VSDGNOMFAMI="Todas"
           ListaRegra_VSDGFAMI_Ativo =False    
         case VSDGFAMI ="?"                       : 
           switch
             case substr(VSDGNOMFAMI ,1,4)="Op: "     :
             otherwise                                : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
       otherwise                                  :
          VSDGFAMI=ALINHM(VSDGFAMI,3)
          getrecord "\\Sistemas\\Estoque\\Familia" VSDGFAMI to tgreg_familia
          If Not RetVal
             Then FastMsg("Familia n„o cadastrada !")
                  Valor=False
             Else VSDGNOMFAMI=tgreg_familia["Descricao da Familia"]
          EndIf
          ListaRegra_VSDGFAMI_Ativo=False
       endswitch
       If (Valor Or Upper(VSDGNOMFAMI)="TODAS") And Not Valida_ShowDialog("Familia")
          Then VSDGNOMFAMI=""
               Valor=False
       EndIf    
  Case Campo="TG_FAMIINI" :                                                     ;tgreg_familiaini
       VSDGFAMIINI=ControlValue("TG_FAMIINI")
       If Not IsBlank(VSDGFAMIINI) and VSDGFAMIINI <> "001"
         Then VSDGFAMIINI=ALINHM(VSDGFAMIINI,3)
              GetRecord "\\Sistemas\\Estoque\\Familia" VSDGFAMIINI to tgreg_familiaini
              If Not RetVal
                 Then FastMsg("Familia n„o cadastrada !")
                      Valor=False
              EndIf
;;;;;;;;;Else VSDGFAMIINI="001"
       EndIf
  Case Campo="TG_FAMIFIM" :                                                     ;tgreg_familiafim
       VSDGFAMIFIM=ControlValue("TG_FAMIFIM")
       If Not IsBlank(VSDGFAMIFIM) and VSDGFAMIFIM <> "999"
         Then VSDGFAMIFIM=ALINHM(VSDGFAMIFIM,3)
              GetRecord "\\Sistemas\\Estoque\\Familia" VSDGFAMIFIM to tgreg_familiafim
              If Not RetVal
                 Then FastMsg("Familia n„o cadastrada !")
                      Valor=False
              EndIf
         Else VSDGFAMIFIM="999"
       EndIf
       If VSDGFAMIFIM < VSDGFAMIINI
          Then FastMsg("Familia final menor familia inicial")
               Valor=False
       EndIf
  Case Campo="TG_GRP" :                                                         ;tgreg_grupos
       VSDGGRP=ControlValue("TG_GRP")
       switch
         case IsBlank(VSDGGRP)                   : 
           VSDGNOMGRP="Todos"
           ListaRegra_VSDGGRP_Ativo =False    
         case VSDGGRP ="?"                       : 
           switch
             case substr(VSDGNOMGRP ,1,4)="Op: "     :
             otherwise                                : 
                FastMsg("Sele‡Æo nÆo definida !")
                Valor=False
           endswitch
       otherwise                                  :
          VSDGGRP=ALINHM(VSDGGRP,3)
          getrecord "\\Sistemas\\Estoque\\Grupos" VSDGGRP to tgreg_grupos
          If Not RetVal
             Then FastMsg("Grupo n„o cadastrado !")
                  Valor=False
             Else VSDGNOMGRP=tgreg_grupos["Descricao do Grupo"]
          EndIf
          ListaRegra_VSDGGRP_Ativo=False
       endswitch
       If (Valor Or Upper(VSDGNOMGRP)="TODOS") And Not Valida_ShowDialog("Grupos")
          Then VSDGNOMGRP=""
               Valor=False
       EndIf 
  Case Campo="TG_GRPINI" :                                                      ;tgreg_gruposini
       VSDGGRPINI=ControlValue("TG_GRPINI")
       If Not IsBlank(VSDGGRPINI) and VSDGGRPINI <> "001"
         Then VSDGGRPINI=ALINHM(VSDGGRPINI,3)
              GetRecord "\\Sistemas\\Estoque\\Grupos" VSDGGRPINI to tgreg_gruposini
              If Not RetVal
                 Then FastMsg("Grupo n„o cadastrado !")
                      Valor=False
              EndIf
       EndIf
  Case Campo="TG_GRPFIM" :                                                      ;tgreg_gruposfim
       VSDGGRPFIM=ControlValue("TG_GRPFIM")
       If Not IsBlank(VSDGGRPFIM) and VSDGGRPFIM <> "999"
         Then VSDGGRPFIM=ALINHM(VSDGGRPFIM,3)
              GetRecord "\\Sistemas\\Estoque\\Grupos" VSDGGRPFIM to tgreg_gruposfim              
              If Not RetVal
                 Then FastMsg("Grupo n„o cadastrado !")
                      Valor=False
              EndIf
         Else VSDGGRPFIM="999"
       EndIf
       If VSDGGRPFIM < VSDGGRPINI
          Then FastMsg("Grupo final menor grupo inicial !")
               Valor=False
       EndIf
  Case Campo="TG_CODMODELO":
       VSDGCODMODELO = Rtrim(ControlValue("TG_CODMODELO"))

       VSDGMODELO    = ""
       If Not IsAssigned(Array_OpModeloRelatorios) Or VSDGCODMODELO=""
          Then fastmsg("Op‡„o inv lida!")
               Valor=False
          Else For wc From 1 To ArraySize(Array_OpModeloRelatorios) 
                 If VSDGCODMODELO = Rtrim(SubStr(Array_OpModeloRelatorios[wc],1,3))
                    Then VSDGMODELO = Upper(Ltrim(Rtrim(SubStr(Array_OpModeloRelatorios[wc],5,75))))
                         QuitLoop
                 EndIf        
               EndFor
               if VSDGMODELO=""
                  Then fastmsg("Modelo inv lido!")
                       Valor=False
               endif   
       EndIf
            
  Case Campo="TG_ESTADO" :                                                      ;tgreg_estado
       VSDGESTADO=ControlValue("TG_ESTADO")
       If Not IsBlank(VSDGESTADO)
          Then GetRecord "\\Sistemas\\Vendas\\Estados" VSDGESTADO to tgreg_estado 
               If Not RetVal
                  Then FastMsg("Estado n„o cadastrado !")
                       Valor=False
                  Else VSDGNOMESTADO = tgreg_estado["Descricao"]
               EndIf
          Else VSDGNOMESTADO="Todos"
       EndIf
  Case Campo="TG_REQUISICAO": 
       VSDGREQUISICAO=ControlValue("TG_REQUISICAO")
       If Not IsBlank(VSDGREQUISICAO) 
          Then VSDGREQUISICAO=AlinhM(VSDGREQUISICAO,6)
               GetRecord "\\Sistemas\\Estoque\\RqCabeca" VSDGREQUISICAO to tgreg_rqcabeca 
               If Not RetVal
                  Then FastMsg("Requisi‡Æo n„o localizada !")
                       Valor=False
                  Else VSDGNOMREQUISICAO = tgreg_rqcabeca["Tipo do Documento"]+"/"+
                                           tgreg_rqcabeca["Numero do Documento"]+" - "+
                                           format("D13",tgreg_rqcabeca["Data de Ocorrencia"]) 
               EndIf
          Else VSDGNOMREQUISICAO="Todos"
       EndIf
  Case Campo="TG_PEDIDO" :                                                      ;tgreg_pedidoc
       VSDGPEDIDO=ControlValue("TG_PEDIDO")
       If Not IsBlank(VSDGPEDIDO)
          Then VSDGPEDIDO=AlinhNL(VSDGPEDIDO,6)
               GetRecord "\\Sistemas\\Vendas\\PedidoC" VSDGPEDIDO to tgreg_pedidoc 
               If Not RetVal
                  Then FastMsg("Pedido n„o localizado !")
                       Valor=False
                  Else VSDGNOMPEDIDO = tgreg_pedidoc["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMPEDIDO="Todos"
       EndIf
  Case Campo="TG_OF" :                                                          ;tgreg_faturac
       VSDGOF=ControlValue("TG_OF")
       If Not IsBlank(VSDGOF)
          Then VSDGOF=AlinhNL(VSDGOF,6)
               GetRecord "\\Sistemas\\Vendas\\FaturaC" VSDGOF to tgreg_faturac 
               If Not RetVal
                  Then FastMsg("OF n„o localizada !")
                       Valor=False
                  Else VSDGNOMOF = tgreg_faturac["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMOF="Todos"
       EndIf
  Case Campo="TG_NOTA":
       VSDGNOTA=ControlValue("TG_NOTA")
       If Not IsBlank(VSDGNOTA)
          Then If Not IsAssigned(VSDGEMPRESA) And Not IsAssigned(VSDGNOTA) And Not IsAssigned(VSDGDOCTOSERIE)
                  Then FastMsg("Parametros Incorretos, documento n„o localizado!")
                       Valor=False     
               EndIf
       EndIf       
  Case Campo="TG_EXPEDICAO" :                                                   ;tgreg_expedc
       VSDGEXPEDICAO=ControlValue("TG_EXPEDICAO")
       If Not IsBlank(VSDGEXPEDICAO)
          Then VSDGEXPEDICAO=AlinhNL(VSDGEXPEDICAO,6)
               GetRecord "\\Sistemas\\Vendas\\ExpedC" VSDGEXPEDICAO to tgreg_expedc
               If Not RetVal
                  Then FastMsg("Expedi‡„o n„o localizada !")
                       Valor=False
                  Else VSDGNOMEXPEDICAO = tgreg_expedc["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMEXPEDICAO="Todos"
       EndIf
  Case Campo="TG_EXPEDICAOOF" :                                                 ;tgreg_expedcof
       VSDGEXPEDICAOOF=ControlValue("TG_EXPEDICAOOF")
       If Not IsBlank(VSDGEXPEDICAOOF)
          Then VSDGEXPEDICAOOF=AlinhNL(VSDGEXPEDICAOOF,6)
               GetRecord "\\Sistemas\\Vendas\\ExpedC" VSDGEXPEDICAOOF to tgreg_expedcof
               If Not RetVal
                  Then FastMsg("Expedi‡„o de OF n„o localizada !")
                       Valor=False
                  Else VSDGNOMEXPEDICAOOF = tgreg_expedcof["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMEXPEDICAOOF="Todos"
       EndIf       
  Case Campo="TG_MOV":
       VSDGMOV=ControlValue("TG_MOV")
       if isblank(VSDGMOV)
          then VSDGMOV    ="ABERTO"
       endif

  Case Campo="TG_TRANSP" :                                                      ;tgreg_transpor
       VSDGTRANSP=ControlValue("TG_TRANSP")
       If Not IsBlank(VSDGTRANSP)
          Then VSDGTRANSP=AlinhE(VSDGTRANSP)
               GetRecord "\\Sistemas\\Vendas\\Transpor" VSDGTRANSP to tgreg_transpor
               If Not RetVal
                  Then FastMsg("Transportadora n„o cadastrada !")
                       Valor=False
                  Else VSDGNOMTRANSP=tgreg_transpor["Nome Fantasia Transport"]
               EndIf
          Else VSDGNOMTRANSP="Todas"
       EndIf
    Case Campo="TG_VEICULO" :                                                   ;tgreg_veiculos
       VSDGVEICULO=ControlValue("TG_VEICULO")
       If Not IsBlank(VSDGVEICULO)
          Then GetRecord "\\Sistemas\\Vendas\\Veiculos" VSDGVEICULO to tgreg_veiculos 
               If Not RetVal
                  Then FastMsg("Ve¡culo n„o cadastrado !")
                       Valor=False
               EndIf
        EndIf     
  Case Campo="TG_ETAPA" :                                                       ;tgreg_etapas
       VSDGETAPA=ControlValue("TG_ETAPA")
       If Not IsBlank(VSDGETAPA)
          Then VSDGETAPA=AlinhM(VSDGETAPA,3)
               GetRecord "\\Sistemas\\Curtume\\Etapas" VSDGETAPA to tgreg_etapas 
               If Not RetVal
                  Then FastMsg("Etapa n„o cadastrada !")
                       Valor=False
                  Else VSDGNOMETAPA=tgreg_etapas["Descricao da Etapa"]
               EndIf
          Else VSDGNOMETAPA="Todas"
       EndIf
;  Case Campo="TG_DEFEITO" :                                                     ;tgreg_defeitos
;       VSDGDEFEITO=ControlValue("TG_DEFEITO")
;       If Not IsBlank(VSDGDEFEITO)
;          Then VSDGDEFEITO=ALINHM(VSDGDEFEITO,5)
;               GetRecord "\\Sistemas\\OS\\Defeitos" VSDGDEFEITO to tgreg_defeitos
;               If Not RetVal
;                  Then FastMsg("Defeito n„o cadastrado !")
;                       Valor=False
;                  Else VSDGNOMDEFITO=tgreg_defeitos["Descricao do Defeito"]
;               EndIf
;          Else VSDGNOMDEFEITO="Todos"
;       EndIf
  Case Campo="TG_OPANALISE":
       VSDGOPANALISE=ControlValue("TG_OPANALISE")
       switch
         case VSDGOPANALISE="2" : VSDGNOMOPANALISE="Quantidade"
         otherwise              :
              VSDGOPANALISE="1"   VSDGNOMOPANALISE="Monetaria"
       endswitch

  Case Campo="TG_OPANALISE3":
       VSDGOPANALISE=ControlValue("TG_OPANALISE3")
       switch
         case VSDGOPANALISE="2" : VSDGNOMOPANALISE="QUANTIDADE"
         case VSDGOPANALISE="3" : VSDGNOMOPANALISE="LUCRATIVIDADE"
         case VSDGOPANALISE="4" : VSDGNOMOPANALISE="NéMERO DE VENDAS"
         case VSDGOPANALISE="5" : VSDGNOMOPANALISE="NéMERO DE CLIENTES"
         otherwise              :
              VSDGOPANALISE="1"   VSDGNOMOPANALISE="MONETµRIA"
       endswitch

  Case Campo="TG_OPANALISE4":
       VSDGOPANALISE=ControlValue("TG_OPANALISE4")
       switch
         case VSDGOPANALISE="2" : VSDGNOMOPANALISE="QUANTIDADE"
         case VSDGOPANALISE="4" : VSDGNOMOPANALISE="NéMERO DE VENDAS"
         case VSDGOPANALISE="5" : VSDGNOMOPANALISE="NéMERO DE PRODUTOS"
         otherwise              :
              VSDGOPANALISE="1"   VSDGNOMOPANALISE="MONETµRIA"
       endswitch

  Case Campo="TG_OPANALISE5":
       VSDGOPANALISE=ControlValue("TG_OPANALISE5")
       switch
         case VSDGOPANALISE="2" : VSDGNOMOPANALISE="QUANTIDADE"
         case VSDGOPANALISE="4" : VSDGNOMOPANALISE="NéMERO DE COMPRAS"
         case VSDGOPANALISE="5" : VSDGNOMOPANALISE="NéMERO DE FORNECEDORES"
         otherwise              :
              VSDGOPANALISE="1"   VSDGNOMOPANALISE="MONETµRIA"
       endswitch

  Case Campo="TG_OPANALISE6":
       VSDGOPANALISE=ControlValue("TG_OPANALISE6")
       switch
         case VSDGOPANALISE="2" : VSDGNOMOPANALISE="QUANTIDADE"
         case VSDGOPANALISE="4" : VSDGNOMOPANALISE="NéMERO DE COMPRAS"
         case VSDGOPANALISE="5" : VSDGNOMOPANALISE="NéMERO DE PRODUTOS"
         otherwise              :
              VSDGOPANALISE="1"   VSDGNOMOPANALISE="MONETµRIA"
       endswitch

  Case Campo="TG_OPANALISE11":
       VSDGOPANALISE=ControlValue("TG_OPANALISE11")
       switch
         case VSDGOPANALISE="2" : VSDGNOMOPANALISE="QUANTIDADE"
         case VSDGOPANALISE="3" : VSDGNOMOPANALISE="CUSTO UNITµRIO"
         otherwise              :
              VSDGOPANALISE="1"   VSDGNOMOPANALISE="CUSTO TOTAL"
       endswitch

  Case Campo="TG_CURVAABCA":
       VSDGCURVAABCA=ControlValue("TG_CURVAABCA")


  Case Campo="TG_CURVAABCB":
       VSDGCURVAABCB=ControlValue("TG_CURVAABCB")

  Case Campo="TG_CURVAABCC":
       VSDGCURVAABCC=ControlValue("TG_CURVAABCC")

  Case Campo="TG_STATUS":
       VSDGSTATUS=ControlValue("TG_STATUS")
       If Not IsBlank(VSDGSTATUS)
          Then
             Switch
                 Case VSDGSTATUS="1": VSDGNOMSTATUS="Ativos"
                 Case VSDGSTATUS="2": VSDGNOMSTATUS="Inativos"
                 Case VSDGSTATUS="3": VSDGNOMSTATUS="Ambos"
               EndSwitch
          Else VSDGSTATUS="1"
               VSDGNOMSTATUS="Ativos"
       EndIf
;  Case Campo="TG_SEGURAD" :                                                     ;tgreg_segurad
;       VSDGSEGURAD=ControlValue("TG_SEGURAD")
;       If Not IsBlank(VSDGSEGURAD)
;         Then VSDGSEGURAD=ALINHM(VSDGSEGURAD,4)
;              GetRecord "\\Sistemas\\Oficina\\Segurad" VSDGSEGURAD to tgreg_segurad
;              If Not RetVal
;                Then FastMsg("Seguradora n„o cadastrada !")
;                     Valor=False
;                 Else VSDGNOMSEGURAD=tgreg_segurad["Nome Seguradora"]
;              EndIf
;         Else VSDGNOMSEGURAD="Todas"
;       EndIf
;  Case Campo="TG_SERVICO" :                                                     ;tgreg_catserv
;       VSDGSERVICO=ControlValue("TG_SERVICO")
;       If Not IsBlank(VSDGSERVICO)
;         Then GetRecord "\\Sistemas\\Oficina\\CatServ" VSDGSERVICO to tgreg_catserv
;              If Not RetVal
;                 Then FastMsg("Servi‡o n„o cadastrado !")
;                      Valor=False
;                 Else VSDGNOMSERV=Ltrim(tgreg_catserv["Descricao do Servico"])
;             EndIf
;         Else VSDGNOMSERV="Todos"
;       EndIf
;  Case Campo="TG_EMPREGADO" :                                                   ;tgreg_empreg
;       VSDGEMPREGADO=ControlValue("TG_EMPREGADO")
;       If Not IsBlank(VSDGEMPREGADO)
;         Then VSDGEMPREGADO=ALINHE(VSDGEMPREGADO)
;              GetRecord "\\Sistemas\\Oficina\\Empreg" VSDGEMPREGADO to tgreg_empreg 
;              If Not RetVal
;                 Then FastMsg("Empregado n„o cadastrado !")
;                      Valor=False
;                 Else VSDGNOMEMPREGADO=tgreg_empreg["Nome Empregado"]
;              EndIf
;         Else VSDGNOMEMPREGADO="Todos"
;       EndIf
;  Case Campo="TG_FUNCAO" :                                                      ;tgreg_funcao
;       VSDGFUNCAO=ControlValue("TG_FUNCAO")
;       If Not IsBlank(VSDGFUNCAO)
;         Then VSDGFUNCAO=ALINHM(VSDGFUNCAO,2)
;              GetRecord "\\Sistemas\\Oficina\\Funcao" VSDGFUNCAO to tgreg_funcao 
;              If Not RetVal
;                 Then FastMsg("Fun‡Æo n„o cadastrado !")
;                      Valor=False
;                 Else VSDGNOMFUNCAO=tgreg_funcao["Descricao da Funcao"]
;              EndIf
;         Else VSDGNOMFUNCAO="Todas"
;       EndIf
  Case Campo="TG_CSITENS" :
       VSDGCSITENS=ControlValue("TG_CSITENS")
       Switch
         Case VSDGCSITENS="C": VSDGNOMCSITENS="COM ITENS"
         OtherWise:
              VSDGCSITENS="S"
              VSDGNOMCSITENS="SEM ITENS"
       EndSwitch

;  Case Campo="TG_STATUSOS" :                                                    ;tgreg_status
;       VSDGSTATUSOS=ControlValue("TG_STATUSOS")
;       If Not IsBlank(VSDGSTATUSOS)
;         Then VSDGSTATUSOS=ALINHM(VSDGSTATUSOS,2)
;              GetRecord "\\Sistemas\\Os\\Status" VSDGSTATUSOS to tgreg_status
;              If Not RetVal
;                 Then FastMsg("Status n„o cadastrada !")
;                      Valor=False
;                 Else VSDGNOMSTATUSOS=tgreg_status["Descricao do Status OS"]
;              EndIf
;         Else VSDGNOMSTATUSOS="Todos"
;       EndIf
;       
;  Case Campo="TG_OS" :                                                          ;tgreg_osc
;       VSDGOS=ControlValue("TG_OS")
;       If Not IsBlank(VSDGOS)
;         Then VSDGOS=ALINHM(VSDGOS,6)
;              GetRecord "\\Sistemas\\Oficina\\Osc" VSDGOS to tgreg_osc 
;              If Not RetVal
;                 Then FastMsg("OS nÆo localizada !")
;                      Valor=False
;              EndIf
;       EndIf

  Case Campo="TG_OPRELUSER":
       VSDGOPRELUSER=ControlValue("TG_OPRELUSER")
       If VSDGOPRELUSER="2"
          Then VSDGNOMOPRELUSER="Controle"
          Else VSDGNOMOPRELUSER="Data"
               VSDGOPRELUSER="1"
       EndIf

  Case Campo="TG_TXPIZZA":
       VSDGTXPIZZA=ControlValue("TG_TXPIZZA")
       If VSDGTXPIZZA<=0  or
          VSDGTXPIZZA>100  
         Then FastMsg("Valor inv lido !")
              VSDGDSCPIZZA=""
              CheckTG_OPPIZZA[1]=False
              Valor=False
         else 
              If VSDGTXPIZZA<100
                 Then VSDGDSCPIZZA="Ignorar outros "+StrVal(100-VSDGTXPIZZA)+"%"
                 Else VSDGDSCPIZZA="Analizar os 100%"
                      CheckTG_OPPIZZA[1]=False
              EndIf
       EndIf
     
  Case Campo="TG_CARTAO" :                                                      ;tgreg_cartoes
       VSDGCARTAO = ControlValue("TG_CARTAO")
       If Not IsBlank(VSDGCARTAO) And Upper(VSDGCARTAO)<>"TODOS"
          Then GetRecord "\\Sistemas\\Cadastro\\Cartoes" VSDGCARTAO to tgreg_cartoes
               If Not RetVal
                  Then FastMsg("Cart„o nÆo cadastrado !")
                       Valor = False
               EndIf
          Else VSDGCARTAO="Todos"
       EndIf       

  Case Campo="TG_COMPRADOR" :                                                   ;tgreg_comprad
       VSDGCOMPRADOR=ControlValue("TG_COMPRADOR")
       If Not IsBlank(VSDGCOMPRADOR)
          Then VSDGCOMPRADOR=ALINHM(VSDGCOMPRADOR,4)
               GetRecord "\\Sistemas\\Compras\\Comprad" VSDGCOMPRADOR to tgreg_comprad
               If Not RetVal
                  Then FastMsg("Comprador n„o cadastrado !")
                       Valor=False
                  Else VSDGNOMCOMPRADOR=tgreg_comprad["Nome do Comprador"]
               EndIf
          Else VSDGNOMCOMPRADOR="Todos"
       EndIf
       
  Case Campo="TG_NFUSAO" :                                                      ;tgreg_progfc
       VSDGNFUSAO=ControlValue("TG_NFUSAO")
       If Not IsBlank(VSDGNFUSAO)
          Then VSDGNFUSAO=AlinhNL(VSDGNFUSAO,6)
               GetRecord "\\Sistemas\\Fundicao\\ProgFC" VSDGNFUSAO to tgreg_progfc
               If Not RetVal
                  Then FastMsg("Fus„o n„o localizada !")
                       Valor=False
               EndIf
       EndIf
       
  Case Campo="TG_NREMPREG" :                                                    ;tgreg_empregad
       VSDGNREMPREG=ControlValue("TG_NREMPREG")
       If Not IsBlank(VSDGNREMPREG)
          Then VSDGNREMPREG=NumVal(VSDGNREMPREG)
               GetRecord "\\Sistemas\\CartaoP\\Empregad" VSDGNREMPREG to tgreg_empregad 
               If Not RetVal
                  Then FastMsg("Empregado n„o cadastrado !")
                       Valor=False
                  Else VSDGNOMNREMPREG=tgreg_empregad["Nome_Empregado"]
               EndIf
          Else VSDGNOMNREMPREG="Todos"
       EndIf
       
  Case Campo="TG_NCM" :                                                         ;tgreg_ncm
       VSDGNCM=ControlValue("TG_NCM")
       If Not IsBlank(VSDGNCM)
          Then GetRecord "\\Sistemas\\Estoque\\NCM" VSDGNCM to tgreg_ncm
               If Not RetVal
                  Then FastMsg("NCM n„o cadastrado !")
                       Valor=False
               EndIf
       EndIf

  Case Campo="TG_GERENCIA" :                                                    ;tgreg_gerencia
       VSDGGERENCIA=ControlValue("TG_GERENCIA")
       If Not IsBlank(VSDGGERENCIA)
          Then VSDGGERENCIA=ALINHE(VSDGGERENCIA)
               GetRecord "\\Sistemas\\Cadastro\\Gerencia" VSDGGERENCIA to tgreg_gerencia
               If Not RetVal
                  Then FastMsg("Gerˆncia n„o cadastrada !")
                       Valor=False
                  Else If Not Valida_ShowDialog("Gerencia")
                          Then Valor=False
                          Else VSDGDESCGERENCIA=tgreg_gerencia["Descricao Gerencia"]
                       EndIf         
               EndIf
         Else If Not Valida_ShowDialog("Gerencia")
                 Then Valor=False
                 Else VSDGDESCGERENCIA="Todos"
              EndIf         
       EndIf                
       
  Case Campo="TG_NOMECARTAO" :                                                  ;tgreg_cartoes
       VSDGNOMECARTAO=ControlValue("TG_NOMECARTAO")
       If Not IsBlank(VSDGNOMECARTAO)
         Then GetRecord "\\Sistemas\\Cadastro\\Cartoes" VSDGNOMECARTAO to tgreg_cartoes
              If Not RetVal
                 Then FastMsg("Cart„o n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMECARTAO=tgreg_cartoes["Nome do Cartao"]
              EndIf
       EndIf
       
  Case Campo="TG_CORTE":
       VSDGCORTE=ControlValue("TG_CORTE")
       If Not IsBlank(VSDGCORTE)
          Then VSDGCORTE=AlinhNL(VSDGCORTE,6)
               GetRecord "\\Sistemas\\Faccao\\Cfacc" VSDGCORTE to tgreg_cfacc 
               If Not RetVal
                  Then FastMsg("Corte n„o localizado !")
                       Valor=False
                  Else VSDGNOMCORTE=tgreg_cfacc["Nome Fantasia Empresa"]+" - "+format("D13",tgreg_cfacc["Data_Programacao"])
               EndIf
         Else VSDGNOMCORTE="Todos"
       EndIf
              
  Case Campo="TG_NPRODCORTE" :                                                  ;tgreg_pcfacc 
       VSDGNPRODCORTE=ControlValue("TG_NPRODCORTE")
       If Not IsBlank(VSDGNPRODCORTE)
          Then VSDGNPRODCORTE=AlinhNL(VSDGNPRODCORTE,6)
               GetRecord "\\Sistemas\\Faccao\\Pcfacc" VSDGNPRODCORTE to tgreg_pcfacc
               If Not RetVal
                  Then FastMsg("Produ‡„o n„o localizada !")
                       Valor=False
                  Else VSDGNOMNPRODCORTE=format("D13",tgreg_pcfacc["Data_Producao"])+" - "+
                                                      tgreg_pcfacc["Numero_Programacao_Corte"]+" - "+
                                                      tgreg_pcfacc["Destino_Producao"]
               EndIf
         Else VSDGNOMNPRODCORTE="Todos"
       EndIf       
  Case Campo="TG_NPROG" :                                                       ;tgreg_pfacc
       VSDGNPROG=ControlValue("TG_NPROG")
       If Not IsBlank(VSDGNPROG)
         Then VSDGNPROG=AlinhNL(VSDGNPROG,6)
              GetRecord "\\Sistemas\\FACCAO\\PFACC" VSDGNPROG to tgreg_pfacc
              If Not RetVal
                 Then FastMsg("Programa‡„o nÆo localizada !")
                      Valor=False
                 Else VSDGNOMNPROG=tgreg_pfacc["Destino_Producao"]+"/"+tgreg_pfacc["Nome Fantasia EmitDest"]
              EndIf
         Else VSDGNOMNPROG="Todos"
       EndIf       
  Case Campo="TG_NPROD":
       VSDGNPROD=ControlValue("TG_NPROD")
       If Not IsBlank(VSDGNPROD)
          Then VSDGNPROD = AlinhNL(VSDGNPROD,6)
               GetRecord "\\Sistemas\\FACCAO\\RFACC" VSDGNPROD to tgreg_rfacc 
               If Not RetVal
                  Then FastMsg("Produ‡„o nÆo localizada !")
                       Valor=False
                  Else VSDGNOMNPROD=format("D13",tgreg_rfacc["Data_Producao"])+" - "+  
                                    tgreg_rfacc["Numero_Programacao"]+" - "+
                                    tgreg_rfacc["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMNPROD="Todos"
       EndIf       
  Case Campo="TG_COMVALOR":
       VSDGCOMVALOR=ControlValue("TG_COMVALOR")
       If VSDGCOMVALOR="2"
          Then VSDGNOMCOMVALOR="SEM VALOR"
          Else VSDGNOMCOMVALOR="COM VALOR"
               VSDGCOMVALOR="1"
       EndIf

  Case Campo="TG_REGRA" :                                                       ;tgreg_pedregc
       VSDGREGRA=ControlValue("TG_REGRA")
       If Not IsBlank(VSDGREGRA)
         Then GetRecord "\\Sistemas\\Vendas\\Ped_regc" NumVal(VSDGREGRA) to tgreg_pedregc
              If Not RetVal
                 Then FastMsg("Regra n„o cadastrada !")
                      Valor=False
              EndIf
       EndIf  
  Case Campo="TG_PROGREP":
       VSDGPROGREP=ControlValue("TG_PROGREP")
       If Not IsBlank(VSDGPROGREP)
         Then VSDGPROGREP = AlinhM(VSDGPROGREP,6)
              GetRecord "\\Sistemas\\Visita\\VisitaC" VSDGPROGREP to tgreg_visitac 
              If Not RetVal
                 Then FastMsg("Programa‡„o n„o localizada !")
                      Valor=False
                 Else VSDGNOMPROGREP=tgreg_visitac["Nome Fantasia Represent"]+"-"+format("D13",tgreg_visitac["Data Inicial"])
              EndIf
         Else VSDGNOMPROGREP="Todas"
       EndIf
       
  Case Campo="TG_GPESSOA" :                                                     ;tgreg_gpessoac
       VSDGGPESSOA=ControlValue("TG_GPESSOA")
       If Not IsBlank(VSDGGPESSOA)
         Then VSDGGPESSOA = AlinhM(VSDGGPESSOA,4)
              GetRecord "\\Sistemas\\Cadastro\\GPessoaC" VSDGGPESSOA To tgreg_gpessoac   ;REG_GPESSOA
              If Not RetVal
                 Then FastMsg("Programa‡„o n„o localizada !")
                      Valor=False
                 Else VSDGNOMGPESSOA=tgreg_gpessoac["DescricaoGrupoPessoa"]
              EndIf
         Else VSDGNOMGPESSOA=""
       EndIf
              
  Case Campo="TG_REFERENCIA":
       VSDGREFERENCIA=ControlValue("TG_REFERENCIA")
       
  Case Campo="TG_LOCAL" :                                                       ;tgreg_localiza
       VSDGLOCAL=ControlValue("TG_LOCAL")
       If Not IsBlank(VSDGLOCAL)
          Then 
               if search("..",VSDGLOCAL)>0
                  then VSDGNOMLOCAL=""
                  else GetRecord "\\Sistemas\\Estoque\\Localiza" VSDGLOCAL to tgreg_localiza
                       If Not RetVal
                          Then FastMsg("Localiza‡Æo n„o cadastrada !")
                               Valor=False
                          else VSDGNOMLOCAL=tgreg_localiza["Localizacao"]
                       EndIf                       
               endif
          Else VSDGNOMLOCAL="Todas"
       EndIf

  Case Campo="TG_FRETE_PC":
       VSDGFRETEPC=ControlValue("TG_FRETE_PC") 
       Switch
         Case VSDGFRETEPC="0" : VSDGNOMFRETEPC="SEM TRANSPORTE" 
         Case VSDGFRETEPC="1" : VSDGNOMFRETEPC="REMETENTE (CIF)"
         Case VSDGFRETEPC="2" : VSDGNOMFRETEPC="DESTINATARIO (FOB)"
         Case VSDGFRETEPC="3" : VSDGNOMFRETEPC="TERCEIROS"
         Case VSDGFRETEPC="4" : VSDGNOMFRETEPC="PRàPRIO/REMETENTE"
         Case VSDGFRETEPC="5" : VSDGNOMFRETEPC="PRàPRIO/DESTINATµRIO"
         Case VSDGFRETEPC=""  : VSDGNOMFRETEPC="TODOS"
         OtherWise            : FastMsg("Op‡Æo Inv lida !")
                                Valor=False
       EndSwitch            

  Case SubStr(Campo,1,6)="TG_SN_":
       VSDGSIM_NAO=ControlValue(Campo)
       If IsBlank(VSDGSIM_NAO)
          Then VSDGSIM_NAO="NAO"
       EndIf   

  Case Campo="TG_NE" :                                                          ;tgreg_notaec
       VSDGNE=ControlValue("TG_NE")
       If Not IsBlank(VSDGNE)
          Then VSDGNE=AlinhNL(VSDGNE,6)
               GetRecord "\\Sistemas\\Estoque\\NotaEC" VSDGNE to tgreg_notaec
               If Not RetVal
                  Then FastMsg("Nota de Entrada n„o localizada !")
                       Valor=False
                  Else VSDGNOMNE = tgreg_notaec["Tipo do Documento"]+"/"+tgreg_notaec["Numero do Documento"]+" "+tgreg_notaec["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMNE="TODAS"
       EndIf

  Case Campo="TG_NEI" :                                                         ;tgreg_inec
       VSDGNEI=ControlValue("TG_NEI")
       If Not IsBlank(VSDGNEI)
          Then VSDGNEI=AlinhNL(VSDGNEI,6)
               GetRecord "\\Sistemas\\Estoque\\Inec" VSDGNEI to tgreg_inec 
               If Not RetVal
                  Then FastMsg("Importa‡Æo XML n„o localizada !")
                       Valor=False
                  Else VSDGNOMNEI = tgreg_inec["Tipo do Documento"]+"/"+tgreg_inec["Numero do Documento"]+" "+tgreg_inec["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMNEI="TODAS"
       EndIf

  Case Campo="TG_OC" :                                                          ;tgreg_occ
       VSDGOC=ControlValue("TG_OC")
       If Not IsBlank(VSDGOC)
          Then VSDGOC=AlinhNL(VSDGOC,6)
               GetRecord "\\Sistemas\\Compras\\Occ" VSDGOC to tgreg_occ 
               If Not RetVal
                  Then FastMsg("Ordem de Compra n„o localizada !")
                       Valor=False
                  Else VSDGNOMOC = tgreg_occ["Codigo"]+" "+tgreg_occ["Nome Fantasia EmitDest"]
               EndIf
          Else VSDGNOMOC="TODAS"
       EndIf

  Case Campo="TG_NCHT" :                                                        ;tgreg_chequec
       VSDGNCHT=ControlValue("TG_NCHT")
       If VSDGNCHT>0
          Then GetRecord "\\Sistemas\\Cheqrec\\ChequeC" VSDGNCHT to tgreg_chequec 
               If Not RetVal
                  Then FastMsg("Lan‡amento Cheques n„o localizada !")
                       Valor=False
                  Else VSDGNOMNCHT = Format("D13",tgreg_chequec["Data de Entrada"])+" "+tgreg_chequec["Razao Social"]
               EndIf
          Else VSDGNOMNCHT="TODOS"
       EndIf

  Case Campo="TG_NBL" :                                                         ;tgreg_tabinvc
       VSDGNBL=ControlValue("TG_NBL")
       If Not IsBlank(VSDGNBL)
          Then VSDGNBL=AlinhNL(VSDGNBL,6)
               GetRecord "\\Sistemas\\Estoque\\Tab_invc" VSDGNBL to tgreg_tabinvc
               If Not RetVal
                  Then FastMsg("Balan‡o n„o localizado !")
                       Valor=False
                  Else VSDGNOMNBL = strval(tgreg_tabinvc["Data_Inclusao"])+", "+tgreg_tabinvc["Codigo da Empresa"]+"-"+tgreg_tabinvc["Nome Fantasia Empresa"]
               EndIf
          Else VSDGNOMNBL="TODOS"
       EndIf

  Case Campo="TG_NLACPG" :                                                      ;tgreg_altcontc
       VSDGNLACPG=ControlValue("TG_NLACPG")
       If VSDGNLACPG>0
          Then GetRecord "\\Sistemas\\Ctapag\\AltContC" VSDGNLACPG to tgreg_altcontc
               If Not RetVal
                  Then FastMsg("Lote n„o localizada !")
                       Valor=False
                  Else VSDGNOMNLACPG = Format("D13",tgreg_altcontc["Data da Operacao"])+" "+tgreg_altcontc["Descricao da Conta"]
               EndIf
          Else VSDGNOMNLACPG="TODOS"
       EndIf

  Case Campo="TG_NLACRC" :                                                      ;tgreg_alttitc
       VSDGNLACRC=ControlValue("TG_NLACRC")
       If VSDGNLACRC>0
          Then GetRecord "\\Sistemas\\Ctarec\\AltTitC" VSDGNLACRC to tgreg_alttitc 
               If Not RetVal
                  Then FastMsg("Lote n„o localizada !")
                       Valor=False
                  Else VSDGNOMNLACRC = Format("D13",tgreg_alttitc["Data da Operacao"])+" "+tgreg_alttitc["Descricao da Conta"]
               EndIf
          Else If VSDGNLACRC=0 or IsBlank(VSDGNLACRC)
                  Then VSDGNOMNLACRC="TODOS"
                  else FastMsg("Lote inv lido !")
                       Valor=False
               endif    
       EndIf

  Case Campo="TG_NLCTAPAG" :                                                    ;tgreg_titulos
       VSDGNLCTAPAG=ControlValue("TG_NLCTAPAG")
       If Not IsBlank(VSDGNLCTAPAG)
          Then VSDGNLCTAPAG=AlinhNL(VSDGNLCTAPAG,6)
               GetRecord "\\Sistemas\\Ctapag\\Titulos" VSDGNLCTAPAG to tgreg_titulos
               If Not RetVal
                  Then FastMsg("Lan‡amento n„o localizada !")
                       Valor=False
                  Else VSDGNOMNLCTAPAG = tgreg_titulos["Tipo do Documento"]+"/"+
                                         tgreg_titulos["Numero do Documento"]+" "+
                                         tgreg_titulos["Razao Social"]
               EndIf
          Else VSDGNOMNLCTAPAG="TODOS"
       EndIf

  Case Campo="TG_TPOPEROC" :                                                    ;tgreg_tpoperoc
       VSDGTPOPEROC=ControlValue("TG_TPOPEROC")
       If Not IsBlank(VSDGTPOPEROC)
         Then GetRecord "\\Sistemas\\Compras\\Tpoperoc" VSDGTPOPEROC to tgreg_tpoperoc 
              If Not RetVal
                 Then FastMsg("Tipo n„o cadastrado !")
                      Valor=False
                 Else VSDGNOMTPOPEROC=tgreg_tpoperoc["Descricao da Operacao OC"]
              EndIf
         Else VSDGNOMTPOPEROC="Todas"
       EndIf

	Case Campo="TG_DTVENCTO":
       VSDGDTVENCTO=ControlValue("TG_DTVENCTO")
       If IsBlank(VSDGDTVENCTO)
          Then Fastmsg("Data Vencimento Inv lida !")
               Valor=False
       EndIf

	Case Campo="TG_DTCOMPET":
       VSDGDTCOMPET=ControlValue("TG_DTCOMPET")
       If IsBlank(VSDGDTCOMPET)
          Then Fastmsg("Data Competˆncia Inv lida !")
               Valor=False
       EndIf

  Case Campo="TG_OPERACAOPEDIDO"      : 
     VSDGOPERACAOPEDIDO=ControlValue("TG_OPERACAOPEDIDO")

     if isBlank(VSDGOPERACAOPEDIDO) then VSDGOPERACAOPEDIDO="TODAS" endif
     if VSDGOPERACAOPEDIDO<>"VENDAS"                     And
        VSDGOPERACAOPEDIDO<>"BONIFICACAO/BRINDE"         And
        VSDGOPERACAOPEDIDO<>"REMESSAS"                   And
        VSDGOPERACAOPEDIDO<>"VENDAS+REMESSAS"            And
        VSDGOPERACAOPEDIDO<>"TODAS"             
        then FastMsg("Opera‡Æo inv lida !")
					   Valor=False
     EndIf
  

  Case Campo="TG_COMPTECIDO":
       VSDGCOMPTECIDO=ControlValue("TG_COMPTECIDO")

  Case Campo="TG_OPPLCONTAS":
       Switch
         Case CheckTG_OPPLCONTAS[1] : VSDGNOMOPPLCONTAS="COM RATEIO"
         OtherWise                  : VSDGNOMOPPLCONTAS="SEM RATEIO"
       EndSwitch  

  Case Campo="TG_OPSITCLIE"     :
       VSDGOPSITCLIE=ControlValue("TG_OPSITCLIE")
       switch
         case VSDGOPSITCLIE="3"     : VSDGNOMOPSITCLIE="SEM \"PESSIMO\""
         case VSDGOPSITCLIE="2"     : VSDGNOMOPSITCLIE="Sà \"PESSIMO\""
         otherwise                  : VSDGOPSITCLIE   ="1"
                                      VSDGNOMOPSITCLIE="TODAS"
       endswitch
       


EndSwitch
Return Valor
EndProc      ; (Checa_Tag)

;*******************************************************************************
;* Rotina para F1 no ShowDialog                                                *
;*******************************************************************************
Proc Dialog_F1()
Private executarF1, JANELA_DIALOG, LINHAI, COLUNAI, winarray5, mescorrente, mesanterior, mesanterior2, 
        messeguinte, dtmemoria, CampoAnt, dttemp, dtatehoje,
        opcaosituacaocheque
         
executarF1=False

CampoAnt=Campo

If Campo="TG_TXPESQ" 
   Then Campo="TG_CLIENTE"          
EndIf 

If Campo="TG_DTINI"
   then
        LimpaRodape(0)

        dttemp      =Primeiro_Dia_Data(Today())  
        mescorrente =Format("W10,AR",RTrim(MesExt(Month(dttemp))))+"/"+StrVal(Year(dttemp))

        dttemp      =dttemp-1
        mesanterior =Format("W10,AR",RTrim(MesExt(Month(dttemp))))+"/"+StrVal(Year(dttemp))

        dttemp      =Primeiro_Dia_Data(dttemp)-1
        mesanterior2=Format("W10,AR",RTrim(MesExt(Month(dttemp))))+"/"+StrVal(Year(dttemp))

        dtatehoje   =Format("D13",Primeiro_Dia_Data(Today()))+" at‚ "+Format("D13",Today())

        dtmemoria   =""
        If IsAssigned(SYS_DTINI) And IsAssigned(SYS_DTFIM)
           Then If Not IsBlank(SYS_DTFIM)
                   Then dtmemoria=Format("D13",SYS_DTINI)+" at‚ "+Format("D13",SYS_DTFIM)
                EndIf   
        EndIf   
        
        ShowPopup " Data " CENTERED
         "            ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"                        : "HOJE",
         "           ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"                       : "ONTEM",
         "   ~I~nicio do mes"   +" : "+Format("D13",Primeiro_Dia_Data(Today())) : " Primeiro dia do mes atual"           : "ATUAL",
         " No mes ~A~t‚ hoje"   +" : "+dtatehoje                                : " Primeiro dia do mes atual at‚ hoje"  : "ATEHOJE",
         "      ~M~emorizada"   +" : "+dtmemoria                                : " data memorizada "+dtmemoria          : "DTMEM",
         separator,
         " ~1~ para o mes de"   +" : "+mescorrente                              : " Mes de "+mescorrente                 : "MES",
         " ~2~ para o mes de"   +" : "+mesanterior                              : " Mes de "+mesanterior                 : "MESANT",
         " ~3~ para o mes de"   +" : "+mesanterior2                             : " Mes de "+mesanterior2                : "MESANT2",
         separator,
         "~C~ancelar"                                                           : " Cancelar a Opera‡„o"                 : "CANCELAR"
        EndMenu
         To MenuVar
        Switch
          Case MenuVar="CANCELAR" Or
               MenuVar="Esc"          : Return False
          Case MenuVar="HOJE"         : VSDGDTINI=Today()
          Case MenuVar="ONTEM"        : VSDGDTINI=Today()-1
          Case MenuVar="ATUAL"        : VSDGDTINI=Primeiro_Dia_Data(Today())
          Case MenuVar="MES"          : VSDGDTINI=Primeiro_Dia_Data(Today())
                                        VSDGDTFIM=Ultimo_Dia_Data(Today())
          Case MenuVar="MESANT"       : VSDGDTINI=Primeiro_Dia_Data(Primeiro_Dia_Data(Today())-1)
                                        VSDGDTFIM=Ultimo_Dia_Data(Primeiro_Dia_Data(Today())-1)
          Case MenuVar="MESANT2"      : VSDGDTINI=Primeiro_Dia_Data(Primeiro_Dia_Data(Today())-1)
                                        VSDGDTINI=Primeiro_Dia_Data(VSDGDTINI-1)
                                        VSDGDTFIM=Ultimo_Dia_Data(VSDGDTINI)
          Case MenuVar="DTMEM"        : If Not IsBlank(SYS_DTFIM)
                                           Then VSDGDTINI=SYS_DTINI
                                                VSDGDTFIM=SYS_DTFIM
                                        EndIf
          Case MenuVar="ATEHOJE"      : VSDGDTINI=Primeiro_Dia_Data(Today())
                                        VSDGDTFIM=Today()
                                                
        EndSwitch
        Return True
EndIf

If Campo="TG_DTINI2"
   then
        LimpaRodape(0)

        dttemp      =Primeiro_Dia_Data(Today())  
        mescorrente =Format("W10,AR",RTrim(MesExt(Month(dttemp))))+"/"+StrVal(Year(dttemp))

        dttemp      =dttemp-1
        mesanterior =Format("W10,AR",RTrim(MesExt(Month(dttemp))))+"/"+StrVal(Year(dttemp))

        dttemp      =Primeiro_Dia_Data(dttemp)-1
        mesanterior2=Format("W10,AR",RTrim(MesExt(Month(dttemp))))+"/"+StrVal(Year(dttemp))

        dtatehoje   =Format("D13",Primeiro_Dia_Data(Today()))+" at‚ "+Format("D13",Today())

        ShowPopup " Data " CENTERED
         "            ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"                        : "HOJE",
         "           ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"                       : "ONTEM",
         "   ~I~nicio do mes"   +" : "+Format("D13",Primeiro_Dia_Data(Today())) : " Primeiro dia do mes atual"           : "ATUAL",
         " No mes ~A~t‚ hoje"   +" : "+dtatehoje                                : " Primeiro dia do mes atual at‚ hoje"  : "ATEHOJE",
         separator,
         " ~1~ para o mes de"   +" : "+mescorrente                              : " Mes de "+mescorrente                 : "MES",
         " ~2~ para o mes de"   +" : "+mesanterior                              : " Mes de "+mesanterior                 : "MESANT",
         " ~3~ para o mes de"   +" : "+mesanterior2                             : " Mes de "+mesanterior2                : "MESANT2",
         separator,
         "~C~ancelar"                                                           : " Cancelar a Opera‡„o"                 : "CANCELAR"
        EndMenu
         To MenuVar
        Switch
          Case MenuVar="CANCELAR" Or
               MenuVar="Esc"          : Return False
          Case MenuVar="HOJE"         : VSDGDTINI2=Today()
          Case MenuVar="ONTEM"        : VSDGDTINI2=Today()-1
          Case MenuVar="ATUAL"        : VSDGDTINI2=Primeiro_Dia_Data(Today())
          Case MenuVar="MES"          : VSDGDTINI2=Primeiro_Dia_Data(Today())
                                        VSDGDTFIM2=Ultimo_Dia_Data(Today())
          Case MenuVar="MESANT"       : VSDGDTINI2=Primeiro_Dia_Data(Primeiro_Dia_Data(Today())-1)
                                        VSDGDTFIM2=Ultimo_Dia_Data(Primeiro_Dia_Data(Today())-1)
          Case MenuVar="MESANT2"      : VSDGDTINI2=Primeiro_Dia_Data(Primeiro_Dia_Data(Today())-1)
                                        VSDGDTINI2=Primeiro_Dia_Data(VSDGDTINI2-1)
                                        VSDGDTFIM2=Ultimo_Dia_Data(VSDGDTINI2)
          Case MenuVar="ATEHOJE"      : VSDGDTINI2=Primeiro_Dia_Data(Today())
                                        VSDGDTFIM2=Today()
        EndSwitch
        Return True
EndIf

If Campo="TG_DTFIM"
   then
        LimpaRodape(0)

        If Not IsAssigned(VSDGDTINI) Or IsBlank(VSDGDTINI)
           Then ShowPopup " Data " CENTERED
                 "           ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"              : "HOJE",
                 "          ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"             : "ONTEM",
                 "~F~inal deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))   : " éltimo dia do mes atual"   : "ATUAL",
                 separator,
                 "~C~ancelar"                                                          : " Cancelar a Opera‡„o"       : "CANCELAR"
                EndMenu
                 To MenuVar
           Else If ( Month(VSDGDTINI)=Month(Today()) And Year(VSDGDTINI)=Year(Today()) )
                   Then ShowPopup " Data " CENTERED
                         "              ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"              : "HOJE",
                         "             ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"             : "ONTEM",
                         "   ~F~inal deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))   : " éltimo dia do mes atual"   : "ATUAL",
                         "~M~esma data inicial"   +" : "+Format("D13",VSDGDTINI)                  : " Mesma data inicial"        : "MESMO",
                         separator,
                         "~C~ancelar"                                                             : " Cancelar a Opera‡„o"       : "CANCELAR"
                        EndMenu
                         To MenuVar
                   Else ShowPopup " Data " CENTERED
                         "              ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"              : "HOJE",
                         "             ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"             : "ONTEM",
                         " ~U~ltimo dia do mes"   +" : "+Format("D13",Ultimo_Dia_Data(VSDGDTINI)) : " éltimo dia do mes inicial" : "INICIAL",
                         "   ~F~inal deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))   : " éltimo dia do mes atual"   : "ATUAL",
                         "~M~esma data inicial"   +" : "+Format("D13",VSDGDTINI)                  : " Mesma data inicial"        : "MESMO",
                         separator,
                         "~C~ancelar"                                                             : " Cancelar a Opera‡„o"       : "CANCELAR"
                        EndMenu
                         To MenuVar
                  EndIf
        EndIf
        Switch
          Case MenuVar="CANCELAR" Or
               MenuVar="Esc"          : Return False
          Case MenuVar="HOJE"         : VSDGDTFIM=Today()
          Case MenuVar="ONTEM"        : VSDGDTFIM=Today()-1
          Case MenuVar="INICIAL"      : VSDGDTFIM=Ultimo_Dia_Data(VSDGDTINI)
          Case MenuVar="ATUAL"        : VSDGDTFIM=Ultimo_Dia_Data(Today())
          Case MenuVar="MESMO"        : VSDGDTFIM=VSDGDTINI
        EndSwitch
        Return True
EndIf

If Campo="TG_DTFIM2"
   then
        LimpaRodape(0)

        If Not IsAssigned(VSDGDTINI2) Or IsBlank(VSDGDTINI2)
           Then ShowPopup " Data " CENTERED
                 "           ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"              : "HOJE",
                 "           ~O~ntem"  +" : "+Format("D13",Today()-1)                  : " Data de Ontem"             : "ONTEM",
                 "~F~inal deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))   : " éltimo dia do mes atual"   : "ATUAL",
                 separator,
                 "~C~ancelar"                                                          : " Cancelar a Opera‡„o"       : "CANCELAR"
                EndMenu
                 To MenuVar
           Else If ( Month(VSDGDTINI2)=Month(Today()) And Year(VSDGDTINI2)=Year(Today()) )
                   Then ShowPopup " Data " CENTERED
                         "              ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"              : "HOJE",
                         "             ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"             : "ONTEM",
                         "   ~F~inal deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))   : " éltimo dia do mes atual"   : "ATUAL",
                         "~M~esma data inicial"   +" : "+Format("D13",VSDGDTINI2)                 : " Mesma data inicial"        : "MESMO",
                         separator,
                         "~C~ancelar"                                                             : " Cancelar a Opera‡„o"       : "CANCELAR"
                        EndMenu
                         To MenuVar
                   Else ShowPopup " Data " CENTERED
                         "              ~H~oje"   +" : "+Format("D13",Today())                     : " Data de Hoje"              : "HOJE",
                         "             ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"             : "ONTEM",
                         " ~U~ltimo dia do mes"   +" : "+Format("D13",Ultimo_Dia_Data(VSDGDTINI2)) : " éltimo dia do mes inicial" : "INICIAL",
                         "   ~F~inal deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))    : " éltimo dia do mes atual"   : "ATUAL",
                         "~M~esma data inicial"   +" : "+Format("D13",VSDGDTINI2)                  : " Mesma data inicial"        : "MESMO",
                         separator,
                         "~C~ancelar"                                                              : " Cancelar a Opera‡„o"       : "CANCELAR"
                        EndMenu
                         To MenuVar
                  EndIf
        EndIf
        Switch
          Case MenuVar="CANCELAR" Or
               MenuVar="Esc"          : Return False
          Case MenuVar="HOJE"         : VSDGDTFIM2=Today()
          Case MenuVar="ONTEM"        : VSDGDTFIM2=Today()-1
          Case MenuVar="INICIAL"      : VSDGDTFIM2=Ultimo_Dia_Data(VSDGDTINI2)
          Case MenuVar="ATUAL"        : VSDGDTFIM2=Ultimo_Dia_Data(Today())
          Case MenuVar="MESMO"        : VSDGDTFIM2=VSDGDTINI2
        EndSwitch
        Return True
EndIf

If Campo="TG_DTREF"
   then
        LimpaRodape(0)


        mescorrente="" ; temporaria

        If IsAssigned(VSDGMESANO) and not IsBlank(VSDGMESANO) 
           Then

                calcmestemp1=numval(substr(VSDGMESANO,1,2))
                calcanotemp1=numval(substr(VSDGMESANO,4,4))

                calcmestemph=month(today())
                calcanotemph= year(today())
           
                if calcanotemp1=calcanotemph and calcmestemp1<calcmestemph then mescorrente="ok" endif 
                if calcanotemp1<calcanotemph                               then mescorrente="ok" endif 
             
                if mescorrente="ok"
                   then
                        ShowPopup " Data " CENTERED
                         "~U~ltimo dia "+VSDGMESANO +" : "+Format("D13",Ultimo_Dia_Data(DateVal("01."+VSDGMESANO)))   : " éltimo dia de "+VSDGMESANO   : "FINALMESANO",
                          separator,
                         "              ~H~oje"   +" : "+Format("D13",Today())                       : " Data de Hoje"              : "HOJE",
                         "             ~O~ntem"   +" : "+Format("D13",Today()-1)                     : " Data de Ontem"             : "ONTEM",
                         "  ~I~n¡cio deste mes"   +" : "+Format("D13",Primeiro_Dia_Data(Today()))    : " Primeiro dia do mes atual" : "INICIAL",
                         "  ~F~inal  deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))      : " éltimo dia do mes atual"   : "ATUAL",
                          separator,
                          "~C~ancelar"                                                         : " Cancelar a Opera‡„o"       : "CANCELAR"
                        EndMenu
                          To MenuVar
                endif
                
                release vars calcmestemp1, calcanotemp1, calcmestemph, calcanotemph
        endif
           
        if mescorrente=""
           then
                ShowPopup " Data " CENTERED
                 "            ~H~oje"   +" : "+Format("D13",Today())                    : " Data de Hoje"              : "HOJE",
                 "           ~O~ntem"   +" : "+Format("D13",Today()-1)                  : " Data de Ontem"             : "ONTEM",
                 "~I~n¡cio deste mes"   +" : "+Format("D13",Primeiro_Dia_Data(Today())) : " Primeiro dia do mes atual" : "INICIAL",
                 "~F~inal  deste mes"   +" : "+Format("D13",Ultimo_Dia_Data(Today()))   : " éltimo dia do mes atual"   : "ATUAL",
                  separator,
                  "~C~ancelar"                                                         : " Cancelar a Opera‡„o"       : "CANCELAR"
                EndMenu
                  To MenuVar
        EndIf

        Switch
          Case MenuVar="CANCELAR" Or
               MenuVar="Esc"          : Return False
          Case MenuVar="HOJE"         : VSDGDTREF=Today()
          Case MenuVar="ONTEM"        : VSDGDTREF=Today()-1
          Case MenuVar="INICIAL"      : VSDGDTREF=Primeiro_Dia_Data(Today())
          Case MenuVar="ATUAL"        : VSDGDTREF=Ultimo_Dia_Data(Today())
          Case MenuVar="FINALMESANO"  : VSDGDTREF=Ultimo_Dia_Data(DateVal("01."+VSDGMESANO))
        EndSwitch
        Return True
EndIf

If Campo="TG_FRETE_PC"       
   then
        LimpaRodape(0)
        
        ShowPopup " Frete por Conta/Modalidade do Frete " CENTERED
        "~0~=Sem Ocorrˆncia de Transporte          " : " Sem ocorrˆncia de Transporte                        " : "0",
        "~1~=Transporte contratado/Remetente   -CIF" : " Contrata‡Æo do Frete por conta do Remetente (CIF)   " : "1",
        "~2~=Transporte contratado/Destinat rio-FOB" : " Contrata‡Æo do Frete por conta do Destinat rio (FOB)" : "2",
        "~3~=Transporte contratado/Terceiros       " : " Contrata‡Æo do Frete por conta de terceiros         " : "3",
        separator,
        "~4~=Transporte pr¢prio/Remetente          " : " Transporte pr¢prio por conta do Remetente           " : "4",
        "~5~=Transporte pr¢prio/Destinat rio       " : " Transporte pr¢prio por conta do Destinat rio        " : "5",
        separator,
        "~C~ancelar                                " : " Cancelar a Opera‡„o                                 " : "CANCELAR"
        EndMenu
        To MenuVar
        
        Switch
         Case MenuVar="CANCELAR" Or
              MenuVar="Esc"          : Return False
         Case MenuVar="0" : VSDGFRETEPC="0" VSDGNOMFRETEPC="SEM TRANSPORTE" 
         Case MenuVar="1" : VSDGFRETEPC="1" VSDGNOMFRETEPC="REMETENTE (CIF)"
         Case MenuVar="2" : VSDGFRETEPC="2" VSDGNOMFRETEPC="DESTINATARIO (FOB)"
         Case MenuVar="3" : VSDGFRETEPC="3" VSDGNOMFRETEPC="TERCEIROS"
         Case MenuVar="4" : VSDGFRETEPC="4" VSDGNOMFRETEPC="PRàPRIO/REMETENTE"
         Case MenuVar="5" : VSDGFRETEPC="5" VSDGNOMFRETEPC="PRàPRIO/DESTINATµRIO"
        EndSwitch            
        Return True
EndIf

If Campo="TG_MESANO"
   Then 
        LimpaRodape(0)
        
        If IsBlank(VSDGMESANO)
           Then VSDGMESANO=AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)
        EndIf  
        Switch
          Case LEN(VSDGMESANO)<7                           : Return False
          Case NumVal(Substr(VSDGMESANO,1,2))<1            : Return False
          Case NumVal(Substr(VSDGMESANO,1,2))>12           : Return False
          Case NumVal(Substr(VSDGMESANO,4,4))<1900         : Return False
        EndSwitch

        mescorrente=Format("W10,AR",RTrim(MesExt(NumVal(Substr(VSDGMESANO,1,2)))))+"/"+Substr(VSDGMESANO,4,4)
        mesanterior=Format("W10,AR",RTrim(MesExt(Month(Primeiro_Dia_Data(DateVal("01."+VSDGMESANO))-1))))+"/"+
                                   StrVal(Year(Primeiro_Dia_Data(DateVal("01."+VSDGMESANO))-1))
        messeguinte=Format("W10,AR",RTrim(MesExt(Month(Ultimo_Dia_Data(DateVal("01."+VSDGMESANO))+1))))+"/"+
                                   StrVal(Year(Ultimo_Dia_Data(DateVal("01."+VSDGMESANO))+1))
        ShowPopup " Data " CENTERED
         " ~M~es de          "+" : "+mescorrente          : " Mes corrente"  : "MES",
         separator,
         " (~-~) Mes anterior"+" : "+mesanterior          : " Mes anterior"  : "MESANT",
         " (~+~) Mes seguinte"+" : "+messeguinte          : " Mes seguinte"  : "MESSEG",
         separator,
         "~C~ancelar"              : " Cancelar a Opera‡„o" : "CANCELAR"
        EndMenu
         To MenuVar
        Switch
          Case MenuVar="CANCELAR" Or
               MenuVar="Esc"          : Return False
          Case MenuVar="MESANT"       : VSDGMESANO=AlinhM(StrVal(Month(Primeiro_Dia_Data(DateVal("01."+VSDGMESANO))-1)),2)+"."+
                                                   StrVal(Year(Primeiro_Dia_Data(DateVal("01."+VSDGMESANO))-1))
          Case MenuVar="MESSEG"       : VSDGMESANO=AlinhM(StrVal(Month(Ultimo_Dia_Data(DateVal("01."+VSDGMESANO))+1)),2)+"."+
                                                   StrVal(Year(Ultimo_Dia_Data(DateVal("01."+VSDGMESANO))+1))
        EndSwitch
        Return True
EndIf

if campo="TG_SITUACAOCHEQUE"
   then
        LimpaRodape(0)

        ShowPopup " Situa‡äes do Cheque " CENTERED
         "~0~ EM ABERTO           " : " Cheques com situa‡Æo=EM ABERTO   " : "EM ABERTO",
         "~1~ PRORROGADO          " : " Cheques com situa‡Æo=PRORROGADO  " : "PRORROGADO",
         "~2~ LIQUIDADO           " : " Cheques com situa‡Æo=LIQUIDADO   " : "LIQUIDADO",
         "~3~ EM COBRANCA         " : " Cheques com situa‡Æo=EM COBRANCA " : "EM COBRANCA",
         "~4~ TROCADO             " : " Cheques com situa‡Æo=TROCADO     " : "TROCADO",
         "~5~ SEM FUNDO           " : " Cheques com situa‡Æo=SEM FUNDO   " : "SEM FUNDO",
         Separator,
         "~T~ODAS                 " : " Todas as situa‡äes            " : "TODAS"
        EndMenu
          To opcaosituacaocheque
         
        if opcaosituacaocheque<>"Esc"
           then VSDGSITUACAOCHEQUE=opcaosituacaocheque
                Return True
        endif
        return False
endif


if campo="TG_SITUACAOPEDIDO"
   then
        LimpaRodape(0)

        ShowPopup " Situa‡äes do Pedido " CENTERED
        "~A~BERTO           "            : " Pedidos com situa‡Æo=ABERTO   "                    : "ABERTO",
        "~S~USPENSO         "            : " Pedidos com situa‡Æo=SUSPENSO "                    : "SUSPENSO",
        "~F~ATURADO         "            : " Pedidos com situa‡Æo=FATURADO "                    : "FATURADO",
        "~C~ANCELADO        "            : " Pedidos com situa‡Æo=CANCELADO"                    : "CANCELADO",
        Separator,
        "~7~=Ignorar CANCELADO         " : " Ignorar Pedidos com situa‡Æo=CANCELADO           " : "IGNORAR CANCELADO",
        "~8~=Ignorar CANCELADO+SUSPENSO" : " Ignorar Pedidos com situa‡Æo=CANCELADO e SUSPENSO" : "IGNORAR CANCELADO+SUSPENSO",
        "~9~= Juntar    ABERTO+SUSPENSO" : "  Juntar Pedidos com situa‡Æo=   ABERTO e SUSPENSO" : "JUNTAR ABERTO+SUSPENSO",
        Separator,
        "~T~ODAS            "            : " Todas as situa‡äes            " : "TODAS"
        EndMenu
         To opcaosituacaopedido
        
        if opcaosituacaopedido<>"Esc"
          then VSDGSITUACAOPEDIDO=opcaosituacaopedido
                Return True
        endif
        return False
endif

if campo="TG_OPERACAOPEDIDO"
   then
        LimpaRodape(0)

        ShowPopup " Opera‡Æo do Pedido " CENTERED
        "~V~ENDAS            "  : " Pedidos de Vendas   "            : "VENDAS",
        "~B~ONIFICACAO/BRINDE"  : " Pedidos de Bonifica‡Æo/Brinde"   : "BONIFICACAO",
        "~R~EMESSAS          "  : " Pedidos de Remessas"             : "REMESSAS",
        Separator,
        "~1~ VENDAS+REMESSAS "  : " Pedidos de Vendas+REMESSAS"      : "VENDAS+REMESSAS",
        Separator,
        "~T~ODAS            "   : " Todas acima"                     : "TODAS"
        EndMenu
         To opcaooperacaopedido
        
        if opcaooperacaopedido<>"Esc"
          then VSDGOPERACAOPEDIDO=opcaooperacaopedido
                Return True
        endif
        return False
endif

if campo="TG_SITUACAOFAC"
   then
        LimpaRodape(0)

        ShowPopup " Situa‡äes da Programa‡Æo " CENTERED
        "~P~rogramada ": " Programa‡„o    " : "PROGRAMADA",
        "~E~m produ‡„o": " Em produ‡„o    " : "EM PRODUCAO",
        "~S~uspensa   ": " Suspensa       " : "SUSPENSA",
        "~F~inalizada ": " Finalizada     " : "FINALIZADA",
        Separator,
        "~T~ODAS            "            : " Todas as situa‡äes            " : "TODAS"
        EndMenu
         To opcaosituacaofac    
        
        if opcaosituacaofac<>"Esc"
          then VSDGSITUACAOFAC=opcaosituacaofac
                Return True
        endif
        return False
endif

If Campo="TG_ZERADO"
   Then LimpaRodape(0)
        ShowPopup " Op‡äes do Estoque " CENTERED
         "~0~ Sem estoque zerado    " : " Sem estoque zerado           " : "0",
         Separator,
         "~1~ Com estoque Zerado    " : " Com estoque Zerado           " : "1",
         "~2~ S¢ estoque zerado     " : " S¢ estoque zerado            " : "2",
         "~3~ S¢ Negativo           " : " S¢ Negativo                  " : "3",
           Separator,
         "~C~ancelar                " : " Cancelar a Opera‡„o          " : "CANCELAR"
        EndMenu               
        To opcaosituacaooc
        
        If Not RetVal Or opcaosituacaooc="CANCELAR" Or opcaosituacaooc="Esc"
           Then VSDGZERADO=""
                Return False
           Else VSDGZERADO = opcaosituacaooc
                Return True
        EndIf             
EndIf
        
if campo="TG_SITUACAOPEDIDOAS"
   then
        LimpaRodape(0)

        ShowPopup " Situa‡äes do Pedido " CENTERED
        "~A~BERTO           "            : " Pedidos com situa‡Æo=ABERTO   "                    : "ABERTO",
        "~S~USPENSO         "            : " Pedidos com situa‡Æo=SUSPENSO "                    : "SUSPENSO",
        Separator,
        "~9~= Juntar    ABERTO+SUSPENSO" : "  Juntar Pedidos com situa‡Æo=   ABERTO e SUSPENSO" : "JUNTAR ABERTO+SUSPENSO"
        EndMenu
         To opcaosituacaopedido
        
        if opcaosituacaopedido<>"Esc"
          then VSDGSITUACAOPEDIDO=opcaosituacaopedido
                Return True
        endif
        return False
endif

if campo="TG_SITUACAOOC"
   then
        LimpaRodape(0)

        ShowPopup " Situa‡äes da Ordem de Compra " CENTERED
        "~A~BERTO           "            : " Ordem de compra com situa‡Æo=ABERTO   "                    : "ABERTO",
        "~S~USPENSO         "            : " Ordem de compra com situa‡Æo=SUSPENSO "                    : "SUSPENSO",
        "~E~NTREGUE         "            : " Ordem de compra com situa‡Æo=ENTREGUE "                    : "ENTREGUE",
        "~C~ANCELADO        "            : " Ordem de compra com situa‡Æo=CANCELADO"                    : "CANCELADO",
        Separator,
        "~7~=Ignorar CANCELADO         " : " Ignorar Ordem de compra com situa‡Æo=CANCELADO           " : "IGNORAR CANCELADO",
        "~8~=Ignorar CANCELADO+SUSPENSO" : " Ignorar Ordem de compra com situa‡Æo=CANCELADO e SUSPENSO" : "IGNORAR CANCELADO+SUSPENSO",
        "~9~= Juntar    ABERTO+SUSPENSO" : "  Juntar Ordem de compra com situa‡Æo=   ABERTO e SUSPENSO" : "JUNTAR ABERTO+SUSPENSO",
        Separator,
        "~T~ODAS            "            : " Todas as situa‡äes            " : "TODAS"
        EndMenu
         To opcaosituacaooc
        
        if opcaosituacaooc<>"Esc"
          then VSDGSITUACAOOC=opcaosituacaooc
                Return True
        endif
        return False
endif

If Campo="TG_SITUACAOOE"
   Then LimpaRodape(0)

        ShowPopup " Situa‡äes do Pedido " CENTERED
        "EM ~A~BERTO        "            : " Expedi‡„o com situa‡Æo=EM ABERTO"                    : "EM ABERTO",
        "~L~IBERADO         "            : " Expedi‡„o com situa‡Æo=LIBERADO "                    : "LIBERADO",
        "~F~ATURADO         "            : " Expedi‡„o com situa‡Æo=FATURADO "                    : "FATURADO",
        Separator,
        "~1~=Ignorar LIBERADO          " : " Ignorar Expedi‡„o com situa‡Æo=LIBERADO           " : "IGNORAR LIBERADO",
        "~2~=Juntar EM ABERTO+LIBERADO " : " Juntar Expedi‡„o com situa‡Æo=EM ABERTO e LIBERADO" : "JUNTAR EM ABERTO+LIBERADO",
        Separator,
        "~T~ODAS            "            : " Todas as situa‡äes            " : "TODAS"
        EndMenu
         To opcaosituacaooe        
         if opcaosituacaooe<>"Esc"
           then VSDGSITUACAOOE=opcaosituacaooe
                 Return True
         endif
         return False
EndIf   

if campo="TG_SITUACAONOTA"
   then
        LimpaRodape(0)

        ShowPopup " Situa‡äes do Documento " CENTERED
        "~N~ORMAL           "            : " Documento NORMAL                "  : "NORMAL",
        "~C~ANCELADA        "            : " Documento CANCELADA             "  : "CANCELADA",
        "~I~NUTILIZADA      "            : " Documento INUTILIZADA           "  : "INUTILIZADA",
        Separator,
        "CANCELADA+~D~ENEGADA    "       : " Documento CANCELADA+DENEGADA    "  : "CANCELADA+DENEGADA",
        "CANCELADA+~E~XTEMPORANEA"       : " Documento CANCELADA+EXTEMPORANEA"  : "CANCELADA+EXTEMPORANEA",
        "~T~ODAS            "            : " Todas as situa‡äes              "  : "TODAS"
        EndMenu
         To opcaosituacaonota
        
        if opcaosituacaonota<>"Esc"
          then VSDGSITUACAONOTA=opcaosituacaonota
                Return True
        endif
        return False
endif

If Campo="TG_OPANALISE3"
   then
        LimpaRodape(0)
        
        ShowPopup " Op‡äes de An lise " CENTERED
        "~1~=Monet ria          " : " Analisar por valor monet rio              " : "1",
        "~2~=Quantidade         " : " Analisar por quantidader                  " : "2",
        "~3~=Lucratividade      " : " Analisar por lucratividade monet ria total" : "3",
        "~4~=N£mero de Vendas   " : " Analisar por n£mero de vendas             " : "4",
        "~5~=N£mero de Clientes " : " Analisar por n£mero de clientes           " : "5",
        separator,
        "~C~ancelar             " : " Cancelar a Opera‡„o                       " : "CANCELAR"
        EndMenu
        To MenuVar
        
        Switch
         Case MenuVar="CANCELAR" Or
              MenuVar="Esc"          : Return False
         Case MenuVar="1" : VSDGOPANALISE="1" VSDGNOMOPANALISE="MONETµRIA"
         Case MenuVar="2" : VSDGOPANALISE="2" VSDGNOMOPANALISE="QUANTIDADE"
         Case MenuVar="3" : VSDGOPANALISE="3" VSDGNOMOPANALISE="LUCRATIVIDADE"
         Case MenuVar="4" : VSDGOPANALISE="4" VSDGNOMOPANALISE="NéMERO DE VENDAS"
         Case MenuVar="5" : VSDGOPANALISE="5" VSDGNOMOPANALISE="NéMERO DE CLIENTES"
        EndSwitch            
        Return True
EndIf

If Campo="TG_OPANALISE4"
   then
        LimpaRodape(0)
        
        ShowPopup " Op‡äes de An lise " CENTERED
        "~1~=Monet ria          " : " Analisar por valor monet rio              " : "1",
        "~2~=Quantidade         " : " Analisar por quantidader                  " : "2",
        "~4~=N£mero de Vendas   " : " Analisar por n£mero de vendas             " : "4",
        "~5~=N£mero de Produtos " : " Analisar por n£mero de produtos           " : "5",
        separator,
        "~C~ancelar             " : " Cancelar a Opera‡„o                       " : "CANCELAR"
        EndMenu
        To MenuVar
        
        Switch
         Case MenuVar="CANCELAR" Or
              MenuVar="Esc"          : Return False
         Case MenuVar="1" : VSDGOPANALISE="1" VSDGNOMOPANALISE="MONETµRIA"
         Case MenuVar="2" : VSDGOPANALISE="2" VSDGNOMOPANALISE="QUANTIDADE"
         Case MenuVar="4" : VSDGOPANALISE="4" VSDGNOMOPANALISE="NéMERO DE VENDAS"
         Case MenuVar="5" : VSDGOPANALISE="5" VSDGNOMOPANALISE="NéMERO DE PRODUTOS"
        EndSwitch            
        Return True
EndIf

If Campo="TG_OPANALISE5"
   then
        LimpaRodape(0)
        
        ShowPopup " Op‡äes de An lise " CENTERED
        "~1~=Monet ria          " : " Analisar por valor monet rio              " : "1",
        "~2~=Quantidade         " : " Analisar por quantidader                  " : "2",
        "~4~=N£mero de Compras  " : " Analisar por n£mero de compras            " : "4",
        "~5~=N£mero de Fornecedores " : " Analisar por n£mero de fornecedores   " : "5",
        separator,
        "~C~ancelar             " : " Cancelar a Opera‡„o                       " : "CANCELAR"
        EndMenu
        To MenuVar
        
        Switch
         Case MenuVar="CANCELAR" Or
              MenuVar="Esc"          : Return False
         Case MenuVar="1" : VSDGOPANALISE="1" VSDGNOMOPANALISE="MONETµRIA"
         Case MenuVar="2" : VSDGOPANALISE="2" VSDGNOMOPANALISE="QUANTIDADE"
         Case MenuVar="4" : VSDGOPANALISE="4" VSDGNOMOPANALISE="NéMERO DE COMPRAS"
         Case MenuVar="5" : VSDGOPANALISE="5" VSDGNOMOPANALISE="NéMERO DE FORNECEDORES"
        EndSwitch            
        Return True
EndIf

If Campo="TG_OPANALISE6"
   then
        LimpaRodape(0)
        
        ShowPopup " Op‡äes de An lise " CENTERED
        "~1~=Monet ria          " : " Analisar por valor monet rio              " : "1",
        "~2~=Quantidade         " : " Analisar por quantidader                  " : "2",
        "~4~=N£mero de Compras  " : " Analisar por n£mero de compras            " : "4",
        "~5~=N£mero de Produtos " : " Analisar por n£mero de produtos           " : "5",
        separator,
        "~C~ancelar             " : " Cancelar a Opera‡„o                       " : "CANCELAR"
        EndMenu
        To MenuVar
        
        Switch
         Case MenuVar="CANCELAR" Or
              MenuVar="Esc"          : Return False
         Case MenuVar="1" : VSDGOPANALISE="1" VSDGNOMOPANALISE="MONETµRIA"
         Case MenuVar="2" : VSDGOPANALISE="2" VSDGNOMOPANALISE="QUANTIDADE"
         Case MenuVar="4" : VSDGOPANALISE="4" VSDGNOMOPANALISE="NéMERO DE COMPRAS"
         Case MenuVar="5" : VSDGOPANALISE="5" VSDGNOMOPANALISE="NéMERO DE PRODUTOS"
        EndSwitch            
        Return True
EndIf

If Campo="TG_OPANALISE11"
   then
        LimpaRodape(0)
        
        ShowPopup " Op‡äes de An lise " CENTERED
        "~1~=Custo Total        " : " Analisar por valor custo total            " : "1",
        "~2~=Quantidade         " : " Analisar por quantidade                   " : "2",
        "~3~=Custo Unit rio     " : " Analisar por valor custo unit rio         " : "3",
        separator,
        "~C~ancelar             " : " Cancelar a Opera‡„o                       " : "CANCELAR"
        EndMenu
        To MenuVar
        
        Switch
         Case MenuVar="CANCELAR" Or
              MenuVar="Esc"          : Return False
         Case MenuVar="1" : VSDGOPANALISE="1" VSDGNOMOPANALISE="CUSTO TOTAL"
         Case MenuVar="2" : VSDGOPANALISE="2" VSDGNOMOPANALISE="QUANTIDADE"
         Case MenuVar="3" : VSDGOPANALISE="3" VSDGNOMOPANALISE="CUSTO UNITµRIO"
        EndSwitch            
        Return True
EndIf

if campo="TG_CODMODELO"
   then 
        If Not IsAssigned(TG_CODMODELO_COMCASASDECIMAIS)  Then TG_CODMODELO_COMCASASDECIMAIS=False  EndIf
        switch
          case TG_CODMODELO_COMCASASDECIMAIS : return ModeloRelatorios_CD()
          otherwise                          : return ModeloRelatorios()
        endswitch
endif

If Not IsAssigned(SHOWDIALOGLOOKUP)
   then SHOWDIALOGLOOKUP=false
endif

switch
  case SHOWDIALOGLOOKUP:
    Switch
      Case Campo="TG_EMPRESA"    : moveto [Codigo da Empresa]               executarF1=True
      Case Campo="TG_MARCA"      : moveto [Codigo da Marca  ]               executarF1=True
      Case Campo="TG_TIPOEST"    : moveto [Tipo do Item     ]               executarF1=True      
      
    endSwitch
  
  otherwise            :
    Dynarray WinArray5[]
    Window Handle Dialog To JANELA_DIALOG
    Window GetAttributes JANELA_DIALOG To WinArray5

    Switch
      Case Campo="TG_EMPRESA"    : View "\\Sistemas\\Cadastro\\Empresas"    executarF1=True
      Case Campo="TG_EMPRESA2"   : View "\\Sistemas\\Cadastro\\Empresas"    executarF1=True
      Case Campo="TG_EMPRESAS"   : View "\\Sistemas\\Cadastro\\Empresas"    executarF1=True
      Case Campo="TG_EMPRESATE"  : View "\\Sistemas\\Cadastro\\Empresas"    executarF1=True
      Case Campo="TG_DESTINAT"   : View "\\Sistemas\\Cadastro\\Destinat"    executarF1=True
      Case Campo="TG_CLIENTE"    : View "\\Sistemas\\Cadastro\\Destinat"    executarF1=True
      Case Campo="TG_DESTINATINI": View "\\Sistemas\\Cadastro\\Destinat"    executarF1=True
      Case Campo="TG_DESTINATFIM": View "\\Sistemas\\Cadastro\\Destinat"    executarF1=True
      Case Campo="TG_REPRESEN"   : View "\\Sistemas\\Cadastro\\Represen"    executarF1=True
      Case Campo="TG_ETAPAP"     : View "\\Sistemas\\Faccao\\Tbetapac"      executarF1=True  
      Case Campo="TG_TPCONTRATO" : View "\\Sistemas\\Geec\\TpContra"        executarF1=True
      Case Campo="TG_GRPVENC"    : View "\\Sistemas\\Geec\\Grpvenc"         executarF1=True
      Case Campo="TG_GERENCIA"   : View "\\Sistemas\\Cadastro\\Gerencia"    executarF1=true
      Case Campo="TG_ROTA"       : View "\\Sistemas\\Cadastro\\Rota"        executarF1=True
      Case Campo="TG_CHAPA"      : View "\\Sistemas\\Cadastro\\Usuarios"    executarF1=True
      Case Campo="TG_ATEND"      : View "\\Sistemas\\Cadastro\\Atendent"    executarF1=True
      Case Campo="TG_TPDOCTO"    : View "\\Sistemas\\Cadastro\\Tpdoctos"    executarF1=True
      Case Campo="TG_TPDOCTO2"   : View "\\Sistemas\\Cadastro\\Tpdoctos"    executarF1=True
      Case Campo="TG_CIDADE"     : View "\\Sistemas\\Cadastro\\Cidades"     executarF1=True
;      Case Campo="TG_PROGFUND"   : View "\\Sistemas\\Fundic2\\ProgfC"       executarF1=True
      Case Campo="TG_AREA"       : View "\\Sistemas\\Cadastro\\Area"        executarF1=True
      Case Campo="TG_COBRADOR"   : View "\\Sistemas\\Cadastro\\Cobrador"    executarF1=True
      Case Campo="TG_ATIVIDADE"  : View "\\Sistemas\\Cadastro\\Ativid"      executarF1=True
      Case Campo="TG_TPLANC"     : View "\\Sistemas\\Cadastro\\Tplanc"      executarF1=True
      Case Campo="TG_TPLANC2"     : View "\\Sistemas\\Cadastro\\Tplanc"      executarF1=True
      Case Campo="TG_TPOPER"     : View "\\Sistemas\\Cadastro\\Tpoperac"    executarF1=True
      Case Campo="TG_TPOPER2"    : View "\\Sistemas\\Cadastro\\Tpoperac"    executarF1=True
      Case Campo="TG_CONTA"      : View "\\Sistemas\\CtaCor\\Conta"         executarF1=True
      Case Campo="TG_CONTA2"     : View "\\Sistemas\\CtaCor\\Conta"         executarF1=True
      Case Campo="TG_CCUSTO"     : View "\\Sistemas\\CtaCor\\Ccusto"        executarF1=True
      Case Campo="TG_CCUSTO2"    : View "\\Sistemas\\CtaCor\\Ccusto"        executarF1=True
      Case Campo="TG_ITEM"  Or Campo="TG_CODIGOI" Or Campo="TG_CODIGOF" Or
           Campo="TG_ITEM1" Or Campo="TG_ITEM2":
                                   View "\\Sistemas\\Estoque\\Itens"        executarF1=True
      Case Campo="TG_TPPAGTO"    : View "\\Sistemas\\Cadastro\\Tppagto"     executarF1=True
      Case Campo="TG_TPCART"     : View "\\Sistemas\\Ctarec\\Tpcart"        executarF1=True
      Case Campo="TG_TIPOEST"    : View "\\Sistemas\\Estoque\\Tpitem"       executarF1=True      
      Case Campo="TG_TPTRIBUT"   : View "\\Sistemas\\Estoque\\Tptribut"     executarF1=True     
      Case Campo="TG_UNI"        : View "\\Sistemas\\Estoque\\Unidades"     executarF1=True
      Case Campo="TG_DESTIN"     : View "\\Sistemas\\Vendas\\Destin"        executarF1=True
      Case Campo="TG_NCARREG"    : View "\\Sistemas\\Vendas\\AcCarrgC"      executarF1=True
      Case Campo="TG_NCONTROLE"  : View "\\Sistemas\\Cadastro\\Contrdia"    executarF1=True
      Case Campo="TG_TABELA"     : View "\\Sistemas\\Vendas\\Tbprcab"       executarF1=True
      Case Campo="TG_TABELA2"    : View "\\Sistemas\\Vendas\\Tbprcab"       executarF1=True
      Case Campo="TG_TABELA3"    : View "\\Sistemas\\Vendas\\Tbprcab"       executarF1=True
      Case Campo="TG_REQUISIT"   : View "\\Sistemas\\Estoque\\Requisit"     executarF1=True
      Case Campo="TG_FAMI"       : View "\\Sistemas\\Estoque\\Familia"      executarF1=True
      Case Campo="TG_FAMIINI"    : View "\\Sistemas\\Estoque\\Familia"      executarF1=True
      Case Campo="TG_FAMIFIM"    : View "\\Sistemas\\Estoque\\Familia"      executarF1=True
      Case Campo="TG_GRP"        : View "\\Sistemas\\Estoque\\Grupos"       executarF1=True
      Case Campo="TG_GRPINI"     : View "\\Sistemas\\Estoque\\Grupos"       executarF1=True
      Case Campo="TG_GRPFIM"     : View "\\Sistemas\\Estoque\\Grupos"       executarF1=True
      Case Campo="TG_CORINI"     : View "\\Sistemas\\Estoque\\Cores"        executarF1=True
      Case Campo="TG_CORFIM"     : View "\\Sistemas\\Estoque\\Cores"        executarF1=True
      Case Campo="TG_COR_TECIDO" : View "\\Sistemas\\Estoque\\Cores"        executarF1=True
      Case Campo="TG_MARCA"      : View "\\Sistemas\\Estoque\\Marcas"       executarF1=True
      Case Campo="TG_MARCAINI"   : View "\\Sistemas\\Estoque\\Marcas"       executarF1=True
      Case Campo="TG_MARCAFIM"   : View "\\Sistemas\\Estoque\\Marcas"       executarF1=True
      Case Campo="TG_NCM"        : View "\\Sistemas\\Estoque\\NCM"          executarF1=True
      Case Campo="TG_DEPART"     : View "\\Sistemas\\Estoque\\DEPART"       executarF1=True
      Case Campo="TG_LPRESENTE"  : View "\\Sistemas\\Vendas\\LPresenC"      executarF1=True
      Case Campo="TG_MOTSITPED"  : View "\\Sistemas\\Vendas\\PedMotiv"      executarF1=True      
      Case Campo="TG_ESTADO"     : View "\\Sistemas\\Vendas\\Estados"       executarF1=True
      Case Campo="TG_REQUISICAO" : View "\\Sistemas\\Estoque\\RqCabeca"     executarF1=True
      Case Campo="TG_PEDIDO"     : View "\\Sistemas\\Vendas\\PedidoC"       executarF1=True
      Case Campo="TG_OF"         : View "\\Sistemas\\Vendas\\FaturaC"       executarF1=True
      Case Campo="TG_NE"         : View "\\Sistemas\\Estoque\\NotaEC"       executarF1=True
      Case Campo="TG_OC"         : View "\\Sistemas\\Compras\\Occ"          executarF1=True
      Case Campo="TG_NOTA"       : View "\\Sistemas\\Vendas\\NotaC"         executarF1=True
      Case Campo="TG_NEI"        : View "\\Sistemas\\Estoque\\Inec"         executarF1=True
      Case Campo="TG_NCHT"       : View "\\Sistemas\\Cheqrec\\ChequeC"      executarF1=True
      Case Campo="TG_NLACPG"     : View "\\Sistemas\\Ctapag\\AltContC"      executarF1=True
      Case Campo="TG_NLACRC"     : View "\\Sistemas\\Ctarec\\AltTitC"       executarF1=True
      Case Campo="TG_NLCTAPAG"   : View "\\Sistemas\\Ctapag\\Titulos"       executarF1=True
      Case Campo="TG_NBL"        : View "\\Sistemas\\Estoque\\Tab_invc"     executarF1=True
      Case Campo="TG_EXPEDICAO"  : View "\\Sistemas\\Vendas\\ExpedC"        executarF1=True
      Case Campo="TG_EXPEDICAOOF": View "\\Sistemas\\Vendas\\ExpedC"        executarF1=True
      Case Campo="TG_TRANSP"     : View "\\Sistemas\\Vendas\\Transpor"      executarF1=True
      Case Campo="TG_VEICULO"    : View "\\Sistemas\\Vendas\\Veiculos"      executarF1=True
      Case Campo="TG_ETAPA"      : View "\\Sistemas\\Curtume\\Etapas"       executarF1=True
;      Case Campo="TG_DEFEITO"    : View "\\Sistemas\\OS\\Defeitos"          executarF1=True
      Case Campo="TG_PLCONTAS"   : View "\\Sistemas\\CtaCor\\PlContas"      executarF1=True
      Case Campo="TG_PLCONTAS2"  : View "\\Sistemas\\CtaCor\\PlContas"      executarF1=True
      Case Campo="TG_PLCONTAS3"  : View "\\Sistemas\\CtaCor\\PlContas"      executarF1=True
;      Case Campo="TG_ITEMGRADE"   : Seleciona_Opcoes("Grade/Opcoes","SR")
;      Case Campo="TG_ITEMTPGRADE" : Seleciona_Opcoes("Tipos/Grade","SR")
;      Case Campo="TG_FAMILIA"     : Seleciona_Opcoes("Familia","SR")
;      Case Campo="TG_GRUPO"       : Seleciona_Opcoes("Grupo","SR")
;      Case Campo="TG_SUBGRUPO"    : Seleciona_Opcoes("SubGrupo","SR")
;      Case Campo="TG_SEGURAD"     : View "\\Sistemas\\Oficina\\Segurad"   executarF1=True
;      Case Campo="TG_SERVICO"     : View "\\Sistemas\\Oficina\\CatServ"   executarF1=True
;      Case Campo="TG_EMPREGADO"   : View "\\Sistemas\\Oficina\\Empreg"    executarF1=True
;      Case Campo="TG_FUNCAO"      : View "\\Sistemas\\Oficina\\Funcao"    executarF1=True
;      Case Campo="TG_STATUSOS"    : View "\\Sistemas\\OS\\Status"         executarF1=True
;      Case Campo="TG_OS"          : View "\\Sistemas\\Oficina\\Osc"       executarF1=True
    ;;;;  Case Campo="TG_SERVECT"     : View "\\Sistemas\\Vendas\\Correioi"   executarF1=True
      Case Campo="TG_CONTRATO"    : View "\\Sistemas\\Vendas\\Correioc"   executarF1=True
      Case Campo="TG_SERVECT"     : View "\\Sistemas\\Vendas\\Servect"    executarF1=True
      Case Campo="TG_NPROG"       : View "\\Sistemas\\Faccao\\PFACC"      executarF1=True
      Case Campo="TG_NPROD"       : View "\\Sistemas\\Faccao\\RFACC"      executarF1=True
      Case Campo="TG_CORTE"       : View "\\Sistemas\\Faccao\\CFACC"      executarF1=True
      Case Campo="TG_NPRODCORTE"  : View "\\Sistemas\\Faccao\\PCFACC"     executarF1=True
      Case Campo="TG_CARTAO"      : View "\\Sistemas\\Cadastro\\Cartoes"  executarF1=True
      Case Campo="TG_CONDPGTO"    : View "\\Sistemas\\Vendas\\Condpgto"   executarF1=True
      Case Campo="TG_COMPRADOR"   : View "\\Sistemas\\Compras\\Comprad"   executarF1=True
      Case Campo="TG_NFUSAO"      : View "\\Sistemas\\Fundicao\\ProgFC"   executarF1=True
      Case Campo="TG_NREMPREG"    : View "\\Sistemas\\CartaoP\\Empregad"  executarF1=True
      Case Campo="TG_NOMECARTAO"  : View "\\Sistemas\\Cadastro\\Cartoes"  executarF1=True
      Case Campo="TG_AGEND"       : View "\\Sistemas\\Vendas\\AgencC"     executarF1=True
      Case Campo="TG_REGRA"       : View "\\Sistemas\\Vendas\\Ped_regc"   executarF1=True  
      Case Campo="TG_PROGREP"     : View "\\Sistemas\\Visita\\VisitaC"    executarF1=True
      Case Campo="TG_GPESSOA"     : View "\\Sistemas\\Cadastro\\GPessoaC" executarF1=True
      Case Campo="TG_LOCAL"       : View "\\Sistemas\\Estoque\\Localiza"  executarF1=True 
      Case Campo="TG_TPOPEROC"    : View "\\Sistemas\\Compras\\Tpoperoc"  executarF1=True
    EndSwitch

endswitch

If executarF1
   Then
        switch
          case SHOWDIALOGLOOKUP: 
          
            Dynarray WinArray5[]
            Window Handle Dialog to JANELA_DIALOG
            Window GetAttributes JANELA_DIALOG To WinArray5
            WinArray5["FLOATING"]=False
            Window SetAttributes JANELA_DIALOG From WinArray5
            
            executarF1=ConsultaF1()
          
            Window Select JANELA_DIALOG
            WinArray5["FLOATING"]=True
            Window SetAttributes JANELA_DIALOG From WinArray5

            Echo Normal
            Echo Off                                                
            
          otherwise            :  
            WinArray5["FLOATING"]=False
            Window SetAttributes JANELA_DIALOG From WinArray5
            
            executarF1=Consulta_Sem_F1()
             
        endswitch

        If executarF1
           Then Switch

                  Case Campo="TG_EMPRESA" or Campo="TG_EMPRESATE" or Campo="TG_EMPRESAS":
                       VSDGEMPRESA=Reg_ConsultaF1["Codigo da Empresa"    ]
                       VSDGNOMEMP =Reg_ConsultaF1["Nome Fantasia Empresa"]
                       
                  Case Campo="TG_EMPRESA2":
                       VSDGEMPRESA2=[Codigo da Empresa]
                       VSDGNOMEMP2 =[Nome Fantasia Empresa]

                  Case Campo="TG_DESTINAT":
                       VSDGDESTINAT=[Codigo]
                       VSDGNOMDEST =[Nome Fantasia EmitDest]
 
                       if isassigned(sys_codigo_cliente)
                          then if sys_codigo_cliente="0232"
                                  then VSDGNOMDEST=[Razao Social]
                               endif
                       endif                        
                       
                  Case Campo="TG_CLIENTE":
                       VSDGCLIENTE=[Codigo]
                       VSDGNOMCLIE =[Nome Fantasia EmitDest]
                  Case Campo="TG_DESTINATINI":
                       VSDGDESTINATINI=[Codigo]
                  Case Campo="TG_DESTINATFIM":
                       VSDGDESTINATFIM=[Codigo]
                  Case Campo="TG_REPRESEN":
                       VSDGREPRESEN=[Codigo do Representante]
                       VSDGNOMREPR =[Nome Fantasia Represent]
                  Case Campo="TG_ETAPAP":
                       VSDGETAPAP=[Codigo_Etapa]
                       VSDGNOMETAPAP =[Descricao_Etapa]     
                  Case Campo="TG_TPCONTRATO":
                       VSDGTPCONTRATO=[Codigo_TpContrato]
                       VSDGNOMTPCONTRATO =[Descricao_TpContrato]
                  Case Campo="TG_GRPVENC":
                       VSDGGRPVENC=[Codigo_GrupoVencimento]
                       VSDGNOMGRPVENC=[Descricao_GrupoVencimento]                       
                  Case Campo="TG_GERENCIA":
                       VSDGGERENCIA=[Codigo da Gerencia]
                       VSDGDESCGERENCIA=[Descricao Gerencia]
                  Case Campo="TG_ROTA":
                       VSDGROTA=[Codigo da Rota]
                       VSDGDESCROTA =[Descricao da Rota]
                  Case Campo="TG_CHAPA":
                       VSDGCHAPA   =[Chapa]
                       VSDGNOMCHAPA=[Nome]
                  Case Campo="TG_ATEND":
                       VSDGATEND   =[Codigo do Atendente]
                       VSDGNOMATEND=[Nome do Atendente]
                  Case Campo="TG_TPDOCTO":
                       VSDGTPDOCTO   =[Codigo do Documento    ]
                       VSDGNOMTPDOCTO=[Descricao do Documento ]
                  Case Campo="TG_TPDOCTO2":
                       VSDGTPDOCTO2   =[Codigo do Documento    ]
                       VSDGNOMTPDOCTO2=[Descricao do Documento ]
                  Case Campo="TG_CIDADE":
                       VSDGCIDADE=[Cidade]
                       If IsAssigned(VSDGESTADO) Then VSDGESTADO=[UF] EndIf                  
;                  Case Campo="TG_PROGFUND":
;                       VSDGPROGFUND=[Numero_ProgramacaoDisco]
                  Case Campo="TG_AREA":
                       VSDGAREA    =[Codigo da Area   ]
                       VSDGNOMAREA =[Descricao da Area]
                  Case Campo="TG_COBRADOR":
                       VSDGCOBRADOR    =[Codigo do Cobrador   ]
                       VSDGNOMCOBRADOR =[Descricao do Cobrador]
                  Case Campo="TG_ATIVIDADE":
                       VSDGATIVIDADE=[Codigo Atividade   ]
                       VSDGNOMATIV  =[Descricao Atividade]
                  Case Campo="TG_CONTA":
                       VSDGCONTA   =[Codigo da Conta   ]
                       VSDGNOMCONTA=[Descricao da Conta]
                  Case Campo="TG_CONTA2":
                       VSDGCONTA2   =[Codigo da Conta   ]
                       VSDGNOMCONTA2=[Descricao da Conta]
                  Case Campo="TG_TPLANC":
                       VSDGTPLANC =[Tipo de Lancamento]
                       VSDGNOMLANC=[Descricao do Lancamento]
                  Case Campo="TG_TPLANC2":
                       VSDGTPLANC2 =[Tipo de Lancamento]
                       VSDGNOMLANC2=[Descricao do Lancamento]     
                  Case Campo="TG_TPOPER":
                       VSDGTPOPER =[Tipo de Operacao]
                       VSDGNOMOPER=[Descricao Operacao]
                  Case Campo="TG_TPOPER2":
                       VSDGTPOPER2 =[Tipo de Operacao]
                       VSDGNOMOPER2=[Descricao Operacao]
                  Case Campo="TG_ITEM":
                       VSDGITEM    =[Codigo do Item    ]
                       VSDGNOMITEM =[Descricao do Item ]
                  Case Campo="TG_ITEM1":
                       VSDGITEM1   =[Codigo do Item    ]
                       VSDGNOMITEM1=[Descricao do Item ]
                  Case Campo="TG_ITEM2":
                       VSDGITEM2   =[Codigo do Item    ]
                       VSDGNOMITEM2=[Descricao do Item ]
                  Case Campo="TG_CODIGOI":
                       VSDGCODIGOI =[Codigo do Item    ]
                  Case Campo="TG_CODIGOF":
                       VSDGCODIGOF =[Codigo do Item    ]
                  Case Campo="TG_TPPAGTO":
                       VSDGTPPAGTO    =[Tipo do Pagamento       ]
                       VSDGNOMTPPAGTO =[Descricao Tipo Pagamento]
                  Case Campo="TG_CONDPGTO":
                       VSDGCONDPGTO    =[Condicao de Pagamento]
                       VSDGNOMCONDPGTO =[Descricao CondPagto  ]
                  Case Campo="TG_TPCART":
                       VSDGTPCART =[Tipo de Lancamento     ]
                       VSDGNOMCART=[Descricao do Lancamento]
                  Case Campo="TG_CCUSTO":
                       VSDGCCUSTO =[Codigo CCusto]
                       VSDGNOMCUST=[Descricao Ccusto]
                  Case Campo="TG_CCUSTO2":
                       VSDGCCUSTO2 =[Codigo CCusto]
                       VSDGNOMCUST2=[Descricao Ccusto]
                  Case Campo="TG_TPTRIBUT":
                       VSDGTPTRIBUT    =[Tipo Tributacao  ]
                       VSDGNOMTPTRIBUT =[Origem Tributacao]
                          
                  Case Campo="TG_TIPOEST":
                       VSDGTIPOEST    =Reg_ConsultaF1["Tipo do Item"            ]
                       VSDGDESCTIPOEST=Reg_ConsultaF1["Descricao Tipo do Item"  ]
                       VSDGNOMTPITEM  =Reg_ConsultaF1["Descricao Tipo do Item"  ]
                                              
                  Case Campo="TG_DESTIN":
                       VSDGDESTIN    =[Codigo da Destinacao   ]
                       VSDGNOMDESTIN =[Descricao da Destinacao]

                       If IsAssigned(VSDGTPMOVDESTIN) Then VSDGTPMOVDESTIN=[Tipo Movimento Estoque] EndIf                  
                       
                  Case Campo="TG_TABELA":
                       VSDGTABELA =[Codigo da Tabela   ]
                       VSDGNOMTAB =[Descricao da Tabela]
                  Case Campo="TG_TABELA2":
                       VSDGTABELA2 =[Codigo da Tabela   ]
                       VSDGNOMTAB2 =[Descricao da Tabela]
                  Case Campo="TG_TABELA3":
                       VSDGTABELA3 =[Codigo da Tabela   ]
                       VSDGNOMTAB3 =[Descricao da Tabela]
                  Case Campo="TG_NCARREG":
                       VSDGNCARREG    =[Numero_Carregamento]
                       VSDGNOMNCARREG =[Tipo_Carregamento  ]
                  Case Campo="TG_NCONTROLE":
                       VSDGNCONTROLE   =[Numero_Controle_Dia]
                       VSDGNOMNCONTROLE=SubStr([Nome],1,15)+", "+StrVal([Data])+"-"+[Hora]
                  Case Campo="TG_UNI":
                       VSDGUNI       =[Sigla da Unidade    ]
                       VSDGNOMUNI    =[Descricao da Unidade]
                  Case Campo="TG_REQUISIT":
                       VSDGREQUISIT  =[Codigo do Requisitante]
                       VSDGNOMREQUI  =[Descricao Requisitante]
                  Case Campo="TG_FAMI":
                       VSDGFAMI      =[Codigo da Familia   ]
                       VSDGNOMFAMI   =[Descricao da Familia]
                  Case Campo="TG_FAMIINI":
                       VSDGFAMIINI   =[Codigo da Familia   ]
                  Case Campo="TG_FAMIFIM":
                       VSDGFAMIFIM   =[Codigo da Familia   ]
                  Case Campo="TG_GRP":
                       VSDGGRP       =[Codigo do Grupo   ]
                       VSDGNOMGRP    =[Descricao do Grupo]
                  Case Campo="TG_GRPINI":
                       VSDGGRPINI    =[Codigo do Grupo   ]
                  Case Campo="TG_GRPFIM":
                       VSDGGRPFIM       =[Codigo do Grupo   ]
                  Case Campo="TG_COR_TECIDO":
                       VSDGCORTECIDO    =[Codigo da Cor_Tecido   ]
                       VSDGNOMCORTECIDO =[Descricao da Cor_Tecido]
                  Case Campo="TG_CORINI":
                       VSDGCORINI    =[Codigo da Cor_Tecido   ]
                  Case Campo="TG_CORFIM":
                       VSDGCORFIM    =[Codigo da Cor_Tecido   ]
                  Case Campo="TG_MARCA":
                       VSDGMARCA    =Reg_ConsultaF1["Codigo da Marca"   ]
                       VSDGNOMMARCA =Reg_ConsultaF1["Descricao da Marca"]
                  Case Campo="TG_MARCAINI":
                       VSDGMARCAINI =[Codigo da Marca   ]
                  Case Campo="TG_MARCAFIM":
                       VSDGMARCAFIM =[Codigo da Marca   ]
                  Case Campo="TG_NCM":
                       VSDGNCM =[NCM]
                  Case Campo="TG_DEPART":
                       VSDGDEPART    =[Codigo do Departamento   ]
                       VSDGNOMDEPART =[Descricao do Departamento]
                  Case Campo="TG_LPRESENTE":
                       VSDGLPRESENTE    = [Numero do Lancamento  ]
                       VSDGNOMLPRESENTE = [Nome Fantasia EmitDest]+" - "+[Codigo]
                  Case Campo="TG_MOTSITPED" :
                       VSDGSEQMOTSITPED = [Pedido_Motivo_Sequencia]
                       VSDGDESMOTSITPED = [Pedido_Motivo_Descricao]     
                  Case Campo="TG_ESTADO":
                       VSDGESTADO    =[UF]
                       VSDGNOMESTADO =[Descricao]
                  Case Campo="TG_REQUISICAO" :
                       VSDGREQUISICAO    =[Numero do Lancamento]
                       VSDGNOMREQUISICAO =[Tipo do Documento]+"/"+[Numero do Documento]+" - "+format("D13",[Data de Ocorrencia]) 
                  Case Campo="TG_PEDIDO":
                       VSDGPEDIDO    =[Numero do Pedido]
                       VSDGNOMPEDIDO =[Nome Fantasia EmitDest]
                  Case Campo="TG_OF":
                       VSDGOF    =[Numero da OF]
                       VSDGNOMOF =[Nome Fantasia EmitDest]
                       
                  Case Campo="TG_NE":
                       VSDGNE    =[Numero do Lancamento]
                       VSDGNOMNE =[Tipo do Documento]+"/"+[Numero do Documento]+" "+[Nome Fantasia EmitDest]
                  
                  Case Campo="TG_NEI":
                       VSDGNEI   =[Numero do Lancamento]
                       VSDGNOMNEI=[Tipo do Documento]+"/"+[Numero do Documento]+" "+[Nome Fantasia EmitDest]
                       
                  Case Campo="TG_OC":
                       VSDGOC    = [Numero da OC]
                       VSDGNOMOC = [Codigo]+" "+[Nome Fantasia EmitDest]
                       
                  Case Campo="TG_NOTA" :
                       VSDGEMPRESA    = [Codigo da Empresa  ]
                       VSDGNOTA       = [Numero do Documento]
                       VSDGDOCTOSERIE = [Serie do Documento ]
                            
                  Case Campo="TG_NCHT":
                       VSDGNCHT    =[Numero do Lancamento]
                       VSDGNOMNCHT = Format("D13",[Data de Entrada])+" "+[Razao Social]
                       
                  Case Campo="TG_NLACPG":
                       VSDGNLACPG    =[Numero do Lote]
                       VSDGNOMNLACPG = Format("D13",[Data da Operacao])+" "+[Descricao da Conta]
                       
                  Case Campo="TG_NLACRC":
                       VSDGNLACRC    =[Numero do Lote]
                       VSDGNOMNLACRC = Format("D13",[Data da Operacao])+" "+[Descricao da Conta]
                       
                  Case Campo="TG_NLCTAPAG":
                       VSDGNLCTAPAG    = [Numero do Lancamento]
                       VSDGNOMNLCTAPAG = [Tipo do Documento]+"/"+[Numero do Documento]+" "+[Razao Social]

                  Case Campo="TG_NBL":
                       VSDGNBL    =[Numero do Lancamento]
                       VSDGNOMNBL = strval([Data_Inclusao])+", "+[Codigo da Empresa]+"-"+[Nome Fantasia Empresa]
                       
                  Case Campo="TG_EXPEDICAO":
                       VSDGEXPEDICAO    =[Numero da OE]
                       VSDGNOMEXPEDICAO =[Nome Fantasia EmitDest]
                  
                  Case Campo="TG_EXPEDICAOOF":
                       VSDGEXPEDICAOOF    =[Numero da OE]
                       VSDGNOMEXPEDICAOOF =[Nome Fantasia EmitDest]  

                  Case Campo="TG_TRANSP":
                       VSDGTRANSP   =[Codigo da Transportadora]
                       VSDGNOMTRANSP=[Nome Fantasia Transport ]
                  Case Campo="TG_VEICULO":
                       VSDGVEICULO   =[Placa do Veiculo]
                  Case Campo="TG_ETAPA":
                       VSDGETAPA    =[Codigo da Etapa]
                       VSDGNOMETAPA =[Descricao da Etapa]
;                  Case Campo="TG_DEFEITO":
;                       VSDGDEFEITO    =[Codigo do Defeito   ]
;                       VSDGNOMDEFEITO =[Descricao do Defeito]
                  Case Campo="TG_PLCONTAS":
                       VSDGPLCONTAS   =[Codigo Plano_Conta]
                       VSDGNOMPLCONTAS=LTrim([Descricao Plano_Conta])
                       VSDGTPPLCONTAS =[Tipo de Conta]
                  Case Campo="TG_PLCONTAS2":
                       VSDGPLCONTAS2   =[Codigo Plano_Conta]
                       VSDGNOMPLCONTAS2=LTrim([Descricao Plano_Conta])
                       VSDGTPPLCONTAS2 =[Tipo de Conta]
                  Case Campo="TG_PLCONTAS3":
                       VSDGPLCONTAS3   =[Codigo Plano_Conta]
                       VSDGNOMPLCONTAS =LTrim([Descricao Plano_Conta])
                       VSDGTPPLCONTAS  =[Tipo de Conta]
;                  Case Campo="TG_SEGURAD":
;                       VSDGSEGURAD     =[Codigo Seguradora]
;                       VSDGNOMSEGURAD  =[Nome Seguradora]
;                  Case Campo="TG_SERVICO":
;                       VSDGSERVICO     =[Codigo do Servico]
;                       VSDGNOMSERV     =[Descricao do Servico]
;                  Case Campo="TG_EMPREGADO":
;                       VSDGEMPREGADO   =[Codigo Empregado]
;                       VSDGNOMEMPREGADO=[Nome Empregado]
;                  Case Campo="TG_FUNCAO":
;                       VSDGFUNCAO      =[Codigo da Funcao]
;                       VSDGNOMFUNCAO   =[Descricao da Funcao]
;                  Case Campo="TG_STATUSOS":
;                       VSDGSTATUSOS    =[Codigo do Status OS]
;                       VSDGNOMSTATUSOS =[Descricao do Status OS]
;                  Case Campo="TG_OS":
;                       VSDGOS          =[Numero OS]
                  Case Campo="TG_SERVECT":
                       VSDGSERVECT     =[Servico ECT]
                       VSDGDESCSERVECT =[Descricao do Servico]
                  Case Campo="TG_CONTRATO":
                       VSDGCONTRATO    =[Numero do Contrato]
                       VSDGDESCCONTRATO=[Descricao do Contrato]
                  Case Campo="TG_NPROG":
                       VSDGNPROG=[Numero_Programacao]
                       VSDGNOMNPROG=[Destino_Producao]+"/"+[Nome Fantasia EmitDest]
                  Case Campo="TG_NPROD":
                       VSDGNPROD   =[Numero_Producao]
                       VSDGNOMNPROD=format("D13",[Data_Producao])+" - "+[Numero_Programacao]+" - "+[Nome Fantasia EmitDest]
                  Case Campo="TG_CARTAO":
                       VSDGCARTAO=[Nome do Cartao]
                  Case Campo="TG_COMPRADOR":
                       VSDGCOMPRADOR    =[Codigo do Comprador]
                       VSDGNOMCOMPRADOR =[Nome do Comprador]
                  Case Campo="TG_NFUSAO":
                       VSDGNFUSAO       =[Numero_FUSAO]
                  Case Campo="TG_NREMPREG":
                       VSDGNREMPREG     =[Numero_Registro]
                       VSDGNOMNREMPREG  =[Nome_Empregado]
                  Case Campo="TG_NOMECARTAO":
                       VSDGNOMECARTAO   =[Nome do Cartao]
                  Case Campo="TG_CORTE":
                       VSDGCORTE   =[Numero_Corte]
                       VSDGNOMCORTE=[Nome Fantasia Empresa]+" - "+format("D13",[Data_Programacao])
                  Case Campo="TG_NPRODCORTE" :
                       VSDGNPRODCORTE   =[Numero_Producao_Corte]
                       VSDGNOMNPRODCORTE=format("D13",[Data_Producao])+" - "+[Numero_Programacao_Corte]+" - "+[Destino_Producao]
                  Case Campo="TG_AGEND":
                       VSDGAGEND      =[Ordem_Agendamento]
                       VSDGNOMAGEND   =[Titulo_Agendamento]    
                  Case Campo="TG_REGRA":
                       VSDGREGRA=[Codigo_Regra]      
                  Case Campo="TG_PROGREP":
                       VSDGPROGREP   =[Numero da Programacao]
                       VSDGNOMPROGREP=[Nome Fantasia Represent]+"-"+format("D13",[Data Inicial])
                  Case Campo="TG_GPESSOA" :
                       VSDGGPESSOA   =[CodigoGrupoPessoa   ]
                       VSDGNOMGPESSOA=[DescricaoGrupoPessoa]    
                  Case Campo="TG_LOCAL":
                       VSDGLOCAL   =[Codigo_Localizacao]
                       VSDGNOMLOCAL=[Localizacao       ]

                  Case Campo="TG_TPOPEROC":
                       VSDGTPOPEROC   =[Tipo da Operacao OC     ]
                       VSDGNOMTPOPEROC=[Descricao da Operacao OC]

                EndSwitch
        EndIf
                                          
        switch
          case SHOWDIALOGLOOKUP: 
          
          otherwise            : 
          
            Window Select JANELA_DIALOG
            WinArray5["FLOATING"]=True
            Window SetAttributes JANELA_DIALOG From WinArray5
    
            ClearImage

            Echo Normal
            Echo Off

        endswitch
EndIf

If CampoAnt="TG_TXPESQ"
   Then Campo=CampoAnt   
EndIf

RefreshDialog
Return executarF1 
EndProc       ; (Dialog_F1) 

;*******************************************************************************
;* Rotina Momento da Criacao do Showdialog                                     *
;*******************************************************************************
Proc AoCriarShowDialog()
Private JANELA_CENTRO, WinArray7, Linha, Coluna
;;*** Centraliza ShowDialog ***
Dynarray WinArray7[]
Window Handle Dialog To JANELA_CENTRO
Window GetAttributes JANELA_CENTRO To WinArray7

Linha =Int((24-WinArray7["HEIGHT"])/2)
;If Linha-((22-WinArray7["HEIGHT"])/2)>0
;   Then Linha=Linha+1
;EndIf
Coluna=Int((80-WinArray7["WIDTH"] )/2)

WinArray7["ORIGINROW"]=Linha
WinArray7["ORIGINCOL"]=Coluna
WinArray7["CANCLOSE"] =True
Window SetAttributes JANELA_CENTRO From WinArray7

KeyEnable -24

Release Vars JANELA_CENTRO, WinArray7, Linha, Coluna
EndProc

;*******************************************************************************
;* Rotina para montar Prompt/Message ShowDialog                                *
;*******************************************************************************
Proc Monta_Prompt(msg,key)
Private msg,key, WINARRAY7, JANELA_CENTRO, Linha, Coluna, NEWTECLA, f2ok

MSG_CAMPO=msg

TECLA=key

SelectControl Campo

If Disparo="OPEN"
   Then If Campo="TG_EMPRESA" or Campo="TG_EMPRESATE" or Campo="TG_EMPRESAS"
           Then If Not IsAssigned(SYS_EMPRESA_DEFAULT)
                   Then SYS_EMPRESA_DEFAULT=""
                EndIf
                If Not IsAssigned(SYS_NOMEMP_DEFAULT)
                   Then SYS_NOMEMP_DEFAULT=""
                EndIf

                If (IsAssigned(VSDGEMPRESA) And VSDGEMPRESA="") And
                   (IsAssigned(VSDGNOMEMP)  And VSDGNOMEMP ="")
                   Then VSDGEMPRESA=SYS_EMPRESA_DEFAULT
                        VSDGNOMEMP =SYS_NOMEMP_DEFAULT
                EndIf
        EndIf
EndIf

If Disparo="CLOSE"
   Then MSG_CAMPO     ="//"
        TECLA         ="//"
        LimpaRodape(0)
EndIf

If MSG_CAMPO="" and MSG_CAMPO<>"//"
   Then Switch
          Case Campo="YES"        And IsAssigned(SDFILTRO_ATIVO) And SDFILTRO_ATIVO: MSG_CAMPO="[Enter]=Aplicar filtro/Executar !"
          Case Campo="NO"         And IsAssigned(SDFILTRO_ATIVO) And SDFILTRO_ATIVO: MSG_CAMPO="[Enter]=Cancelar/Voltar !"
          Case Campo="TG_EMPRESA" And IsAssigned(SDFILTRO_ATIVO) And SDFILTRO_ATIVO: MSG_CAMPO="Em Branco=Todas"
                         
          Case Campo="YES"          : MSG_CAMPO="[Enter]=Confirmar Dados/Executar !"
          Case Campo="NO"           : MSG_CAMPO="[Enter]=Cancelar/Voltar Menu !"
          

          Case Campo="TG_EMPRESA"   : MSG_CAMPO="Em Branco=Todas"   ; nÆo totaliza !
          Case Campo="TG_EMPRESATE" : MSG_CAMPO="Em Branco=Todas, 0000=TOTALIZAR"
          Case Campo="TG_EMPRESA2"  : MSG_CAMPO="Em Branco=Todas"
          Case Campo="TG_EMPRESAS"  : MSG_CAMPO="Informe uma Empresa, 0000=AGRUPAR EMPRESAS"

          
          Case Campo="TG_REPRESEN"  Or
               Campo="TG_ETAPAP"    Or
               Campo="TG_TPCONTRATO"Or
               Campo="TG_GRPVENC"   Or               
               Campo="TG_CLIENTE"   Or
               Campo="TG_CHAPA"     Or
               Campo="TG_ATEND"     Or
               Campo="TG_TPDOCTO"   Or
               Campo="TG_TPDOCTO2"  Or
               Campo="TG_TPPAGTO"   Or
               Campo="TG_ITEM"      Or
               Campo="TG_ITEM1"     Or
               Campo="TG_ITEM2"     Or
               Campo="TG_TPTRIBUT"  Or
               Campo="TG_GRP"       Or
               Campo="TG_TPLANC"    Or
               Campo="TG_TPLANC2"   Or
               Campo="TG_ESTADO"    Or
               Campo="TG_REQUISIT"  Or
               Campo="TG_PEDIDO"    Or
               Campo="TG_OF"        Or
               Campo="TG_EXPEDICAO" Or
               Campo="TG_EXPEDICAOOF" Or
;               Campo="TG_GRUPO"     Or
;               Campo="TG_SUBGRUPO"  Or
;               Campo="TG_SERVICO"   Or
;               Campo="TG_EMPREGADO" Or
;               Campo="TG_FUNCAO"    Or
;               Campo="TG_STATUSOS"  Or
;               Campo="TG_OS"        Or
;               Campo="TG_DEFEITO"   Or
               Campo="TG_COBRADOR"  Or
               Campo="TG_NCARREG"   Or
               Campo="TG_NCONTROLE" Or
               Campo="TG_NREMPREG"  Or
               Campo="TG_NOMECARTAO"Or
               Campo="TG_AGEND"     Or
               Campo="TG_COMPRADOR" Or
               Campo="TG_NCM"       Or
               Campo="TG_DEPART"    Or
               Campo="TG_NBL"       Or
               Campo="TG_NCHT"      Or
               Campo="TG_NLACPG"    Or
               Campo="TG_NLACRC"    Or
               Campo="TG_NLCTAPAG"  Or
               Campo="TG_FRETE_PC"  Or
               Campo="TG_REGRA"     Or
               Campo="TG_MOTSITPED" :
               MSG_CAMPO="Em Branco=Todos"

          Case Campo="TG_DESTINAT"      Or
               Campo="TG_AREA"          Or
               Campo="TG_ATIVIDADE"     Or
               Campo="TG_CONTA"         Or
               Campo="TG_CONTA2"        Or
               Campo="TG_TPCART"        Or
               Campo="TG_DESTIN"        Or
;               Campo="TG_FAMILIA"       Or
;               Campo="TG_ITEMTPGRADE"   Or
;               Campo="TG_ITEMGRADE"     Or
;               Campo="TG_SEGURAD"       Or
               Campo="TG_TABELA"        Or
               Campo="TG_MARCA"         Or
               Campo="TG_FAMI"          Or
               Campo="TG_UNI"           Or
               Campo="TG_COR_TECIDO"    Or
               Campo="TG_TRANSP"        Or
               Campo="TG_VEICULO"       Or
               Campo="TG_ETAPA"         Or
               Campo="TG_TPOPER"        Or
               Campo="TG_TPOPER2"       Or
               Campo="TG_ROTA"          Or
               Campo="TG_CARTAO"        Or
               Campo="TG_CONDPGTO"      Or
               Campo="TG_PLCONTAS"      Or
               Campo="TG_PLCONTAS2"     Or
               Campo="TG_NE"            Or
               Campo="TG_NEI"           Or
               Campo="TG_OC"            Or
               Campo="TG_NOTA"          Or
               Campo="TG_REFERENCIA"    Or
               Campo="TG_GERENCIA"      Or
               Campo="TG_REQUISICAO"    Or
               Campo="TG_CORTE"         Or
               Campo="TG_PROGREP"       Or
               Campo="TG_NPRODCORTE"    Or
               Campo="TG_NPROD"         Or
               Campo="TG_NPROG"         Or
               Campo="TG_LPRESENTE"     Or
               Campo="TG_TPOPEROC"      : 
               MSG_CAMPO="Em Branco=Todas"

          Case Campo="TG_NOMSITUACAOOC":             
               MSG_CAMPO="Em Branco=Todas"
          Case Campo="TG_CIDADE":
               MSG_CAMPO="Use \"..\" ou Em Branco=Todas"
;          Case Campo="TG_PROGFUND":
;               MSG_CAMPO="Use \"..\" ou Em Branco=Todas"        
          Case Campo="TG_LOCAL":
               MSG_CAMPO="Use \"..\" ou Em Branco=Todas"

          Case Campo="TG_CPFCGCTIT":
               MSG_CAMPO="Em Branco=Todos"
          Case Campo="TG_NOMETIT":
               MSG_CAMPO="Use \"..\" ou Em Branco=Todos"
          Case Campo="TG_NUMCHEQ":
               MSG_CAMPO="Use \"..\" ou Em Branco=Todos"

          Case Campo="TG_NOMCLIE":
               MSG_CAMPO="Use \"..\" ou Em Branco=Todos"
          
          Case Campo="TG_CCUSTO":
               MSG_CAMPO="Use ???. =Grupo ou Em Branco=Todas"
          
          Case Campo="TG_CCUSTO2":        
               MSG_CAMPO="Use ???. =Grupo ou Em Branco=Todas"
          
          Case Campo="TG_TPCUSTO":
               MSG_CAMPO="Op‡”es: 1=Custo M‚dio  2=éltimo Custo"
          
          Case Campo="TG_OP_LISTAPRESENTE" :
               MSG_CAMPO="Op‡”es: (C)Casamento  (P)Ch  de Panela  (N)Casa Nova"
               
          Case Campo="TG_OPDTES":
               MSG_CAMPO="Op‡”es: 1=EMISS¶O  2=SAÖDA"
               
          Case Campo="TG_OPDTESI":
               MSG_CAMPO="Op‡”es: 1=EMISS¶O  2=SAÖDA  3=INCLUSÇO"
               
          Case Campo="TG_OPDTEMISENTR":
               MSG_CAMPO="Op‡”es: 1=ENTREGA  2=EMISS¶O"

          Case Campo="TG_OPDTEMISENTRADA":
               MSG_CAMPO="Op‡”es: 1=ENTRADA  2=EMISS¶O"

          Case Campo="TG_OPDTPEEI":
               MSG_CAMPO="Op‡”es: 1=ENTREGA  2=EMISS¶O  3=INCLUS¶O"
          Case Campo="TG_OPDTPEEIR":
               MSG_CAMPO="Op‡”es: 1=ENTREGA  2=EMISS¶O  3=INCLUS¶O  4=RELA€¶O/PEDIDOS"
          Case Campo="TG_OPDTPEEIRF":
               MSG_CAMPO="Op‡”es: 1=ENTREGA  2=EMISS¶O  3=INCLUS¶O  4=RELA€¶O/PEDIDOS  5=FATURADO"
          
          Case Campo="TG_TIPOBAIXA":
               MSG_CAMPO="C=CANCELADO  D=DEVOLU€ÇO  N=NORMAL  Em Branco=Todas"    
               
          Case Campo="TG_OPDTCHVLI":
               MSG_CAMPO="Op‡”es: 1=VENCIMENTO  2=LIQUIDA€¶O  3=INCLUS¶O  4=ENTRADA"
               
          Case Campo="TG_OPDTCHVL" :
               MSG_CAMPO="Op‡”es: 1=VENCIMENTO  2=LIQUIDA€¶O"
               
          Case Campo="TG_OPDTCHVEI":
               MSG_CAMPO="Op‡”es: 1=VENCIMENTO  3=INCLUS¶O  4=ENTRADA"
               
          Case Campo="TG_OPDTEMISCOMP":
               MSG_CAMPO="Op‡”es: 1=LAN€AMENTO/EMISSÇO  2=COMPETÒNCIA"

          Case Campo="TG_OPDTEMISCOMPDP":
               MSG_CAMPO="Op‡”es: 1=LAN€AMENTO/EMISSÇO  2=COMPETÒNCIA  3=DESCONTADO  4=PRE-DATADO"

          Case Campo="TG_OPDTEMISVENC":
               MSG_CAMPO="Op‡”es: 1=VENCIMENTO  2=EMISSÇO"

          Case Campo="TG_OPDTRP":
               MSG_CAMPO="Op‡”es: 1=NA DATA  2=NO PERÖODO"

          Case Campo="TG_OPDTPPE"     :
               MSG_CAMPO="Op‡”es: 1=PROGRAMA€¶O  2=PREVIS¶O  3=ENTREGA"
               
          Case Campo="TG_OPDTCP"      :
               MSG_CAMPO="Op‡”es: 1=VENCIMENTO 2=EMISS¶O 3=A PAGAR 4=ENTRADA 5=COMPETÒNCIA 6=INCLUS¶O"
          
          Case Campo="TG_OPDTCRB"      :
               MSG_CAMPO="Op‡”es: 1=PAGAMENTO 2=VENCIMENTO 3=EMISSÇO 4=INCLUSÇO PAGTO"
          
          Case Campo="TG_OPRELANALSINT":
               MSG_CAMPO="Op‡”es: 1=Anal¡tico  2=Sint‚tico"
          Case Campo="TG_OPRELCODALF":
               MSG_CAMPO="Op‡”es: 1=C¢digo  2=Alfab‚tica"
          Case Campo="TG_OPRELCODALFRANK":
               MSG_CAMPO="Op‡”es: 1=C¢digo  2=Alfab‚tica  3=Ranking"
          Case Campo="TG_OPRELCODALFRANK2":
               MSG_CAMPO="Op‡”es: 1=C¢digo  2=Alfab‚tica  3=Ranking Quantidade  4=Ranking Valor"
               
          Case Campo="TG_OPATACVAREJ":
               MSG_CAMPO="Op‡”es: 1=ATACADO  2=VAREJO"
          Case Campo="TG_OPRELCODALFDIG":
               MSG_CAMPO="Op‡”es: 1=C¢digo  2=Alfab‚tica  3=Digitada"
          Case Campo="TG_OPRELLISTCAD":
               MSG_CAMPO="Op‡”es: 1-Listagem de Clientes   2-Cadastro de Clientes"

          Case Campo="TG_SITUACAOOE":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"
          
          Case Campo="TG_SITUACAOPEDIDO":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"
               
          Case Campo="TG_OPERACAOPEDIDO":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"
               
          Case Campo="TG_SITUACAOFAC":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"
               
          Case Campo="TG_SITUACAOPEDIDOAS":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"
          
          Case Campo="TG_ZERADO" :
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"
               
          Case Campo="TG_SITUACAOOC":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"               
               
          Case Campo="TG_SITUACAONOTA":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"

          Case Campo="TG_SITUACAOCHEQUE":
               MSG_CAMPO="Em Branco=Todas, [F1]Consultar tabela"

          Case Campo="TG_DTEMI":
               MSG_CAMPO="Em Branco=Hoje"
          Case Campo="TG_DTENT":
               MSG_CAMPO="Em Branco=Todos"
          Case Campo="TG_DTINI" Or Campo="TG_DTINI2" :   MSG_CAMPO="Em Branco=Data desde do Inicio"
          Case Campo="TG_DTFIM" Or Campo="TG_DTFIM2" :   MSG_CAMPO="Informe a Data Final"

          Case Campo="TG_DTREF":
               MSG_CAMPO="Informe a Data Referente"
          Case Campo="TG_HRINI":
               MSG_CAMPO="Informe a Hora Inicial"
          Case Campo="TG_HRFIM":
               MSG_CAMPO="Informe a Hora Final"
          Case Campo="TG_DIRETORIOS":
               MSG_CAMPO="Selecione o Ano/Mes desejado !"
          Case Campo="TG_TAXAD":
               MSG_CAMPO="Indique a Taxa de Devolu‡„o"

          Case Campo="TG_TIPOEST":
               MSG_CAMPO="Branco=Todos 1=Almoxarifado 2=Vendas"
               
          Case Campo="TG_MESANO":
               MSG_CAMPO="Mˆs/Ano Referˆncia (MM.AAAA), Em Branco=Atual"
          Case Campo="TG_FAMIINI"  Or
               Campo="TG_MARCAINI" Or
               Campo="TG_GRPINI"   Or
               Campo="TG_CORINI":
               MSG_CAMPO="Em Branco=001"
          Case Campo="TG_FAMIFIM"  Or
               Campo="TG_MARCAFIM" Or
               Campo="TG_GRPFIM"   Or
               Campo="TG_CORFIM":
               MSG_CAMPO="Em Branco=999"
          Case Campo="TG_DESTINATINI":
               MSG_CAMPO="Em Branco=0001"
          Case Campo="TG_DESTINATFIM":
               MSG_CAMPO="Em Branco=Z999"
          Case Campo="TG_CODIGOI":
               MSG_CAMPO="Em Branco=0000000001"
          Case Campo="TG_CODIGOF":
               MSG_CAMPO="Em Branco=9999999999"
          Case Campo="TG_MOV":
               MSG_CAMPO="Tipo de movimenta‡äes: A=Mˆs em Aberto, F=Mˆs Fechado"
          Case Campo="TG_OPANALISE":
               MSG_CAMPO="Op‡äes: 1=Monet ria  2=Quantidade"
          Case Campo="TG_STATUS":
               MSG_CAMPO="Op‡”es: 1=Ativos  2=Inativos  3=Ambos"
          Case Campo="TG_CSITENS":
               MSG_CAMPO="Impress„o das Notas: C=Com Itens, S=Sem Itens"
          Case Campo="TG_OPRELUSER":
               MSG_CAMPO="Ordem: 1=Data Inclus„o  2=N§ Controle"
          Case Campo="TG_TXPIZZA":
               MSG_CAMPO="Informe a % para an lise dos dados"

          Case Campo="TG_COMVALOR":
               MSG_CAMPO="Op‡”es: 1=COM VALOR  2=SEM VALOR"

          Case Campo="TG_CODMODELO":
               MSG_CAMPO="Informe o c¢digo do modelo de relat¢rio"
               
          Case Campo="TG_ESPDOCTO":
               MSG_CAMPO="Informe a Esp‚cie do documento.. ou Em Branco=TODOS"

          Case Campo="TG_OPANALISE3" or
               Campo="TG_OPANALISE4" or
               Campo="TG_OPANALISE5" or
               Campo="TG_OPANALISE6" or
               Campo="TG_OPANALISE11":
               MSG_CAMPO="[F1]Consultar tabela"

          Case Campo= "TG_CURVAABCA": MSG_CAMPO = "informe % referente ao Total para a Classe [A] "
          Case Campo= "TG_CURVAABCB": MSG_CAMPO = "informe % referente ao Total para a Classe [B] "
          Case Campo= "TG_CURVAABCC": MSG_CAMPO = "informe % referente ao Total para a Classe [C] "

          Case Campo="TG_DTVENCTO"  : MSG_CAMPO="Informe a Data de Vencimento"
          Case Campo="TG_DTCOMPET"  : MSG_CAMPO="Informe a Data de Competˆncia"

          Case Campo="TG_PLCONTAS3":
               MSG_CAMPO="Em Branco=NÆo se aplica"

          Case Campo="TG_COMPTECIDO":
               MSG_CAMPO="Use \"..\" ou Em Branco=Todas"

          Case Campo="TG_OPSITCLIE":
               MSG_CAMPO="1=TODAS  2=Sà \"PESSIMO\"  3=SEM \"PESSIMO\""

          Case Campo="TG_TPMOVDESTIN":
               MSG_CAMPO="Tipo Movimento da Destina‡Æo: Em Branco=Todas  E=Entradas  S=Saidas"   

          Case Campo="TG_COMPLEMENTO":
               MSG_CAMPO="Descri‡Æo Complementar do Item, "   
               MensagemCheckBox()

          Case Campo="TG_OPOF":
               MSG_CAMPO="[OF] Ordem de Faturamento, "   
               MensagemCheckBox()

          Case Campo="TG_OPCCUSTO":
             MSG_CAMPO="Lan‡amentos com centro de custo em branco,"
             MensagemCheckBox()

          Case Campo="TG_OPPLCONTAS":
             MSG_CAMPO="Lan‡amentos com rateios plano de contas,"
             MensagemCheckBox()

        EndSwitch
EndIf

;If SubStr(TECLA,1,1)="|" Or TECLA=""
;   Then If SubStr(TECLA,1,1)="|"
;            Then TECLA=SubStr(key,2,Len(TECLA))
;        EndIf    
;If TECLA=""
;   Then
If MSG_CAMPO<>"//"
   then
        Switch
          Case Campo="TG_DESTINAT"     Or
               Campo="TG_DESTINATINI"  Or
               Campo="TG_DESTINATFIM"  Or
               Campo="TG_REPRESEN"     Or
               Campo="TG_ETAPAP"       Or
               Campo="TG_TPCONTRATO"   Or
               Campo="TG_GRPVENC"      Or               
               Campo="TG_ROTA"         Or
               Campo="TG_CHAPA"        Or
               Campo="TG_ATEND"        Or
               Campo="TG_TPDOCTO"      Or
               Campo="TG_TPDOCTO2"     Or
               Campo="TG_CIDADE"       Or
               Campo="TG_TPPAGTO"      Or
               Campo="TG_CONDPGTO"     Or
               Campo="TG_ITEM"         Or
               Campo="TG_ITEM1"        Or
               Campo="TG_ITEM2"        Or
               Campo="TG_CODIGOI"      Or
               Campo="TG_CODIGOF"      Or
               Campo="TG_TPTRIBUT"     Or
               Campo="TG_TIPOEST"      Or
               Campo="TG_TPLANC"       Or
               Campo="TG_TPLANC2"      Or
               Campo="TG_TPOPER"       Or
               Campo="TG_TPOPER2"      Or
               Campo="TG_DESTIN"       Or
               Campo="TG_CCUSTO"       Or
               Campo="TG_CCUSTO2"      Or
               Campo="TG_UNI"          Or
               Campo="TG_TABELA"       Or
               Campo="TG_NCARREG"      Or
               Campo="TG_NCONTROLE"    Or
               Campo="TG_REQUISIT"     Or
;               Campo="TG_GRUPO"        Or
;               Campo="TG_PROGFUND"     Or
;               Campo="TG_SUBGRUPO"     Or
;               Campo="TG_DEFEITO"      Or
;               Campo="TG_SEGURAD"      Or
;               Campo="TG_SERVICO"      Or
;               Campo="TG_EMPREGADO"    Or
;               Campo="TG_FUNCAO"       Or
;               Campo="TG_STATUSOS"     Or
;               Campo="TG_OS"           Or
               Campo="TG_CONTRATO"     Or
               Campo="TG_SERVECT"      Or
               Campo="TG_CORTE"        Or
               Campo="TG_NPROG"        Or
               Campo="TG_NPROD"        Or
               Campo="TG_NPRODCORTE"   Or
               Campo="TG_CARTAO"       Or
               Campo="TG_REQUISICAO"   Or
               Campo="TG_PEDIDO"       Or
               Campo="TG_OF"           Or
               Campo="TG_NE"           Or
               Campo="TG_NEI"          Or
               Campo="TG_OC"           Or
               Campo="TG_NOTA"         Or
               Campo="TG_NCHT"         Or
               Campo="TG_NLACPG"       Or
               Campo="TG_NLACRC"       Or
               Campo="TG_NLCTAPAG"     Or
               Campo="TG_EXPEDICAO"    Or
               Campo="TG_EXPEDICAOOF"  Or                               
               Campo="TG_NFUSAO"       Or
               Campo="TG_NREMPREG"     Or
               Campo="TG_NOMECARTAO"   Or
               Campo="TG_AGEND"        Or
               Campo="TG_COMPRADOR"    Or
               Campo="TG_REGRA"        Or 
               Campo="TG_FRETE_PC"     Or 
               Campo="TG_GERENCIA"     Or 
               Campo="TG_LOCAL"        Or
               Campo="TG_DEPART"       Or
               Campo="TG_LPRESENTE"    Or
               Campo="TG_TPOPEROC"     Or
               Campo="TG_MOTSITPED"     :
               MSG_CAMPO=MSG_CAMPO+", [F1]Consultar tabela"
               
          Case Campo="TG_EMPRESA"       Or
               Campo="TG_EMPRESA2"      Or
               Campo="TG_EMPRESATE"     Or
               Campo="TG_EMPRESAS"      Or
               Campo="TG_CONTA"         Or
               Campo="TG_CONTA2"        Or
               Campo="TG_AREA"          Or
               Campo="TG_COBRADOR"      Or
               Campo="TG_ATIVIDADE"     Or
               Campo="TG_FAMI"          Or
               Campo="TG_FAMIINI"       Or
               Campo="TG_FAMIFIM"       Or
               Campo="TG_MARCA"         Or
               Campo="TG_MARCAINI"      Or
               Campo="TG_MARCAFIM"      Or
               Campo="TG_GRPINI"        Or
               Campo="TG_GRPFIM"        Or
               Campo="TG_CORINI"        Or
               Campo="TG_CORFIM"        Or
               Campo="TG_GRP"           Or
               Campo="TG_ESTADO"        Or
;               Campo="TG_FAMILIA"       Or
;               Campo="TG_ITEMTPGRADE"   Or
;               Campo="TG_ITEMGRADE"     Or
               Campo="TG_COR_TECIDO"    Or
               Campo="TG_TPCART"        Or
               Campo="TG_TRANSP"        Or
               Campo="TG_VEICULO"       Or
               Campo="TG_ETAPA"         Or
               Campo="TG_PLCONTAS"      Or
               Campo="TG_PLCONTAS2"     Or
               Campo="TG_PLCONTAS3"     Or
               Campo="TG_AGEND"         Or
               Campo="TG_PROGREP"       Or
               Campo="TG_GPESSOA"       Or
               Campo="TG_NCM"           Or
               Campo="TG_NBL"      :
              MSG_CAMPO=MSG_CAMPO+", [F1]Consultar tabela"

          Case Campo="TG_NOMDATAOC"     Or
               Campo="TG_NOMSITUACAOOC" Or
               Campo="TG_NOMDATAMF"     :
               TECLA=TECLA+"F1=Consulta  "
          
          Case Campo="TG_DIRETORIOS":
               TECLA=TECLA+Chr(27)+""+Chr(26)+"=Selecionar  "
               
          Case Campo="TG_DTINI"  Or
               Campo="TG_DTFIM"  Or
               Campo="TG_DTINI2" Or
               Campo="TG_DTFIM2" Or
               Campo="TG_DTREF"  Or
               Campo="TG_MESANO" :
              ;TECLA=TECLA+"F1=Datas  "
               MSG_CAMPO=MSG_CAMPO+", [F1]Consultar Datas"
               
          Case Campo="TG_OPPIZZA":
               TECLA=TECLA+"Barra de Espa‡o=Marca/Desmarca  "
               
          Case SubStr(Campo,1,6)="TG_SN_":
               MSG_CAMPO=MSG_CAMPO+" SIM/NÇO"

          Case Campo="TG_CODMODELO":
               MSG_CAMPO=MSG_CAMPO+", [F1]Consultar modelos"
               
        EndSwitch
EndIf

if IsAssigned(ListaRegra_TGAtivado) and search("["+Campo+"]",ListaRegra_TGAtivado)>0
   then
        MSG_CAMPO=MSG_CAMPO+", [F2]SelecionaOp‡äes"
        f2ok=false                                                                    
        Switch
          Case Campo="TG_TPPAGTO"   and IsAssigned(ListaRegra_VSDGTPPAGTO_Ativo)  and ListaRegra_VSDGTPPAGTO_Ativo : f2ok=true
          Case Campo="TG_TPCART"    and IsAssigned(ListaRegra_VSDGTPCART_Ativo )  and ListaRegra_VSDGTPCART_Ativo  : f2ok=true
          Case Campo="TG_TPLANC"    and IsAssigned(ListaRegra_VSDGTPLANC_Ativo )  and ListaRegra_VSDGTPLANC_Ativo  : f2ok=true
          Case Campo="TG_REPRESEN"  and IsAssigned(ListaRegra_VSDGREPRESEN_Ativo) and ListaRegra_VSDGREPRESEN_Ativo: f2ok=true
          Case Campo="TG_DESTIN"    and IsAssigned(ListaRegra_VSDGDESTIN_Ativo)   and ListaRegra_VSDGDESTIN_Ativo  : f2ok=true
          Case Campo="TG_MARCA"     and IsAssigned(ListaRegra_VSDGMARCA_Ativo)    and ListaRegra_VSDGMARCA_Ativo   : f2ok=true
          Case Campo="TG_EMPRESATE" and IsAssigned(ListaRegra_VSDGEMPRESA_Ativo)  and ListaRegra_VSDGEMPRESA_Ativo : f2ok=true
          Case Campo="TG_CONTA"     and IsAssigned(ListaRegra_VSDGCONTA_Ativo)    and ListaRegra_VSDGCONTA_Ativo   : f2ok=true
          Case Campo="TG_TIPOEST"   and IsAssigned(ListaRegra_VSDGTIPOEST_Ativo)  and ListaRegra_VSDGTIPOEST_Ativo : f2ok=true
        endSwitch
        if f2ok then TECLA=TECLA+"[?]Sele‡Æo Ativa" endif
endif   

;;If Campo="TG_FAMILIA"       Or
;;   Campo="TG_GRUPO"         Or
;;   Campo="TG_SUBGRUPO"      
;;   Campo="TG_ITEMGRADE"     Or
;;   Campo="TG_ITEMTPGRADE"   Or
;;   Then Monta_Array_OpcoesTG()
;;EndIf

ExibeRodapeSD(MSG_CAMPO)
If SubStr(TECLA,1,2)="//"
   Then ExibeRodape(2,SubStr(TECLA,3,Len(TECLA)))
   Else ExibeRodape(2,"Esc=Retornar  Enter=Avan‡ar  "+TECLA)
EndIf

RefreshDialog
EndProc            ; (Monta_Prompt)

;*******************************************************************************
;* Consulta P/ ShowDialog
;*******************************************************************************
Proc Consulta_ShowDialog()
Private Campo_1, Valor, WinArray
Dynarray WinArray[]

Home
Right
Campo_1=Field()
SetHighLight Current Record 7 Field 78

Window GetAttributes GetWindow() To WinArray
NTabela_TableLookup=WinArray["Title"]

pos_ini=1
While True
  If SearchFrom("\\",NTabela_TableLookup,pos_ini+1)>0
     Then pos_ini=SearchFrom("\\",NTabela_TableLookup,pos_ini+1)
     Else If pos_ini=1
             Then pos_ini=0
          EndIf
          QuitLoop
  EndIf
EndWhile
If IsFile("\\Sistemas\\Imagens\\"+SubStr(NTabela_TableLookup,pos_ini+1,8)+".sc")
   Then Play "\\Sistemas\\Imagens\\"+SubStr(NTabela_TableLookup,pos_ini+1,8)
   Else CtrlEnd
        Moveto Field Campo_1
EndIf

Dynarray ImageColorSettings[]
ImageColorSettings[1]=31
ImageColorSettings[3]=31
ImageColorSettings[4]=31
Window SetColors GetWindow() From ImageColorSettings

Valor=False
prompt " Esc=Retornar F2/Enter=Selecionar Ctrl+Z=Pesquisar Alt+Z=Pr¢ximo Ctrl+R=Rolar"

Wait Table
  Proc "WaitProc"
  Trigger "ARRIVEFIELD"
  Key "ESC","ENTER","ZOOM","ZOOMNEXT","F2"
  Mouse "ALL"
EndWait

Return Valor
EndProc

proc waitproc(Triggertype, EventRecord, CycleNumber)
private vr
vr=0
Switch
  Case TriggerType="ARRIVEFIELD":
       If Field()="#"
          Then CtrlEnd
               Moveto Field Campo_1
       EndIf
  Case TriggerType="EVENT" And EventRecord["Type"]="KEY":
       Switch
         Case EventRecord["KEYCODE"]=ASC("ESC"):
              vr=2
              Valor=False
         Case EventRecord["KEYCODE"]=ASC("ZOOM"):
              PESQUISA()
              vr=1
         Case EventRecord["KEYCODE"]=ASC("ZOOMNEXT"):
              PESQUISACON()
              vr=1
         Case EventRecord["KEYCODE"]=ASC("ENTER") Or
              EventRecord["KEYCODE"]=ASC("F2"):
              vr=2
              Valor=True
       EndSwitch
;;Case TriggerType="EVENT" And EventRecord["Type"]="MOUSE":
EndSwitch
Return vr
EndProc         ; (Consulta_ShowDialog)

;*******************************************************************************
;* Rotina Para Centralizar um Campo MEMO                                       *
;*******************************************************************************
Proc Closed CentralizaMemoIP(LINHAI,COLUNAI,ALTURA,LARGURA,TITULO)
UseVars AutoLib, ErrorProc

Private COLUNAI, LINHAI, ALTURA, LARGURA, TITULO,
        WinArray, ImageColorSettings

Window Move GetWindow() To -100, -100
Dynarray WinArray[]

Window GetAttributes GetWindow() To WinArray
WinArray["CANMAXIMIZE"]=False
WinArray["CANCLOSE"]   =False
WinArray["Title"]      =TITULO
WinArray["HEIGHT"]     =ALTURA
WinArray["WIDTH"]      =LARGURA
WinArray["ORIGINROW"]  =LINHAI
WinArray["ORIGINCOL"]  =COLUNAI
WinArray["HASFRAME" ] = True
WinArray["HASSHADOW"]  =True
WinArray["CANRESIZE"]  =False
WinArray["CANMOVE"]    =False
Window SetAttributes GetWindow() From WinArray

Dynarray ImageColorSettings[]
ImageColorSettings[1]=31
ImageColorSettings[3]=31
ImageColorSettings[4]=31
Window SetColors GetWindow() From ImageColorSettings
EndProc        ;  (CentralizaMemoIP)

;*******************************************************************************
;* Janela de Help                                                          *
;*******************************************************************************
;Proc WinHelp(tit,msga)
;Private tit,msga,aj,lj,p1,p2,textos
;aj=1
;lj=1
;p1=1
;p2=0
;If ImageType()="Display"
;   Then Canvas On
;EndIf
;jatual = GetCanvas()
;SetCanvas default
;
;Array textos[25]
;While True
;  p2=SearchFrom("#",msga,p1)
;  If p2=0
;     Then aj=aj-1
;          QuitLoop
;  EndIf
;  textos[aj]=SubStr(msga,p1,p2-p1)
;  If Len(textos[aj])>lj
;     Then lj=Len(textos[aj])
;  EndIf
;  p1=p2+1
;  aj=aj+1
;EndWhile
;
;DynArray Attribs[]
;aj=aj+2
;lj=lj+4
;Attribs["ORIGINROW"] = Int((23-aj+1)/2)+1
;Attribs["ORIGINCOL"] = Int((80-lj-1)/2)+1
;Attribs["HEIGHT"   ] = aj
;Attribs["WIDTH"    ] = lj
;Attribs["HASFRAME" ] = False
;Attribs["FLOATING" ] = True
;Attribs["STYLE"    ] = 31
;Window Create Attributes Attribs To JanelarWindow
;Frame Double from 0,0 to aj-1,lj-1
;@ 0,Int((lj-len(tit))/2)-1 ?? " "+tit+" "
;For i from 1 to aj-2
;  @ i,2 ?? Textos[i]
;EndFor
;Sound 100 100
;x=GetChar()
;If ImageType()="Display"
;   Then Canvas Off
;EndIf
;Window Close
;SetCanvas JAtual
;EndProc         ; (WinHelp)

;*******************************************************************************
;* Consulta F1 sem retorno
;*******************************************************************************
Proc Closed ConsultaF1_SemRetorno()
UseVars AutoLib, ErrorProc, PES_CAMPO, SYS_CODIGO_CLIENTE, Registro_F1, Resultado_F1
Private Campo_1,NTabela_TableLookup,pos_ini

KeyPress "F1"
If IsEmpty(Table())
   Then KeyPress "ESC"
        Resultado_F1=False
        Mensagem("Tabela de Consulta sem Registros !")
        Return
EndIf


Dynarray WinArray[]

Janela_F1=GetWindow()
Window GetAttributes Janela_F1 To WinArray

NTabela_TableLookup=WinArray["Title"]

WinArray["CANMAXIMIZE"]=False
WinArray["CANCLOSE"]   =False
WinArray["Title"]      ="CONSULTA/F1"
WinArray["HEIGHT"]     =23
WinArray["WIDTH"]      =80
WinArray["ORIGINROW"]  =1
WinArray["ORIGINCOL"]  =0
WinArray["HASSHADOW"]  =True
WinArray["CANRESIZE"]  =False
WinArray["CANMOVE"]    =False

Window SetAttributes Janela_F1 From WinArray

Dynarray ImageColorSettings[]
ImageColorSettings[1]=31
ImageColorSettings[3]=31
ImageColorSettings[4]=31
Window SetColors Janela_F1 From ImageColorSettings

SetHighLight Current Record 7 Field 78
Campo_1=Field()

pos_ini=1
While True
  If SearchFrom("\\",NTabela_TableLookup,pos_ini+1)>0
     Then pos_ini=SearchFrom("\\",NTabela_TableLookup,pos_ini+1)
     Else If pos_ini=1
             Then pos_ini=0
          EndIf
          QuitLoop
  EndIf
EndWhile
If IsFile("\\Sistemas\\Imagens\\Lookup\\"+SubStr(NTabela_TableLookup,pos_ini+1,8)+".sc")
   Then Play "\\Sistemas\\Imagens\\Lookup\\"+SubStr(NTabela_TableLookup,pos_ini+1,8)
   Else CtrlEnd
        Moveto Field Campo_1
EndIf

While True
  If Field()="#"
     Then CtrlEnd
          Moveto Field Campo_1
  EndIf

  prompt " Esc=Retornar F2/Enter=Selecionar Ctrl+Z=Pesquisar Alt+Z=Pr¢ximo Ctrl+R=Rolar"
  Wait Table
     Until "ESC","ENTER","F2","ZOOM","ZOOMNEXT","DOWN","UP","RIGHT","LEFT",
           "HOME","END","PGDN","PGUP","ROTATE",-31
  Switch
    Case RetVal=-31:
         Loop
    Case RetVal="ZOOM":
         PESQUISA()
    Case RetVal="ZOOMNEXT":
         PESQUISACON()
    Case RetVal="ESC":
         Resultado_F1=False
         KeyPress RetVal
         QuitLoop
    Case RetVal="ENTER" Or RetVal="F2":
         CopyToArray Registro_F1
         Resultado_F1=True
         KeyPress "ESC"
         QuitLoop
    OtherWise:
        KeyPress RetVal
  EndSwitch
EndWhile
EndProc      ; (Consulta_F1SemRetorno)

;*******************************************************************************
;* Rotina p/ Montar Opcoes p/ Grade                                            *
;*******************************************************************************
Proc Monta_Opcoes(OPCAODIVERSAS, ITEMDESEJADO)
Private OPCAODIVERSAS, ITEMDESEJADO, wcg, icg, icgt, tnovo, nomecampo

If OPCAODIVERSAS="Codigo do Documento"
   Then Switch
          Case Table()="Rqcabeca": ITEMDESEJADO = "RQ"
          Case Table()="Notaec"  : ITEMDESEJADO = "NE"   ; esta opcao foi descomentada... Solicita‡Æo 13942
          ;Case Table()="Movcont" : ITEMDESEJADO = "CB"
          ;Case Table()="Notac"    : ITEMDESEJADO = "NS"
          ;Case Table()="Duplic"  : ITEMDESEJADO = "CR"
          ;Case Table()="Titulos" : ITEMDESEJADO = "CP"
        EndSwitch     
EndIf

;----- Para tratamento especifico a uma rotina ---------------------------------
If Table()="Visitacl"
   Then CONT_CID = 0
        DynArray CID[]
        Moveto "VisitaCD" Home
        If RecordStatus("New") 
           Then Mensagem("N„o h  cidades informadas para este vendedor !")
                Moveto "VisitaCL"
                Return False
        EndIf    
        Scan
          CONT_CID = CONT_CID + 1
          CID[CONT_CID] = [Cidade] 
        EndScan          
        Moveto "VisitaCL"
EndIf   

If ITEMDESEJADO <> "F1_Temp"
   Then nomecampo=Field()
EndIf

If IsAssigned(Opcoes)
   Then Release Vars Opcoes
EndIf
DynArray Opcoes[]
        
If ITEMDESEJADO <> "F1_Temp"
   Then Switch                 
          Case OPCAODIVERSAS="Condicao de Pagamento"  :
               Moveto [Condicao de Pagamento]
          Case OPCAODIVERSAS="Forma de Pagamento"   :
               Moveto [Forma de Pagamento]
          Case OPCAODIVERSAS="Seleciona_Cidade"  :
               Moveto [Cidade]
          Case OPCAODIVERSAS="Seleciona_UF"      :
               Moveto [UF]
          Case OPCAODIVERSAS="Seleciona_Cliente" :
               Moveto [Codigo]
               If Len(ITEMDESEJADO)=4
                  Then TEMP_REP = Rtrim(SubStr(ITEMDESEJADO,1,4))
               EndIf
          Case OPCAODIVERSAS="Numero Produ‡„o do Corte" :
               Moveto [Numero_Producao_Corte]  
          Case OPCAODIVERSAS="Referencia" :
               If ITEMDESEJADO <> "F1_Temp"
                  Then Moveto [Referencia]
               Endif       
          Case OPCAODIVERSAS="Requisitante" : 
               Moveto [Codigo do Requisitante]                                                        
          Case OPCAODIVERSAS="Op‡”es de Desinat rio" :
               If Table()="Pfacc" Or Table()="Rfacc"
                  Then Moveto [Destino_Producao]
                  Else Moveto [Destino]
               EndIf           
          Case OPCAODIVERSAS="Cartao"  Or
               OPCAODIVERSAS="P_Cartao" :
               If SubStr(Upper(Table()),1,3)="NOT"
                  Then AUX_EMP = [NotaC->Codigo da Empresa]        
                  Else AUX_EMP = [FaturaC->Codigo da Empresa]
               EndIf
               Moveto [Nome do Cartao]       
          Case OPCAODIVERSAS="Tipo de Opera‡„o":     
               Switch
                 Case Substr(Table(),1,5)="Notae"   : ITEMDESEJADO = "NOTAE"
                 Case Substr(Table(),1,3)="Tit"     : ITEMDESEJADO = "TITULO"
                 Case Substr(Table(),1,5)="Progf"   : ITEMDESEJADO = "PROGF" 
                 Case Table()="Movcont"             : ITEMDESEJADO = "MOVCONT"
               EndSwitch                           
               VSDGTPOPER =[Tipo de Operacao ]        
               Moveto [Tipo de Operacao ]     
          Case OPCAODIVERSAS="Tipo do Lan‡amento" Or OPCAODIVERSAS="Tipo de Lan‡amento" : 
               Switch
                 Case Substr(Table(),1,5)="Notae"  : ITEMDESEJADO = "NOTAE"
                 Case Substr(Table(),1,3)="Tit"    : ITEMDESEJADO = "TITULO"
                 Case Substr(Table(),1,5)="Progf"  : ITEMDESEJADO = "PROGF" 
                 Case Table()="Movcont"            : ITEMDESEJADO = "MOVCONT"
               EndSwitch
               If ITEMDESEJADO = "TITULO"
                  Then VSDGTPLANC =[Tipo de Lancamento]
                       Moveto [Tipo de Lancamento]
                  Else VSDGTPLANC =[Tipo do Lancamento]
                       Moveto [Tipo do Lancamento]
               EndIf   
               
          Case OPCAODIVERSAS="Codigo da Conta":
               If Table()="Movcont"
                  Then ITEMDESEJADO = "MOVCONT"
               EndIf  
               VSDGTPLANC =[Codigo da Conta]    
               Moveto [Codigo da Conta]
               
               If ITEMDESEJADO = "MOVCONT"
                  Then If Field()<>"Codigo da Conta"
                          Then Moveto [Codigo da Conta Trf]
                       EndIf
               EndIf          
          Case OPCAODIVERSAS="Codigo da Cor_Tecido":
               Moveto [Lookup_Itens_Cor]
          Case OPCAODIVERSAS="Codigo do Documento":
               VSDGTPDOCTO=[Codigo do Documento]
               Moveto [Codigo do Documento]
          Case OPCAODIVERSAS="Pedido_Motivo_Sequencia" :
               VSDGSEQMOTSITPED=[Pedido_Motivo_Sequencia]
               VSDGDESMOTSITPED=[Pedido_Motivo_Descricao]               
               Moveto [Pedido_Motivo_Sequencia]
          Case OPCAODIVERSAS="Tipos/Grade" Or
               OPCAODIVERSAS="Grade/Opcoes" :
               If Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Lookup_Item Grade]
                  Else Moveto [Tipo de Grade    ]
               EndIf
          Case OPCAODIVERSAS="Familia":
               VSDGTIPOEST=[Tipo do Item]
               Moveto [Lookup_Item Familia   ]
          Case OPCAODIVERSAS="Grupo":
               VSDGTIPOEST =[Tipo do Item     ]
               VSDGFAMILIA=[Codigo da Familia]
               Moveto [Lookup_Item Grupo]
          Case OPCAODIVERSAS="SubGrupo":
               VSDGTIPOEST =[Tipo do Item     ]
               VSDGFAMILIA=[Codigo da Familia]
               VSDGGRUPO  =[Codigo do Grupo  ]
               Moveto [Lookup_Item SubGrupo  ]
          Case OPCAODIVERSAS="Problema":
               Moveto [Lookup_EtapaProblemas ]     
          Case OPCAODIVERSAS="Conta":
               VSDGCONTA  =[Codigo da Conta  ]
               Moveto [Lookup_Conta     ]
          Case OPCAODIVERSAS="ItemPedido":
               ITEMPEDIDO=[Numero do Pedido]
               Moveto [Lookup_PedidoI]
          Case OPCAODIVERSAS="Autorizado":
               VSDGCAUTORIZ=[Codigo           ]
               Moveto [Lookup_Autorizado      ]
          Case OPCAODIVERSAS="Tabela":
               VSDGTABELA =[Codigo da Tabela]
               ;Moveto [Lookup_TbPrCab        ]
               Moveto [Codigo da Tabela]
          Case OPCAODIVERSAS="Represen":
               VSDGREPRESEN=[Codigo do Representante]
               Moveto [Lookup_Represen       ]
          Case OPCAODIVERSAS="Marcas":
               If ITEMDESEJADO <> "F1_Temp"
                  Then VSDGMARCA=[Codigo da Marca]
                       Moveto [Lookup_Marcas]
               EndIf
          Case OPCAODIVERSAS="ECF":
               If ITEMDESEJADO <> "F1_Temp"
                  Then VSDGNECF      = [Numero ECF       ]
                       VSDGNSERIE    = [Numero de Serie  ]
                       VSDGNREINICIO = [Reinicio Operacao]
                       VSDGCHAPA     = [Codigo do Usuario]
                       Moveto [Numero ECF]
               EndIf     
          Case OPCAODIVERSAS="Empresas":
               VSDGEMPRESA=[Codigo da Empresa]
               
               Switch
                 Case Table()="Sdmaster" Or 
                      Table()="Pecascc":   
                   Moveto [Lookup_Empresa]
                 OtherWise:
                   Moveto [Codigo da Empresa]
               EndSwitch
               
          Case OPCAODIVERSAS="Destinacoes":
               VSDGDESTIN=[Codigo da Destinacao]
               Moveto [Codigo da Destinacao]
        
        EndSwitch
       
        wcg=0                        
        KeyPress "F1"  
        While Not EOT() And Recno()>0
        Switch
          Case OPCAODIVERSAS="Condicao de Pagamento"  :
               RetVal=True
               If ITEMDESEJADO="ECF"
                  Then RetVal=False
                       If [Utiliza_ECF]="S"
                          Then RetVal=True
                       EndIf
               EndIf
               If RetVal
                   Then wcg=wcg+1
                        Opcoes[wcg]=Format("W24",[Condicao de Pagamento]+" "+[Descricao CondPagto])
               EndIf
          Case OPCAODIVERSAS="Forma de Pagamento"   :
               RetVal=True
               If ITEMDESEJADO="ECF"
                  Then RetVal=False
                       If [Utiliza_ECF]="S"
                          Then RetVal=True
                       EndIf
                EndIf
                If RetVal
                   Then wcg=wcg+1 
                        Opcoes[wcg]=Format("W24",[Tipo do Pagamento]+" "+[Descricao Tipo Pagamento])
               EndIF         
          Case OPCAODIVERSAS="Seleciona_Cidade"  :
               Switch
                 Case Len(Rtrim(ITEMDESEJADO))=2 : ;-- Estado como pararametro -
                                                   If ITEMDESEJADO=[UF]
                                                      Then wcg=wcg+1
                                                           Opcoes[wcg]=Format("W20",[Cidade])+" "+Format("W2",[UF])+" "+StrVal([Codigo_Cidade])
                                                   EndIf
                 Case ITEMDESEJADO="CIDADE"      : ;-- Estado como pararametro -
                                                   If ITEMDESEJADO=[UF]
                                                      Then wcg=wcg+1
                                                           Opcoes[wcg]=Format("W20",[Cidade])+" "+Format("W2",[UF])+" "+StrVal([Codigo_Cidade])
                                                   EndIf                                  
                 Otherwise                       : wcg=wcg+1
                                                   Opcoes[wcg]=Format("W20",[Cidade])+" "+Format("W2",[UF])+" "+StrVal([Codigo_Cidade])                                
               EndSwitch
          Case OPCAODIVERSAS="Seleciona_UF"      :
               wcg=wcg+1
               Opcoes[wcg]=Format("W2",[UF])
               GetRecord "\\Sistemas\\Vendas\\Estados" Opcoes[wcg] To REG_UF
               If ReTval
                  Then Opcoes[wcg] = Opcoes[wcg] + " " + Upper(REG_UF["Descricao"])  
               EndIf
          Case OPCAODIVERSAS="Seleciona_Cliente" :  
               Switch
                Case IsAssigned(TEMP_REP) :
                     If IsAssigned(CID)
                        Then For oiu From 1 To DynArraySize(CID)
                               If [Cidade]=CID[oiu] And [Inativo]<>"S" And [Codigo do Representante]=TEMP_REP
                                Then wcg=wcg+1
                                     Opcoes[wcg]=Format("W4",[Codigo])+" "+[Nome Fantasia EmitDest]
                                     QuitLoop
                               EndIf 
                             Endfor 
                        Else If [Codigo do Representante]=TEMP_REP And [Inativo]<>"S"
                                Then wcg=wcg+1
                                     Opcoes[wcg]=Format("W4",[Codigo])+" "+[Nome Fantasia EmitDest]
                             EndIf
                     EndIf   
                OtherWise : 
                     If [Tipo]="C" And [Inativo]<>"S"
                        Then wcg=wcg+1
                             Opcoes[wcg]=Format("W4",[Codigo])+" "+[Nome Fantasia EmitDest]
                     EndIf            
               EndSwitch   
           Case OPCAODIVERSAS="Requisitante" : 
                wcg=wcg+1
                Opcoes[wcg]=Format("W6",[Codigo do Requisitante])+" "+[Descricao Requisitante]
           
           Case OPCAODIVERSAS="Numero Produ‡„o do Corte" : 
                If [Pfacc->Numero_Corte] = [Numero_Programacao_Corte]
                   Then wcg=wcg+1
                        Opcoes[wcg]=Format("W6",[Numero_Producao_Corte]) + "   " +Format("D13",[Data_Producao]) + "   " +FormaT("W10",[Destino_Producao])
                EndIf
           Case OPCAODIVERSAS="Op‡”es de Desinat rio" :
                Switch
                  Case wcg = 0 And ITEMDESEJADO="INTERNO + FACCAO" : wcg = wcg + 1
                                                                     Opcoes[wcg]="INTERNO + FACCAO"
                  Case wcg = 0 And ITEMDESEJADO="TODOS" : wcg = wcg + 1
                                                          Opcoes[wcg]="TODOS"
                EndSwitch
                okct=False
                If Table()="P_destt"
                   Then If [Utiliza Destino]="S" And [Codigo da Empresa]=ITEMDESEJADO
                           Then okct=True
                        EndIf
                   Else okct=True     
                EndIf   
                If ITEMDESEJADO="CLIENTE"                          ;NÆo informar ShowDialog 
                   Then If [Destino]="OUTROS" 
                          Then okct=False
                        EndIf    
                EndIf        
                If okct
                   Then wcg=wcg+1
                        Opcoes[wcg]=Format("W10",[Destino])+" "+Format("W80",[Descritivo])
                EndIf    
           Case OPCAODIVERSAS="Referencia" :
                okct=True   
                wcg=wcg+1
                Opcoes[wcg]=Format("W20",[Referencia])          
           Case OPCAODIVERSAS="P_Cartao" :   
                wcg=wcg+1                 
                Opcoes[wcg]=Ltrim(Rtrim([Nome do Cartao]))    
           Case OPCAODIVERSAS="Cartao" :
                Switch
                  Case wcg = 0 And ITEMDESEJADO="TODOS" : wcg = wcg + 1
                                                          Opcoes[wcg]="TODOS"
                EndSwitch
                okct=True   
                wcg=wcg+1                     
          Case OPCAODIVERSAS="Tipo de Opera‡„o":   
               okct=False
               Switch                         
                 Case ITEMDESEJADO = "MOVCONT" : 
                      If Search([MovCont->Tipo da Conta],[OpConta])>0
                         Then okct=True
                      EndIf
                 Case ITEMDESEJADO = "TITULO"  :
                      If Search([Titbaixa->Tipo da Conta],[OpConta])>0 And [Tipo Movimento]="S"
                         Then If [Titbaixa->Tipo da Conta]="C"
                                 Then If [Tipo de Operacao]="05" Or [Tipo de Operacao]="14"
                                         Then okct=True
                                      EndIf
                                 Else If [Tipo de Operacao]="06"
                                         Then okct=True
                                      EndIf
                              Endif
                      EndIf        
                 Case ITEMDESEJADO = "NOTAE" :  
                      If CAIXA_BANCO
                         Then If Search([NotaECV->Tipo da Conta],[OpConta])>0 And [Tipo Movimento]="S"
                                 Then If [NotaECV->Tipo da Conta]="C"
                                         Then If [Tipo de Operacao]="05" Or [Tipo de Operacao]="14"
                                                 Then okct=True
                                              EndIf
                                         Else If [Tipo de Operacao]="06"
                                                 Then okct=True
                                              EndIf
                                      Endif
                              EndIf
                         Else If Search([NotaECP->Tipo da Conta],[OpConta])>0 And [Tipo Movimento]="S"
                                 Then If [NotaECP->Tipo da Conta]="C"
                                         Then If [Tipo de Operacao]="05" Or [Tipo de Operacao]="14"
                                                 Then okct=True
                                              EndIf
                                         Else If [Tipo de Operacao]="06"
                                                 Then okct=True
                                              EndIf
                                      Endif
                              EndIf                
                      EndIf   
                 Case ITEMDESEJADO = "PROGF" :  
                      If CAIXA_BANCO
                         Then If Search([ProgfCV->Tipo da Conta],[OpConta])>0 And [Tipo Movimento]="S"
                                 Then If [ProgfCV->Tipo da Conta]="C"
                                         Then If [Tipo de Operacao]="05" Or [Tipo de Operacao]="14"
                                                 Then okct=True
                                              EndIf
                                         Else If [Tipo de Operacao]="06"
                                                 Then okct=True
                                              EndIf
                                      Endif
                              EndIf
                         Else If Search([ProgfCP->Tipo da Conta],[OpConta])>0 And [Tipo Movimento]="S"
                                 Then If [ProgfCP->Tipo da Conta]="C"
                                         Then If [Tipo de Operacao]="05" Or [Tipo de Operacao]="14"
                                                 Then okct=True
                                              EndIf
                                         Else If [Tipo de Operacao]="06"
                                                 Then okct=True
                                              EndIf
                                      Endif
                              EndIf                
                      EndIf                         
                 OtherWise : 
                      If Search(ITEMDESEJADO,[OpConta])>0
                         Then okct=True
                      EndIf   
               EndSwitch
               If okct                         
                  Then wcg=wcg+1
                       Opcoes[wcg]=Completa([Descricao Operacao],26," ")+[Tipo de Operacao]
               EndIf    
          Case OPCAODIVERSAS="Tipo do Lan‡amento" Or OPCAODIVERSAS="Tipo de Lan‡amento":  
               okct=False  
               Switch
                 Case ITEMDESEJADO = "TITULO" : 
                      If [Titbaixa->Tipo da Conta]="C" Then opconta=[OpTpOper_Bco] EndIf
                      If [Titbaixa->Tipo da Conta]="X" Then opconta=[OpTpOper_Cxa] EndIf
                      If [Titbaixa->Tipo da Conta]="A" Then opconta=[OpTpOper_Apl] EndIf
                      If Search([Titbaixa->Tipo de Operacao],OpConta)>0
                         Then okct=True
                      EndIf
                 Case ITEMDESEJADO = "MOVCONT" : 
                      If [MovCont->Tipo da Conta]="C" Then opconta=[OpTpOper_Bco] EndIf
                      If [MovCont->Tipo da Conta]="X" Then opconta=[OpTpOper_Cxa] EndIf
                      If [MovCont->Tipo da Conta]="A" Then opconta=[OpTpOper_Apl] EndIf
                      If Search([MovCont->Tipo de Operacao],OpConta)>0
                         Then okct=True
                      EndIf
                 Case ITEMDESEJADO = "NOTAE"  :
                      If CAIXA_BANCO
                         Then If [NotaECV->Tipo da Conta]="C" Then opconta=[OpTpOper_Bco] EndIf
                              If [NotaECV->Tipo da Conta]="X" Then opconta=[OpTpOper_Cxa] EndIf
                              If [NotaECV->Tipo da Conta]="A" Then opconta=[OpTpOper_Apl] EndIf
                              If Search([NotaECV->Tipo de Operacao],OpConta)>0
                                 Then okct=True
                              EndIf
                         Else If [NotaECP->Tipo da Conta]="C" Then opconta=[OpTpOper_Bco] EndIf
                              If [NotaECP->Tipo da Conta]="X" Then opconta=[OpTpOper_Cxa] EndIf
                              If [NotaECP->Tipo da Conta]="A" Then opconta=[OpTpOper_Apl] EndIf
                              If Search([NotaECP->Tipo de Operacao],OpConta)>0
                                 Then okct=True
                              EndIf
                      EndIf    
                 Case ITEMDESEJADO = "PROGF"  :
                      If CAIXA_BANCO
                         Then If [ProgfCV->Tipo da Conta]="C" Then opconta=[OpTpOper_Bco] EndIf
                              If [ProgfCV->Tipo da Conta]="X" Then opconta=[OpTpOper_Cxa] EndIf
                              If [ProgfCV->Tipo da Conta]="A" Then opconta=[OpTpOper_Apl] EndIf
                              If Search([ProgfCV->Tipo de Operacao],OpConta)>0
                                 Then okct=True
                              EndIf
                         Else If [ProgfCP->Tipo da Conta]="C" Then opconta=[OpTpOper_Bco] EndIf
                              If [ProgfCP->Tipo da Conta]="X" Then opconta=[OpTpOper_Cxa] EndIf
                              If [ProgfCP->Tipo da Conta]="A" Then opconta=[OpTpOper_Apl] EndIf
                              If Search([ProgfCP->Tipo de Operacao],OpConta)>0
                                 Then okct=True
                              EndIf
                      EndIf                          
               EndSwitch
               If okct                         
                  Then wcg=wcg+1
                       Opcoes[wcg]=Completa([Descricao do Lancamento],28," ")+[Tipo de Lancamento]
               EndIf  
          Case OPCAODIVERSAS="Codigo da Conta": 
               If Field()="Codigo da Conta"
                  Then wcg=wcg+1
                       Opcoes[wcg]=Completa([Descricao da Conta],31," ")+[Codigo da Conta]+", "+[Nome Fantasia Empresa]+"/"+[Codigo da Empresa]
                  Else If ITEMDESEJADO = "MOVCONT" 
                          Then Switch
                                 Case [MovCont->Tipo da Conta]="C" And [movCont->Tipo de Operacao]="08"
                                      And [movCont->Tipo do Lancamento]<>"P" And [movCont->Tipo do Lancamento]<>"N":
                                      If [MovCont->Codigo da Empresa]=[Codigo da Empresa Trf] And
                                         [Tipo da Conta Trf]="X"
                                         Then wcg=wcg+1
                                              Opcoes[wcg]=Completa([Descricao da Conta Trf],31," ")+[Codigo da Conta Trf]
                                      EndIf
                                 Case [MovCont->Tipo da Conta]="C" And [movCont->Tipo de Operacao]="08"
                                      And [movCont->Tipo do Lancamento]="N": 
                                      If [MovCont->Codigo da Empresa]=[Codigo da Empresa Trf] And
                                         [Tipo da Conta Trf]="C"
                                         Then wcg=wcg+1
                                              Opcoes[wcg]=Completa([Descricao da Conta Trf],31," ")+[Codigo da Conta Trf]
                                      EndIf
                                 Case [MovCont->Tipo da Conta]="C" And [movCont->Tipo de Operacao]="08"
                                      And [movCont->Tipo do Lancamento]="P":
                                      If [MovCont->Codigo da Empresa]=[Codigo da Empresa Trf] And
                                         ([Tipo da Conta Trf]="C" Or [Tipo da Conta Trf]="X")
                                         Then wcg=wcg+1
                                              Opcoes[wcg]=Completa([Descricao da Conta Trf],31," ")+[Codigo da Conta Trf]
                                      EndIf
                                 Case [MovCont->Tipo da Conta]="X" And [movCont->Tipo de Operacao]="08":
                                      If [MovCont->Codigo da Empresa]=[Codigo da Empresa Trf] And
                                         ([Tipo da Conta Trf]="C" Or [Tipo da Conta Trf]="X")
                                         Then wcg=wcg+1
                                              Opcoes[wcg]=Completa([Descricao da Conta Trf],31," ")+[Codigo da Conta Trf]
                                      EndIf
                                 Case [MovCont->Tipo da Conta]="C" And [movCont->Tipo de Operacao]="02":
                                      If [MovCont->Codigo da Empresa]=[Codigo da Empresa Trf] And
                                         [Tipo da Conta Trf]="A"
                                         Then wcg=wcg+1
                                              Opcoes[wcg]=Completa([Descricao da Conta Trf],31," ")+[Codigo da Conta Trf]
                                      EndIf
                                  OtherWise:
                                      If [MovCont->Codigo da Empresa]=[Codigo da Empresa Trf]
                                         Then wcg=wcg+1
                                              Opcoes[wcg]=Completa([Descricao da Conta Trf],31," ")+[Codigo da Conta Trf]
                                      EndIf
                               EndSwitch
                       EndIf            
               EndIf                     
          Case OPCAODIVERSAS="Codigo da Cor_Tecido" : 
               If wcg=0 And Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Codigo do item]
                       Locate ITEMDESEJADO
               EndIf
               If Not IsBlank(ITEMDESEJADO) And
                  [Codigo do item]<>ITEMDESEJADO
                  Then QuitLoop
               EndIf
               wcg=wcg+1
               If SYS_CODIGO_CLIENTE="0222" Or 
                  SYS_CODIGO_CLIENTE="0425" Or
                  SYS_CODIGO_CLIENTE="0232"
                  Then Opcoes[wcg]=AlinhM(StrVal([Sequencia da Cor_Tecido]),4)+"  "+[Codigo da Cor_Tecido]+"-"+Completa([Descricao da Cor_Tecido],30," ")
                  Else Opcoes[wcg]=Completa([Descricao da Cor_Tecido],30," ")+" "+[Codigo da Cor_Tecido]+" - "+Format("W3,AR",[Sequencia da Cor_Tecido])
               EndIf                       
          Case OPCAODIVERSAS="Codigo do Documento": 
               If [Inativa Documento]="S" 
                  Then Skip 
                       Loop 
               EndIf
               If ITEMDESEJADO=""
                  Then okct=True
                  Else okct=False 
                       If Search(ITEMDESEJADO,Upper([OpModulo])) > 0
                          Then okct=True 
                       EndIf        
                EndIf
              
                If okct
                   Then OPCAO =         Format("W4,AL",[Codigo do Documento])+Spaces(2)+Format("W4,AL",[Tipo do Documento])+Spaces(2)+
                                        Format("W4,AL",[Serie do Documento])+Spaces(2)
                        OPCAO = OPCAO + Format("W2,AL",[Subserie do Documento])+Spaces(2)+Format("W2,AL",[Modelo do Documento])+Spaces(2)+
                                        Format("W40,AL",[Descricao do Documento])
                        OPCAO = Completa(OPCAO,73," ")   
                   
                        wcg=wcg+1
                        Opcoes[wcg]=OPCAO
                EndIf
                            
          Case OPCAODIVERSAS="Pedido_Motivo_Sequencia": 
               If [Pedido_Motivo_Inativo]="S" Or ITEMDESEJADO<>[Pedido_Motivo_Situacao] 
                  Then Skip 
                       Loop 
               EndIf
               wcg=wcg+1
               Opcoes[wcg]=Format("W2",[Pedido_Motivo_Sequencia])+Spaces(2)+Format("W20",[Pedido_Motivo_Descricao])+Spaces(2)+Format("W12",[Pedido_Motivo_Situacao])
               
          Case OPCAODIVERSAS="Tipos/Grade":
               If wcg=0 And Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Codigo do Item]
                       Locate ITEMDESEJADO
               EndIf
               If Not IsBlank(ITEMDESEJADO) And
                  [Codigo do Item]<>ITEMDESEJADO
                  Then QuitLoop
               EndIf
               wcg=wcg+1
               Opcoes[wcg]=[Tipo de Grade]+" "+Format("W21,AL",[Descricao da Grade])
               For icg From 1 To 10
                   Moveto Field "Grade"+StrVal(icg)
                   If Not IsBlank([])
                      Then Opcoes[wcg]=Opcoes[wcg]+Format("W5,L",[])
                      Else QuitLoop
                   EndIf
               EndFor
          Case OPCAODIVERSAS="Grade/Opcoes":
               If wcg=0 And Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Codigo do Item]
                       Locate ITEMDESEJADO
               EndIf
               If Not IsBlank(ITEMDESEJADO) And
                  [Codigo do Item]<>ITEMDESEJADO
                  Then QuitLoop
               EndIf
               For icg From 1 To 10
                   Moveto Field "Grade"+StrVal(icg)
                   If Not IsBlank([])
                      Then tnovo=true
                           For icgt From 1 to DynArraySize(Opcoes)
                             If Opcoes[icgt]=Format("W4,AL",[])
                                Then tnovo=false
                                     QuitLoop
                             EndIf
                           EndFor
                           If tnovo
                              Then wcg=wcg+1
                                   Opcoes[wcg]=Format("W4,AL",[])
                           EndIf
                      Else QuitLoop
                   EndIf
               EndFor
          Case OPCAODIVERSAS="Familia":
               If [Tipo do Item]=VSDGTIPOEST
                  Then wcg=wcg+1
                       Opcoes[wcg]=[Codigo da Familia]+" "+[Descricao da Familia]
                  Else QuitLoop
               EndIf
          Case OPCAODIVERSAS="Problema":
               If wcg=0 And Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Codigo_Etapa]
                       Locate ITEMDESEJADO
               EndIf               
               If [Codigo_Etapa]=ITEMDESEJADO
                  Then wcg=wcg+1
                       Opcoes[wcg]=Format("W3,AR",[Sequencia])+" "+[Descricao_Problema]
                  Else QuitLoop     
               EndIf               
          Case OPCAODIVERSAS="Grupo":
               If [Tipo do Item     ]=VSDGTIPOEST And
                  [Codigo da Familia]=VSDGFAMILIA
                  Then wcg=wcg+1
                       Opcoes[wcg]=[Codigo do Grupo]+" "+[Descricao do Grupo]
                  Else QuitLoop
               EndIf
          Case OPCAODIVERSAS="SubGrupo":
               If [Tipo do Item     ]=VSDGTIPOEST And
                  [Codigo da Familia]=VSDGFAMILIA And
                  [Codigo do Grupo  ]=VSDGGRUPO
                  Then wcg=wcg+1
                       Opcoes[wcg]=[Codigo do SubGrupo]+" "+[Descricao do SubGrupo]
                  Else QuitLoop
               EndIf
          Case OPCAODIVERSAS="Conta":
               If wcg=0 And Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Codigo da Empresa]
                       Locate ITEMDESEJADO
               EndIf
               If Not IsBlank(ITEMDESEJADO) And
                  [Codigo da Empresa]<>ITEMDESEJADO
                  Then QuitLoop
               EndIf
               wcg=wcg+1
               Opcoes[wcg]=[Codigo da Conta]+" "+[Descricao da Conta]
          Case OPCAODIVERSAS="ItemPedido":
               If wcg=0 And Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Numero do Pedido]
                       Locate ITEMDESEJADO
               EndIf
               If Not IsBlank(ITEMDESEJADO) And
                  [Numero do Pedido]<>ITEMDESEJADO
                  Then QuitLoop
               EndIf
               wcg=wcg+1
               Opcoes[wcg]=AlinhM(StrVal([Item do Pedido]),3)+" "+Format("W10,AL",[Codigo do Item   ])+ " "+
                           Format("W01,AL",[Tipo do Item  ])+" "+Format("W29,AL",[Descricao do Item])+ " "+
                           Format("W02,AL",[Unidade Fiscal])+" "+Format("W13.2,EIC",[Quantidade]-[Quantidade Faturada])+
                           " "+Format("W06,AL",[Numero do Pedido])
          Case OPCAODIVERSAS="Autorizado":
               If wcg=0 And Not IsBlank(ITEMDESEJADO)
                  Then Moveto [Codigo]
                       Locate ITEMDESEJADO
               EndIf
               If Not IsBlank(ITEMDESEJADO) And
                  [Codigo]<>ITEMDESEJADO
                  Then QuitLoop
               EndIf
               wcg=wcg+1
               Opcoes[wcg]=Format("W4,AR",StrVal([Sequencia]))+" "+Format("W38,AL",[Nome])+" "+Format("W19,AL",[CGC/CPF])+Format("D13",[Data da Autorizacao])
          Case OPCAODIVERSAS="Tabela":
               If ITEMDESEJADO = "S"
                  Then If [Usa_TLMK]="F"
                          Then wcg=wcg+1
                               Opcoes[wcg]=Completa([Codigo da Tabela],5," ")+" "+[Descricao da Tabela]
                       EndIf
                  Else If [Usa_TLMK]<>"F"
                          Then wcg=wcg+1
                               Opcoes[wcg]=Completa([Codigo da Tabela],5," ")+" "+[Descricao da Tabela]
                       EndIf
               EndIf
          Case OPCAODIVERSAS="Represen":
               wcg=wcg+1
               Opcoes[wcg]=[Codigo do Representante]+" "+[Nome Fantasia Represent]
          Case OPCAODIVERSAS="Marcas":
               wcg=wcg+1
               Opcoes[wcg]=[Codigo da Marca]+" "+[Descricao da Marca]
          Case OPCAODIVERSAS="ECF":
               wcg=wcg+1
               Opcoes[wcg]=Format("W2,AR",[Numero ECF])+" "+Format("W25",[Numero de Serie])+" "+Format("W3",[Reinicio Operacao])+" "+
                           Format("W4",[Codigo da Empresa])+" "+Format("W4",[Codigo do Usuario])     
          Case OPCAODIVERSAS="Empresas":
               wcg=wcg+1
               Opcoes[wcg]=Completa([Nome Fantasia Empresa],22," ")+[Codigo da Empresa]+" "+[CGC Empresa]
          Case OPCAODIVERSAS="Destinacoes":
               If [Utiliza_Balcao]="S"
                   Then wcg=wcg+1
                        Opcoes[wcg]=Completa([Descricao da Destinacao],32," ")+[Codigo da Destinacao]+" "+[CFO]
               EndIf         
      
        EndSwitch
        Skip
      EndWhile
EndIf

If ITEMDESEJADO = "F1_Temp"
   Then wcg=0 
        Switch
          Case OPCAODIVERSAS="TpDoctos" :
               If Isempty("Answer")  
                  Then Return False 
               EndIf
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W4",[Codigo do Documento])+Spaces(2)+
                             Format("W4",[Tipo do Documento])  +Spaces(2)+
                             Format("W4",[Serie do Documento]) +Spaces(2)+
                             Format("W2",[SubSerie do Documento])+Spaces(2)+
                             Format("W20",[Descricao do Documento])
               EndScan
          Case OPCAODIVERSAS="Pedido_Motivo_Sequencia" :
               If Isempty("Answer")  
                  Then Return False 
               EndIf
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W2",[Pedido_Motivo_Sequencia])+Spaces(2)+Format("W20",[Pedido_Motivo_Descricao])+Spaces(2)+Format("W12",[Pedido_Motivo_Situacao])                             
               EndScan
          Case OPCAODIVERSAS="Cartao" :
               If Isempty("Answer")  
                  Then Return False 
               EndIf
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W15",[Nome do Cartao])                             
               EndScan
          Case OPCAODIVERSAS="Numero do Documento" :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W4",[Codigo da Empresa])+" "+
                             Format("W6",[Numero do Documento])+" "+
                             Format("W4",[Serie do Documento])+" "+
                             Format("W4",[Codigo])+" "+
                             Format("W40",[Razao Social])
                 ;1234 123456 1234 1234 1234567890123456789012345678901234567890                             
               EndScan             
          Case OPCAODIVERSAS="Unidade"   :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W2",[Sigla da Unidade])+" "+Format("W20",[Descricao da Unidade])
               EndScan
             Case OPCAODIVERSAS="Seleciona_Cidade"   :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W20",[Cidade])+" "+Format("W2",[UF])+" "+StrVal([Codigo_Cidade])
               EndScan
          Case OPCAODIVERSAS="Seleciona_UF"   :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg] = Format("W2",[UF]) + " " + Format("W20",Upper([Descricao]))
               EndScan   
          Case OPCAODIVERSAS="Programa‡„o da Visita"   :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W6",[Numero da Programacao])+" "+Format("W20",[Nome Fantasia Represent])
               EndScan
          Case OPCAODIVERSAS="Vendedor" :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W4",[Codigo do Representante])+" "+Format("W20",[Nome Fantasia Represent])
               EndScan
          Case OPCAODIVERSAS="Cidade da Visita"        :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W20",[Cidade])+" "+Format("W2",[UF])+" "+StrVal([Codigo_Cidade])
               EndScan
          Case OPCAODIVERSAS="Cliente da Visita"       :
               If Isempty("Answer")  
                  Then Return False 
               EndIF
               Moveto "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W4",[Codigo])+" "+Format("W20",[Nome Fantasia EmitDest])
               EndScan
          Case OPCAODIVERSAS="Status"             :
               View "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W2",[Codigo do Status])+Spaces(1)+Format("W20",[Descricao do Status])
               EndScan
          Case OPCAODIVERSAS="Marcas" :
               View "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W3",[Codigo da Marca])+SpaceS(1)+Format("W20",[Descricao da Marca])
               EndScan              
          Case OPCAODIVERSAS="ECF" :
               View "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W2,AR",[Numero ECF])+" "+Format("W25",[Numero de Serie])+" "+Format("W3",[Reinicio Operacao])+" "+
                             Format("W4",[Codigo da Empresa])+" "+Format("W4",[Codigo do Usuario])   

               EndScan                
          Case OPCAODIVERSAS="Preco_Confeccao":
               View "Answer"
               Scan
                 wcg=wcg+1
                 If wcg=1
                    Then AUX_COD = "02"+[Referencia]
                         AUX_COD = AUX_COD + Fill("0",10-Len(AUX_COD))
             
                         GetRecord "\\Sistemas\\Estoque\\Itens" AUX_COD To REG_AUX_COD
                         If Not RetVal
                            Then Return False
                         EndIf
                         AUX_COD = REG_AUX_COD["Codigo da Grade"]
                         Release Vars REG_AUX_COD
             
                         GetRecord "\\Sistemas\\Estoque\\TpGrade" AUX_COD To REG_GRADE
                         If Not RetVal
                            Then Return False
                         EndIf   
          
                         TIT1  = REG_GRADE["Titulo Grade1"]
                         TIT2  = REG_GRADE["Titulo Grade2"]
                         TIT3  = REG_GRADE["Titulo Grade3"]
                         TIT4  = REG_GRADE["Titulo Grade4"]
                         TIT5  = REG_GRADE["Titulo Grade5"]
                         TIT6  = REG_GRADE["Titulo Grade6"]
                         TIT7  = REG_GRADE["Titulo Grade7"]
                         TIT8  = REG_GRADE["Titulo Grade8"]
                         TIT9  = REG_GRADE["Titulo Grade9"]
                         TIT10 = REG_GRADE["Titulo Grade10"]
                         TIT11 = REG_GRADE["Titulo Grade11"]
                         TIT12 = REG_GRADE["Titulo Grade12"] 
                         Release Vars REG_AUX_COD     
                         
                         VSD_SUBTIT=" SEQ REF   COR               "+
                                     Format("W3",TIT1)+
                                     Format("W3",TIT2)+
                                     Format("W3",TIT3)+
                                     Format("W3",TIT4)+
                                     Format("W3",TIT5)+
                                     Format("W3",TIT6)+
                                     Format("W3",TIT7)+
                                     Format("W3",TIT8)+
                                     Format("W3",TIT9)+
                                     Format("W3",TIT10)+
                                     Format("W3",TIT11)+
                                     Format("W3",TIT12)+
                                     " PrUnit."
                         
                 EndIf
                 GetRecord "\\Sistemas\\Estoque\\Cores" [Codigo da Cor_Tecido] To REG_DESCORTECIDO
                 If RetVal
                    Then REG_DESCORTECIDO = REG_DESCORTECIDO["Descricao da Cor_Tecido"]
                    Else REG_DESCORTECIDO = ""
                 EndIf 
                 Opcoes[wcg]=Format("W3,AR",[Sequencia])+Spaces(1)+Format("W5,AL",[Referencia])+Spaces(1)+Format("W17,AL",REG_DESCORTECIDO)+Spaces(1)
                 For i From 1 To 12
                   AUX_CAMPO="Codigo Item"+StrVal(i)
                   Moveto Field AUX_CAMPO
                   Opcoes[wcg]=Opcoes[wcg] + Format("W3,AL",Rtrim(Ltrim([])))
                 EndFor
                 Release Vars AUX_CAMPO
                 Opcoes[wcg]=Opcoes[wcg]+Spaces(1)+Format("W7.2,EIC",[Preco Unitario])
               EndScan
               
          Case OPCAODIVERSAS="Referencia" :
               View "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Format("W8",[Referencia])+SpaceS(1)+Format("W30",[Descricao do Item])
               EndScan
          Case OPCAODIVERSAS="Codigo da Cor_Tecido" :
               View "Answer"
               Scan
                 wcg=wcg+1
                 Opcoes[wcg]=Completa([Descricao da Cor_Tecido],26," ")+Completa([Sigla Cor_Tecido],4," ")+" "+[Codigo da Cor_Tecido]
               EndScan                            
         EndSwitch
EndIf

If OPCAODIVERSAS="P_Cartao" And wcg > 0
   Then DynArray Temp_Opcoes[]
        wcg = 0
        If Not IsAssigned(AUX_EMP) Then AUX_EMP = [FaturaC->Codigo da Empresa] EndIf
        For ii From 1 To DynArraySize(Opcoes)
          GetRecord "\\Sistemas\\Vendas\\P_Cartao" AUX_EMP,Opcoes[ii] To REG_CARTAO
          If RetVal
             Then REG_TIPO_CARTAO = REG_CARTAO["Debito_Credito"]
             Else REG_TIPO_CARTAO = ""
          EndIf
          
          If REG_TIPO_CARTAO<>""
             Then If (ITEMDESEJADO = "CREDITO" And REG_TIPO_CARTAO = "CREDITO") Or
                     (ITEMDESEJADO = "DEBITO"  And REG_TIPO_CARTAO = "DEBITO")
                     Then okct=True
                          wcg = wcg + 1
                          Temp_Opcoes[wcg] = REG_CARTAO["Nome do Cartao"]
                  EndIf
          EndIf               
        EndFor
        
        Release Vars Opcoes
        DynArray Opcoes[]
        For ii From 1 To DynArraySize(Temp_Opcoes)
          Opcoes[ii] = Temp_Opcoes[ii]        
        EndFor
        Release Vars Temp_Opcoes
EndIf              

If OPCAODIVERSAS="Destinacoes" And wcg=0
   Then Mensagem("Configurar no cadastro de destina‡äes, //quais opera‡äes estarÆo dispon¡veis para esta rotina do BALCÇO !// // Utiliza balcÆo sim/nÆo.")
        wcg=0
        Scan
          wcg=wcg+1
          Opcoes[wcg]=Completa([Descricao da Destinacao],32," ")+[Codigo da Destinacao]+" "+[CFO]
        EndScan   
EndIf   

If ITEMDESEJADO <> "F1_Temp"
   Then KeyPress "ESC"
        Moveto Field nomecampo
EndIf    
 
If wcg = 0
   Then Return False
EndIf

Return True

EndProc ;Monta_Opcoes()

;*******************************************************************************
;* Rotina p/ Montar Array Opcoes p/ Grade, Familia, Grupo                      *
;*******************************************************************************
;Proc Monta_Array_OpcoesTG()
;Private wcg, icg, icgt, tnovo
;
;If IsAssigned(Opcoes)
;   Then Release Vars Opcoes
;EndIf
;DynArray Opcoes[]
;
;Switch                                  
; Case Campo="TG_ITEMGRADE" And Not IsBlank(VSDGITEMTPGRADE) And Not IsBlank(VSDGITEM):
;      View NOWINDOW "\\Sistemas\\Estoque\\Itengrad"
;      Moveto [Codigo do Item]
;      Locate VSDGITEM, VSDGITEMTPGRADE
; Case Campo="TG_ITEMGRADE" And Not IsBlank(VSDGITEMTPGRADE) And IsBlank(VSDGITEM):
;      View NOWINDOW "\\Sistemas\\Estoque\\Tpgrade"
;      Moveto [Tipo de Grade]
;      Locate VSDGITEMTPGRADE
;  Case Campo="TG_ITEMTPGRADE" And Not IsBlank(VSDGITEM):
;       View NOWINDOW "\\Sistemas\\Estoque\\Itengrad"
;       Moveto [Codigo do Item]
;       Locate VSDGITEM
;  Case Campo="TG_ITEMTPGRADE" And IsBlank(VSDGITEM):
;       View NOWINDOW "\\Sistemas\\Estoque\\Tpgrade"
; Case Campo="TG_FAMILIA"      :
;      View NOWINDOW "\\Sistemas\\Estoque\\Clasitf"
;      Moveto [Tipo do Item]
;      Locate VSDGTIPOEST
; Case Campo="TG_GRUPO"        :
;      View NOWINDOW "\\Sistemas\\Estoque\\Clasitg"
;      Moveto [Tipo do Item]
;      Locate VSDGTIPOEST, VSDGFAMILIA
;  Case Campo="TG_SUBGRUPO"     :
;       View NOWINDOW "\\Sistemas\\Estoque\\Clasitsg"
;       Moveto [Tipo do Item]
;       Locate VSDGTIPOEST, VSDGFAMILIA, VSDGGRUPO
;EndSwitch
;
;wcg=0
;While Not EOT()
;  Switch
;    Case Campo="TG_ITEMTPGRADE"    :
;         If Not IsBlank(VSDGITEM) And [Codigo do Item]<>VSDGITEM
;            Then QuitLoop
;         EndIf
;         wcg=wcg+1
;         Opcoes[wcg]=[Tipo de Grade]+" "+Format("W21,AL",[Descricao da Grade])
;         For icg From 1 To 10
;             Moveto Field "Grade"+StrVal(icg)
;             If Not IsBlank([])
;                Then Opcoes[wcg]=Opcoes[wcg]+Format("W5,L",[])
;                Else QuitLoop
;             EndIf
;         EndFor
;   Case Campo="TG_ITEMGRADE"  :
;        If Not IsBlank(VSDGITEM) And [Codigo do Item]<>VSDGITEM
;           Then QuitLoop
;        EndIf
;        If Not IsBlank(VSDGITEMTPGRADE) And [Tipo de Grade]<>VSDGITEMTPGRADE
;           Then QuitLoop
;        EndIf
;        For icg From 1 To 10
;            Moveto Field "Grade"+StrVal(icg)
;            If Not IsBlank([])
;               Then tnovo=true
;                    For icgt From 1 to DynArraySize(Opcoes)
;                      If Opcoes[icgt]=Format("W4,AL",[])
;                         Then tnovo=false
;                              QuitLoop
;                      EndIf
;                    EndFor
;                    If tnovo
;                       Then wcg=wcg+1
;                            Opcoes[wcg]=Format("W4,AL",[])
;                    EndIf
;               Else QuitLoop
;            EndIf
;        EndFor
;   Case Campo="TG_FAMILIA"      :
;        If [Tipo do Item]=VSDGTIPOEST
;           Then wcg=wcg+1
;                Opcoes[wcg]=[Codigo da Familia]+" "+[Descricao da Familia]
;           Else QuitLoop
;        EndIf
;   Case Campo="TG_GRUPO"        :
;        If [Tipo do Item     ]=VSDGTIPOEST And
;           [Codigo da Familia]=VSDGFAMILIA
;           Then wcg=wcg+1
;                Opcoes[wcg]=[Codigo do Grupo]+" "+[Descricao do Grupo]
;           Else QuitLoop
;        EndIf
;   Case Campo="TG_SUBGRUPO"     :
;        If [Tipo do Item     ]=VSDGTIPOEST And
;           [Codigo da Familia]=VSDGFAMILIA And
;           [Codigo do Grupo  ]=VSDGGRUPO
;           Then wcg=wcg+1
;                Opcoes[wcg]=[Codigo do SubGrupo]+" "+[Descricao do SubGrupo]
;           Else QuitLoop
;        EndIf
;  EndSwitch
;  Skip
;EndWhile
;ClearImage
;EndProc       ; (Monta_Array_OpcoesTG)

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

If DynArraySize(Opcoes)=0
   Then Return False
EndIf                          

resultado=false
For icg From 1 To DynArraySize(Opcoes)
  Switch
    Case OPCAODIVERSAS="Condicao de Pagamento" :
         If RTrim(SubStr(Opcoes[icg],1,2))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Forma de Pagamento"  :
         If RTrim(SubStr(Opcoes[icg],1,2))=VALORDESEJADO
            Then resultado=true
         EndIf               
    Case OPCAODIVERSAS="Programa‡„o da Visita"  :
         ;--- Usando no Visita (RM_0100) ---------------
         If RTrim(SubStr(Opcoes[icg],1,6))=VALORDESEJADO
            Then resultado=true
         EndIf    
    Case OPCAODIVERSAS="Vendedor"  :
         If RTrim(SubStr(Opcoes[icg],1,4))=VALORDESEJADO
            Then resultado=true
         EndIf    
    Case OPCAODIVERSAS="Cidade da Visita"  :
         If RTrim(SubStr(Opcoes[icg],1,20))=VALORDESEJADO
            Then resultado=true
         EndIf    
    Case OPCAODIVERSAS="Cliente da Visita"  :
         If RTrim(SubStr(Opcoes[icg],1,4))=VALORDESEJADO
            Then resultado=true
         EndIf    
    Case OPCAODIVERSAS="Seleciona_Cidade"  :
         ;--- Usando no VisitaC -------------------------
         If RTrim(SubStr(Opcoes[icg],1,20))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Unidade"  :
         If RTrim(SubStr(Opcoes[icg],1,2))=VALORDESEJADO
            Then resultado=true
         EndIf           
    Case OPCAODIVERSAS="Seleciona_UF"      :
         ;--- Usando no VisitaC -------------------------
         If RTrim(SubStr(Opcoes[icg],1,2))=VALORDESEJADO
            Then resultado=true
         EndIf  
    Case OPCAODIVERSAS="Seleciona_Cliente" :
         If RTrim(SubStr(Opcoes[icg],1,4))=VALORDESEJADO
            Then resultado=true
         EndIf 
    Case OPCAODIVERSAS="Referencia" :
         ;--- Usando no Ped_Grp - Posi‡Æo de 8 Char ------
         If RTrim(SubStr(Opcoes[icg],1,8))=VALORDESEJADO
            Then resultado=true
         EndIf             
    Case OPCAODIVERSAS="Numero Produ‡„o do Corte" :        
         If RTrim(SubStr(Opcoes[icg],1,6))=VALORDESEJADO
            Then resultado=true
         EndIf      
    Case OPCAODIVERSAS="Cartao" Or
         OPCAODIVERSAS="P_Cartao": 
         If RTrim(SubStr(Opcoes[icg],1,15))=VALORDESEJADO
            Then resultado=true
         EndIf      
    Case OPCAODIVERSAS="Requisitante" : 
         If RTrim(SubStr(Opcoes[icg],1,6))=VALORDESEJADO
            Then resultado=true
         EndIf        
    Case OPCAODIVERSAS="Op‡”es de Desinat rio" :         
         If (RTrim(SubStr(Opcoes[icg],1,10)) = VALORDESEJADO) Or 
            (RTrim(SubStr(Opcoes[icg],1,16)) = VALORDESEJADO)
            Then resultado=true
         EndIf        
    Case OPCAODIVERSAS="Tipo de Opera‡„o":
         If RTrim(SubStr(Opcoes[icg],27,2))=VALORDESEJADO      
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Tipo do Lan‡amento" Or OPCAODIVERSAS="Tipo de Lan‡amento":
         If RTrim(SubStr(Opcoes[icg],29,1))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Codigo da Conta":
         If RTrim(SubStr(Opcoes[icg],32,4))=VALORDESEJADO
            Then resultado=true
         EndIf  
    Case OPCAODIVERSAS="Codigo da Cor_Tecido": 
         If SYS_CODIGO_CLIENTE="0222" Or SYS_CODIGO_CLIENTE="0425" Or SYS_CODIGO_CLIENTE="0232" 
            Then If RTrim(SubStr(Opcoes[icg],07,4))=VALORDESEJADO
                    Then resultado=true
                 EndIf 
            Else If RTrim(SubStr(Opcoes[icg],32,4))=VALORDESEJADO
                    Then resultado=true
                 EndIf  
         EndIf        
    Case OPCAODIVERSAS="Codigo do Documento":
         If Ltrim(RTrim(SubStr(Opcoes[icg],1,4)))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Pedido_Motivo_Sequencia" :     
         If Ltrim(RTrim(SubStr(Opcoes[icg],1,2)))=VALORDESEJADO
            Then resultado=true
         EndIf  
    Case OPCAODIVERSAS="Tipos/Grade" :
         If SubStr(Opcoes[icg],1,1)=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Grade/Opcoes" :
         If RTrim(SubStr(Opcoes[icg],1,4))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Status"       :
         If Rtrim(SubStr(Opcoes[icg],4,20))=Rtrim(VALORDESEJADO)
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Familia"     Or
         OPCAODIVERSAS="Grupo"       Or
         OPCAODIVERSAS="SubGrupo"    Or
         OPCAODIVERSAS="Marcas"       :
         If SubStr(Opcoes[icg],1,3)=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="ECF" :
         If AlinhM(SubStr(Opcoes[icg],1,2),2)=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Conta"       Or
         OPCAODIVERSAS="Represent":
         If RTrim(SubStr(Opcoes[icg],1,4))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Preco_Confeccao":
         If Ltrim(Rtrim(SubStr(Opcoes[icg],1,3)))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Problema":
         If Ltrim(Rtrim(SubStr(Opcoes[icg],1,3)))=VALORDESEJADO
            Then resultado=true
         EndIf         
    Case OPCAODIVERSAS="ItemPedido":
         If NumVal(SubStr(Opcoes[icg],1,3))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Autorizado":
         If RTrim(SubStr(Opcoes[icg],6,38))=SubStr(VALORDESEJADO,1,38)
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Tabela":
         If RTrim(SubStr(Opcoes[icg],1,5))=VALORDESEJADO
            Then resultado=true
         EndIf

    Case OPCAODIVERSAS="Empresas"     :
         If RTrim(SubStr(Opcoes[icg],23,4))=VALORDESEJADO
            Then resultado=true
         EndIf
    Case OPCAODIVERSAS="Destinacoes"     :
         If RTrim(SubStr(Opcoes[icg],33,3))=VALORDESEJADO
            Then resultado=true
         EndIf
  EndSwitch
  If resultado
     then MontaRegistro_F1(OPCAODIVERSAS,icg)
          QuitLoop
  EndIf
EndFor
return resultado

EndProc         ;  (Checa_Opcoes)

;*******************************************************************************
;* Rotina Montar Registro_F1 p/ Grade                                          *
;*******************************************************************************
Proc MontaRegistro_F1(OPCAODIVERSAS, indice)
private OPCAODIVERSAS, indice
                                
If IsAssigned(Registro_F1)
   Then Release Vars Registro_F1
EndIf
DynArray Registro_F1[]

Switch
  Case OPCAODIVERSAS="TpDoctos"              : 
       Registro_F1["Codigo do Documento"] = RTrim(SubStr(Opcoes[indice],1,4))
       Registro_F1["Tipo do Documento"  ] = RTrim(SubStr(Opcoes[indice],7,4)) 
       Registro_F1["Serie do Documento" ] = RTrim(SubStr(Opcoes[indice],11,4)) 
       If IsAssigned(VSDGTPDOCTO)
          Then VSDGTDOCTO  = Registro_F1["Tipo do Documento"]
               VSDGSDOCTO  = Registro_F1["Serie do Documento"] 
       EndIf    
  Case OPCAODIVERSAS="Condicao de Pagamento" :
       Registro_F1["Condicao de Pagamento"] = RTrim(SubStr(Opcoes[indice],1,2))
       Registro_F1["Descricao CondPagto"]   = RTrim(SubStr(Opcoes[indice],4,20))
       If IsAssigned(VSDGPROGRAMACAO)
          Then VSDGCONDPGTO    = Registro_F1["Condicao de Pagamento"]
               VSDGNOMCONDPGTO = Registro_F1["Descricao CondPagto"]
       EndIf
  Case OPCAODIVERSAS="Forma de Pagamento"  :
       Registro_F1["Tipo do Pagamento"]        = RTrim(SubStr(Opcoes[indice],1,2))
       Registro_F1["Descricao Tipo Pagamento"] = RTrim(SubStr(Opcoes[indice],4,20))
       If IsAssigned(VSDGPROGRAMACAO)
          Then VSDGTPPAGTO    = Registro_F1["Tipo do Pagamento"]
               VSDGNOMTPPAGTO = Registro_F1["Descricao Tipo Pagamento"]
       EndIf    
  Case OPCAODIVERSAS="Programa‡„o da Visita"  :
       Registro_F1["Numero da Programacao"]   = RTrim(SubStr(Opcoes[indice],1,6))
       Registro_F1["Nome Fantasia Represent"] = RTrim(SubStr(Opcoes[indice],8,20))
       If IsAssigned(VSDGPROGRAMACAO)
          Then VSDGPROGRAMACAO      = Registro_F1["Numero da Programacao"]
               VSDGNOMPROGRAMACAO   = Registro_F1["Nome Fantasia Represent"]
       EndIf
  Case OPCAODIVERSAS="Vendedor"  :
       Registro_F1["Codigo do Representante"] = RTrim(SubStr(Opcoes[indice],1,4))
       Registro_F1["Nome Fantasia Represent"] = RTrim(SubStr(Opcoes[indice],6,20))
       If IsAssigned(VSDGREPRESEN)
          Then VSDGREPRESEN  = Registro_F1["Codigo do Representante"]
               VSDGNOMREPR   = Registro_F1["Nome Fantasia Represent"]
       EndIf
  Case OPCAODIVERSAS="Cidade da Visita"  :
       Registro_F1["Cidade"]        = RTrim(SubStr(Opcoes[indice],1,20))
       Registro_F1["UF"]            = RTrim(SubStr(Opcoes[indice],22,2))
       Registro_F1["Codigo_Cidade"] = RTrim(SubStr(Opcoes[indice],25,8))
       If IsAssigned(VSDGCIDADE)
          Then VSDGCIDADE           = Registro_F1["Cidade"]
       EndIf
  Case OPCAODIVERSAS="Cliente da Visita"  :
       Registro_F1["Codigo"]                 = RTrim(SubStr(Opcoes[indice],1,4))
       Registro_F1["Nome Fantasia EmitDest"] = RTrim(SubStr(Opcoes[indice],6,20))
       If IsAssigned(VSDGCLIENTE)
          Then VSDGCLIENTE      = Registro_F1["Codigo"]
               VSDGNOMCLIENTE   = Registro_F1["Nome Fantasia EmitDest"]
       EndIf              
  Case OPCAODIVERSAS="Seleciona_Cidade"  :
       Registro_F1["Cidade"] = RTrim(SubStr(Opcoes[indice],1,20))
       Registro_F1["UF"]     = RTrim(SubStr(Opcoes[indice],22,2))
  Case OPCAODIVERSAS="Unidade"  :
       Registro_F1["Sigla da Unidade"]     = RTrim(SubStr(Opcoes[indice],1,2))
       Registro_F1["Descricao da Unidade"] = RTrim(SubStr(Opcoes[indice],4,20))     
  Case OPCAODIVERSAS="Numero do Documento"  : 
       Registro_F1["Codigo da Empresa"]   = RTrim(SubStr(Opcoes[indice],1,4))
       Registro_F1["Numero do Documento"] = RTrim(SubStr(Opcoes[indice],6,6))
       Registro_F1["Serie do Documento"]  = RTrim(SubStr(Opcoes[indice],13,4))
       Registro_F1["Codigo"]              = RTrim(SubStr(Opcoes[indice],18,4))  
       Registro_F1["Razao Social"]        = RTrim(SubStr(Opcoes[indice],23,40))  
  Case OPCAODIVERSAS="Seleciona_UF"      :
       Registro_F1["UF"] = RTrim(SubStr(Opcoes[indice],1,2))
  Case OPCAODIVERSAS="Seleciona_Cliente" :
       Registro_F1["Codigo"] = RTrim(SubStr(Opcoes[indice],1,4))
  Case OPCAODIVERSAS="Numero Produ‡„o do Corte" :
       Registro_F1["Numero_Producao_Corte"] = RTrim(SubStr(Opcoes[indice],1,6))
  Case OPCAODIVERSAS="Referencia" :
       Registro_F1["Referencia"]        = RTrim(SubStr(Opcoes[indice],1,8))
       Registro_F1["Descricao do Item"] = RTrim(SubStr(Opcoes[indice],10,30))     
       If IsAssigned(VSDGREFERENCIA)
          Then VSDGREFERENCIA = Registro_F1["Referencia"]
               VSDGNOMITEM    = Registro_F1["Descricao do Item"] 
       EndIf
  Case OPCAODIVERSAS="Cartao" Or
       OPCAODIVERSAS="P_Cartao":
       Registro_F1["Nome do Cartao"] = RTrim(SubStr(Opcoes[indice],1,15))
  Case OPCAODIVERSAS="Requisitante" :
       Registro_F1["Codigo do Requisitante"] = RTrim(SubStr(Opcoes[indice],1,6))
       Registro_F1["Descricao Requisitante"] = RTrim(SubStr(Opcoes[indice],8,20))
  Case OPCAODIVERSAS="Op‡”es de Desinat rio" :
       If Search("+",Opcoes[indice])>0
          Then Registro_F1["Destino"]        = RTrim(SubStr(Opcoes[indice],1,16))
          Else Registro_F1["Destino"]        = RTrim(SubStr(Opcoes[indice],1,10))
       EndIf   
  Case OPCAODIVERSAS="Tipo de Opera‡„o"    :
       Registro_F1["Tipo de Operacao"]   =RTrim(SubStr(Opcoes[indice],27,2))
       Registro_F1["Descricao Operacao"] =RTrim(SubStr(Opcoes[indice],1,20))
       If IsAssigned(VSDGTPOPER)
          Then VSDGTPOPER=Registro_F1["Tipo de Operacao"]
       EndIf
  Case OPCAODIVERSAS="Tipo do Lan‡amento" Or OPCAODIVERSAS="Tipo de Lan‡amento" :
       If OPCAODIVERSAS="Tipo do Lan‡amento"
          Then Registro_F1["Tipo do Lancamento"]=RTrim(SubStr(Opcoes[indice],29,1))
          Else Registro_F1["Tipo de Lancamento"]=RTrim(SubStr(Opcoes[indice],29,1)) 
       EndIf
       Registro_F1["Descricao do Lancamento"] =RTrim(SubStr(Opcoes[indice],1,20))
       If IsAssigned(VSDGTPLANC)
          Then If OPCAODIVERSAS="Tipo do Lan‡amento" And 
                  (SubStr(Table(),1,3)="Tit" Or SubStr(Table(),1,3)="Mov" Or SubStr(Table(),1,5)="Notae" Or SubStr(Table(),1,5)="Progf")
                  Then VSDGTPLANC = Registro_F1["Tipo do Lancamento"]
                  Else VSDGTPLANC = Registro_F1["Tipo de Lancamento"]
               EndIf
       EndIf
  Case OPCAODIVERSAS="Codigo da Conta"       :
       Registro_F1["Codigo da Conta"]         =RTrim(SubStr(Opcoes[indice],32,4))
       Registro_F1["Descricao da Conta"]      =RTrim(SubStr(Opcoes[indice],1,30))
       If IsAssigned(VSDGCONTA)
          Then VSDGCONTA          =Registro_F1["Codigo da Conta"]
       EndIf 
  Case OPCAODIVERSAS="Codigo da Cor_Tecido"  : 
       Switch
         Case SubStr(Upper(Table()),1,3)="TAB"   Or 
              SubStr(Upper(Table()),1,5)="NOTAE" Or 
              SubStr(Upper(Table()),1,3)="FAT"   Or 
              SubStr(Upper(Table()),1,3)="PED"   Or
              SubStr(Upper(Table()),1,3)="EXP"    :
              Registro_F1["Descricao da Cor_Tecido"] = RTrim(SubStr(Opcoes[indice],01,20))
              Registro_F1["Codigo da Cor_Tecido"]    = RTrim(SubStr(Opcoes[indice],23,04))
              Registro_F1["Sigla Cor_Tecido"]        = Ltrim(RTrim(SubStr(Opcoes[indice],29,05)))
         Case SYS_CODIGO_CLIENTE="0222" Or SYS_CODIGO_CLIENTE="0425" Or SYS_CODIGO_CLIENTE="0232" : 
              Registro_F1["Codigo da Cor_Tecido"]    = RTrim(SubStr(Opcoes[indice],07,4))
              Registro_F1["Descricao da Cor_Tecido"] = RTrim(SubStr(Opcoes[indice],12,30))
         OtherWise : 
              Registro_F1["Codigo da Cor_Tecido"]    = RTrim(SubStr(Opcoes[indice],32,4))
              Registro_F1["Descricao da Cor_Tecido"] = RTrim(SubStr(Opcoes[indice],01,30))
       EndSwitch 
       If IsAssigned(VSDGCORTECIDO)
          Then VSD_I_Codigo_Cor_Tecido   =Registro_F1["Codigo da Cor_Tecido"]
               VSD_I_Descricao_Cor_Tecido=Registro_F1["Descricao da Cor_Tecido"]
       EndIf
  Case OPCAODIVERSAS="Codigo do Documento":
       Registro_F1["Codigo do Documento"]=Ltrim(RTrim(SubStr(Opcoes[indice],1,4)))
       If IsAssigned(VSDGTPDOCTO)              
          Then VSDGTPDOCTO = Registro_F1["Codigo do Documento"]
       EndIf
  Case OPCAODIVERSAS="Pedido_Motivo_Sequencia":
       Registro_F1["Pedido_Motivo_Sequencia"]=Ltrim(RTrim(SubStr(Opcoes[indice],1,2)))
       Registro_F1["Pedido_Motivo_Descricao"]=Ltrim(RTrim(SubStr(Opcoes[indice],5,20)))
       If IsAssigned(VSDGSEQMOTSITPED)              
          Then VSDGSEQMOTSITPED = Registro_F1["Pedido_Motivo_Sequencia"]
               VSDGDESMOTSITPED = Registro_F1["Pedido_Motivo_Descricao"]
       EndIf     
  Case OPCAODIVERSAS="Tipos/Grade" :
       Registro_F1["Tipo de Grade"]          =SubStr(Opcoes[indice],1,1)
       Registro_F1["Descricao da Grade"]     =SubStr(Opcoes[indice],3,20)
       If IsAssigned(VSDGITEMTPGRADE)
          Then VSDGITEMTPGRADE       =Registro_F1["Tipo de Grade"]
               VSDGNOMITEMTPGRADE    =Registro_F1["Descricao da Grade"]
       EndIf
  Case OPCAODIVERSAS="Grade/Opcoes" :
       Registro_F1["Grade"]                =RTrim(SubStr(Opcoes[indice],1,4))
       If IsAssigned(VSDGITEMGRADE)
          Then VSDGITEMGRADE     =Registro_F1["Grade"]
       EndIf
  Case OPCAODIVERSAS="Familia"        :
       Registro_F1["Codigo da Familia"]      =SubStr(Opcoes[indice],1,3)
       Registro_F1["Descricao da Familia"]   =SubStr(Opcoes[indice],6,20)
       If IsAssigned(VSDGFAMILIA)
          Then VSDGFAMILIA    =Registro_F1["Codigo da Familia"]
               VSDGNOMFAMILIA =Registro_F1["Descricao da Familia"]
       EndIf
  Case OPCAODIVERSAS="Problema"        :
       Registro_F1["Sequencia"]              =Ltrim(RTrim(SubStr(Opcoes[indice],1,3)))
       Registro_F1["Descricao_Problema"]     =SubStr(Opcoes[indice],5,25)       
  Case OPCAODIVERSAS="Grupo"          :
       Registro_F1["Codigo do Grupo"]        =SubStr(Opcoes[indice],1,3)
       Registro_F1["Descricao do Grupo"]     =SubStr(Opcoes[indice],6,20)
       If IsAssigned(VSDGGRUPO)
          Then VSDGGRUPO      =Registro_F1["Codigo do Grupo"]
               VSDGNOMGRUPO   =Registro_F1["Descricao do Grupo"]
       EndIf
  Case OPCAODIVERSAS="SubGrupo"          :
       Registro_F1["Codigo do SubGrupo"]     =SubStr(Opcoes[indice],1,3)
       Registro_F1["Descricao do SubGrupo"]  =SubStr(Opcoes[indice],6,20)
       If IsAssigned(VSDGSUBGRUPO)
          Then VSDGSUBGRUPO   =Registro_F1["Codigo do SubGrupo"]
               VSDGNOMSUBGRUPO=Registro_F1["Descricao do SubGrupo"]
       EndIf
  Case OPCAODIVERSAS="Conta"    :
       Registro_F1["Codigo da Conta"]        =RTrim(SubStr(Opcoes[indice],1,4))
       Registro_F1["Descricao da Conta"]     =RTrim(SubStr(Opcoes[indice],6,20))
       If IsAssigned(VSDGCONTA)
          Then VSDGCONTA         =Registro_F1["Codigo da Conta"]
       EndIf
  Case OPCAODIVERSAS="ItemPedido":
       Registro_F1["Item do Pedido"   ] = NumVal(SubStr(Opcoes[indice],1,3))
       Registro_F1["Codigo do Item"   ] = RTrim(SubStr(Opcoes[indice],5,10))
       Registro_F1["Quantidade"       ] = NumVal(SubStr(RTrim(SubStr(Opcoes[indice],51,13)),1,Search(",",RTrim(SubStr(Opcoes[indice],51,13)))-1)
                                          +"."+SubStr(RTrim(SubStr(Opcoes[indice],51,13)),Search(",",RTrim(SubStr(Opcoes[indice],51,13)))+1,2))
  Case OPCAODIVERSAS="Autorizado" :
       Registro_F1["Nome"               ] = RTrim(SubStr(Opcoes[indice],06,38))
       Registro_F1["CGC/CPF"            ] = RTrim(SubStr(Opcoes[indice],45,18))
       If RTrim(SubStr(Opcoes[indice],64,10))<>""
          Then Registro_F1["Data da Autorizacao"] = DateVal(RTrim(SubStr(Opcoes[indice],67,02)) +"/"+
                                                            LTrim(SubStr(Opcoes[indice],64,02)) +"/"+
                                                            RTrim(SubStr(Opcoes[indice],70,04)))
          Else Registro_F1["Data da Autorizacao"] = BlankDate()
       Endif
  Case OPCAODIVERSAS="Tabela" :
       Registro_F1["Codigo da Tabela"]     =RTrim(SubStr(Opcoes[indice],1,5))
       Registro_F1["Descricao da Tabela"]  =RTrim(SubStr(Opcoes[indice],7,70))
       If IsAssigned(VSDGTABELA)
          Then VSDGTABELA        =Registro_F1["Codigo da Tabela"]
       EndIf
  Case OPCAODIVERSAS="Represen" :
       Registro_F1["Codigo do Representante"]      =RTrim(SubStr(Opcoes[indice],1,4))
       Registro_F1["Nome Fantasia Represent"]  =RTrim(SubStr(Opcoes[indice],6,20))
       If IsAssigned(VSDGREPRESEN)
          Then VSDGREPRESEN      =Registro_F1["Codigo do Representante"]
       EndIf
  Case OPCAODIVERSAS="Status" :
       Registro_F1["Codigo do Status"]    =RTrim(SubStr(Opcoes[indice],1,2))
       Registro_F1["Descricao do Status"] =RTrim(SubStr(Opcoes[indice],4,20))
  Case OPCAODIVERSAS="Marcas" :
       Registro_F1["Codigo da Marca"]     =RTrim(SubStr(Opcoes[indice],1,3))
       Registro_F1["Descricao da Marca"]  =RTrim(SubStr(Opcoes[indice],5,20))
       If IsAssigned(VSDGMARCA)
          Then VSDGMARCA      = Registro_F1["Codigo da Marca"]
               VSDGNOMMARCA   = Registro_F1["Descricao da Marca"]
       EndIf
  Case OPCAODIVERSAS="ECF" :
       Registro_F1["Numero ECF"]        = AlinhM(Rtrim(SubStr(Opcoes[indice],1,2)),2)
       Registro_F1["Numero de Serie"]   = Rtrim(SubStr(Opcoes[indice],4,25))
       Registro_F1["Reinicio Operacao"] = Rtrim(SubStr(Opcoes[indice],30,3))
       Registro_F1["Codigo do Usuario"] = Rtrim(SubStr(Opcoes[indice],39,4))
       If IsAssigned(VSDGNECF)
          Then VSDGNECF      = Registro_F1["Numero ECF"]
               VSDGNSERIE    = Registro_F1["Numero de Serie"]
               VSDGNREINICIO = Registro_F1["Reinicio Operacao"]
               VSDGCHAPA     = Registro_F1["Codigo do Usuario"]
       EndIf
  Case OPCAODIVERSAS="Preco_Confeccao" :  
       Registro_F1["Preco_Confeccao"]=Ltrim(RTrim(SubStr(Opcoes[indice],1,3)))
       Registro_F1["Preco Unitario"]=Ltrim(RTrim(SubStr(Opcoes[indice],66,7)))
       If IsAssigned(VSD_I_Tabela_Preco_Seq)
          Then VSD_I_Tabela_Preco_Seq = Registro_F1["Preco_Confeccao"]
               TAB_I_Custo_Unitario   = Registro_F1["Preco Unitario"]
       EndIf     
  Case OPCAODIVERSAS="Empresas" :
       Registro_F1["Codigo da Empresa"]      =RTrim(SubStr(Opcoes[indice],23,4))
       Registro_F1["Nome Fantasia Empresa"]  =RTrim(SubStr(Opcoes[indice],1,20))
       If IsAssigned(VSDGEMPRESA)
          Then VSDGEMPRESA       =Registro_F1["Codigo da Empresa"]
       EndIf
  Case OPCAODIVERSAS="Destinacoes" :
       Registro_F1["Codigo da Destinacao"]   =RTrim(SubStr(Opcoes[indice],33,3))
       Registro_F1["Descricao da Destinacao"]=RTrim(SubStr(Opcoes[indice],1,30))
       If IsAssigned(VSDGDESTIN)
          Then VSDGDESTIN        =Registro_F1["Codigo da Destinacao"]
       EndIf

EndSwitch
EndProc    ;Monta_RegistroF1()
                 
;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc Seleciona_Opcoes(OPCAODIVERSAS,SEMRETORNO)
Private OPCAODIVERSAS, Cont_Opcoes, ii, IJ, FJ, LJ, AJ, nc, SEMRETORNO
                       
If DynArraySize(Opcoes)=0
   Then Mensagem("Tabela sem Registros !")
        Return False
EndIf

If IsAssigned(Indice_ArrayElement)
   Then ArrayElement = Indice_ArrayElement
   Else ArrayElement = 0
EndIf

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

Switch      
 ;Case OPCAODIVERSAS="Condicao de Pagamento" :
 ;Case OPCAODIVERSAS="Forma de Pagamento"  :                         
  Case OPCAODIVERSAS="Numero Produ‡„o do Corte": LJ=32
  Case OPCAODIVERSAS="Tipo de Lan‡amento"      : LJ=32 nc=1
  Case OPCAODIVERSAS="Tipo do Lan‡amento"      : LJ=32 nc=1
  Case OPCAODIVERSAS="Codigo da Conta"         : LJ=67 nc=1
  Case OPCAODIVERSAS="Codigo da Cor_Tecido" And
       SEMRETORNO <> "F1_Temp"                 : LJ=43 nc=1
  Case OPCAODIVERSAS="Codigo do Documento"     : LJ=66 nc=1
  Case OPCAODIVERSAS="Tipos/Grade"             : LJ=74 nc=1
  Case OPCAODIVERSAS="Grade/Opcoes"            : LJ=49 nc=5 AJ=10
  Case OPCAODIVERSAS="Familia"               Or
       OPCAODIVERSAS="Grupo"                 Or
       OPCAODIVERSAS="SubGrupo"              Or
       OPCAODIVERSAS="Marcas"                  : LJ=27 nc=1
  Case OPCAODIVERSAS="ECF"                     : LJ=10 nc=1
  Case OPCAODIVERSAS="Represen"              Or
       OPCAODIVERSAS="Conta"                   : LJ=27 nc=1
  Case OPCAODIVERSAS="ItemPedido"              : LJ=65 nc=1
  Case OPCAODIVERSAS="Autorizado"              : LJ=75 nc=1
  ;Case OPCAODIVERSAS="Tabela"                  : LJ=50 nc=1
  Case OPCAODIVERSAS="Empresas"                : LJ=47 nc=1
  Case OPCAODIVERSAS="Destinacoes"             : LJ=42 nc=1
  Case OPCAODIVERSAS="Op‡”es de Desinat rio"   : LJ=48 nc=1
  OtherWise                                    : LJ=31 nc=1
EndSwitch

IJ=2
FJ=1 
Switch
  Case OPCAODIVERSAS="TpDoctos"                : IJ = 7
                                                 FJ = 12 
                                                 LJ = 50
                                                 AJ = 5
  Case OPCAODIVERSAS="Pedido_Motivo_Sequencia" : LJ=30 nc=1
                                                 IJ=3  FJ=47
  Case OPCAODIVERSAS="Numero Produ‡„o do Corte": IJ=07 FJ=00 nc=1 
                                                 If AJ > 6
                                                    Then AJ = 6
                                                 EndIf   
; Case OPCAODIVERSAS="Cartao"  Or
;      OPCAODIVERSAS="P_Cartao"                : IJ=10 FJ=22 nc=1 AJ=4
  Case OPCAODIVERSAS="Codigo da Cor_Tecido"    : If SubStr(Table(),1,4)="Pfac" 
                                                    Then IJ=13 
                                                         FJ=9               
                                                 EndIf
  Case OPCAODIVERSAS="ECF"                     : LJ=45 nc=1 IJ=13  FJ=4                                               
  Case OPCAODIVERSAS="Op‡”es de Desinat rio"   : If Search(",",SEMRETORNO)>0
                                                    Then IJ=NumVal(SubStr(SEMRETORNO,1,Search(",",SEMRETORNO)-1)) 
                                                         FJ=NumVal(SubStr(SEMRETORNO,Search(",",SEMRETORNO)+1,Len(SEMRETORNO)))
                                                 EndIf                                                      
EndSwitch       

If SEMRETORNO = "F1_Temp"    
  Then Switch
         Case OPCAODIVERSAS="Pedido_Motivo_Sequencia": IJ = 16
                                                       FJ = 37 
                                                       LJ = 37
                                                       AJ = 5
                                                       
         Case OPCAODIVERSAS="Cartao"                 : IJ = 7
                                                       FJ = 27 
                                                       LJ = 27
                                                       AJ = 7
         Case OPCAODIVERSAS="Unidade"                : IJ = 12
                                                       FJ = 38 
                                                       LJ = 27
                                                       AJ = 7
         Case OPCAODIVERSAS="Programa‡„o da Visita"  : IJ = 5
                                                       FJ = 46 
                                                       LJ = 27
                                                       AJ = 10
         Case OPCAODIVERSAS="Vendedor"               : IJ = 7
                                                       FJ = 13 
                                                       LJ = 32
                                                       AJ = 10         
         Case OPCAODIVERSAS="Numero do Documento"    : IJ = 3
                                                       FJ = 0 
                                                       LJ = 65
                                                       AJ = 10
                                                       
         Case OPCAODIVERSAS="Cidade da Visita"       : IJ = 7
                                                       FJ = 26 
                                                       LJ = 35
                                                       AJ = 10       
         Case OPCAODIVERSAS="Cliente da Visita"      : IJ = 13
                                                       FJ = 13 
                                                       LJ = 32
                                                       AJ = 6 
         Case OPCAODIVERSAS="Marcas"     : IJ = 5
                                           FJ = 9 
                                           LJ = 32
                                           AJ = 10
         
         Case OPCAODIVERSAS="Referencia" : IJ = 7
                                           FJ = 9
                                           LJ = 38
                                           AJ = 8
         Case OPCAODIVERSAS="Codigo da Cor_Tecido" : IJ = 7
                                                     FJ = 9
                                                     LJ = 38
                                                     AJ = 8                                  
       EndSwitch
  Else Switch         
         Case OPCAODIVERSAS="Status"                  : IJ = 9
                                                        FJ = 26
                                                        
         Case OPCAODIVERSAS="Numero Produ‡„o do Corte": IJ=07 FJ=00 nc=1 
                                                        If AJ > 6
                                                           Then AJ = 6
                                                        EndIf   
;        Case OPCAODIVERSAS="Cartao"  Or
;             OPCAODIVERSAS="P_Cartao"                : IJ=10 FJ=22 nc=1 AJ=4
         Case OPCAODIVERSAS="Codigo da Cor_Tecido"    : If SubStr(Table(),1,4)="Pfac" 
                                                           Then IJ=13 
                                                                FJ=9               
                                                        EndIf
         Case OPCAODIVERSAS="Op‡”es de Desinat rio"   : If Search(",",SEMRETORNO)>0
                                                           Then IJ=NumVal(SubStr(SEMRETORNO,1,Search(",",SEMRETORNO)-1)) 
                                                                FJ=NumVal(SubStr(SEMRETORNO,Search(",",SEMRETORNO)+1,Len(SEMRETORNO)))
                                                        EndIf                                                      
       EndSwitch         
EndIf       

;---- Coluna e Largura do Show Dialog ------------------------------------------
If SEMRETORNO <> "" And Search(",",SEMRETORNO)>0
   Then LIN_INI = SubStr(SEMRETORNO,1,Search(",",SEMRETORNO)-1)
        COL_INI = SubStr(SEMRETORNO,Search(",",SEMRETORNO)+1,Len(SEMRETORNO))
        If LIN_INI<>"" And COL_INI<>""
           Then Switch
                  Case OPCAODIVERSAS="Referencia" Or
                       OPCAODIVERSAS="Codigo da Cor_Tecido" : IJ = NumVal(LIN_INI) ;Linha Inicial
                                                              FJ = NumVal(COL_INI) ;Coluna Inicial
                                                              LJ = 33
                                                              AJ = 6
                EndSwitch
        EndIf        
EndIf                                      

Switch
  Case OPCAODIVERSAS = "P_Cartao"                : VSD_TITULO = "Cartäes"
  Case OPCAODIVERSAS = "Pedido_Motivo_Sequencia" : VSD_TITULO = "Motivo da Situa‡Æo"   
  OtherWise                                      : VSD_TITULO = OPCAODIVERSAS
EndSwitch
         

UX = 5
BJ = 0
XJ = 0
KJ = 0
                  
VSD_SUBTIT=""                  
Switch
  Case OPCAODIVERSAS="TpDoctos"        :
       VSD_TITULO="Tipo de Documentos"
  Case OPCAODIVERSAS="Preco_Confeccao" :
       VSD_TITULO="Pre‡o p/ Tamanho"
       LJ = Len(VSD_SUBTIT)+1
       UX = 4
       BJ = 1
       XJ = 1
       If DynArraySize(Opcoes)<4
          Then AJ = 4
               KJ = 2
          Else If DynArraySize(Opcoes)+1>=19
                  Then AJ = 19
                  Else AJ = DynArraySize(Opcoes)+1
               EndIf   
               KJ = 1
       EndIf
EndSwitch 
          
Showdialog VSD_TITULO Proc "Opcoes_Dialog"
Trigger "OPEN","ARRIVE"
Key "TAB","ReverseTab","ENTER","ESC"
 @ IJ,FJ height AJ+2 width LJ+UX
 @ 00,01 ?? VSD_SUBTIT

PickDynArray @BJ,01 Height AJ-KJ width LJ
Columns nc
Opcoes
Tag "TG_OPCAO"
To ArrayElement

PaintCanvas Attribute 121 00, 01, 00, LJ
EndDialog

If RetVal
   Then If SEMRETORNO<>"SR"
           Then Switch
                  Case OPCAODIVERSAS="TpDoctos"                   : If SEMRETORNO = "F1_Temp"
                                                                       Then VSDGTPDOCTO = Registro_F1["Codigo do Documento"]
                                                                            VSDGTDOCTO  = Registro_F1["Tipo do Documento"]
                                                                            VSDGSDOCTO  = Registro_F1["Serie do Documento"] 
                                                                    EndIf
                  Case OPCAODIVERSAS="Condicao de Pagamento"      : VSDGCONDPGTO       = Registro_F1["Condicao de Pagamento"]
                                                                    VSDGNOMCONDPGTO    = Registro_F1["Descricao CondPagto"]
                                                                    [Condicao de Pagamento] = VSDGCONDPGTO
                                                                    [Descricao CondPagto  ] = VSDGNOMCONDPGTO 
                  Case OPCAODIVERSAS="Forma de Pagamento"         : VSDGTPPAGTO        = Registro_F1["Tipo do Pagamento"]
                                                                    VSDGNOMTPPAGTO     = Registro_F1["Descricao Tipo Pagamento"]
                                                                    [Forma de Pagamento] = VSDGTPPAGTO
                  Case OPCAODIVERSAS="Programa‡„o da Visita"      : VSDGPROGRAMACAO    = Registro_F1["Numero da Programacao"]
                                                                    VSDGNOMPROGRAMACAO = Registro_F1["Nome Fantasia Represent"]
                  Case OPCAODIVERSAS="Vendedor"                   : VSDGREPRESEN       = Registro_F1["Codigo do Representante"]
                                                                    VSDGNOMREPR        = Registro_F1["Nome Fantasia Represent"]
                  Case OPCAODIVERSAS="Cidade da Visita"           : VSDGCIDADE         = Registro_F1["Cidade"]
                  Case OPCAODIVERSAS="Cliente da Visita"          : VSDGCLIENTE        = Registro_F1["Codigo"]
                                                                    VSDGNOMCLIENTE     = Registro_F1["Nome Fantasia EmitDest"]
                  Case OPCAODIVERSAS="Status"                     : [Descricao do Status]  = Registro_F1["Descricao do Status"]
                  Case OPCAODIVERSAS="Seleciona_Cidade"           : []   = Registro_F1["Cidade"]
                                                                    [UF] = Registro_F1["UF"]
                  Case OPCAODIVERSAS="Cartao"                     : [] = Registro_F1["Nome do Cartao"]
                  Case OPCAODIVERSAS="Unidade"                    : VSD_I_UN_Item = Registro_F1["Sigla da Unidade"]
                  Case OPCAODIVERSAS="Numero do Documento"        : [Numero do Documento] = Registro_F1["Numero do Documento"]
                                                                    [Serie do Documento ] = Registro_F1["Serie do Documento"]
                                                                    [Codigo             ] = Registro_F1["Codigo"]
                                                                    [Razao Social       ] = Registro_F1["Razao Social"]
                  Case OPCAODIVERSAS="Seleciona_UF"               : [] = Registro_F1["UF"]
                  Case OPCAODIVERSAS="Seleciona_Cliente"          : [] = Registro_F1["Codigo"]
                  Case OPCAODIVERSAS="Numero Produ‡„o do Corte"   : [] = Registro_F1["Numero_Producao_Corte"]
                  Case OPCAODIVERSAS="Referencia"                 : VSDGREFERENCIA = Registro_F1["Referencia"]
                                                                    If SEMRETORNO = "F1_Temp"
                                                                       Then VSDGNOMITEM    = Registro_F1["Descricao do Item"]
                                                                    EndIf
                  Case OPCAODIVERSAS="Cartao" Or                    
                       OPCAODIVERSAS="P_Cartao"                   : VSDGCARTAO = Registro_F1["Nome do Cartao"]               
                  Case OPCAODIVERSAS="Requisitante"               : []=Registro_F1["Codigo do Requisitante"]   
                  Case OPCAODIVERSAS="Op‡”es de Desinat rio"   : If Search(",",SEMRETORNO)>0                ;ShowDialog
                                                                    Then VSDGOPDEST=Registro_F1["Destino"] 
                                                                    Else []=Registro_F1["Destino"]
                                                                 EndIf      
                  Case OPCAODIVERSAS="Tipo de Opera‡„o"        : []=Registro_F1["Tipo de Operacao"]
                  Case OPCAODIVERSAS="Tipo do Lan‡amento"      : 
                       If SubStr(Table(),1,3)="Mov"
                           Then []=Registro_F1["Tipo do Lancamento"]
                           Else []=Registro_F1["Tipo de Lancamento"]
                       EndIf
                  Case OPCAODIVERSAS="Tipo de Lan‡amento"      : 
                       If Table()="Titulos"
                           Then []=Registro_F1["Tipo do Lancamento"]
                           Else []=Registro_F1["Tipo de Lancamento"]
                       EndIf
                  Case OPCAODIVERSAS="Codigo da Conta"         : []=Registro_F1["Codigo da Conta"]

                  Case OPCAODIVERSAS="Codigo da Cor_Tecido" : If SEMRETORNO = "F1_Temp"
                                                                 Then VSDGCORTECIDO    = Registro_F1["Codigo da Cor_Tecido"]
                                                                      VSDGDESCORTECIDO = Registro_F1["Descricao da Cor_Tecido"]
                                                                 Else [Codigo da Cor_Tecido   ]=Registro_F1["Codigo da Cor_Tecido"]
                                                                      [Descricao da Cor_Tecido]=Registro_F1["Descricao da Cor_Tecido"]
                                                              EndIf        
                  Case OPCAODIVERSAS="Codigo do Documento"  : []=Registro_F1["Codigo do Documento"]
                  Case OPCAODIVERSAS="Pedido_Motivo_Sequencia" : If SEMRETORNO = "F1_Temp"
                                                                    Then VSDGSEQMOTSITPED = Registro_F1["Pedido_Motivo_Sequencia"]
                                                                         VSDGDESMOTSITPED = Registro_F1["Pedido_Motivo_Descricao"]
                                                                    Else []=Registro_F1["Pedido_Motivo_Sequencia"]
                                                                 EndIf
                  Case OPCAODIVERSAS="Tipos/Grade"          : []=Registro_F1["Tipo de Grade"]
                  Case OPCAODIVERSAS="Grade/Opcoes"         : []=Registro_F1["Grade"]
                  Case OPCAODIVERSAS="Familia"              : []=Registro_F1["Codigo da Familia"]
                  Case OPCAODIVERSAS="Grupo"                : []=Registro_F1["Codigo do Grupo"]
                  Case OPCAODIVERSAS="SubGrupo"             : []=Registro_F1["Codigo do SubGrupo"]
                  Case OPCAODIVERSAS="Marcas"               : If SEMRETORNO <> "F1_Temp"
                                                                 Then []=Registro_F1["Codigo da Marca"]
                                                                 Else VSDGMARCA    = Registro_F1["Codigo da Marca"]
                                                                      VSDGNOMMARCA = Registro_F1["Descricao da Marca"]
                                                              EndIf
                  Case OPCAODIVERSAS="ECF"                  : If SEMRETORNO <> "F1_Temp"
                                                                 Then []=Registro_F1["Numero ECF"]
                                                                 Else VSDGNECF      = Registro_F1["Numero ECF"]
                                                                      VSDGNSERIE    = Registro_F1["Numero de Serie"]
                                                                      VSDGNREINICIO = Registro_F1["Reinicio Operacao"]
                                                                      VSDGCHAPA     = Registro_F1["Codigo do Usuario"]
                                                              EndIf
                  Case OPCAODIVERSAS="Preco_Confeccao"      : VSD_I_Tabela_Preco_Seq = Registro_F1["Preco_Confeccao"]
                                                              TAB_I_Custo_Unitario   = Registro_F1["Preco Unitario"]                          
                  Case OPCAODIVERSAS="Empresas"             : []=Registro_F1["Codigo da Empresa"]
                  Case OPCAODIVERSAS="Represen"             : []=Registro_F1["Codigo do Representante"]
                  Case OPCAODIVERSAS="Conta"                : []=Registro_F1["Codigo da Conta"]
                  Case OPCAODIVERSAS="Tabela"               : []=Registro_F1["Codigo da Tabela"]
                  Case OPCAODIVERSAS="ItemPedido"           : []=Registro_F1["Item do Pedido"]
                  Case OPCAODIVERSAS="Autorizado"           : [Nome do Autorizado  ]=Registro_F1["Nome"]
                                                              [CPF do Autorizado   ]=Registro_F1["CGC/CPF"]
                                                              [Data da Autorizacao ]=Registro_F1["Data da Autorizacao"]
                                                            
                  Case OPCAODIVERSAS="Empresas"             : []=Registro_F1["Codigo da Empresa"]
                  Case OPCAODIVERSAS="Destinacoes"          : []=Registro_F1["Codigo da Destinacao"]
                EndSwitch
                Return True
        EndIf
   Else Return False
EndIf
EndProc   ; (Seleciona_Opcoes)

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog Grade                                      *
;*******************************************************************************
Proc Opcoes_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=" Esc=Retornar  Enter=Selecionar  =Mover  "

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Evento["KeyCode"] = 9 Or Evento["KeyCode"] = -15: Temp=False
      Case Evento["KeyCode"] = 27:
           Resultado_F1=False
           CancelDialog
      Case Evento["KeyCode"] = 13: 
           Temp=False
           MontaRegistro_F1(OPCAODIVERSAS,ArrayElement)
           Resultado_F1=True
           Indice_ArrayElement=ControlValue("TG_OPCAO")
           AcceptDialog
   EndSwitch
EndIf

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Return Temp
EndProc      ; (Opcoes_Dialog)

;*******************************************************************************
;* Rotina p/ Montar Diretorio de Trabalho                                      *
;*******************************************************************************
Proc Monta_Dir_Trab(DTINI,DTFIM)
Private Anoi, Mesi, Anof, Mesf

Dir_Trab_Fixo=Directory()
If IsBlank(DTFIM)
   Then Dir_Trab="DIRETORIO_CORRENTE"
        Return
EndIf

Dir_Trab_Fim="Fechames\\"+StrVal(Year(DTFIM))+"_"+AlinhM(StrVal(Month(DTFIM)),2)+"\\"
If IsBlank(DTINI)
   Then Dir_Trab     = Dir_Trab_Fim
        Dir_Trab_NMM = 1
        Dir_Trab_CMM = 0.00001
        Return
   Else Dir_Trab_Ini = "Fechames\\"+StrVal(Year(DTINI))+"_"+AlinhM(StrVal(Month(DTINI)),2)+"\\"
        Dir_Trab     = Dir_Trab_Ini
        Dir_Trab_NMM = 2
        Dir_Trab_CMM = 0
EndIf

Mesi=Month(DTINI)
Anoi=Year(DTINI)

Mesf=Month(DTFIM)
Anof=Year(DTFIM)

While True
  If Mesi=13   Then Anoi=Anoi+1 Mesi=1     EndIf
  If Anoi=Anof And Mesi=Mesf Then QuitLoop EndIf
  Mesi=Mesi+1
  Dir_Trab_NMM=Dir_Trab_NMM+1
EndWhile

EndProc        ;  (Monta_Dir_Trab)

;*******************************************************************************
;* Rotina p/ Setar Diretorio Fechames                                          *
;*******************************************************************************
Proc Novo_Dir_Trab()
Private MM, AAAA, pos, Dir_Trab_MSG

If Dir_Trab=""
   Then Aguarde("Aguarde, processando")
        Return False
EndIf

If Dir_Trab="DIRETORIO_CORRENTE"
   Then Dir_Trab=""
        Dir_Trab_MSG="Atual [EM ABERTO]"
        BARRA_STRING=""
        Aguarde("Filtrando pasta "+Dir_Trab_MSG+" "+BARRA_STRING)
   Else While True
          pos=SearchFrom("Fechames",Upper(Dir_Trab),1)
          MM  =NumVal(SubStr(Dir_Trab,pos+14,2))
          AAAA=NumVal(SubStr(Dir_Trab,pos+09,4))

          If Dir_Trab_CMM>0
             Then If MM=12
                     Then MM=1
                          AAAA=AAAA+1
                     Else MM=MM+1
                  EndIf

                  Dir_Trab="Fechames\\"+AlinhM(StrVal(AAAA),4)+"_"+AlinhM(StrVal(MM),2)+"\\"
          EndIf

          Dir_Trab_CMM=Dir_Trab_CMM+1
          Barra(Dir_Trab_NMM, Dir_Trab_CMM)

          If Dir_Trab>Dir_Trab_Fim
             Then Dir_Trab=""
                  Dir_Trab_MSG="Atual [EM ABERTO]"
             Else Dir_Trab_MSG=AlinhM(StrVal(MM),2)+"/"+AlinhM(StrVal(AAAA),4)+Spaces(10)
          EndIf
          Aguarde("Filtrando pasta "+Dir_Trab_MSG+" "+BARRA_STRING)
          If DirExists(Dir_Trab_Fixo+Dir_Trab)>0 or
             DirExists(Upper(Dir_Trab_Fixo+Dir_Trab))>0
             Then QuitLoop
          EndIf
        EndWhile
EndIf

Return True
EndProc    ;  (Novo_Dir_Trab)

;*******************************************************************************
;Rotina Procura Diretorios Fechames                                            *
;*******************************************************************************
Proc Diretorios_Fechames(Nome_Diretorio)
Private Nome_Diretorio
ClearAll
Aguarde("Aguarde, Verificando Diret¢rios do Fechames")

If IsAssigned(Array_Diretorios)
   Then Release Vars Array_Diretorios
EndIf
DynArray Array_Diretorios[]

wcs= Lista_Diretorio(SubStr(Directory(),1,2)+Nome_Diretorio+"FECHAMES")

For wcs from 1 to DynArraySize(Array_Lista_Diretorios)
  Array_Diretorios[wcs]=Array_Lista_Diretorios[wcs]
EndFor

LimpAguarde()

Release Vars Array_Lista_Diretorios
EndProc    ;  (Diretorios_FechaMes)

;*******************************************************************************
;Rotina Procura Diretorios Fechames - Consulta                                 *
;*******************************************************************************
Proc Diretorios_Fechames_C(Nome_Diretorio)
Private Nome_Diretorio
ClearAll
Aguarde("Aguarde, Verificando Diret¢rios do Fechames")

If IsAssigned(Array_Diretorios)
   Then Release Vars Array_Diretorios
EndIf
DynArray Array_Diretorios[]
Array_Diretorios[1]=" Atual"

wcs= Lista_Diretorio(SubStr(Directory(),1,2)+Nome_Diretorio+"FECHAMES")

For wcs from 1 to DynArraySize(Array_Lista_Diretorios)
  Array_Diretorios[wcs+1]=Array_Lista_Diretorios[wcs]
EndFor

LimpAguarde()

Release Vars Array_Lista_Diretorios
EndProc    ;  (Diretorios_FechaMes)

;*******************************************************************************
;Rotina Lista Diretorios FechAno                                                      *
;*******************************************************************************
Proc Diretorios_FechAno(Nome_Diretorio)
Private Nome_Diretorio
Aguarde("Aguarde, Verificando Diret¢rios FechAno ")

If IsAssigned(Array_Dir_FechAno)
   Then Release Vars Array_Dir_FechAno
EndIf
DynArray Array_Dir_FechAno[]

If IsAssigned(Array_Diretorios)
   Then Release Vars Array_Diretorios
EndIf
DynArray Array_Diretorios[]

wcs= Lista_Diretorio(SubStr(Directory(),1,2)+Nome_Diretorio)

For wcs from 1 to DynArraySize(Array_Lista_Diretorios)
  Array_Diretorios[wcs]= Array_Lista_Diretorios[wcs]
EndFor

LimpAguarde()

Release Vars Array_Lista_Diretorios
EndProc    ;  (Diretorios_FechAno)


;*******************************************************************************
;* ROTINA Setar variavel com tecla acionada                                    *
;*******************************************************************************
Proc Seta_Tecla_Acionada()
Editor Open "Savevars.sc"
Editor Find "SYS_TECLA_ACIONADA"
If RetVal
   Then DELETELINE
        ENTER
        UP
        TypeIn "SYS_TECLA_ACIONADA = \""
        TypeIn SYS_TECLA_ACIONADA
        TypeIn "\""
        DOWN
EndIf
Do_It!
EndProc   ; (Seta_Tecla_Acionada)

;******************************************************************************
;** Monta Procedures                                                        ***
;******************************************************************************
Proc Seta_Sequencia(NrItem,Bloqueia)
Private NrItem, Tamanho,Bloqueia,OK
OK=True

If SubStr(Type([]),1,1)="A"
   Then If IsBlank([])
           Then If IsBlank(NrItem)
                   Then NrItem="1"
                   Else NrItem=StrVal(NumVal(NrItem)+1)
                EndIf
           Else NrItem=[]
        EndIf
        Tamanho=NumVal(SubStr(Type([]),2,3))
        If Len(NrItem)>Tamanho
           Then If Bloqueia Then Mensagem("Numero m ximo da sequencia permitida: "+Fill("9",Tamanho)+" !") EndIf
                NrItem=""
                OK=False
           Else NrItem=AlinhM(StrVal(NrItem),Tamanho)
        EndIf
   Else If IsBlank([])
           Then If IsBlank(NrItem)
                   Then NrItem=1
                   Else NrItem=NrItem+1
                EndIf
           Else NrItem=[]
        EndIf
        If SubStr(Type([]),1,1)="S"
           Then If NrItem>32767
                   Then If Bloqueia Then Mensagem("Numero m ximo da sequencia permitida: 32.767 !") EndIf
                        NrItem=BlankNum()
                        OK=False
                EndIf
           Else If NrItem>9999999999998
                   Then If Bloqueia Then Mensagem("Numero m ximo da sequencia permitida: 9.999.999.999.998 !") EndIf
                        NrItem=BlankNum()
                        OK=False
                EndIf
        EndIf
EndIf
[]=NrItem
Return OK
EndProc  ; (Seta_Sequencia)

;*******************************************************************************
;* Lista_Dialog_Usuarios                                                       *
;*******************************************************************************
Proc Dialog_Lista_Usuarios(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
                                    
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="UPDATE"
   Then Switch
          Case Campo="ATUALIZA" : 
             If Not Monta_Lista_Usuarios() 
                Then AtuaOk=True
                     AcceptDialog 
                Else Campo="TG_Registro" 
             EndIf
          OtherWise             : Return Temp
        EndSwitch  
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False
     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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_Registro"  : CancelDialog
            Case Campo="YES"          : Campo="TG_Registro"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_Registro": Campo="YES"
                    Case Campo="ATUALIZA"   : 
                       If Not Monta_Lista_Usuarios() 
                          Then AtuaOk=True
                               AcceptDialog
                          Else Campo="TG_Registro" 
                       EndIf
                  EndSwitch
          EndIf                     
   EndSwitch 
EndIf
Switch  
  Case Campo="YES":
     MSG_CAMPO="Retornar"
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc ;Dialog_Lista_Usuarios()

;*******************************************************************************
; Rotina para verificar usuario na rede                                        *
;*******************************************************************************
Proc Ver_Lista_Usuarios(MSG)
Private s,MSG_CABECALHO,AtuaOk
; Essa Lista ‚ dinƒmica, extende de acordo com o n£mero de usu rios conectados!

If MSG<>""
   Then MSG_CABECALHO="Existem outros usu rios utilizando o sistema"
        s= "Para que esta rotina seja executada, somente vocˆ ‚ quem  deve//" 
        s=s+"estar utilizando o sistema !//"
        s=s+"Obs: Se vocˆ tiver certeza de que nenhum outro usu rio esteja//"
        s=s+"     utilizando  o sistema neste momento, fa‡a o procedimento//"
        s=s+"     de exclus„o dos arquivos  \".NET\" e  \".LCK\", usando o//"            
        s=s+"     VISEBOOT no servidor e sua esta‡Æo.//"            
        s=s+"     D£vida neste procedimento, contacte o suporte."             
        NL=7

   Else MSG_CABECALHO="Lista de usu rios utilizando o sistema"
        s=""
        NL=0

EndIf

tpmsg=""
Monta_Mensagem(s)

AtuaOk=False
ShowDialog MSG_CABECALHO Proc "Dialog_Lista_Usuarios"
Trigger "OPEN","ARRIVE","UPDATE"
Key "F1","ENTER","ESC",32,
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
 @ 02,12   Height 12+NL Width 67

  PickDynArray @00,01 Height 7 width 63
   Columns 3
    Array_Registro
     Tag "TG_Registro"
      To ArrayElement

 @ NL  ,01 ?? SubStr(Linha_MSg[01],3,65) 
 @ NL+1,01 ?? SubStr(Linha_MSg[02],3,65)
 @ NL+2,01 ?? SubStr(Linha_MSg[03],3,65)
 @ NL+3,01 ?? SubStr(Linha_MSg[04],3,65)
 @ NL+4,01 ?? SubStr(Linha_MSg[05],3,65)
 @ NL+5,01 ?? SubStr(Linha_MSg[06],3,65)             
 @ NL+6,01 ?? SubStr(Linha_MSg[07],3,65)             
 @ NL+7,01 ?? SubStr(Linha_MSg[08],3,65)             
              
 Pushbutton @ (08+NL),17 width 14 "~O~k"             OK     Default Value "Ok" Tag "YES"      To BottonValue
 Pushbutton @ (08+NL),35 width 14 "~A~tualizar"                                Tag "ATUALIZA" To BottonValue
 
EndDialog
If AtuaOk
   Then Mensagem("Somente vocˆ usando o sistema !")
EndIf   

EndProc ;Monta_Lista_Usuarios()

;*******************************************************************************
; Rotina para verificar usuario na rede                                        *
;*******************************************************************************
Proc Monta_Lista_Usuarios()
private WC

{Tools} {Info} {Who}
If NRecords("List")=1
   Then ClearImage
        Return False
EndIf

Release Vars Array_Registro
DynArray Array_Registro[]

WC=0                         
Scan For [UserName]<>UserName()
  WC=WC+1
  Array_Registro[WC]=Completa(UPPER([List->UserName]),14," ") 
EndScan
ClearImage

Return True
EndProc

;*******************************************************************************
; Rotina para verificar usuario na rede                                        *
;*******************************************************************************
Proc Verifica_Usuario()
If Not Monta_Lista_Usuarios()
   Then Return True
EndIf   

If IsAssigned(USERCON)
   Then Ver_Lista_Usuarios("")
   Else Ver_Lista_Usuarios("Mensagem")
Endif

Release Vars Array_Registro 

Return False
EndProc  ; (Verifica_Usuario)

;*******************************************************************************
;* Rotina Converte caracter especial e passa para maiusculo                    *
;*******************************************************************************
Proc Tira_CharEspecial(s)
private s, sn, i, ch

sn=""
For i from 1 to Len(s)
  ch=SubStr(s,i,1)
  Switch
   Case Asc(ch)=8   : ch="" ;
   Case Asc(ch)=9   : ch="" ;
   Case Asc(ch)=10  : ch="" ;
   Case Asc(ch)=11  : ch="" ;
   Case Asc(ch)=12  : ch="" ;
   Case Asc(ch)=13  : ch="" ;
   Case Asc(ch)=38  : ch="e" ; &
   Case Asc(ch)=061 : ch="I" ;
   Case Asc(ch)=128 : ch="C" ; €
   Case Asc(ch)=129 : ch="u" ; �
   Case Asc(ch)=130 : ch="e" ; ‚
   Case Asc(ch)=131 : ch="a" ; ƒ
   Case Asc(ch)=132 : ch="a" ; „
   Case Asc(ch)=133 : ch="a" ; …
   Case Asc(ch)=134 : ch="a" ; †
   Case Asc(ch)=135 : ch="c" ; ‡
   Case Asc(ch)=136 : ch="e" ; l
   Case Asc(ch)=137 : ch="e" ; ‰
   Case Asc(ch)=138 : ch="e" ; i
   Case Asc(ch)=139 : ch="i" ; ‹
   Case Asc(ch)=140 : ch="i" ; Œ
   Case Asc(ch)=141 : ch="i" ; ·
   Case Asc(ch)=142 : ch="A" ; Ž
   Case Asc(ch)=143 : ch="A" ; �
   Case Asc(ch)=144 : ch="E" ; �
   Case Asc(ch)=147 : ch="o" ; “
   Case Asc(ch)=148 : ch="o" ; ”
   Case Asc(ch)=149 : ch="o" ; •
   Case Asc(ch)=150 : ch="u" ; –
   Case Asc(ch)=151 : ch="u" ; —
   Case Asc(ch)=152 : ch="y" ; ˜
   Case Asc(ch)=153 : ch="O" ; ™
   Case Asc(ch)=154 : ch="U" ; š
   Case Asc(ch)=160 : ch="a" ;  
   Case Asc(ch)=161 : ch="i" ; ¡
   Case Asc(ch)=162 : ch="o" ; ¢
   Case Asc(ch)=163 : ch="u" ; £
   Case Asc(ch)=181 : ch="A" ; µ
   Case Asc(ch)=182 : ch="A" ; ¶
   Case Asc(ch)=183 : ch="A" ; ·
   Case Asc(ch)=186 : ch="." ; §
   Case Asc(ch)=191 : ch="." ; ¦
   Case Asc(ch)=193 : ch="A" ;
   Case Asc(ch)=194 : ch="A" ;
   Case Asc(ch)=195 : ch="A" ;
   Case Asc(ch)=198 : ch="a" ; Æ
   Case Asc(ch)=199 :        ; Ç
        If i+1 <= Len(s)
           Then If Asc(SubStr(s,i+1,1))=213
                   Then ch="C"     ; €
                   Else ch="A"     ; ¶
                EndIf
           Else ch="A"
        EndIf
   Case Asc(ch)=201 : ch="E" ;
   Case Asc(ch)=202 : ch="E" ;
   Case Asc(ch)=204 : ch="I" ;
   Case Asc(ch)=205 : ch="I" ;  
   Case Asc(ch)=210 : ch="E" ; Ò

   Case Asc(ch)=211 And ch="Ó" : ch="O" ; Ó
   Case Asc(ch)=211 And ch=" " : ch="O" ;  

   Case Asc(ch)=212 : ch="E" ; Ô
   Case Asc(ch)=213 : ch="O" ; i
   Case Asc(ch)=214 : ch="I" ; Ö
   Case Asc(ch)=215 : ch="I" ; ×
   Case Asc(ch)=216 : ch="I" ; Ø
   Case Asc(ch)=218 : ch="U" ;
   Case Asc(ch)=222 : ch="I" ; Þ
   Case Asc(ch)=224 : ch="O" ; à
   Case Asc(ch)=225 : ch="A" ; á  
   Case Asc(ch)=226 : ch="O" ; â

   Case Asc(ch)=227 And ch="Ò" : ch="A" ; Ò
   Case Asc(ch)=227 And ch="ã" : ch="A" ; ã

   Case Asc(ch)=228 : ch="o" ; ä
   Case Asc(ch)=229 : ch="O" ; å
   Case Asc(ch)=231 : ch="C" ;  

   Case Asc(ch)=233 And ch="é" : ch="U" ; é
   Case Asc(ch)=233 And ch="Ý" : ch="E" ; Ý
   ;Case Asc(ch)=233 And ch="é" : ch="E" ; é

   Case Asc(ch)=234 And ch="ê" : ch="E" ; ê
   Case Asc(ch)=234 : ch="U" ; ê
   Case Asc(ch)=235 : ch="U" ; Ý
   Case Asc(ch)=237 : ch="I" ; Ý  
   Case Asc(ch)=243 : ch="O" ; ·
   Case Asc(ch)=244 : ch="O" ; ¶ 

   OtherWise:
     Switch
       Case Asc(ch)>0 and Asc(ch)<32 : ch="#"
       Case Asc(ch)>125              : ch="#"
     EndSwitch
  EndSwitch
  sn=sn+ch
EndFor
Return Upper(sn)
EndProc

;*******************************************************************************
;* Rotina Converte caracter especial e passa para numero                       *
;*******************************************************************************
Proc Tira_CharNum(s)
private s, sn, i, ch

sn=""
For i from 1 to Len(s)
  ch=SubStr(s,i,1)
  Switch 
   Case Asc(ch)=40  : ch="" ; (
   Case Asc(ch)=41  : ch="" ; )
   Case Asc(ch)=42  : ch="" ; *
   Case Asc(ch)=43  : ch="" ; +
   Case Asc(ch)=44  : ch="" ; ,
   Case Asc(ch)=45  : ch="" ; -
   Case Asc(ch)=46  : ch="" ; .
   Case Asc(ch)=47  : ch="" ; /
   Case Asc(ch)=58  : ch="" ; :
   Case Asc(ch)=32  : ch="" ; espa‡o
  EndSwitch

  sn=sn+ch
EndFor
Return Upper(sn)
EndProc

;*******************************************************************************
;* Rotina Retornar o primeiro dia do mes                                       *
;*******************************************************************************
Proc Primeiro_Dia_Data(Data)
Private Data,Mes,Ano
Mes=Month(Data)
Ano=Year(Data)
Return DateVal(StrVal(Mes)+"/"+"01"+"/"+StrVal(Ano))
EndProc

;*******************************************************************************
;* Rotina Retornar o ultimo dia do mes                                         *
;*******************************************************************************
Proc Ultimo_Dia_Data(Data)
Private Data,Mes,Ano
Mes=Month(Data)+1
Ano=Year(Data)
If Mes=13
   Then Mes=1
        Ano=Ano+1
EndIf
Return DateVal(StrVal(Mes)+"/"+"01"+"/"+StrVal(Ano))-1
EndProc


;*******************************************************************************
;Rotina executa captura                                                        *
;*******************************************************************************
Proc Executa_Captura(cmd)
Private cmd

If Not IsAssigned(SYS_VERSAO_SO) Then SYS_VERSAO_SO="Windows" Endif

If SYS_VERSAO_SO="Windows"
   Then cmd="net use "+cmd+" /yes"
        Executa_Programa(cmd)
        Sleep 500
EndIf

Release Vars cmd
EndProc

;*******************************************************************************
;Rotina executa captura                                                        *
;*******************************************************************************
Proc Finaliza_Captura(cmd)
Private cmd

If Not IsAssigned(SYS_VERSAO_SO) Then SYS_VERSAO_SO="Windows" Endif

Checou_impressora=true
If SYS_VERSAO_SO="Windows"
   Then Aguarde("Aguarde, Finalizando captura")
        cmd="net use "+cmd+" /delete /yes"
        Executa_Programa(cmd)
        Sleep 500
EndIf
LimpAguarde()

Release Vars cmd
EndProc

;*******************************************************************************
;Rotina Ler Impressora Capturada                                               *
;*******************************************************************************
Proc Checa_Captura(porta,caminho)
Private c, porta, caminho, msg, ok, vartemp, pos1, posf, s

If Not IsAssigned(SYS_VERSAO_SO) Then SYS_VERSAO_SO="Windows" Endif

Checou_impressora=true
If SYS_VERSAO_SO<>"Windows"
   Then msg="Linux, apenas documentado!// Contacte Administrador p/ capturar porta Ok!"
        Return msg
EndIf

Executa_Programa("net use >"+PrivDir()+"Captura2.Txt")
Sleep 1000
msg=""

For c From 1 to 7
 If Not IsFile(PrivDir()+"Captura2.txt")
    Then Sleep 1000
         Loop
    Else 
         ok=False
         FileRead PrivDir()+"Captura2.Txt" To vartemp
         pos=1
         While True
           posf=searchFrom("\n",vartemp,pos)
           if posf=0 then quitLoop endif
           s=substr(vartemp,pos,(posf-pos))
           
           If Search(SubStr(porta,1,4),s)>0 And Search(caminho,s)>0
              Then ok=True
                   msg="Porta "+porta+" capturada para:// //"+caminho+" !"
                   QuitLoop
           EndIf
           pos=posf+1
         EndWhile
         If not ok
            Then msg=msg+"O nome do computador ou o nome da impressora,//"
                 msg=msg+"nÆo foi encontrado na rede !// //"
                 msg=msg+"Verifique o caminho informado !// //"
                 msg=msg+caminho
                 Checou_impressora=false
         EndIf
         QuitLoop
 EndIf
EndFor

Release Vars c, porta, caminho, ok, vartemp, pos1, posf, s

Return msg
EndProc

;*******************************************************************************
;Rotina Ler Impressora Capturada                                               *
;*******************************************************************************
Proc Ler_Captura(Arquivo)
Private i, simbolo, arquivo, tipoimp, caminho, caminho2, ok, c, posini2

If Not IsAssigned(SYS_VERSAO_SO) Then SYS_VERSAO_SO="Windows" Endif

;*** Define Configura‡oes Padrao p/ LPTX: ***
DynArray SYS_ARRAY_IMPOPCOES[]
SYS_ARRAY_IMPOPCOES[1]="D LPT1: Matricial  Local"+Spaces(65)+"*"
SYS_ARRAY_IMPOPCOES[2]="D LPT2: "+Spaces(71)+"*"
SYS_ARRAY_IMPOPCOES[3]="D LPT3: "+Spaces(71)+"*"
Sys_Set_Porta="LPT1"

Seta_Tipo_Impressora("Matricial")

;*** Define Configura‡oes da estacao p/ LPTX: ***
If IsFile(PrivDir()+"Net_Imp.Txt")
   Then Editor Open PrivDir()+"Net_Imp.Txt"
        For i from 1 to 3
          {Edit} {Goto} {1}
          Editor Find "LPT"+StrVal(i)
          If RetVal
             Then Extrair_Linha()
                  SYS_ARRAY_IMPOPCOES[i]="D"+Completa(SubStr(Elinha,1,Len(Elinha)-1),78," ")+"*"
          EndIf
        EndFor
        CancelEdit
EndIf
   
;*** Define Impressora Local/Rede - PrnList ***
Sys_Array_Impopcoes[4]="D"+FIll("-",71)
Sys_Array_Impopcoes[5]="L"+FIll("-",71)
Sys_Array_Impopcoes[6]="X [ NAO DEFINIDA ! ] "

If Arquivo="" And SYS_VERSAO_SO="Windows"
   Then 
        ;*** Ler Portas Capturadas LPTX: ***
        If (IsFile("C:\\Windows\\Net.exe") Or
            IsFile("C:\\Windows\\System32\\Net.exe")) And
           SYS_VERSAO_SO="Windows" Then
           ;; Verificar se Micro esta em Rede, erro no camando net use ???
           ExecVise("CMD net use >"+PrivDir()+"Captura.Txt")
        EndIf

        Executa_Programa("c:\\vise\\Vprl > "+PrivDir()+"temp_imp.txt")
EndIf

Aguarde("Aguarde, carregando lista de impressoras")
conteudodoarquivo = ""
If LerConteudodoArquivo8(PrivDir()+"temp_imp.txt") And conteudodoarquivo <> "" 
   Then pos=1
        wcs=7
        While True
          posf=searchFrom("\n",conteudodoarquivo,pos)
          If posf=0 Then QuitLoop EndIf
          ELinha=Substr(conteudodoarquivo,pos,(posf-pos))
          pos=posf+1
          
          ;---- Impressoras Ignoradas ------------------------------------------
          If Search("PDF",Upper(ELinha))>0       Or
             Search("WRITE",Upper(ELinha))>0     Or   
             Search("FAX",Upper(ELinha))>0       Or
             Search("ENVIAR",Upper(ELinha))>0    Or
             Search("SEND",Upper(ELinha))>0      Or
             Search("ONENOTE",Upper(ELinha))>0   Or
             Search("MICROSOFT",Upper(ELinha))>0 Or
             Search("PDFCREATOR",Upper(ELinha))>0
             Then ELinha=""   
          EndIf
                    
          If Search("sess",ELinha)>0
             Then PosIni=SearchFrom("sess",ELinha,1)
                  ELinha=SubStr(ELinha,1,PosIni+3)+chr(227)+SubStr(ELinha,PosIni+5,Len(ELinha))
          EndIf  
          
          If Not IsBlank(RTrim(ELinha))
             Then If SubStr(ELinha,1,2)="\\\\"
                     Then Sys_Array_Impopcoes[WCS]="R "+SubStr(ELinha,1,Len(ELinha))
                     Else Sys_Array_Impopcoes[WCS]="L "+SubStr(ELinha,1,Len(ELinha))
                  EndIf
                  wcs=wcs+1
          EndIf
        EndWhile
        Release vars conteudodoarquivo, pos, posf
EndIf     
LimpAguarde()   

;*** Define Porta Padrao ***
VSDGIMPOPCAO = "6"

If Not IsBlank(arquivo)
   Then If IsFile(arquivo+".sc") ; Ler configuracao de impressora
           Then Play arquivo
        EndIf
EndIf
Switch
  Case Sys_Set_Porta="LPT1" Or Sys_Set_Porta="LPT2" Or Sys_Set_Porta="LPT3":
       For i From 1 to 3
         If SubStr(SYS_ARRAY_IMPOPCOES[i],3,4)=Sys_Set_Porta
            Then VSDGIMPOPCAO=StrVal(i)
                 QuitLoop
         EndIf
       EndFor

  OtherWise:
    For i From 1 to DynArraySize(SYS_ARRAY_IMPOPCOES)
      If SubStr(SYS_ARRAY_IMPOPCOES[i],1,2)="D" Or
         SubStr(SYS_ARRAY_IMPOPCOES[i],3,2)="--"
         Then Loop
      EndIf

      ;--- Em 05/08/2014 Implementado para escolher SESSAO no Server 2003 ------
      If Search("sess",Sys_Set_Porta)>0
         Then PosIni=SearchFrom("sess",Sys_Set_Porta,1)
              If Search(SubStr(Sys_Set_Porta,1,posIni),RTrim(SubStr(SYS_ARRAY_IMPOPCOES[i],3,100)))>0
                 Then VSDGIMPOPCAO=StrVal(i)
                      QuitLoop
              EndIf

      EndIf
      ;-------------------------------------------------------------------------

      ;--- Em 05/08/2014 Implementado para escolher REDIRECIONADA no Server 2008 
      mypos=1 
      If Search("redirec",Sys_Set_Porta)>0
         Then
              While True
                 PosIni=SearchFrom("(",Sys_Set_Porta,mypos)
                 if posini>0
                    Then mypos=posini+1
                    else quitloop
                 endif   
              EndWhile       
         
              If Search(SubStr(Sys_Set_Porta,1,mypos-1),RTrim(SubStr(SYS_ARRAY_IMPOPCOES[i],3,100)))>0
                 Then VSDGIMPOPCAO=StrVal(i)
                      QuitLoop
              EndIf

      EndIf
      release vars mypos
      ;-------------------------------------------------------------------------
      
      If RTrim(SubStr(SYS_ARRAY_IMPOPCOES[i],3,100))=Sys_Set_Porta
         Then VSDGIMPOPCAO=StrVal(i)
              QuitLoop
      EndIf
    EndFor
EndSwitch

If VSDGIMPOPCAO = "6"
   Then Mensagem("Impressora padr„o n„o encontrada !// //Configure novamente a impressora padr„o !")
        VSDGIMPOPCAO = "6"
EndIf   

SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO]=
SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],1,1)+""+
SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)

Release Vars i, simbolo, arquivo, tipoimp, caminho, caminho2, ok
EndProc

;*******************************************************************************
;Rotina Pegar Linha Selecionada                                                *
;*******************************************************************************
Proc Extrair_Linha()
Private ci,cf,InfoArray

Home
Editor Info to InfoArray
ci=InfoArraY["CHARPOS"]

End
Editor Info to InfoArray
cf=InfoArraY["CHARPOS"]

Editor Select ci cf
Editor Extract to ELinha

Return ELinha
Release Vars ci,cf,InfoArray
EndProc

;*******************************************************************************
;Rotina Pegar Linha Selecionada                                                *
;*******************************************************************************
Proc Seta_Tipo_Impressora(Tipo)
Private Tipo,Tipo_Impressora

Tipo_Impressora = Tipo

;---- Comandos para impressora t‚rmica EPSON -----------------------------------
;Usando atualmente comandos na impressora EPSON TM-T20
;Na pasta N:\Diversos, h  um script EPSON.SC onde h  v rios exemplos utilizando tamanho e fontes

EPSON_GS                   = CHR(29)
EPSON_LF                   = CHR(10)
EPSON_INICIALIZA_IMPRESSAO = CHR(27)+"@"              ;ESC @                    Inicializa a ImpressÆo
EPSON_GUILHOTINA           = CHR(27)+CHR(109)                                   ;Guilhotina
 
EPSON_ALINHA_ESQUERDA      = CHR(27)+chr(97)+chr(48)  ;ESC a 0                  Alinha Texto 
EPSON_ALINHA_CENTRO        = CHR(27)+chr(97)+chr(49)  ;ESC a 1
EPSON_ALINHA_DIREITA       = CHR(27)+chr(97)+chr(50)  ;ESC a 2

EPSON_ESPACAMENTO_PADRAO   = CHR(27)+"2"              ;ESC 2                    Espa‡amento PADRAO entre linhas
EPSON_ESPACAMENTO_LINHAS   = CHR(27)+CHR(51)+"0"      ;ESC 3 n                  Espa‡amento entre linhas
EPSON_FONTE_MAIOR          = CHR(27)+CHR(77)+"0"      ;ESC M 0                  Tamanho da Fonte "0" ou "1"
EPSON_FONTE_MENOR          = CHR(27)+CHR(77)+"1"      ;ESC M 1
EPSON_NEG_ON               = CHR(27) + "E" + CHR(1)   ;ESC E n                  ;Negrito
EPSON_NEG_OFF              = CHR(27) + "E" + "0"      ;ESC E n
EPSON_EXPANDIR_ON          = EPSON_GS + "!" + CHR(17) ;GS ! n                   ;2x sized text (double-high + double-wide) 
EPSON_EXPANDIR_OFF         = EPSON_GS + "!" + "0"     ;GS ! n                   ;NÆo funciona ???

;ESTILO DE FONTES
ESPSON_ESTILO_1 = Chr(27) + "!" + chr(1)                                        ;Pequeno
ESPSON_ESTILO_2 = Chr(27) + "!" + Chr(86)                                       ;Estreito Grande
ESPSON_ESTILO_3 = Chr(27) + "!" + Chr(56)                                       ;Grande Negrito
ESPSON_ESTILO_4 = Chr(27) + "!" + Chr(105)                                      ;Estreito Comprimido Negrito
                                                    
ESPSON_ESTILO_5 = Chr(27) + "!" + Chr(121)                                      ;Estreito Negrito
ESPSON_ESTILO_6 = Chr(27) + "!" + Chr(137)                                      ;Pequeno Sublinhado      
ESPSON_ESTILO_7 = Chr(27) + "!" + Chr(153)                                      ;Pequeno Estreito Sublinhado                       
ESPSON_ESTILO_8 = Chr(27) + "!" + Chr(32)                                       ;Normal Expandido

;---- Fontes DosPrinter --------------------------------------------------------
;Na pasta N:\Diversos, h  um script FONTES.SC onde h  v rios exemplos utilizando tamanho e fontes
        
CI_F_COURIER  = chr(27)+"k0"                ;0	Courie New       
CI_F_LUCIDA   = chr(27)+"k"+chr(1)          ;1	LucidaConsole    
CI_F_ANDALE   = chr(27)+"k"+chr(2)          ;2	AndaleMono       
CI_F_LETTER   = chr(27)+"k"+chr(3)          ;3	LetterGothic     
CI_F_MONOTYPE = chr(27)+"k"+chr(4)          ;4	Monotye Corsiva  
CI_F_ARIAL    = chr(27)+"k"+chr(5)          ;5	Arial            
CI_F_IMPACT   = chr(27)+"k"+chr(6)          ;6	Impact           
CI_F_COMIC    = chr(27)+"k"+chr(7)          ;7	Comic ans MS	 
CI_F_BOOKMAN  = chr(27)+"k"+chr(8)          ;8	Bookma Old Style
CI_F_SCRIPT   = chr(27)+"k"+chr(9)          ;9	Script           
CI_F_TIMESNEW = chr(27)+"k"+chr(10)         ;10	Times New Roman  
CI_F_CENTURY  = chr(27)+"k"+chr(11)         ;11	Century Gothic	 
CI_F_MONOFUR  = chr(27)+"k"+chr(12)         ;12	Monofur          
CI_F_HAETTENSCHVEILER = chr(27)+"k"+chr(13) ;13	Haettenschweiler 
CI_F_GARAMOND = chr(27)+"k"+chr(14)         ;14	Garamond         
CI_F_VERDANA  = chr(27)+"k"+chr(15)         ;15	Verdana          
CI_F_TAHOMA   = chr(27)+"k"+chr(16)         ;16	Tahoma
;-------------------------------------------------------------------------------       

If IsAssigneD(VSDGIMPOPCAO) And IsAssigned(VSDGIMPOPCAO) And IsAssigned(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO]) 
   Then Tipo_Impressora = SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO] 
EndIf

Switch
  Case (Search("MP4200",RTrim(Tipo_Impressora))>0 Or Search("MP-4200",RTrim(Tipo_Impressora))>0)    Or    ;MP 4200 BEMATECH
       (Search("TMT20",RTrim(Tipo_Impressora))>0 Or Search("TM-T20",RTrim(Tipo_Impressora))>0)       :    ;TM T20 ESPSON
                                      
       If Search("TMT20",RTrim(Tipo_Impressora))>0
          Then BIBSHOW_IMPRESSORA_SETADA = "EPSON" 
          Else BIBSHOW_IMPRESSORA_SETADA = "BEMATECH"
       EndIf   
       
       TAMANHO_COLUNA_IMPRESSORA_CI_10CPP = 42
       TAMANHO_COLUNA_IMPRESSORA_CI_15CPP = 55
              
       Sys_Set_Impressora  ="\027x0\015"
       Sys_Reset_Impressora="\027x0\018"

       CI_10CPP=EPSON_FONTE_MAIOR
       CI_15CPP=EPSON_FONTE_MENOR
       CI_12CPP=EPSON_FONTE_MENOR
       CI_20CPP=EPSON_FONTE_MENOR

       CI_6LPP=EPSON_ESPACAMENTO_PADRAO
       CI_8LPP=EPSON_ESPACAMENTO_LINHAS

       CI_INEG= EPSON_NEG_ON
       CI_FNEG= EPSON_NEG_OFF

       CI_IEXP= "" ;EPSON_EXPANDIR_ON
       CI_FEXP= "" ;EPSON_EXPANDIR_OFF
       
       CI_F_TIMES = ""
        
  Case RTrim(Tipo)="Matricial":
       If Search("DARUMA",RTrim(Tipo_Impressora))>0 Or Search("BEMAT",RTrim(Tipo_Impressora))>0
          Then BIBSHOW_IMPRESSORA_SETADA = "DARUMA"
               TAMANHO_COLUNA_IMPRESSORA_CI_10CPP = 48
               TAMANHO_COLUNA_IMPRESSORA_CI_15CPP = 48 
       EndIf

       Sys_Set_Impressora  ="\027x0\015"
       Sys_Reset_Impressora="\027x0\018"

       CI_10CPP=Chr(27)+Chr(120)+Chr(48)+Chr(18)
       CI_15CPP=Chr(27)+Chr(120)+Chr(48)+Chr(15)
       CI_12CPP=Chr(27)+Chr(77)
       CI_20CPP=Chr(27)+Chr(77)+Chr(15)

       CI_6LPP=Chr(27)+Chr(50)
       CI_8LPP=Chr(27)+Chr(48)

       CI_INEG=Chr(27)+Chr(69)
       CI_FNEG=Chr(27)+Chr(70)

       CI_IEXP=Chr(014)
       CI_FEXP=Chr(020)
       
       CI_F_TIMES = chr(27)+"k1"     ;Fonte: Times New Roman / tamanho: CI_20CPP
  Case RTrim(Tipo)="Jato Tinta" Or RTrim(Tipo)="Laser":
       Sys_Set_Impressora  =Chr(027)+Chr(040)+Chr(115)+"16.67"+Chr(072)
       Sys_Reset_Impressora=Chr(027)+Chr(040)+Chr(115)+"10"+Chr(072)

       CI_10CPP=Chr(027)+"(s10H"
       CI_15CPP=Chr(027)+"(s17.5H"
       CI_12CPP=Chr(027)+"(s12.00H"
       CI_20CPP=Chr(027)+"(s20.00H"

       CI_6LPP =Chr(027)+"&l6D"
       CI_8LPP =Chr(027)+"&l8D"

       CI_INEG =Chr(027)+"(s3B"
       CI_FNEG =Chr(027)+"(s0B"

       CI_IEXP =Chr(027)+"(s12H"
       CI_FEXP =Chr(027)+"(s10H"
       
       CI_F_TIMES = CI_20CPP

     ;;CI_10CPP=Chr(027)+Chr(040)+Chr(115)+"10"+Chr(072)
     ;;CI_15CPP=Chr(027)+Chr(040)+Chr(115)+"16.67"+Chr(072)
     ;;CI_12CPP=Chr(027)+Chr(040)+Chr(115)+"12"+Chr(072)
     ;;CI_20CPP=Chr(027)+Chr(040)+Chr(115)+"20"+Chr(072)

     ;;CI_INEG =""
     ;;CI_FNEG =""

     ;;CI_IEXP =""
     ;;CI_FEXP =""

     ;;CI_6LPP=Chr(027)+Chr(038)+Chr(108)+"#6#"+Chr(068)
     ;;CI_8LPP=Chr(027)+Chr(038)+Chr(108)+"#8#"+Chr(068)

     ;;CI_IEXP=Chr(027)+Chr(040)+Chr(115)+"3"+Chr(072)
     ;;CI_FEXP=Chr(027)+Chr(040)+Chr(115)+"10"+Chr(072)
EndSwitch

EndProc

;*******************************************************************************
;Rotina Format para Retirar Zeros a Direita                                    *
;*******************************************************************************
Proc FormatTZD(Formato,Valor)
Private Formato,Valor,s,sn,tm,c

s=Format(Formato,Valor)
tm=SearchFrom(",",s,1)

c=0
For i from Len(s) to tm Step-1
  If SubStr(s,i,1)<>"0"
     Then If SubStr(s,i,1)=","
             Then c=c+1
          EndIf
          QuitLoop
     Else c=c+1
  EndIf
EndFor
sn=SubStr(s,1,(Len(s)-c))
sn=sn+Fill(" ",c)

Return sn
Endproc

;*******************************************************************************
;* Tira Formatacao CNPJ/CPF                                                   *
;*******************************************************************************
Proc Tira_Formato_CGC_CPF(Campo_CGC_CPF)
Private Campo_CGC_CPF, WVR

;123456789012345678
;##.###.###/####-##  CGC
;12345678901234
;###.###.###-##      CPF

WVR=""
If SubStr(Campo_CGC_CPF,03,1)="." and
   SubStr(Campo_CGC_CPF,07,1)="." and
   SubStr(Campo_CGC_CPF,11,1)="/" and
   SubStr(Campo_CGC_CPF,16,1)="-"
   Then WVR=""               ;CGC
        WVR=SubStr(Campo_CGC_CPF,01,2)+
            SubStr(Campo_CGC_CPF,04,3)+
            SubStr(Campo_CGC_CPF,08,3)+
            SubStr(Campo_CGC_CPF,12,4)+
            SubStr(Campo_CGC_CPF,17,2)
   Else If SubStr(Campo_CGC_CPF,04,1)="." and
           SubStr(Campo_CGC_CPF,08,1)="." and
           SubStr(Campo_CGC_CPF,12,1)="-"
           Then WVR=""               ;CPF
                WVR=SubStr(Campo_CGC_CPF,01,3)+
                    SubStr(Campo_CGC_CPF,05,3)+
                    SubStr(Campo_CGC_CPF,09,3)+
                    SubStr(Campo_CGC_CPF,13,2)
        EndIf
EndIf
Return WVR
EndProc

;*******************************************************************************
;* Tira Formatacao CNPJ/CPF                                                   *
;*******************************************************************************
Proc FindLookup(Campo,Valor)
Private Campo, Valor, Tabela, Ok

Moveto Field Campo

Ok=True
KeyPress "F1"
Locate Valor
If RetVal
   Then CopyToArray REGISTRO_F1LOOKUP
   Else Ok=False
        Tabela=Table()
        Switch
          Case Tabela="Destin"   : MSG="Destina‡„o n„o Cadastrada !"
          Case Tabela="Estados"  : MSG="Estado n„o Cadastrado !"
          Case Tabela="Represen" : MSG="Representante n„o Cadastrado !"
          Case Tabela="Itens"    : MSG="Item n„o Cadastrado !"
          Case Tabela="Plcontas" : MSG="Plano de Conta n„o Cadastrado !"
          Case Tabela="Ccusto"   : MSG="Centro de Custo n„o Cadastrado !"
          Case Tabela="Historic" : MSG="Historico n„o Cadastrado !"
          Case Tabela="Conta"    : MSG="Conta n„o Cadastrada !"
        EndSwitch
        Mensagem(MSG)
EndIf
KeyPress "ESC"

Return Ok
EndProc

;*******************************************************************************
;* Grava Parametros de edicao de tabelas                                      *
;*******************************************************************************
Proc Controle_Dia()

If Not IsAssigned(SYS_CHAPA_USUARIO)    Then SYS_CHAPA_USUARIO=""     EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)     Then SYS_CONTROLE_DIA=""      EndIf
If Not IsAssigned(SYS_CONTROLE_DIA_MOD) Then SYS_CONTROLE_DIA_MOD=""  EndIf

If SYS_CONTROLE_DIA_MOD <> ""
   Then [Codigo_Usuario     ] = SYS_CHAPA_USUARIO
        [Data_Inclusao      ] = Today()
        [Hora_Inclusao      ] = Time()
        [Numero_Controle_Dia] = SYS_CONTROLE_DIA_MOD
   Else [Codigo_Usuario     ] = SYS_CHAPA_USUARIO
        [Data_Inclusao      ] = Today()
        [Hora_Inclusao      ] = Time()
        [Numero_Controle_Dia] = SYS_CONTROLE_DIA
EndIf

EndProc

;*******************************************************************************
;* Checa Status Controle do Dia                                               *
;*******************************************************************************
Proc Checa_Controle(Numero)
Private Ok, Ncampo, regcontrdia

NCampo=Field()

Switch
  Case Numero="??????":
       MSG=    "N„o existe um Controle ativo no momento !// //"
       MSG=MSG+"Verificar situa‡„o de Controles !"
       Mensagem(MSG)
       Ok=False
  Case Numero="000000" Or IsBlank(Numero):
       Ok=True
  OtherWise:
       getrecord "\\sistemas\\cadastro\\contrdia" Numero to regcontrdia
       if not retval
          Then Ok=True
          Else If regcontrdia["Situacao_Controle_Dia"]="L"
                  Then Ok=True
                  Else MSG=    "Este lan‡amento esta com seu Controle Finalizado !"
                       Mensagem(MSG)
                       Ok=Checa_Supervisor()
               EndIf
       EndIf   
EndSwitch

release vars regcontrdia

Moveto Field NCampo
Return Ok
EndProc


;*******************************************************************************
;* Rotina para Verificar se Conteudo do Campo e Numero V lido                  *
;*******************************************************************************
Proc E_NumeroValido(Valor)
Private Valor,c,p,r      

If Len(Valor)=0
   Then Return False
EndIf

p=0
r=0

For c From 1 to Len(Valor)
 If SubStr(Valor,c,1)<"0" Or SubStr(Valor,c,1)>"9"
    Then If SubStr(Valor,c,1)="."
            Then p=p+1
            Else If SubStr(Valor,c,1)="-"  
                    Then r=r+1
                    Else Return False
                 EndIf   
         EndIf
 EndIf
EndFor

If p>1 or r>1
   Then Return False
EndIf

If r=1 And SubStr(Valor,1,1)<>"-"
   Then Return False
EndIf

p=searchfrom(".",valor,1)
If p>0
   Then If p=Len(Valor) Or
           p<(Len(Valor)-3)
           Then Return False
        EndIf
EndIf

Return True
EndProc

;*******************************************************************************
;* Rotina para Verificar se Conteudoi do Campo e Numerico                      *
;*******************************************************************************
Proc E_Numerico(Valor)
Private Valor,c,p

If Len(Valor)=0
   Then Return False
EndIf

p=0
For c From 1 to Len(Valor)
 If SubStr(Valor,c,1)<"0" Or SubStr(Valor,c,1)>"9"
    Then If SubStr(Valor,c,1)="."
            Then p=p+1
            Else Return False
         EndIf
 EndIf
EndFor
If p>1
   Then Return False
EndIf

p=searchfrom(".",valor,1)
If p>0
   Then If p=Len(Valor) Or
           p<(Len(Valor)-3)
           Then Return False
        EndIf
EndIf

Return True
EndProc

;*******************************************************************************
;* Rotina para Checagem de Intervalo de Datas p/ Novos Lancamento              *
;*******************************************************************************
Proc IntervaloData(Data)
Private Data, MSG

If IsFile("\\Sistemas\\Cadastro\\Cfg_Data.sc")
   Then Play("\\Sistemas\\Cadastro\\Cfg_Data")
EndIf

If Not IsAssigned(SYS_DATA_INICIAL) Then SYS_DATA_INICIAL=BlankDate() EndIf
If Not IsAssigned(SYS_DATA_FINAL)   Then SYS_DATA_FINAL  =BlankDate() EndIf

If IsBlank(SYS_DATA_INICIAL)
   Then Return True
EndIf

If Data<SYS_DATA_INICIAL Or
   Data>SYS_DATA_FINAL
   Then MSG=    "A data [ "+Format("D13",Data)+" ] deste novo lan‡amento//"
        MSG=MSG+"esta fora do intervalo permitido !// //"
        MSG=MSG+"Verificar com Supervisor do Sistema !"
        Mensagem(MSG)
        Return False
   Else Return True
EndIf

EndProc

;*******************************************************************************
;* Rotina para Checagem de Intervalo de Datas p/ Novos Lancamentos             *
;*******************************************************************************
Proc IntervaloDataMod(Data, Modulo)
Private Data, MODULO, MSG, P_HABILITADO

SYS_DATA_INICIAL = BlankDate()
SYS_DATA_FINAL   = BlankDate()  
P_HABILITADO     = ""
GetRecord "\\Sistemas\\Cadastro\\P_Modulo" MODULO To REGMOD
If RetVal
   Then SYS_DATA_INICIAL = REGMOD["Data_Inicio_Lancto"]
        SYS_DATA_FINAL   = REGMOD["Data_Fim_Lancto"] 
        P_HABILITADO     = REGMOD["Fechamento_Automatico"]
EndIf

If IsBlank(SYS_DATA_INICIAL)
   Then Return True
EndIf

If (Data<SYS_DATA_INICIAL Or
   Data>SYS_DATA_FINAL) And
   P_HABILITADO = "S"
   Then MSG=    "A data [ "+Format("D13",Data)+" ] deste novo lan‡amento//"
        MSG=MSG+"esta fora do intervalo permitido no M¢dulo " + MODULO + " !// //"
        MSG=MSG+"Verificar com Supervisor do Sistema !"
        Mensagem(MSG)
        Return False
   Else Return True
EndIf

EndProc

;******************************************************
;* Rotina p/ confirmacao Sim/Nao - Janela c/ Mensagem *
;******************************************************
Proc Libera_Bloqueio(MSG)
Private MSG, MSGPADRAO

tpmsg="Mensagem"
;If IsAssigned(RESTRUTURACAO_AUTOMATICA)
;   Then SYS_NIVEL_USUARIO="S"
;EndIf

If not IsAssigned(SYS_NIVEL_USUARIO)
   Then SYS_NIVEL_USUARIO="S"
EndIf

msgpadrao=False
If IsBlank(MSG)
   Then MSG="Opera‡„o com interven‡„o do Supervisor !// //"
        MSG=MSG+"O desbloqueio para esta opera‡„o ser  registrada pelo Sistema//"
        MSG=MSG+"para futuras consultas ou auditorias !"
        msgpadrao=True
EndIf
Monta_Mensagem(MSG)
Sound 700 5
Showdialog "ATEN€ŽO !" Proc "SD_LibBloqueio"
   Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC","F2"
     @ Int((23-(NLinhas+6))/2),CIM Height NLinhas+6 width LJM

   @ NumVal(SubStr(Linha_MSg[01],1,2)),Int((LJM-Len(Linha_Msg[01]))/2) ?? SubStr(Linha_Msg[01],3,LJM)
   @ NumVal(SubStr(Linha_MSg[02],1,2)),Int((LJM-Len(Linha_Msg[02]))/2) ?? SubStr(Linha_Msg[02],3,LJM)
   @ NumVal(SubStr(Linha_MSg[03],1,2)),Int((LJM-Len(Linha_Msg[03]))/2) ?? SubStr(Linha_Msg[03],3,LJM)
   @ NumVal(SubStr(Linha_MSg[04],1,2)),Int((LJM-Len(Linha_Msg[04]))/2) ?? SubStr(Linha_Msg[04],3,LJM)
   @ NumVal(SubStr(Linha_MSg[05],1,2)),Int((LJM-Len(Linha_Msg[05]))/2) ?? SubStr(Linha_Msg[05],3,LJM)
   @ NumVal(SubStr(Linha_MSg[06],1,2)),Int((LJM-Len(Linha_Msg[06]))/2) ?? SubStr(Linha_Msg[06],3,LJM)
   @ NumVal(SubStr(Linha_MSg[07],1,2)),Int((LJM-Len(Linha_Msg[07]))/2) ?? SubStr(Linha_Msg[07],3,LJM)
   @ NumVal(SubStr(Linha_MSg[08],1,2)),Int((LJM-Len(Linha_Msg[08]))/2) ?? SubStr(Linha_Msg[08],3,LJM)
   @ NumVal(SubStr(Linha_MSg[09],1,2)),Int((LJM-Len(Linha_Msg[09]))/2) ?? SubStr(Linha_Msg[09],3,LJM)
   @ NumVal(SubStr(Linha_MSg[10],1,2)),Int((LJM-Len(Linha_Msg[10]))/2) ?? SubStr(Linha_Msg[10],3,LJM)
   @ NumVal(SubStr(Linha_MSg[11],1,2)),Int((LJM-Len(Linha_Msg[11]))/2) ?? SubStr(Linha_Msg[11],3,LJM)
   @ NumVal(SubStr(Linha_MSg[12],1,2)),Int((LJM-Len(Linha_Msg[12]))/2) ?? SubStr(Linha_Msg[12],3,LJM)

   PushButton @ NLinhas+2,Int((LJM-11)/2) width 11 "~O~k" Tag "MENS_OK"  To BottonValue

Enddialog
If RetVal
   Then If Not msgpadrao
           Then If SYS_NIVEL_USUARIO="S" Or
                   SYS_NIVEL_USUARIO="E"
                   Then MSG="Como vocˆ j  ‚ um supervisor,//"
                        MSG=MSG+"esta opera‡„o foi registrado pelo Sistema//"
                        MSG=MSG+"para futuras consultas ou auditorias !"
                   Else MSG="Com a confirma‡„o do acesso pelo supervisor,//"
                        MSG=MSG+"esta opera‡„o ser  registrado pelo Sistema//"
                        MSG=MSG+"para futuras consultas ou auditorias !"
                EndIf
                Mensagem(MSG)
        EndIf
        If Checa_Supervisor()
           Then OK="S"
           Else OK="N"
        EndIf
   Else OK="N"
EndIf
LimpaRodape(1)

Release Vars MSG, NLinhas, Linha_Msg, LJM, CIM
Style Attribute 31
Return OK       
EndProc

;*******************************************************************************
;* ROTINA Liberara_bloqueio DIALOG                                             *
;*******************************************************************************
Proc SD_LibBloqueio(Disparo_SDLB,Campo_SDLB,Evento_SDLB,Elemento_SDLB)
Private Disparo_SDLB,Campo_SDLB,Evento_SDLB,
        Elemento_SDLB,Temp,CoresSD_LibBloqueio,
        TECLA, MSG_CAMPO
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo_SDLB="OPEN"
   Then Window handle Dialog To Janela_SD_LibBloqueio
        If IsAssigned(CoresSD_LibBloqueio)
           Then Release Vars CoresSD_LibBloqueio
        EndIf
        Dynarray CoresSD_LibBloqueio[]
        CoresSD_LibBloqueio[01]=47
        CoresSD_LibBloqueio[05]=47
        CoresSD_LibBloqueio[14]=32
        Window SetColors Janela_SD_LibBloqueio From CoresSD_LibBloqueio
EndIf
If Disparo_SDLB="EVENT" And Evento_SDLB["Type"]="KEY" Then
   Temp=False
   Switch
     Case Evento_SDLB["KeyCode"] = 27:
          CancelDialog
     Case Evento_SDLB["KeyCode"] = -60:
          AcceptDialog
   EndSwitch
EndIf

SelectControl Campo_SDLB
MSG_CAMPO="Pressione a tecla [Esc] p/ continuar ou [F2] p/ desbloquear !         "

ExibeRodape(1,Format("W80,AR",MSG_CAMPO))
ExibeRodape(2,Format("W80,AL",TECLA))

RefreshDialog
Return Temp
EndProc

;************************************
;* Rotina para Gravar Log           *
;************************************
Proc Grava_Logt(tp,tpop,op)
Private s,arqtxt,tp,tpop,op,LOG_MES,LOG_ANO,TXT_MES,TXT_ANO

If Not IsAssigned(SYS_CHAPA_USUARIO)    Then SYS_CHAPA_USUARIO    =""  EndIf
If Not IsAssigned(SYS_NOME_USUARIO)     Then SYS_NOME_USUARIO     =""  EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)    Then SYS_NIVEL_USUARIO    =""  EndIf
If Not IsAssigned(SYS_NCONEXAO)         Then SYS_NCONEXAO         =""  EndIf
If Not IsAssigned(SYS_ESTACAO)          Then SYS_ESTACAO          =""  EndIf
If Not IsAssigned(SYS_SCRIPT)           Then SYS_SCRIPT           =""  EndIf
If Not IsAssigned(SYS_CHAPA_SUPERVISOR) Then SYS_CHAPA_SUPERVISOR =""  EndIf
If Not IsAssigned(SYS_NOME_SUPERVISOR)  Then SYS_NOME_SUPERVISOR  =""  EndIf
If Not IsAssigned(SYS_NIVEL_SUPERVISOR) Then SYS_NIVEL_SUPERVISOR =""  EndIf

;**** LOGSYS.TXT ***************************************************************
LOG_MES = Month(Today())
LOG_ANO = Year(Today())
TXT_MES = Ltrim(StrVal(LOG_MES))                                   If Len(TXT_MES)=1 Then TXT_MES = AlinhM(TXT_MES,2) EndIf 
TXT_ANO = SubStr(StrVal(LOG_ANO),3,2) 
arqtxt  = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois"+TXT_MES+TXT_ANO+".log"

s=Format("D13",Today())+" "
s=s+Time()+" "
s=s+Completa(SYS_CHAPA_USUARIO            ,05," ")
s=s+Completa(SubStr(SYS_NOME_USUARIO,1,10),11," ")
s=s+Completa(SYS_NIVEL_USUARIO            ,02," ")
s=s+Completa(Format("W2,AL",SYS_NCONEXAO) ,03," ")        
s=s+Completa(SubStr(SYS_ESTACAO,1,12)     ,13," ")
s=s+tp
s=s+"["+Completa(SYS_SCRIPT      ,8," ")+"]"
s=s+"["+Completa(SubStr(tpop,1,8),8," ")+"]"
If tp="#"
   Then s=s+Completa(SYS_CHAPA_SUPERVISOR            ,05," ")
        s=s+Completa(SubStr(SYS_NOME_SUPERVISOR,1,10),11," ")
        s=s+Completa(SYS_NIVEL_SUPERVISOR            ,01," ")+">"
EndIf
s=s+op
FileWrite Append arqtxt From s+"\n"  
Release Vars s, arqtxt, tp, tpop, op,LOG_MES,LOG_ANO,TXT_MES,TXT_ANO

EndProc   ; (Grava_Logt)

;*******************************************************************************
;* Rotina para Localizar F1 Lookup                                             *
;*******************************************************************************
Proc Busca_Lookup(Campo,Valor,Msg)
Private Campo, Valor, Msg, msga, BuscaOk, TBase, FBase, i

BuscaOk=True
TBase  =Table()
FBase  =Field()
For i From 1 to 10
  KeyPress "F1"
  If MenuChoice()="FieldView"
     Then msga="[F1] "+TBase+"->"+FBase+", sem Lookup definido !// //"
          msga=msga+"Execute uma reestrutura‡„o Completa,//"
          msga=msga+"se persistir o problema entre em contato com o Suporte !"
          Mensagem(msga)
          Return False
  EndIf
  If Table()<>TBase
     Then QuitLoop
  EndIf
  If i<10
     Then Sleep 500
  EndIf
EndFor

Moveto Field Campo
Locate Valor
If RetVal
   Then CopyToArray Reg_Busca_Lookup
   Else If Not Msg="SM"
           Then If IsBlank(Msg)
                   Then Msg="[F1] Tabela: "+Upper(TBase)+" -> Lookup: "+Upper(Table())+"// //"
                        Msg=Msg+"Campo: "+Campo+" = "+StrVal(Valor)+"// //"
                        Msg=Msg+"Valor informado n„o encontrado !"
                EndIf
                Mensagem(MSG)
        EndIf
        BuscaOk=False
EndIf
KeyPress "ESC"

Release Vars  Campo, Valor, Msg, msga, TBase, FBase, i
Return BuscaOk
EndProc ;(Busca_Lookup)

;*******************************************************************************
;* Rotina para Ativar e LOcalizar F1                                           *
;*******************************************************************************
Proc Ativa_Lookup()
Private msga, BuscaOk, TBase, FBase, i

BuscaOk=True
TBase  =Table()
FBase  =Field()
For i From 1 to 10
  KeyPress "F1"
  If MenuChoice()="FieldView"
     Then msga="[F1] "+TBase+"->"+FBase+", sem Lookup definido !// //"
          msga=msga+"Execute uma reestrutura‡„o Completa,//"
          msga=msga+"se persistir o problema entre em contato com o Suporte !"
          Mensagem(msga)
          BuscaOk=False
          QuitLoop
  EndIf
  If Table()<>TBase
     Then QuitLoop
  EndIf
  If i<10
     Then Sleep 500
  EndIf
EndFor

Release Vars msga, TBase, FBase, i
Return BuscaOk
EndProc ;(Ativa_Lookup)

;*******************************************************************************
;* Rotina para Setar Variaveis ASP e ARQIMP                                    *
;*******************************************************************************
Proc Seta_FilePrint(Arqtmp)
Private arqtmp
ARQIMP=PrivDir()+Arqtmp+".Txt"
Switch
  Case DISPOSITIVO_OPCAO="I" : ASP1=""    ASP2=""
  OtherWise                  : ASP1="\""  ASP2="\""
EndSwitch

Deleta_Arquivo(ARQIMP)

EndProc

;*******************************************************************************
;* Rotina para Imprimir arquivo Gerado                                         *
;*******************************************************************************
Proc Imprime_FilePrint(msg,nreport)
Private msg, Tabela, i, printerok

Switch
  Case DISPOSITIVO_OPCAO="V" Or
       DISPOSITIVO_OPCAO="A":
       Tabela=Cria_Temp(PrivDir())
       {Tools} {Copy} {Table} {\\Base\\Sistemas\\Cadastro\\Rm_tx250} TypeIn Tabela Enter
       {Tools} {ExportImport} {Import} {ASCII} {AppendDelimited} TypeIn ARQIMP Enter
       TypeIn Tabela Enter ClearImage
       Deleta_Arquivo(ARQIMP)
       IMPRIREL(Tabela,nreport) ;;;nreport: R=132, 1=160, 2=230, 3=80 colunas
       Delete Tabela
  Case DISPOSITIVO_OPCAO="I":
       ImpriArq(ARQIMP)
       Mensagem ("Impress„o Concluida!")
EndSwitch

Release Vars Tabela,i,msg,printerok,
        ASP1,ASP2,ARQIMP
EndProc

;*******************************************************************************
;* Rotina para ImpressÆo Serial                                                *
;*******************************************************************************
Proc ImpriSerial(ArqImp,Seta_Printer)
Private ArqImp, Seta_Printer

Run NoRefresh "print /d:"+Seta_Printer+" "+ArqImp  
Deleta_Arquivo(ArqImp)

EndProc ;ImpriSerial() 

;*******************************************************************************
;* Rotina para Checagem de Campos                                              *
;*******************************************************************************
Proc ImpriArq(NomeArquivo)
Private NomeArquivo,printerok,MODULO
    
If Not IsAssigned(IMAGEM_FUNDO)        Then IMAGEM_FUNDO=""           EndIf 
If Not IsAssigned(PDFZEBRA)            Then PDFZEBRA           =False EndIf
If Not IsAssigned(NUMCOPIA)            Then NUMCOPIA=1                EndIf
If Not IsAssigned(PARAM_ENVIA_EMAIL)   Then PARAM_ENVIA_EMAIL="N"     EndIf
If Not IsAssigned(ARQ_EMAIL)           Then ARQ_EMAIL=""              EndIf
If Not IsAssigned(SYS_APLICATIVO)      Then SYS_APLICATIVO=""         EndIf
If Not IsAssigned(CheckTG_OPEMAIL[1])  
   Then array CheckTG_OPEMAIL[1]
        CheckTG_OPEMAIL[1]=false  
EndIf

DIRTEMP=""
ARQTEMP=NomeArquivo
Switch
  case SYS_APLICATIVO  = "PEDIDO" : MODULO = "MAILPED" 
  case SYS_APLICATIVO  = "BALCAO" : MODULO = "MAILBALC" 
  case SYS_APLICATIVO  = "TROCA"  : MODULO = "MAILTRO" 
  otherwise                       : MODULO = "MAILBALC" 
EndSwitch

While True
  Switch     
    Case DISPOSITIVO_OPCAO="V":
      Switch
       Case IsAssigned(Impressao_Orientacao) And Impressao_Orientacao="Paisagem":
            Switch
              Case CheckTG_OPEMAIL[1] :
                   If PARAM_ENVIA_EMAIL<>"S"
                     Then Mensagem("Fun‡Æo email inativa !// //Contactar Suporte Vise caso queira utilizar !")
                     Else If ARQ_EMAIL <>""
                             then ExecVise("COP "+DIRTEMP+ARQTEMP+" \""+ARQ_EMAIL+"\"")
                             else ARQ_EMAIL = DIRTEMP+ARQTEMP
                          EndIf

                          switch 
                            Case IMAGEM_FUNDO<>"" : 
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND /IMAGE'C:\\VISE\\"+IMAGEM_FUNDO+".JPG,0,55,200' "+" /FILE "+ARQ_EMAIL
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND /IMAGE'C:\\VISE\\"+IMAGEM_FUNDO+".JPG,0,55,200' "+DIRTEMP+ARQTEMP
                            Case PDFZEBRA         : 
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND /IMAGE'C:\\VISE\\VZ.JPG,0,55,200' "+" /FILE "+ARQ_EMAIL
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND /IMAGE'C:\\VISE\\VZ.JPG,0,55,200' "+DIRTEMP+ARQTEMP
                            OtherWise             : 
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND /FILE "+ARQ_EMAIL
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND "+DIRTEMP+ARQTEMP
                          endswitch 

                          FileWrite     PrivDir()+"funcao1.txt"  From  "EXEM|c:\\vise\\ViseMail.exe|"+SubStr(Directory(),1,1)+" "+PrivDir()+MODULO+
                                                                                                      " "+VSD_TG_EDest+" "+ARQ_EMAIL
                          ExecVise(PrivDir()+"funcao1.txt")
                   EndIf
              Case IMAGEM_FUNDO<>"" : Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND /IMAGE'C:\\VISE\\"+IMAGEM_FUNDO+".JPG,0,55,200' "+DIRTEMP+ARQTEMP
              Case PDFZEBRA         : Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND /IMAGE'C:\\VISE\\VZ.JPG,0,55,200' "+DIRTEMP+ARQTEMP
              OtherWise             : Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /LAND "+DIRTEMP+ARQTEMP
            EndSwitch 
         Release Vars Impressao_Orientacao
       OtherWise:
            Switch
              Case CheckTG_OPEMAIL[1]:
                   If PARAM_ENVIA_EMAIL<>"S"
                     Then Mensagem("Fun‡Æo email inativa !// //Contactar Suporte Vise caso queira utilizar !")
                     Else If ARQ_EMAIL <>""
                             then ExecVise("COP "+DIRTEMP+ARQTEMP+" \""+ARQ_EMAIL+"\"")
                             else ARQ_EMAIL = DIRTEMP+ARQTEMP
                          EndIf

                          switch 
                            Case IMAGEM_FUNDO<>"" : 
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /IMAGE'C:\\VISE\\"+IMAGEM_FUNDO+".JPG,0,55,200' "+" /FILE "+ARQ_EMAIL
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /IMAGE'C:\\VISE\\"+IMAGEM_FUNDO+".JPG,0,55,200' "+DIRTEMP+ARQTEMP
                            Case PDFZEBRA         : 
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /IMAGE'C:\\VISE\\VZ.JPG,0,55,200' "+" /FILE "+ARQ_EMAIL
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /IMAGE'C:\\VISE\\VZBR.JPG,0,55,200' "+DIRTEMP+ARQTEMP
                            OtherWise             : 
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /FILE "+ARQ_EMAIL
                              Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF "+DIRTEMP+ARQTEMP
                          endswitch 

                          FileWrite     PrivDir()+"funcao1.txt"  From  "EXEM|c:\\vise\\ViseMail.exe|"+SubStr(Directory(),1,1)+" "+PrivDir()+MODULO+
                                                                                                      " "+VSD_TG_EDest+" "+ARQ_EMAIL
                          ExecVise(PrivDir()+"funcao1.txt")
                   EndIf
              Case IMAGEM_FUNDO<>"" : Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /IMAGE'C:\\VISE\\"+IMAGEM_FUNDO+".JPG,0,55,200' "+DIRTEMP+ARQTEMP
              Case PDFZEBRA         : Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF /IMAGE'C:\\VISE\\VZBR.JPG,0,55,200' "+DIRTEMP+ARQTEMP
              OtherWise             : Run NoRefresh "c:\\vise\\Vdpr.exe /DEL /PDF "+DIRTEMP+ARQTEMP
            EndSwitch    
      EndSwitch
      Release Vars Impressao_Orientacao
      QuitLoop
      
    Case DISPOSITIVO_OPCAO="I": 
      printerok=True
      ;If VSDGIMPOPCAO="1" Or
      ;   VSDGIMPOPCAO="2" Or
      ;   VSDGIMPOPCAO="3"
      ;   Then While True
      ;          If PrinterStatus()
      ;             Then QuitLoop
      ;          EndIf
      ;          MENSAGEM("Impressora Fora de Linha ou Desligada, Verificar !")
      ;          CONFGERAL("Continua a Impress„o")
      ;          If OK<>"S"
      ;            Then printerok=False
      ;                 QuitLoop
      ;          EndIf
      ;       EndWhile
      ;EndIf
  
      If printerok
         Then For I From 1 to NumVal(NUMCOPIA)
                  If VSDGIMPOPCAO="1" Or
                     VSDGIMPOPCAO="2" Or
                     VSDGIMPOPCAO="3"
                     Then Run NoRefresh "Copy "+DIRTEMP+ARQTEMP+" "+SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,4)+":"
                          ;Copia_Arquivo(NomeArquivo+" "+SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,4)+":")
  
                          ;If IsAssigned(Impressao_Orientacao) And Impressao_Orientacao="Paisagem"
                          ;   then
                          ;        ExecVise("EXE c:\\vise\\Vdpr.exe /land /sel'"+
                          ;        SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,4)+":' "+NomeArquivo)
                          ;   else
                          ;        ExecVise("EXE c:\\vise\\Vdpr.exe /raw /sel'"+
                          ;        SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,4)+":' "+NomeArquivo)
                          ;EndIf    
  
                     Else ;If Search("HP"     ,UPPER(SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)))>0 Or
                          ;   Search("SAMSUNG",UPPER(SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)))>0 Or
                          ;   Search("LASER"  ,UPPER(SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)))>0 Or
                          ;   Search("JATO"   ,UPPER(SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)))>0 Or
                          ;   Search("INKJET" ,UPPER(SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)))>0 Or
                          ;   Search("XEROX"  ,UPPER(SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)))>0 Or
                          ;   Search("DESKJET",UPPER(SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)))>0    
                          ;   Then If IsAssigned(Impressao_Orientacao) And Impressao_Orientacao="Paisagem"
                          ;           Then comando = "c:\\vise\\Vdpr.exe /land /sel'"+
                          ;                          SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)+"' "+NomeArquivo
                          ;           Else comando = "c:\\vise\\Vdpr.exe /sel'"+
                          ;                          SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)+"' "+NomeArquivo
                          ;       EndIf    
                          ;   Else If IsAssigned(Impressao_Orientacao) And Impressao_Orientacao="Paisagem"
                          ;           Then comando = "c:\\vise\\Vdpr.exe /land /sel'"+
                          ;                          SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)+"' "+NomeArquivo
                          ;           Else comando = "c:\\vise\\Vdpr.exe /raw /sel'"+
                          ;                          SubStr(SYS_ARRAY_IMPOPCOES[VSDGIMPOPCAO],3,100)+"' "+NomeArquivo
                          ;        EndIf    
                          ;EndIf
                          
                          If Search("HP"     ,UPPER(Seta_Printer))>0 Or
                             Search("SAMSUNG",UPPER(Seta_Printer))>0 Or
                             Search("LASER"  ,UPPER(Seta_Printer))>0 Or
                             Search("JATO"   ,UPPER(Seta_Printer))>0 Or
                             Search("INKJET" ,UPPER(Seta_Printer))>0 Or
                             Search("XEROX"  ,UPPER(Seta_Printer))>0 Or
                             Search("DESKJET",UPPER(Seta_Printer))>0 or
                             Search("BROTHER",UPPER(Seta_Printer))>0
                             Then If IsAssigned(Impressao_Orientacao) And Impressao_Orientacao="Paisagem"
                                     Then comando="c:\\vise\\Vdpr.exe /land /sel'"+Seta_Printer+"' "+DIRTEMP+ARQTEMP
                                     Else comando="c:\\vise\\Vdpr.exe /sel'"      +Seta_Printer+"' "+DIRTEMP+ARQTEMP
                                  EndIf   
                             Else If IsAssigned(Impressao_Orientacao) And Impressao_Orientacao="Paisagem"
                                     Then comando="c:\\vise\\Vdpr.exe /land /sel'"+Seta_Printer+"' "+DIRTEMP+ARQTEMP 
                                     Else comando="c:\\vise\\Vdpr.exe /raw /sel'" +Seta_Printer+"' "+DIRTEMP+ARQTEMP
                                          ; "/raw" nÆo imprime em impressoras JATO DE TINTA / LASER             
                                  EndIf                
                          EndIf
        
                          FileWrite        PrivDir()+"funcao.txt" From "IMP|"+comando
                          For exe From 1 To 10
                            Sleep 1000
                            If Isfile(PrivDir()+"funcao.txt")
                               Then ExecVisecf(PrivDir()+"funcao.txt","IMPRIMIR") 
                                    QuitLoop
                            EndIf
                            If exe = 10
                               Then Mensagem("Tempo limite de espera para impress„o excedido!//Verificar com o Suporte T‚cnico!")
                            EndIf   
                          EndFor   
                          Release Vars exe               
                  EndIf
              EndFor
              If DISPOSITIVO_OPCAO<>"V"
                 Then Deleta_Arquivo(DIRTEMP+ARQTEMP)
                      QuitLoop
              EndIf         
      EndIf
  EndSwitch
EndWhile  
EndProc

;******************************************************************************
;** Rotina Alinhamento Especial Codigo Destinat Letras e Numeros            ***
;******************************************************************************
proc AlinhE(vr)
Private vr
If Len(vr)<4 And SubStr(vr,1,1)>"9"
   Then vr=SubStr(vr,1,1)+AlinhM(SubStr(vr,2,3),3)     
   Else vr=AlinhM(vr,4)			   
EndIf	  
Return vr
EndProc

;******************************************************************************
;** Rotina Alinhamento Especial Numero Lancamento Letras e Numeros          ***
;******************************************************************************
proc AlinhL(vr)
Private vr
If Len(vr)<6 And SubStr(vr,1,1)>"9"
   Then vr=SubStr(vr,1,1)+AlinhM(SubStr(vr,2,5),5)     
   Else vr=AlinhM(vr,6)			   
EndIf	  
Return vr
EndProc

;*******************************************************************************
;* Rotina para Criar Novo Lan‡amento                                           *
;*******************************************************************************
proc Novo_Lancto(NL)
Private nl,vr

If IsBlank(nl)
   Then nl="0"
EndIf  
vr=SubStr(nl,1,1)
If vr>"9" or nl="999999"
   Then If SubStr(nl,2,5)="99999"
	         Then Switch
					        Case vr="9" : nl="A00000"
					        Case vr="Z" : Mensagem("Fim de lan‡amento disponivel !")
									              nl=""
					        OtherWise   : nl=Chr(asc(vr)+1)+"00000"
					      EndSwitch
					 Else nl=AlinhL(vr+StrVal(NumVal(SubStr(nl,2,5))+1))     
				EndIf	      
   Else nl=AlinhL(StrVal(NumVal(nl)+1))
EndIf

Return nl 
EndProc



;*******************************************************************************
;* Rotina p/ Exibir F1 na ordem dos campos e posicionar cursor                 *
;*******************************************************************************
Proc VisualizaF1(campos,cursorcampo)
Private campos, cursorcampo, posf, ncampo, campoleft

;    Exemplo = VisualizarF1("Descricao do Item, Codigo do Item, Unidade Fiscal","Descricao do Item")
;parametro1 ->     campos = lista de campos a visualizar 
;parametro2 ->cursorcampo = posiciona o cursor no campo desejado

posf=searchfrom(",",campos,2)
If posf=0
   Then ncampo=campos
        campos=""
   Else ncampo=RTrim(LTrim(substr(campos,1,posf-1)))
        campoleft=ncampo
        campos=RTrim(LTrim(substr(campos,posf+1,Len(campos))))
EndIf

pricampo=Field()
While True
  If Upper(Field())<>Upper(ncampo)
     Then Rotate
          If Upper(Field())<>Upper(pricampo)
             Then Loop
             Else QuitLoop
          EndIf   
  EndIf   
  Right
  If Field()="#" Or IsBlank(campos)
     Then QuitLoop
     Else posf=searchfrom(",",campos,1)
          If posf=0
             Then ncampo=campos
                  campos=""
             Else ncampo=RTrim(LTrim(substr(campos,1,posf-1)))
                  campos=RTrim(LTrim(substr(campos,posf+1,Len(campos))))
          EndIf
          pricampo=Field()
  EndIf   
EndWhile

CtrlEnd
Moveto Field campoleft
Moveto Field cursorcampo
Home

EndProc ;VisualizaF1()

;*******************************************************************************
;* Rotina para Verificar Numero de Registro na Tabela                          *
;*******************************************************************************
Proc Verifica_NRegistros(TABELA)
Private TEMP,NR,TABELA,LIMITE,NOM_TAB

MSG_TABELA = ""    
Switch
  Case TABELA = "Backup" :   
       TEMP = True
       MSG_TABELA =              "Para  saber se sua empresa est  com defini‡äes de backup bem//"
       MSG_TABELA = MSG_TABELA + "estabelecidas  todas  as  respostas  para as questäes abaixo//" 
       MSG_TABELA = MSG_TABELA + "devem ser SIM.                                              ////"
       MSG_TABELA = MSG_TABELA + "- Seu backup ‚ realizado todos os dias.                     //"
       MSG_TABELA = MSG_TABELA + "- Vocˆ  sabe  se  o  seu backup foi realizado nas £ltimas 24//" 
       MSG_TABELA = MSG_TABELA + "  horas.                                                    //"
       MSG_TABELA = MSG_TABELA + "- Vocˆ tem acesso ao backup.                                ////"
       MSG_TABELA = MSG_TABELA + "- Verificar a evolu‡„o do tamanho dos backups (> 0 kb)      ////"
       MSG_TABELA = MSG_TABELA + "- Algu‚m mais mais tem acesso a esse backup.                ////"
       MSG_TABELA = MSG_TABELA + "�  importante  que  seja  inclu¡da  na  rotina  da empresa a//"
       MSG_TABELA = MSG_TABELA + "execu‡Æo  deste backup, assegurando a integridade dos dados.////"
       MSG_TABELA = MSG_TABELA + "D£vidas  sobre  esta opera‡„o, verificar com o suporte VISE !" 
  Case TABELA<>""        :        
       Switch
         Case Table()="Faturac" : Limite = 190000
         OtherWise              : Limite = 200000
       EndSwitch  
       
       NR = NRecords(Tabela)
       If NR > Limite
          Then TEMP = True
          Else TEMP = False 
       EndIf 
       NR = Format("W8,EIC",NR)
       
       AUX_NOM_TAB = ""
       Switch
         ;**** Caixa/Banco *****************************************
         Case Table()="Movcont"   : NOM_TAB = "CAIXA/BANCO"
         ;**** Contas a Pagar **************************************
         Case Table()="Titulos"   : NOM_TAB = "CONTAS A PAGAR"
         Case Table()="Altcontc"  : NOM_TAB = "CONTAS A PAGAR"
         ;**** Contas a Receber ************************************
         Case Table()="Duplic"    : NOM_TAB = "CONTAS A RECEBER"
         Case Table()="Alttitc"   : NOM_TAB = "CONTAS A RECEBER"
         ;**** Cheques *********************************************
         Case Table()="Chequec"   : NOM_TAB = "CHEQUES/TERCEIROS"
         Case Table()="Bordchc"   : NOM_TAB = "CHEQUES/TERCEIROS"
         ;**** Estoque *********************************************
         Case Table()="Notaec"    : NOM_TAB = "ESTOQUE/FATURAMENTO"
                                    AUX_NOM_TAB = "ESTOQUE"
         Case Table()="Rqcabeca"  : NOM_TAB = "ESTOQUE/FATURAMENTO"
                                    AUX_NOM_TAB = "ESTOQUE"
         ;**** Vendas **********************************************
         Case Table()="Notac"     : NOM_TAB = "FATURAMENTO/NOTAS"
         Case Table()="Dupc"      : NOM_TAB = "FATURAMENTO"
         Case Table()="Ecf_c"     : NOM_TAB = "FATURAMENTO"
         Case Table()="Faturac"   : NOM_TAB = "FATURAMENTO"
                                    If TABELA="Notai"
                                       Then AUX_NOM_TAB = "FATURAMENTO/NOTAS"
                                    EndIf   
         Case Table()="Accarrgc"  : NOM_TAB = "FATURAMENTO"
         Case Table()="Pedidoc"   : NOM_TAB = "PEDIDOS"
         ;**** Outros **********************************************
         OtherWise                : NOM_TAB = ""              
       EndSwitch
       If AUX_NOM_TAB = "" Then AUX_NOM_TAB = NOM_TAB EndIf   
                                                          
       MSG_TABELA =              "A rotina de "+Format("W20,AC",AUX_NOM_TAB)+" cont‚m um grande numero de//"
       MSG_TABELA = MSG_TABELA + "registros, e isso pode  afetar  a performace do Sistema e a//"
       MSG_TABELA = MSG_TABELA + "seguran‡a dos dados.                                       //"

       Switch  
         Case Table()="Faturac" And TABELA<>"Notai" : 
         
         MSG_TABELA = MSG_TABELA + "� aconselh vel executar exclus”es das ordens de faturamento//"
         MSG_TABELA = MSG_TABELA + "para evitar maiores problemas.                             ////"
         MSG_TABELA = MSG_TABELA + "Para realizar a exclus„o das ordens de faturamento:        //"
         MSG_TABELA = MSG_TABELA + "- FATURAMENTO -> NOTA FISCAL/ROMANEIO -> 36. EXCLUSAO ORDEM//"
         MSG_TABELA = MSG_TABELA + "  FATURAMENTO                                              ////"
         
         Case Table()="Pedidoc" :
         MSG_TABELA = MSG_TABELA + "� aconselh vel executar o fechamento mensal ou exclus”es de//"
         MSG_TABELA = MSG_TABELA + "pedidos  conforme  o  controle  adotado  por  sua  empresa,//"
         MSG_TABELA = MSG_TABELA + "evitando maiores problemas.                                ////"
         MSG_TABELA = MSG_TABELA + "- Para realizar o fechamento mensal, localize no menu:     //"         
         MSG_TABELA = MSG_TABELA + Completa("  UTILITARIOS -> FECHAMENTOS -> "+NOM_TAB,59," ")+"////"  
         MSG_TABELA = MSG_TABELA + "- Para realizar a exclus„o de pedidos:                     //"
         MSG_TABELA = MSG_TABELA + "  FATURAMENTO -> PEDIDOS DE VENDA -> 07.EXCLUSAO           ////"
         OtherWise              :
         MSG_TABELA = MSG_TABELA + "�  aconselhavel  executar  o  fechamento mensal para evitar//"
         MSG_TABELA = MSG_TABELA + "maiores problemas.                                         ////"
         MSG_TABELA = MSG_TABELA + "Para realizar o fechamento mensal, localize no menu:       //"
         MSG_TABELA = MSG_TABELA + Completa("UTILITARIOS -> FECHAMENTOS -> "+NOM_TAB,59," ")+"////"
       EndSwitch  
       MSG_TABELA = MSG_TABELA + "D£vidas  sobre esta opera‡„o, verificar com o supervisor do//"
       MSG_TABELA = MSG_TABELA + "Sistema ou com o suporte VISE !                            "                           
        
       Release Vars NR,TABELA,LIMITE,NOM_TAB          
  OtherWise :
       TEMP = True
       MSG_TABELA =              "Ao executar os fechamentos mensais o sistema ter  uma melhor//"
       MSG_TABELA = MSG_TABELA + "performace e seguran‡a, como:                               ////"
       MSG_TABELA = MSG_TABELA + "- Rapidez  na  execu‡Æo  de  gr ficos,  relat¢rios  e demais//"
       MSG_TABELA = MSG_TABELA + "  procedimentos;                                            //"
       MSG_TABELA = MSG_TABELA + "- Seguran‡a  dos  dados  da  empresa  evitando altera‡äes ou//"
       MSG_TABELA = MSG_TABELA + "  exclusoes indesejaveis.                                   ////"
       MSG_TABELA = MSG_TABELA + "D£vidas  sobre  esta opera‡„o, verificar com o supervisor do//"
       MSG_TABELA = MSG_TABELA + "Sistema ou com o suporte VISE !                             "                              
EndSwitch

Return TEMP  
                                                        
EndProc ;Verifica_NRegistros()

;*******************************************************************************
;* Rotina para realizar informativos em determinadas situa‡äes                 *
;*******************************************************************************
Proc MSG_Informativo()
Private ii,PARAM,ARQUIVO,ARQUIMP,COR_MSG,DATA,DIA,DIA_BACKUP,DIA_ATENCAO,LINHA 

Array ARQUIMP[2]
ARQUIMP[1]  = "V_ATT.INI"
ARQUIMP[2]  = "V_BKP.INI"

DIA_BACKUP = 11
DIA_ALERTA = 15

For ii From 1 To 2
 ARQUIVO = PrivDir()+ARQUIMP[ii]
 Switch        
   Case ii=1 : DIA   = DIA_ALERTA
               PARAM = "" 
   Case ii=2 : DIA   = DIA_BACKUP
               PARAM = "Backup"
 EndSwitch

 If IsFile(ARQUIVO)
    Then {Tools} {Info} {Inventory} {Files} TypeIn PrivDir() Enter
        Scan For [Name]<>"" 
          If Upper([Name])=ARQUIMP[ii]                   
             Then DATA=DateVal([Date])
                  QuitLoop
          EndIf
        EndScan
        ClearAll
        
        If DATA - Today() >= DIA
           Then LeiaINI(ARQUIVO,"COR_MSG.S.null")
                Verifica_NRegistros(PARAM)
                
                COR_MENSAGEM = COR_MSG
                Mensagem(MSG_TABELA)
                   
                Deleta_Arquivo(ARQUIVO)   
                
                If COR_MSG = "1"
                   Then COR_MSG = "ALERTA"
                   Else COR_MSG = "1"
                EndIf
                    
                LINHA = GravaExpressao("COR_MSG","S",COR_MSG)  
                FileWrite ARQUIVO From LINHA 

                Release Vars COR_MSG,MSG_TABELA
        EndIf
   Else COR_MSG = "1"
        If Verifica_NRegistros(PARAM)
           Then COR_MENSAGEM = COR_MSG
                Mensagem(MSG_TABELA)
                
                COR_MSG = "1"
                LINHA = GravaExpressao("COR_MSG","S",COR_MSG)  
                FileWrite ARQUIVO From LINHA
        EndIf
  EndIf        
EndFor  

Release Vars COR_MSG,MSG_TABELA                      
        
EndProc ;MSG_Informativo()

;*******************************************************************************
;** Rotina de Alinhamento Especial - Numero de Lancamento                      *
;*******************************************************************************
Proc AlinhNL(VALOR,DIGITO)
Private VALOR,DIGITO

; VALOR  = Dever  ser passado o VALOR a ser alinhado conforme o num de digitos 
; DIGITO = A quantidade de d¡gitos a ser alinhado o numero do lancto
; Por exemplo, um numero de lancamento com 6 DIGITOS e VALOR 17, ficaria 000017

If DIGITO=0 
   Then VALOR = NumVal(VALOR)
   Else VALOR = StrVal(VALOR)
        If Type(NumVal(SubStr(VALOR,1,1)))<>"N"
           Then VALOR = SubStr(VALOR,1,1)+AlinhME(SubStr(VALOR,2,DIGITO-1),DIGITO-1)
           Else VALOR = AlinhM(VALOR,DIGITO)
        EndIf
EndIf
Return VALOR

EndProc ;AlinhNL()

;*************************************************************
;** ROTINA PARA ALINHAMENTO DE VARIAVEL DE MEMORIA C/ LETRA  * 
;*************************************************************
Proc AlinhME(VR,TAMAN)
Private LETR,FALT,TAMAN,VR,ZERO

If Type(NumVal(SubStr(VR,1,1)))<>"N"
    Then NVR  = SubStr(VR,1,1)+AlinhM(SubStr(VR,2,TAMAN-1),TAMAN-1)
    Else LETR = Len(VR)
         FALT = TAMAN-LETR
         ZERO = Fill("0",FALT)
         NVR  = ZERO+VR
EndIf

Return NVR
EndProc ;AlinhME()

;*******************************************************************************
;* Rotina p/ Checagem de C¢digo, conforme parƒmetro - CodigoProx/CodigoLivre   *
;*******************************************************************************
Proc Checa_CodigoNL(CODIGO,DIGITO,UTILIZA_CODLIVRE,LANCTO_ESPECIAL)
Private CODIGO,DIGITO,UTILIZA_CODLIVRE,LANCTO_ESPECIAL

; CODIGO            = Codigo+1 a ser Verificado
; DIGITO            = A quantidade de d¡gitos a ser alinhado o numero do lancto
; UTILIZA_CODLIVRE  = Se utiliza codigo livre dentro de um intervalo esquematizado
; LANCTO_ESPECIAL   = Se utiliza lan‡amento especial com letras e numeros

If Not IsBlank(CODIGO)
   Then CODIGO = AlinhNL(CODIGO,DIGITO)
   Else MSG_LANCTO="Checagem de c¢digo inv lido!"
        Return "E"+VALOR_ORIGINAL
EndIf

If UTILIZA_CODLIVRE
   Then CODIGO = Proximo_CodigoNL(DIGITO,LANCTO_ESPECIAL,UTILIZA_CODLIVRE)
   Else CODIGO = Novo_CodigoNL(CODIGO,DIGITO,LANCTO_ESPECIAL)
EndIf

If CODIGO=""
  Then Return "E"+VALOR_ORIGINAL
  Else Return CODIGO
EndIf

EndProc ;Checa_CodigoNL()                      

;*******************************************************************************
;* Rotina para Criar Novo C¢digo                                               *
;*******************************************************************************
Proc Novo_CodigoNL(CODIGO,DIGITO,LANCTO_ESPECIAL)
Private CODIGO,DIGITO,LANCTO_ESPECIAL,VR
               
; CODIGO            = Codigo+1 a ser verificado
; DIGITO            = A quantidade de d¡gitos a ser alinhado o numero do lancto
; LANCTO_ESPECIAL   = Se utiliza lan‡amento especial com letras e numeros

VR = SubStr(CODIGO,1,1)
If VR > "9" Or CODIGO = Completa("9",DIGITO,"9")
   Then If SubStr(CODIGO,2,DIGITO-1) = Completa("9",DIGITO-1,"9")
	         Then Switch
					        Case VR="9" : If LANCTO_ESPECIAL
                                   Then CODIGO="A00000"
                                   Else MSG_LANCTO="Fim de C¢digo Dispon¡vel !"
                                        CODIGO=""
                                EndIf
					        OtherWise   : If LANCTO_ESPECIAL
                                   Then CODIGO = Chr(Asc(VR)+1)+"00000"
                                   Else MSG_LANCTO="Fim de C¢digo Dispon¡vel !"
                                        CODIGO=""
                                EndIf
					      EndSwitch
					 Else CODIGO = AlinhNL(VR+StrVal(NumVal(SubStr(CODIGO,2,DIGITO-1))+1),DIGITO)
				EndIf
   Else CODIGO = AlinhNL(StrVal(NumVal(CODIGO)+1),DIGITO)
EndIf

Return CODIGO

EndProc ;Novo_CodigoNL()

;*******************************************************************************
;* Rotina para Gerar Proximo Codigo no Intervalo                               *
;*******************************************************************************
Proc Proximo_CodigoNL(DIGITO,LANCTO_ESPECIAL,UTILIZA_CODLIVRE)
Private AUX_VALOR,DIGITO,CODLIVRE,LANCTO_ESPECIAL,PARAM_INICIAL_NL,PARAM_FINAL_NL
If Not IsAssigned(PARAM_INICIAL_NL) Then PARAM_INICIAL_NL = 0 EndIf

; DIGITO            = A quantidade de d¡gitos a ser alinhado o numero do lancto
; LANCTO_ESPECIAL   = Se utiliza lan‡amento especial com letras e numeros
; UTILIZA_CODLIVRE  = Se utiliza codigo livre dentro de um intervalo esquematizado

;-- Caso deseja ser informado o numero de lan‡amento a ser iniciado a utiliza‡Æo
;Switch
;  Case Table()="Faturac" : PARAM_INICIAL_NL = ""
;  Case Table()="Pedidoc" : PARAM_INICIAL_NL = ""
;  Case Table()="Duplic"  : PARAM_INICIAL_NL = ""
;EndSwitch
If IsBlank(PARAM_INICIAL_NL) Or NumVal(PARAM_INICIAL_NL) = 0 Or PARAM_INICIAL_NL=BlankNum()
   Then PARAM_INICIAL_NL=AlinhNL("1",DIGITO)
EndIf
            
If DIGITO>0
   Then If LANCTO_ESPECIAL
           Then PARAM_FINAL_NL = "Z"+Fill("9",DIGITO-1)
           Else PARAM_FINAL_NL = Fill("9",DIGITO)
        EndIf   
   Else Switch 
          Case Upper(SubStr(Table(),1,4))="BORD" : PARAM_FINAL_NL = 999999
          Case Upper(SubStr(Table(),1,4))="CHEQ" : PARAM_FINAL_NL = 99999
          OtherWise                              : If CAMPO_NUMERICO Then PARAM_FINAL_NL = 99999 EndIf
        EndSwitch   
EndIf
    
While True
  Locate PARAM_INICIAL_NL
  If RetVal
     Then PARAM_INICIAL_NL = Novo_CodigoNL(PARAM_INICIAL_NL,DIGITO,LANCTO_ESPECIAL)
          If PARAM_INICIAL_NL=""
             Then Return "E"+VALOR_ORIGINAL
          EndIf
     Else Return PARAM_INICIAL_NL
  EndIf
EndWhile     
        
EndProc ;Proximo_CodigoNL()
 
;*******************************************************************************
;* Rotina p/ verificar numero de lan‡amento                                    *
;*******************************************************************************
Proc Verifica_NLancto(VALOR)
Private RETORNO,VALOR_LET,VALOR_NUM,PARAM_LET,PARAM_NUM,PR_LET,PR_NUM,VALOR,
        AUX_VALOR,POSI,LANCTO_ESPECIAL,UTILIZA_CODLIVRE,NUMERICO,
        VALOR_ORIGINAL,LIMITE,FAIXA_CODIGO_LIVRE,
        MSG_LANCTO_INFERIOR,PARAM_LIBERA_CODIGO,TIPO_CAMPO

If Not IsAssigned(ROTINA_INTERNA) Then ROTINA_INTERNA = False EndIf

LANCTO_ESPECIAL  = True          ;Controla a utiliza‡Æo de n£mero de lan‡amentos especiais (Apenas Alfanum‚ricos)
UTILIZA_CODLIVRE = False
NUMERICO         = False
MSG_LANCTO       = ""      
VALOR_ORIGINAL   = StrVal(VALOR)
CAMPO_NUMERICO   = False
LIMITE           = "" 

;---- Parƒmetro p/ permitir lan‡amento superior … sequˆncia -------------
Switch
  Case SYS_CODIGO_CLIENTE = "0092" : PARAM_LIBERA_CODIGO = True
  OtherWise                        : PARAM_LIBERA_CODIGO = False
EndSwitch
  
;---- Tabelas com campos de lan‡amentos num‚ricos --------------------
Switch
  Case Upper(SubStr(Table(),1,4))="CHEQ" : LIMITE = 99999
  Case Upper(SubStr(Table(),1,4))="BORD" : LIMITE = 999999
EndSwitch
If LIMITE<>"" And LIMITE<>BlankNum() Then CAMPO_NUMERICO = True EndIf   
  
;---- Tipo de Campo p/ Calcular os Digitos do Lancamento -------------                       
TIPO_CAMPO = Type([])
POSI = Search("*",TIPO_CAMPO)
If POSI > 0
   Then TIPO_CAMPO = SubStr(TIPO_CAMPO,1,Len(TIPO_CAMPO)-1) 
EndIf      

;---- Quantidade de Digitos a serem Alinhados ------------------------       
If SubStr(TIPO_CAMPO,1,1)="A"
   Then DIGITO = NumVal(SubStr(TIPO_CAMPO,2,Len(TIPO_CAMPO))) 
   Else LANCTO_ESPECIAL = False
        DIGITO = 0
EndIf                     
Home End  
AUX_VALOR = []
If AUX_VALOR="" Or AUX_VALOR=Blanknum()
   Then If DIGITO=0
           Then AUX_VALOR=0
           Else AUX_VALOR=Fill("0",DIGITO)
        EndIf
EndIf           

;---- Rotina que irÆo utilizar c¢digo livre  --------------------------
Switch
  ;Case Upper(SubStr(Table(),1,6)) = "FATURA"  Or
  ;     Upper(SubStr(Table(),1,6)) = "PEDIDO"    : ;NÆo utiliza lan‡amento especial
  ;     LANCTO_ESPECIAL  = False
  ;     If NumVal(AUX_VALOR) = NumVal(Fill("9",DIGITO)) Or Type(NumVal(SubStr(AUX_VALOR,1,1))) <> "N"
  ;        Then UTILIZA_CODLIVRE = True
  ;     EndIf
  ;Case Upper(SubStr(Table(),1,6)) = "DUPLIC"          :  ;Utiliza lan‡amento especial
  ;     If AUX_VALOR = "Z"+Fill("9",DIGITO-1)
  ;        Then UTILIZA_CODLIVRE = True
  ;     EndIf
  ;Case CAMPO_NUMERICO And 
  ;     Upper(SubStr(Table(),1,4)) = ""         :  ;Campos Num‚ricos
  ;     If AUX_VALOR = LIMITE
  ;        Then UTILIZA_CODLIVRE = True
  ;     EndIf        
EndSwitch    

;---- Limite --------------------------------------------------------
If LANCTO_ESPECIAL
   Then LIMITE = "Z"+Fill("9",DIGITO-1)
   Else If Not CAMPO_NUMERICO
           Then LIMITE = Fill("9",DIGITO)
        EndIf
EndIf   

If ROTINA_INTERNA And (UTILIZA_CODLIVRE Or LIMITE=AUX_VALOR)  
   Then Mensagem("Limite de c¢digo excedido.//Verificar com o Suporte Vise !")
        Return "-"+VALOR_ORIGINAL
EndIf

;---- Numero do Lan‡amento ------------------------------------------
If VALOR<>"" And VALOR<>BlankNum()
   Then VALOR = AlinhNL(VALOR,DIGITO)
        Home

        Locate VALOR
        If RetVal 
           Then End
                MSG_LANCTO = ""
                ACHOU_NUM_LANCTO = AlinhNL(VALOR_ORIGINAL,DIGITO) 
                Return "+"+VALOR_ORIGINAL                                       ;Caso exista o valor informado na rela‡Æo
           Else End        
        EndIf
   Else VALOR = AUX_VALOR
        VALOR = Checa_CodigoNL(VALOR,DIGITO,UTILIZA_CODLIVRE,LANCTO_ESPECIAL)
EndIf

;---- Validando o Codigo --------------------------------------------
If PARAM_LIBERA_CODIGO And (CAMPO_NUMERICO And AUX_VALOR=LIMITE)
   Then PARAM_LIBERA_CODIGO = False
EndIf 

If Type(NumVal(SubStr(VALOR,1,1)))<>"N"
  Then VALOR_LET = SubStr(VALOR,1,1)                                            ;Letra do Registro Digitado
       VALOR_NUM = NumVal(SubStr(VALOR,2,DIGITO))                               ;Numero do Registro Digitado
  Else VALOR_LET = ""
       VALOR_NUM = NumVal(VALOR)  
EndIf  

If Type(NumVal(SubStr(AUX_VALOR,1,1)))<>"N"
  Then PARAM_LET = SubStr(AUX_VALOR,1,1)                                        ;Letra do Ultimo Registro 
       PARAM_NUM = NumVal(SubStr(AUX_VALOR,2,DIGITO))                           ;Numero do Ultimo Registro 
  Else PARAM_LET = ""
       PARAM_NUM = NumVal(AUX_VALOR)  
EndIf    

RETORNO = ""
Switch
  Case LANCTO_ESPECIAL And Not UTILIZA_CODLIVRE     :
       If VALOR_LET <> ""
          Then If PARAM_LET<>""
                  Then If PARAM_LET+StrVal(PARAM_NUM) = LIMITE
                          Then MSG_LANCTO = "Limite de c¢digo excedido.//Verificar com o Suporte Vise !" 
                               RETORNO = "*"+VALOR_ORIGINAL
                          Else LIMITE = ""
                       EndIf
               EndIf
       EndIf  
  Case LANCTO_ESPECIAL And UTILIZA_CODLIVRE         :
       If VALOR_LET <> ""
          Then If PARAM_LET<>""
                  Then If PARAM_LET+StrVal(PARAM_NUM) = LIMITE
                          Then LIMITE = "LIMITE FINALIZADO"
                          Else LIMITE = ""
                       EndIf
               EndIf
          Else If PARAM_LET+StrVal(PARAM_NUM) = LIMITE
                  Then LIMITE = "LIMITE FINALIZADO"
               EndIf    
       EndIf        
  Case Not LANCTO_ESPECIAL And Not UTILIZA_CODLIVRE :  
       If VALOR_LET = ""
          Then If PARAM_LET=""
                  Then If PARAM_NUM = NumVal(LIMITE)
                          Then MSG_LANCTO = "Limite de c¢digo excedido.//Verificar com o Suporte Vise !" 
                               RETORNO = "*"+VALOR_ORIGINAL
                               If CAMPO_NUMERICO Then LIMITE  = "" EndIf
                          Else LIMITE = ""     
                       EndIf
                  Else MSG_LANCTO = "Ocorreu um erro ao montar o numero do lan‡amento.//Verificar com o Suporte Vise !"
                       RETORNO = "*"+VALOR_ORIGINAL
               EndIf
          Else MSG_LANCTO = "O lan‡amento n„o pode conter letras!"
               RETORNO = "*"+VALOR_ORIGINAL
       EndIf
  Case Not LANCTO_ESPECIAL And UTILIZA_CODLIVRE     :
       If VALOR_LET = ""
          Then If PARAM_LET=""
                  Then If PARAM_NUM = NumVal(LIMITE)
                          Then LIMITE = "LIMITE FINALIZADO"
                          Else LIMITE = ""
                       EndIf
                  Else MSG_LANCTO = "Ocorreu um erro ao montar o numero do lan‡amento.//Verificar com o Suporte Vise !"
                       RETORNO = "*"+VALOR_ORIGINAL
               EndIf
          Else MSG_LANCTO = "O lan‡amento n„o pode conter letras!"
               RETORNO = "*"+VALOR_ORIGINAL
       EndIf
EndSwitch

Switch                                        
  Case VALOR_LET<>"" : 
       ;----- Pr¢ximo Numero de Lancamento -------------------------------------
       If PARAM_LET = ""
          Then If PARAM_NUM=NumVal(Fill("9",DIGITO))
                  Then PROXIMO_LANCTO = "A"+Fill("0",DIGITO-1)
                  Else PROXIMO_LANCTO = AlinhM(StrVal(PARAM_NUM+1),DIGITO)
               EndIf   
          Else If (Len(StrVal((PARAM_NUM+1))) > Len(StrVal(PARAM_NUM))) And (Len(StrVal((PARAM_NUM+1))) > DIGITO-1) 
                  Then PROXIMO_LANCTO = 0
                  Else PROXIMO_LANCTO = PARAM_NUM+1
               EndIf
               If PROXIMO_LANCTO=0
                  Then PROXIMO_LANCTO = Chr(Asc(PARAM_LET)+1) + AlinhME(StrVal(PROXIMO_LANCTO),DIGITO-1)
                  Else PROXIMO_LANCTO = PARAM_LET + AlinhME(StrVal(PROXIMO_LANCTO),DIGITO-1)
               EndIf    
       EndIf
       ;----- Limite da Faixa de C¢digo ----------------------------------------
       FAIXA_CODIGO_LIVRE = True
       If PARAM_LET="Z" And PARAM_NUM=NumVal(Fill("9",DIGITO-1))
          Then If SubStr(VALOR,1,1)="[" 
                  Then MSG_LANCTO = "Limite de c¢digo excedido.//Verificar com o Suporte Vise !"
                       Return "*"+VALOR_ORIGINAL    
               EndIf  
               FAIXA_CODIGO_LIVRE = False              
       EndIf
       
       ;---- Valida‡Æo de Registro ---------------------------------------------
       MSG_LANCTO_INFERIOR = ""
       RETORNO             = ""
       
       If VALOR <> PROXIMO_LANCTO
          Then If Type(NumVal(SubStr(PROXIMO_LANCTO,1,1)))<>"N"
                  Then PR_LET = SubStr(PROXIMO_LANCTO,1,1) 
                       PR_NUM = NumVal(SubStr(PROXIMO_LANCTO,2,Len(PROXIMO_LANCTO)))
                  Else PR_LET = ""
                       PR_NUM = NumVal(PROXIMO_LANCTO)
               EndIf   
               
               Switch
                 Case PR_LET="" : 
                 Case ((Asc(VALOR_LET) = Asc(PR_LET) And (VALOR_NUM > PR_NUM)) Or Asc(VALOR_LET) > Asc(PR_LET)) And SubStr(PROXIMO_LANCTO,1,1)<>"[" :
                      MSG_LANCTO_INFERIOR = "Faixa de c¢digo excedida ou o lan‡amento n„o ‚ sequencial !"
                      RETORNO = "*"+VALOR_ORIGINAL
                 OtherWise : If SubStr(PROXIMO_LANCTO,1,1)="[" Then PROXIMO_LANCTO = "LIMITE FINALIZADO" EndIf 
                             MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: "+StrVal(PROXIMO_LANCTO),50," ")+"//"+
                                                   Completa("O lan‡amento  informado ‚: "+AlinhNL(VALOR,DIGITO),50," ")+"//"
               EndSwitch                                    
       EndIf          
       Switch
         Case VALOR = PROXIMO_LANCTO Or MSG_LANCTO_INFERIOR<>"" Or RETORNO<>"" : ;Lan‡amento Sequencial
         Case Not FAIXA_CODIGO_LIVRE : ;Quando o limite ‚ excedido 
              MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: LIMITE FINALIZADO",50," ")+"//"+
                                    Completa("O lan‡amento  informado ‚: "+AlinhNL(VALOR,DIGITO),50," ")+"//"
         Case PARAM_LET=""           : ;Quando o ultimo registro ‚ numero
              Switch
                Case Type(NumVal(SubStr(PROXIMO_LANCTO,1,1)))="N"  :
                     Switch
                       Case VALOR_NUM > PARAM_NUM Or VALOR_LET<>"" :
                            MSG_LANCTO_INFERIOR = "O lan‡amento deve ser sequencial !"
                            RETORNO = "*"+VALOR_ORIGINAL
                       OtherWise : MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: "+StrVal(PROXIMO_LANCTO),50," ")+"//"+
                                                         Completa("O lan‡amento  informado ‚: "+AlinhNL(VALOR,DIGITO),50," ")+"//"
                     EndSwitch
                Case Type(NumVal(SubStr(PROXIMO_LANCTO,1,1)))<>"N" :
                     If Type(NumVal(SubStr(VALOR,1,1)))="N" 
                        Then If VALOR_NUM < PARAM_NUM
                                Then MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: "+StrVal(PROXIMO_LANCTO),50," ")+"//"+
                                                           Completa("O lan‡amento  informado ‚: "+AlinhNL(VALOR,DIGITO),50," ")+"//"
                                Else MSG_LANCTO_INFERIOR = "O lan‡amento deve ser sequencial !"
                                     RETORNO = "*"+VALOR_ORIGINAL
                             EndIf
                        Else MSG_LANCTO_INFERIOR = "O lan‡amento deve ser sequencial !"
                             RETORNO = "*"+VALOR_ORIGINAL       
                     EndIf        
              EndSwitch   
         Case Asc(PARAM_LET) = Asc(VALOR_LET) : 
              Switch
                Case VALOR_NUM < PARAM_NUM :  
                     MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: "+StrVal(PROXIMO_LANCTO),50," ")+"//"+
                                           Completa("O lan‡amento  informado ‚: "+Strval(VALOR),50," ")+"//"
                Case VALOR_NUM > PARAM_NUM+1 : 
                     MSG_LANCTO_INFERIOR = "O lan‡amento deve ser sequencial !"
                     RETORNO = "*"+VALOR_ORIGINAL                        
              EndSwitch
                 
         Case Asc(VALOR_LET) >= Asc(PARAM_LET) :  
              If PARAM_NUM = NumVal(Fill("9",DIGITO-1)) 
                 Then If VALOR_LET + AlinhME(StrVal(VALOR_NUM),DIGITO-1) <> Upper(Chr(Asc(PARAM_LET)+1))+Fill("0",DIGITO-1)
                         Then MSG_LANCTO_INFERIOR = "O lan‡amento deve ser sequencial !"
                              RETORNO = "*"+VALOR_ORIGINAL       
                      EndIf
              EndIf                             
       Endswitch                
                                     
       If MSG_LANCTO_INFERIOR<>""
          Then If RETORNO<>"" 
                  Then If Not PARAM_LIBERA_CODIGO  
                          Then MSG_LANCTO = MSG_LANCTO_INFERIOR
                               Return "*"+VALOR_ORIGINAL
                          Else MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: "+StrVal(PROXIMO_LANCTO),50," ")+"//"+
                                                     Completa("O lan‡amento  informado ‚: "+Strval(VALOR),50," ")+"////"+
                                                     Completa("O  lan‡amento  informado  n„o ‚ sequencial, caso",50," ")+"//"+ 
                                                     Completa("continue com o processo, os pr¢ximos lan‡amentos",50," ")+"//"+ 
                                                     Completa("seguir„o a ordem deste informado!               ",50," ")+"//"
                       EndIf
               EndIf                 
               MSG_LANCTO_INFERIOR = MSG_LANCTO_INFERIOR + "Deseja continuar com o lan‡amento informado ?"
               ConfGeral(MSG_LANCTO_INFERIOR)
               If OK<>"S"
                  Then MSG_LANCTO = ""
                       Return "*"+VALOR_ORIGINAL
               EndIf  
       EndIf
  Case VALOR_LET="" :  
       ;---- Pr¢ximo Lan‡amento ------------------------------------------------
       MSG_LANCTO_INFERIOR = ""
       If PARAM_LET<>""
          Then If NumVal(PARAM_NUM) < NumVal(Fill("9",DIGITO-1))
                  Then PROXIMO_LANCTO = PARAM_LET + AlinhNL(StrVal(NumVal(PARAM_NUM)+1),DIGITO-1)
                  Else PROXIMO_LANCTO = Chr(Asc(PARAM_LET)+1)+ Fill("0",DIGITO-1)
                       If SubStr(PROXIMO_LANCTO,1,1)="[" Then PROXIMO_LANCTO = "LIMITE FINALIZADO" EndIf
               EndIf
         Else 
              If NumVal(PARAM_NUM) = NumVal(Fill("9",DIGITO))
                 Then PROXIMO_LANCTO = "A"+Fill("0",DIGITO-1)
                 Else PROXIMO_LANCTO= AlinhNL(NumVal(AUX_VALOR)+1,DIGITO)           
              EndIf
       EndIf        
       
       Switch
         Case PROXIMO_LANCTO=VALOR              :
         OtherWise                              : If LIMITE = "LIMITE FINALIZADO"
                                                     Then PROXIMO_LANCTO = LIMITE
                                                  EndIf
                                                  MSG_LANCTO = ""
                                                  If (NumVal(VALOR) > NumVal(PARAM_NUM)) And PARAM_LET=""
                                                     Then MSG_LANCTO = "O lan‡amento deve ser sequencial !"
                                                          RETORNO = "*"+VALOR_ORIGINAL
                                                          If PARAM_LIBERA_CODIGO 
                                                             Then MSG_LANCTO_INFERIOR = MSG_LANCTO
                                                                  MSG_LANCTO = ""
                                                          EndIf
                                                     Else MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: "+StrVal(PROXIMO_LANCTO),50," ")+"//"+
                                                                                Completa("O lan‡amento  informado ‚: "+Strval(VALOR),50," ")+"//"
                                                  EndIf
                                                  
                                                  If UTILIZA_CODLIVRE And Not LANCTO_ESPECIAL
                                                     Then MSG_LANCTO_INFERIOR    = ""    
                                                  EndIf   
                                                  
       EndSwitch
       
       If MSG_LANCTO_INFERIOR<>""
          Then If RETORNO<>"" 
                  Then    
                  If Not PARAM_LIBERA_CODIGO  
                          Then If ((UTILIZA_CODLIVRE And Not LANCTO_ESPECIAL) And PARAM_LET<>"") Or (CAMPO_NUMERICO And LIMITE  = "")
                                  Then MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: LIMITE FINALIZADO",50," ")+"//"+
                                                             Completa("O lan‡amento  informado ‚: "+Strval(VALOR),50," ")+"//"+
                                                             "Deseja continuar com o lan‡amento informado ?"  
                                       ConfGeral(MSG_LANCTO_INFERIOR)
                                       If OK<>"S"
                                          Then MSG_LANCTO = ""
                                               Return "*"+VALOR_ORIGINAL
                                      EndIf
                                  Else MSG_LANCTO = MSG_LANCTO_INFERIOR
                                       Return "*"+VALOR_ORIGINAL
                               EndIf        
                          Else MSG_LANCTO_INFERIOR = Completa("O lan‡amento sequencial ‚: "+StrVal(PROXIMO_LANCTO),50," ")+"//"+
                                                     Completa("O lan‡amento  informado ‚: "+Strval(AlinhNL(VALOR,DIGITO)),50," ")+"////"+
                                                     Completa("O  lan‡amento  informado  n„o ‚ sequencial, caso",50," ")+"//"+ 
                                                     Completa("continue com o processo, os pr¢ximos lan‡amentos",50," ")+"//"+ 
                                                     Completa("seguir„o a ordem deste informado!               ",50," ")+"//"
                       EndIf
               EndIf                
               If MSG_LANCTO<>""
                  Then Return "*"+VALOR_ORIGINAL
                  Else MSG_LANCTO_INFERIOR = MSG_LANCTO_INFERIOR + "Deseja continuar com o lan‡amento informado ?"
                       ConfGeral(MSG_LANCTO_INFERIOR)
                       If OK<>"S"
                          Then MSG_LANCTO = ""
                               Return "*"+VALOR_ORIGINAL
                       EndIf
               EndIf
          Else If MSG_LANCTO<>""
                  Then Return "*"+VALOR_ORIGINAL
               EndIf          
       EndIf
EndSwitch

Release Vars CAMPO_NUMERICO,RETORNO,VALOR_LET,VALOR_NUM,PARAM_LET,PARAM_NUM,PR_LET,
        PR_NUM,AUX_VALOR,POSI,LANCTO_ESPECIAL,UTILIZA_CODLIVRE,NUMERICO,
        VALOR_ORIGINAL,LIMITE,FAIXA_CODIGO_LIVRE,
        MSG_LANCTO_INFERIOR,PARAM_LIBERA_CODIGO,TIPO_CAMPO

Return VALOR

EndProc ;Verifica_NLancto()
 
;*******************************************************************************
;* Verifica‡Æo do Numero do Lancamento                                         *
;*******************************************************************************
Proc Numero_Lancamento(PARAM,FORM_REL)
Private TEMP,PARAM,NLANC_PROCESSO, CampoLancamento

CampoLancamento=Field()

If Not IsAssigned(COD_VER) Then COD_VER = "" EndIf
If Not IsAssigned(VER_SPECIAL) Then VER_SPECIAL = False EndIf
                  
;Sintaxe PadrÆo p/ Inicio das Variaveis -> PROXLANCTO                  
                          
;ROTINA ESPECIFICA PARA NOVOS LANCAMENTOS OU LANCAMENTOS INFORMADOS PELO USUARIO
;REG_ENTER ESPECIFICA SE O USUARIO INFORMOU OU NAO LANCAMENTO E � FEITO PROCESSOS PARA TAL A€ÇO
;FORM_REL => Passar o FORM da rela‡Æo da rotina em que esta sendo tratada

If FORM_REL="Locked_CtrlPgDn" Or FORM_REL="Locked_Down" 
   Then NLANC_PROCESSO = FORM_REL
        FORM_REL       = ""
   Else NLANC_PROCESSO = "" 
EndIf

TEMP        = True                
FAZ_NLANCTO = True
REG_ENTER   = False

If PARAM="Interno"
   Then ROTINA_INTERNA = True
        If COD_VER<>""
           Then PROXLANCTO_NLANC = Verifica_NLancto(COD_VER)
           Else PROXLANCTO_NLANC = Verifica_NLancto("")
        EndIf
   Else ROTINA_INTERNA = False
        PROXLANCTO_NLANC  = []
        
        If PROXLANCTO_NLANC = "" Or PROXLANCTO_NLANC = BlankNum()
           Then REG_ENTER = True 
        EndIf 
        LANCTO_ORIGINAL = PROXLANCTO_NLANC
        
        If Type(NumVal(SubStr(PROXLANCTO_NLANC,1,1)))<>"N" And Len(PROXLANCTO_NLANC)=1
           Then TIPO_CAMPO = Type([])                         
                POSI = Search("*",TIPO_CAMPO)
                If POSI > 0
                   Then TIPO_CAMPO = SubStr(TIPO_CAMPO,1,Len(TIPO_CAMPO)-1) 
                EndIf
                If SubStr(TIPO_CAMPO,1,1)="A"
                   Then DIGITO = NumVal(SubStr(TIPO_CAMPO,2,Len(TIPO_CAMPO))) 
                EndIf                                                        
                LANCTO_ORIGINAL  = LANCTO_ORIGINAL+Fill("0",DIGITO-1)
                PROXLANCTO_NLANC = LANCTO_ORIGINAL+Fill("0",DIGITO-1)
        EnDIf
        
        Del
        If Not Proximo_Lancamento(CampoLancamento)
           Then FAZ_NLANCTO = False
        EndIf   
        
        ;If PROXLANCTO_NLANC<>"" And PROXLANCTO_NLANC<>BlankNum() Then LANCTO_ORIGINAL = AlinhNL(LANCTO_ORIGINAL,DIGITO) EndIf
        
        If LANCTO_ORIGINAL<>"" And LANCTO_ORIGINAL<>BlankNum()
           Then If PROXLANCTO_NLANC<>"" And PROXLANCTO_NLANC<>BlankNum() Then LANCTO_ORIGINAL = AlinhNL(LANCTO_ORIGINAL,DIGITO) EndIf
        EndIf       
EndIf   

Switch
  Case ROTINA_INTERNA : ;---- Quando ‚ retornado um erro / Registro existente / lan‡amento nao seja num‚rico ----
                        If (DIGITO = 0 And Type(NumVal(SubStr(PROXLANCTO_NLANC,1,1)))<>"N") Or 
                           SubStr(PROXLANCTO_NLANC,1,1)="-"                                 Or 
                           SubStr(PROXLANCTO_NLANC,1,1)="*"                                 Or  
                           SubStr(PROXLANCTO_NLANC,1,1)="+"                                 
                           Then FAZ_NLANCTO = False
                                If IsAssigned(MSG_LANCTO) And VER_SPECIAL
                                   Then If MSG_LANCTO<>""
                                           Then Mensagem(MSG_LANCTO)
                                        EndIf
                                EndIf
                                Release Vars MSG_LANCTO,VER_SPECIAL
                        EndIf
  OtherWise           : Switch
                          Case SubStr(PROXLANCTO_NLANC,1,1)="*" : ;---- Quando ‚ retornado um erro --
                                                                  If IsAssigned(MSG_LANCTO)
                                                                     Then If MSG_LANCTO<>""
                                                                             Then Mensagem(MSG_LANCTO)
                                                                          EndIf
                                                                  EndIf
                                                                  FAZ_NLANCTO = False
                          Case SubStr(PROXLANCTO_NLANC,1,1)="+" : ;---- Registro existente ----------
                                                                  PROXLANCTO_NLANC = LANCTO_ORIGINAL
                                                                  If PROXLANCTO_NLANC="" Or PROXLANCTO_NLANC=BlankNum()
                                                                     Then FAZ_NLANCTO = False 
                                                                  EndIf
                          Case DIGITO = 0 And Type(NumVal(SubStr(PROXLANCTO_NLANC,1,1)))<>"N" : ;--- Caso o lan‡amento nao seja num‚rico
                               Mensagem("Lan‡amento: "+StrVal(PROXLANCTO_NLANC)+" informado incorretamente.//Verificar com o Suporte Vise !")           
                               FAZ_NLANCTO = False                                      
                        EndSwitch                             
Endswitch

If Not FAZ_NLANCTO
   Then TEMP = False
        Release Vars MSG_LANCTO,DIGITO
        ;Processo para quando o lan‡amento estourar ou quando ocorrer algum erro citado acima
        ;logo este processo dever  ser tratado, informando o usu rio sobre a impossibilidade de
        ;incluir registro
   Else If DIGITO=0 Then PROXLANCTO_NLANC = NumVal(PROXLANCTO_NLANC) EndIf
        If (IsAssigned(PROXIMO_LANCTO_REG_ACHOU) And PROXIMO_LANCTO_REG_ACHOU) Or (IsAssigned(PROXIMO_LANCTO_ANTERIOR) And PROXIMO_LANCTO_ANTERIOR)
           Then
           Else End
        EndIf   
        Release Vars MSG_LANCTO,DIGITO
EndIf     

;Processo Adicionado em 03.09.2018
If PARAM="Interno" And (NLANC_PROCESSO="Locked_CtrlPgDn" Or NLANC_PROCESSO="Locked_Down")
   Then 
        While True
          Moveto field CampoLancamento
          If NLANC_PROCESSO="Locked_Down"
             Then Down
             Else CtrlPgDn
          EndIf   
          Moveto field CampoLancamento
          []=PROXLANCTO_NLANC
          PostRecord KeyViol LeaveLocked
				  If RetVal
				     Then Return True
             Else Del
          EndIf
    	 EndWhile

        ;Para Campo [Numero do Lancamento]
        ;While True
        ;  Moveto [Numero do Lancamento]
        ;  If NLANC_PROCESSO="Locked_Down"
        ;     Then Down
        ;     Else CtrlPgDn
        ;  EndIf   
        ;  Moveto [Numero do Lancamento]
        ;  [Numero do Lancamento]=PROXLANCTO_NLANC
        ;  PostRecord KeyViol LeaveLocked
				;  If RetVal
				;     Then Return True
        ;     Else Del
        ;  EndIf
    	  ;EndWhile

EndIf

Return TEMP             
         
EndProc ;Numero_Lancamento()

;*******************************************************************************
;* Rotina para gerar proximo lancamento                                        *
;*******************************************************************************
Proc Proximo_Lancamento(CampoLancamento)
Private i,CampoLancamento

If Not IsAssigned(FORM_REL) 
   Then Return False
EndIf
 
PROXIMO_LANCTO_ANTERIOR  = False  ;Registro novo, utilizando lan‡ametos anterior diferente do sequencial
PROXIMO_LANCTO_REG_ACHOU = False  ;Registro existente (Geralmente CHAVE = 0) 
For i From 1 to 10
  End
  If REG_ENTER
     Then PROXLANCTO_NLANC  = Verifica_NLancto("")
     Else ACHOU_NUM_LANCTO  = ""
          PROXLANCTO_NLANC  = Verifica_NLancto(PROXLANCTO_NLANC)
  EndIf   
  If ((DIGITO = 0 And Type(NumVal(SubStr(PROXLANCTO_NLANC,1,1)))<>"N") Or 
     SubStr(PROXLANCTO_NLANC,1,1)="-"                                  Or 
     SubStr(PROXLANCTO_NLANC,1,1)="*"                                  Or
     SubStr(PROXLANCTO_NLANC,1,1)="+")
     Then End
          If SubStr(PROXLANCTO_NLANC,1,1)="+"
             Then If ACHOU_NUM_LANCTO<>""
                     Then Locate ACHOU_NUM_LANCTO
                          PostRecord KeyViol LeaveLocked
                          If RetVal
                             Then PROXIMO_LANCTO_REG_ACHOU = True
                                  PROXLANCTO_NLANC         = ACHOU_NUM_LANCTO
                                  Release Vars ACHOU_NUM_LANCTO
                                  Return True
                          EndIf
                  EndIf
          EndIf
          Release Vars ACHOU_NUM_LANCTO
          Return False
  EndIf
  If PROXLANCTO_NLANC <> StrVal(PROXIMO_LANCTO) Then PROXIMO_LANCTO_ANTERIOR = True EndIf
  
  PickForm FORM_REL
  Home End Down
  moveto Field CampoLancamento
  []=PROXLANCTO_NLANC
  PostRecord KeyViol LeaveLocked
  If RetVal     
     Then Return True
     Else If REG_ENTER
             Then Del
             Else Return False
          EndIf   
  EndIf    
EndFor

Return False

EndProc ;Proximo_Lancamento()

;*******************************************************************************
;* Rotina para verificar se existe mes ou ano em aberto                        *
;*******************************************************************************
Proc TiraSombraShowDialog()
private Win_showdialog1, winarray_showdialog1 

Dynarray winarray_showdialog1[]
Window handle Dialog To Win_showdialog1
Window GetAttributes Win_showdialog1 To winarray_showdialog1
winarray_showdialog1["HASSHADOW"] = False
Window SetAttributes Win_showdialog1 From winarray_showdialog1

Release vars Win_showdialog1, winarray_showdialog1 
EndProc

;*******************************************************************************
;* Modelo de Relat¢rio                                                         *
;*******************************************************************************
Proc ModeloRelatorios()
private tl,i ,ml

;Ser  necess rio carregar no script os modelos que vÆo pertencer a lista
;Por Exemplo: ModeloRelatoriosCarregaLista()

;Maximo de 70 Posi‡äes na largura do Array

switch
  case ArraySize(Array_OpModeloRelatorios)>19 : tl=19
  case ArraySize(Array_OpModeloRelatorios)<3  : tl=3 
  otherwise                                   : tl=ArraySize(Array_OpModeloRelatorios)
endswitch

ml=0
For i from 1 to ArraySize(Array_OpModeloRelatorios)
  if substr(Array_OpModeloRelatorios[i],1,1)<>chr(196) and
     len(Array_OpModeloRelatorios[i])>ml 
     then ml=len(Array_OpModeloRelatorios[i]) 
  endif
Endfor
switch
  case ml>74 : ml=74
;;case ml<30 : ml=30
  otherwise  : ml=69
endswitch

ShowDialog "Modelos de Relat¢rios" Proc "SD_ModeloRelatorios"
 Trigger "OPEN","SELECT"  
 Key "F1","ENTER","ESC","TAB"
  @ 01,01 Height tl+2 Width ml+5

  PickArray @00,00 Height tl width ml+2
   Columns 1
    Array_OpModeloRelatorios
     Tag "TG_OPRELATORIO"
      To VSDGOPMODELORELATORIOS

EndDialog
If RetVal
   Then VSDGCODMODELO=Rtrim(SubStr(Array_OpModeloRelatorios[VSDGOPMODELORELATORIOS],1,3))
        VSDGMODELO   =SubStr(Array_OpModeloRelatorios[VSDGOPMODELORELATORIOS],5,75)
        
        Return True
   Else Return False
EndIf

EndProc ;(Relatorios)

;*******************************************************************************
;* Rotina para Controle do Modelo de Relat¢rio                                 *
;*******************************************************************************
Proc ModeloRelatoriosAdd(STRING)
Private STRING

;---------- Dados Obrigatorios --------------------
;AddModeloRelatorio("Criar")
;AddModeloRelatorio(...)
;AddModeloRelatorio("Fim")


If Upper(STRING)="CRIAR"
   Then Contador_OpRelatorios = 0 
        DynArray TempArray_OpModeloRelatorios[]
EndIf
If Not IsAssigned(TempArray_OpModeloRelatorios)
   Then Mensagem("Op‡„o Inv lida!")
        Return
EndIf   

If Upper(STRING)<>"CRIAR" And Upper(STRING)<>"FIM"
   Then Contador_OpRelatorios = Contador_OpRelatorios + 1
        If STRING = "Separator"
           Then STRING = Fill(chr(196),74)
        EndIf 
        TempArray_OpModeloRelatorios[Contador_OpRelatorios]=STRING
EndIf

If Upper(STRING)="FIM"
   Then Array Array_OpModeloRelatorios[DynArraySize(TempArray_OpModeloRelatorios)]
        
        For i from 1 to DynArraySize(TempArray_OpModeloRelatorios)
         Array_OpModeloRelatorios[i]=TempArray_OpModeloRelatorios[i]
        Endfor
        
        Release Vars TempArray_OpModeloRelatorios
EndIf

EndProc

;*******************************************************************************
;* Rotina para Controle do Modelo de Relat¢rio                                 *
;*******************************************************************************
Proc SD_ModeloRelatorios(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento,Temp,MSG_CAMPO,TECLA,
        Janela_SD_ModeloRelatorios,CoresSD_ModeloRelatorios, WinArray18

Temp=True
MSG_CAMPO=""
TECLA    =""
If Disparo="OPEN"    
   Then 
        If Not IsAssigned(SYS_COR_RODAPE) 
           Then SYS_COR_RODAPE =31
                SYS_COR_RODAPED=30 
        EndIf

        Window handle Dialog To Janela_SD_ModeloRelatorios
        If IsAssigned(CoresSD_ModeloRelatorios)
           Then Release Vars CoresSD_ModeloRelatorios
        EndIf
        Dynarray WinArray18[]
        Dynarray CoresSD_ModeloRelatorios[]
                                                          
        CoresSD_ModeloRelatorios[01]=SYS_COR_RODAPE                    ;Borda e T¡tulo          Branco_Azul
        CoresSD_ModeloRelatorios[25]=SYS_COR_RODAPE                    ;Lista

        If SYS_COR_RODAPE =79
           then  CoresSD_ModeloRelatorios[26]=124                      ;linha selecionada                    
        endif

        Window SetColors Janela_SD_ModeloRelatorios     From CoresSD_ModeloRelatorios
        Window SetAttributes Janela_SD_ModeloRelatorios From WinArray18

        AoCriarShowDialog() 
EndIf

If Disparo="SELECT"  
   Then VSDGOPMODELORELATORIOS=ControlValue("TG_OPRELATORIO")
        AcceptDialog 
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9    : Temp=False
     Case Evento["KeyCode"] = 27   : CancelDialog
     Case Evento["KeyCode"] = 13   :
       VSDGOPMODELORELATORIOS=ControlValue("TG_OPRELATORIO")
       If SubStr(Array_OpModeloRelatorios[VSDGOPMODELORELATORIOS],1,1)=chr(196)  
          Then FastMsg("Op‡„o inv lida !")       
          Else AcceptDialog
       EndIf   
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPRELATORIO":
     MSG_CAMPO="Informe o c¢digo desejado !"
     TECLA    ="=Selecionar  "
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Modelo de Relat¢rio                                                         *
;*******************************************************************************
Proc ModeloRelatorios_CD()
private tl,i ,ml

;Ser  necess rio carregar no script os modelos que vÆo pertencer a lista
;Por Exemplo: ModeloRelatoriosCarregaLista()

;Maximo de 70 Posi‡äes na largura do Array

switch
  case ArraySize(Array_OpModeloRelatorios)>16 : tl=16
  case ArraySize(Array_OpModeloRelatorios)<3  : tl=3 
  otherwise                                   : tl=ArraySize(Array_OpModeloRelatorios)
endswitch

ml=0
For i from 1 to ArraySize(Array_OpModeloRelatorios)
  if substr(Array_OpModeloRelatorios[i],1,1)<>chr(196) and
     len(Array_OpModeloRelatorios[i])>ml 
     then ml=len(Array_OpModeloRelatorios[i]) 
  endif
Endfor
switch
  case ml>74 : ml=74
;;case ml<35 : ml=35
  otherwise  : ml=69
endswitch

If Not IsAssigned(VSDGNCASASDEC)  Then VSDGNCASASDEC=3  EndIf

ShowDialog "Modelos de Relat¢rios" Proc "SD_ModeloRelatorios_CD"
 Trigger "OPEN","SELECT"  
 Key "F1","ENTER","ESC","TAB"
  @ 01,01 Height tl+4 Width ml+5

  Label  @ 00,00 "~V~isualizar com" For "TG_NCASASDEC"
  Accept @ 00,16 Width 4 "S" Tag "TG_NCASASDEC" To VSDGNCASASDEC
  @ 00,21 ?? "casas decimais" 


  PickArray @02,00 Height tl width ml+2
   Columns 1
    Array_OpModeloRelatorios
     Tag "TG_OPRELATORIO"
      To VSDGOPMODELORELATORIOS

EndDialog
If RetVal
   Then VSDGCODMODELO=Rtrim(SubStr(Array_OpModeloRelatorios[VSDGOPMODELORELATORIOS],1,3))
        VSDGMODELO   =SubStr(Array_OpModeloRelatorios[VSDGOPMODELORELATORIOS],5,75)
        
        Return True
   Else Return False
EndIf

EndProc ;(Relatorios)

;*******************************************************************************
;* Rotina para Controle do Modelo de Relat¢rio                                 *
;*******************************************************************************
Proc SD_ModeloRelatorios_CD(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento,Temp,MSG_CAMPO,TECLA,
        Janela_SD_ModeloRelatorios,CoresSD_ModeloRelatorios, WinArray18

Temp=True
MSG_CAMPO=""
TECLA    =""
If Disparo="OPEN"    
   Then 
        If Not IsAssigned(SYS_COR_RODAPE) 
           Then SYS_COR_RODAPE =31
                SYS_COR_RODAPED=30 
        EndIf

        Window handle Dialog To Janela_SD_ModeloRelatorios
        If IsAssigned(CoresSD_ModeloRelatorios)
           Then Release Vars CoresSD_ModeloRelatorios
        EndIf
        Dynarray WinArray18[]
        Dynarray CoresSD_ModeloRelatorios[]
                                                          
        CoresSD_ModeloRelatorios[01]=SYS_COR_RODAPE                    ;Borda e T¡tulo          Branco_Azul
        CoresSD_ModeloRelatorios[25]=SYS_COR_RODAPE                    ;Lista

        If SYS_COR_RODAPE =79
           then  CoresSD_ModeloRelatorios[26]=124                      ;linha selecionada                    
        endif

        Window SetColors Janela_SD_ModeloRelatorios     From CoresSD_ModeloRelatorios
        Window SetAttributes Janela_SD_ModeloRelatorios From WinArray18

        AoCriarShowDialog()
        
        campo="TG_OPRELATORIO" 
EndIf

If Disparo="SELECT"  
   Then VSDGOPMODELORELATORIOS=ControlValue("TG_OPRELATORIO")
        AcceptDialog 
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9    : Temp=False
       switch
         Case Campo="TG_NCASASDEC"   : Campo="TG_OPRELATORIO"     
         Case Campo="TG_OPRELATORIO" : Campo="TG_NCASASDEC"     
       endswitch     
     Case Evento["KeyCode"] = 27   : CancelDialog
     Case Evento["KeyCode"] = 13   :
       switch
         Case Campo="TG_NCASASDEC"   : Campo="TG_OPRELATORIO"
           VSDGNCASASDEC=ControlValue("TG_NCASASDEC")
           if VSDGNCASASDEC>3 then VSDGNCASASDEC=3 endif
           if VSDGNCASASDEC<0 then VSDGNCASASDEC=0 endif
                
         otherwise                   :     
           VSDGOPMODELORELATORIOS=ControlValue("TG_OPRELATORIO")
           If SubStr(Array_OpModeloRelatorios[VSDGOPMODELORELATORIOS],1,1)=chr(196)  
              Then FastMsg("Op‡„o inv lida !")       
              Else 
                   if VSDGNCASASDEC>3 then VSDGNCASASDEC=3 endif
                   if VSDGNCASASDEC<0 then VSDGNCASASDEC=0 endif
                   
                   AcceptDialog
           EndIf   
       endswitch     
     
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPRELATORIO":
     MSG_CAMPO="Informe o c¢digo desejado !"
     TECLA    ="=Selecionar  Alt+V=Casas decimais"

  Case Campo="TG_NCASASDEC"  :
     MSG_CAMPO="Informe o n§ de casas decimais a exibir no relat¢rio !"
     
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina validar ModelosRelatorios                                            *
;*******************************************************************************
Proc ValidarModelosRelatorios()
private wc,modelook

modelook=false
For wc From 1 To ArraySize(Array_OpModeloRelatorios) 
  If VSDGCODMODELO = Rtrim(SubStr(Array_OpModeloRelatorios[wc],1,3))
     Then modelook=true
  EndIf
Endfor

If not modelook
   Then Mensagem("Modelo de relat¢rio inv lido ou nÆo selecionado !")
endif

return modelook
endproc

;*******************************************************************************
;* Rotina para Mensagem dos CheckBoxes + de 1 Checkbox                         *
;*******************************************************************************
Proc MensagemCheckBoxes()
MSG_CAMPO=MSG_CAMPO+chR(27)+Chr(24)+Chr(25)+Chr(26)+"=Mover  Barra de espa‡o=Marca/Desmarca"
endproc

;*******************************************************************************
;* Rotina para Mensagem dos CheckBoxes apenas 1 checkbox                       *
;*******************************************************************************
Proc MensagemCheckBox()
MSG_CAMPO=MSG_CAMPO+" Barra de espa‡o=Marca/Desmarca"
endproc

;*******************************************************************************
;* Rotina para Mensagem dos RadioButtons                                       *
;*******************************************************************************
Proc MensagemRadioButtons()

MSG_CAMPO=chR(27)+Chr(24)+Chr(25)+Chr(26)+"=Mover"

endproc

;*******************************************************************************
;* Rotina Consulta F1 ShowDialog sobre Form                                    *
;*******************************************************************************
Proc ShowDialogLookup(opcao,valores)
private opcao,valores, Array_campos, wc

switch
  case opcao="CriarTabela":
    while true
      TabelaShowDialogLookup=Cria_Temp(Privdir())
      if not isblank(TabelaShowDialogLookup) 
         then Cria_Tabela(TabelaShowDialogLookup,valores)
              quitloop 
      endif
    endwhile

    TableInfo TabelaShowDialogLookup Fields to Array_campos

    Edit TabelaShowDialogLookup
    For wc From 1 To ArraySize(Array_Campos) 

      moveto field Array_campos[wc]
      {Valcheck}{Define} Enter {TableLookup}
      switch
        case Field()="Codigo da Empresa" : Typein "\\sistemas\\cadastro\\empresas"

        case Field()="Codigo da Marca"   : Typein "\\sistemas\\estoque\\marcas"
        case Field()="Tipo do Item"      : Typein "\\sistemas\\estoque\\tpitem"

      endswitch
      Enter
      {JustCurrentField}
      {HelpAndFill}
    EndFor
    Do_it!
    ClearImage

  case opcao="AtivarShowDialogLookup":
    View NoWindow TabelaShowDialogLookup
    CoeditKey
    SHOWDIALOGLOOKUP=True 

  case opcao="DesativarShowDialogLookup":
    do_it!
    moveto TabelaShowDialogLookup ClearImage
    release vars SHOWDIALOGLOOKUP

endswitch

EndProc

;*******************************************************************************
;* Rotina para F2 no ShowDialog                                                *
;*******************************************************************************
Proc ListaRegra_F2()
     
if Not IsAssigned(ListaRegra_TGAtivado) or search("["+campo+"]",ListaRegra_TGAtivado)=0
   then return
endif   

ListaRegra_Result           =False
ListaRegra_CampoDoShowDialog=campo

Play "\\sistemas\\cadastro\\ListRegr"

Endproc

;*******************************************************************************
;* Rotina para Checar se usuario ‚ vendedor                                    *
;*******************************************************************************
Proc Valida_ShowDialog(PARAM)

If Not IsAssigned(SYS_USUARIO_CODVEND) Then SYS_USUARIO_CODVEND=""  EndIf
If Not IsAssigned(SYS_USUARIO_GERVEND) Then SYS_USUARIO_GERVEND=""  EndIf
If Not IsAssigned(SYS_USUARIO_CODEMPR) Then SYS_USUARIO_CODEMPR=""  EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO  ="S" EndIf

If (IsBlank(SYS_USUARIO_CODEMPR) And IsBlank(SYS_USUARIO_CODVEND) And IsBlank(SYS_USUARIO_GERVEND)) Or SYS_NIVEL_USUARIO="S"
   Then Return True
EndIf

If (PARAM="" Or PARAM="Empresa") And IsAssigned(VSDGEMPRESA)
   Then If Not IsBlank(SYS_USUARIO_CODEMPR) And VSDGEMPRESA<>SYS_USUARIO_CODEMPR
           Then Mensagem("Usu rio sem permissÆo nesta tarefa para a empresa "+VSDGEMPRESA+" !")
                Return False
        EndIf 
EndIf   

If (PARAM="" Or PARAM="Representante") And IsAssigned(VSDGREPRESEN)
   Then If Not IsBlank(SYS_USUARIO_CODVEND) And VSDGREPRESEN<>SYS_USUARIO_CODVEND
           Then Mensagem("Usu rio sem permissÆo nesta tarefa //para o Vendedor/Representante "+VSDGREPRESEN+" !")
                Return False
        EndIf
EndIf        

If (PARAM="" Or PARAM="Gerencia") And IsAssigned(VSDGGERENCIA)
   Then If Not IsBlank(SYS_USUARIO_GERVEND) And VSDGGERENCIA<>SYS_USUARIO_GERVEND
           Then Mensagem("Usu rio sem permissÆo nesta tarefa //para a Gerˆncia "+VSDGGERENCIA+" !")
                Return False
        EndIf
EndIf        

Return True

EndProc ;Valida_ShowDialog()

;******************************************************************************
;** Monta Procedures                                                        ***
;******************************************************************************
WriteLib "\\Sistemas\\Cadastro\\Bib_Show"
  Janelar, Checa_TAG, Dialog_F1, Monta_Prompt,
  Consulta_ShowDialog, WaitProc, CentralizaMemoIP,
  ConsultaF1_SemRetorno,MSG_Informativo,Verifica_NRegistros,
  Monta_Opcoes, Checa_Opcoes,
  Seleciona_Opcoes, Opcoes_Dialog, MontaRegistro_F1,
  Monta_Dir_Trab,Novo_Dir_Trab,
  Diretorios_FechaMes, Diretorios_FechaMes_C,
  Seta_Tecla_Acionada,
  AoCriarShowDialog,Seta_Sequencia,
  Verifica_Usuario, Monta_Lista_Usuarios, Ver_Lista_Usuarios, Dialog_Lista_Usuarios,
  Tira_CharEspecial,Primeiro_Dia_Data, Ultimo_Dia_Data,Executa_Captura,
  Finaliza_Captura,Ler_Captura, Extrair_Linha, Checa_Captura,
  Seta_Tipo_Impressora, FormatTZD, Tira_Formato_CGC_CPF, Tira_CharNum,
  Controle_Dia, Checa_Controle,IntervaloDataMod,
  Diretorios_Fechano,
  IntervaloData, Grava_logt, Libera_Bloqueio, SD_LibBloqueio,
  Busca_Lookup, Ativa_Lookup, Seta_FilePrint, Imprime_FilePrint, ImpriArq, ImpriSerial,
  E_NumeroValido, E_Numerico, AlinhE, AlinhL, Novo_Lancto,
  VisualizaF1,
  AlinhME,AlinhNL,Checa_CodigoNL,Novo_CodigoNL,Proximo_CodigoNL,
  Proximo_Lancamento, Numero_Lancamento,Verifica_NLancto,
  TiraSombraShowDialog,
  ModeloRelatorios,ModeloRelatoriosAdd,SD_ModeloRelatorios, MensagemCheckBoxes, MensagemCheckBox, MensagemRadioButtons,
  ModeloRelatorios_CD,SD_ModeloRelatorios_CD,ValidarModelosRelatorios,
  ShowDialogLookup,ListaRegra_F2,Valida_ShowDialog
