---
# System prepended metadata

title: Tutorial

---

# Tutorial 

## <img src="https://cdn-icons-png.flaticon.com/512/724/724831.png" style="height: 60px; width: auto;"> &nbsp; Cadastro de Parceiros e Importação de imóveis<br><br>



<span style="color:grey">O intuito deste documento é auxiliar no cadastramento de novos parceiros e na importação de imóveis dos parceiros cadastrados para a base de dados da Netimóveis por meio de arquivos XML.
Qualquer dúvida, contatar o setor de TI (NITI).</span>

<hr>

### <img src="https://cdn-icons-png.flaticon.com/512/265/265674.png" style="height: 40px; width: auto;"> &nbsp; 1. Cadastro de Parceiro<br><br>

1. <span style="color:grey31">Para gerar as consultas referentes ao cadastro de parceiros, é necessário identificar qual banco de dados será utilizado, nesse caso, utilizaremos o banco de dados <strong>Site_Netimoveis_Versao7</strong>:
    ~~~html
    USE Site_Netimoveis_Versao7
    ~~~

2. <span style="color:grey31">Para listar ==**todas as parceiras cadastradas na Netimóveis**==, basta realizar a seguinte consulta:</span>
    ~~~html
    USE Site_Netimoveis_Versao7
    
    --Tabela exclusiva para as parceiras
    SELECT Formato, Ativo,* From Site_ListarAgenciaViewCompletaParceira
    
    --Tabela exclusiva para as associadas
    SELECT * From Site_ListarAgenciaViewCompleta
    
    --View que unifica as duas tabelas
    SELECT * From Site_ListarAgenciaViewCompletaUniao
    ~~~
    
    Na View As parceiras são identificadas pelo campo <strong>Rede=0</strong> e as associadas pelo campo <strong>Rede=1</strong><br>

3. <span style="color:grey31">Para listar os ==**imóveis de uma determinada parceira**==, utilizamos a seguinte consulta:</span>
    ~~~html
    USE Site_Netimoveis_Versao7
    
    SELECT * FROM Site_ListarImoveisViewCompletaParceira WHERE AgenciaSan_Id = 99999
    ~~~

4. <span style="color:grey31">Antes de executarmos o ==**camando SQL**== que inserirá no banco de dados uma nova parceira, é necessário explicarmos sobre alguns campos que deverão ser preenchidos, são eles:</span>
       
    #### logo <span style="color:#b6b6b6"> // Não é necessário preencher o campo de logo na tabela mas é necessário coloar a imagem nos seguintes diretórios e o nome da logo deve ser o ID da Parceira com extensão SVG:
    C:\inetpub\wwwroot\core.netimoveis.com\wwwroot\img\parceiras\logo
    C:\inetpub\wwwroot\core.netimoveis.com\wwwroot\img\parceiras\logo
    
    
    ><span style="color:#b6b6b6">Tamanho:    100 × 50 px</span>
    ><span style="color:#b6b6b6">Extensão: SVG</span>
    ><span style="color:#b6b6b6">Nome: AGENCIASAN_ID.svg | Exemplo: 99999.svg</span>
    


    #### Bairro_Id <span style="color:#b6b6b6"> // utilizar o modelo de query abaixo para pegar esta informação:
    ~~~html
    SELECT * FROM San2017..san_bairro where nomebairro = 'Savassi' AND Cidade_Id = 2754
    ~~~

    #### Cidade_Id <span style="color:#b6b6b6"> // utilizar o modelo de query abaixo para pegar esta informação:
    ~~~html
    SELECT * FROM San2017..san_cidade where nomecidade = 'Belo Horizonte' and Estado_Id = 14
    ~~~

    #### Estado_Id <span style="color:#b6b6b6"> // utilizar o modelo de query abaixo para pegar esta informação:
    ~~~html
    SELECT * FROM San2017..San_Estado where NomeEstado = 'Minas Gerais'
    ~~~

    #### Formato <span style="color:#b6b6b6"> // o ormato do XML pode variar de acordo com o Software da empresa</span>
    #### CaminhoXML <span style="color:#b6b6b6"> // é o caminho físico no servidor de banco de dados para a leitura do XML</span>
    #### CaminhoURL <span style="color:#b6b6b6"> // é a URL do XML que a parceira disponibilza</span>
    #### Ordem <span style="color:#b6b6b6"> // sempre cadastrar como 0. Trata-se de um campo auxiliar alterado todos os dias por um job para alterar a pontuação do imóvel e, assim, a ordem de exibição na listagem de imóveis (Rodizio por pontuação)</span>
    #### Agrupamento_Id <span style="color:#b6b6b6"> // campo usado para agrupar os Leads no Dashboard, caso a parceira tenha apenas uma unidade, preencher com um número único</span>

<br>

#### <img src="https://cdn-icons-png.flaticon.com/512/337/337953.png" style="height: 30px; width: auto;"> &nbsp;Comando SQL para inserção de uma nova parceira:</span> 
   
~~~html
INSERT INTO Site_ListarAgenciaViewCompletaParceira (
NomeAgencia,          DataHoraAtualizacao,	Celula_Id,    NomeCelula,	    ddd,    ddi,    TelefoneGeral,    TelefoneVenda,    TelefoneLocacao,    EmailGeral,            EmailVenda,            EmailLocacao,		WhatsAppVenda,    WhatsAppLocacao,	logo,   Latitude,		Longitude,	    SiteAgencia,	    Cep,	    Logradouro,	    Numero,		     Complemento,		  Bairro_Id,		BairroNome,	     Cidade_Id,	CidadeNome,	     Estado_Id,	EstadoNome,	     Pais_Id,    PaisNome,		Creci,    Regiao_Id,    DataHoraMigrado,    SiglaEstado,	      SiglaPais,		UrlBairro,		 UrlCidade,		  UrlEstado,		   UrlPais,	    Formato,		 CaminhoXML,    CaminhoURL,							      LogoListagem,	Ativo,	Ordem,	Agrupamento_Id,	AgrupamentoNome) VALUES (
'Agência Exemplo',    GETDATE(),		9999,	      'Celula Exemplo',    99,     99,     '00000000',	'99999999',	   '99999999',	       email@email.com.br',   'email@email.com.br',  'email@email.com.br',  '3199999999',     '3199999999',	'',	'-00.000000000',	'-99.999999999',   'www.exemplo.com.br',  '88888-888',   'Logradouro Exemplo',  'Número de Logradouro,  'Complemento do ndereço',   9999,			'Bairro Exemplo',    9999,		'Cidade Exemplo',    99,		'Estado Exemplo',   1,		  'País Exemplo',	9999J',   0,		 GETDATE(),	      'Sigla UF Exemplo',    'Sigla País Exemplo',   'url-bairro-exemplo',   'url-cidade-exemplo',   url-estado-exemplo',    'url-pais',     'formatoexemplo',   'F:\XML\',      'http://www.formato.com.br/imobiliaria.php/99999999/parceira',    '',		0,	0,	99,			'Parceira Imóveis')
~~~    


<span style="color:red">Para realizar os testes manuais com a **nova parceira**, é necessário que o campo **'Ativo'** seja preenchido com o valor zero **(0)** para que a importação dos imóveis desta parceira não ocorra automaticamente.</span><br><br>

<hr>
    
### <img src="https://cdn-icons-png.flaticon.com/512/337/337959.png" style="height: 40px; width: auto;"> &nbsp; 2.&nbsp; Importação dos imóveis através do arquivo XML da parceira <br><br>

<span style="color:grey">Após a realização do cadastro da nova parceira, será necessário importar os imóveis desta parceira para dentro do banco de dados da Netimóveis por meio de arquivo XML fornecido pela parceira cadastrada.</span><br><br>
    
    
#### <img src="https://cdn-icons-png.flaticon.com/512/4477/4477837.png" style="height: 30px; width: auto;"> 2.0 Validação de Dados
    
    
* <span style="color:grey31"> Para que o XML seja importado, é necessário pelo menos as seguintes informações: 
    * Codigo imovel
    * Tipo do imovel
    * Estado
    * Cidade
    * Bairro
    * Valor de venda ou Valor de locação
    
    
    Testar algumas URLs das fotos para saber estão funcionando corretamente.  
    
    
#### <img src="https://cdn-icons-png.flaticon.com/512/4477/4477837.png" style="height: 30px; width: auto;"> 2.1 Baixar o XML
    
    
* <span style="color:grey31">O primeiro passo para importar os imóveis da nova parceira, é baixar o XML fornecido pela parceira e coloca-lo no servidor do banco de dados na pasta ==**F:\\XML\\**==. O **nome do XML** deve ser o ==**ID da parceira**==
    
    <span style="color:grey">Exemplo: F:\XML\99999.xml</span>
    
    <strong>Observação:</strong> Este processo é automático e roda todos os dias as 17:00 para as parceiras que possuem os campos <strong>'CaminhoXML'</strong> e <strong>'CaminhoURL'</strong> diferentes de **NULL**.
Este processo é realizado por um *Windows Service* instalado no servidor do banco de dados

#### <img src="https://cdn-icons-png.flaticon.com/512/1832/1832215.png" style="height: 30px; width: auto;">&nbsp;2.2&nbsp; Ler arquivo XML e colocá-lo como campo em uma tabela
    
* <span style="color:grey31">Para que seja possível a importação do arquivo XML, é necessário coloca-lo como sendo um campo de uma tabela.</span>
* <span style="color:grey31">Para isso, realizaremos os seguintes passos:</span> 

    > <span style="color:grey31">1. Executar a procedure **import_LeArquivoFisicoXML**  
    <span style="color:grey">Vale ressaltar que esta procedure irá ler o arquivo físico do XML e preecher o  campo "XMLData" da tabela **Site_ListarXMLParceiras**. Ao executar, ele altera todos os outros registros para **Ativo=0**, porém,  os que acabaram de ser inseridos ficarão como **Ativo=1**.</span> Esta procedure é disparada automaticamente todo dia às 1h da manha pelo JOB **Import_ImportacaoParceirasXML**</span>    

    Segue exemplo de como ficará o arquivo XML na tabela **Site_ListarXMLParceiras**:
    

    ~~~html
    SELECT top 1 * FROM Site_ListarXMLParceiras WHERE Ativo=1 AND Parceira_Id = 50034
    ~~~

    ![](https://i.imgur.com/MIkkUl9.png)

    
* <span style="color:grey31">Para verificar se existe registro da conversão do **XML Físico** para o **campo XMLData**, rodamos a seguinte query: </span>  
    
    ~~~HTML
    SELECT * FROM Site_ListarXMLParceiras WHERE Parceira_id = 99999
    ~~~
    
    ![](https://i.imgur.com/HG1YbW6.png)


* <span style="color:grey31">Para inserir o registro da conversao do **XML Físico** para o campo **XMLData** é preciso rodar a procedure ==**import_CursorConvertXmlimoveis**== a partir do servidor.</span><br><br>
    
<img src="https://cdn-icons-png.flaticon.com/512/337/337953.png" style="height: 30px; width: auto;"> &nbsp;Segue a descrição da procedure **import_CursorConvertXmlimoveis**:</span> 
    
~~~html
declare @query as varchar(max);
DECLARE @Parceira_Id int, @Formato VARCHAR(60), @CaminhoXML VARCHAR(100)

SET @Formato = 'inetsoft'
SET @Parceira_Id = 99999
SET @CaminhoXML = 'F:\XML\'

SET @query = 'INSERT INTO Site_ListarXMLParceiras(XMLData, DataHora, Parceira_id, Formato)
SELECT CONVERT(XML, replace(BulkColumn,''</URLArquivo>'','';</URLArquivo>'')) AS BulkColumn, GETDATE(),'+CAST(@Parceira_Id as varchar(10))+','''+@Formato+''' 
FROM OPENROWSET(BULK '''+@CaminhoXML+''+CAST(@Parceira_Id as varchar(10))+'.xml'+''', SINGLE_BLOB) AS x;' 

exec(@query)
~~~


<span style="color:#9d9d9d; text-align:right">Esta procedure retorna a **lista de Imobiliárias ativas**     que possuem um registro de **XMLData** também ativo. A partir desta lista, a procedure ela identifica o campo com o     formato XML e chama a procedure de importação dos imóveis que fará a leitura do campo **XMLData** da tabela **Site_ListarXMLParceiras** e inserirá os registros na tabela de imóveis     **Site_ListarImoveisViewCompletaParceira**.</span>


#### <img src="https://cdn-icons-png.flaticon.com/512/3498/3498738.png" style="height: 30px; width: auto"> &nbsp; **OBSERVAÇÕES SOBRE A IMPORTAÇÃO**

* <span style="color:grey31">Procurar por: ==**"--EM CASO DE TESTES COMENTAR ESTE INSERT"**== e comentar o comando **INSERT INTO** antes de executar a procedure.</span>
* <span style="color:grey31">Verificar como ocorreu a leitura.</span>
* <span style="color:grey31">No final do dia, retirar este comentário, pois esta procedure será executada de madrugada para rodar o processo automático.</span>
* <span style="color:grey31">Verificar se algum imovel ficou com estes campos em branco: **Tipo do imovel, Estado, Cidade, Valor de venda ou Valor de locação**. Se algum desses campos estiverem em branco é necessário abrir a função que trata o campo e fazer a adequação na função para a tratativa do campo. Seguem as funções que tratam esses campos:</span><span>
    * fk_DeParaTipoImovel -> Tipo
    * fc_RetornaNomeEstado -> Transforma UF em Nome do estado
    * fk_CorrigeNome -> Verifica Cidade e Bairro
    * fk_ValorCaracteristica -> ValorLocacao e ValorVenda</span><br><br>

#### <img src="https://cdn-icons-png.flaticon.com/512/337/337953.png" style="height: 40px; width: auto;"> &nbsp; Nesta procedure utilizamos várias funções para adaptar as informações enviadas e coloca-las no formato que precisamos:

~~~html
fc_RetornaNomeEstado(UF,0) -- Retorna o nome do Estado a partir da sua Sigla
SELECT dbo.fc_RetornaNomeEstado('MG',0) -- Nome do estado normal
SELECT dbo.fc_RetornaNomeEstado('MG',1) -- Nome do estado para URL Amigável

fk_CorrigeNome(Cidade), --Retira aspas simples, e outros caratcteres inválidos de Cidade e Bairro
SELECT dbo.fk_CorrigeNome('Olhos d''água')
SELECT dbo.fk_CorrigeNome('Remove, virgula')

fk_DeParaTipoImovel --Pega o tipo de imóvel informado e transforma em tipos válidos do SAN
SELECT dbo.fk_DeParaTipoImovel('Apartamento', 'Apartamento Padrão', 'Padrão', 4 /*QtdDormitorios*/,0) 
SELECT dbo.fk_DeParaTipoImovel('Apartamento', 'Apartamento Padrão', 'Padrão', 4 /*QtdDormitorios*/,1) 

fk_RetornaPrimeiraFoto(Fotos) as NomeArquivoThumb, -- Retorna o nome da foto principal a partir da lista de fotos

fk_ValorCaracteristica --Valida características em vários formatos, necessário 2 parâmetros, 1: Valor, 2: Tipo esperado

Tipo: moeda, numero, area -> Retorna valor com pontuação apenas de decimal no formato americano
select dbo.fk_ValorCaracteristica('1000','moeda') -> valor esperado 1000.00
select dbo.fk_ValorCaracteristica('1000,00','moeda') -> valor esperado 1000.00
select dbo.fk_ValorCaracteristica('1,000.00','moeda') -> valor esperado 1000.00
select dbo.fk_ValorCaracteristica('1,000','moeda') -> valor esperado 1000.00
select dbo.fk_ValorCaracteristica('1,0A00','moeda')  -> valor esperado 0.00

Tipo: validamoeda -> Retorna 0 ou 1 se o valor passado é um valor de imóvel válido
select dbo.fk_ValorCaracteristica('1000','validamoeda') -> valor esperado 1
select dbo.fk_ValorCaracteristica('1000,00','validamoeda') -> valor esperado 1
select dbo.fk_ValorCaracteristica('1,000.00','validamoeda') -> valor esperado 1
select dbo.fk_ValorCaracteristica('1,000','validamoeda') -> valor esperado 1
select dbo.fk_ValorCaracteristica('1,0A00','validamoeda') -> valor esperado 0

Tipo: qtd -> Valida se valor passado é um inteiro, retorna o próprio valor caso seja válido e 0 para inválido
select dbo.fk_ValorCaracteristica('10','qtd') -> 10
select dbo.fk_ValorCaracteristica('10A','qtd') > 0

Tipo: simnao -> Valida valor passado e transforma em 0 ou 1
select dbo.fk_ValorCaracteristica('1','simnao') -> 1
select dbo.fk_ValorCaracteristica('0','simnao') -> 0
select dbo.fk_ValorCaracteristica('Sim','simnao') -> 1
select dbo.fk_ValorCaracteristica('Não','simnao') -> 0
select dbo.fk_ValorCaracteristica('AAAA','simnao') -> 0

fk_RetornaEnderecoOuTipoLogradouro(Endereco, 'T') --Retorna apenas o tipo de logradouro passando como parametro o endereço completo
Select dbo.fk_RetornaEnderecoOuTipoLogradouro('Rua Paraíba', 'T')
Select dbo.fk_RetornaEnderecoOuTipoLogradouro('R Paraíba', 'T')

fk_RetornaEnderecoOuTipoLogradouro(Endereco, 'E') as logradouroPublico  --Retorna apenas o logradouro passando como parametro o endereço completo
Select dbo.fk_RetornaEnderecoOuTipoLogradouro('Rua Paraíba', 'E')
Select dbo.fk_RetornaEnderecoOuTipoLogradouro('R Paraíba', 'E')

fk_RetornaTransacaoDescricao(PrecoVenda,PrecoLocacao,'Descricao') as Descricao, --Retorna o nome da  transação baseado no valor de Venda e Locação
SELECT dbo.fk_RetornaTransacaoDescricao('1234.12','11111','Descricao') -> Venda ou Locação
SELECT dbo.fk_RetornaTransacaoDescricao('0','11111','Descricao') -> Locação
SELECT dbo.fk_RetornaTransacaoDescricao('1234.12','0','Descricao') -> Venda
SELECT dbo.fk_RetornaTransacaoDescricao('1234.12','11111','DescricaoAl') -> venda-locacao
SELECT dbo.fk_RetornaTransacaoDescricao('0','11111','DescricaoAl') -> locacao
SELECT dbo.fk_RetornaTransacaoDescricao('1234.12','0','DescricaoAl') -> venda    
~~~


#### <img src="https://cdn-icons-png.flaticon.com/512/3498/3498738.png" style="height: 30px; width: auto;"> &nbsp; INFORMAÇÕES IMPORTANTES</span>
    
* <span style="color:grey">Caso sejam inseridos novos imóveis, a antiga importação será apagada</span>
* <span style="color:grey">As fotos removidas e as fotos dos imóveis removidos são alteradas para **status_id=2**</span>
* <span style="color:grey">As novos fotos são colocadas com **status_id=0**</span>
* <span style="color:grey">De madugada, o software baixará as fotos com o **status_id=0**</span>
* <span style="color:grey">As fotos baixadas com sucesso receberão o **status_id=1** e as que estiverem com erro terão o **status_id=2**;</span>
* <span style="color:grey">O software listará todas as fotos com **status_id=2** e as apagará do Blob da Azure</span>
* <span style="color:grey">Quando há mais de 10 mil fotos para downloads, devemos baixa-las manualmente, alterando o **status_id** das fotos de **0** para **10** e além disso, devemos também rodar em nosso computador o software **Importação Parceiras**, alterando a query, para que ela baixe as fotos de **status_id=10** no método **ListaFotosParaDownload()**</span><br><br>

#### <img src="https://cdn-icons-png.flaticon.com/512/337/337953.png" style="height: 30px; width: auto;"> &nbsp; Query 'Importação Parceiras':

<span style="color:grey">Para importar manualmente as fotos utilizaremos a seguinte query:</span>
    
~~~html
UPDATE top(2500) Site_ListarFotosImoveisViewCompletaParceira SET status_id=10 WHERE AgenciaSan_id = 99999 AND status_id=0 // realizar o update com  envios a cada 2500 fotos
~~~

<span style="color:grey"> &nbsp;Para acompanhar a importação manual das fotos, utilizaremos as seguintes consultas:</span>

~~~HTML
FOTOS A SEREM BAIXADAS:
SELECT Count(*) FROM Site_ListarFotosImoveisViewCompletaParceira WHERE AgenciaSan_id = 50034 AND status_id = 10
    
FOTOS BAIXADAS:
SELECT Count(*) FROM Site_ListarFotosImoveisViewCompletaParceira WHERE AgenciaSan_id = 50034 AND status_id = 1

FOTOS COM FALHAS NO DOWNLOAD:
SELECT Count(*) FROM Site_ListarFotosImoveisViewCompletaParceira WHERE AgenciaSan_id = 50034 AND status_id = 2
~~~
    
<br>
    
#### <img src="https://cdn-icons-png.flaticon.com/512/337/337953.png" style="height: 30px; width: auto;"> &nbsp; Após a inserção manual das fotos, podemos alterar a parceira cadastrada para **status=1** e verificar os imóveis inseridos utilizando a seguinte query:

    
~~~html
UPDATE top(1)  Site_ListarAgenciaViewCompletaParceira SET Ativo=1 WHERE AGenciaSAn_id = 99999   
~~~

<br><hr>

    
    
    
    
### <img src="https://cdn-icons-png.flaticon.com/512/1077/1077012.png" style="height: 40px; width: auto;"> &nbsp; Cadastro de Usuário<br>
    
    Os usuário cadastrados terão acesso aos dashboards da parceira.
    
<span style="color:grey">Para realizar o cadastro de um novo usuário, utilizamos o seguinte comando SQL:</span>
    
~~~HTML
INSERT INTO Dashboard_User VALUES (
1, 'Nome Parceira', 'email@email.com.br', '/KVKJuUVwAdiEtosLp9ls51PCsbe4aDFwz5u93KfNAQ=', '1900-01-01 00:00:00.000', '', GETDATE(), GETDATE()
)
~~~

<span style="color:grey">Para consultar o usuário cadastrado, utilizamos a seguinte query:</span>
    
~~~HTML
SELECT * FROM Dashboard_User WHERE id = 99
~~~

<span style="color:grey">Para vincular o novo usuário cadastrado à nova parceira, utilizamos o seguinte comando SQL:</span>
    
~~~HTML
INSERT INTO Dashboard_UserParceira VALUES (99, 99999)
~~~
    
<span style="color:grey">Para consultar o vínculo criado entre o usuário e a parceira, utilizamos o seguinte comando SQL:</span>
    
~~~HTML
SELECT * FROM  Dashboard_UserParceira  WHERE userid = 99
~~~
    
<br><hr>

### <img src="https://cdn-icons-png.flaticon.com/512/1293/1293029.png" style="height: 40px; width: auto;"> &nbsp; Finalização<br>
    
<span style="color:grey">Informar o Gerente de TI e o Suporte sobre a conclusão do cadastro da parceira, enviando para eles os dados de acesso (conforme modelo abaixo).
    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey10">Olá, informamos que a parceira XXXXXXX foi cadastrada com sucesso e o XML dos seus &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imóveis e respectivas fotos foram importados para a nossa base de dados.</span>
    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey10">Segue abaixo os dados de acesso ao Dash da parceira:</span>
    
<span style="color:grey10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link de acesso:</span><span style="color:grey10"> https://portal.netimoveis.com/dashboard/</span>      
<span style="color:grey10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usuário:</span><span style="color:grey10"> email@email.com.br</span>        
<span style="color:grey10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Senha:</span><span style="color:grey10"> netimoveis26anos</span>  
    
<span style="color:grey">Solicitar ao suporte que envie o email de "Boas Vindas" para a nova parceira Netimóveis. O suporte deverá encaminhar o email de boas vindas contendo os dados de acesso ao dashboard.</span>
    
  

    
#### <span style="color:grey31"><img src="https://cdn-icons-png.flaticon.com/512/3498/3498738.png" style="height: 20px; width: auto;"> &nbsp;Observação</span>
    
<span style="color:grey">No dashboard ainda não aparecerá a listagem de imóveis até que o setor de TI execute o software que gerará a listagem em Json, porém, o total de imóveis já aparecerá no dash.</span>

    
    