<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://wiki.geosales.com.br:8000/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Anderson</id>
	<title>GeoSales - Contribuições do(a) usuário(a) [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.geosales.com.br:8000/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Anderson"/>
	<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php/Especial:Contribui%C3%A7%C3%B5es/Anderson"/>
	<updated>2026-05-05T13:46:30Z</updated>
	<subtitle>Contribuições do(a) usuário(a)</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Scritps_%C3%9Ateis&amp;diff=15720</id>
		<title>Scritps Úteis</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Scritps_%C3%9Ateis&amp;diff=15720"/>
		<updated>2021-06-07T15:09:51Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:*Comando pra saber se uma porta está em uso no windows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netstat -ano | find &amp;quot;:Required port number&lt;br /&gt;
netstat -ano | find &amp;quot;25&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*Cadastro de empresa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
exec sp_cadastra_empresa 'softsite2numobile', '25', 0, 3&lt;br /&gt;
exec CADASTRAR_BASE 'softsite2numobile', 'ANDERSON GOMES', 100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*Saber quais os processos estão bloqueado outros e não estão sendo bloqueados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where spid in (&lt;br /&gt;
     select blocked&lt;br /&gt;
      from sys.sysprocesses&lt;br /&gt;
     where blocked &amp;gt; 0)&lt;br /&gt;
      and blocked = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Detalhar um processo &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXEC sp_who2 252&lt;br /&gt;
&lt;br /&gt;
DBCC inputbuffer(252)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Detalhar qual processo está rodando a partir de uma execução inicial&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @Handle varbinary(64);&lt;br /&gt;
SELECT @Handle = sql_handle FROM sys.dm_exec_requests WHERE session_id = 13933 and request_id = 0;&lt;br /&gt;
SELECT * FROM ::fn_get_sql(@Handle);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Ver a query que está sendo executada por um processo (Parâmetro spid)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC INPUTBUFFER(6001)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[Scrips Tabelas Web Service NOVO|Scrips Tabelas Web Service NOVO]]&lt;br /&gt;
&lt;br /&gt;
:*Saber quais as bases estão vencidas que procedure vai apagar&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
USE bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT s.name, ub.DATA_EXPIRACAO FROM sys.sysdatabases s&lt;br /&gt;
LEFT JOIN USUARIO_BASE ub ON s.name = ub.nm_base&lt;br /&gt;
WHERE &lt;br /&gt;
	s.name LIKE 'bd_ssm_%'&lt;br /&gt;
	AND s.name NOT LIKE 'bd_ssm_adm'&lt;br /&gt;
	AND (ub.nm_base IS NULL OR ub.DATA_EXPIRACAO &amp;lt; GETDATE())&lt;br /&gt;
ORDER BY crdate ASC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Listar dados de todas as bases dinamicamente numa consulta só usando union all&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..INTERFACEERPCONFIGURACAOPARAMETRO UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%expressa%'&lt;br /&gt;
	and name not like '%makitahomolog%' &lt;br /&gt;
	and name not like '%prodentho_2%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' , COUNT(*) from '+name+'..CLIENTE_COORD_LOG WHERE CAST(DT_LOG AS DATE) &amp;gt;= ''2019-11-19'' AND CAST(DT_LOG AS DATE) &amp;lt;= ''2019-11-19'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar usuarios de uma empresa x &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%colchobel%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar os dados de login de um usuario no evo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select u.login as LOGIN, u.SENHA AS SENHA, &lt;br /&gt;
 CASE ue.PAPEL&lt;br /&gt;
	WHEN -1 THEN 'NENHUM'&lt;br /&gt;
	WHEN 0 THEN 'SUPORTE'&lt;br /&gt;
	WHEN 1 THEN 'GESTOR'&lt;br /&gt;
	WHEN 2 THEN 'VENDEDOR'&lt;br /&gt;
	WHEN 3 THEN	'CLIENTE'&lt;br /&gt;
	WHEN 4 THEN 'BACKOFFICE'&lt;br /&gt;
	WHEN 5 THEN 'INTEGRADOR'&lt;br /&gt;
	END AS PAPEL,&lt;br /&gt;
	dv.CD_VENDEDOR AS CD_VENDEDOR,&lt;br /&gt;
	s.CD_SUPERVISOR AS CD_SUPERVISOR&lt;br /&gt;
FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO&lt;br /&gt;
left join tusuario tu on tu.CD_USUARIO = ue.CD_TUSUARIO&lt;br /&gt;
left join dados_vendedor dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO&lt;br /&gt;
left join supervisor s on s.CD_USUARIO = tu.CD_USUARIO&lt;br /&gt;
 WHERE nm_empresa = 'biodinamicanumobile'&lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
select u.*, ue.* FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO&lt;br /&gt;
 WHERE nm_empresa = 'biodinamicanumobile'&lt;br /&gt;
GO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Checar qual versão determinado vendedor tá usando&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select cd_usuario,&lt;br /&gt;
       substring(ds_log, CHARINDEX('@', ds_log) + 1, charindex(':', ds_log, CHARINDEX('@', ds_log) + 1) - CHARINDEX('@', ds_log) - 1)&lt;br /&gt;
from LOG_SINCRONISMO with(nolock) &lt;br /&gt;
order by 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @comandoSQL VARCHAR(8000)&lt;br /&gt;
SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071)))&lt;br /&gt;
select @comandoSQL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer quando existem mais de um script sendo executado&lt;br /&gt;
em background para o spid passado&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @comandoSQL VARCHAR(8000)&lt;br /&gt;
DECLARE @tableComandoSQL TABLE (comando VARCHAR(8000))&lt;br /&gt;
--SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
--FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071)))&lt;br /&gt;
--select @comandoSQL&lt;br /&gt;
INSERT INTO @tableComandoSQL SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
FROM ::fn_get_sql((SELECT top 1 [sql_handle] FROM sys.sysprocesses where spid = 1071))&lt;br /&gt;
SELECT * FROM @tableComandoSQL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Ver o tamanho das tabelas&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    OBJECT_NAME(object_id) As Tabela, Rows As Linhas,&lt;br /&gt;
    SUM(Total_Pages * 8) As Reservado,&lt;br /&gt;
    SUM(CASE WHEN Index_ID &amp;gt; 1 THEN 0 ELSE Data_Pages * 8 END) As Dados,&lt;br /&gt;
        SUM(Used_Pages * 8) -&lt;br /&gt;
        SUM(CASE WHEN Index_ID &amp;gt; 1 THEN 0 ELSE Data_Pages * 8 END) As Indice,&lt;br /&gt;
    SUM((Total_Pages - Used_Pages) * 8) As NaoUtilizado&lt;br /&gt;
FROM&lt;br /&gt;
    sys.partitions As P&lt;br /&gt;
    INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id&lt;br /&gt;
GROUP BY OBJECT_NAME(object_id), Rows&lt;br /&gt;
ORDER BY DADOS DESC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Listar agendamentos de importações de todas as empresas num único script (Caso você queira adicionar mais empresas só seguir o modelo)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'bd_ssm_DCA', * from bd_ssm_DCA..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_CAMIL', * from bd_ssm_CAMIL..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_BEVILAQUA', * from bd_ssm_BEVILAQUA..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_GUARAVES', * from bd_ssm_GUARAVES..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_PAULUS', * from bd_ssm_PAULUS..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ver todas as bases que utilizam a geração de registro automático&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp_update_databases &lt;br /&gt;
'&lt;br /&gt;
insert into ##tabela&lt;br /&gt;
select db_name(),* from CONFIGURACAO_GERA_REGISTRO_AUTO', 'org_venda_cliente'&lt;br /&gt;
&amp;lt;/pre&lt;br /&gt;
&lt;br /&gt;
*Update com select e join:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE PEDIDO SET PEDIDO.NM_CLIENTE = (C.NM_CLIENTE)&lt;br /&gt;
from PEDIDO&lt;br /&gt;
inner join CLIENTE C on &lt;br /&gt;
PEDIDO.CD_CLIENTE = C.CD_CLIENTE&lt;br /&gt;
WHERE PEDIDO.DT_EMISSAO &amp;gt;= '2016-10-01' AND PEDIDO.NM_CLIENTE IS NULL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Atualizar Nome da Tabela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXEC sp_rename 'ITEM_PEDIDO_REMESSA_FUTURA', 'ITEM_PED_REMESSA_FUTURA';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover Foreign Keys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from sys.sysobjects where name = 'FK__LISTA_PRO__CD_SE__361203C5'&lt;br /&gt;
SELECT * FROM sys.sysobjects where ID = 907150277&lt;br /&gt;
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE ITEM_PEDIDO_EXCLUIDO DROP CONSTRAINT FK_SAV_ITEM__PEDIDO_PEDIDO_DEL; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover Foreign Keys Dinamicamente&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT DISTINCT 'ALTER TABLE ' + KCU1.TABLE_NAME + ' DROP CONSTRAINT ' + KCU1.CONSTRAINT_NAME&lt;br /&gt;
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1&lt;br /&gt;
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2&lt;br /&gt;
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME&lt;br /&gt;
 AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION&lt;br /&gt;
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Retornar consulta por banco de dados do tamanho usado no banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'Use '+name+';' + 'Exec SP_SpaceUsed ;'  from sys.databases&lt;br /&gt;
where  name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' &lt;br /&gt;
and name not like '%adm%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Vendedores da Hierárquia do Supervisor passado no Parâmetro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT cd_vendedor [Código], &lt;br /&gt;
       nm_vendedor [Vendedor]&lt;br /&gt;
FROM   fn_obter_vendedores_supervisor(#codigoSupervisor#)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Supervisores Acima da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT S.cd_supervisor [Código], &lt;br /&gt;
       S.nm_supervisor [Supervisor] &lt;br /&gt;
FROM   fn_obter_supervisor_supervisores(#codigoSupervisor#) FOSS &lt;br /&gt;
       INNER JOIN SUPERVISOR S &lt;br /&gt;
               ON FOSS.cd_supervisor = S.cd_supervisor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Supervisores Abaixo da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT S.cd_supervisor [Código], &lt;br /&gt;
       S.nm_supervisor [Supervisor] &lt;br /&gt;
FROM   fn_obter_supervisores_supervisor(#codigoSupervisor#) FOSS &lt;br /&gt;
       INNER JOIN SUPERVISOR S &lt;br /&gt;
               ON FOSS.cd_supervisor = S.cd_supervisor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar processos que estão travando o banco e ver a query do processo que está travado&lt;br /&gt;
** Selecionar os 100 primeiros processos bloqueados no banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select TOP 100 *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where blocked &amp;lt;&amp;gt; 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Selecionar todos os processos bloqueados no banco ordenados por spid&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select spid, blocked, hostname=left(hostname,20), program_name=left(program_name,20),&lt;br /&gt;
       WaitTime_Seg = convert(int,(waittime/1000))  ,open_tran, status&lt;br /&gt;
From master.dbo.sysprocesses &lt;br /&gt;
where blocked &amp;gt; 0&lt;br /&gt;
order by spid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Então você precisa verificar quais processos estão rodando em um determinado banco de dados:&lt;br /&gt;
** Lista todos os processos existentes em uma determinada base de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @database VARCHAR(100) = 'bd_ssm_suabase' -- INSIRA AQUI O NOME DO BANCO DE DADOS  &lt;br /&gt;
DECLARE @processosTemp TABLE &lt;br /&gt;
  ( &lt;br /&gt;
     spid       SMALLINT, &lt;br /&gt;
     ecid       SMALLINT, &lt;br /&gt;
     status     NCHAR(30), &lt;br /&gt;
     loginname  NCHAR(128), &lt;br /&gt;
     hostname   NCHAR(128), &lt;br /&gt;
     blk        CHAR(5), &lt;br /&gt;
     dbname     NCHAR(128), &lt;br /&gt;
     cmd        NCHAR(16), &lt;br /&gt;
     request_id INT &lt;br /&gt;
  ) &lt;br /&gt;
&lt;br /&gt;
INSERT INTO @processosTemp &lt;br /&gt;
EXEC Sp_who &lt;br /&gt;
&lt;br /&gt;
SELECT * &lt;br /&gt;
FROM   @processosTemp &lt;br /&gt;
WHERE  dbname = @database &lt;br /&gt;
ORDER  BY spid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Aí você precisa remover essa base - faça esse procedimento apenas no ambiente de teste - mas existem processos bloqueando essa remoção. Então você deverá remover os mesmos processos referentes a consulta acima, para depois DROPAR a base.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
declare @execSql varchar(1000), @databaseName varchar(100)  &lt;br /&gt;
set @databaseName = 'bd_ssm_suabase'  -- INSIRA O NOME DA BASE QUE QUER MATAR SEUS PROCESSOS EM ABERTO&lt;br /&gt;
&lt;br /&gt;
set @execSql = ''   &lt;br /&gt;
select  @execSql = @execSql + 'kill ' + convert(char(10), spid) + CHAR(13)+CHAR(10)  &lt;br /&gt;
from    master.dbo.sysprocesses  &lt;br /&gt;
where   db_name(dbid) = @databaseName  &lt;br /&gt;
     and  &lt;br /&gt;
     DBID &amp;lt;&amp;gt; 0  &lt;br /&gt;
     and  &lt;br /&gt;
     spid &amp;lt;&amp;gt; @@spid  &lt;br /&gt;
order by spid&lt;br /&gt;
exec(@execSql)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para verificar se exste alguma configuração para algum serviço de envio de e-mail ativado&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_EXPORTADO'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_NAO_EFETIVADO'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_FINANC_NOVO_CLIENTE'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_SUPERVISOR_PEDIDO_PENDENTE'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'CONDICAO_PAGAMENTO_ESPECIAL'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'SP_ENVIA_EMAIL_CLIENTE_PEDIDO_CRIACAO'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para ver todas as foreign keys do banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
 KCU1.CONSTRAINT_NAME AS 'FK_Nome_Constraint'&lt;br /&gt;
 , KCU1.TABLE_NAME AS 'FK_Nome_Tabela'&lt;br /&gt;
 , KCU1.COLUMN_NAME AS 'FK_Nome_Coluna'&lt;br /&gt;
 , FK.is_disabled AS 'FK_Esta_Desativada'&lt;br /&gt;
 , KCU2.CONSTRAINT_NAME AS 'PK_Nome_Constraint_Referenciada'&lt;br /&gt;
 , KCU2.TABLE_NAME AS 'PK_Nome_Tabela_Referenciada'&lt;br /&gt;
 , KCU2.COLUMN_NAME AS 'PK_Nome_Coluna_Referenciada'&lt;br /&gt;
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1&lt;br /&gt;
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2&lt;br /&gt;
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME&lt;br /&gt;
 AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION&lt;br /&gt;
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME&lt;br /&gt;
&lt;br /&gt;
--where KCU1.CONSTRAINT_NAME like '%FK_PEDIDO_EXCLUIDO__PEDIDO%'&lt;br /&gt;
Order by &lt;br /&gt;
KCU1.TABLE_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para Cadastro de Menu do Portal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- SELECT * FROM MENU WHERE DS_MENU IN('Cadastro', 'Bonificação','Associada ao Pedido')&lt;br /&gt;
-- UPDATE MENU SET DS_URL = null WHERE CD_MENU = 130&lt;br /&gt;
-- SELECT * FROM MENU WHERE CD_MENU_PAI = 1&lt;br /&gt;
&lt;br /&gt;
-- INCLUSÃO DE MENU -- &lt;br /&gt;
DECLARE @dsMenu    VARCHAR(100), &lt;br /&gt;
        @dsMenuPai VARCHAR(100), &lt;br /&gt;
        @cdMenuPai INT &lt;br /&gt;
&lt;br /&gt;
SELECT @dsMenu = 'Parâmetros de Configuração', &lt;br /&gt;
       @dsMenuPai = 'Cadastro'&lt;br /&gt;
 &lt;br /&gt;
SELECT	@dsMenu = LTRIM(RTRIM(@dsMenu)),&lt;br /&gt;
		@dsMenuPai = LTRIM(RTRIM(@dsMenuPai))&lt;br /&gt;
&lt;br /&gt;
SET @cdMenuPai = (SELECT TOP 1 cd_menu &lt;br /&gt;
                  FROM   menu &lt;br /&gt;
                  WHERE  ds_menu = @dsMenuPai)&lt;br /&gt;
&lt;br /&gt;
IF ( @cdMenuPai IS NOT NULL ) &lt;br /&gt;
  BEGIN &lt;br /&gt;
      IF NOT EXISTS (SELECT 1 &lt;br /&gt;
                     FROM   menu &lt;br /&gt;
                     WHERE  ds_menu = @dsMenu &lt;br /&gt;
                            AND cd_menu_pai = @cdMenuPai) &lt;br /&gt;
        BEGIN &lt;br /&gt;
            INSERT INTO menu &lt;br /&gt;
                        (cd_menu, &lt;br /&gt;
                         ds_menu, &lt;br /&gt;
                         ds_url, &lt;br /&gt;
                         ds_param, &lt;br /&gt;
                         cd_menu_pai, &lt;br /&gt;
                         id_ativo) &lt;br /&gt;
            SELECT Max(Isnull(cd_menu, 0)) + 1, &lt;br /&gt;
                   @dsMenu, &lt;br /&gt;
                   @dsMenu, &lt;br /&gt;
                   NULL, &lt;br /&gt;
                   @cdMenuPai, &lt;br /&gt;
                   'S' &lt;br /&gt;
            FROM   menu &lt;br /&gt;
            &lt;br /&gt;
            PRINT '-----------------  MENU CADASTRADO COM SUCESSO  -----------------'&lt;br /&gt;
			PRINT 'FOI CADASTRADO O SUBMENU &amp;quot;'+ @dsMenu + '&amp;quot; NO MENU &amp;quot;'+ @dsMenuPai + '&amp;quot;!'&lt;br /&gt;
        END &lt;br /&gt;
        ELSE&lt;br /&gt;
        BEGIN&lt;br /&gt;
			PRINT '-----------------  FALHA AO CADASTRAR MENU  -----------------'&lt;br /&gt;
			PRINT 'JÁ EXISTE O SUBMENU &amp;quot;'+ @dsMenu + '&amp;quot; NO MENU &amp;quot;'+ @dsMenuPai + '&amp;quot;!'&lt;br /&gt;
        END&lt;br /&gt;
  END &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Conjunto de Selects para visualizar se há algum desconto sendo persistido na base do Mobile&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select  * from desconto_produto;&lt;br /&gt;
select * from DESCONTO_ORG_PRODUTO;&lt;br /&gt;
select * from DESCONTO_MEGAZORD;&lt;br /&gt;
select * from DESCONTO_ICMS_DIF;&lt;br /&gt;
select * from DESCONTO_CLIENTE_FORNEC;&lt;br /&gt;
select * from DESCONTO_CLIENTE;&lt;br /&gt;
select * from DESCONTO_FORNECEDOR;&lt;br /&gt;
select * from DESCONTO_MEGAZORD_SEGMENTO;&lt;br /&gt;
select * from DESCONTO_UF;&lt;br /&gt;
select  * from desco_cliente_familia;&lt;br /&gt;
select * from DESCO_GRUP_CLIEN_FAMIL;&lt;br /&gt;
select * from desconto_cliente;&lt;br /&gt;
select  * from DESCO_VENDEDOR_FAMILIA;&lt;br /&gt;
select * from DESCO_GRUP_CLIEN_FAMIL;&lt;br /&gt;
select * from DESCO_GRUP_CLIENT_VEND;&lt;br /&gt;
select * from DESCO_GRUPO_CLIEN_PROD;&lt;br /&gt;
select * from DESCONTO_VEND_PRODUTO;&lt;br /&gt;
select * from DESCONTO_UF_PRODUTO;&lt;br /&gt;
select * from DESCONTO_UF_FAMILIA;&lt;br /&gt;
&lt;br /&gt;
select * from DESCONTO_CLIENTE_PRODUT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Select para contar os registros de uma tabela sem derrubar o banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT SUM (row_count)&lt;br /&gt;
FROM sys.dm_db_partition_stats&lt;br /&gt;
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   &lt;br /&gt;
AND (index_id=0 or index_id=1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Desabilitar as triggers de geração de registros &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'alter table '+ OBJECT_NAME(parent_id)+ ' disable trigger '+name from sys.triggers&lt;br /&gt;
where name like 'log%'&lt;br /&gt;
order by 1, name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Habilitar as triggers de geração de registros &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'alter table '+ OBJECT_NAME(parent_id)+ ' enable trigger '+name from sys.triggers&lt;br /&gt;
where name like 'log%'&lt;br /&gt;
order by 1, name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para ver os processos em execução no banco da camil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select DB_NAME(dbid),* from sys.sysprocesses&lt;br /&gt;
where program_name like '%ssmicro%'&lt;br /&gt;
and status like '%run%'&lt;br /&gt;
&lt;br /&gt;
dbcc inputbuffer(61)&lt;br /&gt;
dbcc inputbuffer(65)&lt;br /&gt;
guarda essa consulta&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listar todas as bases ativas criando um use bd_ssm_nomeempresa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'Use '+name+';' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Contar os registros da log_alteracao_usuario sem parar o banco de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT SUM (row_count)&lt;br /&gt;
FROM sys.dm_db_partition_stats&lt;br /&gt;
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   &lt;br /&gt;
AND (index_id=0 or index_id=1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Truncar tabela de log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TRUNCATE TABLE LOG_ALTERACAO_USUARIO;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Usando a sys.databases de forma inteligente para economizar trabalho&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'use ' + name + '; select ' +name + ',* from CAMPO where cd_campo = 23;'&lt;br /&gt;
from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%' and state_desc &amp;lt;&amp;gt; 'OFFLINE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listar todos os bancos de dados de empresa da softsite&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select name from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Limpeza de cadastros do ADM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
INNER JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
INNER JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E.CD_EMPRESA, E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
LEFT JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
LEFT JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE)&lt;br /&gt;
WHERE &lt;br /&gt;
	SD.name IS NULL	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT E.CD_EMPRESA, E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
LEFT JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
LEFT JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) &lt;br /&gt;
INNER JOIN sys.databases SBD ON (SBD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) &lt;br /&gt;
WHERE &lt;br /&gt;
	state_desc = 'OFFLINE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Tabelas que tem que ser analisadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EMPRESA_SYNC_SISTEMA&lt;br /&gt;
EMPRESA_SYNC_BD&lt;br /&gt;
EMPRESA_SISTEMA&lt;br /&gt;
EMPRESA_BD&lt;br /&gt;
EMPRESA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Deletes necessários para limpar as bases&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Na base ADM:&lt;br /&gt;
select * from empresa order by nm_empresa asc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
SELECT * FROM EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog' --619&lt;br /&gt;
&lt;br /&gt;
DELETE FROM EMPRESA_SYNC_BD WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_BD WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_SYNC_SISTEMA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_SISTEMA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
&lt;br /&gt;
USE bd_ssm_login;&lt;br /&gt;
SELECT * FROM bd_ssm_login..USUARIO_EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog'&lt;br /&gt;
&lt;br /&gt;
DELETE FROM MODULO_EMPRESA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM USUARIO WHERE CD_USUARIO IN (1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157)&lt;br /&gt;
DELETE FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'fiorehomolog'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Verificar quantidade de conexões abertas por base utilizadas pelo portal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), count(*)&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where 1=1&lt;br /&gt;
--and   db_name(dbid) = 'bd_ssm_criasim'&lt;br /&gt;
and program_name = 'jTDS'&lt;br /&gt;
group &lt;br /&gt;
by db_name(dbid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Comando para gerar os drops das Triggers do claudus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' drop trigger ', tr.name  from sys.sysobjects tr&lt;br /&gt;
inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U'&lt;br /&gt;
where tr.xtype = 'tr'&lt;br /&gt;
and tr.name like 'TR_AUDIT%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' disable trigger ' + tr.name + ' on ' + tb.name, st.is_disabled  from sys.sysobjects tr&lt;br /&gt;
inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U'&lt;br /&gt;
inner join sys.triggers st on st.object_id = tr.id&lt;br /&gt;
where tr.xtype = 'tr' and st.is_disabled = 1&lt;br /&gt;
and tr.name like 'TR_AUDIT%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover empresas do import que não estão mais acessíveis na base&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm&lt;br /&gt;
&lt;br /&gt;
select  * &lt;br /&gt;
--update es set id_realiza_importacao&lt;br /&gt;
from EMPRESA_SISTEMA es&lt;br /&gt;
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA &lt;br /&gt;
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS&lt;br /&gt;
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Listar algo em todas as bases numa consulta só&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'select ''' + name + ''', *  from ' + name + '.dbo.INTERFACEERPCONFIGURACAOPARAMETRO where VR_PARAMETRO NOT LIKE ''%PEDIDO%ITEM_PEDIDO%'' UNION ALL'&lt;br /&gt;
from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%' and state_desc &amp;lt;&amp;gt; 'OFFLINE' and (name not like '%pronta%' AND name not like 'bd_ssm_adm')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Descobrindo as empresas que importam&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update es set id_realiza_importacao&lt;br /&gt;
from EMPRESA_SISTEMA es&lt;br /&gt;
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA &lt;br /&gt;
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS&lt;br /&gt;
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*UPDATE para atualizar dados duplicados da tabela 001&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE LISTA_PRODUTO_001&lt;br /&gt;
SET data_delete = data_insert+('00:00:00.200')&lt;br /&gt;
where id in (&lt;br /&gt;
-2146273629,&lt;br /&gt;
-2146273628,&lt;br /&gt;
-2146273627,&lt;br /&gt;
-2146273626,&lt;br /&gt;
-2146273625,&lt;br /&gt;
-2146273624,&lt;br /&gt;
-2146273623,&lt;br /&gt;
-2146273622,&lt;br /&gt;
-2146273621)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Comando para concatenar dentro do group by &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STUFF&lt;br /&gt;
&lt;br /&gt;
SELECT NM_ESTADO,&lt;br /&gt;
       NM_CIDADE,&lt;br /&gt;
       STUFF(&lt;br /&gt;
               (SELECT DISTINCT ',' + NM_FANTASIA&lt;br /&gt;
                FROM cliente&lt;br /&gt;
                WHERE NM_ESTADO = a.NM_ESTADO&lt;br /&gt;
                  AND NM_CIDADE = a.NM_CIDADE&lt;br /&gt;
                  FOR XML PATH ('')) , 1, 1, '') AS URLList&lt;br /&gt;
FROM cliente AS a&lt;br /&gt;
WHERE NM_ESTADO = 'CE'&lt;br /&gt;
  AND NM_CIDADE = 'fortaleza'&lt;br /&gt;
GROUP BY NM_ESTADO,&lt;br /&gt;
         NM_CIDADE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Template base pra criar o script de uma tabela NOVA pro TJ&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Criar a tabela TMP pra empresas que utilizam import */&lt;br /&gt;
CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_TMP]&lt;br /&gt;
  ( &lt;br /&gt;
     CD_LOTE      int NOT NULL,  &lt;br /&gt;
     CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, &lt;br /&gt;
     CD_TAB_PRECO INT NOT NULL, &lt;br /&gt;
	 PR_DESCONTO  DECIMAL(18, 6) NOT NULL,&lt;br /&gt;
	CONSTRAINT [PK_DESCONTO_LOTE_OV_TP_TMP] PRIMARY KEY CLUSTERED (&lt;br /&gt;
		[CD_LOTE] ASC,&lt;br /&gt;
		[CD_ORG_VENDA] ASC,&lt;br /&gt;
		[CD_TAB_PRECO] ASC&lt;br /&gt;
	) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]&lt;br /&gt;
) ON [PRIMARY]&lt;br /&gt;
&lt;br /&gt;
/* Criar a tabela de LOG */&lt;br /&gt;
CREATE TABLE LOG_DESCONTO_LOTE_OV_TP&lt;br /&gt;
(&lt;br /&gt;
CD_LOG INT IDENTITY PRIMARY KEY&lt;br /&gt;
,DT_LOG DATETIME NOT NULL&lt;br /&gt;
,TP_OPERACAO VARCHAR(1) NOT NULL&lt;br /&gt;
,ID_KEY VARCHAR(200) NOT NULL&lt;br /&gt;
,CD_LOTE int&lt;br /&gt;
,CD_ORG_VENDA VARCHAR(20)&lt;br /&gt;
,CD_TAB_PRECO INT)&lt;br /&gt;
&lt;br /&gt;
/* Criar tabela 001 seguindo o padrão */&lt;br /&gt;
CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_001]&lt;br /&gt;
  ( &lt;br /&gt;
     [id] [int] IDENTITY(-2147483648,1) NOT NULL,&lt;br /&gt;
     CD_LOTE      INT NOT NULL,  &lt;br /&gt;
     CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, &lt;br /&gt;
     CD_TAB_PRECO INT NOT NULL, &lt;br /&gt;
	 PR_DESCONTO  DECIMAL(18, 6) NOT NULL,&lt;br /&gt;
     [data_insert] [datetime] NOT NULL,&lt;br /&gt;
	 [data_update] [datetime] NULL,&lt;br /&gt;
	 [data_delete] [datetime] NULL,&lt;br /&gt;
PRIMARY KEY NONCLUSTERED &lt;br /&gt;
(&lt;br /&gt;
	[id] ASC&lt;br /&gt;
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]&lt;br /&gt;
) ON [PRIMARY]&lt;br /&gt;
&lt;br /&gt;
/* Adicionar Index */&lt;br /&gt;
CREATE CLUSTERED INDEX PK_DESCONTO_LOTE_OV_TP ON DESCONTO_LOTE_OV_TP_001 (CD_LOTE ASC, CD_ORG_VENDA ASC, CD_TAB_PRECO ASC)&lt;br /&gt;
&lt;br /&gt;
/* Adicionar constraint */&lt;br /&gt;
ALTER TABLE [dbo].[DESCONTO_LOTE_OV_TP_001] ADD  CONSTRAINT [DF_DATA_INSERCAO_DESCONTO]  DEFAULT (getdate()) FOR [data_insert]&lt;br /&gt;
&lt;br /&gt;
/* Criar trigger na tabela nova adicionando os campos necessários */&lt;br /&gt;
CREATE TRIGGER [dbo].[TR_TJ_UPDATE_DESCONTO_LOTE_OV_TP]&lt;br /&gt;
ON [dbo].[DESCONTO_LOTE_OV_TP_001]&lt;br /&gt;
instead OF UPDATE&lt;br /&gt;
AS&lt;br /&gt;
  BEGIN&lt;br /&gt;
      SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
      UPDATE t&lt;br /&gt;
      SET    t.data_update = case when s.data_delete is null then  Getdate() else t.data_update end ,&lt;br /&gt;
             T.CD_LOTE = S.CD_LOTE,&lt;br /&gt;
			 T.CD_ORG_VENDA = S.CD_ORG_VENDA,&lt;br /&gt;
			 T.CD_TAB_PRECO = S.CD_TAB_PRECO,&lt;br /&gt;
			 T.PR_DESCONTO = S.PR_DESCONTO,&lt;br /&gt;
             t.data_delete = s.data_delete&lt;br /&gt;
      FROM   DESCONTO_LOTE_OV_TP_001 t&lt;br /&gt;
             INNER JOIN inserted s&lt;br /&gt;
                     ON ( t.id = s.id )&lt;br /&gt;
&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
/* Criar a view TJ */&lt;br /&gt;
CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP_TJ]&lt;br /&gt;
AS&lt;br /&gt;
  SELECT id,&lt;br /&gt;
         CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO&lt;br /&gt;
  FROM   DESCONTO_LOTE_OV_TP_001&lt;br /&gt;
  WHERE  data_delete IS NULL&lt;br /&gt;
&lt;br /&gt;
/* Criar Trigger da view */&lt;br /&gt;
CREATE TRIGGER [dbo].[TR_TJ_DELETE_DESCONTO_LOTE_OV_TP]&lt;br /&gt;
ON [dbo].[DESCONTO_LOTE_OV_TP_TJ]&lt;br /&gt;
instead OF DELETE&lt;br /&gt;
AS&lt;br /&gt;
  BEGIN&lt;br /&gt;
      SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
      UPDATE t&lt;br /&gt;
      SET    data_delete = Getdate()&lt;br /&gt;
      FROM   deleted s&lt;br /&gt;
             INNER JOIN DESCONTO_LOTE_OV_TP_001 t&lt;br /&gt;
                     ON s.id = t.id&lt;br /&gt;
&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
/* Criar a view */&lt;br /&gt;
CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP]&lt;br /&gt;
AS&lt;br /&gt;
  SELECT CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO&lt;br /&gt;
  FROM   DESCONTO_LOTE_OV_TP_tj&lt;br /&gt;
&lt;br /&gt;
/* Criar a função de navegação */&lt;br /&gt;
CREATE FUNCTION fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP(@ID_VENDEDOR  INT,&lt;br /&gt;
                                                           @DT_LAST_SINC DATETIME)&lt;br /&gt;
RETURNS TABLE&lt;br /&gt;
AS&lt;br /&gt;
    RETURN&lt;br /&gt;
      (SELECT	DLOT.id,&lt;br /&gt;
				DLOT.CD_LOTE,&lt;br /&gt;
				DLOT.CD_ORG_VENDA,&lt;br /&gt;
				DLOT.CD_TAB_PRECO,&lt;br /&gt;
				DLOT.PR_DESCONTO,&lt;br /&gt;
				DLOT.DATA_DELETE&lt;br /&gt;
        FROM   DESCONTO_LOTE_OV_TP_001 DLOT&lt;br /&gt;
		WHERE  &lt;br /&gt;
			(&lt;br /&gt;
				( &lt;br /&gt;
					( &lt;br /&gt;
						( DLOT.DATA_INSERT &amp;gt;= @DT_LAST_SINC&lt;br /&gt;
							OR DLOT.DATA_UPDATE &amp;gt;= @DT_LAST_SINC &lt;br /&gt;
						)&lt;br /&gt;
						AND DLOT.DATA_DELETE IS NULL &lt;br /&gt;
					)&lt;br /&gt;
					OR ( DLOT.DATA_DELETE &amp;gt;= @DT_LAST_SINC&lt;br /&gt;
							AND DLOT.DATA_INSERT &amp;lt; @DT_LAST_SINC&lt;br /&gt;
							AND NOT EXISTS(SELECT 1&lt;br /&gt;
											FROM   DESCONTO_LOTE_OV_TP_001 T&lt;br /&gt;
											WHERE  DLOT.CD_LOTE = T.CD_LOTE&lt;br /&gt;
											AND DLOT.CD_ORG_VENDA = T.CD_ORG_VENDA&lt;br /&gt;
											AND DLOT.CD_TAB_PRECO = T.CD_TAB_PRECO&lt;br /&gt;
												AND T.DATA_DELETE IS NULL&lt;br /&gt;
											)&lt;br /&gt;
					)&lt;br /&gt;
					OR ( &lt;br /&gt;
						@DT_LAST_SINC IS NULL&lt;br /&gt;
						AND DLOT.DATA_DELETE IS NULL&lt;br /&gt;
					)&lt;br /&gt;
				) &lt;br /&gt;
			)&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
/* Adicionando a função na tabela */&lt;br /&gt;
INSERT INTO TAMOJUNTO_TABELA_FUNCAO (NM_TABLE, NM_FN, FL_ATIVA) VALUES ('DESCONTO_LOTE_OV_TP', 'fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP', 1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para retornar os 20 processos que estão consumindo mais recursos de cpu no momento&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT TOP 20&lt;br /&gt;
GETDATE() AS 'Collection Date',&lt;br /&gt;
qs.execution_count AS 'Execution Count',&lt;br /&gt;
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,&lt;br /&gt;
(CASE WHEN qs.statement_end_offset = -1&lt;br /&gt;
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2&lt;br /&gt;
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2&lt;br /&gt;
) AS 'Query Text',&lt;br /&gt;
DB_NAME(qt.dbid) AS 'DB Name',&lt;br /&gt;
qs.total_worker_time AS 'Total CPU Time',&lt;br /&gt;
qs.total_worker_time/qs.execution_count AS 'Avg CPU Time (ms)',&lt;br /&gt;
qs.total_physical_reads AS 'Total Physical Reads',&lt;br /&gt;
qs.total_physical_reads/qs.execution_count AS 'Avg Physical Reads',&lt;br /&gt;
qs.total_logical_reads AS 'Total Logical Reads',&lt;br /&gt;
qs.total_logical_reads/qs.execution_count AS 'Avg Logical Reads',&lt;br /&gt;
qs.total_logical_writes AS 'Total Logical Writes',&lt;br /&gt;
qs.total_logical_writes/qs.execution_count AS 'Avg Logical Writes',&lt;br /&gt;
qs.total_elapsed_time AS 'Total Duration',&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count AS 'Avg Duration (ms)',&lt;br /&gt;
qp.query_plan AS 'Plan'&lt;br /&gt;
FROM sys.dm_exec_query_stats AS qs&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt&lt;br /&gt;
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp&lt;br /&gt;
WHERE&lt;br /&gt;
qs.execution_count &amp;gt; 50 OR&lt;br /&gt;
qs.total_worker_time/qs.execution_count &amp;gt; 100 OR&lt;br /&gt;
qs.total_physical_reads/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_logical_reads/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_logical_writes/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count &amp;gt; 1000&lt;br /&gt;
ORDER BY&lt;br /&gt;
qs.execution_count DESC,&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count DESC,&lt;br /&gt;
qs.total_worker_time/qs.execution_count DESC,&lt;br /&gt;
qs.total_physical_reads/qs.execution_count DESC,&lt;br /&gt;
qs.total_logical_reads/qs.execution_count DESC,&lt;br /&gt;
qs.total_logical_writes/qs.execution_count DESC&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para ver se uma trigger está habilitada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select  ObjectProperty(Object_id(Name),'ExecIsTriggerDisabled') STATUS from sys.sysobjects where name = 'LOG_ALTERACAO_DELETE_PRODUTO_ESTOQUE'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checar se um campo existe em uma tabela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT T.name AS Tabela, C.name AS Coluna&lt;br /&gt;
FROM sys.sysobjects    AS T (NOLOCK) &lt;br /&gt;
INNER JOIN sys.all_columns AS C (NOLOCK) ON T.id = C.object_id AND T.XTYPE = 'U' &lt;br /&gt;
WHERE C.NAME LIKE '%CAMPO%'&lt;br /&gt;
ORDER BY T.name ASC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Alterar os paths de dados de importação da modelo para o nome da empresa cadastrada&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
USE bd_ssm_jptripas&lt;br /&gt;
&lt;br /&gt;
DECLARE @empresa varchar(50);&lt;br /&gt;
SET @empresa = 'jptripas';&lt;br /&gt;
&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao\backup' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO_BKP'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE DS_CHAVE='DS_PATH_ARQS_IMPORTACAO'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE DS_CHAVE='DS_PATH_DESCRIBER'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE DS_CHAVE='DS_PATH_DIRS_VERSOES'&lt;br /&gt;
&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_IMPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO_BKP= 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_DESCRIBER = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_DIRS_VERSOES = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script para análise de que se existe a tabela no tamojunto para inserir&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' USE ' + name + '; IF(((SELECT COUNT(*) FROM tamojunto_tabela_funcao WHERE NM_TABLE = ''CLIENTE'') = 0) AND (EXISTS (SELECT TOP 1 1 FROM   sys.objects WHERE  NAME = ''CLIENTE_001''))) BEGIN INSERT INTO tamojunto_tabela_funcao VALUES (''CLIENTE'', ''fn_REGISTRO_SYNC_CLIENTE'', 1) END' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%'  &lt;br /&gt;
	and name not like '%protheus%'&lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script para contar quantas licenças uma empresa tem.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( &lt;br /&gt;
  NM_EMPRESA VARCHAR(50),&lt;br /&gt;
  NR_LICENCAS INT,&lt;br /&gt;
  NR_LICENCAS_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_UNICO INT,&lt;br /&gt;
  NR_USUARIOS_TOTAL INT)&lt;br /&gt;
&lt;br /&gt;
DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), &lt;br /&gt;
@NrUsuariosSomentePortal INT, @NrUsuariosSomenteMobile INT, @NrUsuariosPortalMobile INT, @NrUsuariosPortalMobileUnico INT;&lt;br /&gt;
SELECT @NmEmpresa = 'makita',   @NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'),   @NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'),    @NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL),   @NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   @NrUsuariosPortalMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO T INNER JOIN bd_ssm_makita..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL),   @NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL AND ID_PALM IS NOT NULL);   &lt;br /&gt;
INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobile, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobile + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal));&lt;br /&gt;
SELECT * FROM @VisaoLicencasUsuariosPorEmpresa;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Código que deve ser executado quando se restaurar uma base de produção em homologação.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/supervisor/gerencial/getRelatorioGerencial/' WHERE DS_CHAVE = 'DS_URL_REL_GERENCIAL'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/services/WebService' WHERE DS_CHAVE = 'DS_URL_SERVICE'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'GPS_BASE_URL'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'URL_WEBSERVICE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Shrink&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC SHRINKDATABASE('bd_ssm_campneus', 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Controle de licenças&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	SELECT program_name, HOSTNAME, *&lt;br /&gt;
			FROM  sys.sysprocesses&lt;br /&gt;
	where program_name = 'passwordsenderws'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO empresa_bd_properties &lt;br /&gt;
SELECT CD_EMPRESA, 'passwordsenderws', NULL, 2 FROM EMPRESA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Verificar processo de importação&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where program_name like '%Import%'&lt;br /&gt;
and db_name(dbid) = 'bd_ssm_boreda'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Analisar base que está dando erro no claudus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD WHERE ID_STATUS_DEL = ''F'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT A.NAME, A.TYPE, B.TEXT&lt;br /&gt;
  FROM SYSOBJECTS  A (nolock)&lt;br /&gt;
  JOIN SYSCOMMENTS B (nolock) &lt;br /&gt;
    ON A.ID = B.ID&lt;br /&gt;
WHERE B.TEXT LIKE '%ITEM_PEDIDO%'  --- Informação a ser procurada no corpo da procedure, funcao ou view&lt;br /&gt;
    AND B.TEXT LIKE '%LOG_ALTERACAO_USUARIO%'&lt;br /&gt;
    AND B.TEXT LIKE '%''D''%'&lt;br /&gt;
  AND A.TYPE = 'TR'                     --- Tipo de objeto a ser localizado no caso procedure&lt;br /&gt;
 ORDER BY A.NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pesquisar texto dentro das estruturas do banco&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @Search varchar(255)&lt;br /&gt;
SET @Search='EXCLUINDO REGISTROS NÃO SINCRONIZADOS'&lt;br /&gt;
&lt;br /&gt;
SELECT DISTINCT&lt;br /&gt;
    o.name AS Object_Name,o.type_desc&lt;br /&gt;
    FROM sys.sql_modules        m &lt;br /&gt;
        INNER JOIN sys.objects  o ON m.object_id=o.object_id&lt;br /&gt;
    WHERE m.definition Like '%'+@Search+'%'&lt;br /&gt;
    ORDER BY 2,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar falhas no claudus em todas as bases&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD  WHERE ID_STATUS_DEL = ''F'' OR ID_STATUS_INS = ''F'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Analisar vínculos de frete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from CLIENTE where nm_cliente like '%POLO DISTR%'&lt;br /&gt;
SELECT * FROM APLICACAO_FRETE;&lt;br /&gt;
SELECT CD_CLASSE_FRETE, * FROM PRODUTO WHERE CD_PRODUTO = 12951 &lt;br /&gt;
SELECT * FROM FAIXA_PRECO_FRETE WHERE CD_CLASSE_FRETE = 0 and CD_FRETE in (13527306, 23527306, 33527306)&lt;br /&gt;
&lt;br /&gt;
select * from PRACA where CD_PRACA = 3527306&lt;br /&gt;
select * from CLIENTE_PRACA where CD_CLIENTE = 100669301 --3527306&lt;br /&gt;
select* from FRETE where CD_PRACA = 3527306&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE TAMOJUNTO_TABELA_FUNCAO SET FL_ATIVA = 1&lt;br /&gt;
WHERE FL_ATIVA = 0 AND NM_TABLE NOT IN ('DESCO_GRUP_CLIEN_FAMIL', 'TIPO_PRODUTO_MOVIMENTO')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Aprovar pedidos manualmente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT 'EXEC autorizar_item_pedido_super ' + CAST(IP.CD_PEDIDO_PALM AS VARCHAR(20)) + ', ' + &lt;br /&gt;
CAST(IP.NR_ITEM_PEDIDO AS VARCHAR(20)) + ', ' + CAST(IP.CD_PRODUTO AS VARCHAR(15)) + ', NULL, ''S'', 14 '&lt;br /&gt;
 FROM ITEM_PEDIDO IP WHERE CD_PEDIDO_PALM IN (190302065635151583)&lt;br /&gt;
 &lt;br /&gt;
SELECT 'EXEC autorizar_pedido_super ' + CAST(P.CD_PEDIDO_PALM AS VARCHAR(20)) + ', 14, 0 '  &lt;br /&gt;
FROM PEDIDO P WHERE CD_PEDIDO_PALM IN (190302065635151583)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Contagem de licenças&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( &lt;br /&gt;
  NM_EMPRESA VARCHAR(50),&lt;br /&gt;
  NR_LICENCAS INT,&lt;br /&gt;
  NR_LICENCAS_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL_BLOQUEADOS INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM_BLOQUEADO INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM_BLOQUEADO INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_UNICO INT,&lt;br /&gt;
  NR_USUARIOS_TOTAL INT,&lt;br /&gt;
  NR_USUARIOS_DESATIVADOS INT,&lt;br /&gt;
  NR_USUARIOS_BLOQUEADOS_TOTAL INT)&lt;br /&gt;
&lt;br /&gt;
DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), &lt;br /&gt;
	@NrUsuariosSomentePortal INT, @NrUsuariosSomentePortalBloqueado INT, @NrUsuariosSomenteMobile INT,&lt;br /&gt;
    @NrUsuariosPortalMobileComIdPalm INT, @NrUsuariosPortalMobileComIdPalmBloqueado INT,&lt;br /&gt;
	@NrUsuariosPortalMobileSemIdPalm INT,  @NrUsuariosPortalMobileSemIdPalmBloqueado INT, @NrUsuariosPortalMobileUnico INT, &lt;br /&gt;
	@NrUsuariosPortalDesativados INT, @NrUsuariosPortalBloqueados INT;&lt;br /&gt;
&lt;br /&gt;
SELECT @NmEmpresa = 'camil',   &lt;br /&gt;
@NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'),   &lt;br /&gt;
@NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'),    &lt;br /&gt;
@NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL),   &lt;br /&gt;
@NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO &amp;lt;&amp;gt; 2 AND CD_SITUACAO &amp;lt;&amp;gt; 9 AND (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   &lt;br /&gt;
@NrUsuariosSomentePortalBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO &amp;lt;&amp;gt; 2 AND CD_SITUACAO = 9 AND (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   &lt;br /&gt;
@NrUsuariosPortalMobileComIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO &amp;lt;&amp;gt; 9),   &lt;br /&gt;
@NrUsuariosPortalMobileComIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO = 9),   &lt;br /&gt;
@NrUsuariosPortalMobileSemIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO &amp;lt;&amp;gt; 9 ),   &lt;br /&gt;
@NrUsuariosPortalMobileSemIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO = 9),   &lt;br /&gt;
@NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT DV.CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_camil..DADOS_VENDEDOR DV INNER JOIN TUSUARIO T ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE DV.ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2),   &lt;br /&gt;
@NrUsuariosPortalDesativados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 2),&lt;br /&gt;
@NrUsuariosPortalBloqueados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 9);&lt;br /&gt;
INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomentePortalBloqueado, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobileComIdPalm, @NrUsuariosPortalMobileComIdPalmBloqueado, @NrUsuariosPortalMobileSemIdPalm, @NrUsuariosPortalMobileSemIdPalmBloqueado, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobileComIdPalm + @NrUsuariosPortalMobileComIdPalmBloqueado + @NrUsuariosPortalMobileSemIdPalm + @NrUsuariosPortalMobileSemIdPalmBloqueado + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal + @NrUsuariosSomentePortalBloqueado), @NrUsuariosPortalDesativados, @NrUsuariosPortalBloqueados);&lt;br /&gt;
	&lt;br /&gt;
SELECT * FROM @VisaoLicencasUsuariosPorEmpresa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT  'INSERT INTO USUARIO_EMPRESA VALUES (' + &lt;br /&gt;
CAST( (1331 + ROW_NUMBER() OVER(ORDER BY CD_USUARIO ASC) ) as VARCHAR(20)) + ',' +&lt;br /&gt;
CAST(CD_TUSUARIO AS VARCHAR(10)) + ',''' +&lt;br /&gt;
'estrellagaliciahomolog'', ' + &lt;br /&gt;
CAST(VALIDO AS VARCHAR(10)) + ',''' +&lt;br /&gt;
ISNULL(CAST(DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(DT_CRIACAO AS VARCHAR(100)), 'NULL')  + ''',' +&lt;br /&gt;
CAST(PAPEL AS VARCHAR(10)) + ')' &lt;br /&gt;
FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'estrellagalicia'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT 'INSERT INTO USUARIO VALUES ' +&lt;br /&gt;
'(''' + ISNULL(U.NOME, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.LOGIN, 'NULL') + '' + ''',''' +&lt;br /&gt;
ISNULL(U.EMAIL, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.SENHA, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.SALT, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.TELEFONE, 'NULL')  + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.NUMERO_VIOLACOES AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.VALIDO AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DT_CRIACAO AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.URL_FOTO, 'NULL')  + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DELTA_ITERACOES AS VARCHAR(100)), 'NULL') + ''')' &lt;br /&gt;
FROM USUARIO U&lt;br /&gt;
 INNER JOIN USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO&lt;br /&gt;
WHERE NM_EMPRESA = 'estrellagalicia'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Análise de processo de importação&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from dw_importacao order by 3 desc&lt;br /&gt;
&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where db_name(dbid) = 'bd_ssm_coopatos'&lt;br /&gt;
and program_name like '%Import%'&lt;br /&gt;
&lt;br /&gt;
EXEC sp_who2 23230&lt;br /&gt;
&lt;br /&gt;
DBCC INPUTBUFFER(23230)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--Reindex das Estruturas do Banco&lt;br /&gt;
Print	''&lt;br /&gt;
Print	'Data e Hora início:  ' + convert(varchar(20),GetDate(),25)&lt;br /&gt;
Print	'*****************************************'&lt;br /&gt;
Print	''&lt;br /&gt;
Declare @Tabela Varchar(300)&lt;br /&gt;
Declare @indice Varchar(300)&lt;br /&gt;
Declare @select varchar (2000)&lt;br /&gt;
declare @banco varchar(50)&lt;br /&gt;
set @banco = 'bd_ssm_makitabeta'&lt;br /&gt;
Print 'INICIO REBUILD BANCO DE DADOS: ' + upper(@banco)&lt;br /&gt;
Create table #temp (cod int primary key identity, banco varchar (100), tabela varchar (300), indice varchar (300))&lt;br /&gt;
		&lt;br /&gt;
insert into #temp (banco, tabela, indice)&lt;br /&gt;
exec ('select ' + '''' + @banco + '''' + ' as banco, o.name as tabela, i.name as indice from ' + @banco + '.sys.objects o&lt;br /&gt;
join ' + @banco + '.sys.indexes i on (o.OBJECT_id = i.OBJECT_id)&lt;br /&gt;
where o.type  = ''u''&lt;br /&gt;
	and i.name is not null&lt;br /&gt;
order by 2')&lt;br /&gt;
--select * from #temp&lt;br /&gt;
Declare Reindex Cursor&lt;br /&gt;
For &lt;br /&gt;
select banco, tabela, indice from #temp&lt;br /&gt;
&lt;br /&gt;
Open Reindex&lt;br /&gt;
Fetch Next From Reindex into @banco, @Tabela, @indice&lt;br /&gt;
&lt;br /&gt;
Set Nocount On&lt;br /&gt;
While @@Fetch_Status = 0&lt;br /&gt;
Begin &lt;br /&gt;
	Print (@Tabela)&lt;br /&gt;
	print('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD')&lt;br /&gt;
	Exec('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD')&lt;br /&gt;
	Print ' '&lt;br /&gt;
	Fetch Next From Reindex into @banco, @Tabela, @indice&lt;br /&gt;
	--Print 'Status: ' + cast(@@Fetch_Status as varchar(20))&lt;br /&gt;
End&lt;br /&gt;
Close Reindex&lt;br /&gt;
Deallocate Reindex&lt;br /&gt;
Set nocount off&lt;br /&gt;
Print	''&lt;br /&gt;
Print	'*****************************************'&lt;br /&gt;
Print	'Data e Hora Fim:  ' + convert(varchar(20),GetDate(),25)&lt;br /&gt;
Print	''&lt;br /&gt;
Print	''&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Inserir banners em todas as bases de produção.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'INSERT INTO '+ name +'..BANNER (CD_BANNER,DS_BANNER,DT_INICIO_VIGENCIA,DT_FIM_VIGENCIA,DS_SITUACAO,LINK_IMAGEM,LINK_DIRECT,NR_TIMER,CD_TAMANHO) VALUES '+ &lt;br /&gt;
' ( (SELECT MAX(CD_BANNER) + 1 FROM '+ name +'..BANNER), ''WEBINAR 4'', GETDATE(), ''2020-05-30 00:01:00.000'', 2, ''https://sscatalogo.s3.amazonaws.com/marketing/banner_live_evo_3.jpg'', ''https://www.youtube.com/watch?v=0BzRbzEMh9A'', 1, 1); ' +&lt;br /&gt;
' INSERT INTO '+ name +'..APLICACAO_BANNER (CD_APLICACAO_BANNER, CD_BANNER) VALUES ((SELECT MAX(CD_APLICACAO_BANNER) + 1 FROM '+ name +'..APLICACAO_BANNER), (SELECT MAX(CD_BANNER) FROM '+ name +'..BANNER));' &lt;br /&gt;
from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%dovac%' &lt;br /&gt;
order by name desc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Delete de registros já removidos da log_alteracao_usuario&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
DECLARE @r INT;&lt;br /&gt;
DECLARE @msg VARCHAR(max)&lt;br /&gt;
DECLARE @restantes INT&lt;br /&gt;
DECLARE @t1 DATETIME&lt;br /&gt;
DECLARE @t2 DATETIME&lt;br /&gt;
&lt;br /&gt;
IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence&lt;br /&gt;
  DROP TABLE #pode_apagar;&lt;br /&gt;
&lt;br /&gt;
SET @t1 = Getdate()&lt;br /&gt;
SET @msg = 'obtendo lista de registros para apagar...'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
SELECT cd_sinc_usuario&lt;br /&gt;
INTO   #pode_apagar&lt;br /&gt;
FROM   log_alteracao_usuario lau&lt;br /&gt;
WHERE  EXISTS (SELECT TOP 1 1&lt;br /&gt;
               FROM   log_sync_strategy las&lt;br /&gt;
               WHERE  lau.cd_usuario = las.cd_usuario&lt;br /&gt;
                      AND lau.nm_tabela = las.nm_tabela&lt;br /&gt;
                      AND lau.dt_insercao &amp;lt; las.dt_last_sync)&lt;br /&gt;
&lt;br /&gt;
SET @restantes = (SELECT Count(1)&lt;br /&gt;
                  FROM   #pode_apagar)&lt;br /&gt;
SET @msg = 'total para apagar '&lt;br /&gt;
           + Cast(@restantes AS VARCHAR(max)) + ' em '&lt;br /&gt;
           + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max))&lt;br /&gt;
           + 's'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
SET @r = 1;&lt;br /&gt;
&lt;br /&gt;
WHILE @r &amp;gt; 0&lt;br /&gt;
  BEGIN&lt;br /&gt;
      BEGIN TRAN&lt;br /&gt;
&lt;br /&gt;
      SET @t2 = Getdate()&lt;br /&gt;
&lt;br /&gt;
      DELETE TOP (50000) lau&lt;br /&gt;
      FROM   log_alteracao_usuario lau&lt;br /&gt;
      WHERE  EXISTS (SELECT TOP 1 1&lt;br /&gt;
                     FROM   #pode_apagar pa&lt;br /&gt;
                     WHERE  pa.cd_sinc_usuario = lau.cd_sinc_usuario)&lt;br /&gt;
&lt;br /&gt;
      SET @r = @@ROWCOUNT;&lt;br /&gt;
      SET @restantes = @restantes - @r&lt;br /&gt;
      SET @msg = 'apagados ' + Cast(@r AS VARCHAR(max))&lt;br /&gt;
                 + ' em '&lt;br /&gt;
                 + Cast(Datediff(ss, @t2, Getdate()) AS VARCHAR(max))&lt;br /&gt;
                 + 's, faltam '&lt;br /&gt;
                 + Cast(@restantes AS VARCHAR(max))&lt;br /&gt;
&lt;br /&gt;
      RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
      COMMIT TRANSACTION;&lt;br /&gt;
&lt;br /&gt;
      CHECKPOINT;&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence&lt;br /&gt;
  DROP TABLE #pode_apagar;&lt;br /&gt;
&lt;br /&gt;
SET @msg = 'finalizado em '&lt;br /&gt;
           + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max))&lt;br /&gt;
           + 's'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Scripts para token de &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
use bd_ssm_login;&lt;br /&gt;
&lt;br /&gt;
--INSERIR INICIALMENTE UM USUÁRIO NA TABELA USUARIO DA LOGIN&lt;br /&gt;
INSERT INTO USUARIO VALUES &lt;br /&gt;
('INTEGRADOR NOMEDAEMPRESA',    'int@nomeempresa',  'integrador@nomeempresa.com.br',    '3+ACVdglI558tfon1MRmVw==', 'SS',   NULL,   0,  1,  NULL,   GETDATE(),  NULL,   0);&lt;br /&gt;
&lt;br /&gt;
--INSERIR UM REGISTRO NA USUARIO_EMPRESA&lt;br /&gt;
INSERT INTO USUARIO_EMPRESA VALUES&lt;br /&gt;
((SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), NULL, 'nomedaempresaminusculo', 1, NULL, GETDATE(), 5)&lt;br /&gt;
&lt;br /&gt;
--INSERIR UM TOKEN PARA O USUÁRIO &lt;br /&gt;
INSERT INTO TOKEN VALUES&lt;br /&gt;
((SELECT SUBSTRING(REPLACE(CAST(NEWID() AS VARCHAR(40)), '-', ''), 1, 20)), &lt;br /&gt;
(SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), &lt;br /&gt;
GETDATE(), '2030-02-06 10:14:00.593')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM USUARIO WHERE NOME LIKE '%INTEGRADOR NOMEDAEMPRESA%';&lt;br /&gt;
SELECT * FROM USUARIO_EMPRESA WHERE CD_USUARIO = 7491&lt;br /&gt;
SELECT * FROM TOKEN WHERE CD_USUARIO = 7491&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM USUARIO_EMPRESA UE&lt;br /&gt;
	INNER JOIN USUARIO U&lt;br /&gt;
	 ON U.CD_USUARIO = UE.CD_USUARIO &lt;br /&gt;
WHERE NM_EMPRESA = 'lorenferhomolog'&lt;br /&gt;
AND UE.PAPEL = 5&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM TOKEN WHERE CD_USUARIO = 8353&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atalhos para tj2&lt;br /&gt;
Endpoints&lt;br /&gt;
&lt;br /&gt;
/api/about/&lt;br /&gt;
/importstatus&lt;br /&gt;
/importstatus/{id}&lt;br /&gt;
/importstatus-logged&lt;br /&gt;
/importstatus-logged/{id}&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;PRODUTO_ESTOQUE&amp;quot;:[{&amp;quot;id&amp;quot;:&amp;quot;-2147483648&amp;quot;,&amp;quot;cd_produto&amp;quot;:&amp;quot;111&amp;quot;,&amp;quot;cd_estoque&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;qt_estoque&amp;quot;:&amp;quot;999999&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
curl http://169.61.109.210:8185/erp-importer/campneushomolog/import -H 'SSAUTH_TOKEN: 123' -H 'Content-type: application/json' -X POST -d @dados.json&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;ROTA&amp;quot;:[{&amp;quot;cd_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ds_rota&amp;quot;:&amp;quot;SEGUNDA-FEIRA&amp;quot;,&amp;quot;ds_dias_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ativa&amp;quot;:&amp;quot;1&amp;quot;},{&amp;quot;cd_rota&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;ds_rota&amp;quot;:&amp;quot;TERCA-FEIRA&amp;quot;,&amp;quot;ds_dias_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ativa&amp;quot;:&amp;quot;1&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
* Inserir limitação de conexões para um aplicativo com Hikari GS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'SSBATCHES';&lt;br /&gt;
SELECT * FROM EMPRESA;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INSERT INTO EMPRESA_BD_PROPERTIES&lt;br /&gt;
SELECT &lt;br /&gt;
CD_EMPRESA, 'SSBATCHES', NULL, 2&lt;br /&gt;
FROM EMPRESA E &lt;br /&gt;
	INNER JOIN SYS.DATABASES SDBS&lt;br /&gt;
		ON ('BD_SSM_' + E.NM_EMPRESA) = SDBS.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atualizações de quantidades de conexões dos serviços de integração&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
--ERP-INTEGRATOR&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('pardalsorvetes','wsembalagens','paodahora','lacbom',&lt;br /&gt;
'gustamais','futuragrohomolog','mizu','auster','austerhomolog','yama','grupoisdrahomolog','bakerfoods','dicoplasthomolog','iranduba',&lt;br /&gt;
'motasa','serveng','fiore','gol','iranduba','lebrinha')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'TJ2'&lt;br /&gt;
	AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688)&lt;br /&gt;
&lt;br /&gt;
--UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
--WHERE APPNAME = 'TJ2'&lt;br /&gt;
--	AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688)&lt;br /&gt;
&lt;br /&gt;
--ERP-IMPORTER&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('campneus','lacbom','lebrinha','mizu')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'tj-importer'&lt;br /&gt;
	AND CD_EMPRESA IN (549,581,584,609)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
WHERE APPNAME = 'tj-importer'&lt;br /&gt;
	AND CD_EMPRESA IN (549,581,584,609)&lt;br /&gt;
&lt;br /&gt;
--ERP-IMPORTERNEW&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('montana','montanahomolog')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'tj-importernew'&lt;br /&gt;
	AND CD_EMPRESA IN (640,641)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
WHERE APPNAME = 'tj-importernew'&lt;br /&gt;
	AND CD_EMPRESA IN (640,641)&lt;br /&gt;
&lt;br /&gt;
--NEOGRID&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('davene','davenehomolog','casakm','casakmhomolog')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'neogrid'&lt;br /&gt;
	AND CD_EMPRESA IN (587,599,642,643)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 5&lt;br /&gt;
WHERE APPNAME = 'neogrid'&lt;br /&gt;
	AND CD_EMPRESA IN (587,599,642,643)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Contar quantidade de conexões por serviços&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(*), sd.name FROM sys.sysprocesses sp&lt;br /&gt;
	inner join sys.sysdatabases sd on sp.dbid = sd.dbid&lt;br /&gt;
 WHERE program_name LIKE '%tj-importer%' group by sd.name&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(*), sd.name FROM sys.sysprocesses sp&lt;br /&gt;
	inner join sys.sysdatabases sd on sp.dbid = sd.dbid&lt;br /&gt;
 WHERE program_name LIKE '%TJ2%' group by sd.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Magia do Jeff&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AND DS_OBSERVACAO LIKE '%[^A-Za-z@#$0-9@/_ .,+%!-]%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script de limpeza de registros duplicados.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN TRANSACTION&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TABELA_TEMP (&lt;br /&gt;
    CD_USUARIO INT,&lt;br /&gt;
    LONGITUDE DECIMAL(10, 6),&lt;br /&gt;
    LATITUDE DECIMAL(10, 6),&lt;br /&gt;
    DT_COORD DATETIME,&lt;br /&gt;
    PRECISAO INT,&lt;br /&gt;
    ORIGEM VARCHAR(2)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TABELA_TEMP &lt;br /&gt;
    SELECT DISTINCT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM COORDENADA_RASTREAMENTO ORDER BY DT_COORD ASC;&lt;br /&gt;
&lt;br /&gt;
TRUNCATE TABLE COORDENADA_RASTREAMENTO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO COORDENADA_RASTREAMENTO (CD_USUARIO, LONGITUDE, LATITUDE, DT_COORD, PRECISAO, ORIGEM)&lt;br /&gt;
    SELECT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM TABELA_TEMP ORDER BY DT_COORD ASC;&lt;br /&gt;
&lt;br /&gt;
DROP TABLE TABELA_TEMP;&lt;br /&gt;
COMMIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Criação de usuários de clientes na makita&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM USUARIO_VINCULACAO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TGRUPOSUSUARIO (CD_USUARIO, CD_GRUPO)&lt;br /&gt;
	SELECT CD_USUARIO, 7 FROM TUSUARIO WHERE DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A=='&lt;br /&gt;
&lt;br /&gt;
INSERT INTO USUARIO_VINCULACAO (CD_TUSUARIO, CD_VINCULADO, CD_TIPO_VINCULADO)&lt;br /&gt;
	SELECT T.CD_USUARIO, C.CD_CLIENTE, 'C' FROM TUSUARIO T &lt;br /&gt;
		INNER JOIN  CLIENTE C ON C.NR_CNPJ_CPF = T.NM_GUERRA COLLATE SQL_Latin1_General_CP1_CI_AS&lt;br /&gt;
	WHERE T.DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A=='&lt;br /&gt;
	AND C.CD_CLIENTE IN (13913)&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TUSUARIO (CD_USUARIO,NM_USUARIO,DS_EMAIL,DS_SENHA,ID_SUPER,NM_GUERRA,DT_EXPSENHA,DT_ALTSENHA,NR_VIOLACOES,&lt;br /&gt;
		CD_SITUACAO,DT_SITUACAO,DS_MOTIVO_SITUACAO,ID_ALT_SENHA_PROX_LOGIN,CD_TPUSUARIO,CD_EMPRESA,CD_FILIAL,ID_USER_SOFTSITE,&lt;br /&gt;
		ID_ATIVO,IMEI_GPS)&lt;br /&gt;
		SELECT ((SELECT MAX(CD_USUARIO) FROM TUSUARIO) + ROW_NUMBER() OVER(ORDER BY CD_CLIENTE ASC)) AS CD_USUARIO,&lt;br /&gt;
			CAST(C.NM_CLIENTE AS VARCHAR(40)) AS NM_USUARIO,&lt;br /&gt;
			C.DS_EMAIL,&lt;br /&gt;
			'4ZdOxz2fsGR3xqAJeGo82A==' AS DS_SENHA,&lt;br /&gt;
			'N' AS ID_SUPER,&lt;br /&gt;
			C.NR_CNPJ_CPF AS NM_GUERRA,&lt;br /&gt;
			NULL AS DT_EXPSENHA,&lt;br /&gt;
			GETDATE() AS DT_ALTSENHA,&lt;br /&gt;
			0 AS NR_VIOLACOES,&lt;br /&gt;
			1 AS CD_SITUACAO,&lt;br /&gt;
			GETDATE() AS DT_SITUACAO,&lt;br /&gt;
			NULL AS DS_MOTIVO_SITUACAO,&lt;br /&gt;
			NULL AS ID_ALT_SENHA_PROX_LOGIN,&lt;br /&gt;
			NULL AS CD_TPUSUARIO,&lt;br /&gt;
			NULL AS CD_EMPRESA,&lt;br /&gt;
			NULL AS CD_FILIAL,&lt;br /&gt;
			'N' AS ID_USER_SOFTSITE,&lt;br /&gt;
			NULL AS ID_ATIVO,&lt;br /&gt;
			NULL AS IMEI_GPS &lt;br /&gt;
		FROM CLIENTE C&lt;br /&gt;
		WHERE CD_CLIENTE IN (13913)  &lt;br /&gt;
	AND NOT EXISTS (SELECT TOP 1 1 FROM USUARIO_VINCULACAO UE WHERE C.CD_CLIENTE = UE.CD_VINCULADO)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visualização de falhas de importação&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE  @nomeBanco varchar(100); &lt;br /&gt;
&lt;br /&gt;
DECLARE bancos CURSOR FOR   &lt;br /&gt;
    SELECT name&lt;br /&gt;
    FROM sys.databases where &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%expressa%'&lt;br /&gt;
	and name not like '%makitahomolog%' &lt;br /&gt;
	and name not like '%prodentho_2%' &lt;br /&gt;
&lt;br /&gt;
OPEN bancos  &lt;br /&gt;
  &lt;br /&gt;
FETCH NEXT FROM bancos   &lt;br /&gt;
INTO @nomeBanco  &lt;br /&gt;
  &lt;br /&gt;
WHILE @@FETCH_STATUS = 0&lt;br /&gt;
BEGIN  &lt;br /&gt;
	EXEC ('use ' + @nomeBanco + ';' + 'SELECT TOP 1 ''NOME DO BANCO '' + REPLACE(''' + @nomeBanco +''', ''bd_ssm_'','''') , * FROM DW_IMPORTACAO WHERE ISNULL(RESULTADO, ''A'') IN (''F'', ''A'') ORDER BY 4 DESC;');&lt;br /&gt;
END   &lt;br /&gt;
CLOSE bancos;  &lt;br /&gt;
DEALLOCATE bancos;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Configurar base para usar o Claudus V3 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE LOG_ITEM_PEDIDO&lt;br /&gt;
ADD NR_ITEM_PEDIDO BIGINT &lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE LOG_ITEM_PEDIDO_RETORNO&lt;br /&gt;
ADD NR_ITEM_PEDIDO BIGINT &lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_DELETE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR DELETE&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'D' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM DELETED&lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_UPDATE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR UPDATE&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'U' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM INSERTED&lt;br /&gt;
	&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_INSERT_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR INSERT&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'I' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM INSERTED&lt;br /&gt;
GO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para trazer os pedidos auto do geosales3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT cd_pedido_cliente	 [cdPedidoCliente],&lt;br /&gt;
	   		   pa.cnpj_cliente		 [cliente.nrCnpjCpf],&lt;br /&gt;
	   		   c.cd_cliente			 [cliente.cdCliente],&lt;br /&gt;
	   		   c.nm_cliente			 [cliente.nmCliente],&lt;br /&gt;
	   		   c.cd_org_venda_padrao [cliente.orgVendaPadrao.cdOrgVenda],&lt;br /&gt;
	   		   ov.nm_organizacao	 [cliente.orgVendaPadrao.nmOrganizacao],&lt;br /&gt;
	   		   c.cd_vendedor_padrao  [cliente.vendedorPadrao.codigo],&lt;br /&gt;
	   		   v.nm_vendedor		 [cliente.vendedorPadrao.nome],&lt;br /&gt;
	   		   c.cd_tab_preco_padrao [cliente.tabPrecoPadrao.cdTabPreco],&lt;br /&gt;
	   		   tp.ds_tab_preco 		 [cliente.tabPrecoPadrao.dsTabPreco],&lt;br /&gt;
	   		   c.nm_estado           [cliente.enderecoPadrao.nmEstado],&lt;br /&gt;
	   		   c.cd_cond_pgto_padrao [cliente.condPgtoPadrao.cdCondPgto],&lt;br /&gt;
	   		   cp.ds_cond_pgto 		 [cliente.condPgtoPadrao.dsCondPgto],&lt;br /&gt;
	   		   c.cd_meio_pgto_padrao [cliente.meioPagamentoPadrao.cdMeioPgto], &lt;br /&gt;
       		   mp.ds_meio_pgto       [cliente.meioPagamentoPadrao.dsMeioPgto],&lt;br /&gt;
	   		   cnpj_fornecedor		 [cnpjFornecedor],&lt;br /&gt;
	   		   dt_emissao			 [dataEmissaoStr],&lt;br /&gt;
	   		   cp.cd_cond_pgto		 [condicaoPagamento.cdCondPgto],&lt;br /&gt;
	   		   cp.ds_cond_pgto		 [condicaoPagamento.dsCondPgto],&lt;br /&gt;
	   		   cp.pr_desconto		 [condicaoPagamento.prDescontoStr],&lt;br /&gt;
	   		   dt_vencimento		 [dataVencimentoStr],&lt;br /&gt;
	   		   cd_tipo_frete		 [frete.idTipoFrete],&lt;br /&gt;
	   		   motivo_bonificacao	 [motivoBonificacao],&lt;br /&gt;
	   		   dt_entrega			 [dataEntregaStr],&lt;br /&gt;
	   		   obs_pedido			 [observacaoPedido],&lt;br /&gt;
	   		   pa.cd_tipo_pedido	 [tipoPedido.codTipo],&lt;br /&gt;
	   		   tmp.ds_tipo			 [tipoPedido.descTipo],&lt;br /&gt;
	   		   id_utilizado			 [idUtilizadoStr]&lt;br /&gt;
		FROM   pedido_auto pa &lt;br /&gt;
		INNER JOIN cliente c ON pa.cnpj_cliente = c.nr_cnpj_cpf&lt;br /&gt;
		INNER JOIN organizacao_venda ov ON c.cd_org_venda_padrao = ov.cd_org_venda&lt;br /&gt;
		INNER JOIN vendedor v ON c.cd_vendedor_padrao = v.cd_vendedor&lt;br /&gt;
		INNER JOIN tabela_preco tp ON c.cd_tab_preco_padrao = tp.cd_tab_preco&lt;br /&gt;
		INNER JOIN condicao_pagamento cp ON c.cd_cond_pgto_padrao = cp.cd_cond_pgto &lt;br /&gt;
		INNER JOIN meio_pagamento mp ON mp.cd_meio_pgto = c.cd_meio_pgto_padrao&lt;br /&gt;
		INNER JOIN tipo_movimento_pedido tmp ON pa.cd_tipo_pedido = tmp.cd_tipo&lt;br /&gt;
		WHERE ( EXISTS (	SELECT TOP 1 1 &lt;br /&gt;
						   	FROM Fn_obter_cliente_usuario(#usuario.codigo#) fn &lt;br /&gt;
						   	WHERE ( fn.cd_cliente = c.cd_cliente ) &lt;br /&gt;
						) &lt;br /&gt;
			  ) AND pa.id_utilizavel = 'S' AND id_utilizado = 'N'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Scripts de análise de configuração do novo aplicativo de rastreamento&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--CONFIGURACAO&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_BASE_URL%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_CAPTURAR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_FUNCTION_MODE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_START%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_FINISH%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_LOGGED_APP%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_MIN_DISTANCE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_N_TRY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_ENVIAR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_INSERIR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_SLEEP_TRY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_STOP_SERVICE_PERMISSION%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TIMER_BATTERY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TRIANGULATION_ACTIVE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_VIEW_CONFIGURATION%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_GPS%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_LOCK%'&lt;br /&gt;
&lt;br /&gt;
--IMEI USUARIO&lt;br /&gt;
SELECT IMEI_GPS, * FROM TUSUARIO WHERE CD_USUARIO = 181 --358692106755103&lt;br /&gt;
--VENDEDOR DE ANÁLISE&lt;br /&gt;
SELECT IMEI, * FROM DADOS_VENDEDOR WHERE CD_VENDEDOR = 37; --358692106755103&lt;br /&gt;
--VERIFICAR STATUS DO GPS&lt;br /&gt;
SELECT * FROM GPS_STATUS WHERE CD_USUARIO = 181 order by 3 desc;&lt;br /&gt;
--VERIFICAR COORDENADAS&lt;br /&gt;
SELECT * FROM COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 181 order by 5 desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--teste&lt;br /&gt;
SELECT * FROM bd_ssm_webinargeosales..GPS_STATUS WHERE CD_USUARIO = 155 order by 3 desc;&lt;br /&gt;
SELECT * FROM bd_ssm_webinargeosales..COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 155 ORDER BY 5 DESC;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--GPS STATUS&lt;br /&gt;
--A - ATIVO - (GPS OU INTERNET)&lt;br /&gt;
--D - DESATIVADO - (GPS OU INTERNET)&lt;br /&gt;
--C - DESTRUIÇÃO DO SERVIÇO DE CONFIGURACAO &lt;br /&gt;
--R - DESTRUIÇÃO DO SERVIÇO DE RASTREAMENTO&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Achar tabelas que tem a coluna Y&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select SO.NAME, * from sys.columns SC&lt;br /&gt;
	INNER JOIN sys.objects SO&lt;br /&gt;
	ON SC.object_id = SO.object_id where SC.name like '%cd_org_venda%'&lt;br /&gt;
	and type = 'U'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Migrar imagens de catálogo para produto imagem no evo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN TRANSACTION&lt;br /&gt;
&lt;br /&gt;
DECLARE @Imagens TABLE(DESC_FOTO VARCHAR(100), URL VARCHAR(1000), ID_ATIVO bit)&lt;br /&gt;
DECLARE @ProdutoImagens TABLE(CD_PRODUTO INT, CD_IMAGEM INT, ID_PRINCIPAL CHAR(1), ID_ATIVO BIT)&lt;br /&gt;
INSERT INTO @Imagens&lt;br /&gt;
	SELECT DISTINCT DS_FOTO, DS_URL, 1 FROM CATALOGO_FOTO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO IMAGEM&lt;br /&gt;
	SELECT ROW_NUMBER() OVER(ORDER BY DESC_FOTO ASC), DESC_FOTO, URL, ID_ATIVO FROM @Imagens;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO @ProdutoImagens&lt;br /&gt;
	SELECT CF.CD_PRODUTO, I.CD_IMAGEM, CF.ID_PRINCIPAL, 1 FROM&lt;br /&gt;
		IMAGEM I&lt;br /&gt;
			INNER JOIN CATALOGO_FOTO CF &lt;br /&gt;
				ON I.URL_IMAGEM  = CF.DS_URL&lt;br /&gt;
	WHERE CD_PRODUTO IS NOT NULL&lt;br /&gt;
&lt;br /&gt;
INSERT INTO PRODUTO_IMAGEM&lt;br /&gt;
	SELECT DISTINCT CD_PRODUTO, CD_IMAGEM, ID_PRINCIPAL, ID_ATIVO FROM&lt;br /&gt;
		@ProdutoImagens&lt;br /&gt;
COMMIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* VERIFICAR PORQUE O PRODUTO NÃO APARECE PRO CLIENTE APÓS O PREENCHIMENTO DO CABEÇALHO&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--consulta que traz os pedido quando multiplos estoques está ativado&lt;br /&gt;
SELECT&lt;br /&gt;
		p.cd_produto,*&lt;br /&gt;
	FROM fn_obter_produtos_com_paginacao('0101089', 2,&lt;br /&gt;
			38, null) pot&lt;br /&gt;
	INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto&lt;br /&gt;
&lt;br /&gt;
		--INNER JOIN familia_produto fp ON p.cd_familia = fp.cd_familia AND fp.cd_familia = #{familia.key}&lt;br /&gt;
&lt;br /&gt;
	INNER JOIN lista_produto lp WITH(NOLOCK) ON (lp.cd_produto = pot.cd_produto AND lp.cd_org_venda = pot.cd_org_venda AND lp.cd_tab_preco = pot.cd_tab_preco)&lt;br /&gt;
	where&lt;br /&gt;
		 EXISTS (&lt;br /&gt;
					SELECT 1 FROM produto_estoque pe &lt;br /&gt;
					WHERE&lt;br /&gt;
						pe.cd_produto = p.cd_produto AND pe.cd_estoque = 200&lt;br /&gt;
				)&lt;br /&gt;
&lt;br /&gt;
	ORDER BY p.nm_produto OFFSET 0 ROWS FETCH NEXT 18 ROWS ONLY&lt;br /&gt;
&lt;br /&gt;
--funcão de paginação&lt;br /&gt;
CREATE FUNCTION [dbo].[fn_obter_produtos_com_paginacao] (&lt;br /&gt;
	@cdOrgVenda VARCHAR(20),&lt;br /&gt;
	@cdTabPreco INT,&lt;br /&gt;
	@cdCliente INT,&lt;br /&gt;
	@param VARCHAR(100))&lt;br /&gt;
RETURNS TABLE&lt;br /&gt;
AS&lt;br /&gt;
RETURN (&lt;br /&gt;
	WITH org_venda AS (&lt;br /&gt;
		SELECT&lt;br /&gt;
			ov.cd_org_venda,&lt;br /&gt;
			ovc.cd_cliente,&lt;br /&gt;
			ov.cd_estoque,&lt;br /&gt;
	&lt;br /&gt;
		ovc.cd_tab_preco&lt;br /&gt;
		FROM organizacao_venda ov WITH(NOLOCK)&lt;br /&gt;
		INNER JOIN org_venda_cliente ovc WITH(NOLOCK) ON ov.cd_org_venda = ovc.cd_org_venda&lt;br /&gt;
		WHERE ov.cd_org_venda = @cdOrgVenda AND ovc.cd_tab_preco = @cdTabPreco&lt;br /&gt;
			AND ovc.cd_cliente = @cdCliente&lt;br /&gt;
	&lt;br /&gt;
), produto_organizacao_tabela AS ( &lt;br /&gt;
		SELECT&lt;br /&gt;
			p.cd_produto, &lt;br /&gt;
			p.nm_produto,&lt;br /&gt;
			ov.cd_cliente,&lt;br /&gt;
			ov.cd_org_venda, &lt;br /&gt;
			ov.cd_estoque, &lt;br /&gt;
		ov.cd_tab_preco&lt;br /&gt;
		FROM produto p WITH(NOLOCK)&lt;br /&gt;
		CROSS JOIN org_venda ov WITH(NOLOCK)&lt;br /&gt;
		WHERE (&lt;br /&gt;
				(@param IS NULL)&lt;br /&gt;
 OR &lt;br /&gt;
				(p.nm_produto LIKE '%' + @param + '%' &lt;br /&gt;
				 OR p.cd_produto LIKE '%' + @param + '%' &lt;br /&gt;
				 OR p.cd_referencia LIKE '%' + @param + '%'&lt;br /&gt;
				 OR p.cod_barras LIKE '%' + @param + '%'&lt;br /&gt;
				 OR p.cd_ncm LIKE '%' + @param + '%')&lt;br /&gt;
			)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	SELECT&lt;br /&gt;
		p.cd_pr&lt;br /&gt;
oduto,&lt;br /&gt;
		pot.cd_org_venda,&lt;br /&gt;
		pot.cd_tab_preco,&lt;br /&gt;
		pot.cd_estoque&lt;br /&gt;
	FROM  produto_organizacao_tabela pot&lt;br /&gt;
	INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto &lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remover usuários inválidos de uma base mssql&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
declare @db varchar(50)&lt;br /&gt;
declare @cont int&lt;br /&gt;
declare @usuariodb varchar(50)&lt;br /&gt;
declare @cmd varchar (200)&lt;br /&gt;
--set @db = (SELECT '?' AS db_name)&lt;br /&gt;
--print @db&lt;br /&gt;
create table ##usuariobd (cod int primary key identity, nome_usuario varchar (50), nome_login&lt;br /&gt;
varchar(50))&lt;br /&gt;
insert into ##usuariobd&lt;br /&gt;
select su.name, sl.name--, db_name()&lt;br /&gt;
from [dbo].[sysusers] su&lt;br /&gt;
left join sys.syslogins sl on su.sid = sl.sid&lt;br /&gt;
where su.uid &amp;gt; 4&lt;br /&gt;
and su.name not like 'db_%'&lt;br /&gt;
and su.name &amp;lt;&amp;gt; 'MS_DataCollectorInternalUser'&lt;br /&gt;
and issqlrole &amp;lt;&amp;gt; 1&lt;br /&gt;
and sl.name is null&lt;br /&gt;
order by 1&lt;br /&gt;
set @cont = (select MAX(cod) from ##usuariobd)&lt;br /&gt;
while @cont &amp;gt;0&lt;br /&gt;
begin&lt;br /&gt;
set @usuariodb = (select nome_usuario from ##usuariobd where cod = @cont)&lt;br /&gt;
IF EXISTS (SELECT SCHEMA_ID FROM sys.schemas WHERE [name] = @usuariodb)&lt;br /&gt;
BEGIN&lt;br /&gt;
print 'Deletando Schema ' + @usuariodb&lt;br /&gt;
set @cmd = 'drop schema [' + @usuariodb + ']'&lt;br /&gt;
print @cmd&lt;br /&gt;
exec (@cmd)&lt;br /&gt;
END&lt;br /&gt;
print 'Deletando usuário '+ @usuariodb + '!'&lt;br /&gt;
set @cmd= 'drop user [' + @usuariodb + ']'&lt;br /&gt;
exec (@cmd)&lt;br /&gt;
set @cont = @cont -1&lt;br /&gt;
end&lt;br /&gt;
drop table ##usuariobd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar dados servidor de banco de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT @@SERVERNAME,&lt;br /&gt;
 CONNECTIONPROPERTY('net_transport') AS net_transport,&lt;br /&gt;
 CONNECTIONPROPERTY('protocol_type') AS protocol_type,&lt;br /&gt;
 CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,&lt;br /&gt;
 CONNECTIONPROPERTY('local_net_address') AS local_net_address,&lt;br /&gt;
 CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,&lt;br /&gt;
 CONNECTIONPROPERTY('client_net_address') AS client_net_address&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Agregador de dados &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT c.cd_cliente, STRING_AGG(r.DS_ROTA, ', ')&lt;br /&gt;
FROM cliente c&lt;br /&gt;
LEFT JOIN CLIENTE_ROTA cr on c.CD_CLIENTE = cr.CD_CLIENTE&lt;br /&gt;
LEFT JOIN ROTA r on r.CD_ROTA = cr.CD_ROTA&lt;br /&gt;
GROUP BY c.cd_cliente&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script para validar se o pedido pode ser copiado&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
			-- pedido &lt;br /&gt;
			P.cd_pedido_palm           AS [cdPedidoPalm],&lt;br /&gt;
			P.dt_emissao               AS [dtEmissao],&lt;br /&gt;
			P.dt_vencimento            AS [dtVencimento],&lt;br /&gt;
			P.cd_pedido_cliente        AS [cdPedidoCliente],&lt;br /&gt;
			P.cd_pedido                AS [cdPedido],&lt;br /&gt;
			P.dt_entrega               AS [dtEntrega],&lt;br /&gt;
			P.dt_faturamento           AS [dtFaturamento],&lt;br /&gt;
			P.dt_entrega_calculada     AS [dtEntregaCalculada],&lt;br /&gt;
			P.id_prioridade            AS [idPrioridade],&lt;br /&gt;
			P.ds_observacao            AS [observacao],&lt;br /&gt;
			P.ds_obs_frete             AS [observacaoFrete],&lt;br /&gt;
			P.ds_observacao_nf         AS [observacaoNotaFiscal],&lt;br /&gt;
			P.nm_rz_social_entr        AS [nmRazaoSocialEntrega],&lt;br /&gt;
			P.nr_cnpj_cpf_entr         AS [cpfCnpjEntrega],&lt;br /&gt;
			P.nr_cgf_entr              AS [cgfEntrega],&lt;br /&gt;
			P.nm_responsavel           AS [nomeResponsavel],&lt;br /&gt;
			P.id_orcamento             AS [orcamento],&lt;br /&gt;
			P.cd_rota                  AS [cdRota],&lt;br /&gt;
			P.id_efetivado             AS [efetivado],&lt;br /&gt;
			P.pc_desconto              AS [pcDesconto],&lt;br /&gt;
			P.id_cross_docking         AS [crossDocking],&lt;br /&gt;
			P.pc_desc_bonif            AS [pcDescBonif],&lt;br /&gt;
			P.vr_outros_descontos      AS [outrosDescontos],&lt;br /&gt;
			P.vr_frete_manual          AS [vrFreteManual],&lt;br /&gt;
			P.vr_frete_manual_original AS [vrFreteManualOriginal],&lt;br /&gt;
			P.acrescimo_dias           AS [acrescimoDias],&lt;br /&gt;
			P.qt_quilometros_entrega   AS [qtQuilometrosEntrega],&lt;br /&gt;
			P.qt_quilometros_cobranca  AS [qtQuilometrosCobranca],&lt;br /&gt;
			-- cliente --&amp;gt;&lt;br /&gt;
			C.cd_cliente                AS [cliente@cdCliente],&lt;br /&gt;
			C.cd_aprovacao              AS [cliente@cdAprCliente],&lt;br /&gt;
			CASE WHEN&lt;br /&gt;
				C.origem = 'CLIENTE_APROVACAO' THEN 1&lt;br /&gt;
				ELSE 0&lt;br /&gt;
			END                         AS [cliente@isProspect],&lt;br /&gt;
		-- organizacao venda&lt;br /&gt;
			OV.cd_org_venda 			AS [orgVenda@cdOrgVenda],&lt;br /&gt;
			-- tipo pedido&lt;br /&gt;
			TMP.cd_tipo                 AS [tipoPedido@codTipo],&lt;br /&gt;
			-- vendedor&lt;br /&gt;
			V.cd_vendedor               AS [vendedor@codigo],&lt;br /&gt;
			-- tabela preco&lt;br /&gt;
			TP.cd_tab_preco             AS [tabPreco@cdTabPreco],&lt;br /&gt;
			-- estoque&lt;br /&gt;
			P.cd_estoque                AS [estoque@cdEstoque],&lt;br /&gt;
			-- canal de venda&lt;br /&gt;
			p.cd_canal                  AS [canalVenda@codigo],&lt;br /&gt;
			-- meio pagamento&lt;br /&gt;
			P.cd_meio_pgto 			    AS [meioPagamento@cdMeioPgto],&lt;br /&gt;
			-- meio pagamento secundario&lt;br /&gt;
			P.cd_meio_pgto_sec 			AS [meioPgtoSecundario@cdMeioPgto],&lt;br /&gt;
			-- cond. pgto &lt;br /&gt;
			P.cd_cond_pgto              AS [condPgto@cdCondPgto],&lt;br /&gt;
			-- cond. pgto secundario &lt;br /&gt;
			P.cd_cond_pgto_sec			AS [condPgtoSecundario@cdCondPgto],&lt;br /&gt;
			-- tipo frete &lt;br /&gt;
			P.id_tipo_frete             AS [tipoFrete@idTipoFrete],&lt;br /&gt;
			-- transportadora &lt;br /&gt;
			P.cd_transportadora			 AS [transportadora@codigo],&lt;br /&gt;
			-- transportadora auxiliar &lt;br /&gt;
			p.cd_transportadora_auxiliar AS [transportadoraAuxiliar@codigo],&lt;br /&gt;
			-- situacao pedido &lt;br /&gt;
			SP.cd_st_pedido				AS [situacaoPedido@cdStPedido],&lt;br /&gt;
			SP.ds_st_pedido			    AS [situacaoPedido@dsStPedido],&lt;br /&gt;
			-- pedido pai &lt;br /&gt;
			PPAI.cd_pedido_palm         AS [pedidoPaiDTO@cdPedidoPalm],&lt;br /&gt;
			PPAI.dt_emissao             AS [pedidoPaiDTO@dtEmissao],&lt;br /&gt;
			PPAI.vr_pedido_impostos     AS [pedidoPaiDTO@vrPedidoImpostos],&lt;br /&gt;
			-- endereco entrega &lt;br /&gt;
			P.cd_endereco_entrega       AS [enderecoEntrega@cdEndereco],&lt;br /&gt;
			P.ds_endereco_entr          AS [enderecoEntrega@dsEndereco],&lt;br /&gt;
			P.nm_bairro_entr            AS [enderecoEntrega@nmBairro],&lt;br /&gt;
			P.nm_cidade_entr            AS [enderecoEntrega@nmCidade],&lt;br /&gt;
			P.nm_estado_entr            AS [enderecoEntrega@nmEstado],&lt;br /&gt;
			P.nr_cep_entr               AS [enderecoEntrega@nrCep],&lt;br /&gt;
			P.nr_fone_entr              AS [enderecoEntrega@nrTelefone],&lt;br /&gt;
			P.nr_cnpj_cpf_entr          AS [enderecoEntrega@nrCnpjCpf],&lt;br /&gt;
			-- endereco cobranca&lt;br /&gt;
			P.cd_endereco_cobranca      AS [enderecoCobranca@cdEndereco],&lt;br /&gt;
			P.ds_endereco_cobr          AS [enderecoCobranca@dsEndereco],&lt;br /&gt;
			P.nm_bairro_cobr            AS [enderecoCobranca@nmBairro],&lt;br /&gt;
			P.nm_cidade_cobr            AS [enderecoCobranca@nmCidade],&lt;br /&gt;
			P.nm_estado_cobr            AS [enderecoCobranca@nmEstado],&lt;br /&gt;
			P.nr_cep_cobr               AS [enderecoCobranca@nrCep],&lt;br /&gt;
			P.nr_fone_cobr              AS [enderecoCobranca@nrTelefone],&lt;br /&gt;
			P.nr_cnpj_cpf_cobr          AS [enderecoCobranca@nrCnpjCpf],&lt;br /&gt;
			-- pedido informacao extra &lt;br /&gt;
			PIEXT.cd_inf                AS [pedInfoExtra@cdInf],&lt;br /&gt;
			PIEXT.ds_inf                AS [pedInfoExtra@dsLabel],&lt;br /&gt;
			PIEXT.cd_tipo_inf           AS [pedInfoExtra@cdTipoInf],&lt;br /&gt;
			PIEXT.ds_livre_inf          AS [pedInfoExtra@dsLivreInf],&lt;br /&gt;
			-- tramitacao_pedido&lt;br /&gt;
			trp.cd_pedido_palm			AS [tramitacaoPedido@cdPedidoPalm],&lt;br /&gt;
			trp.cd_pedido_palm			AS [tramitacaoPedido@pedido@cdPedidoPalm], &lt;br /&gt;
			trp.cd_tramitacao			AS [tramitacaoPedido@tramitacao@cdTramitacao], &lt;br /&gt;
			tram.ds_tramitacao			AS [tramitacaoPedido@tramitacao@dsTramitacao], &lt;br /&gt;
			trp.ds_observacao			AS [tramitacaoPedido@dsObservavao], &lt;br /&gt;
			trp.dt_tramitacao			AS [tramitacaoPedido@dtTramitacao], &lt;br /&gt;
			trp.cd_usuario			    AS [tramitacaoPedido@usuarioSistema@codigo],&lt;br /&gt;
	    	-- tramitacao_pedido&lt;br /&gt;
	    	P.cd_motivo_pedido			AS [motivoPedido@cdMotivoPedido],&lt;br /&gt;
	    	mot.ds_motivo_pedido		AS [motivoPedido@dsMotivoPedido]&lt;br /&gt;
		FROM vw_pedidos P&lt;br /&gt;
		INNER JOIN (SELECT cd_cliente, nm_cliente, cd_aprovacao, origem FROM vw_clientes) C on (P.cd_cliente = C.cd_cliente)&lt;br /&gt;
		INNER JOIN (SELECT cd_org_venda, nm_organizacao FROM organizacao_venda WITH (NOLOCK)) OV ON P.cd_org_venda = OV.cd_org_venda&lt;br /&gt;
		INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo FROM tipo_movimento_pedido) TMP on (P.cd_tipo_pedido = TMP.cd_tipo)&lt;br /&gt;
		INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor) V ON P.cd_vendedor = V.cd_vendedor&lt;br /&gt;
		INNER JOIN tabela_preco TP ON P.cd_tab_preco = TP.cd_tab_preco&lt;br /&gt;
		LEFT JOIN situacao_pedido sp ON P.cd_st_pedido = sp.cd_st_pedido&lt;br /&gt;
		LEFT JOIN (SELECT cd_pedido_palm, dt_emissao, vr_pedido_impostos FROM vw_pedidos WITH(NOLOCK)) ppai ON P.cd_pedido_palm_pai = ppai.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN vw_pedidos_informacoes_extras PIEXT ON P.cd_pedido_palm = PIEXT.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN vw_tramitacoes_pedidos trp WITH(NOLOCK) ON P.cd_pedido_palm = trp.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN tramitacao tram ON trp.cd_tramitacao = tram.cd_tramitacao&lt;br /&gt;
		LEFT JOIN motivo_pedido mot ON mot.cd_motivo_pedido = P.cd_motivo_pedido&lt;br /&gt;
		WHERE&lt;br /&gt;
			P.cd_pedido_palm = 20063013102232739&lt;br /&gt;
			AND (&lt;br /&gt;
					(&lt;br /&gt;
						(P.origem = 'PEDIDO_RETORNO' OR P.origem = 'PEDIDO')&lt;br /&gt;
						AND EXISTS (&lt;br /&gt;
							-- org_venda_cliente&lt;br /&gt;
							SELECT TOP 1 1 FROM org_venda_cliente OVC&lt;br /&gt;
							WHERE&lt;br /&gt;
								P.cd_org_venda = OVC.cd_org_venda &lt;br /&gt;
								AND P.cd_cliente = OVC.cd_cliente&lt;br /&gt;
								AND P.cd_vendedor = OVC.cd_vendedor &lt;br /&gt;
								AND P.cd_tab_preco = OVC.cd_tab_preco&lt;br /&gt;
						&lt;br /&gt;
						)&lt;br /&gt;
					)	&lt;br /&gt;
				OR&lt;br /&gt;
					(&lt;br /&gt;
						P.origem = 'PEDIDO_APROVACAO'&lt;br /&gt;
						AND EXISTS (&lt;br /&gt;
						-- parametros_cliente_prospect&lt;br /&gt;
							SELECT TOP 1 1 FROM parametros_venda_prospect PCP&lt;br /&gt;
							WHERE&lt;br /&gt;
								P.cd_org_venda = PCP.cd_org_venda &lt;br /&gt;
								AND P.cd_vendedor = PCP.cd_vendedor &lt;br /&gt;
								AND P.cd_tab_preco = PCP.cd_tab_preco&lt;br /&gt;
						)&lt;br /&gt;
					)&lt;br /&gt;
			)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script para criar um usuário com todos os acessos no EVO/NuPortal &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- __   __   __           __   ___  __  &lt;br /&gt;
--/ _` /  \ |  \    |  | /__` |__  |__) &lt;br /&gt;
--\__&amp;gt; \__/ |__/    \__/ .__/ |___ |  \ &lt;br /&gt;
                                     &lt;br /&gt;
&lt;br /&gt;
-- 1º utilize a base desejada e insira o nome da empresa em @nm_empresa&lt;br /&gt;
	use bd_ssm_biodinamicajucianodev&lt;br /&gt;
	DECLARE @nm_empresa VARCHAR(200) = 'biodinamicajucianodev'&lt;br /&gt;
&lt;br /&gt;
-- 2º escolha um nome(novo ou já existente) para o perfil que terá acesso a tudo, este nome também será a senha para o portal EVO.&lt;br /&gt;
	DECLARE @nm_new_perfil VARCHAR(100) = 'dog'&lt;br /&gt;
&lt;br /&gt;
-- 3º Escolha um usuário da base escolhida que não exista na USUARIO_PERFIL através da query abaixo. &lt;br /&gt;
-- Observe que a consulta utiliza as variáveis acima para funcionar, então selecione-as ao executá-la.&lt;br /&gt;
	SELECT DISTINCT (u.cd_usuario), ue.cd_tusuario, u.nome, u.login, u.email, u.senha, u.salt, u.dt_criacao, u.dt_validade, u.valido FROM bd_ssm_login..usuario u&lt;br /&gt;
	INNER JOIN bd_ssm_login..usuario_empresa ue ON u.cd_usuario = ue.cd_usuario&lt;br /&gt;
	INNER JOIN perfil_usuario pu ON pu.cd_usuario !=  u.cd_usuario&lt;br /&gt;
	WHERE (ue.nm_empresa LIKE '%'+ @nm_empresa +'%' OR u.login LIKE '%'+ @nm_empresa +'%')&lt;br /&gt;
--  AND ue.papel = 2&lt;br /&gt;
--  AND u.login like '%jbonatto%'&lt;br /&gt;
--  AND u.cd_usuario = 28607&lt;br /&gt;
--  AND ue.cd_tusuario IN (170, 205)&lt;br /&gt;
&lt;br /&gt;
--PAPÉIS:&lt;br /&gt;
--NENHUM(-1)&lt;br /&gt;
--SUPORTE(0)&lt;br /&gt;
--GESTOR(1)&lt;br /&gt;
--VENDEDOR(2)&lt;br /&gt;
--CLIENTE(3)&lt;br /&gt;
--BACKOFFICE(4)&lt;br /&gt;
--INTEGRADOR(5)&lt;br /&gt;
&lt;br /&gt;
-- 5º Substitua NULL pelo bd_ssm_login..cd_usuario escolhido em @cdUsuario_dog. o Script só executará se a variável @cdUsuario_dog estiver diferente de NULL&lt;br /&gt;
DECLARE @cdUsuario_dog INT = NULL;&lt;br /&gt;
-- Porque dog? Dog invertido fica god, que dá o sentido de god user.&lt;br /&gt;
&lt;br /&gt;
-- 6º Após os passos acima, verifique se as variáveis acima (@nm_empresa, @nm_new_perfil, @cdUsuario_dog) estão com os valores corretos.&lt;br /&gt;
&lt;br /&gt;
-- 7º Execute todo este script. Se estiver no Microsoft SQL Server Management Studio apenas pressione F5.&lt;br /&gt;
-- Se tudo ocorrer bem você visualizará o usuário escolhido no último select resultante deste script.&lt;br /&gt;
&lt;br /&gt;
-- Após executá-lo não pare o script, pois isso pode gerar um processo travado/bloqueado.&lt;br /&gt;
&lt;br /&gt;
DECLARE @cd_perfil_already_exists INT = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil)&lt;br /&gt;
&lt;br /&gt;
BEGIN TRANSACTION &lt;br /&gt;
BEGIN TRY&lt;br /&gt;
	IF (@cdUsuario_dog IS NOT NULL &lt;br /&gt;
		AND @nm_new_perfil IS NOT NULL &lt;br /&gt;
		AND @nm_new_perfil &amp;lt;&amp;gt; '' &lt;br /&gt;
		AND (SELECT DB_NAME()) = 'bd_ssm_' + @nm_empresa&lt;br /&gt;
		AND NOT EXISTS (SELECT TOP 1 1 FROM PERFIL_USUARIO WHERE CD_USUARIO = @cdUsuario_dog)&lt;br /&gt;
		)&lt;br /&gt;
		BEGIN&lt;br /&gt;
			DECLARE @I INT = 1&lt;br /&gt;
			DECLARE @cdPerfilChoosed INT;&lt;br /&gt;
			DECLARE @cdAcaoTemp INT;&lt;br /&gt;
&lt;br /&gt;
			--Decidindo o perfil a ser usado &lt;br /&gt;
			IF(@cd_perfil_already_exists IS NULL) &lt;br /&gt;
				BEGIN&lt;br /&gt;
					INSERT INTO PERFIL(&lt;br /&gt;
						CD_PERFIL, &lt;br /&gt;
						NM_PERFIL&lt;br /&gt;
					) VALUES (&lt;br /&gt;
						(SELECT ISNULL((SELECT MAX(CD_PERFIL) FROM PERFIL), 1) + 1), &lt;br /&gt;
						@nm_new_perfil&lt;br /&gt;
					)&lt;br /&gt;
					SET @cdPerfilChoosed = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil)&lt;br /&gt;
				END&lt;br /&gt;
			ELSE&lt;br /&gt;
				BEGIN&lt;br /&gt;
					SET @cdPerfilChoosed = @cd_perfil_already_exists&lt;br /&gt;
				END&lt;br /&gt;
&lt;br /&gt;
			--Vinculando usuário a um perfil&lt;br /&gt;
			INSERT INTO PERFIL_USUARIO (CD_PERFIL, CD_USUARIO)&lt;br /&gt;
			VALUES (@cdPerfilChoosed, @cdUsuario_dog)&lt;br /&gt;
&lt;br /&gt;
			--Inserindo ações para o perfil escolhido&lt;br /&gt;
&lt;br /&gt;
			DECLARE @acoes TABLE(&lt;br /&gt;
				CD_RANK INT,&lt;br /&gt;
				CD_ACAO INT&lt;br /&gt;
			)&lt;br /&gt;
&lt;br /&gt;
			;WITH acoes AS(&lt;br /&gt;
				SELECT &lt;br /&gt;
					ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rk, &lt;br /&gt;
					CD_ACAO &lt;br /&gt;
				FROM BD_SSM_LOGIN..ACAO &lt;br /&gt;
				WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO &amp;lt;&amp;gt; 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO'&lt;br /&gt;
			) INSERT INTO @acoes SELECT rk, CD_ACAO from acoes&lt;br /&gt;
&lt;br /&gt;
			DECLARE @LENGHT INT = (SELECT count(*) FROM BD_SSM_LOGIN..ACAO WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO &amp;lt;&amp;gt; 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO')&lt;br /&gt;
&lt;br /&gt;
			WHILE (@I &amp;lt; @LENGHT)&lt;br /&gt;
				BEGIN&lt;br /&gt;
					&lt;br /&gt;
					SET @cdAcaoTemp = (SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I)&lt;br /&gt;
&lt;br /&gt;
					IF NOT EXISTS ((SELECT TOP 1 1 FROM ACAO_PERFIL WHERE CD_PERFIL = @cdPerfilChoosed AND CD_ACAO = @cdAcaoTemp)) &lt;br /&gt;
						BEGIN &lt;br /&gt;
							INSERT INTO ACAO_PERFIL(CD_ACAO, CD_PERFIL)&lt;br /&gt;
							VALUES ((SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I) , @cdPerfilChoosed)&lt;br /&gt;
						END		&lt;br /&gt;
					SET @I += 1;&lt;br /&gt;
				END&lt;br /&gt;
&lt;br /&gt;
			IF (SELECT salt FROM BD_SSM_LOGIN..USUARIO U where cd_usuario = @cdUsuario_dog) != 'PLAIN'&lt;br /&gt;
				BEGIN&lt;br /&gt;
					UPDATE bd_ssm_Login..usuario SET SALT = 'PLAIN', SENHA = @nm_new_perfil where cd_usuario = @cdUsuario_dog&lt;br /&gt;
				END&lt;br /&gt;
			SELECT 'Abaixo terá as informações de login EVO.' AS 'SEU GOD USER FOI CRIADO COM SUCESSO!' &lt;br /&gt;
			SELECT u.LOGIN, u.SENHA, u.SALT, U.CD_USUARIO, UE.CD_TUSUARIO, p.NM_PERFIL, * FROM BD_SSM_LOGIN..USUARIO U&lt;br /&gt;
					INNER JOIN bd_ssm_login..USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO&lt;br /&gt;
					INNER JOIN PERFIL_USUARIO PU ON PU.CD_USUARIO = U.CD_USUARIO&lt;br /&gt;
					INNER JOIN PERFIL P ON P.CD_PERFIL = PU.CD_PERFIL&lt;br /&gt;
					WHERE u.CD_USUARIO = @cdUsuario_dog&lt;br /&gt;
		END&lt;br /&gt;
	ELSE&lt;br /&gt;
		BEGIN&lt;br /&gt;
			SELECT 'DADOS EQUIVOCADOS, BASE DIVERGENTE OU JÁ EXISTE ESTE USUÁRIO NA USUARIO_PERFIL'&lt;br /&gt;
		END&lt;br /&gt;
	COMMIT;&lt;br /&gt;
END TRY&lt;br /&gt;
	BEGIN CATCH&lt;br /&gt;
		SELECT 'ROLLBACK, WE HAVE A PROBLEM  -&amp;gt; ' + ERROR_MESSAGE()&lt;br /&gt;
		ROLLBACK&lt;br /&gt;
	END CATCH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script de auxílio para análise da aprovação de pendências no item do pedido&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--Script de auxílio para análise da aprovação de pendências no item do pedido&lt;br /&gt;
&lt;br /&gt;
-- Preencha estas 2 variáveis&lt;br /&gt;
DECLARE @cdPedidoPalm BIGINT = 200729124209337,&lt;br /&gt;
		@cdTUsuario INT = 168&lt;br /&gt;
&lt;br /&gt;
DECLARE	@cdGestor INT = (SELECT cd_supervisor FROM supervisor WHERE cd_usuario = @cdTUsuario)&lt;br /&gt;
&lt;br /&gt;
IF (@cdGestor IS NULL)&lt;br /&gt;
	BEGIN&lt;br /&gt;
		SELECT 'é necessário que o usuário seja um gestor/supervisor para aprovar pendências'&lt;br /&gt;
		RETURN&lt;br /&gt;
	END&lt;br /&gt;
--Caso você queira analisar o retorno ou a própria procedure que simula o click do botão aprovar pendências ela está logo abaixo: &lt;br /&gt;
	--Analisando a procedure:&lt;br /&gt;
		--Utilize sp_helptext com os resultados em modo Texto(CTRL + T) no lugar do EXEC para analisar a procedure.&lt;br /&gt;
		--Ou melhor, vá em nome_da_sua_base --&amp;gt; Programação --&amp;gt; Procedimentos Armazenados &lt;br /&gt;
		--&amp;gt; dbo.PR_AUTORIZAR_PENDENCIA &lt;br /&gt;
		--&amp;gt; Botão direito Modificar &lt;br /&gt;
		--&amp;gt; comente a linha que começa com Alter para não alterar a procedure sem querer&lt;br /&gt;
&lt;br /&gt;
	--Executando&lt;br /&gt;
		--CUIDADO: O Script logo abaixo possui uma linha que executa uma procedure com comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes.&lt;br /&gt;
&lt;br /&gt;
		--INÍCIO&lt;br /&gt;
			--DECLARE @pendenciaPedido TP_PENDENCIA_PEDIDO;&lt;br /&gt;
&lt;br /&gt;
			--INSERT INTO @pendenciaPedido (&lt;br /&gt;
			--		cd_pedido_palm,&lt;br /&gt;
			--		cd_tipo_bloc,&lt;br /&gt;
			--		cd_usuario,&lt;br /&gt;
			--		cd_gestor&lt;br /&gt;
			--)&lt;br /&gt;
			--SELECT&lt;br /&gt;
			--	@cdPedidoPalm,&lt;br /&gt;
			--	tbpr.cd_tipo_bloc,&lt;br /&gt;
			--	@cdTUsuario   AS cd_usuario,&lt;br /&gt;
			--	@cdGestor AS cd_gestor&lt;br /&gt;
			--from PEDIDO P&lt;br /&gt;
			--INNER JOIN tipo_bloc_pedido_rel tbpr WITH(NOLOCK) ON tbpr.cd_pedido_palm = P.cd_pedido_palm&lt;br /&gt;
			--INNER JOIN tipo_bloc_pedido_sit tbps WITH (NOLOCK) ON tbps.cd_tipo_bloc = tbpr.cd_tipo_bloc&lt;br /&gt;
&lt;br /&gt;
		--CUIDADO_2: O Script logo abaixo possui comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes.&lt;br /&gt;
		-- -- EXEC PR_AUTORIZAR_PENDENCIA @pendenciaPedido&lt;br /&gt;
&lt;br /&gt;
	--FIM&lt;br /&gt;
&lt;br /&gt;
	--PENDENCIAS_AUTORIZADAS(1)&lt;br /&gt;
	--PEDIDO_AUTORIZADO(2)&lt;br /&gt;
	--SEM_ALCADA_JULGAR_PENDENCIA(3)&lt;br /&gt;
	--PENDENCIA_JA_JULGADA(4)&lt;br /&gt;
	--PEDIDO_CANCELADO(5)&lt;br /&gt;
&lt;br /&gt;
	--Caso o número retornado não esteja entre estes acima é porque esta funcionalidade sofreu alteração, logo, parte deste script poderá não ser mais útil.&lt;br /&gt;
&lt;br /&gt;
--Se você reconhecer que o retorno do NuPortal ou da Procedure for (3) 'SEM_ALCADA_JULGAR_PENDENCIA', você pode analisar o porquê deste retorno com as instruções abaixo:&lt;br /&gt;
&lt;br /&gt;
--Analisando o porquê do retorno SEM_ALCADA_JULGAR_PENDENCIA(3)&lt;br /&gt;
&lt;br /&gt;
	DECLARE @nrItemPedido BIGINT = 3&lt;br /&gt;
	&lt;br /&gt;
	--Verificando se o usuário pode aprovar a pendência do item via função. Essa &lt;br /&gt;
	--SELECT [dbo].[FN_AUTORIZA_ITEM_PEDIDO_PENDENTE] (@cdPedidoPalm, @nrItemPedido, @cdGestor)&lt;br /&gt;
&lt;br /&gt;
	--Conteúdo da função, se por ventura você não pode simplemente executá-la e/ou quer entender melhor o que está acontecendo nela&lt;br /&gt;
	--Obs: Ele utiliza as variáveis declaradas lá em cima:&lt;br /&gt;
&lt;br /&gt;
	--INÍCIO&lt;br /&gt;
		DECLARE @aprovavel CHAR(1)&lt;br /&gt;
		SELECT&lt;br /&gt;
		 TMP.id_tipo_pedido,&lt;br /&gt;
			CASE&lt;br /&gt;
				WHEN TMP.id_tipo_pedido = 'BS' THEN&lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						(&lt;br /&gt;
							(VPAPP.percentual_acrescimo_saldo &amp;lt;= VAP.pct_desc_original OR &lt;br /&gt;
							(VPAPP.percentual_acrescimo_saldo IS NOT NULL AND VAP.pct_desc_original = 100) ) &lt;br /&gt;
							AND ISNULL(VAP.pct_desc_min,0) &amp;lt;= VPAPP.percentual_acrescimo_saldo &lt;br /&gt;
						)&lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
				WHEN TMP.id_tipo_pedido = 'BO' THEN &lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						((TMP.id_tipo_pedido = 'BO' AND VSV.nivel_supervisor = 0) OR NOT (ISNULL(IPD.id_autorizado, 'S') = 'N') &lt;br /&gt;
						OR NOT (VPAPP.cd_pedido_palm_pai IS NOT NULL AND VPAPP.cd_pedido_palm_pai = VPAPP.cd_pedido_palm) &lt;br /&gt;
						OR NOT (VPAPP.cd_pedido_palm IS NOT NULL AND VPAPP.cd_pedido_palm = P.cd_pedido_palm) &lt;br /&gt;
						OR NOT (IPD.pr_desconto_aplicado IS NULL OR IPD.pr_desconto_aplicado = 0))&lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
				WHEN TMP.id_tipo_pedido &amp;lt;&amp;gt; 'BO'  AND TMP.id_tipo_pedido &amp;lt;&amp;gt; 'BS' THEN &lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						(IPD.pr_desconto_aplicado &amp;lt;= VAP.pct_desc OR AA.pct_desc = 100 ) &lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
			END AS 'O usuário pode aprovar'&lt;br /&gt;
		FROM pedido P WITH (NOLOCK)&lt;br /&gt;
		INNER JOIN view_supervisor_vendedor VSV ON (P.cd_vendedor = VSV.cd_vendedor AND VSV.cd_supervisor = @cdGestor)&lt;br /&gt;
		INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor WITH (NOLOCK)) V ON P.cd_vendedor = V.cd_vendedor&lt;br /&gt;
		INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo, id_calcula_impostos FROM tipo_movimento_pedido WITH (NOLOCK)) TMP on (P.cd_tipo_pedido = TMP.cd_tipo)&lt;br /&gt;
		INNER JOIN item_preco_tabela_desconto_aplicado IPD ON P.cd_pedido_palm = IPD.cd_pedido_palm AND IPD.nr_item_pedido = @nrItemPedido&lt;br /&gt;
		INNER JOIN (SELECT &lt;br /&gt;
					cd_pedido_palm, nr_item_pedido, id_autorizado,cd_produto&lt;br /&gt;
				FROM item_pedido WITH (NOLOCK) ) I ON ((IPD.cd_pedido_palm = I.cd_pedido_palm) AND (IPD.nr_item_pedido = I.nr_item_pedido))&lt;br /&gt;
		INNER JOIN (SELECT cd_produto, nm_produto, ps_produto_kg, vr_max_pc_desconto FROM produto WITH (NOLOCK)) PR ON I.cd_produto = PR.cd_produto&lt;br /&gt;
&lt;br /&gt;
		-- verificar se o getor tem alçada de preço para aprovar o item pedido&lt;br /&gt;
		INNER JOIN usuario_alcada UA ON VSV.cd_supervisor = UA.cd_usuario&lt;br /&gt;
		INNER JOIN alcada_autorizacao AA ON UA.cd_alcada = AA.cd_alcada&lt;br /&gt;
		INNER JOIN view_alcada_produto VAP ON (IPD.cd_produto = VAP.cd_produto AND VAP.cd_alcada = AA.cd_alcada)&lt;br /&gt;
&lt;br /&gt;
		-- verificar se o getor tem alçada de pendencia para aprovar o item pedido&lt;br /&gt;
		INNER JOIN (SELECT cd_pedido_palm, nr_item_pedido, cd_tipo_bloc, id_status FROM item_pedido_pendente WITH(NOLOCK)) IPP ON IPD.cd_pedido_palm = IPP.cd_pedido_palm AND IPD.nr_item_pedido = IPP.nr_item_pedido AND ISNULL(IPP.ID_STATUS, 'S') = 'P'&lt;br /&gt;
		INNER JOIN alcada_tipo_bloc ATB WITH(NOLOCK) ON IPP.cd_tipo_bloc = ATB.cd_tipo_bloc&lt;br /&gt;
		INNER JOIN usuario_alcada_aprovacao UAA WITH(NOLOCK) ON UAA.cd_alcada = ATB.cd_alcada AND IPP.cd_tipo_bloc = ATB.CD_TIPO_BLOC AND UAA.cd_usuario = (SELECT cd_usuario FROM supervisor WHERE cd_supervisor = @cdGestor)&lt;br /&gt;
&lt;br /&gt;
		LEFT JOIN view_percentual_acrescimo_pedido_pai VPAPP WITH (NOLOCK) ON P.cd_pedido_palm = VPAPP.cd_pedido_palm&lt;br /&gt;
&lt;br /&gt;
		WHERE&lt;br /&gt;
			ISNULL(P.id_efetivado, 'S') = 'S'&lt;br /&gt;
			AND ((ISNULL(P.id_autorizado, 'S') = 'N') OR TMP.id_tipo_pedido = 'BS')&lt;br /&gt;
			AND (ISNULL(IPD.id_autorizado, 'S') = 'N')&lt;br /&gt;
			AND (@cdPedidoPalm IS NULL OR P.cd_pedido_palm = @cdPedidoPalm)&lt;br /&gt;
&lt;br /&gt;
		SELECT @aprovavel&lt;br /&gt;
	--FIM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Limpar base pesada para teste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC SHRINKDATABASE('bd_ssm_makitarenatolima', 0)&lt;br /&gt;
&lt;br /&gt;
SELECT 'TRUNCATE TABLE ' + name  FROM sys.tables where name like 'LOG_%' and &lt;br /&gt;
name not in ('LOG_IMPORTACAO',	'LOG_GPS', 'LOG_ID', 'LOG_CLOUD_SERVER', 'LOG_SERVER_CLOUD',&lt;br /&gt;
'LOG_ACAO', 'LOG_PEDIDO_AUTO')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar a quantidade de dados sujos nas bases&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT COUNT(*), '''+ name + ''' FROM '+ name + ' WITH (NOLOCK) where data_delete is not null UNION ALL' from sys.tables&lt;br /&gt;
where  &lt;br /&gt;
	name like '%_001'&lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PEGAR OS USUARIOS DE UMA BASE DE PRODUÇÃO E CADASTRAR UMA CÓPIA DELES PARA UMA BASE DE BACKUP MANTENDO TODAS AS CONFIGURAÇÕES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_login;&lt;br /&gt;
&lt;br /&gt;
select ue.* from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%'&lt;br /&gt;
select u.CD_USUARIO from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%'&lt;br /&gt;
&lt;br /&gt;
select pu.*, ue.*, CAST(u.CD_USUARIO AS VARCHAR(10)) + '-' + NM_EMPRESA from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario&lt;br /&gt;
	inner join bd_ssm_montanahomologmobile..perfil_usuario pu on u.CD_USUARIO = pu.cd_usuario&lt;br /&gt;
 where nm_empresa like '%montana';&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
INSERT INTO USUARIO &lt;br /&gt;
  SELECT /*u.CD_USUARIO,*/u.NOME,u.LOGIN + 'homo',u.EMAIL,u.SENHA,u.SALT,u.TELEFONE,u.CD_USUARIO,u.VALIDO,u.DT_VALIDADE,u.DT_CRIACAO,u.URL_FOTO,u.DELTA_ITERACOES from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like 'montana' -- numero_violações&lt;br /&gt;
&lt;br /&gt;
INSERT INTO USUARIO_EMPRESA&lt;br /&gt;
	select u.CD_USUARIO, ue.CD_TUSUARIO,ue.NM_EMPRESA + 'homologmobile',ue.VALIDO,ue.DT_VALIDADE,ue.DT_CRIACAO,ue.PAPEL&lt;br /&gt;
	from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on ue.cd_usuario = u.NUMERO_VIOLACOES where nm_empresa like 'montana'&lt;br /&gt;
&lt;br /&gt;
UPDATE bd_ssm_montanahomologmobile..PERFIL_USUARIO&lt;br /&gt;
SET &lt;br /&gt;
    bd_ssm_montanahomologmobile..PERFIL_USUARIO.CD_USUARIO = U.CD_USUARIO&lt;br /&gt;
FROM&lt;br /&gt;
    USUARIO AS U&lt;br /&gt;
    INNER JOIN bd_ssm_montanahomologmobile..PERFIL_USUARIO AS PU&lt;br /&gt;
        ON U.NUMERO_VIOLACOES = PU.CD_USUARIO&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM  bd_ssm_montanahomologmobile..PERFIL_USUARIO PU&lt;br /&gt;
	INNER JOIN USUARIO U ON U.NUMERO_VIOLACOES = PU.CD_USUARIO&lt;br /&gt;
&lt;br /&gt;
select ue.*, u.* from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%'&lt;br /&gt;
&lt;br /&gt;
UPDATE USUARIO SET SENHA = 'GILGAMESH', SALT = 'PLAIN'&lt;br /&gt;
where CD_USUARIO = 12780&lt;br /&gt;
&lt;br /&gt;
UPDATE USUARIO SET SENHA = '06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4=', SALT = 'c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6'&lt;br /&gt;
where CD_USUARIO = 12780&lt;br /&gt;
-- 06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4=	c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verifiar duplicações de vinculações de cadastros nas bases&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--VER SE EXISTE UM USUÁRIO VINCULADO A MAIS DE UM REGISTRO&lt;br /&gt;
select count(*), tu.cd_usuario from tusuario tu&lt;br /&gt;
	left join DADOS_VENDEDOR dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO&lt;br /&gt;
	left join SUPERVISOR s on S.CD_USUARIO = tu.CD_USUARIO&lt;br /&gt;
where tu.CD_SITUACAO not in (2)&lt;br /&gt;
group by  tu.cd_usuario&lt;br /&gt;
ORDER BY 1 DESC&lt;br /&gt;
&lt;br /&gt;
--VER SE EXISTEM USUARIOS COM MESMO LOGIN&lt;br /&gt;
select count(*), tu.NM_GUERRA from tusuario tu&lt;br /&gt;
where tu.CD_SITUACAO not in (2)&lt;br /&gt;
group by  tu.NM_GUERRA&lt;br /&gt;
ORDER BY 1 DESC&lt;br /&gt;
&lt;br /&gt;
--VER SE EXISTEM USUARIOS COM MESMO CÓDIGO &lt;br /&gt;
select count(*), tu.CD_USUARIO from tusuario tu&lt;br /&gt;
where tu.CD_SITUACAO not in (2)&lt;br /&gt;
group by  tu.CD_USUARIO&lt;br /&gt;
ORDER BY 1 DESC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Scritps_%C3%9Ateis&amp;diff=15718</id>
		<title>Scritps Úteis</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Scritps_%C3%9Ateis&amp;diff=15718"/>
		<updated>2021-06-04T19:58:35Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:*Comando pra saber se uma porta está em uso no windows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netstat -ano | find &amp;quot;:Required port number&lt;br /&gt;
netstat -ano | find &amp;quot;25&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*Cadastro de empresa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
exec sp_cadastra_empresa 'softsite2numobile', '25', 0, 3&lt;br /&gt;
exec CADASTRAR_BASE 'softsite2numobile', 'ANDERSON GOMES', 100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*Saber quais os processos estão bloqueado outros e não estão sendo bloqueados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where spid in (&lt;br /&gt;
     select blocked&lt;br /&gt;
      from sys.sysprocesses&lt;br /&gt;
     where blocked &amp;gt; 0)&lt;br /&gt;
      and blocked = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Detalhar um processo &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXEC sp_who2 252&lt;br /&gt;
&lt;br /&gt;
DBCC inputbuffer(252)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Detalhar qual processo está rodando a partir de uma execução inicial&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @Handle varbinary(64);&lt;br /&gt;
SELECT @Handle = sql_handle FROM sys.dm_exec_requests WHERE session_id = 13933 and request_id = 0;&lt;br /&gt;
SELECT * FROM ::fn_get_sql(@Handle);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Ver a query que está sendo executada por um processo (Parâmetro spid)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC INPUTBUFFER(6001)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[Scrips Tabelas Web Service NOVO|Scrips Tabelas Web Service NOVO]]&lt;br /&gt;
&lt;br /&gt;
:*Saber quais as bases estão vencidas que procedure vai apagar&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
USE bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT s.name, ub.DATA_EXPIRACAO FROM sys.sysdatabases s&lt;br /&gt;
LEFT JOIN USUARIO_BASE ub ON s.name = ub.nm_base&lt;br /&gt;
WHERE &lt;br /&gt;
	s.name LIKE 'bd_ssm_%'&lt;br /&gt;
	AND s.name NOT LIKE 'bd_ssm_adm'&lt;br /&gt;
	AND (ub.nm_base IS NULL OR ub.DATA_EXPIRACAO &amp;lt; GETDATE())&lt;br /&gt;
ORDER BY crdate ASC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Listar dados de todas as bases dinamicamente numa consulta só usando union all&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..INTERFACEERPCONFIGURACAOPARAMETRO UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%expressa%'&lt;br /&gt;
	and name not like '%makitahomolog%' &lt;br /&gt;
	and name not like '%prodentho_2%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' , COUNT(*) from '+name+'..CLIENTE_COORD_LOG WHERE CAST(DT_LOG AS DATE) &amp;gt;= ''2019-11-19'' AND CAST(DT_LOG AS DATE) &amp;lt;= ''2019-11-19'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar usuarios de uma empresa x &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%colchobel%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar os dados de login de um usuario no evo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select u.login as LOGIN, u.SENHA AS SENHA, &lt;br /&gt;
 CASE ue.PAPEL&lt;br /&gt;
	WHEN -1 THEN 'NENHUM'&lt;br /&gt;
	WHEN 0 THEN 'SUPORTE'&lt;br /&gt;
	WHEN 1 THEN 'GESTOR'&lt;br /&gt;
	WHEN 2 THEN 'VENDEDOR'&lt;br /&gt;
	WHEN 3 THEN	'CLIENTE'&lt;br /&gt;
	WHEN 4 THEN 'BACKOFFICE'&lt;br /&gt;
	WHEN 5 THEN 'INTEGRADOR'&lt;br /&gt;
	END AS PAPEL,&lt;br /&gt;
	dv.CD_VENDEDOR AS CD_VENDEDOR,&lt;br /&gt;
	s.CD_SUPERVISOR AS CD_SUPERVISOR&lt;br /&gt;
FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO&lt;br /&gt;
left join tusuario tu on tu.CD_USUARIO = ue.CD_TUSUARIO&lt;br /&gt;
left join dados_vendedor dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO&lt;br /&gt;
left join supervisor s on s.CD_USUARIO = tu.CD_USUARIO&lt;br /&gt;
 WHERE nm_empresa = 'biodinamicanumobile'&lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
select u.*, ue.* FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO&lt;br /&gt;
 WHERE nm_empresa = 'biodinamicanumobile'&lt;br /&gt;
GO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Checar qual versão determinado vendedor tá usando&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select cd_usuario,&lt;br /&gt;
       substring(ds_log, CHARINDEX('@', ds_log) + 1, charindex(':', ds_log, CHARINDEX('@', ds_log) + 1) - CHARINDEX('@', ds_log) - 1)&lt;br /&gt;
from LOG_SINCRONISMO with(nolock) &lt;br /&gt;
order by 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @comandoSQL VARCHAR(8000)&lt;br /&gt;
SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071)))&lt;br /&gt;
select @comandoSQL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer quando existem mais de um script sendo executado&lt;br /&gt;
em background para o spid passado&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @comandoSQL VARCHAR(8000)&lt;br /&gt;
DECLARE @tableComandoSQL TABLE (comando VARCHAR(8000))&lt;br /&gt;
--SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
--FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071)))&lt;br /&gt;
--select @comandoSQL&lt;br /&gt;
INSERT INTO @tableComandoSQL SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
FROM ::fn_get_sql((SELECT top 1 [sql_handle] FROM sys.sysprocesses where spid = 1071))&lt;br /&gt;
SELECT * FROM @tableComandoSQL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Ver o tamanho das tabelas&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    OBJECT_NAME(object_id) As Tabela, Rows As Linhas,&lt;br /&gt;
    SUM(Total_Pages * 8) As Reservado,&lt;br /&gt;
    SUM(CASE WHEN Index_ID &amp;gt; 1 THEN 0 ELSE Data_Pages * 8 END) As Dados,&lt;br /&gt;
        SUM(Used_Pages * 8) -&lt;br /&gt;
        SUM(CASE WHEN Index_ID &amp;gt; 1 THEN 0 ELSE Data_Pages * 8 END) As Indice,&lt;br /&gt;
    SUM((Total_Pages - Used_Pages) * 8) As NaoUtilizado&lt;br /&gt;
FROM&lt;br /&gt;
    sys.partitions As P&lt;br /&gt;
    INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id&lt;br /&gt;
GROUP BY OBJECT_NAME(object_id), Rows&lt;br /&gt;
ORDER BY DADOS DESC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Listar agendamentos de importações de todas as empresas num único script (Caso você queira adicionar mais empresas só seguir o modelo)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'bd_ssm_DCA', * from bd_ssm_DCA..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_CAMIL', * from bd_ssm_CAMIL..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_BEVILAQUA', * from bd_ssm_BEVILAQUA..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_GUARAVES', * from bd_ssm_GUARAVES..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_PAULUS', * from bd_ssm_PAULUS..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ver todas as bases que utilizam a geração de registro automático&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp_update_databases &lt;br /&gt;
'&lt;br /&gt;
insert into ##tabela&lt;br /&gt;
select db_name(),* from CONFIGURACAO_GERA_REGISTRO_AUTO', 'org_venda_cliente'&lt;br /&gt;
&amp;lt;/pre&lt;br /&gt;
&lt;br /&gt;
*Update com select e join:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE PEDIDO SET PEDIDO.NM_CLIENTE = (C.NM_CLIENTE)&lt;br /&gt;
from PEDIDO&lt;br /&gt;
inner join CLIENTE C on &lt;br /&gt;
PEDIDO.CD_CLIENTE = C.CD_CLIENTE&lt;br /&gt;
WHERE PEDIDO.DT_EMISSAO &amp;gt;= '2016-10-01' AND PEDIDO.NM_CLIENTE IS NULL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Atualizar Nome da Tabela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXEC sp_rename 'ITEM_PEDIDO_REMESSA_FUTURA', 'ITEM_PED_REMESSA_FUTURA';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover Foreign Keys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from sys.sysobjects where name = 'FK__LISTA_PRO__CD_SE__361203C5'&lt;br /&gt;
SELECT * FROM sys.sysobjects where ID = 907150277&lt;br /&gt;
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE ITEM_PEDIDO_EXCLUIDO DROP CONSTRAINT FK_SAV_ITEM__PEDIDO_PEDIDO_DEL; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover Foreign Keys Dinamicamente&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT DISTINCT 'ALTER TABLE ' + KCU1.TABLE_NAME + ' DROP CONSTRAINT ' + KCU1.CONSTRAINT_NAME&lt;br /&gt;
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1&lt;br /&gt;
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2&lt;br /&gt;
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME&lt;br /&gt;
 AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION&lt;br /&gt;
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Retornar consulta por banco de dados do tamanho usado no banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'Use '+name+';' + 'Exec SP_SpaceUsed ;'  from sys.databases&lt;br /&gt;
where  name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' &lt;br /&gt;
and name not like '%adm%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Vendedores da Hierárquia do Supervisor passado no Parâmetro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT cd_vendedor [Código], &lt;br /&gt;
       nm_vendedor [Vendedor]&lt;br /&gt;
FROM   fn_obter_vendedores_supervisor(#codigoSupervisor#)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Supervisores Acima da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT S.cd_supervisor [Código], &lt;br /&gt;
       S.nm_supervisor [Supervisor] &lt;br /&gt;
FROM   fn_obter_supervisor_supervisores(#codigoSupervisor#) FOSS &lt;br /&gt;
       INNER JOIN SUPERVISOR S &lt;br /&gt;
               ON FOSS.cd_supervisor = S.cd_supervisor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Supervisores Abaixo da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT S.cd_supervisor [Código], &lt;br /&gt;
       S.nm_supervisor [Supervisor] &lt;br /&gt;
FROM   fn_obter_supervisores_supervisor(#codigoSupervisor#) FOSS &lt;br /&gt;
       INNER JOIN SUPERVISOR S &lt;br /&gt;
               ON FOSS.cd_supervisor = S.cd_supervisor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar processos que estão travando o banco e ver a query do processo que está travado&lt;br /&gt;
** Selecionar os 100 primeiros processos bloqueados no banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select TOP 100 *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where blocked &amp;lt;&amp;gt; 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Selecionar todos os processos bloqueados no banco ordenados por spid&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select spid, blocked, hostname=left(hostname,20), program_name=left(program_name,20),&lt;br /&gt;
       WaitTime_Seg = convert(int,(waittime/1000))  ,open_tran, status&lt;br /&gt;
From master.dbo.sysprocesses &lt;br /&gt;
where blocked &amp;gt; 0&lt;br /&gt;
order by spid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Então você precisa verificar quais processos estão rodando em um determinado banco de dados:&lt;br /&gt;
** Lista todos os processos existentes em uma determinada base de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @database VARCHAR(100) = 'bd_ssm_suabase' -- INSIRA AQUI O NOME DO BANCO DE DADOS  &lt;br /&gt;
DECLARE @processosTemp TABLE &lt;br /&gt;
  ( &lt;br /&gt;
     spid       SMALLINT, &lt;br /&gt;
     ecid       SMALLINT, &lt;br /&gt;
     status     NCHAR(30), &lt;br /&gt;
     loginname  NCHAR(128), &lt;br /&gt;
     hostname   NCHAR(128), &lt;br /&gt;
     blk        CHAR(5), &lt;br /&gt;
     dbname     NCHAR(128), &lt;br /&gt;
     cmd        NCHAR(16), &lt;br /&gt;
     request_id INT &lt;br /&gt;
  ) &lt;br /&gt;
&lt;br /&gt;
INSERT INTO @processosTemp &lt;br /&gt;
EXEC Sp_who &lt;br /&gt;
&lt;br /&gt;
SELECT * &lt;br /&gt;
FROM   @processosTemp &lt;br /&gt;
WHERE  dbname = @database &lt;br /&gt;
ORDER  BY spid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Aí você precisa remover essa base - faça esse procedimento apenas no ambiente de teste - mas existem processos bloqueando essa remoção. Então você deverá remover os mesmos processos referentes a consulta acima, para depois DROPAR a base.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
declare @execSql varchar(1000), @databaseName varchar(100)  &lt;br /&gt;
set @databaseName = 'bd_ssm_suabase'  -- INSIRA O NOME DA BASE QUE QUER MATAR SEUS PROCESSOS EM ABERTO&lt;br /&gt;
&lt;br /&gt;
set @execSql = ''   &lt;br /&gt;
select  @execSql = @execSql + 'kill ' + convert(char(10), spid) + CHAR(13)+CHAR(10)  &lt;br /&gt;
from    master.dbo.sysprocesses  &lt;br /&gt;
where   db_name(dbid) = @databaseName  &lt;br /&gt;
     and  &lt;br /&gt;
     DBID &amp;lt;&amp;gt; 0  &lt;br /&gt;
     and  &lt;br /&gt;
     spid &amp;lt;&amp;gt; @@spid  &lt;br /&gt;
order by spid&lt;br /&gt;
exec(@execSql)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para verificar se exste alguma configuração para algum serviço de envio de e-mail ativado&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_EXPORTADO'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_NAO_EFETIVADO'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_FINANC_NOVO_CLIENTE'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_SUPERVISOR_PEDIDO_PENDENTE'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'CONDICAO_PAGAMENTO_ESPECIAL'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'SP_ENVIA_EMAIL_CLIENTE_PEDIDO_CRIACAO'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para ver todas as foreign keys do banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
 KCU1.CONSTRAINT_NAME AS 'FK_Nome_Constraint'&lt;br /&gt;
 , KCU1.TABLE_NAME AS 'FK_Nome_Tabela'&lt;br /&gt;
 , KCU1.COLUMN_NAME AS 'FK_Nome_Coluna'&lt;br /&gt;
 , FK.is_disabled AS 'FK_Esta_Desativada'&lt;br /&gt;
 , KCU2.CONSTRAINT_NAME AS 'PK_Nome_Constraint_Referenciada'&lt;br /&gt;
 , KCU2.TABLE_NAME AS 'PK_Nome_Tabela_Referenciada'&lt;br /&gt;
 , KCU2.COLUMN_NAME AS 'PK_Nome_Coluna_Referenciada'&lt;br /&gt;
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1&lt;br /&gt;
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2&lt;br /&gt;
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME&lt;br /&gt;
 AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION&lt;br /&gt;
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME&lt;br /&gt;
&lt;br /&gt;
--where KCU1.CONSTRAINT_NAME like '%FK_PEDIDO_EXCLUIDO__PEDIDO%'&lt;br /&gt;
Order by &lt;br /&gt;
KCU1.TABLE_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para Cadastro de Menu do Portal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- SELECT * FROM MENU WHERE DS_MENU IN('Cadastro', 'Bonificação','Associada ao Pedido')&lt;br /&gt;
-- UPDATE MENU SET DS_URL = null WHERE CD_MENU = 130&lt;br /&gt;
-- SELECT * FROM MENU WHERE CD_MENU_PAI = 1&lt;br /&gt;
&lt;br /&gt;
-- INCLUSÃO DE MENU -- &lt;br /&gt;
DECLARE @dsMenu    VARCHAR(100), &lt;br /&gt;
        @dsMenuPai VARCHAR(100), &lt;br /&gt;
        @cdMenuPai INT &lt;br /&gt;
&lt;br /&gt;
SELECT @dsMenu = 'Parâmetros de Configuração', &lt;br /&gt;
       @dsMenuPai = 'Cadastro'&lt;br /&gt;
 &lt;br /&gt;
SELECT	@dsMenu = LTRIM(RTRIM(@dsMenu)),&lt;br /&gt;
		@dsMenuPai = LTRIM(RTRIM(@dsMenuPai))&lt;br /&gt;
&lt;br /&gt;
SET @cdMenuPai = (SELECT TOP 1 cd_menu &lt;br /&gt;
                  FROM   menu &lt;br /&gt;
                  WHERE  ds_menu = @dsMenuPai)&lt;br /&gt;
&lt;br /&gt;
IF ( @cdMenuPai IS NOT NULL ) &lt;br /&gt;
  BEGIN &lt;br /&gt;
      IF NOT EXISTS (SELECT 1 &lt;br /&gt;
                     FROM   menu &lt;br /&gt;
                     WHERE  ds_menu = @dsMenu &lt;br /&gt;
                            AND cd_menu_pai = @cdMenuPai) &lt;br /&gt;
        BEGIN &lt;br /&gt;
            INSERT INTO menu &lt;br /&gt;
                        (cd_menu, &lt;br /&gt;
                         ds_menu, &lt;br /&gt;
                         ds_url, &lt;br /&gt;
                         ds_param, &lt;br /&gt;
                         cd_menu_pai, &lt;br /&gt;
                         id_ativo) &lt;br /&gt;
            SELECT Max(Isnull(cd_menu, 0)) + 1, &lt;br /&gt;
                   @dsMenu, &lt;br /&gt;
                   @dsMenu, &lt;br /&gt;
                   NULL, &lt;br /&gt;
                   @cdMenuPai, &lt;br /&gt;
                   'S' &lt;br /&gt;
            FROM   menu &lt;br /&gt;
            &lt;br /&gt;
            PRINT '-----------------  MENU CADASTRADO COM SUCESSO  -----------------'&lt;br /&gt;
			PRINT 'FOI CADASTRADO O SUBMENU &amp;quot;'+ @dsMenu + '&amp;quot; NO MENU &amp;quot;'+ @dsMenuPai + '&amp;quot;!'&lt;br /&gt;
        END &lt;br /&gt;
        ELSE&lt;br /&gt;
        BEGIN&lt;br /&gt;
			PRINT '-----------------  FALHA AO CADASTRAR MENU  -----------------'&lt;br /&gt;
			PRINT 'JÁ EXISTE O SUBMENU &amp;quot;'+ @dsMenu + '&amp;quot; NO MENU &amp;quot;'+ @dsMenuPai + '&amp;quot;!'&lt;br /&gt;
        END&lt;br /&gt;
  END &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Conjunto de Selects para visualizar se há algum desconto sendo persistido na base do Mobile&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select  * from desconto_produto;&lt;br /&gt;
select * from DESCONTO_ORG_PRODUTO;&lt;br /&gt;
select * from DESCONTO_MEGAZORD;&lt;br /&gt;
select * from DESCONTO_ICMS_DIF;&lt;br /&gt;
select * from DESCONTO_CLIENTE_FORNEC;&lt;br /&gt;
select * from DESCONTO_CLIENTE;&lt;br /&gt;
select * from DESCONTO_FORNECEDOR;&lt;br /&gt;
select * from DESCONTO_MEGAZORD_SEGMENTO;&lt;br /&gt;
select * from DESCONTO_UF;&lt;br /&gt;
select  * from desco_cliente_familia;&lt;br /&gt;
select * from DESCO_GRUP_CLIEN_FAMIL;&lt;br /&gt;
select * from desconto_cliente;&lt;br /&gt;
select  * from DESCO_VENDEDOR_FAMILIA;&lt;br /&gt;
select * from DESCO_GRUP_CLIEN_FAMIL;&lt;br /&gt;
select * from DESCO_GRUP_CLIENT_VEND;&lt;br /&gt;
select * from DESCO_GRUPO_CLIEN_PROD;&lt;br /&gt;
select * from DESCONTO_VEND_PRODUTO;&lt;br /&gt;
select * from DESCONTO_UF_PRODUTO;&lt;br /&gt;
select * from DESCONTO_UF_FAMILIA;&lt;br /&gt;
&lt;br /&gt;
select * from DESCONTO_CLIENTE_PRODUT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Select para contar os registros de uma tabela sem derrubar o banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT SUM (row_count)&lt;br /&gt;
FROM sys.dm_db_partition_stats&lt;br /&gt;
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   &lt;br /&gt;
AND (index_id=0 or index_id=1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Desabilitar as triggers de geração de registros &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'alter table '+ OBJECT_NAME(parent_id)+ ' disable trigger '+name from sys.triggers&lt;br /&gt;
where name like 'log%'&lt;br /&gt;
order by 1, name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Habilitar as triggers de geração de registros &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'alter table '+ OBJECT_NAME(parent_id)+ ' enable trigger '+name from sys.triggers&lt;br /&gt;
where name like 'log%'&lt;br /&gt;
order by 1, name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para ver os processos em execução no banco da camil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select DB_NAME(dbid),* from sys.sysprocesses&lt;br /&gt;
where program_name like '%ssmicro%'&lt;br /&gt;
and status like '%run%'&lt;br /&gt;
&lt;br /&gt;
dbcc inputbuffer(61)&lt;br /&gt;
dbcc inputbuffer(65)&lt;br /&gt;
guarda essa consulta&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listar todas as bases ativas criando um use bd_ssm_nomeempresa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'Use '+name+';' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Contar os registros da log_alteracao_usuario sem parar o banco de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT SUM (row_count)&lt;br /&gt;
FROM sys.dm_db_partition_stats&lt;br /&gt;
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   &lt;br /&gt;
AND (index_id=0 or index_id=1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Truncar tabela de log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TRUNCATE TABLE LOG_ALTERACAO_USUARIO;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Usando a sys.databases de forma inteligente para economizar trabalho&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'use ' + name + '; select ' +name + ',* from CAMPO where cd_campo = 23;'&lt;br /&gt;
from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%' and state_desc &amp;lt;&amp;gt; 'OFFLINE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listar todos os bancos de dados de empresa da softsite&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select name from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Limpeza de cadastros do ADM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
INNER JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
INNER JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E.CD_EMPRESA, E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
LEFT JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
LEFT JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE)&lt;br /&gt;
WHERE &lt;br /&gt;
	SD.name IS NULL	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT E.CD_EMPRESA, E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
LEFT JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
LEFT JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) &lt;br /&gt;
INNER JOIN sys.databases SBD ON (SBD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) &lt;br /&gt;
WHERE &lt;br /&gt;
	state_desc = 'OFFLINE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Tabelas que tem que ser analisadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EMPRESA_SYNC_SISTEMA&lt;br /&gt;
EMPRESA_SYNC_BD&lt;br /&gt;
EMPRESA_SISTEMA&lt;br /&gt;
EMPRESA_BD&lt;br /&gt;
EMPRESA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Deletes necessários para limpar as bases&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Na base ADM:&lt;br /&gt;
select * from empresa order by nm_empresa asc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
SELECT * FROM EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog' --619&lt;br /&gt;
&lt;br /&gt;
DELETE FROM EMPRESA_SYNC_BD WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_BD WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_SYNC_SISTEMA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_SISTEMA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
&lt;br /&gt;
USE bd_ssm_login;&lt;br /&gt;
SELECT * FROM bd_ssm_login..USUARIO_EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog'&lt;br /&gt;
&lt;br /&gt;
DELETE FROM MODULO_EMPRESA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM USUARIO WHERE CD_USUARIO IN (1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157)&lt;br /&gt;
DELETE FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'fiorehomolog'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Verificar quantidade de conexões abertas por base utilizadas pelo portal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), count(*)&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where 1=1&lt;br /&gt;
--and   db_name(dbid) = 'bd_ssm_criasim'&lt;br /&gt;
and program_name = 'jTDS'&lt;br /&gt;
group &lt;br /&gt;
by db_name(dbid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Comando para gerar os drops das Triggers do claudus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' drop trigger ', tr.name  from sys.sysobjects tr&lt;br /&gt;
inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U'&lt;br /&gt;
where tr.xtype = 'tr'&lt;br /&gt;
and tr.name like 'TR_AUDIT%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' disable trigger ' + tr.name + ' on ' + tb.name, st.is_disabled  from sys.sysobjects tr&lt;br /&gt;
inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U'&lt;br /&gt;
inner join sys.triggers st on st.object_id = tr.id&lt;br /&gt;
where tr.xtype = 'tr' and st.is_disabled = 1&lt;br /&gt;
and tr.name like 'TR_AUDIT%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover empresas do import que não estão mais acessíveis na base&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm&lt;br /&gt;
&lt;br /&gt;
select  * &lt;br /&gt;
--update es set id_realiza_importacao&lt;br /&gt;
from EMPRESA_SISTEMA es&lt;br /&gt;
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA &lt;br /&gt;
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS&lt;br /&gt;
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Listar algo em todas as bases numa consulta só&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'select ''' + name + ''', *  from ' + name + '.dbo.INTERFACEERPCONFIGURACAOPARAMETRO where VR_PARAMETRO NOT LIKE ''%PEDIDO%ITEM_PEDIDO%'' UNION ALL'&lt;br /&gt;
from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%' and state_desc &amp;lt;&amp;gt; 'OFFLINE' and (name not like '%pronta%' AND name not like 'bd_ssm_adm')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Descobrindo as empresas que importam&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update es set id_realiza_importacao&lt;br /&gt;
from EMPRESA_SISTEMA es&lt;br /&gt;
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA &lt;br /&gt;
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS&lt;br /&gt;
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*UPDATE para atualizar dados duplicados da tabela 001&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE LISTA_PRODUTO_001&lt;br /&gt;
SET data_delete = data_insert+('00:00:00.200')&lt;br /&gt;
where id in (&lt;br /&gt;
-2146273629,&lt;br /&gt;
-2146273628,&lt;br /&gt;
-2146273627,&lt;br /&gt;
-2146273626,&lt;br /&gt;
-2146273625,&lt;br /&gt;
-2146273624,&lt;br /&gt;
-2146273623,&lt;br /&gt;
-2146273622,&lt;br /&gt;
-2146273621)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Comando para concatenar dentro do group by &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STUFF&lt;br /&gt;
&lt;br /&gt;
SELECT NM_ESTADO,&lt;br /&gt;
       NM_CIDADE,&lt;br /&gt;
       STUFF(&lt;br /&gt;
               (SELECT DISTINCT ',' + NM_FANTASIA&lt;br /&gt;
                FROM cliente&lt;br /&gt;
                WHERE NM_ESTADO = a.NM_ESTADO&lt;br /&gt;
                  AND NM_CIDADE = a.NM_CIDADE&lt;br /&gt;
                  FOR XML PATH ('')) , 1, 1, '') AS URLList&lt;br /&gt;
FROM cliente AS a&lt;br /&gt;
WHERE NM_ESTADO = 'CE'&lt;br /&gt;
  AND NM_CIDADE = 'fortaleza'&lt;br /&gt;
GROUP BY NM_ESTADO,&lt;br /&gt;
         NM_CIDADE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Template base pra criar o script de uma tabela NOVA pro TJ&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Criar a tabela TMP pra empresas que utilizam import */&lt;br /&gt;
CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_TMP]&lt;br /&gt;
  ( &lt;br /&gt;
     CD_LOTE      int NOT NULL,  &lt;br /&gt;
     CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, &lt;br /&gt;
     CD_TAB_PRECO INT NOT NULL, &lt;br /&gt;
	 PR_DESCONTO  DECIMAL(18, 6) NOT NULL,&lt;br /&gt;
	CONSTRAINT [PK_DESCONTO_LOTE_OV_TP_TMP] PRIMARY KEY CLUSTERED (&lt;br /&gt;
		[CD_LOTE] ASC,&lt;br /&gt;
		[CD_ORG_VENDA] ASC,&lt;br /&gt;
		[CD_TAB_PRECO] ASC&lt;br /&gt;
	) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]&lt;br /&gt;
) ON [PRIMARY]&lt;br /&gt;
&lt;br /&gt;
/* Criar a tabela de LOG */&lt;br /&gt;
CREATE TABLE LOG_DESCONTO_LOTE_OV_TP&lt;br /&gt;
(&lt;br /&gt;
CD_LOG INT IDENTITY PRIMARY KEY&lt;br /&gt;
,DT_LOG DATETIME NOT NULL&lt;br /&gt;
,TP_OPERACAO VARCHAR(1) NOT NULL&lt;br /&gt;
,ID_KEY VARCHAR(200) NOT NULL&lt;br /&gt;
,CD_LOTE int&lt;br /&gt;
,CD_ORG_VENDA VARCHAR(20)&lt;br /&gt;
,CD_TAB_PRECO INT)&lt;br /&gt;
&lt;br /&gt;
/* Criar tabela 001 seguindo o padrão */&lt;br /&gt;
CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_001]&lt;br /&gt;
  ( &lt;br /&gt;
     [id] [int] IDENTITY(-2147483648,1) NOT NULL,&lt;br /&gt;
     CD_LOTE      INT NOT NULL,  &lt;br /&gt;
     CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, &lt;br /&gt;
     CD_TAB_PRECO INT NOT NULL, &lt;br /&gt;
	 PR_DESCONTO  DECIMAL(18, 6) NOT NULL,&lt;br /&gt;
     [data_insert] [datetime] NOT NULL,&lt;br /&gt;
	 [data_update] [datetime] NULL,&lt;br /&gt;
	 [data_delete] [datetime] NULL,&lt;br /&gt;
PRIMARY KEY NONCLUSTERED &lt;br /&gt;
(&lt;br /&gt;
	[id] ASC&lt;br /&gt;
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]&lt;br /&gt;
) ON [PRIMARY]&lt;br /&gt;
&lt;br /&gt;
/* Adicionar Index */&lt;br /&gt;
CREATE CLUSTERED INDEX PK_DESCONTO_LOTE_OV_TP ON DESCONTO_LOTE_OV_TP_001 (CD_LOTE ASC, CD_ORG_VENDA ASC, CD_TAB_PRECO ASC)&lt;br /&gt;
&lt;br /&gt;
/* Adicionar constraint */&lt;br /&gt;
ALTER TABLE [dbo].[DESCONTO_LOTE_OV_TP_001] ADD  CONSTRAINT [DF_DATA_INSERCAO_DESCONTO]  DEFAULT (getdate()) FOR [data_insert]&lt;br /&gt;
&lt;br /&gt;
/* Criar trigger na tabela nova adicionando os campos necessários */&lt;br /&gt;
CREATE TRIGGER [dbo].[TR_TJ_UPDATE_DESCONTO_LOTE_OV_TP]&lt;br /&gt;
ON [dbo].[DESCONTO_LOTE_OV_TP_001]&lt;br /&gt;
instead OF UPDATE&lt;br /&gt;
AS&lt;br /&gt;
  BEGIN&lt;br /&gt;
      SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
      UPDATE t&lt;br /&gt;
      SET    t.data_update = case when s.data_delete is null then  Getdate() else t.data_update end ,&lt;br /&gt;
             T.CD_LOTE = S.CD_LOTE,&lt;br /&gt;
			 T.CD_ORG_VENDA = S.CD_ORG_VENDA,&lt;br /&gt;
			 T.CD_TAB_PRECO = S.CD_TAB_PRECO,&lt;br /&gt;
			 T.PR_DESCONTO = S.PR_DESCONTO,&lt;br /&gt;
             t.data_delete = s.data_delete&lt;br /&gt;
      FROM   DESCONTO_LOTE_OV_TP_001 t&lt;br /&gt;
             INNER JOIN inserted s&lt;br /&gt;
                     ON ( t.id = s.id )&lt;br /&gt;
&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
/* Criar a view TJ */&lt;br /&gt;
CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP_TJ]&lt;br /&gt;
AS&lt;br /&gt;
  SELECT id,&lt;br /&gt;
         CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO&lt;br /&gt;
  FROM   DESCONTO_LOTE_OV_TP_001&lt;br /&gt;
  WHERE  data_delete IS NULL&lt;br /&gt;
&lt;br /&gt;
/* Criar Trigger da view */&lt;br /&gt;
CREATE TRIGGER [dbo].[TR_TJ_DELETE_DESCONTO_LOTE_OV_TP]&lt;br /&gt;
ON [dbo].[DESCONTO_LOTE_OV_TP_TJ]&lt;br /&gt;
instead OF DELETE&lt;br /&gt;
AS&lt;br /&gt;
  BEGIN&lt;br /&gt;
      SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
      UPDATE t&lt;br /&gt;
      SET    data_delete = Getdate()&lt;br /&gt;
      FROM   deleted s&lt;br /&gt;
             INNER JOIN DESCONTO_LOTE_OV_TP_001 t&lt;br /&gt;
                     ON s.id = t.id&lt;br /&gt;
&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
/* Criar a view */&lt;br /&gt;
CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP]&lt;br /&gt;
AS&lt;br /&gt;
  SELECT CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO&lt;br /&gt;
  FROM   DESCONTO_LOTE_OV_TP_tj&lt;br /&gt;
&lt;br /&gt;
/* Criar a função de navegação */&lt;br /&gt;
CREATE FUNCTION fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP(@ID_VENDEDOR  INT,&lt;br /&gt;
                                                           @DT_LAST_SINC DATETIME)&lt;br /&gt;
RETURNS TABLE&lt;br /&gt;
AS&lt;br /&gt;
    RETURN&lt;br /&gt;
      (SELECT	DLOT.id,&lt;br /&gt;
				DLOT.CD_LOTE,&lt;br /&gt;
				DLOT.CD_ORG_VENDA,&lt;br /&gt;
				DLOT.CD_TAB_PRECO,&lt;br /&gt;
				DLOT.PR_DESCONTO,&lt;br /&gt;
				DLOT.DATA_DELETE&lt;br /&gt;
        FROM   DESCONTO_LOTE_OV_TP_001 DLOT&lt;br /&gt;
		WHERE  &lt;br /&gt;
			(&lt;br /&gt;
				( &lt;br /&gt;
					( &lt;br /&gt;
						( DLOT.DATA_INSERT &amp;gt;= @DT_LAST_SINC&lt;br /&gt;
							OR DLOT.DATA_UPDATE &amp;gt;= @DT_LAST_SINC &lt;br /&gt;
						)&lt;br /&gt;
						AND DLOT.DATA_DELETE IS NULL &lt;br /&gt;
					)&lt;br /&gt;
					OR ( DLOT.DATA_DELETE &amp;gt;= @DT_LAST_SINC&lt;br /&gt;
							AND DLOT.DATA_INSERT &amp;lt; @DT_LAST_SINC&lt;br /&gt;
							AND NOT EXISTS(SELECT 1&lt;br /&gt;
											FROM   DESCONTO_LOTE_OV_TP_001 T&lt;br /&gt;
											WHERE  DLOT.CD_LOTE = T.CD_LOTE&lt;br /&gt;
											AND DLOT.CD_ORG_VENDA = T.CD_ORG_VENDA&lt;br /&gt;
											AND DLOT.CD_TAB_PRECO = T.CD_TAB_PRECO&lt;br /&gt;
												AND T.DATA_DELETE IS NULL&lt;br /&gt;
											)&lt;br /&gt;
					)&lt;br /&gt;
					OR ( &lt;br /&gt;
						@DT_LAST_SINC IS NULL&lt;br /&gt;
						AND DLOT.DATA_DELETE IS NULL&lt;br /&gt;
					)&lt;br /&gt;
				) &lt;br /&gt;
			)&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
/* Adicionando a função na tabela */&lt;br /&gt;
INSERT INTO TAMOJUNTO_TABELA_FUNCAO (NM_TABLE, NM_FN, FL_ATIVA) VALUES ('DESCONTO_LOTE_OV_TP', 'fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP', 1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para retornar os 20 processos que estão consumindo mais recursos de cpu no momento&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT TOP 20&lt;br /&gt;
GETDATE() AS 'Collection Date',&lt;br /&gt;
qs.execution_count AS 'Execution Count',&lt;br /&gt;
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,&lt;br /&gt;
(CASE WHEN qs.statement_end_offset = -1&lt;br /&gt;
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2&lt;br /&gt;
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2&lt;br /&gt;
) AS 'Query Text',&lt;br /&gt;
DB_NAME(qt.dbid) AS 'DB Name',&lt;br /&gt;
qs.total_worker_time AS 'Total CPU Time',&lt;br /&gt;
qs.total_worker_time/qs.execution_count AS 'Avg CPU Time (ms)',&lt;br /&gt;
qs.total_physical_reads AS 'Total Physical Reads',&lt;br /&gt;
qs.total_physical_reads/qs.execution_count AS 'Avg Physical Reads',&lt;br /&gt;
qs.total_logical_reads AS 'Total Logical Reads',&lt;br /&gt;
qs.total_logical_reads/qs.execution_count AS 'Avg Logical Reads',&lt;br /&gt;
qs.total_logical_writes AS 'Total Logical Writes',&lt;br /&gt;
qs.total_logical_writes/qs.execution_count AS 'Avg Logical Writes',&lt;br /&gt;
qs.total_elapsed_time AS 'Total Duration',&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count AS 'Avg Duration (ms)',&lt;br /&gt;
qp.query_plan AS 'Plan'&lt;br /&gt;
FROM sys.dm_exec_query_stats AS qs&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt&lt;br /&gt;
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp&lt;br /&gt;
WHERE&lt;br /&gt;
qs.execution_count &amp;gt; 50 OR&lt;br /&gt;
qs.total_worker_time/qs.execution_count &amp;gt; 100 OR&lt;br /&gt;
qs.total_physical_reads/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_logical_reads/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_logical_writes/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count &amp;gt; 1000&lt;br /&gt;
ORDER BY&lt;br /&gt;
qs.execution_count DESC,&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count DESC,&lt;br /&gt;
qs.total_worker_time/qs.execution_count DESC,&lt;br /&gt;
qs.total_physical_reads/qs.execution_count DESC,&lt;br /&gt;
qs.total_logical_reads/qs.execution_count DESC,&lt;br /&gt;
qs.total_logical_writes/qs.execution_count DESC&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para ver se uma trigger está habilitada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select  ObjectProperty(Object_id(Name),'ExecIsTriggerDisabled') STATUS from sys.sysobjects where name = 'LOG_ALTERACAO_DELETE_PRODUTO_ESTOQUE'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checar se um campo existe em uma tabela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT T.name AS Tabela, C.name AS Coluna&lt;br /&gt;
FROM sys.sysobjects    AS T (NOLOCK) &lt;br /&gt;
INNER JOIN sys.all_columns AS C (NOLOCK) ON T.id = C.object_id AND T.XTYPE = 'U' &lt;br /&gt;
WHERE C.NAME LIKE '%CAMPO%'&lt;br /&gt;
ORDER BY T.name ASC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Alterar os paths de dados de importação da modelo para o nome da empresa cadastrada&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
USE bd_ssm_jptripas&lt;br /&gt;
&lt;br /&gt;
DECLARE @empresa varchar(50);&lt;br /&gt;
SET @empresa = 'jptripas';&lt;br /&gt;
&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao\backup' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO_BKP'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE DS_CHAVE='DS_PATH_ARQS_IMPORTACAO'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE DS_CHAVE='DS_PATH_DESCRIBER'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE DS_CHAVE='DS_PATH_DIRS_VERSOES'&lt;br /&gt;
&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_IMPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO_BKP= 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_DESCRIBER = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_DIRS_VERSOES = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script para análise de que se existe a tabela no tamojunto para inserir&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' USE ' + name + '; IF(((SELECT COUNT(*) FROM tamojunto_tabela_funcao WHERE NM_TABLE = ''CLIENTE'') = 0) AND (EXISTS (SELECT TOP 1 1 FROM   sys.objects WHERE  NAME = ''CLIENTE_001''))) BEGIN INSERT INTO tamojunto_tabela_funcao VALUES (''CLIENTE'', ''fn_REGISTRO_SYNC_CLIENTE'', 1) END' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%'  &lt;br /&gt;
	and name not like '%protheus%'&lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script para contar quantas licenças uma empresa tem.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( &lt;br /&gt;
  NM_EMPRESA VARCHAR(50),&lt;br /&gt;
  NR_LICENCAS INT,&lt;br /&gt;
  NR_LICENCAS_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_UNICO INT,&lt;br /&gt;
  NR_USUARIOS_TOTAL INT)&lt;br /&gt;
&lt;br /&gt;
DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), &lt;br /&gt;
@NrUsuariosSomentePortal INT, @NrUsuariosSomenteMobile INT, @NrUsuariosPortalMobile INT, @NrUsuariosPortalMobileUnico INT;&lt;br /&gt;
SELECT @NmEmpresa = 'makita',   @NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'),   @NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'),    @NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL),   @NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   @NrUsuariosPortalMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO T INNER JOIN bd_ssm_makita..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL),   @NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL AND ID_PALM IS NOT NULL);   &lt;br /&gt;
INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobile, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobile + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal));&lt;br /&gt;
SELECT * FROM @VisaoLicencasUsuariosPorEmpresa;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Código que deve ser executado quando se restaurar uma base de produção em homologação.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/supervisor/gerencial/getRelatorioGerencial/' WHERE DS_CHAVE = 'DS_URL_REL_GERENCIAL'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/services/WebService' WHERE DS_CHAVE = 'DS_URL_SERVICE'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'GPS_BASE_URL'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'URL_WEBSERVICE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Shrink&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC SHRINKDATABASE('bd_ssm_campneus', 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Controle de licenças&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	SELECT program_name, HOSTNAME, *&lt;br /&gt;
			FROM  sys.sysprocesses&lt;br /&gt;
	where program_name = 'passwordsenderws'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO empresa_bd_properties &lt;br /&gt;
SELECT CD_EMPRESA, 'passwordsenderws', NULL, 2 FROM EMPRESA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Verificar processo de importação&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where program_name like '%Import%'&lt;br /&gt;
and db_name(dbid) = 'bd_ssm_boreda'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Analisar base que está dando erro no claudus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD WHERE ID_STATUS_DEL = ''F'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT A.NAME, A.TYPE, B.TEXT&lt;br /&gt;
  FROM SYSOBJECTS  A (nolock)&lt;br /&gt;
  JOIN SYSCOMMENTS B (nolock) &lt;br /&gt;
    ON A.ID = B.ID&lt;br /&gt;
WHERE B.TEXT LIKE '%ITEM_PEDIDO%'  --- Informação a ser procurada no corpo da procedure, funcao ou view&lt;br /&gt;
    AND B.TEXT LIKE '%LOG_ALTERACAO_USUARIO%'&lt;br /&gt;
    AND B.TEXT LIKE '%''D''%'&lt;br /&gt;
  AND A.TYPE = 'TR'                     --- Tipo de objeto a ser localizado no caso procedure&lt;br /&gt;
 ORDER BY A.NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pesquisar texto dentro das estruturas do banco&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @Search varchar(255)&lt;br /&gt;
SET @Search='EXCLUINDO REGISTROS NÃO SINCRONIZADOS'&lt;br /&gt;
&lt;br /&gt;
SELECT DISTINCT&lt;br /&gt;
    o.name AS Object_Name,o.type_desc&lt;br /&gt;
    FROM sys.sql_modules        m &lt;br /&gt;
        INNER JOIN sys.objects  o ON m.object_id=o.object_id&lt;br /&gt;
    WHERE m.definition Like '%'+@Search+'%'&lt;br /&gt;
    ORDER BY 2,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar falhas no claudus em todas as bases&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD  WHERE ID_STATUS_DEL = ''F'' OR ID_STATUS_INS = ''F'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Analisar vínculos de frete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from CLIENTE where nm_cliente like '%POLO DISTR%'&lt;br /&gt;
SELECT * FROM APLICACAO_FRETE;&lt;br /&gt;
SELECT CD_CLASSE_FRETE, * FROM PRODUTO WHERE CD_PRODUTO = 12951 &lt;br /&gt;
SELECT * FROM FAIXA_PRECO_FRETE WHERE CD_CLASSE_FRETE = 0 and CD_FRETE in (13527306, 23527306, 33527306)&lt;br /&gt;
&lt;br /&gt;
select * from PRACA where CD_PRACA = 3527306&lt;br /&gt;
select * from CLIENTE_PRACA where CD_CLIENTE = 100669301 --3527306&lt;br /&gt;
select* from FRETE where CD_PRACA = 3527306&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE TAMOJUNTO_TABELA_FUNCAO SET FL_ATIVA = 1&lt;br /&gt;
WHERE FL_ATIVA = 0 AND NM_TABLE NOT IN ('DESCO_GRUP_CLIEN_FAMIL', 'TIPO_PRODUTO_MOVIMENTO')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Aprovar pedidos manualmente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT 'EXEC autorizar_item_pedido_super ' + CAST(IP.CD_PEDIDO_PALM AS VARCHAR(20)) + ', ' + &lt;br /&gt;
CAST(IP.NR_ITEM_PEDIDO AS VARCHAR(20)) + ', ' + CAST(IP.CD_PRODUTO AS VARCHAR(15)) + ', NULL, ''S'', 14 '&lt;br /&gt;
 FROM ITEM_PEDIDO IP WHERE CD_PEDIDO_PALM IN (190302065635151583)&lt;br /&gt;
 &lt;br /&gt;
SELECT 'EXEC autorizar_pedido_super ' + CAST(P.CD_PEDIDO_PALM AS VARCHAR(20)) + ', 14, 0 '  &lt;br /&gt;
FROM PEDIDO P WHERE CD_PEDIDO_PALM IN (190302065635151583)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Contagem de licenças&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( &lt;br /&gt;
  NM_EMPRESA VARCHAR(50),&lt;br /&gt;
  NR_LICENCAS INT,&lt;br /&gt;
  NR_LICENCAS_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL_BLOQUEADOS INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM_BLOQUEADO INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM_BLOQUEADO INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_UNICO INT,&lt;br /&gt;
  NR_USUARIOS_TOTAL INT,&lt;br /&gt;
  NR_USUARIOS_DESATIVADOS INT,&lt;br /&gt;
  NR_USUARIOS_BLOQUEADOS_TOTAL INT)&lt;br /&gt;
&lt;br /&gt;
DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), &lt;br /&gt;
	@NrUsuariosSomentePortal INT, @NrUsuariosSomentePortalBloqueado INT, @NrUsuariosSomenteMobile INT,&lt;br /&gt;
    @NrUsuariosPortalMobileComIdPalm INT, @NrUsuariosPortalMobileComIdPalmBloqueado INT,&lt;br /&gt;
	@NrUsuariosPortalMobileSemIdPalm INT,  @NrUsuariosPortalMobileSemIdPalmBloqueado INT, @NrUsuariosPortalMobileUnico INT, &lt;br /&gt;
	@NrUsuariosPortalDesativados INT, @NrUsuariosPortalBloqueados INT;&lt;br /&gt;
&lt;br /&gt;
SELECT @NmEmpresa = 'camil',   &lt;br /&gt;
@NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'),   &lt;br /&gt;
@NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'),    &lt;br /&gt;
@NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL),   &lt;br /&gt;
@NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO &amp;lt;&amp;gt; 2 AND CD_SITUACAO &amp;lt;&amp;gt; 9 AND (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   &lt;br /&gt;
@NrUsuariosSomentePortalBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO &amp;lt;&amp;gt; 2 AND CD_SITUACAO = 9 AND (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   &lt;br /&gt;
@NrUsuariosPortalMobileComIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO &amp;lt;&amp;gt; 9),   &lt;br /&gt;
@NrUsuariosPortalMobileComIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO = 9),   &lt;br /&gt;
@NrUsuariosPortalMobileSemIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO &amp;lt;&amp;gt; 9 ),   &lt;br /&gt;
@NrUsuariosPortalMobileSemIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO = 9),   &lt;br /&gt;
@NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT DV.CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_camil..DADOS_VENDEDOR DV INNER JOIN TUSUARIO T ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE DV.ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2),   &lt;br /&gt;
@NrUsuariosPortalDesativados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 2),&lt;br /&gt;
@NrUsuariosPortalBloqueados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 9);&lt;br /&gt;
INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomentePortalBloqueado, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobileComIdPalm, @NrUsuariosPortalMobileComIdPalmBloqueado, @NrUsuariosPortalMobileSemIdPalm, @NrUsuariosPortalMobileSemIdPalmBloqueado, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobileComIdPalm + @NrUsuariosPortalMobileComIdPalmBloqueado + @NrUsuariosPortalMobileSemIdPalm + @NrUsuariosPortalMobileSemIdPalmBloqueado + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal + @NrUsuariosSomentePortalBloqueado), @NrUsuariosPortalDesativados, @NrUsuariosPortalBloqueados);&lt;br /&gt;
	&lt;br /&gt;
SELECT * FROM @VisaoLicencasUsuariosPorEmpresa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT  'INSERT INTO USUARIO_EMPRESA VALUES (' + &lt;br /&gt;
CAST( (1331 + ROW_NUMBER() OVER(ORDER BY CD_USUARIO ASC) ) as VARCHAR(20)) + ',' +&lt;br /&gt;
CAST(CD_TUSUARIO AS VARCHAR(10)) + ',''' +&lt;br /&gt;
'estrellagaliciahomolog'', ' + &lt;br /&gt;
CAST(VALIDO AS VARCHAR(10)) + ',''' +&lt;br /&gt;
ISNULL(CAST(DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(DT_CRIACAO AS VARCHAR(100)), 'NULL')  + ''',' +&lt;br /&gt;
CAST(PAPEL AS VARCHAR(10)) + ')' &lt;br /&gt;
FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'estrellagalicia'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT 'INSERT INTO USUARIO VALUES ' +&lt;br /&gt;
'(''' + ISNULL(U.NOME, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.LOGIN, 'NULL') + '' + ''',''' +&lt;br /&gt;
ISNULL(U.EMAIL, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.SENHA, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.SALT, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.TELEFONE, 'NULL')  + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.NUMERO_VIOLACOES AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.VALIDO AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DT_CRIACAO AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.URL_FOTO, 'NULL')  + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DELTA_ITERACOES AS VARCHAR(100)), 'NULL') + ''')' &lt;br /&gt;
FROM USUARIO U&lt;br /&gt;
 INNER JOIN USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO&lt;br /&gt;
WHERE NM_EMPRESA = 'estrellagalicia'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Análise de processo de importação&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from dw_importacao order by 3 desc&lt;br /&gt;
&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where db_name(dbid) = 'bd_ssm_coopatos'&lt;br /&gt;
and program_name like '%Import%'&lt;br /&gt;
&lt;br /&gt;
EXEC sp_who2 23230&lt;br /&gt;
&lt;br /&gt;
DBCC INPUTBUFFER(23230)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--Reindex das Estruturas do Banco&lt;br /&gt;
Print	''&lt;br /&gt;
Print	'Data e Hora início:  ' + convert(varchar(20),GetDate(),25)&lt;br /&gt;
Print	'*****************************************'&lt;br /&gt;
Print	''&lt;br /&gt;
Declare @Tabela Varchar(300)&lt;br /&gt;
Declare @indice Varchar(300)&lt;br /&gt;
Declare @select varchar (2000)&lt;br /&gt;
declare @banco varchar(50)&lt;br /&gt;
set @banco = 'bd_ssm_makitabeta'&lt;br /&gt;
Print 'INICIO REBUILD BANCO DE DADOS: ' + upper(@banco)&lt;br /&gt;
Create table #temp (cod int primary key identity, banco varchar (100), tabela varchar (300), indice varchar (300))&lt;br /&gt;
		&lt;br /&gt;
insert into #temp (banco, tabela, indice)&lt;br /&gt;
exec ('select ' + '''' + @banco + '''' + ' as banco, o.name as tabela, i.name as indice from ' + @banco + '.sys.objects o&lt;br /&gt;
join ' + @banco + '.sys.indexes i on (o.OBJECT_id = i.OBJECT_id)&lt;br /&gt;
where o.type  = ''u''&lt;br /&gt;
	and i.name is not null&lt;br /&gt;
order by 2')&lt;br /&gt;
--select * from #temp&lt;br /&gt;
Declare Reindex Cursor&lt;br /&gt;
For &lt;br /&gt;
select banco, tabela, indice from #temp&lt;br /&gt;
&lt;br /&gt;
Open Reindex&lt;br /&gt;
Fetch Next From Reindex into @banco, @Tabela, @indice&lt;br /&gt;
&lt;br /&gt;
Set Nocount On&lt;br /&gt;
While @@Fetch_Status = 0&lt;br /&gt;
Begin &lt;br /&gt;
	Print (@Tabela)&lt;br /&gt;
	print('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD')&lt;br /&gt;
	Exec('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD')&lt;br /&gt;
	Print ' '&lt;br /&gt;
	Fetch Next From Reindex into @banco, @Tabela, @indice&lt;br /&gt;
	--Print 'Status: ' + cast(@@Fetch_Status as varchar(20))&lt;br /&gt;
End&lt;br /&gt;
Close Reindex&lt;br /&gt;
Deallocate Reindex&lt;br /&gt;
Set nocount off&lt;br /&gt;
Print	''&lt;br /&gt;
Print	'*****************************************'&lt;br /&gt;
Print	'Data e Hora Fim:  ' + convert(varchar(20),GetDate(),25)&lt;br /&gt;
Print	''&lt;br /&gt;
Print	''&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Inserir banners em todas as bases de produção.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'INSERT INTO '+ name +'..BANNER (CD_BANNER,DS_BANNER,DT_INICIO_VIGENCIA,DT_FIM_VIGENCIA,DS_SITUACAO,LINK_IMAGEM,LINK_DIRECT,NR_TIMER,CD_TAMANHO) VALUES '+ &lt;br /&gt;
' ( (SELECT MAX(CD_BANNER) + 1 FROM '+ name +'..BANNER), ''WEBINAR 4'', GETDATE(), ''2020-05-30 00:01:00.000'', 2, ''https://sscatalogo.s3.amazonaws.com/marketing/banner_live_evo_3.jpg'', ''https://www.youtube.com/watch?v=0BzRbzEMh9A'', 1, 1); ' +&lt;br /&gt;
' INSERT INTO '+ name +'..APLICACAO_BANNER (CD_APLICACAO_BANNER, CD_BANNER) VALUES ((SELECT MAX(CD_APLICACAO_BANNER) + 1 FROM '+ name +'..APLICACAO_BANNER), (SELECT MAX(CD_BANNER) FROM '+ name +'..BANNER));' &lt;br /&gt;
from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%dovac%' &lt;br /&gt;
order by name desc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Delete de registros já removidos da log_alteracao_usuario&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
DECLARE @r INT;&lt;br /&gt;
DECLARE @msg VARCHAR(max)&lt;br /&gt;
DECLARE @restantes INT&lt;br /&gt;
DECLARE @t1 DATETIME&lt;br /&gt;
DECLARE @t2 DATETIME&lt;br /&gt;
&lt;br /&gt;
IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence&lt;br /&gt;
  DROP TABLE #pode_apagar;&lt;br /&gt;
&lt;br /&gt;
SET @t1 = Getdate()&lt;br /&gt;
SET @msg = 'obtendo lista de registros para apagar...'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
SELECT cd_sinc_usuario&lt;br /&gt;
INTO   #pode_apagar&lt;br /&gt;
FROM   log_alteracao_usuario lau&lt;br /&gt;
WHERE  EXISTS (SELECT TOP 1 1&lt;br /&gt;
               FROM   log_sync_strategy las&lt;br /&gt;
               WHERE  lau.cd_usuario = las.cd_usuario&lt;br /&gt;
                      AND lau.nm_tabela = las.nm_tabela&lt;br /&gt;
                      AND lau.dt_insercao &amp;lt; las.dt_last_sync)&lt;br /&gt;
&lt;br /&gt;
SET @restantes = (SELECT Count(1)&lt;br /&gt;
                  FROM   #pode_apagar)&lt;br /&gt;
SET @msg = 'total para apagar '&lt;br /&gt;
           + Cast(@restantes AS VARCHAR(max)) + ' em '&lt;br /&gt;
           + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max))&lt;br /&gt;
           + 's'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
SET @r = 1;&lt;br /&gt;
&lt;br /&gt;
WHILE @r &amp;gt; 0&lt;br /&gt;
  BEGIN&lt;br /&gt;
      BEGIN TRAN&lt;br /&gt;
&lt;br /&gt;
      SET @t2 = Getdate()&lt;br /&gt;
&lt;br /&gt;
      DELETE TOP (50000) lau&lt;br /&gt;
      FROM   log_alteracao_usuario lau&lt;br /&gt;
      WHERE  EXISTS (SELECT TOP 1 1&lt;br /&gt;
                     FROM   #pode_apagar pa&lt;br /&gt;
                     WHERE  pa.cd_sinc_usuario = lau.cd_sinc_usuario)&lt;br /&gt;
&lt;br /&gt;
      SET @r = @@ROWCOUNT;&lt;br /&gt;
      SET @restantes = @restantes - @r&lt;br /&gt;
      SET @msg = 'apagados ' + Cast(@r AS VARCHAR(max))&lt;br /&gt;
                 + ' em '&lt;br /&gt;
                 + Cast(Datediff(ss, @t2, Getdate()) AS VARCHAR(max))&lt;br /&gt;
                 + 's, faltam '&lt;br /&gt;
                 + Cast(@restantes AS VARCHAR(max))&lt;br /&gt;
&lt;br /&gt;
      RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
      COMMIT TRANSACTION;&lt;br /&gt;
&lt;br /&gt;
      CHECKPOINT;&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence&lt;br /&gt;
  DROP TABLE #pode_apagar;&lt;br /&gt;
&lt;br /&gt;
SET @msg = 'finalizado em '&lt;br /&gt;
           + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max))&lt;br /&gt;
           + 's'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Scripts para token de &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
use bd_ssm_login;&lt;br /&gt;
&lt;br /&gt;
--INSERIR INICIALMENTE UM USUÁRIO NA TABELA USUARIO DA LOGIN&lt;br /&gt;
INSERT INTO USUARIO VALUES &lt;br /&gt;
('INTEGRADOR NOMEDAEMPRESA',    'int@nomeempresa',  'integrador@nomeempresa.com.br',    '3+ACVdglI558tfon1MRmVw==', 'SS',   NULL,   0,  1,  NULL,   GETDATE(),  NULL,   0);&lt;br /&gt;
&lt;br /&gt;
--INSERIR UM REGISTRO NA USUARIO_EMPRESA&lt;br /&gt;
INSERT INTO USUARIO_EMPRESA VALUES&lt;br /&gt;
((SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), NULL, 'nomedaempresaminusculo', 1, NULL, GETDATE(), 5)&lt;br /&gt;
&lt;br /&gt;
--INSERIR UM TOKEN PARA O USUÁRIO &lt;br /&gt;
INSERT INTO TOKEN VALUES&lt;br /&gt;
((SELECT SUBSTRING(REPLACE(CAST(NEWID() AS VARCHAR(40)), '-', ''), 1, 20)), &lt;br /&gt;
(SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), &lt;br /&gt;
GETDATE(), '2030-02-06 10:14:00.593')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM USUARIO WHERE NOME LIKE '%INTEGRADOR NOMEDAEMPRESA%';&lt;br /&gt;
SELECT * FROM USUARIO_EMPRESA WHERE CD_USUARIO = 7491&lt;br /&gt;
SELECT * FROM TOKEN WHERE CD_USUARIO = 7491&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM USUARIO_EMPRESA UE&lt;br /&gt;
	INNER JOIN USUARIO U&lt;br /&gt;
	 ON U.CD_USUARIO = UE.CD_USUARIO &lt;br /&gt;
WHERE NM_EMPRESA = 'lorenferhomolog'&lt;br /&gt;
AND UE.PAPEL = 5&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM TOKEN WHERE CD_USUARIO = 8353&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atalhos para tj2&lt;br /&gt;
Endpoints&lt;br /&gt;
&lt;br /&gt;
/api/about/&lt;br /&gt;
/importstatus&lt;br /&gt;
/importstatus/{id}&lt;br /&gt;
/importstatus-logged&lt;br /&gt;
/importstatus-logged/{id}&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;PRODUTO_ESTOQUE&amp;quot;:[{&amp;quot;id&amp;quot;:&amp;quot;-2147483648&amp;quot;,&amp;quot;cd_produto&amp;quot;:&amp;quot;111&amp;quot;,&amp;quot;cd_estoque&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;qt_estoque&amp;quot;:&amp;quot;999999&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
curl http://169.61.109.210:8185/erp-importer/campneushomolog/import -H 'SSAUTH_TOKEN: 123' -H 'Content-type: application/json' -X POST -d @dados.json&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;ROTA&amp;quot;:[{&amp;quot;cd_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ds_rota&amp;quot;:&amp;quot;SEGUNDA-FEIRA&amp;quot;,&amp;quot;ds_dias_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ativa&amp;quot;:&amp;quot;1&amp;quot;},{&amp;quot;cd_rota&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;ds_rota&amp;quot;:&amp;quot;TERCA-FEIRA&amp;quot;,&amp;quot;ds_dias_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ativa&amp;quot;:&amp;quot;1&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
* Inserir limitação de conexões para um aplicativo com Hikari GS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'SSBATCHES';&lt;br /&gt;
SELECT * FROM EMPRESA;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INSERT INTO EMPRESA_BD_PROPERTIES&lt;br /&gt;
SELECT &lt;br /&gt;
CD_EMPRESA, 'SSBATCHES', NULL, 2&lt;br /&gt;
FROM EMPRESA E &lt;br /&gt;
	INNER JOIN SYS.DATABASES SDBS&lt;br /&gt;
		ON ('BD_SSM_' + E.NM_EMPRESA) = SDBS.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atualizações de quantidades de conexões dos serviços de integração&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
--ERP-INTEGRATOR&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('pardalsorvetes','wsembalagens','paodahora','lacbom',&lt;br /&gt;
'gustamais','futuragrohomolog','mizu','auster','austerhomolog','yama','grupoisdrahomolog','bakerfoods','dicoplasthomolog','iranduba',&lt;br /&gt;
'motasa','serveng','fiore','gol','iranduba','lebrinha')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'TJ2'&lt;br /&gt;
	AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688)&lt;br /&gt;
&lt;br /&gt;
--UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
--WHERE APPNAME = 'TJ2'&lt;br /&gt;
--	AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688)&lt;br /&gt;
&lt;br /&gt;
--ERP-IMPORTER&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('campneus','lacbom','lebrinha','mizu')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'tj-importer'&lt;br /&gt;
	AND CD_EMPRESA IN (549,581,584,609)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
WHERE APPNAME = 'tj-importer'&lt;br /&gt;
	AND CD_EMPRESA IN (549,581,584,609)&lt;br /&gt;
&lt;br /&gt;
--ERP-IMPORTERNEW&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('montana','montanahomolog')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'tj-importernew'&lt;br /&gt;
	AND CD_EMPRESA IN (640,641)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
WHERE APPNAME = 'tj-importernew'&lt;br /&gt;
	AND CD_EMPRESA IN (640,641)&lt;br /&gt;
&lt;br /&gt;
--NEOGRID&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('davene','davenehomolog','casakm','casakmhomolog')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'neogrid'&lt;br /&gt;
	AND CD_EMPRESA IN (587,599,642,643)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 5&lt;br /&gt;
WHERE APPNAME = 'neogrid'&lt;br /&gt;
	AND CD_EMPRESA IN (587,599,642,643)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Contar quantidade de conexões por serviços&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(*), sd.name FROM sys.sysprocesses sp&lt;br /&gt;
	inner join sys.sysdatabases sd on sp.dbid = sd.dbid&lt;br /&gt;
 WHERE program_name LIKE '%tj-importer%' group by sd.name&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(*), sd.name FROM sys.sysprocesses sp&lt;br /&gt;
	inner join sys.sysdatabases sd on sp.dbid = sd.dbid&lt;br /&gt;
 WHERE program_name LIKE '%TJ2%' group by sd.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Magia do Jeff&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AND DS_OBSERVACAO LIKE '%[^A-Za-z@#$0-9@/_ .,+%!-]%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script de limpeza de registros duplicados.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN TRANSACTION&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TABELA_TEMP (&lt;br /&gt;
    CD_USUARIO INT,&lt;br /&gt;
    LONGITUDE DECIMAL(10, 6),&lt;br /&gt;
    LATITUDE DECIMAL(10, 6),&lt;br /&gt;
    DT_COORD DATETIME,&lt;br /&gt;
    PRECISAO INT,&lt;br /&gt;
    ORIGEM VARCHAR(2)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TABELA_TEMP &lt;br /&gt;
    SELECT DISTINCT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM COORDENADA_RASTREAMENTO ORDER BY DT_COORD ASC;&lt;br /&gt;
&lt;br /&gt;
TRUNCATE TABLE COORDENADA_RASTREAMENTO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO COORDENADA_RASTREAMENTO (CD_USUARIO, LONGITUDE, LATITUDE, DT_COORD, PRECISAO, ORIGEM)&lt;br /&gt;
    SELECT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM TABELA_TEMP ORDER BY DT_COORD ASC;&lt;br /&gt;
&lt;br /&gt;
DROP TABLE TABELA_TEMP;&lt;br /&gt;
COMMIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Criação de usuários de clientes na makita&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM USUARIO_VINCULACAO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TGRUPOSUSUARIO (CD_USUARIO, CD_GRUPO)&lt;br /&gt;
	SELECT CD_USUARIO, 7 FROM TUSUARIO WHERE DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A=='&lt;br /&gt;
&lt;br /&gt;
INSERT INTO USUARIO_VINCULACAO (CD_TUSUARIO, CD_VINCULADO, CD_TIPO_VINCULADO)&lt;br /&gt;
	SELECT T.CD_USUARIO, C.CD_CLIENTE, 'C' FROM TUSUARIO T &lt;br /&gt;
		INNER JOIN  CLIENTE C ON C.NR_CNPJ_CPF = T.NM_GUERRA COLLATE SQL_Latin1_General_CP1_CI_AS&lt;br /&gt;
	WHERE T.DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A=='&lt;br /&gt;
	AND C.CD_CLIENTE IN (13913)&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TUSUARIO (CD_USUARIO,NM_USUARIO,DS_EMAIL,DS_SENHA,ID_SUPER,NM_GUERRA,DT_EXPSENHA,DT_ALTSENHA,NR_VIOLACOES,&lt;br /&gt;
		CD_SITUACAO,DT_SITUACAO,DS_MOTIVO_SITUACAO,ID_ALT_SENHA_PROX_LOGIN,CD_TPUSUARIO,CD_EMPRESA,CD_FILIAL,ID_USER_SOFTSITE,&lt;br /&gt;
		ID_ATIVO,IMEI_GPS)&lt;br /&gt;
		SELECT ((SELECT MAX(CD_USUARIO) FROM TUSUARIO) + ROW_NUMBER() OVER(ORDER BY CD_CLIENTE ASC)) AS CD_USUARIO,&lt;br /&gt;
			CAST(C.NM_CLIENTE AS VARCHAR(40)) AS NM_USUARIO,&lt;br /&gt;
			C.DS_EMAIL,&lt;br /&gt;
			'4ZdOxz2fsGR3xqAJeGo82A==' AS DS_SENHA,&lt;br /&gt;
			'N' AS ID_SUPER,&lt;br /&gt;
			C.NR_CNPJ_CPF AS NM_GUERRA,&lt;br /&gt;
			NULL AS DT_EXPSENHA,&lt;br /&gt;
			GETDATE() AS DT_ALTSENHA,&lt;br /&gt;
			0 AS NR_VIOLACOES,&lt;br /&gt;
			1 AS CD_SITUACAO,&lt;br /&gt;
			GETDATE() AS DT_SITUACAO,&lt;br /&gt;
			NULL AS DS_MOTIVO_SITUACAO,&lt;br /&gt;
			NULL AS ID_ALT_SENHA_PROX_LOGIN,&lt;br /&gt;
			NULL AS CD_TPUSUARIO,&lt;br /&gt;
			NULL AS CD_EMPRESA,&lt;br /&gt;
			NULL AS CD_FILIAL,&lt;br /&gt;
			'N' AS ID_USER_SOFTSITE,&lt;br /&gt;
			NULL AS ID_ATIVO,&lt;br /&gt;
			NULL AS IMEI_GPS &lt;br /&gt;
		FROM CLIENTE C&lt;br /&gt;
		WHERE CD_CLIENTE IN (13913)  &lt;br /&gt;
	AND NOT EXISTS (SELECT TOP 1 1 FROM USUARIO_VINCULACAO UE WHERE C.CD_CLIENTE = UE.CD_VINCULADO)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visualização de falhas de importação&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE  @nomeBanco varchar(100); &lt;br /&gt;
&lt;br /&gt;
DECLARE bancos CURSOR FOR   &lt;br /&gt;
    SELECT name&lt;br /&gt;
    FROM sys.databases where &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%expressa%'&lt;br /&gt;
	and name not like '%makitahomolog%' &lt;br /&gt;
	and name not like '%prodentho_2%' &lt;br /&gt;
&lt;br /&gt;
OPEN bancos  &lt;br /&gt;
  &lt;br /&gt;
FETCH NEXT FROM bancos   &lt;br /&gt;
INTO @nomeBanco  &lt;br /&gt;
  &lt;br /&gt;
WHILE @@FETCH_STATUS = 0&lt;br /&gt;
BEGIN  &lt;br /&gt;
	EXEC ('use ' + @nomeBanco + ';' + 'SELECT TOP 1 ''NOME DO BANCO '' + REPLACE(''' + @nomeBanco +''', ''bd_ssm_'','''') , * FROM DW_IMPORTACAO WHERE ISNULL(RESULTADO, ''A'') IN (''F'', ''A'') ORDER BY 4 DESC;');&lt;br /&gt;
END   &lt;br /&gt;
CLOSE bancos;  &lt;br /&gt;
DEALLOCATE bancos;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Configurar base para usar o Claudus V3 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE LOG_ITEM_PEDIDO&lt;br /&gt;
ADD NR_ITEM_PEDIDO BIGINT &lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE LOG_ITEM_PEDIDO_RETORNO&lt;br /&gt;
ADD NR_ITEM_PEDIDO BIGINT &lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_DELETE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR DELETE&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'D' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM DELETED&lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_UPDATE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR UPDATE&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'U' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM INSERTED&lt;br /&gt;
	&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_INSERT_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR INSERT&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'I' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM INSERTED&lt;br /&gt;
GO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para trazer os pedidos auto do geosales3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT cd_pedido_cliente	 [cdPedidoCliente],&lt;br /&gt;
	   		   pa.cnpj_cliente		 [cliente.nrCnpjCpf],&lt;br /&gt;
	   		   c.cd_cliente			 [cliente.cdCliente],&lt;br /&gt;
	   		   c.nm_cliente			 [cliente.nmCliente],&lt;br /&gt;
	   		   c.cd_org_venda_padrao [cliente.orgVendaPadrao.cdOrgVenda],&lt;br /&gt;
	   		   ov.nm_organizacao	 [cliente.orgVendaPadrao.nmOrganizacao],&lt;br /&gt;
	   		   c.cd_vendedor_padrao  [cliente.vendedorPadrao.codigo],&lt;br /&gt;
	   		   v.nm_vendedor		 [cliente.vendedorPadrao.nome],&lt;br /&gt;
	   		   c.cd_tab_preco_padrao [cliente.tabPrecoPadrao.cdTabPreco],&lt;br /&gt;
	   		   tp.ds_tab_preco 		 [cliente.tabPrecoPadrao.dsTabPreco],&lt;br /&gt;
	   		   c.nm_estado           [cliente.enderecoPadrao.nmEstado],&lt;br /&gt;
	   		   c.cd_cond_pgto_padrao [cliente.condPgtoPadrao.cdCondPgto],&lt;br /&gt;
	   		   cp.ds_cond_pgto 		 [cliente.condPgtoPadrao.dsCondPgto],&lt;br /&gt;
	   		   c.cd_meio_pgto_padrao [cliente.meioPagamentoPadrao.cdMeioPgto], &lt;br /&gt;
       		   mp.ds_meio_pgto       [cliente.meioPagamentoPadrao.dsMeioPgto],&lt;br /&gt;
	   		   cnpj_fornecedor		 [cnpjFornecedor],&lt;br /&gt;
	   		   dt_emissao			 [dataEmissaoStr],&lt;br /&gt;
	   		   cp.cd_cond_pgto		 [condicaoPagamento.cdCondPgto],&lt;br /&gt;
	   		   cp.ds_cond_pgto		 [condicaoPagamento.dsCondPgto],&lt;br /&gt;
	   		   cp.pr_desconto		 [condicaoPagamento.prDescontoStr],&lt;br /&gt;
	   		   dt_vencimento		 [dataVencimentoStr],&lt;br /&gt;
	   		   cd_tipo_frete		 [frete.idTipoFrete],&lt;br /&gt;
	   		   motivo_bonificacao	 [motivoBonificacao],&lt;br /&gt;
	   		   dt_entrega			 [dataEntregaStr],&lt;br /&gt;
	   		   obs_pedido			 [observacaoPedido],&lt;br /&gt;
	   		   pa.cd_tipo_pedido	 [tipoPedido.codTipo],&lt;br /&gt;
	   		   tmp.ds_tipo			 [tipoPedido.descTipo],&lt;br /&gt;
	   		   id_utilizado			 [idUtilizadoStr]&lt;br /&gt;
		FROM   pedido_auto pa &lt;br /&gt;
		INNER JOIN cliente c ON pa.cnpj_cliente = c.nr_cnpj_cpf&lt;br /&gt;
		INNER JOIN organizacao_venda ov ON c.cd_org_venda_padrao = ov.cd_org_venda&lt;br /&gt;
		INNER JOIN vendedor v ON c.cd_vendedor_padrao = v.cd_vendedor&lt;br /&gt;
		INNER JOIN tabela_preco tp ON c.cd_tab_preco_padrao = tp.cd_tab_preco&lt;br /&gt;
		INNER JOIN condicao_pagamento cp ON c.cd_cond_pgto_padrao = cp.cd_cond_pgto &lt;br /&gt;
		INNER JOIN meio_pagamento mp ON mp.cd_meio_pgto = c.cd_meio_pgto_padrao&lt;br /&gt;
		INNER JOIN tipo_movimento_pedido tmp ON pa.cd_tipo_pedido = tmp.cd_tipo&lt;br /&gt;
		WHERE ( EXISTS (	SELECT TOP 1 1 &lt;br /&gt;
						   	FROM Fn_obter_cliente_usuario(#usuario.codigo#) fn &lt;br /&gt;
						   	WHERE ( fn.cd_cliente = c.cd_cliente ) &lt;br /&gt;
						) &lt;br /&gt;
			  ) AND pa.id_utilizavel = 'S' AND id_utilizado = 'N'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Scripts de análise de configuração do novo aplicativo de rastreamento&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--CONFIGURACAO&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_BASE_URL%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_CAPTURAR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_FUNCTION_MODE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_START%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_FINISH%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_LOGGED_APP%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_MIN_DISTANCE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_N_TRY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_ENVIAR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_INSERIR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_SLEEP_TRY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_STOP_SERVICE_PERMISSION%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TIMER_BATTERY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TRIANGULATION_ACTIVE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_VIEW_CONFIGURATION%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_GPS%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_LOCK%'&lt;br /&gt;
&lt;br /&gt;
--IMEI USUARIO&lt;br /&gt;
SELECT IMEI_GPS, * FROM TUSUARIO WHERE CD_USUARIO = 181 --358692106755103&lt;br /&gt;
--VENDEDOR DE ANÁLISE&lt;br /&gt;
SELECT IMEI, * FROM DADOS_VENDEDOR WHERE CD_VENDEDOR = 37; --358692106755103&lt;br /&gt;
--VERIFICAR STATUS DO GPS&lt;br /&gt;
SELECT * FROM GPS_STATUS WHERE CD_USUARIO = 181 order by 3 desc;&lt;br /&gt;
--VERIFICAR COORDENADAS&lt;br /&gt;
SELECT * FROM COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 181 order by 5 desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--teste&lt;br /&gt;
SELECT * FROM bd_ssm_webinargeosales..GPS_STATUS WHERE CD_USUARIO = 155 order by 3 desc;&lt;br /&gt;
SELECT * FROM bd_ssm_webinargeosales..COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 155 ORDER BY 5 DESC;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--GPS STATUS&lt;br /&gt;
--A - ATIVO - (GPS OU INTERNET)&lt;br /&gt;
--D - DESATIVADO - (GPS OU INTERNET)&lt;br /&gt;
--C - DESTRUIÇÃO DO SERVIÇO DE CONFIGURACAO &lt;br /&gt;
--R - DESTRUIÇÃO DO SERVIÇO DE RASTREAMENTO&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Achar tabelas que tem a coluna Y&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select SO.NAME, * from sys.columns SC&lt;br /&gt;
	INNER JOIN sys.objects SO&lt;br /&gt;
	ON SC.object_id = SO.object_id where SC.name like '%cd_org_venda%'&lt;br /&gt;
	and type = 'U'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Migrar imagens de catálogo para produto imagem no evo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN TRANSACTION&lt;br /&gt;
&lt;br /&gt;
DECLARE @Imagens TABLE(DESC_FOTO VARCHAR(100), URL VARCHAR(1000), ID_ATIVO bit)&lt;br /&gt;
DECLARE @ProdutoImagens TABLE(CD_PRODUTO INT, CD_IMAGEM INT, ID_PRINCIPAL CHAR(1), ID_ATIVO BIT)&lt;br /&gt;
INSERT INTO @Imagens&lt;br /&gt;
	SELECT DISTINCT DS_FOTO, DS_URL, 1 FROM CATALOGO_FOTO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO IMAGEM&lt;br /&gt;
	SELECT ROW_NUMBER() OVER(ORDER BY DESC_FOTO ASC), DESC_FOTO, URL, ID_ATIVO FROM @Imagens;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO @ProdutoImagens&lt;br /&gt;
	SELECT CF.CD_PRODUTO, I.CD_IMAGEM, CF.ID_PRINCIPAL, 1 FROM&lt;br /&gt;
		IMAGEM I&lt;br /&gt;
			INNER JOIN CATALOGO_FOTO CF &lt;br /&gt;
				ON I.URL_IMAGEM  = CF.DS_URL&lt;br /&gt;
	WHERE CD_PRODUTO IS NOT NULL&lt;br /&gt;
&lt;br /&gt;
INSERT INTO PRODUTO_IMAGEM&lt;br /&gt;
	SELECT DISTINCT CD_PRODUTO, CD_IMAGEM, ID_PRINCIPAL, ID_ATIVO FROM&lt;br /&gt;
		@ProdutoImagens&lt;br /&gt;
COMMIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* VERIFICAR PORQUE O PRODUTO NÃO APARECE PRO CLIENTE APÓS O PREENCHIMENTO DO CABEÇALHO&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--consulta que traz os pedido quando multiplos estoques está ativado&lt;br /&gt;
SELECT&lt;br /&gt;
		p.cd_produto,*&lt;br /&gt;
	FROM fn_obter_produtos_com_paginacao('0101089', 2,&lt;br /&gt;
			38, null) pot&lt;br /&gt;
	INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto&lt;br /&gt;
&lt;br /&gt;
		--INNER JOIN familia_produto fp ON p.cd_familia = fp.cd_familia AND fp.cd_familia = #{familia.key}&lt;br /&gt;
&lt;br /&gt;
	INNER JOIN lista_produto lp WITH(NOLOCK) ON (lp.cd_produto = pot.cd_produto AND lp.cd_org_venda = pot.cd_org_venda AND lp.cd_tab_preco = pot.cd_tab_preco)&lt;br /&gt;
	where&lt;br /&gt;
		 EXISTS (&lt;br /&gt;
					SELECT 1 FROM produto_estoque pe &lt;br /&gt;
					WHERE&lt;br /&gt;
						pe.cd_produto = p.cd_produto AND pe.cd_estoque = 200&lt;br /&gt;
				)&lt;br /&gt;
&lt;br /&gt;
	ORDER BY p.nm_produto OFFSET 0 ROWS FETCH NEXT 18 ROWS ONLY&lt;br /&gt;
&lt;br /&gt;
--funcão de paginação&lt;br /&gt;
CREATE FUNCTION [dbo].[fn_obter_produtos_com_paginacao] (&lt;br /&gt;
	@cdOrgVenda VARCHAR(20),&lt;br /&gt;
	@cdTabPreco INT,&lt;br /&gt;
	@cdCliente INT,&lt;br /&gt;
	@param VARCHAR(100))&lt;br /&gt;
RETURNS TABLE&lt;br /&gt;
AS&lt;br /&gt;
RETURN (&lt;br /&gt;
	WITH org_venda AS (&lt;br /&gt;
		SELECT&lt;br /&gt;
			ov.cd_org_venda,&lt;br /&gt;
			ovc.cd_cliente,&lt;br /&gt;
			ov.cd_estoque,&lt;br /&gt;
	&lt;br /&gt;
		ovc.cd_tab_preco&lt;br /&gt;
		FROM organizacao_venda ov WITH(NOLOCK)&lt;br /&gt;
		INNER JOIN org_venda_cliente ovc WITH(NOLOCK) ON ov.cd_org_venda = ovc.cd_org_venda&lt;br /&gt;
		WHERE ov.cd_org_venda = @cdOrgVenda AND ovc.cd_tab_preco = @cdTabPreco&lt;br /&gt;
			AND ovc.cd_cliente = @cdCliente&lt;br /&gt;
	&lt;br /&gt;
), produto_organizacao_tabela AS ( &lt;br /&gt;
		SELECT&lt;br /&gt;
			p.cd_produto, &lt;br /&gt;
			p.nm_produto,&lt;br /&gt;
			ov.cd_cliente,&lt;br /&gt;
			ov.cd_org_venda, &lt;br /&gt;
			ov.cd_estoque, &lt;br /&gt;
		ov.cd_tab_preco&lt;br /&gt;
		FROM produto p WITH(NOLOCK)&lt;br /&gt;
		CROSS JOIN org_venda ov WITH(NOLOCK)&lt;br /&gt;
		WHERE (&lt;br /&gt;
				(@param IS NULL)&lt;br /&gt;
 OR &lt;br /&gt;
				(p.nm_produto LIKE '%' + @param + '%' &lt;br /&gt;
				 OR p.cd_produto LIKE '%' + @param + '%' &lt;br /&gt;
				 OR p.cd_referencia LIKE '%' + @param + '%'&lt;br /&gt;
				 OR p.cod_barras LIKE '%' + @param + '%'&lt;br /&gt;
				 OR p.cd_ncm LIKE '%' + @param + '%')&lt;br /&gt;
			)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	SELECT&lt;br /&gt;
		p.cd_pr&lt;br /&gt;
oduto,&lt;br /&gt;
		pot.cd_org_venda,&lt;br /&gt;
		pot.cd_tab_preco,&lt;br /&gt;
		pot.cd_estoque&lt;br /&gt;
	FROM  produto_organizacao_tabela pot&lt;br /&gt;
	INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto &lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remover usuários inválidos de uma base mssql&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
declare @db varchar(50)&lt;br /&gt;
declare @cont int&lt;br /&gt;
declare @usuariodb varchar(50)&lt;br /&gt;
declare @cmd varchar (200)&lt;br /&gt;
--set @db = (SELECT '?' AS db_name)&lt;br /&gt;
--print @db&lt;br /&gt;
create table ##usuariobd (cod int primary key identity, nome_usuario varchar (50), nome_login&lt;br /&gt;
varchar(50))&lt;br /&gt;
insert into ##usuariobd&lt;br /&gt;
select su.name, sl.name--, db_name()&lt;br /&gt;
from [dbo].[sysusers] su&lt;br /&gt;
left join sys.syslogins sl on su.sid = sl.sid&lt;br /&gt;
where su.uid &amp;gt; 4&lt;br /&gt;
and su.name not like 'db_%'&lt;br /&gt;
and su.name &amp;lt;&amp;gt; 'MS_DataCollectorInternalUser'&lt;br /&gt;
and issqlrole &amp;lt;&amp;gt; 1&lt;br /&gt;
and sl.name is null&lt;br /&gt;
order by 1&lt;br /&gt;
set @cont = (select MAX(cod) from ##usuariobd)&lt;br /&gt;
while @cont &amp;gt;0&lt;br /&gt;
begin&lt;br /&gt;
set @usuariodb = (select nome_usuario from ##usuariobd where cod = @cont)&lt;br /&gt;
IF EXISTS (SELECT SCHEMA_ID FROM sys.schemas WHERE [name] = @usuariodb)&lt;br /&gt;
BEGIN&lt;br /&gt;
print 'Deletando Schema ' + @usuariodb&lt;br /&gt;
set @cmd = 'drop schema [' + @usuariodb + ']'&lt;br /&gt;
print @cmd&lt;br /&gt;
exec (@cmd)&lt;br /&gt;
END&lt;br /&gt;
print 'Deletando usuário '+ @usuariodb + '!'&lt;br /&gt;
set @cmd= 'drop user [' + @usuariodb + ']'&lt;br /&gt;
exec (@cmd)&lt;br /&gt;
set @cont = @cont -1&lt;br /&gt;
end&lt;br /&gt;
drop table ##usuariobd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar dados servidor de banco de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT @@SERVERNAME,&lt;br /&gt;
 CONNECTIONPROPERTY('net_transport') AS net_transport,&lt;br /&gt;
 CONNECTIONPROPERTY('protocol_type') AS protocol_type,&lt;br /&gt;
 CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,&lt;br /&gt;
 CONNECTIONPROPERTY('local_net_address') AS local_net_address,&lt;br /&gt;
 CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,&lt;br /&gt;
 CONNECTIONPROPERTY('client_net_address') AS client_net_address&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Agregador de dados &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT c.cd_cliente, STRING_AGG(r.DS_ROTA, ', ')&lt;br /&gt;
FROM cliente c&lt;br /&gt;
LEFT JOIN CLIENTE_ROTA cr on c.CD_CLIENTE = cr.CD_CLIENTE&lt;br /&gt;
LEFT JOIN ROTA r on r.CD_ROTA = cr.CD_ROTA&lt;br /&gt;
GROUP BY c.cd_cliente&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script para validar se o pedido pode ser copiado&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
			-- pedido &lt;br /&gt;
			P.cd_pedido_palm           AS [cdPedidoPalm],&lt;br /&gt;
			P.dt_emissao               AS [dtEmissao],&lt;br /&gt;
			P.dt_vencimento            AS [dtVencimento],&lt;br /&gt;
			P.cd_pedido_cliente        AS [cdPedidoCliente],&lt;br /&gt;
			P.cd_pedido                AS [cdPedido],&lt;br /&gt;
			P.dt_entrega               AS [dtEntrega],&lt;br /&gt;
			P.dt_faturamento           AS [dtFaturamento],&lt;br /&gt;
			P.dt_entrega_calculada     AS [dtEntregaCalculada],&lt;br /&gt;
			P.id_prioridade            AS [idPrioridade],&lt;br /&gt;
			P.ds_observacao            AS [observacao],&lt;br /&gt;
			P.ds_obs_frete             AS [observacaoFrete],&lt;br /&gt;
			P.ds_observacao_nf         AS [observacaoNotaFiscal],&lt;br /&gt;
			P.nm_rz_social_entr        AS [nmRazaoSocialEntrega],&lt;br /&gt;
			P.nr_cnpj_cpf_entr         AS [cpfCnpjEntrega],&lt;br /&gt;
			P.nr_cgf_entr              AS [cgfEntrega],&lt;br /&gt;
			P.nm_responsavel           AS [nomeResponsavel],&lt;br /&gt;
			P.id_orcamento             AS [orcamento],&lt;br /&gt;
			P.cd_rota                  AS [cdRota],&lt;br /&gt;
			P.id_efetivado             AS [efetivado],&lt;br /&gt;
			P.pc_desconto              AS [pcDesconto],&lt;br /&gt;
			P.id_cross_docking         AS [crossDocking],&lt;br /&gt;
			P.pc_desc_bonif            AS [pcDescBonif],&lt;br /&gt;
			P.vr_outros_descontos      AS [outrosDescontos],&lt;br /&gt;
			P.vr_frete_manual          AS [vrFreteManual],&lt;br /&gt;
			P.vr_frete_manual_original AS [vrFreteManualOriginal],&lt;br /&gt;
			P.acrescimo_dias           AS [acrescimoDias],&lt;br /&gt;
			P.qt_quilometros_entrega   AS [qtQuilometrosEntrega],&lt;br /&gt;
			P.qt_quilometros_cobranca  AS [qtQuilometrosCobranca],&lt;br /&gt;
			-- cliente --&amp;gt;&lt;br /&gt;
			C.cd_cliente                AS [cliente@cdCliente],&lt;br /&gt;
			C.cd_aprovacao              AS [cliente@cdAprCliente],&lt;br /&gt;
			CASE WHEN&lt;br /&gt;
				C.origem = 'CLIENTE_APROVACAO' THEN 1&lt;br /&gt;
				ELSE 0&lt;br /&gt;
			END                         AS [cliente@isProspect],&lt;br /&gt;
		-- organizacao venda&lt;br /&gt;
			OV.cd_org_venda 			AS [orgVenda@cdOrgVenda],&lt;br /&gt;
			-- tipo pedido&lt;br /&gt;
			TMP.cd_tipo                 AS [tipoPedido@codTipo],&lt;br /&gt;
			-- vendedor&lt;br /&gt;
			V.cd_vendedor               AS [vendedor@codigo],&lt;br /&gt;
			-- tabela preco&lt;br /&gt;
			TP.cd_tab_preco             AS [tabPreco@cdTabPreco],&lt;br /&gt;
			-- estoque&lt;br /&gt;
			P.cd_estoque                AS [estoque@cdEstoque],&lt;br /&gt;
			-- canal de venda&lt;br /&gt;
			p.cd_canal                  AS [canalVenda@codigo],&lt;br /&gt;
			-- meio pagamento&lt;br /&gt;
			P.cd_meio_pgto 			    AS [meioPagamento@cdMeioPgto],&lt;br /&gt;
			-- meio pagamento secundario&lt;br /&gt;
			P.cd_meio_pgto_sec 			AS [meioPgtoSecundario@cdMeioPgto],&lt;br /&gt;
			-- cond. pgto &lt;br /&gt;
			P.cd_cond_pgto              AS [condPgto@cdCondPgto],&lt;br /&gt;
			-- cond. pgto secundario &lt;br /&gt;
			P.cd_cond_pgto_sec			AS [condPgtoSecundario@cdCondPgto],&lt;br /&gt;
			-- tipo frete &lt;br /&gt;
			P.id_tipo_frete             AS [tipoFrete@idTipoFrete],&lt;br /&gt;
			-- transportadora &lt;br /&gt;
			P.cd_transportadora			 AS [transportadora@codigo],&lt;br /&gt;
			-- transportadora auxiliar &lt;br /&gt;
			p.cd_transportadora_auxiliar AS [transportadoraAuxiliar@codigo],&lt;br /&gt;
			-- situacao pedido &lt;br /&gt;
			SP.cd_st_pedido				AS [situacaoPedido@cdStPedido],&lt;br /&gt;
			SP.ds_st_pedido			    AS [situacaoPedido@dsStPedido],&lt;br /&gt;
			-- pedido pai &lt;br /&gt;
			PPAI.cd_pedido_palm         AS [pedidoPaiDTO@cdPedidoPalm],&lt;br /&gt;
			PPAI.dt_emissao             AS [pedidoPaiDTO@dtEmissao],&lt;br /&gt;
			PPAI.vr_pedido_impostos     AS [pedidoPaiDTO@vrPedidoImpostos],&lt;br /&gt;
			-- endereco entrega &lt;br /&gt;
			P.cd_endereco_entrega       AS [enderecoEntrega@cdEndereco],&lt;br /&gt;
			P.ds_endereco_entr          AS [enderecoEntrega@dsEndereco],&lt;br /&gt;
			P.nm_bairro_entr            AS [enderecoEntrega@nmBairro],&lt;br /&gt;
			P.nm_cidade_entr            AS [enderecoEntrega@nmCidade],&lt;br /&gt;
			P.nm_estado_entr            AS [enderecoEntrega@nmEstado],&lt;br /&gt;
			P.nr_cep_entr               AS [enderecoEntrega@nrCep],&lt;br /&gt;
			P.nr_fone_entr              AS [enderecoEntrega@nrTelefone],&lt;br /&gt;
			P.nr_cnpj_cpf_entr          AS [enderecoEntrega@nrCnpjCpf],&lt;br /&gt;
			-- endereco cobranca&lt;br /&gt;
			P.cd_endereco_cobranca      AS [enderecoCobranca@cdEndereco],&lt;br /&gt;
			P.ds_endereco_cobr          AS [enderecoCobranca@dsEndereco],&lt;br /&gt;
			P.nm_bairro_cobr            AS [enderecoCobranca@nmBairro],&lt;br /&gt;
			P.nm_cidade_cobr            AS [enderecoCobranca@nmCidade],&lt;br /&gt;
			P.nm_estado_cobr            AS [enderecoCobranca@nmEstado],&lt;br /&gt;
			P.nr_cep_cobr               AS [enderecoCobranca@nrCep],&lt;br /&gt;
			P.nr_fone_cobr              AS [enderecoCobranca@nrTelefone],&lt;br /&gt;
			P.nr_cnpj_cpf_cobr          AS [enderecoCobranca@nrCnpjCpf],&lt;br /&gt;
			-- pedido informacao extra &lt;br /&gt;
			PIEXT.cd_inf                AS [pedInfoExtra@cdInf],&lt;br /&gt;
			PIEXT.ds_inf                AS [pedInfoExtra@dsLabel],&lt;br /&gt;
			PIEXT.cd_tipo_inf           AS [pedInfoExtra@cdTipoInf],&lt;br /&gt;
			PIEXT.ds_livre_inf          AS [pedInfoExtra@dsLivreInf],&lt;br /&gt;
			-- tramitacao_pedido&lt;br /&gt;
			trp.cd_pedido_palm			AS [tramitacaoPedido@cdPedidoPalm],&lt;br /&gt;
			trp.cd_pedido_palm			AS [tramitacaoPedido@pedido@cdPedidoPalm], &lt;br /&gt;
			trp.cd_tramitacao			AS [tramitacaoPedido@tramitacao@cdTramitacao], &lt;br /&gt;
			tram.ds_tramitacao			AS [tramitacaoPedido@tramitacao@dsTramitacao], &lt;br /&gt;
			trp.ds_observacao			AS [tramitacaoPedido@dsObservavao], &lt;br /&gt;
			trp.dt_tramitacao			AS [tramitacaoPedido@dtTramitacao], &lt;br /&gt;
			trp.cd_usuario			    AS [tramitacaoPedido@usuarioSistema@codigo],&lt;br /&gt;
	    	-- tramitacao_pedido&lt;br /&gt;
	    	P.cd_motivo_pedido			AS [motivoPedido@cdMotivoPedido],&lt;br /&gt;
	    	mot.ds_motivo_pedido		AS [motivoPedido@dsMotivoPedido]&lt;br /&gt;
		FROM vw_pedidos P&lt;br /&gt;
		INNER JOIN (SELECT cd_cliente, nm_cliente, cd_aprovacao, origem FROM vw_clientes) C on (P.cd_cliente = C.cd_cliente)&lt;br /&gt;
		INNER JOIN (SELECT cd_org_venda, nm_organizacao FROM organizacao_venda WITH (NOLOCK)) OV ON P.cd_org_venda = OV.cd_org_venda&lt;br /&gt;
		INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo FROM tipo_movimento_pedido) TMP on (P.cd_tipo_pedido = TMP.cd_tipo)&lt;br /&gt;
		INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor) V ON P.cd_vendedor = V.cd_vendedor&lt;br /&gt;
		INNER JOIN tabela_preco TP ON P.cd_tab_preco = TP.cd_tab_preco&lt;br /&gt;
		LEFT JOIN situacao_pedido sp ON P.cd_st_pedido = sp.cd_st_pedido&lt;br /&gt;
		LEFT JOIN (SELECT cd_pedido_palm, dt_emissao, vr_pedido_impostos FROM vw_pedidos WITH(NOLOCK)) ppai ON P.cd_pedido_palm_pai = ppai.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN vw_pedidos_informacoes_extras PIEXT ON P.cd_pedido_palm = PIEXT.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN vw_tramitacoes_pedidos trp WITH(NOLOCK) ON P.cd_pedido_palm = trp.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN tramitacao tram ON trp.cd_tramitacao = tram.cd_tramitacao&lt;br /&gt;
		LEFT JOIN motivo_pedido mot ON mot.cd_motivo_pedido = P.cd_motivo_pedido&lt;br /&gt;
		WHERE&lt;br /&gt;
			P.cd_pedido_palm = 20063013102232739&lt;br /&gt;
			AND (&lt;br /&gt;
					(&lt;br /&gt;
						(P.origem = 'PEDIDO_RETORNO' OR P.origem = 'PEDIDO')&lt;br /&gt;
						AND EXISTS (&lt;br /&gt;
							-- org_venda_cliente&lt;br /&gt;
							SELECT TOP 1 1 FROM org_venda_cliente OVC&lt;br /&gt;
							WHERE&lt;br /&gt;
								P.cd_org_venda = OVC.cd_org_venda &lt;br /&gt;
								AND P.cd_cliente = OVC.cd_cliente&lt;br /&gt;
								AND P.cd_vendedor = OVC.cd_vendedor &lt;br /&gt;
								AND P.cd_tab_preco = OVC.cd_tab_preco&lt;br /&gt;
						&lt;br /&gt;
						)&lt;br /&gt;
					)	&lt;br /&gt;
				OR&lt;br /&gt;
					(&lt;br /&gt;
						P.origem = 'PEDIDO_APROVACAO'&lt;br /&gt;
						AND EXISTS (&lt;br /&gt;
						-- parametros_cliente_prospect&lt;br /&gt;
							SELECT TOP 1 1 FROM parametros_venda_prospect PCP&lt;br /&gt;
							WHERE&lt;br /&gt;
								P.cd_org_venda = PCP.cd_org_venda &lt;br /&gt;
								AND P.cd_vendedor = PCP.cd_vendedor &lt;br /&gt;
								AND P.cd_tab_preco = PCP.cd_tab_preco&lt;br /&gt;
						)&lt;br /&gt;
					)&lt;br /&gt;
			)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script para criar um usuário com todos os acessos no EVO/NuPortal &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- __   __   __           __   ___  __  &lt;br /&gt;
--/ _` /  \ |  \    |  | /__` |__  |__) &lt;br /&gt;
--\__&amp;gt; \__/ |__/    \__/ .__/ |___ |  \ &lt;br /&gt;
                                     &lt;br /&gt;
&lt;br /&gt;
-- 1º utilize a base desejada e insira o nome da empresa em @nm_empresa&lt;br /&gt;
	use bd_ssm_biodinamicajucianodev&lt;br /&gt;
	DECLARE @nm_empresa VARCHAR(200) = 'biodinamicajucianodev'&lt;br /&gt;
&lt;br /&gt;
-- 2º escolha um nome(novo ou já existente) para o perfil que terá acesso a tudo, este nome também será a senha para o portal EVO.&lt;br /&gt;
	DECLARE @nm_new_perfil VARCHAR(100) = 'dog'&lt;br /&gt;
&lt;br /&gt;
-- 3º Escolha um usuário da base escolhida que não exista na USUARIO_PERFIL através da query abaixo. &lt;br /&gt;
-- Observe que a consulta utiliza as variáveis acima para funcionar, então selecione-as ao executá-la.&lt;br /&gt;
	SELECT DISTINCT (u.cd_usuario), ue.cd_tusuario, u.nome, u.login, u.email, u.senha, u.salt, u.dt_criacao, u.dt_validade, u.valido FROM bd_ssm_login..usuario u&lt;br /&gt;
	INNER JOIN bd_ssm_login..usuario_empresa ue ON u.cd_usuario = ue.cd_usuario&lt;br /&gt;
	INNER JOIN perfil_usuario pu ON pu.cd_usuario !=  u.cd_usuario&lt;br /&gt;
	WHERE (ue.nm_empresa LIKE '%'+ @nm_empresa +'%' OR u.login LIKE '%'+ @nm_empresa +'%')&lt;br /&gt;
--  AND ue.papel = 2&lt;br /&gt;
--  AND u.login like '%jbonatto%'&lt;br /&gt;
--  AND u.cd_usuario = 28607&lt;br /&gt;
--  AND ue.cd_tusuario IN (170, 205)&lt;br /&gt;
&lt;br /&gt;
--PAPÉIS:&lt;br /&gt;
--NENHUM(-1)&lt;br /&gt;
--SUPORTE(0)&lt;br /&gt;
--GESTOR(1)&lt;br /&gt;
--VENDEDOR(2)&lt;br /&gt;
--CLIENTE(3)&lt;br /&gt;
--BACKOFFICE(4)&lt;br /&gt;
--INTEGRADOR(5)&lt;br /&gt;
&lt;br /&gt;
-- 5º Substitua NULL pelo bd_ssm_login..cd_usuario escolhido em @cdUsuario_dog. o Script só executará se a variável @cdUsuario_dog estiver diferente de NULL&lt;br /&gt;
DECLARE @cdUsuario_dog INT = NULL;&lt;br /&gt;
-- Porque dog? Dog invertido fica god, que dá o sentido de god user.&lt;br /&gt;
&lt;br /&gt;
-- 6º Após os passos acima, verifique se as variáveis acima (@nm_empresa, @nm_new_perfil, @cdUsuario_dog) estão com os valores corretos.&lt;br /&gt;
&lt;br /&gt;
-- 7º Execute todo este script. Se estiver no Microsoft SQL Server Management Studio apenas pressione F5.&lt;br /&gt;
-- Se tudo ocorrer bem você visualizará o usuário escolhido no último select resultante deste script.&lt;br /&gt;
&lt;br /&gt;
-- Após executá-lo não pare o script, pois isso pode gerar um processo travado/bloqueado.&lt;br /&gt;
&lt;br /&gt;
DECLARE @cd_perfil_already_exists INT = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil)&lt;br /&gt;
&lt;br /&gt;
BEGIN TRANSACTION &lt;br /&gt;
BEGIN TRY&lt;br /&gt;
	IF (@cdUsuario_dog IS NOT NULL &lt;br /&gt;
		AND @nm_new_perfil IS NOT NULL &lt;br /&gt;
		AND @nm_new_perfil &amp;lt;&amp;gt; '' &lt;br /&gt;
		AND (SELECT DB_NAME()) = 'bd_ssm_' + @nm_empresa&lt;br /&gt;
		AND NOT EXISTS (SELECT TOP 1 1 FROM PERFIL_USUARIO WHERE CD_USUARIO = @cdUsuario_dog)&lt;br /&gt;
		)&lt;br /&gt;
		BEGIN&lt;br /&gt;
			DECLARE @I INT = 1&lt;br /&gt;
			DECLARE @cdPerfilChoosed INT;&lt;br /&gt;
			DECLARE @cdAcaoTemp INT;&lt;br /&gt;
&lt;br /&gt;
			--Decidindo o perfil a ser usado &lt;br /&gt;
			IF(@cd_perfil_already_exists IS NULL) &lt;br /&gt;
				BEGIN&lt;br /&gt;
					INSERT INTO PERFIL(&lt;br /&gt;
						CD_PERFIL, &lt;br /&gt;
						NM_PERFIL&lt;br /&gt;
					) VALUES (&lt;br /&gt;
						(SELECT ISNULL((SELECT MAX(CD_PERFIL) FROM PERFIL), 1) + 1), &lt;br /&gt;
						@nm_new_perfil&lt;br /&gt;
					)&lt;br /&gt;
					SET @cdPerfilChoosed = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil)&lt;br /&gt;
				END&lt;br /&gt;
			ELSE&lt;br /&gt;
				BEGIN&lt;br /&gt;
					SET @cdPerfilChoosed = @cd_perfil_already_exists&lt;br /&gt;
				END&lt;br /&gt;
&lt;br /&gt;
			--Vinculando usuário a um perfil&lt;br /&gt;
			INSERT INTO PERFIL_USUARIO (CD_PERFIL, CD_USUARIO)&lt;br /&gt;
			VALUES (@cdPerfilChoosed, @cdUsuario_dog)&lt;br /&gt;
&lt;br /&gt;
			--Inserindo ações para o perfil escolhido&lt;br /&gt;
&lt;br /&gt;
			DECLARE @acoes TABLE(&lt;br /&gt;
				CD_RANK INT,&lt;br /&gt;
				CD_ACAO INT&lt;br /&gt;
			)&lt;br /&gt;
&lt;br /&gt;
			;WITH acoes AS(&lt;br /&gt;
				SELECT &lt;br /&gt;
					ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rk, &lt;br /&gt;
					CD_ACAO &lt;br /&gt;
				FROM BD_SSM_LOGIN..ACAO &lt;br /&gt;
				WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO &amp;lt;&amp;gt; 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO'&lt;br /&gt;
			) INSERT INTO @acoes SELECT rk, CD_ACAO from acoes&lt;br /&gt;
&lt;br /&gt;
			DECLARE @LENGHT INT = (SELECT count(*) FROM BD_SSM_LOGIN..ACAO WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO &amp;lt;&amp;gt; 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO')&lt;br /&gt;
&lt;br /&gt;
			WHILE (@I &amp;lt; @LENGHT)&lt;br /&gt;
				BEGIN&lt;br /&gt;
					&lt;br /&gt;
					SET @cdAcaoTemp = (SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I)&lt;br /&gt;
&lt;br /&gt;
					IF NOT EXISTS ((SELECT TOP 1 1 FROM ACAO_PERFIL WHERE CD_PERFIL = @cdPerfilChoosed AND CD_ACAO = @cdAcaoTemp)) &lt;br /&gt;
						BEGIN &lt;br /&gt;
							INSERT INTO ACAO_PERFIL(CD_ACAO, CD_PERFIL)&lt;br /&gt;
							VALUES ((SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I) , @cdPerfilChoosed)&lt;br /&gt;
						END		&lt;br /&gt;
					SET @I += 1;&lt;br /&gt;
				END&lt;br /&gt;
&lt;br /&gt;
			IF (SELECT salt FROM BD_SSM_LOGIN..USUARIO U where cd_usuario = @cdUsuario_dog) != 'PLAIN'&lt;br /&gt;
				BEGIN&lt;br /&gt;
					UPDATE bd_ssm_Login..usuario SET SALT = 'PLAIN', SENHA = @nm_new_perfil where cd_usuario = @cdUsuario_dog&lt;br /&gt;
				END&lt;br /&gt;
			SELECT 'Abaixo terá as informações de login EVO.' AS 'SEU GOD USER FOI CRIADO COM SUCESSO!' &lt;br /&gt;
			SELECT u.LOGIN, u.SENHA, u.SALT, U.CD_USUARIO, UE.CD_TUSUARIO, p.NM_PERFIL, * FROM BD_SSM_LOGIN..USUARIO U&lt;br /&gt;
					INNER JOIN bd_ssm_login..USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO&lt;br /&gt;
					INNER JOIN PERFIL_USUARIO PU ON PU.CD_USUARIO = U.CD_USUARIO&lt;br /&gt;
					INNER JOIN PERFIL P ON P.CD_PERFIL = PU.CD_PERFIL&lt;br /&gt;
					WHERE u.CD_USUARIO = @cdUsuario_dog&lt;br /&gt;
		END&lt;br /&gt;
	ELSE&lt;br /&gt;
		BEGIN&lt;br /&gt;
			SELECT 'DADOS EQUIVOCADOS, BASE DIVERGENTE OU JÁ EXISTE ESTE USUÁRIO NA USUARIO_PERFIL'&lt;br /&gt;
		END&lt;br /&gt;
	COMMIT;&lt;br /&gt;
END TRY&lt;br /&gt;
	BEGIN CATCH&lt;br /&gt;
		SELECT 'ROLLBACK, WE HAVE A PROBLEM  -&amp;gt; ' + ERROR_MESSAGE()&lt;br /&gt;
		ROLLBACK&lt;br /&gt;
	END CATCH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script de auxílio para análise da aprovação de pendências no item do pedido&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--Script de auxílio para análise da aprovação de pendências no item do pedido&lt;br /&gt;
&lt;br /&gt;
-- Preencha estas 2 variáveis&lt;br /&gt;
DECLARE @cdPedidoPalm BIGINT = 200729124209337,&lt;br /&gt;
		@cdTUsuario INT = 168&lt;br /&gt;
&lt;br /&gt;
DECLARE	@cdGestor INT = (SELECT cd_supervisor FROM supervisor WHERE cd_usuario = @cdTUsuario)&lt;br /&gt;
&lt;br /&gt;
IF (@cdGestor IS NULL)&lt;br /&gt;
	BEGIN&lt;br /&gt;
		SELECT 'é necessário que o usuário seja um gestor/supervisor para aprovar pendências'&lt;br /&gt;
		RETURN&lt;br /&gt;
	END&lt;br /&gt;
--Caso você queira analisar o retorno ou a própria procedure que simula o click do botão aprovar pendências ela está logo abaixo: &lt;br /&gt;
	--Analisando a procedure:&lt;br /&gt;
		--Utilize sp_helptext com os resultados em modo Texto(CTRL + T) no lugar do EXEC para analisar a procedure.&lt;br /&gt;
		--Ou melhor, vá em nome_da_sua_base --&amp;gt; Programação --&amp;gt; Procedimentos Armazenados &lt;br /&gt;
		--&amp;gt; dbo.PR_AUTORIZAR_PENDENCIA &lt;br /&gt;
		--&amp;gt; Botão direito Modificar &lt;br /&gt;
		--&amp;gt; comente a linha que começa com Alter para não alterar a procedure sem querer&lt;br /&gt;
&lt;br /&gt;
	--Executando&lt;br /&gt;
		--CUIDADO: O Script logo abaixo possui uma linha que executa uma procedure com comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes.&lt;br /&gt;
&lt;br /&gt;
		--INÍCIO&lt;br /&gt;
			--DECLARE @pendenciaPedido TP_PENDENCIA_PEDIDO;&lt;br /&gt;
&lt;br /&gt;
			--INSERT INTO @pendenciaPedido (&lt;br /&gt;
			--		cd_pedido_palm,&lt;br /&gt;
			--		cd_tipo_bloc,&lt;br /&gt;
			--		cd_usuario,&lt;br /&gt;
			--		cd_gestor&lt;br /&gt;
			--)&lt;br /&gt;
			--SELECT&lt;br /&gt;
			--	@cdPedidoPalm,&lt;br /&gt;
			--	tbpr.cd_tipo_bloc,&lt;br /&gt;
			--	@cdTUsuario   AS cd_usuario,&lt;br /&gt;
			--	@cdGestor AS cd_gestor&lt;br /&gt;
			--from PEDIDO P&lt;br /&gt;
			--INNER JOIN tipo_bloc_pedido_rel tbpr WITH(NOLOCK) ON tbpr.cd_pedido_palm = P.cd_pedido_palm&lt;br /&gt;
			--INNER JOIN tipo_bloc_pedido_sit tbps WITH (NOLOCK) ON tbps.cd_tipo_bloc = tbpr.cd_tipo_bloc&lt;br /&gt;
&lt;br /&gt;
		--CUIDADO_2: O Script logo abaixo possui comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes.&lt;br /&gt;
		-- -- EXEC PR_AUTORIZAR_PENDENCIA @pendenciaPedido&lt;br /&gt;
&lt;br /&gt;
	--FIM&lt;br /&gt;
&lt;br /&gt;
	--PENDENCIAS_AUTORIZADAS(1)&lt;br /&gt;
	--PEDIDO_AUTORIZADO(2)&lt;br /&gt;
	--SEM_ALCADA_JULGAR_PENDENCIA(3)&lt;br /&gt;
	--PENDENCIA_JA_JULGADA(4)&lt;br /&gt;
	--PEDIDO_CANCELADO(5)&lt;br /&gt;
&lt;br /&gt;
	--Caso o número retornado não esteja entre estes acima é porque esta funcionalidade sofreu alteração, logo, parte deste script poderá não ser mais útil.&lt;br /&gt;
&lt;br /&gt;
--Se você reconhecer que o retorno do NuPortal ou da Procedure for (3) 'SEM_ALCADA_JULGAR_PENDENCIA', você pode analisar o porquê deste retorno com as instruções abaixo:&lt;br /&gt;
&lt;br /&gt;
--Analisando o porquê do retorno SEM_ALCADA_JULGAR_PENDENCIA(3)&lt;br /&gt;
&lt;br /&gt;
	DECLARE @nrItemPedido BIGINT = 3&lt;br /&gt;
	&lt;br /&gt;
	--Verificando se o usuário pode aprovar a pendência do item via função. Essa &lt;br /&gt;
	--SELECT [dbo].[FN_AUTORIZA_ITEM_PEDIDO_PENDENTE] (@cdPedidoPalm, @nrItemPedido, @cdGestor)&lt;br /&gt;
&lt;br /&gt;
	--Conteúdo da função, se por ventura você não pode simplemente executá-la e/ou quer entender melhor o que está acontecendo nela&lt;br /&gt;
	--Obs: Ele utiliza as variáveis declaradas lá em cima:&lt;br /&gt;
&lt;br /&gt;
	--INÍCIO&lt;br /&gt;
		DECLARE @aprovavel CHAR(1)&lt;br /&gt;
		SELECT&lt;br /&gt;
		 TMP.id_tipo_pedido,&lt;br /&gt;
			CASE&lt;br /&gt;
				WHEN TMP.id_tipo_pedido = 'BS' THEN&lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						(&lt;br /&gt;
							(VPAPP.percentual_acrescimo_saldo &amp;lt;= VAP.pct_desc_original OR &lt;br /&gt;
							(VPAPP.percentual_acrescimo_saldo IS NOT NULL AND VAP.pct_desc_original = 100) ) &lt;br /&gt;
							AND ISNULL(VAP.pct_desc_min,0) &amp;lt;= VPAPP.percentual_acrescimo_saldo &lt;br /&gt;
						)&lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
				WHEN TMP.id_tipo_pedido = 'BO' THEN &lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						((TMP.id_tipo_pedido = 'BO' AND VSV.nivel_supervisor = 0) OR NOT (ISNULL(IPD.id_autorizado, 'S') = 'N') &lt;br /&gt;
						OR NOT (VPAPP.cd_pedido_palm_pai IS NOT NULL AND VPAPP.cd_pedido_palm_pai = VPAPP.cd_pedido_palm) &lt;br /&gt;
						OR NOT (VPAPP.cd_pedido_palm IS NOT NULL AND VPAPP.cd_pedido_palm = P.cd_pedido_palm) &lt;br /&gt;
						OR NOT (IPD.pr_desconto_aplicado IS NULL OR IPD.pr_desconto_aplicado = 0))&lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
				WHEN TMP.id_tipo_pedido &amp;lt;&amp;gt; 'BO'  AND TMP.id_tipo_pedido &amp;lt;&amp;gt; 'BS' THEN &lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						(IPD.pr_desconto_aplicado &amp;lt;= VAP.pct_desc OR AA.pct_desc = 100 ) &lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
			END AS 'O usuário pode aprovar'&lt;br /&gt;
		FROM pedido P WITH (NOLOCK)&lt;br /&gt;
		INNER JOIN view_supervisor_vendedor VSV ON (P.cd_vendedor = VSV.cd_vendedor AND VSV.cd_supervisor = @cdGestor)&lt;br /&gt;
		INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor WITH (NOLOCK)) V ON P.cd_vendedor = V.cd_vendedor&lt;br /&gt;
		INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo, id_calcula_impostos FROM tipo_movimento_pedido WITH (NOLOCK)) TMP on (P.cd_tipo_pedido = TMP.cd_tipo)&lt;br /&gt;
		INNER JOIN item_preco_tabela_desconto_aplicado IPD ON P.cd_pedido_palm = IPD.cd_pedido_palm AND IPD.nr_item_pedido = @nrItemPedido&lt;br /&gt;
		INNER JOIN (SELECT &lt;br /&gt;
					cd_pedido_palm, nr_item_pedido, id_autorizado,cd_produto&lt;br /&gt;
				FROM item_pedido WITH (NOLOCK) ) I ON ((IPD.cd_pedido_palm = I.cd_pedido_palm) AND (IPD.nr_item_pedido = I.nr_item_pedido))&lt;br /&gt;
		INNER JOIN (SELECT cd_produto, nm_produto, ps_produto_kg, vr_max_pc_desconto FROM produto WITH (NOLOCK)) PR ON I.cd_produto = PR.cd_produto&lt;br /&gt;
&lt;br /&gt;
		-- verificar se o getor tem alçada de preço para aprovar o item pedido&lt;br /&gt;
		INNER JOIN usuario_alcada UA ON VSV.cd_supervisor = UA.cd_usuario&lt;br /&gt;
		INNER JOIN alcada_autorizacao AA ON UA.cd_alcada = AA.cd_alcada&lt;br /&gt;
		INNER JOIN view_alcada_produto VAP ON (IPD.cd_produto = VAP.cd_produto AND VAP.cd_alcada = AA.cd_alcada)&lt;br /&gt;
&lt;br /&gt;
		-- verificar se o getor tem alçada de pendencia para aprovar o item pedido&lt;br /&gt;
		INNER JOIN (SELECT cd_pedido_palm, nr_item_pedido, cd_tipo_bloc, id_status FROM item_pedido_pendente WITH(NOLOCK)) IPP ON IPD.cd_pedido_palm = IPP.cd_pedido_palm AND IPD.nr_item_pedido = IPP.nr_item_pedido AND ISNULL(IPP.ID_STATUS, 'S') = 'P'&lt;br /&gt;
		INNER JOIN alcada_tipo_bloc ATB WITH(NOLOCK) ON IPP.cd_tipo_bloc = ATB.cd_tipo_bloc&lt;br /&gt;
		INNER JOIN usuario_alcada_aprovacao UAA WITH(NOLOCK) ON UAA.cd_alcada = ATB.cd_alcada AND IPP.cd_tipo_bloc = ATB.CD_TIPO_BLOC AND UAA.cd_usuario = (SELECT cd_usuario FROM supervisor WHERE cd_supervisor = @cdGestor)&lt;br /&gt;
&lt;br /&gt;
		LEFT JOIN view_percentual_acrescimo_pedido_pai VPAPP WITH (NOLOCK) ON P.cd_pedido_palm = VPAPP.cd_pedido_palm&lt;br /&gt;
&lt;br /&gt;
		WHERE&lt;br /&gt;
			ISNULL(P.id_efetivado, 'S') = 'S'&lt;br /&gt;
			AND ((ISNULL(P.id_autorizado, 'S') = 'N') OR TMP.id_tipo_pedido = 'BS')&lt;br /&gt;
			AND (ISNULL(IPD.id_autorizado, 'S') = 'N')&lt;br /&gt;
			AND (@cdPedidoPalm IS NULL OR P.cd_pedido_palm = @cdPedidoPalm)&lt;br /&gt;
&lt;br /&gt;
		SELECT @aprovavel&lt;br /&gt;
	--FIM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Limpar base pesada para teste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC SHRINKDATABASE('bd_ssm_makitarenatolima', 0)&lt;br /&gt;
&lt;br /&gt;
SELECT 'TRUNCATE TABLE ' + name  FROM sys.tables where name like 'LOG_%' and &lt;br /&gt;
name not in ('LOG_IMPORTACAO',	'LOG_GPS', 'LOG_ID', 'LOG_CLOUD_SERVER', 'LOG_SERVER_CLOUD',&lt;br /&gt;
'LOG_ACAO', 'LOG_PEDIDO_AUTO')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar a quantidade de dados sujos nas bases&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT COUNT(*), '''+ name + ''' FROM '+ name + ' WITH (NOLOCK) where data_delete is not null UNION ALL' from sys.tables&lt;br /&gt;
where  &lt;br /&gt;
	name like '%_001'&lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PEGAR OS USUARIOS DE UMA BASE DE PRODUÇÃO E CADASTRAR UMA CÓPIA DELES PARA UMA BASE DE BACKUP MANTENDO TODAS AS CONFIGURAÇÕES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_login;&lt;br /&gt;
&lt;br /&gt;
select ue.* from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%'&lt;br /&gt;
select u.CD_USUARIO from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%'&lt;br /&gt;
&lt;br /&gt;
select pu.*, ue.*, CAST(u.CD_USUARIO AS VARCHAR(10)) + '-' + NM_EMPRESA from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario&lt;br /&gt;
	inner join bd_ssm_montanahomologmobile..perfil_usuario pu on u.CD_USUARIO = pu.cd_usuario&lt;br /&gt;
 where nm_empresa like '%montana';&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
INSERT INTO USUARIO &lt;br /&gt;
  SELECT /*u.CD_USUARIO,*/u.NOME,u.LOGIN + 'homo',u.EMAIL,u.SENHA,u.SALT,u.TELEFONE,u.CD_USUARIO,u.VALIDO,u.DT_VALIDADE,u.DT_CRIACAO,u.URL_FOTO,u.DELTA_ITERACOES from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like 'montana' -- numero_violações&lt;br /&gt;
&lt;br /&gt;
INSERT INTO USUARIO_EMPRESA&lt;br /&gt;
	select u.CD_USUARIO, ue.CD_TUSUARIO,ue.NM_EMPRESA + 'homologmobile',ue.VALIDO,ue.DT_VALIDADE,ue.DT_CRIACAO,ue.PAPEL&lt;br /&gt;
	from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on ue.cd_usuario = u.NUMERO_VIOLACOES where nm_empresa like 'montana'&lt;br /&gt;
&lt;br /&gt;
UPDATE bd_ssm_montanahomologmobile..PERFIL_USUARIO&lt;br /&gt;
SET &lt;br /&gt;
    bd_ssm_montanahomologmobile..PERFIL_USUARIO.CD_USUARIO = U.CD_USUARIO&lt;br /&gt;
FROM&lt;br /&gt;
    USUARIO AS U&lt;br /&gt;
    INNER JOIN bd_ssm_montanahomologmobile..PERFIL_USUARIO AS PU&lt;br /&gt;
        ON U.NUMERO_VIOLACOES = PU.CD_USUARIO&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM  bd_ssm_montanahomologmobile..PERFIL_USUARIO PU&lt;br /&gt;
	INNER JOIN USUARIO U ON U.NUMERO_VIOLACOES = PU.CD_USUARIO&lt;br /&gt;
&lt;br /&gt;
select ue.*, u.* from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%'&lt;br /&gt;
&lt;br /&gt;
UPDATE USUARIO SET SENHA = 'GILGAMESH', SALT = 'PLAIN'&lt;br /&gt;
where CD_USUARIO = 12780&lt;br /&gt;
&lt;br /&gt;
UPDATE USUARIO SET SENHA = '06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4=', SALT = 'c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6'&lt;br /&gt;
where CD_USUARIO = 12780&lt;br /&gt;
-- 06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4=	c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cria%C3%A7%C3%A3o_de_Vis%C3%A3o_de_Relat%C3%B3rio_de_Log_de_Pedidos_Auto&amp;diff=15599</id>
		<title>Discussão:Criação de Visão de Relatório de Log de Pedidos Auto</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cria%C3%A7%C3%A3o_de_Vis%C3%A3o_de_Relat%C3%B3rio_de_Log_de_Pedidos_Auto&amp;diff=15599"/>
		<updated>2021-05-14T16:48:26Z</updated>

		<summary type="html">&lt;p&gt;Anderson: Criou página com '== Pontos de atenção ==  * Seria interessante colocar as colunas e como ficará o layout tanto do relatório em pdf como o em excel. Fica muito abstrato * Sobre a implementa...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Pontos de atenção ==&lt;br /&gt;
&lt;br /&gt;
* Seria interessante colocar as colunas e como ficará o layout tanto do relatório em pdf como o em excel. Fica muito abstrato&lt;br /&gt;
* Sobre a implementação, achei bastante confuso a descrição da implementação. Por exemplo, o que você quer dizer com &amp;quot;'Nome do Arquivo' e 'Data Log' não deverão ser selecionáveis. &amp;quot;?&lt;br /&gt;
* Sobre o item 5, a palavra &amp;quot;finalmente&amp;quot; não acho condizente esse tipo de termo num documento técnico. Além disso, o que é um botão dinâmico?&lt;br /&gt;
* Sobre o item 6, não entendi, já existia um relatório, a que parâmetros você está se referindo?&lt;br /&gt;
* Existe realmente a necessidade de gerar o relatório em excel e pdf? Qual o foco de retorno em cada relatório?&lt;br /&gt;
* Novamente no cenário, não segue o padrão contendo dados e ações.&lt;br /&gt;
* Qual o resultado que você espera do BPMN?&lt;br /&gt;
* Na RN1 diz que já existe um relatório sendo gerado, esse relatório já é gerado no EVO? Se sim quais as diferenças?&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Condi%C3%A7%C3%B5es_de_Pagamento&amp;diff=15590</id>
		<title>Discussão:Condições de Pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Condi%C3%A7%C3%B5es_de_Pagamento&amp;diff=15590"/>
		<updated>2021-05-14T14:36:32Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Pontos de atenção ==&lt;br /&gt;
&lt;br /&gt;
-- Os cenários novamente estão sem os dados, apenas um passo a passo. -- Com a adição da funcionalidade de ativação/desativação de uma condição de pagamento, faz-se necessário que o sistema tenha um entendimento desse novo campo antes de termos o CRUD pronto, visto que o sistema ficará inconsistente uma vez que eu deixar uma condição de pagamento inativa e a mesma continue aparecendo no portal e nas versões do mobile. &lt;br /&gt;
-- Sobre a coexistência dos dados gerados no ERP e no Geosales, para os outros CRUDs realizados para a mantiqueira, foi determinado que ou se cadastraria pelo geosales ou pelo ERP. Sendo assim, não poderíamos ter coexistência ou arcaremos os riscos da coexistência como impossibilidade de truncar dados adição de funcionalidades para impedir que o cliente possa editar os dados do ERP entre outras? &lt;br /&gt;
-- Não vi as tratativas de validação que o sistema deve ter. &lt;br /&gt;
-- RN1 O que essa regra quer dizer? Não entendi o que são as caracteristicas de parametrização.&lt;br /&gt;
-- RN2 eu concordo, só deixaria mais direta a explicação. Diria como o sistema se comportará e não que não há uma possibilidade. Tipo, ao tentar cadastrar uma condição de pagamento com os campo a e b com valores iguais aos de um registro já inserido na base, o sistema deve impedir o cadastro e mostrar a seguinte mensagem &amp;quot;AXAFDAF&amp;quot;. Saliento que isso não é uma regra de negócio, mas sim uma validação, e ao meu ver não deveria estar nesse tópico. &lt;br /&gt;
-- RN3 também não é uma regra de negócio, mas sim uma restrição. &lt;br /&gt;
-- RN4 aqui temos que decidir se essa é a melhor alternativa. &lt;br /&gt;
-- RN5 em momento algum do documento é falado sobre integração de dados geosales ---&amp;gt; ERP. Isso necessitaria de explicações maiores e detalhamento de como isso seria feito. Tratativas de aceite (ACK), ajustes de integração, pontos de entrada etc... Se isso for necessário, não seria preciso um indicativo da importação ou não do dado? E se houver falha nas importações o que acontecerá? Existirá diferença de tratativa entre dados importados e dados não importados? &lt;br /&gt;
-- Na RN6, qual os impactos da inativação? Onde isso impactará? &lt;br /&gt;
-- Outra coisa, você diz em seus cenário o seguinte: &amp;quot;Na tela de edição posso mudar os campos de descrição do meio de pagamento e código do meio de pagamento referencia;;&amp;quot; Eu trocaria &amp;quot;código do meio de pagamento referencia&amp;quot; por &amp;quot;Referência da condição de pagamento&amp;quot;. Saliento também que esse campo é a chave do ERP necessário para vinculação de integração. Então não sei como seria a necessidade desse campo no cadastro do GeoSales. Esse ponto não é impeditivo, mas é importante ser salientado.&lt;br /&gt;
&lt;br /&gt;
Acredito que alguns textos foram copiados do caso de uso de meio de pagamento. Portanto dá uma revisada nos termos para não acontecer esse erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Outro ponto muito importante é a questão das vinculações, de nada vai adiantar esse crud se não houver a possibilidade de vinculação. Ao meu ver, esse crud deveria ser feito depois do crud de vinculação para que seja possível agregar valor logo no início da implementação e não no final.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15589</id>
		<title>Discussão:Meios de pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15589"/>
		<updated>2021-05-14T14:36:08Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neste Crud, acredito que não seja ideal excluir, mas desativar quando não não for atualizado, então para isso necessita criar um campo que controle o ativar e desativar. Quando esse campo estiver null, deve ser tratado como ativo, dessa forma, não necessitamos modificar integração.&lt;br /&gt;
&lt;br /&gt;
Outra coisa que precisa ser tratado, é que meios de pagamento que tenham sido integrados, não podem ser alterados.&lt;br /&gt;
&lt;br /&gt;
Como são dados que tem integração, quando for cadastrado no Geosales, ideal será salva-los como negativos.&lt;br /&gt;
&lt;br /&gt;
Falar sobre a tela de pesquisa, pois na implementação não vi nada relacionado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Novos pontos de atenção&lt;br /&gt;
&lt;br /&gt;
-- Os cenários novamente estão sem os dados, apenas um passo a passo.&lt;br /&gt;
-- Com a adição da funcionalidade de ativação/desativação de um meio de pagamento, faz-se necessário que o sistema tenha um entendimento desse novo campo antes de termos o CRUD pronto, visto que o sistema ficará inconsistente uma vez que eu deixar um meio de pagamento inativo e o mesmo continue aparecendo no portal e nas versões do mobile.&lt;br /&gt;
-- Sobre a coexistência dos dados gerados no ERP e no Geosales, para os outros CRUDs realizados para a mantiqueira, foi determinado que ou se cadastraria pelo geosales ou pelo ERP. Sendo assim, não poderíamos ter coexistência ou arcaremos os riscos da coexistência como impossibilidade de truncar dados adição de -funcionalidades para impedir que o cliente possa editar os dados do ERP entre outras?&lt;br /&gt;
-- Não vi as tratativas de validação que o sistema deve ter.&lt;br /&gt;
-- RN1 está confusa, não consegui entender como será a validação de duplicidade, visto que a única chave primária é o CD_MEIO_PGTO. Segundo sua descrição de regra, eu posso ter 15 meios de pagamento iguais chamados cheque. Isso é válido? Somente devo validar o código de referencia como identificador, visto que a chave é algo que não vai se repetir se o cadastro for feito somente em uma plataforma ou se tiverem leis de formações de códigos sem possibilidade de choque.&lt;br /&gt;
-- RN2 eu concordo, só deixaria mais direta a explicação. Diria como o sistema se comportará e não que não há uma possibilidade. Tipo, ao tentar cadastrar um meio de pagamento com os campo a e b com valores iguais aos de um registro já inserido na base, o sistema deve impedir o cadastro e mostrar a seguinte mensagem &amp;quot;AXAFDAF&amp;quot;. Saliento que isso não é uma regra de negócio, mas sim uma validação, e ao meu ver não deveria estar nesse tópico.&lt;br /&gt;
-- RN3 também não é uma regra de negócio, mas sim uma restrição.&lt;br /&gt;
-- RN4 aqui temos que decidir se essa é a melhor alternativa.&lt;br /&gt;
-- RN5 em momento algum do documento é falado sobre integração de dados geosales ---&amp;gt; ERP. Isso necessitaria de explicações maiores e detalhamento de como isso seria feito. Tratativas de aceite (ACK), ajustes de integração, pontos de entrada etc... Se isso for necessário, não seria preciso um indicativo da importação ou não do dado? E se houver falha nas importações o que acontecerá? Existirá diferença de tratativa entre dados importados e dados não importados?&lt;br /&gt;
-- Na RN6, qual os impactos da inativação? Onde isso impactará?&lt;br /&gt;
-- Outra coisa, você diz em seus cenário o seguinte:&lt;br /&gt;
&amp;quot;Na tela de edição posso mudar os campos de descrição do meio de pagamento e código do meio de pagamento referencia;&amp;quot; &lt;br /&gt;
Eu trocaria &amp;quot;código do meio de pagamento referencia&amp;quot; por &amp;quot;Referência do meio de pagamento&amp;quot;. Saliento também que esse campo é a chave do ERP necessário para vinculação de integração. Então não sei como seria a necessidade desse campo no cadastro do GeoSalaes. Esse ponto não é impeditivo, mas é importante ser salientado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Outro ponto muito importante é a questão das vinculações, de nada vai adiantar esse crud se não houver a possibilidade de vinculação. Ao meu ver, esse crud deveria ser feito depois do crud de vinculação para que seja possível agregar valor logo no início da implementação e não no final.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Condi%C3%A7%C3%B5es_de_Pagamento&amp;diff=15588</id>
		<title>Discussão:Condições de Pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Condi%C3%A7%C3%B5es_de_Pagamento&amp;diff=15588"/>
		<updated>2021-05-14T14:33:48Z</updated>

		<summary type="html">&lt;p&gt;Anderson: Criou página com '== Pontos de atenção ==  -- Os cenários novamente estão sem os dados, apenas um passo a passo. -- Com a adição da funcionalidade de ativação/desativação de uma condi...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Pontos de atenção ==&lt;br /&gt;
&lt;br /&gt;
-- Os cenários novamente estão sem os dados, apenas um passo a passo. -- Com a adição da funcionalidade de ativação/desativação de uma condição de pagamento, faz-se necessário que o sistema tenha um entendimento desse novo campo antes de termos o CRUD pronto, visto que o sistema ficará inconsistente uma vez que eu deixar uma condição de pagamento inativa e a mesma continue aparecendo no portal e nas versões do mobile. &lt;br /&gt;
-- Sobre a coexistência dos dados gerados no ERP e no Geosales, para os outros CRUDs realizados para a mantiqueira, foi determinado que ou se cadastraria pelo geosales ou pelo ERP. Sendo assim, não poderíamos ter coexistência ou arcaremos os riscos da coexistência como impossibilidade de truncar dados adição de funcionalidades para impedir que o cliente possa editar os dados do ERP entre outras? &lt;br /&gt;
-- Não vi as tratativas de validação que o sistema deve ter. &lt;br /&gt;
-- RN1 O que essa regra quer dizer? Não entendi o que são as caracteristicas de parametrização.&lt;br /&gt;
-- RN2 eu concordo, só deixaria mais direta a explicação. Diria como o sistema se comportará e não que não há uma possibilidade. Tipo, ao tentar cadastrar uma condição de pagamento com os campo a e b com valores iguais aos de um registro já inserido na base, o sistema deve impedir o cadastro e mostrar a seguinte mensagem &amp;quot;AXAFDAF&amp;quot;. Saliento que isso não é uma regra de negócio, mas sim uma validação, e ao meu ver não deveria estar nesse tópico. &lt;br /&gt;
-- RN3 também não é uma regra de negócio, mas sim uma restrição. &lt;br /&gt;
-- RN4 aqui temos que decidir se essa é a melhor alternativa. &lt;br /&gt;
-- RN5 em momento algum do documento é falado sobre integração de dados geosales ---&amp;gt; ERP. Isso necessitaria de explicações maiores e detalhamento de como isso seria feito. Tratativas de aceite (ACK), ajustes de integração, pontos de entrada etc... Se isso for necessário, não seria preciso um indicativo da importação ou não do dado? E se houver falha nas importações o que acontecerá? Existirá diferença de tratativa entre dados importados e dados não importados? &lt;br /&gt;
-- Na RN6, qual os impactos da inativação? Onde isso impactará? &lt;br /&gt;
-- Outra coisa, você diz em seus cenário o seguinte: &amp;quot;Na tela de edição posso mudar os campos de descrição do meio de pagamento e código do meio de pagamento referencia;;&amp;quot; Eu trocaria &amp;quot;código do meio de pagamento referencia&amp;quot; por &amp;quot;Referência da condição de pagamento&amp;quot;. Saliento também que esse campo é a chave do ERP necessário para vinculação de integração. Então não sei como seria a necessidade desse campo no cadastro do GeoSales. Esse ponto não é impeditivo, mas é importante ser salientado.&lt;br /&gt;
&lt;br /&gt;
Acredito que alguns textos foram copiados do caso de uso de meio de pagamento. Portanto dá uma revisada nos termos para não acontecer esse erro.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15584</id>
		<title>Discussão:Meios de pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15584"/>
		<updated>2021-05-14T14:06:29Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neste Crud, acredito que não seja ideal excluir, mas desativar quando não não for atualizado, então para isso necessita criar um campo que controle o ativar e desativar. Quando esse campo estiver null, deve ser tratado como ativo, dessa forma, não necessitamos modificar integração.&lt;br /&gt;
&lt;br /&gt;
Outra coisa que precisa ser tratado, é que meios de pagamento que tenham sido integrados, não podem ser alterados.&lt;br /&gt;
&lt;br /&gt;
Como são dados que tem integração, quando for cadastrado no Geosales, ideal será salva-los como negativos.&lt;br /&gt;
&lt;br /&gt;
Falar sobre a tela de pesquisa, pois na implementação não vi nada relacionado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Novos pontos de atenção&lt;br /&gt;
&lt;br /&gt;
-- Os cenários novamente estão sem os dados, apenas um passo a passo.&lt;br /&gt;
-- Com a adição da funcionalidade de ativação/desativação de um meio de pagamento, faz-se necessário que o sistema tenha um entendimento desse novo campo antes de termos o CRUD pronto, visto que o sistema ficará inconsistente uma vez que eu deixar um meio de pagamento inativo e o mesmo continue aparecendo no portal e nas versões do mobile.&lt;br /&gt;
-- Sobre a coexistência dos dados gerados no ERP e no Geosales, para os outros CRUDs realizados para a mantiqueira, foi determinado que ou se cadastraria pelo geosales ou pelo ERP. Sendo assim, não poderíamos ter coexistência ou arcaremos os riscos da coexistência como impossibilidade de truncar dados adição de -funcionalidades para impedir que o cliente possa editar os dados do ERP entre outras?&lt;br /&gt;
-- Não vi as tratativas de validação que o sistema deve ter.&lt;br /&gt;
-- RN1 está confusa, não consegui entender como será a validação de duplicidade, visto que a única chave primária é o CD_MEIO_PGTO. Segundo sua descrição de regra, eu posso ter 15 meios de pagamento iguais chamados cheque. Isso é válido? Somente devo validar o código de referencia como identificador, visto que a chave é algo que não vai se repetir se o cadastro for feito somente em uma plataforma ou se tiverem leis de formações de códigos sem possibilidade de choque.&lt;br /&gt;
-- RN2 eu concordo, só deixaria mais direta a explicação. Diria como o sistema se comportará e não que não há uma possibilidade. Tipo, ao tentar cadastrar um meio de pagamento com os campo a e b com valores iguais aos de um registro já inserido na base, o sistema deve impedir o cadastro e mostrar a seguinte mensagem &amp;quot;AXAFDAF&amp;quot;. Saliento que isso não é uma regra de negócio, mas sim uma validação, e ao meu ver não deveria estar nesse tópico.&lt;br /&gt;
-- RN3 também não é uma regra de negócio, mas sim uma restrição.&lt;br /&gt;
-- RN4 aqui temos que decidir se essa é a melhor alternativa.&lt;br /&gt;
-- RN5 em momento algum do documento é falado sobre integração de dados geosales ---&amp;gt; ERP. Isso necessitaria de explicações maiores e detalhamento de como isso seria feito. Tratativas de aceite (ACK), ajustes de integração, pontos de entrada etc... Se isso for necessário, não seria preciso um indicativo da importação ou não do dado? E se houver falha nas importações o que acontecerá? Existirá diferença de tratativa entre dados importados e dados não importados?&lt;br /&gt;
-- Na RN6, qual os impactos da inativação? Onde isso impactará?&lt;br /&gt;
-- Outra coisa, você diz em seus cenário o seguinte:&lt;br /&gt;
&amp;quot;Na tela de edição posso mudar os campos de descrição do meio de pagamento e código do meio de pagamento referencia;&amp;quot; &lt;br /&gt;
Eu trocaria &amp;quot;código do meio de pagamento referencia&amp;quot; por &amp;quot;Referência do meio de pagamento&amp;quot;. Saliento também que esse campo é a chave do ERP necessário para vinculação de integração. Então não sei como seria a necessidade desse campo no cadastro do GeoSalaes. Esse ponto não é impeditivo, mas é importante ser salientado.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15583</id>
		<title>Discussão:Meios de pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15583"/>
		<updated>2021-05-14T13:08:07Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neste Crud, acredito que não seja ideal excluir, mas desativar quando não não for atualizado, então para isso necessita criar um campo que controle o ativar e desativar. Quando esse campo estiver null, deve ser tratado como ativo, dessa forma, não necessitamos modificar integração.&lt;br /&gt;
&lt;br /&gt;
Outra coisa que precisa ser tratado, é que meios de pagamento que tenham sido integrados, não podem ser alterados.&lt;br /&gt;
&lt;br /&gt;
Como são dados que tem integração, quando for cadastrado no Geosales, ideal será salva-los como negativos.&lt;br /&gt;
&lt;br /&gt;
Falar sobre a tela de pesquisa, pois na implementação não vi nada relacionado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Novos pontos de atenção&lt;br /&gt;
&lt;br /&gt;
-- Os cenários novamente estão sem os dados, apenas um passo a passo.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15582</id>
		<title>Discussão:Meios de pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15582"/>
		<updated>2021-05-14T13:08:00Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neste Crud, acredito que não seja ideal excluir, mas desativar quando não não for atualizado, então para isso necessita criar um campo que controle o ativar e desativar. Quando esse campo estiver null, deve ser tratado como ativo, dessa forma, não necessitamos modificar integração.&lt;br /&gt;
&lt;br /&gt;
Outra coisa que precisa ser tratado, é que meios de pagamento que tenham sido integrados, não podem ser alterados.&lt;br /&gt;
&lt;br /&gt;
Como são dados que tem integração, quando for cadastrado no Geosales, ideal será salva-los como negativos.&lt;br /&gt;
&lt;br /&gt;
Falar sobre a tela de pesquisa, pois na implementação não vi nada relacionado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Novos pontos de atenção&lt;br /&gt;
&lt;br /&gt;
-- Os cenários novamente estão sem os dados, apenas um passo a passo.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15581</id>
		<title>Discussão:Meios de pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15581"/>
		<updated>2021-05-14T13:07:52Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neste Crud, acredito que não seja ideal excluir, mas desativar quando não não for atualizado, então para isso necessita criar um campo que controle o ativar e desativar. Quando esse campo estiver null, deve ser tratado como ativo, dessa forma, não necessitamos modificar integração.&lt;br /&gt;
&lt;br /&gt;
Outra coisa que precisa ser tratado, é que meios de pagamento que tenham sido integrados, não podem ser alterados.&lt;br /&gt;
&lt;br /&gt;
Como são dados que tem integração, quando for cadastrado no Geosales, ideal será salva-los como negativos.&lt;br /&gt;
&lt;br /&gt;
Falar sobre a tela de pesquisa, pois na implementação não vi nada relacionado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Novos pontos de atenção&lt;br /&gt;
&lt;br /&gt;
*- Os cenários novamente estão sem os dados, apenas um passo a passo.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15580</id>
		<title>Discussão:Meios de pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15580"/>
		<updated>2021-05-14T13:07:46Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neste Crud, acredito que não seja ideal excluir, mas desativar quando não não for atualizado, então para isso necessita criar um campo que controle o ativar e desativar. Quando esse campo estiver null, deve ser tratado como ativo, dessa forma, não necessitamos modificar integração.&lt;br /&gt;
&lt;br /&gt;
Outra coisa que precisa ser tratado, é que meios de pagamento que tenham sido integrados, não podem ser alterados.&lt;br /&gt;
&lt;br /&gt;
Como são dados que tem integração, quando for cadastrado no Geosales, ideal será salva-los como negativos.&lt;br /&gt;
&lt;br /&gt;
Falar sobre a tela de pesquisa, pois na implementação não vi nada relacionado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Novos pontos de atenção&lt;br /&gt;
&lt;br /&gt;
** Os cenários novamente estão sem os dados, apenas um passo a passo.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15579</id>
		<title>Discussão:Meios de pagamento</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Meios_de_pagamento&amp;diff=15579"/>
		<updated>2021-05-14T13:00:58Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neste Crud, acredito que não seja ideal excluir, mas desativar quando não não for atualizado, então para isso necessita criar um campo que controle o ativar e desativar. Quando esse campo estiver null, deve ser tratado como ativo, dessa forma, não necessitamos modificar integração.&lt;br /&gt;
&lt;br /&gt;
Outra coisa que precisa ser tratado, é que meios de pagamento que tenham sido integrados, não podem ser alterados.&lt;br /&gt;
&lt;br /&gt;
Como são dados que tem integração, quando for cadastrado no Geosales, ideal será salva-los como negativos.&lt;br /&gt;
&lt;br /&gt;
Falar sobre a tela de pesquisa, pois na implementação não vi nada relacionado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Novos pontos de atenção&lt;br /&gt;
&lt;br /&gt;
- Os cenários novamente estão sem os dados, apenas um passo a passo.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Verba_contratual_por_Cliente_II&amp;diff=15457</id>
		<title>Discussão:Verba contratual por Cliente II</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Verba_contratual_por_Cliente_II&amp;diff=15457"/>
		<updated>2021-04-29T20:48:01Z</updated>

		<summary type="html">&lt;p&gt;Anderson: Criou página com '=== Discussão ===  * Sobre a verba contratual, onde entra o campo TIPO_CALCULO da tabela VERBA_CONTRATUAL na composição de preço? Poderia detalhar? * Existem outros modifi...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Discussão ===&lt;br /&gt;
&lt;br /&gt;
* Sobre a verba contratual, onde entra o campo TIPO_CALCULO da tabela VERBA_CONTRATUAL na composição de preço? Poderia detalhar?&lt;br /&gt;
* Existem outros modificadores de valor na composição do preço dos itens, porém, aparentemente a aplicação de verba é feita no final. Como essa aplicação se relacionaria com outros descontos/acréscimos? E sobre os outros modificadores como frete ou impostos?&lt;br /&gt;
* Se dois cadastros de verba contratual se aplicarem a um mesmo item, como o sistema deve se comportar?&lt;br /&gt;
* O cálculo de verba que é usado hoje é o mesmo cálculo esperado nessa customização?&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Falta_de_Agrupamento_de_Pedidos&amp;diff=15456</id>
		<title>Falta de Agrupamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Falta_de_Agrupamento_de_Pedidos&amp;diff=15456"/>
		<updated>2021-04-29T20:09:22Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
| 15/03/2021  || João Ramon || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
| 18/03/2021 || João Ramon || Revisão e atualização do documento&lt;br /&gt;
|-&lt;br /&gt;
| 25/03/2021 || João Ramon || Retirada de conteúdo e revisão&lt;br /&gt;
|-&lt;br /&gt;
| 29/03/2021 || João Ramon || Retirada de conteúdo e revisão&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Empresa com giro de produtos semanal ou quinzenal utiliza o mecanismo de rotas de visitas, para garantir a periodicidade de atendimento pelo agente de venda em campo. Com a construção das rotas de atendimento, para organizar e controlar o ciclo de visitas pela equipe comercial, ocorre que a equipe de gestão precisa ter uma visão deste modelo de controle que facilite acompanhar o desempenho e o resultado de cada rota, para aferir as vendas realizadas. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solução ==&lt;br /&gt;
&lt;br /&gt;
Criar visão de 'Rota' na página de pesquisa de pedidos, que possibilite que a equipe BackOffice acompanhe os pedidos realizados durante uma rota.&lt;br /&gt;
Para este acompanhamento, deverão ser inseridos dois novos comportamentos na tela de pesquisa de pedidos: filtrar pedidos por rota, e agrupar os resultados da pesquisa de pedidos por rota.&lt;br /&gt;
&lt;br /&gt;
''' Implementação '''&lt;br /&gt;
&lt;br /&gt;
''' Filtro rota '''&lt;br /&gt;
&lt;br /&gt;
A filtração de pedidos por rota será um filtro que deve compor, juntamente com os outros filtros existentes na tela de pedido, os argumentos de busca para o resultado da pesquisa (Filtro de múltipla escolha), e deve respeitar a hierarquia de visão de dados do usuário que está realizando a operação. &lt;br /&gt;
&lt;br /&gt;
''' Agrupamento rota '''&lt;br /&gt;
&lt;br /&gt;
O agrupamento de pedido por rota será mais um opção dentro das que existe, na tela de pesquisa de pedido. Não podendo selecionar mais de um agrupamento, deverá ter comportamento similar aos outros agrupamentos, onde se definem seções de informação pelo campo selecionado para ser a referencia no agrupamento dos dados. &lt;br /&gt;
O agrupamento não deverá impactar nos filtros de busca, e nem deve limitar os resultados encontrados; caso algum registro encontrado não tenha rota informada, deve ser separado e marcado como: &amp;quot;Fora de Rota&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados ==&lt;br /&gt;
&lt;br /&gt;
Ao selecionar o agrupamento &amp;quot;por Rota&amp;quot;, a plataforma irá buscar todos os pedidos já agrupados por rota, atendendo à primeira demanda do cliente.&lt;br /&gt;
&lt;br /&gt;
Ao selecionar o campo &amp;quot;Rota&amp;quot; e o agrupamento &amp;quot;por Vendedor&amp;quot;, a plataforma vai trazer todos os pedidos em determinada rota, e agrupado por todos os vendedores que atuam nesta rota, atendendo à segunda demanda do cliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para os cenários de teste a seguir iremos levar em consideração a seguinte massa de dados:&lt;br /&gt;
&lt;br /&gt;
Dados dos vendedores:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID &lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! SUPERVISOR&lt;br /&gt;
|-&lt;br /&gt;
| 1  || Pedro || Super_1&lt;br /&gt;
|-&lt;br /&gt;
| 2  || Maria || Super_1&lt;br /&gt;
|-&lt;br /&gt;
| 3  || Joao || Super_2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dados dos clientes: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID &lt;br /&gt;
! CLIENTE &lt;br /&gt;
|-&lt;br /&gt;
| 1  || HIPER_PAGUE_MENOS&lt;br /&gt;
|-&lt;br /&gt;
| 2  || SUPER_CAPOTE &lt;br /&gt;
|-&lt;br /&gt;
| 3  || PADARIA_JOAO_MARIA &lt;br /&gt;
|-&lt;br /&gt;
| 4  || HIPER_TERESINHA&lt;br /&gt;
|-&lt;br /&gt;
| 5  || SUPER_CARIOCA&lt;br /&gt;
|-&lt;br /&gt;
| 6  || PADARIA_GLORIA &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dados de rota:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| SEGUNDA-FEIRA  || Pedro || PADARIA_JOAO_MARIA&lt;br /&gt;
|-&lt;br /&gt;
| SEGUNDA-FEIRA || Maria || SUPER_CAPOTE&lt;br /&gt;
|-&lt;br /&gt;
| SEGUNDA-FEIRA  || Joao || HIPER_PAGUE_MENOS &lt;br /&gt;
|-&lt;br /&gt;
| TERÇA-FEIRA  || Pedro || HIPER_TERESINHA&lt;br /&gt;
|-&lt;br /&gt;
| TERÇA-FEIRA || Maria || SUPER_CARIOCA&lt;br /&gt;
|-&lt;br /&gt;
| TERÇA-FEIRA || Joao || PADARIA_GLORIA &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ocorrendo que o vendedor 1 ( Pedro) abriu a rota da segunda-feira e realizou um pedido para o cliente 3 (PARARIA_JOAO_MARIA) de R$ 5.000,00, e outro para o cliente o cliente 4 (HIPER_TERESINHA)  de R$ 3.500,00. Como o cliente 4 não está na rota de SEGUNDA-FEIRA, este pedido foi registrado, fora da rota em execução, ficando os registro da seguinte forma: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|1 ||  SEGUNDA-FEIRA  || Pedro || PADARIA_JOAO_MARIA || ''' R$ 5.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||   || Pedro ||  HIPER_TERESINHA || ''' R$ 3.500,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ocorrendo que o vendedor 3 ( Maria ) abriu a rota da segunda-feira e realizou um pedido para o cliente 2 (SUPER_CAPOTE) de R$ 6.000,00, finalizou a rota e abrir a rota de terça-feira e realizou outro para o cliente o cliente 5 (SUPER_CARIOCA)  de R$ 2.550,00, ficando os registro da seguinte forma:&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|3 ||  SEGUNDA-FEIRA  || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|4 || TERÇA-FEIRA || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ocorrendo que o vendedor 3 (Joao) abriu a rota da segunda-feira e realizou um pedido para o cliente 1 (HIPER_PAGUE_MENOS) de R$ 2.000,00, e realizou outro para o cliente o cliente 6 (PARARIA_GLORIA)  de R$ 7.850,00 via portal. Como pedidos realizado via portal, não são considerados dentro da rota, o pedido foi registrado, sendo fora de rota. Ficando os registro da seguinte forma:&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|5 ||  SEGUNDA-FEIRA  || Joao|| HIPER_PAGUE_MENOS || ''' R$ 2.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|6 || || Joao||  SUPER_CARIOCA || ''' R$ 7.850,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fechando o dados totais de pedido da seguinte forma:&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|1 ||  SEGUNDA-FEIRA  || Pedro || PADARIA_JOAO_MARIA || ''' R$ 5.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|2 ||   || Pedro ||  HIPER_TERESINHA || ''' R$ 3.500,00&lt;br /&gt;
|-&lt;br /&gt;
|3 ||  SEGUNDA-FEIRA  || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|4 || TERÇA-FEIRA || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|5 ||  SEGUNDA-FEIRA  || Joao|| HIPER_PAGUE_MENOS || ''' R$ 2.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|6 || || Joao||  SUPER_CARIOCA || ''' R$ 7.850,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Supondo que utilizando o usuário da  vendedora &amp;quot;Maria&amp;quot; para realização do cenários a seguir:'''&lt;br /&gt;
&lt;br /&gt;
'''Maria''' abre a página de Pesquisa de Pedidos&amp;lt;br&amp;gt;&lt;br /&gt;
'''E''' preenche o filtro de múltipla escolha de rota, selecionando (&amp;quot;SEGUNDA-FEIRA&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
'''o''' sistema retorna o seguintes pedidos:'''&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|3 ||  SEGUNDA-FEIRA  || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Maria''' modifica o filtro de rota, selecionando (&amp;quot;SEGUNDA-FEIRA&amp;quot; e &amp;quot;TERÇA-FEIRA&amp;quot;)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|3 ||  SEGUNDA-FEIRA  || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|4 || TERÇA-FEIRA || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Maria''' limpa o filtro de rota;&amp;lt;br&amp;gt;&lt;br /&gt;
'''E''' marca a opção de agrupamento por rota&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ROTA&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|'''SEGUNDA-FEIRA'''|| || || |&lt;br /&gt;
|-&lt;br /&gt;
|||3 || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|'''TERÇA-FEIRA'''|| || || |&lt;br /&gt;
|-&lt;br /&gt;
|||4 || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Supondo que utilizando o usuário da supervisor &amp;quot;Super_1&amp;quot; para realização do cenários a seguir:'''&lt;br /&gt;
&lt;br /&gt;
'''Super_1''' abre a página de Pesquisa de Pedidos&amp;lt;br&amp;gt;&lt;br /&gt;
'''E''' preenche o filtro de múltipla escolha de rota, selecionando (&amp;quot;SEGUNDA-FEIRA&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
'''o''' sistema retorna o seguintes pedidos:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|1 ||  SEGUNDA-FEIRA  || Pedro || PADARIA_JOAO_MARIA || ''' R$ 5.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|3 ||  SEGUNDA-FEIRA  || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|5 ||  SEGUNDA-FEIRA  || Joao|| HIPER_PAGUE_MENOS || ''' R$ 2.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Super_1''' modifica o filtro de rota, selecionando (&amp;quot;SEGUNDA-FEIRA&amp;quot; e &amp;quot;TERÇA-FEIRA&amp;quot;)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|1 ||  SEGUNDA-FEIRA  || Pedro || PADARIA_JOAO_MARIA || ''' R$ 5.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|3 ||  SEGUNDA-FEIRA  || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|4 || TERÇA-FEIRA || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Super_1''' marca a opção de agrupamento por rota&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ROTA&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|'''SEGUNDA-FEIRA'''|| || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
||| 1 || Pedro || PADARIA_JOAO_MARIA || ''' R$ 5.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|||3 || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|'''TERÇA-FEIRA'''|| || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|||4 || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Super_1''' limpa o filtro de rota, mas permaneceu com o agrupamento de rota selecionado;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ROTA&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|'''FORA DE ROTA'''|| || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| || 2  || Pedro ||  HIPER_TERESINHA || ''' R$ 3.500,00&lt;br /&gt;
|-&lt;br /&gt;
|'''SEGUNDA-FEIRA'''|| || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
||| 1 || Pedro || PADARIA_JOAO_MARIA || ''' R$ 5.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|||3 || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|'''TERÇA-FEIRA'''|| || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|||4 || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Super_1''' desmarca o agrupamento de rota;&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PEDIDO&lt;br /&gt;
! ROTA&lt;br /&gt;
! VENDEDOR&lt;br /&gt;
! CLIENTE&lt;br /&gt;
! VALOR&lt;br /&gt;
|-&lt;br /&gt;
|1 ||  SEGUNDA-FEIRA  || Pedro || PADARIA_JOAO_MARIA || ''' R$ 5.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|2 ||   || Pedro ||  HIPER_TERESINHA || ''' R$ 3.500,00&lt;br /&gt;
|-&lt;br /&gt;
|3 ||  SEGUNDA-FEIRA  || Maria || SUPER_CAPOTE || ''' R$ 6.000,00 '''&lt;br /&gt;
|-&lt;br /&gt;
|4 || TERÇA-FEIRA || Maria ||  SUPER_CARIOCA || ''' R$ 2.550,00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
'''RN1 -''' Para o filtro de rota o sistema deverá considerar apenas os pedidos feito durante a execução da rota, dentro da rota ou seja com o campo [CD_ROTA] da entidade [PEDIDO] preenchido.&lt;br /&gt;
&lt;br /&gt;
'''RN2 -''' No campo de filtro por rota, poderá selecionar mais de uma opção de rota.&lt;br /&gt;
&lt;br /&gt;
'''RN3 -''' Para o agrupamento de rota o sistema deverá considerar apenas os pedidos feito durante a execução da rota, dentro da rota ou seja com o campo [CD_ROTA] da entidade [PEDIDO] preenchido.&lt;br /&gt;
&lt;br /&gt;
'''RN4 -''' No Tipo Agrupamento, será possível selecionar um tipo de agrupamento por vez.&lt;br /&gt;
&lt;br /&gt;
'''RN5 - ''' A informação dos filtros de rota deve ser aplicada em todos os relatórios derivados da '''Pesquisa de Pedidos'''.&lt;br /&gt;
&lt;br /&gt;
'''RN6 - ''' Adicionar na tela '''Pesquisa de Pedido''' a informação de 'ROTA', a qual o pedido foi emitido, na listagem de pedidos. Esta informação poderá ser ocultada pelo usuário em momento de consulta.&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
|Líder Técnico - GeoSales || Anderson Gomes || 29/04/2021 &lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! style=&amp;quot;width:200px&amp;quot; |Aprovado Por&lt;br /&gt;
! style=&amp;quot;width:200px&amp;quot; |Data&lt;br /&gt;
&lt;br /&gt;
|-  &lt;br /&gt;
| TI - Pão da Hora||  || &lt;br /&gt;
|- &lt;br /&gt;
| Gestor do Projeto - Pão da Hora||  || &lt;br /&gt;
|- &lt;br /&gt;
| Diretoria - Pão da Hora||  || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15333</id>
		<title>Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15333"/>
		<updated>2021-04-20T21:00:02Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações==&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem&lt;br /&gt;
! Comentários&lt;br /&gt;
|-&lt;br /&gt;
| 13/04/2021 ||João Ramon || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após a elaboração de um pedido, o vendedor enviará para efetivação. Se não houver pendências, ele será enviado diretamente para integração. Caso contrário, será encaminhado a um gestor para aprovação. A partir daí, será feito o envio à ERP. Nas duas situações, há a possibilidade deste pedido não ser integrado, por conta de alguma falha e, neste caso, não poderá ser mais editado, por já estar efetivado e aprovado. Dessa forma, o pedido não pode ser editado, nem cancelado, apenas existindo. Faz-se necessário, portanto, criar um meio para que este pedido possa ser novamente disponibilizado para edições pelos usuários.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Ao finalizar o processo de inserção de pedidos, pelo vendedor, caso não haja nenhuma pendência de negócio (exemplos: tipo de frete não especificado, valor final do pedido ou de um determinado grupo está fora da política comercial de descontos, valor apresentado ao cliente era de uma campanha cuja vigência já encerrou, dentre outros), o pedido 'subirá' para integração na ERP. Caso haja pendências, será necessária aprovação de um gestor responsável. Após a aprovação, então seguirá para integração. O problema é que, após aprovar tal pedido, por algum motivo, ele não consegue 'subir' para o ERP, a fim de integrar a venda. Nesta situação, é impossível fazer qualquer edição ou exclusão do pedido, depois que já foi aprovado. Na situação atual, o pedido fica vagando por um limbo de dados existencial, no qual não pode ser configurado, nem pode subir para integração. Por essa razão, faz-se necessária uma ação que permita que, em situações como essa, haja a possibilidade de cancelar ou editar o '''pedido 'perdido''''.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solução ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para atender à demanda solicitada, após o pedido ser finalizado no portal, ele vai para integração. Se o pedido não conseguir ser integrado,  deverá ser possível que este pedido seja novamente tornado '''pendente'''. O processo deverá ser realizado por meio de um gatilho (trigger), sendo acionado logo após o registro da falha. Após este disparo, o pedido será disponibilizado para o '''gestor''' com o status de pendente, possibilitando que ele possa reenviar para aprovação, cancelar o pedido ou reenviar ao vendedor para eventuais ajustes. No processo, ainda deve existir um recurso que, quando o pedido for retornado ao portal, o '''vendedor''' deva ser informado que o pedido não foi integrado, e que necessita de intervenção.&lt;br /&gt;
&lt;br /&gt;
Ressaltamos ainda, que, no momento do retorno do pedido ao portal, possa existir a possibilidade, ainda que remota, de o pedido ser integrado na tentativa seguinte.&lt;br /&gt;
&lt;br /&gt;
Em resumo, a solução consiste nos seguintes passos:&lt;br /&gt;
# Criação de uma pendência relacionada à Falha de Integração na tabela relacionada;&lt;br /&gt;
# Criação de um trigger que faça o pedido retornar ao status de pendente;&lt;br /&gt;
# Criação de dispositivo de comunicação ao usuário, informando que o pedido não foi integrado, e aguarda configurações, inserindo este passo na tramitação do pedido '''ao vendedor''';&lt;br /&gt;
# Após as modificações do usuário, o pedido será novamente submetido à integração '''para o gestor'''. Se integrar, o pedido estará encerrado; caso contrário, deverá retornar ao ponto 1 para novo procedimento.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Todos os pedidos realizados na plataforma que integram com o modelo TJ tem o resultado do processo de integração registrados na tabela ACK_LOG_TABLE. Para as pendências de pedido, elas são vinculadas na tabela TIPO_BLOC_PEDIDO_REL. As pendência inseridas são descritas na tabela TIPO_BLOC_PEDIDO_SIT.&lt;br /&gt;
* É necessária criar uma pendência dentro da tabela TIPO_BLOC_PEDIDO_SIT, contemplando a situação deste cenário (Falha de Integração);&lt;br /&gt;
* Após a conclusão das tramitações normais do pedido (efetivação e aprovação), ele estará disponível para integração. &lt;br /&gt;
* Se a integração não ocorrer, deverá ser acionado um gatilho para que este pedido fique com status de pendente, utilizando a situação de bloqueio criada na tabela TIPO_BLOC_PEDIDO_SIT.  &lt;br /&gt;
* Além disso, deverá haver um retorno (feedback) para o usuário, informando que o seu pedido não foi integrado, e está novamente disponível no portal para revisão. &lt;br /&gt;
* O pedido deverá estar disponível para edição e para cancelamento, caso seja a demanda do usuário.&lt;br /&gt;
* Feita as devidas alterações, o pedido estará habilitado para que seja possível:&lt;br /&gt;
# Re-aprovação do pedido para nova tentativa;&lt;br /&gt;
# Cancelamento do pedido, caso o usuário escolha pelo cancelamento;&lt;br /&gt;
# Tramitação do pedido, para reenvio ao vendedor.&lt;br /&gt;
&lt;br /&gt;
== Cenários ==&lt;br /&gt;
&lt;br /&gt;
=== Criação de Pendência na Tabela TIPO_BLOC_PEDIDO_SIT ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;DS_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_PEDENCIA&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| XX || Falha de integração || NULL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cenário 1 - Pedido retornado para cancelamento ===&lt;br /&gt;
&lt;br /&gt;
[[arquivo:fluxovollo1.png|frame|Fluxo de processos de gatilho de retorno]]&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A inserção de uma falha na tabela de aceite disparará um evento que inserirá a pendência de falha de importação de pedido, tornando o pedido pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' procede com o cancelamento do pedido, excluindo o pedido de forma permanente.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 2 - Pedido retornado para reenvio ===&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A inserção de uma falha na tabela de aceite disparará um evento que inserirá a pendência de falha de importação de pedido, tornando o pedido pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz uma nova aprovação no pedido, enviando-o novamente para integração.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 3 - Pedido retornado e devolvido ao vendedor ===&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A inserção de uma falha na tabela de aceite disparará um evento que inserirá a pendência de falha de importação de pedido, tornando o pedido pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz seleciona a função &amp;quot;tramitação do pedido&amp;quot;, devolvendo o assunto ao '''vendedor''' para eventuais modificações.&lt;br /&gt;
# Feitas as modificações, o pedido será novamente inserido no fluxo de aprovações para integração.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócio ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] -''' Quando houver uma inserção de falha de importação para um pedido, a ação de inserir a pendência será executada caso a base tenha configurado esse comportamento.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] -''' A inserção da pendência será feita após a marcação da falha na integração. A descrição da pendência deve deixar claro que houve falha de importação.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] -''' Após a ação ser acionada, deve ser disparado um mecanismo de feedback para o usuário (ex. disparo de e-mail, informando que o pedido está pendente por falha de integração caso seja configurado esse comportamento).&lt;br /&gt;
&lt;br /&gt;
'''[RN4] -''' Pode ocorrer, ainda que muito remotamente, o risco do pedido ser integrado '''no momento entre o processo de inserção de pendência'''. No caso de ocorrência deste processo, o pedido ficará pendente, mesmo sendo integrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN5] -''' Deve ser configurável a ativação desse processo de tratativa de falha de importação. Também deve ser possível habilitar ou desabilitar o informativo ao usuário sobre a situação em que o pedido se encontra.&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Anderson Gomes || 20/04/2021&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15324</id>
		<title>Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15324"/>
		<updated>2021-04-20T19:40:57Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações==&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem&lt;br /&gt;
! Comentários&lt;br /&gt;
|-&lt;br /&gt;
| 13/04/2021 ||João Ramon || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após a elaboração de um pedido, o vendedor enviará para efetivação. Se não houver pendências, ele será enviado diretamente para integração. Caso contrário, será encaminhado a um gestor para aprovação. A partir daí, será feito o envio à ERP. Nas duas situações, há a possibilidade deste pedido não ser integrado, por conta de alguma falha e, neste caso, não poderá ser mais editado, por já estar efetivado e aprovado. Dessa forma, o pedido não pode ser editado, nem cancelado, apenas existindo. Faz-se necessário, portanto, criar um meio para que este pedido possa ser novamente disponibilizado para edições pelos usuários.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Ao finalizar o processo de inserção de pedidos, pelo vendedor, caso não haja nenhuma pendência de negócio (exemplos: tipo de frete não especificado, valor final do pedido ou de um determinado grupo está fora da política comercial de descontos, valor apresentado ao cliente era de uma campanha cuja vigência já encerrou, dentre outros), o pedido 'subirá' para integração na ERP. Caso haja pendências, será necessária aprovação de um gestor responsável. Após a aprovação, então seguirá para integração. O problema é que, após aprovar tal pedido, por algum motivo, ele não consegue 'subir' para o ERP, a fim de integrar a venda. Nesta situação, é impossível fazer qualquer edição ou exclusão do pedido, depois que já foi aprovado. Na situação atual, o pedido fica vagando por um limbo de dados existencial, no qual não pode ser configurado, nem pode subir para integração. Por essa razão, faz-se necessária uma ação que permita que, em situações como essa, haja a possibilidade de cancelar ou editar o '''pedido 'perdido''''.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solução ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para atender à demanda solicitada, após o pedido ser finalizado no portal, ele vai para integração. Se o pedido não conseguir ser integrado,  deverá ser possível que este pedido seja novamente tornado '''pendente'''. O processo deverá ser realizado por meio de um gatilho (trigger), sendo acionado logo após o registro da falha. Após este disparo, o pedido será disponibilizado para o '''gestor''' com o status de pendente, possibilitando que ele possa reenviar para aprovação, cancelar o pedido ou reenviar ao vendedor para eventuais ajustes. No processo, ainda deve existir um recurso que, quando o pedido for retornado ao portal, o '''vendedor''' deva ser informado que o pedido não foi integrado, e que necessita de intervenção.&lt;br /&gt;
&lt;br /&gt;
Ressaltamos ainda, que, no momento do retorno do pedido ao portal, possa existir a possibilidade, ainda que remota, de o pedido ser integrado na tentativa seguinte.&lt;br /&gt;
&lt;br /&gt;
Em resumo, a solução consiste nos seguintes passos:&lt;br /&gt;
# Criação de uma pendência relacionada à Falha de Integração na tabela relacionada;&lt;br /&gt;
# Criação de um trigger que faça o pedido retornar ao status de pendente;&lt;br /&gt;
# Criação de dispositivo de comunicação ao usuário, informando que o pedido não foi integrado, e aguarda configurações, inserindo este passo na tramitação do pedido '''ao vendedor''';&lt;br /&gt;
# Após as modificações do usuário, o pedido será novamente submetido à integração '''para o gestor'''. Se integrar, o pedido estará encerrado; caso contrário, deverá retornar ao ponto 1 para novo procedimento.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Todos os pedidos realizados na plataforma que integram com o modelo TJ tem o resultado do processo de integração registrados na tabela ACK_LOG_TABLE. Para as pendências de pedido, elas são vinculadas na tabela TIPO_BLOC_PEDIDO_REL. As pendência inseridas são descritas na tabela TIPO_BLOC_PEDIDO_SIT.&lt;br /&gt;
* É necessária criar uma pendência dentro da tabela TIPO_BLOC_PEDIDO_SIT, contemplando a situação deste cenário (Falha de Integração);&lt;br /&gt;
* Após a conclusão das tramitações normais do pedido (efetivação e aprovação), ele estará disponível para integração. &lt;br /&gt;
* Se a integração não ocorrer, deverá ser acionado um gatilho para que este pedido fique com status de pendente, utilizando a situação de bloqueio criada na tabela TIPO_BLOC_PEDIDO_SIT.  &lt;br /&gt;
* Além disso, deverá haver um retorno (feedback) para o usuário, informando que o seu pedido não foi integrado, e está novamente disponível no portal para revisão. &lt;br /&gt;
* O pedido deverá estar disponível para edição e para cancelamento, caso seja a demanda do usuário.&lt;br /&gt;
* Feita as devidas alterações, o pedido estará habilitado para que seja possível:&lt;br /&gt;
# Re-aprovação do pedido para nova tentativa;&lt;br /&gt;
# Cancelamento do pedido, caso o usuário escolha pelo cancelamento;&lt;br /&gt;
# Tramitação do pedido, para reenvio ao vendedor.&lt;br /&gt;
&lt;br /&gt;
== Cenários ==&lt;br /&gt;
&lt;br /&gt;
=== Criação de Pendência na Tabela TIPO_BLOC_PEDIDO_SIT ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;DS_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_PEDENCIA&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| XX || Falha de integração || NULL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cenário 1 - Pedido retornado para cancelamento ===&lt;br /&gt;
&lt;br /&gt;
[[arquivo:fluxograma1.png|frame|Fluxo de processos de gatilho de retorno]]&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A inserção de uma falha na tabela de aceite disparará um evento que inserirá a pendência de falha de importação de pedido, tornando o pedido pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' procede com o cancelamento do pedido, excluindo o pedido de forma permanente.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 2 - Pedido retornado para reenvio ===&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A inserção de uma falha na tabela de aceite disparará um evento que inserirá a pendência de falha de importação de pedido, tornando o pedido pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz uma nova aprovação no pedido, enviando-o novamente para integração.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 3 - Pedido retornado e devolvido ao vendedor ===&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A inserção de uma falha na tabela de aceite disparará um evento que inserirá a pendência de falha de importação de pedido, tornando o pedido pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz seleciona a função &amp;quot;tramitação do pedido&amp;quot;, devolvendo o assunto ao '''vendedor''' para eventuais modificações.&lt;br /&gt;
# Feitas as modificações, o pedido será novamente inserido no fluxo de aprovações para integração.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócio ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] -''' Quando houver uma inserção de falha de importação para um pedido, a ação de inserir a pendência será executada caso a base tenha configurado esse comportamento.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] -''' A inserção da pendência será feita após a marcação da falha na integração. A descrição da pendência deve deixar claro que houve falha de importação.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] -''' Após a ação ser acionada, deve ser disparado um mecanismo de feedback para o usuário (ex. disparo de e-mail, informando que o pedido está pendente por falha de integração caso seja configurado esse comportamento).&lt;br /&gt;
&lt;br /&gt;
'''[RN4] -''' Pode ocorrer, ainda que muito remotamente, o risco do pedido ser integrado '''no momento entre o processo de inserção de pendência'''. No caso de ocorrência deste processo, o pedido ficará pendente, mesmo sendo integrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN5] -''' Deve ser configurável a ativação desse processo de tratativa de falha de importação. Também deve ser possível habilitar ou desabilitar o informativo ao usuário sobre a situação em que o pedido se encontra.&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15323</id>
		<title>Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15323"/>
		<updated>2021-04-20T19:12:30Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações==&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem&lt;br /&gt;
! Comentários&lt;br /&gt;
|-&lt;br /&gt;
| 13/04/2021 ||João Ramon || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após a elaboração de um pedido, o vendedor enviará para efetivação. Se não houver pendências, ele será enviado diretamente para integração. Caso contrário, será encaminhado a um gestor para aprovação. A partir daí, será feito o envio à ERP. Nas duas situações, há a possibilidade deste pedido não ser integrado, por conta de alguma falha e, neste caso, não poderá ser mais editado, por já estar efetivado e aprovado. Dessa forma, o pedido não pode ser editado, nem cancelado, apenas existindo. Faz-se necessário, portanto, criar um meio para que este pedido possa ser novamente disponibilizado para edições pelos usuários.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Ao finalizar o processo de inserção de pedidos, pelo vendedor, caso não haja nenhuma pendência de negócio (exemplos: tipo de frete não especificado, valor final do pedido ou de um determinado grupo está fora da política comercial de descontos, valor apresentado ao cliente era de uma campanha cuja vigência já encerrou, dentre outros), o pedido 'subirá' para integração na ERP. Caso haja pendências, será necessária aprovação de um gestor responsável. Após a aprovação, então seguirá para integração. O problema é que, após aprovar tal pedido, por algum motivo, ele não consegue 'subir' para o ERP, a fim de integrar a venda. Nesta situação, é impossível fazer qualquer edição ou exclusão do pedido, depois que já foi aprovado. Na situação atual, o pedido fica vagando por um limbo de dados existencial, no qual não pode ser configurado, nem pode subir para integração. Por essa razão, faz-se necessária uma ação que permita que, em situações como essa, haja a possibilidade de cancelar ou editar o '''pedido 'perdido''''.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solução ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para atender à demanda solicitada, após o pedido ser finalizado no portal, ele vai para integração. Se o pedido não conseguir ser integrado,  deverá ser possível que este pedido seja novamente tornado '''pendente'''. O processo deverá ser realizado por meio de um gatilho (trigger), sendo acionado logo após o registro da falha. Após este disparo, o pedido será disponibilizado para o '''gestor''' com o status de pendente, possibilitando que ele possa reenviar para aprovação, cancelar o pedido ou reenviar ao vendedor para eventuais ajustes. No processo, ainda deve existir um recurso que, quando o pedido for retornado ao portal, o '''vendedor''' deva ser informado que o pedido não foi integrado, e que necessita de intervenção.&lt;br /&gt;
&lt;br /&gt;
Ressaltamos ainda, que, no momento do retorno do pedido ao portal, possa existir a possibilidade, ainda que remota, de o pedido ser integrado na tentativa seguinte.&lt;br /&gt;
&lt;br /&gt;
Em resumo, a solução consiste nos seguintes passos:&lt;br /&gt;
# Criação de uma pendência relacionada à Falha de Integração na tabela relacionada;&lt;br /&gt;
# Criação de um trigger que faça o pedido retornar ao status de pendente;&lt;br /&gt;
# Criação de dispositivo de comunicação ao usuário, informando que o pedido não foi integrado, e aguarda configurações, inserindo este passo na tramitação do pedido '''ao vendedor''';&lt;br /&gt;
# Após as modificações do usuário, o pedido será novamente submetido à integração '''para o gestor'''. Se integrar, o pedido estará encerrado; caso contrário, deverá retornar ao ponto 1 para novo procedimento.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Todos os pedidos realizados na plataforma que integram com o modelo TJ tem o resultado do processo de integração registrados na tabela ACK_LOG_TABLE. Para as pendências de pedido, elas são vinculadas na tabela TIPO_BLOC_PEDIDO_REL. As pendência inseridas são descritas na tabela TIPO_BLOC_PEDIDO_SIT.&lt;br /&gt;
* É necessária criar uma pendência dentro da tabela TIPO_BLOC_PEDIDO_SIT, contemplando a situação deste cenário (Falha de Integração);&lt;br /&gt;
* Após a conclusão das tramitações normais do pedido (efetivação e aprovação), ele estará disponível para integração. &lt;br /&gt;
* Se a integração não ocorrer, deverá ser acionado um gatilho para que este pedido fique com status de pendente, utilizando a situação de bloqueio criada na tabela TIPO_BLOC_PEDIDO_SIT.  &lt;br /&gt;
* Além disso, deverá haver um retorno (feedback) para o usuário, informando que o seu pedido não foi integrado, e está novamente disponível no portal para revisão. &lt;br /&gt;
* O pedido deverá estar disponível para edição e para cancelamento, caso seja a demanda do usuário.&lt;br /&gt;
* Feita as devidas alterações, o pedido estará habilitado para que seja possível:&lt;br /&gt;
# Re-aprovação do pedido para nova tentativa;&lt;br /&gt;
# Cancelamento do pedido, caso o usuário escolha pelo cancelamento;&lt;br /&gt;
# Tramitação do pedido, para reenvio ao vendedor.&lt;br /&gt;
&lt;br /&gt;
== Cenários ==&lt;br /&gt;
&lt;br /&gt;
=== Criação de Pendência na Tabela TIPO_BLOC_PEDIDO_SIT ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;DS_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_PEDENCIA&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| XX || Falha de integração || NULL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cenário 1 - Pedido retornado para cancelamento ===&lt;br /&gt;
&lt;br /&gt;
[[arquivo:fluxograma1.png|frame|Fluxo de processos de gatilho de retorno]]&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, tornando o pedido ao status de pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' procede com o cancelamento do pedido, excluindo o pedido de forma permanente.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 2 - Pedido retornado para reenvio ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, tornando o pedido ao status de pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz uma nova aprovação no pedido, enviando-o novamente para integração.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 3 - Pedido retornado e devolvido ao vendedor ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, tornando o pedido ao status de pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz seleciona a função &amp;quot;tramitação do pedido&amp;quot;, devolvendo o assunto ao '''vendedor''' para eventuais modificações.&lt;br /&gt;
# Feitas as modificações, o pedido será novamente inserido no fluxo de aprovações para integração.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócio ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] -''' Quando houver uma inserção de falha de importação para um pedido, a ação de inserir a pendência será executada caso a base tenha configurado esse comportamento.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] -''' A inserção da pendência será feita após a marcação da falha na integração. A descrição da pendência deve deixar claro que houve falha de importação.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] -''' Após a ação ser acionada, deve ser disparado um mecanismo de feedback para o usuário (ex. disparo de e-mail, informando que o pedido está pendente por falha de integração caso seja configurado esse comportamento).&lt;br /&gt;
&lt;br /&gt;
'''[RN4] -''' Pode ocorrer, ainda que muito remotamente, o risco do pedido ser integrado '''no momento entre o processo de inserção de pendência'''. No caso de ocorrência deste processo, o pedido ficará pendente, mesmo sendo integrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN5] -''' Deve ser configurável a ativação desse processo de tratativa de falha de importação. Também deve ser possível habilitar ou desabilitar o informativo ao usuário sobre a situação em que o pedido se encontra.&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15322</id>
		<title>Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Cancelamento_de_Pedidos&amp;diff=15322"/>
		<updated>2021-04-20T18:59:05Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações==&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem&lt;br /&gt;
! Comentários&lt;br /&gt;
|-&lt;br /&gt;
| 13/04/2021 ||João Ramon || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após a elaboração de um pedido, o vendedor enviará para efetivação. Se não houver pendências, ele será enviado diretamente para integração. Caso contrário, será encaminhado a um gestor para aprovação. A partir daí, será feito o envio à ERP. Nas duas situações, há a possibilidade deste pedido não ser integrado, por conta de alguma falha e, neste caso, não poderá ser mais editado, por já estar efetivado e aprovado. Dessa forma, o pedido não pode ser editado, nem cancelado, apenas existindo. Faz-se necessário, portanto, criar um meio para que este pedido possa ser novamente disponibilizado para edições pelos usuários.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Ao finalizar o processo de inserção de pedidos, pelo vendedor, caso não haja nenhuma pendência de negócio (exemplos: tipo de frete não especificado, valor final do pedido ou de um determinado grupo está fora da política comercial de descontos, valor apresentado ao cliente era de uma campanha cuja vigência já encerrou, dentre outros), o pedido 'subirá' para integração na ERP. Caso haja pendências, será necessária aprovação de um gestor responsável. Após a aprovação, então seguirá para integração. O problema é que, após aprovar tal pedido, por algum motivo, ele não consegue 'subir' para o ERP, a fim de integrar a venda. Nesta situação, é impossível fazer qualquer edição ou exclusão do pedido, depois que já foi aprovado. Na situação atual, o pedido fica vagando por um limbo de dados existencial, no qual não pode ser configurado, nem pode subir para integração. Por essa razão, faz-se necessária uma ação que permita que, em situações como essa, haja a possibilidade de cancelar ou editar o '''pedido 'perdido''''.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solução ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para atender à demanda solicitada, após o pedido ser finalizado no portal, ele vai para integração. Se o pedido não conseguir ser integrado,  deverá ser possível que este pedido seja novamente tornado '''pendente'''. O processo deverá ser realizado por meio de um gatilho (trigger), sendo acionado logo após o registro da falha. Após este disparo, o pedido será disponibilizado para o '''gestor''' com o status de pendente, possibilitando que ele possa reenviar para aprovação, cancelar o pedido ou reenviar ao vendedor para eventuais ajustes. No processo, ainda deve existir um recurso que, quando o pedido for retornado ao portal, o '''vendedor''' deva ser informado que o pedido não foi integrado, e que necessita de intervenção.&lt;br /&gt;
&lt;br /&gt;
Ressaltamos ainda, que, no momento do retorno do pedido ao portal, possa existir a possibilidade, ainda que remota, de o pedido ser integrado na tentativa seguinte.&lt;br /&gt;
&lt;br /&gt;
Em resumo, a solução consiste nos seguintes passos:&lt;br /&gt;
# Criação de uma pendência relacionada à Falha de Integração na tabela relacionada;&lt;br /&gt;
# Criação de um trigger que faça o pedido retornar ao status de pendente;&lt;br /&gt;
# Criação de dispositivo de comunicação ao usuário, informando que o pedido não foi integrado, e aguarda configurações, inserindo este passo na tramitação do pedido '''ao vendedor''';&lt;br /&gt;
# Após as modificações do usuário, o pedido será novamente submetido à integração '''para o gestor'''. Se integrar, o pedido estará encerrado; caso contrário, deverá retornar ao ponto 1 para novo procedimento.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Todos os pedidos realizados na plataforma são registrados na tabela ACK_LOG_TABLE. Nesta tabela, todas as especificações de pendências são mostradas em vinculação com as chaves de pedidos. A tabela de registro dos bloqueios existentes é a TIPO_BLOC_PEDIDO_SIT.&lt;br /&gt;
* É necessária criar uma pendência dentro da tabela TIPO_BLOC_PEDIDO_SIT, contemplando a situação deste cenário (Falha de Integração);&lt;br /&gt;
* Após a conclusão das tramitações normais do pedido (efetivação e aprovação), ele estará disponível para integração. &lt;br /&gt;
* Se a integração não ocorrer, deverá ser acionado um gatilho de retorno (trigger) para que este pedido fique com status de pendente, utilizando o bloqueio de situação criado na tabela TIPO_BLOC_PEDIDO_SIT.  &lt;br /&gt;
* Além disso, deverá haver um retorno (feedback) para o usuário, informando que o seu pedido não foi integrado, e está novamente disponível no portal para revisão. &lt;br /&gt;
* O pedido deverá estar disponível para edição e para cancelamento, caso seja a demanda do usuário.&lt;br /&gt;
* Feita as devidas alterações, as seguintes soluções deverão ser implementadas:&lt;br /&gt;
# Re-aprovação do pedido para nova tentativa;&lt;br /&gt;
# Exclusão do pedido, caso o usuário escolha pelo cancelamento;&lt;br /&gt;
# Tramitação do pedido, para reenvio ao vendedor.&lt;br /&gt;
&lt;br /&gt;
== Cenários ==&lt;br /&gt;
&lt;br /&gt;
=== Criação de Pendência na Tabela TIPO_BLOC_PEDIDO_SIT ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;DS_TIPO_BLOC&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;CD_TIPO_PEDENCIA&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| XX || Falha de integração || NULL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cenário 1 - Pedido retornado para cancelamento ===&lt;br /&gt;
&lt;br /&gt;
[[arquivo:fluxograma1.png|frame|Fluxo de processos de gatilho de retorno]]&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, tornando o pedido ao status de pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' procede com o cancelamento do pedido, excluindo o pedido de forma permanente.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 2 - Pedido retornado para reenvio ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, tornando o pedido ao status de pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz uma nova aprovação no pedido, enviando-o novamente para integração.&lt;br /&gt;
&lt;br /&gt;
=== Cenário 3 - Pedido retornado e devolvido ao vendedor ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# O pedido, após aprovado, será submetido para integração. &lt;br /&gt;
# O processo de integração apresentou uma falha de integração, registrando na tabela ACK_LOG_TABLE.&lt;br /&gt;
# A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, tornando o pedido ao status de pendente.&lt;br /&gt;
# Será disparado uma notificação de pendência para o '''vendedor''';&lt;br /&gt;
# O pedido voltará com o status de pendente, retornando ao '''gestor'''. &lt;br /&gt;
# O '''gestor''' faz seleciona a função &amp;quot;tramitação do pedido&amp;quot;, devolvendo o assunto ao '''vendedor''' para eventuais modificações.&lt;br /&gt;
# Feitas as modificações, o pedido será novamente inserido no fluxo de aprovações para integração.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócio ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] -''' Quando houver uma inserção de falha de importação para um pedido, a ação de inserir a pendência será executada caso a base tenha configurado esse comportamento.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] -''' A inserção da pendência será feita após a marcação da falha na integração. A descrição da pendência deve deixar claro que houve falha de importação.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] -''' Após a ação ser acionada, deve ser disparado um mecanismo de feedback para o usuário (ex. disparo de e-mail, informando que o pedido está pendente por falha de integração caso seja configurado esse comportamento).&lt;br /&gt;
&lt;br /&gt;
'''[RN4] -''' Pode ocorrer, ainda que muito remotamente, o risco do pedido ser integrado '''no momento entre o processo de inserção de pendência'''. No caso de ocorrência deste processo, o pedido ficará pendente, mesmo sendo integrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN5] -''' Deve ser configurável a ativação desse processo de tratativa de falha de importação. Também deve ser possível habilitar ou desabilitar o informativo ao usuário sobre a situação em que o pedido se encontra.&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || ___________________ || ___/___/_____ || ________________________&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15301</id>
		<title>Discussão:Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15301"/>
		<updated>2021-04-19T20:44:33Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Observações ===&lt;br /&gt;
&lt;br /&gt;
* O documento não se destina a cancelamento de pedidos, mas sim adição de um ciclo para tratar pedidos no limbo em falha de importação.&lt;br /&gt;
* Eu deixaria a necessidade condizente com esse ponto, em vez de &amp;quot;haja a possibilidade de cancelar ou editar o pedido 'perdido'.&amp;quot; por permitir que o usuário tenha acesso a esses pedidos no limbo.&lt;br /&gt;
&lt;br /&gt;
* Sobre essa fala: &lt;br /&gt;
&amp;quot;Para atender à demanda solicitada, após o pedido ser finalizado no portal, ele vai para integração. Se o pedido não conseguir ser integrado, deverá ser possível que este pedido retorne para a edição no portal, sob o status de pendente.&amp;quot;&lt;br /&gt;
Acredito que ele não fique imediatamente editável, somente se o supervisor retornar o pedido o mesmo ficará editável. No decorrer do texto isso é afirmado de diversas formas, mas esse não é o fluxo que acontecerá.&lt;br /&gt;
&lt;br /&gt;
* Nesse ponto:&lt;br /&gt;
&amp;quot;Criação de dispositivo de comunicação ao usuário, informando que o pedido não foi integrado, e aguarda configurações, inserindo este passo na tramitação do pedido;&amp;quot;&lt;br /&gt;
Caso o cliente não utilize tramitação isso será inefetivo. Que outras soluções podemos aplicar? Esse feedback é obrigatório?&lt;br /&gt;
&lt;br /&gt;
* Sobre esse ponto:&lt;br /&gt;
&amp;quot;O pedido deverá estar disponível para edição e para cancelamento, caso seja a demanda do usuário.&amp;quot; Ressaliento minha preocupação do fluxo final ser diferente desse ou ter um passo antes disso que não está claro. Que é a interferência do supervisor que pode cancelar ou retornar o pedido para edição.&lt;br /&gt;
&lt;br /&gt;
* O cenário 1 apresenta algumas afirmações que não estão claras tipo:&lt;br /&gt;
&amp;quot;A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, retornando o pedido para o portal.&amp;quot; (Aqui temos a questão da tramitação, e o retorno do pedido para o portal, o que é esse retorno?)&lt;br /&gt;
&amp;quot;Será disparado uma notificação de pendência para o gestor;&amp;quot; (O que é essa notificação?)&lt;br /&gt;
Aqui temos um erro textual em uma quebra de linha desnecessária e algumas vezes é citado volta/retornar. &lt;br /&gt;
&amp;quot;O pedido voltará com o status de pendente, retornando ao gestor.&amp;quot; &amp;amp;&lt;br /&gt;
&amp;quot;O gestor poderá reenviar o pedido numa nova aprovação, ou&lt;br /&gt;
cancelar o pedido, ou&lt;br /&gt;
Enviar para tramitação, devolvendo o pedido ao vendedor.&amp;quot; O que é enviar para tramitação e devolver o pedido ao vendedor, citar exemplos.&lt;br /&gt;
&lt;br /&gt;
* O cenário 2 segue a risca os mesmos problemas e basicamente é a mesma coisa do cenário 1.&lt;br /&gt;
&lt;br /&gt;
Novamente, os cenários voltar a ser descritivos e apresentam possibilidades em vez de eventos. Cenários não dever ser assim. Cenários devem ter dados &amp;amp; ações como foi feito nos documentos da mantiqueira.&lt;br /&gt;
&lt;br /&gt;
* A RN1 não está correta. A trigger ficará na tabela de ACK e ela gerará uma pendência na tipo_bloc_pedido_rel. A trigger não é para retorno, ela vai inserir uma pendência. O retorno é um fluxo, mas não define o que vai acontecer. Tentar ser mais específico. Ex. A trigger deixará o pedido pendente para que possa ser analisado pelo supervisor responsável que tenha permissão de visualização da pendência.&lt;br /&gt;
&lt;br /&gt;
* A RN2 tá meio confusa na argumentação.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15300</id>
		<title>Discussão:Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15300"/>
		<updated>2021-04-19T20:42:28Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Observações ===&lt;br /&gt;
&lt;br /&gt;
* O documento não se destina a cancelamento de pedidos, mas sim adição de um ciclo para tratar pedidos no limbo em falha de importação.&lt;br /&gt;
* Eu deixaria a necessidade condizente com esse ponto, em vez de &amp;quot;haja a possibilidade de cancelar ou editar o pedido 'perdido'.&amp;quot; por permitir que o usuário tenha acesso a esses pedidos no limbo.&lt;br /&gt;
&lt;br /&gt;
* Sobre essa fala: &lt;br /&gt;
&amp;quot;Para atender à demanda solicitada, após o pedido ser finalizado no portal, ele vai para integração. Se o pedido não conseguir ser integrado, deverá ser possível que este pedido retorne para a edição no portal, sob o status de pendente.&amp;quot;&lt;br /&gt;
Acredito que ele não fique imediatamente editável, somente se o supervisor retornar o pedido o mesmo ficará editável. No decorrer do texto isso é afirmado de diversas formas, mas esse não é o fluxo que acontecerá.&lt;br /&gt;
&lt;br /&gt;
* Nesse ponto:&lt;br /&gt;
&amp;quot;Criação de dispositivo de comunicação ao usuário, informando que o pedido não foi integrado, e aguarda configurações, inserindo este passo na tramitação do pedido;&amp;quot;&lt;br /&gt;
Caso o cliente não utilize tramitação isso será inefetivo. Que outras soluções podemos aplicar? Esse feedback é obrigatório?&lt;br /&gt;
&lt;br /&gt;
* Sobre esse ponto:&lt;br /&gt;
&amp;quot;O pedido deverá estar disponível para edição e para cancelamento, caso seja a demanda do usuário.&amp;quot; Ressaliento minha preocupação do fluxo final ser diferente desse ou ter um passo antes disso que não está claro. Que é a interferência do supervisor que pode cancelar ou retornar o pedido para edição.&lt;br /&gt;
&lt;br /&gt;
* O cenário 1 apresenta algumas afirmações que não estão claras tipo:&lt;br /&gt;
&amp;quot;A falha criará a pendencia falha de integração, disparando o trigger que abrirá uma tramitação de pendência, retornando o pedido para o portal.&amp;quot; (Aqui temos a questão da tramitação, e o retorno do pedido para o portal, o que é esse retorno?)&lt;br /&gt;
&amp;quot;Será disparado uma notificação de pendência para o gestor;&amp;quot; (O que é essa notificação?)&lt;br /&gt;
Aqui temos um erro textual em uma quebra de linha desnecessária e algumas vezes é citado volta/retornar. &lt;br /&gt;
&amp;quot;O pedido voltará com o status de pendente, retornando ao gestor.&amp;quot; &amp;amp;&lt;br /&gt;
&amp;quot;O gestor poderá reenviar o pedido numa nova aprovação, ou&lt;br /&gt;
cancelar o pedido, ou&lt;br /&gt;
Enviar para tramitação, devolvendo o pedido ao vendedor.&amp;quot; O que é enviar para tramitação e devolver o pedido ao vendedor, citar exemplos.&lt;br /&gt;
&lt;br /&gt;
* O cenário 2 segue a risca os mesmos problemas e basicamente é a mesma coisa do cenário 1.&lt;br /&gt;
&lt;br /&gt;
Novamente, os cenários voltar a ser descritivos e apresentam possibilidades em vez de eventos. Cenários não dever ser assim. Cenários devem ter dados &amp;amp; ações como foi feito nos documentos da mantiqueira.&lt;br /&gt;
&lt;br /&gt;
* A RN1 não está correta. A trigger ficará na tabela de ACK e ela gerará uma pendência na tipo_bloc_pedido_rel. A trigger não é para retorno, ela vai inserir uma pendência. O retorno é um fluxo, mas não define o que vai acontecer. Tentar ser mais específico. Ex. A trigger deixará o pedido pendente para que possa ser analisado pelo supervisor responsável que tenha permissão de visualização da pendência.&lt;br /&gt;
&lt;br /&gt;
* A RN2&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15299</id>
		<title>Discussão:Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15299"/>
		<updated>2021-04-19T20:10:03Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Observações ===&lt;br /&gt;
&lt;br /&gt;
* O documento não se destina a cancelamento de pedidos, mas sim adição de um ciclo para tratar pedidos no limbo em falha de importação.&lt;br /&gt;
* Eu deixaria a necessidade condizente com esse ponto, em vez de &amp;quot;haja a possibilidade de cancelar ou editar o pedido 'perdido'.&amp;quot; por permitir que o usuário tenha acesso a esses pedidos no limbo.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15298</id>
		<title>Discussão:Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15298"/>
		<updated>2021-04-19T20:06:17Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Observações ===&lt;br /&gt;
&lt;br /&gt;
* O documento não se destina a cancelamento de pedidos, mas sim adição de um ciclo para tratar pedidos no limbo em falha de importação.&lt;br /&gt;
* Eu deixaria a necessidade condizente com esse ponto.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15297</id>
		<title>Discussão:Cancelamento de Pedidos</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Discuss%C3%A3o:Cancelamento_de_Pedidos&amp;diff=15297"/>
		<updated>2021-04-19T20:03:10Z</updated>

		<summary type="html">&lt;p&gt;Anderson: Criou página com '=== Observações ===  * O documento não se destina a cancelamento de pedidos, mas sim adição de um ciclo para tratar pedidos no limbo em falha de importação.'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Observações ===&lt;br /&gt;
&lt;br /&gt;
* O documento não se destina a cancelamento de pedidos, mas sim adição de um ciclo para tratar pedidos no limbo em falha de importação.&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Scritps_%C3%9Ateis&amp;diff=15256</id>
		<title>Scritps Úteis</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Scritps_%C3%9Ateis&amp;diff=15256"/>
		<updated>2021-04-16T19:32:22Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:*Comando pra saber se uma porta está em uso no windows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netstat -ano | find &amp;quot;:Required port number&lt;br /&gt;
netstat -ano | find &amp;quot;25&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*Cadastro de empresa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
exec sp_cadastra_empresa 'softsite2numobile', '25', 0, 3&lt;br /&gt;
exec CADASTRAR_BASE 'softsite2numobile', 'ANDERSON GOMES', 100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*Saber quais os processos estão bloqueado outros e não estão sendo bloqueados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where spid in (&lt;br /&gt;
     select blocked&lt;br /&gt;
      from sys.sysprocesses&lt;br /&gt;
     where blocked &amp;gt; 0)&lt;br /&gt;
      and blocked = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Detalhar um processo &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXEC sp_who2 252&lt;br /&gt;
&lt;br /&gt;
DBCC inputbuffer(252)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Detalhar qual processo está rodando a partir de uma execução inicial&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @Handle varbinary(64);&lt;br /&gt;
SELECT @Handle = sql_handle FROM sys.dm_exec_requests WHERE session_id = 13933 and request_id = 0;&lt;br /&gt;
SELECT * FROM ::fn_get_sql(@Handle);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Ver a query que está sendo executada por um processo (Parâmetro spid)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC INPUTBUFFER(6001)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[Scrips Tabelas Web Service NOVO|Scrips Tabelas Web Service NOVO]]&lt;br /&gt;
&lt;br /&gt;
:*Saber quais as bases estão vencidas que procedure vai apagar&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
USE bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT s.name, ub.DATA_EXPIRACAO FROM sys.sysdatabases s&lt;br /&gt;
LEFT JOIN USUARIO_BASE ub ON s.name = ub.nm_base&lt;br /&gt;
WHERE &lt;br /&gt;
	s.name LIKE 'bd_ssm_%'&lt;br /&gt;
	AND s.name NOT LIKE 'bd_ssm_adm'&lt;br /&gt;
	AND (ub.nm_base IS NULL OR ub.DATA_EXPIRACAO &amp;lt; GETDATE())&lt;br /&gt;
ORDER BY crdate ASC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Listar dados de todas as bases dinamicamente numa consulta só usando union all&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..INTERFACEERPCONFIGURACAOPARAMETRO UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%expressa%'&lt;br /&gt;
	and name not like '%makitahomolog%' &lt;br /&gt;
	and name not like '%prodentho_2%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' , COUNT(*) from '+name+'..CLIENTE_COORD_LOG WHERE CAST(DT_LOG AS DATE) &amp;gt;= ''2019-11-19'' AND CAST(DT_LOG AS DATE) &amp;lt;= ''2019-11-19'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar usuarios de uma empresa x &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from bd_ssm_login..usuario_empresa ue&lt;br /&gt;
	inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%colchobel%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar os dados de login de um usuario no evo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select u.login as LOGIN, u.SENHA AS SENHA, &lt;br /&gt;
 CASE ue.PAPEL&lt;br /&gt;
	WHEN -1 THEN 'NENHUM'&lt;br /&gt;
	WHEN 0 THEN 'SUPORTE'&lt;br /&gt;
	WHEN 1 THEN 'GESTOR'&lt;br /&gt;
	WHEN 2 THEN 'VENDEDOR'&lt;br /&gt;
	WHEN 3 THEN	'CLIENTE'&lt;br /&gt;
	WHEN 4 THEN 'BACKOFFICE'&lt;br /&gt;
	WHEN 5 THEN 'INTEGRADOR'&lt;br /&gt;
	END AS PAPEL,&lt;br /&gt;
	dv.CD_VENDEDOR AS CD_VENDEDOR,&lt;br /&gt;
	s.CD_SUPERVISOR AS CD_SUPERVISOR&lt;br /&gt;
FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO&lt;br /&gt;
left join tusuario tu on tu.CD_USUARIO = ue.CD_TUSUARIO&lt;br /&gt;
left join dados_vendedor dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO&lt;br /&gt;
left join supervisor s on s.CD_USUARIO = tu.CD_USUARIO&lt;br /&gt;
 WHERE nm_empresa = 'biodinamicanumobile'&lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
select u.*, ue.* FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO&lt;br /&gt;
 WHERE nm_empresa = 'biodinamicanumobile'&lt;br /&gt;
GO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Checar qual versão determinado vendedor tá usando&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select cd_usuario,&lt;br /&gt;
       substring(ds_log, CHARINDEX('@', ds_log) + 1, charindex(':', ds_log, CHARINDEX('@', ds_log) + 1) - CHARINDEX('@', ds_log) - 1)&lt;br /&gt;
from LOG_SINCRONISMO with(nolock) &lt;br /&gt;
order by 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @comandoSQL VARCHAR(8000)&lt;br /&gt;
SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071)))&lt;br /&gt;
select @comandoSQL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer quando existem mais de um script sendo executado&lt;br /&gt;
em background para o spid passado&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @comandoSQL VARCHAR(8000)&lt;br /&gt;
DECLARE @tableComandoSQL TABLE (comando VARCHAR(8000))&lt;br /&gt;
--SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
--FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071)))&lt;br /&gt;
--select @comandoSQL&lt;br /&gt;
INSERT INTO @tableComandoSQL SELECT CAST([TEXT] AS VARCHAR(8000))&lt;br /&gt;
FROM ::fn_get_sql((SELECT top 1 [sql_handle] FROM sys.sysprocesses where spid = 1071))&lt;br /&gt;
SELECT * FROM @tableComandoSQL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Ver o tamanho das tabelas&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    OBJECT_NAME(object_id) As Tabela, Rows As Linhas,&lt;br /&gt;
    SUM(Total_Pages * 8) As Reservado,&lt;br /&gt;
    SUM(CASE WHEN Index_ID &amp;gt; 1 THEN 0 ELSE Data_Pages * 8 END) As Dados,&lt;br /&gt;
        SUM(Used_Pages * 8) -&lt;br /&gt;
        SUM(CASE WHEN Index_ID &amp;gt; 1 THEN 0 ELSE Data_Pages * 8 END) As Indice,&lt;br /&gt;
    SUM((Total_Pages - Used_Pages) * 8) As NaoUtilizado&lt;br /&gt;
FROM&lt;br /&gt;
    sys.partitions As P&lt;br /&gt;
    INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id&lt;br /&gt;
GROUP BY OBJECT_NAME(object_id), Rows&lt;br /&gt;
ORDER BY DADOS DESC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Listar agendamentos de importações de todas as empresas num único script (Caso você queira adicionar mais empresas só seguir o modelo)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'bd_ssm_DCA', * from bd_ssm_DCA..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_CAMIL', * from bd_ssm_CAMIL..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_BEVILAQUA', * from bd_ssm_BEVILAQUA..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_GUARAVES', * from bd_ssm_GUARAVES..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
union all&lt;br /&gt;
select 'bd_ssm_PAULUS', * from bd_ssm_PAULUS..CONFIGURACAO_GERA_REGISTRO_AUTO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ver todas as bases que utilizam a geração de registro automático&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp_update_databases &lt;br /&gt;
'&lt;br /&gt;
insert into ##tabela&lt;br /&gt;
select db_name(),* from CONFIGURACAO_GERA_REGISTRO_AUTO', 'org_venda_cliente'&lt;br /&gt;
&amp;lt;/pre&lt;br /&gt;
&lt;br /&gt;
*Update com select e join:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE PEDIDO SET PEDIDO.NM_CLIENTE = (C.NM_CLIENTE)&lt;br /&gt;
from PEDIDO&lt;br /&gt;
inner join CLIENTE C on &lt;br /&gt;
PEDIDO.CD_CLIENTE = C.CD_CLIENTE&lt;br /&gt;
WHERE PEDIDO.DT_EMISSAO &amp;gt;= '2016-10-01' AND PEDIDO.NM_CLIENTE IS NULL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Atualizar Nome da Tabela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXEC sp_rename 'ITEM_PEDIDO_REMESSA_FUTURA', 'ITEM_PED_REMESSA_FUTURA';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover Foreign Keys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from sys.sysobjects where name = 'FK__LISTA_PRO__CD_SE__361203C5'&lt;br /&gt;
SELECT * FROM sys.sysobjects where ID = 907150277&lt;br /&gt;
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE ITEM_PEDIDO_EXCLUIDO DROP CONSTRAINT FK_SAV_ITEM__PEDIDO_PEDIDO_DEL; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover Foreign Keys Dinamicamente&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT DISTINCT 'ALTER TABLE ' + KCU1.TABLE_NAME + ' DROP CONSTRAINT ' + KCU1.CONSTRAINT_NAME&lt;br /&gt;
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1&lt;br /&gt;
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2&lt;br /&gt;
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME&lt;br /&gt;
 AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION&lt;br /&gt;
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Retornar consulta por banco de dados do tamanho usado no banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'Use '+name+';' + 'Exec SP_SpaceUsed ;'  from sys.databases&lt;br /&gt;
where  name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' &lt;br /&gt;
and name not like '%adm%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Vendedores da Hierárquia do Supervisor passado no Parâmetro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT cd_vendedor [Código], &lt;br /&gt;
       nm_vendedor [Vendedor]&lt;br /&gt;
FROM   fn_obter_vendedores_supervisor(#codigoSupervisor#)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Supervisores Acima da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT S.cd_supervisor [Código], &lt;br /&gt;
       S.nm_supervisor [Supervisor] &lt;br /&gt;
FROM   fn_obter_supervisor_supervisores(#codigoSupervisor#) FOSS &lt;br /&gt;
       INNER JOIN SUPERVISOR S &lt;br /&gt;
               ON FOSS.cd_supervisor = S.cd_supervisor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lista os Supervisores Abaixo da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT S.cd_supervisor [Código], &lt;br /&gt;
       S.nm_supervisor [Supervisor] &lt;br /&gt;
FROM   fn_obter_supervisores_supervisor(#codigoSupervisor#) FOSS &lt;br /&gt;
       INNER JOIN SUPERVISOR S &lt;br /&gt;
               ON FOSS.cd_supervisor = S.cd_supervisor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar processos que estão travando o banco e ver a query do processo que está travado&lt;br /&gt;
** Selecionar os 100 primeiros processos bloqueados no banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select TOP 100 *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where blocked &amp;lt;&amp;gt; 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Selecionar todos os processos bloqueados no banco ordenados por spid&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select spid, blocked, hostname=left(hostname,20), program_name=left(program_name,20),&lt;br /&gt;
       WaitTime_Seg = convert(int,(waittime/1000))  ,open_tran, status&lt;br /&gt;
From master.dbo.sysprocesses &lt;br /&gt;
where blocked &amp;gt; 0&lt;br /&gt;
order by spid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Então você precisa verificar quais processos estão rodando em um determinado banco de dados:&lt;br /&gt;
** Lista todos os processos existentes em uma determinada base de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @database VARCHAR(100) = 'bd_ssm_suabase' -- INSIRA AQUI O NOME DO BANCO DE DADOS  &lt;br /&gt;
DECLARE @processosTemp TABLE &lt;br /&gt;
  ( &lt;br /&gt;
     spid       SMALLINT, &lt;br /&gt;
     ecid       SMALLINT, &lt;br /&gt;
     status     NCHAR(30), &lt;br /&gt;
     loginname  NCHAR(128), &lt;br /&gt;
     hostname   NCHAR(128), &lt;br /&gt;
     blk        CHAR(5), &lt;br /&gt;
     dbname     NCHAR(128), &lt;br /&gt;
     cmd        NCHAR(16), &lt;br /&gt;
     request_id INT &lt;br /&gt;
  ) &lt;br /&gt;
&lt;br /&gt;
INSERT INTO @processosTemp &lt;br /&gt;
EXEC Sp_who &lt;br /&gt;
&lt;br /&gt;
SELECT * &lt;br /&gt;
FROM   @processosTemp &lt;br /&gt;
WHERE  dbname = @database &lt;br /&gt;
ORDER  BY spid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Aí você precisa remover essa base - faça esse procedimento apenas no ambiente de teste - mas existem processos bloqueando essa remoção. Então você deverá remover os mesmos processos referentes a consulta acima, para depois DROPAR a base.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
declare @execSql varchar(1000), @databaseName varchar(100)  &lt;br /&gt;
set @databaseName = 'bd_ssm_suabase'  -- INSIRA O NOME DA BASE QUE QUER MATAR SEUS PROCESSOS EM ABERTO&lt;br /&gt;
&lt;br /&gt;
set @execSql = ''   &lt;br /&gt;
select  @execSql = @execSql + 'kill ' + convert(char(10), spid) + CHAR(13)+CHAR(10)  &lt;br /&gt;
from    master.dbo.sysprocesses  &lt;br /&gt;
where   db_name(dbid) = @databaseName  &lt;br /&gt;
     and  &lt;br /&gt;
     DBID &amp;lt;&amp;gt; 0  &lt;br /&gt;
     and  &lt;br /&gt;
     spid &amp;lt;&amp;gt; @@spid  &lt;br /&gt;
order by spid&lt;br /&gt;
exec(@execSql)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para verificar se exste alguma configuração para algum serviço de envio de e-mail ativado&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_EXPORTADO'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_NAO_EFETIVADO'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_FINANC_NOVO_CLIENTE'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'ENVIA_EMAIL_SUPERVISOR_PEDIDO_PENDENTE'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'CONDICAO_PAGAMENTO_ESPECIAL'&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM CONFIGURACAO &lt;br /&gt;
WHERE DS_CHAVE = 'SP_ENVIA_EMAIL_CLIENTE_PEDIDO_CRIACAO'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para ver todas as foreign keys do banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
 KCU1.CONSTRAINT_NAME AS 'FK_Nome_Constraint'&lt;br /&gt;
 , KCU1.TABLE_NAME AS 'FK_Nome_Tabela'&lt;br /&gt;
 , KCU1.COLUMN_NAME AS 'FK_Nome_Coluna'&lt;br /&gt;
 , FK.is_disabled AS 'FK_Esta_Desativada'&lt;br /&gt;
 , KCU2.CONSTRAINT_NAME AS 'PK_Nome_Constraint_Referenciada'&lt;br /&gt;
 , KCU2.TABLE_NAME AS 'PK_Nome_Tabela_Referenciada'&lt;br /&gt;
 , KCU2.COLUMN_NAME AS 'PK_Nome_Coluna_Referenciada'&lt;br /&gt;
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1&lt;br /&gt;
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME&lt;br /&gt;
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2&lt;br /&gt;
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG &lt;br /&gt;
 AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA&lt;br /&gt;
 AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME&lt;br /&gt;
 AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION&lt;br /&gt;
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME&lt;br /&gt;
&lt;br /&gt;
--where KCU1.CONSTRAINT_NAME like '%FK_PEDIDO_EXCLUIDO__PEDIDO%'&lt;br /&gt;
Order by &lt;br /&gt;
KCU1.TABLE_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script para Cadastro de Menu do Portal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- SELECT * FROM MENU WHERE DS_MENU IN('Cadastro', 'Bonificação','Associada ao Pedido')&lt;br /&gt;
-- UPDATE MENU SET DS_URL = null WHERE CD_MENU = 130&lt;br /&gt;
-- SELECT * FROM MENU WHERE CD_MENU_PAI = 1&lt;br /&gt;
&lt;br /&gt;
-- INCLUSÃO DE MENU -- &lt;br /&gt;
DECLARE @dsMenu    VARCHAR(100), &lt;br /&gt;
        @dsMenuPai VARCHAR(100), &lt;br /&gt;
        @cdMenuPai INT &lt;br /&gt;
&lt;br /&gt;
SELECT @dsMenu = 'Parâmetros de Configuração', &lt;br /&gt;
       @dsMenuPai = 'Cadastro'&lt;br /&gt;
 &lt;br /&gt;
SELECT	@dsMenu = LTRIM(RTRIM(@dsMenu)),&lt;br /&gt;
		@dsMenuPai = LTRIM(RTRIM(@dsMenuPai))&lt;br /&gt;
&lt;br /&gt;
SET @cdMenuPai = (SELECT TOP 1 cd_menu &lt;br /&gt;
                  FROM   menu &lt;br /&gt;
                  WHERE  ds_menu = @dsMenuPai)&lt;br /&gt;
&lt;br /&gt;
IF ( @cdMenuPai IS NOT NULL ) &lt;br /&gt;
  BEGIN &lt;br /&gt;
      IF NOT EXISTS (SELECT 1 &lt;br /&gt;
                     FROM   menu &lt;br /&gt;
                     WHERE  ds_menu = @dsMenu &lt;br /&gt;
                            AND cd_menu_pai = @cdMenuPai) &lt;br /&gt;
        BEGIN &lt;br /&gt;
            INSERT INTO menu &lt;br /&gt;
                        (cd_menu, &lt;br /&gt;
                         ds_menu, &lt;br /&gt;
                         ds_url, &lt;br /&gt;
                         ds_param, &lt;br /&gt;
                         cd_menu_pai, &lt;br /&gt;
                         id_ativo) &lt;br /&gt;
            SELECT Max(Isnull(cd_menu, 0)) + 1, &lt;br /&gt;
                   @dsMenu, &lt;br /&gt;
                   @dsMenu, &lt;br /&gt;
                   NULL, &lt;br /&gt;
                   @cdMenuPai, &lt;br /&gt;
                   'S' &lt;br /&gt;
            FROM   menu &lt;br /&gt;
            &lt;br /&gt;
            PRINT '-----------------  MENU CADASTRADO COM SUCESSO  -----------------'&lt;br /&gt;
			PRINT 'FOI CADASTRADO O SUBMENU &amp;quot;'+ @dsMenu + '&amp;quot; NO MENU &amp;quot;'+ @dsMenuPai + '&amp;quot;!'&lt;br /&gt;
        END &lt;br /&gt;
        ELSE&lt;br /&gt;
        BEGIN&lt;br /&gt;
			PRINT '-----------------  FALHA AO CADASTRAR MENU  -----------------'&lt;br /&gt;
			PRINT 'JÁ EXISTE O SUBMENU &amp;quot;'+ @dsMenu + '&amp;quot; NO MENU &amp;quot;'+ @dsMenuPai + '&amp;quot;!'&lt;br /&gt;
        END&lt;br /&gt;
  END &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Conjunto de Selects para visualizar se há algum desconto sendo persistido na base do Mobile&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select  * from desconto_produto;&lt;br /&gt;
select * from DESCONTO_ORG_PRODUTO;&lt;br /&gt;
select * from DESCONTO_MEGAZORD;&lt;br /&gt;
select * from DESCONTO_ICMS_DIF;&lt;br /&gt;
select * from DESCONTO_CLIENTE_FORNEC;&lt;br /&gt;
select * from DESCONTO_CLIENTE;&lt;br /&gt;
select * from DESCONTO_FORNECEDOR;&lt;br /&gt;
select * from DESCONTO_MEGAZORD_SEGMENTO;&lt;br /&gt;
select * from DESCONTO_UF;&lt;br /&gt;
select  * from desco_cliente_familia;&lt;br /&gt;
select * from DESCO_GRUP_CLIEN_FAMIL;&lt;br /&gt;
select * from desconto_cliente;&lt;br /&gt;
select  * from DESCO_VENDEDOR_FAMILIA;&lt;br /&gt;
select * from DESCO_GRUP_CLIEN_FAMIL;&lt;br /&gt;
select * from DESCO_GRUP_CLIENT_VEND;&lt;br /&gt;
select * from DESCO_GRUPO_CLIEN_PROD;&lt;br /&gt;
select * from DESCONTO_VEND_PRODUTO;&lt;br /&gt;
select * from DESCONTO_UF_PRODUTO;&lt;br /&gt;
select * from DESCONTO_UF_FAMILIA;&lt;br /&gt;
&lt;br /&gt;
select * from DESCONTO_CLIENTE_PRODUT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Select para contar os registros de uma tabela sem derrubar o banco&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT SUM (row_count)&lt;br /&gt;
FROM sys.dm_db_partition_stats&lt;br /&gt;
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   &lt;br /&gt;
AND (index_id=0 or index_id=1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Desabilitar as triggers de geração de registros &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'alter table '+ OBJECT_NAME(parent_id)+ ' disable trigger '+name from sys.triggers&lt;br /&gt;
where name like 'log%'&lt;br /&gt;
order by 1, name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Habilitar as triggers de geração de registros &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'alter table '+ OBJECT_NAME(parent_id)+ ' enable trigger '+name from sys.triggers&lt;br /&gt;
where name like 'log%'&lt;br /&gt;
order by 1, name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para ver os processos em execução no banco da camil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select DB_NAME(dbid),* from sys.sysprocesses&lt;br /&gt;
where program_name like '%ssmicro%'&lt;br /&gt;
and status like '%run%'&lt;br /&gt;
&lt;br /&gt;
dbcc inputbuffer(61)&lt;br /&gt;
dbcc inputbuffer(65)&lt;br /&gt;
guarda essa consulta&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listar todas as bases ativas criando um use bd_ssm_nomeempresa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'Use '+name+';' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Contar os registros da log_alteracao_usuario sem parar o banco de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT SUM (row_count)&lt;br /&gt;
FROM sys.dm_db_partition_stats&lt;br /&gt;
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   &lt;br /&gt;
AND (index_id=0 or index_id=1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Truncar tabela de log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TRUNCATE TABLE LOG_ALTERACAO_USUARIO;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Usando a sys.databases de forma inteligente para economizar trabalho&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'use ' + name + '; select ' +name + ',* from CAMPO where cd_campo = 23;'&lt;br /&gt;
from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%' and state_desc &amp;lt;&amp;gt; 'OFFLINE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listar todos os bancos de dados de empresa da softsite&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select name from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Limpeza de cadastros do ADM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
INNER JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
INNER JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E.CD_EMPRESA, E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
LEFT JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
LEFT JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE)&lt;br /&gt;
WHERE &lt;br /&gt;
	SD.name IS NULL	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT E.CD_EMPRESA, E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E &lt;br /&gt;
LEFT JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)&lt;br /&gt;
LEFT JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) &lt;br /&gt;
INNER JOIN sys.databases SBD ON (SBD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) &lt;br /&gt;
WHERE &lt;br /&gt;
	state_desc = 'OFFLINE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Tabelas que tem que ser analisadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EMPRESA_SYNC_SISTEMA&lt;br /&gt;
EMPRESA_SYNC_BD&lt;br /&gt;
EMPRESA_SISTEMA&lt;br /&gt;
EMPRESA_BD&lt;br /&gt;
EMPRESA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Deletes necessários para limpar as bases&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Na base ADM:&lt;br /&gt;
select * from empresa order by nm_empresa asc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
SELECT * FROM EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog' --619&lt;br /&gt;
&lt;br /&gt;
DELETE FROM EMPRESA_SYNC_BD WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_BD WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_SYNC_SISTEMA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA_SISTEMA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM EMPRESA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
&lt;br /&gt;
USE bd_ssm_login;&lt;br /&gt;
SELECT * FROM bd_ssm_login..USUARIO_EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog'&lt;br /&gt;
&lt;br /&gt;
DELETE FROM MODULO_EMPRESA WHERE CD_EMPRESA IN (619)&lt;br /&gt;
DELETE FROM USUARIO WHERE CD_USUARIO IN (1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157)&lt;br /&gt;
DELETE FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'fiorehomolog'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Verificar quantidade de conexões abertas por base utilizadas pelo portal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), count(*)&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where 1=1&lt;br /&gt;
--and   db_name(dbid) = 'bd_ssm_criasim'&lt;br /&gt;
and program_name = 'jTDS'&lt;br /&gt;
group &lt;br /&gt;
by db_name(dbid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Comando para gerar os drops das Triggers do claudus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' drop trigger ', tr.name  from sys.sysobjects tr&lt;br /&gt;
inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U'&lt;br /&gt;
where tr.xtype = 'tr'&lt;br /&gt;
and tr.name like 'TR_AUDIT%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' disable trigger ' + tr.name + ' on ' + tb.name, st.is_disabled  from sys.sysobjects tr&lt;br /&gt;
inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U'&lt;br /&gt;
inner join sys.triggers st on st.object_id = tr.id&lt;br /&gt;
where tr.xtype = 'tr' and st.is_disabled = 1&lt;br /&gt;
and tr.name like 'TR_AUDIT%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Remover empresas do import que não estão mais acessíveis na base&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm&lt;br /&gt;
&lt;br /&gt;
select  * &lt;br /&gt;
--update es set id_realiza_importacao&lt;br /&gt;
from EMPRESA_SISTEMA es&lt;br /&gt;
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA &lt;br /&gt;
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS&lt;br /&gt;
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Listar algo em todas as bases numa consulta só&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'select ''' + name + ''', *  from ' + name + '.dbo.INTERFACEERPCONFIGURACAOPARAMETRO where VR_PARAMETRO NOT LIKE ''%PEDIDO%ITEM_PEDIDO%'' UNION ALL'&lt;br /&gt;
from sys.databases&lt;br /&gt;
where name like 'bd_ssm_%' and state_desc &amp;lt;&amp;gt; 'OFFLINE' and (name not like '%pronta%' AND name not like 'bd_ssm_adm')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Descobrindo as empresas que importam&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update es set id_realiza_importacao&lt;br /&gt;
from EMPRESA_SISTEMA es&lt;br /&gt;
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA &lt;br /&gt;
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS&lt;br /&gt;
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*UPDATE para atualizar dados duplicados da tabela 001&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE LISTA_PRODUTO_001&lt;br /&gt;
SET data_delete = data_insert+('00:00:00.200')&lt;br /&gt;
where id in (&lt;br /&gt;
-2146273629,&lt;br /&gt;
-2146273628,&lt;br /&gt;
-2146273627,&lt;br /&gt;
-2146273626,&lt;br /&gt;
-2146273625,&lt;br /&gt;
-2146273624,&lt;br /&gt;
-2146273623,&lt;br /&gt;
-2146273622,&lt;br /&gt;
-2146273621)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Comando para concatenar dentro do group by &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STUFF&lt;br /&gt;
&lt;br /&gt;
SELECT NM_ESTADO,&lt;br /&gt;
       NM_CIDADE,&lt;br /&gt;
       STUFF(&lt;br /&gt;
               (SELECT DISTINCT ',' + NM_FANTASIA&lt;br /&gt;
                FROM cliente&lt;br /&gt;
                WHERE NM_ESTADO = a.NM_ESTADO&lt;br /&gt;
                  AND NM_CIDADE = a.NM_CIDADE&lt;br /&gt;
                  FOR XML PATH ('')) , 1, 1, '') AS URLList&lt;br /&gt;
FROM cliente AS a&lt;br /&gt;
WHERE NM_ESTADO = 'CE'&lt;br /&gt;
  AND NM_CIDADE = 'fortaleza'&lt;br /&gt;
GROUP BY NM_ESTADO,&lt;br /&gt;
         NM_CIDADE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Template base pra criar o script de uma tabela NOVA pro TJ&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Criar a tabela TMP pra empresas que utilizam import */&lt;br /&gt;
CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_TMP]&lt;br /&gt;
  ( &lt;br /&gt;
     CD_LOTE      int NOT NULL,  &lt;br /&gt;
     CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, &lt;br /&gt;
     CD_TAB_PRECO INT NOT NULL, &lt;br /&gt;
	 PR_DESCONTO  DECIMAL(18, 6) NOT NULL,&lt;br /&gt;
	CONSTRAINT [PK_DESCONTO_LOTE_OV_TP_TMP] PRIMARY KEY CLUSTERED (&lt;br /&gt;
		[CD_LOTE] ASC,&lt;br /&gt;
		[CD_ORG_VENDA] ASC,&lt;br /&gt;
		[CD_TAB_PRECO] ASC&lt;br /&gt;
	) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]&lt;br /&gt;
) ON [PRIMARY]&lt;br /&gt;
&lt;br /&gt;
/* Criar a tabela de LOG */&lt;br /&gt;
CREATE TABLE LOG_DESCONTO_LOTE_OV_TP&lt;br /&gt;
(&lt;br /&gt;
CD_LOG INT IDENTITY PRIMARY KEY&lt;br /&gt;
,DT_LOG DATETIME NOT NULL&lt;br /&gt;
,TP_OPERACAO VARCHAR(1) NOT NULL&lt;br /&gt;
,ID_KEY VARCHAR(200) NOT NULL&lt;br /&gt;
,CD_LOTE int&lt;br /&gt;
,CD_ORG_VENDA VARCHAR(20)&lt;br /&gt;
,CD_TAB_PRECO INT)&lt;br /&gt;
&lt;br /&gt;
/* Criar tabela 001 seguindo o padrão */&lt;br /&gt;
CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_001]&lt;br /&gt;
  ( &lt;br /&gt;
     [id] [int] IDENTITY(-2147483648,1) NOT NULL,&lt;br /&gt;
     CD_LOTE      INT NOT NULL,  &lt;br /&gt;
     CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, &lt;br /&gt;
     CD_TAB_PRECO INT NOT NULL, &lt;br /&gt;
	 PR_DESCONTO  DECIMAL(18, 6) NOT NULL,&lt;br /&gt;
     [data_insert] [datetime] NOT NULL,&lt;br /&gt;
	 [data_update] [datetime] NULL,&lt;br /&gt;
	 [data_delete] [datetime] NULL,&lt;br /&gt;
PRIMARY KEY NONCLUSTERED &lt;br /&gt;
(&lt;br /&gt;
	[id] ASC&lt;br /&gt;
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]&lt;br /&gt;
) ON [PRIMARY]&lt;br /&gt;
&lt;br /&gt;
/* Adicionar Index */&lt;br /&gt;
CREATE CLUSTERED INDEX PK_DESCONTO_LOTE_OV_TP ON DESCONTO_LOTE_OV_TP_001 (CD_LOTE ASC, CD_ORG_VENDA ASC, CD_TAB_PRECO ASC)&lt;br /&gt;
&lt;br /&gt;
/* Adicionar constraint */&lt;br /&gt;
ALTER TABLE [dbo].[DESCONTO_LOTE_OV_TP_001] ADD  CONSTRAINT [DF_DATA_INSERCAO_DESCONTO]  DEFAULT (getdate()) FOR [data_insert]&lt;br /&gt;
&lt;br /&gt;
/* Criar trigger na tabela nova adicionando os campos necessários */&lt;br /&gt;
CREATE TRIGGER [dbo].[TR_TJ_UPDATE_DESCONTO_LOTE_OV_TP]&lt;br /&gt;
ON [dbo].[DESCONTO_LOTE_OV_TP_001]&lt;br /&gt;
instead OF UPDATE&lt;br /&gt;
AS&lt;br /&gt;
  BEGIN&lt;br /&gt;
      SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
      UPDATE t&lt;br /&gt;
      SET    t.data_update = case when s.data_delete is null then  Getdate() else t.data_update end ,&lt;br /&gt;
             T.CD_LOTE = S.CD_LOTE,&lt;br /&gt;
			 T.CD_ORG_VENDA = S.CD_ORG_VENDA,&lt;br /&gt;
			 T.CD_TAB_PRECO = S.CD_TAB_PRECO,&lt;br /&gt;
			 T.PR_DESCONTO = S.PR_DESCONTO,&lt;br /&gt;
             t.data_delete = s.data_delete&lt;br /&gt;
      FROM   DESCONTO_LOTE_OV_TP_001 t&lt;br /&gt;
             INNER JOIN inserted s&lt;br /&gt;
                     ON ( t.id = s.id )&lt;br /&gt;
&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
/* Criar a view TJ */&lt;br /&gt;
CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP_TJ]&lt;br /&gt;
AS&lt;br /&gt;
  SELECT id,&lt;br /&gt;
         CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO&lt;br /&gt;
  FROM   DESCONTO_LOTE_OV_TP_001&lt;br /&gt;
  WHERE  data_delete IS NULL&lt;br /&gt;
&lt;br /&gt;
/* Criar Trigger da view */&lt;br /&gt;
CREATE TRIGGER [dbo].[TR_TJ_DELETE_DESCONTO_LOTE_OV_TP]&lt;br /&gt;
ON [dbo].[DESCONTO_LOTE_OV_TP_TJ]&lt;br /&gt;
instead OF DELETE&lt;br /&gt;
AS&lt;br /&gt;
  BEGIN&lt;br /&gt;
      SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
      UPDATE t&lt;br /&gt;
      SET    data_delete = Getdate()&lt;br /&gt;
      FROM   deleted s&lt;br /&gt;
             INNER JOIN DESCONTO_LOTE_OV_TP_001 t&lt;br /&gt;
                     ON s.id = t.id&lt;br /&gt;
&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
/* Criar a view */&lt;br /&gt;
CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP]&lt;br /&gt;
AS&lt;br /&gt;
  SELECT CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO&lt;br /&gt;
  FROM   DESCONTO_LOTE_OV_TP_tj&lt;br /&gt;
&lt;br /&gt;
/* Criar a função de navegação */&lt;br /&gt;
CREATE FUNCTION fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP(@ID_VENDEDOR  INT,&lt;br /&gt;
                                                           @DT_LAST_SINC DATETIME)&lt;br /&gt;
RETURNS TABLE&lt;br /&gt;
AS&lt;br /&gt;
    RETURN&lt;br /&gt;
      (SELECT	DLOT.id,&lt;br /&gt;
				DLOT.CD_LOTE,&lt;br /&gt;
				DLOT.CD_ORG_VENDA,&lt;br /&gt;
				DLOT.CD_TAB_PRECO,&lt;br /&gt;
				DLOT.PR_DESCONTO,&lt;br /&gt;
				DLOT.DATA_DELETE&lt;br /&gt;
        FROM   DESCONTO_LOTE_OV_TP_001 DLOT&lt;br /&gt;
		WHERE  &lt;br /&gt;
			(&lt;br /&gt;
				( &lt;br /&gt;
					( &lt;br /&gt;
						( DLOT.DATA_INSERT &amp;gt;= @DT_LAST_SINC&lt;br /&gt;
							OR DLOT.DATA_UPDATE &amp;gt;= @DT_LAST_SINC &lt;br /&gt;
						)&lt;br /&gt;
						AND DLOT.DATA_DELETE IS NULL &lt;br /&gt;
					)&lt;br /&gt;
					OR ( DLOT.DATA_DELETE &amp;gt;= @DT_LAST_SINC&lt;br /&gt;
							AND DLOT.DATA_INSERT &amp;lt; @DT_LAST_SINC&lt;br /&gt;
							AND NOT EXISTS(SELECT 1&lt;br /&gt;
											FROM   DESCONTO_LOTE_OV_TP_001 T&lt;br /&gt;
											WHERE  DLOT.CD_LOTE = T.CD_LOTE&lt;br /&gt;
											AND DLOT.CD_ORG_VENDA = T.CD_ORG_VENDA&lt;br /&gt;
											AND DLOT.CD_TAB_PRECO = T.CD_TAB_PRECO&lt;br /&gt;
												AND T.DATA_DELETE IS NULL&lt;br /&gt;
											)&lt;br /&gt;
					)&lt;br /&gt;
					OR ( &lt;br /&gt;
						@DT_LAST_SINC IS NULL&lt;br /&gt;
						AND DLOT.DATA_DELETE IS NULL&lt;br /&gt;
					)&lt;br /&gt;
				) &lt;br /&gt;
			)&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
/* Adicionando a função na tabela */&lt;br /&gt;
INSERT INTO TAMOJUNTO_TABELA_FUNCAO (NM_TABLE, NM_FN, FL_ATIVA) VALUES ('DESCONTO_LOTE_OV_TP', 'fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP', 1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para retornar os 20 processos que estão consumindo mais recursos de cpu no momento&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT TOP 20&lt;br /&gt;
GETDATE() AS 'Collection Date',&lt;br /&gt;
qs.execution_count AS 'Execution Count',&lt;br /&gt;
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,&lt;br /&gt;
(CASE WHEN qs.statement_end_offset = -1&lt;br /&gt;
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2&lt;br /&gt;
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2&lt;br /&gt;
) AS 'Query Text',&lt;br /&gt;
DB_NAME(qt.dbid) AS 'DB Name',&lt;br /&gt;
qs.total_worker_time AS 'Total CPU Time',&lt;br /&gt;
qs.total_worker_time/qs.execution_count AS 'Avg CPU Time (ms)',&lt;br /&gt;
qs.total_physical_reads AS 'Total Physical Reads',&lt;br /&gt;
qs.total_physical_reads/qs.execution_count AS 'Avg Physical Reads',&lt;br /&gt;
qs.total_logical_reads AS 'Total Logical Reads',&lt;br /&gt;
qs.total_logical_reads/qs.execution_count AS 'Avg Logical Reads',&lt;br /&gt;
qs.total_logical_writes AS 'Total Logical Writes',&lt;br /&gt;
qs.total_logical_writes/qs.execution_count AS 'Avg Logical Writes',&lt;br /&gt;
qs.total_elapsed_time AS 'Total Duration',&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count AS 'Avg Duration (ms)',&lt;br /&gt;
qp.query_plan AS 'Plan'&lt;br /&gt;
FROM sys.dm_exec_query_stats AS qs&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt&lt;br /&gt;
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp&lt;br /&gt;
WHERE&lt;br /&gt;
qs.execution_count &amp;gt; 50 OR&lt;br /&gt;
qs.total_worker_time/qs.execution_count &amp;gt; 100 OR&lt;br /&gt;
qs.total_physical_reads/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_logical_reads/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_logical_writes/qs.execution_count &amp;gt; 1000 OR&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count &amp;gt; 1000&lt;br /&gt;
ORDER BY&lt;br /&gt;
qs.execution_count DESC,&lt;br /&gt;
qs.total_elapsed_time/qs.execution_count DESC,&lt;br /&gt;
qs.total_worker_time/qs.execution_count DESC,&lt;br /&gt;
qs.total_physical_reads/qs.execution_count DESC,&lt;br /&gt;
qs.total_logical_reads/qs.execution_count DESC,&lt;br /&gt;
qs.total_logical_writes/qs.execution_count DESC&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para ver se uma trigger está habilitada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select  ObjectProperty(Object_id(Name),'ExecIsTriggerDisabled') STATUS from sys.sysobjects where name = 'LOG_ALTERACAO_DELETE_PRODUTO_ESTOQUE'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checar se um campo existe em uma tabela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT T.name AS Tabela, C.name AS Coluna&lt;br /&gt;
FROM sys.sysobjects    AS T (NOLOCK) &lt;br /&gt;
INNER JOIN sys.all_columns AS C (NOLOCK) ON T.id = C.object_id AND T.XTYPE = 'U' &lt;br /&gt;
WHERE C.NAME LIKE '%CAMPO%'&lt;br /&gt;
ORDER BY T.name ASC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Alterar os paths de dados de importação da modelo para o nome da empresa cadastrada&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
USE bd_ssm_jptripas&lt;br /&gt;
&lt;br /&gt;
DECLARE @empresa varchar(50);&lt;br /&gt;
SET @empresa = 'jptripas';&lt;br /&gt;
&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao\backup' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO_BKP'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE DS_CHAVE='DS_PATH_ARQS_IMPORTACAO'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE DS_CHAVE='DS_PATH_DESCRIBER'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE DS_CHAVE='DS_PATH_DIRS_VERSOES'&lt;br /&gt;
&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_IMPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO_BKP= 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_DESCRIBER = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
UPDATE CONFIGURACOES SET DS_PATH_DIRS_VERSOES = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE CD_CONFIGURACAO=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script para análise de que se existe a tabela no tamojunto para inserir&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select ' USE ' + name + '; IF(((SELECT COUNT(*) FROM tamojunto_tabela_funcao WHERE NM_TABLE = ''CLIENTE'') = 0) AND (EXISTS (SELECT TOP 1 1 FROM   sys.objects WHERE  NAME = ''CLIENTE_001''))) BEGIN INSERT INTO tamojunto_tabela_funcao VALUES (''CLIENTE'', ''fn_REGISTRO_SYNC_CLIENTE'', 1) END' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%'  &lt;br /&gt;
	and name not like '%protheus%'&lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script para contar quantas licenças uma empresa tem.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( &lt;br /&gt;
  NM_EMPRESA VARCHAR(50),&lt;br /&gt;
  NR_LICENCAS INT,&lt;br /&gt;
  NR_LICENCAS_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_UNICO INT,&lt;br /&gt;
  NR_USUARIOS_TOTAL INT)&lt;br /&gt;
&lt;br /&gt;
DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), &lt;br /&gt;
@NrUsuariosSomentePortal INT, @NrUsuariosSomenteMobile INT, @NrUsuariosPortalMobile INT, @NrUsuariosPortalMobileUnico INT;&lt;br /&gt;
SELECT @NmEmpresa = 'makita',   @NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'),   @NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'),    @NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL),   @NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   @NrUsuariosPortalMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO T INNER JOIN bd_ssm_makita..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL),   @NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL AND ID_PALM IS NOT NULL);   &lt;br /&gt;
INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobile, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobile + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal));&lt;br /&gt;
SELECT * FROM @VisaoLicencasUsuariosPorEmpresa;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Código que deve ser executado quando se restaurar uma base de produção em homologação.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/supervisor/gerencial/getRelatorioGerencial/' WHERE DS_CHAVE = 'DS_URL_REL_GERENCIAL'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/services/WebService' WHERE DS_CHAVE = 'DS_URL_SERVICE'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'GPS_BASE_URL'&lt;br /&gt;
UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'URL_WEBSERVICE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Shrink&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC SHRINKDATABASE('bd_ssm_campneus', 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Controle de licenças&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	SELECT program_name, HOSTNAME, *&lt;br /&gt;
			FROM  sys.sysprocesses&lt;br /&gt;
	where program_name = 'passwordsenderws'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO empresa_bd_properties &lt;br /&gt;
SELECT CD_EMPRESA, 'passwordsenderws', NULL, 2 FROM EMPRESA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Verificar processo de importação&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where program_name like '%Import%'&lt;br /&gt;
and db_name(dbid) = 'bd_ssm_boreda'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Analisar base que está dando erro no claudus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD WHERE ID_STATUS_DEL = ''F'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT A.NAME, A.TYPE, B.TEXT&lt;br /&gt;
  FROM SYSOBJECTS  A (nolock)&lt;br /&gt;
  JOIN SYSCOMMENTS B (nolock) &lt;br /&gt;
    ON A.ID = B.ID&lt;br /&gt;
WHERE B.TEXT LIKE '%ITEM_PEDIDO%'  --- Informação a ser procurada no corpo da procedure, funcao ou view&lt;br /&gt;
    AND B.TEXT LIKE '%LOG_ALTERACAO_USUARIO%'&lt;br /&gt;
    AND B.TEXT LIKE '%''D''%'&lt;br /&gt;
  AND A.TYPE = 'TR'                     --- Tipo de objeto a ser localizado no caso procedure&lt;br /&gt;
 ORDER BY A.NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pesquisar texto dentro das estruturas do banco&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE @Search varchar(255)&lt;br /&gt;
SET @Search='EXCLUINDO REGISTROS NÃO SINCRONIZADOS'&lt;br /&gt;
&lt;br /&gt;
SELECT DISTINCT&lt;br /&gt;
    o.name AS Object_Name,o.type_desc&lt;br /&gt;
    FROM sys.sql_modules        m &lt;br /&gt;
        INNER JOIN sys.objects  o ON m.object_id=o.object_id&lt;br /&gt;
    WHERE m.definition Like '%'+@Search+'%'&lt;br /&gt;
    ORDER BY 2,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar falhas no claudus em todas as bases&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD  WHERE ID_STATUS_DEL = ''F'' OR ID_STATUS_INS = ''F'' UNION ALL' from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Analisar vínculos de frete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from CLIENTE where nm_cliente like '%POLO DISTR%'&lt;br /&gt;
SELECT * FROM APLICACAO_FRETE;&lt;br /&gt;
SELECT CD_CLASSE_FRETE, * FROM PRODUTO WHERE CD_PRODUTO = 12951 &lt;br /&gt;
SELECT * FROM FAIXA_PRECO_FRETE WHERE CD_CLASSE_FRETE = 0 and CD_FRETE in (13527306, 23527306, 33527306)&lt;br /&gt;
&lt;br /&gt;
select * from PRACA where CD_PRACA = 3527306&lt;br /&gt;
select * from CLIENTE_PRACA where CD_CLIENTE = 100669301 --3527306&lt;br /&gt;
select* from FRETE where CD_PRACA = 3527306&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE TAMOJUNTO_TABELA_FUNCAO SET FL_ATIVA = 1&lt;br /&gt;
WHERE FL_ATIVA = 0 AND NM_TABLE NOT IN ('DESCO_GRUP_CLIEN_FAMIL', 'TIPO_PRODUTO_MOVIMENTO')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Aprovar pedidos manualmente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT 'EXEC autorizar_item_pedido_super ' + CAST(IP.CD_PEDIDO_PALM AS VARCHAR(20)) + ', ' + &lt;br /&gt;
CAST(IP.NR_ITEM_PEDIDO AS VARCHAR(20)) + ', ' + CAST(IP.CD_PRODUTO AS VARCHAR(15)) + ', NULL, ''S'', 14 '&lt;br /&gt;
 FROM ITEM_PEDIDO IP WHERE CD_PEDIDO_PALM IN (190302065635151583)&lt;br /&gt;
 &lt;br /&gt;
SELECT 'EXEC autorizar_pedido_super ' + CAST(P.CD_PEDIDO_PALM AS VARCHAR(20)) + ', 14, 0 '  &lt;br /&gt;
FROM PEDIDO P WHERE CD_PEDIDO_PALM IN (190302065635151583)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Contagem de licenças&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( &lt;br /&gt;
  NM_EMPRESA VARCHAR(50),&lt;br /&gt;
  NR_LICENCAS INT,&lt;br /&gt;
  NR_LICENCAS_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_PORTAL_BLOQUEADOS INT,&lt;br /&gt;
  NR_USUARIOS_SOMENTE_MOBILE INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM_BLOQUEADO INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM_BLOQUEADO INT,&lt;br /&gt;
  NR_USUARIOS_PORTAL_MOBILE_UNICO INT,&lt;br /&gt;
  NR_USUARIOS_TOTAL INT,&lt;br /&gt;
  NR_USUARIOS_DESATIVADOS INT,&lt;br /&gt;
  NR_USUARIOS_BLOQUEADOS_TOTAL INT)&lt;br /&gt;
&lt;br /&gt;
DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), &lt;br /&gt;
	@NrUsuariosSomentePortal INT, @NrUsuariosSomentePortalBloqueado INT, @NrUsuariosSomenteMobile INT,&lt;br /&gt;
    @NrUsuariosPortalMobileComIdPalm INT, @NrUsuariosPortalMobileComIdPalmBloqueado INT,&lt;br /&gt;
	@NrUsuariosPortalMobileSemIdPalm INT,  @NrUsuariosPortalMobileSemIdPalmBloqueado INT, @NrUsuariosPortalMobileUnico INT, &lt;br /&gt;
	@NrUsuariosPortalDesativados INT, @NrUsuariosPortalBloqueados INT;&lt;br /&gt;
&lt;br /&gt;
SELECT @NmEmpresa = 'camil',   &lt;br /&gt;
@NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'),   &lt;br /&gt;
@NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'),    &lt;br /&gt;
@NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL),   &lt;br /&gt;
@NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO &amp;lt;&amp;gt; 2 AND CD_SITUACAO &amp;lt;&amp;gt; 9 AND (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   &lt;br /&gt;
@NrUsuariosSomentePortalBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO &amp;lt;&amp;gt; 2 AND CD_SITUACAO = 9 AND (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)),   &lt;br /&gt;
@NrUsuariosPortalMobileComIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO &amp;lt;&amp;gt; 9),   &lt;br /&gt;
@NrUsuariosPortalMobileComIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO = 9),   &lt;br /&gt;
@NrUsuariosPortalMobileSemIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO &amp;lt;&amp;gt; 9 ),   &lt;br /&gt;
@NrUsuariosPortalMobileSemIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE &amp;lt;&amp;gt; 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2 AND T.CD_SITUACAO = 9),   &lt;br /&gt;
@NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT DV.CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_camil..DADOS_VENDEDOR DV INNER JOIN TUSUARIO T ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE DV.ID_PALM IS NOT NULL AND T.CD_SITUACAO &amp;lt;&amp;gt; 2),   &lt;br /&gt;
@NrUsuariosPortalDesativados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 2),&lt;br /&gt;
@NrUsuariosPortalBloqueados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 9);&lt;br /&gt;
INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomentePortalBloqueado, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobileComIdPalm, @NrUsuariosPortalMobileComIdPalmBloqueado, @NrUsuariosPortalMobileSemIdPalm, @NrUsuariosPortalMobileSemIdPalmBloqueado, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobileComIdPalm + @NrUsuariosPortalMobileComIdPalmBloqueado + @NrUsuariosPortalMobileSemIdPalm + @NrUsuariosPortalMobileSemIdPalmBloqueado + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal + @NrUsuariosSomentePortalBloqueado), @NrUsuariosPortalDesativados, @NrUsuariosPortalBloqueados);&lt;br /&gt;
	&lt;br /&gt;
SELECT * FROM @VisaoLicencasUsuariosPorEmpresa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT  'INSERT INTO USUARIO_EMPRESA VALUES (' + &lt;br /&gt;
CAST( (1331 + ROW_NUMBER() OVER(ORDER BY CD_USUARIO ASC) ) as VARCHAR(20)) + ',' +&lt;br /&gt;
CAST(CD_TUSUARIO AS VARCHAR(10)) + ',''' +&lt;br /&gt;
'estrellagaliciahomolog'', ' + &lt;br /&gt;
CAST(VALIDO AS VARCHAR(10)) + ',''' +&lt;br /&gt;
ISNULL(CAST(DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(DT_CRIACAO AS VARCHAR(100)), 'NULL')  + ''',' +&lt;br /&gt;
CAST(PAPEL AS VARCHAR(10)) + ')' &lt;br /&gt;
FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'estrellagalicia'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT 'INSERT INTO USUARIO VALUES ' +&lt;br /&gt;
'(''' + ISNULL(U.NOME, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.LOGIN, 'NULL') + '' + ''',''' +&lt;br /&gt;
ISNULL(U.EMAIL, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.SENHA, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.SALT, 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.TELEFONE, 'NULL')  + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.NUMERO_VIOLACOES AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.VALIDO AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DT_CRIACAO AS VARCHAR(100)), 'NULL') + ''',''' +&lt;br /&gt;
ISNULL(U.URL_FOTO, 'NULL')  + ''',''' +&lt;br /&gt;
ISNULL(CAST(U.DELTA_ITERACOES AS VARCHAR(100)), 'NULL') + ''')' &lt;br /&gt;
FROM USUARIO U&lt;br /&gt;
 INNER JOIN USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO&lt;br /&gt;
WHERE NM_EMPRESA = 'estrellagalicia'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Análise de processo de importação&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from dw_importacao order by 3 desc&lt;br /&gt;
&lt;br /&gt;
select db_name(dbid), *&lt;br /&gt;
from sys.sysprocesses&lt;br /&gt;
where db_name(dbid) = 'bd_ssm_coopatos'&lt;br /&gt;
and program_name like '%Import%'&lt;br /&gt;
&lt;br /&gt;
EXEC sp_who2 23230&lt;br /&gt;
&lt;br /&gt;
DBCC INPUTBUFFER(23230)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--Reindex das Estruturas do Banco&lt;br /&gt;
Print	''&lt;br /&gt;
Print	'Data e Hora início:  ' + convert(varchar(20),GetDate(),25)&lt;br /&gt;
Print	'*****************************************'&lt;br /&gt;
Print	''&lt;br /&gt;
Declare @Tabela Varchar(300)&lt;br /&gt;
Declare @indice Varchar(300)&lt;br /&gt;
Declare @select varchar (2000)&lt;br /&gt;
declare @banco varchar(50)&lt;br /&gt;
set @banco = 'bd_ssm_makitabeta'&lt;br /&gt;
Print 'INICIO REBUILD BANCO DE DADOS: ' + upper(@banco)&lt;br /&gt;
Create table #temp (cod int primary key identity, banco varchar (100), tabela varchar (300), indice varchar (300))&lt;br /&gt;
		&lt;br /&gt;
insert into #temp (banco, tabela, indice)&lt;br /&gt;
exec ('select ' + '''' + @banco + '''' + ' as banco, o.name as tabela, i.name as indice from ' + @banco + '.sys.objects o&lt;br /&gt;
join ' + @banco + '.sys.indexes i on (o.OBJECT_id = i.OBJECT_id)&lt;br /&gt;
where o.type  = ''u''&lt;br /&gt;
	and i.name is not null&lt;br /&gt;
order by 2')&lt;br /&gt;
--select * from #temp&lt;br /&gt;
Declare Reindex Cursor&lt;br /&gt;
For &lt;br /&gt;
select banco, tabela, indice from #temp&lt;br /&gt;
&lt;br /&gt;
Open Reindex&lt;br /&gt;
Fetch Next From Reindex into @banco, @Tabela, @indice&lt;br /&gt;
&lt;br /&gt;
Set Nocount On&lt;br /&gt;
While @@Fetch_Status = 0&lt;br /&gt;
Begin &lt;br /&gt;
	Print (@Tabela)&lt;br /&gt;
	print('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD')&lt;br /&gt;
	Exec('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD')&lt;br /&gt;
	Print ' '&lt;br /&gt;
	Fetch Next From Reindex into @banco, @Tabela, @indice&lt;br /&gt;
	--Print 'Status: ' + cast(@@Fetch_Status as varchar(20))&lt;br /&gt;
End&lt;br /&gt;
Close Reindex&lt;br /&gt;
Deallocate Reindex&lt;br /&gt;
Set nocount off&lt;br /&gt;
Print	''&lt;br /&gt;
Print	'*****************************************'&lt;br /&gt;
Print	'Data e Hora Fim:  ' + convert(varchar(20),GetDate(),25)&lt;br /&gt;
Print	''&lt;br /&gt;
Print	''&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Inserir banners em todas as bases de produção.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'INSERT INTO '+ name +'..BANNER (CD_BANNER,DS_BANNER,DT_INICIO_VIGENCIA,DT_FIM_VIGENCIA,DS_SITUACAO,LINK_IMAGEM,LINK_DIRECT,NR_TIMER,CD_TAMANHO) VALUES '+ &lt;br /&gt;
' ( (SELECT MAX(CD_BANNER) + 1 FROM '+ name +'..BANNER), ''WEBINAR 4'', GETDATE(), ''2020-05-30 00:01:00.000'', 2, ''https://sscatalogo.s3.amazonaws.com/marketing/banner_live_evo_3.jpg'', ''https://www.youtube.com/watch?v=0BzRbzEMh9A'', 1, 1); ' +&lt;br /&gt;
' INSERT INTO '+ name +'..APLICACAO_BANNER (CD_APLICACAO_BANNER, CD_BANNER) VALUES ((SELECT MAX(CD_APLICACAO_BANNER) + 1 FROM '+ name +'..APLICACAO_BANNER), (SELECT MAX(CD_BANNER) FROM '+ name +'..BANNER));' &lt;br /&gt;
from sys.databases&lt;br /&gt;
where  &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%dovac%' &lt;br /&gt;
order by name desc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Delete de registros já removidos da log_alteracao_usuario&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SET nocount ON;&lt;br /&gt;
&lt;br /&gt;
DECLARE @r INT;&lt;br /&gt;
DECLARE @msg VARCHAR(max)&lt;br /&gt;
DECLARE @restantes INT&lt;br /&gt;
DECLARE @t1 DATETIME&lt;br /&gt;
DECLARE @t2 DATETIME&lt;br /&gt;
&lt;br /&gt;
IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence&lt;br /&gt;
  DROP TABLE #pode_apagar;&lt;br /&gt;
&lt;br /&gt;
SET @t1 = Getdate()&lt;br /&gt;
SET @msg = 'obtendo lista de registros para apagar...'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
SELECT cd_sinc_usuario&lt;br /&gt;
INTO   #pode_apagar&lt;br /&gt;
FROM   log_alteracao_usuario lau&lt;br /&gt;
WHERE  EXISTS (SELECT TOP 1 1&lt;br /&gt;
               FROM   log_sync_strategy las&lt;br /&gt;
               WHERE  lau.cd_usuario = las.cd_usuario&lt;br /&gt;
                      AND lau.nm_tabela = las.nm_tabela&lt;br /&gt;
                      AND lau.dt_insercao &amp;lt; las.dt_last_sync)&lt;br /&gt;
&lt;br /&gt;
SET @restantes = (SELECT Count(1)&lt;br /&gt;
                  FROM   #pode_apagar)&lt;br /&gt;
SET @msg = 'total para apagar '&lt;br /&gt;
           + Cast(@restantes AS VARCHAR(max)) + ' em '&lt;br /&gt;
           + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max))&lt;br /&gt;
           + 's'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
SET @r = 1;&lt;br /&gt;
&lt;br /&gt;
WHILE @r &amp;gt; 0&lt;br /&gt;
  BEGIN&lt;br /&gt;
      BEGIN TRAN&lt;br /&gt;
&lt;br /&gt;
      SET @t2 = Getdate()&lt;br /&gt;
&lt;br /&gt;
      DELETE TOP (50000) lau&lt;br /&gt;
      FROM   log_alteracao_usuario lau&lt;br /&gt;
      WHERE  EXISTS (SELECT TOP 1 1&lt;br /&gt;
                     FROM   #pode_apagar pa&lt;br /&gt;
                     WHERE  pa.cd_sinc_usuario = lau.cd_sinc_usuario)&lt;br /&gt;
&lt;br /&gt;
      SET @r = @@ROWCOUNT;&lt;br /&gt;
      SET @restantes = @restantes - @r&lt;br /&gt;
      SET @msg = 'apagados ' + Cast(@r AS VARCHAR(max))&lt;br /&gt;
                 + ' em '&lt;br /&gt;
                 + Cast(Datediff(ss, @t2, Getdate()) AS VARCHAR(max))&lt;br /&gt;
                 + 's, faltam '&lt;br /&gt;
                 + Cast(@restantes AS VARCHAR(max))&lt;br /&gt;
&lt;br /&gt;
      RAISERROR(@msg,0,1) WITH nowait&lt;br /&gt;
&lt;br /&gt;
      COMMIT TRANSACTION;&lt;br /&gt;
&lt;br /&gt;
      CHECKPOINT;&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence&lt;br /&gt;
  DROP TABLE #pode_apagar;&lt;br /&gt;
&lt;br /&gt;
SET @msg = 'finalizado em '&lt;br /&gt;
           + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max))&lt;br /&gt;
           + 's'&lt;br /&gt;
&lt;br /&gt;
RAISERROR(@msg,0,1) WITH nowait &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Scripts para token de &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
use bd_ssm_login;&lt;br /&gt;
&lt;br /&gt;
--INSERIR INICIALMENTE UM USUÁRIO NA TABELA USUARIO DA LOGIN&lt;br /&gt;
INSERT INTO USUARIO VALUES &lt;br /&gt;
('INTEGRADOR NOMEDAEMPRESA',    'int@nomeempresa',  'integrador@nomeempresa.com.br',    '3+ACVdglI558tfon1MRmVw==', 'SS',   NULL,   0,  1,  NULL,   GETDATE(),  NULL,   0);&lt;br /&gt;
&lt;br /&gt;
--INSERIR UM REGISTRO NA USUARIO_EMPRESA&lt;br /&gt;
INSERT INTO USUARIO_EMPRESA VALUES&lt;br /&gt;
((SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), NULL, 'nomedaempresaminusculo', 1, NULL, GETDATE(), 5)&lt;br /&gt;
&lt;br /&gt;
--INSERIR UM TOKEN PARA O USUÁRIO &lt;br /&gt;
INSERT INTO TOKEN VALUES&lt;br /&gt;
((SELECT SUBSTRING(REPLACE(CAST(NEWID() AS VARCHAR(40)), '-', ''), 1, 20)), &lt;br /&gt;
(SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), &lt;br /&gt;
GETDATE(), '2030-02-06 10:14:00.593')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM USUARIO WHERE NOME LIKE '%INTEGRADOR NOMEDAEMPRESA%';&lt;br /&gt;
SELECT * FROM USUARIO_EMPRESA WHERE CD_USUARIO = 7491&lt;br /&gt;
SELECT * FROM TOKEN WHERE CD_USUARIO = 7491&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM USUARIO_EMPRESA UE&lt;br /&gt;
	INNER JOIN USUARIO U&lt;br /&gt;
	 ON U.CD_USUARIO = UE.CD_USUARIO &lt;br /&gt;
WHERE NM_EMPRESA = 'lorenferhomolog'&lt;br /&gt;
AND UE.PAPEL = 5&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM TOKEN WHERE CD_USUARIO = 8353&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atalhos para tj2&lt;br /&gt;
Endpoints&lt;br /&gt;
&lt;br /&gt;
/api/about/&lt;br /&gt;
/importstatus&lt;br /&gt;
/importstatus/{id}&lt;br /&gt;
/importstatus-logged&lt;br /&gt;
/importstatus-logged/{id}&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;PRODUTO_ESTOQUE&amp;quot;:[{&amp;quot;id&amp;quot;:&amp;quot;-2147483648&amp;quot;,&amp;quot;cd_produto&amp;quot;:&amp;quot;111&amp;quot;,&amp;quot;cd_estoque&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;qt_estoque&amp;quot;:&amp;quot;999999&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
curl http://169.61.109.210:8185/erp-importer/campneushomolog/import -H 'SSAUTH_TOKEN: 123' -H 'Content-type: application/json' -X POST -d @dados.json&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;ROTA&amp;quot;:[{&amp;quot;cd_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ds_rota&amp;quot;:&amp;quot;SEGUNDA-FEIRA&amp;quot;,&amp;quot;ds_dias_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ativa&amp;quot;:&amp;quot;1&amp;quot;},{&amp;quot;cd_rota&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;ds_rota&amp;quot;:&amp;quot;TERCA-FEIRA&amp;quot;,&amp;quot;ds_dias_rota&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;ativa&amp;quot;:&amp;quot;1&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
* Inserir limitação de conexões para um aplicativo com Hikari GS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'SSBATCHES';&lt;br /&gt;
SELECT * FROM EMPRESA;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INSERT INTO EMPRESA_BD_PROPERTIES&lt;br /&gt;
SELECT &lt;br /&gt;
CD_EMPRESA, 'SSBATCHES', NULL, 2&lt;br /&gt;
FROM EMPRESA E &lt;br /&gt;
	INNER JOIN SYS.DATABASES SDBS&lt;br /&gt;
		ON ('BD_SSM_' + E.NM_EMPRESA) = SDBS.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atualizações de quantidades de conexões dos serviços de integração&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
--ERP-INTEGRATOR&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('pardalsorvetes','wsembalagens','paodahora','lacbom',&lt;br /&gt;
'gustamais','futuragrohomolog','mizu','auster','austerhomolog','yama','grupoisdrahomolog','bakerfoods','dicoplasthomolog','iranduba',&lt;br /&gt;
'motasa','serveng','fiore','gol','iranduba','lebrinha')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'TJ2'&lt;br /&gt;
	AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688)&lt;br /&gt;
&lt;br /&gt;
--UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
--WHERE APPNAME = 'TJ2'&lt;br /&gt;
--	AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688)&lt;br /&gt;
&lt;br /&gt;
--ERP-IMPORTER&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('campneus','lacbom','lebrinha','mizu')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'tj-importer'&lt;br /&gt;
	AND CD_EMPRESA IN (549,581,584,609)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
WHERE APPNAME = 'tj-importer'&lt;br /&gt;
	AND CD_EMPRESA IN (549,581,584,609)&lt;br /&gt;
&lt;br /&gt;
--ERP-IMPORTERNEW&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('montana','montanahomolog')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'tj-importernew'&lt;br /&gt;
	AND CD_EMPRESA IN (640,641)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15&lt;br /&gt;
WHERE APPNAME = 'tj-importernew'&lt;br /&gt;
	AND CD_EMPRESA IN (640,641)&lt;br /&gt;
&lt;br /&gt;
--NEOGRID&lt;br /&gt;
SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('davene','davenehomolog','casakm','casakmhomolog')&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMPRESA_BD_PROPERTIES &lt;br /&gt;
WHERE APPNAME = 'neogrid'&lt;br /&gt;
	AND CD_EMPRESA IN (587,599,642,643)&lt;br /&gt;
&lt;br /&gt;
UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 5&lt;br /&gt;
WHERE APPNAME = 'neogrid'&lt;br /&gt;
	AND CD_EMPRESA IN (587,599,642,643)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Contar quantidade de conexões por serviços&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use bd_ssm_adm;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(*), sd.name FROM sys.sysprocesses sp&lt;br /&gt;
	inner join sys.sysdatabases sd on sp.dbid = sd.dbid&lt;br /&gt;
 WHERE program_name LIKE '%tj-importer%' group by sd.name&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(*), sd.name FROM sys.sysprocesses sp&lt;br /&gt;
	inner join sys.sysdatabases sd on sp.dbid = sd.dbid&lt;br /&gt;
 WHERE program_name LIKE '%TJ2%' group by sd.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Magia do Jeff&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AND DS_OBSERVACAO LIKE '%[^A-Za-z@#$0-9@/_ .,+%!-]%'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script de limpeza de registros duplicados.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN TRANSACTION&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TABELA_TEMP (&lt;br /&gt;
    CD_USUARIO INT,&lt;br /&gt;
    LONGITUDE DECIMAL(10, 6),&lt;br /&gt;
    LATITUDE DECIMAL(10, 6),&lt;br /&gt;
    DT_COORD DATETIME,&lt;br /&gt;
    PRECISAO INT,&lt;br /&gt;
    ORIGEM VARCHAR(2)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TABELA_TEMP &lt;br /&gt;
    SELECT DISTINCT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM COORDENADA_RASTREAMENTO ORDER BY DT_COORD ASC;&lt;br /&gt;
&lt;br /&gt;
TRUNCATE TABLE COORDENADA_RASTREAMENTO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO COORDENADA_RASTREAMENTO (CD_USUARIO, LONGITUDE, LATITUDE, DT_COORD, PRECISAO, ORIGEM)&lt;br /&gt;
    SELECT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM TABELA_TEMP ORDER BY DT_COORD ASC;&lt;br /&gt;
&lt;br /&gt;
DROP TABLE TABELA_TEMP;&lt;br /&gt;
COMMIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Criação de usuários de clientes na makita&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM USUARIO_VINCULACAO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TGRUPOSUSUARIO (CD_USUARIO, CD_GRUPO)&lt;br /&gt;
	SELECT CD_USUARIO, 7 FROM TUSUARIO WHERE DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A=='&lt;br /&gt;
&lt;br /&gt;
INSERT INTO USUARIO_VINCULACAO (CD_TUSUARIO, CD_VINCULADO, CD_TIPO_VINCULADO)&lt;br /&gt;
	SELECT T.CD_USUARIO, C.CD_CLIENTE, 'C' FROM TUSUARIO T &lt;br /&gt;
		INNER JOIN  CLIENTE C ON C.NR_CNPJ_CPF = T.NM_GUERRA COLLATE SQL_Latin1_General_CP1_CI_AS&lt;br /&gt;
	WHERE T.DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A=='&lt;br /&gt;
	AND C.CD_CLIENTE IN (13913)&lt;br /&gt;
&lt;br /&gt;
INSERT INTO TUSUARIO (CD_USUARIO,NM_USUARIO,DS_EMAIL,DS_SENHA,ID_SUPER,NM_GUERRA,DT_EXPSENHA,DT_ALTSENHA,NR_VIOLACOES,&lt;br /&gt;
		CD_SITUACAO,DT_SITUACAO,DS_MOTIVO_SITUACAO,ID_ALT_SENHA_PROX_LOGIN,CD_TPUSUARIO,CD_EMPRESA,CD_FILIAL,ID_USER_SOFTSITE,&lt;br /&gt;
		ID_ATIVO,IMEI_GPS)&lt;br /&gt;
		SELECT ((SELECT MAX(CD_USUARIO) FROM TUSUARIO) + ROW_NUMBER() OVER(ORDER BY CD_CLIENTE ASC)) AS CD_USUARIO,&lt;br /&gt;
			CAST(C.NM_CLIENTE AS VARCHAR(40)) AS NM_USUARIO,&lt;br /&gt;
			C.DS_EMAIL,&lt;br /&gt;
			'4ZdOxz2fsGR3xqAJeGo82A==' AS DS_SENHA,&lt;br /&gt;
			'N' AS ID_SUPER,&lt;br /&gt;
			C.NR_CNPJ_CPF AS NM_GUERRA,&lt;br /&gt;
			NULL AS DT_EXPSENHA,&lt;br /&gt;
			GETDATE() AS DT_ALTSENHA,&lt;br /&gt;
			0 AS NR_VIOLACOES,&lt;br /&gt;
			1 AS CD_SITUACAO,&lt;br /&gt;
			GETDATE() AS DT_SITUACAO,&lt;br /&gt;
			NULL AS DS_MOTIVO_SITUACAO,&lt;br /&gt;
			NULL AS ID_ALT_SENHA_PROX_LOGIN,&lt;br /&gt;
			NULL AS CD_TPUSUARIO,&lt;br /&gt;
			NULL AS CD_EMPRESA,&lt;br /&gt;
			NULL AS CD_FILIAL,&lt;br /&gt;
			'N' AS ID_USER_SOFTSITE,&lt;br /&gt;
			NULL AS ID_ATIVO,&lt;br /&gt;
			NULL AS IMEI_GPS &lt;br /&gt;
		FROM CLIENTE C&lt;br /&gt;
		WHERE CD_CLIENTE IN (13913)  &lt;br /&gt;
	AND NOT EXISTS (SELECT TOP 1 1 FROM USUARIO_VINCULACAO UE WHERE C.CD_CLIENTE = UE.CD_VINCULADO)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visualização de falhas de importação&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DECLARE  @nomeBanco varchar(100); &lt;br /&gt;
&lt;br /&gt;
DECLARE bancos CURSOR FOR   &lt;br /&gt;
    SELECT name&lt;br /&gt;
    FROM sys.databases where &lt;br /&gt;
	name like 'bd_ssm_%' &lt;br /&gt;
	and state_desc = 'online' &lt;br /&gt;
	and name not like '%prontaentrega%' &lt;br /&gt;
	and name not like '%adm%' &lt;br /&gt;
	and name not like '%login%' &lt;br /&gt;
	and name not like '%cpf%' &lt;br /&gt;
	and name not like '%expressa%'&lt;br /&gt;
	and name not like '%makitahomolog%' &lt;br /&gt;
	and name not like '%prodentho_2%' &lt;br /&gt;
&lt;br /&gt;
OPEN bancos  &lt;br /&gt;
  &lt;br /&gt;
FETCH NEXT FROM bancos   &lt;br /&gt;
INTO @nomeBanco  &lt;br /&gt;
  &lt;br /&gt;
WHILE @@FETCH_STATUS = 0&lt;br /&gt;
BEGIN  &lt;br /&gt;
	EXEC ('use ' + @nomeBanco + ';' + 'SELECT TOP 1 ''NOME DO BANCO '' + REPLACE(''' + @nomeBanco +''', ''bd_ssm_'','''') , * FROM DW_IMPORTACAO WHERE ISNULL(RESULTADO, ''A'') IN (''F'', ''A'') ORDER BY 4 DESC;');&lt;br /&gt;
END   &lt;br /&gt;
CLOSE bancos;  &lt;br /&gt;
DEALLOCATE bancos;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Configurar base para usar o Claudus V3 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE LOG_ITEM_PEDIDO&lt;br /&gt;
ADD NR_ITEM_PEDIDO BIGINT &lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE LOG_ITEM_PEDIDO_RETORNO&lt;br /&gt;
ADD NR_ITEM_PEDIDO BIGINT &lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_DELETE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR DELETE&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'D' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM DELETED&lt;br /&gt;
&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_UPDATE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR UPDATE&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'U' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM INSERTED&lt;br /&gt;
	&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[TR_AUDIT_LOG_INSERT_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR INSERT&lt;br /&gt;
&lt;br /&gt;
	AS  &lt;br /&gt;
	DECLARE @TODAY DATETIME  &lt;br /&gt;
	SET @TODAY = GETDATE()  &lt;br /&gt;
	&lt;br /&gt;
	INSERT INTO LOG_ITEM_PEDIDO&lt;br /&gt;
	(&lt;br /&gt;
		DT_LOG&lt;br /&gt;
		,ID_KEY&lt;br /&gt;
		,TP_OPERACAO&lt;br /&gt;
		,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
	)&lt;br /&gt;
	SELECT &lt;br /&gt;
		@TODAY as DT_LOG&lt;br /&gt;
		,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY&lt;br /&gt;
&lt;br /&gt;
			,'I' as TP_OPERACAO&lt;br /&gt;
			,CD_PEDIDO_PALM&lt;br /&gt;
		,NR_ITEM_PEDIDO&lt;br /&gt;
		,CD_PRODUTO&lt;br /&gt;
&lt;br /&gt;
		FROM INSERTED&lt;br /&gt;
GO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consulta para trazer os pedidos auto do geosales3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT cd_pedido_cliente	 [cdPedidoCliente],&lt;br /&gt;
	   		   pa.cnpj_cliente		 [cliente.nrCnpjCpf],&lt;br /&gt;
	   		   c.cd_cliente			 [cliente.cdCliente],&lt;br /&gt;
	   		   c.nm_cliente			 [cliente.nmCliente],&lt;br /&gt;
	   		   c.cd_org_venda_padrao [cliente.orgVendaPadrao.cdOrgVenda],&lt;br /&gt;
	   		   ov.nm_organizacao	 [cliente.orgVendaPadrao.nmOrganizacao],&lt;br /&gt;
	   		   c.cd_vendedor_padrao  [cliente.vendedorPadrao.codigo],&lt;br /&gt;
	   		   v.nm_vendedor		 [cliente.vendedorPadrao.nome],&lt;br /&gt;
	   		   c.cd_tab_preco_padrao [cliente.tabPrecoPadrao.cdTabPreco],&lt;br /&gt;
	   		   tp.ds_tab_preco 		 [cliente.tabPrecoPadrao.dsTabPreco],&lt;br /&gt;
	   		   c.nm_estado           [cliente.enderecoPadrao.nmEstado],&lt;br /&gt;
	   		   c.cd_cond_pgto_padrao [cliente.condPgtoPadrao.cdCondPgto],&lt;br /&gt;
	   		   cp.ds_cond_pgto 		 [cliente.condPgtoPadrao.dsCondPgto],&lt;br /&gt;
	   		   c.cd_meio_pgto_padrao [cliente.meioPagamentoPadrao.cdMeioPgto], &lt;br /&gt;
       		   mp.ds_meio_pgto       [cliente.meioPagamentoPadrao.dsMeioPgto],&lt;br /&gt;
	   		   cnpj_fornecedor		 [cnpjFornecedor],&lt;br /&gt;
	   		   dt_emissao			 [dataEmissaoStr],&lt;br /&gt;
	   		   cp.cd_cond_pgto		 [condicaoPagamento.cdCondPgto],&lt;br /&gt;
	   		   cp.ds_cond_pgto		 [condicaoPagamento.dsCondPgto],&lt;br /&gt;
	   		   cp.pr_desconto		 [condicaoPagamento.prDescontoStr],&lt;br /&gt;
	   		   dt_vencimento		 [dataVencimentoStr],&lt;br /&gt;
	   		   cd_tipo_frete		 [frete.idTipoFrete],&lt;br /&gt;
	   		   motivo_bonificacao	 [motivoBonificacao],&lt;br /&gt;
	   		   dt_entrega			 [dataEntregaStr],&lt;br /&gt;
	   		   obs_pedido			 [observacaoPedido],&lt;br /&gt;
	   		   pa.cd_tipo_pedido	 [tipoPedido.codTipo],&lt;br /&gt;
	   		   tmp.ds_tipo			 [tipoPedido.descTipo],&lt;br /&gt;
	   		   id_utilizado			 [idUtilizadoStr]&lt;br /&gt;
		FROM   pedido_auto pa &lt;br /&gt;
		INNER JOIN cliente c ON pa.cnpj_cliente = c.nr_cnpj_cpf&lt;br /&gt;
		INNER JOIN organizacao_venda ov ON c.cd_org_venda_padrao = ov.cd_org_venda&lt;br /&gt;
		INNER JOIN vendedor v ON c.cd_vendedor_padrao = v.cd_vendedor&lt;br /&gt;
		INNER JOIN tabela_preco tp ON c.cd_tab_preco_padrao = tp.cd_tab_preco&lt;br /&gt;
		INNER JOIN condicao_pagamento cp ON c.cd_cond_pgto_padrao = cp.cd_cond_pgto &lt;br /&gt;
		INNER JOIN meio_pagamento mp ON mp.cd_meio_pgto = c.cd_meio_pgto_padrao&lt;br /&gt;
		INNER JOIN tipo_movimento_pedido tmp ON pa.cd_tipo_pedido = tmp.cd_tipo&lt;br /&gt;
		WHERE ( EXISTS (	SELECT TOP 1 1 &lt;br /&gt;
						   	FROM Fn_obter_cliente_usuario(#usuario.codigo#) fn &lt;br /&gt;
						   	WHERE ( fn.cd_cliente = c.cd_cliente ) &lt;br /&gt;
						) &lt;br /&gt;
			  ) AND pa.id_utilizavel = 'S' AND id_utilizado = 'N'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Scripts de análise de configuração do novo aplicativo de rastreamento&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--CONFIGURACAO&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_BASE_URL%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_CAPTURAR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_FUNCTION_MODE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_START%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_FINISH%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_LOGGED_APP%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_MIN_DISTANCE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_N_TRY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_ENVIAR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_INSERIR_LOG%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_SLEEP_TRY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_STOP_SERVICE_PERMISSION%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TIMER_BATTERY%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TRIANGULATION_ACTIVE%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_VIEW_CONFIGURATION%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_GPS%'&lt;br /&gt;
SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_LOCK%'&lt;br /&gt;
&lt;br /&gt;
--IMEI USUARIO&lt;br /&gt;
SELECT IMEI_GPS, * FROM TUSUARIO WHERE CD_USUARIO = 181 --358692106755103&lt;br /&gt;
--VENDEDOR DE ANÁLISE&lt;br /&gt;
SELECT IMEI, * FROM DADOS_VENDEDOR WHERE CD_VENDEDOR = 37; --358692106755103&lt;br /&gt;
--VERIFICAR STATUS DO GPS&lt;br /&gt;
SELECT * FROM GPS_STATUS WHERE CD_USUARIO = 181 order by 3 desc;&lt;br /&gt;
--VERIFICAR COORDENADAS&lt;br /&gt;
SELECT * FROM COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 181 order by 5 desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--teste&lt;br /&gt;
SELECT * FROM bd_ssm_webinargeosales..GPS_STATUS WHERE CD_USUARIO = 155 order by 3 desc;&lt;br /&gt;
SELECT * FROM bd_ssm_webinargeosales..COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 155 ORDER BY 5 DESC;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--GPS STATUS&lt;br /&gt;
--A - ATIVO - (GPS OU INTERNET)&lt;br /&gt;
--D - DESATIVADO - (GPS OU INTERNET)&lt;br /&gt;
--C - DESTRUIÇÃO DO SERVIÇO DE CONFIGURACAO &lt;br /&gt;
--R - DESTRUIÇÃO DO SERVIÇO DE RASTREAMENTO&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Achar tabelas que tem a coluna Y&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select SO.NAME, * from sys.columns SC&lt;br /&gt;
	INNER JOIN sys.objects SO&lt;br /&gt;
	ON SC.object_id = SO.object_id where SC.name like '%cd_org_venda%'&lt;br /&gt;
	and type = 'U'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Migrar imagens de catálogo para produto imagem no evo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN TRANSACTION&lt;br /&gt;
&lt;br /&gt;
DECLARE @Imagens TABLE(DESC_FOTO VARCHAR(100), URL VARCHAR(1000), ID_ATIVO bit)&lt;br /&gt;
DECLARE @ProdutoImagens TABLE(CD_PRODUTO INT, CD_IMAGEM INT, ID_PRINCIPAL CHAR(1), ID_ATIVO BIT)&lt;br /&gt;
INSERT INTO @Imagens&lt;br /&gt;
	SELECT DISTINCT DS_FOTO, DS_URL, 1 FROM CATALOGO_FOTO;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO IMAGEM&lt;br /&gt;
	SELECT ROW_NUMBER() OVER(ORDER BY DESC_FOTO ASC), DESC_FOTO, URL, ID_ATIVO FROM @Imagens;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO @ProdutoImagens&lt;br /&gt;
	SELECT CF.CD_PRODUTO, I.CD_IMAGEM, CF.ID_PRINCIPAL, 1 FROM&lt;br /&gt;
		IMAGEM I&lt;br /&gt;
			INNER JOIN CATALOGO_FOTO CF &lt;br /&gt;
				ON I.URL_IMAGEM  = CF.DS_URL&lt;br /&gt;
	WHERE CD_PRODUTO IS NOT NULL&lt;br /&gt;
&lt;br /&gt;
INSERT INTO PRODUTO_IMAGEM&lt;br /&gt;
	SELECT DISTINCT CD_PRODUTO, CD_IMAGEM, ID_PRINCIPAL, ID_ATIVO FROM&lt;br /&gt;
		@ProdutoImagens&lt;br /&gt;
COMMIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* VERIFICAR PORQUE O PRODUTO NÃO APARECE PRO CLIENTE APÓS O PREENCHIMENTO DO CABEÇALHO&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--consulta que traz os pedido quando multiplos estoques está ativado&lt;br /&gt;
SELECT&lt;br /&gt;
		p.cd_produto,*&lt;br /&gt;
	FROM fn_obter_produtos_com_paginacao('0101089', 2,&lt;br /&gt;
			38, null) pot&lt;br /&gt;
	INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto&lt;br /&gt;
&lt;br /&gt;
		--INNER JOIN familia_produto fp ON p.cd_familia = fp.cd_familia AND fp.cd_familia = #{familia.key}&lt;br /&gt;
&lt;br /&gt;
	INNER JOIN lista_produto lp WITH(NOLOCK) ON (lp.cd_produto = pot.cd_produto AND lp.cd_org_venda = pot.cd_org_venda AND lp.cd_tab_preco = pot.cd_tab_preco)&lt;br /&gt;
	where&lt;br /&gt;
		 EXISTS (&lt;br /&gt;
					SELECT 1 FROM produto_estoque pe &lt;br /&gt;
					WHERE&lt;br /&gt;
						pe.cd_produto = p.cd_produto AND pe.cd_estoque = 200&lt;br /&gt;
				)&lt;br /&gt;
&lt;br /&gt;
	ORDER BY p.nm_produto OFFSET 0 ROWS FETCH NEXT 18 ROWS ONLY&lt;br /&gt;
&lt;br /&gt;
--funcão de paginação&lt;br /&gt;
CREATE FUNCTION [dbo].[fn_obter_produtos_com_paginacao] (&lt;br /&gt;
	@cdOrgVenda VARCHAR(20),&lt;br /&gt;
	@cdTabPreco INT,&lt;br /&gt;
	@cdCliente INT,&lt;br /&gt;
	@param VARCHAR(100))&lt;br /&gt;
RETURNS TABLE&lt;br /&gt;
AS&lt;br /&gt;
RETURN (&lt;br /&gt;
	WITH org_venda AS (&lt;br /&gt;
		SELECT&lt;br /&gt;
			ov.cd_org_venda,&lt;br /&gt;
			ovc.cd_cliente,&lt;br /&gt;
			ov.cd_estoque,&lt;br /&gt;
	&lt;br /&gt;
		ovc.cd_tab_preco&lt;br /&gt;
		FROM organizacao_venda ov WITH(NOLOCK)&lt;br /&gt;
		INNER JOIN org_venda_cliente ovc WITH(NOLOCK) ON ov.cd_org_venda = ovc.cd_org_venda&lt;br /&gt;
		WHERE ov.cd_org_venda = @cdOrgVenda AND ovc.cd_tab_preco = @cdTabPreco&lt;br /&gt;
			AND ovc.cd_cliente = @cdCliente&lt;br /&gt;
	&lt;br /&gt;
), produto_organizacao_tabela AS ( &lt;br /&gt;
		SELECT&lt;br /&gt;
			p.cd_produto, &lt;br /&gt;
			p.nm_produto,&lt;br /&gt;
			ov.cd_cliente,&lt;br /&gt;
			ov.cd_org_venda, &lt;br /&gt;
			ov.cd_estoque, &lt;br /&gt;
		ov.cd_tab_preco&lt;br /&gt;
		FROM produto p WITH(NOLOCK)&lt;br /&gt;
		CROSS JOIN org_venda ov WITH(NOLOCK)&lt;br /&gt;
		WHERE (&lt;br /&gt;
				(@param IS NULL)&lt;br /&gt;
 OR &lt;br /&gt;
				(p.nm_produto LIKE '%' + @param + '%' &lt;br /&gt;
				 OR p.cd_produto LIKE '%' + @param + '%' &lt;br /&gt;
				 OR p.cd_referencia LIKE '%' + @param + '%'&lt;br /&gt;
				 OR p.cod_barras LIKE '%' + @param + '%'&lt;br /&gt;
				 OR p.cd_ncm LIKE '%' + @param + '%')&lt;br /&gt;
			)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	SELECT&lt;br /&gt;
		p.cd_pr&lt;br /&gt;
oduto,&lt;br /&gt;
		pot.cd_org_venda,&lt;br /&gt;
		pot.cd_tab_preco,&lt;br /&gt;
		pot.cd_estoque&lt;br /&gt;
	FROM  produto_organizacao_tabela pot&lt;br /&gt;
	INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto &lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remover usuários inválidos de uma base mssql&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
declare @db varchar(50)&lt;br /&gt;
declare @cont int&lt;br /&gt;
declare @usuariodb varchar(50)&lt;br /&gt;
declare @cmd varchar (200)&lt;br /&gt;
--set @db = (SELECT '?' AS db_name)&lt;br /&gt;
--print @db&lt;br /&gt;
create table ##usuariobd (cod int primary key identity, nome_usuario varchar (50), nome_login&lt;br /&gt;
varchar(50))&lt;br /&gt;
insert into ##usuariobd&lt;br /&gt;
select su.name, sl.name--, db_name()&lt;br /&gt;
from [dbo].[sysusers] su&lt;br /&gt;
left join sys.syslogins sl on su.sid = sl.sid&lt;br /&gt;
where su.uid &amp;gt; 4&lt;br /&gt;
and su.name not like 'db_%'&lt;br /&gt;
and su.name &amp;lt;&amp;gt; 'MS_DataCollectorInternalUser'&lt;br /&gt;
and issqlrole &amp;lt;&amp;gt; 1&lt;br /&gt;
and sl.name is null&lt;br /&gt;
order by 1&lt;br /&gt;
set @cont = (select MAX(cod) from ##usuariobd)&lt;br /&gt;
while @cont &amp;gt;0&lt;br /&gt;
begin&lt;br /&gt;
set @usuariodb = (select nome_usuario from ##usuariobd where cod = @cont)&lt;br /&gt;
IF EXISTS (SELECT SCHEMA_ID FROM sys.schemas WHERE [name] = @usuariodb)&lt;br /&gt;
BEGIN&lt;br /&gt;
print 'Deletando Schema ' + @usuariodb&lt;br /&gt;
set @cmd = 'drop schema [' + @usuariodb + ']'&lt;br /&gt;
print @cmd&lt;br /&gt;
exec (@cmd)&lt;br /&gt;
END&lt;br /&gt;
print 'Deletando usuário '+ @usuariodb + '!'&lt;br /&gt;
set @cmd= 'drop user [' + @usuariodb + ']'&lt;br /&gt;
exec (@cmd)&lt;br /&gt;
set @cont = @cont -1&lt;br /&gt;
end&lt;br /&gt;
drop table ##usuariobd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pegar dados servidor de banco de dados&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT @@SERVERNAME,&lt;br /&gt;
 CONNECTIONPROPERTY('net_transport') AS net_transport,&lt;br /&gt;
 CONNECTIONPROPERTY('protocol_type') AS protocol_type,&lt;br /&gt;
 CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,&lt;br /&gt;
 CONNECTIONPROPERTY('local_net_address') AS local_net_address,&lt;br /&gt;
 CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,&lt;br /&gt;
 CONNECTIONPROPERTY('client_net_address') AS client_net_address&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Agregador de dados &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT c.cd_cliente, STRING_AGG(r.DS_ROTA, ', ')&lt;br /&gt;
FROM cliente c&lt;br /&gt;
LEFT JOIN CLIENTE_ROTA cr on c.CD_CLIENTE = cr.CD_CLIENTE&lt;br /&gt;
LEFT JOIN ROTA r on r.CD_ROTA = cr.CD_ROTA&lt;br /&gt;
GROUP BY c.cd_cliente&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script para validar se o pedido pode ser copiado&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
			-- pedido &lt;br /&gt;
			P.cd_pedido_palm           AS [cdPedidoPalm],&lt;br /&gt;
			P.dt_emissao               AS [dtEmissao],&lt;br /&gt;
			P.dt_vencimento            AS [dtVencimento],&lt;br /&gt;
			P.cd_pedido_cliente        AS [cdPedidoCliente],&lt;br /&gt;
			P.cd_pedido                AS [cdPedido],&lt;br /&gt;
			P.dt_entrega               AS [dtEntrega],&lt;br /&gt;
			P.dt_faturamento           AS [dtFaturamento],&lt;br /&gt;
			P.dt_entrega_calculada     AS [dtEntregaCalculada],&lt;br /&gt;
			P.id_prioridade            AS [idPrioridade],&lt;br /&gt;
			P.ds_observacao            AS [observacao],&lt;br /&gt;
			P.ds_obs_frete             AS [observacaoFrete],&lt;br /&gt;
			P.ds_observacao_nf         AS [observacaoNotaFiscal],&lt;br /&gt;
			P.nm_rz_social_entr        AS [nmRazaoSocialEntrega],&lt;br /&gt;
			P.nr_cnpj_cpf_entr         AS [cpfCnpjEntrega],&lt;br /&gt;
			P.nr_cgf_entr              AS [cgfEntrega],&lt;br /&gt;
			P.nm_responsavel           AS [nomeResponsavel],&lt;br /&gt;
			P.id_orcamento             AS [orcamento],&lt;br /&gt;
			P.cd_rota                  AS [cdRota],&lt;br /&gt;
			P.id_efetivado             AS [efetivado],&lt;br /&gt;
			P.pc_desconto              AS [pcDesconto],&lt;br /&gt;
			P.id_cross_docking         AS [crossDocking],&lt;br /&gt;
			P.pc_desc_bonif            AS [pcDescBonif],&lt;br /&gt;
			P.vr_outros_descontos      AS [outrosDescontos],&lt;br /&gt;
			P.vr_frete_manual          AS [vrFreteManual],&lt;br /&gt;
			P.vr_frete_manual_original AS [vrFreteManualOriginal],&lt;br /&gt;
			P.acrescimo_dias           AS [acrescimoDias],&lt;br /&gt;
			P.qt_quilometros_entrega   AS [qtQuilometrosEntrega],&lt;br /&gt;
			P.qt_quilometros_cobranca  AS [qtQuilometrosCobranca],&lt;br /&gt;
			-- cliente --&amp;gt;&lt;br /&gt;
			C.cd_cliente                AS [cliente@cdCliente],&lt;br /&gt;
			C.cd_aprovacao              AS [cliente@cdAprCliente],&lt;br /&gt;
			CASE WHEN&lt;br /&gt;
				C.origem = 'CLIENTE_APROVACAO' THEN 1&lt;br /&gt;
				ELSE 0&lt;br /&gt;
			END                         AS [cliente@isProspect],&lt;br /&gt;
		-- organizacao venda&lt;br /&gt;
			OV.cd_org_venda 			AS [orgVenda@cdOrgVenda],&lt;br /&gt;
			-- tipo pedido&lt;br /&gt;
			TMP.cd_tipo                 AS [tipoPedido@codTipo],&lt;br /&gt;
			-- vendedor&lt;br /&gt;
			V.cd_vendedor               AS [vendedor@codigo],&lt;br /&gt;
			-- tabela preco&lt;br /&gt;
			TP.cd_tab_preco             AS [tabPreco@cdTabPreco],&lt;br /&gt;
			-- estoque&lt;br /&gt;
			P.cd_estoque                AS [estoque@cdEstoque],&lt;br /&gt;
			-- canal de venda&lt;br /&gt;
			p.cd_canal                  AS [canalVenda@codigo],&lt;br /&gt;
			-- meio pagamento&lt;br /&gt;
			P.cd_meio_pgto 			    AS [meioPagamento@cdMeioPgto],&lt;br /&gt;
			-- meio pagamento secundario&lt;br /&gt;
			P.cd_meio_pgto_sec 			AS [meioPgtoSecundario@cdMeioPgto],&lt;br /&gt;
			-- cond. pgto &lt;br /&gt;
			P.cd_cond_pgto              AS [condPgto@cdCondPgto],&lt;br /&gt;
			-- cond. pgto secundario &lt;br /&gt;
			P.cd_cond_pgto_sec			AS [condPgtoSecundario@cdCondPgto],&lt;br /&gt;
			-- tipo frete &lt;br /&gt;
			P.id_tipo_frete             AS [tipoFrete@idTipoFrete],&lt;br /&gt;
			-- transportadora &lt;br /&gt;
			P.cd_transportadora			 AS [transportadora@codigo],&lt;br /&gt;
			-- transportadora auxiliar &lt;br /&gt;
			p.cd_transportadora_auxiliar AS [transportadoraAuxiliar@codigo],&lt;br /&gt;
			-- situacao pedido &lt;br /&gt;
			SP.cd_st_pedido				AS [situacaoPedido@cdStPedido],&lt;br /&gt;
			SP.ds_st_pedido			    AS [situacaoPedido@dsStPedido],&lt;br /&gt;
			-- pedido pai &lt;br /&gt;
			PPAI.cd_pedido_palm         AS [pedidoPaiDTO@cdPedidoPalm],&lt;br /&gt;
			PPAI.dt_emissao             AS [pedidoPaiDTO@dtEmissao],&lt;br /&gt;
			PPAI.vr_pedido_impostos     AS [pedidoPaiDTO@vrPedidoImpostos],&lt;br /&gt;
			-- endereco entrega &lt;br /&gt;
			P.cd_endereco_entrega       AS [enderecoEntrega@cdEndereco],&lt;br /&gt;
			P.ds_endereco_entr          AS [enderecoEntrega@dsEndereco],&lt;br /&gt;
			P.nm_bairro_entr            AS [enderecoEntrega@nmBairro],&lt;br /&gt;
			P.nm_cidade_entr            AS [enderecoEntrega@nmCidade],&lt;br /&gt;
			P.nm_estado_entr            AS [enderecoEntrega@nmEstado],&lt;br /&gt;
			P.nr_cep_entr               AS [enderecoEntrega@nrCep],&lt;br /&gt;
			P.nr_fone_entr              AS [enderecoEntrega@nrTelefone],&lt;br /&gt;
			P.nr_cnpj_cpf_entr          AS [enderecoEntrega@nrCnpjCpf],&lt;br /&gt;
			-- endereco cobranca&lt;br /&gt;
			P.cd_endereco_cobranca      AS [enderecoCobranca@cdEndereco],&lt;br /&gt;
			P.ds_endereco_cobr          AS [enderecoCobranca@dsEndereco],&lt;br /&gt;
			P.nm_bairro_cobr            AS [enderecoCobranca@nmBairro],&lt;br /&gt;
			P.nm_cidade_cobr            AS [enderecoCobranca@nmCidade],&lt;br /&gt;
			P.nm_estado_cobr            AS [enderecoCobranca@nmEstado],&lt;br /&gt;
			P.nr_cep_cobr               AS [enderecoCobranca@nrCep],&lt;br /&gt;
			P.nr_fone_cobr              AS [enderecoCobranca@nrTelefone],&lt;br /&gt;
			P.nr_cnpj_cpf_cobr          AS [enderecoCobranca@nrCnpjCpf],&lt;br /&gt;
			-- pedido informacao extra &lt;br /&gt;
			PIEXT.cd_inf                AS [pedInfoExtra@cdInf],&lt;br /&gt;
			PIEXT.ds_inf                AS [pedInfoExtra@dsLabel],&lt;br /&gt;
			PIEXT.cd_tipo_inf           AS [pedInfoExtra@cdTipoInf],&lt;br /&gt;
			PIEXT.ds_livre_inf          AS [pedInfoExtra@dsLivreInf],&lt;br /&gt;
			-- tramitacao_pedido&lt;br /&gt;
			trp.cd_pedido_palm			AS [tramitacaoPedido@cdPedidoPalm],&lt;br /&gt;
			trp.cd_pedido_palm			AS [tramitacaoPedido@pedido@cdPedidoPalm], &lt;br /&gt;
			trp.cd_tramitacao			AS [tramitacaoPedido@tramitacao@cdTramitacao], &lt;br /&gt;
			tram.ds_tramitacao			AS [tramitacaoPedido@tramitacao@dsTramitacao], &lt;br /&gt;
			trp.ds_observacao			AS [tramitacaoPedido@dsObservavao], &lt;br /&gt;
			trp.dt_tramitacao			AS [tramitacaoPedido@dtTramitacao], &lt;br /&gt;
			trp.cd_usuario			    AS [tramitacaoPedido@usuarioSistema@codigo],&lt;br /&gt;
	    	-- tramitacao_pedido&lt;br /&gt;
	    	P.cd_motivo_pedido			AS [motivoPedido@cdMotivoPedido],&lt;br /&gt;
	    	mot.ds_motivo_pedido		AS [motivoPedido@dsMotivoPedido]&lt;br /&gt;
		FROM vw_pedidos P&lt;br /&gt;
		INNER JOIN (SELECT cd_cliente, nm_cliente, cd_aprovacao, origem FROM vw_clientes) C on (P.cd_cliente = C.cd_cliente)&lt;br /&gt;
		INNER JOIN (SELECT cd_org_venda, nm_organizacao FROM organizacao_venda WITH (NOLOCK)) OV ON P.cd_org_venda = OV.cd_org_venda&lt;br /&gt;
		INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo FROM tipo_movimento_pedido) TMP on (P.cd_tipo_pedido = TMP.cd_tipo)&lt;br /&gt;
		INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor) V ON P.cd_vendedor = V.cd_vendedor&lt;br /&gt;
		INNER JOIN tabela_preco TP ON P.cd_tab_preco = TP.cd_tab_preco&lt;br /&gt;
		LEFT JOIN situacao_pedido sp ON P.cd_st_pedido = sp.cd_st_pedido&lt;br /&gt;
		LEFT JOIN (SELECT cd_pedido_palm, dt_emissao, vr_pedido_impostos FROM vw_pedidos WITH(NOLOCK)) ppai ON P.cd_pedido_palm_pai = ppai.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN vw_pedidos_informacoes_extras PIEXT ON P.cd_pedido_palm = PIEXT.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN vw_tramitacoes_pedidos trp WITH(NOLOCK) ON P.cd_pedido_palm = trp.cd_pedido_palm&lt;br /&gt;
		LEFT JOIN tramitacao tram ON trp.cd_tramitacao = tram.cd_tramitacao&lt;br /&gt;
		LEFT JOIN motivo_pedido mot ON mot.cd_motivo_pedido = P.cd_motivo_pedido&lt;br /&gt;
		WHERE&lt;br /&gt;
			P.cd_pedido_palm = 20063013102232739&lt;br /&gt;
			AND (&lt;br /&gt;
					(&lt;br /&gt;
						(P.origem = 'PEDIDO_RETORNO' OR P.origem = 'PEDIDO')&lt;br /&gt;
						AND EXISTS (&lt;br /&gt;
							-- org_venda_cliente&lt;br /&gt;
							SELECT TOP 1 1 FROM org_venda_cliente OVC&lt;br /&gt;
							WHERE&lt;br /&gt;
								P.cd_org_venda = OVC.cd_org_venda &lt;br /&gt;
								AND P.cd_cliente = OVC.cd_cliente&lt;br /&gt;
								AND P.cd_vendedor = OVC.cd_vendedor &lt;br /&gt;
								AND P.cd_tab_preco = OVC.cd_tab_preco&lt;br /&gt;
						&lt;br /&gt;
						)&lt;br /&gt;
					)	&lt;br /&gt;
				OR&lt;br /&gt;
					(&lt;br /&gt;
						P.origem = 'PEDIDO_APROVACAO'&lt;br /&gt;
						AND EXISTS (&lt;br /&gt;
						-- parametros_cliente_prospect&lt;br /&gt;
							SELECT TOP 1 1 FROM parametros_venda_prospect PCP&lt;br /&gt;
							WHERE&lt;br /&gt;
								P.cd_org_venda = PCP.cd_org_venda &lt;br /&gt;
								AND P.cd_vendedor = PCP.cd_vendedor &lt;br /&gt;
								AND P.cd_tab_preco = PCP.cd_tab_preco&lt;br /&gt;
						)&lt;br /&gt;
					)&lt;br /&gt;
			)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script para criar um usuário com todos os acessos no EVO/NuPortal &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- __   __   __           __   ___  __  &lt;br /&gt;
--/ _` /  \ |  \    |  | /__` |__  |__) &lt;br /&gt;
--\__&amp;gt; \__/ |__/    \__/ .__/ |___ |  \ &lt;br /&gt;
                                     &lt;br /&gt;
&lt;br /&gt;
-- 1º utilize a base desejada e insira o nome da empresa em @nm_empresa&lt;br /&gt;
	use bd_ssm_biodinamicajucianodev&lt;br /&gt;
	DECLARE @nm_empresa VARCHAR(200) = 'biodinamicajucianodev'&lt;br /&gt;
&lt;br /&gt;
-- 2º escolha um nome(novo ou já existente) para o perfil que terá acesso a tudo, este nome também será a senha para o portal EVO.&lt;br /&gt;
	DECLARE @nm_new_perfil VARCHAR(100) = 'dog'&lt;br /&gt;
&lt;br /&gt;
-- 3º Escolha um usuário da base escolhida que não exista na USUARIO_PERFIL através da query abaixo. &lt;br /&gt;
-- Observe que a consulta utiliza as variáveis acima para funcionar, então selecione-as ao executá-la.&lt;br /&gt;
	SELECT DISTINCT (u.cd_usuario), ue.cd_tusuario, u.nome, u.login, u.email, u.senha, u.salt, u.dt_criacao, u.dt_validade, u.valido FROM bd_ssm_login..usuario u&lt;br /&gt;
	INNER JOIN bd_ssm_login..usuario_empresa ue ON u.cd_usuario = ue.cd_usuario&lt;br /&gt;
	INNER JOIN perfil_usuario pu ON pu.cd_usuario !=  u.cd_usuario&lt;br /&gt;
	WHERE (ue.nm_empresa LIKE '%'+ @nm_empresa +'%' OR u.login LIKE '%'+ @nm_empresa +'%')&lt;br /&gt;
--  AND ue.papel = 2&lt;br /&gt;
--  AND u.login like '%jbonatto%'&lt;br /&gt;
--  AND u.cd_usuario = 28607&lt;br /&gt;
--  AND ue.cd_tusuario IN (170, 205)&lt;br /&gt;
&lt;br /&gt;
--PAPÉIS:&lt;br /&gt;
--NENHUM(-1)&lt;br /&gt;
--SUPORTE(0)&lt;br /&gt;
--GESTOR(1)&lt;br /&gt;
--VENDEDOR(2)&lt;br /&gt;
--CLIENTE(3)&lt;br /&gt;
--BACKOFFICE(4)&lt;br /&gt;
--INTEGRADOR(5)&lt;br /&gt;
&lt;br /&gt;
-- 5º Substitua NULL pelo bd_ssm_login..cd_usuario escolhido em @cdUsuario_dog. o Script só executará se a variável @cdUsuario_dog estiver diferente de NULL&lt;br /&gt;
DECLARE @cdUsuario_dog INT = NULL;&lt;br /&gt;
-- Porque dog? Dog invertido fica god, que dá o sentido de god user.&lt;br /&gt;
&lt;br /&gt;
-- 6º Após os passos acima, verifique se as variáveis acima (@nm_empresa, @nm_new_perfil, @cdUsuario_dog) estão com os valores corretos.&lt;br /&gt;
&lt;br /&gt;
-- 7º Execute todo este script. Se estiver no Microsoft SQL Server Management Studio apenas pressione F5.&lt;br /&gt;
-- Se tudo ocorrer bem você visualizará o usuário escolhido no último select resultante deste script.&lt;br /&gt;
&lt;br /&gt;
-- Após executá-lo não pare o script, pois isso pode gerar um processo travado/bloqueado.&lt;br /&gt;
&lt;br /&gt;
DECLARE @cd_perfil_already_exists INT = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil)&lt;br /&gt;
&lt;br /&gt;
BEGIN TRANSACTION &lt;br /&gt;
BEGIN TRY&lt;br /&gt;
	IF (@cdUsuario_dog IS NOT NULL &lt;br /&gt;
		AND @nm_new_perfil IS NOT NULL &lt;br /&gt;
		AND @nm_new_perfil &amp;lt;&amp;gt; '' &lt;br /&gt;
		AND (SELECT DB_NAME()) = 'bd_ssm_' + @nm_empresa&lt;br /&gt;
		AND NOT EXISTS (SELECT TOP 1 1 FROM PERFIL_USUARIO WHERE CD_USUARIO = @cdUsuario_dog)&lt;br /&gt;
		)&lt;br /&gt;
		BEGIN&lt;br /&gt;
			DECLARE @I INT = 1&lt;br /&gt;
			DECLARE @cdPerfilChoosed INT;&lt;br /&gt;
			DECLARE @cdAcaoTemp INT;&lt;br /&gt;
&lt;br /&gt;
			--Decidindo o perfil a ser usado &lt;br /&gt;
			IF(@cd_perfil_already_exists IS NULL) &lt;br /&gt;
				BEGIN&lt;br /&gt;
					INSERT INTO PERFIL(&lt;br /&gt;
						CD_PERFIL, &lt;br /&gt;
						NM_PERFIL&lt;br /&gt;
					) VALUES (&lt;br /&gt;
						(SELECT ISNULL((SELECT MAX(CD_PERFIL) FROM PERFIL), 1) + 1), &lt;br /&gt;
						@nm_new_perfil&lt;br /&gt;
					)&lt;br /&gt;
					SET @cdPerfilChoosed = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil)&lt;br /&gt;
				END&lt;br /&gt;
			ELSE&lt;br /&gt;
				BEGIN&lt;br /&gt;
					SET @cdPerfilChoosed = @cd_perfil_already_exists&lt;br /&gt;
				END&lt;br /&gt;
&lt;br /&gt;
			--Vinculando usuário a um perfil&lt;br /&gt;
			INSERT INTO PERFIL_USUARIO (CD_PERFIL, CD_USUARIO)&lt;br /&gt;
			VALUES (@cdPerfilChoosed, @cdUsuario_dog)&lt;br /&gt;
&lt;br /&gt;
			--Inserindo ações para o perfil escolhido&lt;br /&gt;
&lt;br /&gt;
			DECLARE @acoes TABLE(&lt;br /&gt;
				CD_RANK INT,&lt;br /&gt;
				CD_ACAO INT&lt;br /&gt;
			)&lt;br /&gt;
&lt;br /&gt;
			;WITH acoes AS(&lt;br /&gt;
				SELECT &lt;br /&gt;
					ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rk, &lt;br /&gt;
					CD_ACAO &lt;br /&gt;
				FROM BD_SSM_LOGIN..ACAO &lt;br /&gt;
				WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO &amp;lt;&amp;gt; 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO'&lt;br /&gt;
			) INSERT INTO @acoes SELECT rk, CD_ACAO from acoes&lt;br /&gt;
&lt;br /&gt;
			DECLARE @LENGHT INT = (SELECT count(*) FROM BD_SSM_LOGIN..ACAO WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO &amp;lt;&amp;gt; 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO')&lt;br /&gt;
&lt;br /&gt;
			WHILE (@I &amp;lt; @LENGHT)&lt;br /&gt;
				BEGIN&lt;br /&gt;
					&lt;br /&gt;
					SET @cdAcaoTemp = (SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I)&lt;br /&gt;
&lt;br /&gt;
					IF NOT EXISTS ((SELECT TOP 1 1 FROM ACAO_PERFIL WHERE CD_PERFIL = @cdPerfilChoosed AND CD_ACAO = @cdAcaoTemp)) &lt;br /&gt;
						BEGIN &lt;br /&gt;
							INSERT INTO ACAO_PERFIL(CD_ACAO, CD_PERFIL)&lt;br /&gt;
							VALUES ((SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I) , @cdPerfilChoosed)&lt;br /&gt;
						END		&lt;br /&gt;
					SET @I += 1;&lt;br /&gt;
				END&lt;br /&gt;
&lt;br /&gt;
			IF (SELECT salt FROM BD_SSM_LOGIN..USUARIO U where cd_usuario = @cdUsuario_dog) != 'PLAIN'&lt;br /&gt;
				BEGIN&lt;br /&gt;
					UPDATE bd_ssm_Login..usuario SET SALT = 'PLAIN', SENHA = @nm_new_perfil where cd_usuario = @cdUsuario_dog&lt;br /&gt;
				END&lt;br /&gt;
			SELECT 'Abaixo terá as informações de login EVO.' AS 'SEU GOD USER FOI CRIADO COM SUCESSO!' &lt;br /&gt;
			SELECT u.LOGIN, u.SENHA, u.SALT, U.CD_USUARIO, UE.CD_TUSUARIO, p.NM_PERFIL, * FROM BD_SSM_LOGIN..USUARIO U&lt;br /&gt;
					INNER JOIN bd_ssm_login..USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO&lt;br /&gt;
					INNER JOIN PERFIL_USUARIO PU ON PU.CD_USUARIO = U.CD_USUARIO&lt;br /&gt;
					INNER JOIN PERFIL P ON P.CD_PERFIL = PU.CD_PERFIL&lt;br /&gt;
					WHERE u.CD_USUARIO = @cdUsuario_dog&lt;br /&gt;
		END&lt;br /&gt;
	ELSE&lt;br /&gt;
		BEGIN&lt;br /&gt;
			SELECT 'DADOS EQUIVOCADOS, BASE DIVERGENTE OU JÁ EXISTE ESTE USUÁRIO NA USUARIO_PERFIL'&lt;br /&gt;
		END&lt;br /&gt;
	COMMIT;&lt;br /&gt;
END TRY&lt;br /&gt;
	BEGIN CATCH&lt;br /&gt;
		SELECT 'ROLLBACK, WE HAVE A PROBLEM  -&amp;gt; ' + ERROR_MESSAGE()&lt;br /&gt;
		ROLLBACK&lt;br /&gt;
	END CATCH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Script de auxílio para análise da aprovação de pendências no item do pedido&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--Script de auxílio para análise da aprovação de pendências no item do pedido&lt;br /&gt;
&lt;br /&gt;
-- Preencha estas 2 variáveis&lt;br /&gt;
DECLARE @cdPedidoPalm BIGINT = 200729124209337,&lt;br /&gt;
		@cdTUsuario INT = 168&lt;br /&gt;
&lt;br /&gt;
DECLARE	@cdGestor INT = (SELECT cd_supervisor FROM supervisor WHERE cd_usuario = @cdTUsuario)&lt;br /&gt;
&lt;br /&gt;
IF (@cdGestor IS NULL)&lt;br /&gt;
	BEGIN&lt;br /&gt;
		SELECT 'é necessário que o usuário seja um gestor/supervisor para aprovar pendências'&lt;br /&gt;
		RETURN&lt;br /&gt;
	END&lt;br /&gt;
--Caso você queira analisar o retorno ou a própria procedure que simula o click do botão aprovar pendências ela está logo abaixo: &lt;br /&gt;
	--Analisando a procedure:&lt;br /&gt;
		--Utilize sp_helptext com os resultados em modo Texto(CTRL + T) no lugar do EXEC para analisar a procedure.&lt;br /&gt;
		--Ou melhor, vá em nome_da_sua_base --&amp;gt; Programação --&amp;gt; Procedimentos Armazenados &lt;br /&gt;
		--&amp;gt; dbo.PR_AUTORIZAR_PENDENCIA &lt;br /&gt;
		--&amp;gt; Botão direito Modificar &lt;br /&gt;
		--&amp;gt; comente a linha que começa com Alter para não alterar a procedure sem querer&lt;br /&gt;
&lt;br /&gt;
	--Executando&lt;br /&gt;
		--CUIDADO: O Script logo abaixo possui uma linha que executa uma procedure com comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes.&lt;br /&gt;
&lt;br /&gt;
		--INÍCIO&lt;br /&gt;
			--DECLARE @pendenciaPedido TP_PENDENCIA_PEDIDO;&lt;br /&gt;
&lt;br /&gt;
			--INSERT INTO @pendenciaPedido (&lt;br /&gt;
			--		cd_pedido_palm,&lt;br /&gt;
			--		cd_tipo_bloc,&lt;br /&gt;
			--		cd_usuario,&lt;br /&gt;
			--		cd_gestor&lt;br /&gt;
			--)&lt;br /&gt;
			--SELECT&lt;br /&gt;
			--	@cdPedidoPalm,&lt;br /&gt;
			--	tbpr.cd_tipo_bloc,&lt;br /&gt;
			--	@cdTUsuario   AS cd_usuario,&lt;br /&gt;
			--	@cdGestor AS cd_gestor&lt;br /&gt;
			--from PEDIDO P&lt;br /&gt;
			--INNER JOIN tipo_bloc_pedido_rel tbpr WITH(NOLOCK) ON tbpr.cd_pedido_palm = P.cd_pedido_palm&lt;br /&gt;
			--INNER JOIN tipo_bloc_pedido_sit tbps WITH (NOLOCK) ON tbps.cd_tipo_bloc = tbpr.cd_tipo_bloc&lt;br /&gt;
&lt;br /&gt;
		--CUIDADO_2: O Script logo abaixo possui comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes.&lt;br /&gt;
		-- -- EXEC PR_AUTORIZAR_PENDENCIA @pendenciaPedido&lt;br /&gt;
&lt;br /&gt;
	--FIM&lt;br /&gt;
&lt;br /&gt;
	--PENDENCIAS_AUTORIZADAS(1)&lt;br /&gt;
	--PEDIDO_AUTORIZADO(2)&lt;br /&gt;
	--SEM_ALCADA_JULGAR_PENDENCIA(3)&lt;br /&gt;
	--PENDENCIA_JA_JULGADA(4)&lt;br /&gt;
	--PEDIDO_CANCELADO(5)&lt;br /&gt;
&lt;br /&gt;
	--Caso o número retornado não esteja entre estes acima é porque esta funcionalidade sofreu alteração, logo, parte deste script poderá não ser mais útil.&lt;br /&gt;
&lt;br /&gt;
--Se você reconhecer que o retorno do NuPortal ou da Procedure for (3) 'SEM_ALCADA_JULGAR_PENDENCIA', você pode analisar o porquê deste retorno com as instruções abaixo:&lt;br /&gt;
&lt;br /&gt;
--Analisando o porquê do retorno SEM_ALCADA_JULGAR_PENDENCIA(3)&lt;br /&gt;
&lt;br /&gt;
	DECLARE @nrItemPedido BIGINT = 3&lt;br /&gt;
	&lt;br /&gt;
	--Verificando se o usuário pode aprovar a pendência do item via função. Essa &lt;br /&gt;
	--SELECT [dbo].[FN_AUTORIZA_ITEM_PEDIDO_PENDENTE] (@cdPedidoPalm, @nrItemPedido, @cdGestor)&lt;br /&gt;
&lt;br /&gt;
	--Conteúdo da função, se por ventura você não pode simplemente executá-la e/ou quer entender melhor o que está acontecendo nela&lt;br /&gt;
	--Obs: Ele utiliza as variáveis declaradas lá em cima:&lt;br /&gt;
&lt;br /&gt;
	--INÍCIO&lt;br /&gt;
		DECLARE @aprovavel CHAR(1)&lt;br /&gt;
		SELECT&lt;br /&gt;
		 TMP.id_tipo_pedido,&lt;br /&gt;
			CASE&lt;br /&gt;
				WHEN TMP.id_tipo_pedido = 'BS' THEN&lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						(&lt;br /&gt;
							(VPAPP.percentual_acrescimo_saldo &amp;lt;= VAP.pct_desc_original OR &lt;br /&gt;
							(VPAPP.percentual_acrescimo_saldo IS NOT NULL AND VAP.pct_desc_original = 100) ) &lt;br /&gt;
							AND ISNULL(VAP.pct_desc_min,0) &amp;lt;= VPAPP.percentual_acrescimo_saldo &lt;br /&gt;
						)&lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
				WHEN TMP.id_tipo_pedido = 'BO' THEN &lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						((TMP.id_tipo_pedido = 'BO' AND VSV.nivel_supervisor = 0) OR NOT (ISNULL(IPD.id_autorizado, 'S') = 'N') &lt;br /&gt;
						OR NOT (VPAPP.cd_pedido_palm_pai IS NOT NULL AND VPAPP.cd_pedido_palm_pai = VPAPP.cd_pedido_palm) &lt;br /&gt;
						OR NOT (VPAPP.cd_pedido_palm IS NOT NULL AND VPAPP.cd_pedido_palm = P.cd_pedido_palm) &lt;br /&gt;
						OR NOT (IPD.pr_desconto_aplicado IS NULL OR IPD.pr_desconto_aplicado = 0))&lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
				WHEN TMP.id_tipo_pedido &amp;lt;&amp;gt; 'BO'  AND TMP.id_tipo_pedido &amp;lt;&amp;gt; 'BS' THEN &lt;br /&gt;
					CASE WHEN&lt;br /&gt;
						(IPD.pr_desconto_aplicado &amp;lt;= VAP.pct_desc OR AA.pct_desc = 100 ) &lt;br /&gt;
					THEN 'S' ELSE 'N' END&lt;br /&gt;
			END AS 'O usuário pode aprovar'&lt;br /&gt;
		FROM pedido P WITH (NOLOCK)&lt;br /&gt;
		INNER JOIN view_supervisor_vendedor VSV ON (P.cd_vendedor = VSV.cd_vendedor AND VSV.cd_supervisor = @cdGestor)&lt;br /&gt;
		INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor WITH (NOLOCK)) V ON P.cd_vendedor = V.cd_vendedor&lt;br /&gt;
		INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo, id_calcula_impostos FROM tipo_movimento_pedido WITH (NOLOCK)) TMP on (P.cd_tipo_pedido = TMP.cd_tipo)&lt;br /&gt;
		INNER JOIN item_preco_tabela_desconto_aplicado IPD ON P.cd_pedido_palm = IPD.cd_pedido_palm AND IPD.nr_item_pedido = @nrItemPedido&lt;br /&gt;
		INNER JOIN (SELECT &lt;br /&gt;
					cd_pedido_palm, nr_item_pedido, id_autorizado,cd_produto&lt;br /&gt;
				FROM item_pedido WITH (NOLOCK) ) I ON ((IPD.cd_pedido_palm = I.cd_pedido_palm) AND (IPD.nr_item_pedido = I.nr_item_pedido))&lt;br /&gt;
		INNER JOIN (SELECT cd_produto, nm_produto, ps_produto_kg, vr_max_pc_desconto FROM produto WITH (NOLOCK)) PR ON I.cd_produto = PR.cd_produto&lt;br /&gt;
&lt;br /&gt;
		-- verificar se o getor tem alçada de preço para aprovar o item pedido&lt;br /&gt;
		INNER JOIN usuario_alcada UA ON VSV.cd_supervisor = UA.cd_usuario&lt;br /&gt;
		INNER JOIN alcada_autorizacao AA ON UA.cd_alcada = AA.cd_alcada&lt;br /&gt;
		INNER JOIN view_alcada_produto VAP ON (IPD.cd_produto = VAP.cd_produto AND VAP.cd_alcada = AA.cd_alcada)&lt;br /&gt;
&lt;br /&gt;
		-- verificar se o getor tem alçada de pendencia para aprovar o item pedido&lt;br /&gt;
		INNER JOIN (SELECT cd_pedido_palm, nr_item_pedido, cd_tipo_bloc, id_status FROM item_pedido_pendente WITH(NOLOCK)) IPP ON IPD.cd_pedido_palm = IPP.cd_pedido_palm AND IPD.nr_item_pedido = IPP.nr_item_pedido AND ISNULL(IPP.ID_STATUS, 'S') = 'P'&lt;br /&gt;
		INNER JOIN alcada_tipo_bloc ATB WITH(NOLOCK) ON IPP.cd_tipo_bloc = ATB.cd_tipo_bloc&lt;br /&gt;
		INNER JOIN usuario_alcada_aprovacao UAA WITH(NOLOCK) ON UAA.cd_alcada = ATB.cd_alcada AND IPP.cd_tipo_bloc = ATB.CD_TIPO_BLOC AND UAA.cd_usuario = (SELECT cd_usuario FROM supervisor WHERE cd_supervisor = @cdGestor)&lt;br /&gt;
&lt;br /&gt;
		LEFT JOIN view_percentual_acrescimo_pedido_pai VPAPP WITH (NOLOCK) ON P.cd_pedido_palm = VPAPP.cd_pedido_palm&lt;br /&gt;
&lt;br /&gt;
		WHERE&lt;br /&gt;
			ISNULL(P.id_efetivado, 'S') = 'S'&lt;br /&gt;
			AND ((ISNULL(P.id_autorizado, 'S') = 'N') OR TMP.id_tipo_pedido = 'BS')&lt;br /&gt;
			AND (ISNULL(IPD.id_autorizado, 'S') = 'N')&lt;br /&gt;
			AND (@cdPedidoPalm IS NULL OR P.cd_pedido_palm = @cdPedidoPalm)&lt;br /&gt;
&lt;br /&gt;
		SELECT @aprovavel&lt;br /&gt;
	--FIM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Limpar base pesada para teste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBCC SHRINKDATABASE('bd_ssm_makitarenatolima', 0)&lt;br /&gt;
&lt;br /&gt;
SELECT 'TRUNCATE TABLE ' + name  FROM sys.tables where name like 'LOG_%' and &lt;br /&gt;
name not in ('LOG_IMPORTACAO',	'LOG_GPS', 'LOG_ID', 'LOG_CLOUD_SERVER', 'LOG_SERVER_CLOUD',&lt;br /&gt;
'LOG_ACAO', 'LOG_PEDIDO_AUTO')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verificar a quantidade de dados sujos nas bases&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'SELECT COUNT(*), '''+ name + ''' FROM '+ name + ' WITH (NOLOCK) where data_delete is not null UNION ALL' from sys.tables&lt;br /&gt;
where  &lt;br /&gt;
	name like '%_001'&lt;br /&gt;
order by name asc;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15109</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15109"/>
		<updated>2021-04-08T21:27:50Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil e mais flexível a vinculação dos dados pertinentes a venda por um usuário e/ou integrador. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades envolvidas já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Porém, será possível preenchendo essas novas tabelas, popular de forma diferente a OVC.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora poderá definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma opção alternativa, pois ainda manteremos a vinculação pela organização de venda. Então os sistemas ainda deverão olhar a tabela ORG_VENDA_CLIENTE (OVC) que será alimentada por um sistema específico que transformará os dados no padrão novo para os dados no padrão OVC. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação sem se preocupar com a OVC.&lt;br /&gt;
&lt;br /&gt;
=== Popular a OVC a partir das novas tabelas ===&lt;br /&gt;
&lt;br /&gt;
* Aqui, o ideal é popular a OVC multiplexando as novas tabelas. Para casos em que não existe os limitadores, a multiplexação deverá ser total. Nosso padrão é que as vinculações na OVC sejam de vendedores. Então nesse primeiro momento, somente serão inseridas as vinculações de USUARIO_CLIENTE de usuários do papel vendedor.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15094</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15094"/>
		<updated>2021-04-08T20:57:46Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Regras de resgate de dados do cabeçalho de pedido */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil e mais flexível a vinculação dos dados pertinentes a venda por um usuário e/ou integrador. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades envolvidas já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Porém, será possível preenchendo essas novas tabelas, popular de forma diferente a OVC.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora poderá definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma opção alternativa, pois ainda manteremos a vinculação pela organização de venda. Então os sistemas ainda deverão olhar a tabela ORG_VENDA_CLIENTE (OVC) que será alimentada por um sistema específico que transformará os dados no padrão novo para os dados no padrão OVC. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação sem se preocupar com a OVC.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15084</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15084"/>
		<updated>2021-04-08T20:38:01Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil e mais flexível a vinculação dos dados pertinentes a venda por um usuário e/ou integrador. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades envolvidas já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Porém, será possível &lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora poderá definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma opção alternativa, pois ainda manteremos a vinculação pela organização de venda. Então os sistemas ainda deverão olhar a tabela ORG_VENDA_CLIENTE (OVC) que será alimentada por um sistema específico que transformará os dados no padrão novo para os dados no padrão OVC. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação sem se preocupar com a OVC.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15078</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15078"/>
		<updated>2021-04-08T20:27:28Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil e mais flexível a vinculação dos dados pertinentes a venda por um usuário e/ou integrador. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades envolvidas já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora poderá definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma opção alternativa, pois ainda manteremos a vinculação pela organização de venda. Então os sistemas ainda deverão olhar a tabela ORG_VENDA_CLIENTE (OVC) que será alimentada por um sistema específico que transformará os dados no padrão novo para os dados no padrão OVC. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação sem se preocupar com a OVC.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15073</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15073"/>
		<updated>2021-04-08T20:23:30Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil e mais flexível a vinculação dos dados pertinentes a venda por um usuário e/ou integrador. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades envolvidas já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora poderá definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma opção alternativa, pois ainda manteremos a vinculação pela organização de venda. Então os sistemas ainda deverão olhar a tabela ORG_VENDA_CLIENTE (OVC) que será alimentada por um sistema específico que transformará os dados no padrão novo para os dados no padrão OVC. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação sem se preocupar com a OVC.&lt;br /&gt;
&lt;br /&gt;
Para que essa alteração seja finalizada, grande parte do sistema deve ser modificada. A maior parte do sistema trabalha usando a OVC para analisar as vinculações. Permitir novas formas de vinculação, vai ocasionar que todo canto onde houver vinculação com a OVC, seja adicionado a nova vinculação dependendo do contexto. Na pesquisa de clientes, deve ser adicionada a tabela USUARIO_CLIENTE, na escolha de dados do cabeçalho, devem ser adicionadas todas as outras novas tabelas referentes a esse contexto.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15067</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15067"/>
		<updated>2021-04-08T20:16:10Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Estruturas de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades envolvidas já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora será definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma opção alternativa, pois ainda manteremos a vinculação pela organização de venda. Então os sistemas ainda deverão olhar a tabela ORG_VENDA_CLIENTE (OVC) que será alimentada por um sistema específico que transformará os dados no padrão novo para os dados no padrão OVC. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação.&lt;br /&gt;
&lt;br /&gt;
Para que essa alteração seja finalizada, grande parte do sistema deve ser modificada. A maior parte do sistema trabalha usando a OVC para analisar as vinculações. Permitir novas formas de vinculação, vai ocasionar que todo canto onde houver vinculação com a OVC, seja adicionado a nova vinculação dependendo do contexto. Na pesquisa de clientes, deve ser adicionada a tabela USUARIO_CLIENTE, na escolha de dados do cabeçalho, devem ser adicionadas todas as outras novas tabelas referentes a esse contexto.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15064</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=15064"/>
		<updated>2021-04-08T20:14:15Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora será definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma opção alternativa, pois ainda manteremos a vinculação pela organização de venda. Então os sistemas ainda deverão olhar a tabela ORG_VENDA_CLIENTE (OVC) que será alimentada por um sistema específico que transformará os dados no padrão novo para os dados no padrão OVC. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação.&lt;br /&gt;
&lt;br /&gt;
Para que essa alteração seja finalizada, grande parte do sistema deve ser modificada. A maior parte do sistema trabalha usando a OVC para analisar as vinculações. Permitir novas formas de vinculação, vai ocasionar que todo canto onde houver vinculação com a OVC, seja adicionado a nova vinculação dependendo do contexto. Na pesquisa de clientes, deve ser adicionada a tabela USUARIO_CLIENTE, na escolha de dados do cabeçalho, devem ser adicionadas todas as outras novas tabelas referentes a esse contexto.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14919</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14919"/>
		<updated>2021-04-08T15:15:12Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Regras de resgate de dados do cabeçalho de pedido = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora será definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma exceção, pois ainda manteremos a vinculação pela organização de venda. Então o algorito deverá olhar a tabela ORG_VENDA_CLIENTE (OVC) e seguir os passos citados acima para buscar as mesmas informações que eram obtidas pela OVC e agora também poderão ser buscadas por esse novo modelo. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação.&lt;br /&gt;
&lt;br /&gt;
Para que essa alteração seja finalizada, grande parte do sistema deve ser modificada. A maior parte do sistema trabalha usando a OVC para analisar as vinculações. Permitir novas formas de vinculação, vai ocasionar que todo canto onde houver vinculação com a OVC, seja adicionado a nova vinculação dependendo do contexto. Na pesquisa de clientes, deve ser adicionada a tabela USUARIO_CLIENTE, na escolha de dados do cabeçalho, devem ser adicionadas todas as outras novas tabelas referentes a esse contexto.&lt;br /&gt;
&lt;br /&gt;
Deve ser atentado alguns pontos:&lt;br /&gt;
* Funções de sincronismo (SYNC_TABELA_FUNCAO)&lt;br /&gt;
* Consultas de relatórios&lt;br /&gt;
* Validações no cabeçalho do pedido&lt;br /&gt;
* Validações nos cards e nas telas de gestão de equipe&lt;br /&gt;
* Pesquisa de cliente&lt;br /&gt;
* Pesquisa de pedidos&lt;br /&gt;
* Buscas em geral de dados de pedido&lt;br /&gt;
&lt;br /&gt;
Uma outra preocupação pertinente nessa customização é sobre performance. As consultas modificadas devem seguir os padrões previamente estipulados, não trazendo colunas desnecessárias e utilizando o WITH (NOLOCK) quando for aplicável.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14918</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14918"/>
		<updated>2021-04-08T15:09:29Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* - Regras de resgate de dados do cabeçalho de pedido = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora será definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma exceção, pois ainda manteremos a vinculação pela organização de venda. Então o algorito deverá olhar a tabela ORG_VENDA_CLIENTE (OVC) e seguir os passos citados acima para buscar as mesmas informações que eram obtidas pela OVC e agora também poderão ser buscadas por esse novo modelo. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação.&lt;br /&gt;
&lt;br /&gt;
Para que essa alteração seja finalizada, grande parte do sistema deve ser modificada. A maior parte do sistema trabalha usando a OVC para analisar as vinculações. Permitir novas formas de vinculação, vai ocasionar que todo canto onde houver vinculação com a OVC, seja adicionado a nova vinculação dependendo do contexto. Na pesquisa de clientes, deve ser adicionada a tabela USUARIO_CLIENTE, na escolha de dados do cabeçalho, devem ser adicionadas todas as outras novas tabelas referentes a esse contexto.&lt;br /&gt;
&lt;br /&gt;
Deve ser atentado alguns pontos:&lt;br /&gt;
* Funções de sincronismo (SYNC_TABELA_FUNCAO)&lt;br /&gt;
* Consultas de relatórios&lt;br /&gt;
* Validações no cabeçalho do pedido&lt;br /&gt;
* Validações nos cards e nas telas de gestão de equipe&lt;br /&gt;
* Pesquisa de cliente&lt;br /&gt;
* Pesquisa de pedidos&lt;br /&gt;
* Buscas em geral de dados de pedido&lt;br /&gt;
&lt;br /&gt;
Uma outra preocupação pertinente nessa customização é sobre performance. As consultas modificadas devem seguir os padrões previamente estipulados, não trazendo colunas desnecessárias e utilizando o WITH (NOLOCK) quando for aplicável.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14917</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14917"/>
		<updated>2021-04-08T15:06:07Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora será definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma exceção, pois ainda manteremos a vinculação pela organização de venda. Então o algorito deverá olhar a tabela ORG_VENDA_CLIENTE (OVC) e seguir os passos citados acima para buscar as mesmas informações que eram obtidas pela OVC e agora também poderão ser buscadas por esse novo modelo. Isso permitirá que os clientes antigos não precisem alterar suas integrações e os clientes novos possam utilizar a nova forma de vinculação.&lt;br /&gt;
&lt;br /&gt;
Para que essa alteração seja finalizada, grande parte do sistema deve ser modificada. A maior parte do sistema trabalha usando a OVC para analisar as vinculações. Permitir novas formas de vinculação, vai ocasionar que todo canto onde houver vinculação com a OVC, seja adicionado a nova vinculação dependendo do contexto. Na pesquisa de clientes, deve ser adicionada a tabela USUARIO_CLIENTE, na escolha de dados do cabeçalho, devem ser adicionadas todas as outras novas tabelas referentes a esse contexto.&lt;br /&gt;
&lt;br /&gt;
Deve ser atentado alguns pontos:&lt;br /&gt;
* Funções de sincronismo (SYNC_TABELA_FUNCAO)&lt;br /&gt;
* Consultas de relatórios&lt;br /&gt;
* Validações no cabeçalho do pedido&lt;br /&gt;
* Validações nos cards e nas telas de gestão de equipe&lt;br /&gt;
* Pesquisa de cliente&lt;br /&gt;
* Pesquisa de pedidos&lt;br /&gt;
* Buscas em geral de dados de pedido&lt;br /&gt;
&lt;br /&gt;
Uma outra preocupação pertinente nessa customização é sobre performance. As consultas modificadas devem seguir os padrões previamente estipulados, não trazendo colunas desnecessárias e utilizando o WITH (NOLOCK) quando for aplicável.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14902</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14902"/>
		<updated>2021-04-08T13:13:19Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora será definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
Essas novas regras de vinculação serão uma exceção, pois ainda manteremos a vinculação pela organização de venda.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14901</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14901"/>
		<updated>2021-04-08T12:49:17Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
Com relação ao grupo de meio de pagamento, a navegação agora será definida através da tabela CLIENTE_GRUPO_MPGTO. Aqui existirá a definição de quais grupos de meio de pagamento o cliente terá acesso no momento da tiragem de pedido.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14900</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14900"/>
		<updated>2021-04-08T12:33:00Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
Já para a escolha dos clientes que o usuário pode ver, deve ser preenchida a tabela CLIENTE_USUARIO. Então, aparecerão para a venda todos os clientes que estiverem vinculados ao usuário logado. Quando o usuário for um gestor, aparecerão para ele os clientes que estão vinculados aos usuários dos vendedores supervisionados por ele. Também é possível que um gestor tenha outros gestores subordinados a ele em sua hierarquia, a forma de trabalhar, vai ser semelhante, o usuário desse gestor vai poder ver todos os clientes vinculados aos usuários vendedores subordinados aos gestores subordinados ao gestor do usuário logado.&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14899</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14899"/>
		<updated>2021-04-08T11:30:11Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14898</id>
		<title>Regras de Vinculação</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Regras_de_Vincula%C3%A7%C3%A3o&amp;diff=14898"/>
		<updated>2021-04-08T11:27:20Z</updated>

		<summary type="html">&lt;p&gt;Anderson: Criou página com '== Histórico de Alterações == {| class=&amp;quot;wikitable&amp;quot; ! Data ! Quem  ! Comentários  |- |  08/04/2021  || Anderson Gomes || Criação do documento |- |}  == Necessidade == É...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  08/04/2021  || Anderson Gomes || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Funcionalidades&amp;diff=14897</id>
		<title>Funcionalidades</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Funcionalidades&amp;diff=14897"/>
		<updated>2021-04-08T11:25:09Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[PO-T001 - Alçada de autorização de pedidos]]&lt;br /&gt;
*[[PO-T002 - Cliente Risco]]&lt;br /&gt;
*[[PO-T003 - Escalonamento de Produtos]]&lt;br /&gt;
*[[Regras de Vinculação]]&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14896</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14896"/>
		<updated>2021-04-07T20:56:26Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados. Assim, deverá haver uma validação extra, onde as tabelas de preço também serão filtradas na tabela USUARIO_TAB_PRECO para o usuário do vendedor escolhido.&lt;br /&gt;
Existe também a filtragem das tabelas de preço pelo tipo de pedido escolhido no cabeçalho. A tabela TIPO_PEDIDO_TAB_PRECO recebe as vinculações que definem as tabelas que se correlacionam com os tipos e vice versa.&lt;br /&gt;
A tabela TAB_PRECO_RESTRICAO adiciona algumas restrições mais específicas. Nessa tabela, existem os filtros CD_ORG_VENDA, CD_CANAL, CD_PRACA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14895</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14895"/>
		<updated>2021-04-07T20:40:59Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
Para a entidade de tabela de preço existirão as seguintes tabelas para filtragem dos dados:&lt;br /&gt;
# CLIENTE_TAB_PRECO&lt;br /&gt;
# USUARIO_TAB_PRECO&lt;br /&gt;
# TIPO_PEDIDO_TAB_PRECO (JÁ EXISTE)&lt;br /&gt;
# TAB_PRECO_RESTRICAO (JÁ EXISTE)&lt;br /&gt;
Basicamente cada uma delas atuará para definição de quais tabelas de preço são elegíveis para escolha durante a venda. É plausível ter uma personalização das tabelas de preço tanto por cliente como por usuário. Então deverão ser criadas as tabelas para vinculação com cliente e com usuário. Tendo isso como base, o sistema deve minerar nas duas tabelas quais são as elegíveis usando como parâmetro o usuário logado e o cliente selecionado para a venda. Nesse contexto, existe o cenário de um usuário com o papel gestor estar tirando um pedido para um cliente de um de seus vendedores supervisionados&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14894</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14894"/>
		<updated>2021-04-07T20:07:10Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==- Regras de resgate de dados do cabeçalho de pedido ===&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Agora será possível fazer a vinculação de forma mais flexível a fim de evitar a necessidade de uma grande quantidade de registros numa tabela centralizada.&lt;br /&gt;
&lt;br /&gt;
Então para a vinculação de organização de venda, ela será definida através do perfil do usuário que irá efetuar a venda. Isso é mapeado na tabela PERFIL_ORGANIZACAO_VENDA. Existe, porém, uma situação onde o usuário logado é um usuário do papel gestor. Nessa situação o usuário pode tirar um pedido escolhendo um usuário do papel vendedor e tirar um pedido para os clientes dele. Assim, esse filtro para definição de quais organizações de venda são elegíveis deve ser feita em 2 etapas. Primeiro devem ser filtradas as organizações de vendas que o perfil do usuário do vendedor escolhido tem acesso. Depois disso, deve ser aplicado o mesmo filtro só que agora será usado os dados da tabela que estão vinculados ao perfil do usuário logado. Obviamente, dependendo do cadastro, podem existir casos em que não haja interseção entre os dados dos dois usuários. No caso de ser um usuário do papel cliente, a regra deve ser aplicada da mesma forma, habilitando somente as organizações que o perfil tenha vinculação.&lt;br /&gt;
Ainda falando sobre a organização de venda, existe um outro ponto de filtragem relacionado. Após a escolha da a organização de venda no cabeçalho, serão filtrados os tipos de pedidos válidos que são definidos na tabela ORGANIZACAO_VENDA_TIPO_PEDIDO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14893</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14893"/>
		<updated>2021-04-07T19:24:11Z</updated>

		<summary type="html">&lt;p&gt;Anderson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Regras de resgate de dados do cabeçalho de pedido&lt;br /&gt;
&lt;br /&gt;
Basicamente deve ser feito um resgate dos dados sequencialmente e removendo os registros que não se enquadram na filtragem que está vinculada ao usuário.&lt;br /&gt;
A busca de cliente deve ir na OVC inicialmente como é feita originalmente. Complementarmente deve ser feita a consulta na tabela CLIENTE_USUARIO passando o código do usuário logado como parâmetro.&lt;br /&gt;
&lt;br /&gt;
Hoje já existem algumas filtragens para a escolha de informações do cabeçalho do pedido. A mudança proposta nesse documento visa permitir uma vinculação alternativa a vinculação atual usando a tabela ORG_VENDA_CLIENTE:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORG_VENDA_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_VENDEDOR&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14877</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14877"/>
		<updated>2021-04-06T21:07:33Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Estruturas de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14876</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14876"/>
		<updated>2021-04-06T21:07:07Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Estruturas de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_MOVIMENTO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14875</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14875"/>
		<updated>2021-04-06T21:00:43Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Estruturas de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TAB_PRECO_RESTRICAO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14874</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14874"/>
		<updated>2021-04-06T20:55:59Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Estruturas de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TIPO_PEDIDO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14873</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14873"/>
		<updated>2021-04-06T20:38:55Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Estruturas de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas de entidades já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
	<entry>
		<id>http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14872</id>
		<title>Vinculação entre cliente e vendedor</title>
		<link rel="alternate" type="text/html" href="http://wiki.geosales.com.br:8000/index.php?title=Vincula%C3%A7%C3%A3o_entre_cliente_e_vendedor&amp;diff=14872"/>
		<updated>2021-04-06T20:38:14Z</updated>

		<summary type="html">&lt;p&gt;Anderson: /* Estruturas de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Histórico de Alterações ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data&lt;br /&gt;
! Quem &lt;br /&gt;
! Comentários &lt;br /&gt;
|-&lt;br /&gt;
|  16/11/2020  || Ana Júlia || Criação do documento&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Necessidade ==&lt;br /&gt;
É preciso permitir que seja mais fácil a vinculação dos clientes acessíveis a venda por um usuário. Isso permitirá a vinculação direta sem a necessidade de adicionar outros filtros para se adequar a estrutura atual da GeoSales.&lt;br /&gt;
&lt;br /&gt;
[OLD] Realizar a vinculação entre cliente e usuário através da plataforma GeoSales EVO.&lt;br /&gt;
&lt;br /&gt;
== Implementação ==&lt;br /&gt;
&lt;br /&gt;
Na plataforma GeoSales EVO será possível realizar a vinculação e manutenção entre cliente e usuário. Para facilitar a vinculação será exibido uma sequência de filtros de buscas para clientes, conforme listado abaixo:&lt;br /&gt;
&lt;br /&gt;
#Cliente;&lt;br /&gt;
#Grupo de Cliente;&lt;br /&gt;
#Canal de Vendas;&lt;br /&gt;
#Rede de Clientes;&lt;br /&gt;
#Estado;&lt;br /&gt;
#Cidade.&lt;br /&gt;
&lt;br /&gt;
Vale salientar que o só poderá ser cadastrado um cenário por cliente com um ou vários usuários. Caso o cliente já esteja vinculado ao usuário, e haja a tentativa de realizar um novo cadastro para o cliente selecionado, a plataforma exibirá o alerta' Já existe uma vinculação para este cliente. Deseja sobrepor o cadastro existente?' com o intuito de alertar a existência de um vínculo. Além disso, um cliente poderá ser vinculado a mais de um usuário.&lt;br /&gt;
&lt;br /&gt;
== Regras de Negócios ==&lt;br /&gt;
&lt;br /&gt;
'''[RN1] - ''' Para que haja a vinculação entre cliente e usuário na plataforma, as informações mínimas de cliente e usuário precisam estar integrados a GeoSales. Caso o cliente ou usuário não estejam cadastrados, não será possível prosseguir com o cadastrado.&lt;br /&gt;
&lt;br /&gt;
'''[RN2] - ''' Clientes que estiverem bloqueados ou inativos não serão exibidos para vinculação com o usuário.&lt;br /&gt;
&lt;br /&gt;
'''[RN3] - ''' Vale salientar que se a regra de vinculação do cliente for excluído, o usuário não terá mais acesso a cadastrar pedido ao cliente deletado.&lt;br /&gt;
&lt;br /&gt;
== Resultados Esperados == &lt;br /&gt;
&lt;br /&gt;
=== Protótipos === &lt;br /&gt;
&lt;br /&gt;
'''- Listagem de clientes'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Listagem-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
'''- Cadastro de vinculação entre cliente e usuário'''&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Cadastro-mantiqueira-vinculacao-cliente-e-vendedor-1234.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fluxos Padrão ===&lt;br /&gt;
&lt;br /&gt;
'''Cenário: Vincular cliente e usuário'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''Dado''' que estou logado na plataforma GeoSales EVO&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Quando''' acesso o módulo 'BackOffice' no menu 'Parâmetros Clientes'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' realizo a busca de clientes&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' seleciono o cliente José&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' vinculo ao usuário João&amp;lt;/br&amp;gt;&lt;br /&gt;
'''E''' clico em 'salvar'&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Então''' a plataforma finalizará a vinculção entre José e João&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aprovação ==&lt;br /&gt;
&lt;br /&gt;
Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado. &lt;br /&gt;
&lt;br /&gt;
=== Estruturas de banco de dados ===&lt;br /&gt;
&lt;br /&gt;
* Tabelas já existentes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TABELA_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas novas de vinculações&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_TAB_PRECO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_GRUPO_MPGTO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USUARIO_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Tabelas de filtragens de dados&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CLIENTE_CANAL_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_CLIENTE&lt;br /&gt;
|-&lt;br /&gt;
| CD_CANAL&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_ORGANIZACAO_VENDA&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_ORG_VENDA&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_TIPO_PEDIDO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_TIPO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! PERFIL_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
| CD_PERFIL&lt;br /&gt;
|-&lt;br /&gt;
| CD_USUARIO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GeoSales ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| Desenvolvimento - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|- &lt;br /&gt;
| Integração - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
| Configurações - GeoSales || Pessoa que aprovou || 00/00/0000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empresa solicitante === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setor &lt;br /&gt;
! Aprovado Por&lt;br /&gt;
! Data&lt;br /&gt;
! Assinatura&lt;br /&gt;
|-&lt;br /&gt;
| Gerente TI - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente de Projeto - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
| Gerente Comercial - Cliente || Pessoa que aprovou || 00/00/0000 ||&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Anderson</name></author>
	</entry>
</feed>