;** DestFor  *******************************************************************
;*  Manutencao Cadastro de Fornecedores                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 24/11/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Novos campos SAPI
;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: 29/06/2009 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao Novos Campos/Layout
;Ultima Alteracao: 27/11/2009 por Bruno Carvalho
;Motivo Alteracao: Desabilitado o Campo SAPI
;Ultima Alteracao: 12/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes MsgCampo
;Ultima Alteracao: 15/03/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 30/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Enter Cidades
;Ultima Alteracao: 20/04/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado Lista_Telefonica() e Remocao da ListFone 
;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: 13/09/2010 por Karina Andrade
;Motivo Alteracao: Add Campo Regime_Tributario  e MSGCAMPO Telefone
;Ultima Alteracao: 14/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 15/11/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cadastro por CGC            
;Ultima Alteracao: 06/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes nos campos UF e IE
;Ultima Alteracao: 29/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 05/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Regime Tributario
;Ultima Alteracao: 05/12/2011 por Karina Andrade
;Motivo Alteracao: Validando IE PF e PJ diferente de ISENTO
;Ultima Alteracao: 20/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao regime tributario DEBITO E CREDITO
;Ultima Alteracao: 28/01/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes visualizar em ordem de c˘digo/nome + fun‡Ćo

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

While True

  Switch
    Case ORDENARPOR="NOME" :
      Moveto [Razao Social]
      Menu {Image} {OrderTable} Enter {Razao Social}  
    OtherWise              :
      Moveto [Codigo]
      Menu {Image} {OrderTable} Enter {Codigo}  
  EndSwitch

  End
  SEQ=[Codigo]

  If OPCAO_FORM="F"
    Then Down
    Else PgDn
  EndIf

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

  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()

  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
           "Ordenar nome/razĆo social": " Ordenar por nome/razĆo social    " : "ORD_NOME",
           "Ordenar c˘digo           ": " Ordenar por c˘digo               " : "ORD_COD",
           Separator,
           "~C~ancelar               ": " Cancelar a Opera‡„o              " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off
          
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf                                         
          RetVal=MenuVar
          
          Switch
            Case MenuVar="ORD_COD"  : ORDENARPOR="CODIGO" QuitLoop
            Case MenuVar="ORD_NOME" : ORDENARPOR="NOME"   QuitLoop
          EndSwitch
          
  EndIf
  
  Switch
   Case RetVal=-94 : MsgTeclasPadrao()
   Case RetVal="F3":
        If OPCAO_FORM="F"
           Then OPCAO_FORM="1"
           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 "1"
                  CHAVE=0
                  Controla_EdicaoC()
             Else If EXCLUIR="S"
                    Then If [Tipo]<>"F"
                            Then MENSAGEM("Tipo de Registro inv lido (Somente Fornecedores)")
                                 UnLockRecord
                            Else If Checa_Supervisor()
                                    Then If QuerExcluir("deste fornecedor")
                                            Then PickForm "1"
                                                 EXCLUSAO()
                                            Else UnLockRecord
                                         EndIf
                                    Else UnLockRecord
                                 EndIf
                                 If OPCAO_FORM="1"
                                    Then PickForm "1"
                                    Else PickForm "F"
                                 EndIf
                         EndIf
                    Else QuitLoop
                  EndIf
          EndIf
          SetaPosForm()
        EndWhile
        QuitLoop
   Case Retval="ESC":
        CHAVE=9
        Del
        Return  
   Case Retval="ENTER":
        If PARAM_CGC_FORNECEDOR="S"
           Then CGC=[]
                If IsBlank(CGC)                     Then Loop EndIf
                If Not Checa_CGC_CPF_Formatado(CGC) Then Loop EndIf
                Del
                If PARAM_CGC_CLIENTE="S"
                   Then Locate CGC
                   Else Moveto [Tipo]
                        Locate IndexOrder by "tipo_cgc" "F",CGC
                EndIf
                If Retval
                   Then CODIGO=[Codigo]
									 Else 
                        Moveto [Codigo]
                        Menu {Image} {OrderTable} Enter {Codigo}  
                        
                        CODIGO=Checa_Codigo("")
                        If IsBlank(CODIGO)
                           Then QuitLoop
                        EndIf   
								EndIf
           Else CGC=""
                
                CODIGO=[Codigo]
                Del

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

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

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

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

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

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

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

Return cod 
EndProc

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

If IsBlank(PARAM_INICIAL) Or PARAM_INICIAL="0000"

   Then PARAM_INICIAL="0001"
EndIf

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

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

EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Switch
  Case Search(".",[CGC])=4: [Tipo Pessoa]="FISICA"
  Case Search(".",[CGC])=3: [Tipo Pessoa]="JURIDICA"
EndSwitch
CONTA=[Conta Contabil]
Moveto [Nome Fantasia EmitDest]

While True

      If [Tipo]<>"F"
         Then Echo Normal
              Echo Off
              MENSAGEM("Tipo de Registro inv lido (Somente Fornecedores)")
              Chave=9
              QuitLoop
      EndIf

      TECLA=" Esc=Retornar  "

      If Field()="Codigo CCusto"            Or
         Field()="Codigo Plano_Conta"       Or
         Field()="Codigo Atividade"         Or
         Field()="Cidade"                   Or
         Field()="Pais"                     Or
         Field()="UF"                       Or
         Field()="Codigo da Transportadora" Or
         Field()="Codigo Transp_Redespacho" Or
         Field()="Regime_Tributario"
;         Field()="SAPI_Beneficio Fiscal"    Or
;         Field()="SAPI_ME_EPP"
         Then TECLA=TECLA+"F1=Tabelas  "
         Else TECLA=TECLA+"            "
      Endif

      TECLA=TECLA+"F5=Obs  "

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

      Prompt TECLA

      MSGCAMPO=""
      Switch
        Case Field()="Inativo"                : MSGCAMPO="Fornecedor Inativo ? (Sim/N„o)"
        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()="CGC"                    : MSGCAMPO="Formatos: [ CPF ###.###.###-## ] ou [ CNPJ ##.###.###/####-## ]"
        Case Field()="IE"                     : MSGCAMPO="Informe o N§ ou ISENTO p/ Inscri‡„o Estadual"
        Case Field()="IE_ST"                  : MSGCAMPO="Informe a Inscri‡„o Estadual do Sust. Tribut rio"
        Case Field()="IM"                     : MSGCAMPO="Informe o N§ ou ISENTO p/ Inscri‡„o Municipal"
        Case Field()="RG"                     : MSGCAMPO="Informe o Registro Geral"
        Case Field()="ISUFRAMA"               : MSGCAMPO="Informe a Inscri‡„o SUFRAMA"
        Case Field()="CNAE"                   : MSGCAMPO="Informe o CNAE"
        Case Field()="Data_Cadastro"          : MSGCAMPO="Data do Cadastro do Fornecedor"
        Case Field()="Codigo CCusto"          : MSGCAMPO="Codigo do Centro de Custo"
        Case Field()="Codigo Plano_Conta"     : MSGCAMPO="Codigo do Plano de Conta"
        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()="SAPI_Beneficio Fiscal"  : MSGCAMPO="(SAPI MG) Beneficio Fiscal, Consulte[F1]"
;        Case Field()="SAPI_ME_EPP"            : MSGCAMPO="(SAPI MG) Tipo de empresa do Fornecedor, Consulte[F1]"
        Case Field()="Regime_Tributario"      : MSGCAMPO="Regime Tribut rio"     
      EndSwitch

      Wait Field
           Message MSGCAMPO
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","F5","PGDN"

      Switch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case RetVal="F1":
           If Field()="Codigo CCusto"            Or
              Field()="Codigo Plano_Conta"       Or
              Field()="Cidade"                   Or
              Field()="Pais"                     Or
              Field()="Codigo Atividade"         Or
              Field()="Codigo da Transportadora" Or
              Field()="UF"
              Then If CONSULTAF1()
                      Then If Field()="Cidade"
                              Then [UF  ]=Reg_ConsultaF1["UF"]
                                   [Pais]=Reg_ConsultaF1["Pais"]
                           EndIf
                   EndIf        
           Endif   
;           If Field()="SAPI_Beneficio Fiscal"
;              Then vrold=[]
;                   ShowPopup " Op‡”es Beneficio Fiscal " CENTERED
;                    "~0~ UF=MG/EX            " : " No estado MG ou exporta‡„o = 0            " : "0",
;                    "~1~ Com Beneficio Fiscal" : " Fora do estado MG com beneficio fiscal = 1" : "1",
;                    "~2~ Sem Beneficio Fiscal" : " Fora do estado MG sem beneficio fiscal = 2" : "2",
;                    "~C~ancelar"               : " Cancelar a Opera‡„o"                        : "CANCELAR"
;                   EndMenu
;                   To MenuVar
;                  echo off

;                   If MenuVar="CANCELAR" or MenuVar="Esc"
;                       Then []=vrold
;                            Loop
;                   EndIf

;                   []=MenuVar

;           EndIf
;           If Field()="SAPI_ME_EPP"
;              Then vrold=[]
;                   ShowPopup " Op‡”es Tipo Fornecedor " CENTERED
;                    "~0~ UF =MG/EX         " : " No estado MG ou exporta‡„o = 0                                           " : "0",
;                    "~1~ UF<>MG e =ME/EPP  " : " Fora do estado MG e igual a Microempresa ou Empresa pequeno porte = 1    " : "1",
;                    "~2~ UF<>MG e <>ME/EPP " : " Fora do estado MG e diferente de Microempresa e Empresa pequeno porte = 2" : "2",
;                    "~C~ancelar"             : " Cancelar a Opera‡„o"                                                       : "CANCELAR"
;                   EndMenu
;                    To MenuVar
;                   echo off

;                   If MenuVar="CANCELAR" or MenuVar="Esc"
;                       Then []=vrold
;                            Loop
;                   EndIf

;                   []=MenuVar

;           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()="Regime_Tributario"
              Then
                   Echo Normal
                   Echo Off
                   ShowPopup " Regime Tribut rio " CENTERED
                    "~S~imples Nacional"      : " Simples Nacional"                                        : "SIMPLES NACIONAL",
                    "Simples Nacional ~E~SRB" : " Simples Nacional - Exesso de sublimite de receita bruta" : "SIMPLES NAC. ESRB",
                    "~D~‚bito e cr‚dito"      : " Regime de d‚bito e cr‚dito                             " : "DEBITO E CREDITO",
                    "~O~utros"                : " Outros Regimes"                                          : "OUTROS",
                    "~C~ancelar"              : " Cancelar a Opera‡„o"                                     : "CANCELAR"
                   EndMenu
                   To MenuVar
                   Echo Off

                  If MenuVar="CANCELAR" or MenuVar="Esc"
                      Then Loop
                      Else []=MenuVar
                  EndIf
           EndIf

      Case Retval="F5":
           OBSERVACAO()
      Case Retval="PGDN" And CHAVE=0:
           [Data da Manutencao]=Today()
           [Hora da Manutencao]=Time()
           [Chapa             ] =  SYS_CHAPA_USUARIO
           Lista_Telefonica()
           CHAVE=9
           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()="Inativo"                      : Moveto [Data_Cadastro]
           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()="Telefone"                     : Moveto [Pais]
           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()="IE"                           :
                If [UF]="EX" Then [IE]="ISENTO" EndIF
                If PARAM_CGC_FORNECEDOR="S"
                   Then Moveto [Pagina_Web]
                   Else Moveto [CGC]
                EndIf
           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 Plano_Conta"           :
                If IsBlank([])
                   Then [Descricao Plano_Conta]=""
                EndIf
                Moveto [Conta Contabil]
           Case Field()="Codigo CCusto"                :
                If IsBlank([])
                   Then [Descricao CCusto]=""
                EndIf
                Moveto [Codigo Plano_Conta]
           Case Field()="Codigo Atividade":
                If IsBlank([])
                   Then [Descricao Atividade]=""
                EndIf
                Moveto [Codigo CCusto]
           Case Field()="Codigo da Transportadora":
                If IsBlank([])
                   Then [Nome Fantasia Transport]=""
                EndIf
                Moveto [Codigo Atividade]

           Case Field()="Codigo Transp_Redespacho":
                If IsBlank([])
                   Then [Nome Fantasia Redespacho]=""
                EndIf
                Moveto [Codigo da Transportadora]
           Case Field()="Regime_Tributario":
                Moveto [Codigo Transp_Redespacho] 
           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 [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 [Telefone]
           Case Field()="Telefone" : Moveto [Celular      ]
           Case Field()="Celular"  : Moveto [Fax          ]
           Case Field()="Fax"      : Moveto [Endereco_Eletronico]
           Case Field()="Endereco_Eletronico" : Moveto [Pagina_Web]
                If Not IsBlank([Endereco_Eletronico])
                   Then [Endereco_Eletronico]=Lower([Endereco_Eletronico])
                EndIf
           Case Field()="Pagina_Web"          : 
                If Not IsBlank([Pagina_Web])
                   Then [Pagina_Web]=Lower([Pagina_Web])
                EndIf
                If PARAM_CGC_FORNECEDOR="S"
                   Then  Moveto [IE]
                   Else  Moveto [CGC]
                EndIf   

           Case Field()="CGC":
                If IsBlank([]) Then Loop EndIf
                If Not Checa_CGC_CPF_Formatado([]) Then Loop EndIf
                Switch
                  Case Search(".",[CGC])=4: [Tipo Pessoa]="FISICA"
                  Case Search(".",[CGC])=3: [Tipo Pessoa]="JURIDICA"
                EndSwitch
                If [Tipo Pessoa]="FISICA"
                   Then [Regime_Tributario]="OUTROS"
                EndIf
                Moveto [IE]
           Case Field()="IE":
                If IsBlank([]) Then Loop EndIf
                If [UF]="EX" Then [IE]="ISENTO" EndIf
                ;If [Tipo Pessoa]="JURIDICA"
                ;   Then 
                        If []<>"ISENTO"
                           Then Aguarde("Validando IE")
                                If Not Valida_IE([],[UF])
                                   Then LimpAguarde()
                                        Loop
                                EndIf
                                LimpAguarde()
                        EndIf  
                ;EndIf
                Moveto [RG]
           Case Field()="RG"                  : Moveto [IM]       
           Case Field()="IM"                  : Moveto [IE_ST]
           Case Field()="IE_ST"               : Moveto [CNAE]
           Case Field()="CNAE"                : Moveto [ISUFRAMA]
           Case Field()="ISUFRAMA"            : Moveto [Conta Contabil]
           Case Field()="Conta Contabil"      : Moveto [Codigo Plano_Conta]
           Case Field()="Codigo Plano_Conta":
                If IsBlank([])
                   Then [Descricao Plano_Conta]=""
                EndIf
                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 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 [Regime_Tributario]
           Case Field()="Regime_Tributario":
                If IsBlank([]) Then []="OUTROS" EndIf
                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 fornecedor")
                              Then EXCLUSAO()
                                   CHAVE=9
                                   QuitLoop
                           EndIf
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc

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

UnLockRecord
KeyPress "F7"

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

Moveto "Destinat"
KeyPress "F7"
Return True

EndProc ;Lista_Telefonica

;*******************************************************************************
;* Rotina para Localizar Registro Table  OsSolic                               *
;*******************************************************************************
Proc Observacao()
CampoAnt=Field()

Moveto "DestObs"
Moveto [Codigo]
Locate [Destinat->Codigo]
If Not RetVal
   Then End Down
        [Codigo]=[Destinat->Codigo]
Endif

Edita_Memo("Observacoes",08,01,15,76,"Observa‡”es")

If IsBlank([Observacoes])
    Then Del
EndIf
Moveto "Destinat"
Moveto Field CampoAnt
EndProc  ; (Observacao)

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

If [Tipo]<>"F"
   Then If Not IsBlank([Tipo])
           Then MENSAGEM("Tipo de Registro Invalido (Somente Fornecedores)")
                Return
        EndIf
EndIf

Moveto"Destinat"
ResyncKey
UnLockRecord

KeyPress "F7"

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

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

Moveto "Destinat"
Del

PickForm "1"

EndProc  ; (Exclusao)

;*******************************************************************************
;* Rotina Substitui                                                            *
;*******************************************************************************
Proc Carrega_Parametros()
View NoWindow "P_Dest"
If IsEmpty("P_Dest")
   Then CoEditKey
        [Utiliza_CGC_Fornecedor]="N"
        Do_It!
EndIf
PARAM_CGC_FORNECEDOR=[Utiliza_CGC_Fornecedor]
PARAM_CGC_CLIENTE   =[Utiliza_CGC_Cliente]
PARAM_REUTILIZA     =[Reutiliza_Cod  ]
PARAM_INICIAL       =[Fornecedor_Inicial]
PARAM_FINAL         =[Fornecedor_Final  ]
ClearImage

EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
While True
  If CHAVE=9 Then QuitLoop EndIf
  DIGITA()
  Moveto"Destinat"
  UnLockRecord
  PickForm "1"
  Moveto [Codigo]
  Locate CODIGO
  Moveto [Nome Fantasia EmitDest]
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc

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

Carrega_Parametros()
View NoWindow "DestObs"
View NoWindow "ListFone"

CoEdit "Destinat"
PickForm "F"

OPCAO_FORM="F"
ORDENARPOR="NOME"

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