;** DestCli2 *******************************************************************
;*  Manutencao Cadastro de Clientes                                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 07/07/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Lookup Represent
;Ultima Alteracao: 11/08/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Adicao da rotina Checa_Supervisor quando Excluir
;Ultima Alteracao: 02/04/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Observacoes
;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: 09/01/2009 por Antonio Marcelo Alves
;Motivo Alteracao: Rotina Valida_IE
;Ultima Alteracao: 10/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Lockrecord
;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: 26/04/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Mensagem campo, opcao 2 
;Ultima Alteracao: 05/05/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado Lista_Telefonica() e Remo‡Æo da ListFone
;Ultima Alteracao: 05/05/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes nos Campos
;Ultima Alteracao: 30/06/2010 por Bruno Carvalho
;Motivo Alteracao: Add Proc Novo Codigo e Checagem do C¢digo
;Ultima Alteracao: 16/07/2010 por Bruno Carvalho
;Motivo Alteracao: Novos Campos/Layout  
;Ultima Alteracao: 23/08/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Layout OS
;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: 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: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;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: 17/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Proc Observacao
;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: 20/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao regime tributario DEBITO E CREDITO
;Ultima Alteracao: 21/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Situacao do Cliente" p/ permitir situa‡Æo como OTIMO
;Ultima Alteracao: 21/01/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes IE = NAOCONTRIBUINTE
;Ultima Alteracao: 27/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valida‡Æo CGC/CPF UF="EX"
;Ultima Alteracao: 26/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Regime tributario outros
;Ultima Alteracao: 08/11/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes vari vel MSGCAMPO
;Ultima Alteracao: 15/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes carga sys_Valor()
;Ultima Alteracao: 26/04/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Data de Nascimento] na "Destinat" e inclu¡do no FORM
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 28/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Ajusta_Controle() p/ ajustar [Data da Manutencao] apenas quando ocorrer altera‡Æo
;Ultima Alteracao: 14/11/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ atualizar data da manuten‡Æo -> Copia_Registro_OldNew() e Verifica_Registro_OldNew()
;Ultima Alteracao: 30/07/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ obrigrar a informar o representante p/ empresa #0232#
;Ultima Alteracao: 01/08/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo atualizar listfone #0431
;Ultima Alteracao: 16/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem tipo pessoa
;Ultima Alteracao: 19/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao de regras para observa‡äes
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 11/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ShowPopup separtor/Cancelar
 
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  End
  SEQ=[Codigo]

  If OPCAO_FORM="F"
    Then Down
    Else PgDn
  EndIf

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

  SetaCorRegistro("Editar")
  While True

   ;TECLA="Esc=Sair  "
   ;If PARAM_CGC_CLIENTE<>"S"
   ;   Then If OPCAO_FORM="F"
   ;              Then TECLA=TECLA+"F3=Ficha  "
   ;              Else TECLA=TECLA+"F3=Relacao  "
   ;         EndIf
   ;EndIf

   MSGCAMPO=""
   TECLA=""
   AguardaTeclasPadrao()

   If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
           "F8 ~T~roca      ": " Troca de Representantes/Vendedor " :"F8",
           Separator,
           "~C~ancelar     " : " Cancelar a Opera‡„o              " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf                                         
          RetVal=MenuVar
   EndIf

   Switch
   Case RetVal=-94 : MsgTeclasPadrao()   
   Case RetVal="F3" And PARAM_CGC_CLIENTE<>"S":
        If OPCAO_FORM="F"
           Then OPCAO_FORM="10"
           Else OPCAO_FORM="F"
        EndIf
        Del
        CHAVE=5
        Return
   Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
        While True
          If OPCAO_FORM="F"
             Then PAGINA("Destinat","MR")
             Else PAGINA("Destinat","MT")
          EndIf
          CODIGO=[Codigo]
          If EDITAR="S"
             Then PickForm "10"
                  CopyToArray ARRAY_CLIENTE
                  CHAVE=0
                  Controla_EdicaoC()
             Else If EXCLUIR="S"
                    Then If not ChecaTipoDeRegistro()
                            Then 
                                 UnLockRecord
                            Else If Checa_Supervisor()
                                    Then If QuerExcluir("deste cliente")
                                            Then PickForm "10"
                                                 EXCLUSAO()
                                            Else UnLockRecord
                                         EndIf
                                    Else UnLockRecord
                                 EndIf
                                 If OPCAO_FORM="10"
                                    Then PickForm "10"
                                    Else PickForm "F"
                                 EndIf
                         EndIf
                    Else QuitLoop
                  EndIf
          EndIf
          SetaPosForm()
        EndWhile
        QuitLoop
   Case Retval="F8":
        PickForm "10"
        Del
        End PgDn
        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 CODIGO=Checa_Codigo("")
                        If IsBlank(CODIGO)
                           Then QuitLoop
                        EndIf   
								EndIf
           Else CGC=""
                
                CODIGO=[Codigo]
                Del
                CODIGO=Checa_Codigo(CODIGO)
                If IsBlank(CODIGO)
                   Then QuitLoop
                EndIf   
                PickForm "10"
        EndIf

        Moveto [Codigo]
        Locate CODIGO
        If Retval
           Then CHAVE=0
           Else CHAVE=1
                End 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 tipo de registro                                    *
;*******************************************************************************
Proc ChecaTipoDeRegistro()
private msg, msg1

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

return true
EndProc

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

if sys_codigo_cliente="0431"
   then return true
endif

UnLockRecord
KeyPress "F7"

Moveto "\\Sistemas\\Cadastro\\Listfone"
Moveto [Codigo]
Locate [Destinat->Codigo]
If Not RetVal
  Then End Down
       [Codigo                 ]=[Destinat->Codigo                ]
EndIf
[Nome                   ]=[Destinat->Nome Fantasia EmitDest]
[Endereco               ]=[Destinat->Endereco              ]
[Bairro                 ]=[Destinat->Bairro                ]           
[CEP                    ]=[Destinat->CEP                   ]           
[Cidade                 ]=[Destinat->Cidade                ]           
[UF                     ]=[Destinat->UF                    ] 
If [Destinat->Tipo Pessoa]="FISICA" 
  Then [Telefone Residencial]=[Destinat->Telefone         ] 
       [Telefone Comercial  ]=""  
  Else [Telefone Comercial  ]=[Destinat->Telefone         ]
       [Telefone Residencial]=""  
EndIf
[Telefone Celular       ]=[Destinat->Celular               ]  
UnLockRecord

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

;*******************************************************************************
;* Rotina 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()
Switch
  Case Search(".",[CGC])=4:
       [Tipo Pessoa]="FISICA"
  Case Search(".",[CGC])=3:
       [Tipo Pessoa]="JURIDICA"
EndSwitch
Moveto [Nome Fantasia EmitDest]
CONTA =[Conta Contabil]
While True

      If not ChecaTipoDeRegistro()
         Then CHAVE=9
              QuitLoop
      EndIf

      Tecla = " Esc=Retornar "
      MSGCAMPO=Field()
      
      If Field()="Codigo do Representante"  Or
         Field()="Codigo do Cobrador"       Or
         Field()="Codigo da Rota"           Or
         Field()="Cidade"                   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"
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      EndIf
      If CHAVE=0
         Then Tecla=Tecla+"Del=Excluir  Alt+F=Fun‡”es  PgDn=Finaliza  "
      EndIf

      Switch
        Case Field()="Inativo"                : MSGCAMPO="Cliente Inativo ? (Sim/N„o)"
        Case Field()="Consumidor Final"       : MSGCAMPO="Consumidor Final (Sim/N„o) * Sim = Calculo ICMS sobre o Valor da Nota Fiscal"
        Case Field()="Endereco"               : MSGCAMPO="Exemplo(NFe): Logradouro,Numero,Complemento"
        Case Field()="Telefone"               :
             If[UF]="EX"
               Then MSGCAMPO="+PP XX NNNN-NNNN"
               Else MSGCAMPO="XX NNNN-NNNN"
             EndIf    
        Case Field()="Tipo Pessoa"            : MSGCAMPO="Fisica, Juridica"
        Case Field()="Tipo Assistencia"       : MSGCAMPO="Eventual, Contratual"
        Case Field()="CGC"                    : MSGCAMPO="Formatos: [ CPF ###.###.###-## ] ou [ CNPJ ##.###.###/####-## ]"
        Case Field()="IE"                     : MSGCAMPO="Informe o N§, ISENTO ou NAOCONTRIBUINTE p/ Inscri‡„o Estadual"
        Case Field()="IE_ST"                  : MSGCAMPO="Informe a Inscri‡„o Estadual do Sust. Tribut rio"
        Case Field()="IM"                     : MSGCAMPO="Informe o N§ ou ISENTO p/ Inscri‡„o Municipal"
        Case Field()="RG"                     : MSGCAMPO="Informe o Registro Geral"
        Case Field()="ISUFRAMA"               : MSGCAMPO="Informe a Inscri‡„o SUFRAMA"
        Case Field()="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="Pagina na Internet"
        Case Field()="Taxa_Desconto Permitido": MSGCAMPO="% Desconto Permitido Venda"
        Case Field()="Km Frete"               : MSGCAMPO="Distƒncia em Km para c lculo Frete"
        Case Field()="Regime_Tributario"      : MSGCAMPO="Regime Tribut rio"
        Case Field()="Data de Nascimento"      : MSGCAMPO="Data de Nascimento do Cliente"   
      EndSwitch

      Prompt Tecla

      Wait Field
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F5","F35","F4","F3","F6","F7",
                 "F8","F9",-33,-133,-134,"PGDN"

     If RetVal=-33 And CHAVE=0
        Then Echo Normal
             Echo Off
             ShowPopup " Fun‡”es " CENTERED
                "F3  ~E~ndere‡o/Cobran‡a " : " Endere‡o/Cobran‡a  " : "F3",
                "F4  ~F~icha Financeira  " : " Ficha Financeira   " : "F4",
                "F5  ~O~bserva‡”es       " : " Observa‡”es        " : "F5",
                "F6  Com~p~lementos      " : " Complementos       " : "F6",
                "F8  ~A~utorizados       " : " Autorizados        " : "F8",
                Separator,
                "F7  Fo~n~e              " : " Fone               " : "F7",
                "F9  ~V~isita            " : " Visita             " : "F9",
                "F11 Cont~r~atos         " : " Contratos          " : "-133",
                "F12 Con~t~atos          " : " Outros contatos    " : "-134",
                Separator,
                "~C~ancelar              " : " Cancelar a Opera‡„o" : "CANCELAR"
             EndMenu

          To MenuVar
          Echo Off

          If MenuVar="CANCELAR" or MenuVar="Esc"
              Then Loop
          EndIf                                         
          RetVal=MenuVar
          If SubStr(MenuVar,1,1)="-"
             Then RetVal=NumVal(MenuVar)
          EndIf
     EndIf

      Switch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case RetVal="F1":
           If Field()="Codigo do Cobrador"       Or
              Field()="Codigo da Rota"           Or
              Field()="Cidade"                   Or
              Field()="UF"                       Or
              Field()="Codigo Atividade"         Or
              Field()="Codigo da Transportadora" Or
              Field()="Codigo CCusto"            Or
              Field()="Codigo da Area"           Or
              Field()="Pais"
              Then If CONSULTAF1()
                      Then If Field()="Cidade"
                              Then [UF  ]=Reg_ConsultaF1["UF"]
                                   [Pais]=Reg_ConsultaF1["Pais"]
                           EndIf
                   EndIf   
           EndIf
           If Field()="Codigo Transp_Redespacho"
              Then ConsultaF1_SemRetorno()
                   If Resultado_F1
                      Then [Codigo Transp_Redespacho]=Registro_F1["Codigo da Transportadora"]
                           [Nome Fantasia Redespacho]=Registro_F1["Nome Fantasia Transport"]
                   EndIf
           EndIf
           If Field()="Codigo do Representante"
              Then If ConsultaF1()
                      Then [Codigo do Representante ]=Reg_ConsultaF1["Codigo do Representante"]
                           [Nome Fantasia Represent ]=Reg_ConsultaF1["Nome Fantasia Represent"]
                   EndIf

           EndIf

           If Field()="Situacao do Cliente"
              Then
                   Echo Normal
                   Echo Off
                   ShowPopup " Situa‡”es " CENTERED
                    "~O~timo     ": " Otimo cliente                 " :"OTIMO",
                    "~BOM~       ": " 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",
                    Separator,
                    "~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",
                    Separator,
                    "~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 Ajusta_Controle()
              Then [Data da Manutencao ]=Today()
                   [Hora da Manutencao ]=Time()
                   [Chapa              ]=SYS_CHAPA_USUARIO
                   [Situacao do Cliente]=SITUACAO_CLIENTE
           EndIf
           Lista_Telefonica()
           CHAVE=9
           QuitLoop
      Case Retval="F3" And CHAVE=0:
           OPCAO="1"
           Quitloop
      Case Retval="F4" And CHAVE=0:
           OPCAO="2"
           Quitloop
      Case Retval="F5" And CHAVE=0:
           OBSERVACAO()
      Case Retval="F6" And CHAVE=0:
           OPCAO="4"
           Quitloop
      Case Retval="F7" And CHAVE=0:
           OPCAO="7"
           Quitloop
      Case Retval="F8" And CHAVE=0:
           OPCAO="5"
           Quitloop
      Case Retval="F9" And CHAVE=0:
           OPCAO="9"
           Quitloop
      Case Retval=-134 And CHAVE=0:
           OPCAO="10"
           Quitloop
      Case Retval=-133 And CHAVE=0:
           OPCAO="11"
           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()="Data de Nascimento"           : Moveto [Data_Cadastro]
           Case Field()="Situacao do Cliente"          : Moveto [Data de Nascimento]
           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]
           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 CCusto"                :
                If IsBlank([])
                   Then [Descricao CCusto]=""
                EndIf
                Moveto [Conta Contabil]
           Case Field()="Codigo Atividade":
                If IsBlank([])
                   Then [Descricao Atividade]=""
                EndIf
                Moveto [Codigo CCusto]
           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 da Transportadora":
                If IsBlank([])
                   Then [Nome Fantasia Transport]=""
                EndIf
                Moveto [Regime_Tributario]
           Case Field()="Codigo Transp_Redespacho":
                If IsBlank([])
                   Then [Nome Fantasia Redespacho]=""
                EndIf
                Moveto [Codigo da Transportadora]
           Case Field()="Codigo do Cobrador":
                If IsBlank([])
                   Then [Descricao do Cobrador]=""
                EndIf
                Moveto [Codigo Transp_Redespacho]
           Case Field()="Taxa_Desconto Permitido":
                Moveto [Codigo do Cobrador]
           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 IsBlank([]) Then Loop EndIf
                Moveto [Data_Cadastro]
           Case Field()="Data_Cadastro":
                If IsBlank([])
                   Then []=Today()
                EndIf
                Moveto [Data de Nascimento]
           Case Field()="Data de Nascimento":                
                Moveto [Situacao do Cliente]
           Case Field()="Situacao do Cliente":
                If IsBlank([]) Then []="OTIMO" 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"          : Moveto [CGC]
                If Not IsBlank([Pagina_Web])
                   Then [Pagina_Web]=Lower([Pagina_Web])
                EndIf
           Case Field()="CGC":
                If IsBlank([]) Then Loop EndIf
                
                if [UF]="EX"
                   then if [CGC]<>"00.000.000/0000-00" and
                           [CGC]<>"000.000.000-00" 
                           then Fastmsg("Pessoa do Exterior use 00.000.000/0000-00 ou 000.000.000-00 !")
                                Loop
                           else [IE               ]="ISENTO" 
                                [Regime_Tributario]="OUTROS"
                                [CEP              ]="00.000-00"    
                        endif   
                   else
                        If Not Checa_CGC_CPF_Formatado([]) Then Loop EndIf
                endif
                Switch
                  Case Search(".",[CGC])=4: [Tipo Pessoa]="FISICA"
                  Case Search(".",[CGC])=3: [Tipo Pessoa]="JURIDICA"
                EndSwitch
                Moveto [Consumidor Final]
           Case Field()="Consumidor Final":
                If IsBlank([]) Then []="N" EndIf
                Moveto [IE]
           Case Field()="IE":
                If IsBlank([]) Then Loop EndIf
                If [UF]="EX" Then [IE]="ISENTO" EndIf
                If []<>"ISENTO" And []<>"NAOCONTRIBUINTE"
                  Then Aguarde("Validando IE")
                       If Not Valida_IE([],[UF])
                          Then LimpAguarde()
                               Loop
                       EndIf
                       LimpAguarde()
                  Else 
                       If [Tipo Pessoa]="FISICA"
                          Then [Regime_Tributario]="OUTROS"
                       EndIf
                EndIf  
                
                Moveto [RG]
           Case Field()="RG"                  : Moveto [IM]
           Case Field()="IM"                  : Moveto [IE_ST]
           Case Field()="IE_ST"               : Moveto [CNAE]
           Case Field()="CNAE"                : Moveto [ISUFRAMA]
           Case Field()="ISUFRAMA"            : Moveto [Conta Contabil]
           Case Field()="Conta Contabil"      : Moveto [Codigo CCusto]
           Case Field()="Codigo CCusto":
                If IsBlank([])
                   Then [Descricao CCusto]=""
                EndIf
                Moveto [Codigo Atividade]

           Case Field()="Codigo Atividade":
                If IsBlank([]) Then [Descricao Atividade]="" EndIf
                Moveto [Codigo da Area]
           Case Field()="Codigo da Area":
                If IsBlank([]) Then [Descricao da Area]=""   EndIf
                Moveto [Codigo do Representante]
           Case Field()="Codigo do Representante":
                If IsBlank([])
                   Then [Nome Fantasia Represent]=""
                        If SYS_CODIGO_CLIENTE="0232"
                           Then FastMsg("Representante nÆo foi informado!")
                           Else Moveto [Codigo da Rota]
                        EndIf
                   Else CODREP=[]
                        NFREP =""
                        Ativa_Lookup()
                        Moveto [Codigo do Representante]
                        Locate CODREP
                        If RetVal
                           Then NFREP=[Nome Fantasia Represent]
                        EndIf
                        KeyPress "ESC"
                        [Nome Fantasia Represent ]=NFREP
                        
                        Moveto [Codigo da Rota]
                EndIf
           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 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 [Codigo do Cobrador]
           Case Field()="Codigo do Cobrador":
                If IsBlank([])
                   Then [Descricao do Cobrador]=""
                EndIf
                Moveto [Taxa_Desconto Permitido]
           Case Field()="Taxa_Desconto Permitido":
                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 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")
           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_SPC":
                  VSD_SPC=ControlValue("C_SPC")
             Case Campo="C_Consulta SPC":
                  VSD_CONSULTA_SPC=ControlValue("C_Consulta SPC")
             Case Campo="C_Pai Socio":
                  VSD_PAI_SOCIO=ControlValue("C_Pai Socio")
             Case Campo="C_Mae Socio":
                  VSD_MAE_SOCIO=ControlValue("C_Mae Socio")
             Case Campo="C_Renda Faturamento":
                  VSD_RENDA_FAT=ControlValue("C_Renda Faturamento")
             Case Campo="C_Nome Parente":
                  VSD_N_PARENTE=ControlValue("C_Nome Parente")
             Case Campo="C_Endereco Parente":
                  VSD_END_PARENTE=ControlValue("C_Endereco Parente")
             Case Campo="C_Local Trabalho":
                  VSD_LOCAL_TRAB=ControlValue("C_Local Trabalho")
             Case Campo="C_Endereco Trabalho":
                  VSD_END_TRAB=ControlValue("C_Endereco Trabalho")
             Case Campo="C_Tempo Trabalho":
                  VSD_TEMPO_TRAB=ControlValue("C_Tempo Trabalho")
             Case Campo="C_Nome_Fiador":
                  VSD_Nome_Fiador=ControlValue("C_Nome_Fiador")
             Case Campo="C_CGC_Fiador":
                  VSD_CGC_Fiador=ControlValue("C_CGC_Fiador")      
             Case Campo="C_CGC_PAI":
                  VSD_CGC_PAI=ControlValue("C_CGC_PAI")
             Case Campo="C_CGC_MAE":
                  VSD_CGC_MAE=ControlValue("C_CGC_MAE")
             Case Campo="C_End_Fiador":
                  VSD_End_Fiador=ControlValue("C_End_Fiador")
             Case Campo="C_Tel_Fiador":
                  VSD_Tel_Fiador=ControlValue("C_Tel_Fiador")
             Case Campo="C_Imovel Proprio/Valor":
                  VSD_IMOVEL_P=ControlValue("C_Imovel Proprio/Valor")
           EndSwitch
           Grava_Complemento()
           CancelDialog
      EndSwitch
      Case Evento["KeyCode"] = -66:
         If OPCAO="1" Then
           If Campo="E_Endereco"
              Then VSD_E_Endereco= "O MESMO"
                   VSD_E_Bairro  = ""
                   VSD_E_Cidade  = ""
                   VSD_E_UF      = ""
                   VSD_E_CEP     = ""
           EndIf
           Grava_Enderecos()
           If Campo="C_Endereco"
              Then VSD_C_Endereco = "O MESMO"
                   VSD_C_Bairro   = ""
                   VSD_C_Cidade   = ""
                   VSD_C_UF       = ""
                   VSD_C_CEP      = ""
           EndIf
           RefreshDialog
         Endif
      Case Evento["KeyCode"] = 27:
        Switch
           Case OPCAO="1":           ;*** Opcao Endereco ***
           Switch
             Case Campo="E_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"
           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_SPC":
                  Campo="C_Referencia Bancaria"
             Case Campo="C_Consulta SPC":
                  Campo="C_SPC"
                  MSGCAMPO="Sim ou Nao"
             Case Campo="C_Pai Socio":
                  Campo="C_Consulta SPC"
             Case Campo="C_CGC_PAI":
                  Campo="C_Pai Socio"
             Case Campo="C_Mae Socio":
                  Campo="C_CGC_PAI"
             Case Campo="C_CGC_MAE":
                  Campo="C_Mae Socio"                  
             Case Campo="C_Nome Parente":
                  Campo="C_CGC_MAE"    
             Case Campo="C_Endereco Parente":
                  Campo="C_Nome Parente"
             Case Campo="C_Local Trabalho":
                  Campo="C_Endereco Parente"
             Case Campo="C_Endereco Trabalho":
                  Campo="C_Local Trabalho"
             Case Campo="C_Tempo Trabalho":
                  Campo="C_Endereco Trabalho"
             Case Campo="C_Nome_Fiador":
                  Campo="C_Tempo Trabalho"
             Case Campo="C_CGC_Fiador":
                  Campo="C_Nome_Fiador"
             Case Campo="C_End_Fiador":
                  Campo="C_CGC_Fiador"
             Case Campo="C_Tel_Fiador":
                  Campo="C_End_Fiador"
             Case Campo="C_Imovel Proprio/Valor":
                  Campo="C_Tel_Fiador"
           EndSwitch
        EndSwitch
        Temp=False
      Case Evento["KeyCode"] = 13:
        Switch
           Case OPCAO="1":           ;*** Opcao Endereco ***
           Switch
             Case Campo="E_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")
                  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_SPC"
                  MSGCAMPO="Utiliza SPC: Sim/N„o"
             Case Campo="C_SPC":
                  VSD_SPC=ControlValue("C_SPC")
                  Campo="C_Consulta SPC"
             Case Campo="C_Consulta SPC":
                  VSD_CONSULTA_SPC=ControlValue("C_Consulta SPC")
                  Campo="C_Pai Socio"   
             Case Campo="C_Pai Socio":
                  VSD_PAI_SOCIO=ControlValue("C_Pai Socio")
                  Campo="C_CGC_PAI"  
             Case Campo="C_CGC_PAI":
                  VSD_CGC_PAI=ControlValue("C_CGC_PAI")
                  If Not IsBlank(VSD_CGC_PAI)
                     Then If Checa_CGC_CPF_Formatado(VSD_CGC_PAI)
                             Then Campo="C_Mae Socio"
                          EndIf
                     Else Campo="C_Mae Socio"
                  EndIf                 
             Case Campo="C_Mae Socio":
                  VSD_MAE_SOCIO=ControlValue("C_Mae Socio")
                  Campo="C_CGC_MAE"
             Case Campo="C_CGC_MAE":
                  VSD_CGC_MAE=ControlValue("C_CGC_MAE")
                  If Not IsBlank(VSD_CGC_MAE)
                     Then If Checa_CGC_CPF_Formatado(VSD_CGC_MAE)
                             Then Campo="C_Nome Parente"
                          EndIf
                     Else Campo="C_Nome Parente"
                  EndIf
             Case Campo="C_Nome Parente":
                  VSD_N_PARENTE=ControlValue("C_Nome Parente")
                  Campo="C_Endereco Parente"
             Case Campo="C_Endereco Parente":
                  VSD_END_PARENTE=ControlValue("C_Endereco Parente")
                  Campo="C_Local Trabalho"
             Case Campo="C_Local Trabalho":
                  VSD_LOCAL_TRAB=ControlValue("C_Local Trabalho")
                  Campo="C_Endereco Trabalho"
             Case Campo="C_Endereco Trabalho":
                  VSD_END_TRAB=ControlValue("C_Endereco Trabalho")
                  Campo="C_Tempo Trabalho"
             Case Campo="C_Tempo Trabalho":
                  VSD_TEMPO_TRAB=ControlValue("C_Tempo Trabalho")
                  Campo="C_Nome_Fiador"
             Case Campo="C_Nome_Fiador":
                  VSD_Nome_Fiador=ControlValue("C_Nome_Fiador")
                  Campo="C_CGC_Fiador"
             Case Campo="C_CGC_Fiador":
                  VSD_CGC_Fiador=ControlValue("C_CGC_Fiador")
                  If Not IsBlank(VSD_CGC_Fiador)
                     Then If Checa_CGC_CPF_Formatado(VSD_CGC_Fiador)
                             Then Campo="C_End_Fiador"
                          EndIf
                     Else Campo="C_End_Fiador"
                  EndIf
             Case Campo="C_End_Fiador":
                  VSD_End_Fiador=ControlValue("C_End_Fiador")
                  Campo="C_Tel_Fiador"
             Case Campo="C_Tel_Fiador":
                  VSD_Tel_Fiador=ControlValue("C_Tel_Fiador")
                  Campo="C_Imovel Proprio/Valor"
             Case Campo="C_Imovel Proprio/Valor":
                  VSD_IMOVEL_P=ControlValue("C_Imovel Proprio/Valor")
                  Grava_Complemento()
                  UnLockRecord
                  CancelDialog
           EndSwitch
     EndSwitch
     ;Temp=False
   EndSwitch
EndIf
RefreshDialog
SelectControl Campo
TECLA=" Esc=Retornar  PgDn=Finalizar   "
Switch
  Case OPCAO="1":
       If Campo="E_Endereco" Or
          Campo="C_Endereco"
          Then TECLA=TECLA+"F8=Duplica Endere‡o  "
       EndIf
       If Campo="E_Cidade" Or
          Campo="E_UF"     Or
          Campo="C_Cidade" Or
          Campo="C_UF"
          Then TECLA=TECLA+"F1=Tabelas  "
       EndIf
  Case OPCAO="4":
       Switch
         Case Campo="C_CGC_Fiador":
              MSGCAMPO="CPF/CGC do Fiador"
         Case Campo="C_Tel_Fiador":
              MSGCAMPO="Telefone do Fiador"
       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
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
   [Spc                  ]=VSD_SPC
   [Consulta Spc         ]=VSD_CONSULTA_SPC
   [Pai Socio            ]=VSD_PAI_SOCIO
   [CGC/CPF Pai Socio    ]=VSD_CGC_PAI
   [Mae Socio            ]=VSD_MAE_SOCIO
   [CGC/CPF Mae Socio    ]=VSD_CGC_MAE
   [Nome Parente         ]=VSD_N_PARENTE
   [Endereco Parente     ]=VSD_END_PARENTE
   [Local Trabalho       ]=VSD_LOCAL_TRAB
   [Endereco Trabalho    ]=VSD_END_TRAB
   [Tempo Trabalho       ]=VSD_TEMPO_TRAB
   [Imovel Proprio/Valor ]=VSD_IMOVEL_P
   [Nome Fiador          ]=VSD_NOME_FIADOR
   [Endereco Fiador      ]=VSD_CGC_FIADOR
   [CGC/CPF Fiador       ]=VSD_END_FIADOR
   [Telefone Fiador      ]=VSD_TEL_FIADOR

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       ]

Showdialog "Ficha Financeira" Proc "Geral_Dialog"
  Trigger "OPEN","ARRIVE"
   Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN"
   @ 13,01 height 10 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

Enddialog
EndProc   ; (Ficha)

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

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

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

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

Moveto "DestObs"
Moveto [Codigo]

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

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

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

Moveto "Destinat"
Moveto Field CampAnt

EndProc    ; (Observacao)

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

If not ChecaTipoDeRegistro()
   Then Return
EndIf
Moveto"Destinat"
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 "ListFone"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Del
EndIf

Moveto "Destinat"
PickForm "8"
Moveto [Codigo]
Locate CODIGO
UnLockRecord

Moveto "DestAut"
While Not RecordStatus("New")
  Del
EndWhile

Moveto "Destinat"
Grava_LogEx("Cliente")
Del
PickForm "10"
EndProc  ;(Exclusao)

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

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

CopyToArray ARRAY_CLIENTE_NOVO

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

Return MODIFICOU

EndProc

;*******************************************************************************
;* Rotina para 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_SPC         =[Spc                  ]
        VSD_CONSULTA_SPC=[Consulta Spc         ]
        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 ]
   Else End Down
        [Codigo        ]=[Destinat->Codigo]
        VSD_REF_COM1    =""
        VSD_REF_COM2    =""
        VSD_REF_COM3    =""
        VSD_REF_BANC    =""
        VSD_SPC         =""
        VSD_CONSULTA_SPC=BlankDate()
        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    =""
Endif

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

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

   Label  @ 00,44  "Renda/Faturamento" for "C_Renda Faturamento"
   Accept @ 01,45   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,04   Width 40 "A40" picture "!*!" Tag "C_Referencia Bancaria" to VSD_REF_BANC

   Label  @ 04,44  "SPC" for "C_SPC"
   Accept @ 05,45   Width 6 "A3" picture "Sim,N„o" Tag "C_SPC" to VSD_SPC
   Label  @ 04,51  "Ultima Consulta" for "C_Consulta SPC"
   Accept @ 05,52   Width 13 "D" picture "#[#];.##;.##[##]" Tag "C_Consulta SPC" to VSD_CONSULTA_SPC

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

   @ 09,01 ?? "Parente"
   Label  @ 10,01  "Nome" for "C_Nome Parente"                                                     
   Accept @ 10,11   Width 40 "A40" picture "!*!" Tag "C_Nome Parente" to VSD_N_PARENTE
   Label  @ 11,01  "Endere‡o" for "C_Endereco Parente"
   Accept @ 11,11   Width 40 "A40" picture "!*!" Tag "C_Endereco Parente" to VSD_END_PARENTE

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

   @ 16,01 ?? "Fiador"
   Label  @ 17,01  "Nome" for "C_Nome_Fiador"
   Accept @ 17,11   Width 40 "A40" picture "!*!" Tag "C_Nome_Fiador" to VSD_NOME_FIADOR
   Accept @ 17,52   Width 20 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "C_CGC_Fiador" to VSD_CGC_FIADOR
   Label  @ 18,01  "Endere‡o" for "C_End_Fiador"
   Accept @ 18,11   Width 40 "A40" picture "!*!" Tag "C_End_Fiador" to VSD_End_FIADOR
   Accept @ 18,52   Width 20 "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 40 "A40" picture "!*!" Tag "C_Imovel Proprio/Valor" to VSD_IMOVEL_P

Enddialog
EndProc  ; (Complemento)

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

While True
  End
  SEQA=[Sequencia]
  Down

  Moveto [Sequencia]

  Opcao_Ver = False

  Prompt " Esc=Sair  F3=Ver Ficha  F7=Paginar  PgDn=Finalizar"

  Wait Field
  Until "ESC","ENTER","F7","HOME","UP","PGUP","F3","PGDN",
        -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140

  If SubStr(RetVal,1,2)="-1"
     Then SYS_TECLA_ACIONADA=RetVal
          Seta_Tecla_Acionada()
          RetVal="ESC"
  EndIf

  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 UnLockRecord
                                 EndIf
                            Else UnLockRecord
                         EndIf
                    Else QuitLoop
                 EndIf
         EndIf
         SetaPosForm()
       EndWhile
  Case Retval="ESC" Or RetVal="PGDN":
       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_Tel_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
                  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 40 "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 para Localizar Visitas                                               *
;*******************************************************************************
Proc CHAVEVISITA()
Moveto "\\Sistemas\\Os\\DestC6"
While True
      End
      Down
      Moveto [Data da Visita]

      Prompt " Esc=Sair  F7=Paginar "

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

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             PAGINA("\\Sistemas\\Os\\DestC6","MR")
             If EDITAR="S"
                Then CHAVEG=0
                     Controla_EdicaoV()
                Else If EXCLUIR="S"
                        Then If Checa_Supervisor()
                                Then If QuerExcluir("")
                                        Then Del
                                        Else UnLockRecord
                                     EndIf
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="ESC" Or Retval="PGDN":
           CHAVEG=9
           Del
           QuitLoop
      Case Retval="ENTER":
           If Not IsBlank([])
              Then DTVISITA=[]
                   Del
                   Locate CODIGO,DTVISITA
                   If Retval
                      Then CHAVEG=0
                      Else CHAVEG=1
                           End Down
                           [Data da Visita  ]=DTVISITA
                   EndIf
                   Quitloop
           EndIf
      EndSwitch
EndWhile
EndProc ; (ChaveVisita)

;*******************************************************************************
;* Rotina para Digitacao da Visita                                             *
;*******************************************************************************
Proc DIGITAVISITA()
Moveto [Visitado]
While True

      MsgPrompt =" Esc=Retornar "

      If CHAVEG=0
         Then MsgPrompt=MsgPrompt+ "Del=Excluir  "
      EndIf

      MSGCAMPO=Field()
      If Field()="Visitado"
         Then MSGCAMPO="Visitado (S=Sim)"
      EndIf

      Prompt MsgPrompt

      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35"

      Switch
      Case Retval="ESC":
           Switch
           Case Field()="Visitado":
                If QuerDesfazer("")
                   Then If CHAVEG=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                Endif
           Otherwise:
                Left
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEG=0
              Then If QuerExcluir("")
                      Then Del
                           CHAVEG=9
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="ENTER":
           Switch
           Case Field() = "Observacao":
                QuitLoop
           OtherWise:
                Right
           EndSwitch
      EndSwitch
EndWhile
EndProc   ;(DigitaVisita)

;*******************************************************************************
;* Rotina para Localizar Contato,Telefone,Equipamentos                         *
;*******************************************************************************
Proc CHAVEGER()
While True
      End
      SEQ=[Sequencia]
      Down
      Moveto [Sequencia]

      Prompt " Esc=Sair  F7=Paginar  "

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

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             Switch
               Case Opcao="10": PAGINA("\\Sistemas\\Os\\Cliecont","MR")
               Case Opcao="7" : PAGINA("\\Sistemas\\Os\\DestC3","MR")
             EndSwitch
             If EDITAR="S"
                Then CHAVEG=0
                     Switch
                       Case Opcao="10": Controla_EdicaoCONT()
                       Case Opcao="7" : Controla_EdicaoFONE()
                     EndSwitch
                Else If EXCLUIR="S"
                        Then If Checa_Supervisor()
                                Then If QuerExcluir("")
                                        Then Del
                                        Else UnLockRecord
                                     EndIf
                                Else UnLockRecord
                             EndIf
                         Else QuitLoop
                     EndIf
             EndIf
           EndWhile
      Case Retval="PGDN":
           CHAVEG=9
           Del
           QuitLoop
      Case Retval="ESC":
           CHAVEG=9
           Del
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([])
              Then SEQ=SEQ+1
                   []=SEQ
           EndIf
           SEQ=[]
           Del
           Locate CODIGO,SEQ
           If Retval
              Then CHAVEG=0
              Else CHAVEG=1
                   End Down
                   [Sequencia]=SEQ
                   SEQUENCIA=SEQ
           EndIf
           If IsLockRecord() Then Loop EndIf
           Quitloop
      EndSwitch
EndWhile
EndProc    ;(ChaveGer)

;*******************************************************************************
;* Rotina para Digitacao de Telefones                                          *
;*******************************************************************************
Proc DIGITAFONE()
Moveto [DDD]
While True

      MsgPrompt = " Esc=Retornar  "

      If CHAVEG=0
         Then MsgPrompt=MsgPrompt+ "Del=Excluir  "
      EndIf

      Prompt MsgPrompt


      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","PGDN"

      Switch
      Case Retval="ESC":
           Switch
           Case Field()="DDD":
                If QuerDesfazer("")
                   Then If CHAVEG=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                Endif
           Otherwise:
                Left
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEG=0
              Then If QuerExcluir("")
                      Then Del
                           CHAVEG=9
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="PGDN":
           If CHAVEG=0
              Then QuitLoop
           EndIf
      Case Retval="ENTER":
           If IsBlank([])
              Then Loop
           EndIf
           Switch
           Case Field() = "Numero":
                QuitLoop
           OtherWise:
                Right
           EndSwitch
      EndSwitch
EndWhile
EndProc ; (DigitaFone)

;*******************************************************************************
;* Rotina para Digitacao de Contatos                                           *
;*******************************************************************************
Proc DIGITACONT()
Moveto [Nome]
While True

  MsgPrompt = " Esc=Retornar  "

  If CHAVEG=0
     Then MsgPrompt=MsgPrompt+ "Del=Excluir  "
  EndIf

  Prompt MsgPrompt

  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","PGDN"

  Switch
  Case Retval="ESC":
       Switch
       Case Field()="Nome":
            If QuerDesfazer("")
               Then If CHAVEG=1
                       Then Del
                       Else Undo
                    EndIf
                    QuitLoop
            EndIf
       Case Field()="Data Nascimento":
            Left
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEG=0
          Then If QuerExcluir("")
                  Then Del
                       CHAVEG=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="PGDN":
       If CHAVEG=0
          Then QuitLoop
       EndIf
  Case Retval="ENTER":
       If IsBlank([])
          Then Loop
       EndIf
       Switch
       Case Field() = "Data Nascimento":
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DigitaCont)

;*******************************************************************************
;* Rotina para Localizar Contratos                                             *
;*******************************************************************************
Proc CHAVECONTRA()
Moveto "\\sistemas\\os\\DestC4"

UnLockRecord

While True
      End
      Down
      Moveto [Sequencia]

      Prompt " Esc=Sair  F7=Paginar "
                
      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","PGDN"

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             PAGINA("\\Sistemas\\Os\\DestC4","MR")
             If EDITAR="S"
                Then CHAVEG=0
                     CONTRATO=[Sequencia]
                     Controla_EdicaoCONTRAT()
                Else If EXCLUIR="S"
                        Then If Checa_Supervisor()
                                Then CONFIRMA()
                                     If OK="S"
                                        Then CONTRATO=[Sequencia]
                                             EXCLUSAOE()
                                        Else UnLockRecord
                                     EndIf
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="PGDN":
           CHAVEG=9
           Del
           QuitLoop
      Case Retval="ESC":
           CHAVEG=9
           Del
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([])
              Then Loop
           EndIf
           CONTRATO=[]
           Del
           Locate CODIGO,CONTRATO
           If Retval
              Then CHAVEG=0
              Else CHAVEG=1
                   End Down
                   [Sequencia]=CONTRATO
           EndIf
           Quitloop
      EndSwitch
EndWhile
EndProc    ;(ChaveContra)

;*******************************************************************************
;* Rotina para Digitacao de Contratos                                          *
;*******************************************************************************
Proc DIGITACONTRAT()
Moveto "Destinat"
[Contrato_OS]=CONTRATO

Moveto "\\Sistemas\\Os\\DestC4"
Locate CODIGO,CONTRATO

Moveto [Data Vencimento]
While True

      MsgPrompt = " Esc=Retornar F5=Observacao "

      If CHAVEG=0
         Then MsgPrompt=MsgPrompt+ "F8=Equipamentos Del=Excluir  "
      EndIf

      Prompt MsgPrompt

      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F8","F5"

      Switch
      Case Retval="F5" And CHAVE=0:
           N_Campo=Field()
           Edita_Memo("Observacao",10,01,09,76,"Observa‡”es Contrato")          
           Moveto Field N_Campo
      Case Retval="ESC":
           Switch
           Case Field()="Data Vencimento":
                If QuerDesfazer("")
                   Then If CHAVEG=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                EndIf
           Otherwise:
                Left
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="F8":
           IF CHAVEG=0
              Then RelEquip()
                   QuitLoop
           EndIf
      Case Retval="DEL":
           If CHAVEG=0
              Then If QuerExcluir("")
                      Then SEQDESTC4=[Sequencia]
                           EXCLUSAOE()
                           CHAVEG=9
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="ENTER":
           If IsBlank([])
              Then Loop
           EndIf
           Switch
           Case Field() = "Com Contrato":
                RelEquip()
                QuitLooP
           OtherWise:
                Right
           EndSwitch
      EndSwitch
EndWhile

Moveto "Destinat"
[Contrato_OS]=""

Moveto "\\Sistemas\\Os\\DestC4"

EndProc  ;(DigitaContrat)

;*******************************************************************************
;* Relacao de Equipamentos                                                     *
;*******************************************************************************
Proc RelEquip()
While True
   Moveto "\\Sistemas\\Os\\DestC5"
   CHAVEEQUIP()
   If CHAVEG=9
      Then QuitLoop
   Endif
   Controla_EdicaoE()
EndWhile
EndProc      ;(RelEqui)

;*******************************************************************************
;* Rotina para Localizar Equipamentos                                          *
;*******************************************************************************
Proc CHAVEEQUIP()

Moveto "\\Sistemas\\Os\\DestC5"
While True
      End
      SEQ=[Sequencia]
      Down
      Moveto [Sequencia]

      Prompt " Esc=Sair  F7=Paginar "

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

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             PAGINA("\\Sistemas\\Os\\DestC5","MR")
             If EDITAR="S"
                Then CHAVEG=0
                     Moveto [Sequencia]
                     SEQ=[Sequencia]
                     Controla_EdicaoE()
                Else If EXCLUIR="S"
                        Then If Checa_Supervisor()
                                Then If QuerExcluir("")
                                        Then Del
                                        Else UnLockRecord
                                     EndIf
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="ESC":
           CHAVEG=9
           Del
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([])
              Then SEQ=SEQ+1
                   []=SEQ
           EndIf
           SEQ=[]
           Del
           Locate CODIGO,CONTRATO,SEQ
           If Retval
              Then CHAVEG=0
              Else CHAVEG=1
                   End Down
                   [Sequencia Destc4]=CONTRATO
                   [Sequencia       ]=SEQ
           EndIf
           Quitloop
      EndSwitch
EndWhile
EndProc  ; (ChaveEquip)


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

TECLA = " Esc=Retornar  "
If CHAVEG=0
   Then TECLA=TECLA+ "Ctrl+Del=Excluir  "
EndIf
If INICIO_DIALOG=True
   Then SelectControl "C_Item"
        TECLA=TECLA+"F1=Tabelas  "
        INICIO_DIALOG=False
Endif
TEMP=True
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Disparo="EVENT":
           If DynArraySize(Evento) >0
               Then Switch
                       Case Evento["Type"]="KEY":
                            If Campo="C_Item"
                               Then TECLA=TECLA+"F1=Tabelas"
                            Endif
                           Switch
                              Case Evento["KeyCode"] = 9:
                                   TEMP=False
                              Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
                                   If CHAVEG=0
                                      Then If QuerExcluir("")
                                              Then Del
                                                   CHAVEG=9
                                                   CancelDialog
                                           EndIf
                                   EndIf
                              Case Evento["KeyCode"] = -59 :
                                   If Campo="C_Item"
                                         Then Window Handle Dialog to JANELA
                                         Window Move JANELA To 8,82
                                         If Campo="C_Item"
                                            Then Moveto [Codigo do Item]
                                                 ConsultaF1()
                                                 Echo Normal
                                         EndIf

                                         Window Handle Dialog to JANELA
                                         Window Move JANELA To 8,1
                                         echo off
                                         If Campo="C_Item"
                                            Then VSD_C_Item=[Codigo do Item   ]
                                                 VSD_D_Item=[Descricao do Item]
                                                 SelectControl "C_Item"
                                                 RefreshDialog
                                         Endif
                                   EndIf
                              Case Evento["KeyCode"] = 27:
                                   Switch
                                     Case Campo="C_Item":
                                          If QuerDesfazer("")
                                             Then If CHAVEG=1
                                                     Then Del
                                                     Else CopyFromArray RegItem
                                                  EndIf
                                                  CancelDialog
                                          EndIf
                                     Case Campo="N_Serie":
                                          TECLA=TECLA+"F1=Tabelas  "
                                          SelectControl "C_Item"
                                     Case Campo="CF_Tronco":
                                          SelectControl "N_Serie"
                                     Case Campo="CF_Ramal":
                                          SelectControl "CF_Tronco"
                                     Case Campo="CE_Tronco":
                                          SelectControl "CF_Ramal"
                                     Case Campo="CE_Ramal":
                                          SelectControl "CE_Tronco"
                                     Case Campo="CI_Tronco":
                                          SelectControl "CE_Ramal"
                                     Case Campo="CI_Ramal":
                                          SelectControl "CI_Tronco"
                                     Case Campo="C_onfiguracao":
                                          SelectControl "CI_Ramal"
                                     Case Campo="DT_Venda":
                                          SelectControl "C_onfiguracao"
                                     Case Campo="DT_Ativacao":
                                          SelectControl "DT_Venda"
                                     Case Campo="DT_Garantia":
                                          SelectControl "DT_Ativacao"
                                   EndSwitch
                              Case Evento["KeyCode"] = 13:
                                  Switch
                                     Case Campo="C_Item":
                                          VSD_C_Item=ControlValue("C_Item")
                                          If Isblank(VSD_C_Item)
                                             Then SelectControl "C_Item"
                                             Else VSD_C_Item=AlinhM(VSD_C_Item,10)
                                                  Moveto [Codigo do Item]
                                                  Ativa_Lookup()
                                                  Moveto [Codigo do Item]
                                                  Locate VSD_C_Item
                                                  If RetVal
                                                     Then VSD_C_Item=[Codigo do Item   ]
                                                          VSD_D_Item=[Descricao do Item]
                                                          RefreshDialog
                                                          SelectControl "N_Serie"
                                                          TECLA=" Esc=Retornar  "
                                                          If CHAVEG=0
                                                             Then TECLA=" Esc=Retornar  Alt+Del=Excluir  "
                                                          Endif
                                                     Else MENSAGEM ("Item Nao Cadastrado !")
                                                          VSD_C_Item=""
                                                          C_Item=""
                                                          RefreshDialog
                                                          SelectControl "C_Item"
                                                  Endif
                                                  Keypress "F2"
                                          Endif
                                     Case Campo="N_Serie":
                                          VSD_N_Serie=ControlValue("N_Serie")
                                          SelectControl "CF_Tronco"
                                     Case Campo="CF_Tronco":
                                          VSD_CF_Tronco=ControlValue("CF_Tronco")
                                          SelectControl "CF_Ramal"
                                     Case Campo="CF_Ramal":
                                          VSD_CF_Ramal=ControlValue("CF_Ramal")
                                          SelectControl "CE_Tronco"
                                     Case Campo="CE_Tronco":
                                          VSD_CE_Tronco=ControlValue("CE_Tronco")
                                          SelectControl "CE_Ramal"
                                     Case Campo="CE_Ramal":
                                          VSD_CE_Ramal=ControlValue("CE_Ramal")
                                          SelectControl "CI_Tronco"
                                     Case Campo="CI_Tronco":
                                          VSD_CI_Tronco=ControlValue("CI_Tronco")
                                          SelectControl "CI_Ramal"
                                     Case Campo="CI_Ramal":
                                          VSD_CI_Ramal=ControlValue("CI_Ramal")
                                          SelectControl "C_onfiguracao"
                                     Case Campo="C_onfiguracao":
                                          VSD_C_onfiguracao=ControlValue("C_onfiguracao")
                                          SelectControl "DT_Venda"
                                     Case Campo="DT_Venda":
                                          VSD_DT_Venda=ControlValue("DT_Venda")
                                          SelectControl "DT_Ativacao"
                                     Case Campo="DT_Ativacao":
                                          VSD_DT_Ativacao=ControlValue("DT_Ativacao")
                                          SelectControl "DT_Garantia"
                                     Case Campo="DT_Garantia":
                                          VSD_DT_Garantia=ControlValue("DT_Garantia")
                                          Ler_Grava_Item("Gravar")
                                          RefreshDialog
                                          CancelDialog
                                  EndSwitch
                           EndSwitch
                           TEMP=False
                   EndSwitch
          EndIf
  EndSwitch
  TEMP=True
EndIf
@ 24,0 ?? TECLA+Spaces(82-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Return TEMP
EndProc  ; (Digita_Equipamentos)

;*******************************************************************************
;* Rotina para Digitacao de Equipamentos                                       *                                                                     *
;*******************************************************************************
Proc DIGITAEQUIP()

INICIO_DIALOG=True

CopyToArray RegItem

Ler_Grava_Item("Ler")

VSD_N_Contrato=CONTRATO

Showdialog " Equipamentos " Proc "Digita_Equipamentos" @ 9,00 height 13 width 80

   Label  @ 0,00 "Seq." for "S_equencia"
   Accept @ 1,01  Width 4 "S" picture "#*#" Tag "S_equencia" to VSD_S_equencia
   Label  @ 0,06 "Item" for "C_Item"
   Accept @ 1,07  Width 13 "A10" picture "#*#" Tag "C_Item" to VSD_C_Item
   Accept @ 1,20  Width 33 "A30" picture "!*!" Tag "D_Item" to VSD_D_Item

   Label  @ 2,00 "Serie" for "N_Serie"
   Accept @ 3,01  Width 18 "A15" picture "!*!" Tag "N_Serie" to VSD_N_Serie
   Label  @ 2,20 "Final T/ " for "CF_Tronco"
   Accept @ 3,21  Width 7 "S" picture "#*#" Tag "CF_Tronco" to VSD_CF_Tronco
   Label  @ 2,29 "R " for "CF_Ramal"
   Accept @ 3,30  Width 6 "S" picture "#*#" Tag "CF_Ramal" to VSD_CF_Ramal
   Label  @ 2,37 "Equip T/ " for "CE_Tronco"
   Accept @ 3,38  Width 7 "S" picture "#*#" Tag "CE_Tronco" to VSD_CE_Tronco
   Label  @ 2,46 "R " for "CE_Ramal"
   Accept @ 3,47  Width 6 "S" picture "#*#" Tag "CE_Ramal" to VSD_CE_Ramal
   Label  @ 2,54 "Instal T/ " for "CI_Tronco"
   Accept @ 3,55  Width 8 "S" picture "#*#" Tag "CI_Tronco" to VSD_CI_Tronco
   Label  @ 2,64 "R " for "CI_Ramal"
   Accept @ 3,65  Width 6 "S" picture "#*#" Tag "CI_Ramal" to VSD_CI_Ramal

   Label  @ 4,00 "Configuracao" for "C_onfiguracao"
   Accept @ 5,01  Width 70 "A100" picture "!*!" Tag "C_onfiguracao" to VSD_C_onfiguracao

   Frame Double From 6,1 to 10,46
   @ 6,20 ?? " Data "
   Label  @ 7,02 "Venda" for "DT_Venda"
   Accept @ 8,03  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DT_Venda" to VSD_DT_Venda
   Label  @ 7,16 "Ativacao" for "DT_Ativacao"
   Accept @ 8,17  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DT_Ativacao" to VSD_DT_Ativacao
   Label  @ 7,30 "Garantia" for "DT_Garantia"
   Accept @ 8,31  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DT_Garantia" to VSD_DT_Garantia

Enddialog
EndProc   ;(DigitaEquip)

;*******************************************************************************
;* Rotina para Gravar Itens                                                    *
;*******************************************************************************
Proc Ler_Grava_Item(OP)

IF OP = "Ler"
   Then VSD_S_equencia   =[Sequencia          ]
        VSD_C_Item       =[Codigo do Item     ]
        VSD_D_Item       =[Descricao do Item  ]
        VSD_C_onfiguracao=[Configuracao       ]
        VSD_CF_Tronco    =[Capac_Final_Tronco ]
        VSD_CF_Ramal     =[Capac_Final_Ramal  ]
        VSD_CE_Tronco    =[Capac_Equip_Tronco ]
        VSD_CE_Ramal     =[Capac_Equip_Ramal  ]
        VSD_CI_Tronco    =[Capac_Instal_Tronco]
        VSD_CI_Ramal     =[Capac_Instal_Ramal ]
        VSD_N_Serie      =[Numero de Serie    ]
        VSD_DT_Venda     =[Data Venda         ]
        VSD_DT_Ativacao  =[Data Ativacao      ]
        VSD_DT_Garantia  =[Data Garantia      ]
   Else [Sequencia          ]=VSD_S_equencia
        [Codigo do Item     ]=VSD_C_Item
        [Descricao do Item  ]=VSD_D_Item
        [Configuracao       ]=VSD_C_onfiguracao
        [Capac_Final_Tronco ]=VSD_CF_Tronco
        [Capac_Final_Ramal  ]=VSD_CF_Ramal
        [Capac_Equip_Tronco ]=VSD_CE_Tronco
        [Capac_Equip_Ramal  ]=VSD_CE_Ramal
        [Capac_Instal_Tronco]=VSD_CI_Tronco
        [Capac_Instal_Ramal ]=VSD_CI_Ramal
        [Numero de Serie    ]=VSD_N_Serie
        [Data Venda         ]=VSD_DT_Venda
        [Data Ativacao      ]=VSD_DT_Ativacao
        [Data Garantia      ]=VSD_DT_Garantia
Endif
EndProc  ; (Ler_Grava_Item)


;*******************************************************************************
;* Exclusao de Equipamentos/Contrato                                           *
;*******************************************************************************
Proc EXCLUSAOE()

Moveto "Destinat"
[Contrato_OS]=CONTRATO

Moveto "\\Sistemas\\OS\\DestC5"
While Not RecordStatus("New")
  Del
EndWhile

Moveto "Destinat"
[Contrato_OS]=""

Moveto "\\Sistemas\\OS\\DestC4"
Locate CODIGO,CONTRATO
Del

EndProc  ;(Exclusao)


;*******************************************************************************
;* 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       =AlinhM([Cliente_Inicial],4)
PARAM_FINAL         =AlinhM([Cliente_Final  ],4)
ClearImage

EndProc ; (Carrega_Parametros)

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

ANT_TAB   = Table()          
ANT_FIELD = Field()

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

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

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

PESSOA_ALTERADO=False

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

Return PESSOA_ALTERADO

EndProc ;Verifica_Registro_OldNew()   

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoV()
DIGITAVISITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoCONT()
DIGITACONT()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoCONTRAT()
DIGITACONTRAT()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoFONE()
DIGITAFONE()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoE()
DIGITAEQUIP()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

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

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

While True
   OPCAO=""
   DIGITA()
   If CHAVE=9
      Then Quitloop
   EndIf

   Moveto"Destinat"
   Switch
      Case OPCAO = "1":
           ENDERECO()
      Case OPCAO = "2":
           FICHA()
      Case OPCAO = "4":
           COMPLEMENTO()
      Case OPCAO = "5":
           UnLockRecord
           KeyPress "F7"
           PickForm "8"
           Moveto [Codigo]
           Locate CODIGO
           Moveto "DestAut"  
           While True
             Chave_A()
             If ChaveA=9 Then QuitLoop EndIf
             Controla_EdicaoA()
           EndWhile
      Case OPCAO = "9":
           UnLockRecord
           PickForm "11"
           Moveto "\\Sistemas\\OS\\DestC6"
           While True
                CHAVEVISITA()
                If CHAVEG=9
                   Then QuitLoop
                EndIf
                Controla_EdicaoV()
           EndWhile
      Case OPCAO = "10":
           UnLockRecord  
           PickForm "11"     
           Moveto "\\Sistemas\\OS\\ClieCont"
           While True
                CHAVEGER()
                If CHAVEG=9
                   Then QuitLoop
                EndIf
                Controla_EdicaoCONT()
           EndWhile
      Case OPCAO = "11":
           UnLockRecord 
           PickForm "11"
           Moveto "\\Sistemas\\OS\\DestC4"
           While True
                CHAVECONTRA()
                If CHAVEG=9
                   Then QuitLoop
                EndIf
                Controla_EdicaoCONTRAT()
           EndWhile
      Case OPCAO = "7":
           UnLockRecord
           PickForm "11"
           Moveto "\\Sistemas\\OS\\DestC3"
           While True
                CHAVEGER()
                If CHAVEG=9
                   Then QuitLoop
                EndIf
                Controla_EdicaoFONE()
           EndWhile

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

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

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO=""  EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""   EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S" EndIf

sys_Valor()

Carrega_Parametros()

View NoWindow "\\Sistemas\\OS\\DestC4"

View NoWindow "End_Cob"
View NoWindow "Fichacli"
View NoWindow "ListFone"
View NoWindow "DestInfo"
View NoWindow "ListFone"
View NoWindow "DestObs"
SetHighLight Current Record 112 Field 51
View NoWindow "Represen"
CoEdit NoWindow "Destinat"
If PARAM_CGC_CLIENTE="S"
   Then PickForm "10"
        OPCAO_FORM="10"
   Else PickForm "F"
        OPCAO_FORM="F"
EndIf
AUX=""
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
