;** 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
;Ultima Alteracao: 21/01/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes IE = NAOCONTRIBUINTE
;Ultima Alteracao: 26/04/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Busca_Cep() p/ buscar o endere‡o, bairro, cidade e estado (quando houver)
;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: 02/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Regime tributario outros
;Ultima Alteracao: 03/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo travar Regime tributario outros
;Ultima Alteracao: 08/11/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes vari vel MSGCAMPO
;Ultima Alteracao: 10/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes fun‡äes
;Ultima Alteracao: 16/02/2017 por Kamila Gomes
;Motivo Alteracao: Adicionada consulta de CNPJ no Sintegra
;Ultima Alteracao: 18/08/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Cadastro de Email" -> op‡Æo Alt +E
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 03/10/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes estados que nÆo possuem consulta de cadastro na Sefaz
;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: 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: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 28/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste chave de cadastro por CNPJ/CPF unico quando invalido permitido alterar 

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

  MSGCAMPO=""
  TECLA=""
  if field()="CGC"
     then MSGCAMPO="Informe um CNPJ ou CPF v lido !       "
  endif   
  
  AguardaTeclasPadrao()

  If RetVal=-33
     Then Echo Normal
          Echo Off
          
          opcao3="."  dopcao3=""  ropcao3="Esc"
          
          Switch
             Case PARAM_CONS_SINTEGRA = "S" And (Verifica_Consulta_Ativa()) :
                  opcao3="F9 Desativa Consulta ~S~integra"  dopcao3=" Desativa Consulta Sintegra"  ropcao3="F9"
             Case PARAM_CONS_SINTEGRA = "S" And not (Verifica_Consulta_Ativa()) :
                  opcao3="F9 Ativa Consulta ~S~integra"  dopcao3=" Ativa Consulta Sintegra"  ropcao3="F9"
           EndSwitch
          
          ShowPopup " Fun‡”es " CENTERED
           "Ordenar nome/razÆo social": " Ordenar por nome/razÆo social    " : "ORD_NOME",
           "Ordenar c¢digo           ": " Ordenar por c¢digo               " : "ORD_COD",
           Separator,
           Opcao3                     : dopcao3                              : ropcao3,
           "~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 not ChecaTipoDeRegistro()
                            Then 
                                 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="F9" :
        Del
        End PgDn PgDn
        If Verifica_Consulta_Ativa()
          then FileWrite  PrivDir()+"Sintegra.ini"  From  "[Certificado]"+"\n"
               FileWrite  Append PrivDir()+"Sintegra.ini"  From  "Ativa=\"N\""+"\n"
               Fastmsg("Consulta Sintegra Desativada !")
          else FileWrite  PrivDir()+"Sintegra.ini"  From  "[Certificado]"+"\n"
               FileWrite  Append PrivDir()+"Sintegra.ini"  From  "Ativa=\"S\""+"\n"
               Fastmsg("Consulta Sintegra Ativada !")
        EndIf
        FileWrite  Append PrivDir()+"Sintegra.ini"  From  "NumSerie="+"\n"
        CHAVE=5
        Return
   Case Retval="ESC":
        CHAVE=9
        Del
        Return  
   Case Retval="ENTER": 
        If PARAM_CGC_FORNECEDOR="S"
           Then CGC=[]
                If IsBlank(CGC)                     Then fastmsg("Valor inv lido!") Loop EndIf
                If Not Checa_CGC_CPF_Formatado(CGC) Then Loop EndIf
                Del
                If PARAM_CGC_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 tipo de registro                                    *
;*******************************************************************************
Proc ChecaTipoDeRegistro()
private msg, msg1

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

return true
EndProc

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

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc



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

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

VSD_UF_Consulta=[Destinat->UF]

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

  If not RetVal 
    Then Temp_ok = False
         QuitLoop 
  EndIf

  If Not Checa_Estado(VSD_UF_Consulta)
     Then Loop
  EndIf      
  QuitLoop

EndWhile

UnLockRecord
Moveto "Destinat"
FormKey
LockRecord

Return Temp_ok
EndProc  ; (UF_Consulta)

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

ACHOU_DADOS_SINTEGRA = False
SITSINTEGRA = ""

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

EndProc ;(Pega_Dados_Sintegra)

;*******************************************************************************
;* Rotina 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"] = 27:
           Temp=False

   EndSwitch
EndIf
RefreshDialog
SelectControl Campo
TECLA="Esc=Retornar                                                     "

MontaRodapeSD(MSGCAMPO, TECLA)

Return TEMP

EndProc   ; (Geral_Dialog)

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

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

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

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

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

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

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

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

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

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

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

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

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

VSD_SIN_UF         =VSD_UF_Consulta

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

UnLockRecord
Moveto "Destinat"
FormKey
LockRecord

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

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

Enddialog

EndProc ;(Mostra_Dados_Sintegra)

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

If CHAVE = 1 Then Pega_Dados_Sintegra() EndIf

If Not IsAssigned(ALTERA_CPF)                                                   
   Then ;;if (SYS_CODIGO_CLIENTE="0358" ) And
        if PARAM_CGC_FORNECEDOR="S" And
           ([CGC]="000.000.000-00"      Or [CGC]="111.111.111-11"      Or 
            [CGC]="00.000.000/0000-00"  Or [CGC]="11.111.111/1111-11"  Or (Not Checa_CGC_CPF_Formatado([CGC])))
            Then ALTERA_CPF=True  
            Else ALTERA_CPF=False        
        EndIf
EndIf

Moveto [Nome Fantasia EmitDest]

While True

      Tecla = " Esc=Retornar  "
      If CHAVE=0
         Then Tecla=Tecla+"Del=Excluir  Alt+F=Fun‡”es  PgDn=Finalizar  " 
         Else Tecla=Tecla+"             Alt+F=Fun‡”es  PgDn=Finalizar  "
      EndIf
      MSGCAMPO=Field()

      If not ChecaTipoDeRegistro()
         Then Chave=9
              QuitLoop
      EndIf
      
      Switch
        Case Field()="Inativo"                : MSGCAMPO="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

      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"
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      Endif

      Prompt TECLA

      Wait Field
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","F5","F9","PGDN",-33,-18

     If RetVal=-33   
        Then MSGCAMPO=""
             
             Echo Normal
             Echo Off

             opcao3="."  dopcao3=""  ropcao3="Esc"
             
             If PARAM_CONS_SINTEGRA = "S" And (Verifica_Consulta_Ativa()) 
                Then opcao3="F9 Consulta ~S~integra"  dopcao3=" Consulta Sintegra"  ropcao3="F9"
             EndIf
             
             ShowPopup " Fun‡”es " CENTERED
              "F5 ~O~bserva‡”es           " : " Observa‡”es            ":"F5",
              Opcao3                        : dopcao3                   : ropcao3,
              separator,
              "Outros Email               ": " Inclus„o/altera‡„o de outros email" : "Alt+E",
              separator,
              "~C~ancelar                 " : " Cancelar a Opera‡„o    ": "CANCELAR"
            EndMenu
            To MenuVar
            echo off

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

             RetVal=MenuVar
      EndIf

      Switch
      Case RetVal=-18 Or RetVal="Alt+E" : EMAIL_PARAM_ROTINA="DESTINAT" 
                                          Play "\\Sistemas\\Cadastro\\DestMail"
      Case Retval="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, Isento ou Imune" : " Outros Regimes, Isento ou Imune"                         : "OUTROS",
                    "~C~ancelar"                : " Cancelar a Opera‡„o"                                     : "CANCELAR"
                   EndMenu
                   To MenuVar
                   Echo Off

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

      Case Retval="F5":
           OBSERVACAO()
      Case Retval="F9" And CHAVE=0 : 
           Pega_Dados_Sintegra()
      Case Retval="PGDN" And CHAVE=0:
           If Not Checa_Dados()
              Then Loop
           EndIf   

           [Data da Manutencao]=Today()
           [Hora da Manutencao]=Time()
           [Chapa             ] =  SYS_CHAPA_USUARIO
           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()="CEP"                          : Moveto [Contato]
           Case Field()="Endereco"                     : Moveto [CEP]
           Case Field()="Bairro"                       : Moveto [Endereco]
           Case Field()="Cidade"                       : Moveto [Bairro]
           Case Field()="UF"                           : Moveto [Cidade]
           Case Field()="Pais"                         : Moveto [UF]
           Case Field()="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" And Not ALTERA_CPF
                   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 [CEP]
           Case Field()="CEP"      : Moveto [Endereco]
                If Not Isblank([CEP]) And CHAVE = 1 And not ACHOU_DADOS_SINTEGRA
                   Then Busca_Cep([CEP])
                        [Endereco] = BUSCA_CEP_ENDERECO
                        [Bairro  ] = BUSCA_CEP_BAIRRO
                        [Cidade  ] = BUSCA_CEP_CIDADE
                        [UF      ] = BUSCA_CEP_UF
                        [Pais    ] = BUSCA_CEP_PAIS
                        Release Vars BUSCA_CEP_ENDERECO, BUSCA_CEP_BAIRRO, BUSCA_CEP_CIDADE, BUSCA_CEP_UF, BUSCA_CEP_PAIS
                EndIf
           Case Field()="Endereco" : Moveto [Bairro]
           Case Field()="Bairro"   : Moveto [Cidade]
           Case Field()="Cidade":
                If IsBlank([]) Then Loop EndIf                          
                Moveto [Uf]
           Case Field() = "UF":
                If IsBlank([]) Then Loop EndIf                
                If Not IsBlank([Cidade])
                    Then Moveto [Cidade]
                         Ativa_Lookup()
                         Moveto [Cidade]
                         Locate [Destinat->Cidade],[Destinat->UF]
                         If RetVal
                            Then VSD_Cidade=[Cidade ]
                                 VSD_UF=[UF]
                                 KeyPress "ESC"
                                 Moveto "Destinat"
                                 [Cidade]=VSD_Cidade
                                 [UF]=VSD_UF
                                 If [UF] = "EX"
                                    Then [IE]="ISENTO"
                                 EndIf
                                 Moveto [Pais]                                             
                            Else Mensagem("Cidade n„o Cadastrada !")
                                 VSD_Cidade=""                                 
                                 KeyPress "ESC"
                                 Moveto [Cidade]
                         EndIf
                         Echo Off                 
                EndIf 
           Case Field() = "Pais":
                If IsBlank([]) Then
                   []="BRASIL"
                EndIf
                Moveto [Telefone]
           Case Field()="Telefone" : Moveto [Celular      ]
           Case Field()="Celular"  : Moveto [Fax          ]
           Case Field()="Fax"      : Moveto [Endereco_Eletronico]
           Case Field()="Endereco_Eletronico" : Moveto [Pagina_Web]
                If Not IsBlank([Endereco_Eletronico])
                   Then EMAIL_PARAM_AUTOMATICO=True
                        Play "\\Sistemas\\Cadastro\\DestMail"
                EndIf
           Case Field()="Pagina_Web"          : 
                If Not IsBlank([Pagina_Web])
                   Then [Pagina_Web]=Lower([Pagina_Web])
                EndIf

                CGC_ANT=[CGC]
                If PARAM_CGC_FORNECEDOR="S" And Not ALTERA_CPF 
                   Then Moveto [IE]
                   Else Moveto [CGC]
                EndIf                              

           Case Field()="CGC":
                If IsBlank([]) Then Loop EndIf
                
                if [UF]="EX"
                   then if [CGC]<>"00.000.000/0000-00" and
                           [CGC]<>"000.000.000-00" 
                           then Fastmsg("Pessoa do Exterior use 00.000.000/0000-00 ou 000.000.000-00 !")
                                Loop
                           else [IE               ]="ISENTO" 
                                [Regime_Tributario]="OUTROS"
                                [CEP              ]="00.000-00"    
                        endif   
                   else
                        If Not Checa_CGC_CPF_Formatado([]) Then Loop EndIf

                        If ALTERA_CPF And CGC_ANT<>[CGC] And CGC_ANT<>"" 
                           Then CGC=[CGC]   
                                NAO_ALTERA_CGC=False
                                Home 
                                Moveto [CGC]
                                Locate CGC
                                If RetVal  
                                   Then While CGC=[CGC]  
                                          If [Tipo]="F"
                                             Then If [Codigo]<>CODIGO
                                                     Then NAO_ALTERA_CGC=True
                                                          QuitLoop
                                                  EndIf
                                          EndIf        
                                          Skip
                                          If EOT() Then Quitloop EndIf
                                          Locate Next CGC
                                          If Not RetVal
                                             Then QuitLoop
                                          EndIf
                                        EndWhile
                                        Moveto [Codigo]
                                        Locate CODIGO
                                        If NAO_ALTERA_CGC
                                           Then Mensagem("CPF/CNPJ esta sendo utilizado em outro cadastro !// //Verificar !")
                                                Moveto [CGC]
                                                []=CGC_ANT
                                                Loop         
                                        EndIf        
                                EndIf 
                        EndIf

                endif
                
                Switch
                  Case Search(".",[CGC])=4: [Tipo Pessoa]="FISICA"
                  Case Search(".",[CGC])=3: [Tipo Pessoa]="JURIDICA"
                EndSwitch
                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 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 Fastmsg("Regime inv lido !") loop 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 Checa Dados                                                          *
;*******************************************************************************
Proc Checa_Dados()
Private Ok

Ok=True
Switch
  Case IsBlank([CGC])                            : Mensagem("CPF ou CNPJ inv lido! ")
                                                   Ok = False 
  Case IsBlank([IE])                             : Mensagem("IE inv lido! ")
                                                   Ok = False 
  Case IsBlank([Regime_Tributario])              : Mensagem("Regime tribut rio inv lido! ")
                                                   Ok = False
  Case [UF]<>"EX" and Not Checa_CGC_CPF_Formatado([CGC])        : Ok = False 
EndSwitch
If Not Ok
   Then Return False
EndIf

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

Return Ok
EndProc ;Checa_Dados()

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

if sys_codigo_cliente="0431"
   then return true
endif

UnLockRecord
KeyPress "F7"

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

Moveto "Destinat"
KeyPress "F7"
Return True

EndProc ;Lista_Telefonica

;*******************************************************************************
;* Rotina 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",09,01,13,76,"Observa‡”es")

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

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

If not ChecaTipoDeRegistro()
   Then Return
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"
Grava_LogEx("Fornecedor")
Del

PickForm "1"

EndProc  ; (Exclusao)

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

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

Return CONSULTA_ATIVA
EndProc ;Verifica_Consulta_Ativa()

;*******************************************************************************
;* Rotina Substitui                                                            *
;*******************************************************************************
Proc Carrega_Parametros()
View NoWindow "P_Dest"
If IsEmpty("P_Dest")
   Then CoEditKey
        [Utiliza_CGC_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  ]
PARAM_CONS_SINTEGRA =[Utiliza_Consulta_Sintegra]
ClearImage

EndProc ; (Carrega_Parametros)

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

ANT_TAB   = Table()          
ANT_FIELD = Field()

Switch
  Case PARAM="Old" : GetRecord "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 "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_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_EdicaoC()
Private VERIFICA_REGISTRO

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

While True
  Release Vars ALTERA_CPF                                                      ;#0358#

  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,\\Sistemas\\Cadastro\\Bib_Proc"
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999" EndIf

Carrega_Parametros()
View NoWindow "\\Sistemas\\Cadastro\\Empresas"
View NoWindow "\\Sistemas\\Cadastro\\Cidades"
View NoWindow "DestObs"  SetaCorRegistro("Padrao")   
View NoWindow "ListFone" SetaCorRegistro("Padrao")
View NoWindow "DestMail"  SetaCorRegistro("Padrao")   

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
