;** DestCli1 *******************************************************************
;*  Manutencao Cadastro de Clientes                                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 03/04/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Campo Taxa_Desconto Permitido
;Ultima Alteracao: 11/08/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Adicao da rotina Checa_Supervisor quando Excluir
;Ultima Alteracao: 17/09/2007 por Anivel Augusto Rodrigues      
;Motivo Alteracao: Intervalo de codigo automatico
;Ultima Alteracao: 09/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CGC                   
;Ultima Alteracao: 17/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Proximo_codigo        
;Ultima Alteracao: 21/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Contrala_Edicao()
;Ultima Alteracao: 30/06/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste Proximo_Codigo()
;Ultima Alteracao: 19/12/2008 por CLeber Alves
;Motivo Alteracao: Imprime Autorizado
;Ultima Alteracao: 09/01/2009 por Antonio Marcelo Alves
;Motivo Alteracao: Rotina Valida_IE
;Ultima Alteracao: 29/06/2009 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao Novos Campos/Layout
;Ultima Alteracao: 10/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Lockrecord
;Ultima Alteracao: 01/10/2009 por Bruno Carvalho
;Motivo Alteracao: InclusÆo Script "Imprime Autorizado" (Novos Ajustes)
;Ultima Alteracao: 11/11/2009 por Bruno Carvalho
;Motivo Alteracao: Ajuste echo impressao autorizado                      
;Ultima Alteracao: 12/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes MsgCampo
;Ultima Alteracao: 15/03/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 30/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Enter Cidades
;Ultima Alteracao: 20/04/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado Lista_Telefonica() e Remo‡Æo da ListFone
;Ultima Alteracao: 26/04/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Mensagem campo, opcao 2 
;Ultima Alteracao: 30/06/2010 por Bruno Carvalho
;Motivo Alteracao: Add Proc Novo Codigo e Checagem do C¢digo
;Ultima Alteracao: 15/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Novos Campos/Layout                     
;Ultima Alteracao: 16/08/2010 por Bruno Carvalho
;Motivo Alteracao: Corre‡Æo de Ortografia  
;Ultima Alteracao: 31/08/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes para End_cob  
;Ultima Alteracao: 13/09/2010 por Karina Andrade
;Motivo Alteracao: Add Campo Regime_Tributario e MSGCAMPO Telefone
;Ultima Alteracao: 22/09/2010 por Karina Andrade
;Motivo Alteracao: Ajuste Proc GravaEndereco, retirado campo Tipo
;Ultima Alteracao: 14/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 15/11/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cadastro por CGC      
;Ultima Alteracao: 06/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes nos campos UF e IE               
;Ultima Alteracao: 28/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 07/04/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes PermissÆo p/ Alterar a Situacao do Cliente
;Ultima Alteracao: 26/08/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo nos Complementos
;Ultima Alteracao: 05/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Regime Tributario
;Ultima Alteracao: 13/09/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes CPF/CGC Fiador
;Ultima Alteracao: 28/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Checa_Dados()   
;Ultima Alteracao: 17/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Proc Observacao e Observacao_Venda
;Ultima Alteracao: 05/12/2011 por Karina Andrade
;Motivo Alteracao: Validando IE PF e PJ diferente de ISENTO
;Ultima Alteracao: 10/01/2012 por Karina Andrade
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 14/02/2012 por Bruno Carvalho
;Motivo Alteracao: Add Condi‡Æo de Pagamento e Forrma de Pagamento PadrÆo p/ Venda
;Ultima Alteracao: 24/02/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes Tecla PgDn
;Ultima Alteracao: 24/04/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes nos complementos, retirado os campos SPC e Consulta_SPC
;Ultima Alteracao: 25/04/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado consulta ao SPC na Ficha Financeira do cliente
;Ultima Alteracao: 31/07/2012 por Bruno Carvalho
;Motivo Alteracao: Alterado layout complementos e adicionado Referˆncia Pessoal
;Ultima Alteracao: 20/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao regime tributario DEBITO E CREDITO
;Ultima Alteracao: 23/11/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1
;Ultima Alteracao: 15/01/2013 por Bruno Carvalho
;Motivo Alteracao: Permitir altera‡Æo de CGC quando for inv lido na op‡Æo CGC Unico #0253# e #0266#
;Ultima Alteracao: 16/01/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ acessar ficha financeira quando cadastro novo #0253# e #0266#
;Ultima Alteracao: 28/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes visualizar em ordem de c¢digo/nome + fun‡Æo
;Ultima Alteracao: 28/03/2013 por Bruno Carvalho
;Motivo Alteracao: Add Carrega_Parametros_Cliente()
;Ultima Alteracao: 07/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao campo Dia_Vencimento_Notinha
;Ultima Alteracao: 10/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes campo Dia_Vencimento_Notinha
;Ultima Alteracao: 28/05/2013 por Kamila Gomes
;Motivo Alteracao: Adicionado controle codigo usuario vendedor
;Ultima Alteracao: 01/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes "F8=TROCA" 
;Ultima Alteracao: 05/08/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes Limite de credito e dias em atraso
;Ultima Alteracao: 15/08/2013 por Andrey Fillipe
;Motivo Alteracao: Ajustes "F8=TROCA"
;Ultima Alteracao: 21/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Situacao do Cliente" p/ permitir situa‡Æo como OTIMO
;Ultima Alteracao: 30/09/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste utiliza parametro nÆo ver Ficha Financeira, Tipo Assistencia, layout Form
;Ultima Alteracao: 10/10/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes para imprimir a ficha, com dispositivo para op‡äes de impressÆo
;Ultima Alteracao: 16/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ DestCli3 
;Ultima Alteracao: 20/01/2014 por Karina Andrade
;Motivo Alteracao: Ajustes "F8=TROCA"
;Ultima Alteracao: 21/01/2014 por Bruno Carvalho
;Motivo Alteracao: Retirado um DEBUG do Script
;Ultima Alteracao: 28/01/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes "F8=TROCA"
;Ultima Alteracao: 09/05/2014 por Luis Gustavo
;Motivo Alteracao: Proc Complemento(), alterado o Label do campo Data de Nascimento para Data de Nascimento/Funda‡ao
;Ultima Alteracao: 14/05/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes, Permitir altera‡Æo de CGC quando for inv lido na op‡Æo CGC Unico #0253#
;Ultima Alteracao: 19/05/2014 por Andrey Fillipe
;Motivo Alteracao: Inclusao do campo NIRE
;Ultima Alteracao: 25/07/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes [Consumidor Final] Pessoa FISICA pegar "S", Pessoa JURIDICA pegar "N" por PADRAO
;Ultima Alteracao: 22/01/2015 por Bruno Carvalho
;Motivo Alteracao: Adcionado Data de Cancelamento no Cadastro de Clientes
;Ultima Alteracao: 11/02/2015 por Bruno Carvalho
;Motivo Alteracao: Alterado campo de [Data_Cancelamento] p/ [Data_Inativo]
;Ultima Alteracao: 27/02/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Erro Mensagem Substitui()
;Ultima Alteracao: 21/01/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes IE = NAOCONTRIBUINTE
;Ultima Alteracao: 22/04/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Busca_Cep() p/ buscar o endere‡o, bairro, cidade e estado (quando houver)
;Ultima Alteracao: 26/04/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Busca_Cep() p/ buscar o endere‡o, bairro, cidade e estado (quando houver) no Endere‡o de Cobran‡a
;Ultima Alteracao: 27/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valida‡Æo CGC/CPF UF="EX"
;Ultima Alteracao: 26/07/2016 por Bruno Carvalho
;Motivo Alteracao: Substituido Script de Abril de 2016 (Ultima VersÆo Atualizada) -> Cancelado o processo DESTASS "F9"  
;Ultima Alteracao: 26/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Regime tributario outros
;Ultima Alteracao: 02/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Regime tributario outros
;Ultima Alteracao: 09/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 03/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo travar Regime tributario outros
;Ultima Alteracao: 19/10/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes vari vel MSGCAMPO
;Ultima Alteracao: 08/11/2016 por Kamila Gomes
;Motivo Alteracao: Implementa‡Æo da consulta de CNPJ no Sintegra
;Ultima Alteracao: 09/01/2017 por Kamila Gomes
;Motivo Alteracao: Ajustes consulta de CNPJ no Sintegra para UFs (AL, AP, DF, ES, RJ, RO, RR, SE, TO)
;                  NÆo utilizam WebService de Consulta de cadastro
;Ultima Alteracao: 10/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes complementos, mensagem showdialog
;Ultima Alteracao: 25/07/2017 por Nikolas
;Motivo Alteracao: corre‡Æo de acentua‡Æo t¡tulo Cr‚dito ficha financeira
;Ultima Alteracao: 18/08/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Cadastro de Email" -> op‡Æo Alt +E
;Motivo Alteracao: Ajustes consulta de CNPJ no Sintegra para UF ES
;Ultima Alteracao: 15/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes carga sys_Valor()
;Ultima Alteracao: 04/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TrocaRepres()
;Ultima Alteracao: 11/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TrocaRepres()
;Ultima Alteracao: 26/04/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Data de Nascimento] na "Destinat" e inclu¡do no FORM 
;Ultima Alteracao: 02/05/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando pessoa inativa entao se [Data_Inativo] for branco, por padrÆo, [Data_Inativo]=Today()
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 28/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Ajusta_Controle() p/ ajustar [Data da Manutencao] apenas quando ocorrer altera‡Æo
;Ultima Alteracao: 06/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sincronizar OPAF
;Ultima Alteracao: 13/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sincronizar OPAF
;Ultima Alteracao: 21/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sincronizar OPAF
;Ultima Alteracao: 02/10/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes VSDGCAMINHOW sincronizar OPAF
;Ultima Alteracao: 03/10/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes estados que nÆo possuem consulta de cadastro na Sefaz
;Ultima Alteracao: 10/10/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes verifica Regime Tribut rio ‚ v lido
;Ultima Alteracao: 14/11/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ atualizar data da manuten‡Æo -> Copia_Registro_OldNew() e Verifica_Registro_OldNew()  
;Ultima Alteracao: 30/11/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes versao OPAF
;Ultima Alteracao: 10/12/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Copia_Registro_OldNew registro nÆo encontrado
;Ultima Alteracao: 19/12/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes versao OPAF
;Ultima Alteracao: 05/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta contabil sequencial #0431
;Ultima Alteracao: 30/07/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ obrigrar a informar o representante p/ empresa #0232#
;Ultima Alteracao: 01/08/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo atualizar listfone #0431
;Ultima Alteracao: 09/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes versao OPAF
;Ultima Alteracao: 16/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem tipo pessoa
;Ultima Alteracao: 04/10/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado observa‡Æo para expedi‡Æo -> Op‡Æo [F8] proc OBSERVACAO_EXPEDICAO()
;Ultima Alteracao: 19/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao de regras para observa‡äes
;Ultima Alteracao: 21/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes atualizar dados opaf para empresas configuradas no ECF
;Ultima Alteracao: 29/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes atualizar dados opaf para empresas do usuario configuradas no ECF
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
                                 
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()                                                
private AUX                                     
NOVO = False
 
While True
  
  Switch
    Case ORDENARPOR="NOME" :
      Moveto [Razao Social]
      Menu {Image} {OrderTable} Enter {Razao Social}  
    OtherWise              :
      Moveto [Codigo]
      Menu {Image} {OrderTable} Enter {Codigo}  
  EndSwitch

  End            
  SEQ=[Codigo]
  
  If OPCAO_FORM="F"
    Then Down
    Else PgDn PgDn
  EndIf

  If PARAM_CGC_CLIENTE="S"
     Then Moveto [CGC]
     Else Moveto [Codigo]
  EndIf

  SetaCorRegistro("Editar") 
  
  While True

  MSGCAMPO=""
  TECLA=""
  
  if field()="CGC"
     then MSGCAMPO="Informe um CNPJ ou CPF v lido !       "
  endif   
  
  AguardaTeclasPadrao()
  
  If RetVal=-33
     Then Echo Normal
          Echo Off
          
          opcao3="."  dopcao3=""  ropcao3="Esc"
          
          Switch
             Case PARAM_CONS_SINTEGRA = "S" And (Verifica_Consulta_Ativa()) :
                  opcao3="F9 Desativa Consulta ~S~integra"  dopcao3=" Desativa Consulta Sintegra"  ropcao3="F9"
             Case PARAM_CONS_SINTEGRA = "S" And not (Verifica_Consulta_Ativa()) :
                  opcao3="F9 Ativa Consulta ~S~integra"  dopcao3=" Ativa Consulta Sintegra"  ropcao3="F9"
           EndSwitch
          
          ShowPopup " Fun‡”es " CENTERED
           "Ordenar nome/razÆo social": " Ordenar por nome/razÆo social    " : "ORD_NOME",
           "Ordenar c¢digo           ": " Ordenar por c¢digo               " : "ORD_COD",
           Separator,
           "F8 ~T~roca               ": " Troca de Representantes/Vendedor " : "F8",
           Opcao3                     : dopcao3                              : ropcao3,
           "~C~ancelar               ": " Cancelar a Opera‡„o              " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off

          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf                                         
          
          Switch
            Case MenuVar="ORD_COD"  : ORDENARPOR="CODIGO" 
            Case MenuVar="ORD_NOME" : ORDENARPOR="NOME"  
          EndSwitch
          
          FileWrite PrivDir()+"DESTCLI1.ini" From GravaExpressao("VSDGORDEM","S",ORDENARPOR)
          RetVal=MenuVar
          
          If MenuVar="ORD_COD" Or MenuVar="ORD_NOME" 
             Then QuitLoop
          EndIf
  EndIf
  
  Switch
  Case RetVal="F3": If OPCAO_FORM="F"
                       Then OPCAO_FORM="10"
                       Else OPCAO_FORM="F"
                    EndIf
                    Del
                    CHAVE=5
                    Return
  Case RetVal=-94 : MsgTeclasPadrao()
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
        While True
          If OPCAO_FORM="F"
             Then PAGINA("Destinat","MR")
             Else PAGINA("Destinat","MT")
          EndIf
          CODIGO=[Codigo]
          If EDITAR="S"
             Then PickForm "10"
                  CopyToArray ARRAY_CLIENTE
                  CHAVE=0
                  Controla_EdicaoC()
             Else If EXCLUIR="S"
                    Then If not ChecaTipoDeRegistro()
                            Then 
                                 UnLockRecord
                            Else If Checa_Supervisor()
                                    Then If QuerExcluir("deste cliente")
                                            Then PickForm "10"
                                                 EXCLUSAO()
                                            Else UnLockRecord
                                         EndIf
                                    Else Unlockrecord
                                 EndIf                
                                 If OPCAO_FORM="10"
                                    Then PickForm "10"
                                    Else PickForm "F"
                                 EndIf
                         EndIf
                    Else QuitLoop
                  EndIf
          EndIf
          SetaPosForm()
        EndWhile
        QuitLoop
   Case Retval="F8":
        PickForm "10"
        Del
        End PgDn PgDn
        If Checa_Supervisor()
           Then TrocaRepres()
        EndIf
        CHAVE=5
        Return
   Case Retval="F9" :
        Del
        End PgDn PgDn
        If Verifica_Consulta_Ativa()
          then FileWrite  PrivDir()+"Sintegra.ini"  From  "[Certificado]"+"\n"
               FileWrite  Append PrivDir()+"Sintegra.ini"  From  "Ativa=\"N\""+"\n"
               Fastmsg("Consulta Sintegra Desativada !")
          else FileWrite  PrivDir()+"Sintegra.ini"  From  "[Certificado]"+"\n"
               FileWrite  Append PrivDir()+"Sintegra.ini"  From  "Ativa=\"S\""+"\n"
               Fastmsg("Consulta Sintegra Ativada !")
        EndIf
        FileWrite  Append PrivDir()+"Sintegra.ini"  From  "NumSerie="+"\n"
        CHAVE=5
        Return
   Case Retval="ESC":
        CHAVE=9
        Del
        Return
   Case Retval="ENTER" :
        If PARAM_CGC_CLIENTE="S"
           Then CGC=[]
                If IsBlank(CGC)                     Then fastmsg("Valor inv lido!") Loop EndIf
                If Not Checa_CGC_CPF_Formatado(CGC) Then Loop EndIf
                Del
                If PARAM_CGC_FORNECEDOR="S"
                   Then Locate CGC
                   Else Moveto [Tipo]
                        Locate IndexOrder by "tipo_cgc" "C",CGC
                EndIf
                If Retval
                   Then CODIGO=[Codigo]
									 Else 
                        Moveto [Codigo]
                        Menu {Image} {OrderTable} Enter {Codigo}  
                        
                        CODIGO=Checa_Codigo("")
                        If IsBlank(CODIGO)
                           Then QuitLoop
                        EndIf   
								EndIf
                
           Else CGC=""
                
                CODIGO=[Codigo]
                Del

                Moveto [Codigo]
                Menu {Image} {OrderTable} Enter {Codigo}  

                CODIGO=Checa_Codigo(CODIGO)
                If IsBlank(CODIGO)
                   Then QuitLoop
                EndIf   
        EndIf
        PickForm "10"

        Moveto [Codigo]
        Locate CODIGO
        If Retval
           Then CHAVE=0
           Else CHAVE=1
                NOVO = True
                End PgDn PgDn
                [Codigo        ] = CODIGO
                [Tipo          ] = "C"
                [CGC           ] = CGC
                [Conta Contabil] = CodigoSoNumero([Codigo])
        EndIf
        If IsLockRecord()
           Then If CHAVE=1
                   Then Del
                EndIf
                If OPCAO_FORM="F"
                   Then PickForm "F"
                EndIf
                QuitLoop
        EndIf
        Return
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (Chave)

;*******************************************************************************
;* Rotina para Checagem do tipo de registro                                    *
;*******************************************************************************
Proc ChecaTipoDeRegistro()
private msg, msg1

Echo Normal
Echo Off
         
If [Tipo]<>"C"
   Then 
        msg="Pessoa cadastrada como tipo "
        switch
          case [Tipo]="E" : msg1="Empresa/Filial" 
          case [Tipo]="C" : msg1="Clientes" 
          case [Tipo]="F" : msg1="Fornecedores" 
          case [Tipo]="O" : msg1="Outros" 
        endswitch
        msg=msg+"[ "+msg1+" ] !// //"
        msg=msg+"Para manuten‡Æo desta pessoa use o Cadastro de "+msg1
        MENSAGEM(msg)
        return false
endif        

return true
EndProc


;*******************************************************************************
;* Rotina para Checagem do C¢digo                                              *
;*******************************************************************************
Proc CodigoSoNumero(cod)
Private cod, vr, s, i

if sys_codigo_cliente<>"0431"
   then
        return ""
endif
         
if asc(substr(cod,1,1))>=65 
   then
        s =substr(cod,1,1)
        vr=9    
        for i from 1 to 26
          vr=vr+1    
          if chr((64+i))=s  then quitloop endif 
        endfor
        cod=completa(strval(vr),2,"0")+substr(cod,2,3)
endif
    
Return cod
EndProc

;*******************************************************************************
;* Rotina para Checagem do C¢digo                                              *
;*******************************************************************************
Proc Checa_Codigo(cod)
Private cod

If Not IsBlank(cod)
   Then cod=AlinhE(cod)
EndIf   
If PARAM_REUTILIZA="S"
   Then  cod=Proximo_Codigo(Cod)
   Else If IsBlank(cod)
           Then End
                cod=Novo_Codigo()
        EndIf
EndIf
Return cod
EndProc

;*******************************************************************************
;* Rotina para Criar Novo C¢digo                                               *
;*******************************************************************************
proc Novo_Codigo()
Private cod,vr

cod=[Codigo]
If IsBlank(cod)
   Then cod="0"
EndIf  
vr=SubStr(cod,1,1)
If vr>"9" or cod="9999"
   Then If SubStr(cod,2,3)="999"
	         Then Switch
					        Case vr="9" : cod="A000"
					        Case vr="Z" : Mensagem("Fim de codigo disponivel !")
									              cod=""
					        OtherWise   : cod=Chr(asc(vr)+1)+"000"
					      EndSwitch
					 Else cod=AlinhE(vr+StrVal(NumVal(SubStr(cod,2,3))+1))     
				EndIf	      
   Else cod=AlinhE(StrVal(NumVal(cod)+1))
EndIf

Return cod 
EndProc

;*******************************************************************************
;* Rotina para Gerar Proximo Codigo no Intervalo                               *
;*******************************************************************************
Proc Proximo_Codigo(cod)
Private cod, CodLivre

If IsBlank(PARAM_INICIAL) Or PARAM_INICIAL="0000"

   Then PARAM_INICIAL="0001"
EndIf

If Not IsBlank(cod)
   Then Moveto [Codigo]
        Locate cod   
        If retval
           Then Return cod  
           Else If cod>=AlinhE(PARAM_INICIAL) And cod<=AlinhE(PARAM_FINAL)
                   Then Return cod 
                   Else Mensagem("C¢digo "+cod+" fora do Intervalo !!")
                        Return ""    
                EndIf
        EndIf
EndIf

Home
CodLivre=AlinhE(PARAM_INICIAL)
Moveto [Codigo]
Locate IndexOrder by "Codigo" BestMatch AlinhE(PARAM_INICIAL)
While True
   If CodLivre<=AlinhE(PARAM_FINAL) and CodLivre>=AlinhE(PARAM_INICIAL)
      Then 
					 If CodLivre=[Codigo]
              Then CodLivre=Novo_Codigo()
                   Skip
              Else cod=CodLivre
                   Return cod
           EndIf
           If EOT()
              Then Loop
           EndIf
      Else Mensagem("Fim dos c¢digos livres!!")
           Return ""
   EndIf
EndWhile

EndProc

;*******************************************************************************
;* Rotina para Pegar dados Consulta Sintegra                                   *
;*******************************************************************************
Proc Pega_Dados_Sintegra()

ACHOU_DADOS_SINTEGRA = False
SITSINTEGRA = ""

If ([Tipo Pessoa]="JURIDICA")  And 
   (PARAM_CONS_SINTEGRA = "S") And
   (Verifica_Consulta_Ativa())
   Then While True
          If not UF_Consulta() then Quitloop endIf
          Aguarde("Consultando Sintegra..")
          
          If Consulta_CNPJ(Tira_CharNum([CGC]),VSD_UF_Consulta,VSDG_UF_EMPRESA_PADRAO)
            Then conteudodoarquivo=""
                 LerConteudodoArquivo(PrivDir()+"Dados.txt")
                 
                 Mostra_Dados_Sintegra()
                 
                 If CHAVE = 1 Or CheckTG_OPAtualiza[1]
                    Then [Razao Social          ]= VSD_SIN_Razao
                         [Nome Fantasia EmitDest]= VSD_SIN_Fantasia
                         [CEP                   ]= VSD_SIN_CEP
                         [IE                    ]= VSD_SIN_IE
                         [Regime_Tributario     ]= VSD_SIN_RegTrib
                         [Endereco              ]= VSD_SIN_Logradouro
                         [Bairro                ]= VSD_SIN_Bairro
                         [Cidade                ]= DESC_Cid
                         [UF                    ]= VSD_UF_Consulta
                         [Pais                  ]= "BRASIL"
                 EndIf
                 
                 UnLockRecord
                 FormKey
                 Moveto "Fichacli"
                 Moveto [Codigo]
                 Locate [Destinat->Codigo]
                 If Not RetVal
                    Then End Down
                         [Codigo]=[Destinat->Codigo]
                         [Data_Consulta_Sintegra]= Today()
                         [Sit_Consulta_Sintegra] = VSD_SIN_Situacao
                    
                    Else [Data_Consulta_Sintegra]= Today()
                         [Sit_Consulta_Sintegra] = VSD_SIN_Situacao
                 EndIf
                 
                 UnLockRecord
                 Moveto "Destinat"
                 FormKey
                 LockRecord
                 
                 ACHOU_DADOS_SINTEGRA = True
                 Quitloop
            Else If ConfGeral("Falha na consulta de dados Sintegra. // Repetir Consulta?")
                   Then Loop
                   Else Quitloop
                 EndIf   
          EndIf
          
        EndWhile
EndIf

EndProc ;(Pega_Dados_Sintegra)

;*******************************************************************************
;* Rotina para verificar ocorrˆncia de altera‡Æo de registro                   *
;*******************************************************************************
Proc Ajusta_Controle()
Private MODIFICOU,ARRAY_CLIENTE_NOVO

Switch
  Case CHAVE=1                       : Return True
  Case Not IsAssigned(ARRAY_CLIENTE) : Return False
EndSwitch

CopyToArray ARRAY_CLIENTE_NOVO

MODIFICOU=False
For ty From 1 To ArraySize(ARRAY_CLIENTE)
  If ARRAY_CLIENTE_NOVO[ty]<>ARRAY_CLIENTE[ty]
     Then MODIFICOU=True
          QuitLoop 
  EndIf
EndFor

Return MODIFICOU

EndProc

;*******************************************************************************
;* Rotina para Exibir dados Consulta Sintegra                                  *
;*******************************************************************************
Proc Mostra_Dados_Sintegra()
Private COLUNA_CKBOX

Array TG_OPAtualiza[1]
TG_OPAtualiza[1]="Atualiza dados da consulta no cadastro"

Array CheckTG_OPAtualiza[ArraySize(TG_OPAtualiza)]
CheckTG_OPAtualiza[1]=False

If CHAVE=0
   Then COLUNA_CKBOX = 01
   Else COLUNA_CKBOX = 80
EndIf

Pos=SearchFrom("Razao=",conteudodoarquivo,1)
VSD_SIN_Razao      = RTrim(SubStr(conteudodoarquivo,pos+6,40))
Pos=SearchFrom("Razao=",conteudodoarquivo,1)
[Razao Social]= RTrim(SubStr(conteudodoarquivo,pos+6,40))

Pos=SearchFrom("Fantasia=",conteudodoarquivo,1)
VSD_SIN_Fantasia   = RTrim(SubStr(conteudodoarquivo,pos+9,20))

Pos=SearchFrom("CEP=",conteudodoarquivo,1)
CEP = SubStr(conteudodoarquivo,pos+4,08)
VSD_SIN_CEP        = SubStr(CEP,1,2)+"."+SubStr(CEP,3,3)+"-"+SubStr(CEP,6,3)

Pos=SearchFrom("IE=",conteudodoarquivo,1)
VSD_SIN_IE         = RTrim(SubStr(conteudodoarquivo,pos+3,15))

Pos=SearchFrom("RegTrib=",conteudodoarquivo,1)
VSD_SIN_RegTrib    = RTrim(SubStr(conteudodoarquivo,pos+8,20))

Pos=SearchFrom("Logradouro=",conteudodoarquivo,1)
VSD_SIN_Logradouro = RTrim(SubStr(conteudodoarquivo,pos+11,40))

Pos=SearchFrom("Bairro=",conteudodoarquivo,1)
VSD_SIN_Bairro     = RTrim(SubStr(conteudodoarquivo,pos+7,20))

Pos=SearchFrom("codCid=",conteudodoarquivo,1)
VSD_SIN_codCid    = SubStr(conteudodoarquivo,pos+7,7) 

Pos=SearchFrom("Cidade=",conteudodoarquivo,1)
VSD_SIN_Cidade    = RTrim(SubStr(conteudodoarquivo,pos+7,20)) 
                 
Pos=SearchFrom("Situacao=",conteudodoarquivo,1)
SITSINTEGRA  = RTrim(SubStr(conteudodoarquivo,pos+9,1)) 
If SITSINTEGRA = "1"
   Then VSD_SIN_Situacao = "HABILITADO"
   Else VSD_SIN_Situacao = "NAO HABILITADO"
EndIf

VSD_SIN_UF         =VSD_UF_Consulta

DESC_Cid = ""
UnLockRecord
FormKey
Moveto "\\Sistemas\\Cadastro\\Cidades"
Moveto [Codigo_Cidade]
Locate NumVal(VSD_SIN_codCid)
If RetVal 
 Then VSD_SIN_Cidade= [Cidade]
      DESC_Cid = VSD_SIN_Cidade
 Else VSD_SIN_Cidade= VSD_SIN_Cidade + "(NÇO CADASTRADA)"
      DESC_Cid = ""
EndIf

UnLockRecord
Moveto "Destinat"
FormKey
LockRecord

Showdialog "Dados Sintegra" Proc "Geral_Dialog"
  Trigger "OPEN","ARRIVE"
   Key "TAB","ReverseTab","ENTER","ESC"
   @ 5,01 height 16 width 77

   @ 1,01 ?? "Razao   : "+VSD_SIN_Razao
   @ 2,01 ?? "Fantasia: "+VSD_SIN_Fantasia
   @ 2,52 ?? " IE: "+VSD_SIN_IE
   @ 4,01 ?? "Endere‡o: "+VSD_SIN_Logradouro
   @ 4,52 ?? "CEP: "+VSD_SIN_CEP
   @ 5,01 ?? "Bairro  : "+VSD_SIN_Bairro
   @ 5,32 ?? "Cidade: "+VSD_SIN_Cidade
   @ 6,01 ?? "Cod.Cid.: "+VSD_SIN_codCid
   @ 6,32 ?? "    UF: "+VSD_SIN_UF
   @ 8,01 ?? "Regime  : "+VSD_SIN_RegTrib
   @ 8,32 ?? "Situa‡Æo: "+VSD_SIN_Situacao
   
   CheckBoxes @ 10,COLUNA_CKBOX Height 1 Width 50 Tag "TG_OPAtualiza"
   TG_OPAtualiza[1] to CheckTG_OPAtualiza[1]
   
   PushButton @ 12,30    width 11 "~O~k"    OK    Default Value "Ok" Tag "MENS_OK"  To BottonValue     

Enddialog

EndProc ;(Mostra_Dados_Sintegra)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Private CAMPONEXT, CAMPOBACK, pos, CEP, CODCID

Switch
  Case Search(".",[CGC])=4:
       [Tipo Pessoa]="FISICA"
       If CHAVE = 1
          Then [Consumidor Final]="S"
       EndIf   
  Case Search(".",[CGC])=3:
       [Tipo Pessoa]="JURIDICA"
       If CHAVE = 1
          Then [Consumidor Final]="N"
       EndIf   
EndSwitch

If CHAVE = 1 Then Pega_Dados_Sintegra() EndIf

Moveto [Nome Fantasia EmitDest] 
CONTA           =[Conta Contabil     ]
SITUACAO_CLIENTE=[Situacao do Cliente] 
   
If Not IsAssigned(ALTERA_CPF)                                                   ; #0253#  |  #0266#
   Then If (SYS_CODIGO_CLIENTE="0253"   Or SYS_CODIGO_CLIENTE="0266")  And
           ([CGC]="000.000.000-00"      Or [CGC]="111.111.111-11"      Or 
            [CGC]="00.000.000/0000-00"  Or [CGC]="11.111.111/1111-11"  Or
           (Not Checa_CGC_CPF_Formatado([CGC])))                       And 
            PARAM_CGC_CLIENTE="S" 
            Then ALTERA_CPF=True  
            Else ALTERA_CPF=False        
        EndIf
EndIf

While True
     
      Tecla = " Esc=Retornar  "
      If CHAVE=0
         Then Tecla=Tecla+"Del=Excluir  Alt+F=Fun‡”es  PgDn=Finalizar  " 
         Else Tecla=Tecla+"             Alt+F=Fun‡”es  PgDn=Finalizar  "
      EndIf
      MSGCAMPO=Field()
      
      If not ChecaTipoDeRegistro()
         Then CHAVE=9
              QuitLoop
      EndIf
      
      Switch
        Case Field()="Inativo"                 : MSGCAMPO="Cliente Inativo ? (Sim/N„o)"
        Case Field()="Data_Inativo"            : MSGCAMPO="Data de Inatividade do Cliente/Fornecedor/Outros"
        Case Field()="Consumidor Final"        : MSGCAMPO="Consumidor Final ? (Sim/N„o) - Na opera‡Æo de VENDA como ser classificado !"
        Case Field()="Endereco"                : MSGCAMPO="Logradouro, N£mero, Complemento"
        Case Field()="Telefone"                :
             If[UF]="EX"
               Then MSGCAMPO="+PP XX NNNN-NNNN"
               Else MSGCAMPO="XX NNNN-NNNN"
             EndIf  
        Case Field()="Tipo Assistencia"        : MSGCAMPO="Eventual, Contratual, AcumulaAcerto, RecebeDiaFixo"
        Case Field()="CGC"                     : MSGCAMPO="Formatos: [ CPF ###.###.###-## ] ou [ CNPJ ##.###.###/####-## ]"
        Case Field()="IE"                      : MSGCAMPO="Informe o N§, ISENTO ou NAOCONTRIBUINTE p/ Inscri‡„o Estadual"
        Case Field()="IE_ST"                   : MSGCAMPO="Informe a Inscri‡„o Estadual do Sust. Tribut rio"
        Case Field()="IM"                      : MSGCAMPO="Informe o N§ ou ISENTO p/ Inscri‡„o Municipal"
        Case Field()="RG"                      : MSGCAMPO="Informe o Registro Geral"
        Case Field()="ISUFRAMA"                : MSGCAMPO="Informe a Inscri‡„o SUFRAMA"
        Case Field()="NIRE"                    : MSGCAMPO="Informe o N§ do NIRE"
        Case Field()="CNAE"                    : MSGCAMPO="Informe o CNAE"
        Case Field()="Data_Cadastro"           : MSGCAMPO="Data do Cadastro do Cliente"
        Case Field()="Data de Nascimento"      : MSGCAMPO="Data de Nascimento/Funda‡„o"
        Case Field()="Codigo CCusto"           : MSGCAMPO="Codigo do Centro de Custo"
        Case Field()="Endereco_Eletronico"     : MSGCAMPO="Endere‡o Eletr“nico Principal, Alt+E=Outros Email"
        Case Field()="Pagina_Web"              : MSGCAMPO="P gina na Internet"
        Case Field()="Taxa_Desconto Permitido" : MSGCAMPO="% Desconto Permitido Padr„o p/ Venda"
        Case Field()="Km Frete"                : MSGCAMPO="Distƒncia em Km para c lculo Frete"
        Case Field()="Regime_Tributario"       : MSGCAMPO="Regime Tribut rio"
        Case Field()="CondPagto Cliente"       : MSGCAMPO="Condi‡„o de Pagamento Padr„o p/ Venda"
        Case Field()="Forma Pagamento Cliente" : MSGCAMPO="Forma de Pagamento Padr„o p/ Venda"
        Case Field()="Dia_Vencimento_Notinha"  : MSGCAMPO="Dia vencimento pr¢ximo mes p/ RECEBEDIAFIXO"
        Case Field()="Flag2"                   : MSGCAMPO="ENTER => Prosseguir"
      EndSwitch
      
      If Field()="Codigo do Representante"  Or
         Field()="Cidade"                   Or
         Field()="Codigo da Rota"           Or
         Field()="Codigo do Cobrador"       Or
         Field()="UF"                       Or
         Field()="Codigo Atividade"         Or
         Field()="Codigo da Transportadora" Or
         Field()="Codigo Transp_Redespacho" Or
         Field()="Codigo CCusto"            Or
         Field()="Codigo da Area"           Or
         Field()="Pais"                     Or
         Field()="Situacao do Cliente"      Or
         Field()="Regime_Tributario"        Or
         Field()="CondPagto Cliente"        Or
         Field()="Forma Pagamento Cliente"
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      EndIf

        If Field()="Codigo do Representante"
          Then REPR_ANT=[Codigo do Representante]
        EndIf

      Prompt Tecla

      Wait Field
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F5","F7",-18,"F11",
                 "F35","F4","F3","F6","F8","F9","PGDN",-33,-80,-115,-116,-133

     If RetVal=-33 And CHAVE=0  
        Then MSGCAMPO=""
             
             Echo Normal
             Echo Off

             opcao1="."  dopcao1=""  ropcao1="Esc"
             opcao2="."  dopcao2=""  ropcao2="Esc"
             opcao3="."  dopcao3=""  ropcao3="Esc"

             If PARAM_AUT="S"
                Then opcao1="[F8]  ~A~utorizados           "  dopcao1=" Autorizados            "  ropcao1="F8"
             EndIf
             If PARAM_VISUALIZA_FICHA="S"
                Then opcao2="[F4]  ~F~icha Financeira      "  dopcao2=" Ficha Financeira       "  ropcao2="F4"
             EndIf
             If PARAM_CONS_SINTEGRA = "S" And (Verifica_Consulta_Ativa()) 
                Then opcao3="[F9]  Consulta ~S~integra"  dopcao3=" Consulta Sintegra"  ropcao3="F9"
             EndIf
                
             ShowPopup " Fun‡”es " CENTERED
              "[F3]  ~E~ndere‡o/Cobran‡a        " : " Endere‡o/Cobranca        ":"F3",        
              opcao2                             : dopcao2                     : ropcao2,
              Separator,
              "[F5]  ~O~bserva‡”es             " : " Observa‡”es              ":"F5",
              "[F7]  Observa‡”es p/ ~V~enda    " : " Observa‡”es p/ Venda     ":"F7",
              "[F11] Observa‡”es p/ E~x~pedi‡Æo" : " Observa‡”es p/ Expedi‡äes":"F11",
              "[F6]  Com~p~lementos            " : " Complementos             ":"F6",
              Separator,
              opcao1                           : dopcao1                       : ropcao1,
              Opcao3                           : dopcao3                       : ropcao3,
              "~I~mprime Ficha               " : " Imprime Ficha              ":"Autorizado",
              Separator,
              "Outros Email                  " : " Inclus„o/altera‡„o de outros email" : "Alt+E",
              Separator,
              "~C~ancelar                    " : " Cancelar a Opera‡„o    ": "CANCELAR"
            EndMenu
            To MenuVar
            echo off

           If MenuVar="Autorizado"   
              Then
                ResyncKey
                UnLockRecord
                PickForm "8"
                   If Not IsBlank(PARAM_IMPRESSAO) and IsFile(PARAM_IMPRESSAO+".sc")
                      Then DISPOSITIVO()
                           If OK<>"" 
                              Then Play PARAM_IMPRESSAO
                           EndIf   
                      Else Mensagem("Parƒmetro de ImpressÆo nÆo Configurado !// // Verificar suporte Vise.")
                   Endif
                Echo Normal
                Echo Off
                Moveto"Destinat"           
                PickForm "10"
                Moveto [Nome Fantasia EmitDest]
                Locate CODIGO               
           EndIf

             If MenuVar="CANCELAR" or MenuVar="Esc"
                Then Loop
             EndIf

             RetVal=MenuVar
      EndIf

      Switch
      Case RetVal=-18 Or RetVal="Alt+E" : EMAIL_PARAM_ROTINA="DESTINAT" 
                                          Play "\\Sistemas\\Cadastro\\DestMail" 
      Case RetVal=-80  :
           If Field()<>"Conta Contabil"           And
              Field()<>"Codigo Atividade"         And
              Field()<>"Codigo da Area"           And
              Field()<>"Codigo do Representante"  And
              Field()<>"Codigo da Rota"           And
              Field()<>"Tipo Assistencia"         And
              Field()<>"Regime_Tributario"        And
              Field()<>"Codigo do Cobrador"       And
              Field()<>"Taxa_Desconto Permitido"  And
              Field()<>"Codigo CCusto"            And
              Field()<>"Codigo da Transportadora" And
              Field()<>"Codigo Transp_Redespacho" And
              Field()<>"CondPagto Cliente"        And
              Field()<>"Forma Pagamento Cliente"  And
              Field()<>"Flag2"
              Then Moveto [Conta Contabil]
            EndIf
      Case RetVal=-116 :
           If Field()="Conta Contabil"          Or
              Field()="Codigo Atividade"        Or
              Field()="Codigo da Area"          Or
              Field()="Codigo do Representante" Or
              Field()="Codigo da Rota"          Or
              Field()="Regime_Tributario"       Or
              Field()="Codigo do Cobrador"      Or
              Field()="Taxa_Desconto Permitido"
              Then CAMPOBACK=Field()
                   If Not IsAssigned(CAMPONEXT)
                      Then Moveto [Codigo CCusto]
                      Else Moveto Field CAMPONEXT
                   EndIf   
           EndIf   
      Case RetVal=-115 :
           If Field()="Codigo CCusto"            Or
              Field()="Codigo da Transportadora" Or
              Field()="Codigo Transp_Redespacho" Or
              Field()="Tipo Assistencia"         Or
              Field()="CondPagto Cliente"        Or
              Field()="Forma Pagamento Cliente"  Or
              Field()="Flag2" 
              Then CAMPONEXT=Field()
                   If Not IsAssigned(CAMPOBACK)
                      Then Moveto [Conta Contabil]
                      Else Moveto Field CAMPOBACK
                   EndIf       
           EndIf   
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()

      Case RetVal="F1":
           If Field()="Codigo do Cliente"        Or
              Field()="Codigo da Rota"           Or
              Field()="Cidade"                   Or
              Field()="Codigo do Cobrador"       Or
              Field()="UF"                       Or
              Field()="Codigo Atividade"         Or
              Field()="Codigo da Transportadora" Or
              Field()="Codigo CCusto"            Or
              Field()="Codigo da Area"           Or
              Field()="Pais"                     Or
              Field()="Codigo Transp_Redespacho" Or
              Field()="Codigo do Representante"  Or  
              Field()="CondPagto Cliente"        Or
              Field()="Forma Pagamento Cliente"
              Then If CONSULTAF1()
                      Then If Field()="Codigo Transp_Redespacho"
                              Then [Codigo Transp_Redespacho]=Reg_ConsultaF1["Codigo da Transportadora"]
                                   [Nome Fantasia Redespacho]=Reg_ConsultaF1["Nome Fantasia Transport"]
                           EndIf
                           If Field()="Codigo do Representante"
                              Then [Codigo do Representante ]=Reg_ConsultaF1["Codigo do Representante"]
                                   [Nome Fantasia Represent ]=Reg_ConsultaF1["Nome Fantasia Represent"]
                           EndIf
                           If Field()="Cidade"
                              Then [UF  ]=Reg_ConsultaF1["UF"]
                                   [Pais]=Reg_ConsultaF1["Pais"]
                           EndIf
                           If Field()="CondPagto Cliente" 
                              Then [CondPagto Cliente   ]=Reg_ConsultaF1["Condicao de Pagamento"]
                                   [Descricao CP Cliente]=Reg_ConsultaF1["Descricao CondPagto"]
                           EndIf   
                           If Field()="Forma Pagamento Cliente"
                              Then [Forma Pagamento Cliente]=Reg_ConsultaF1["Tipo do Pagamento"]
                                   [Descricao FP Cliente   ]=Reg_ConsultaF1["Descricao Tipo Pagamento"]
                           EndIf   
                   EndIf
           EndIf
           
           If Field()="Situacao do Cliente"
              Then MSGCAMPO=""
              
                   Echo Normal
                   Echo Off
                   ShowPopup " Situa‡”es " CENTERED
                    "~O~timo     ": " Otimo cliente                 " :"OTIMO",
                    "~B~OM       ": " Bom cliente                   " :"BOM",
                    "~R~egular   ": " Aten‡„o para novas vendas     " :"REGULAR",
                    "~P~‚ssimo   ": " Impedir novas vendas          " :"PESSIMO",
                    "R~e~cadastro": " N„o vender sem recadastramento" :"RECADASTRO",
                    "~C~ancelar  ": " Cancelar a Opera‡„o           " : "CANCELAR"
                   EndMenu
                   To MenuVar
                   Echo Off

                  If MenuVar="CANCELAR" or MenuVar="Esc"
                      Then Loop
                      Else []=MenuVar
                  EndIf
           EndIf
           If Field()="Regime_Tributario"
              Then MSGCAMPO=""
              
                   Echo Normal
                   Echo Off
                   ShowPopup " Regime Tribut rio " CENTERED
                    "~S~imples Nacional"        : " Simples Nacional"                                        : "SIMPLES NACIONAL",
                    "Simples Nacional ~E~SRB"   : " Simples Nacional - Exesso de sublimite de receita bruta" : "SIMPLES NAC. ESRB",
                    "~D~‚bito e cr‚dito"        : " Regime de d‚bito e cr‚dito                             " : "DEBITO E CREDITO",
                    "~O~utros, Isento ou Imune" : " Outros Regimes, Isento ou Imune"                         : "OUTROS",
                    "~C~ancelar"               : " Cancelar a Opera‡„o"                                      : "CANCELAR"
                   EndMenu
                   To MenuVar
                   Echo Off

                  If MenuVar="CANCELAR" or MenuVar="Esc"
                      Then Loop
                      Else []=MenuVar
                  EndIf
           EndIf
                            
      Case Retval="PGDN" And CHAVE=0:
           If Not Checa_Dados()
              Then Loop
           EndIf
           If Ajusta_Controle()
              Then [Data da Manutencao ]=Today()
                   [Hora da Manutencao ]=Time()
                   [Chapa              ]=SYS_CHAPA_USUARIO
                   [Situacao do Cliente]=SITUACAO_CLIENTE
           EndIf
           Lista_Telefonica()
           CHAVE=9
           QuitLoop
      Case Retval="F3" And CHAVE=0:
           OPCAO="1"
           Quitloop
      Case Retval="F4" And CHAVE=0 And PARAM_VISUALIZA_FICHA="S":
           OPCAO="2"
           Quitloop
      Case Retval="F5" And CHAVE=0:
           OBSERVACAO()
      Case Retval="F7" And CHAVE=0:
           OBSERVACAO_VENDAS()
      Case (Retval="F11" Or RetVal=-133)And CHAVE=0:
           OBSERVACAO_EXPEDICAO()
      Case Retval="F6" And CHAVE=0:
           OPCAO="4"
           Quitloop
      Case Retval="F8" And CHAVE=0 And PARAM_AUT="S":
           OPCAO="5"
           Quitloop
      Case Retval="F9" And CHAVE=0 : 
           Pega_Dados_Sintegra()
           
      Case Retval="ESC":
           Switch
           Case Field()="Nome Fantasia EmitDest":
                If QuerDesfazer("")
                   Then If CHAVE=1
                           Then EXCLUSAO()
                           Else Undo
                        EndIf
                        CHAVE=9
                        QuitLoop
                EndIf
           Case Field()="Data_Cadastro"                : Moveto [Nome Fantasia EmitDest]
           Case Field()="Data de Nascimento"           : Moveto [Data_Cadastro] 
           Case Field()="Situacao do Cliente"          : Moveto [Data de Nascimento]
           Case Field()="Inativo"                      : Moveto [Situacao do Cliente]
           Case Field()="Data_Inativo"                 : Moveto [Inativo]
           Case Field()="Razao Social"                 : If [Inativo] = "S"
                                                            Then Moveto [Data_Inativo]
                                                            Else Moveto [Inativo]
                                                         EndIf
           Case Field()="Contato"                      : Moveto [Razao Social]
           Case Field()="CEP"                          : Moveto [Contato]
           Case Field()="Endereco"                     : Moveto [CEP]
           Case Field()="Bairro"                       : Moveto [Endereco]
           Case Field()="Cidade"                       : Moveto [Bairro]
           Case Field()="UF"                           : Moveto [Cidade]
           Case Field()="Pais"                         : Moveto [UF]
           Case Field()="Km Frete"                     : Moveto [Pais]
           Case Field()="Telefone"                     : Moveto [Km Frete]
           Case Field()="Celular"                      : Moveto [Telefone]
           Case Field()="Fax"                          : Moveto [Celular]
           Case Field()="Endereco_Eletronico"          : Moveto [Fax]
           Case Field()="Pagina_Web"                   : Moveto [Endereco_Eletronico]
           Case Field()="CGC"                          : Moveto [Pagina_Web]
           Case Field()="Consumidor Final"             : Moveto [CGC]
                If PARAM_CGC_CLIENTE="S" And Not ALTERA_CPF
                   Then Moveto [Pagina_Web]
                   Else Moveto [CGC]
                EndIf
                
           Case Field()="IE"                           : 
                If [UF]="EX" Then [IE]="ISENTO" EndIF 
                Moveto [Consumidor Final]
           Case Field()="RG"                           : Moveto [IE]
           Case Field()="IM"                           : Moveto [RG]
           Case Field()="IE_ST"                        : Moveto [IM]
           Case Field()="CNAE"                         : Moveto [IE_ST]
           Case Field()="NIRE"                         : Moveto [CNAE]
           Case Field()="ISUFRAMA"                     : Moveto [NIRE]
           Case Field()="Conta Contabil"               : Moveto [ISUFRAMA]
           Case Field()="Codigo Atividade":
                If IsBlank([])
                   Then [Descricao Atividade]=""
                EndIf
                Moveto [Conta Contabil]
           Case Field()="Codigo da Area":
                If IsBlank([])
                   Then [Descricao da Area]=""
                EndIf
                Moveto [Codigo Atividade]
           Case Field()="Codigo do Representante":
                If IsBlank([])
                   Then [Nome Fantasia Represent]=""
                EndIf
                Moveto [Codigo da Area]
           Case Field()="Codigo da Rota":
                If IsBlank([])
                   Then [Descricao da Rota]=""
                EndIf
                Moveto [Codigo do Representante]
           Case Field()="Regime_Tributario":
                Moveto [Codigo da Rota]
           Case Field()="Codigo do Cobrador":
                If IsBlank([])
                   Then [Descricao do Cobrador]=""
                EndIf
                Moveto [Regime_Tributario]
           Case Field()="Taxa_Desconto Permitido"      : Moveto [Codigo do Cobrador]
           Case Field()="Codigo CCusto"                :
                If IsBlank([])
                   Then [Descricao CCusto]=""
                EndIf  
                Moveto [Conta Contabil]
           Case Field()="Codigo da Transportadora":
                If IsBlank([])
                   Then [Nome Fantasia Transport]=""
                EndIf
                Moveto [Codigo CCusto]    
                
           Case Field()="Codigo Transp_Redespacho":
                If IsBlank([])
                   Then [Nome Fantasia Redespacho]=""
                EndIf
                Moveto [Codigo da Transportadora]
                
           Case Field() = "Tipo Assistencia":
                Moveto [Codigo Transp_Redespacho]
                 
           Case Field()="CondPagto Cliente"            : 
                If IsBlank([])
                   Then [Descricao CP Cliente]=""
                EndIf  
                Moveto [Tipo Assistencia]     
           Case Field()="Forma Pagamento Cliente"      : 
                If IsBlank([])
                   Then [Descricao FP Cliente]=""
                EndIf  
                Moveto [CondPagto Cliente] 
           Case Field()="Dia_Vencimento_Notinha"      : 
                Moveto [Forma Pagamento Cliente]          
           Case Field()="Flag2"                       :
                Moveto [Dia_Vencimento_Notinha] 
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER":
           [Data da Manutencao]=Today()
           [Hora da Manutencao]=Time()
           [Chapa             ] =  SYS_CHAPA_USUARIO

           Switch
           Case Field() = "Nome Fantasia EmitDest": 
                If IsFieldNull([]) Then Loop EndIf
                Moveto [Data_Cadastro]
           Case Field()="Data_Cadastro":
                If IsBlank([])
                   Then []=Today()
                EndIf
                Moveto [Data de Nascimento]
           Case Field()="Data de Nascimento":
                Moveto [Situacao do Cliente]
           Case Field()="Situacao do Cliente":
                If Not IsBlank([]) 
                   Then If SITUACAO_CLIENTE<>[Situacao do Cliente]
                           Then If Not Checa_Supervisor()  
                                   Then [Situacao do Cliente]=SITUACAO_CLIENTE
                                   Else SITUACAO_CLIENTE=[Situacao do Cliente]
                                 EndIf
                        EndIf 
                EndIf           
                If IsBlank([]) Then []="OTIMO" EndIf
                Moveto [Inativo]
           Case Field()="Inativo": 
                If IsBlank([]) Then []="N" EndIf
                If [Inativo]="S"
                   Then Moveto [Data_Inativo]
                   Else [Data_Inativo] = BlankDate()
                        Moveto [Razao Social]
                EndIf
           Case Field()="Data_Inativo":
                If IsBlank([]) And [Inativo] = "S" 
                   Then []=Today()
                EndIf
                Moveto [Razao Social]
           Case Field()="Razao Social":
                If IsBlank([]) Then Loop EndIf
                Moveto [Contato]
           Case Field()="Contato"  : Moveto [CEP]
           Case Field()="CEP"      : Moveto [Endereco]
                If Not Isblank([CEP]) And CHAVE = 1 And not ACHOU_DADOS_SINTEGRA
                   Then Busca_Cep([CEP])
                        [Endereco] = BUSCA_CEP_ENDERECO
                        [Bairro  ] = BUSCA_CEP_BAIRRO
                        [Cidade  ] = BUSCA_CEP_CIDADE
                        [UF      ] = BUSCA_CEP_UF
                        [Pais    ] = BUSCA_CEP_PAIS
                        Release Vars BUSCA_CEP_ENDERECO, BUSCA_CEP_BAIRRO, BUSCA_CEP_CIDADE, BUSCA_CEP_UF, BUSCA_CEP_PAIS
                EndIf
           Case Field()="Endereco" : Moveto [Bairro]
           Case Field()="Bairro"   : Moveto [Cidade]
           Case Field()="Cidade":
                If IsBlank([]) Then Loop EndIf
                Moveto [UF]                
           Case Field() = "UF":
                If IsBlank([]) Then Loop EndIf                
                If Not IsBlank([Cidade])
                    Then Moveto [Cidade]
                         Ativa_Lookup()
                         Moveto [Cidade]
                         Locate [Destinat->Cidade],[Destinat->UF]
                         If RetVal
                            Then VSD_Cidade=[Cidade ]
                                 VSD_UF=[UF]
                                 KeyPress "ESC"
                                 Moveto "Destinat"
                                 [Cidade]=VSD_Cidade
                                 [UF]=VSD_UF
                                 If [UF] = "EX"
                                    Then [IE]="ISENTO" 
                                 EndIf
                                 Moveto [Pais]                                             
                            Else Mensagem("Cidade n„o Cadastrada !")
                                 VSD_Cidade=""                                 
                                 KeyPress "ESC"
                                 Moveto [Cidade]
                         EndIf
                         Echo Off                 
                EndIf   
           Case Field() = "Pais":
                If IsBlank([]) Then
                   []="BRASIL"
                EndIf
                Moveto [Km Frete]
           Case Field()="Km Frete" : Moveto [Telefone]
           Case Field()="Telefone" : Moveto [Celular      ]
           Case Field()="Celular"  : Moveto [Fax          ]
           Case Field()="Fax"      : Moveto [Endereco_Eletronico]
           Case Field()="Endereco_Eletronico" : Moveto [Pagina_Web]
                If Not IsBlank([Endereco_Eletronico])
                   Then EMAIL_PARAM_AUTOMATICO=True
                        Play "\\Sistemas\\Cadastro\\DestMail"
                EndIf
           Case Field()="Pagina_Web"          : 
                If Not IsBlank([Pagina_Web])
                   Then [Pagina_Web]=Lower([Pagina_Web])
                EndIf
                
                CGC_ANT=[CGC]
                If PARAM_CGC_CLIENTE="S" And Not ALTERA_CPF 
                   Then Moveto [Consumidor Final]
                   Else Moveto [CGC]
                EndIf                              
           Case Field()="CGC":  
                If IsBlank([]) Then Loop EndIf

                if [UF]="EX"
                   then if [CGC]<>"00.000.000/0000-00" and
                           [CGC]<>"000.000.000-00" 
                           then Fastmsg("Pessoa do Exterior use 00.000.000/0000-00 ou 000.000.000-00 !")
                                Loop
                           else [IE               ]="ISENTO" 
                                [Regime_Tributario]="OUTROS"
                                [CEP              ]="00.000-00"    
                        endif   
                   else
                        If Not Checa_CGC_CPF_Formatado([]) Then Loop EndIf 
            
                        If ALTERA_CPF And CGC_ANT<>[CGC] And CGC_ANT<>"" 
                           Then CGC=[CGC]   
                                NAO_ALTERA_CGC=False
                                Home 
                                Moveto [CGC]
                                Locate CGC
                                If RetVal  
                                   Then While CGC=[CGC]  
                                          If [Tipo]="C"
                                             Then If [Codigo]<>CODIGO
                                                     Then NAO_ALTERA_CGC=True
                                                          QuitLoop
                                                  EndIf
                                          EndIf        
                                          Skip
                                          If EOT() Then Quitloop EndIf
                                          Locate Next CGC
                                          If Not RetVal
                                             Then QuitLoop
                                          EndIf
                                        EndWhile
                                        Moveto [Codigo]
                                        Locate CODIGO
                                        If NAO_ALTERA_CGC
                                           Then Mensagem("CPF/CNPJ esta sendo utilizado em outro cadastro !")
                                                Moveto [CGC]
                                                []=CGC_ANT
                                                Loop         
                                        EndIf        
                                EndIf 
                        EndIf
                EndIf
                
                Switch
                  Case Search(".",[CGC])=4: 
                       [Tipo Pessoa]="FISICA"  
                       If CHAVE = 1
                           Then [Consumidor Final]="S"
                        EndIf              
                  Case Search(".",[CGC])=3: 
                       [Tipo Pessoa]="JURIDICA"
                       If CHAVE = 1
                           Then [Consumidor Final]="N"
                        EndIf   
                EndSwitch
                Moveto [Consumidor Final]
           Case Field()="Consumidor Final":
                If IsBlank([]) Then []="N" EndIf
                Moveto [IE]
           Case Field()="IE": 
                If IsBlank([]) Then Loop          EndIf
                If [UF]="EX"   Then [IE]="ISENTO" EndIf
                If []<>"ISENTO" And []<>"NAOCONTRIBUINTE"
                  Then Aguarde("Validando IE")
                       If Not Valida_IE([],[UF])
                          Then LimpAguarde()
                               Loop
                       EndIf
                       LimpAguarde()
                  Else 
                       If [Tipo Pessoa]="FISICA"
                          Then [Regime_Tributario]="OUTROS"
                       EndIf
                EndIf  

                Moveto [RG]
           Case Field()="RG"                  : Moveto [IM]
           Case Field()="IM"                  : Moveto [IE_ST]
           Case Field()="IE_ST"               : Moveto [CNAE]
           Case Field()="CNAE"                : Moveto [NIRE]
           Case Field()="NIRE"                : Moveto [ISUFRAMA]
           Case Field()="ISUFRAMA"            : Moveto [Conta Contabil]
           Case Field()="Conta Contabil"      : Moveto [Codigo Atividade]
           Case Field()="Codigo Atividade":
                If IsBlank([]) Then [Descricao Atividade]="" EndIf
                Moveto [Codigo da Area]
           Case Field()="Codigo da Area":
                If IsBlank([]) Then [Descricao da Area]=""   EndIf
                Moveto [Codigo do Representante]
           Case Field()="Codigo do Representante": 
                If IsBlank([])
                   Then [Nome Fantasia Represent]=""
                        If SYS_CODIGO_CLIENTE="0232"
                           Then FastMsg("Representante nÆo foi informado!")
                           Else Moveto [Codigo da Rota]
                        EndIf
                   Else If ;SYS_CODIGO_CLIENTE = "0252" And
                           SYS_USUARIO_CODVEND <> ""   And 
                           SYS_NIVEL_USUARIO   <> "S" 
                           Then
                              If [Codigo do Representante]<>REPR_ANT And CHAVE=0
                                 Then
                                    [Codigo do Representante]=REPR_ANT
                                    MSG="Usu rio: "+SYS_CHAPA_USUARIO+" - "+SYS_NOME_USUARIO+"// //"
                                    MSG=MSG+"Usu rio do tipo VENDEDOR ! NÆo ‚ permitido alterar o representante.//"
                                    MSG=MSG+"Verificar com o Supervisor !"
                                    Mensagem(MSG)
                                    Loop
                              EndIf
                           Else
                              CODREP=[]
                              NFREP =""
                              Ativa_Lookup()
                              Moveto [Codigo do Representante]
                              Locate CODREP
                              If RetVal
                                 Then NFREP=[Nome Fantasia Represent]
                              EndIf
                              KeyPress "ESC"
                              [Nome Fantasia Represent ]=NFREP
                        EndIf
                        Moveto [Codigo da Rota]        
                EndIf
           Case Field()="Codigo da Rota":
                If IsBlank([]) Then [Descricao da Rota]=""   EndIf
                Moveto [Regime_Tributario]
           Case Field()="Regime_Tributario":
                If IsBlank([]) Or
                   ([] <> "SIMPLES NACIONAL"  And
                    [] <> "SIMPLES NAC. ESRB" And
                    [] <> "DEBITO E CREDITO"  And
                    [] <> "OUTROS")
                   Then Fastmsg("Regime inv lido !") loop EndIf
             
                Moveto [Codigo do Cobrador]
           Case Field()="Codigo do Cobrador":
                If IsBlank([])
                   Then [Descricao do Cobrador]=""
                EndIf
                Moveto [Taxa_Desconto Permitido]
           Case Field()="Taxa_Desconto Permitido":
                Moveto [Codigo CCusto]
           Case Field()="Codigo CCusto":
                If IsBlank([])
                   Then [Descricao CCusto]=""
                EndIf
                Moveto [Codigo da Transportadora]     
           Case Field()="Codigo da Transportadora":
                If IsBlank([])
                   Then [Nome Fantasia Transport]=""
                EndIf
                Moveto [Codigo Transp_Redespacho]
           Case Field()="Codigo Transp_Redespacho":
                If IsBlank([])
                   Then [Nome Fantasia Redespacho]=""
                   Else NOMREDESP=""
                        CODREDESP=[Codigo Transp_Redespacho]
                        Ativa_Lookup()
                        Moveto [Codigo da Transportadora]
                        Locate CODREDESP
                        If RetVal
                           Then NOMREDESP=[Nome Fantasia Transport]
                           Else Mensagem ("Redespacho n„o Cadastrado!")
                                NOMREDESP=""
                        EndIf
                        KeyPress "Esc"
                        [Nome Fantasia Redespacho]=NOMREDESP
                EndIf
                Moveto [Tipo Assistencia] 
                
           Case Field() = "Tipo Assistencia":
                If IsBlank([]) Then []="EVENTUAL" EndIf
                Moveto [CondPagto Cliente]
           Case Field()="CondPagto Cliente":
                If IsBlank([])
                   Then [CondPagto Cliente   ]=""
                        [Descricao CP Cliente]="" 
                   Else COD_CONDPAGTO = []
                        CONDPAGTO     = ""
                        DESCCONDPAGTO = ""
                        Ativa_Lookup()
                        Moveto [Condicao de Pagamento]
                        Locate COD_CONDPAGTO
                        If RetVal
                           Then CONDPAGTO     = [Condicao de Pagamento]
                                DESCCONDPAGTO = [Descricao CondPagto]
                        EndIf
                        KeyPress "ESC"
                        [CondPagto Cliente   ]=CONDPAGTO
                        [Descricao CP Cliente]=DESCCONDPAGTO
                EndIf
                Moveto [Forma Pagamento Cliente]           
           Case Field()="Forma Pagamento Cliente":
                If IsBlank([])
                   Then [Forma Pagamento Cliente]=""
                        [Descricao FP Cliente   ]="" 
                   Else COD_FORMAPAGTO = []
                        FORMAPAGTO     = ""
                        DESCFORMAPAGTO = ""
                        Ativa_Lookup()
                        Moveto [Tipo do Pagamento]
                        Locate COD_FORMAPAGTO
                        If RetVal
                           Then FORMAPAGTO     = [Tipo do Pagamento       ]
                                DESCFORMAPAGTO = [Descricao Tipo Pagamento]
                        EndIf
                        KeyPress "ESC"
                        [Forma Pagamento Cliente]=FORMAPAGTO
                        [Descricao FP Cliente   ]=DESCFORMAPAGTO
                EndIf
                Moveto [Dia_Vencimento_Notinha] 
           Case Field()="Dia_Vencimento_Notinha"      : 
                If Not IsBlank([])
                   Then []=AlinhM([],2)
                        If []<"01" Or []>"31"
                           Then FastMsg("Dia inv lido !")
                                Loop 
                        EndIf 
                EndIf   
                Moveto [Flag2]
           Case Field()="Flag2":                
                If CHAVE=1
                   Then UnLockRecord
                EndIf
                CHAVE=0
                Quitloop     
           OtherWise:
                Right
           EndSwitch
           
      Case Retval="DEL":
           If CHAVE=0
              Then If Checa_Supervisor()
                      Then If QuerExcluir("deste cliente")
                              Then EXCLUSAO()
                                   CHAVE=9
                                   QuitLoop
                           EndIf
                   EndIf
           EndIf
      EndSwitch
EndWhile

EndProc   ; (Digita)

;*******************************************************************************
;* Rotina Checa Dados                                                          *
;*******************************************************************************
Proc Checa_Dados()
Private Ok

Ok=True
Switch
  Case [Inativo]="S" And IsBlank([Data_Inativo]) : Mensagem("Data de inatividade em branco! ")
                                                   Ok = False                                                   
  Case IsBlank([CGC])                            : Mensagem("CPF ou CNPJ inv lido! ")
                                                   Ok = False 
  Case IsBlank([IE])                             : Mensagem("IE inv lido! ")
                                                   Ok = False 
  Case IsBlank([Regime_Tributario]) Or
       ([Regime_Tributario] <> "SIMPLES NACIONAL"  And
        [Regime_Tributario] <> "SIMPLES NAC. ESRB" And
        [Regime_Tributario] <> "DEBITO E CREDITO"  And
        [Regime_Tributario] <> "OUTROS")           : Mensagem("Regime tribut rio inv lido! ")
                                                   Ok = False
  Case [UF]<>"EX" and Not Checa_CGC_CPF_Formatado([CGC])        : Ok = False 
EndSwitch
If Not Ok
   Then Return False
EndIf

[Nome Fantasia EmitDest]=LTrim([Nome Fantasia EmitDest])
[Razao Social          ]=LTrim([Razao Social          ])
[Endereco              ]=LTrim([Endereco              ])
[Bairro                ]=LTrim([Bairro                ])

Return Ok
EndProc ;Checa_Dados()

;*******************************************************************************
;* Rotina para gravar dados na lista telefonica                                *
;*******************************************************************************
Proc Lista_Telefonica()

if sys_codigo_cliente="0431"
   then return true
endif

UnLockRecord
KeyPress "F7"

Moveto "\\Sistemas\\Cadastro\\Listfone"
Moveto [Codigo]
Locate [Destinat->Codigo]
If Not RetVal
  Then End Down
       [Codigo                 ]=[Destinat->Codigo]
EndIf

[Nome                   ]=[Destinat->Nome Fantasia EmitDest]
[Endereco               ]=[Destinat->Endereco              ]
[Bairro                 ]=[Destinat->Bairro                ]           
[CEP                    ]=[Destinat->CEP                   ]           
[Cidade                 ]=[Destinat->Cidade                ]           
[UF                     ]=[Destinat->UF                    ] 
If [Destinat->Tipo Pessoa]="FISICA" 
  Then [Telefone Residencial]=[Destinat->Telefone         ] 
       [Telefone Comercial  ]=""  
  Else [Telefone Comercial  ]=[Destinat->Telefone         ]
       [Telefone Residencial]=""  
EndIf
[Telefone Celular       ]=[Destinat->Celular               ]  
UnLockRecord

Moveto "Destinat"
KeyPress "F7"
Return True
     
EndProc ;Lista_Telefonica

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog                                            *   
;*******************************************************************************   
Proc Geral_Dialog(Disparo,Campo,Evento,Elemento)

TECLA   =""
MSGCAMPO=""
Temp=True

If Disparo="OPEN" and OPCAO="4"   
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
   
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"] = -59:
           Switch
             Case OPCAO="1":
               If Campo="E_Cidade" Or
                  Campo="E_UF" Or
                  Campo="C_Cidade" Or
                  Campo="C_UF"
                  Then
                       Dynarray WinArray5[]
                       Window Handle Dialog to JANELA
                       Window GetAttributes JANELA To WinArray5
                       WinArray5["FLOATING"]=False
                       Window SetAttributes JANELA From WinArray5

                       If Campo="E_Cidade" Then Moveto [Cidade de Entrega ] EndIf
                       If Campo="E_UF"     Then Moveto [UF de Entrega     ] EndIf
                       If Campo="C_Cidade" Then Moveto [Cidade de Cobranca] EndIf
                       If Campo="C_UF"     Then Moveto [UF de Cobranca    ] EndIf

                       ConsultaF1()

                       Window Select JANELA
                       WinArray5["FLOATING"]=True
                       Window SetAttributes JANELA From WinArray5

                       Echo Normal
                       Echo Off

                       Switch
                         Case Campo="E_Cidade":
                              VSD_E_Cidade=[Cidade de Entrega]
                         Case Campo="E_UF":
                              VSD_E_UF=[UF de Entrega]
                         Case Campo="C_Cidade":
                              VSD_C_Cidade=[Cidade de Cobranca]
                         Case Campo="C_UF":
                              VSD_C_UF=[UF de Cobranca]
                       EndSwitch
               EndIf
           EndSwitch

      Case Evento["KeyCode"] = -81:

        Switch
           Case OPCAO="1":           ;*** Opcao Endereco ***
           Switch
             Case Campo="E_Endereco":
                  VSD_E_Endereco=ControlValue("E_Endereco")
             Case Campo="E_CEP":
                  VSD_E_CEP=ControlValue("E_CEP")
             Case Campo="E_Bairro":
                  VSD_E_Bairro=ControlValue("E_Bairro")
             Case Campo="E_Cidade":
                  VSD_E_Cidade=ControlValue("E_Cidade")
             Case Campo="E_UF":
                  VSD_E_UF=ControlValue("E_UF")
             Case Campo="C_Endereco":
                  VSD_C_Endereco=ControlValue("C_Endereco")
             Case Campo="C_CEP":
                  VSD_C_CEP=ControlValue("C_CEP")
             Case Campo="C_Bairro":
                  VSD_C_Bairro=ControlValue("C_Bairro")
             Case Campo="C_Cidade":
                  VSD_C_Cidade=ControlValue("C_Cidade")
             Case Campo="C_UF":
                  VSD_C_UF=ControlValue("C_UF")
           EndSwitch
           Grava_Enderecos()
           CancelDialog

           Case OPCAO="2":           ;*** Opcao Ficha Financeira ***
           Switch
             Case Campo="DP_Compra":
                  VSD_DP_Compra=ControlValue("DP_Compra")
                  MSGCAMPO="Valor da Primeira Compra"
             Case Campo="VP_Compra":
                  VSD_VP_Compra=ControlValue("VP_Compra")
                  MSGCAMPO="Data da Ultima Compra"
             Case Campo="DU_Compra":
                  VSD_DU_Compra=ControlValue("DU_Compra")
                  MSGCAMPO="Valor da Ultima Compra"
             Case Campo="VU_Compra":
                  VSD_VU_Compra=ControlValue("VU_Compra")
                  MSGCAMPO="Data da Maior Fatura"
             Case Campo="DM_Fatura":
                  VSD_DM_Fatura=ControlValue("DM_Fatura")
                  MSGCAMPO="Maior Fatura"
             Case Campo="M_Fatura":
                  VSD_M_Fatura=ControlValue("M_Fatura")
                  MSGCAMPO="Maior Atraso"
             Case Campo="M_Atraso":
                  VSD_M_Atraso=ControlValue("M_Atraso")
                  MSGCAMPO="Data do Maior Atraso"
             Case Campo="DM_Atraso":
                  VSD_DM_Atraso=ControlValue("DM_Atraso")
                  MSGCAMPO="Valor do Maior Atraso"
             Case Campo="VM_Atraso":
                  VSD_VM_Atraso=ControlValue("VM_Atraso")
                  MSGCAMPO="Numero de Atrasos"
             Case Campo="N_Atrasos":
                  VSD_N_Atrasos=ControlValue("N_Atrasos")
                  MSGCAMPO="Limite de Credito"
             Case Campo="L_Credito":
                  VSD_L_Credito=ControlValue("L_Credito")
                  MSGCAMPO=ControlValue("Maximo de Dias de Atraso")
             Case Campo="MD_Atraso":
                  VSD_MD_Atraso=ControlValue("MD_Atraso")
             Case Campo="C_SPCDATA":
                  VSD_SPC_DATConsulta=ControlValue("C_SPCDATA")
             Case Campo="C_SPCSITUACAO":
                  VSD_SPC_SITConsulta=ControlValue("C_SPCSITUACAO")
             Case Campo="C_SPCOBSCONSULTA":
                  VSD_SPC_OBSConsulta=ControlValue("C_SPCOBSCONSULTA")
             Case Campo="C_SINTEGRADATA":
                  VSD_SINTEGRA_DATConsulta=ControlValue("C_SINTEGRADATA")
             Case Campo="C_SINTEGRASITUACAO":
                  VSD_SINTEGRA_SITConsulta=ControlValue("C_SINTEGRASITUACAO")      
   
           EndSwitch
           Grava_Ficha()
           CancelDialog

           Case OPCAO="4":          ;*** Opcao Complemento ***

           Switch
             Case Campo="C_Referencia Comercial1":
                  VSD_REF_COM1=ControlValue("C_Referencia Comercial1")
             Case Campo="C_Referencia Comercial2":
                  VSD_REF_COM2=ControlValue("C_Referencia Comercial2")
             Case Campo="C_Referencia Comercial3":
                  VSD_REF_COM3=ControlValue("C_Referencia Comercial3")
             Case Campo="C_Referencia Bancaria":
                  VSD_REF_BANC=ControlValue("C_Referencia Bancaria")
                  Message "Sim ou Nao"
             Case Campo="C_Referencia Pessoal" :
                  VSD_REF_PESSOAL=ControlValue("C_Referencia Pessoal") 
                  Message "Sim ou Nao"
             Case Campo="C_Pai Socio":
                  VSD_PAI_SOCIO=ControlValue("C_Pai Socio")
             Case Campo="C_Mae Socio":
                  VSD_MAE_SOCIO=ControlValue("C_Mae Socio")
             Case Campo="C_Renda Faturamento":
                  VSD_RENDA_FAT=ControlValue("C_Renda Faturamento")
             Case Campo="C_Nome Parente":
                  VSD_N_PARENTE=ControlValue("C_Nome Parente")
             Case Campo="C_Endereco Parente":
                  VSD_END_PARENTE=ControlValue("C_Endereco Parente")
             Case Campo="C_Local Trabalho":
                  VSD_LOCAL_TRAB=ControlValue("C_Local Trabalho")
             Case Campo="C_Endereco Trabalho":
                  VSD_END_TRAB=ControlValue("C_Endereco Trabalho")
             Case Campo="C_Tempo Trabalho":
                  VSD_TEMPO_TRAB=ControlValue("C_Tempo Trabalho")
             Case Campo="C_Nome_Fiador":
                  VSD_Nome_Fiador=ControlValue("C_Nome_Fiador")
             Case Campo="C_CGC_Fiador":
                  VSD_CGC_Fiador=ControlValue("C_CGC_Fiador")      
             Case Campo="C_CGC_PAI":
                  VSD_CGC_PAI=ControlValue("C_CGC_PAI")
             Case Campo="C_CGC_MAE":
                  VSD_CGC_MAE=ControlValue("C_CGC_MAE")
             Case Campo="C_End_Fiador":
                  VSD_End_Fiador=ControlValue("C_End_Fiador")
             Case Campo="C_Tel_Fiador":
                  VSD_Tel_Fiador=ControlValue("C_Tel_Fiador")
             Case Campo="C_Imovel Proprio/Valor":
                  VSD_IMOVEL_P=ControlValue("C_Imovel Proprio/Valor")
           EndSwitch
           Grava_Complemento()
           CancelDialog
      EndSwitch
      Case Evento["KeyCode"] = -66:
         If OPCAO="1" Then
           If Campo="E_Endereco"
              Then VSD_E_Endereco= "O MESMO"
                   VSD_E_Bairro  = ""
                   VSD_E_Cidade  = ""
                   VSD_E_UF      = ""
                   VSD_E_CEP     = ""
           EndIf
           Grava_Enderecos()
           If Campo="C_Endereco"
              Then VSD_C_Endereco = "O MESMO"
                   VSD_C_Bairro   = ""
                   VSD_C_Cidade   = ""
                   VSD_C_UF       = ""
                   VSD_C_CEP      = ""
           EndIf
           RefreshDialog
         Endif
      Case Evento["KeyCode"] = 27:
        Switch
           Case OPCAO="1":           ;*** Opcao Endereco ***
           Switch
             Case Campo="E_CEP":
                  CancelDialog
             Case Campo="E_Endereco":
                  Campo="E_CEP"
             Case Campo="E_Bairro":
                  Campo="E_Endereco"
             Case Campo="E_Cidade":
                  Campo="E_Bairro"
             Case Campo="E_UF":
                  Campo="E_Cidade"
             Case Campo="C_CEP":
                  Campo="E_CEP"
             Case Campo="C_Endereco":
                  Campo="C_CEP"
             Case Campo="C_Bairro":
                  Campo="C_Endereco"
             Case Campo="C_Cidade":
                  Campo="C_Bairro"
             Case Campo="C_UF":
                  Campo="C_Cidade"
           EndSwitch

           Case OPCAO="2":           ;*** Opcao Ficha Financeira ***

           Switch
             Case Campo="DP_Compra":
                  CancelDialog
             Case Campo="VP_Compra":
                  Campo="DP_Compra"
                  MSGCAMPO="Data da Primeira Compra"
             Case Campo="DU_Compra":
                  Campo="VP_Compra"
                  MSGCAMPO="Valor da Primeira Compra"
             Case Campo="VU_Compra":
                  Campo="DU_Compra"
                  MSGCAMPO="Data da Ultima Compra"
             Case Campo="DM_Fatura":
                  Campo="VU_Compra"
                  MSGCAMPO="Valor da Ultima Compra"
             Case Campo="M_Fatura":
                  Campo="DM_Fatura"
                  MSGCAMPO="Data da Maior Fatura"
             Case Campo="M_Atraso":
                  Campo="M_Fatura"
                  MSGCAMPO="Maior Fatura"
             Case Campo="DM_Atraso":
                  Campo="M_Atraso"
                  MSGCAMPO="Maior Atraso"
             Case Campo="VM_Atraso":
                  Campo="DM_Atraso"
                  MSGCAMPO="Data do Maior Atraso"
             Case Campo="N_Atrasos":
                  Campo="VM_Atraso"
                  MSGCAMPO="Valor do Maior Atraso"
             Case Campo="L_Credito":
                  Campo="N_Atrasos"
                  MSGCAMPO="Numero de Atrasos"
             Case Campo="MD_Atraso":
                  Campo="L_Credito"
                  MSGCAMPO="Limite de Credito"
             Case Campo="C_SPCDATA":
                  Campo="MD_Atraso"
                  MSGCAMPO="Maximo de Dias de Atraso"
             Case Campo="C_SPCSITUACAO":
                  Campo="C_SPCDATA"
                  MSGCAMPO="Ultima Consulta"
             Case Campo="C_SPCOBSCONSULTA":
                  Campo="C_SPCSITUACAO"
                  MSGCAMPO="Situacao da Consulta: Regular/Irregular"
             Case Campo="C_SINTEGRADATA":
                  Campo="C_SPCOBSCONSULTA"
             Case Campo="C_SINTEGRASITUACAO":
                  Campo="C_SINTEGRADATA"
                  MSGCAMPO="Ultima Consulta"
           EndSwitch

           Case OPCAO="4":           ;*** Opcao Complemento ***
           Switch
             Case Campo="C_Referencia Comercial1":
                  CancelDialog
             Case Campo="C_Referencia Comercial2":
                  Campo="C_Referencia Comercial1"
             Case Campo="C_Referencia Comercial3":
                  Campo="C_Referencia Comercial2"
             Case Campo="C_Referencia Bancaria":
                  Campo="C_Renda Faturamento"   
             Case Campo="C_Renda Faturamento": 
                  Campo="C_Referencia Comercial3"
             Case Campo="C_Referencia Pessoal"  :
                  Campo="C_Referencia Bancaria"     
             Case Campo="C_Pai Socio":
                  Campo="C_Referencia Pessoal"
             Case Campo="C_CGC_PAI":
                  Campo="C_Pai Socio"
             Case Campo="C_Mae Socio":
                  Campo="C_CGC_PAI"
             Case Campo="C_CGC_MAE":
                  Campo="C_Mae Socio"                  
             Case Campo="C_Nome Parente":
                  Campo="C_CGC_MAE"    
             Case Campo="C_Endereco Parente":
                  Campo="C_Nome Parente"
             Case Campo="C_Local Trabalho":
                  Campo="C_Endereco Parente"
             Case Campo="C_Endereco Trabalho":
                  Campo="C_Local Trabalho"
             Case Campo="C_Tempo Trabalho":
                  Campo="C_Endereco Trabalho"
             Case Campo="C_Nome_Fiador":
                  Campo="C_Tempo Trabalho"
             Case Campo="C_CGC_Fiador":
                  Campo="C_Nome_Fiador"
             Case Campo="C_End_Fiador":
                  Campo="C_CGC_Fiador"
             Case Campo="C_Tel_Fiador":
                  Campo="C_End_Fiador"
             Case Campo="C_Imovel Proprio/Valor":
                  Campo="C_Tel_Fiador"
           EndSwitch
        EndSwitch
        Temp=False
      Case Evento["KeyCode"] = 13:
        Switch
           Case OPCAO="1":           ;*** Opcao Endereco ***
           Switch
             Case Campo="E_CEP": 
                  VSD_E_CEP=ControlValue("E_CEP")
                  If IsBlank(VSD_E_Endereco) And
                     IsBlank(VSD_E_Bairro)   And
                     IsBlank(VSD_E_Cidade)   And
                     IsBlank(VSD_E_UF)
                     Then ALTERA_ENDERECO = True
                     ELse ALTERA_ENDERECO = False
                  EnDIf
                  If Not ALTERA_ENDERECO
                     Then ConfGeral("Deseja ajustar o endere‡o p/ o CEP informado?")
                          If Ok="S"
                             Then ALTERA_ENDERECO = True
                          EndIf
                  EndIf
                  If Not Isblank(VSD_E_CEP) And ALTERA_ENDERECO
                     Then Busca_Cep(VSD_E_CEP)
                          VSD_E_Endereco = BUSCA_CEP_ENDERECO
                          VSD_E_Bairro   = BUSCA_CEP_BAIRRO
                          VSD_E_Cidade   = BUSCA_CEP_CIDADE
                          VSD_E_UF       = BUSCA_CEP_UF
                          Release Vars BUSCA_CEP_ENDERECO, BUSCA_CEP_BAIRRO, BUSCA_CEP_CIDADE, BUSCA_CEP_UF, BUSCA_CEP_PAIS
                  EndIf
                  Campo="E_Endereco"
             Case Campo="E_Endereco":
                  VSD_E_Endereco=ControlValue("E_Endereco")
                  Campo="E_Bairro"
             Case Campo="E_Bairro":
                  VSD_E_Bairro=ControlValue("E_Bairro")
                  Campo="E_Cidade"
             Case Campo="E_Cidade":
                  VSD_E_Cidade=ControlValue("E_Cidade")
                  If Not IsBlank(VSD_E_Cidade)
                     Then Moveto [Cidade de Entrega]
                          Ativa_Lookup()
                          Locate VSD_E_Cidade
                          If Not RetVal
                             Then Mensagem("Cidade invalida !")
                             Else Campo="E_UF"
                          EndIf
                          KeyPress "ESC"
                     Else Campo="E_UF"
                  EndIf
             Case Campo="E_UF":
                  VSD_E_UF=ControlValue("E_UF")
                  If Not IsBlank(VSD_E_UF)
                     Then Moveto [UF de Entrega]
                          Ativa_Lookup()
                          Locate VSD_E_UF
                          If Not RetVal
                             Then Mensagem("UF invalida !")
                             Else Campo="C_CEP"
                          EndIf
                          KeyPress "ESC"
                     Else Campo="C_CEP"
                  EndIf
             Case Campo="C_CEP":
                  VSD_C_CEP=ControlValue("C_CEP")
                  If IsBlank(VSD_C_Endereco) And
                     IsBlank(VSD_C_Bairro)   And
                     IsBlank(VSD_C_Cidade)   And
                     IsBlank(VSD_C_UF)
                     Then ALTERA_ENDERECO = True
                     ELse ALTERA_ENDERECO = False
                  EnDIf
                  If Not ALTERA_ENDERECO
                     Then ConfGeral("Deseja ajustar o endere‡o p/ o CEP informado?")
                          If Ok="S"
                             Then ALTERA_ENDERECO = True
                          EndIf
                  EndIf
                  If Not Isblank(VSD_C_CEP) And ALTERA_ENDERECO
                     Then Busca_Cep(VSD_C_CEP)
                          VSD_C_Endereco = BUSCA_CEP_ENDERECO
                          VSD_C_Bairro   = BUSCA_CEP_BAIRRO
                          VSD_C_Cidade   = BUSCA_CEP_CIDADE
                          VSD_C_UF       = BUSCA_CEP_UF
                          Release Vars BUSCA_CEP_ENDERECO, BUSCA_CEP_BAIRRO, BUSCA_CEP_CIDADE, BUSCA_CEP_UF, BUSCA_CEP_PAIS
                  EndIf
                  Campo="C_Endereco"
             Case Campo="C_Endereco":
                  VSD_C_Endereco=ControlValue("C_Endereco")
                  Campo="C_Bairro"     
             Case Campo="C_Bairro":
                  VSD_C_Bairro=ControlValue("C_Bairro")
                  Campo="C_Cidade"
             Case Campo="C_Cidade":
                  VSD_C_Cidade=ControlValue("C_Cidade")
                  Campo="C_UF"
             Case Campo="C_UF":
                  VSD_C_UF=ControlValue("C_UF")
                  Grava_Enderecos()
                  UnLockRecord
                  CancelDialog
           EndSwitch

           Case OPCAO="2":           ;*** Opcao Ficha Financeira ***

           Switch
             Case Campo="DP_Compra":
                  VSD_DP_Compra=ControlValue("DP_Compra")
                  Campo="VP_Compra"
                  MSGCAMPO="Valor da Primeira Compra"
             Case Campo="VP_Compra":
                  VSD_VP_Compra=ControlValue("VP_Compra")
                  Campo="DU_Compra"
                  MSGCAMPO="Data da Ultima Compra"
             Case Campo="DU_Compra":
                  VSD_DU_Compra=ControlValue("DU_Compra")
                  Campo="VU_Compra"
                  MSGCAMPO="Valor da Ultima Compra"
             Case Campo="VU_Compra":
                  VSD_VU_Compra=ControlValue("VU_Compra")
                  Campo="DM_Fatura"
                  MSGCAMPO="Data da Maior Fatura"
             Case Campo="DM_Fatura":
                  VSD_DM_Fatura=ControlValue("DM_Fatura")
                  Campo="M_Fatura"
                  MSGCAMPO="Maior Fatura"
             Case Campo="M_Fatura":
                  VSD_M_Fatura=ControlValue("M_Fatura")
                  Campo="M_Atraso"
                  MSGCAMPO="Maior Atraso"
             Case Campo="M_Atraso":
                  VSD_M_Atraso=ControlValue("M_Atraso")
                  Campo="DM_Atraso"
                  MSGCAMPO="Data do Maior Atraso"
             Case Campo="DM_Atraso":
                  VSD_DM_Atraso=ControlValue("DM_Atraso")
                  Campo="VM_Atraso"
                  MSGCAMPO="Valor do Maior Atraso"
             Case Campo="VM_Atraso":
                  VSD_VM_Atraso=ControlValue("VM_Atraso")
                  Campo="N_Atrasos"
                  MSGCAMPO="Numero de Atrasos"
             Case Campo="N_Atrasos":
                  VSD_N_Atrasos=ControlValue("N_Atrasos")
                  Campo="L_Credito"
                  MSGCAMPO="Limite de Credito"
             Case Campo="L_Credito":
                  VSD_L_Credito=ControlValue("L_Credito")
                  Campo="MD_Atraso"
                  MSGCAMPO="Maximo de Dias de Atraso"
             Case Campo="MD_Atraso":
                  VSD_MD_Atraso=ControlValue("MD_Atraso")
                  Campo="C_SPCDATA"
                  MSGCAMPO="Ultima Consulta"
             Case Campo="C_SPCDATA":
                  VSD_SPC_DATConsulta=ControlValue("C_SPCDATA")
                  If Not IsBlank(VSD_SPC_DATConsulta)
                     Then If VSD_SPC_DATConsulta>Today()
                             Then Mensagem("Data Inv lida!//A data n„o pode ser maior que a data de hoje!")
                                  Campo="C_SPCDATA"
                             Else Campo="C_SPCSITUACAO"    
                                  MSGCAMPO="Situacao da Consulta: Regular/Irregular"
                          EndIf  
                     Else Campo="C_SPCSITUACAO"   
                          MSGCAMPO="Situacao da Consulta: Regular/Irregular"         
                  EndIf   
             Case Campo="C_SPCSITUACAO":
                  VSD_SPC_SITConsulta=ControlValue("C_SPCSITUACAO")
                  Campo="C_SPCOBSCONSULTA"
                  MSGCAMPO="Protocolo/Observa‡„o da Consulta"
             Case Campo="C_SPCOBSCONSULTA":
                  VSD_SPC_OBSConsulta=ControlValue("C_SPCOBSCONSULTA")
                  Campo="C_SINTEGRADATA"
                  MSGCAMPO="Ultima Consulta" 
             Case Campo="C_SINTEGRADATA":
                  VSD_SINTEGRA_DATConsulta=ControlValue("C_SINTEGRADATA")
                  If Not IsBlank(VSD_SINTEGRA_DATConsulta)
                     Then If VSD_SINTEGRA_DATConsulta>Today()
                             Then Mensagem("Data Inv lida!//A data n„o pode ser maior que a data de hoje!")
                                  Campo="C_SINTEGRADATA"
                             Else Campo="C_SINTEGRASITUACAO"    
                                  MSGCAMPO="Situacao da Consulta: Habilitado/Nao Habilitado"
                          EndIf  
                     Else Campo="C_SINTEGRASITUACAO"   
                          MSGCAMPO="Situacao da Consulta: Habilitado/Nao Habilitado"         
                  EndIf 
             Case Campo="C_SINTEGRASITUACAO":
                  VSD_SINTEGRA_SITConsulta=ControlValue("C_SINTEGRASITUACAO")     
                  Grava_Ficha()
                  UnLockRecord
                  CancelDialog       
           EndSwitch

                             
           Case OPCAO="4":          ;*** Opcao Complemento ***

           Switch
             Case Campo="C_Referencia Comercial1":
                  VSD_REF_COM1=ControlValue("C_Referencia Comercial1")
                  Campo="C_Referencia Comercial2"
             Case Campo="C_Referencia Comercial2":
                  VSD_REF_COM2=ControlValue("C_Referencia Comercial2")
                  Campo="C_Referencia Comercial3"
             Case Campo="C_Referencia Comercial3":
                  VSD_REF_COM3=ControlValue("C_Referencia Comercial3")
                  Campo="C_Renda Faturamento"
             Case Campo="C_Renda Faturamento":  
                  VSD_RENDA_FAT=ControlValue("C_Renda Faturamento")
                  Campo="C_Referencia Bancaria"
             Case Campo="C_Referencia Bancaria":
                  VSD_REF_BANC=ControlValue("C_Referencia Bancaria")
                  Campo="C_Referencia Pessoal"
             Case Campo="C_Referencia Pessoal" :
                  VSD_REF_PESSOAL=ControlValue("C_Referencia Pessoal")
                  Campo="C_Pai Socio"     
             Case Campo="C_Pai Socio":
                  VSD_PAI_SOCIO=ControlValue("C_Pai Socio")
                  Campo="C_CGC_PAI"  
             Case Campo="C_CGC_PAI":
                  VSD_CGC_PAI=ControlValue("C_CGC_PAI")
                  If Not IsBlank(VSD_CGC_PAI)
                     Then If Checa_CGC_CPF_Formatado(VSD_CGC_PAI)
                             Then Campo="C_Mae Socio"
                          EndIf
                     Else Campo="C_Mae Socio"
                  EndIf                 
             Case Campo="C_Mae Socio":
                  VSD_MAE_SOCIO=ControlValue("C_Mae Socio")
                  Campo="C_CGC_MAE"
             Case Campo="C_CGC_MAE":
                  VSD_CGC_MAE=ControlValue("C_CGC_MAE")
                  If Not IsBlank(VSD_CGC_MAE)
                     Then If Checa_CGC_CPF_Formatado(VSD_CGC_MAE)
                             Then Campo="C_Nome Parente"
                          EndIf
                     Else Campo="C_Nome Parente"
                  EndIf
             Case Campo="C_Nome Parente":
                  VSD_N_PARENTE=ControlValue("C_Nome Parente")
                  Campo="C_Endereco Parente"
             Case Campo="C_Endereco Parente":
                  VSD_END_PARENTE=ControlValue("C_Endereco Parente")
                  Campo="C_Local Trabalho"
             Case Campo="C_Local Trabalho":
                  VSD_LOCAL_TRAB=ControlValue("C_Local Trabalho")
                  Campo="C_Endereco Trabalho"
             Case Campo="C_Endereco Trabalho":
                  VSD_END_TRAB=ControlValue("C_Endereco Trabalho")
                  Campo="C_Tempo Trabalho"
             Case Campo="C_Tempo Trabalho":
                  VSD_TEMPO_TRAB=ControlValue("C_Tempo Trabalho")
                  Campo="C_Nome_Fiador"
             Case Campo="C_Nome_Fiador":
                  VSD_Nome_Fiador=ControlValue("C_Nome_Fiador")
                  Campo="C_CGC_Fiador"
             Case Campo="C_CGC_Fiador":
                  VSD_CGC_Fiador=ControlValue("C_CGC_Fiador")
                  If Not IsBlank(VSD_CGC_Fiador)
                     Then If Checa_CGC_CPF_Formatado(VSD_CGC_Fiador)
                             Then Campo="C_End_Fiador"
                          EndIf
                     Else Campo="C_End_Fiador"
                  EndIf
             Case Campo="C_End_Fiador":
                  VSD_End_Fiador=ControlValue("C_End_Fiador")
                  Campo="C_Tel_Fiador"
             Case Campo="C_Tel_Fiador":
                  VSD_Tel_Fiador=ControlValue("C_Tel_Fiador")
                  Campo="C_Imovel Proprio/Valor"
             Case Campo="C_Imovel Proprio/Valor":
                  VSD_IMOVEL_P=ControlValue("C_Imovel Proprio/Valor")
                  Grava_Complemento()
                  UnLockRecord
                  CancelDialog
           EndSwitch
     EndSwitch
     ;Temp=False
   EndSwitch
EndIf
RefreshDialog
SelectControl Campo
TECLA="Esc=Retornar                                                    PgDn=Finalizar   "

Switch
  Case OPCAO="1":
       If Campo="E_Endereco" Or
          Campo="C_Endereco"
          Then TECLA=TECLA+"F8=Duplica Endere‡o  "
       EndIf
       If Campo="E_Cidade" Or
          Campo="E_UF"     Or
          Campo="C_Cidade" Or
          Campo="C_UF"
          Then TECLA=TECLA+"F1=Tabelas  "
       EndIf
  Case OPCAO="4":
       Switch             
         Case Campo="C_Referencia Comercial1":
              MSGCAMPO="1§ Referˆncia Comercial"
         Case Campo="C_Referencia Comercial2":
              MSGCAMPO="2§ Referˆncia Comercial"
         Case Campo="C_Referencia Comercial3":
              MSGCAMPO="3§ Referˆncia Comercial"
         Case Campo="C_Renda Faturamento"    :
              MSGCAMPO="Renda do Faturamento"
         Case Campo="C_Referencia Bancaria"  :
              MSGCAMPO="Referˆncia Banc ria"
         Case Campo="C_Referencia Pessoal"   :
              MSGCAMPO="Referˆncia Pessoal"
         Case Campo="C_Pai Socio"            :
              MSGCAMPO="Nome Pai S¢cio"
         Case Campo="C_Mae Socio"            :
              MSGCAMPO="Nome M„e S¢cio"
         Case Campo="C_CGC_PAI"              : 
              MSGCAMPO="CPF/CGC Pai S¢cio"
         Case Campo="C_CGC_MAE"              :
              MSGCAMPO="CPF/CGC M„e S¢cio"
         Case Campo="C_Nome Parente"         :
              MSGCAMPO="Nome do Parente"                                           
         Case Campo="C_Endereco Parente"     :
              MSGCAMPO="Endere‡o do Parente"
         Case Campo="C_Local Trabalho"       :
              MSGCAMPO="Local de Trabalho"
         Case Campo="C_Endereco Trabalho"    :
              MSGCAMPO="Endere‡o de Trabalho"
         Case Campo="C_Tempo Trabalho"       :
              MSGCAMPO="Tempo de Trabalho"
         Case Campo="C_Nome_Fiador"          :
              MSGCAMPO="Nome do Fiador"
         Case Campo="C_CGC_Fiador"           :
              MSGCAMPO="CPF/CGC do Fiador"
         Case Campo="C_End_Fiador"           :
              MSGCAMPO="Endere‡o do Fiador"
         Case Campo="C_Tel_Fiador"           :
              MSGCAMPO="Telefone do Fiador"
         Case Campo="C_Imovel Proprio/Valor" :
              MSGCAMPO="Im¢vel"   
       EndSwitch
  Case OPCAO="2":     
       If AUX=True Then
          Switch
            Case Campo="DP_Compra":
              MSGCAMPO="Data da Primeira Compra"
              AUX=False
           EndSwitch
       EndIf
EndSwitch

MontaRodapeSD(MSGCAMPO, TECLA)

Return TEMP
EndProc   ; (Geral_Dialog)

;*******************************************************************************
;* Digitacao de Enderecos                                                      *
;*******************************************************************************
Proc Endereco()
Moveto "Destinat"
UnLockRecord
FormKey
Moveto "End_Cob"
Moveto [Codigo]
Locate [Destinat->Codigo]
If Not RetVal
   Then End Down
        [Codigo]=[Destinat->Codigo]
EndIf

VSD_E_Endereco=[Endereco de Entrega ]
VSD_E_Bairro  =[Bairro de Entrega   ]
VSD_E_Cidade  =[Cidade de Entrega   ]
VSD_E_UF      =[UF de Entrega       ]
VSD_E_CEP     =[CEP de Entrega      ]

VSD_C_Endereco=[Endereco de Cobranca]
VSD_C_Bairro  =[Bairro de Cobranca  ]
VSD_C_Cidade  =[Cidade de Cobranca  ]
VSD_C_UF      =[UF de Cobranca      ]
VSD_C_CEP     =[CEP de Cobranca     ]

Showdialog "Endere‡os Complementares" Proc "Geral_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN","F8"
   @ 8,08 height 14 width 63

   Frame Single From 0,0 to 5,60
   @ 0,1 ?? " Local de Entrega "
   paintcanvas attribute 26 0, 0, 5, 60
   Label  @ 1,01 "CEP" for "E_CEP"
   Accept @ 2,02  Width 13 "A10" picture "##.###-###" Tag "E_CEP" to VSD_E_CEP
   Label  @ 1,15 "Endere‡o" for "E_Endereco"
   Accept @ 2,16  Width 43 "A40" picture "!*!" Tag "E_Endereco" to VSD_E_Endereco

   Label  @ 3,01 "Bairro" for "E_Bairro"
   Accept @ 4,02  Width 23 "A20" picture "!*!" Tag "E_Bairro" to VSD_E_Bairro
   Label  @ 3,25 "Cidade" for "E_Cidade"
   Accept @ 4,26  Width 23 "A20" picture "!*!" Tag "E_Cidade" to VSD_E_Cidade
   Label  @ 3,49 "UF" for "E_UF"
   Accept @ 4,50  Width 05 "A2" picture "!*!" Tag "E_UF" to VSD_E_UF

   Frame Single From 6,0 to 11,60
   @ 6,1 ?? " Local de Cobran‡a "
   paintcanvas attribute 30 6, 0,11, 60
   Label  @ 7,01 "CEP" for "C_CEP"
   Accept @ 8,02  Width 13 "A10" picture "##.###-###" Tag "C_CEP" to VSD_C_CEP
   Label  @ 7,15 "Endere‡o" for "C_Endereco"
   Accept @ 8,16  Width 43 "A40" picture "!*!" Tag "C_Endereco" to VSD_C_Endereco
   
   Label  @ 9,01 "Bairro" for "C_Bairro"
   Accept @ 10,02  Width 23 "A20" picture "!*!" Tag "C_Bairro" to VSD_C_Bairro
   Label  @ 9,25 "Cidade" for "C_Cidade"
   Accept @ 10,26  Width 23 "A20" picture "!*!" Tag "C_Cidade" to VSD_C_Cidade
   Label  @ 9,49 "UF" for "C_UF"
   Accept @ 10,50  Width 05 "A2" picture "!*!" Tag "C_UF" to VSD_C_UF

Enddialog
If IsBlank([Endereco de Cobranca]) And IsBlank([Endereco de Entrega])
   Then Del
EndIf
UnLockRecord
Moveto "Destinat"
FormKey
LockRecord
EndProc  ; (Endereco)

;*******************************************************************************
;* Rotina para Gravar Enderecos Complementares                                *
;*******************************************************************************
Proc Grava_Enderecos()
[Codigo              ]=[Destinat->Codigo]
;[Tipo                ]=[Destinat->Tipo]
[Endereco de Entrega ]=VSD_E_Endereco
[Bairro de Entrega   ]=VSD_E_Bairro
[Cidade de Entrega   ]=VSD_E_Cidade
[CEP de Entrega      ]=VSD_E_CEP
[UF de Entrega       ]=VSD_E_UF
[Endereco de Cobranca]=VSD_C_Endereco
[Bairro de Cobranca  ]=VSD_C_Bairro
[Cidade de Cobranca  ]=VSD_C_Cidade
[CEP de Cobranca     ]=VSD_C_CEP
[UF de Cobranca      ]=VSD_C_UF
EndProc  ; (Grava_Enderecos)

;*******************************************************************************
;* Rotina para Gravar Ficha Financeira                                         *
;*******************************************************************************
Proc Grava_Ficha()
 
[Codigo                   ]=[Destinat->Codigo]
[Data da Primeira Compra  ]= VSD_DP_Compra
[Valor da Primeira Compra ]= VSD_VP_Compra
[Data da Ultima Compra    ]= VSD_DU_Compra
[Valor da Ultima Compra   ]= VSD_VU_Compra
[Data da Maior Fatura     ]= VSD_DM_Fatura
[Maior Fatura             ]= VSD_M_Fatura
[Maior Atraso             ]= VSD_M_Atraso
[Data do Maior Atraso     ]= VSD_DM_Atraso
[Valor do Maior Atraso    ]= VSD_VM_Atraso
[Numero de Atrasos        ]= VSD_N_Atrasos
[Limite de Credito        ]= VSD_L_Credito
[Maximo Dias Atraso       ]= VSD_MD_Atraso
[Data_Ultima_Consulta     ]= VSD_SPC_DATConsulta
[Situacao_Consulta        ]= VSD_SPC_SITConsulta
[Protocolo_Obs_Consulta   ]= VSD_SPC_OBSConsulta
[Data_Consulta_Sintegra   ] =VSD_SINTEGRA_DATConsulta
[Sit_Consulta_Sintegra    ] =VSD_SINTEGRA_SITConsulta

EndProc  ; (Grava_Ficha)

;*******************************************************************************
;* Rotina para Gravar Complemento                                              *
;*******************************************************************************
Proc Grava_Complemento()
   [Referencia Comercial1]=VSD_REF_COM1
   [Referencia Comercial2]=VSD_REF_COM2
   [Referencia Comercial3]=VSD_REF_COM3
   [Renda Faturamento    ]=VSD_RENDA_FAT
   [Referencia Bancaria  ]=VSD_REF_BANC
   [Pai Socio            ]=VSD_PAI_SOCIO
   [CGC/CPF Pai Socio    ]=VSD_CGC_PAI
   [Mae Socio            ]=VSD_MAE_SOCIO
   [CGC/CPF Mae Socio    ]=VSD_CGC_MAE
   [Nome Parente         ]=VSD_N_PARENTE
   [Endereco Parente     ]=VSD_END_PARENTE
   [Local Trabalho       ]=VSD_LOCAL_TRAB
   [Endereco Trabalho    ]=VSD_END_TRAB
   [Tempo Trabalho       ]=VSD_TEMPO_TRAB
   [Imovel Proprio/Valor ]=VSD_IMOVEL_P
   [Nome Fiador          ]=VSD_NOME_FIADOR
   [Endereco Fiador      ]=VSD_CGC_FIADOR
   [CGC/CPF Fiador       ]=VSD_END_FIADOR
   [Telefone Fiador      ]=VSD_TEL_FIADOR
   [Referencia Pessoal   ]=VSD_REF_PESSOAL
   
EndProc  ; (Grava_Complemento)

;*******************************************************************************
;* Digitacao da Ficha                                                          *
;*******************************************************************************
Proc Ficha()
Moveto "Destinat"
UnLockRecord
FormKey
Moveto "Fichacli"
Moveto [Codigo]
Locate [Destinat->Codigo]
If Not RetVal
   Then End Down
        [Codigo]=[Destinat->Codigo]
EndIf
AUX1=True
AUX=AUX1
OPCAO="2"

VSD_DP_Compra      =[Data da Primeira Compra  ]
VSD_VP_Compra      =[Valor da Primeira Compra ]
VSD_DU_Compra      =[Data da Ultima Compra    ]
VSD_VU_Compra      =[Valor da Ultima Compra   ]
VSD_DM_Fatura      =[Data da Maior Fatura     ]
VSD_M_Fatura       =[Maior Fatura             ]
VSD_M_Atraso       =[Maior Atraso             ]
VSD_DM_Atraso      =[Data do Maior Atraso     ]
VSD_VM_Atraso      =[Valor do Maior Atraso    ] 
VSD_N_Atrasos      =[Numero de Atrasos        ]

If IsBlank([Limite de Credito]) And NOVO=True
   Then VSD_L_Credito =PARAM_L_Credito
   Else VSD_L_Credito =[Limite de Credito]
EndIf

If IsBlank([Maximo Dias Atraso]) And NOVO=True
   Then VSD_MD_Atraso = PARAM_M_Atraso
   Else VSD_MD_Atraso =[Maximo Dias Atraso]
EndIf

VSD_SPC_DATConsulta=[Data_Ultima_Consulta     ]
VSD_SPC_SITConsulta=[Situacao_Consulta        ]
VSD_SPC_OBSConsulta=[Protocolo_Obs_Consulta   ]

VSD_SINTEGRA_DATConsulta=[Data_Consulta_Sintegra]
VSD_SINTEGRA_SITConsulta=[Sit_Consulta_Sintegra ]

Showdialog "Ficha Financeira" Proc "Geral_Dialog"
  Trigger "OPEN","ARRIVE"
   Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN"
   @ 4,01 height 18 width 77

   Frame Single From 0,0 to 4,39
   @ 0,1 ?? " Compras Data/Valor "
   paintcanvas attribute 26 0, 0, 4, 38
   Label  @ 1,01 "Primeira " for "DP_Compra"
   Accept @ 1,11  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DP_Compra" to VSD_DP_Compra
   Accept @ 1,25  Width 13 "$" picture "#*#.[##]" Tag "VP_Compra" to VSD_VP_Compra
   Label  @ 2,01 "Ultima.. " for "DU_Compra"
   Accept @ 2,11  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DU_Compra" to VSD_DU_Compra
   Accept @ 2,25  Width 13 "$" picture "#*#.[##]" Tag "VU_Compra" to VSD_VU_Compra
   Label  @ 3,01  "Maior... " for "DM_Fatura"
   Accept @ 3,11  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DM_Fatura" to VSD_DM_Fatura
   Accept @ 3,25  Width 13 "$" picture "#*#.[##]" Tag "M_Fatura" to VSD_M_Fatura

   Frame Single From 0,40 to 4,74
   @ 0,41 ?? " Atrasos "
   paintcanvas attribute 26 0, 0, 4, 74
   Label  @ 1,41 "O Maior Atraso foi          Dias" for "M_Atraso"
   Accept @ 1,61  Width 8 "S" picture "#*#" Tag "M_Atraso" to VSD_M_Atraso
   Label  @ 2,41 "em                 " for "DM_Atraso"
   Accept @ 2,45  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DM_Atraso" to VSD_DM_Atraso
   Label  @ 2,58 "com" for "VM_Atraso"
   Accept @ 2,63  Width 11 "$" picture "#*#.[##]" Tag "VM_Atraso" to VSD_VM_Atraso
   Label  @ 3,41 "Frequencia de        " for "N_Atrasos"
   Accept @ 3,56  Width 8 "S" picture "#*#" Tag "N_Atrasos" to VSD_N_Atrasos

   Frame Single From 5,0 to 7,20
   @ 5,1 ?? " Limite de Cr‚dito "
   paintcanvas attribute 26 0, 0, 7, 38
   Accept @ 6,03  Width  15 "$" picture "#*#.[##]" Tag "L_Credito" to VSD_L_Credito

   Frame Single From 5,40 to 7,64
   @ 5,41 ?? " Maximo de Dias Atraso "
   paintcanvas attribute 26 0, 0, 7, 64
   Accept @ 6,42  Width 21 "S" picture "#*#" Tag "MD_Atraso" to VSD_MD_Atraso
   
   Frame Single From 8,0 to 11,59
   @ 8,1 ?? " Consulta SPC "
   paintcanvas attribute 26 0, 0, 11, 59
   Label  @ 09,02 "Ultima Consulta" for "C_SPCDATA"
   Accept @ 10,03  Width  15 "D" picture "[#]#;.##;.##[##]" Tag "C_SPCDATA" to VSD_SPC_DATConsulta
   Label  @ 09,19 "Situa‡„o" for "C_SPCSITUACAO"
   Accept @ 10,20  Width 13 "A15" picture "REGULAR,IRREGULAR" Tag "C_SPCSITUACAO" to VSD_SPC_SITConsulta        
   Label  @ 09,34 "Protocolo" for "C_SPCOBSCONSULTA"  
   Accept @ 10,35  Width  23 "A25" picture "!*!" Tag "C_SPCOBSCONSULTA" to VSD_SPC_OBSConsulta  
   
   Frame Single From 12,0 to 15, 59
   @ 12,1 ?? " Consulta SINTEGRA "
   paintcanvas attribute 26 0, 0, 15, 59
   Label  @ 13,02 "Ultima Consulta" for "C_SINTEGRADATA"
   Accept @ 14,03  Width  15 "D" picture "[#]#;.##;.##[##]" Tag "C_SINTEGRADATA" to VSD_SINTEGRA_DATConsulta
   Label  @ 13,19 "Situa‡„o" for "C_SINTEGRASITUACAO"
   Accept @ 14,20  Width 20 "A18" picture "HABILITADO,NAO HABILITADO" Tag "C_SINTEGRASITUACAO" to VSD_SINTEGRA_SITConsulta        

Enddialog
UnLockRecord
Moveto "Destinat"
FormKey
LockRecord

EndProc   ; (Ficha)

;*******************************************************************************
;* Rotina para Digitacao da Observacao do Cliente                              *
;*******************************************************************************
Proc OBSERVACAO()
Private CampAnt, regrapodeeditar, regrapodever

regrapodeeditar=VerificarRegras("CD0031",sys_chapa_usuario,"","Editar") 
regrapodever   =VerificarRegras("CD0031",sys_chapa_usuario,"","Ver") 

if not regrapodeeditar and
   not regrapodever
   then Mensagem("Vocˆ nÆo tem permissÆo para usar este mecanismo !//Verificar com seu supervisor !")
        return
endif   

CampAnt=Field()
Prompt " Esc=Cancelar  F2=Gravar "

Moveto "DestObs"
Moveto [Codigo]

While True
 Locate [Destinat->Codigo]
 If Not RetVal
    Then End Down
         [Codigo]=[Destinat->Codigo]
 EndIf
 If Not ISLockRecord()
    Then QuitLoop
 EndIf
EndWhile

switch
  case regrapodeeditar : Edita_Memo("Observacoes",09,01,13,76,"Observa‡”es")
  case regrapodever    :   Ver_Memo("Observacoes",09,01,13,76,"Observa‡”es")
endswitch

If IsBlank([Observacoes])
    Then Del
    Else UnLockRecord
EndIf

Moveto "Destinat"
Moveto Field CampAnt

EndProc    ; (Observacao)

;*******************************************************************************
;* Rotina para Digitacao da Observacao do Cliente p/ Vendas                   *
;*******************************************************************************
Proc OBSERVACAO_VENDAS()
Private CampAnt, regrapodeeditar, regrapodever

regrapodeeditar=VerificarRegras("CD0032",sys_chapa_usuario,"","Editar") 
regrapodever   =VerificarRegras("CD0032",sys_chapa_usuario,"","Ver") 

if not regrapodeeditar and
   not regrapodever
   then Mensagem("Vocˆ nÆo tem permissÆo para usar este mecanismo !//Verificar com seu supervisor !")
        return
endif   

CampAnt=Field()
Prompt " Esc=Cancelar  F2=Gravar "

Moveto "DestMsg"
Moveto [Codigo]

While True
 Locate [Destinat->Codigo]
 If Not RetVal
    Then End Down
         [Codigo]=[Destinat->Codigo]
 EndIf
 If Not ISLockRecord()
    Then QuitLoop
 Endif
EndWhile

switch
  case regrapodeeditar : Edita_Memo("Observacoes",09,01,13,76,"Observa‡”es p/ Venda")
  case regrapodever    :   Ver_Memo("Observacoes",09,01,13,76,"Observa‡”es p/ Venda")
endswitch

If IsBlank([Observacoes])
    Then Del
    Else UnLockRecord
EndIf

Moveto "Destinat"
Moveto Field CampAnt

EndProc    ; OBSERVACAO_VENDAS()

;*******************************************************************************
;* Rotina para Digitacao da Observacao do Cliente p/ Expedi‡Æo                 *
;*******************************************************************************
Proc OBSERVACAO_EXPEDICAO()
Private CampAnt, regrapodeeditar, regrapodever

regrapodeeditar=VerificarRegras("CD0033",sys_chapa_usuario,"","Editar") 
regrapodever   =VerificarRegras("CD0033",sys_chapa_usuario,"","Ver") 

if not regrapodeeditar and
   not regrapodever
   then Mensagem("Vocˆ nÆo tem permissÆo para usar este mecanismo !//Verificar com seu supervisor !")
        return
endif   

CampAnt=Field()
Prompt " Esc=Cancelar  F2=Gravar "

Moveto "DestExp"
Moveto [Codigo]

While True
 Locate [Destinat->Codigo]
 If Not RetVal
    Then End Down
         [Codigo]=[Destinat->Codigo]
 EndIf
 If Not ISLockRecord()
    Then QuitLoop
 Endif
EndWhile

switch
  case regrapodeeditar : Edita_Memo("Observacoes",09,01,13,76,"Observa‡”es p/ Expedi‡Æo")
  case regrapodever    :   Ver_Memo("Observacoes",09,01,13,76,"Observa‡”es p/ Expedi‡Æo")
endswitch

If IsBlank([Observacoes])
    Then Del
    Else UnLockRecord
EndIf

Moveto "Destinat"
Moveto Field CampAnt

EndProc    ;OBSERVACAO_EXPEDICAO()

;*******************************************************************************
;* Exclusao de Registros                                                       *
;*******************************************************************************
Proc EXCLUSAO()

If not ChecaTipoDeRegistro()
   Then Return
EndIf

Moveto"Destinat"
ResyncKey
UnLockRecord

KeyPress "F7"

Moveto "FichaCli"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "End_Cob"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "DestInfo"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "DestObs"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "DestMsg"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "DestExp"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "DestAut"
Moveto [Codigo]
Locate CODIGO
While [Codigo]=CODIGO
  Del
EndWhile

Moveto "ListFone"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "Destinat"
Grava_LogEx("Cliente")
Del
PickForm "10"

EndProc  ;(Exclusao)

;*******************************************************************************
;* Rotina para Digitacao Complemento de Clientes                               *
;*******************************************************************************
Proc COMPLEMENTO()
Moveto "Destinat"
ResyncKey
UnLockRecord

FormKey
Moveto "DestInfo"
Moveto [Codigo]
Locate [Destinat->Codigo]
If RetVal
   Then VSD_REF_COM1    =[Referencia Comercial1]
        VSD_REF_COM2    =[Referencia Comercial2]
        VSD_REF_COM3    =[Referencia Comercial3]
        VSD_REF_BANC    =[Referencia Bancaria  ]
        VSD_PAI_SOCIO   =[Pai Socio            ]
        VSD_CGC_PAI     =[CGC/CPF Pai Socio    ]
        VSD_MAE_SOCIO   =[Mae Socio            ]
        VSD_CGC_MAE     =[CGC/CPF Mae Socio    ]
        VSD_RENDA_FAT   =[Renda Faturamento    ]
        VSD_N_PARENTE   =[Nome Parente         ]
        VSD_END_PARENTE =[Endereco Parente     ]
        VSD_LOCAL_TRAB  =[Local Trabalho       ]
        VSD_END_TRAB    =[Endereco Trabalho    ]
        VSD_TEMPO_TRAB  =[Tempo Trabalho       ]
        VSD_NOME_FIADOR =[Nome Fiador          ]
        VSD_CGC_FIADOR  =[CGC/CPF Fiador       ]
        VSD_END_FIADOR  =[Endereco Fiador      ]
        VSD_TEL_FIADOR  =[Telefone Fiador      ]
        VSD_IMOVEL_P    =[Imovel Proprio/Valor ]
        VSD_REF_PESSOAL =[Referencia Pessoal   ]
   Else End Down
        [Codigo        ]=[Destinat->Codigo]
        VSD_REF_COM1    =""
        VSD_REF_COM2    =""
        VSD_REF_COM3    =""
        VSD_REF_BANC    =""
        VSD_PAI_SOCIO   =""
        VSD_CGC_PAI     =""
        VSD_MAE_SOCIO   =""
        VSD_CGC_MAE     =""
        VSD_RENDA_FAT   =0
        VSD_N_PARENTE   =""
        VSD_END_PARENTE =""
        VSD_LOCAL_TRAB  =""
        VSD_END_TRAB    =""
        VSD_TEMPO_TRAB  =""
        VSD_NOME_FIADOR =""
        VSD_CGC_FIADOR  =""
        VSD_END_FIADOR  =""
        VSD_TEL_FIADOR  =""
        VSD_IMOVEL_P    =""
        VSD_REF_PESSOAL =""
Endif

Moveto [Referencia Comercial1]
Showdialog "Dados complementares do cliente " Proc "Geral_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN"
    @ 01,00 height 23 width 80

   @ 00,01 ?? "Referˆncia Comercial"
   ;Label  @ 01,01  "1" for "C_Referencia Comercial1"
   Accept @ 01,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Comercial1" to VSD_REF_COM1
   ;Label  @ 02,01  "2" for "C_Referencia Comercial2"
   Accept @ 02,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Comercial2" to VSD_REF_COM2
   ;Label  @ 03,01  "3" for "C_Referencia Comercial3"
   Accept @ 03,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Comercial3" to VSD_REF_COM3

   Label  @ 00,39  "Renda/Faturamento" for "C_Renda Faturamento"
   Accept @ 01,40   Width 13 "$" picture "#*#.[##]" Tag "C_Renda Faturamento" to VSD_RENDA_FAT

   @ 04,01 ?? "Referˆncia Banc ria"
   ;Label  @ 05,01  "1" for "C_Referencia Bancaria"
   Accept @ 05,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Bancaria" to VSD_REF_BANC

   @ 06,01 ?? "Referˆncia Pessoal"
   Accept @ 07,01   Width 76 "A80" picture "!*!" Tag "C_Referencia Pessoal" to VSD_REF_PESSOAL

   @ 08,01 ?? "Pais/S¢cios/Conjuge"
   ;Label  @ 09,01  "1" for "C_Pai Socio"
   Accept @ 09,01   Width 38 "A40" picture "!*!" Tag "C_Pai Socio" to VSD_Pai_Socio
   ;Label  @ 10,01  "2" for "C_Mae Socio"
   Accept @ 10,01   Width 38 "A40" picture "!*!" Tag "C_Mae Socio" to VSD_Mae_Socio
   Accept @ 09,40   Width 20 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "C_CGC_PAI" to VSD_CGC_PAI
   Accept @ 10,40   Width 20 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "C_CGC_MAE" to VSD_CGC_MAE

   @ 11,01 ?? "Parente.: Nome/Endere‡o"
   ;Label  @ 10,01  "Nome" for "C_Nome Parente"                                                     
   Accept @ 12,01   Width 38 "A40" picture "!*!" Tag "C_Nome Parente" to VSD_N_PARENTE
   ;Label  @ 11,01  "Endere‡o" for "C_Endereco Parente"
   Accept @ 12,40   Width 37 "A40" picture "!*!" Tag "C_Endereco Parente" to VSD_END_PARENTE

   @ 13,01 ?? "Trabalho: Local/Endere‡o/Tempo"
   ;Label  @ 13,01  "Local" for "C_Local Trabalho"
   Accept @ 14,01   Width 38 "A40" picture "!*!" Tag "C_Local Trabalho" to VSD_LOCAL_TRAB
   ;Label  @ 14,01  "Endere‡o" for "C_Endereco Trabalho"
   Accept @ 14,40   Width 37 "A40" picture "!*!" Tag "C_Endereco Trabalho" to VSD_END_TRAB
   ;Label  @ 15,01  "Tempo" for "C_Tempo Trabalho"
   Accept @ 15,01   Width 38 "A40" picture "!*!" Tag "C_Tempo Trabalho" to VSD_TEMPO_TRAB

   @ 16,01 ?? "Fiador..: Nome/CGC/Endere‡o/Telefone"
   ;Label  @ 17,01  "Nome" for "C_Nome_Fiador"
   Accept @ 17,01   Width 38 "A40" picture "!*!" Tag "C_Nome_Fiador" to VSD_NOME_FIADOR
   Accept @ 17,40   Width 37 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "C_CGC_Fiador" to VSD_CGC_FIADOR
   ;Label  @ 18,01  "Endere‡o" for "C_End_Fiador"
   Accept @ 18,01   Width 38 "A40" picture "!*!" Tag "C_End_Fiador" to VSD_End_FIADOR
   Accept @ 18,40   Width 37 "A18" picture "!*!" Tag "C_Tel_Fiador" to VSD_Tel_FIADOR
            
   Label  @ 19,00  "Im¢vel..: Pr¢prio/Valor" for "C_Imovel Proprio/Valor"
   Accept @ 20,01   Width 38 "A40" picture "!*!" Tag "C_Imovel Proprio/Valor" to VSD_IMOVEL_P

Enddialog

Moveto "Destinat"
PickForm "10"
LockRecord
EndProc  ; (Complemento)

;*******************************************************************************
;* Rotina para Localizar Registro (Autorizacao Compra)                         *
;*******************************************************************************
Proc Chave_A()

While True
  SetaCorRegistro("Editar") 

  End
  SEQA=[Sequencia]
  Down

  Moveto [Sequencia]

  Opcao_Ver = False

;;Prompt " Esc=Voltar  F3=Ver Ficha  F10=Reajustar Data  F7=Paginar"
  Prompt " Esc=Voltar  F3=Ver Ficha  F7=Paginar"

  Wait Field
  Until "ESC","ENTER","F7","HOME","UP","PGUP","F3"

  Switch
  Case RetVal="F3":
       Del
       Moveto [Sequencia]
       If RecordStatus("New")
          Then MENSAGEM("Sem Item p/ ver !")
               QuitLoop
       EndIf
       Opcao_Ver=True
       CHAVEA=0
       Home
       SEQA=[Sequencia]
       Inicia_Registro_A()
       Digita_A()

  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
         PAGINA("DestAut","MR")
         If EDITAR="S"
            Then SEQA=[Sequencia]
                 CHAVEA=0
                 Controla_EdicaoA()
            Else If EXCLUIR="S"
                  Then If Checa_Supervisor()
                          Then If QuerExcluir("")
                                 Then DEL
                                 Else Undo
                               EndIf
                       EndIf
                  Else QuitLoop
                 EndIf
         EndIf
         SetaPosForm()
       EndWhile
;;Case Retval="F10":
;;     Del
;;     Reajustar()
;;     Loop
  Case Retval="ESC":
       CHAVEA=9
       Del
       QuitLoop
  Case RetVal="ENTER":
       If IsBlank([])
          Then If IsBlank(SEQA)
                  Then []=1
                  Else []=SEQA+1
               EndIf
       EndIf
       SEQA=[]
       Del
       Locate CODIGO, SEQA
       If Retval
          Then CHAVEA=0
          Else CHAVEA=1
               End Down
               [Sequencia]=SEQA
       EndIf
       If IsLockRecord()
          Then Loop
       EndIf
       Quitloop
  EndSwitch
EndWhile
EndProc  ; (Chave_A)

;*******************************************************************************
;* Rotina de Digitacao Dados da Autorizacao de Compra                          *
;*******************************************************************************
Proc Aut_Dialog(Disparo,Campo,Evento,Elemento)
Private JANELA, WinArray5

TECLA=" Esc=Retornar  "
MSG_CAMPO=""
Temp=True

If INICIO_DIALOG
   Then Campo="C_Nome_Aut"
        INICIO_DIALOG=False
EndIf
If Opcao_Ver=True Then Campo="C_Seq_Aut" EndIf

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Opcao_Ver=True:
           Switch
             Case Evento["KeyCode"] =  27:
                  CancelDialog
             OtherWise:
               Mover_Reg=True
               Switch
                 Case Evento["KeyCode"] = -71:
                      If AtFirst()
                         Then Mover_Reg=False Beep
                         Else Home
                      EndIf
                 Case Evento["KeyCode"] = -79:
                      If AtLast()
                         Then Mover_Reg=False Beep
                         Else End
                      EndIf
                 Case Evento["KeyCode"] = -73:
                      If AtFirst()
                         Then Mover_Reg=False Beep
                         Else Up
                      EndIf
                 Case Evento["KeyCode"] = -81:
                      If AtLast()
                         Then Mover_Reg=False Beep
                         Else Down
                      EndIf
               EndSwitch
               If Mover_Reg=True
                  Then SEQA=[Sequencia]
                       Inicia_Registro_A()
               EndIf
               Temp=False
           EndSwitch
       Case Evento["KeyCode"] = 9 Or
            Evento["KeyCode"] = -15:
            Temp=False
       Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
            If CHAVEA=0
               Then If QuerExcluir("")
                       Then CHAVEA=8
                            CancelDialog
                    EndIf
            EndIf
       Case Evento["KeyCode"] = -59:
           Temp=False
      Case Evento["KeyCode"] = 27:
           Switch
             Case Campo="C_Nome_Aut":
                  If QuerDesfazer("")
                     Then If CHAVEA=1
                             Then Del
                             Else CopyFromArray RegItem
                          EndIf
                          CHAVEA=9
                          CancelDialog
                  EndIf
             Case Campo="C_CPF_Aut":
                  Campo="C_Nome_Aut"
             Case Campo="C_End_Aut":
                  Campo="C_CPF_Aut"
             Case Campo="C_Tel_Aut":
                  Campo="C_End_Aut"
             Case Campo="C_Data_Aut":
                  Campo="C_End_Aut"
           EndSwitch
           Temp=False
      Case Evento["KeyCode"] = 13:
           Switch
             Case Campo="C_Nome_Aut":
                  VSD_Nome_Aut=ControlValue("C_Nome_Aut")
                  If Not IsBlank(VSD_Nome_Aut)
                     Then Campo="C_CPF_Aut"
                  EndIf
             Case Campo="C_CPF_Aut":
                  VSD_CPF_Aut=ControlValue("C_CPF_Aut")
                  If Not IsBlank(VSD_CPF_Aut)
                     Then If Checa_CGC_CPF_Formatado(VSD_CPF_Aut)
                             Then Campo="C_End_Aut"
                          EndIf
                     Else Campo="C_End_Aut"
                  EndIf
             Case Campo="C_End_Aut":
                  VSD_End_Aut=ControlValue("C_End_Aut")
                  Campo="C_Tel_Aut"
             Case Campo="C_Tel_Aut":
                  VSD_Tel_Aut=ControlValue("C_Tel_Aut")
                  Campo="C_Data_Aut"
             Case Campo="C_Data_Aut":
                  VSD_Data_Aut=ControlValue("C_Data_Aut")
                  If Not IsBlank(VSD_Data_Aut)
                     Then If CHAVEA=1 And VSD_Data_Aut<Today()
                             Then Mensagem("Data Autoriza‡„o menor que Hoje !")
                             Else AcceptDialog
                          EndIf
                     Else AcceptDialog
                  EndIf
           EndSwitch
           Temp=False
   EndSwitch
EndIf
SelectControl Campo
Switch
  Case Campo="C_Seq_Aut":
       MSGCAMPO="Sequencia"
  Case Campo="C_Data_Aut":
       MSGCAMPO="Informe a Data ate quando esta autorizado a Comprar !"
  OtherWise:
       MSGCAMPO=""
EndSwitch

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

If Opcao_Ver=True
   Then TECLA=" Esc=Retornar  Home/End/PgDn/PgUp=Paginar  "
EndIf

MontaRodapeSD(MSGCAMPO, TECLA)

RefreshDialog
Return TEMP
EndProc  ; (Aut_Dialog)

;*******************************************************************************
;* Rotina para Iniciar Registro Autorizacao de Compra                          *
;*******************************************************************************
Proc Inicia_Registro_A()
INICIO_DIALOG=True
Moveto [Sequencia]
Locate [Destinat->Codigo],SEQA
CopyToArray RegItem
Registro_Item_A("Ler")

EndProc ; (Inicia_Registro_A)

;*******************************************************************************
;* Rotina para Digitacao         (Autorizacao Compra)                          *
;*******************************************************************************
Proc Digita_A()

Showdialog "Autorizado A Comprar [     ]" Proc "Aut_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP"
    @ 16,01 height 06 width 77

   Accept @ -01,45 Width 5 "A2" Tag "C_Seq_Aut" To VSD_Seq_Aut

   Label  @ 00,01  "Nome" for "C_Nome_Aut"
   Accept @ 01,01   Width 43 "A40" picture "!*!" Tag "C_Nome_Aut" to VSD_Nome_Aut

   Label  @ 00,45  "Cpf" for "C_CPF_Aut"
   Accept @ 01,45   Width 20 "A18" picture "###.###.###-##" Tag "C_CPF_Aut" to VSD_CPF_Aut

   Label  @ 02,01  "Endere‡o" for "C_End_Aut"
   Accept @ 03,01   Width 43 "A40" picture "!*!" Tag "C_End_Aut" to VSD_End_Aut

   Label  @ 02,45  "Telefone" for "C_Tel_Aut"
   Accept @ 03,45   Width 15 "A18" picture "!*!" Tag "C_Tel_Aut" to VSD_Tel_Aut

   Label  @ 02,61  "Data" for "C_Data_Aut"
   Accept @ 03,61   Width 13 "D" picture "#[#].##.####" Tag "C_Data_Aut" to VSD_Data_Aut

EndDialog
If RetVal
   Then Finaliza_Registro_A(True)
   Else Finaliza_Registro_A(False)
EndIf
EndProc ; (Digita_A)

;*******************************************************************************
;* Rotina para Finalizar o Registro                                            *
;*******************************************************************************
Proc Finaliza_Registro_A(ok)
Private ok
If Ok
   Then Registro_Item_A("Gravar")
   Else If CHAVEA=8
           Then CopyFromArray RegItem
                Del
        EndIf
EndIf
EndProc   ; (Finaliza_Registro_A)

;*******************************************************************************
;* Rotina para Gravacao/Leitura da Autorizacao de Compra                       *
;*******************************************************************************
Proc Registro_Item_A(Funcao_Registro)
Private Funcao_Registro
Switch
  Case Funcao_Registro="Gravar":
       [Sequencia          ] = VSD_Seq_Aut
       [Nome               ] = VSD_Nome_Aut
       [Endereco           ] = VSD_End_Aut
       [CGC/CPF            ] = VSD_CPF_Aut
       [Telefone           ] = VSD_Tel_Aut
       [Data da Autorizacao] = VSD_Data_Aut
  Case Funcao_Registro="Ler":
       VSD_Seq_Aut  = [Sequencia          ]
       VSD_Nome_Aut = [Nome               ]
       VSD_End_Aut  = [Endereco           ]
       VSD_CPF_Aut  = [CGC/CPF            ]
       VSD_Tel_Aut  = [Telefone           ]
       VSD_Data_Aut = [Data da Autorizacao]
EndSwitch
EndProc  ; (Registro_Item_A)

;*******************************************************************************
;* Rotina para Validar Dados                                                   *
;*******************************************************************************
Proc Valida_Dados()       

If VSD_I_Nomestado="TODOS" And VSD_I_Cidade<>"TODAS"
   Then Mensagem("Informe o estado para proceguir !")
        Return False  
EndIf

Return True

EndProc

;*******************************************************************************
;* Rotina de Troca de Representante                                            *
;*******************************************************************************
Proc Muda(Disparo,Campo,Evento,Elemento)
TECLA=""
MSG_CAMPO=""
Temp=True

If INICIO_DIALOG
   Then Campo="I_Cidade"
        INICIO_DIALOG=False
EndIf

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf

If Not IsAssigned(UF_CID) Then UF_CID="" EndIf

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"] = -59 :
          If Campo="I_Estado" Or
             Campo="I_Cidade" Or
             Campo="I_Rep1" Or
             Campo="I_Rep2"
             Then
                  Dynarray WinArray5[]
                  Window Handle Dialog to JANELA
                  Window GetAttributes JANELA To WinArray5
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA From WinArray5

                  If Campo="I_Estado"                 Then Moveto [UF                     ] EndIf
                  If Campo="I_Cidade"                 Then Moveto [Cidade                 ] EndIf
                  If Campo="I_Rep1" Or Campo="I_Rep2" Then Moveto [Codigo do Representante] EndIf
                  if ConsultaF1()
                     then 
                          If Campo="I_Cidade"
                             Then VSD_I_Cidade       = Reg_ConsultaF1["Cidade"]   
                                  VSD_I_Estado       = Reg_ConsultaF1["UF"   ]
                                  VSD_I_Nomestado    = ""
                          EndIf
                          If Campo="I_Estado"
                             Then VSD_I_Estado       = Reg_ConsultaF1["UF"       ]
                                  VSD_I_Nomestado    = Reg_ConsultaF1["Descricao"]
                          EndIf
                          If Campo="I_Rep1"
                             Then VSD_I_Rep1         = Reg_ConsultaF1["Codigo do Representante"]
                                  VSD_I_Nome1        = Reg_ConsultaF1["Nome Fantasia Represent"]
                          EndIf
                          If Campo="I_Rep2"
                             Then VSD_I_Rep2         = Reg_ConsultaF1["Codigo do Representante"]
                                  VSD_I_Nome2        = Reg_ConsultaF1["Nome Fantasia Represent"]
                          EndIf
                  endif
                  KeyPress "ESC"

                  Window Select JANELA
                  WinArray5["FLOATING"]=True
                  Window SetAttributes JANELA From WinArray5

                  echo Normal
                  echo off
         EndIf
         Temp=False
     Case Evento["KeyCode"] = 27:
          Switch
            Case Campo="I_Cidade"  : Campo="NO"
            Case Campo="I_Estado"  : Campo="I_Cidade"
            Case Campo="I_Rep1"    : Campo="I_Cidade" 
            Case Campo="I_Rep2"    : Campo="I_Rep1"
            Case Campo="NO" Or Campo="YES": Campo="I_Estado"
          EndSwitch
          Temp=False
     Case Evento["KeyCode"] = 13:
          If Checa_TAG()
             Then Switch

                    Case Campo="I_Cidade":
                         VSD_I_Cidade=ControlValue("I_Cidade")
                         If IsBlank(VSD_I_Cidade)
                            Then VSD_I_Cidade="TODAS"
                         EndIf
                         Campo="I_Estado"

                    Case Campo="I_Estado":
                         VSD_I_Estado=ControlValue("I_Estado")
                         If IsBlank(VSD_I_Estado)
                            Then VSD_I_Nomestado="TODOS"
                                 VSD_I_Cidade   ="TODAS"
                                 Campo="I_Rep1"
                            else
                                  cidufok=true
                                  GetRecord "\\Sistemas\\Vendas\\Estados" VSD_I_Estado To REG_UF
                                  If Not RetVal
                                     Then fastmsg("UF invalida !")
                                          cidufok=false
                                     Else VSD_I_Nomestado    = REG_UF["Descricao"] 
                                          If Not IsBlank(VSD_I_Cidade) and VSD_I_Cidade   <>"TODAS"
                                             Then GetRecord "\\Sistemas\\Cadastro\\Cidades" VSD_I_Cidade,VSD_I_Estado To REG_CIDADE 
                                                  If Not RetVal
                                                     Then fastmsg("Cidade/UF invalida!")
                                                          cidufok=false
                                                  EndIf
                                          EndIf
                                  EndIf
                                  
                                  if cidufok
                                     then Campo="I_Rep1"      
                                  EndIf
                         EndIf
                         
                    Case Campo="I_Rep1":
                         VSD_I_Rep1=ControlValue("I_Rep1")
                         If Not IsBlank(VSD_I_Rep1)
                            Then VSD_I_Rep1=AlinhM(VSD_I_Rep1,4)
                                 Moveto [Codigo do Representante]
                                 Ativa_Lookup()
                                 Moveto [Codigo do Representante]
                                 Locate VSD_I_Rep1
                                 If Not RetVal
                                    Then Mensagem("Representante n„o Cadastrado !")
                                         VSD_I_Rep1  = ""
                                         VSD_I_Nome1 = ""
                                    Else VSD_I_Nome1 = [Nome Fantasia Represent]
                                         Campo="I_Rep2"
                                 EndIf
                                 KeyPress "ESC"
                            Else If VSD_I_Estado<>""
                                    Then VSD_I_Rep1  = ""
                                         VSD_I_Nome1 = "TODOS"
                                         Campo="I_Rep2"
                                 EndIf                
                         EndIf
                         
                         Echo Off
                    Case Campo="I_Rep2":  
                         VSD_I_Rep2=ControlValue("I_Rep2")
                         If Not IsBlank(VSD_I_Rep2)
                            Then VSD_I_Rep2=AlinhM(VSD_I_Rep2,4)
                                 Moveto [Codigo do Representante]
                                 Ativa_Lookup()
                                 Moveto [Codigo do Representante]
                                 Locate VSD_I_Rep2
                                 If Not RetVal
                                    Then Mensagem("Representante n„o Cadastrado !")
                                         VSD_I_Rep2  = ""
                                         VSD_I_Nome2 = ""
                                    Else VSD_I_Nome2 = [Nome Fantasia Represent]
                                         Campo="YES"
                                 EndIf
                                 KeyPress "ESC"
                         EndIf
                         Echo Off
                  EndSwitch
          EndIf
          Temp=False
   EndSwitch
EndIf

SelectControl Campo
If Campo="I_Estado" Or
   Campo="I_Cidade" Or
   Campo="I_Rep1" Or
   Campo="I_Rep2"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf

Switch
  Case Campo="I_Estado":
       MSG_CAMPO="Em Branco=Todos"
  Case Campo="I_Cidade":
       MSG_CAMPO="Em Branco=Todas"
  Case Campo="I_Rep1":
       MSG_CAMPO="Informe o C¢digo do Representante Atual a ser substitu¡do"
  Case Campo="I_Rep2":
       MSG_CAMPO="Informe o Novo C¢digo do Representante"
  OtherWise:
       MSG_CAMPO=""
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
RefreshDialog
Return TEMP
EndProc  ; (Muda)

;*******************************************************************************
;* Tela de Troca de Representante                                              *
;*******************************************************************************
Proc TrocaRepres()
Echo Normal
Echo Off

INICIO_DIALOG=True
Campo_Old=Field()
VSD_I_Estado    = ""
VSD_I_Nomestado = ""
VSD_I_Cidade    = ""
VSD_I_Rep1      = ""
VSD_I_Nome1     = ""
VSD_I_Rep2      = ""
VSD_I_Nome2     = ""

While True

  Showdialog "Substitui‡„o de Representante/Vendedor" Proc "Muda"
     Trigger "OPEN","ARRIVE"
     Key "F1","ENTER","ESC","TAB","ReverseTab"
     @ 06,15 Height 13 Width 68

     Label  @ 00,00 "Cidade" for "I_CIDADE"
     Accept @ 01,01  Width 31 "A20" picture "#*#" Tag "I_Cidade" to VSD_I_Cidade

     Label  @ 02,00 "Estado"  For "I_ESTADO"
     Accept @ 03,03 Width 05 "A2"  Picture "!*!" Tag "I_Estado" To VSD_I_Estado
     Accept @ 03,09 Width 23 "A20" Picture "!*!" Tag "I_Nomestado"  To VSD_I_Nomestado

     Label  @ 04,00 "Representante a substituir" for "I_Rep1"
     Accept @ 05,01  Width 7 "A4" picture "#*#" Tag "I_Rep1" to VSD_I_Rep1
     Accept @ 05,09 Width 23 "A30" picture "!*!" Tag "I_Nome1" to VSD_I_Nome1

     Label  @ 06,00 "Novo Representante" for "I_Rep2"
     Accept @ 07,01  Width 7 "A4" picture "#*#" Tag "I_Rep2" to VSD_I_Rep2
     Accept @ 07,09 Width 23 "A30" picture "!*!" Tag "I_Nome2" to VSD_I_Nome2

     Pushbutton @ 09,20 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
     Pushbutton @ 09,34 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  Enddialog

  If RetVal
     Then If Not Valida_Dados()
             Then Loop
          EndIf      
          Substitui()
          QuitLoop
     Else Del
          QuitLoop
  EndIf

EndWhile

Moveto Field Campo_Old
Release Vars VSD_I_Estado,VSD_I_Nomestado, VSD_I_Cidade,VSD_I_Rep1,VSD_I_Nome1,VSD_I_Rep2,VSD_I_Nome2,Inicio_Dialog
EndProc  ; TrocaRepres()

;*******************************************************************************
;* Rotina Substitui                                                            *
;*******************************************************************************
Proc Substitui()
Private NR
Echo Normal
Echo Off

Del
NR=NRecords("Destinat")

ConfGeral_N("Cidade: "+VSD_I_Cidade+"//"+
            "    UF: "+VSD_I_Nomestado+"//"+
            "Representante Atual: "+ VSD_I_Rep1+"/"+VSD_I_Nome1+"//"+
            "Representante Novo : "+ VSD_I_Rep2+"/"+VSD_I_Nome2+"//"+
            "Confirma altera‡Æo dos dados acima?")

If OK="N" 
  Then Return
EndIf

Scan
   Barra(NR, RecNo())
   Aguarde("Aguarde, Alterando "+BARRA_STRING)
   If [Tipo]="C"
      Then Switch
              Case VSD_I_ESTADO="":
                   If [Codigo do Representante]=VSD_I_Rep1
                      Then [Codigo do Representante] = ""
                           [Codigo do Representante] = VSD_I_Rep2
                           [Nome Fantasia Represent] = VSD_I_Nome2
       
                           UnLockRecord
                   EndIf
              Case VSD_I_ESTADO<>"" And VSD_I_CIDADE="TODAS" And VSD_I_Rep1<>"":
                    If [Codigo do Representante]=VSD_I_Rep1 And [UF]=VSD_I_Estado
                      Then [Codigo do Representante] = ""
                           [Codigo do Representante] = VSD_I_Rep2
                           [Nome Fantasia Represent] = VSD_I_Nome2
                           UnLockRecord
                    EndIf       
              Case VSD_I_ESTADO<>"" And VSD_I_Cidade="TODAS" And VSD_I_Rep1="":
                    If [UF]=VSD_I_Estado
                      Then [Codigo do Representante] = ""
                           [Codigo do Representante] = VSD_I_Rep2
                           [Nome Fantasia Represent] = VSD_I_Nome2
                           UnLockRecord
                    EndIf
              Case VSD_I_ESTADO<>"" And VSD_I_Cidade<>"TODAS" And VSD_I_Rep1="":
                    If [Cidade]=VSD_I_Cidade And [UF]=VSD_I_Estado
                      Then [Codigo do Representante] = ""
                           [Codigo do Representante] = VSD_I_Rep2
                           [Nome Fantasia Represent] = VSD_I_Nome2
                           UnLockRecord
                    EndIf       
              Otherwise: 
                    If [Codigo do Representante]=VSD_I_Rep1 And [Cidade]=VSD_I_Cidade And [UF]=VSD_I_Estado
                      Then [Codigo do Representante] = ""
                           [Codigo do Representante] = VSD_I_Rep2
                           [Nome Fantasia Represent] = VSD_I_Nome2
                           UnLockRecord
                    EndIf
           EndSwitch
   EndIf
EndScan
LimpAguarde()
Mensagem("Opera‡„o Finalizada !")
EndProc ; (Substitui)

;*******************************************************************************
;*Rotina                                                                       *
;*******************************************************************************
Proc UFC_Dialog(Disparo,Campo,Evento,Elemento)
Temp     =True
MSG_CAMPO=""
TECLA    =""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="UF_Consulta"       : Campo="NO"
            Case Campo="YES" Or Campo="NO" : Campo="UF_Consulta"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          Switch
            Case Campo="UF_Consulta" : 
              VSD_UF_Consulta = ControlValue("UF_Consulta")
              Switch
                Case IsBlank(VSD_UF_Consulta) :
                     MENSAGEM("UF Invalida !")
                     Campo = "UF_Consulta"
                Case VSD_UF_Consulta = "AL" Or
                     VSD_UF_Consulta = "AM" Or
                     VSD_UF_Consulta = "AP" Or
                     VSD_UF_Consulta = "CE" Or
                     VSD_UF_Consulta = "DF" Or
                     VSD_UF_Consulta = "MA" Or
                     VSD_UF_Consulta = "PA" Or
                     VSD_UF_Consulta = "PI" Or
                     VSD_UF_Consulta = "RJ" Or
                     VSD_UF_Consulta = "RO" Or
                     VSD_UF_Consulta = "RR" Or
                     VSD_UF_Consulta = "SE" Or
                     VSD_UF_Consulta = "TO" :
                     MENSAGEM("Consulta de Cadastro nÆo disponibilizada para "+VSD_UF_Consulta)
                     Campo = "UF_Consulta"
                OtherWise : Campo="YES"
              EndSwitch
            Case Campo="NO"  : CancelDialog
            Case Campo="YES" : AcceptDialog
          EndSwitch
          RefreshDialog
   EndSwitch
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc


;*******************************************************************************
;* Digitacao de Enderecos                                                      *
;*******************************************************************************
Proc UF_Consulta()
private Temp_ok
VSDG_EMPRESA_PADRAO = "X"
VSDG_UF_EMPRESA_PADRAO = ""

Temp_ok = True
UnLockRecord
FormKey
Moveto "\\Sistemas\\Cadastro\\Empresas"
Moveto [Padrao do Sistema]
Locate VSDG_EMPRESA_PADRAO
If RetVal
   Then VSDG_UF_EMPRESA_PADRAO = [UF Empresa]
   Else VSDG_UF_EMPRESA_PADRAO = ""
EndIf

VSD_UF_Consulta=[Destinat->UF]

While True
  Showdialog "UF para Consultar Sintegra" Proc "UFC_Dialog"
    Trigger "OPEN","ARRIVE"
    Key "F1","ENTER","ESC","TAB",
        -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
    @ 9,20 height 08 width 36
    
    Label  @ 1,01 "UF" for "UF_Consulta"
    Accept @ 2,02  Width 07 "A2" picture "!*!" Tag "UF_Consulta" to VSD_UF_Consulta
    
    Pushbutton @ 04,05 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 04,18 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
    
  EndDialog

  If not RetVal 
    Then Temp_ok = False
         QuitLoop 
  EndIf

  If Not Checa_Estado(VSD_UF_Consulta)
     Then Loop
  EndIf      
  QuitLoop

EndWhile

UnLockRecord
Moveto "Destinat"
FormKey
LockRecord

Return Temp_ok
EndProc  ; (UF_Consulta)

;*******************************************************************************
;* Rotina p/ Carregar Parƒmetros do Cliente                                    *
;*******************************************************************************
Proc Carrega_Parametros_Cliente()

If IsFile(PrivDir()+"DESTCLI1.ini")
   Then LeiaINI(PrivDir()+"DESTCLI1.ini","VSDGORDEM.S.1")
        Switch
          Case VSDGORDEM="CODIGO" : ORDENARPOR="CODIGO"
          Case VSDGORDEM="NOME"   : ORDENARPOR="NOME"
        EndSwitch   
   Else ORDENARPOR="CODIGO"      
EndIf

EndProc ;Carrega_Parametros_Cliente()

;*******************************************************************************
;* Rotina p/ Consultar CNPJ no Sintegra                                        *
;*******************************************************************************
Proc Verifica_Consulta_Ativa()
Private ATIVA

CONSULTA_ATIVA = False
If not IsFile(PrivDir()+"Sintegra.ini") 
  Then FileWrite  PrivDir()+"Sintegra.ini"  From  "[Certificado]"+"\n"
       FileWrite  Append PrivDir()+"Sintegra.ini"  From  "Ativa=\"N\""+"\n"
       FileWrite  Append PrivDir()+"Sintegra.ini"  From  "NumSerie="+"\n"
EndIf
conteudodoarquivo=""
LerConteudodoArquivo(PrivDir()+"Sintegra.ini")
                     
Pos=SearchFrom("ATIVA=",conteudodoarquivo,1)
ATIVA = SubStr(conteudodoarquivo,pos+7,1)
 
If ATIVA = "S"
  Then CONSULTA_ATIVA = True
EndIf

Return CONSULTA_ATIVA
EndProc ;Verifica_Consulta_Ativa()

;*******************************************************************************
;* Rotina Substitui                                                            *
;*******************************************************************************
Proc Carrega_Parametros()

View NoWindow "P_Dest"
If IsEmpty("P_Dest")
   Then CoEditKey
        [Utiliza_CGC_Cliente]="N"
        Do_It!
EndIf

PARAM_CGC_CLIENTE   =[Utiliza_CGC_Cliente      ]
PARAM_CGC_FORNECEDOR=[Utiliza_CGC_Fornecedor   ]
PARAM_REUTILIZA     =[Reutiliza_Cod            ]
PARAM_INICIAL       =[Cliente_Inicial          ]
PARAM_FINAL         =[Cliente_Final            ]
PARAM_IMPRESSAO     =[Script_Impressao         ]
PARAM_AUT           =[Utiliza_Autorizacao      ]
PARAM_L_Credito     =[Limite_Credito_Padrao    ]
PARAM_M_Atraso      =[NDias_Atraso_Padrao      ]
PARAM_CONS_SINTEGRA =[Utiliza_Consulta_Sintegra]
ClearImage

EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para copiar em array registros do cadastro de itens                   *
;*******************************************************************************
Proc Copia_Registro_OldNew(PARAM,CODIGO)
Private PARAM,ANT_TAB,ANT_FIELD

ANT_TAB   = Table()          
ANT_FIELD = Field()

Switch
  Case PARAM="Old" : GetRecord "End_Cob"  CODIGO To REG_ENDCOB_OLD    If Not RetVal Then Release Vars REG_ENDCOB_OLD   EndIf
                     GetRecord "Fichacli" CODIGO To REG_FICHACLI_OLD  If Not RetVal Then Release Vars REG_FICHACLI_OLD EndIf
                     GetRecord "DestInfo" CODIGO To REG_DESTINFO_OLD  If Not RetVal Then Release Vars REG_DESTINFO_OLD EndIf
                     GetRecord "DestObs"  CODIGO To REG_DESTOBS_OLD   If Not RetVal Then Release Vars REG_DESTOBS_OLD  EndIf
                     GetRecord "DestMsg"  CODIGO To REG_DESTMSG_OLD   If Not RetVal Then Release Vars REG_DESTMSG_OLD  EndIf
                     GetRecord "DestEXP"  CODIGO To REG_DESTEXP_OLD   If Not RetVal Then Release Vars REG_DESTEXP_OLD  EndIf
                     GetRecord "DestAut"  CODIGO To REG_DESTAUT_OLD   If Not RetVal Then Release Vars REG_DESTAUT_OLD  EndIf                        
                     GetRecord "Destinat" CODIGO To REG_DESTINAT_OLD 
                      
  Case PARAM="New" : GetRecord "End_Cob"  CODIGO To REG_ENDCOB_NEW    If Not RetVal Then Release Vars REG_ENDCOB_NEW   EndIf
                     GetRecord "Fichacli" CODIGO To REG_FICHACLI_NEW  If Not RetVal Then Release Vars REG_FICHACLI_NEW EndIf
                     GetRecord "DestInfo" CODIGO To REG_DESTINFO_NEW  If Not RetVal Then Release Vars REG_DESTINFO_NEW EndIf
                     GetRecord "DestObs"  CODIGO To REG_DESTOBS_NEW   If Not RetVal Then Release Vars REG_DESTOBS_NEW  EndIf
                     GetRecord "DestMsg"  CODIGO To REG_DESTMSG_NEW   If Not RetVal Then Release Vars REG_DESTMSG_NEW  EndIf
                     GetRecord "DestEXP"  CODIGO To REG_DESTEXP_NEW   If Not RetVal Then Release Vars REG_DESTEXP_NEW  EndIf
                     GetRecord "DestAut"  CODIGO To REG_DESTAUT_NEW   If Not RetVal Then Release Vars REG_DESTAUT_NEW  EndIf
                     GetRecord "Destinat" CODIGO To REG_DESTINAT_NEW
EndSwitch            
                     
Moveto ANT_TAB       
Moveto Field ANT_FIELD

Release Vars PARAM,ANT_TAB,ANT_FIELD  
                         
EndProc ;Copia_Registro_OldNew()

;*******************************************************************************
;* Rotina para copiar em array registros do cadastro de itens                  *
;*******************************************************************************
Proc Verifica_Registro_OldNew()
Private PESSOA_ALTERADO

PESSOA_ALTERADO=False

While Not PESSOA_ALTERADO
  
  If IsAssigned(REG_ENDCOB_OLD) And IsAssigned(REG_ENDCOB_NEW)                     
     Then If RegistroFoiAlterado(REG_ENDCOB_OLD,REG_ENDCOB_NEW)
             Then PESSOA_ALTERADO=True
                  QuitLoop 
          EndIf
    Else If Not IsAssigned(REG_ENDCOB_OLD) And IsAssigned(REG_ENDCOB_NEW) Then PESSOA_ALTERADO=True EndIf        
  EndIf
  
  If IsAssigned(REG_FICHACLI_OLD) And IsAssigned(REG_FICHACLI_NEW)
     Then If RegistroFoiAlterado(REG_FICHACLI_OLD,REG_FICHACLI_NEW)
             Then PESSOA_ALTERADO=True
                  QuitLoop
          EndIf
     Else If Not IsAssigned(REG_FICHACLI_OLD) And IsAssigned(REG_FICHACLI_NEW) Then PESSOA_ALTERADO=True EndIf               
  EndIf
  
  If IsAssigned(REG_DESTINFO_OLD) And IsAssigned(REG_DESTINFO_NEW)
     Then If RegistroFoiAlterado(REG_DESTINFO_OLD,REG_DESTINFO_NEW)
             Then PESSOA_ALTERADO=True
                  QuitLoop 
          EndIf
     Else If Not IsAssigned(REG_DESTINFO_OLD) And Isassigned(REG_DESTINFO_NEW) Then PESSOA_ALTERADO=True EndIf     
  EndIf    
  
  If IsAssigned(REG_DESTOBS_OLD) And IsAssigned(REG_DESTOBS_NEW)
     Then If RegistroFoiAlterado(REG_DESTOBS_OLD,REG_DESTOBS_NEW)
             Then PESSOA_ALTERADO=True
                  QuitLoop 
          EndIf
     Else If Not IsAssigned(REG_DESTOBS_OLD) And Isassigned(REG_DESTOBS_NEW) Then PESSOA_ALTERADO=True EndIf     
  EndIf
  
  If IsAssigned(REG_DESTMSG_OLD) And IsAssigned(REG_DESTMSG_NEW)
     Then If RegistroFoiAlterado(REG_DESTMSG_OLD,REG_DESTMSG_NEW)
             Then PESSOA_ALTERADO=True
                  QuitLoop 
          EndIf
     Else If Not IsAssigned(REG_DESTMSG_OLD) And Isassigned(REG_DESTMSG_NEW) Then PESSOA_ALTERADO=True EndIf     
  EndIf
  
  If IsAssigned(REG_DESTEXP_OLD) And IsAssigned(REG_DESTEXP_NEW)
     Then If RegistroFoiAlterado(REG_DESTEXP_OLD,REG_DESTEXP_NEW)
             Then PESSOA_ALTERADO=True
                  QuitLoop 
          EndIf
     Else If Not IsAssigned(REG_DESTEXP_OLD) And Isassigned(REG_DESTEXP_NEW) Then PESSOA_ALTERADO=True EndIf     
  EndIf  
  
  If IsAssigned(REG_DESTAUT_OLD) And IsAssigned(REG_DESTAUT_NEW)
     Then If RegistroFoiAlterado(REG_DESTAUT_OLD,REG_DESTAUT_NEW)
             Then PESSOA_ALTERADO=True
                  QuitLoop 
          EndIf
     Else If Not IsAssigned(REG_DESTAUT_OLD) And IsAssigned(REG_DESTAUT_NEW) Then PESSOA_ALTERADO=True EndIf     
  EndIf     
  
  If IsAssigned(REG_DESTINAT_OLD) And IsAssigned(REG_DESTINAT_NEW)
    Then If RegistroFoiAlterado(REG_DESTINAT_OLD,REG_DESTINAT_NEW)
           Then PESSOA_ALTERADO=True
                QuitLoop 
        EndIf
  EndIf      
  QuitLoop
EndWhile  

Return PESSOA_ALTERADO

EndProc ;Verifica_Registro_OldNew()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoA()
Inicia_Registro_A()
Digita_A()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
Private FICHA_FINANCEIRA,VERIFICA_REGISTRO

If CHAVE=0
   Then Copia_Registro_OldNew("Old",[Codigo])
        VERIFICA_REGISTRO=True
   Else VERIFICA_REGISTRO=False
EndIf 

While True   
   Release Vars ALTERA_CPF                                                      ;#0253# e #0266#
   OPCAO=""

   If Not IsAssigned(FICHA_FINANCEIRA)                                          ;#0253# e #0266#
      Then If CHAVE=1 
              Then FICHA_FINANCEIRA=True
              Else FICHA_FINANCEIRA=False
           EndIf    
   EndIf

   Moveto "DestObs"     SetaCorRegistro("Invisivel")
   Moveto "DestMsg"     SetaCorRegistro("Invisivel")
   Moveto "DestExp"     SetaCorRegistro("Invisivel")
   Moveto "Destinat"

   DIGITA()                                           
   If CHAVE=9
      Then Quitloop
   EndIf  

   If OPCAO<>""
      THen Switch
              Case OPCAO = "1":
                   ENDERECO()
              Case OPCAO = "2":
                   Switch
                     Case SYS_CODIGO_CLIENTE="0078"  : FICHA()
                     Case SYS_CODIGO_CLIENTE="0266"  : If FICHA_FINANCEIRA
                                                          Then FICHA()
                                                          Else If Checa_Supervisor()
                                                                  Then FICHA()
                                                               EndIf   
                                                       EndIf
                     OtherWise:
                     If Checa_Supervisor()
                        Then FICHA()
                     EndIf
                   EndSwitch
              Case OPCAO = "4":
                   COMPLEMENTO()
              Case OPCAO = "5":
                   SetaCorRegistro("Padrao") 
              
                   ResyncKey
                   UnLockRecord

                   KeyPress "F7"
                   PickForm "8"
                   Moveto [Codigo]
                   Locate CODIGO
                   Moveto "DestAut"
                   While True
                     Chave_A()
                     If ChaveA=9 Then QuitLoop EndIf
                     Controla_EdicaoA()
                   EndWhile

                   Moveto"Destinat"
                   ResyncKey
                   UnLockRecord
                   SetaCorRegistro("Editar") 

                   PickForm "10"
                   Moveto [Codigo]
                   Locate CODIGO
           EndSwitch
           Moveto [Nome Fantasia EmitDest]
   EndIf
EndWhile

If RecordStatus("Locked") Then UnLockRecord EndIf

If [Tipo]="C" And destcli1_sincronizaopaf
   Then SaveTables
        play "OPAF_PES"
EndIf

If VERIFICA_REGISTRO
   Then Copia_Registro_OldNew("New",[Codigo])
        If Verifica_Registro_OldNew()
           Then [Data da Manutencao ]=Today()
                [Hora da Manutencao ]=Time()
                [Chapa              ]=SYS_CHAPA_USUARIO
                [Situacao do Cliente]=SITUACAO_CLIENTE
                UnLockRecord
        EndIf
EndIf
         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

Release Vars FICHA_FINANCEIRA

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"
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="S"     EndIf
If Not IsAssigned(SYS_USUARIO_CODVEND)   Then SYS_USUARIO_CODVEND=""    EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)    Then SYS_CODIGO_CLIENTE=""     EndIf
If Not IsAssigned(PARAM_VISUALIZA_FICHA) Then PARAM_VISUALIZA_FICHA="S" EndIf

sys_Valor()

destcli1_sincronizaopaf=false
if IsFile("\\Sistemas\\Vendas\\EX_IDBR.SC")
   then
        Aguarde("Verificando versÆo do OPAF p/ sincroniza‡Æo")

        Play "\\Sistemas\\Vendas\\EX_IDBR"
        Versao = ""
        If IsAssigned(VSDGCAMINHO) and DirExists(VSDGCAMINHO)>0 and isfile("C:\\Opaf\\Opaf.exe")
           then Versao = Verificar_Versao("C:\\Opaf\\Opaf.exe")
           else if IsAssigned(VSDGCAMINHOW) and DirExists(VSDGCAMINHOW)>0 and isfile("V:\\Opaf_Int\\Opaf.exe")
                   then Versao = Verificar_Versao("V:\\Opaf_Int\\Opaf.exe")
                endif
        endif           
        If Not IsBlank(Versao)
           Then Switch
                  Case Versao = "6.1.0.0" Or
                       Versao = "6.1.1.0" Or
                       Versao = "6.2.0.0" Or
                       Versao = "6.2.1.0" : Versao="025"  

                  Case Versao = "6.3.0.0" Or
                       Versao = "6.3.1.0" Or
                       Versao = "6.4.0.0" Or
                       Versao = "6.4.1.0" : Versao="025" 

                  Case substr(Versao,1,1)="7" : Versao="026"      

                  Case Versao = "5.2.2.0" or
                       Versao = "5.2.3.0" or
                       Versao = "5.2.4.0" :  Versao="027"
        
                  Case Versao = "5.3.0.0" or 
                       Versao = "5.3.0.3" :  Versao="027"
        
                  Case Versao = "5.4.0.0" :  Versao="028"

                  otherwise               : Versao=""
                EndSwitch  
        EndIf
        if not isblank(versao)
           then 
                contecfs=0
                dynarray arrayecfs[]

                empresaopaf=""
                getrecord "\\sistemas\\cadastro\\usuarios" SYS_CHAPA_USUARIO to regusuarios
                if retval
                   then empresaopaf=regusuarios["Cod_Empresa"]
                endif   

                View "\\sistemas\\vendas\\opaf_ecf"
                scan 
                  if ( isblank(empresaopaf) or [Codigo da Empresa]=empresaopaf ) And [Inativo]<>"S"
                     then 
                          getrecord "\\sistemas\\cadastro\\empresas" [Codigo da Empresa] to regempresas
                          if retval
                             then
                                  contecfs=contecfs+1
                                  arrayecfs[contecfs]=regempresas["CGC Empresa"]
                          endif
                  endif   
                endscan
                clearimage
                
                if DynArraySize(arrayecfs)>0
                   then destcli1_sincronizaopaf=true
                endif
                release vars contecfs, regempresas, regusuarios, empresaopaf
        endif
        LimpAguarde()
endif   

Carrega_Parametros()
Carrega_Parametros_Cliente()

View NoWindow "\\Sistemas\\Cadastro\\Usuarios"
View NoWindow "\\Sistemas\\Cadastro\\Empresas"
View NoWindow "\\Sistemas\\Cadastro\\Cidades"
View NoWindow "\\Sistemas\\Vendas\\Transpor"
View NoWindow "End_Cob"     SetaCorRegistro("Padrao")    
View NoWindow "Fichacli"    SetaCorRegistro("Padrao")
View NoWindow "DestInfo"    SetaCorRegistro("Padrao")
View NoWindow "DestObs"     SetaCorRegistro("Padrao")
View NoWindow "DestMsg"     SetaCorRegistro("Padrao")
View NoWindow "DestExp"     SetaCorRegistro("Padrao")
View NoWindow "DestAut"     SetaCorRegistro("Padrao")
View NoWindow "ListFone"    SetaCorRegistro("Padrao")
View NoWindow "DestMail"    SetaCorRegistro("Padrao")
CoEdit NoWindow "Destinat"

If PARAM_VISUALIZA_FICHA="N"
   Then ;**** DestCli3 ****************
        If PARAM_CGC_CLIENTE="S"
           Then PickForm "10"
                OPCAO_FORM="10"
           Else PickForm "F"
                OPCAO_FORM="F"
        EndIf
        ;******************************
   Else PickForm "F"
        OPCAO_FORM="F"
        AUX=""     
EndIf  

While True
  CHAVE()
  If CHAVE=9 Then QuitLoop EndIf
  If CHAVE=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "10"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
