;** 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/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao regime tributario DEBITO E CREDITO
;Ultima Alteracao: 23/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1
;Ultima Alteracao: 15/01/2012 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/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ acessar ficha financeira quando cadastro novo #0253# e #0266#
;Ultima Alteracao: 28/01/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes visualizar em ordem de c¢digo/nome + fun‡Æo

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()                                                
private AUX                                     

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

  TECLA=""
  AguardaTeclasPadrao()

  If RetVal=-33
     Then Echo Normal
          Echo Off
          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",
           "~C~ancelar               ": " Cancelar a Opera‡„o              " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off
          
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf                                         
          RetVal=MenuVar
          
          Switch
            Case MenuVar="ORD_COD"  : ORDENARPOR="CODIGO" QuitLoop
            Case MenuVar="ORD_NOME" : ORDENARPOR="NOME"   QuitLoop
          EndSwitch
          
  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"
                  CHAVE=0
                  Controla_EdicaoC()
             Else If EXCLUIR="S"
                    Then If [Tipo]<>"C"
                            Then MENSAGEM("Tipo de Registro Inv lido (Somente Clientes)")
                                 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="ESC":
        CHAVE=9
        Del
        Return
   Case Retval="ENTER":
        If PARAM_CGC_CLIENTE="S"
           Then CGC=[]
                If IsBlank(CGC)                     Then 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
                End PgDn PgDn
                [Codigo       ] = CODIGO
                [Tipo         ] = "C"
                [CGC          ] = CGC
        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 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 Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Private CAMPONEXT, CAMPOBACK
Switch
  Case Search(".",[CGC])=4:
       [Tipo Pessoa]="FISICA"
  Case Search(".",[CGC])=3:
       [Tipo Pessoa]="JURIDICA"
EndSwitch

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") And 
           PARAM_CGC_CLIENTE="S" 
            Then ALTERA_CPF=True  
            Else ALTERA_CPF=False        
        EndIf
EndIf

While True
      If [Tipo]<>"C"
         Then Echo Normal
              Echo Off
              MENSAGEM("Tipo de Registro Inv lido (Somente Clientes)")
              CHAVE=9
              QuitLoop
      EndIf

      Tecla = " Esc=Retornar  "
      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 Tecla=Tecla+"F1=Tabelas  "
         Else Tecla=Tecla+"            "
      EndIf
      If CHAVE=0
         Then Tecla=Tecla+"Del=Excluir  Alt+F=Fun‡”es  PgDn=Finalizar  "
      EndIf

      MSGCAMPO=""
      Switch
        Case Field()="Inativo"                 : MSGCAMPO="Cliente Inativo ? (Sim/N„o)"
        Case Field()="Consumidor Final"        : MSGCAMPO="Consumidor Final ? (Sim/N„o) * Sim => Base Calc ICMS = Vr Nota Fiscal"
        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"
        Case Field()="CGC"                     : MSGCAMPO="Formatos: [ CPF ###.###.###-## ] ou [ CNPJ ##.###.###/####-## ]"
        Case Field()="IE"                      : MSGCAMPO="Informe o N§ ou ISENTO 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()="CNAE"                    : MSGCAMPO="Informe o CNAE"
        Case Field()="Data_Cadastro"           : MSGCAMPO="Data do Cadastro do Cliente"
        Case Field()="Codigo CCusto"           : MSGCAMPO="Codigo do Centro de Custo"
        Case Field()="Endereco_Eletronico"     : MSGCAMPO="Endere‡o Eletr“nico"
        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()="Flag2"                   : MSGCAMPO="ENTER => Prosseguir"
      EndSwitch

      Prompt Tecla

      Wait Field
           Message MSGCAMPO
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F5","F7",
                 "F35","F4","F3","F6","F8","PGDN",-33,-80,-115,-116

     If RetVal=-33 And CHAVE=0
        Then Echo Normal
             Echo Off
             If PARAM_AUT="S"
                Then ShowPopup " Fun‡”es " CENTERED
                      "F3 ~E~ndere‡o/Cobran‡a    " : " Endere‡o/Cobranca      ":"F3",
                      "F4 ~F~icha Financeira     " : " Ficha Financeira       ":"F4",
                      "F5 ~O~bserva‡”es          " : " Observa‡”es            ":"F5",
                      "F7 ~O~bserva‡”es p/ Venda " : " Observa‡”es p/ Venda   ":"F7",
                      "F6 Com~p~lementos         " : " Complementos           ":"F6",
                      "F8 ~A~utorizados          " : " Autorizados            ":"F8",
                      "~I~mprime Ficha           " : " Imprime Ficha          ":"Autorizado",
                      "~C~ancelar                " : " Cancelar a Opera‡„o    ": "CANCELAR"
                    EndMenu
                    To MenuVar
                    echo off
                Else ShowPopup " Fun‡”es " CENTERED
                      "F3 ~E~ndere‡o/Cobran‡a    " : " Endere‡o/Cobranca      ":"F3",
                      "F4 ~F~icha Financeira     " : " Ficha Financeira       ":"F4",
                      "F5 ~O~bserva‡”es          " : " Observa‡”es            ":"F5",
                      "F7 ~O~bserva‡”es p/ Venda " : " Observa‡”es p/ Venda   ":"F7",
                      "F6 Com~p~lementos         " : " Complementos           ":"F6",
                      "~I~mprime Ficha           " : " Imprime Ficha          ":"Autorizado",
                      "~C~ancelar                " : " Cancelar a Opera‡„o   " : "CANCELAR"
                    EndMenu
                    To MenuVar
                    echo off
             EndIf

           If MenuVar="Autorizado"   
              Then
                ResyncKey
                UnLockRecord
                PickForm "8"
                   If Not IsBlank(PARAM_IMPRESSAO) and IsFile(PARAM_IMPRESSAO+".sc")
                      Then Play PARAM_IMPRESSAO   
                      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=-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()="Tipo Assistencia"        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()="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
                   Echo Normal
                   Echo Off
                   ShowPopup " Situa‡”es " CENTERED
                    "~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
                   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"                : " Outros Regimes"                                          : "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   

           [Data da Manutencao ]=Today()
           [Hora da Manutencao ]=Time()
           [Chapa              ]=SYS_CHAPA_USUARIO
           [Situacao do Cliente]=SITUACAO_CLIENTE
           Lista_Telefonica()
           CHAVE=9
           QuitLoop
      Case Retval="F3" And CHAVE=0:
           OPCAO="1"
           Quitloop
      Case Retval="F4" And CHAVE=0:
           OPCAO="2"
           Quitloop
      Case Retval="F5" And CHAVE=0:
           OBSERVACAO()
      Case Retval="F7" And CHAVE=0:
           OBSERVACAO_VENDAS()
      Case Retval="F6" And CHAVE=0:
           OPCAO="4"
           Quitloop
      Case Retval="F8" And CHAVE=0 And PARAM_AUT="S":
           OPCAO="5"
           Quitloop
      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()="Situacao"                     : Moveto [Data_Cadastro]
           Case Field()="Inativo"                      : Moveto [Situacao do Cliente]
           Case Field()="Razao Social"                 : Moveto [Inativo]
           Case Field()="Contato"                      : Moveto [Razao Social]
           Case Field()="Endereco"                     : Moveto [Contato]
           Case Field()="Bairro"                       : Moveto [Endereco]
           Case Field()="CEP"                          : Moveto [Bairro]
           Case Field()="Cidade"                       : Moveto [CEP]
           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()="ISUFRAMA"                     : Moveto [CNAE]
           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() = "Tipo Assistencia":
                Moveto [Codigo da Rota]
           Case Field()="Regime_Tributario":
                Moveto [Tipo Assistencia]     
           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()="CondPagto Cliente"            : 
                If IsBlank([])
                   Then [Descricao CP Cliente]=""
                EndIf  
                Moveto [Codigo Transp_Redespacho] 
           Case Field()="Forma Pagamento Cliente"      : 
                If IsBlank([])
                   Then [Descricao FP Cliente]=""
                EndIf  
                Moveto [CondPagto Cliente] 
           Case Field()="Flag2"                       :
                Moveto [Forma Pagamento Cliente] 
           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 [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 []="BOM" EndIf
                Moveto [Inativo]
           Case Field()="Inativo":
                If IsBlank([]) Then []="N" EndIf
                Moveto [Razao Social]
           Case Field()="Razao Social":
                If IsBlank([]) Then Loop EndIf
                Moveto [Contato]
           Case Field()="Contato"  : Moveto [Endereco]
           Case Field()="Endereco" : Moveto [Bairro]
           Case Field()="Bairro"   : Moveto [CEP]
           Case Field()="CEP"      : 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 [Endereco_Eletronico]=Lower([Endereco_Eletronico])
                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 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
                Switch
                  Case Search(".",[CGC])=4: [Tipo Pessoa]="FISICA"             
                  Case Search(".",[CGC])=3: [Tipo Pessoa]="JURIDICA"
                EndSwitch
                If [Tipo Pessoa]="FISICA"
                   Then [Regime_Tributario]="OUTROS"
                EndIf
                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 [Tipo Pessoa]="JURIDICA"
                ;   Then 
                         If []<>"ISENTO"
                           Then Aguarde("Validando IE")
                                If Not Valida_IE([],[UF])
                                   Then LimpAguarde()
                                        Loop
                                EndIf
                                LimpAguarde()
                         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 [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]=""
                   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]
           Case Field()="Codigo da Rota":
                If IsBlank([]) Then [Descricao da Rota]=""   EndIf
                Moveto [Tipo Assistencia]
           Case Field() = "Tipo Assistencia":
                If IsBlank([]) Then []="EVENTUAL" EndIf
                Moveto [Regime_Tributario]
           Case Field()="Regime_Tributario":
                If IsBlank([]) Then []="OUTROS" 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 [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 [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 IsBlank([CGC])                      : ok=False Mensagem("CPF ou CNPJ inv lido! ")
  Case IsBlank([IE])                       : ok=False Mensagem("IE inv lido! ")
  Case IsBlank([Regime_Tributario])        : ok=False Mensagem("Regime tribut rio inv lido! ")
  Case 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()

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="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")
   
           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")
             Case Campo="C_Data de Nascimento":
                  VSD_DATA_NASC=ControlValue("C_Data de Nascimento")
           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_Endereco":
                  CancelDialog
             Case Campo="E_CEP":
                  Campo="E_Endereco"
             Case Campo="E_Bairro":
                  Campo="E_CEP"
             Case Campo="E_Cidade":
                  Campo="E_Bairro"
             Case Campo="E_UF":
                  Campo="E_Cidade"
             Case Campo="C_Endereco":
                  Campo="E_Endereco"
             Case Campo="C_CEP":
                  Campo="C_Endereco"
             Case Campo="C_Bairro":
                  Campo="C_CEP"
             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"
           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"
             Case Campo="C_Data de Nascimento":
                  Campo="C_Imovel Proprio/Valor"
           EndSwitch
        EndSwitch
        Temp=False
      Case Evento["KeyCode"] = 13:
        Switch
           Case OPCAO="1":           ;*** Opcao Endereco ***
           Switch
             Case Campo="E_Endereco":
                  VSD_E_Endereco=ControlValue("E_Endereco")
                  Campo="E_CEP"
             Case Campo="E_CEP":
                  VSD_E_CEP=ControlValue("E_CEP")
                  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_Endereco"
                          EndIf
                          KeyPress "ESC"
                     Else Campo="C_Endereco"
                  EndIf
             Case Campo="C_Endereco":
                  VSD_C_Endereco=ControlValue("C_Endereco")
                  Campo="C_CEP"
             Case Campo="C_CEP":
                  VSD_C_CEP=ControlValue("C_CEP")
                  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") 
                  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")
                  Campo="C_Data de Nascimento"
             Case Campo="C_Data de Nascimento":
                  VSD_DATA_NASC=ControlValue("C_Data de Nascimento")
                  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"
         Case Campo="C_Data de Nascimento"   :            
              MSGCAMPO="Data de Nascimento"   
       EndSwitch
  Case OPCAO="2":     
       If AUX=True Then
          Switch
            Case Campo="DP_Compra":
              MSGCAMPO="Data da Primeira Compra"
              AUX=False
           EndSwitch
       EndIf
EndSwitch


@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
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"
   @ 9,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 "Endere‡o" for "E_Endereco"
   Accept @ 2,02  Width 43 "A40" picture "!*!" Tag "E_Endereco" to VSD_E_Endereco
   Label  @ 1,45 "CEP" for "E_CEP"
   Accept @ 2,46  Width 13 "A10" picture "##.###-###" Tag "E_CEP" to VSD_E_CEP

   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 "Endere‡o" for "C_Endereco"
   Accept @ 8,02  Width 43 "A40" picture "!*!" Tag "C_Endereco" to VSD_C_Endereco
   Label  @ 7,45 "CEP" for "C_CEP"
   Accept @ 8,46  Width 13 "A10" picture "##.###-###" Tag "C_CEP" to VSD_C_CEP

   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

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
   [Data de Nascimento   ]=VSD_DATA_NASC
   [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        ]
VSD_L_Credito      =[Limite de Credito        ]
VSD_MD_Atraso      =[Maximo Dias Atraso       ]
VSD_SPC_DATConsulta=[Data_Ultima_Consulta     ]
VSD_SPC_SITConsulta=[Situacao_Consulta        ]
VSD_SPC_OBSConsulta=[Protocolo_Obs_Consulta   ]

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

   Frame Single From 0,0 to 4,39
   @ 0,2 ?? " 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,27  Width  11 "$" 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,27  Width 11 "$" 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,27  Width 11 "$" picture "#*#.[##]" Tag "M_Fatura" to VSD_M_Fatura

   Frame Single From 0,40 to 4,74
   @ 0,42 ?? " 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,2 ?? " Credito Maximo "
   paintcanvas attribute 26 0, 0, 7, 38
   Accept @ 6,03  Width  14 "$" picture "#*#.[##]" Tag "L_Credito" to VSD_L_Credito

   Frame Single From 5,22 to 7,46
   @ 5,23 ?? " Maximo de Dias Atraso "
   paintcanvas attribute 26 0, 0, 7, 46
   Accept @ 6,24  Width 21 "S" picture "#*#" Tag "MD_Atraso" to VSD_MD_Atraso
   
   Frame Single From 8,0 to 11,59
   @ 8,2 ?? " 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  

Enddialog
UnLockRecord
Moveto "Destinat"
FormKey
LockRecord

EndProc   ; (Ficha)

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

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

Edita_Memo("Observacoes",10,01,13,76,"Observa‡”es")

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

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

Edita_Memo("Observacoes",10,01,13,76,"Observa‡”es p/ Venda")

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

Moveto "Destinat"
Moveto Field CampAnt

EndProc    ; OBSERVACAO_VENDAS()

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

If [Tipo]<>"C"
   Then If Not IsBlank([Tipo])
           Then MENSAGEM("Tipo de Registro Inv lido (Somente Clientes)")
                Return
        EndIf
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 "DestAut"
Moveto [Codigo]
Locate CODIGO
While [Codigo]=CODIGO
  Del
EndWhile

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

Moveto "Destinat"
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_DATA_NASC   =[Data de Nascimento   ]
        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_DATA_NASC   =BlankDate()
        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
   Label  @ 19,39  "Data Nascimento" for "C_Data de Nascimento"
   Accept @ 20,40   Width 15 "D" picture "##.##.##[##]" Tag "C_Data de Nascimento" to VSD_DATA_NASC

Enddialog

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

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

While True
  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

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
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"
    @ 17,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 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="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_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_Cidade"                 Then Moveto [Cidade                 ] EndIf
                  If Campo="I_Rep1" Or Campo="I_Rep2" Then Moveto [Codigo do Representante] EndIf
                  ConsultaF1()

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

                  echo Normal
                  echo off

                  If Campo="I_Cidade"
                     Then VSD_I_Cidade = [Cidade  ]
                  EndIf
                  If Campo="I_Rep1"
                     Then VSD_I_Rep1  = [Codigo do Representante]
                          VSD_I_Nome1 = [Nome Fantasia Represent]
                  EndIf
                  If Campo="I_Rep2"
                     Then VSD_I_Rep2  = [Codigo do Representante]
                          VSD_I_Nome2 = [Nome Fantasia Represent]
                  EndIf
         EndIf
         Temp=False
     Case Evento["KeyCode"] = 27:
          Switch
            Case Campo="I_Cidade": Campo="NO"
            Case Campo="I_Rep1"  : Campo="I_Cidade"
            Case Campo="I_Rep2"  : Campo="I_Rep1"
            Case Campo="NO" Or Campo="YES": Campo="I_Cidade"
          EndSwitch
          Temp=False
     Case Evento["KeyCode"] = 13:
          If Checa_TAG()
             Then Switch
                    Case Campo="I_Cidade":
                         VSD_I_Cidade=ControlValue("I_Cidade")
                         If Not IsBlank(VSD_I_Cidade)
                            Then Moveto [Cidade]
                                 Ativa_Lookup()
                                 Moveto [Cidade]
                                 Locate VSD_I_Cidade
                                 If Not RetVal
                                    Then Mensagem("Cidade n„o Cadastrada !")
                                         VSD_I_Cidade = ""
                                    Else Campo="I_Rep1"
                                 EndIf
                                 KeyPress "ESC"
                            Else VSD_I_Cidade="TODAS"
                                 Campo="I_Rep1"
                         EndIf
                         Echo Off
                    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"
                         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_Cidade" Or
   Campo="I_Rep1" Or
   Campo="I_Rep2"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf

Switch
  Case Campo="I_Cidade":
       MSG_CAMPO="Em Branco=Todas"
  Case Campo="I_Rep1" Or Campo="I_Rep2":
       MSG_CAMPO="Informe o Codigo 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_Cidade = ""
VSD_I_Rep1   = ""
VSD_I_Nome1  = ""
VSD_I_Rep2   = ""
VSD_I_Nome2  = ""

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

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

   Label  @ 02,01 "Representante Atual" for "I_Rep1"
   Accept @ 03,02  Width 8 "A4" picture "#*#" Tag "I_Rep1" to VSD_I_Rep1
   Accept @ 03,11 Width 35 "A30" picture "!*!" Tag "I_Nome1" to VSD_I_Nome1

   Label  @ 04,01 "Representante a Substituir" for "I_Rep2"
   Accept @ 05,02  Width 8 "A4" picture "#*#" Tag "I_Rep2" to VSD_I_Rep2
   Accept @ 05,11 Width 35 "A30" picture "!*!" Tag "I_Nome2" to VSD_I_Nome2

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

Enddialog
If RetVal
   Then Substitui()
   Else Del
EndIf
Moveto Field Campo_Old
Release Vars 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")
Scan
   Barra(NR, RecNo())
   Aguarde("Aguarde, Alterando "+BARRA_STRING)
   If [Tipo]="C"
      Then If VSD_I_CIDADE="TODAS"
              Then 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
              Else If ([Codigo do Representante]=VSD_I_Rep1) And ([Cidade]=VSD_I_Cidade)
                      Then [Codigo do Representante] = ""
                           [Codigo do Representante] = VSD_I_Rep2
                           [Nome Fantasia Represent] = VSD_I_Nome2
                           UnLockRecord
                   EndIf
           EndIf
   EndIf
EndScan
LimpAguarde()
Mensagem("Opera‡„o Finalizada !")
EndProc ; (Substitui)

;*******************************************************************************
;* 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]
ClearImage

EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* 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

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

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

                   PickForm "10"
                   Moveto [Codigo]
                   Locate CODIGO
           EndSwitch
           Moveto [Nome Fantasia EmitDest]
   EndIf
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

Release Vars FICHA_FINANCEIRA

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
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_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE="" EndIf
Carrega_Parametros()

View NoWindow "\\Sistemas\\Vendas\\Transpor"
View NoWindow "End_Cob"
View NoWindow "Fichacli"
View NoWindow "DestInfo"
View NoWindow "DestObs"
View NoWindow "DestMsg"
View NoWindow "DestAut"
View NoWindow "ListFone"
CoEdit NoWindow "Destinat"
PickForm "F"

OPCAO_FORM="F"
AUX=""
ORDENARPOR="NOME"

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
