· 7 years ago · Feb 22, 2019, 08:08 PM
1CREATE DEFINER=`mytracev2`@`%` PROCEDURE `mytracev2`.`sp_blindagem_buscar`(
2 IN `vNR_PAGE` INT,
3 IN `vNR_PAGE_SIZE` INT,
4 IN `vCD_BLINDADORA` INT,
5 IN `vCD_TIPO_BLINDAGEM` INT,
6 IN `vNR_CONTRATO` INT,
7 IN `vCD_PARCEIRO` VARCHAR(8000),
8 IN `vCD_GRUPO` VARCHAR(8000),
9 IN `vCD_PERFIL` INT,
10 IN `vCD_FABRICANTE` INT,
11 IN `vCD_MODELO` INT,
12 IN `vST_STATUS` VARCHAR(100),
13 IN `vNM_CLIENTE` VARCHAR(100),
14 IN `vDS_USER` VARCHAR(100),
15 IN `vDS_USER_CLIENTE` VARCHAR(100),
16 IN `vDS_CHASSI` VARCHAR(100),
17 IN `vDT_DE` VARCHAR(100),
18 IN `vDT_ATE` VARCHAR(100)
19 )
20BEGIN
21
22
23 DECLARE vNR_OFF_SET INT;
24 DECLARE vPERFIL_PARCEIRO INT;
25 DECLARE vPERFIL_GERENTE_PARCEIRO INT;
26 DECLARE vPERFIL_DIRETOR_GRUPO INT;
27 DECLARE vCdLoginPrincipal INT;
28
29 SET vNR_OFF_SET = vNR_PAGE_SIZE * (vNR_PAGE - 1);
30 SET vPERFIL_PARCEIRO = 6;
31 SET vPERFIL_GERENTE_PARCEIRO = 8;
32 SET vPERFIL_DIRETOR_GRUPO = 14;
33
34 SET vNR_OFF_SET = vNR_PAGE_SIZE * (vNR_PAGE - 1);
35
36 set vCdLoginPrincipal = (select l.cdLogin from Login l where l.dsUser = vDS_USER_CLIENTE );
37
38 DROP TABLE IF EXISTS clientesAutorizados;
39 CREATE TEMPORARY TABLE IF NOT EXISTS clientesAutorizados(
40 cdLogin int,
41 cdContratoBlindagem int,
42 cdCliente int
43 );
44
45 insert into clientesAutorizados
46 select l.cdLogin, c.cdCOntratoBlindagem, c.cdCliente
47 from COntratoBlindagem c
48 inner join cliente cc on cc.cdCliente = c.cdCliente
49 inner join login l on l.cdLogin = cc.cdLogin
50 where l.cdLogin =(vCdLoginPrincipal) ;
51
52 insert into clientesAutorizados
53 select l.cdLogin, l.cdCOntratoBlindagem,c.cdCliente
54 from loginclientecontratoblindagem l
55 inner join cliente c on c.cdLogin = l.cdLogin
56 where l.cdLogin = (vCdLoginPrincipal);
57
58 IF(vCD_PERFIL is null
59 or (vCD_PERFIL is not null and vCD_PERFIL <> vPERFIL_DIRETOR_GRUPO
60 and vCD_PERFIL <> vPERFIL_GERENTE_PARCEIRO
61 and vCD_PERFIL <> vPERFIL_PARCEIRO
62 )
63 ) THEN
64
65 call sp_split(vCD_PARCEIRO,',');
66
67 select
68 c.nrPrazoEntrega,
69 c.dsTipoPrazo,
70 b.cdBlindagem,
71 b.dtCriacao,
72 c.nmCliente,
73 c.dsPlaca,
74 c.nrContratoBlindagem,
75 c.cdContratoBlindagem,
76 c.nrCelularCliente,
77 c.nrTelComercialCliente,
78 c.dsChassi,
79 l.dsUser,
80 b.stStatus,
81 coalesce(c.dtPrevisaoEntregaAposLiberacao,c.dtPrevisaoEntrega) as dtPrevisaoEntrega,
82 c.cdContratoBlindagem,
83 c.dsEmailCliente,
84 c.nmModelo,
85 c.nmFabricante,
86 c.nrAnoModelo,
87 c.nrAnoFabricacao,
88 c.vrTotal,
89 img.cdImagemAssinatura,
90 img.dtAssinatura,
91 p.nmParceiro,
92 revisoes.total as revisoesPendentes,
93 lCliente.dsUser as dsUserCliente,
94 clEntrada.dtRecebimento,
95 clEntrada.cdChecklistVeiculo as cdChecklistEntrada,
96 clEntrada.cdImagemAssinatura as cdImagemAssinaturaChecklistEntrada,
97 clEntrada.dtAssinatura as dtAssinaturaChecklistEntrada,
98 if(clEntrada.fgPendente = 0, 0, 1) as clEntradaPendente,
99 clSaida.dtSaida as dtSaida,
100 clSaida.cdChecklistVeiculo as cdChecklistSaida,
101 clSaida.cdImagemAssinatura as cdImagemAssinaturaChecklistSaida,
102 clSaida.dtAssinatura as dtAssinaturaChecklistSaida,
103 if(clSaida.fgPendente = 0, 0, 1) as clSaidaPendente,
104 pesquisa.cdPesquisa as cdPesquisa,
105 pesquisa.dtFinalizacao as dtPesquisa,
106 b.fgLiberadoProducao
107 from Blindagem as b
108 inner join ContratoBlindagem as c on b.cdContratoBlindagem = c.cdContratoBlindagem
109 left join ImagemAssinatura as img on img.cdContratoBlindagem = c.cdContratoBlindagem
110 left join Parceiro as p on p.cdParceiro = c.cdParceiro
111 left join Login as respParceiro on p.cdLogin = respParceiro.cdLogin
112 inner join Login as l on l.cdLogin = c.cdLoginResponsavel
113 left join Cliente as cli on cli.cdCliente = c.cdCliente
114 left join Login as lCliente on lCliente.cdLogin = cli.cdLogin
115 inner join TipoBlindagem tb on tb.cdTipoBlindagem = c.cdTipoBlindagem
116 inner join (
117 select
118 cl.cdChecklistVeiculo,
119 cl.dtRecebimento,
120 cl.cdContratoBlindagem,
121 cl.cdEspecificacaoChecklist,
122 cl.fgPendente,
123 img.cdImagemAssinatura,
124 img.dtAssinatura
125 from ChecklistVeiculo cl
126 left join ImagemAssinatura img on img.cdChecklistVeiculo = cl.cdChecklistVeiculo
127 ) as clEntrada on clEntrada.cdContratoBlindagem = c.cdContratoBlindagem
128 inner join EspecificacaoChecklist as specClEntrada on specClEntrada.cdEspecificacaoChecklist = clEntrada.cdEspecificacaoChecklist
129 inner join (
130 select
131 cl.cdChecklistVeiculo,
132 cl.dtRecebimento,
133 cl.cdContratoBlindagem,
134 cl.cdEspecificacaoChecklist,
135 cl.dtSaida,
136 cl.fgPendente,
137 img.cdImagemAssinatura,
138 img.dtAssinatura
139 from ChecklistVeiculo cl
140 left join ImagemAssinatura img on img.cdChecklistVeiculo = cl.cdChecklistVeiculo
141 ) as clSaida on clSaida.cdContratoBlindagem = c.cdContratoBlindagem
142 inner join EspecificacaoChecklist as specClSaida on specClSaida.cdEspecificacaoChecklist = clSaida.cdEspecificacaoChecklist
143 left join
144 (
145 select
146 cdPesquisa,
147 dtFinalizacao,
148 cdContratoBlindagem
149 from Pesquisa
150 ) as pesquisa on pesquisa.cdContratoBlindagem = c.cdContratoBlindagem
151 left join
152 (
153 select
154 count(cdRevisao) as total,
155 cdContratoBlindagem
156 from Revisao
157 where
158 fgSolicitada = 0 && fgAgendada = 0
159 and DATE(NOW()) >= DATE(dtRevisao)
160 group by cdContratoBlindagem
161 ) as revisoes on revisoes.cdContratoBlindagem = c.cdContratoBlindagem
162 where
163 (vDS_CHASSI IS NULL or c.dsChassi like concat("%", vDS_CHASSI, "%")) and
164 (vCD_MODELO IS NULL or vCD_MODELO = c.cdModelo) and
165 (vCD_FABRICANTE IS NULL or vCD_FABRICANTE = c.cdFabricante) and
166 (vNR_CONTRATO IS NULL or vNR_CONTRATO = c.nrContratoBlindagem) and
167 (vCD_PARCEIRO IS NULL or c.cdParceiro in (SELECT item FROM temp_table)) and
168 (vDS_USER IS NULL
169 or vDS_USER = l.dsUser
170 or (respParceiro.cdLogin is not null and respParceiro.dsUser = vDS_USER)
171 ) and
172 (vCD_TIPO_BLINDAGEM IS NULL or vCD_TIPO_BLINDAGEM = c.cdTipoBlindagem) and
173 (
174 vST_STATUS IS NULL
175 or (vST_STATUS <> "aguardando_entrada" and vST_STATUS <> "aguardando_inicio" and vST_STATUS = b.stStatus)
176 or (vST_STATUS = "aguardando_entrada" and clEntrada.dtRecebimento is null)
177 or (vST_STATUS = "aguardando_inicio" and "aguardando_inicio" = b.stStatus and clEntrada.dtRecebimento is not null)
178 ) and
179 (vNM_CLIENTE IS NULL or c.nmCliente like concat("%", vNM_CLIENTE, "%")) and
180 (vDS_USER_CLIENTE IS NULL or c.cdContratoBlindagem in (select cdContratoBlindagem from clientesAutorizados)
181 ) and
182 c.cdBlindadora = vCD_BLINDADORA and
183 (
184 (vDT_DE is null or vDT_ATE is null)
185 or (vDT_DE is not null and vDT_ATE is not null
186 and c.dtCriacao between vDT_DE and vDT_ATE)
187 ) and
188 specClEntrada.dsTipo = "entrada_blindadora" and
189 specClSaida.dsTipo = "saida_blindadora" and
190 c.stStatus <> "cancelado" and
191 c.fgConfirmado = 1
192 order by c.dtCriacao DESC
193 limit vNR_PAGE_SIZE offset vNR_OFF_SET
194 ;
195
196 END IF;
197
198 IF(vCD_PERFIL = vPERFIL_GERENTE_PARCEIRO
199 or vCD_PERFIL = vPERFIL_PARCEIRO ) THEN
200
201 call sp_split(vCD_PARCEIRO,',');
202
203 select
204 c.nrPrazoEntrega,
205 c.dsTipoPrazo,
206 b.cdBlindagem,
207 b.dtCriacao,
208 c.nmCliente,
209 c.dsPlaca,
210 c.nrContratoBlindagem,
211 c.cdContratoBlindagem,
212 c.nrCelularCliente,
213 c.nrTelComercialCliente,
214 c.dsChassi,
215 img.cdImagemAssinatura,
216 img.dtAssinatura,
217 l.dsUser,
218 b.stStatus,
219 coalesce(c.dtPrevisaoEntregaAposLiberacao,c.dtPrevisaoEntrega) as dtPrevisaoEntrega,
220 c.cdContratoBlindagem,
221 c.dsEmailCliente,
222 c.nmModelo,
223 c.nmFabricante,
224 c.nrAnoModelo,
225 c.nrAnoFabricacao,
226 c.vrTotal,
227 p.nmParceiro,
228 revisoes.total as revisoesPendentes,
229 lCliente.dsUser as dsUserCliente,
230 clEntrada.dtRecebimento,
231 clEntrada.cdChecklistVeiculo as cdChecklistEntrada,
232 clEntrada.cdImagemAssinatura as cdImagemAssinaturaChecklistEntrada,
233 clEntrada.dtAssinatura as dtAssinaturaChecklistEntrada,
234 if(clEntrada.fgPendente = 0, 0, 1) as clEntradaPendente,
235 clSaida.cdChecklistVeiculo as cdChecklistSaida,
236 clSaida.cdImagemAssinatura as cdImagemAssinaturaChecklistSaida,
237 clSaida.dtAssinatura as dtAssinaturaChecklistSaida,
238 if(clSaida.fgPendente = 0, 0, 1) as clSaidaPendente,
239 pesquisa.cdPesquisa as cdPesquisa,
240 pesquisa.dtFinalizacao as dtPesquisa,
241 b.fgLiberadoProducao
242 from Blindagem as b
243 inner join ContratoBlindagem as c on b.cdContratoBlindagem = c.cdContratoBlindagem
244 left join ImagemAssinatura as img on img.cdContratoBlindagem = c.cdContratoBlindagem
245 inner join Parceiro as p on p.cdParceiro = c.cdParceiro
246 inner join Login as l on l.cdLogin = c.cdLoginResponsavel
247 inner join Login as lParceiro on lParceiro.cdLogin = c.cdLoginParceiro
248 left join Cliente as cli on cli.cdCliente = c.cdCliente
249 left join Login as lCliente on lCliente.cdLogin = cli.cdLogin
250 inner join TipoBlindagem tb on tb.cdTipoBlindagem = c.cdTipoBlindagem
251 inner join (
252 select
253 cl.cdChecklistVeiculo,
254 cl.dtRecebimento,
255 cl.cdContratoBlindagem,
256 cl.cdEspecificacaoChecklist,
257 cl.fgPendente,
258 img.cdImagemAssinatura,
259 img.dtAssinatura
260 from ChecklistVeiculo cl
261 left join ImagemAssinatura img on img.cdChecklistVeiculo = cl.cdChecklistVeiculo
262 ) as clEntrada on clEntrada.cdContratoBlindagem = c.cdContratoBlindagem
263 inner join EspecificacaoChecklist as specClEntrada on specClEntrada.cdEspecificacaoChecklist = clEntrada.cdEspecificacaoChecklist
264 inner join (
265 select
266 cl.cdChecklistVeiculo,
267 cl.dtRecebimento,
268 cl.cdContratoBlindagem,
269 cl.cdEspecificacaoChecklist,
270 cl.fgPendente,
271 cl.dtFinalizacao,
272 img.cdImagemAssinatura,
273 img.dtAssinatura
274 from ChecklistVeiculo cl
275 left join ImagemAssinatura img on img.cdChecklistVeiculo = cl.cdChecklistVeiculo
276 ) as clSaida on clSaida.cdContratoBlindagem = c.cdContratoBlindagem
277 inner join EspecificacaoChecklist as specClSaida on specClSaida.cdEspecificacaoChecklist = clSaida.cdEspecificacaoChecklist
278 left join
279 (
280 select
281 cdPesquisa,
282 dtFinalizacao,
283 cdContratoBlindagem
284 from Pesquisa
285 ) as pesquisa on pesquisa.cdContratoBlindagem = c.cdContratoBlindagem
286 left join
287 (
288 select
289 count(cdRevisao) as total,
290 cdContratoBlindagem
291 from Revisao
292 where
293 fgSolicitada = 0 && fgAgendada = 0
294 and DATE(NOW()) >= DATE(dtRevisao)
295 group by cdContratoBlindagem
296 ) as revisoes on revisoes.cdContratoBlindagem = c.cdContratoBlindagem
297 where
298 (vDS_CHASSI IS NULL or c.dsChassi like concat("%", vDS_CHASSI, "%")) and
299 (vCD_MODELO IS NULL or vCD_MODELO = c.cdModelo) and
300 (vCD_FABRICANTE IS NULL or vCD_FABRICANTE = c.cdFabricante) and
301 (vNR_CONTRATO IS NULL or vNR_CONTRATO = c.nrContratoBlindagem) and
302 (vCD_PARCEIRO IS NULL or c.cdParceiro in (SELECT item FROM temp_table)) and
303 (vCD_PERFIL != vPERFIL_PARCEIRO or (vCD_PERFIL = vPERFIL_PARCEIRO and vDS_USER = lParceiro.dsUser)) and
304 (vCD_TIPO_BLINDAGEM IS NULL or vCD_TIPO_BLINDAGEM = c.cdTipoBlindagem) and
305 (
306 vST_STATUS IS NULL
307 or (vST_STATUS <> "aguardando_entrada" and vST_STATUS <> "aguardando_inicio" and vST_STATUS = b.stStatus)
308 or (vST_STATUS = "aguardando_entrada" and clEntrada.dtRecebimento is null)
309 or (vST_STATUS = "aguardando_inicio" and "aguardando_inicio" = b.stStatus and clEntrada.dtRecebimento is not null)
310 ) and
311 (vNM_CLIENTE IS NULL or c.nmCliente like concat("%", vNM_CLIENTE, "%")) and
312 (vDS_USER_CLIENTE IS NULL or vDS_USER_CLIENTE = lCliente.dsUser) and
313 c.cdBlindadora = vCD_BLINDADORA and
314 (
315 (vDT_DE is null or vDT_ATE is null)
316 or (vDT_DE is not null and vDT_ATE is not null
317 and c.dtCriacao between vDT_DE and vDT_ATE)
318 ) and
319 specClEntrada.dsTipo = "entrada_blindadora" and
320 specClSaida.dsTipo = "saida_blindadora" and
321 c.stStatus <> "cancelado" and
322 c.fgConfirmado = 1
323 order by c.dtCriacao DESC
324 limit vNR_PAGE_SIZE offset vNR_OFF_SET
325 ;
326
327 END IF;
328
329 IF(vCD_PERFIL = vPERFIL_DIRETOR_GRUPO) THEN
330
331 call sp_split(vCD_GRUPO,',');
332 call sp_split2(vCD_PARCEIRO,',');
333
334 select
335 c.nrPrazoEntrega,
336 c.dsTipoPrazo,
337 b.cdBlindagem,
338 b.dtCriacao,
339 c.nmCliente,
340 c.dsPlaca,
341 c.nrContratoBlindagem,
342 c.cdContratoBlindagem,
343 c.nrCelularCliente,
344 c.nrTelComercialCliente,
345 c.dsChassi,
346 img.cdImagemAssinatura,
347 img.dtAssinatura,
348 l.dsUser,
349 b.stStatus,
350 coalesce(c.dtPrevisaoEntregaAposLiberacao,c.dtPrevisaoEntrega) as dtPrevisaoEntrega,
351 c.cdContratoBlindagem,
352 c.dsEmailCliente,
353 c.nmModelo,
354 c.nmFabricante,
355 c.nrAnoModelo,
356 c.nrAnoFabricacao,
357 c.vrTotal,
358 p.nmParceiro,
359 revisoes.total as revisoesPendentes,
360 lCliente.dsUser as dsUserCliente,
361 clEntrada.dtRecebimento,
362 clEntrada.cdChecklistVeiculo as cdChecklistEntrada,
363 clEntrada.cdImagemAssinatura as cdImagemAssinaturaChecklistEntrada,
364 clEntrada.dtAssinatura as dtAssinaturaChecklistEntrada,
365 if(clEntrada.fgPendente = 0, 0, 1) as clEntradaPendente,
366 clSaida.cdChecklistVeiculo as cdChecklistSaida,
367 clSaida.cdImagemAssinatura as cdImagemAssinaturaChecklistSaida,
368 clSaida.dtAssinatura as dtAssinaturaChecklistSaida,
369 if(clSaida.fgPendente = 0, 0, 1) as clSaidaPendente,
370 pesquisa.cdPesquisa as cdPesquisa,
371 pesquisa.dtFinalizacao as dtPesquisa,
372 b.fgLiberadoProducao
373 from Blindagem as b
374 inner join ContratoBlindagem as c on b.cdContratoBlindagem = c.cdContratoBlindagem
375 left join ImagemAssinatura as img on img.cdContratoBlindagem = c.cdContratoBlindagem
376 inner join Parceiro as p on p.cdParceiro = c.cdParceiro
377 inner join GrupoParceiro as g on g.cdGrupoParceiro = p.cdGrupoParceiro
378 left join Login as lParceiro on lParceiro.cdLogin = c.cdLoginParceiro
379 inner join Login as l on l.cdLogin = c.cdLoginResponsavel
380 left join Cliente as cli on cli.cdCliente = c.cdCliente
381 left join Login as lCliente on lCliente.cdLogin = cli.cdLogin
382 inner join TipoBlindagem tb on tb.cdTipoBlindagem = c.cdTipoBlindagem
383 inner join (
384 select
385 cl.cdChecklistVeiculo,
386 cl.dtRecebimento,
387 cl.cdContratoBlindagem,
388 cl.cdEspecificacaoChecklist,
389 cl.fgPendente,
390 img.cdImagemAssinatura,
391 img.dtAssinatura
392 from ChecklistVeiculo cl
393 left join ImagemAssinatura img on img.cdChecklistVeiculo = cl.cdChecklistVeiculo
394 ) as clEntrada on clEntrada.cdContratoBlindagem = c.cdContratoBlindagem
395 inner join EspecificacaoChecklist as specClEntrada on specClEntrada.cdEspecificacaoChecklist = clEntrada.cdEspecificacaoChecklist
396 inner join (
397 select
398 cl.cdChecklistVeiculo,
399 cl.dtRecebimento,
400 cl.cdContratoBlindagem,
401 cl.cdEspecificacaoChecklist,
402 cl.fgPendente,
403 img.cdImagemAssinatura,
404 img.dtAssinatura
405 from ChecklistVeiculo cl
406 left join ImagemAssinatura img on img.cdChecklistVeiculo = cl.cdChecklistVeiculo
407 ) as clSaida on clSaida.cdContratoBlindagem = c.cdContratoBlindagem
408 inner join EspecificacaoChecklist as specClSaida on specClSaida.cdEspecificacaoChecklist = clSaida.cdEspecificacaoChecklist
409 left join
410 (
411 select
412 cdPesquisa,
413 dtFinalizacao,
414 cdContratoBlindagem
415 from Pesquisa
416 ) as pesquisa on pesquisa.cdContratoBlindagem = c.cdContratoBlindagem
417 left join
418 (
419 select
420 count(cdRevisao) as total,
421 cdContratoBlindagem
422 from Revisao
423 where
424 fgSolicitada = 0 && fgAgendada = 0
425 and DATE(NOW()) >= DATE(dtRevisao)
426 group by cdContratoBlindagem
427 ) as revisoes on revisoes.cdContratoBlindagem = c.cdContratoBlindagem
428 where
429 (vDS_CHASSI IS NULL or c.dsChassi like concat("%", vDS_CHASSI, "%")) and
430 (vCD_MODELO IS NULL or vCD_MODELO = c.cdModelo) and
431 (vCD_FABRICANTE IS NULL or vCD_FABRICANTE = c.cdFabricante) and
432 (vNR_CONTRATO IS NULL or vNR_CONTRATO = c.nrContratoBlindagem) and
433 (vCD_PARCEIRO IS NULL or c.cdParceiro in (SELECT item FROM temp_table2)) and
434 (vCD_GRUPO IS NULL or g.cdGrupoParceiro in (SELECT item FROM temp_table)) and
435 (vCD_TIPO_BLINDAGEM IS NULL or vCD_TIPO_BLINDAGEM = c.cdTipoBlindagem) and
436 (
437 vST_STATUS IS NULL
438 or (vST_STATUS <> "aguardando_entrada" and vST_STATUS <> "aguardando_inicio" and vST_STATUS = b.stStatus)
439 or (vST_STATUS = "aguardando_entrada" and clEntrada.dtRecebimento is null)
440 or (vST_STATUS = "aguardando_inicio" and "aguardando_inicio" = b.stStatus and clEntrada.dtRecebimento is not null)
441 ) and
442 (vNM_CLIENTE IS NULL or c.nmCliente like concat("%", vNM_CLIENTE, "%")) and
443 (vDS_USER_CLIENTE IS NULL or vDS_USER_CLIENTE = lCliente.dsUser) and
444 c.cdBlindadora = vCD_BLINDADORA and
445 (
446 (vDT_DE is null or vDT_ATE is null)
447 or (vDT_DE is not null and vDT_ATE is not null
448 and c.dtCriacao between vDT_DE and vDT_ATE)
449 ) and
450 specClEntrada.dsTipo = "entrada_blindadora" and
451 specClSaida.dsTipo = "saida_blindadora" and
452 c.stStatus <> "cancelado" and
453 c.fgConfirmado = 1
454 order by c.dtCriacao DESC
455 limit vNR_PAGE_SIZE offset vNR_OFF_SET
456 ;
457
458 END IF;
459
460 drop table clientesAutorizados;
461
462 END