Advertisement
Guest User

Untitled

a guest
Oct 1st, 2014
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 292.88 KB | None | 0 0
  1. DROP FUNCTION public._corrigi_data();
  2.  
  3. DROP FUNCTION public._odometro_tudo();
  4.  
  5. DROP FUNCTION public.asdf();
  6.  
  7. DROP FUNCTION public.get_delivery_sms(psms text);
  8.  
  9. DROP FUNCTION public.get_value(text);
  10.  
  11. DROP FUNCTION public.mce_device_fnc2(pidmonitoringcenter bigint);
  12.  
  13. DROP FUNCTION public.rep_data_util_fnc(pdate_ini varchar, pdate_fim varchar);
  14.  
  15. DROP FUNCTION public.reprocessa_transaction(pidtransaction bigint);
  16.  
  17. DROP FUNCTION public.set_fuel(ptransaction bigint, pdevice bigint, pcommand varchar);
  18.  
  19. DROP FUNCTION public.set_refuel(ptransaction bigint, pdevice bigint, pcommand varchar);
  20.  
  21. DROP FUNCTION public.set_value(text, text);
  22.  
  23. DROP FUNCTION public.set_workday(ptransaction bigint, pdevice bigint, pcommand varchar);
  24.  
  25. DROP FUNCTION public.utl_interval_to_hours_fnc(pinterval interval);
  26.  
  27. DROP FUNCTION public."utl_interval_to_hours_fnc(pinterval interval)"(pinterval interval);
  28.  
  29. DROP FUNCTION public.vlt_agrupa_transaction01(piddevice bigint, pidtransaction bigint, pidrecordtype bigint);
  30.  
  31. DROP FUNCTION public.vlt_agrupa_transaction2(piddevice bigint, pidtransaction bigint, pidrecordtype bigint);
  32.  
  33. DROP FUNCTION public.vlt_agrupa_transaction_teste(piddevice bigint, pidtransaction bigint, pidrecordtype bigint);
  34.  
  35. DROP FUNCTION public.vlt_command_sms_fnc();
  36.  
  37. DROP FUNCTION public.vlt_device_fnc(pidcustomer bigint, psearch varchar);
  38.  
  39. DROP FUNCTION public.vlt_device_fnc(pidcustomer bigint);
  40.  
  41. DROP FUNCTION public.vlt_device_fnc_point(pidcustomer bigint, piduser bigint, psearch varchar);
  42.  
  43. DROP FUNCTION public.vlt_device_has_alert2_fnc(piddevice bigint);
  44.  
  45. DROP FUNCTION public.vlt_driver_workday_screen_fnc(piddriver bigint, prefmonth text);
  46.  
  47. DROP FUNCTION public.vlt_driver_workday_update_hours_fnc(piddriverworkdayold bigint, piddriverworkdaynew bigint);
  48.  
  49. DROP FUNCTION public.vlt_last_invalid_tran_dev_fnc(piddevice bigint);
  50.  
  51. DROP FUNCTION public.vlt_last_position_fnc2(pidcustomer numeric);
  52.  
  53. DROP FUNCTION public.vlt_last_position_fnc_ant(pidcustomer numeric);
  54.  
  55. DROP FUNCTION public.vlt_last_position_fnc_bkp(pidcustomer numeric);
  56.  
  57. DROP FUNCTION public.vlt_last_position_fnc_bkp2(pidcustomer numeric);
  58.  
  59. DROP FUNCTION public.vlt_list_coordinates_fnc2(piddevice numeric, pinitial_date timestamptz, pfinal_date timestamptz, precord_type varchar);
  60.  
  61. DROP FUNCTION public.vlt_list_coordinates_fnc_a(piddevice numeric, pinitial_date timestamptz, pfinal_date timestamptz, precord_type varchar);
  62.  
  63. DROP FUNCTION public.vlt_odometer_transaction_teste(piddevice bigint, pcommanddate timestamp, pini boolean);
  64.  
  65. DROP FUNCTION public.vlt_socket_con_gsn_prc2(pcommand varchar);
  66.  
  67. DROP FUNCTION public.vlt_transaction_driver_fnc();
  68.  
  69. DROP FUNCTION public.vlt_verifica_modelo();
  70.  
  71. DROP SEQUENCE public.vlt_components_idcomponents_seq;
  72.  
  73. DROP SEQUENCE public.vlt_time_zone_interval_idtimezoneinterval_seq;
  74.  
  75. DROP SEQUENCE public.vlt_time_zone_local_idtimezonelocal_seq;
  76.  
  77. DROP INDEX public.par_access_index01;
  78.  
  79. DROP INDEX public.par_customer_idx;
  80.  
  81. ALTER TABLE public.rba_menu
  82. DROP CONSTRAINT rba_menu_index01 RESTRICT;
  83.  
  84. DROP INDEX public.vlt_alert_index01;
  85.  
  86. DROP INDEX public.vlt_alert_index02;
  87.  
  88. ALTER TABLE public.vlt_alert_customer
  89. DROP CONSTRAINT vlt_alert_customer_uk RESTRICT;
  90.  
  91. DROP INDEX public.vlt_alert_user_idx2;
  92.  
  93. ALTER TABLE public.vlt_command
  94. DROP COLUMN sms_code;
  95.  
  96. ALTER TABLE public.vlt_command
  97. DROP COLUMN sms_sending;
  98.  
  99. ALTER TABLE public.vlt_command
  100. DROP COLUMN sms_delivery;
  101.  
  102. DROP TRIGGER vlt_command_sms_trg ON public.vlt_command;
  103.  
  104. ALTER TABLE public.vlt_country
  105. DROP CONSTRAINT vlt_country_pk RESTRICT;
  106.  
  107. ALTER TABLE public.vlt_device
  108. DROP COLUMN blocked;
  109.  
  110. DROP INDEX public.vlt_device_idx5;
  111.  
  112. DROP INDEX public.vlt_device_search_idx;
  113.  
  114. DROP INDEX public.vlt_device_interval_index01;
  115.  
  116. DROP INDEX public.vlt_device_interval_index02;
  117.  
  118. DROP TRIGGER vlt_device_model_verif_trg ON public.vlt_device_model;
  119.  
  120. DROP INDEX public.vlt_device_odometer_index01;
  121.  
  122. DROP INDEX public.vlt_driver_record_idx01;
  123.  
  124. ALTER TABLE public.vlt_driver_workday
  125. DROP COLUMN idtransaction;
  126.  
  127. DROP INDEX public.vlt_driver_workday_idx;
  128.  
  129. DROP TRIGGER vlt_driver_workday_active_trg ON public.vlt_driver_workday;
  130.  
  131. ALTER TABLE public.vlt_fuel
  132. DROP COLUMN min_value;
  133.  
  134. ALTER TABLE public.vlt_fuel
  135. DROP COLUMN max_variation;
  136.  
  137. ALTER TABLE public.vlt_fuel
  138. DROP COLUMN alert_min;
  139.  
  140. ALTER TABLE public.vlt_fuel
  141. DROP COLUMN alert_variation;
  142.  
  143. ALTER TABLE public.vlt_fuel
  144. DROP COLUMN idfuelvalue_previous;
  145.  
  146. ALTER TABLE public.vlt_fuel_value
  147. DROP CONSTRAINT vlt_fuel_value_fk01 RESTRICT;
  148.  
  149. DROP INDEX public.fki_vlt_fuel_value_fk01;
  150.  
  151. DROP INDEX public.vlt_interest_point_index01;
  152.  
  153. DROP INDEX public.vlt_model_command_idx1;
  154.  
  155. DROP INDEX public.vlt_model_cmd_param_ixd1;
  156.  
  157. DROP TRIGGER vlt_model_command_param_trg ON public.vlt_model_command_param;
  158.  
  159. ALTER TABLE public.vlt_parameter
  160. DROP COLUMN ref_date_num;
  161.  
  162. DROP INDEX public.vlt_port_status_index01;
  163.  
  164. DROP INDEX public.vlt_port_status_index02;
  165.  
  166. ALTER TABLE public.vlt_refuel_station
  167. DROP COLUMN station_name;
  168.  
  169. ALTER TABLE public.vlt_transaction
  170. DROP COLUMN temp_data;
  171.  
  172. ALTER TABLE public.vlt_transaction
  173. DROP COLUMN temp_data2;
  174.  
  175. ALTER TABLE public.vlt_transaction
  176. DROP COLUMN duplicate;
  177.  
  178. ALTER TABLE public.vlt_transaction
  179. DROP COLUMN address_updated;
  180.  
  181. DROP INDEX public.vlt_transaction_index04;
  182.  
  183. DROP INDEX public.vlt_transaction_index06;
  184.  
  185. DROP INDEX public.vlt_transaction_index07;
  186.  
  187. DROP INDEX public.vlt_transaction_index08;
  188.  
  189. DROP INDEX public.vlt_transaction_driver_idx1;
  190.  
  191. DROP INDEX public.vlt_transaction_driver_idx2;
  192.  
  193. DROP INDEX public.vlt_transaction_driver_idx3;
  194.  
  195. DROP TABLE public.bktran_null;
  196.  
  197. DROP TABLE public.quantidade;
  198.  
  199. DROP TABLE public.temp;
  200.  
  201. DROP TABLE public.temp2032;
  202.  
  203. DROP TABLE public.viddevice;
  204.  
  205. DROP TABLE public.vidtransaction;
  206.  
  207. DROP TABLE public.vlast_valid_idodometer;
  208.  
  209. DROP TABLE public.vlimit_group;
  210.  
  211. DROP TABLE public.vlt_alert_backup;
  212.  
  213. DROP TABLE public.vlt_components;
  214.  
  215. DROP TABLE public.vlt_time_zone;
  216.  
  217. DROP TABLE public.vlt_time_zone_interval;
  218.  
  219. DROP VIEW public.rep_online_offline_vw;
  220.  
  221. DROP VIEW public.rep_route_vw;
  222.  
  223. DROP VIEW public.ultima_comunicacao;
  224.  
  225. DROP VIEW public.ultimo_erro;
  226.  
  227. DROP VIEW public.vlt_device_vw_ant;
  228.  
  229. DROP VIEW public.vlt_device_vw_old;
  230.  
  231. CREATE TABLESPACE crm_data
  232. OWNER postgres
  233. LOCATION E'/usr/local/pgsql/index/crm_data';
  234.  
  235. CREATE TABLESPACE crm_index
  236. OWNER postgres
  237. LOCATION E'/usr/local/pgsql/index/crm_index';
  238.  
  239. CREATE TABLESPACE dr_data
  240. OWNER pgsql
  241. LOCATION E'/home/postgres/index/data';
  242.  
  243. CREATE TABLESPACE dr_index
  244. OWNER pgsql
  245. LOCATION E'/home/postgres/index/index';
  246.  
  247. CREATE TABLESPACE entrega_data
  248. OWNER pgsql
  249. LOCATION E'/home/postgres/index/entrega_data';
  250.  
  251. CREATE TABLESPACE entrega_index
  252. OWNER pgsql
  253. LOCATION E'/home/postgres/index/entrega_index';
  254.  
  255. CREATE TABLESPACE garagem_data
  256. OWNER pgsql
  257. LOCATION E'/home/postgres/index/garagem_data';
  258.  
  259. CREATE TABLESPACE garagem_index
  260. OWNER pgsql
  261. LOCATION E'/home/postgres/index/garagem_index';
  262.  
  263. CREATE TABLESPACE gerencial_data
  264. OWNER pgsql
  265. LOCATION E'/home/postgres/index/gerencial_data';
  266.  
  267. CREATE TABLESPACE gerencial_index
  268. OWNER pgsql
  269. LOCATION E'/home/postgres/index/gerencial_index';
  270.  
  271. CREATE OR REPLACE FUNCTION public.agrupa_tudo (
  272. )
  273. RETURNS integer AS
  274. $body$
  275. declare
  276. result bigint;
  277. reg table01%ROWTYPE;
  278. begin
  279. FOR reg in select distinct iddevice,idrecordtype
  280. from vlt_transaction
  281. LOOP
  282. SELECT public.vlt_agrupa_transaction(reg.iddevice, NULL, reg.idrecordtype)
  283. into result;
  284. END LOOP;
  285.  
  286. return result;
  287. end
  288. $body$
  289. LANGUAGE 'plpgsql'
  290. VOLATILE
  291. CALLED ON NULL INPUT
  292. SECURITY INVOKER
  293. COST 100;
  294.  
  295. CREATE OR REPLACE FUNCTION public.dataf (
  296. num integer = 0
  297. )
  298. RETURNS varchar AS
  299. $body$
  300. declare
  301. Year integer;
  302. Month integer;
  303. Day integer;
  304. val integer;
  305. begin
  306. val := 5454 + num;
  307. year := TRUNC(val / 417);
  308. month := TRUNC((val - year * 417) / 32);
  309. day := val - year * 417 - month * 32;
  310. year:=year+2000;
  311. return(day || '/' || month || '/' ||year);
  312. end
  313. $body$
  314. LANGUAGE 'plpgsql'
  315. VOLATILE
  316. CALLED ON NULL INPUT
  317. SECURITY INVOKER
  318. COST 100;
  319.  
  320. CREATE FUNCTION public.fin_bank_update_search_fnc (
  321. )
  322. RETURNS trigger AS
  323. $body$
  324. BEGIN
  325. perform fin_update_bank_search_fnc(new.idbank);
  326. return new;
  327. END;
  328. $body$
  329. LANGUAGE 'plpgsql'
  330. VOLATILE
  331. CALLED ON NULL INPUT
  332. SECURITY INVOKER;
  333.  
  334. CREATE FUNCTION public.fin_update_bank_search_fnc (
  335. pidbank bigint
  336. )
  337. RETURNS pg_catalog.void AS
  338. $body$
  339. BEGIN
  340. update fin_bank
  341. set bank_search = to_tsvector(utl_text_search((coalesce(fin_bank.bank, '') || ' ' || coalesce(fin_bank.cnpj, '') || ' ' || coalesce(fin_bank.code, ''))))
  342. where idbank = pidbank;
  343. END;
  344. $body$
  345. LANGUAGE 'plpgsql'
  346. VOLATILE
  347. CALLED ON NULL INPUT
  348. SECURITY INVOKER;
  349.  
  350. CREATE OR REPLACE FUNCTION public.ini_device (
  351. pdevice varchar
  352. )
  353. RETURNS integer AS
  354. $body$
  355. declare
  356. vdevice bigint;
  357. begin
  358. if pdevice in ('357805023984942','861001003748320') then
  359. -- RAISE EXCEPTION 'BLOQUEADO';
  360. select *
  361. into vdevice
  362. from ini_device_teste2_1(pdevice);
  363. else
  364. select *
  365. into vdevice
  366. from ini_device_teste2_0(pdevice);
  367. -- from ini_device_producao(pdevice);
  368. end if;
  369. return vdevice;
  370. end
  371. $body$
  372. LANGUAGE 'plpgsql'
  373. VOLATILE
  374. CALLED ON NULL INPUT
  375. SECURITY INVOKER
  376. COST 100;
  377.  
  378. CREATE FUNCTION public.ini_device_teste2 (
  379. pdevice varchar
  380. )
  381. RETURNS integer AS
  382. $body$
  383. declare
  384. reg RECORD;
  385. -- vvalid boolean;
  386. viddevice bigint;
  387. vcommand_date timestamp;
  388. vidcustomer bigint;
  389. vbit_connected boolean;
  390. vdif integer;
  391. vlast_valid_idodometer bigint;
  392. vlast_valid_odometer bigint;
  393. vDISTANCE_TYPE char(1);
  394. vlimit_group_on integer;
  395. vlimit_group_off integer;
  396. vvehicle_code varchar;
  397. Vspeed_limit NUMERIC;
  398. Vvalr_min_temperature NUMERIC;
  399. Vvalr_max_temperature NUMERIC;
  400. Vvalr_min_preassure NUMERIC;
  401. Vvalr_max_preassure NUMERIC;
  402. vidtpmsmodel numeric;
  403. begin
  404. -- tipos de registros
  405. create local temp table record_type on commit preserve rows as
  406. select *
  407. from vlt_record_type;
  408. -- consulta device
  409. select iddevice,idcustomer,bit_connected
  410. , case when s.daylight_saving
  411. then s.difference_daylight_saving
  412. else s.difference
  413. end
  414. ,DISTANCE_TYPE
  415. ,limit_group_on
  416. ,limit_group_off
  417. , COALESCE(vehicle_code,D.CODE)
  418. ,speed_limit
  419. ,t.valr_min_temperature
  420. ,t.valr_max_temperature
  421. ,t.valr_min_preassure
  422. ,t.valr_max_preassure
  423. ,d.idtpmsmodel
  424. into viddevice
  425. , vidcustomer
  426. , vbit_connected
  427. , vdif
  428. , vDISTANCE_TYPE
  429. , vlimit_group_on
  430. , vlimit_group_off
  431. , vvehicle_code
  432. , Vspeed_limit
  433. , Vvalr_min_temperature
  434. , Vvalr_max_temperature
  435. , Vvalr_min_preassure
  436. , Vvalr_max_preassure
  437. , vidtpmsmodel
  438. from vlt_device d,vlt_device_model m,VLT_SCHEDULE s,vlt_tpms_model t
  439. where code= pdevice
  440. and d.iddevicemodel=m.iddevicemodel
  441. and s.idschedule=d.idschedule
  442. and d.idtpmsmodel = t.id;
  443.  
  444. -- cria device
  445. if viddevice is null then
  446. SELECT nextval('vlt_device_iddevice_seq')
  447. into viddevice;
  448. select idcustomer_default
  449. into vidcustomer
  450. from vlt_parameter;
  451. insert into vlt_device(iddevice ,code , description, idschedule, idfirmware, idfirmware_new, firmware_size, vehicle, idcustomer , idtpmsmodel, iddevicemodel, vehicle_code, device_search, tag , speed_limit)
  452. values(viddevice,pdevice, pdevice , 8 , 1 , null , 0 , null , vidcustomer, 1 , 1 , null , null , null, 0);
  453. vbit_connected:=false;
  454. vdif:=-3;
  455. vDISTANCE_TYPE:='G';
  456. vlimit_group_on:=20;
  457. vlimit_group_off:=200;
  458. end if;
  459.  
  460. create local temp table alert_customer on commit preserve rows as
  461. select m.*
  462. from vlt_alert_customer m
  463. where m.idcustomer = vidcustomer;
  464.  
  465. -- tpms model
  466. create local temp table tpms_model on commit preserve rows as
  467. select m.*
  468. from vlt_tpms_model m
  469. where m.id= vidtpmsmodel;
  470. -- device interval
  471. create local temp table device_interval on commit preserve rows as
  472. select m.*
  473. from vlt_device_interval m
  474. where iddevice = viddevice;
  475.  
  476. -- pontos do device
  477. Create local temp table interest_point (
  478. idinterestpoint bigint,
  479. active boolean,
  480. speed_alert boolean,
  481. latitude numeric,
  482. longitude numeric,
  483. radius numeric,
  484. speed numeric,
  485. interest_point varchar(200),
  486. alert boolean)on commit preserve rows;
  487. insert into interest_point(idinterestpoint,active,speed_alert,alert,latitude,longitude,radius,interest_point,speed)
  488. select p.idinterestpoint,false,false,false,latitude,longitude,radius,interest_point,speed from vlt_interest_point p
  489. where p.idcustomer = vidcustomer;
  490. -- cercas do device
  491. Create local temp table fence (
  492. idfence bigint,
  493. active boolean,
  494. speed_alert boolean,
  495. fence varchar(200),
  496. speed numeric,
  497. alert boolean)on commit preserve rows;
  498. insert into fence(idfence,active,speed_alert,alert,fence,speed)
  499. select p.idfence,false,false,false,fence,speed from vlt_fence p
  500. where p.idcustomer = vidcustomer;
  501.  
  502. -- tabela temporaria
  503. create local temp table device(
  504. iddevice bigint,
  505. limit_group_on integer,
  506. limit_group_off integer,
  507. dif integer,
  508. speed_limit_alert BOOLEAN DEFAULT FALSE,
  509. speed_limit NUMERIC,
  510. idcustomer bigint,
  511. vehicle_code varchar(20),
  512. last_transaction_sequence bigint,
  513. last_command_date timestamp WITHOUT TIME ZONE,
  514. last_latitude numeric,
  515. last_longitude numeric,
  516. last_valid_idodometer bigint,
  517. last_valid_odometer bigint,
  518. DISTANCE_TYPE char(1),
  519. last_iddriver bigint,
  520. bit_connected boolean,
  521. last_connected boolean,
  522. last_valid boolean,
  523. valr_min_temperature NUMERIC DEFAULT 0,
  524. valr_max_temperature NUMERIC DEFAULT 0,
  525. valr_min_preassure NUMERIC DEFAULT 0,
  526. valr_max_preassure NUMERIC DEFAULT 0,
  527. alert_connected boolean default false
  528. )on commit preserve rows;
  529.  
  530. -- informações do device
  531. insert into device(speed_limit ,vehicle_code ,iddevice ,idcustomer ,bit_connected ,dif ,last_transaction_sequence,last_command_date,last_latitude,last_longitude,last_iddriver,last_connected,last_valid,limit_group_on,limit_group_off,valr_min_temperature,valr_max_temperature,valr_min_preassure,valr_max_preassure,alert_connected)
  532. values(Vspeed_limit,COALESCE(vvehicle_code,PDEVICE),viddevice,vidcustomer,vbit_connected,vdif,0 ,null ,0 ,0 ,null ,false ,false,vlimit_group_on,vlimit_group_off,vvalr_min_temperature,Vvalr_max_temperature,Vvalr_min_preassure,Vvalr_max_preassure,exists(select null from device_interval));
  533. -- informações de odometro
  534. select COALESCE(odometer,0)
  535. , command_date
  536. into vlast_valid_odometer
  537. , vcommand_date
  538. from vlt_transaction
  539. where iddevice = viddevice
  540. and valid
  541. and idrecordtype<>12
  542. order by idtransaction desc
  543. limit 1;
  544.  
  545. select iddeviceodometer
  546. into vlast_valid_idodometer
  547. from vlt_device_odometer o
  548. where o.odometer_date<vcommand_date
  549. and o.iddevice = viddevice
  550. order by odometer_date desc
  551. limit 1;
  552.  
  553. update device set
  554. last_valid_idodometer = vlast_valid_idodometer,
  555. last_valid_odometer = vlast_valid_odometer;
  556.  
  557. create local temp table record_type_last on commit preserve rows as
  558. select r.idrecordtype
  559. , r.idtransaction
  560. , t.command_date
  561. , t.connected
  562. , t.latitude
  563. , t.longitude
  564. , COALESCE(t.idtransaction_group,t.idtransaction) as idtransaction_group
  565. , COALESCE(g.command_date,t.command_date) as command_date_group
  566. , COALESCE(g.connected,t.connected) as connected_group
  567. , COALESCE(g.latitude,t.latitude) as latitude_group
  568. , COALESCE(g.longitude,t.longitude) as longitude_group
  569. from (select idrecordtype
  570. , (select idtransaction
  571. from vlt_transaction t
  572. where t.iddevice=viddevice
  573. and t.idrecordtype=record_type.idrecordtype
  574. -- and valid
  575. order by idtransaction desc
  576. limit 1) idtransaction
  577. from record_type where idrecordtype not in(12))r left join vlt_transaction t left join vlt_transaction g
  578. on t.idtransaction_group=g.idtransaction
  579. on r.idtransaction = t.idtransaction;
  580. -- last transaction
  581. for reg in select transaction_sequence,
  582. command_date,
  583. latitude,
  584. longitude,
  585. iddriver,
  586. connected,
  587. valid
  588. from vlt_transaction
  589. where idtransaction=(select max(idtransaction) from record_type_last)
  590. loop
  591. update device set
  592. last_transaction_sequence = reg.transaction_sequence,
  593. last_command_date = reg.command_date,
  594. last_latitude = reg.latitude,
  595. last_longitude = reg.longitude,
  596. last_iddriver = reg.iddriver,
  597. last_connected = reg.connected,
  598. last_valid = reg.valid;
  599. end loop;
  600.  
  601. return(0);
  602. end
  603. $body$
  604. LANGUAGE 'plpgsql'
  605. VOLATILE
  606. CALLED ON NULL INPUT
  607. SECURITY INVOKER;
  608.  
  609. CREATE OR REPLACE FUNCTION public.ini_device_teste2_1 (
  610. pdevice varchar
  611. )
  612. RETURNS integer AS
  613. $body$
  614. declare
  615. reg RECORD;
  616. -- vvalid boolean;
  617. viddevice bigint;
  618. vcommand_date timestamp;
  619. vidcustomer bigint;
  620. vbit_connected boolean;
  621. vdif integer;
  622. vlast_valid_idodometer bigint;
  623. vlast_valid_odometer bigint;
  624. vDISTANCE_TYPE char(1);
  625. vlimit_group_on integer;
  626. vlimit_group_off integer;
  627. vvehicle_code varchar;
  628. Vspeed_limit NUMERIC;
  629. Vvalr_min_temperature NUMERIC;
  630. Vvalr_max_temperature NUMERIC;
  631. Vvalr_min_preassure NUMERIC;
  632. Vvalr_max_preassure NUMERIC;
  633. vidtpmsmodel numeric;
  634. vblocked boolean;
  635. begin
  636. -- tipos de registros
  637. create local temp table record_type on commit preserve rows as
  638. select *
  639. from vlt_record_type;
  640. -- consulta device
  641. select iddevice,idcustomer,bit_connected
  642. , case when s.daylight_saving
  643. then s.difference_daylight_saving
  644. else s.difference
  645. end
  646. ,DISTANCE_TYPE
  647. ,limit_group_on
  648. ,limit_group_off
  649. , COALESCE(vehicle_code,D.CODE)
  650. ,speed_limit
  651. ,t.valr_min_temperature
  652. ,t.valr_max_temperature
  653. ,t.valr_min_preassure
  654. ,t.valr_max_preassure
  655. ,d.idtpmsmodel
  656. ,blocked
  657. into viddevice
  658. , vidcustomer
  659. , vbit_connected
  660. , vdif
  661. , vDISTANCE_TYPE
  662. , vlimit_group_on
  663. , vlimit_group_off
  664. , vvehicle_code
  665. , Vspeed_limit
  666. , Vvalr_min_temperature
  667. , Vvalr_max_temperature
  668. , Vvalr_min_preassure
  669. , Vvalr_max_preassure
  670. , vidtpmsmodel
  671. , vblocked
  672. from vlt_device d,vlt_device_model m,VLT_SCHEDULE s,vlt_tpms_model t
  673. where code= pdevice
  674. and d.iddevicemodel=m.iddevicemodel
  675. and s.idschedule=d.idschedule
  676. and d.idtpmsmodel = t.id;
  677. if vblocked then
  678. RAISE EXCEPTION 'BLOQUEADO';
  679. end if;
  680.  
  681. -- cria device
  682. if viddevice is null then
  683. SELECT nextval('vlt_device_iddevice_seq')
  684. into viddevice;
  685. select idcustomer_default
  686. into vidcustomer
  687. from vlt_parameter;
  688. insert into vlt_device(iddevice ,code , description, idschedule, idfirmware, idfirmware_new, firmware_size, vehicle, idcustomer , idtpmsmodel, iddevicemodel, vehicle_code, device_search, tag , speed_limit)
  689. values(viddevice,pdevice, pdevice , 8 , 1 , null , 0 , null , vidcustomer, 1 , 3 , null , null , null, 0);
  690. vbit_connected:=false;
  691. vdif:=-3;
  692. vDISTANCE_TYPE:='G';
  693. vlimit_group_on:=20;
  694. vlimit_group_off:=200;
  695. end if;
  696.  
  697. create local temp table alert_customer on commit preserve rows as
  698. select m.*
  699. from vlt_alert_customer m
  700. where m.idcustomer = vidcustomer;
  701.  
  702. -- tpms model
  703. create local temp table tpms_model on commit preserve rows as
  704. select m.*
  705. from vlt_tpms_model m
  706. where m.id= vidtpmsmodel;
  707. -- device interval
  708. create local temp table device_interval on commit preserve rows as
  709. select m.*
  710. from vlt_device_interval m
  711. where iddevice = viddevice;
  712.  
  713. -- pontos do device
  714. Create local temp table interest_point (
  715. idinterestpoint bigint,
  716. active boolean,
  717. speed_alert boolean,
  718. latitude numeric,
  719. longitude numeric,
  720. radius numeric,
  721. speed numeric,
  722. interest_point varchar(200),
  723. alert boolean)on commit preserve rows;
  724.  
  725. insert into interest_point(idinterestpoint,active,speed_alert,alert,latitude,longitude,radius,interest_point,speed)
  726. select p.idinterestpoint,false,false,false,latitude,longitude,radius,interest_point,speed from vlt_interest_point p
  727. where p.idcustomer = vidcustomer;
  728. -- cercas do device
  729. Create local temp table fence (
  730. idfence bigint,
  731. active boolean,
  732. speed_alert boolean,
  733. fence varchar(200),
  734. speed numeric,
  735. alert boolean)on commit preserve rows;
  736. insert into fence(idfence,active,speed_alert,alert,fence,speed)
  737. select p.idfence,false,false,false,fence,speed from vlt_fence p
  738. where p.idcustomer = vidcustomer;
  739.  
  740. -- tabela temporaria
  741. create local temp table device(
  742. iddevice bigint,
  743. limit_group_on integer,
  744. limit_group_off integer,
  745. dif integer,
  746. speed_limit_alert BOOLEAN DEFAULT FALSE,
  747. speed_limit NUMERIC,
  748. idcustomer bigint,
  749. vehicle_code varchar(20),
  750. last_transaction_sequence bigint,
  751. last_command_date timestamp WITHOUT TIME ZONE,
  752. last_latitude numeric,
  753. last_longitude numeric,
  754. last_valid_idodometer bigint,
  755. last_valid_odometer bigint,
  756. DISTANCE_TYPE char(1),
  757. last_iddriver bigint,
  758. bit_connected boolean,
  759. last_connected boolean,
  760. last_valid boolean,
  761. valr_min_temperature NUMERIC DEFAULT 0,
  762. valr_max_temperature NUMERIC DEFAULT 0,
  763. valr_min_preassure NUMERIC DEFAULT 0,
  764. valr_max_preassure NUMERIC DEFAULT 0,
  765. alert_connected boolean default false,
  766. iddriverrecord bigint
  767. )on commit preserve rows;
  768.  
  769. -- informações do device
  770. insert into device(speed_limit ,vehicle_code ,iddevice ,idcustomer ,bit_connected ,dif ,last_transaction_sequence,last_command_date,last_latitude,last_longitude,last_iddriver,last_connected,last_valid,limit_group_on,limit_group_off,valr_min_temperature,valr_max_temperature,valr_min_preassure,valr_max_preassure,alert_connected,iddriverrecord)
  771. values(Vspeed_limit,COALESCE(vvehicle_code,PDEVICE),viddevice,vidcustomer,vbit_connected,vdif,0 ,null ,0 ,0 ,null ,false ,false,vlimit_group_on,vlimit_group_off,vvalr_min_temperature,Vvalr_max_temperature,Vvalr_min_preassure,Vvalr_max_preassure,exists(select null from device_interval),(select max(iddriverrecord) from vlt_driver_record where iddevice=viddevice));
  772. -- informações de odometro
  773. select COALESCE(odometer,0)
  774. , command_date
  775. into vlast_valid_odometer
  776. , vcommand_date
  777. from vlt_transaction
  778. where iddevice = viddevice
  779. and valid
  780. and idrecordtype<>12
  781. order by idtransaction desc
  782. limit 1;
  783.  
  784. select iddeviceodometer
  785. into vlast_valid_idodometer
  786. from vlt_device_odometer o
  787. where o.odometer_date<vcommand_date
  788. and o.iddevice = viddevice
  789. order by odometer_date desc
  790. limit 1;
  791.  
  792. update device set
  793. last_valid_idodometer = vlast_valid_idodometer,
  794. last_valid_odometer = vlast_valid_odometer;
  795.  
  796. create local temp table record_type_last on commit preserve rows as
  797. select r.idrecordtype
  798. , r.idtransaction
  799. , t.command_date
  800. , t.connected
  801. , t.latitude
  802. , t.longitude
  803. , COALESCE(t.idtransaction_group,t.idtransaction) as idtransaction_group
  804. , COALESCE(g.command_date,t.command_date) as command_date_group
  805. , COALESCE(g.connected,t.connected) as connected_group
  806. , COALESCE(g.latitude,t.latitude) as latitude_group
  807. , COALESCE(g.longitude,t.longitude) as longitude_group
  808. from (select idrecordtype
  809. , (select idtransaction
  810. from vlt_transaction t
  811. where t.iddevice=viddevice
  812. and t.idrecordtype=record_type.idrecordtype
  813. -- and valid
  814. order by idtransaction desc
  815. limit 1) idtransaction
  816. from record_type where idrecordtype not in(12))r left join vlt_transaction t left join vlt_transaction g
  817. on t.idtransaction_group=g.idtransaction
  818. on r.idtransaction = t.idtransaction;
  819. -- last transaction
  820. for reg in select transaction_sequence,
  821. command_date,
  822. latitude,
  823. longitude,
  824. iddriver,
  825. connected,
  826. valid
  827. from vlt_transaction
  828. where idtransaction=(select max(idtransaction) from record_type_last)
  829. loop
  830. update device set
  831. last_transaction_sequence = reg.transaction_sequence,
  832. last_command_date = reg.command_date,
  833. last_latitude = reg.latitude,
  834. last_longitude = reg.longitude,
  835. last_iddriver = reg.iddriver,
  836. last_connected = reg.connected,
  837. last_valid = reg.valid;
  838. end loop;
  839.  
  840. return(0);
  841. end
  842. $body$
  843. LANGUAGE 'plpgsql'
  844. VOLATILE
  845. CALLED ON NULL INPUT
  846. SECURITY INVOKER
  847. COST 100;
  848.  
  849. CREATE FUNCTION public.mce_device_fnc (
  850. pidmonitoringcenter bigint,
  851. pidcustomer bigint
  852. )
  853. RETURNS TABLE (
  854. iddevice bigint,
  855. description varchar,
  856. valid boolean,
  857. devicetag text,
  858. tag text,
  859. latitude numeric,
  860. longitude numeric,
  861. vehicle_code varchar,
  862. idcustomer bigint,
  863. code varchar,
  864. device_search tsvector,
  865. has_battery boolean,
  866. has_analog_ports boolean,
  867. has_digital_ports boolean,
  868. has_tpms boolean,
  869. has_fuel boolean,
  870. has_temperature boolean,
  871. connected text,
  872. is_connected boolean,
  873. speed integer,
  874. command_date varchar,
  875. start_date varchar,
  876. driver varchar,
  877. address varchar,
  878. idtransaction bigint,
  879. online char,
  880. record_type varchar,
  881. has_alert boolean,
  882. active boolean,
  883. odometer numeric,
  884. customer varchar
  885. ) AS
  886. $body$
  887. declare
  888. devices bigint [];
  889. transactions bigint [];
  890. tempvalue bigint;
  891. rec record;
  892. begin
  893. for rec in (select mc.iddevice from vlt_device_mc mc where mc.idmonitoringcenter = pidmonitoringcenter) loop
  894. transactions := array_append(transactions, (select l.idtransaction from vlt_last_transaction_fnc(rec.iddevice) l));
  895. end loop;
  896.  
  897. return query select dev.iddevice
  898. ,dev.description
  899. ,tt.valid
  900. ,mc.devicetag
  901. ,dev.tag
  902. ,tt.latitude
  903. ,tt.longitude
  904. ,dev.vehicle_code
  905. ,dev.idcustomer
  906. ,dev.code
  907. ,dev.device_search
  908. ,devmodel.has_battery
  909. ,devmodel.has_analog_ports
  910. ,devmodel.has_digital_ports
  911. ,devmodel.has_tpms
  912. ,devmodel.has_fuel
  913. ,devmodel.has_temperature
  914. ,CASE WHEN tt.connected THEN 'Sim'::text ELSE 'Não'::text END AS connected
  915. ,tt.connected AS is_connected
  916. ,tt.speed
  917. ,to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date
  918. ,to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date
  919. ,(select drv.driver from vlt_driver drv where drv.iddriver = tt.iddriver) driver
  920. ,tt.address
  921. ,tt.idtransaction
  922. ,tt.online
  923. ,(select rt.description from vlt_record_type rt where rt.idrecordtype = tt.idrecordtype) record_type
  924. ,false AS has_alert
  925. ,dev.active
  926. ,round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  927. ,(select cus.customer from par_customer cus where cus.idcustomer = dev.idcustomer) customer
  928. from vlt_transaction tt
  929. ,vlt_device dev
  930. ,vlt_device_mc mc
  931. ,vlt_device_model devmodel
  932. where tt.idtransaction = any (transactions)
  933. and dev.iddevice = tt.iddevice
  934. and devmodel.iddevicemodel = dev.iddevicemodel
  935. and dev.active = true
  936. and dev.iddevice = mc.iddevice
  937. and mc.idmonitoringcenter = pidmonitoringcenter
  938. and case when pidcustomer is null
  939. then true
  940. else dev.idcustomer = pidcustomer
  941. end
  942.  
  943. order by tt.command_date DESC;
  944. --,dev.vehicle_code
  945. --,dev.description;
  946. end
  947. $body$
  948. LANGUAGE 'plpgsql'
  949. VOLATILE
  950. CALLED ON NULL INPUT
  951. SECURITY INVOKER;
  952.  
  953. CREATE OR REPLACE FUNCTION public.par_login_fnc (
  954. pdesc_uid varchar,
  955. pdesc_date varchar,
  956. pdesc_useragent varchar,
  957. pdesc_ip varchar
  958. )
  959. RETURNS TABLE (
  960. idcustomer bigint,
  961. iduser bigint,
  962. pdesc_key varchar,
  963. idseller bigint,
  964. systype varchar
  965. ) AS
  966. $body$
  967. declare
  968. viduser bigint;
  969. vrbaprof_id bigint;
  970. vidcustomer bigint;
  971. vdthr_access timestamp without time zone;
  972. vidseller bigint;
  973. vsystype varchar;
  974. vcolor varchar;
  975. vlogo varchar;
  976. vstatus varchar;
  977. begin
  978.  
  979. vdthr_access := current_timestamp;
  980.  
  981. begin
  982. select par_user.iduser
  983. , par_user.rbaprof_id
  984. , par_user.status
  985. into viduser
  986. , vrbaprof_id
  987. , vstatus
  988. from par_user
  989. where md5(par_user.login || ':' || par_user.password || ':' || pdesc_date) = pdesc_uid;
  990. exception
  991. when others then
  992. raise exception 'Ocorreu um erro ao buscar os dados do usuário. Descrição: %', SQLERRM;
  993. end;
  994.  
  995. if not found then
  996. raise exception 'invalid_user';
  997. end if;
  998.  
  999. if (vstatus = 'I') then
  1000. raise exception 'Usuário Inativo';
  1001. end if;
  1002.  
  1003.  
  1004.  
  1005. begin
  1006. select
  1007. case when rba_profile.parcust_id is not null then rba_profile.parcust_id
  1008. when rba_profile.idseller is not null then rba_profile.idseller
  1009. when rba_profile.idmonitoringcenter is not null then rba_profile.idmonitoringcenter
  1010. else 0 end,
  1011. case when rba_profile.parcust_id is not null then 'CUS'
  1012. when rba_profile.idseller is not null then 'SEL'
  1013. when rba_profile.idmonitoringcenter is not null then 'MCE'
  1014. else 'ADM' end
  1015. into vidcustomer, vsystype
  1016. from rba_profile
  1017. where id = vrbaprof_id;
  1018. exception
  1019. when others then
  1020. raise exception 'Ocorreu um erro ao buscar o perfil do usuário. Descrição: %', SQLERRM;
  1021. end;
  1022.  
  1023. begin
  1024. if (vsystype = 'CUS') and ((select active
  1025. from par_customer
  1026. where par_customer.idcustomer = vidcustomer) = false) then
  1027. raise exception 'Cadastro inativo. %', (select block_message
  1028. from par_customer
  1029. where par_customer.idcustomer = vidcustomer);
  1030. end if;
  1031. end;
  1032.  
  1033. if not found then
  1034. raise exception 'Perfil de usuário não localizado. Entre em contato com o administrador.';
  1035. end if;
  1036.  
  1037. select par_customer.idseller
  1038. into vidseller
  1039. from par_customer
  1040. where par_customer.idcustomer = (
  1041. select rba_profile.parcust_id
  1042. from rba_profile
  1043. where rba_profile.id = vrbaprof_id);
  1044.  
  1045. if not found then
  1046. vidseller := null;
  1047. end if;
  1048.  
  1049. --TODO: verificar qual o último acesso dele pela data e ver se ainda está logado.
  1050. begin
  1051. insert into par_access (parusua_id
  1052. ,dthr_access
  1053. ,desc_ip
  1054. ,desc_useragent
  1055. ,desc_uid
  1056. ,valid)
  1057. values (viduser
  1058. ,vdthr_access
  1059. ,pdesc_ip
  1060. ,pdesc_useragent
  1061. ,md5(viduser || ':' || vdthr_access || ':' || pdesc_ip || ':' || pdesc_useragent)
  1062. ,'S');
  1063. exception
  1064. when others then
  1065. raise exception 'Não foi possível registrar o seu acesso. Descricao: %', SQLERRM;
  1066. end;
  1067.  
  1068. return query select vidcustomer, viduser, md5(viduser || ':' || vdthr_access || ':' || pdesc_ip || ':' || pdesc_useragent)::character varying, vidseller, vsystype;
  1069. end;
  1070. $body$
  1071. LANGUAGE 'plpgsql'
  1072. VOLATILE
  1073. CALLED ON NULL INPUT
  1074. SECURITY INVOKER
  1075. COST 100 ROWS 1000;
  1076.  
  1077. ALTER FUNCTION public.par_login_fnc (pdesc_uid varchar, pdesc_date varchar, pdesc_useragent varchar, pdesc_ip varchar)
  1078. OWNER TO pgc;
  1079.  
  1080. ALTER FUNCTION public.par_message_atualiza_is_read_fnc ()
  1081. OWNER TO pgsql;
  1082.  
  1083. ALTER FUNCTION public.par_message_atualiza_origin_fnc ()
  1084. OWNER TO pgsql;
  1085.  
  1086. ALTER FUNCTION public.par_update_customer_search_fnc (pidcustomer bigint)
  1087. OWNER TO pgsql;
  1088.  
  1089. ALTER FUNCTION public.par_update_user_search_fnc (piduser bigint)
  1090. OWNER TO pgsql;
  1091.  
  1092. ALTER FUNCTION public.par_user_inactivate_user_fnc ()
  1093. OWNER TO pgsql;
  1094.  
  1095. ALTER FUNCTION public.par_user_update_search_fnc ()
  1096. OWNER TO pgsql;
  1097.  
  1098. CREATE OR REPLACE FUNCTION public.par_verifica_acesso_fnc (
  1099. pdesc_uid varchar,
  1100. pdesc_useragent varchar,
  1101. pdesc_ip varchar,
  1102. pdesc_route varchar,
  1103. pindr_type varchar
  1104. )
  1105. RETURNS varchar AS
  1106. $body$
  1107. declare
  1108. vparusua_id numeric;
  1109. vdthr_acesso timestamp;
  1110. vrbaprof_id bigint;
  1111. vvalid char;
  1112. begin
  1113.  
  1114. begin
  1115. select parusua_id, dthr_access, valid
  1116. from par_access
  1117. into vparusua_id, vdthr_acesso, vvalid
  1118. where desc_ip = pdesc_ip
  1119. and desc_useragent = pdesc_useragent
  1120. and desc_uid = pdesc_uid;
  1121. exception
  1122. when others then
  1123. raise exception 'Ocorreu um erro ao buscar o usuário. Descrição: %', SQLERRM;
  1124. end;
  1125.  
  1126.  
  1127.  
  1128. if vparusua_id is null then
  1129. raise 'Você não está logado.' USING ERRCODE = '42000';
  1130. end if;
  1131.  
  1132. if not exists(select null from par_user where iduser = vparusua_id and status = 'A') then
  1133. raise exception 'Usuario desativado.';
  1134. end if;
  1135.  
  1136. begin
  1137. select rbaprof_id
  1138. into vrbaprof_id
  1139. from par_user
  1140. where iduser = vparusua_id;
  1141. exception
  1142. when others then
  1143. raise exception 'Ocorreu um erro ao buscar o perfil do usuario. Descrição: %', SQLERRM;
  1144. end;
  1145.  
  1146. if (select count(*)
  1147. from rba_routes
  1148. join rba_profile_routes on rba_profile_routes.rbarout_id = rba_routes.id
  1149. where rba_routes.desc_route = pdesc_route
  1150. and rba_routes.indr_type = pindr_type
  1151. and rba_profile_routes.rbaprof_id = vrbaprof_id) = 0 then
  1152. raise exception 'Você não tem permissão para %', (SELECT desc_route_name from rba_routes where desc_route = pdesc_route and indr_type=pindr_type limit 1);
  1153. end if;
  1154.  
  1155. if vdthr_acesso + '1 day'::interval < current_timestamp then
  1156. RAISE 'Sua sessão expirou. Logue novamente.' USING ERRCODE = '28000';
  1157. end if;
  1158.  
  1159. if vvalid = 'N' then
  1160. RAISE 'Sua sessão foi encerrada. Logue novamente.' USING ERRCODE = '28000';
  1161. end if;
  1162.  
  1163. return vparusua_id;
  1164. end;
  1165. $body$
  1166. LANGUAGE 'plpgsql'
  1167. VOLATILE
  1168. CALLED ON NULL INPUT
  1169. SECURITY INVOKER
  1170. COST 100;
  1171.  
  1172. CREATE OR REPLACE FUNCTION public.rba_insert_basic_access_fnc (
  1173. pidcustomer numeric,
  1174. psystype varchar
  1175. )
  1176. RETURNS bigint AS
  1177. $body$
  1178. DECLARE
  1179. vrbaprof_id numeric;
  1180. vskel record;
  1181. aux varchar;
  1182. BEGIN
  1183.  
  1184. vrbaprof_id := nextval('rba_profile_seq');
  1185.  
  1186. begin
  1187. if psystype = 'CUS' then
  1188. insert into rba_profile (id, parcust_id, desc_profile) values (vrbaprof_id, pidcustomer, 'MASTER');
  1189. elseif psystype = 'SEL' then
  1190. insert into rba_profile (id, idseller, desc_profile) values (vrbaprof_id, pidcustomer, 'MASTER');
  1191. elseif psystype = 'ADM' then
  1192. insert into rba_profile (id, is_administrator, desc_profile) values (vrbaprof_id, true, 'MASTER');
  1193. elseif psystype = 'MCE' then
  1194. insert into rba_profile (id, idmonitoringcenter, desc_profile) values (vrbaprof_id, pidcustomer, 'MASTER');
  1195. else
  1196. raise exception 'Tipo de sistema não localizado.';
  1197. end if;
  1198. exception
  1199. when others then
  1200. raise exception 'Não foi possível registrar o grupo padrão para o cliente. Erro: %', SQLERRM;
  1201. end;
  1202.  
  1203. begin
  1204. for vskel in (select id
  1205. from rba_routes
  1206. where rba_routes.id not in (select rba_routes.id from rba_routes
  1207. where rba_routes.basic
  1208. and (rba_routes.indr_systype is null or rba_routes.indr_systype = psystype))
  1209. and (rba_routes.indr_systype = psystype or rba_routes.indr_systype is null)
  1210. order by rba_routes.id) loop
  1211. insert into rba_profile_routes (rbaprof_id, rbarout_id) values (vrbaprof_id, vskel.id);
  1212. end loop;
  1213. exception
  1214. when others then
  1215. raise exception 'Não foi possível inserir os acessos básicos para o perfil. Motivo: %', SQLERRM;
  1216. end;
  1217.  
  1218. begin
  1219. update rba_profile set desc_profile = 'ADMINISTRADOR' where id = vrbaprof_id;
  1220. exception
  1221. when others then
  1222. raise exception 'Não foi possível registrar o grupo ADMINISTRADOR. Descrição: %', SQLERRM;
  1223. end;
  1224.  
  1225. return vrbaprof_id;
  1226. END;
  1227. $body$
  1228. LANGUAGE 'plpgsql'
  1229. VOLATILE
  1230. CALLED ON NULL INPUT
  1231. SECURITY INVOKER
  1232. COST 100;
  1233.  
  1234. ALTER FUNCTION public.rba_profile_after_trg ()
  1235. OWNER TO pgsql;
  1236.  
  1237. CREATE FUNCTION public.rba_update_admin_profiles_fnc (
  1238. pidprofile bigint
  1239. )
  1240. RETURNS pg_catalog.void AS
  1241. $body$
  1242. DECLARE
  1243. rbaprof record;
  1244. rbarout record;
  1245. systype varchar;
  1246. BEGIN
  1247. -- ATUALIZA O PERFIL ADMINISTRADOR DE TODOS OS CLIENTES COM OS NOVOS ACESSOS
  1248. -- EXECUTAR ESSA FUNÇÃO A CADA NOVA VERSÃO
  1249.  
  1250. -- DESABILITA A TRIGGER QUE PROTEGE ALTERAÇÕES DO PERFIL ADMINISTRADOR
  1251. ALTER TABLE rba_profile_routes DISABLE TRIGGER rba_profile_routes_trg;
  1252.  
  1253. -- PERCORRE A TABELA DE PERFIS EM BUSCA DOS PERFIS DE ADMINISTRADOR
  1254. for rbaprof in (select *
  1255. from rba_profile
  1256. where rba_profile.desc_profile = 'ADMINISTRADOR'
  1257. and rba_profile.id = pidprofile) loop
  1258. if rbaprof.is_administrator then
  1259. systype := 'ADM';
  1260. elseif rbaprof.idseller is not null then
  1261. systype := 'SEL';
  1262. elseif rbaprof.idmonitoringcenter is not null then
  1263. systype := 'MCE';
  1264. else
  1265. systype := 'CUS';
  1266. end if;
  1267. -- CARREGA TODOS OS ACESSOS EXISTENTES
  1268. for rbarout in (select id from rba_routes where rba_routes.indr_systype is null or rba_routes.indr_systype = '' or rba_routes.indr_systype = systype) loop
  1269. if (select count(*)
  1270. from rba_profile_routes
  1271. where rbaprof_id = rbaprof.id
  1272. and rbarout_id = rbarout.id) = 0 then
  1273. begin
  1274. insert into rba_profile_routes (rbaprof_id, rbarout_id) values (rbaprof.id, rbarout.id);
  1275. exception
  1276. when others then
  1277. -- EM CASO DE ERRO HABILITA A TRIGGER
  1278. ALTER TABLE rba_profile_routes ENABLE TRIGGER rba_profile_routes_trg;
  1279. raise exception 'Erro ao atualizar os perfis ADMINISTRADOR';
  1280. end;
  1281. end if;
  1282. end loop;
  1283. end loop;
  1284.  
  1285. -- HABILITA A TRIGGER QUE PROTEGE ALTERAÇÕES DO PERFIL ADMINISTRADOR
  1286. ALTER TABLE rba_profile_routes ENABLE TRIGGER rba_profile_routes_trg;
  1287. END;
  1288. $body$
  1289. LANGUAGE 'plpgsql'
  1290. VOLATILE
  1291. CALLED ON NULL INPUT
  1292. SECURITY INVOKER;
  1293.  
  1294. CREATE OR REPLACE FUNCTION public.sel_register_device (
  1295. pdescription varchar,
  1296. pcode varchar,
  1297. pidcustomer numeric,
  1298. pvehicle_code varchar = NULL::character varying
  1299. )
  1300. RETURNS pg_catalog.void AS
  1301. $body$
  1302. DECLARE
  1303. vserial_key varchar;
  1304. transaction record;
  1305. alert record;
  1306. vidcustomer_default bigint;
  1307. BEGIN
  1308.  
  1309. select idcustomer_default
  1310. into vidcustomer_default
  1311. from vlt_parameter
  1312. limit 1;
  1313.  
  1314. if (select count(*)
  1315. from vlt_device
  1316. where code = pcode) = 0 then
  1317. raise exception 'Equipamento não localizado. Verifique! %', pcode;
  1318. end if;
  1319.  
  1320. --verificar se outro usuário não o registrou
  1321. if (select count(*)
  1322. from vlt_device
  1323. where vlt_device.code = pcode
  1324. and (vlt_device.idcustomer = pidcustomer)
  1325. ) > 0 then
  1326. raise exception 'Equipamento indisponível para registro!';
  1327. end if;
  1328.  
  1329. --verificar se outro usuário não o registrou
  1330. if (select count(*)
  1331. from vlt_device
  1332. where vlt_device.code = pcode
  1333. and (vlt_device.idcustomer is not null and vlt_device.idcustomer <> vidcustomer_default)
  1334. ) > 0 then
  1335. raise exception 'Equipamento indisponível para registro!';
  1336. end if;
  1337.  
  1338. -- limpando transações antigas
  1339. /*begin
  1340. for transaction in (select idtransaction
  1341. from vlt_transaction
  1342. where iddevice = (select iddevice
  1343. from vlt_device
  1344. where code = pcode)) loop
  1345. -- limpando alertas (vlt_alert)
  1346. for alert in (select idalert
  1347. from vlt_alert
  1348. where idtransaction = transaction.idtransaction) loop
  1349. -- limpando históricos de alertas (vlt_alert_history)
  1350. delete from vlt_alert_history
  1351. where idalert = alert.idalert;
  1352. end loop;
  1353.  
  1354. delete from vlt_alert
  1355. where idtransaction = transaction.idtransaction;
  1356.  
  1357. -- limpando driver_record (vlt_driver_record)
  1358. delete from vlt_driver_record
  1359. where idtransaction_start = transaction.idtransaction;
  1360. delete from vlt_driver_record
  1361. where idtransaction_end = transaction.idtransaction;
  1362. -- limpando i2c (vlt_i2c_value)
  1363. delete from vlt_i2c_value
  1364. where idtransaction = transaction.idtransaction;
  1365. -- limpando portas (vlt_port_status)
  1366. delete from vlt_port_status
  1367. where idtransaction = transaction.idtransaction;
  1368. -- limpando temperature (vlt_temperature)
  1369. delete from vlt_temperature
  1370. where idtransaction = transaction.idtransaction;
  1371. -- limpando tpms (vlt_tpms_value)
  1372. delete from vlt_transaction
  1373. where idtransaction = transaction.idtransaction;
  1374. end loop;
  1375. exception
  1376. when others then
  1377. raise exception 'Não foi possível preparar o equipamento para o registro. Descrição: %', SQLERRM;
  1378. end;*/
  1379.  
  1380. --efetuar cadastro
  1381. begin
  1382. update vlt_device
  1383. set idcustomer = pidcustomer
  1384. ,description = pdescription
  1385. ,vehicle_code = pvehicle_code
  1386. ,date_register = current_timestamp
  1387. where code = pcode;
  1388. exception
  1389. when others then
  1390. raise exception 'Não foi possível registrar o equipamento. Descrição: %', SQLERRM;
  1391. end;
  1392.  
  1393. --inserindo na tabela de transferência
  1394. begin
  1395. insert into vlt_device_history(iddevice, idcustomer_newer, iduser)
  1396. values ((select iddevice from vlt_device where code = pcode), pidcustomer, vlt_min_user_fnc(cast (pidcustomer as bigint) , cast ('CUS' as varchar)) );
  1397. exception
  1398. when others then
  1399. raise exception 'Não foi possível registrar o histórico de transferência de equipamento. %', SQLERRM;
  1400. end;
  1401. END;
  1402. $body$
  1403. LANGUAGE 'plpgsql'
  1404. VOLATILE
  1405. CALLED ON NULL INPUT
  1406. SECURITY INVOKER
  1407. COST 100;
  1408.  
  1409. ALTER FUNCTION public.sel_register_device (pdescription varchar, pcode varchar, pidcustomer numeric, pvehicle_code varchar)
  1410. OWNER TO pgsql;
  1411.  
  1412. CREATE OR REPLACE FUNCTION public.set_port_status (
  1413. ptransaction bigint,
  1414. pvalue integer,
  1415. pport_sequence integer,
  1416. pport_type varchar,
  1417. pexpander integer,
  1418. pdevice bigint
  1419. )
  1420. RETURNS integer AS
  1421. $body$
  1422. declare
  1423. vid bigint;
  1424. vcode varchar;
  1425. valert_priority char(1);
  1426. vdescription varchar;
  1427. valert_port boolean;
  1428. viddeviceport bigint;
  1429. vidcustomer bigint;
  1430. vidalerttype bigint;
  1431. vconnected boolean;
  1432. vfunction varchar(200);
  1433. valert varchar(200);
  1434. v_sql character varying(200);
  1435. begin
  1436. select vlt_port.idport
  1437. , vlt_port.connected
  1438. , vlt_port.function_port
  1439. , alert_function
  1440. , idcustomer
  1441. , idalerttype
  1442. , vehicle_code
  1443. , vlt_port.description
  1444. ,alert_priority
  1445. into vid
  1446. , vconnected
  1447. , vfunction
  1448. , valert
  1449. , vidcustomer
  1450. , vidalerttype
  1451. , vcode
  1452. , vdescription
  1453. , valert_priority
  1454. from vlt_port,vlt_device
  1455. where vlt_port.port_sequence = pport_sequence
  1456. and vlt_port.port_type = pport_type
  1457. and vlt_port.expander = pexpander
  1458. and vlt_device.iddevice = pdevice
  1459. and vlt_port.iddevicemodel = vlt_device.iddevicemodel;
  1460.  
  1461. vfunction:= replace(replace(vfunction,'#',cast(pvalue as varchar)),'\047','''');
  1462.  
  1463. insert into vlt_port_status(idtransaction,idport,value,original_value)
  1464. values(ptransaction ,vid ,eval(vfunction)::numeric,pvalue);
  1465. --ALERT
  1466. if (valert is not null) then
  1467. valert :=eval(replace(replace(valert,'#',cast(pvalue as varchar)),'\047',''''));
  1468.  
  1469. select iddeviceport,alert_port
  1470. into viddeviceport,valert_port
  1471. from vlt_device_port
  1472. where iddevice = pdevice
  1473. and idport = vid;
  1474.  
  1475. if viddeviceport is null then
  1476. SELECT nextval('vlt_device_port_iddeviceport_seq')
  1477. into viddeviceport;
  1478.  
  1479. insert into vlt_device_port (iddeviceport,iddevice,idport,alert_port)
  1480. values(viddeviceport,pdevice,vid,false);
  1481. valert_port:=false;
  1482.  
  1483. end if;
  1484.  
  1485. if valert is not null and (not valert_port) then
  1486. insert into vlt_alert
  1487. (alert,
  1488. idcustomer,
  1489. alert_date,
  1490. idtransaction,
  1491. idalerttype,
  1492. priority)
  1493. values
  1494. ('Veículo '||vcode||', Porta '||vdescription||', '||valert,
  1495. vidcustomer,
  1496. now(),
  1497. ptransaction,
  1498. vidalerttype,
  1499. valert_priority);
  1500. update vlt_device_port
  1501. set alert_port = true
  1502. where iddeviceport=viddeviceport;
  1503. else
  1504. update vlt_device_port
  1505. set alert_port = false
  1506. where iddeviceport=viddeviceport and alert_port;
  1507. end if;
  1508. end if;
  1509.  
  1510. if vconnected then
  1511. update vlt_transaction
  1512. set connected=(pvalue=0)
  1513. where idtransaction=ptransaction;
  1514.  
  1515. update vlt_device
  1516. set connected=(pvalue=0)
  1517. where iddevice=pdevice;
  1518. end if;
  1519.  
  1520. RETURN 0;
  1521.  
  1522. end
  1523. $body$
  1524. LANGUAGE 'plpgsql'
  1525. VOLATILE
  1526. CALLED ON NULL INPUT
  1527. SECURITY INVOKER
  1528. COST 100;
  1529.  
  1530. CREATE OR REPLACE FUNCTION public.set_tpms_value (
  1531. ptransaction bigint,
  1532. pdevice bigint,
  1533. pcommand varchar
  1534. )
  1535. RETURNS varchar AS
  1536. $body$
  1537. declare
  1538. seq integer;
  1539. vpressao integer;
  1540. vtemperatura integer;
  1541. vflag varchar(10);
  1542. vfunc_temperatura varchar(100);
  1543. vfunc_pressao varchar(100);
  1544. vid bigint;
  1545. vid_value bigint;
  1546. vid_value_first bigint;
  1547. vconnected boolean;
  1548. vseq integer;
  1549. vseqp integer;
  1550. vqtde integer;
  1551. vdados varchar(200);
  1552. vpneu varchar(200);
  1553. vinf varchar(8);
  1554. vcompleto boolean;
  1555. q integer;
  1556. c integer;
  1557.  
  1558. begin
  1559. vcompleto := pcommand like 'B%';
  1560. if vcompleto then
  1561. c:=14;
  1562. q:=4;
  1563. -- completo
  1564. if (length(pcommand)/2) in (24, 31, 38, 45) then
  1565. vdados:=substr(pcommand,33,length(pcommand));
  1566. vinf:=hextobin(substr(pcommand,31,2));
  1567.  
  1568. else
  1569. vdados:=substr(pcommand,17,length(pcommand));
  1570. vinf:=hextobin(substr(pcommand,15,2));
  1571. end if;
  1572. else
  1573. -- resumido
  1574. c:=6;
  1575. q:=9;
  1576. -- A0000283621610000465E9EA4B312309114A23A646210F4B23104B23114C23124A23114B23104A23114C238E
  1577. if (length(pcommand)/2) in (20, 23, 26, 29, 32, 35, 38, 41, 44) then
  1578. vdados:=substr(pcommand,33,length(pcommand));
  1579. vinf:=hextobin(substr(pcommand,31,2));
  1580. else
  1581. vdados:=substr(pcommand,17,length(pcommand));
  1582. vinf:=hextobin(substr(pcommand,15,2));
  1583. end if;
  1584. end if;
  1585.  
  1586. vseq:= (substr(vinf,2,3)::bit(3))::integer;
  1587. vqtde:= (substr(vinf,5,4)::bit(4))::integer;
  1588.  
  1589. if vseq =0 then
  1590. vid_value_first:=ptransaction;
  1591. if vcompleto then
  1592. update vlt_tpms
  1593. set tpms_sequence_send= 0
  1594. where iddevice=pdevice;
  1595. end if;
  1596. else
  1597. vid_value_first:=null;
  1598. select idtransaction
  1599. into vid_value_first
  1600. from vlt_tpms,vlt_tpms_value
  1601. where iddevice=pdevice
  1602. and tpms_sequence_send=1
  1603. and vlt_tpms.idtpmsvalue_last=vlt_tpms_value.idtpmsvalue;
  1604. end if;
  1605.  
  1606. FOR i IN 0..(vqtde -1) LOOP
  1607. vpneu:=substr(vdados,(i*c)+1,c);
  1608. vseqp:=(vseq*q)+1+i;
  1609.  
  1610. select hextoint(substr(vpneu,case when vcompleto then 7 else 1 end,2))
  1611. , hextoint(substr(vpneu,case when vcompleto then 9 else 1 end,2))
  1612. , hextoint(substr(vpneu,case when vcompleto then 11 else 3 end,2))
  1613. , (substr(vpneu,case when vcompleto then 13 else 5 end,2))
  1614. into seq,vpressao,vtemperatura,vflag;
  1615. if vcompleto then
  1616. select idtpms
  1617. into vid
  1618. from vlt_tpms
  1619. where iddevice=pdevice
  1620. and tpms_sequence =seq;
  1621.  
  1622. -- cria registro tpms
  1623. if not found then
  1624. SELECT nextval('vlt_tpms_idtpms_seq')
  1625. into vid;
  1626. insert into vlt_tpms
  1627. (idtpms ,tpms_sequence_send,tpms_sequence,tpms_name ,tire_client_id,iddevice ,idtrailer,side,axle,"position",sensor_id)
  1628. values(vid ,vseqp ,seq ,'PNEU ' || seq,null,pdevice,null ,null,null,null,substr(vpneu,1,6));
  1629. else
  1630. update vlt_tpms
  1631. set tpms_sequence_send= vseqp
  1632. where idtpms=vid;
  1633. end if;
  1634. else
  1635. vid:=null;
  1636. select idtpms
  1637. into vid
  1638. from vlt_tpms
  1639. where iddevice=pdevice
  1640. and tpms_sequence_send =vseqp;
  1641.  
  1642. if vid is null then
  1643. select idtpms
  1644. into vid
  1645. from vlt_tpms
  1646. where iddevice=pdevice
  1647. and tpms_sequence =vseqp;
  1648. end if;
  1649. end if;
  1650. SELECT nextval('vlt_tpms_value_idtpmsvalue_seq')
  1651. into vid_value;
  1652. -- valores
  1653. select function_temperature,function_pressure
  1654. into vfunc_temperatura,vfunc_pressao
  1655. from vlt_tpms_model m,vlt_device d
  1656. where d.iddevice = pdevice
  1657. and d.idtpmsmodel =m.id;
  1658.  
  1659. vfunc_temperatura:= replace(replace(vfunc_temperatura,'#',cast(vtemperatura as varchar)),'\047','''');
  1660. vfunc_pressao:= replace(replace(vfunc_pressao,'#',cast(vpressao as varchar)),'\047','''');
  1661.  
  1662. insert into vlt_tpms_value(idtpmsvalue,idtpms,idtransaction,temperature ,pressure ,original_temperature,original_pressure,flag,idtransaction_first,active,batery,leak)
  1663. values(vid_value
  1664. ,vid
  1665. ,ptransaction
  1666. ,eval(vfunc_temperatura)::numeric
  1667. ,eval(vfunc_pressao)::numeric
  1668. ,vtemperatura
  1669. ,vpressao
  1670. ,vflag
  1671. ,vid_value_first
  1672. ,COALESCE(substr(hextobin(vflag),3,1)='0',false)
  1673. ,COALESCE(substr(hextobin(vflag),4,1)='0',false)
  1674. ,COALESCE(substr(hextobin(vflag),5,1)='1',false));
  1675. if vcompleto then
  1676. update vlt_tpms
  1677. set sensor_id = substr(vpneu,1,6)
  1678. , idtpmsvalue_last=vid_value
  1679. where idtpms = vid;
  1680. else
  1681. update vlt_tpms
  1682. set idtpmsvalue_last=vid_value
  1683. where idtpms = vid;
  1684. end if;
  1685. END LOOP;
  1686. RETURN 0;
  1687. end
  1688. $body$
  1689. LANGUAGE 'plpgsql'
  1690. VOLATILE
  1691. CALLED ON NULL INPUT
  1692. SECURITY INVOKER
  1693. COST 100;
  1694.  
  1695. CREATE FUNCTION public."utl_interval_to_hours_fnc(pinterval interval)" (
  1696. pinterval interval
  1697. )
  1698. RETURNS varchar AS
  1699. $body$
  1700. begin
  1701. return trim(to_char(extract(day from pinterval)::integer * 24 +
  1702. extract(hour from pinterval)::integer,'900')) || ':' ||
  1703. to_char(pinterval,'mi');
  1704. end;
  1705. $body$
  1706. LANGUAGE 'plpgsql'
  1707. VOLATILE
  1708. CALLED ON NULL INPUT
  1709. SECURITY INVOKER;
  1710.  
  1711. ALTER FUNCTION public."utl_interval_to_hours_fnc(pinterval interval)" (pinterval interval)
  1712. OWNER TO pgc;
  1713.  
  1714. CREATE OR REPLACE FUNCTION public.vlt_agrupa_transaction (
  1715. piddevice bigint,
  1716. pidtransaction bigint,
  1717. pidrecordtype bigint
  1718. )
  1719. RETURNS integer AS
  1720. $body$
  1721. declare
  1722. reg RECORD;
  1723. idgrupo bigint;
  1724. distancia bigint;
  1725. distanciag bigint;
  1726. speedg numeric;
  1727. vvidtransaction bigint;
  1728. vidtransaction bigint;
  1729. idrecordtype bigint;
  1730. latitude numeric;
  1731. longitude numeric;
  1732. latitudeg numeric;
  1733. longitudeg numeric;
  1734. rlatitude numeric;
  1735. rlongitude numeric;
  1736. rcourse numeric;
  1737. c bigint;
  1738. vconnected boolean;
  1739. command_date timestamp WITHOUT TIME ZONE;
  1740. diff time;
  1741. vlimit_group integer;
  1742. begin
  1743. select limit_group
  1744. into vlimit_group
  1745. from vlt_device
  1746. where iddevice=piddevice;
  1747. if vlimit_group is null then
  1748. vlimit_group = 5;
  1749. end if;
  1750. c:=0;
  1751. speedg:=-1;
  1752. vvidtransaction:=0;
  1753. idgrupo:=null;
  1754. FOR reg in select t.idtransaction,t.idrecordtype,t.latitude,t.longitude,t.command_date,t.idtransaction_group,speed,t.course,t.connected
  1755. from vlt_transaction t
  1756. where iddevice= piddevice
  1757. and (pidtransaction is null
  1758. or t.idtransaction >= (select vlt_device_last.idtransaction
  1759. from vlt_device_last
  1760. where vlt_device_last.iddevice = piddevice
  1761. and vlt_device_last.idrecordtype = pidrecordtype))
  1762. and t.idrecordtype=pidrecordtype
  1763. order by 1
  1764. LOOP
  1765. if vconnected is null and pidtransaction is not null then
  1766. select vlt_transaction.connected
  1767. into vconnected
  1768. from vlt_device,vlt_transaction
  1769. where vlt_device.iddevice = piddevice
  1770. and vlt_device.last_transaction = vlt_transaction.idtransaction;
  1771.  
  1772. end if;
  1773. if reg.latitude=0 then
  1774. update vlt_transaction
  1775. set latitude=rlatitude
  1776. , longitude=rlongitude
  1777. , course=rcourse
  1778. where idtransaction=reg.idtransaction;
  1779. else
  1780. rlatitude:=reg.latitude;
  1781. rlongitude:=reg.longitude;
  1782. rcourse:=reg.course;
  1783. end if;
  1784.  
  1785. if idgrupo is not null then
  1786. select distance
  1787. into distanciag
  1788. from distance(latitudeg,longitudeg,rlatitude,rlongitude);
  1789.  
  1790. if (distanciag >= vlimit_group) or (vconnected <> reg.connected) then
  1791. idgrupo := reg.idtransaction;
  1792. latitudeg := rlatitude;
  1793. longitudeg := rlongitude;
  1794. vconnected:=reg.connected;
  1795. end if;
  1796. c:=c+1;
  1797. else
  1798. vconnected:=reg.connected;
  1799. if pidtransaction is null then
  1800. idgrupo := reg.idtransaction;
  1801. latitudeg := rlatitude;
  1802. longitudeg := rlongitude;
  1803. c:=c+1;
  1804. else
  1805. select vlt_transaction.idtransaction,vlt_transaction.latitude,vlt_transaction.longitude
  1806. into idgrupo,latitudeg,longitudeg
  1807. from vlt_transaction
  1808. where vlt_transaction.idtransaction = reg.idtransaction_group;
  1809. latitude := latitudeg;
  1810. longitude := longitudeg;
  1811. end if;
  1812. end if;
  1813. if idgrupo is null then
  1814. distancia:=0;
  1815. diff:=null;
  1816. else
  1817. if reg.command_date>command_date then
  1818. diff:=CAST(reg.command_date-command_date AS TIME);
  1819. else
  1820. diff:=CAST(command_date-reg.command_date AS TIME);
  1821. end if;
  1822. select distance
  1823. into distancia
  1824. from distance(latitude,longitude,rlatitude,rlongitude);
  1825. end if;
  1826.  
  1827. if c>0 then
  1828. update vlt_transaction
  1829. set idtransaction_group = idgrupo
  1830. , distance = distancia
  1831. , time_dif = diff
  1832. where vlt_transaction.idtransaction = reg.idtransaction;
  1833. end if;
  1834.  
  1835. IF RLATITUDE<>0 THEN
  1836. vvidtransaction := reg.idtransaction;
  1837. END IF;
  1838.  
  1839. idrecordtype := reg.idrecordtype;
  1840. latitude := rlatitude;
  1841. longitude := rlongitude;
  1842. command_date := reg.command_date;
  1843. speedg:=reg.speed;
  1844. END LOOP;
  1845.  
  1846. IF vvidtransaction>0 THEN
  1847. update vlt_device
  1848. set last_transaction=vvidtransaction
  1849. ,last_latitude = rlatitude
  1850. ,last_longitude = rlongitude
  1851. where iddevice = piddevice;
  1852. END IF;
  1853.  
  1854. if pidtransaction is not null then
  1855. idgrupo:=null;
  1856. select idtransaction_group
  1857. into idgrupo
  1858. from vlt_transaction
  1859. where idtransaction=pidtransaction;
  1860. if idgrupo is null then
  1861. SELECT public.vlt_agrupa_transaction(piddevice, NULL, pidrecordtype)
  1862. into idgrupo;
  1863. end if;
  1864. end if;
  1865. RETURN 0;
  1866. end
  1867. $body$
  1868. LANGUAGE 'plpgsql'
  1869. VOLATILE
  1870. CALLED ON NULL INPUT
  1871. SECURITY INVOKER
  1872. COST 100;
  1873.  
  1874. ALTER FUNCTION public.vlt_alert_insert_fnc ()
  1875. OWNER TO pgsql;
  1876.  
  1877. ALTER FUNCTION public.vlt_alert_isnew_fnc ()
  1878. OWNER TO pgsql;
  1879.  
  1880. ALTER FUNCTION public.vlt_atualiza_has_parameter_command_fnc ()
  1881. OWNER TO pgsql;
  1882.  
  1883. ALTER FUNCTION public.vlt_command_fnc ()
  1884. OWNER TO pgsql;
  1885.  
  1886. ALTER FUNCTION public.vlt_console_register_fnc (puid varchar, pdescription varchar)
  1887. OWNER TO pgsql;
  1888.  
  1889. ALTER FUNCTION public.vlt_console_update_date_fnc ()
  1890. OWNER TO pgsql;
  1891.  
  1892. ALTER FUNCTION public.vlt_customer_history_before_fnc ()
  1893. OWNER TO pgsql;
  1894.  
  1895. CREATE OR REPLACE FUNCTION public.vlt_device_driver_record_fnc (
  1896. )
  1897. RETURNS trigger AS
  1898. $body$
  1899. DECLARE
  1900. c BIGINT;
  1901. t1 bigint;
  1902. t2 bigint;
  1903. BEGIN
  1904. if new.connected and not old.connected and old.last_driver is not null then -- ligou o veiculo
  1905. insert into vlt_driver_record (iddriver, iddevice, idtransaction_start, start_date)
  1906. values (old.last_driver, old.iddevice, new.last_transaction, (select command_date
  1907. from vlt_transaction
  1908. where idtransaction = new.last_transaction));
  1909. end if;
  1910.  
  1911. if not new.connected and old.connected and old.last_driver is not null then -- desligou o veiculo
  1912. select max(iddriverrecord) into c
  1913. from vlt_driver_record
  1914. where iddevice = new.iddevice;
  1915.  
  1916. update vlt_driver_record
  1917. set idtransaction_end = new.last_transaction
  1918. ,end_date = (select command_date
  1919. from vlt_transaction
  1920. where idtransaction = new.last_transaction)
  1921. where iddriverrecord = c;
  1922. end if;
  1923.  
  1924. if new.last_driver <> old.last_driver then -- trocando o motorista
  1925. select count(*) into c
  1926. from vlt_driver_record
  1927. where iddevice = new.iddevice
  1928. and idtransaction_start is not null
  1929. and idtransaction_end is null;
  1930.  
  1931. select max(iddriverrecord) into c
  1932. from vlt_driver_record
  1933. where iddevice = new.iddevice;
  1934.  
  1935. if c is not null then
  1936. select idtransaction_start
  1937. ,idtransaction_end
  1938. into t1
  1939. ,t2
  1940. from vlt_driver_record
  1941. where iddriverrecord = c;
  1942.  
  1943. update vlt_driver_record
  1944. set idtransaction_end = new.last_transaction
  1945. ,end_date = (select command_date
  1946. from vlt_transaction
  1947. where idtransaction = new.last_transaction)
  1948. where iddriverrecord = c;
  1949.  
  1950. insert into vlt_driver_record (iddriver, iddevice, idtransaction_start, start_date)
  1951. values (new.last_driver, old.iddevice, new.last_transaction, (select command_date
  1952. from vlt_transaction
  1953. where idtransaction = new.last_transaction));
  1954. end if;
  1955. end if;
  1956.  
  1957. return new;
  1958. END;
  1959. $body$
  1960. LANGUAGE 'plpgsql'
  1961. VOLATILE
  1962. CALLED ON NULL INPUT
  1963. SECURITY INVOKER
  1964. COST 100;
  1965.  
  1966. CREATE OR REPLACE FUNCTION public.vlt_device_fnc (
  1967. pidcustomer bigint,
  1968. piduser bigint,
  1969. psearch varchar = NULL::character varying
  1970. )
  1971. RETURNS TABLE (
  1972. iddevice bigint,
  1973. description varchar,
  1974. latitude numeric,
  1975. longitude numeric,
  1976. vehicle_code varchar,
  1977. idcustomer bigint,
  1978. code varchar,
  1979. device_search tsvector,
  1980. has_battery boolean,
  1981. has_analog_ports boolean,
  1982. has_digital_ports boolean,
  1983. has_tpms boolean,
  1984. has_fuel boolean,
  1985. has_temperature boolean,
  1986. connected text,
  1987. is_connected boolean,
  1988. speed integer,
  1989. command_date varchar,
  1990. start_date varchar,
  1991. driver varchar,
  1992. address varchar,
  1993. idtransaction bigint,
  1994. online char,
  1995. record_type varchar,
  1996. has_alert boolean,
  1997. active boolean,
  1998. odometer numeric,
  1999. interestpoint varchar
  2000. ) AS
  2001. $body$
  2002. DECLARE
  2003. vtaguser varchar;
  2004. BEGIN
  2005. select tag
  2006. into vtaguser
  2007. from par_user
  2008. where iduser = piduser;
  2009.  
  2010. if vtaguser = '' then
  2011. vtaguser := null;
  2012. end if;
  2013. return query select dev.iddevice
  2014. ,dev.description
  2015. ,tt.latitude
  2016. ,tt.longitude
  2017. ,dev.vehicle_code
  2018. ,dev.idcustomer
  2019. ,dev.code
  2020. ,dev.device_search
  2021. ,dm.has_battery
  2022. ,dm.has_analog_ports
  2023. ,dm.has_digital_ports
  2024. ,dm.has_tpms
  2025. ,dm.has_fuel
  2026. ,dm.has_temperature
  2027. ,CASE WHEN tt.connected THEN 'Sim'::text ELSE 'Não'::text END AS connected
  2028. ,tt.connected AS is_connected
  2029. ,tt.speed
  2030. ,to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date
  2031. ,to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date
  2032. ,drv.driver
  2033. ,tt.address
  2034. ,tt.idtransaction
  2035. ,tt.online
  2036. ,rt.description AS record_type
  2037. ,vlt_device_has_alert_fnc(dev.iddevice) AS has_alert
  2038. ,dev.active
  2039. ,round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  2040. ,(select interest_point from vlt_transaction_point_fnc(tt.idtransaction))
  2041. from vlt_transaction tt
  2042. join vlt_device dev on dev.iddevice = tt.iddevice
  2043. join vlt_device_model dm on dm.iddevicemodel = dev.iddevicemodel
  2044. join vlt_record_type rt on rt.idrecordtype = tt.idrecordtype
  2045. left join vlt_driver drv on drv.iddriver = vlt_transaction_driver_fnc(tt.idtransaction)
  2046. where tt.idtransaction in (select vlt_last_tran_dev_fnc(device.iddevice)
  2047. from vlt_device device
  2048. where device.idcustomer = pidcustomer)
  2049. and dev.active is true
  2050. and case when psearch is not null then dev.device_search @@ to_tsquery(utl_text_search(psearch) || ':*') else true end
  2051. and case when dev.tag is null or vtaguser is null then true else (utl_compare_arrays_fnc(dev.tag,vtaguser)) end;
  2052. END;
  2053. $body$
  2054. LANGUAGE 'plpgsql'
  2055. VOLATILE
  2056. CALLED ON NULL INPUT
  2057. SECURITY INVOKER
  2058. COST 100 ROWS 1000;
  2059.  
  2060. ALTER FUNCTION public.vlt_device_history_before_fnc ()
  2061. OWNER TO pgsql;
  2062.  
  2063. ALTER FUNCTION public.vlt_fence_speed_fnc ()
  2064. OWNER TO pgsql;
  2065.  
  2066. ALTER FUNCTION public.vlt_fence_speed_trg ()
  2067. OWNER TO pgsql;
  2068.  
  2069. ALTER FUNCTION public.vlt_gera_senha_device_fnc (pcode varchar)
  2070. OWNER TO pgsql;
  2071.  
  2072. ALTER FUNCTION public.vlt_insert_driver_fingerprint_fnc (piddriver bigint, pfinger_index integer, ptemplate_base64 varchar)
  2073. OWNER TO pgsql;
  2074.  
  2075. CREATE OR REPLACE FUNCTION public.vlt_last_position_fnc (
  2076. pidcustomer numeric
  2077. )
  2078. RETURNS TABLE (
  2079. description varchar,
  2080. connected text,
  2081. is_connected boolean,
  2082. speed integer,
  2083. latitude numeric,
  2084. longitude numeric,
  2085. command_date varchar,
  2086. start_date varchar,
  2087. driver varchar,
  2088. address varchar,
  2089. idtransaction bigint,
  2090. online char,
  2091. iddevice bigint,
  2092. vehicle_code varchar,
  2093. hour text,
  2094. record_type varchar,
  2095. has_battery boolean,
  2096. has_analog_ports boolean,
  2097. has_digital_ports boolean,
  2098. has_tpms boolean,
  2099. has_fuel boolean,
  2100. has_temperature boolean
  2101. ) AS
  2102. $body$
  2103. BEGIN
  2104. return query select vlt_device.description
  2105. ,case when vlt_transaction.connected then 'Sim' ELSE 'Não' end connected
  2106. ,vlt_transaction.connected is_connected
  2107. ,vlt_transaction.speed
  2108. ,vlt_transaction.latitude
  2109. ,vlt_transaction.longitude
  2110. ,cast(to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi:ss')as varchar) command_date
  2111. ,cast(to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi:ss')as varchar) start_date
  2112. ,(select d.driver from vlt_driver d where d.iddriver = vlt_transaction.iddriver) driver
  2113. ,vlt_transaction.address
  2114. -- ,last_transaction idtransaction
  2115. ,(select max(vlt_transaction.idtransaction) from vlt_transaction where vlt_transaction.iddevice = vlt_device.iddevice and vlt_transaction.valid) idtransaction
  2116. ,vlt_transaction.online
  2117. ,vlt_device.iddevice
  2118. ,vlt_device.vehicle_code
  2119. ,to_char((select max(t.command_date) - min(t.command_date) from vlt_transaction t where t.idtransaction_group = vlt_transaction.idtransaction_group), 'HH24:MI:SS') as hour
  2120. ,(select rt.description from vlt_record_type rt where rt.idrecordtype = vlt_transaction.idrecordtype) record_type
  2121. ,vlt_device_model.has_battery
  2122. ,vlt_device_model.has_analog_ports
  2123. ,vlt_device_model.has_digital_ports
  2124. ,vlt_device_model.has_tpms
  2125. ,vlt_device_model.has_fuel
  2126. ,vlt_device_model.has_temperature
  2127. from vlt_device
  2128. join vlt_transaction on vlt_transaction.idtransaction = vlt_last_tran_dev_fnc(vlt_device.iddevice)
  2129. join vlt_device_model on vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  2130. where vlt_device.idcustomer = pidcustomer and vlt_device.active;
  2131. END;
  2132. $body$
  2133. LANGUAGE 'plpgsql'
  2134. VOLATILE
  2135. CALLED ON NULL INPUT
  2136. SECURITY INVOKER
  2137. COST 100 ROWS 1000;
  2138.  
  2139. -- object recreation
  2140. DROP FUNCTION public.vlt_list_coordinates_fnc(piddevice numeric, pinitial_date timestamptz, pfinal_date timestamptz, precord_type varchar);
  2141.  
  2142. CREATE FUNCTION public.vlt_list_coordinates_fnc (
  2143. piddevice numeric,
  2144. pinitial_date timestamptz = NULL::timestamp with time zone,
  2145. pfinal_date timestamptz = NULL::timestamp with time zone,
  2146. precord_type varchar = '0,1,2,4,6,7,8'::character varying
  2147. )
  2148. RETURNS TABLE (
  2149. description varchar,
  2150. connected varchar,
  2151. is_connected boolean,
  2152. speed integer,
  2153. latitude numeric,
  2154. longitude numeric,
  2155. start_date varchar,
  2156. driver varchar,
  2157. address varchar,
  2158. idtransaction bigint,
  2159. online char,
  2160. iddevice bigint,
  2161. vehicle_code varchar,
  2162. grouped bigint,
  2163. record_type varchar,
  2164. has_battery boolean,
  2165. has_analog_ports boolean,
  2166. has_digital_ports boolean,
  2167. has_tpms boolean,
  2168. has_fuel boolean,
  2169. has_temperature boolean
  2170. ) AS
  2171. $body$
  2172. declare
  2173. vtotal_coordinates numeric;
  2174. vqtd_registry numeric;
  2175. begin
  2176. if pfinal_date is null then
  2177. pfinal_date := current_timestamp;
  2178. end if;
  2179.  
  2180. return query (
  2181. select v.description
  2182. ,cast(case when f.connected then 'Sim' else 'Não' end as varchar) connected
  2183. ,f.connected
  2184. ,r.speed
  2185. ,g.latitude
  2186. ,g.longitude
  2187. -- ,cast (to_char(f.command_date, 'dd/mm/yyyy hh24:mi:ss') as varchar) start_date
  2188. ,
  2189. case when COALESCE((select min(vlttg.idtransaction)
  2190. from vlt_transaction vlttg
  2191. where vlttg.idtransaction_group = g.idtransaction
  2192. and vlttg.valid), g.idtransaction) =
  2193. COALESCE((select max(vlttg.idtransaction)
  2194. from vlt_transaction vlttg
  2195. where vlttg.idtransaction_group = g.idtransaction
  2196. and vlttg.valid), g.idtransaction)
  2197. then
  2198. cast (to_char((select vltt.command_date
  2199. from vlt_transaction vltt
  2200. where vltt.idtransaction = COALESCE((select min(vlttg.idtransaction)
  2201. from vlt_transaction vlttg
  2202. where vlttg.idtransaction_group = g.idtransaction
  2203. and vlttg.valid), g.idtransaction)), 'dd/mm/yyyy hh24:mi')
  2204. as varchar)
  2205. else
  2206. cast (to_char((select vltt.command_date
  2207. from vlt_transaction vltt
  2208. where vltt.idtransaction = COALESCE((select min(vlttg.idtransaction)
  2209. from vlt_transaction vlttg
  2210. where vlttg.idtransaction_group = g.idtransaction
  2211. and vlttg.valid), g.idtransaction)), 'dd/mm/yyyy hh24:mi')
  2212. || ' - ' ||
  2213. to_char((select vltt.command_date
  2214. from vlt_transaction vltt
  2215. where vltt.idtransaction = COALESCE((select max(vlttg.idtransaction)
  2216. from vlt_transaction vlttg
  2217. where vlttg.idtransaction_group = g.idtransaction
  2218. and vlttg.valid), g.idtransaction)), 'dd/mm hh24:mi') as varchar)
  2219. end start_date
  2220. ,case when g.iddriver is not null then (select vlt_driver.driver from vlt_driver where iddriver = g.iddriver) else '' end as driver
  2221. ,g.address
  2222. ,g.idtransaction
  2223. ,l.online
  2224. ,f.iddevice
  2225. ,v.vehicle_code
  2226. --,r.grouped
  2227. ,(select count(*) from vlt_transaction where idtransaction_group = g.idtransaction and valid) grouped
  2228. ,(select rt.description from vlt_record_type rt where idrecordtype = g.idrecordtype) as tipo
  2229. ,vm.has_battery
  2230. ,vm.has_analog_ports
  2231. ,vm.has_digital_ports
  2232. ,vm.has_tpms
  2233. ,vm.has_fuel
  2234. ,vm.has_temperature
  2235. from (
  2236. select r.idtransaction_group idtransaction
  2237. ,min(r.idtransaction) first_transaction
  2238. ,max(r.idtransaction) last_transaction
  2239. ,max(r.speed) speed
  2240. --,count(distinct r.idtransaction) grouped
  2241. from (
  2242. select vlt_transaction.idtransaction_group
  2243. ,vlt_transaction.idtransaction
  2244. ,vlt_transaction.speed
  2245. ,vlt_transaction.command_date as data
  2246. ,vlt_transaction.idrecordtype
  2247. ,coalesce(LEAD(vlt_transaction.command_date, 1) OVER(PARTITION BY vlt_transaction.iddevice ORDER BY vlt_transaction.idtransaction_group, vlt_transaction.idtransaction), coalesce((select min(command_date) from vlt_transaction t where t.iddevice = vlt_transaction.iddevice and t.idtransaction > vlt_transaction.idtransaction), now())) datap
  2248. from vlt_transaction
  2249. where vlt_transaction.iddevice = piddevice
  2250. and vlt_transaction.valid
  2251. and vlt_transaction.command_date BETWEEN pinitial_date and pfinal_date
  2252. and vlt_transaction.idrecordtype = any (string_to_array(precord_type, ',') ::integer [ ])) r
  2253. group by idtransaction_group
  2254. order by 1
  2255. ) r,
  2256. vlt_transaction g,
  2257. vlt_transaction f,
  2258. vlt_transaction l,
  2259. vlt_device v,
  2260. vlt_device_model vm
  2261. where r.idtransaction = g.idtransaction and
  2262. r.first_transaction = f.idtransaction and
  2263. r.last_transaction = l.idtransaction and
  2264. g.iddevice = v.iddevice and
  2265. v.iddevicemodel = vm.iddevicemodel
  2266. order by r.idtransaction desc,
  2267. r.first_transaction,
  2268. r.last_transaction);
  2269. end;
  2270. $body$
  2271. LANGUAGE 'plpgsql'
  2272. VOLATILE
  2273. CALLED ON NULL INPUT
  2274. SECURITY INVOKER
  2275. COST 100 ROWS 1000;
  2276.  
  2277. CREATE OR REPLACE FUNCTION public.vlt_min_user_fnc (
  2278. pid bigint,
  2279. psystype varchar
  2280. )
  2281. RETURNS bigint AS
  2282. $body$
  2283. declare
  2284. returnid bigint;
  2285. BEGIN
  2286. returnid := null;
  2287.  
  2288. if psystype = 'MCE' then
  2289. select min(iduser)
  2290. into returnid
  2291. from par_user
  2292. join rba_profile on rba_profile.id = par_user.rbaprof_id
  2293. where rba_profile.idmonitoringcenter = pid;
  2294.  
  2295. if returnid is null then
  2296. raise exception 'Central de monitoramento não localizada. Verifique!';
  2297. end if;
  2298. end if;
  2299.  
  2300. if psystype = 'CUS' then
  2301. select min(iduser)
  2302. into returnid
  2303. from par_user
  2304. join rba_profile on rba_profile.id = par_user.rbaprof_id
  2305. where rba_profile.parcust_id = pid;
  2306.  
  2307. if returnid is null then
  2308. raise exception 'Cliente não localizado. Verifique!%', pid;
  2309. end if;
  2310. end if;
  2311.  
  2312. if psystype = 'SEL' then
  2313. select min(iduser)
  2314. into returnid
  2315. from par_user
  2316. join rba_profile on rba_profile.id = par_user.rbaprof_id
  2317. where rba_profile.idseller = pid;
  2318.  
  2319. if returnid is null then
  2320. raise exception 'Representante não localizada. Verifique!';
  2321. end if;
  2322. end if;
  2323.  
  2324. if returnid is null then
  2325. raise exception 'Tipo de sistema não localizado. Verifique!';
  2326. end if;
  2327.  
  2328. return returnid;
  2329.  
  2330. END;
  2331. $body$
  2332. LANGUAGE 'plpgsql'
  2333. VOLATILE
  2334. CALLED ON NULL INPUT
  2335. SECURITY INVOKER
  2336. COST 100;
  2337.  
  2338. CREATE OR REPLACE FUNCTION public.vlt_mobile_battery_fnc (
  2339. pidtransaction bigint
  2340. )
  2341. RETURNS TABLE (
  2342. description varchar,
  2343. value numeric
  2344. ) AS
  2345. $body$
  2346. DECLARE
  2347. viddevice bigint;
  2348. vidrecordtype bigint;
  2349. vidtransaction bigint;
  2350. BEGIN
  2351. select iddevice into viddevice
  2352. from vlt_transaction
  2353. where idtransaction = pidtransaction;
  2354.  
  2355. vidrecordtype := 7;
  2356.  
  2357. select idtransaction into vidtransaction
  2358. from vlt_transaction
  2359. where iddevice = viddevice
  2360. and idrecordtype = vidrecordtype
  2361. and idtransaction < pidtransaction
  2362. and valid
  2363. order by idtransaction desc limit 1;
  2364.  
  2365. return query select vlt_port.description
  2366. ,vlt_port_status.value
  2367. from vlt_port_status
  2368. join vlt_port on vlt_port.idport = vlt_port_status.idport
  2369. where idtransaction = vidtransaction;
  2370. END;
  2371. $body$
  2372. LANGUAGE 'plpgsql'
  2373. VOLATILE
  2374. CALLED ON NULL INPUT
  2375. SECURITY INVOKER
  2376. COST 100 ROWS 1000;
  2377.  
  2378. CREATE OR REPLACE FUNCTION public.vlt_mobile_smc_fnc (
  2379. pidtransaction bigint
  2380. )
  2381. RETURNS TABLE (
  2382. sensor_id integer,
  2383. value numeric
  2384. ) AS
  2385. $body$
  2386. DECLARE
  2387. viddevice bigint;
  2388. vidrecordtype bigint;
  2389. vidtransaction bigint;
  2390. BEGIN
  2391. select iddevice into viddevice
  2392. from vlt_transaction
  2393. where idtransaction = pidtransaction;
  2394.  
  2395. raise info 'IDDEVICE: %', viddevice;
  2396.  
  2397. vidrecordtype := 9;
  2398.  
  2399. select idtransaction into vidtransaction
  2400. from vlt_transaction
  2401. where iddevice = viddevice
  2402. and idrecordtype = vidrecordtype
  2403. and idtransaction < pidtransaction
  2404. and valid
  2405. order by idtransaction desc limit 1;
  2406.  
  2407. return query select vlt_fuel.sensor_id
  2408. ,vlt_fuel_value.value
  2409. from vlt_fuel_value
  2410. join vlt_fuel on vlt_fuel.idfuel = vlt_fuel_value.idfuel
  2411. where idtransaction = vidtransaction;
  2412. END;
  2413. $body$
  2414. LANGUAGE 'plpgsql'
  2415. VOLATILE
  2416. CALLED ON NULL INPUT
  2417. SECURITY INVOKER
  2418. COST 100 ROWS 1000;
  2419.  
  2420. ALTER FUNCTION public.vlt_odometer_transaction (piddevice bigint, pcommanddate timestamp, pini boolean)
  2421. OWNER TO pgsql;
  2422.  
  2423. ALTER FUNCTION public.vlt_odometer_up_ins_trg ()
  2424. OWNER TO pgsql;
  2425.  
  2426. CREATE OR REPLACE FUNCTION public.vlt_register_device (
  2427. pdescription varchar,
  2428. pcode varchar,
  2429. ppassword varchar,
  2430. pidcustomer numeric,
  2431. pvehicle_code varchar = NULL::character varying
  2432. )
  2433. RETURNS pg_catalog.void AS
  2434. $body$
  2435. DECLARE
  2436. vserial_key varchar;
  2437. transaction record;
  2438. alert record;
  2439. vidcustomer_default bigint;
  2440. BEGIN
  2441. --validar a senha do equipamento
  2442. vserial_key := substr(md5(pcode || 'elder'), 1, 10);
  2443.  
  2444. -- msg_device_not_found: Equipamento não localizado. Verifique!
  2445. if (select count(*)
  2446. from vlt_device
  2447. where code = pcode) = 0 then
  2448. raise exception 'msg_device_not_found';
  2449. end if;
  2450.  
  2451. -- msg_invalid_password: Senha do equipamento inválida. Verifique!
  2452. if (vserial_key <> ppassword) then
  2453. raise exception 'msg_invalid_password %', vserial_key;
  2454. end if;
  2455.  
  2456. select idcustomer_default
  2457. into vidcustomer_default
  2458. from vlt_parameter
  2459. limit 1;
  2460.  
  2461. --verificar se outro usuário não o registrou
  2462. if (select count(*)
  2463. from vlt_device
  2464. where vlt_device.code = pcode
  2465. and vlt_device.idcustomer = pidcustomer
  2466. ) > 0 then
  2467. raise exception 'Equipamento já registrado para esse cliente!';
  2468. end if;
  2469.  
  2470. -- msg_unavailable_device: Equipamento indisponível para registro!
  2471. --verificar se outro usuário não o registrou
  2472. if (select count(*)
  2473. from vlt_device
  2474. where vlt_device.code = pcode
  2475. and (vlt_device.idcustomer is not null and vlt_device.idcustomer <> vidcustomer_default)
  2476. ) > 0 then
  2477. raise exception 'msg_unavailable_device';
  2478. end if;
  2479.  
  2480. -- limpando transações antigas
  2481. /*begin
  2482. for transaction in (select idtransaction
  2483. from vlt_transaction
  2484. where iddevice = (select iddevice
  2485. from vlt_device
  2486. where code = pcode)) loop
  2487. -- limpando alertas (vlt_alert)
  2488. for alert in (select idalert
  2489. from vlt_alert
  2490. where idtransaction = transaction.idtransaction) loop
  2491. -- limpando históricos de alertas (vlt_alert_history)
  2492. delete from vlt_alert_history
  2493. where idalert = alert.idalert;
  2494. end loop;
  2495.  
  2496. delete from vlt_alert
  2497. where idtransaction = transaction.idtransaction;
  2498.  
  2499. -- limpando driver_record (vlt_driver_record)
  2500. delete from vlt_driver_record
  2501. where idtransaction_start = transaction.idtransaction;
  2502. delete from vlt_driver_record
  2503. where idtransaction_end = transaction.idtransaction;
  2504. -- limpando i2c (vlt_i2c_value)
  2505. delete from vlt_i2c_value
  2506. where idtransaction = transaction.idtransaction;
  2507. -- limpando portas (vlt_port_status)
  2508. delete from vlt_port_status
  2509. where idtransaction = transaction.idtransaction;
  2510. -- limpando temperature (vlt_temperature)
  2511. delete from vlt_temperature
  2512. where idtransaction = transaction.idtransaction;
  2513. -- limpando tpms (vlt_tpms_value)
  2514. delete from vlt_transaction
  2515. where idtransaction = transaction.idtransaction;
  2516. end loop;
  2517. exception
  2518. when others then
  2519. raise exception 'Não foi possível preparar o equipamento para o registro. Descrição: %', SQLERRM;
  2520. end;
  2521. */
  2522. --efetuar cadastro
  2523. begin
  2524. update vlt_device
  2525. set idcustomer = pidcustomer
  2526. ,description = pdescription
  2527. ,vehicle_code = pvehicle_code
  2528. ,date_register = current_timestamp
  2529. where code = pcode;
  2530. exception
  2531. when others then
  2532. raise exception 'Não foi possível registrar o equipamento.';
  2533. end;
  2534.  
  2535. --inserindo na tabela de transferência
  2536. begin
  2537. insert into vlt_device_history(iddevice, idcustomer_newer, iduser)
  2538. values ((select iddevice from vlt_device where code = pcode), pidcustomer, vlt_min_user_fnc(cast (pidcustomer as bigint) , cast ('CUS' as varchar)) );
  2539. exception
  2540. when others then
  2541. raise exception 'Não foi possível registrar o histórico de transferência de equipamento. Erro: %', SQLERRM;
  2542. end;
  2543. END;
  2544. $body$
  2545. LANGUAGE 'plpgsql'
  2546. VOLATILE
  2547. CALLED ON NULL INPUT
  2548. SECURITY INVOKER
  2549. COST 100;
  2550.  
  2551. -- object recreation
  2552. DROP FUNCTION public.vlt_report_distance_fnc(pidcustomer integer, pdateini date, pdatefim date);
  2553.  
  2554. CREATE FUNCTION public.vlt_report_distance_fnc (
  2555. pidcustomer integer,
  2556. pdateini date,
  2557. pdatefim date
  2558. )
  2559. RETURNS TABLE (
  2560. distance numeric,
  2561. iddevice bigint,
  2562. command_date date,
  2563. vehicle varchar
  2564. ) AS
  2565. $body$
  2566. begin
  2567. return query select sum(q.distance), q.iddevice, q.command_date, vlt_device.vehicle_code
  2568. from (select case when (vlt_distance_type_fnc(vlt_transaction.iddevice) = 'C')
  2569. then sum(vlt_transaction.distance) / 1000
  2570. else sum(vlt_transaction.distance1) / 1000
  2571. end distance
  2572. ,vlt_transaction.command_date::date
  2573. ,vlt_transaction.iddevice
  2574. from vlt_transaction
  2575. group by vlt_transaction.iddevice
  2576. ,vlt_transaction.command_date::date
  2577. order by command_date) q
  2578. join vlt_device on vlt_device.iddevice = q.iddevice
  2579. where q.iddevice in (select vlt_device.iddevice from vlt_device where idcustomer = pidcustomer) and q.command_date between pdateini and pdatefim
  2580. group by q.iddevice, q.command_date,vlt_device.vehicle_code
  2581. order by iddevice;
  2582. end
  2583. $body$
  2584. LANGUAGE 'plpgsql'
  2585. VOLATILE
  2586. CALLED ON NULL INPUT
  2587. SECURITY INVOKER
  2588. COST 100 ROWS 1000;
  2589.  
  2590. CREATE FUNCTION public.vlt_sim_fnc (
  2591. )
  2592. RETURNS trigger AS
  2593. $body$
  2594. BEGIN
  2595. perform vlt_update_sim_search_fnc(new.idsim);
  2596. return new;
  2597. END;
  2598. $body$
  2599. LANGUAGE 'plpgsql'
  2600. VOLATILE
  2601. CALLED ON NULL INPUT
  2602. SECURITY INVOKER;
  2603.  
  2604. CREATE FUNCTION public.vlt_sim_history_fnc (
  2605. pidsim bigint = NULL::bigint,
  2606. piddevice bigint = NULL::bigint,
  2607. pstatus char = 'I'::bpchar,
  2608. pidseller bigint = NULL::bigint,
  2609. piduser bigint = NULL::bigint
  2610. )
  2611. RETURNS pg_catalog.void AS
  2612. $body$
  2613. DECLARE
  2614. viddevice bigint;
  2615. vidsim bigint;
  2616. vidsimhistory bigint;
  2617. BEGIN
  2618. -- registra o historico do SIM no sistema
  2619. if pidsim is not null and not exists (select null from vlt_sim where idsim = pidsim) then
  2620. raise exception 'SIM Card informado nao existe.';
  2621. end if;
  2622.  
  2623. if piddevice is not null and not exists (select null from vlt_device where iddevice = piddevice) then
  2624. raise exception 'Veiculo informado nao existe.';
  2625. end if;
  2626.  
  2627. if pstatus = 'D' then
  2628. if pidsim is not null then
  2629. select max(idsimhistory)
  2630. into vidsimhistory
  2631. from vlt_sim_history
  2632. where idsim = pidsim;
  2633. insert into vlt_sim_history (
  2634. idsim
  2635. , iddevice
  2636. , status
  2637. , idseller
  2638. , iduser) values (
  2639. pidsim
  2640. , NULL
  2641. , (select status
  2642. from vlt_sim_history
  2643. where idsimhistory = vidsimhistory)
  2644. , pidseller
  2645. , piduser);
  2646. return;
  2647. elsif piddevice is not null then
  2648. select max(idsimhistory)
  2649. into vidsimhistory
  2650. from vlt_sim_history
  2651. where iddevice = piddevice;
  2652.  
  2653. insert into vlt_sim_history (idsim, iddevice, status, idseller, iduser)
  2654. values ((select idsim from vlt_sim_history where idsimhistory = vidsimhistory), null, (select status from vlt_sim_history where idsimhistory = vidsimhistory), pidseller, piduser);
  2655. return;
  2656. end if;
  2657. end if;
  2658.  
  2659. -- registrando historico para um equipamento
  2660. if pidsim is not null and piddevice is not null then
  2661. select idsimhistory
  2662. into vidsimhistory
  2663. from vlt_sim_history
  2664. where idsimhistory = (select max(idsimhistory)
  2665. from vlt_sim_history
  2666. where idsim = pidsim);
  2667.  
  2668. if exists (select null from vlt_sim_history where idsimhistory = vidsimhistory and idsim = pidsim and iddevice = piddevice and status = pstatus) then
  2669. raise exception 'Esse SIM CARD ja foi associado a esse VEICULO com o STATUS informado';
  2670. end if;
  2671. insert into vlt_sim_history (idsim, iddevice, status, idseller, iduser)
  2672. values (pidsim, piddevice, pstatus, pidseller, piduser);
  2673. return;
  2674. elsif pidsim is not null then
  2675. select max(idsimhistory)
  2676. into vidsimhistory
  2677. from vlt_sim_history
  2678. where idsim = pidsim;
  2679.  
  2680. if pstatus = (select status from vlt_sim_history where idsimhistory = vidsimhistory) then
  2681. raise exception 'Esse SIM CARD ja foi associado a esse VEICULO com o STATUS informado';
  2682. return;
  2683. end if;
  2684.  
  2685. select iddevice
  2686. into viddevice
  2687. from vlt_sim_history
  2688. where idsimhistory = (select max(idsimhistory)
  2689. from vlt_sim_history
  2690. where idsim = pidsim);
  2691. insert into vlt_sim_history (idsim, iddevice, status, idseller, iduser)
  2692. values (pidsim, viddevice, pstatus, pidseller, piduser);
  2693. return;
  2694. elsif piddevice is not null then
  2695. select idsim
  2696. into vidsim
  2697. from vlt_sim_history
  2698. where idsimhistory = (select max(idsimhistory)
  2699. from vlt_sim_history
  2700. where iddevice = piddevice);
  2701. insert into vlt_sim_history (idsim, iddevice, status, idseller, iduser)
  2702. values (vidsim, piddevice, pstatus, pidseller, piduser);
  2703. return;
  2704. end if;
  2705. END;
  2706. $body$
  2707. LANGUAGE 'plpgsql'
  2708. VOLATILE
  2709. CALLED ON NULL INPUT
  2710. SECURITY INVOKER;
  2711.  
  2712. CREATE OR REPLACE FUNCTION public.vlt_socket_con_00_prc (
  2713. pdevice varchar,
  2714. pcommand varchar,
  2715. pboot boolean,
  2716. ponline boolean,
  2717. pdata timestamp,
  2718. pseq integer,
  2719. pvel numeric,
  2720. pcurso numeric,
  2721. plat numeric,
  2722. plong numeric,
  2723. pdistance1 numeric = 0,
  2724. pdistance2 numeric = 0,
  2725. phdop numeric = 0,
  2726. psatelite numeric = 0,
  2727. pconnected boolean = false,
  2728. psocket varchar = NULL::character varying,
  2729. psocketport integer = NULL::integer
  2730. )
  2731. RETURNS integer AS
  2732. $body$
  2733. declare
  2734. vtransaction bigint;
  2735. begin
  2736. if pdevice in ('357805023984942','861001003748320') then
  2737. -- RAISE EXCEPTION 'BLOQUEADO';
  2738. select *
  2739. into vtransaction
  2740. from vlt_socket_con_00_teste2_1_prc(pdevice,pcommand,pboot,ponline,pdata,pseq,pvel,pcurso,plat,plong,pdistance1,pdistance2,phdop,psatelite,pconnected,psocket,psocketport);
  2741. else
  2742. select *
  2743. into vtransaction
  2744. from vlt_socket_con_00_teste2_0_prc(pdevice,pcommand,pboot,ponline,pdata,pseq,pvel,pcurso,plat,plong,pdistance1,pdistance2,phdop,psatelite,pconnected,psocket,psocketport);
  2745. -- from vlt_socket_con_00_producao_prc(pdevice,pcommand,pboot,ponline,pdata,pseq,pvel,pcurso,plat,plong,pdistance1,pdistance2,phdop,psatelite,pconnected,psocket,psocketport);
  2746. end if;
  2747. return vtransaction;
  2748. end
  2749. $body$
  2750. LANGUAGE 'plpgsql'
  2751. VOLATILE
  2752. CALLED ON NULL INPUT
  2753. SECURITY INVOKER
  2754. COST 100;
  2755.  
  2756. CREATE FUNCTION public.vlt_socket_con_00_teste2_prc (
  2757. pdevice varchar,
  2758. pcommand varchar,
  2759. pboot boolean,
  2760. ponline boolean,
  2761. pdata timestamp,
  2762. pseq integer,
  2763. pvel numeric,
  2764. pcurso numeric,
  2765. plat numeric,
  2766. plong numeric,
  2767. pdistance1 numeric,
  2768. pdistance2 numeric,
  2769. phdop numeric,
  2770. psatelite numeric,
  2771. pconnected boolean,
  2772. psocket varchar,
  2773. psocketport integer
  2774. )
  2775. RETURNS integer AS
  2776. $body$
  2777. declare
  2778. info record; -- cursor com as informações do devide
  2779. infor record; -- cursor com as informações do devide por registro
  2780. vdriver bigint; -- codigo driver
  2781. vidrecordtype bigint; -- id tipo registro
  2782. vtransaction bigint; -- id da transacao
  2783. viddriver bigint; -- id do motorista
  2784. vvalid boolean; -- registro valido
  2785. vconnected boolean; -- device conectado
  2786. vresumido boolean; -- gps resumido
  2787. vduplicate boolean; -- se registro esta duplicado
  2788. vdate timestamp; -- data atual do servidor
  2789. vresult integer; -- retorno de funções
  2790. vlongitude numeric; -- longitude
  2791. vlatitude numeric; -- latitude
  2792. vsequencia integer; -- sequencia de envio do equipamento
  2793. viddevicealert bigint;
  2794. vdistance bigint;
  2795. vdistanceg bigint;
  2796. vtime_dif time WITHOUT TIME ZONE;
  2797. vtemp varchar;
  2798. vodometer bigint;
  2799. vodometer_value bigint;
  2800. vidodometer bigint;
  2801. vidtransaction_group bigint;
  2802. vcommand_date timestamp; -- data do comando
  2803. vcommand_date_original timestamp; -- data do comando original
  2804. vvel NUMERIC;
  2805. vport varchar;
  2806. q integer;
  2807. s varchar;
  2808. begin
  2809. for info in SELECT * FROM device
  2810. loop
  2811. -- Inicalização de variaveis
  2812. vdate := now();
  2813. vresumido := pdata<to_timestamp(1);
  2814. vduplicate := false;
  2815. vvalid := false;
  2816. vresult := 0;
  2817. vconnected := info.last_connected;
  2818. vvalid := info.last_valid;
  2819. if info.bit_connected then
  2820. vconnected:=pconnected;
  2821. end if;
  2822. --resumido/completo
  2823. if vresumido then
  2824. vsequencia := info.last_transaction_sequence + 1;
  2825. if to_hex(pseq) <> substr(reverse(to_hex(vsequencia)),1,1) then
  2826. RAISE EXCEPTION 'SEQUENCIA INVALIDA: %, % -> % ',vsequencia,to_hex(pseq), substr(reverse(to_hex(vsequencia)),1,1);
  2827. end if;
  2828. vvalid := info.last_valid;
  2829. vlatitude := info.last_latitude + plat;
  2830. vlongitude := info.last_longitude + plong;
  2831. vcommand_date_original := info.last_command_date + to_char(PDATA,'00:MI:SS')::time;
  2832. vcommand_date_original := case when info.dif<0 then vcommand_date_original + cast(abs(info.dif)||':00:00' as time) else vcommand_date_original - cast(abs(info.dif)||':00:00' as time) end;
  2833. else
  2834. vlatitude := plat;
  2835. vlongitude := plong;
  2836. vsequencia := pseq;
  2837. vcommand_date_original := pdata;
  2838. vvalid:= (vlatitude is not null)
  2839. and (vcommand_date_original is not null)
  2840. and (vlatitude <> 0)
  2841. and ((vcommand_date_original::date) <= (vdate::date+30))
  2842. and (to_date('01/01/2013','dd/mm/yyyy')<>(vcommand_date_original::date));
  2843. end if;
  2844.  
  2845. -- se data invalida usar a ultima
  2846. if ((vcommand_date_original is null)
  2847. or (vcommand_date_original::date)>(now()::date+30))
  2848. or (to_date('01/01/2013','dd/mm/yyyy')=(vcommand_date_original::date)) then
  2849. vcommand_date_original:=info.last_command_date;
  2850. end if;
  2851.  
  2852. vcommand_date:=case when info.dif<0 then vcommand_date_original - cast(abs(info.dif)||':00:00' as time) else vcommand_date_original + cast(abs(info.dif)||':00:00' as time) end;
  2853.  
  2854. -- atualiza transaction invalido
  2855. if not vvalid then
  2856. vlatitude := info.last_latitude;
  2857. vlongitude := info.last_longitude;
  2858. end if;
  2859. -- Tipo de Registro
  2860. if substr(pcommand,1,1)in('3','9')
  2861. then vidrecordtype:=9;
  2862. else if substr(pcommand,1,1)in('B','A')
  2863. then vidrecordtype:=8;
  2864. else if substr(pcommand,1,1)in('1','0')
  2865. then vidrecordtype:=1;
  2866. else select idrecordtype
  2867. into vidrecordtype
  2868. from record_type
  2869. where code=substr(pcommand,1,1);
  2870. end if;
  2871. end if;
  2872. end if;
  2873. -- verifica duplicado
  2874. if vvalid and vcommand_date <= info.last_command_date and vidrecordtype<>12 then
  2875. if exists(select null
  2876. from vlt_transaction t
  2877. where iddevice = info.iddevice
  2878. and valid
  2879. and command_date = vcommand_date
  2880. and idrecordtype = vidrecordtype
  2881. and transaction_sequence = vsequencia
  2882. and latitude = vlatitude
  2883. and connected = vconnected
  2884. and longitude = vlongitude) then
  2885. vvalid:=False;
  2886. vduplicate:=True;
  2887. end if;
  2888. end if;
  2889.  
  2890. -- id transação
  2891. SELECT nextval('vlt_transaction_idtransaction_seq')
  2892. into vtransaction;
  2893.  
  2894. if vidrecordtype<>12 then
  2895. -- Mensagem do equipamento
  2896. if substr(pcommand,1,1) ='5' then
  2897.  
  2898. vtemp := substr(RIGHT(pcommand,4),1,2);
  2899.  
  2900. select iddevicealert
  2901. into viddevicealert
  2902. from vlt_device_alert
  2903. where code= vtemp;
  2904.  
  2905. if viddevicealert is null then
  2906. SELECT nextval('vlt_device_alert_iddevicealert_seq')
  2907. into viddevicealert;
  2908. insert into vlt_device_alert (iddevicealert,code,description) values(viddevicealert,vtemp,vtemp);
  2909. end if;
  2910. end if;
  2911.  
  2912. -- motorista
  2913. if substr(pcommand,1,1) ='2' then
  2914. IF info.idcustomer IS NULL THEN
  2915. RAISE EXCEPTION 'TENTATIVA DE INSERIR MOTORISTA PARA DISPOSITIVO SEM CLIENTE';
  2916. END IF;
  2917. if vresumido then
  2918. vdriver:= (select hextoint(invert_hex(substr(pcommand,15,4))));
  2919. else
  2920. vdriver:= (select hextoint(invert_hex(substr(pcommand,31,4))));
  2921. end if;
  2922. if vdriver>0 then
  2923. select iddriver
  2924. into viddriver
  2925. from vlt_driver
  2926. where code=cast(vdriver as varchar)
  2927. and parcust_id = info.idcustomer;
  2928. if not FOUND then
  2929. SELECT nextval('vlt_driver_iddriver_seq')
  2930. into viddriver;
  2931. insert into vlt_driver(iddriver ,code,driver,last_date,parcust_id)
  2932. values(viddriver,vdriver,vdriver,vdate ,info.idcustomer);
  2933. end if;
  2934. insert into vlt_transaction_driver(iddriver,transaction_date,iddevice) values(viddriver,vcommand_date,info.iddevice);
  2935. end if;
  2936. end if;
  2937.  
  2938. -- distancia
  2939. select distance
  2940. into vdistance
  2941. from distance(info.last_latitude,info.last_longitude,vlatitude,vlongitude);
  2942. if vcommand_date>info.last_command_date then
  2943. vtime_dif := CAST(vcommand_date-info.last_command_date AS TIME);
  2944. else
  2945. vtime_dif := CAST(info.last_command_date-vcommand_date AS TIME);
  2946. end if;
  2947. -- odometro
  2948. if vvalid then
  2949. -- inicializa variaveis
  2950. vodometer := 0;
  2951. vidodometer := null;
  2952. vodometer_value := 0;
  2953.  
  2954. -- identifica odometro
  2955. select iddeviceodometer
  2956. , odometer_value
  2957. into vidodometer
  2958. , vodometer_value
  2959. from vlt_device_odometer o
  2960. where o.odometer_date<vcommand_date
  2961. and info.iddevice = o.iddevice
  2962. order by odometer_date desc
  2963. limit 1;
  2964.  
  2965. if vidodometer <> info.last_valid_idodometer then
  2966. vodometer := vodometer_value;
  2967. else
  2968. vodometer := info.last_valid_odometer;
  2969. end if;
  2970.  
  2971. IF info.DISTANCE_TYPE='C' THEN
  2972. vodometer := vodometer + vdistance;
  2973. ELSE
  2974. vodometer := vodometer + PDISTANCE1;
  2975. END IF;
  2976. end if;
  2977. -- agrupamento
  2978. for infor in SELECT * FROM record_type_last where idrecordtype=vidrecordtype
  2979. loop
  2980. vidtransaction_group := vtransaction;
  2981. if (infor.idtransaction_group is not null) then
  2982. select distance
  2983. into vdistanceg
  2984. from distance(infor.latitude_group,infor.longitude_group,vlatitude,vlongitude);
  2985. if (vconnected=infor.connected_group)
  2986. and (vdistanceg <= case when infor.connected then info.limit_group_on else info.limit_group_off end) then
  2987. vidtransaction_group := infor.idtransaction_group;
  2988. end if;
  2989. end if;
  2990.  
  2991. if (COALESCE(infor.idtransaction_group,0) <> vidtransaction_group) then
  2992. update record_type_last
  2993. set idtransaction_group = vidtransaction_group
  2994. , command_date_group = vcommand_date
  2995. , connected_group = vconnected
  2996. , latitude_group = vlatitude
  2997. , longitude_group = vlongitude
  2998. where idrecordtype = vidrecordtype;
  2999. end if;
  3000. end loop;
  3001. end if;
  3002. vodometer:= COALESCE(vodometer,0);
  3003. VVEL:=(pvel*case when info.bit_connected then 3 else 2 end);
  3004. insert into vlt_transaction(idtransaction
  3005. ,iddevice
  3006. ,idrecordtype
  3007. ,command
  3008. ,transaction_date
  3009. ,boot
  3010. ,online
  3011. ,command_date
  3012. ,command_date_original
  3013. ,transaction_sequence
  3014. ,speed
  3015. ,course
  3016. ,latitude
  3017. ,longitude
  3018. ,connected
  3019. ,valid
  3020. ,distance1
  3021. ,distance2
  3022. ,hdop
  3023. ,satellite
  3024. ,iddevicealert
  3025. ,duplicate
  3026. ,idtransaction_group
  3027. ,distance
  3028. ,time_dif
  3029. ,odometer)
  3030. values (vtransaction
  3031. ,info.iddevice
  3032. ,vidrecordtype
  3033. ,pcommand
  3034. ,vdate
  3035. ,case when pboot then 'S' else 'N' end
  3036. ,case when ponline then 'O' else 'M' end
  3037. ,vcommand_date
  3038. ,vcommand_date_original
  3039. ,VSEQUENCIA
  3040. ,VVEL
  3041. ,pcurso
  3042. ,VLATITUDE
  3043. ,VLONGITUDE
  3044. ,vconnected
  3045. ,vvalid
  3046. ,pdistance1
  3047. ,0 --pdistance2
  3048. ,phdop
  3049. ,psatelite
  3050. ,viddevicealert
  3051. ,vduplicate
  3052. ,vidtransaction_group
  3053. ,vdistance
  3054. ,vtime_dif
  3055. , vodometer);
  3056. if vidrecordtype=12 then
  3057. return 0;
  3058. end if;
  3059. update device
  3060. set last_transaction_sequence = VSEQUENCIA,
  3061. last_command_date = vcommand_date,
  3062. last_latitude = VLATITUDE,
  3063. last_longitude = VLONGITUDE,
  3064. last_iddriver = viddriver,
  3065. last_connected = vconnected,
  3066. last_valid = vvalid or vduplicate,
  3067. last_valid_idodometer = case when vvalid then vidodometer else last_valid_idodometer end,
  3068. last_valid_odometer = case when vvalid then vodometer else last_valid_odometer end;
  3069. -- last transaction por tipo
  3070. update record_type_last
  3071. set idtransaction = vtransaction
  3072. , command_date = vcommand_date
  3073. , connected = vconnected
  3074. , latitude = vlatitude
  3075. , longitude = vlongitude
  3076. where idrecordtype = vidrecordtype
  3077. and vcommand_date > command_date;
  3078. -- ANDROID
  3079. if (substr(pcommand,1,1)='F') then
  3080. SELECT set_refuel(vtransaction,info.iddevice,pcommand) into vresult;
  3081. SELECT set_workday(vtransaction,info.iddevice,pcommand) into vresult;
  3082. end if;
  3083. -- TPMS
  3084. if vidrecordtype in(8,17) then
  3085. SELECT set_tpms_value(vtransaction, info.iddevice, pcommand) into vresult;
  3086. end if;
  3087. -- fuel
  3088. if substr(pcommand,1,1) in('3','9') then
  3089. SELECT set_fuel(vtransaction, info.iddevice, substr(pcommand,case when resumido then 15 else 31 end,50)) into vresult;
  3090. end if;
  3091. -- digital port's
  3092. if substr(pcommand,1,1)='6' then
  3093. if pdata<to_timestamp(1) then
  3094. vport:=substr(pcommand,15,6);
  3095. else
  3096. vport:=substr(pcommand,31,6);
  3097. end if;
  3098. SELECT set_port_digital(vtransaction,info.iddevice,vport) into vresult;
  3099. end if;
  3100. -- analog port's
  3101. if substr(pcommand,1,1) in('7','8') then
  3102. if pdata<to_timestamp(1) then
  3103. vport:=(substr(pcommand,15,6));
  3104. else
  3105. vport:=(substr(pcommand,31,6));
  3106. end if;
  3107.  
  3108. SELECT set_port_status(vtransaction,(select hextoint(substr(vport,1,3))),0,'A',case when substr(pcommand,1,1) ='8' then 1 else 0 end,info.iddevice) into vresult;
  3109. SELECT set_port_status(vtransaction,(select hextoint(substr(vport,4,3))),1,'A',case when substr(pcommand,1,1) ='8' then 1 else 0 end,info.iddevice) into vresult;
  3110. end if;
  3111. -- temperature
  3112. if substr(pcommand,1,1)='4' then
  3113. if pdata<to_timestamp(1) then
  3114. q:=(length(pcommand)-16)/2;
  3115. vport:=substr(Pcommand,15,q*2);
  3116. else
  3117. q:=(length(pcommand)-32)/2;
  3118. vport:=substr(Pcommand,31,q*2);
  3119. end if;
  3120. FOR i IN 1..q LOOP
  3121. S:= substr(vport,(i-1)*2+1,2);
  3122. vtemp:=(select hextoint2(S));
  3123. insert into vlt_temperature(idtransaction,temperature_sequence,temperature)
  3124. values(vtransaction,i,VTEMP+80);
  3125. END LOOP;
  3126. end if;
  3127. -- alertas
  3128. -- device interval
  3129. if info.alert_connected and vconnected and (not info.last_connected) then
  3130. if not exists ( select null from device_interval where weekday = to_char(vcommand_date,'D')::integer and to_char(vcommand_date,'hh24:mi:ss')::time between start_time and end_time) then
  3131. insert into vlt_alert
  3132. (alert,
  3133. idcustomer,
  3134. alert_date,
  3135. idtransaction,
  3136. idalerttype,
  3137. priority,
  3138. iddevice)
  3139. VALUES('Veículo "'||INFO.vehicle_code||'" Fora do horário de uso ('||to_char(vcommand_date,'dd/mm/yyyy hh24:mi:ss')||')'
  3140. , INFO.idcustomer
  3141. , current_timestamp
  3142. , vtransaction
  3143. , 10
  3144. , 'L'
  3145. ,info.iddevice
  3146. );
  3147. end if;
  3148. end if;
  3149.  
  3150. if /*((vlatitude=0) or (Vvel=0)) and (vidrecordtype=1) OR */(NOT VVALID) then
  3151. return vtransaction;
  3152. end if;
  3153. -- alerta de velocidade do device
  3154. if (Vvel>INFO.speed_limit) then
  3155. insert into vlt_alert
  3156. (alert,
  3157. idcustomer,
  3158. alert_date,
  3159. idtransaction,
  3160. idalerttype,
  3161. priority,iddevice)
  3162. select 'Veículo "'||INFO.vehicle_code||'" ultrapassou a velocidade de '||cast(INFO.speed_limit as varchar)||' km/h ('||cast(Vvel as varchar)||' Km/h).' alert,
  3163. INFO.idcustomer,
  3164. current_timestamp alert_date,
  3165. vtransaction,
  3166. idalerttype,
  3167. priority,info.iddevice
  3168. from alert_customer
  3169. where idalerttype=1
  3170. AND NOT INFO.SPEED_LIMIT_ALERT;
  3171. update device
  3172. set speed_limit_alert = true;
  3173. else
  3174. update device
  3175. set speed_limit_alert = false;
  3176. end if;
  3177.  
  3178. -- marca pontos
  3179. update interest_point
  3180. set active= distance(latitude, longitude, vlatitude, vlongitude)<=radius;
  3181.  
  3182. -- alerta proximidade de ponto
  3183. insert into vlt_alert
  3184. (alert,
  3185. idcustomer,
  3186. alert_date,
  3187. idtransaction,
  3188. idalerttype,
  3189. priority,iddevice)
  3190. select 'Veículo "'||info.vehicle_code||'" afastou do ponto "' || interest_point||'"' alert,
  3191. c.idcustomer,
  3192. current_timestamp alert_date,
  3193. vtransaction,
  3194. idalerttype,
  3195. priority,info.iddevice
  3196. from alert_customer c
  3197. , interest_point dp
  3198. where c.idalerttype=5
  3199. and not dp.active and alert;
  3200.  
  3201. update interest_point
  3202. set alert = false,speed_alert=false
  3203. where not active;
  3204.  
  3205. -- marca certas ativas
  3206. update fence
  3207. set active= vlt_point_in_polygon_fnc(idfence, vlatitude, vlongitude);
  3208.  
  3209. -- alerta saida da cerca
  3210. insert into vlt_alert
  3211. (alert,
  3212. idcustomer,
  3213. alert_date,
  3214. idtransaction,
  3215. idalerttype,
  3216. priority,iddevice)
  3217. select 'Veículo "'||INFO.vehicle_code||'" saiu da cerca "' || fence||'"' alert,
  3218. c.idcustomer,
  3219. current_timestamp alert_date,
  3220. vtransaction,
  3221. idalerttype,
  3222. priority,info.iddevice
  3223. from alert_customer c
  3224. , fence dp
  3225. where c.idalerttype=4
  3226. and not dp.active and alert;
  3227.  
  3228. update fence
  3229. set alert= false,speed_alert=false
  3230. where not active;
  3231.  
  3232. -- alerta proximidade de ponto
  3233. insert into vlt_alert
  3234. (alert,
  3235. idcustomer,
  3236. alert_date,
  3237. idtransaction,
  3238. idalerttype,
  3239. priority,iddevice)
  3240. select 'Veículo "'||INFO.vehicle_code||'" está próximo do ponto "' || interest_point||'"' alert,
  3241. c.idcustomer,
  3242. current_timestamp alert_date,
  3243. vtransaction,
  3244. idalerttype,
  3245. priority,info.iddevice
  3246. from alert_customer c
  3247. , interest_point dp
  3248. where c.idalerttype=5
  3249. and dp.active and not alert;
  3250.  
  3251. update interest_point
  3252. set alert=true
  3253. where active
  3254. and not alert;
  3255. -- alerta entrada da cerca
  3256. insert into vlt_alert
  3257. (alert,
  3258. idcustomer,
  3259. alert_date,
  3260. idtransaction,
  3261. idalerttype,
  3262. priority,iddevice)
  3263. select 'Veículo "'||INFO.vehicle_code||'" entrou na cerca "' || fence||'"' alert,
  3264. c.idcustomer,
  3265. current_timestamp alert_date,
  3266. vtransaction,
  3267. idalerttype,
  3268. priority,info.iddevice
  3269. from alert_customer c
  3270. , fence dp
  3271. where c.idalerttype=4
  3272. and dp.active and not alert;
  3273.  
  3274. update fence
  3275. set alert=true
  3276. where idfence in(select dp.idfence
  3277. from alert_customer c
  3278. , fence dp
  3279. where c.idalerttype=4
  3280. and dp.active and not alert);
  3281.  
  3282. -- alerta de velocidade do ponto
  3283. insert into vlt_alert
  3284. (alert,
  3285. idcustomer,
  3286. alert_date,
  3287. idtransaction,
  3288. idalerttype,
  3289. priority,iddevice)
  3290. select 'Veículo "'||INFO.vehicle_code||'" próximo do ponto "' || interest_point||'", ultrapassou a velocidade limite de '||dp.speed||' Km/h' alert,
  3291. c.idcustomer,
  3292. current_timestamp alert_date,
  3293. vtransaction,
  3294. idalerttype,
  3295. priority,info.iddevice
  3296. from alert_customer c
  3297. , interest_point dp
  3298. where c.idalerttype = 5
  3299. and Vvel > speed
  3300. and speed > 0
  3301. and dp.active
  3302. and not speed_alert;
  3303.  
  3304. update interest_point
  3305. set speed_alert=true
  3306. where Vvel > speed
  3307. and active
  3308. and not speed_alert;
  3309.  
  3310. update interest_point
  3311. set speed_alert= active and Vvel > CASE WHEN COALESCE(speed,0)=0 THEN VVEL ELSE COALESCE(speed,0) END;
  3312.  
  3313. -- alerta de velocidade da cerca
  3314. insert into vlt_alert
  3315. (alert,
  3316. idcustomer,
  3317. alert_date,
  3318. idtransaction,
  3319. idalerttype,
  3320. priority,iddevice)
  3321. select 'Veículo "'||INFO.vehicle_code||'" dentro da cerca "' || fence||'", ultrapassou a velocidade limite de '||speed||' Km/h' alert,
  3322. c.idcustomer,
  3323. current_timestamp alert_date,
  3324. vtransaction,
  3325. idalerttype,
  3326. priority,info.iddevice
  3327. from alert_customer c
  3328. , fence dp
  3329. where c.idalerttype = 4
  3330. and Vvel > speed
  3331. and speed > 0
  3332. and dp.active
  3333. and not speed_alert;
  3334.  
  3335. update fence
  3336. set speed_alert=true
  3337. where Vvel > speed
  3338. and active
  3339. and not speed_alert;
  3340.  
  3341. update fence
  3342. set speed_alert= active and Vvel > CASE WHEN COALESCE(speed,0)=0 THEN VVEL ELSE COALESCE(speed,0) END;
  3343. -- pontos da transaction
  3344. insert into vlt_transaction_interest_point(idtransaction,idinterestpoint)
  3345. select vtransaction,idinterestpoint from interest_point
  3346. where active;
  3347. -- cercas da transaction
  3348. insert into vlt_transaction_fence(idtransaction,idfence)
  3349. select vtransaction,idfence from fence
  3350. where active;
  3351.  
  3352. if vidrecordtype = 8 then
  3353. -- alerta de tpms
  3354. insert into vlt_alert
  3355. (alert,
  3356. idcustomer,
  3357. alert_date,
  3358. idtransaction,
  3359. idalerttype,
  3360. priority,
  3361. iddevice)
  3362. select case tipo
  3363. when 'T' then 'Veículo "'||INFO.vehicle_code||'", Pneu '||t.tpms_sequence||', Temperatura ('||trunc(temperature)||') fora da faixa permitida ('||valr_min_temperature||' a '||valr_max_temperature||')'
  3364. when 'P' then 'Veículo "'||INFO.vehicle_code||'", Pneu '||t.tpms_sequence||', Pressão (' ||trunc(pressure) ||') fora da faixa permitida ('||valr_min_preassure||' a '||valr_max_preassure||')'
  3365. when 'L' then 'Veículo "'||INFO.vehicle_code||'", Pneu '||t.tpms_sequence||', Tem Vazamento'
  3366. when 'A' then 'Veículo "'||INFO.vehicle_code||'", Pneu '||t.tpms_sequence||', Problema na Comunicação'
  3367. when 'B' then 'Veículo "'||INFO.vehicle_code||'", Pneu '||t.tpms_sequence||', Problema na Bateria'
  3368. end alert,
  3369. INFO.idcustomer,
  3370. current_timestamp alert_date,
  3371. v.idtransaction,
  3372. idalerttype,
  3373. priority,
  3374. info.iddevice
  3375. from vlt_tpms t
  3376. , alert_customer ac
  3377. , vlt_tpms_model m
  3378. , vlt_tpms_value v
  3379. , (select 'T' tipo union select 'P' union select 'L' union select 'A' union select 'B') tipo
  3380. where ac.idalerttype = 2
  3381. and t.iddevice = INFO.iddevice
  3382. and t.idtpmsvalue_last = v.idtpmsvalue
  3383. and ((tipo='P'
  3384. and v.pressure not between valr_min_preassure and valr_max_preassure
  3385. and not alert_preassure)
  3386. or
  3387. (tipo='T'
  3388. and v.temperature not between valr_min_temperature and valr_max_temperature
  3389. and not alert_temperature)
  3390. or
  3391. (tipo='L' and (v.leak) and not alert_leak)
  3392. or
  3393. (tipo='A' and (not v.active) and not alert_active)
  3394. or
  3395. (tipo='B' and (not v.batery) and not alert_batery)
  3396. );
  3397.  
  3398. update vlt_tpms
  3399. set alert_preassure = (select (v.pressure not between info.valr_min_preassure and info.valr_max_preassure)
  3400. from vlt_tpms_value v
  3401. where vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3402. , alert_temperature = (select (v.temperature not between info.valr_min_temperature and info.valr_max_temperature)
  3403. from vlt_tpms_value v
  3404. where vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3405. , alert_leak = (select leak
  3406. from vlt_tpms_value v
  3407. where vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3408. , alert_active = (select not active
  3409. from vlt_tpms_value v
  3410. where vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3411. , alert_batery = (select not batery
  3412. from vlt_tpms_value v
  3413. where vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3414. where iddevice=info.iddevice;
  3415. end if;
  3416.  
  3417.  
  3418. end loop;
  3419. return vtransaction;
  3420. end
  3421. $body$
  3422. LANGUAGE 'plpgsql'
  3423. VOLATILE
  3424. CALLED ON NULL INPUT
  3425. SECURITY INVOKER;
  3426.  
  3427. CREATE OR REPLACE FUNCTION public.vlt_socket_con_gsn_prc (
  3428. pcommand varchar
  3429. )
  3430. RETURNS varchar AS
  3431. $body$
  3432. declare
  3433. vtransaction bigint;
  3434. vdescription varchar;
  3435. viddevice bigint;
  3436. vdifh integer;
  3437. pvel numeric;
  3438. vidcustomer bigint;
  3439. vcommand varchar[];
  3440. vconnected boolean;
  3441. vdate timestamp;
  3442. vresult integer;
  3443. vplat numeric;
  3444. vplong numeric;
  3445. vpdata timestamp;
  3446. vidrecordtype bigint;
  3447. viddriver bigint;
  3448. vlast_transaction bigint;
  3449. vspeed_limit integer;
  3450. vlimit_alert boolean;
  3451.  
  3452. /* exemplo
  3453. 01 - GSN:355096030559917 -- codigo equipamento
  3454. 02 - CID:89550531680001916829 -- codigo chip
  3455. 03 - CMD:PA:0 -- <indefinido>
  3456. 04 - IG:1 -- ignição 1=true
  3457. 05 - A1:0 -- porta analogica 1
  3458. 06 - A2:0 -- porta analogica 2
  3459. 07 - A3:0 -- porta analogica 3
  3460. 08 - A4:0 -- porta analogica 4
  3461. 09 - PW:120 -- <indefinido>
  3462. 10 - TP:438 -- <indefinido>
  3463. 11 - O1:0 -- <indefinido>
  3464. 12 - O2:0 -- <indefinido>
  3465. 13 - O3:1 -- <indefinido>
  3466. 14 - GPS:134639.998 -- time
  3467. 15 - A -- validity: A-ok , V-invalid
  3468. 16 - 1643.2520 -- Latitude (16,7208666666667)
  3469. 17 - S -- S(-1)/N(1)
  3470. 18 - 04917.2596 -- Longitude (49,28766)
  3471. 19 - W -- W(-1)/E(1)
  3472. 20 - 000.0 -- velocidade em nós
  3473. 21 - 000.0 -- curso
  3474. 22 - 020913 -- data
  3475. 23 - <vazio> -- <indefinido>
  3476. 24 - <vazio> -- <indefinido>
  3477. 25 - <vazio> -- <indefinido>
  3478. 26 - A*PER:NAFPVS:7.3.0FVJM:0 -- <indefinido>
  3479. 27 - SPD: -- <indefinido>
  3480. */
  3481. begin
  3482. if pcommand is null or pcommand='' then
  3483. RAISE EXCEPTION 'Enter the command of the device';
  3484. end if;
  3485. select '{"'||replace(pcommand,',','","')||'"}'
  3486. into vcommand;
  3487.  
  3488. vpdata:= to_timestamp(vcommand[22]||' '||replace(vcommand[14],'GPS:',''), 'DDMMYY HH24MISS');
  3489. --code
  3490. vcommand[1]:= replace(vcommand[1],'nullLOG:GSN:','');
  3491. vcommand[1]:= replace(vcommand[1],'LOG:GSN:','');
  3492. vcommand[1]:= replace(vcommand[1],'GSN:','');
  3493.  
  3494. --latitude
  3495. vplat:=dm2dd(vcommand[16]);
  3496. if vcommand[17]='S' then
  3497. vplat:=-1*vplat;
  3498. end if;
  3499.  
  3500. --longitude
  3501. vplong:=dm2dd(vcommand[18]);
  3502. if vcommand[19]='W' then
  3503. vplong:=-1*vplong;
  3504. end if;
  3505.  
  3506. vresult:=0;
  3507. vdate:=now();
  3508.  
  3509.  
  3510. vconnected:= vcommand[4] = 'IG:1';
  3511.  
  3512. pvel:=(vcommand[20]::numeric)* 1.852;
  3513.  
  3514. select iddevice
  3515. , idcustomer
  3516. , (select case when s.daylight_saving
  3517. then s.difference_daylight_saving
  3518. else s.difference
  3519. end
  3520. FROM VLT_SCHEDULE s
  3521. where s.idschedule=vlt_device.idschedule)
  3522. , last_transaction
  3523. , description
  3524. , speed_limit
  3525. ,vlimit_alert
  3526. into viddevice
  3527. , vidcustomer
  3528. , vdifh
  3529. , vlast_transaction
  3530. , vdescription
  3531. ,vspeed_limit
  3532. ,vlimit_alert
  3533. from vlt_device
  3534. where code = vcommand[1];
  3535.  
  3536. if not FOUND then
  3537. insert into vlt_device(code,description,last_date,last_sequence,last_latitude,last_longitude,connected,iddevicemodel,idtpmsmodel)
  3538. values(vcommand[1],'gsn:'||vcommand[1],vdate,0,vplat,vplong,vconnected,(select iddevicemodel from vlt_device_model where description like 'gsn%' limit 1),(select id from vlt_tpms_model where desc_model_tmps like 'gsn%' limit 1));
  3539. vdescription:='gsn:'||vcommand[1];
  3540. select iddevice
  3541. , (select case when s.daylight_saving then s.difference_daylight_saving else s.difference end
  3542. FROM VLT_SCHEDULE s
  3543. where s.idschedule=vlt_device.idschedule)
  3544. into viddevice,vdifh
  3545. from vlt_device
  3546. where code=vcommand[1];
  3547.  
  3548. insert into vlt_device_last(iddevice,idrecordtype)
  3549. select viddevice,idrecordtype from vlt_record_type;
  3550. end if;
  3551. SELECT nextval('vlt_transaction_idtransaction_seq')
  3552. into vtransaction;
  3553. --gps
  3554. vidrecordtype:=1;
  3555. insert into
  3556. vlt_transaction(idtransaction
  3557. , iddevice
  3558. , idrecordtype
  3559. , command
  3560. , transaction_date
  3561. , boot
  3562. , online
  3563. , command_date
  3564. , command_date_original
  3565. , transaction_sequence
  3566. , speed
  3567. , course
  3568. , latitude
  3569. , longitude
  3570. , iddriver
  3571. , connected
  3572. , valid
  3573. )
  3574. values(vtransaction
  3575. ,viddevice
  3576. ,vidrecordtype
  3577. ,pcommand
  3578. ,vdate
  3579. ,'N'
  3580. ,'O'
  3581. ,case when vdifh<0 then vpdata - cast(abs(vdifh)||':00:00' as time) else vpdata + cast(abs(vdifh)||':00:00' as time) end
  3582. ,vpdata
  3583. ,0
  3584. ,pvel
  3585. ,cast(vcommand[21] as numeric)
  3586. ,vplat
  3587. ,vplong
  3588. ,viddriver
  3589. ,vconnected
  3590. ,vplat<>0
  3591. );
  3592. SELECT vlt_agrupa_transaction(viddevice,vlast_transaction,vidrecordtype) into vresult;
  3593.  
  3594. update vlt_device
  3595. set last_date=vpdata
  3596. , last_sequence=0
  3597. where iddevice= viddevice;
  3598.  
  3599. update vlt_device_last
  3600. set idtransaction = vtransaction
  3601. where iddevice = viddevice
  3602. and idrecordtype = vidrecordtype;
  3603.  
  3604. insert into vlt_transaction_last(idtransaction,idrecordtype,idtransaction_last)
  3605. select vtransaction,idrecordtype,idtransaction
  3606. from vlt_device_last
  3607. where iddevice=viddevice
  3608. and idtransaction is not null;
  3609.  
  3610. -- verifica pontos do device
  3611. insert into vlt_device_interest_point(iddevice,idinterestpoint,active)
  3612. select iddevice,p.idinterestpoint,false from vlt_device d,vlt_interest_point p
  3613. where d.idcustomer = p.idcustomer
  3614. and p.idcustomer = vidcustomer
  3615. and not exists(select null
  3616. from vlt_device_interest_point di
  3617. where di.iddevice = d.iddevice
  3618. and di.idinterestpoint = p.idinterestpoint);
  3619. -- verifica cercas do device
  3620. insert into vlt_device_fence(iddevice,idfence,active)
  3621. select iddevice,p.idfence,false from vlt_device d,vlt_fence p
  3622. where d.idcustomer = p.idcustomer
  3623. and p.idcustomer = vidcustomer
  3624. and not exists(select null
  3625. from vlt_device_fence di
  3626. where di.iddevice = d.iddevice
  3627. and di.idfence = p.idfence);
  3628.  
  3629. -- marca pontos
  3630. update vlt_device_interest_point
  3631. set active= (select distance(latitude, longitude, vplat, vplong)<=vlt_interest_point.radius
  3632. from vlt_interest_point
  3633. where vlt_interest_point.idinterestpoint=vlt_device_interest_point.idinterestpoint)
  3634. where iddevice=viddevice;
  3635. -- alerta proximidade de ponto
  3636. insert into vlt_alert
  3637. (alert,
  3638. idcustomer,
  3639. alert_date,
  3640. idtransaction,
  3641. idalerttype,
  3642. priority)
  3643. select 'O veículo "'||vdescription||'" afastou do ponto "' || interest_point||'"' alert,
  3644. c.idcustomer,
  3645. current_timestamp alert_date,
  3646. vtransaction,
  3647. idalerttype,
  3648. priority
  3649. from vlt_alert_customer c,vlt_device_interest_point dp,vlt_interest_point p
  3650. where c.idcustomer=vidcustomer
  3651. and c.idalerttype=5
  3652. and dp.iddevice=viddevice
  3653. and not dp.active and alert
  3654. and dp.idinterestpoint=p.idinterestpoint;
  3655.  
  3656. update vlt_device_interest_point
  3657. set alert= false,speed_alert=false
  3658. where not active;
  3659.  
  3660. -- marca certas ativas
  3661. update vlt_device_fence
  3662. set active= vlt_point_in_polygon_fnc(idfence, vplat, vplong)
  3663. where iddevice=viddevice;
  3664. -- alerta saida da cerca
  3665. insert into vlt_alert
  3666. (alert,
  3667. idcustomer,
  3668. alert_date,
  3669. idtransaction,
  3670. idalerttype,
  3671. priority)
  3672. select 'O veículo "'||vdescription||'" saiu da cerca "' || fence||'"' alert,
  3673. c.idcustomer,
  3674. current_timestamp alert_date,
  3675. vtransaction,
  3676. idalerttype,
  3677. priority
  3678. from vlt_alert_customer c,vlt_device_fence dp,vlt_fence p
  3679. where c.idcustomer=vidcustomer
  3680. and c.idalerttype=5
  3681. and dp.iddevice=viddevice
  3682. and not dp.active and alert
  3683. and dp.idfence=p.idfence;
  3684. update vlt_device_fence
  3685. set alert= false,speed_alert=false
  3686. where not active;
  3687.  
  3688. -- alerta proximidade de ponto
  3689. insert into vlt_alert
  3690. (alert,
  3691. idcustomer,
  3692. alert_date,
  3693. idtransaction,
  3694. idalerttype,
  3695. priority)
  3696. select 'O veículo "'||vdescription||'" está próximo do ponto "' || interest_point||'"' alert,
  3697. c.idcustomer,
  3698. current_timestamp alert_date,
  3699. vtransaction,
  3700. idalerttype,
  3701. priority
  3702. from vlt_alert_customer c,vlt_device_interest_point dp,vlt_interest_point p
  3703. where c.idcustomer=vidcustomer
  3704. and c.idalerttype=5
  3705. and dp.iddevice=viddevice
  3706. and dp.active and not alert
  3707. and dp.idinterestpoint=p.idinterestpoint;
  3708.  
  3709. update vlt_device_interest_point
  3710. set alert=true
  3711. where iddeviceinterestpoint in(select dp.iddeviceinterestpoint
  3712. from vlt_alert_customer c,vlt_device_interest_point dp,vlt_interest_point p
  3713. where c.idcustomer=vidcustomer
  3714. and c.idalerttype=5
  3715. and dp.iddevice=viddevice
  3716. and dp.active and not alert
  3717. and dp.idinterestpoint=p.idinterestpoint);
  3718. -- alerta entrada da cerca
  3719. insert into vlt_alert
  3720. (alert,
  3721. idcustomer,
  3722. alert_date,
  3723. idtransaction,
  3724. idalerttype,
  3725. priority)
  3726. select 'O veículo "'||vdescription||'" entrou na cerca "' || fence||'"' alert,
  3727. c.idcustomer,
  3728. current_timestamp alert_date,
  3729. vtransaction,
  3730. idalerttype,
  3731. priority
  3732. from vlt_alert_customer c,vlt_device_fence dp,vlt_fence p
  3733. where c.idcustomer=vidcustomer
  3734. and c.idalerttype=5
  3735. and dp.iddevice=viddevice
  3736. and dp.active and not alert
  3737. and dp.idfence=p.idfence;
  3738.  
  3739. update vlt_device_fence
  3740. set alert=true
  3741. where iddevicefence in(select dp.iddevicefence
  3742. from vlt_alert_customer c,vlt_device_fence dp,vlt_fence p
  3743. where c.idcustomer=vidcustomer
  3744. and c.idalerttype=5
  3745. and dp.iddevice=viddevice
  3746. and dp.active and not alert
  3747. and dp.idfence=p.idfence);
  3748.  
  3749. -- alerta de velocidade do device
  3750. if (pvel>vspeed_limit) then
  3751. if not vlimit_alert then
  3752. insert into vlt_alert
  3753. (alert,
  3754. idcustomer,
  3755. alert_date,
  3756. idtransaction,
  3757. idalerttype,
  3758. priority)
  3759. select 'O veículo "'||vdescription||'" ultrapassou a velocidade de '||cast(vspeed_limit as varchar)||' km/h ('||cast(pvel as varchar)||' Km/h).' alert,
  3760. vidcustomer,
  3761. current_timestamp alert_date,
  3762. vtransaction,
  3763. idalerttype,
  3764. priority
  3765. from vlt_alert_customer
  3766. where idalerttype=1
  3767. and idcustomer=vidcustomer;
  3768.  
  3769. update vlt_device
  3770. set speed_limit_alert = true
  3771. where iddevice = viddevice;
  3772. end if;
  3773. else
  3774. if vlimit_alert then
  3775. update vlt_device
  3776. set speed_limit_alert = false
  3777. where iddevice = viddevice;
  3778. end if;
  3779. end if;
  3780. -- alerta de velocidade do ponto
  3781. insert into vlt_alert
  3782. (alert,
  3783. idcustomer,
  3784. alert_date,
  3785. idtransaction,
  3786. idalerttype,
  3787. priority)
  3788. select 'O veículo "'||vdescription||'" próximo do ponto "' || interest_point||'", ultrapassou a velocidade limite de '||p.speed||' Km/h' alert,
  3789. c.idcustomer,
  3790. current_timestamp alert_date,
  3791. vtransaction,
  3792. idalerttype,
  3793. priority
  3794. from vlt_alert_customer c,vlt_device_interest_point dp,vlt_interest_point p
  3795. where c.idcustomer = vidcustomer
  3796. and c.idalerttype = 5
  3797. and dp.iddevice = viddevice
  3798. and pvel > p.speed
  3799. and p.speed > 0
  3800. and dp.active
  3801. and not speed_alert
  3802. and dp.idinterestpoint = p.idinterestpoint;
  3803.  
  3804. update vlt_device_interest_point
  3805. set speed_alert=true
  3806. where iddeviceinterestpoint in(select dp.iddeviceinterestpoint
  3807. from vlt_alert_customer c,vlt_device_interest_point dp,vlt_interest_point p
  3808. where c.idcustomer = vidcustomer
  3809. and c.idalerttype = 5
  3810. and dp.iddevice = viddevice
  3811. and pvel > p.speed
  3812. and dp.active
  3813. and not speed_alert
  3814. and dp.idinterestpoint = p.idinterestpoint);
  3815.  
  3816. update vlt_device_interest_point
  3817. set speed_alert= active and pvel > (select CASE WHEN COALESCE(speed,0)=0 THEN PVEL ELSE COALESCE(speed,0) END
  3818. from vlt_interest_point
  3819. where vlt_device_interest_point.idinterestpoint = vlt_interest_point.idinterestpoint)
  3820. where iddevice=viddevice;
  3821.  
  3822. -- alerta de velocidade da cerca
  3823. insert into vlt_alert
  3824. (alert,
  3825. idcustomer,
  3826. alert_date,
  3827. idtransaction,
  3828. idalerttype,
  3829. priority)
  3830. select 'O veículo "'||vdescription||'" dentro da cerca "' || fence||'", ultrapassou a velocidade limite de '||p.speed||' Km/h' alert,
  3831. c.idcustomer,
  3832. current_timestamp alert_date,
  3833. vtransaction,
  3834. idalerttype,
  3835. priority
  3836. from vlt_alert_customer c,vlt_device_fence dp,vlt_fence p
  3837. where c.idcustomer = vidcustomer
  3838. and c.idalerttype = 5
  3839. and dp.iddevice = viddevice
  3840. and pvel > p.speed
  3841. and p.speed > 0
  3842. and dp.active
  3843. and not speed_alert
  3844. and dp.idfence = p.idfence;
  3845.  
  3846. update vlt_device_fence
  3847. set speed_alert=true
  3848. where iddevicefence in(select dp.iddevicefence
  3849. from vlt_alert_customer c,vlt_device_fence dp,vlt_fence p
  3850. where c.idcustomer = vidcustomer
  3851. and c.idalerttype = 5
  3852. and dp.iddevice = viddevice
  3853. and pvel > p.speed
  3854. and dp.active
  3855. and not speed_alert
  3856. and dp.idfence = p.idfence);
  3857.  
  3858. update vlt_device_fence
  3859. set speed_alert= active and pvel > (select CASE WHEN COALESCE(speed,0)=0 THEN PVEL ELSE COALESCE(speed,0) END
  3860. from vlt_fence
  3861. where vlt_device_fence.idfence = vlt_fence.idfence)
  3862. where iddevice=viddevice;
  3863. -- pontos da transaction
  3864. insert into vlt_transaction_interest_point(idtransaction,idinterestpoint)
  3865. select vtransaction,idinterestpoint from vlt_device_interest_point
  3866. where iddevice=viddevice
  3867. and active;
  3868. -- cercas da transaction
  3869. insert into vlt_transaction_fence(idtransaction,idfence)
  3870. select vtransaction,idfence from vlt_device_fence
  3871. where iddevice=viddevice
  3872. and active;
  3873. if vidrecordtype = 8 then
  3874. -- alerta de tpms
  3875. insert into vlt_alert
  3876. (alert,
  3877. idcustomer,
  3878. alert_date,
  3879. idtransaction,
  3880. idalerttype,
  3881. priority)
  3882. select case tipo
  3883. when 'T' then 'Veículo "'||description||'", Pneu '||t.tpms_sequence||', temperatura ('||trunc(temperature)||') fora da faixa permitida ('||valr_min_temperature||' a '||valr_max_temperature||')'
  3884. when 'P' then 'Veículo "'||description||'", Pneu '||t.tpms_sequence||', Pressão (' ||trunc(pressure) ||') fora da faixa permitida ('||valr_min_preassure||' a '||valr_max_preassure||')'
  3885. when 'F' then 'Veículo "'||description||'", Pneu '||t.tpms_sequence||', Tem Vazamento'
  3886. end alert,
  3887. ac.idcustomer,
  3888. current_timestamp alert_date,
  3889. v.idtransaction,
  3890. idalerttype,
  3891. priority
  3892. from vlt_tpms t
  3893. , vlt_device d
  3894. , vlt_alert_customer ac
  3895. , vlt_tpms_model m
  3896. , vlt_tpms_value v
  3897. , (select 'T' tipo union select 'P' union select 'F') tipo
  3898. where ac.idalerttype = 2
  3899. and t.iddevice = viddevice
  3900. and t.iddevice = d.iddevice
  3901. and ac.idcustomer = vidcustomer
  3902. and d.idtpmsmodel = m.id
  3903. and t.idtpmsvalue_last = v.idtpmsvalue
  3904. and ((tipo='P'
  3905. and v.pressure not between valr_min_preassure and valr_max_preassure
  3906. and not alert_preassure)
  3907. or
  3908. (tipo='T'
  3909. and v.temperature not between valr_min_temperature and valr_max_temperature
  3910. and not alert_temperature)
  3911. or
  3912. (tipo='F' and leak and not alert_leak)
  3913. );
  3914.  
  3915. update vlt_tpms
  3916. set alert_preassure = (select (v.pressure not between valr_min_preassure and valr_max_preassure)
  3917. from vlt_tpms_model m
  3918. , vlt_tpms_value v
  3919. where m.id = vidtpmsmodel
  3920. and vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3921. , alert_temperature = (select (v.temperature not between valr_min_temperature and valr_max_temperature)
  3922. from vlt_tpms_model m
  3923. , vlt_tpms_value v
  3924. where m.id = vidtpmsmodel
  3925. and vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3926. , alert_leak = (select leak
  3927. from vlt_tpms_model m
  3928. , vlt_tpms_value v
  3929. where m.id = vidtpmsmodel
  3930. and vlt_tpms.idtpmsvalue_last = v.idtpmsvalue)
  3931. where iddevice=viddevice;
  3932. end if;
  3933. return 0;
  3934. end
  3935. $body$
  3936. LANGUAGE 'plpgsql'
  3937. VOLATILE
  3938. CALLED ON NULL INPUT
  3939. SECURITY INVOKER
  3940. COST 100;
  3941.  
  3942. ALTER FUNCTION public.vlt_transaction_address_fnc ()
  3943. OWNER TO pgsql;
  3944.  
  3945. CREATE OR REPLACE FUNCTION public.vlt_transaction_error_new (
  3946. )
  3947. RETURNS trigger AS
  3948. $body$
  3949. begin
  3950. insert into vlt_alert(alert,iduser,idcustomer,alert_date,read_date,idtransaction,idalerttype,priority,notification)
  3951. select 'Erro Velotrack: '||trim(case when new.iddevice is not null
  3952. then ' Equipamento: '||(select code from vlt_device where iddevice=new.iddevice)||', '
  3953. else ''
  3954. end
  3955. ||
  3956. case when new.command is not null
  3957. then ' Comando: '||new.command||', '
  3958. else ''
  3959. end
  3960. ||
  3961. new.error) alert,
  3962. null iduser,
  3963. idcustomer,
  3964. now() alert_date,
  3965. null read_date,
  3966. null idtransaction,
  3967. idalerttype,
  3968. 'L' priority,
  3969. false notification
  3970. from vlt_alert_customer
  3971. where idalerttype=9
  3972. and (cast(date_part('epoch',age(now(),alert_last))as BIGINT)>alert_time or alert_last is null);
  3973. return new;
  3974. end;
  3975. $body$
  3976. LANGUAGE 'plpgsql'
  3977. VOLATILE
  3978. CALLED ON NULL INPUT
  3979. SECURITY INVOKER
  3980. COST 100;
  3981.  
  3982. ALTER FUNCTION public.vlt_update_install_center_search_fnc (pidinstallcenter bigint)
  3983. OWNER TO pgsql;
  3984.  
  3985. ALTER FUNCTION public.vlt_update_model_command_search_fnc (pidmodelcommand bigint)
  3986. OWNER TO pgsql;
  3987.  
  3988. ALTER FUNCTION public.vlt_update_monitoring_center_search_fnc (pidmonitoringcenter bigint)
  3989. OWNER TO pgsql;
  3990.  
  3991. CREATE FUNCTION public.vlt_update_sim_search_fnc (
  3992. pidsim bigint
  3993. )
  3994. RETURNS pg_catalog.void AS
  3995. $body$
  3996. begin
  3997. update vlt_sim
  3998. set sim_search = to_tsvector(utl_text_search((coalesce(code_sim, '') || ' ' || coalesce(desc_phone, ''))))
  3999. where idsim = pidsim;
  4000. END;
  4001. $body$
  4002. LANGUAGE 'plpgsql'
  4003. VOLATILE
  4004. CALLED ON NULL INPUT
  4005. SECURITY INVOKER;
  4006.  
  4007. CREATE SEQUENCE public.fin_bank_account_idbankaccount_seq
  4008. INCREMENT 1 MINVALUE 1
  4009. MAXVALUE 9223372036854775807 START 1
  4010. CACHE 1;
  4011.  
  4012. ALTER SEQUENCE public.fin_bank_account_idbankaccount_seq RESTART WITH 5;
  4013.  
  4014. CREATE SEQUENCE public.fin_bank_idbank_seq
  4015. INCREMENT 1 MINVALUE 1
  4016. MAXVALUE 9223372036854775807 START 1
  4017. CACHE 1;
  4018.  
  4019. ALTER SEQUENCE public.fin_bank_idbank_seq RESTART WITH 17;
  4020.  
  4021. CREATE SEQUENCE public.fin_billet_idbillet_seq
  4022. INCREMENT 1 MINVALUE 1
  4023. MAXVALUE 9223372036854775807 START 1
  4024. CACHE 1;
  4025.  
  4026. ALTER SEQUENCE public.fin_billet_idbillet_seq RESTART WITH 5;
  4027.  
  4028. CREATE SEQUENCE public.fin_billet_item_idbilletitem_seq
  4029. INCREMENT 1 MINVALUE 1
  4030. MAXVALUE 9223372036854775807 START 1
  4031. CACHE 1;
  4032.  
  4033. ALTER SEQUENCE public.fin_billet_item_idbilletitem_seq RESTART WITH 29;
  4034.  
  4035. CREATE SEQUENCE public.fin_item_model_billet_iditemmodelbillet_seq
  4036. INCREMENT 1 MINVALUE 1
  4037. MAXVALUE 9223372036854775807 START 1
  4038. CACHE 1;
  4039.  
  4040. ALTER SEQUENCE public.fin_item_model_billet_iditemmodelbillet_seq RESTART WITH 29;
  4041.  
  4042. CREATE SEQUENCE public.fin_item_model_billet_value_iditemmodelbilletvalue_seq
  4043. INCREMENT 1 MINVALUE 1
  4044. MAXVALUE 9223372036854775807 START 1
  4045. CACHE 1;
  4046.  
  4047. ALTER SEQUENCE public.fin_item_model_billet_value_iditemmodelbilletvalue_seq RESTART WITH 9;
  4048.  
  4049. CREATE SEQUENCE public.fin_model_billet_idmodelbillet_seq
  4050. INCREMENT 1 MINVALUE 1
  4051. MAXVALUE 9223372036854775807 START 1
  4052. CACHE 1;
  4053.  
  4054. ALTER SEQUENCE public.fin_model_billet_idmodelbillet_seq RESTART WITH 5;
  4055.  
  4056. CREATE SEQUENCE public.par_sns_application_idsnsapplication_seq
  4057. INCREMENT 1 MINVALUE 1
  4058. MAXVALUE 9223372036854775807 START 1
  4059. CACHE 1;
  4060.  
  4061. ALTER SEQUENCE public.par_sns_application_idsnsapplication_seq RESTART WITH 6;
  4062.  
  4063. CREATE SEQUENCE public.par_sns_idsns_seq
  4064. INCREMENT 1 MINVALUE 1
  4065. MAXVALUE 9223372036854775807 START 1
  4066. CACHE 1;
  4067.  
  4068. ALTER SEQUENCE public.par_sns_idsns_seq RESTART WITH 18;
  4069.  
  4070. CREATE SEQUENCE public.vlt_device_sin_iddevicesin_seq
  4071. INCREMENT 1 MINVALUE 1
  4072. MAXVALUE 9223372036854775807 START 1
  4073. CACHE 1;
  4074.  
  4075. CREATE SEQUENCE public.vlt_sim_history_idsimhistory_seq
  4076. INCREMENT 1 MINVALUE 1
  4077. MAXVALUE 9223372036854775807 START 1
  4078. CACHE 1;
  4079.  
  4080. ALTER SEQUENCE public.vlt_sim_history_idsimhistory_seq RESTART WITH 35;
  4081.  
  4082. CREATE SEQUENCE public.vlt_sin_idsin_seq
  4083. INCREMENT 1 MINVALUE 1
  4084. MAXVALUE 9223372036854775807 START 1
  4085. CACHE 1;
  4086.  
  4087. ALTER SEQUENCE public.vlt_sin_idsin_seq RESTART WITH 15;
  4088.  
  4089. CREATE TABLE public.fin_bank (
  4090. idbank BIGINT DEFAULT nextval('fin_bank_idbank_seq'::regclass) NOT NULL,
  4091. code VARCHAR(3) NOT NULL,
  4092. cnpj VARCHAR(18),
  4093. bank VARCHAR(60) NOT NULL,
  4094. bank_search TSVECTOR,
  4095. CONSTRAINT fin_bank_pk PRIMARY KEY(idbank),
  4096. CONSTRAINT fin_bank_uk UNIQUE(bank)
  4097. ) WITHOUT OIDS;
  4098.  
  4099. CREATE TRIGGER fin_bank_update_search_trg AFTER INSERT OR UPDATE
  4100. ON public.fin_bank FOR EACH ROW
  4101. EXECUTE PROCEDURE public.fin_bank_update_search_fnc();
  4102.  
  4103. CREATE TABLE public.fin_bank_account (
  4104. idbankaccount BIGINT DEFAULT nextval('fin_bank_account_idbankaccount_seq'::regclass) NOT NULL,
  4105. idbank BIGINT NOT NULL,
  4106. account VARCHAR(60) NOT NULL,
  4107. agency VARCHAR(10) NOT NULL,
  4108. agency_dv VARCHAR(10),
  4109. account_number VARCHAR(10) NOT NULL,
  4110. account_dv VARCHAR(10),
  4111. wallet VARCHAR(10),
  4112. modality VARCHAR(10),
  4113. accord VARCHAR(10),
  4114. contract VARCHAR(10),
  4115. variation_wallet VARCHAR(10),
  4116. idseller BIGINT NOT NULL,
  4117. CONSTRAINT fin_bank_account_pk PRIMARY KEY(idbankaccount),
  4118. CONSTRAINT fin_bank_account_fk1 FOREIGN KEY (idbank)
  4119. REFERENCES public.fin_bank(idbank)
  4120. ON DELETE NO ACTION
  4121. ON UPDATE NO ACTION
  4122. NOT DEFERRABLE,
  4123. CONSTRAINT fin_bank_account_fk2 FOREIGN KEY (idseller)
  4124. REFERENCES public.vlt_seller(idseller)
  4125. ON DELETE NO ACTION
  4126. ON UPDATE NO ACTION
  4127. NOT DEFERRABLE
  4128. ) WITHOUT OIDS;
  4129.  
  4130. CREATE TABLE public.fin_billet (
  4131. idbillet BIGINT DEFAULT nextval('fin_billet_idbillet_seq'::regclass) NOT NULL,
  4132. idseller BIGINT NOT NULL,
  4133. idcustomer BIGINT NOT NULL,
  4134. idbankaccount BIGINT NOT NULL,
  4135. billet VARCHAR(60),
  4136. value VARCHAR(10),
  4137. CONSTRAINT fin_billet_pk PRIMARY KEY(idbillet),
  4138. CONSTRAINT fin_billet_fk1 FOREIGN KEY (idseller)
  4139. REFERENCES public.vlt_seller(idseller)
  4140. ON DELETE NO ACTION
  4141. ON UPDATE NO ACTION
  4142. NOT DEFERRABLE,
  4143. CONSTRAINT fin_billet_fk2 FOREIGN KEY (idcustomer)
  4144. REFERENCES public.par_customer(idcustomer)
  4145. ON DELETE NO ACTION
  4146. ON UPDATE NO ACTION
  4147. NOT DEFERRABLE,
  4148. CONSTRAINT fin_billet_fk3 FOREIGN KEY (idbankaccount)
  4149. REFERENCES public.fin_bank_account(idbankaccount)
  4150. ON DELETE NO ACTION
  4151. ON UPDATE NO ACTION
  4152. NOT DEFERRABLE
  4153. ) WITHOUT OIDS;
  4154.  
  4155. CREATE TABLE public.fin_billet_item (
  4156. idbilletitem BIGINT DEFAULT nextval('fin_billet_item_idbilletitem_seq'::regclass) NOT NULL,
  4157. idbillet BIGINT NOT NULL,
  4158. value VARCHAR(120),
  4159. iditemmodelbillet BIGINT NOT NULL,
  4160. CONSTRAINT fin_billet_item_pk PRIMARY KEY(idbilletitem),
  4161. CONSTRAINT fin_billet_item_fk1 FOREIGN KEY (idbillet)
  4162. REFERENCES public.fin_billet(idbillet)
  4163. ON DELETE NO ACTION
  4164. ON UPDATE NO ACTION
  4165. NOT DEFERRABLE,
  4166. CONSTRAINT fin_billet_item_fk2 FOREIGN KEY (iditemmodelbillet)
  4167. REFERENCES public.fin_item_model_billet(iditemmodelbillet)
  4168. ON DELETE NO ACTION
  4169. ON UPDATE NO ACTION
  4170. NOT DEFERRABLE
  4171. ) WITHOUT OIDS;
  4172.  
  4173. CREATE INDEX fin_billet_item_idx01 ON public.fin_billet_item
  4174. USING btree (iditemmodelbillet);
  4175.  
  4176. CREATE TABLE public.fin_item_model_billet (
  4177. iditemmodelbillet BIGINT DEFAULT nextval('fin_item_model_billet_iditemmodelbillet_seq'::regclass) NOT NULL,
  4178. idmodelbillet BIGINT NOT NULL,
  4179. item_model_billet VARCHAR(60),
  4180. max_size BIGINT,
  4181. min_size BIGINT,
  4182. code VARCHAR(60),
  4183. type pg_catalog."char",
  4184. required pg_catalog."char",
  4185. CONSTRAINT fin_item_model_billet_pk PRIMARY KEY(iditemmodelbillet),
  4186. CONSTRAINT required CHECK (required = ANY (ARRAY['S'::"char", 'N'::"char"])),
  4187. CONSTRAINT type CHECK (type = ANY (ARRAY['T'::"char", 'D'::"char", 'N'::"char"])),
  4188. CONSTRAINT fin_item_model_billet_fk1 FOREIGN KEY (idmodelbillet)
  4189. REFERENCES public.fin_model_billet(idmodelbillet)
  4190. ON DELETE NO ACTION
  4191. ON UPDATE NO ACTION
  4192. NOT DEFERRABLE
  4193. ) WITHOUT OIDS;
  4194.  
  4195. CREATE INDEX fin_item_model_billet_idx01 ON public.fin_item_model_billet
  4196. USING btree (idmodelbillet);
  4197.  
  4198. CREATE TABLE public.fin_item_model_billet_value (
  4199. iditemmodelbilletvalue BIGINT DEFAULT nextval('fin_item_model_billet_value_iditemmodelbilletvalue_seq'::regclass) NOT NULL,
  4200. iditemmodelbillet BIGINT NOT NULL,
  4201. value VARCHAR(10),
  4202. name VARCHAR(10),
  4203. CONSTRAINT fin_item_model_billet_value_pk PRIMARY KEY(iditemmodelbilletvalue),
  4204. CONSTRAINT fin_item_model_billet_value_fk1 FOREIGN KEY (iditemmodelbillet)
  4205. REFERENCES public.fin_item_model_billet(iditemmodelbillet)
  4206. ON DELETE NO ACTION
  4207. ON UPDATE NO ACTION
  4208. NOT DEFERRABLE
  4209. ) WITHOUT OIDS;
  4210.  
  4211. CREATE TABLE public.fin_model_billet (
  4212. idmodelbillet BIGINT DEFAULT nextval('fin_model_billet_idmodelbillet_seq'::regclass) NOT NULL,
  4213. model_billet VARCHAR(60),
  4214. idbank BIGINT NOT NULL,
  4215. CONSTRAINT fin_model_billet_pk PRIMARY KEY(idmodelbillet),
  4216. CONSTRAINT fin_model_billet_fk1 FOREIGN KEY (idbank)
  4217. REFERENCES public.fin_bank(idbank)
  4218. ON DELETE NO ACTION
  4219. ON UPDATE NO ACTION
  4220. NOT DEFERRABLE
  4221. ) WITHOUT OIDS;
  4222.  
  4223. CREATE INDEX fin_model_billet_idx01 ON public.fin_model_billet
  4224. USING btree (idbank);
  4225.  
  4226. -- object recreation
  4227. ALTER TABLE public.par_access
  4228. DROP CONSTRAINT check01 RESTRICT;
  4229.  
  4230. ALTER TABLE public.par_access
  4231. ADD CONSTRAINT check01 CHECK ((valid)::text = ANY ((ARRAY['S'::character varying, 'N'::character varying])::text[]));
  4232.  
  4233. ALTER TABLE public.par_etiqueta
  4234. OWNER TO pgsql;
  4235.  
  4236. -- object recreation
  4237. ALTER TABLE public.par_message
  4238. DROP CONSTRAINT check01 RESTRICT;
  4239.  
  4240. ALTER TABLE public.par_message
  4241. ADD CONSTRAINT check01 CHECK ((is_read)::text = ANY ((ARRAY['N'::character varying, 'S'::character varying])::text[]));
  4242.  
  4243. -- object recreation
  4244. ALTER TABLE public.par_message
  4245. DROP CONSTRAINT check02 RESTRICT;
  4246.  
  4247. ALTER TABLE public.par_message
  4248. ADD CONSTRAINT check02 CHECK ((priority)::text = ANY ((ARRAY['L'::character varying, 'M'::character varying, 'H'::character varying])::text[]));
  4249.  
  4250. ALTER TABLE public.par_message
  4251. ADD COLUMN desc_type VARCHAR(20);
  4252.  
  4253. COMMENT ON COLUMN public.par_message.desc_type
  4254. IS 'Tipo de notificação do SNS';
  4255.  
  4256. ALTER TABLE public.par_message
  4257. ADD COLUMN to_idcustomer BIGINT;
  4258.  
  4259. ALTER TABLE public.par_message
  4260. ADD COLUMN idsns BIGINT;
  4261.  
  4262. ALTER TABLE public.par_message
  4263. ADD CONSTRAINT foreign_key05 FOREIGN KEY (to_idcustomer)
  4264. REFERENCES public.par_customer(idcustomer)
  4265. ON DELETE NO ACTION
  4266. ON UPDATE NO ACTION
  4267. NOT DEFERRABLE;
  4268.  
  4269. ALTER TABLE public.par_message
  4270. ADD CONSTRAINT foreign_key06 FOREIGN KEY (idsns)
  4271. REFERENCES public.par_sns(idsns)
  4272. ON DELETE NO ACTION
  4273. ON UPDATE NO ACTION
  4274. NOT DEFERRABLE;
  4275.  
  4276. CREATE TABLE public.par_sns (
  4277. idsns BIGINT DEFAULT nextval('par_sns_idsns_seq'::regclass) NOT NULL,
  4278. desc_token VARCHAR(400) NOT NULL,
  4279. iduser BIGINT NOT NULL,
  4280. desc_arn VARCHAR(500),
  4281. idsnsapplication BIGINT,
  4282. CONSTRAINT par_sns_pkey PRIMARY KEY(idsns),
  4283. CONSTRAINT foreign_key01 FOREIGN KEY (idsnsapplication)
  4284. REFERENCES public.par_sns_application(idsnsapplication)
  4285. ON DELETE NO ACTION
  4286. ON UPDATE NO ACTION
  4287. NOT DEFERRABLE,
  4288. CONSTRAINT foreign_key02 FOREIGN KEY (iduser)
  4289. REFERENCES public.par_user(iduser)
  4290. ON DELETE NO ACTION
  4291. ON UPDATE NO ACTION
  4292. NOT DEFERRABLE
  4293. ) WITHOUT OIDS;
  4294.  
  4295. CREATE TABLE public.par_sns_application (
  4296. idsnsapplication BIGINT DEFAULT nextval('par_sns_application_idsnsapplication_seq'::regclass) NOT NULL,
  4297. application VARCHAR(60) NOT NULL,
  4298. arn VARCHAR(400) NOT NULL,
  4299. CONSTRAINT par_sns_application_pk PRIMARY KEY(idsnsapplication),
  4300. CONSTRAINT par_sns_application_uk UNIQUE(arn)
  4301. ) WITHOUT OIDS;
  4302.  
  4303. DROP VIEW public.rba_profile_routes_vw;
  4304. ALTER TABLE public.rba_routes
  4305. ALTER COLUMN desc_route SET NOT NULL;
  4306. CREATE OR REPLACE VIEW public.rba_profile_routes_vw (
  4307. id,
  4308. idroute,
  4309. desc_route_name,
  4310. has_access)
  4311. AS
  4312. SELECT q.id, rba_routes.id AS idroute, rba_routes.desc_route_name, COALESCE(( SELECT true AS bool
  4313. FROM rba_profile_routes pf
  4314. WHERE pf.rbaprof_id = q.id AND pf.rbarout_id = rba_routes.id), false) AS has_access
  4315. FROM ( SELECT rba_profile.id,
  4316. CASE
  4317. WHEN rba_profile.parcust_id IS NOT NULL THEN 'CUS'::text
  4318. WHEN rba_profile.idseller IS NOT NULL THEN 'SEL'::text
  4319. WHEN rba_profile.idmonitoringcenter IS NOT NULL THEN 'MCE'::text
  4320. WHEN rba_profile.is_administrator THEN 'ADM'::text
  4321. ELSE NULL::text
  4322. END AS systype
  4323. FROM rba_profile) q
  4324. JOIN rba_routes ON rba_routes.indr_systype::text = q.systype
  4325. ORDER BY q.id, rba_routes.id;
  4326.  
  4327. CREATE UNIQUE INDEX rba_routes_all_uk ON public.rba_routes
  4328. USING btree (desc_route, indr_type, desc_route_name, indr_systype);
  4329.  
  4330. CREATE TABLE public.tbl_migration (
  4331. version VARCHAR(255) NOT NULL,
  4332. apply_time INTEGER,
  4333. CONSTRAINT tbl_migration_pkey PRIMARY KEY(version)
  4334. ) WITHOUT OIDS;
  4335.  
  4336. -- object recreation
  4337. DROP INDEX public.vlt_alert_idx2;
  4338.  
  4339. CREATE INDEX vlt_alert_idx2 ON public.vlt_alert
  4340. USING btree (idcustomer, read_date);
  4341.  
  4342. ALTER INDEX public.vlt_alert_idx2
  4343. OWNER TO pgc;
  4344.  
  4345. -- object recreation
  4346. ALTER TABLE public.vlt_alert_history
  4347. DROP CONSTRAINT vlt_alert_history_fk RESTRICT;
  4348.  
  4349. ALTER TABLE public.vlt_alert_history
  4350. ADD CONSTRAINT vlt_alert_history_fk FOREIGN KEY (idalert)
  4351. REFERENCES public.vlt_alert(idalert)
  4352. ON DELETE NO ACTION
  4353. ON UPDATE NO ACTION
  4354. NOT DEFERRABLE;
  4355.  
  4356. -- object recreation
  4357. ALTER TABLE public.vlt_command
  4358. DROP CONSTRAINT vlt_command_ck2 RESTRICT;
  4359.  
  4360. ALTER TABLE public.vlt_command
  4361. ADD CONSTRAINT vlt_command_ck2 CHECK ((status)::text = ANY ((ARRAY['I'::character varying, 'A'::character varying, 'E'::character varying, 'X'::character varying, 'O'::character varying, 'T'::character varying])::text[]));
  4362.  
  4363. ALTER TABLE public.vlt_console
  4364. OWNER TO pgsql;
  4365.  
  4366. ALTER TABLE public.vlt_console_update
  4367. OWNER TO pgsql;
  4368.  
  4369. ALTER TABLE public.vlt_country
  4370. ADD CONSTRAINT vlt_country_pkey
  4371. PRIMARY KEY (idcountry);
  4372.  
  4373. ALTER TABLE public.vlt_customer_history
  4374. ALTER COLUMN idcustomerhistory SET STATISTICS 0;
  4375.  
  4376. ALTER TABLE public.vlt_customer_history
  4377. ALTER COLUMN idcustomer SET STATISTICS 0;
  4378.  
  4379. ALTER TABLE public.vlt_customer_history
  4380. ALTER COLUMN idseller_newer SET STATISTICS 0;
  4381.  
  4382. DROP VIEW public.vlt_transaction_driver_vw;
  4383. DROP VIEW public.vlt_tpms_disparity_vw;
  4384. DROP VIEW public.vlt_seller_dc_vw;
  4385. DROP VIEW public.vlt_refuel_vw;
  4386. DROP VIEW public.vlt_port_status_vw;
  4387. DROP VIEW public.vlt_grouped_transactions_vw;
  4388. DROP VIEW public.vlt_device_vw_old;
  4389. DROP VIEW public.vlt_device_vw_ant;
  4390. DROP VIEW public.vlt_device_vw2;
  4391. DROP VIEW public.vlt_device_vw;
  4392. DROP VIEW public.vlt_device_search_vw;
  4393. DROP VIEW public.vlt_device_finger_vw;
  4394. DROP VIEW public.vlt_command_status_vw;
  4395. DROP VIEW public.sel_customer_list_vw;
  4396. DROP VIEW public.rpt_worked_hours_driver_vw;
  4397. DROP VIEW public.rpt_worked_hours_device_vw;
  4398. DROP VIEW public.rpt_speed_vw;
  4399. DROP VIEW public.rpt_route_vw;
  4400. DROP VIEW public.rep_route_vw;
  4401. DROP VIEW public.rep_online_offline_vw;
  4402. DROP VIEW public.par_message_vw;
  4403. DROP VIEW public.par_etiqueta_vw;
  4404. DROP VIEW public.mce_refuel_vw;
  4405. DROP VIEW public.mce_refuel_station_vw;
  4406. DROP VIEW public.mce_driver_vw;
  4407. DROP VIEW public.mce_device_vw;
  4408. DROP VIEW public.mce_customer_vw;
  4409. ALTER TABLE public.vlt_device
  4410. ALTER COLUMN iddevicemodel DROP DEFAULT;
  4411.  
  4412. ALTER TABLE public.vlt_device
  4413. ALTER COLUMN iddevicemodel DROP NOT NULL;
  4414. CREATE OR REPLACE VIEW public.mce_customer_vw (
  4415. iddevice,
  4416. idmonitoringcenter,
  4417. idcustomer,
  4418. customer,
  4419. email,
  4420. dthr_cadastro,
  4421. desc_address,
  4422. desc_complement,
  4423. numr_address,
  4424. desc_district,
  4425. desc_city,
  4426. desc_state,
  4427. desc_country,
  4428. desc_zip_address,
  4429. desc_phone,
  4430. desc_cellphone,
  4431. desc_cgc,
  4432. desc_ddd_cellphone,
  4433. desc_ddd_phone,
  4434. idseller,
  4435. customer_search,
  4436. rg,
  4437. active,
  4438. block_message)
  4439. AS
  4440. SELECT vlt_device.iddevice, vlt_device_mc.idmonitoringcenter, par_customer.idcustomer, par_customer.customer, par_customer.email, par_customer.dthr_cadastro, par_customer.desc_address, par_customer.desc_complement, par_customer.numr_address, par_customer.desc_district, par_customer.desc_city, par_customer.desc_state, par_customer.desc_country, par_customer.desc_zip_address, par_customer.desc_phone, par_customer.desc_cellphone, par_customer.desc_cgc, par_customer.desc_ddd_cellphone, par_customer.desc_ddd_phone, par_customer.idseller, par_customer.customer_search, par_customer.rg, par_customer.active, par_customer.block_message
  4441. FROM vlt_device
  4442. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  4443. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice;
  4444. CREATE OR REPLACE VIEW public.mce_device_vw (
  4445. iddevice,
  4446. code,
  4447. device_search,
  4448. description,
  4449. vehicle_code,
  4450. address,
  4451. speed,
  4452. connected,
  4453. command_date,
  4454. has_battery,
  4455. has_analog_ports,
  4456. has_digital_ports,
  4457. has_tpms,
  4458. has_fuel,
  4459. has_temperature,
  4460. idmonitoringcenter,
  4461. customer,
  4462. idcustomer,
  4463. driver,
  4464. active,
  4465. speed_limit,
  4466. renavam,
  4467. chassi,
  4468. mark_vehicle,
  4469. model_vehicle,
  4470. color_vehicle,
  4471. fuel_estimate)
  4472. AS
  4473. SELECT vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature, vlt_device_mc.idmonitoringcenter, par_customer.customer, par_customer.idcustomer, vlt_driver.driver, vlt_device.active, vlt_device.speed_limit, vlt_device.renavam, vlt_device.chassi, vlt_device.mark_vehicle, vlt_device.model_vehicle, vlt_device.color_vehicle, vlt_device.fuel_estimate
  4474. FROM vlt_device
  4475. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_device.last_driver
  4476. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_last_tran_dev_fnc(vlt_device.iddevice)
  4477. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  4478. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  4479. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  4480. WHERE vlt_device.active
  4481. ORDER BY vlt_device.vehicle_code, vlt_device.description;
  4482. CREATE OR REPLACE VIEW public.mce_driver_vw (
  4483. iddriver,
  4484. code,
  4485. driver,
  4486. last_date,
  4487. parcust_id,
  4488. password,
  4489. idmonitoringcenter,
  4490. idcustomer)
  4491. AS
  4492. SELECT vlt_driver.iddriver, vlt_driver.code, vlt_driver.driver, vlt_driver.last_date, vlt_driver.parcust_id, vlt_driver.password, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  4493. FROM vlt_driver
  4494. JOIN vlt_device ON vlt_device.idcustomer = vlt_driver.parcust_id
  4495. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  4496. GROUP BY vlt_driver.iddriver, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  4497. ORDER BY vlt_device_mc.idmonitoringcenter;
  4498. CREATE OR REPLACE VIEW public.mce_refuel_station_vw (
  4499. idrefuelstation,
  4500. code,
  4501. name,
  4502. idinterestpoint,
  4503. idcustomer,
  4504. idmonitoringcenter)
  4505. AS
  4506. SELECT vlt_refuel_station.idrefuelstation, vlt_refuel_station.code, vlt_refuel_station.name, vlt_refuel_station.idinterestpoint, vlt_refuel_station.idcustomer, vlt_device_mc.idmonitoringcenter
  4507. FROM vlt_refuel_station
  4508. JOIN vlt_device ON vlt_device.idcustomer = vlt_refuel_station.idcustomer
  4509. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  4510. GROUP BY vlt_refuel_station.idrefuelstation, vlt_device_mc.idmonitoringcenter
  4511. ORDER BY vlt_device_mc.idmonitoringcenter;
  4512. CREATE OR REPLACE VIEW public.mce_refuel_vw (
  4513. idrefuel,
  4514. idrefuelstation,
  4515. refuel_code,
  4516. refuel_date,
  4517. refuel_liters,
  4518. refuel_value,
  4519. idtransaction,
  4520. iddevice,
  4521. name,
  4522. vehicle_code,
  4523. per_liter,
  4524. idmonitoringcenter,
  4525. idcustomer)
  4526. AS
  4527. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value / vlt_refuel.refuel_liters AS per_liter, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  4528. FROM vlt_refuel
  4529. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  4530. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  4531. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  4532. ORDER BY vlt_device.vehicle_code;
  4533. CREATE OR REPLACE VIEW public.par_etiqueta_vw (
  4534. code,
  4535. password,
  4536. device_model,
  4537. processador,
  4538. model,
  4539. iddevice)
  4540. AS
  4541. SELECT vlt_device.code, vlt_gera_senha_device_fnc(vlt_device.code) AS password, vlt_device_model.description AS device_model, NULL::character varying AS processador, NULL::character varying AS model, vlt_device.iddevice
  4542. FROM vlt_device
  4543. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel;
  4544. CREATE OR REPLACE VIEW public.par_message_vw (
  4545. idmessage,
  4546. message_date,
  4547. iduser,
  4548. name,
  4549. title,
  4550. message,
  4551. read_date,
  4552. is_read,
  4553. priority,
  4554. from_iddevice,
  4555. deviceorigin,
  4556. to_iddevice,
  4557. devicereceiver,
  4558. from_iduser,
  4559. messageorigin,
  4560. messagereceiver)
  4561. AS
  4562. SELECT par_message.idmessage, par_message.message_date, par_message.iduser, touser.name, par_message.title, par_message.message, par_message.read_date, par_message.is_read, par_message.priority, par_message.from_iddevice, fromdevice.vehicle_code AS deviceorigin, par_message.to_iddevice, todevice.vehicle_code AS devicereceiver, par_message.from_iduser,
  4563. CASE
  4564. WHEN par_message.origin::text = 'S'::text THEN 'Sistema'::character varying
  4565. WHEN par_message.origin::text = 'U'::text THEN fromuser.name
  4566. WHEN par_message.origin::text = 'D'::text THEN fromdevice.vehicle_code
  4567. ELSE NULL::character varying
  4568. END AS messageorigin,
  4569. CASE
  4570. WHEN par_message.iduser IS NOT NULL THEN touser.name
  4571. WHEN par_message.to_iddevice IS NOT NULL THEN todevice.vehicle_code
  4572. ELSE NULL::character varying
  4573. END AS messagereceiver
  4574. FROM par_message
  4575. LEFT JOIN par_user fromuser ON fromuser.iduser = par_message.from_iduser
  4576. LEFT JOIN par_user touser ON touser.iduser = par_message.iduser
  4577. LEFT JOIN vlt_device fromdevice ON fromdevice.iddevice = par_message.from_iddevice
  4578. LEFT JOIN vlt_device todevice ON todevice.iddevice = par_message.to_iddevice;
  4579. CREATE OR REPLACE VIEW public.rep_online_offline_vw (
  4580. total,
  4581. online,
  4582. offline,
  4583. vehicle,
  4584. perc_online,
  4585. perc_offline,
  4586. iddevice)
  4587. AS
  4588. SELECT o.online + of.offline AS total, o.online, of.offline, (vlt_device.vehicle_code::text || ' | '::text) || vlt_device.description::text AS vehicle, o.online * 100 / (o.online + of.offline) AS perc_online, of.offline * 100 / (o.online + of.offline) AS perc_offline, vlt_device.iddevice
  4589. FROM vlt_device
  4590. JOIN ( SELECT vlt_transaction.iddevice, count(vlt_transaction.online) AS online
  4591. FROM vlt_transaction
  4592. WHERE vlt_transaction.online = 'O'::bpchar AND vlt_transaction.online <> 'N'::bpchar
  4593. GROUP BY vlt_transaction.iddevice, vlt_transaction.online) o ON o.iddevice = vlt_device.iddevice
  4594. JOIN ( SELECT vlt_transaction.iddevice, count(vlt_transaction.online) AS offline
  4595. FROM vlt_transaction
  4596. WHERE vlt_transaction.online = 'M'::bpchar AND vlt_transaction.online <> 'N'::bpchar
  4597. GROUP BY vlt_transaction.iddevice, vlt_transaction.online) of ON of.iddevice = vlt_device.iddevice;
  4598. CREATE OR REPLACE VIEW public.rep_route_vw (
  4599. command_date,
  4600. address,
  4601. vehicle,
  4602. date,
  4603. latitude,
  4604. longitude,
  4605. iddevice)
  4606. AS
  4607. SELECT min(vlt_transaction.command_date) AS command_date, vlt_transaction.address, (vlt_device.vehicle_code::text || ' - '::text) || vlt_device.description::text AS vehicle, vlt_transaction.command_date AS date, vlt_transaction.latitude, vlt_transaction.longitude, vlt_device.iddevice
  4608. FROM vlt_transaction
  4609. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  4610. GROUP BY vlt_transaction.address, vlt_device.vehicle_code, vlt_device.description, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.command_date, vlt_device.iddevice
  4611. ORDER BY min(vlt_transaction.command_date);
  4612. CREATE OR REPLACE VIEW public.rpt_route_vw (
  4613. idtransaction,
  4614. command_date,
  4615. address,
  4616. vehicle,
  4617. date,
  4618. latitude,
  4619. longitude,
  4620. iddevice)
  4621. AS
  4622. SELECT tt.idtransaction_group AS idtransaction, tt.command_date, tt.address, dev.vehicle_code AS vehicle, tt.command_date AS date, tt.latitude, tt.longitude, dev.iddevice
  4623. FROM vlt_transaction tt
  4624. JOIN vlt_device dev ON dev.iddevice = tt.iddevice
  4625. WHERE tt.valid AND tt.idtransaction_group IS NOT NULL AND tt.idtransaction_group = tt.idtransaction
  4626. ORDER BY tt.command_date;
  4627. CREATE OR REPLACE VIEW public.rpt_speed_vw (
  4628. idtransaction,
  4629. vehicle,
  4630. date,
  4631. speed,
  4632. address,
  4633. iddevice,
  4634. speed_limit,
  4635. idcustomer,
  4636. latitude,
  4637. longitude,
  4638. command_date)
  4639. AS
  4640. SELECT vlt_transaction.idtransaction, vlt_device.vehicle_code::text AS vehicle, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi'::text) AS date, vlt_transaction.speed, vlt_transaction.address, vlt_device.iddevice, vlt_device.speed_limit, vlt_device.idcustomer, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.command_date
  4641. FROM vlt_transaction
  4642. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  4643. WHERE vlt_transaction.valid
  4644. ORDER BY vlt_transaction.command_date;
  4645. CREATE OR REPLACE VIEW public.rpt_worked_hours_device_vw (
  4646. vehicle,
  4647. driver,
  4648. data_trabalhada,
  4649. inicio,
  4650. termino,
  4651. horas,
  4652. iddevice)
  4653. AS
  4654. SELECT vlt_device.vehicle_code AS vehicle, ( SELECT vlt_driver.driver
  4655. FROM vlt_driver
  4656. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_driver_record.iddevice
  4657. FROM vlt_driver_record
  4658. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  4659. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  4660. JOIN vlt_device ON vlt_device.iddevice = vlt_driver_record.iddevice
  4661. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_device.vehicle_code, vlt_driver_record.idtransaction_start
  4662. ORDER BY tstart.command_date, tend.command_date;
  4663. CREATE OR REPLACE VIEW public.rpt_worked_hours_driver_vw (
  4664. vehicle,
  4665. driver,
  4666. data_trabalhada,
  4667. inicio,
  4668. termino,
  4669. horas,
  4670. iddriver)
  4671. AS
  4672. SELECT ( SELECT vlt_device.vehicle_code
  4673. FROM vlt_device
  4674. WHERE vlt_device.iddevice = vlt_driver_record.iddevice) AS vehicle, ( SELECT vlt_driver.driver
  4675. FROM vlt_driver
  4676. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start) AS iddriver
  4677. FROM vlt_driver_record
  4678. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  4679. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  4680. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_driver_record.idtransaction_start
  4681. ORDER BY tstart.command_date, tend.command_date;
  4682. CREATE OR REPLACE VIEW public.sel_customer_list_vw (
  4683. idcustomer,
  4684. customer,
  4685. desc_phone,
  4686. desc_cellphone,
  4687. customer_search,
  4688. idseller,
  4689. quantidade)
  4690. AS
  4691. SELECT par_customer.idcustomer, par_customer.customer, par_customer.desc_phone, par_customer.desc_cellphone, par_customer.customer_search, par_customer.idseller, ( SELECT count(*) AS count
  4692. FROM vlt_device
  4693. WHERE vlt_device.idcustomer = par_customer.idcustomer) AS quantidade
  4694. FROM par_customer;
  4695. CREATE OR REPLACE VIEW public.vlt_command_status_vw (
  4696. idmodelcommand,
  4697. description,
  4698. icon,
  4699. command_text,
  4700. iddevicemodel,
  4701. btnclass,
  4702. iddevice,
  4703. has_parameter,
  4704. parameter,
  4705. access_level,
  4706. message,
  4707. command_date,
  4708. buttoncolor,
  4709. blocked,
  4710. loading,
  4711. sms)
  4712. AS
  4713. SELECT vlt_model_command.idmodelcommand, vlt_model_command.description, vlt_model_command.icon, vlt_model_command.command_text, vlt_model_command.iddevicemodel, ( SELECT
  4714. CASE
  4715. WHEN vlt_command.status::text = 'O'::text THEN 'btn-success'::text
  4716. WHEN vlt_command.status::text = 'X'::text THEN 'btn-danger'::text
  4717. WHEN vlt_command.status::text = 'A'::text THEN 'btn-info'::text
  4718. WHEN vlt_command.status::text = 'T'::text THEN 'btn-danger'::text
  4719. ELSE NULL::text
  4720. END AS "case"
  4721. FROM vlt_command
  4722. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  4723. FROM vlt_command
  4724. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))) AS btnclass, vlt_device.iddevice, vlt_model_command.has_parameter, vlt_model_command.parameter, vlt_model_command.access_level, ( SELECT vlt_command.message
  4725. FROM vlt_command
  4726. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  4727. FROM vlt_command
  4728. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS message, ( SELECT vlt_command.command_date
  4729. FROM vlt_command
  4730. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  4731. FROM vlt_command
  4732. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS command_date, COALESCE(( SELECT
  4733. CASE
  4734. WHEN vlt_command.status::text = 'O'::text THEN '#86b558'::text
  4735. WHEN vlt_command.status::text = 'X'::text THEN '#d3413b'::text
  4736. WHEN vlt_command.status::text = 'A'::text THEN '#68adde'::text
  4737. WHEN vlt_command.status::text = 'T'::text THEN '#d3413b'::text
  4738. ELSE '#68adde'::text
  4739. END AS "case"
  4740. FROM vlt_command
  4741. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  4742. FROM vlt_command
  4743. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), '#68adde'::text) AS buttoncolor,
  4744. CASE
  4745. WHEN (( SELECT count(*) AS count
  4746. FROM vlt_command
  4747. WHERE vlt_command.iddevice = vlt_device.iddevice AND (vlt_command.status::text = ANY (ARRAY['A'::text, 'E'::text])))) > 0 THEN true
  4748. ELSE false
  4749. END AS blocked, COALESCE(( SELECT
  4750. CASE
  4751. WHEN vlt_command.status::text = 'E'::text THEN true
  4752. WHEN vlt_command.status::text = 'A'::text THEN true
  4753. ELSE false
  4754. END AS "case"
  4755. FROM vlt_command
  4756. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  4757. FROM vlt_command
  4758. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), false) AS loading, vlt_model_command.sms
  4759. FROM vlt_model_command
  4760. JOIN vlt_device ON vlt_device.iddevicemodel = vlt_model_command.iddevicemodel
  4761. LEFT JOIN vlt_model_command_param ON vlt_model_command_param.idmodelcommand = vlt_model_command.idmodelcommand
  4762. GROUP BY vlt_model_command.idmodelcommand, vlt_device.iddevice
  4763. ORDER BY vlt_model_command.idmodelcommand;
  4764. CREATE OR REPLACE VIEW public.vlt_device_finger_vw (
  4765. iddevicefinger,
  4766. iddevice,
  4767. vehicle_code,
  4768. iddriver,
  4769. driver,
  4770. idcustomer)
  4771. AS
  4772. SELECT def.iddevicefinger, dev.iddevice, (COALESCE(dev.vehicle_code, ''::character varying)::text || ' '::text) || COALESCE(dev.description, ''::character varying)::text AS vehicle_code, drv.iddriver, drv.driver, dev.idcustomer
  4773. FROM vlt_device_finger def, vlt_device dev, vlt_driver_finger drf, vlt_driver drv
  4774. WHERE def.iddevice = dev.iddevice AND drf.iddriverfinger = def.iddriverfinger AND drf.iddriver = drv.iddriver
  4775. ORDER BY dev.vehicle_code, drv.code;
  4776. CREATE OR REPLACE VIEW public.vlt_device_search_vw (
  4777. iddevice,
  4778. vehicle_code,
  4779. device_search,
  4780. description,
  4781. tag,
  4782. idcustomer)
  4783. AS
  4784. SELECT vlt_device.iddevice, vlt_device.vehicle_code, vlt_device.device_search, vlt_device.description, vlt_device.tag, vlt_device.idcustomer
  4785. FROM vlt_device;
  4786. CREATE OR REPLACE VIEW public.vlt_device_vw (
  4787. iddevice,
  4788. description,
  4789. latitude,
  4790. longitude,
  4791. vehicle_code,
  4792. idcustomer,
  4793. code,
  4794. device_search,
  4795. has_battery,
  4796. has_analog_ports,
  4797. has_digital_ports,
  4798. has_tpms,
  4799. has_fuel,
  4800. has_temperature,
  4801. connected,
  4802. is_connected,
  4803. speed,
  4804. command_date,
  4805. start_date,
  4806. driver,
  4807. address,
  4808. idtransaction,
  4809. online,
  4810. record_type,
  4811. has_alert,
  4812. active,
  4813. odometer)
  4814. AS
  4815. SELECT q.iddevice, q.description, q.latitude, q.longitude, q.vehicle_code, q.idcustomer, q.code, q.device_search, q.has_battery, q.has_analog_ports, q.has_digital_ports, q.has_tpms, q.has_fuel, q.has_temperature, q.connected, q.is_connected, q.speed, q.command_date, q.start_date, q.driver, q.address, q.idtransaction, q.online, q.record_type, q.has_alert, q.active, q.odometer
  4816. FROM ( SELECT dev.iddevice, dev.description, tt.latitude, tt.longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  4817. CASE
  4818. WHEN tt.connected THEN 'Sim'::text
  4819. ELSE 'Não'::text
  4820. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, ( SELECT drv.driver
  4821. FROM vlt_driver drv
  4822. WHERE drv.iddriver = tt.iddriver) AS driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  4823. FROM ( SELECT vlt_device.iddevice, vlt_last_invalid_tran_dev_fnc(vlt_device.iddevice) AS idtransaction, vlt_device.idcustomer
  4824. FROM vlt_device) tbl
  4825. JOIN vlt_transaction tt ON tt.idtransaction = tbl.idtransaction
  4826. JOIN vlt_device dev ON dev.iddevice = tbl.iddevice
  4827. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  4828. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype) q;
  4829. CREATE OR REPLACE VIEW public.vlt_device_vw2 (
  4830. idcustomer,
  4831. iddevice,
  4832. code,
  4833. device_search,
  4834. description,
  4835. vehicle_code,
  4836. address,
  4837. speed,
  4838. connected,
  4839. command_date,
  4840. has_battery,
  4841. has_analog_ports,
  4842. has_digital_ports,
  4843. has_tpms,
  4844. has_fuel,
  4845. has_temperature)
  4846. AS
  4847. SELECT vlt_device.idcustomer, vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  4848. FROM vlt_device
  4849. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_device.last_transaction
  4850. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel;
  4851. CREATE OR REPLACE VIEW public.vlt_device_vw_ant (
  4852. iddevice,
  4853. description,
  4854. latitude,
  4855. longitude,
  4856. vehicle_code,
  4857. idcustomer,
  4858. code,
  4859. device_search,
  4860. has_battery,
  4861. has_analog_ports,
  4862. has_digital_ports,
  4863. has_tpms,
  4864. has_fuel,
  4865. has_temperature,
  4866. connected,
  4867. is_connected,
  4868. speed,
  4869. command_date,
  4870. start_date,
  4871. driver,
  4872. address,
  4873. idtransaction,
  4874. online,
  4875. record_type,
  4876. has_alert,
  4877. active,
  4878. odometer)
  4879. AS
  4880. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  4881. CASE
  4882. WHEN tt.connected THEN 'Sim'::text
  4883. ELSE 'Não'::text
  4884. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  4885. FROM vlt_device dev
  4886. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  4887. FROM vlt_transaction
  4888. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  4889. ORDER BY vlt_transaction.idtransaction DESC
  4890. LIMIT 1))
  4891. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  4892. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  4893. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  4894. WHERE dev.active;
  4895. CREATE OR REPLACE VIEW public.vlt_device_vw_old (
  4896. iddevice,
  4897. description,
  4898. latitude,
  4899. longitude,
  4900. vehicle_code,
  4901. idcustomer,
  4902. code,
  4903. device_search,
  4904. has_battery,
  4905. has_analog_ports,
  4906. has_digital_ports,
  4907. has_tpms,
  4908. has_fuel,
  4909. has_temperature,
  4910. connected,
  4911. is_connected,
  4912. speed,
  4913. command_date,
  4914. start_date,
  4915. driver,
  4916. address,
  4917. idtransaction,
  4918. online,
  4919. record_type,
  4920. has_alert,
  4921. active,
  4922. odometer)
  4923. AS
  4924. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  4925. CASE
  4926. WHEN tt.connected THEN 'Sim'::text
  4927. ELSE 'Não'::text
  4928. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  4929. FROM vlt_device dev
  4930. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  4931. FROM vlt_transaction
  4932. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  4933. ORDER BY vlt_transaction.idtransaction DESC
  4934. LIMIT 1))
  4935. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  4936. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  4937. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  4938. WHERE dev.active;
  4939. CREATE OR REPLACE VIEW public.vlt_grouped_transactions_vw (
  4940. address,
  4941. connected,
  4942. driver,
  4943. description,
  4944. hour,
  4945. iddevice,
  4946. idtransaction,
  4947. idtransaction_group,
  4948. is_connected,
  4949. latitude,
  4950. longitude,
  4951. online,
  4952. speed,
  4953. start_date,
  4954. vehicle_code,
  4955. has_battery,
  4956. has_analog_ports,
  4957. has_digital_ports,
  4958. has_tpms,
  4959. has_fuel,
  4960. has_temperature)
  4961. AS
  4962. SELECT vlt_transaction.address,
  4963. CASE
  4964. WHEN vlt_transaction.connected THEN 'Sim'::text
  4965. ELSE 'Não'::text
  4966. END AS connected, vlt_driver.driver, vlt_device.description, vlt_transaction.time_dif AS hour, vlt_transaction.iddevice, vlt_transaction.idtransaction, vlt_transaction.idtransaction_group, vlt_transaction.connected AS is_connected, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.online, vlt_transaction.speed, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi:ss'::text) AS start_date, vlt_device.vehicle_code, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  4967. FROM vlt_transaction
  4968. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  4969. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_transaction.iddriver
  4970. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  4971. WHERE vlt_transaction.valid
  4972. ORDER BY vlt_transaction.command_date;
  4973. CREATE OR REPLACE VIEW public.vlt_port_status_vw (
  4974. description,
  4975. value,
  4976. type,
  4977. idtransaction_filter,
  4978. output)
  4979. AS
  4980. SELECT vlt_port.description, vlt_port_status.value,
  4981. CASE
  4982. WHEN vlt_record_type.code::text = '6'::text THEN 'D'::text
  4983. ELSE 'A'::text
  4984. END AS type, vlt_transaction_last.idtransaction AS idtransaction_filter, vlt_port.output
  4985. FROM vlt_transaction_last
  4986. JOIN vlt_record_type ON vlt_record_type.idrecordtype = vlt_transaction_last.idrecordtype AND (vlt_record_type.code::text = ANY (ARRAY['6'::text, '7'::text]))
  4987. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_transaction_last.idtransaction_last
  4988. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  4989. JOIN vlt_port ON vlt_port.iddevicemodel = vlt_device.iddevicemodel AND vlt_port.fuel = false
  4990. JOIN vlt_port_status ON vlt_port_status.idport = vlt_port.idport AND vlt_port_status.idtransaction = vlt_transaction_last.idtransaction_last;
  4991. CREATE OR REPLACE VIEW public.vlt_refuel_vw (
  4992. idrefuel,
  4993. idrefuelstation,
  4994. refuel_code,
  4995. refuel_date,
  4996. refuel_liters,
  4997. refuel_value,
  4998. idtransaction,
  4999. iddevice,
  5000. name,
  5001. vehicle_code,
  5002. per_liter,
  5003. idcustomer)
  5004. AS
  5005. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value /
  5006. CASE
  5007. WHEN vlt_refuel.refuel_liters = 0::numeric THEN 1::numeric
  5008. ELSE vlt_refuel.refuel_liters
  5009. END AS per_liter, vlt_device.idcustomer
  5010. FROM vlt_refuel
  5011. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  5012. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  5013. ORDER BY vlt_device.vehicle_code;
  5014. CREATE OR REPLACE VIEW public.vlt_seller_dc_vw (
  5015. iddevice,
  5016. idseller,
  5017. vehicle_code,
  5018. device_search,
  5019. vehicle,
  5020. command_date,
  5021. record_type,
  5022. active,
  5023. code)
  5024. AS
  5025. SELECT q.iddevice, q.idseller, q.vehicle_code, q.device_search, q.vehicle, tt.command_date, rt.description AS record_type, q.active, q.code
  5026. FROM ( SELECT vlt_device.iddevice, par_customer.idseller, vlt_device.vehicle_code, vlt_device.device_search, vlt_device.description AS vehicle, vlt_device.active, vlt_device.code, vlt_last_tran_dev_fnc(vlt_device.iddevice) AS idtransaction
  5027. FROM vlt_device, par_customer
  5028. WHERE par_customer.idseller IS NOT NULL AND par_customer.idcustomer = vlt_device.idcustomer) q, vlt_transaction tt, vlt_record_type rt
  5029. WHERE tt.idtransaction = q.idtransaction AND rt.idrecordtype = tt.idrecordtype;
  5030. CREATE OR REPLACE VIEW public.vlt_tpms_disparity_vw (
  5031. vehicle_code,
  5032. description,
  5033. tpms_sequence,
  5034. temperature,
  5035. valr_min_temperature,
  5036. valr_max_temperature,
  5037. pressure,
  5038. valr_min_preassure,
  5039. valr_max_preassure,
  5040. idcustomer,
  5041. transaction_date)
  5042. AS
  5043. SELECT vlt_device.vehicle_code, vlt_device.description, vlt_tpms.tpms_sequence, vlt_tpms_value.temperature, vlt_tpms_model.valr_min_temperature, vlt_tpms_model.valr_max_temperature, vlt_tpms_value.pressure, vlt_tpms_model.valr_min_preassure, vlt_tpms_model.valr_max_preassure, vlt_device.idcustomer, to_char(vlt_transaction.transaction_date, 'dd/mm/yyyy hh24:mi'::text) AS transaction_date
  5044. FROM vlt_tpms
  5045. JOIN vlt_device ON vlt_device.iddevice = vlt_tpms.iddevice
  5046. JOIN vlt_tpms_value ON vlt_tpms_value.idtpmsvalue = vlt_tpms.idtpmsvalue_last
  5047. JOIN vlt_tpms_model ON vlt_tpms_model.id = vlt_device.idtpmsmodel AND (vlt_tpms_model.valr_min_temperature > vlt_tpms_value.temperature OR vlt_tpms_model.valr_max_temperature < vlt_tpms_value.temperature OR vlt_tpms_model.valr_min_preassure > vlt_tpms_value.pressure OR vlt_tpms_model.valr_max_preassure < vlt_tpms_value.pressure)
  5048. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_tpms_value.idtransaction
  5049. ORDER BY vlt_device.vehicle_code, vlt_tpms.tpms_sequence;
  5050. CREATE OR REPLACE VIEW public.vlt_transaction_driver_vw (
  5051. idtransactiondriver,
  5052. iddriver,
  5053. transaction_date,
  5054. iddevice,
  5055. idcustomer,
  5056. driver,
  5057. device)
  5058. AS
  5059. SELECT td.idtransactiondriver, td.iddriver, td.transaction_date, td.iddevice, dev.idcustomer, d.driver, dev.vehicle_code AS device
  5060. FROM vlt_device dev
  5061. JOIN vlt_transaction_driver td ON td.iddevice = dev.iddevice
  5062. JOIN vlt_driver d ON d.iddriver = td.iddriver
  5063. WHERE dev.active
  5064. ORDER BY td.transaction_date;
  5065.  
  5066. DROP VIEW public.vlt_transaction_driver_vw;
  5067. DROP VIEW public.vlt_tpms_disparity_vw;
  5068. DROP VIEW public.vlt_seller_dc_vw;
  5069. DROP VIEW public.vlt_refuel_vw;
  5070. DROP VIEW public.vlt_port_status_vw;
  5071. DROP VIEW public.vlt_grouped_transactions_vw;
  5072. DROP VIEW public.vlt_device_vw_old;
  5073. DROP VIEW public.vlt_device_vw_ant;
  5074. DROP VIEW public.vlt_device_vw2;
  5075. DROP VIEW public.vlt_device_vw;
  5076. DROP VIEW public.vlt_device_search_vw;
  5077. DROP VIEW public.vlt_device_finger_vw;
  5078. DROP VIEW public.vlt_command_status_vw;
  5079. DROP VIEW public.sel_customer_list_vw;
  5080. DROP VIEW public.rpt_worked_hours_driver_vw;
  5081. DROP VIEW public.rpt_worked_hours_device_vw;
  5082. DROP VIEW public.rpt_speed_vw;
  5083. DROP VIEW public.rpt_route_vw;
  5084. DROP VIEW public.rep_route_vw;
  5085. DROP VIEW public.rep_online_offline_vw;
  5086. DROP VIEW public.par_message_vw;
  5087. DROP VIEW public.par_etiqueta_vw;
  5088. DROP VIEW public.mce_refuel_vw;
  5089. DROP VIEW public.mce_refuel_station_vw;
  5090. DROP VIEW public.mce_driver_vw;
  5091. DROP VIEW public.mce_device_vw;
  5092. DROP VIEW public.mce_customer_vw;
  5093. ALTER TABLE public.vlt_device
  5094. ALTER COLUMN limit_group_off SET DEFAULT 0;
  5095. CREATE OR REPLACE VIEW public.mce_customer_vw (
  5096. iddevice,
  5097. idmonitoringcenter,
  5098. idcustomer,
  5099. customer,
  5100. email,
  5101. dthr_cadastro,
  5102. desc_address,
  5103. desc_complement,
  5104. numr_address,
  5105. desc_district,
  5106. desc_city,
  5107. desc_state,
  5108. desc_country,
  5109. desc_zip_address,
  5110. desc_phone,
  5111. desc_cellphone,
  5112. desc_cgc,
  5113. desc_ddd_cellphone,
  5114. desc_ddd_phone,
  5115. idseller,
  5116. customer_search,
  5117. rg,
  5118. active,
  5119. block_message)
  5120. AS
  5121. SELECT vlt_device.iddevice, vlt_device_mc.idmonitoringcenter, par_customer.idcustomer, par_customer.customer, par_customer.email, par_customer.dthr_cadastro, par_customer.desc_address, par_customer.desc_complement, par_customer.numr_address, par_customer.desc_district, par_customer.desc_city, par_customer.desc_state, par_customer.desc_country, par_customer.desc_zip_address, par_customer.desc_phone, par_customer.desc_cellphone, par_customer.desc_cgc, par_customer.desc_ddd_cellphone, par_customer.desc_ddd_phone, par_customer.idseller, par_customer.customer_search, par_customer.rg, par_customer.active, par_customer.block_message
  5122. FROM vlt_device
  5123. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  5124. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice;
  5125. CREATE OR REPLACE VIEW public.mce_device_vw (
  5126. iddevice,
  5127. code,
  5128. device_search,
  5129. description,
  5130. vehicle_code,
  5131. address,
  5132. speed,
  5133. connected,
  5134. command_date,
  5135. has_battery,
  5136. has_analog_ports,
  5137. has_digital_ports,
  5138. has_tpms,
  5139. has_fuel,
  5140. has_temperature,
  5141. idmonitoringcenter,
  5142. customer,
  5143. idcustomer,
  5144. driver,
  5145. active,
  5146. speed_limit,
  5147. renavam,
  5148. chassi,
  5149. mark_vehicle,
  5150. model_vehicle,
  5151. color_vehicle,
  5152. fuel_estimate)
  5153. AS
  5154. SELECT vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature, vlt_device_mc.idmonitoringcenter, par_customer.customer, par_customer.idcustomer, vlt_driver.driver, vlt_device.active, vlt_device.speed_limit, vlt_device.renavam, vlt_device.chassi, vlt_device.mark_vehicle, vlt_device.model_vehicle, vlt_device.color_vehicle, vlt_device.fuel_estimate
  5155. FROM vlt_device
  5156. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_device.last_driver
  5157. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_last_tran_dev_fnc(vlt_device.iddevice)
  5158. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  5159. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5160. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  5161. WHERE vlt_device.active
  5162. ORDER BY vlt_device.vehicle_code, vlt_device.description;
  5163. CREATE OR REPLACE VIEW public.mce_driver_vw (
  5164. iddriver,
  5165. code,
  5166. driver,
  5167. last_date,
  5168. parcust_id,
  5169. password,
  5170. idmonitoringcenter,
  5171. idcustomer)
  5172. AS
  5173. SELECT vlt_driver.iddriver, vlt_driver.code, vlt_driver.driver, vlt_driver.last_date, vlt_driver.parcust_id, vlt_driver.password, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  5174. FROM vlt_driver
  5175. JOIN vlt_device ON vlt_device.idcustomer = vlt_driver.parcust_id
  5176. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5177. GROUP BY vlt_driver.iddriver, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  5178. ORDER BY vlt_device_mc.idmonitoringcenter;
  5179. CREATE OR REPLACE VIEW public.mce_refuel_station_vw (
  5180. idrefuelstation,
  5181. code,
  5182. name,
  5183. idinterestpoint,
  5184. idcustomer,
  5185. idmonitoringcenter)
  5186. AS
  5187. SELECT vlt_refuel_station.idrefuelstation, vlt_refuel_station.code, vlt_refuel_station.name, vlt_refuel_station.idinterestpoint, vlt_refuel_station.idcustomer, vlt_device_mc.idmonitoringcenter
  5188. FROM vlt_refuel_station
  5189. JOIN vlt_device ON vlt_device.idcustomer = vlt_refuel_station.idcustomer
  5190. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5191. GROUP BY vlt_refuel_station.idrefuelstation, vlt_device_mc.idmonitoringcenter
  5192. ORDER BY vlt_device_mc.idmonitoringcenter;
  5193. CREATE OR REPLACE VIEW public.mce_refuel_vw (
  5194. idrefuel,
  5195. idrefuelstation,
  5196. refuel_code,
  5197. refuel_date,
  5198. refuel_liters,
  5199. refuel_value,
  5200. idtransaction,
  5201. iddevice,
  5202. name,
  5203. vehicle_code,
  5204. per_liter,
  5205. idmonitoringcenter,
  5206. idcustomer)
  5207. AS
  5208. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value / vlt_refuel.refuel_liters AS per_liter, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  5209. FROM vlt_refuel
  5210. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  5211. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  5212. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5213. ORDER BY vlt_device.vehicle_code;
  5214. CREATE OR REPLACE VIEW public.par_etiqueta_vw (
  5215. code,
  5216. password,
  5217. device_model,
  5218. processador,
  5219. model,
  5220. iddevice)
  5221. AS
  5222. SELECT vlt_device.code, vlt_gera_senha_device_fnc(vlt_device.code) AS password, vlt_device_model.description AS device_model, NULL::character varying AS processador, NULL::character varying AS model, vlt_device.iddevice
  5223. FROM vlt_device
  5224. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel;
  5225. CREATE OR REPLACE VIEW public.par_message_vw (
  5226. idmessage,
  5227. message_date,
  5228. iduser,
  5229. name,
  5230. title,
  5231. message,
  5232. read_date,
  5233. is_read,
  5234. priority,
  5235. from_iddevice,
  5236. deviceorigin,
  5237. to_iddevice,
  5238. devicereceiver,
  5239. from_iduser,
  5240. messageorigin,
  5241. messagereceiver)
  5242. AS
  5243. SELECT par_message.idmessage, par_message.message_date, par_message.iduser, touser.name, par_message.title, par_message.message, par_message.read_date, par_message.is_read, par_message.priority, par_message.from_iddevice, fromdevice.vehicle_code AS deviceorigin, par_message.to_iddevice, todevice.vehicle_code AS devicereceiver, par_message.from_iduser,
  5244. CASE
  5245. WHEN par_message.origin::text = 'S'::text THEN 'Sistema'::character varying
  5246. WHEN par_message.origin::text = 'U'::text THEN fromuser.name
  5247. WHEN par_message.origin::text = 'D'::text THEN fromdevice.vehicle_code
  5248. ELSE NULL::character varying
  5249. END AS messageorigin,
  5250. CASE
  5251. WHEN par_message.iduser IS NOT NULL THEN touser.name
  5252. WHEN par_message.to_iddevice IS NOT NULL THEN todevice.vehicle_code
  5253. ELSE NULL::character varying
  5254. END AS messagereceiver
  5255. FROM par_message
  5256. LEFT JOIN par_user fromuser ON fromuser.iduser = par_message.from_iduser
  5257. LEFT JOIN par_user touser ON touser.iduser = par_message.iduser
  5258. LEFT JOIN vlt_device fromdevice ON fromdevice.iddevice = par_message.from_iddevice
  5259. LEFT JOIN vlt_device todevice ON todevice.iddevice = par_message.to_iddevice;
  5260. CREATE OR REPLACE VIEW public.rep_online_offline_vw (
  5261. total,
  5262. online,
  5263. offline,
  5264. vehicle,
  5265. perc_online,
  5266. perc_offline,
  5267. iddevice)
  5268. AS
  5269. SELECT o.online + of.offline AS total, o.online, of.offline, (vlt_device.vehicle_code::text || ' | '::text) || vlt_device.description::text AS vehicle, o.online * 100 / (o.online + of.offline) AS perc_online, of.offline * 100 / (o.online + of.offline) AS perc_offline, vlt_device.iddevice
  5270. FROM vlt_device
  5271. JOIN ( SELECT vlt_transaction.iddevice, count(vlt_transaction.online) AS online
  5272. FROM vlt_transaction
  5273. WHERE vlt_transaction.online = 'O'::bpchar AND vlt_transaction.online <> 'N'::bpchar
  5274. GROUP BY vlt_transaction.iddevice, vlt_transaction.online) o ON o.iddevice = vlt_device.iddevice
  5275. JOIN ( SELECT vlt_transaction.iddevice, count(vlt_transaction.online) AS offline
  5276. FROM vlt_transaction
  5277. WHERE vlt_transaction.online = 'M'::bpchar AND vlt_transaction.online <> 'N'::bpchar
  5278. GROUP BY vlt_transaction.iddevice, vlt_transaction.online) of ON of.iddevice = vlt_device.iddevice;
  5279. CREATE OR REPLACE VIEW public.rep_route_vw (
  5280. command_date,
  5281. address,
  5282. vehicle,
  5283. date,
  5284. latitude,
  5285. longitude,
  5286. iddevice)
  5287. AS
  5288. SELECT min(vlt_transaction.command_date) AS command_date, vlt_transaction.address, (vlt_device.vehicle_code::text || ' - '::text) || vlt_device.description::text AS vehicle, vlt_transaction.command_date AS date, vlt_transaction.latitude, vlt_transaction.longitude, vlt_device.iddevice
  5289. FROM vlt_transaction
  5290. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  5291. GROUP BY vlt_transaction.address, vlt_device.vehicle_code, vlt_device.description, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.command_date, vlt_device.iddevice
  5292. ORDER BY min(vlt_transaction.command_date);
  5293. CREATE OR REPLACE VIEW public.rpt_route_vw (
  5294. idtransaction,
  5295. command_date,
  5296. address,
  5297. vehicle,
  5298. date,
  5299. latitude,
  5300. longitude,
  5301. iddevice)
  5302. AS
  5303. SELECT tt.idtransaction_group AS idtransaction, tt.command_date, tt.address, dev.vehicle_code AS vehicle, tt.command_date AS date, tt.latitude, tt.longitude, dev.iddevice
  5304. FROM vlt_transaction tt
  5305. JOIN vlt_device dev ON dev.iddevice = tt.iddevice
  5306. WHERE tt.valid AND tt.idtransaction_group IS NOT NULL AND tt.idtransaction_group = tt.idtransaction
  5307. ORDER BY tt.command_date;
  5308. CREATE OR REPLACE VIEW public.rpt_speed_vw (
  5309. idtransaction,
  5310. vehicle,
  5311. date,
  5312. speed,
  5313. address,
  5314. iddevice,
  5315. speed_limit,
  5316. idcustomer,
  5317. latitude,
  5318. longitude,
  5319. command_date)
  5320. AS
  5321. SELECT vlt_transaction.idtransaction, vlt_device.vehicle_code::text AS vehicle, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi'::text) AS date, vlt_transaction.speed, vlt_transaction.address, vlt_device.iddevice, vlt_device.speed_limit, vlt_device.idcustomer, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.command_date
  5322. FROM vlt_transaction
  5323. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  5324. WHERE vlt_transaction.valid
  5325. ORDER BY vlt_transaction.command_date;
  5326. CREATE OR REPLACE VIEW public.rpt_worked_hours_device_vw (
  5327. vehicle,
  5328. driver,
  5329. data_trabalhada,
  5330. inicio,
  5331. termino,
  5332. horas,
  5333. iddevice)
  5334. AS
  5335. SELECT vlt_device.vehicle_code AS vehicle, ( SELECT vlt_driver.driver
  5336. FROM vlt_driver
  5337. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_driver_record.iddevice
  5338. FROM vlt_driver_record
  5339. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  5340. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  5341. JOIN vlt_device ON vlt_device.iddevice = vlt_driver_record.iddevice
  5342. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_device.vehicle_code, vlt_driver_record.idtransaction_start
  5343. ORDER BY tstart.command_date, tend.command_date;
  5344. CREATE OR REPLACE VIEW public.rpt_worked_hours_driver_vw (
  5345. vehicle,
  5346. driver,
  5347. data_trabalhada,
  5348. inicio,
  5349. termino,
  5350. horas,
  5351. iddriver)
  5352. AS
  5353. SELECT ( SELECT vlt_device.vehicle_code
  5354. FROM vlt_device
  5355. WHERE vlt_device.iddevice = vlt_driver_record.iddevice) AS vehicle, ( SELECT vlt_driver.driver
  5356. FROM vlt_driver
  5357. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start) AS iddriver
  5358. FROM vlt_driver_record
  5359. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  5360. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  5361. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_driver_record.idtransaction_start
  5362. ORDER BY tstart.command_date, tend.command_date;
  5363. CREATE OR REPLACE VIEW public.sel_customer_list_vw (
  5364. idcustomer,
  5365. customer,
  5366. desc_phone,
  5367. desc_cellphone,
  5368. customer_search,
  5369. idseller,
  5370. quantidade)
  5371. AS
  5372. SELECT par_customer.idcustomer, par_customer.customer, par_customer.desc_phone, par_customer.desc_cellphone, par_customer.customer_search, par_customer.idseller, ( SELECT count(*) AS count
  5373. FROM vlt_device
  5374. WHERE vlt_device.idcustomer = par_customer.idcustomer) AS quantidade
  5375. FROM par_customer;
  5376. CREATE OR REPLACE VIEW public.vlt_command_status_vw (
  5377. idmodelcommand,
  5378. description,
  5379. icon,
  5380. command_text,
  5381. iddevicemodel,
  5382. btnclass,
  5383. iddevice,
  5384. has_parameter,
  5385. parameter,
  5386. access_level,
  5387. message,
  5388. command_date,
  5389. buttoncolor,
  5390. blocked,
  5391. loading,
  5392. sms)
  5393. AS
  5394. SELECT vlt_model_command.idmodelcommand, vlt_model_command.description, vlt_model_command.icon, vlt_model_command.command_text, vlt_model_command.iddevicemodel, ( SELECT
  5395. CASE
  5396. WHEN vlt_command.status::text = 'O'::text THEN 'btn-success'::text
  5397. WHEN vlt_command.status::text = 'X'::text THEN 'btn-danger'::text
  5398. WHEN vlt_command.status::text = 'A'::text THEN 'btn-info'::text
  5399. WHEN vlt_command.status::text = 'T'::text THEN 'btn-danger'::text
  5400. ELSE NULL::text
  5401. END AS "case"
  5402. FROM vlt_command
  5403. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  5404. FROM vlt_command
  5405. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))) AS btnclass, vlt_device.iddevice, vlt_model_command.has_parameter, vlt_model_command.parameter, vlt_model_command.access_level, ( SELECT vlt_command.message
  5406. FROM vlt_command
  5407. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  5408. FROM vlt_command
  5409. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS message, ( SELECT vlt_command.command_date
  5410. FROM vlt_command
  5411. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  5412. FROM vlt_command
  5413. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS command_date, COALESCE(( SELECT
  5414. CASE
  5415. WHEN vlt_command.status::text = 'O'::text THEN '#86b558'::text
  5416. WHEN vlt_command.status::text = 'X'::text THEN '#d3413b'::text
  5417. WHEN vlt_command.status::text = 'A'::text THEN '#68adde'::text
  5418. WHEN vlt_command.status::text = 'T'::text THEN '#d3413b'::text
  5419. ELSE '#68adde'::text
  5420. END AS "case"
  5421. FROM vlt_command
  5422. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  5423. FROM vlt_command
  5424. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), '#68adde'::text) AS buttoncolor,
  5425. CASE
  5426. WHEN (( SELECT count(*) AS count
  5427. FROM vlt_command
  5428. WHERE vlt_command.iddevice = vlt_device.iddevice AND (vlt_command.status::text = ANY (ARRAY['A'::text, 'E'::text])))) > 0 THEN true
  5429. ELSE false
  5430. END AS blocked, COALESCE(( SELECT
  5431. CASE
  5432. WHEN vlt_command.status::text = 'E'::text THEN true
  5433. WHEN vlt_command.status::text = 'A'::text THEN true
  5434. ELSE false
  5435. END AS "case"
  5436. FROM vlt_command
  5437. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  5438. FROM vlt_command
  5439. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), false) AS loading, vlt_model_command.sms
  5440. FROM vlt_model_command
  5441. JOIN vlt_device ON vlt_device.iddevicemodel = vlt_model_command.iddevicemodel
  5442. LEFT JOIN vlt_model_command_param ON vlt_model_command_param.idmodelcommand = vlt_model_command.idmodelcommand
  5443. GROUP BY vlt_model_command.idmodelcommand, vlt_device.iddevice
  5444. ORDER BY vlt_model_command.idmodelcommand;
  5445. CREATE OR REPLACE VIEW public.vlt_device_finger_vw (
  5446. iddevicefinger,
  5447. iddevice,
  5448. vehicle_code,
  5449. iddriver,
  5450. driver,
  5451. idcustomer)
  5452. AS
  5453. SELECT def.iddevicefinger, dev.iddevice, (COALESCE(dev.vehicle_code, ''::character varying)::text || ' '::text) || COALESCE(dev.description, ''::character varying)::text AS vehicle_code, drv.iddriver, drv.driver, dev.idcustomer
  5454. FROM vlt_device_finger def, vlt_device dev, vlt_driver_finger drf, vlt_driver drv
  5455. WHERE def.iddevice = dev.iddevice AND drf.iddriverfinger = def.iddriverfinger AND drf.iddriver = drv.iddriver
  5456. ORDER BY dev.vehicle_code, drv.code;
  5457. CREATE OR REPLACE VIEW public.vlt_device_search_vw (
  5458. iddevice,
  5459. vehicle_code,
  5460. device_search,
  5461. description,
  5462. tag,
  5463. idcustomer)
  5464. AS
  5465. SELECT vlt_device.iddevice, vlt_device.vehicle_code, vlt_device.device_search, vlt_device.description, vlt_device.tag, vlt_device.idcustomer
  5466. FROM vlt_device;
  5467. CREATE OR REPLACE VIEW public.vlt_device_vw (
  5468. iddevice,
  5469. description,
  5470. latitude,
  5471. longitude,
  5472. vehicle_code,
  5473. idcustomer,
  5474. code,
  5475. device_search,
  5476. has_battery,
  5477. has_analog_ports,
  5478. has_digital_ports,
  5479. has_tpms,
  5480. has_fuel,
  5481. has_temperature,
  5482. connected,
  5483. is_connected,
  5484. speed,
  5485. command_date,
  5486. start_date,
  5487. driver,
  5488. address,
  5489. idtransaction,
  5490. online,
  5491. record_type,
  5492. has_alert,
  5493. active,
  5494. odometer)
  5495. AS
  5496. SELECT q.iddevice, q.description, q.latitude, q.longitude, q.vehicle_code, q.idcustomer, q.code, q.device_search, q.has_battery, q.has_analog_ports, q.has_digital_ports, q.has_tpms, q.has_fuel, q.has_temperature, q.connected, q.is_connected, q.speed, q.command_date, q.start_date, q.driver, q.address, q.idtransaction, q.online, q.record_type, q.has_alert, q.active, q.odometer
  5497. FROM ( SELECT dev.iddevice, dev.description, tt.latitude, tt.longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  5498. CASE
  5499. WHEN tt.connected THEN 'Sim'::text
  5500. ELSE 'Não'::text
  5501. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, ( SELECT drv.driver
  5502. FROM vlt_driver drv
  5503. WHERE drv.iddriver = tt.iddriver) AS driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  5504. FROM ( SELECT vlt_device.iddevice, vlt_last_invalid_tran_dev_fnc(vlt_device.iddevice) AS idtransaction, vlt_device.idcustomer
  5505. FROM vlt_device) tbl
  5506. JOIN vlt_transaction tt ON tt.idtransaction = tbl.idtransaction
  5507. JOIN vlt_device dev ON dev.iddevice = tbl.iddevice
  5508. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  5509. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype) q;
  5510. CREATE OR REPLACE VIEW public.vlt_device_vw2 (
  5511. idcustomer,
  5512. iddevice,
  5513. code,
  5514. device_search,
  5515. description,
  5516. vehicle_code,
  5517. address,
  5518. speed,
  5519. connected,
  5520. command_date,
  5521. has_battery,
  5522. has_analog_ports,
  5523. has_digital_ports,
  5524. has_tpms,
  5525. has_fuel,
  5526. has_temperature)
  5527. AS
  5528. SELECT vlt_device.idcustomer, vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  5529. FROM vlt_device
  5530. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_device.last_transaction
  5531. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel;
  5532. CREATE OR REPLACE VIEW public.vlt_device_vw_ant (
  5533. iddevice,
  5534. description,
  5535. latitude,
  5536. longitude,
  5537. vehicle_code,
  5538. idcustomer,
  5539. code,
  5540. device_search,
  5541. has_battery,
  5542. has_analog_ports,
  5543. has_digital_ports,
  5544. has_tpms,
  5545. has_fuel,
  5546. has_temperature,
  5547. connected,
  5548. is_connected,
  5549. speed,
  5550. command_date,
  5551. start_date,
  5552. driver,
  5553. address,
  5554. idtransaction,
  5555. online,
  5556. record_type,
  5557. has_alert,
  5558. active,
  5559. odometer)
  5560. AS
  5561. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  5562. CASE
  5563. WHEN tt.connected THEN 'Sim'::text
  5564. ELSE 'Não'::text
  5565. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  5566. FROM vlt_device dev
  5567. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  5568. FROM vlt_transaction
  5569. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  5570. ORDER BY vlt_transaction.idtransaction DESC
  5571. LIMIT 1))
  5572. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  5573. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  5574. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  5575. WHERE dev.active;
  5576. CREATE OR REPLACE VIEW public.vlt_device_vw_old (
  5577. iddevice,
  5578. description,
  5579. latitude,
  5580. longitude,
  5581. vehicle_code,
  5582. idcustomer,
  5583. code,
  5584. device_search,
  5585. has_battery,
  5586. has_analog_ports,
  5587. has_digital_ports,
  5588. has_tpms,
  5589. has_fuel,
  5590. has_temperature,
  5591. connected,
  5592. is_connected,
  5593. speed,
  5594. command_date,
  5595. start_date,
  5596. driver,
  5597. address,
  5598. idtransaction,
  5599. online,
  5600. record_type,
  5601. has_alert,
  5602. active,
  5603. odometer)
  5604. AS
  5605. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  5606. CASE
  5607. WHEN tt.connected THEN 'Sim'::text
  5608. ELSE 'Não'::text
  5609. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  5610. FROM vlt_device dev
  5611. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  5612. FROM vlt_transaction
  5613. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  5614. ORDER BY vlt_transaction.idtransaction DESC
  5615. LIMIT 1))
  5616. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  5617. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  5618. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  5619. WHERE dev.active;
  5620. CREATE OR REPLACE VIEW public.vlt_grouped_transactions_vw (
  5621. address,
  5622. connected,
  5623. driver,
  5624. description,
  5625. hour,
  5626. iddevice,
  5627. idtransaction,
  5628. idtransaction_group,
  5629. is_connected,
  5630. latitude,
  5631. longitude,
  5632. online,
  5633. speed,
  5634. start_date,
  5635. vehicle_code,
  5636. has_battery,
  5637. has_analog_ports,
  5638. has_digital_ports,
  5639. has_tpms,
  5640. has_fuel,
  5641. has_temperature)
  5642. AS
  5643. SELECT vlt_transaction.address,
  5644. CASE
  5645. WHEN vlt_transaction.connected THEN 'Sim'::text
  5646. ELSE 'Não'::text
  5647. END AS connected, vlt_driver.driver, vlt_device.description, vlt_transaction.time_dif AS hour, vlt_transaction.iddevice, vlt_transaction.idtransaction, vlt_transaction.idtransaction_group, vlt_transaction.connected AS is_connected, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.online, vlt_transaction.speed, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi:ss'::text) AS start_date, vlt_device.vehicle_code, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  5648. FROM vlt_transaction
  5649. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  5650. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_transaction.iddriver
  5651. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  5652. WHERE vlt_transaction.valid
  5653. ORDER BY vlt_transaction.command_date;
  5654. CREATE OR REPLACE VIEW public.vlt_port_status_vw (
  5655. description,
  5656. value,
  5657. type,
  5658. idtransaction_filter,
  5659. output)
  5660. AS
  5661. SELECT vlt_port.description, vlt_port_status.value,
  5662. CASE
  5663. WHEN vlt_record_type.code::text = '6'::text THEN 'D'::text
  5664. ELSE 'A'::text
  5665. END AS type, vlt_transaction_last.idtransaction AS idtransaction_filter, vlt_port.output
  5666. FROM vlt_transaction_last
  5667. JOIN vlt_record_type ON vlt_record_type.idrecordtype = vlt_transaction_last.idrecordtype AND (vlt_record_type.code::text = ANY (ARRAY['6'::text, '7'::text]))
  5668. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_transaction_last.idtransaction_last
  5669. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  5670. JOIN vlt_port ON vlt_port.iddevicemodel = vlt_device.iddevicemodel AND vlt_port.fuel = false
  5671. JOIN vlt_port_status ON vlt_port_status.idport = vlt_port.idport AND vlt_port_status.idtransaction = vlt_transaction_last.idtransaction_last;
  5672. CREATE OR REPLACE VIEW public.vlt_refuel_vw (
  5673. idrefuel,
  5674. idrefuelstation,
  5675. refuel_code,
  5676. refuel_date,
  5677. refuel_liters,
  5678. refuel_value,
  5679. idtransaction,
  5680. iddevice,
  5681. name,
  5682. vehicle_code,
  5683. per_liter,
  5684. idcustomer)
  5685. AS
  5686. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value /
  5687. CASE
  5688. WHEN vlt_refuel.refuel_liters = 0::numeric THEN 1::numeric
  5689. ELSE vlt_refuel.refuel_liters
  5690. END AS per_liter, vlt_device.idcustomer
  5691. FROM vlt_refuel
  5692. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  5693. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  5694. ORDER BY vlt_device.vehicle_code;
  5695. CREATE OR REPLACE VIEW public.vlt_seller_dc_vw (
  5696. iddevice,
  5697. idseller,
  5698. vehicle_code,
  5699. device_search,
  5700. vehicle,
  5701. command_date,
  5702. record_type,
  5703. active,
  5704. code)
  5705. AS
  5706. SELECT q.iddevice, q.idseller, q.vehicle_code, q.device_search, q.vehicle, tt.command_date, rt.description AS record_type, q.active, q.code
  5707. FROM ( SELECT vlt_device.iddevice, par_customer.idseller, vlt_device.vehicle_code, vlt_device.device_search, vlt_device.description AS vehicle, vlt_device.active, vlt_device.code, vlt_last_tran_dev_fnc(vlt_device.iddevice) AS idtransaction
  5708. FROM vlt_device, par_customer
  5709. WHERE par_customer.idseller IS NOT NULL AND par_customer.idcustomer = vlt_device.idcustomer) q, vlt_transaction tt, vlt_record_type rt
  5710. WHERE tt.idtransaction = q.idtransaction AND rt.idrecordtype = tt.idrecordtype;
  5711. CREATE OR REPLACE VIEW public.vlt_tpms_disparity_vw (
  5712. vehicle_code,
  5713. description,
  5714. tpms_sequence,
  5715. temperature,
  5716. valr_min_temperature,
  5717. valr_max_temperature,
  5718. pressure,
  5719. valr_min_preassure,
  5720. valr_max_preassure,
  5721. idcustomer,
  5722. transaction_date)
  5723. AS
  5724. SELECT vlt_device.vehicle_code, vlt_device.description, vlt_tpms.tpms_sequence, vlt_tpms_value.temperature, vlt_tpms_model.valr_min_temperature, vlt_tpms_model.valr_max_temperature, vlt_tpms_value.pressure, vlt_tpms_model.valr_min_preassure, vlt_tpms_model.valr_max_preassure, vlt_device.idcustomer, to_char(vlt_transaction.transaction_date, 'dd/mm/yyyy hh24:mi'::text) AS transaction_date
  5725. FROM vlt_tpms
  5726. JOIN vlt_device ON vlt_device.iddevice = vlt_tpms.iddevice
  5727. JOIN vlt_tpms_value ON vlt_tpms_value.idtpmsvalue = vlt_tpms.idtpmsvalue_last
  5728. JOIN vlt_tpms_model ON vlt_tpms_model.id = vlt_device.idtpmsmodel AND (vlt_tpms_model.valr_min_temperature > vlt_tpms_value.temperature OR vlt_tpms_model.valr_max_temperature < vlt_tpms_value.temperature OR vlt_tpms_model.valr_min_preassure > vlt_tpms_value.pressure OR vlt_tpms_model.valr_max_preassure < vlt_tpms_value.pressure)
  5729. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_tpms_value.idtransaction
  5730. ORDER BY vlt_device.vehicle_code, vlt_tpms.tpms_sequence;
  5731. CREATE OR REPLACE VIEW public.vlt_transaction_driver_vw (
  5732. idtransactiondriver,
  5733. iddriver,
  5734. transaction_date,
  5735. iddevice,
  5736. idcustomer,
  5737. driver,
  5738. device)
  5739. AS
  5740. SELECT td.idtransactiondriver, td.iddriver, td.transaction_date, td.iddevice, dev.idcustomer, d.driver, dev.vehicle_code AS device
  5741. FROM vlt_device dev
  5742. JOIN vlt_transaction_driver td ON td.iddevice = dev.iddevice
  5743. JOIN vlt_driver d ON d.iddriver = td.iddriver
  5744. WHERE dev.active
  5745. ORDER BY td.transaction_date;
  5746.  
  5747. DROP VIEW public.vlt_transaction_driver_vw;
  5748. DROP VIEW public.vlt_tpms_disparity_vw;
  5749. DROP VIEW public.vlt_seller_dc_vw;
  5750. DROP VIEW public.vlt_refuel_vw;
  5751. DROP VIEW public.vlt_port_status_vw;
  5752. DROP VIEW public.vlt_grouped_transactions_vw;
  5753. DROP VIEW public.vlt_device_vw_old;
  5754. DROP VIEW public.vlt_device_vw_ant;
  5755. DROP VIEW public.vlt_device_vw2;
  5756. DROP VIEW public.vlt_device_vw;
  5757. DROP VIEW public.vlt_device_search_vw;
  5758. DROP VIEW public.vlt_device_finger_vw;
  5759. DROP VIEW public.vlt_command_status_vw;
  5760. DROP VIEW public.sel_customer_list_vw;
  5761. DROP VIEW public.rpt_worked_hours_driver_vw;
  5762. DROP VIEW public.rpt_worked_hours_device_vw;
  5763. DROP VIEW public.rpt_speed_vw;
  5764. DROP VIEW public.rpt_route_vw;
  5765. DROP VIEW public.rep_route_vw;
  5766. DROP VIEW public.rep_online_offline_vw;
  5767. DROP VIEW public.par_message_vw;
  5768. DROP VIEW public.par_etiqueta_vw;
  5769. DROP VIEW public.mce_refuel_vw;
  5770. DROP VIEW public.mce_refuel_station_vw;
  5771. DROP VIEW public.mce_driver_vw;
  5772. DROP VIEW public.mce_device_vw;
  5773. DROP VIEW public.mce_customer_vw;
  5774. ALTER TABLE public.vlt_device
  5775. ALTER COLUMN limit_group_on SET DEFAULT 0;
  5776. CREATE OR REPLACE VIEW public.mce_customer_vw (
  5777. iddevice,
  5778. idmonitoringcenter,
  5779. idcustomer,
  5780. customer,
  5781. email,
  5782. dthr_cadastro,
  5783. desc_address,
  5784. desc_complement,
  5785. numr_address,
  5786. desc_district,
  5787. desc_city,
  5788. desc_state,
  5789. desc_country,
  5790. desc_zip_address,
  5791. desc_phone,
  5792. desc_cellphone,
  5793. desc_cgc,
  5794. desc_ddd_cellphone,
  5795. desc_ddd_phone,
  5796. idseller,
  5797. customer_search,
  5798. rg,
  5799. active,
  5800. block_message)
  5801. AS
  5802. SELECT vlt_device.iddevice, vlt_device_mc.idmonitoringcenter, par_customer.idcustomer, par_customer.customer, par_customer.email, par_customer.dthr_cadastro, par_customer.desc_address, par_customer.desc_complement, par_customer.numr_address, par_customer.desc_district, par_customer.desc_city, par_customer.desc_state, par_customer.desc_country, par_customer.desc_zip_address, par_customer.desc_phone, par_customer.desc_cellphone, par_customer.desc_cgc, par_customer.desc_ddd_cellphone, par_customer.desc_ddd_phone, par_customer.idseller, par_customer.customer_search, par_customer.rg, par_customer.active, par_customer.block_message
  5803. FROM vlt_device
  5804. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  5805. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice;
  5806. CREATE OR REPLACE VIEW public.mce_device_vw (
  5807. iddevice,
  5808. code,
  5809. device_search,
  5810. description,
  5811. vehicle_code,
  5812. address,
  5813. speed,
  5814. connected,
  5815. command_date,
  5816. has_battery,
  5817. has_analog_ports,
  5818. has_digital_ports,
  5819. has_tpms,
  5820. has_fuel,
  5821. has_temperature,
  5822. idmonitoringcenter,
  5823. customer,
  5824. idcustomer,
  5825. driver,
  5826. active,
  5827. speed_limit,
  5828. renavam,
  5829. chassi,
  5830. mark_vehicle,
  5831. model_vehicle,
  5832. color_vehicle,
  5833. fuel_estimate)
  5834. AS
  5835. SELECT vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature, vlt_device_mc.idmonitoringcenter, par_customer.customer, par_customer.idcustomer, vlt_driver.driver, vlt_device.active, vlt_device.speed_limit, vlt_device.renavam, vlt_device.chassi, vlt_device.mark_vehicle, vlt_device.model_vehicle, vlt_device.color_vehicle, vlt_device.fuel_estimate
  5836. FROM vlt_device
  5837. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_device.last_driver
  5838. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_last_tran_dev_fnc(vlt_device.iddevice)
  5839. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  5840. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5841. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  5842. WHERE vlt_device.active
  5843. ORDER BY vlt_device.vehicle_code, vlt_device.description;
  5844. CREATE OR REPLACE VIEW public.mce_driver_vw (
  5845. iddriver,
  5846. code,
  5847. driver,
  5848. last_date,
  5849. parcust_id,
  5850. password,
  5851. idmonitoringcenter,
  5852. idcustomer)
  5853. AS
  5854. SELECT vlt_driver.iddriver, vlt_driver.code, vlt_driver.driver, vlt_driver.last_date, vlt_driver.parcust_id, vlt_driver.password, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  5855. FROM vlt_driver
  5856. JOIN vlt_device ON vlt_device.idcustomer = vlt_driver.parcust_id
  5857. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5858. GROUP BY vlt_driver.iddriver, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  5859. ORDER BY vlt_device_mc.idmonitoringcenter;
  5860. CREATE OR REPLACE VIEW public.mce_refuel_station_vw (
  5861. idrefuelstation,
  5862. code,
  5863. name,
  5864. idinterestpoint,
  5865. idcustomer,
  5866. idmonitoringcenter)
  5867. AS
  5868. SELECT vlt_refuel_station.idrefuelstation, vlt_refuel_station.code, vlt_refuel_station.name, vlt_refuel_station.idinterestpoint, vlt_refuel_station.idcustomer, vlt_device_mc.idmonitoringcenter
  5869. FROM vlt_refuel_station
  5870. JOIN vlt_device ON vlt_device.idcustomer = vlt_refuel_station.idcustomer
  5871. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5872. GROUP BY vlt_refuel_station.idrefuelstation, vlt_device_mc.idmonitoringcenter
  5873. ORDER BY vlt_device_mc.idmonitoringcenter;
  5874. CREATE OR REPLACE VIEW public.mce_refuel_vw (
  5875. idrefuel,
  5876. idrefuelstation,
  5877. refuel_code,
  5878. refuel_date,
  5879. refuel_liters,
  5880. refuel_value,
  5881. idtransaction,
  5882. iddevice,
  5883. name,
  5884. vehicle_code,
  5885. per_liter,
  5886. idmonitoringcenter,
  5887. idcustomer)
  5888. AS
  5889. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value / vlt_refuel.refuel_liters AS per_liter, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  5890. FROM vlt_refuel
  5891. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  5892. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  5893. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  5894. ORDER BY vlt_device.vehicle_code;
  5895. CREATE OR REPLACE VIEW public.par_etiqueta_vw (
  5896. code,
  5897. password,
  5898. device_model,
  5899. processador,
  5900. model,
  5901. iddevice)
  5902. AS
  5903. SELECT vlt_device.code, vlt_gera_senha_device_fnc(vlt_device.code) AS password, vlt_device_model.description AS device_model, NULL::character varying AS processador, NULL::character varying AS model, vlt_device.iddevice
  5904. FROM vlt_device
  5905. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel;
  5906. CREATE OR REPLACE VIEW public.par_message_vw (
  5907. idmessage,
  5908. message_date,
  5909. iduser,
  5910. name,
  5911. title,
  5912. message,
  5913. read_date,
  5914. is_read,
  5915. priority,
  5916. from_iddevice,
  5917. deviceorigin,
  5918. to_iddevice,
  5919. devicereceiver,
  5920. from_iduser,
  5921. messageorigin,
  5922. messagereceiver)
  5923. AS
  5924. SELECT par_message.idmessage, par_message.message_date, par_message.iduser, touser.name, par_message.title, par_message.message, par_message.read_date, par_message.is_read, par_message.priority, par_message.from_iddevice, fromdevice.vehicle_code AS deviceorigin, par_message.to_iddevice, todevice.vehicle_code AS devicereceiver, par_message.from_iduser,
  5925. CASE
  5926. WHEN par_message.origin::text = 'S'::text THEN 'Sistema'::character varying
  5927. WHEN par_message.origin::text = 'U'::text THEN fromuser.name
  5928. WHEN par_message.origin::text = 'D'::text THEN fromdevice.vehicle_code
  5929. ELSE NULL::character varying
  5930. END AS messageorigin,
  5931. CASE
  5932. WHEN par_message.iduser IS NOT NULL THEN touser.name
  5933. WHEN par_message.to_iddevice IS NOT NULL THEN todevice.vehicle_code
  5934. ELSE NULL::character varying
  5935. END AS messagereceiver
  5936. FROM par_message
  5937. LEFT JOIN par_user fromuser ON fromuser.iduser = par_message.from_iduser
  5938. LEFT JOIN par_user touser ON touser.iduser = par_message.iduser
  5939. LEFT JOIN vlt_device fromdevice ON fromdevice.iddevice = par_message.from_iddevice
  5940. LEFT JOIN vlt_device todevice ON todevice.iddevice = par_message.to_iddevice;
  5941. CREATE OR REPLACE VIEW public.rep_online_offline_vw (
  5942. total,
  5943. online,
  5944. offline,
  5945. vehicle,
  5946. perc_online,
  5947. perc_offline,
  5948. iddevice)
  5949. AS
  5950. SELECT o.online + of.offline AS total, o.online, of.offline, (vlt_device.vehicle_code::text || ' | '::text) || vlt_device.description::text AS vehicle, o.online * 100 / (o.online + of.offline) AS perc_online, of.offline * 100 / (o.online + of.offline) AS perc_offline, vlt_device.iddevice
  5951. FROM vlt_device
  5952. JOIN ( SELECT vlt_transaction.iddevice, count(vlt_transaction.online) AS online
  5953. FROM vlt_transaction
  5954. WHERE vlt_transaction.online = 'O'::bpchar AND vlt_transaction.online <> 'N'::bpchar
  5955. GROUP BY vlt_transaction.iddevice, vlt_transaction.online) o ON o.iddevice = vlt_device.iddevice
  5956. JOIN ( SELECT vlt_transaction.iddevice, count(vlt_transaction.online) AS offline
  5957. FROM vlt_transaction
  5958. WHERE vlt_transaction.online = 'M'::bpchar AND vlt_transaction.online <> 'N'::bpchar
  5959. GROUP BY vlt_transaction.iddevice, vlt_transaction.online) of ON of.iddevice = vlt_device.iddevice;
  5960. CREATE OR REPLACE VIEW public.rep_route_vw (
  5961. command_date,
  5962. address,
  5963. vehicle,
  5964. date,
  5965. latitude,
  5966. longitude,
  5967. iddevice)
  5968. AS
  5969. SELECT min(vlt_transaction.command_date) AS command_date, vlt_transaction.address, (vlt_device.vehicle_code::text || ' - '::text) || vlt_device.description::text AS vehicle, vlt_transaction.command_date AS date, vlt_transaction.latitude, vlt_transaction.longitude, vlt_device.iddevice
  5970. FROM vlt_transaction
  5971. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  5972. GROUP BY vlt_transaction.address, vlt_device.vehicle_code, vlt_device.description, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.command_date, vlt_device.iddevice
  5973. ORDER BY min(vlt_transaction.command_date);
  5974. CREATE OR REPLACE VIEW public.rpt_route_vw (
  5975. idtransaction,
  5976. command_date,
  5977. address,
  5978. vehicle,
  5979. date,
  5980. latitude,
  5981. longitude,
  5982. iddevice)
  5983. AS
  5984. SELECT tt.idtransaction_group AS idtransaction, tt.command_date, tt.address, dev.vehicle_code AS vehicle, tt.command_date AS date, tt.latitude, tt.longitude, dev.iddevice
  5985. FROM vlt_transaction tt
  5986. JOIN vlt_device dev ON dev.iddevice = tt.iddevice
  5987. WHERE tt.valid AND tt.idtransaction_group IS NOT NULL AND tt.idtransaction_group = tt.idtransaction
  5988. ORDER BY tt.command_date;
  5989. CREATE OR REPLACE VIEW public.rpt_speed_vw (
  5990. idtransaction,
  5991. vehicle,
  5992. date,
  5993. speed,
  5994. address,
  5995. iddevice,
  5996. speed_limit,
  5997. idcustomer,
  5998. latitude,
  5999. longitude,
  6000. command_date)
  6001. AS
  6002. SELECT vlt_transaction.idtransaction, vlt_device.vehicle_code::text AS vehicle, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi'::text) AS date, vlt_transaction.speed, vlt_transaction.address, vlt_device.iddevice, vlt_device.speed_limit, vlt_device.idcustomer, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.command_date
  6003. FROM vlt_transaction
  6004. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  6005. WHERE vlt_transaction.valid
  6006. ORDER BY vlt_transaction.command_date;
  6007. CREATE OR REPLACE VIEW public.rpt_worked_hours_device_vw (
  6008. vehicle,
  6009. driver,
  6010. data_trabalhada,
  6011. inicio,
  6012. termino,
  6013. horas,
  6014. iddevice)
  6015. AS
  6016. SELECT vlt_device.vehicle_code AS vehicle, ( SELECT vlt_driver.driver
  6017. FROM vlt_driver
  6018. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_driver_record.iddevice
  6019. FROM vlt_driver_record
  6020. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  6021. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  6022. JOIN vlt_device ON vlt_device.iddevice = vlt_driver_record.iddevice
  6023. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_device.vehicle_code, vlt_driver_record.idtransaction_start
  6024. ORDER BY tstart.command_date, tend.command_date;
  6025. CREATE OR REPLACE VIEW public.rpt_worked_hours_driver_vw (
  6026. vehicle,
  6027. driver,
  6028. data_trabalhada,
  6029. inicio,
  6030. termino,
  6031. horas,
  6032. iddriver)
  6033. AS
  6034. SELECT ( SELECT vlt_device.vehicle_code
  6035. FROM vlt_device
  6036. WHERE vlt_device.iddevice = vlt_driver_record.iddevice) AS vehicle, ( SELECT vlt_driver.driver
  6037. FROM vlt_driver
  6038. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start) AS iddriver
  6039. FROM vlt_driver_record
  6040. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  6041. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  6042. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_driver_record.idtransaction_start
  6043. ORDER BY tstart.command_date, tend.command_date;
  6044. CREATE OR REPLACE VIEW public.sel_customer_list_vw (
  6045. idcustomer,
  6046. customer,
  6047. desc_phone,
  6048. desc_cellphone,
  6049. customer_search,
  6050. idseller,
  6051. quantidade)
  6052. AS
  6053. SELECT par_customer.idcustomer, par_customer.customer, par_customer.desc_phone, par_customer.desc_cellphone, par_customer.customer_search, par_customer.idseller, ( SELECT count(*) AS count
  6054. FROM vlt_device
  6055. WHERE vlt_device.idcustomer = par_customer.idcustomer) AS quantidade
  6056. FROM par_customer;
  6057. CREATE OR REPLACE VIEW public.vlt_command_status_vw (
  6058. idmodelcommand,
  6059. description,
  6060. icon,
  6061. command_text,
  6062. iddevicemodel,
  6063. btnclass,
  6064. iddevice,
  6065. has_parameter,
  6066. parameter,
  6067. access_level,
  6068. message,
  6069. command_date,
  6070. buttoncolor,
  6071. blocked,
  6072. loading,
  6073. sms)
  6074. AS
  6075. SELECT vlt_model_command.idmodelcommand, vlt_model_command.description, vlt_model_command.icon, vlt_model_command.command_text, vlt_model_command.iddevicemodel, ( SELECT
  6076. CASE
  6077. WHEN vlt_command.status::text = 'O'::text THEN 'btn-success'::text
  6078. WHEN vlt_command.status::text = 'X'::text THEN 'btn-danger'::text
  6079. WHEN vlt_command.status::text = 'A'::text THEN 'btn-info'::text
  6080. WHEN vlt_command.status::text = 'T'::text THEN 'btn-danger'::text
  6081. ELSE NULL::text
  6082. END AS "case"
  6083. FROM vlt_command
  6084. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  6085. FROM vlt_command
  6086. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))) AS btnclass, vlt_device.iddevice, vlt_model_command.has_parameter, vlt_model_command.parameter, vlt_model_command.access_level, ( SELECT vlt_command.message
  6087. FROM vlt_command
  6088. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  6089. FROM vlt_command
  6090. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS message, ( SELECT vlt_command.command_date
  6091. FROM vlt_command
  6092. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  6093. FROM vlt_command
  6094. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS command_date, COALESCE(( SELECT
  6095. CASE
  6096. WHEN vlt_command.status::text = 'O'::text THEN '#86b558'::text
  6097. WHEN vlt_command.status::text = 'X'::text THEN '#d3413b'::text
  6098. WHEN vlt_command.status::text = 'A'::text THEN '#68adde'::text
  6099. WHEN vlt_command.status::text = 'T'::text THEN '#d3413b'::text
  6100. ELSE '#68adde'::text
  6101. END AS "case"
  6102. FROM vlt_command
  6103. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  6104. FROM vlt_command
  6105. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), '#68adde'::text) AS buttoncolor,
  6106. CASE
  6107. WHEN (( SELECT count(*) AS count
  6108. FROM vlt_command
  6109. WHERE vlt_command.iddevice = vlt_device.iddevice AND (vlt_command.status::text = ANY (ARRAY['A'::text, 'E'::text])))) > 0 THEN true
  6110. ELSE false
  6111. END AS blocked, COALESCE(( SELECT
  6112. CASE
  6113. WHEN vlt_command.status::text = 'E'::text THEN true
  6114. WHEN vlt_command.status::text = 'A'::text THEN true
  6115. ELSE false
  6116. END AS "case"
  6117. FROM vlt_command
  6118. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  6119. FROM vlt_command
  6120. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), false) AS loading, vlt_model_command.sms
  6121. FROM vlt_model_command
  6122. JOIN vlt_device ON vlt_device.iddevicemodel = vlt_model_command.iddevicemodel
  6123. LEFT JOIN vlt_model_command_param ON vlt_model_command_param.idmodelcommand = vlt_model_command.idmodelcommand
  6124. GROUP BY vlt_model_command.idmodelcommand, vlt_device.iddevice
  6125. ORDER BY vlt_model_command.idmodelcommand;
  6126. CREATE OR REPLACE VIEW public.vlt_device_finger_vw (
  6127. iddevicefinger,
  6128. iddevice,
  6129. vehicle_code,
  6130. iddriver,
  6131. driver,
  6132. idcustomer)
  6133. AS
  6134. SELECT def.iddevicefinger, dev.iddevice, (COALESCE(dev.vehicle_code, ''::character varying)::text || ' '::text) || COALESCE(dev.description, ''::character varying)::text AS vehicle_code, drv.iddriver, drv.driver, dev.idcustomer
  6135. FROM vlt_device_finger def, vlt_device dev, vlt_driver_finger drf, vlt_driver drv
  6136. WHERE def.iddevice = dev.iddevice AND drf.iddriverfinger = def.iddriverfinger AND drf.iddriver = drv.iddriver
  6137. ORDER BY dev.vehicle_code, drv.code;
  6138. CREATE OR REPLACE VIEW public.vlt_device_search_vw (
  6139. iddevice,
  6140. vehicle_code,
  6141. device_search,
  6142. description,
  6143. tag,
  6144. idcustomer)
  6145. AS
  6146. SELECT vlt_device.iddevice, vlt_device.vehicle_code, vlt_device.device_search, vlt_device.description, vlt_device.tag, vlt_device.idcustomer
  6147. FROM vlt_device;
  6148. CREATE OR REPLACE VIEW public.vlt_device_vw (
  6149. iddevice,
  6150. description,
  6151. latitude,
  6152. longitude,
  6153. vehicle_code,
  6154. idcustomer,
  6155. code,
  6156. device_search,
  6157. has_battery,
  6158. has_analog_ports,
  6159. has_digital_ports,
  6160. has_tpms,
  6161. has_fuel,
  6162. has_temperature,
  6163. connected,
  6164. is_connected,
  6165. speed,
  6166. command_date,
  6167. start_date,
  6168. driver,
  6169. address,
  6170. idtransaction,
  6171. online,
  6172. record_type,
  6173. has_alert,
  6174. active,
  6175. odometer)
  6176. AS
  6177. SELECT q.iddevice, q.description, q.latitude, q.longitude, q.vehicle_code, q.idcustomer, q.code, q.device_search, q.has_battery, q.has_analog_ports, q.has_digital_ports, q.has_tpms, q.has_fuel, q.has_temperature, q.connected, q.is_connected, q.speed, q.command_date, q.start_date, q.driver, q.address, q.idtransaction, q.online, q.record_type, q.has_alert, q.active, q.odometer
  6178. FROM ( SELECT dev.iddevice, dev.description, tt.latitude, tt.longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6179. CASE
  6180. WHEN tt.connected THEN 'Sim'::text
  6181. ELSE 'Não'::text
  6182. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, ( SELECT drv.driver
  6183. FROM vlt_driver drv
  6184. WHERE drv.iddriver = tt.iddriver) AS driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6185. FROM ( SELECT vlt_device.iddevice, vlt_last_invalid_tran_dev_fnc(vlt_device.iddevice) AS idtransaction, vlt_device.idcustomer
  6186. FROM vlt_device) tbl
  6187. JOIN vlt_transaction tt ON tt.idtransaction = tbl.idtransaction
  6188. JOIN vlt_device dev ON dev.iddevice = tbl.iddevice
  6189. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6190. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype) q;
  6191. CREATE OR REPLACE VIEW public.vlt_device_vw2 (
  6192. idcustomer,
  6193. iddevice,
  6194. code,
  6195. device_search,
  6196. description,
  6197. vehicle_code,
  6198. address,
  6199. speed,
  6200. connected,
  6201. command_date,
  6202. has_battery,
  6203. has_analog_ports,
  6204. has_digital_ports,
  6205. has_tpms,
  6206. has_fuel,
  6207. has_temperature)
  6208. AS
  6209. SELECT vlt_device.idcustomer, vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  6210. FROM vlt_device
  6211. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_device.last_transaction
  6212. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel;
  6213. CREATE OR REPLACE VIEW public.vlt_device_vw_ant (
  6214. iddevice,
  6215. description,
  6216. latitude,
  6217. longitude,
  6218. vehicle_code,
  6219. idcustomer,
  6220. code,
  6221. device_search,
  6222. has_battery,
  6223. has_analog_ports,
  6224. has_digital_ports,
  6225. has_tpms,
  6226. has_fuel,
  6227. has_temperature,
  6228. connected,
  6229. is_connected,
  6230. speed,
  6231. command_date,
  6232. start_date,
  6233. driver,
  6234. address,
  6235. idtransaction,
  6236. online,
  6237. record_type,
  6238. has_alert,
  6239. active,
  6240. odometer)
  6241. AS
  6242. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6243. CASE
  6244. WHEN tt.connected THEN 'Sim'::text
  6245. ELSE 'Não'::text
  6246. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6247. FROM vlt_device dev
  6248. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  6249. FROM vlt_transaction
  6250. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  6251. ORDER BY vlt_transaction.idtransaction DESC
  6252. LIMIT 1))
  6253. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6254. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  6255. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  6256. WHERE dev.active;
  6257. CREATE OR REPLACE VIEW public.vlt_device_vw_old (
  6258. iddevice,
  6259. description,
  6260. latitude,
  6261. longitude,
  6262. vehicle_code,
  6263. idcustomer,
  6264. code,
  6265. device_search,
  6266. has_battery,
  6267. has_analog_ports,
  6268. has_digital_ports,
  6269. has_tpms,
  6270. has_fuel,
  6271. has_temperature,
  6272. connected,
  6273. is_connected,
  6274. speed,
  6275. command_date,
  6276. start_date,
  6277. driver,
  6278. address,
  6279. idtransaction,
  6280. online,
  6281. record_type,
  6282. has_alert,
  6283. active,
  6284. odometer)
  6285. AS
  6286. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6287. CASE
  6288. WHEN tt.connected THEN 'Sim'::text
  6289. ELSE 'Não'::text
  6290. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6291. FROM vlt_device dev
  6292. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  6293. FROM vlt_transaction
  6294. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  6295. ORDER BY vlt_transaction.idtransaction DESC
  6296. LIMIT 1))
  6297. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6298. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  6299. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  6300. WHERE dev.active;
  6301. CREATE OR REPLACE VIEW public.vlt_grouped_transactions_vw (
  6302. address,
  6303. connected,
  6304. driver,
  6305. description,
  6306. hour,
  6307. iddevice,
  6308. idtransaction,
  6309. idtransaction_group,
  6310. is_connected,
  6311. latitude,
  6312. longitude,
  6313. online,
  6314. speed,
  6315. start_date,
  6316. vehicle_code,
  6317. has_battery,
  6318. has_analog_ports,
  6319. has_digital_ports,
  6320. has_tpms,
  6321. has_fuel,
  6322. has_temperature)
  6323. AS
  6324. SELECT vlt_transaction.address,
  6325. CASE
  6326. WHEN vlt_transaction.connected THEN 'Sim'::text
  6327. ELSE 'Não'::text
  6328. END AS connected, vlt_driver.driver, vlt_device.description, vlt_transaction.time_dif AS hour, vlt_transaction.iddevice, vlt_transaction.idtransaction, vlt_transaction.idtransaction_group, vlt_transaction.connected AS is_connected, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.online, vlt_transaction.speed, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi:ss'::text) AS start_date, vlt_device.vehicle_code, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  6329. FROM vlt_transaction
  6330. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  6331. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_transaction.iddriver
  6332. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  6333. WHERE vlt_transaction.valid
  6334. ORDER BY vlt_transaction.command_date;
  6335. CREATE OR REPLACE VIEW public.vlt_port_status_vw (
  6336. description,
  6337. value,
  6338. type,
  6339. idtransaction_filter,
  6340. output)
  6341. AS
  6342. SELECT vlt_port.description, vlt_port_status.value,
  6343. CASE
  6344. WHEN vlt_record_type.code::text = '6'::text THEN 'D'::text
  6345. ELSE 'A'::text
  6346. END AS type, vlt_transaction_last.idtransaction AS idtransaction_filter, vlt_port.output
  6347. FROM vlt_transaction_last
  6348. JOIN vlt_record_type ON vlt_record_type.idrecordtype = vlt_transaction_last.idrecordtype AND (vlt_record_type.code::text = ANY (ARRAY['6'::text, '7'::text]))
  6349. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_transaction_last.idtransaction_last
  6350. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  6351. JOIN vlt_port ON vlt_port.iddevicemodel = vlt_device.iddevicemodel AND vlt_port.fuel = false
  6352. JOIN vlt_port_status ON vlt_port_status.idport = vlt_port.idport AND vlt_port_status.idtransaction = vlt_transaction_last.idtransaction_last;
  6353. CREATE OR REPLACE VIEW public.vlt_refuel_vw (
  6354. idrefuel,
  6355. idrefuelstation,
  6356. refuel_code,
  6357. refuel_date,
  6358. refuel_liters,
  6359. refuel_value,
  6360. idtransaction,
  6361. iddevice,
  6362. name,
  6363. vehicle_code,
  6364. per_liter,
  6365. idcustomer)
  6366. AS
  6367. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value /
  6368. CASE
  6369. WHEN vlt_refuel.refuel_liters = 0::numeric THEN 1::numeric
  6370. ELSE vlt_refuel.refuel_liters
  6371. END AS per_liter, vlt_device.idcustomer
  6372. FROM vlt_refuel
  6373. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  6374. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  6375. ORDER BY vlt_device.vehicle_code;
  6376. CREATE OR REPLACE VIEW public.vlt_seller_dc_vw (
  6377. iddevice,
  6378. idseller,
  6379. vehicle_code,
  6380. device_search,
  6381. vehicle,
  6382. command_date,
  6383. record_type,
  6384. active,
  6385. code)
  6386. AS
  6387. SELECT q.iddevice, q.idseller, q.vehicle_code, q.device_search, q.vehicle, tt.command_date, rt.description AS record_type, q.active, q.code
  6388. FROM ( SELECT vlt_device.iddevice, par_customer.idseller, vlt_device.vehicle_code, vlt_device.device_search, vlt_device.description AS vehicle, vlt_device.active, vlt_device.code, vlt_last_tran_dev_fnc(vlt_device.iddevice) AS idtransaction
  6389. FROM vlt_device, par_customer
  6390. WHERE par_customer.idseller IS NOT NULL AND par_customer.idcustomer = vlt_device.idcustomer) q, vlt_transaction tt, vlt_record_type rt
  6391. WHERE tt.idtransaction = q.idtransaction AND rt.idrecordtype = tt.idrecordtype;
  6392. CREATE OR REPLACE VIEW public.vlt_tpms_disparity_vw (
  6393. vehicle_code,
  6394. description,
  6395. tpms_sequence,
  6396. temperature,
  6397. valr_min_temperature,
  6398. valr_max_temperature,
  6399. pressure,
  6400. valr_min_preassure,
  6401. valr_max_preassure,
  6402. idcustomer,
  6403. transaction_date)
  6404. AS
  6405. SELECT vlt_device.vehicle_code, vlt_device.description, vlt_tpms.tpms_sequence, vlt_tpms_value.temperature, vlt_tpms_model.valr_min_temperature, vlt_tpms_model.valr_max_temperature, vlt_tpms_value.pressure, vlt_tpms_model.valr_min_preassure, vlt_tpms_model.valr_max_preassure, vlt_device.idcustomer, to_char(vlt_transaction.transaction_date, 'dd/mm/yyyy hh24:mi'::text) AS transaction_date
  6406. FROM vlt_tpms
  6407. JOIN vlt_device ON vlt_device.iddevice = vlt_tpms.iddevice
  6408. JOIN vlt_tpms_value ON vlt_tpms_value.idtpmsvalue = vlt_tpms.idtpmsvalue_last
  6409. JOIN vlt_tpms_model ON vlt_tpms_model.id = vlt_device.idtpmsmodel AND (vlt_tpms_model.valr_min_temperature > vlt_tpms_value.temperature OR vlt_tpms_model.valr_max_temperature < vlt_tpms_value.temperature OR vlt_tpms_model.valr_min_preassure > vlt_tpms_value.pressure OR vlt_tpms_model.valr_max_preassure < vlt_tpms_value.pressure)
  6410. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_tpms_value.idtransaction
  6411. ORDER BY vlt_device.vehicle_code, vlt_tpms.tpms_sequence;
  6412. CREATE OR REPLACE VIEW public.vlt_transaction_driver_vw (
  6413. idtransactiondriver,
  6414. iddriver,
  6415. transaction_date,
  6416. iddevice,
  6417. idcustomer,
  6418. driver,
  6419. device)
  6420. AS
  6421. SELECT td.idtransactiondriver, td.iddriver, td.transaction_date, td.iddevice, dev.idcustomer, d.driver, dev.vehicle_code AS device
  6422. FROM vlt_device dev
  6423. JOIN vlt_transaction_driver td ON td.iddevice = dev.iddevice
  6424. JOIN vlt_driver d ON d.iddriver = td.iddriver
  6425. WHERE dev.active
  6426. ORDER BY td.transaction_date;
  6427.  
  6428. -- object recreation
  6429. DROP INDEX public.vlt_device_idx4;
  6430.  
  6431. CREATE INDEX vlt_device_idx4 ON public.vlt_device
  6432. USING btree (idcustomer);
  6433.  
  6434. -- object recreation
  6435. ALTER TABLE public.vlt_device_finger
  6436. DROP CONSTRAINT check01 RESTRICT;
  6437.  
  6438. ALTER TABLE public.vlt_device_finger
  6439. ADD CONSTRAINT check01 CHECK ((status)::text = ANY ((ARRAY['A'::character varying, 'E'::character varying, 'O'::character varying, 'X'::character varying, 'T'::character varying])::text[]));
  6440.  
  6441. CREATE TABLE public.vlt_device_sim (
  6442. iddevicesim BIGINT DEFAULT nextval('vlt_device_sin_iddevicesin_seq'::regclass) NOT NULL,
  6443. iddevice BIGINT NOT NULL,
  6444. idsim BIGINT NOT NULL,
  6445. CONSTRAINT vltdevicesin_pkey PRIMARY KEY(iddevicesim),
  6446. CONSTRAINT foreign_key01 FOREIGN KEY (iddevice)
  6447. REFERENCES public.vlt_device(iddevice)
  6448. ON DELETE NO ACTION
  6449. ON UPDATE NO ACTION
  6450. NOT DEFERRABLE,
  6451. CONSTRAINT foreign_key02 FOREIGN KEY (idsim)
  6452. REFERENCES public.vlt_sim(idsim)
  6453. ON DELETE NO ACTION
  6454. ON UPDATE NO ACTION
  6455. NOT DEFERRABLE
  6456. ) WITHOUT OIDS;
  6457.  
  6458. CREATE INDEX vlt_device_sim_idx01 ON public.vlt_device_sim
  6459. USING btree (iddevice);
  6460.  
  6461. DROP VIEW public.vlt_transaction_driver_vw;
  6462. DROP VIEW public.vlt_grouped_transactions_vw;
  6463. DROP VIEW public.vlt_driver_workday_date_vw;
  6464. DROP VIEW public.vlt_device_vw_old;
  6465. DROP VIEW public.vlt_device_vw_ant;
  6466. DROP VIEW public.vlt_device_vw;
  6467. DROP VIEW public.vlt_device_finger_vw;
  6468. DROP VIEW public.rpt_worked_hours_driver_vw;
  6469. DROP VIEW public.rpt_worked_hours_device_vw;
  6470. DROP VIEW public.mce_driver_vw;
  6471. DROP VIEW public.mce_device_vw;
  6472. ALTER TABLE public.vlt_driver
  6473. ALTER COLUMN code TYPE VARCHAR(4);
  6474. CREATE OR REPLACE VIEW public.mce_device_vw (
  6475. iddevice,
  6476. code,
  6477. device_search,
  6478. description,
  6479. vehicle_code,
  6480. address,
  6481. speed,
  6482. connected,
  6483. command_date,
  6484. has_battery,
  6485. has_analog_ports,
  6486. has_digital_ports,
  6487. has_tpms,
  6488. has_fuel,
  6489. has_temperature,
  6490. idmonitoringcenter,
  6491. customer,
  6492. idcustomer,
  6493. driver,
  6494. active,
  6495. speed_limit,
  6496. renavam,
  6497. chassi,
  6498. mark_vehicle,
  6499. model_vehicle,
  6500. color_vehicle,
  6501. fuel_estimate)
  6502. AS
  6503. SELECT vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature, vlt_device_mc.idmonitoringcenter, par_customer.customer, par_customer.idcustomer, vlt_driver.driver, vlt_device.active, vlt_device.speed_limit, vlt_device.renavam, vlt_device.chassi, vlt_device.mark_vehicle, vlt_device.model_vehicle, vlt_device.color_vehicle, vlt_device.fuel_estimate
  6504. FROM vlt_device
  6505. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_device.last_driver
  6506. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_last_tran_dev_fnc(vlt_device.iddevice)
  6507. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  6508. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  6509. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  6510. WHERE vlt_device.active
  6511. ORDER BY vlt_device.vehicle_code, vlt_device.description;
  6512. CREATE OR REPLACE VIEW public.mce_driver_vw (
  6513. iddriver,
  6514. code,
  6515. driver,
  6516. last_date,
  6517. parcust_id,
  6518. password,
  6519. idmonitoringcenter,
  6520. idcustomer)
  6521. AS
  6522. SELECT vlt_driver.iddriver, vlt_driver.code, vlt_driver.driver, vlt_driver.last_date, vlt_driver.parcust_id, vlt_driver.password, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  6523. FROM vlt_driver
  6524. JOIN vlt_device ON vlt_device.idcustomer = vlt_driver.parcust_id
  6525. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  6526. GROUP BY vlt_driver.iddriver, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  6527. ORDER BY vlt_device_mc.idmonitoringcenter;
  6528. CREATE OR REPLACE VIEW public.rpt_worked_hours_device_vw (
  6529. vehicle,
  6530. driver,
  6531. data_trabalhada,
  6532. inicio,
  6533. termino,
  6534. horas,
  6535. iddevice)
  6536. AS
  6537. SELECT vlt_device.vehicle_code AS vehicle, ( SELECT vlt_driver.driver
  6538. FROM vlt_driver
  6539. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_driver_record.iddevice
  6540. FROM vlt_driver_record
  6541. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  6542. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  6543. JOIN vlt_device ON vlt_device.iddevice = vlt_driver_record.iddevice
  6544. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_device.vehicle_code, vlt_driver_record.idtransaction_start
  6545. ORDER BY tstart.command_date, tend.command_date;
  6546. CREATE OR REPLACE VIEW public.rpt_worked_hours_driver_vw (
  6547. vehicle,
  6548. driver,
  6549. data_trabalhada,
  6550. inicio,
  6551. termino,
  6552. horas,
  6553. iddriver)
  6554. AS
  6555. SELECT ( SELECT vlt_device.vehicle_code
  6556. FROM vlt_device
  6557. WHERE vlt_device.iddevice = vlt_driver_record.iddevice) AS vehicle, ( SELECT vlt_driver.driver
  6558. FROM vlt_driver
  6559. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start) AS iddriver
  6560. FROM vlt_driver_record
  6561. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  6562. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  6563. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_driver_record.idtransaction_start
  6564. ORDER BY tstart.command_date, tend.command_date;
  6565. CREATE OR REPLACE VIEW public.vlt_device_finger_vw (
  6566. iddevicefinger,
  6567. iddevice,
  6568. vehicle_code,
  6569. iddriver,
  6570. driver,
  6571. idcustomer)
  6572. AS
  6573. SELECT def.iddevicefinger, dev.iddevice, (COALESCE(dev.vehicle_code, ''::character varying)::text || ' '::text) || COALESCE(dev.description, ''::character varying)::text AS vehicle_code, drv.iddriver, drv.driver, dev.idcustomer
  6574. FROM vlt_device_finger def, vlt_device dev, vlt_driver_finger drf, vlt_driver drv
  6575. WHERE def.iddevice = dev.iddevice AND drf.iddriverfinger = def.iddriverfinger AND drf.iddriver = drv.iddriver
  6576. ORDER BY dev.vehicle_code, drv.code;
  6577. CREATE OR REPLACE VIEW public.vlt_device_vw (
  6578. iddevice,
  6579. description,
  6580. latitude,
  6581. longitude,
  6582. vehicle_code,
  6583. idcustomer,
  6584. code,
  6585. device_search,
  6586. has_battery,
  6587. has_analog_ports,
  6588. has_digital_ports,
  6589. has_tpms,
  6590. has_fuel,
  6591. has_temperature,
  6592. connected,
  6593. is_connected,
  6594. speed,
  6595. command_date,
  6596. start_date,
  6597. driver,
  6598. address,
  6599. idtransaction,
  6600. online,
  6601. record_type,
  6602. has_alert,
  6603. active,
  6604. odometer)
  6605. AS
  6606. SELECT q.iddevice, q.description, q.latitude, q.longitude, q.vehicle_code, q.idcustomer, q.code, q.device_search, q.has_battery, q.has_analog_ports, q.has_digital_ports, q.has_tpms, q.has_fuel, q.has_temperature, q.connected, q.is_connected, q.speed, q.command_date, q.start_date, q.driver, q.address, q.idtransaction, q.online, q.record_type, q.has_alert, q.active, q.odometer
  6607. FROM ( SELECT dev.iddevice, dev.description, tt.latitude, tt.longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6608. CASE
  6609. WHEN tt.connected THEN 'Sim'::text
  6610. ELSE 'Não'::text
  6611. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, ( SELECT drv.driver
  6612. FROM vlt_driver drv
  6613. WHERE drv.iddriver = tt.iddriver) AS driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6614. FROM ( SELECT vlt_device.iddevice, vlt_last_invalid_tran_dev_fnc(vlt_device.iddevice) AS idtransaction, vlt_device.idcustomer
  6615. FROM vlt_device) tbl
  6616. JOIN vlt_transaction tt ON tt.idtransaction = tbl.idtransaction
  6617. JOIN vlt_device dev ON dev.iddevice = tbl.iddevice
  6618. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6619. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype) q;
  6620. CREATE OR REPLACE VIEW public.vlt_device_vw_ant (
  6621. iddevice,
  6622. description,
  6623. latitude,
  6624. longitude,
  6625. vehicle_code,
  6626. idcustomer,
  6627. code,
  6628. device_search,
  6629. has_battery,
  6630. has_analog_ports,
  6631. has_digital_ports,
  6632. has_tpms,
  6633. has_fuel,
  6634. has_temperature,
  6635. connected,
  6636. is_connected,
  6637. speed,
  6638. command_date,
  6639. start_date,
  6640. driver,
  6641. address,
  6642. idtransaction,
  6643. online,
  6644. record_type,
  6645. has_alert,
  6646. active,
  6647. odometer)
  6648. AS
  6649. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6650. CASE
  6651. WHEN tt.connected THEN 'Sim'::text
  6652. ELSE 'Não'::text
  6653. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6654. FROM vlt_device dev
  6655. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  6656. FROM vlt_transaction
  6657. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  6658. ORDER BY vlt_transaction.idtransaction DESC
  6659. LIMIT 1))
  6660. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6661. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  6662. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  6663. WHERE dev.active;
  6664. CREATE OR REPLACE VIEW public.vlt_device_vw_old (
  6665. iddevice,
  6666. description,
  6667. latitude,
  6668. longitude,
  6669. vehicle_code,
  6670. idcustomer,
  6671. code,
  6672. device_search,
  6673. has_battery,
  6674. has_analog_ports,
  6675. has_digital_ports,
  6676. has_tpms,
  6677. has_fuel,
  6678. has_temperature,
  6679. connected,
  6680. is_connected,
  6681. speed,
  6682. command_date,
  6683. start_date,
  6684. driver,
  6685. address,
  6686. idtransaction,
  6687. online,
  6688. record_type,
  6689. has_alert,
  6690. active,
  6691. odometer)
  6692. AS
  6693. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6694. CASE
  6695. WHEN tt.connected THEN 'Sim'::text
  6696. ELSE 'Não'::text
  6697. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6698. FROM vlt_device dev
  6699. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  6700. FROM vlt_transaction
  6701. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  6702. ORDER BY vlt_transaction.idtransaction DESC
  6703. LIMIT 1))
  6704. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6705. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  6706. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  6707. WHERE dev.active;
  6708. CREATE OR REPLACE VIEW public.vlt_driver_workday_date_vw (
  6709. date,
  6710. idcustomer,
  6711. to_char)
  6712. AS
  6713. SELECT DISTINCT to_char(vlt_driver_workday.workday_date::timestamp with time zone, 'mm/yyyy'::text) AS date, par_customer.idcustomer, to_char(vlt_driver_workday.workday_date::timestamp with time zone, 'yyyy-mm'::text) AS to_char
  6714. FROM vlt_driver_workday
  6715. JOIN vlt_driver ON vlt_driver.iddriver = vlt_driver_workday.iddriver
  6716. JOIN par_customer ON vlt_driver.parcust_id = par_customer.idcustomer
  6717. ORDER BY to_char(vlt_driver_workday.workday_date::timestamp with time zone, 'yyyy-mm'::text) DESC;
  6718. CREATE OR REPLACE VIEW public.vlt_grouped_transactions_vw (
  6719. address,
  6720. connected,
  6721. driver,
  6722. description,
  6723. hour,
  6724. iddevice,
  6725. idtransaction,
  6726. idtransaction_group,
  6727. is_connected,
  6728. latitude,
  6729. longitude,
  6730. online,
  6731. speed,
  6732. start_date,
  6733. vehicle_code,
  6734. has_battery,
  6735. has_analog_ports,
  6736. has_digital_ports,
  6737. has_tpms,
  6738. has_fuel,
  6739. has_temperature)
  6740. AS
  6741. SELECT vlt_transaction.address,
  6742. CASE
  6743. WHEN vlt_transaction.connected THEN 'Sim'::text
  6744. ELSE 'Não'::text
  6745. END AS connected, vlt_driver.driver, vlt_device.description, vlt_transaction.time_dif AS hour, vlt_transaction.iddevice, vlt_transaction.idtransaction, vlt_transaction.idtransaction_group, vlt_transaction.connected AS is_connected, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.online, vlt_transaction.speed, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi:ss'::text) AS start_date, vlt_device.vehicle_code, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  6746. FROM vlt_transaction
  6747. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  6748. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_transaction.iddriver
  6749. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  6750. WHERE vlt_transaction.valid
  6751. ORDER BY vlt_transaction.command_date;
  6752. CREATE OR REPLACE VIEW public.vlt_transaction_driver_vw (
  6753. idtransactiondriver,
  6754. iddriver,
  6755. transaction_date,
  6756. iddevice,
  6757. idcustomer,
  6758. driver,
  6759. device)
  6760. AS
  6761. SELECT td.idtransactiondriver, td.iddriver, td.transaction_date, td.iddevice, dev.idcustomer, d.driver, dev.vehicle_code AS device
  6762. FROM vlt_device dev
  6763. JOIN vlt_transaction_driver td ON td.iddevice = dev.iddevice
  6764. JOIN vlt_driver d ON d.iddriver = td.iddriver
  6765. WHERE dev.active
  6766. ORDER BY td.transaction_date;
  6767.  
  6768. DROP VIEW public.vlt_transaction_driver_vw;
  6769. DROP VIEW public.vlt_grouped_transactions_vw;
  6770. DROP VIEW public.vlt_driver_workday_date_vw;
  6771. DROP VIEW public.vlt_device_vw_old;
  6772. DROP VIEW public.vlt_device_vw_ant;
  6773. DROP VIEW public.vlt_device_vw;
  6774. DROP VIEW public.vlt_device_finger_vw;
  6775. DROP VIEW public.rpt_worked_hours_driver_vw;
  6776. DROP VIEW public.rpt_worked_hours_device_vw;
  6777. DROP VIEW public.mce_driver_vw;
  6778. DROP VIEW public.mce_device_vw;
  6779. ALTER TABLE public.vlt_driver
  6780. ALTER COLUMN driver TYPE VARCHAR(60);
  6781. CREATE OR REPLACE VIEW public.mce_device_vw (
  6782. iddevice,
  6783. code,
  6784. device_search,
  6785. description,
  6786. vehicle_code,
  6787. address,
  6788. speed,
  6789. connected,
  6790. command_date,
  6791. has_battery,
  6792. has_analog_ports,
  6793. has_digital_ports,
  6794. has_tpms,
  6795. has_fuel,
  6796. has_temperature,
  6797. idmonitoringcenter,
  6798. customer,
  6799. idcustomer,
  6800. driver,
  6801. active,
  6802. speed_limit,
  6803. renavam,
  6804. chassi,
  6805. mark_vehicle,
  6806. model_vehicle,
  6807. color_vehicle,
  6808. fuel_estimate)
  6809. AS
  6810. SELECT vlt_device.iddevice, vlt_device.code, vlt_device.device_search, vlt_device.description, vlt_device.vehicle_code, vlt_transaction.address, vlt_transaction.speed, vlt_transaction.connected, vlt_transaction.command_date, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature, vlt_device_mc.idmonitoringcenter, par_customer.customer, par_customer.idcustomer, vlt_driver.driver, vlt_device.active, vlt_device.speed_limit, vlt_device.renavam, vlt_device.chassi, vlt_device.mark_vehicle, vlt_device.model_vehicle, vlt_device.color_vehicle, vlt_device.fuel_estimate
  6811. FROM vlt_device
  6812. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_device.last_driver
  6813. JOIN vlt_transaction ON vlt_transaction.idtransaction = vlt_last_tran_dev_fnc(vlt_device.iddevice)
  6814. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  6815. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  6816. JOIN par_customer ON par_customer.idcustomer = vlt_device.idcustomer
  6817. WHERE vlt_device.active
  6818. ORDER BY vlt_device.vehicle_code, vlt_device.description;
  6819. CREATE OR REPLACE VIEW public.mce_driver_vw (
  6820. iddriver,
  6821. code,
  6822. driver,
  6823. last_date,
  6824. parcust_id,
  6825. password,
  6826. idmonitoringcenter,
  6827. idcustomer)
  6828. AS
  6829. SELECT vlt_driver.iddriver, vlt_driver.code, vlt_driver.driver, vlt_driver.last_date, vlt_driver.parcust_id, vlt_driver.password, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  6830. FROM vlt_driver
  6831. JOIN vlt_device ON vlt_device.idcustomer = vlt_driver.parcust_id
  6832. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  6833. GROUP BY vlt_driver.iddriver, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  6834. ORDER BY vlt_device_mc.idmonitoringcenter;
  6835. CREATE OR REPLACE VIEW public.rpt_worked_hours_device_vw (
  6836. vehicle,
  6837. driver,
  6838. data_trabalhada,
  6839. inicio,
  6840. termino,
  6841. horas,
  6842. iddevice)
  6843. AS
  6844. SELECT vlt_device.vehicle_code AS vehicle, ( SELECT vlt_driver.driver
  6845. FROM vlt_driver
  6846. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_driver_record.iddevice
  6847. FROM vlt_driver_record
  6848. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  6849. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  6850. JOIN vlt_device ON vlt_device.iddevice = vlt_driver_record.iddevice
  6851. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_device.vehicle_code, vlt_driver_record.idtransaction_start
  6852. ORDER BY tstart.command_date, tend.command_date;
  6853. CREATE OR REPLACE VIEW public.rpt_worked_hours_driver_vw (
  6854. vehicle,
  6855. driver,
  6856. data_trabalhada,
  6857. inicio,
  6858. termino,
  6859. horas,
  6860. iddriver)
  6861. AS
  6862. SELECT ( SELECT vlt_device.vehicle_code
  6863. FROM vlt_device
  6864. WHERE vlt_device.iddevice = vlt_driver_record.iddevice) AS vehicle, ( SELECT vlt_driver.driver
  6865. FROM vlt_driver
  6866. WHERE vlt_driver.iddriver = vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start)) AS driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_transaction_driver_fnc(vlt_driver_record.idtransaction_start) AS iddriver
  6867. FROM vlt_driver_record
  6868. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  6869. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  6870. GROUP BY vlt_driver_record.iddevice, tstart.command_date, tend.command_date, vlt_driver_record.idtransaction_start
  6871. ORDER BY tstart.command_date, tend.command_date;
  6872. CREATE OR REPLACE VIEW public.vlt_device_finger_vw (
  6873. iddevicefinger,
  6874. iddevice,
  6875. vehicle_code,
  6876. iddriver,
  6877. driver,
  6878. idcustomer)
  6879. AS
  6880. SELECT def.iddevicefinger, dev.iddevice, (COALESCE(dev.vehicle_code, ''::character varying)::text || ' '::text) || COALESCE(dev.description, ''::character varying)::text AS vehicle_code, drv.iddriver, drv.driver, dev.idcustomer
  6881. FROM vlt_device_finger def, vlt_device dev, vlt_driver_finger drf, vlt_driver drv
  6882. WHERE def.iddevice = dev.iddevice AND drf.iddriverfinger = def.iddriverfinger AND drf.iddriver = drv.iddriver
  6883. ORDER BY dev.vehicle_code, drv.code;
  6884. CREATE OR REPLACE VIEW public.vlt_device_vw (
  6885. iddevice,
  6886. description,
  6887. latitude,
  6888. longitude,
  6889. vehicle_code,
  6890. idcustomer,
  6891. code,
  6892. device_search,
  6893. has_battery,
  6894. has_analog_ports,
  6895. has_digital_ports,
  6896. has_tpms,
  6897. has_fuel,
  6898. has_temperature,
  6899. connected,
  6900. is_connected,
  6901. speed,
  6902. command_date,
  6903. start_date,
  6904. driver,
  6905. address,
  6906. idtransaction,
  6907. online,
  6908. record_type,
  6909. has_alert,
  6910. active,
  6911. odometer)
  6912. AS
  6913. SELECT q.iddevice, q.description, q.latitude, q.longitude, q.vehicle_code, q.idcustomer, q.code, q.device_search, q.has_battery, q.has_analog_ports, q.has_digital_ports, q.has_tpms, q.has_fuel, q.has_temperature, q.connected, q.is_connected, q.speed, q.command_date, q.start_date, q.driver, q.address, q.idtransaction, q.online, q.record_type, q.has_alert, q.active, q.odometer
  6914. FROM ( SELECT dev.iddevice, dev.description, tt.latitude, tt.longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6915. CASE
  6916. WHEN tt.connected THEN 'Sim'::text
  6917. ELSE 'Não'::text
  6918. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, ( SELECT drv.driver
  6919. FROM vlt_driver drv
  6920. WHERE drv.iddriver = tt.iddriver) AS driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6921. FROM ( SELECT vlt_device.iddevice, vlt_last_invalid_tran_dev_fnc(vlt_device.iddevice) AS idtransaction, vlt_device.idcustomer
  6922. FROM vlt_device) tbl
  6923. JOIN vlt_transaction tt ON tt.idtransaction = tbl.idtransaction
  6924. JOIN vlt_device dev ON dev.iddevice = tbl.iddevice
  6925. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6926. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype) q;
  6927. CREATE OR REPLACE VIEW public.vlt_device_vw_ant (
  6928. iddevice,
  6929. description,
  6930. latitude,
  6931. longitude,
  6932. vehicle_code,
  6933. idcustomer,
  6934. code,
  6935. device_search,
  6936. has_battery,
  6937. has_analog_ports,
  6938. has_digital_ports,
  6939. has_tpms,
  6940. has_fuel,
  6941. has_temperature,
  6942. connected,
  6943. is_connected,
  6944. speed,
  6945. command_date,
  6946. start_date,
  6947. driver,
  6948. address,
  6949. idtransaction,
  6950. online,
  6951. record_type,
  6952. has_alert,
  6953. active,
  6954. odometer)
  6955. AS
  6956. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  6957. CASE
  6958. WHEN tt.connected THEN 'Sim'::text
  6959. ELSE 'Não'::text
  6960. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  6961. FROM vlt_device dev
  6962. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  6963. FROM vlt_transaction
  6964. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  6965. ORDER BY vlt_transaction.idtransaction DESC
  6966. LIMIT 1))
  6967. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  6968. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  6969. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  6970. WHERE dev.active;
  6971. CREATE OR REPLACE VIEW public.vlt_device_vw_old (
  6972. iddevice,
  6973. description,
  6974. latitude,
  6975. longitude,
  6976. vehicle_code,
  6977. idcustomer,
  6978. code,
  6979. device_search,
  6980. has_battery,
  6981. has_analog_ports,
  6982. has_digital_ports,
  6983. has_tpms,
  6984. has_fuel,
  6985. has_temperature,
  6986. connected,
  6987. is_connected,
  6988. speed,
  6989. command_date,
  6990. start_date,
  6991. driver,
  6992. address,
  6993. idtransaction,
  6994. online,
  6995. record_type,
  6996. has_alert,
  6997. active,
  6998. odometer)
  6999. AS
  7000. SELECT dev.iddevice, dev.description, dev.last_latitude AS latitude, dev.last_longitude AS longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  7001. CASE
  7002. WHEN tt.connected THEN 'Sim'::text
  7003. ELSE 'Não'::text
  7004. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, drv.driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  7005. FROM vlt_device dev
  7006. JOIN vlt_transaction tt ON tt.idtransaction = (( SELECT vlt_transaction.idtransaction
  7007. FROM vlt_transaction
  7008. WHERE vlt_transaction.iddevice = dev.iddevice AND vlt_transaction.valid
  7009. ORDER BY vlt_transaction.idtransaction DESC
  7010. LIMIT 1))
  7011. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  7012. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype
  7013. LEFT JOIN vlt_driver drv ON drv.iddriver = tt.iddriver
  7014. WHERE dev.active;
  7015. CREATE OR REPLACE VIEW public.vlt_driver_workday_date_vw (
  7016. date,
  7017. idcustomer,
  7018. to_char)
  7019. AS
  7020. SELECT DISTINCT to_char(vlt_driver_workday.workday_date::timestamp with time zone, 'mm/yyyy'::text) AS date, par_customer.idcustomer, to_char(vlt_driver_workday.workday_date::timestamp with time zone, 'yyyy-mm'::text) AS to_char
  7021. FROM vlt_driver_workday
  7022. JOIN vlt_driver ON vlt_driver.iddriver = vlt_driver_workday.iddriver
  7023. JOIN par_customer ON vlt_driver.parcust_id = par_customer.idcustomer
  7024. ORDER BY to_char(vlt_driver_workday.workday_date::timestamp with time zone, 'yyyy-mm'::text) DESC;
  7025. CREATE OR REPLACE VIEW public.vlt_grouped_transactions_vw (
  7026. address,
  7027. connected,
  7028. driver,
  7029. description,
  7030. hour,
  7031. iddevice,
  7032. idtransaction,
  7033. idtransaction_group,
  7034. is_connected,
  7035. latitude,
  7036. longitude,
  7037. online,
  7038. speed,
  7039. start_date,
  7040. vehicle_code,
  7041. has_battery,
  7042. has_analog_ports,
  7043. has_digital_ports,
  7044. has_tpms,
  7045. has_fuel,
  7046. has_temperature)
  7047. AS
  7048. SELECT vlt_transaction.address,
  7049. CASE
  7050. WHEN vlt_transaction.connected THEN 'Sim'::text
  7051. ELSE 'Não'::text
  7052. END AS connected, vlt_driver.driver, vlt_device.description, vlt_transaction.time_dif AS hour, vlt_transaction.iddevice, vlt_transaction.idtransaction, vlt_transaction.idtransaction_group, vlt_transaction.connected AS is_connected, vlt_transaction.latitude, vlt_transaction.longitude, vlt_transaction.online, vlt_transaction.speed, to_char(vlt_transaction.command_date, 'dd/mm/yyyy hh24:mi:ss'::text) AS start_date, vlt_device.vehicle_code, vlt_device_model.has_battery, vlt_device_model.has_analog_ports, vlt_device_model.has_digital_ports, vlt_device_model.has_tpms, vlt_device_model.has_fuel, vlt_device_model.has_temperature
  7053. FROM vlt_transaction
  7054. JOIN vlt_device ON vlt_device.iddevice = vlt_transaction.iddevice
  7055. LEFT JOIN vlt_driver ON vlt_driver.iddriver = vlt_transaction.iddriver
  7056. JOIN vlt_device_model ON vlt_device_model.iddevicemodel = vlt_device.iddevicemodel
  7057. WHERE vlt_transaction.valid
  7058. ORDER BY vlt_transaction.command_date;
  7059. CREATE OR REPLACE VIEW public.vlt_transaction_driver_vw (
  7060. idtransactiondriver,
  7061. iddriver,
  7062. transaction_date,
  7063. iddevice,
  7064. idcustomer,
  7065. driver,
  7066. device)
  7067. AS
  7068. SELECT td.idtransactiondriver, td.iddriver, td.transaction_date, td.iddevice, dev.idcustomer, d.driver, dev.vehicle_code AS device
  7069. FROM vlt_device dev
  7070. JOIN vlt_transaction_driver td ON td.iddevice = dev.iddevice
  7071. JOIN vlt_driver d ON d.iddriver = td.iddriver
  7072. WHERE dev.active
  7073. ORDER BY td.transaction_date;
  7074.  
  7075. -- object recreation
  7076. ALTER TABLE public.vlt_driver_record
  7077. DROP CONSTRAINT vlr_driver_record_fk3 RESTRICT;
  7078.  
  7079. ALTER TABLE public.vlt_driver_record
  7080. ADD CONSTRAINT vlr_driver_record_fk3 FOREIGN KEY (idtransaction_start)
  7081. REFERENCES public.vlt_transaction(idtransaction)
  7082. ON DELETE NO ACTION
  7083. ON UPDATE NO ACTION
  7084. NOT DEFERRABLE;
  7085.  
  7086. ALTER TABLE public.vlt_firmware
  7087. ALTER COLUMN file SET NOT NULL;
  7088.  
  7089. ALTER TABLE public.vlt_firmware
  7090. ALTER COLUMN size SET NOT NULL;
  7091.  
  7092. ALTER TABLE public.vlt_firmware
  7093. ENABLE TRIGGER vlt_firmware_update;
  7094.  
  7095. -- object recreation
  7096. ALTER TABLE public.vlt_fuel
  7097. DROP CONSTRAINT foreign_key01 RESTRICT;
  7098.  
  7099. ALTER TABLE public.vlt_fuel
  7100. ADD CONSTRAINT foreign_key01 FOREIGN KEY (idfuelvalue_last)
  7101. REFERENCES public.vlt_fuel_value(idfuelvalue)
  7102. ON DELETE NO ACTION
  7103. ON UPDATE NO ACTION
  7104. NOT DEFERRABLE;
  7105.  
  7106. DROP VIEW public.vlt_command_vw;
  7107. DROP VIEW public.vlt_command_status_vw;
  7108. ALTER TABLE public.vlt_model_command
  7109. ALTER COLUMN command_text TYPE VARCHAR(80);
  7110. CREATE OR REPLACE VIEW public.vlt_command_status_vw (
  7111. idmodelcommand,
  7112. description,
  7113. icon,
  7114. command_text,
  7115. iddevicemodel,
  7116. btnclass,
  7117. iddevice,
  7118. has_parameter,
  7119. parameter,
  7120. access_level,
  7121. message,
  7122. command_date,
  7123. buttoncolor,
  7124. blocked,
  7125. loading,
  7126. sms)
  7127. AS
  7128. SELECT vlt_model_command.idmodelcommand, vlt_model_command.description, vlt_model_command.icon, vlt_model_command.command_text, vlt_model_command.iddevicemodel, ( SELECT
  7129. CASE
  7130. WHEN vlt_command.status::text = 'O'::text THEN 'btn-success'::text
  7131. WHEN vlt_command.status::text = 'X'::text THEN 'btn-danger'::text
  7132. WHEN vlt_command.status::text = 'A'::text THEN 'btn-info'::text
  7133. WHEN vlt_command.status::text = 'T'::text THEN 'btn-danger'::text
  7134. ELSE NULL::text
  7135. END AS "case"
  7136. FROM vlt_command
  7137. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  7138. FROM vlt_command
  7139. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))) AS btnclass, vlt_device.iddevice, vlt_model_command.has_parameter, vlt_model_command.parameter, vlt_model_command.access_level, ( SELECT vlt_command.message
  7140. FROM vlt_command
  7141. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  7142. FROM vlt_command
  7143. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS message, ( SELECT vlt_command.command_date
  7144. FROM vlt_command
  7145. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  7146. FROM vlt_command
  7147. WHERE vlt_command.iddevice = vlt_device.iddevice AND vlt_command.idmodelcommand = vlt_model_command.idmodelcommand))) AS command_date, COALESCE(( SELECT
  7148. CASE
  7149. WHEN vlt_command.status::text = 'O'::text THEN '#86b558'::text
  7150. WHEN vlt_command.status::text = 'X'::text THEN '#d3413b'::text
  7151. WHEN vlt_command.status::text = 'A'::text THEN '#68adde'::text
  7152. WHEN vlt_command.status::text = 'T'::text THEN '#d3413b'::text
  7153. ELSE '#68adde'::text
  7154. END AS "case"
  7155. FROM vlt_command
  7156. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  7157. FROM vlt_command
  7158. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), '#68adde'::text) AS buttoncolor,
  7159. CASE
  7160. WHEN (( SELECT count(*) AS count
  7161. FROM vlt_command
  7162. WHERE vlt_command.iddevice = vlt_device.iddevice AND (vlt_command.status::text = ANY (ARRAY['A'::text, 'E'::text])))) > 0 THEN true
  7163. ELSE false
  7164. END AS blocked, COALESCE(( SELECT
  7165. CASE
  7166. WHEN vlt_command.status::text = 'E'::text THEN true
  7167. WHEN vlt_command.status::text = 'A'::text THEN true
  7168. ELSE false
  7169. END AS "case"
  7170. FROM vlt_command
  7171. WHERE vlt_command.idcommand = (( SELECT max(vlt_command.idcommand) AS max
  7172. FROM vlt_command
  7173. WHERE vlt_command.idmodelcommand = vlt_model_command.idmodelcommand AND vlt_command.iddevice = vlt_device.iddevice))), false) AS loading, vlt_model_command.sms
  7174. FROM vlt_model_command
  7175. JOIN vlt_device ON vlt_device.iddevicemodel = vlt_model_command.iddevicemodel
  7176. LEFT JOIN vlt_model_command_param ON vlt_model_command_param.idmodelcommand = vlt_model_command.idmodelcommand
  7177. GROUP BY vlt_model_command.idmodelcommand, vlt_device.iddevice
  7178. ORDER BY vlt_model_command.idmodelcommand;
  7179. CREATE OR REPLACE VIEW public.vlt_command_vw (
  7180. iddevice,
  7181. message,
  7182. status,
  7183. command_date,
  7184. update_date,
  7185. description,
  7186. name,
  7187. idmodelcommand)
  7188. AS
  7189. SELECT vlt_command.iddevice, vlt_command.message, vlt_command.status, vlt_command.command_date, vlt_command.update_date, vlt_model_command.description, par_user.login AS name, vlt_model_command.idmodelcommand
  7190. FROM vlt_command
  7191. JOIN vlt_model_command ON vlt_model_command.idmodelcommand = vlt_command.idmodelcommand
  7192. JOIN par_user ON par_user.iduser = vlt_command.iduser;
  7193.  
  7194. -- object recreation
  7195. ALTER TABLE public.vlt_model_command_param
  7196. DROP CONSTRAINT check01 RESTRICT;
  7197.  
  7198. ALTER TABLE public.vlt_model_command_param
  7199. ADD CONSTRAINT check01 CHECK ((data_type)::text = ANY ((ARRAY['T'::character varying, 'N'::character varying, 'D'::character varying, 'B'::character varying])::text[]));
  7200.  
  7201. ALTER TABLE public.vlt_model_command_param_value
  7202. ALTER COLUMN value SET NOT NULL;
  7203.  
  7204. DROP VIEW public.vlt_seller_mc_vw;
  7205. ALTER TABLE public.vlt_monitoring_center
  7206. ALTER COLUMN district TYPE VARCHAR(60);
  7207. CREATE OR REPLACE VIEW public.vlt_seller_mc_vw (
  7208. idsellermc,
  7209. idseller,
  7210. idmonitoringcenter,
  7211. name)
  7212. AS
  7213. SELECT smc.idsellermc, smc.idseller, smc.idmonitoringcenter, mc.name
  7214. FROM vlt_seller_mc smc
  7215. JOIN vlt_monitoring_center mc ON mc.idmonitoringcenter = smc.idmonitoringcenter;
  7216.  
  7217. DROP VIEW public.vlt_seller_mc_vw;
  7218. ALTER TABLE public.vlt_monitoring_center
  7219. ALTER COLUMN city TYPE VARCHAR(60);
  7220. CREATE OR REPLACE VIEW public.vlt_seller_mc_vw (
  7221. idsellermc,
  7222. idseller,
  7223. idmonitoringcenter,
  7224. name)
  7225. AS
  7226. SELECT smc.idsellermc, smc.idseller, smc.idmonitoringcenter, mc.name
  7227. FROM vlt_seller_mc smc
  7228. JOIN vlt_monitoring_center mc ON mc.idmonitoringcenter = smc.idmonitoringcenter;
  7229.  
  7230. DROP VIEW public.vlt_refuel_vw;
  7231. DROP VIEW public.mce_refuel_vw;
  7232. DROP VIEW public.mce_refuel_station_vw;
  7233. ALTER TABLE public.vlt_refuel_station
  7234. ALTER COLUMN name SET NOT NULL;
  7235. CREATE OR REPLACE VIEW public.mce_refuel_station_vw (
  7236. idrefuelstation,
  7237. code,
  7238. name,
  7239. idinterestpoint,
  7240. idcustomer,
  7241. idmonitoringcenter)
  7242. AS
  7243. SELECT vlt_refuel_station.idrefuelstation, vlt_refuel_station.code, vlt_refuel_station.name, vlt_refuel_station.idinterestpoint, vlt_refuel_station.idcustomer, vlt_device_mc.idmonitoringcenter
  7244. FROM vlt_refuel_station
  7245. JOIN vlt_device ON vlt_device.idcustomer = vlt_refuel_station.idcustomer
  7246. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  7247. GROUP BY vlt_refuel_station.idrefuelstation, vlt_device_mc.idmonitoringcenter
  7248. ORDER BY vlt_device_mc.idmonitoringcenter;
  7249. CREATE OR REPLACE VIEW public.mce_refuel_vw (
  7250. idrefuel,
  7251. idrefuelstation,
  7252. refuel_code,
  7253. refuel_date,
  7254. refuel_liters,
  7255. refuel_value,
  7256. idtransaction,
  7257. iddevice,
  7258. name,
  7259. vehicle_code,
  7260. per_liter,
  7261. idmonitoringcenter,
  7262. idcustomer)
  7263. AS
  7264. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value / vlt_refuel.refuel_liters AS per_liter, vlt_device_mc.idmonitoringcenter, vlt_device.idcustomer
  7265. FROM vlt_refuel
  7266. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  7267. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  7268. JOIN vlt_device_mc ON vlt_device_mc.iddevice = vlt_device.iddevice
  7269. ORDER BY vlt_device.vehicle_code;
  7270. CREATE OR REPLACE VIEW public.vlt_refuel_vw (
  7271. idrefuel,
  7272. idrefuelstation,
  7273. refuel_code,
  7274. refuel_date,
  7275. refuel_liters,
  7276. refuel_value,
  7277. idtransaction,
  7278. iddevice,
  7279. name,
  7280. vehicle_code,
  7281. per_liter,
  7282. idcustomer)
  7283. AS
  7284. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, vlt_refuel.refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value /
  7285. CASE
  7286. WHEN vlt_refuel.refuel_liters = 0::numeric THEN 1::numeric
  7287. ELSE vlt_refuel.refuel_liters
  7288. END AS per_liter, vlt_device.idcustomer
  7289. FROM vlt_refuel
  7290. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  7291. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  7292. ORDER BY vlt_device.vehicle_code;
  7293.  
  7294. CREATE TABLE public.vlt_sim (
  7295. idsim BIGINT DEFAULT nextval('vlt_sin_idsin_seq'::regclass) NOT NULL,
  7296. idseller BIGINT NOT NULL,
  7297. code_sim VARCHAR(100) NOT NULL,
  7298. desc_phone VARCHAR(15) NOT NULL,
  7299. sim_search TSVECTOR,
  7300. CONSTRAINT idsin_pkey PRIMARY KEY(idsim),
  7301. CONSTRAINT foreign_key01 FOREIGN KEY (idseller)
  7302. REFERENCES public.vlt_seller(idseller)
  7303. ON DELETE NO ACTION
  7304. ON UPDATE NO ACTION
  7305. NOT DEFERRABLE
  7306. ) WITHOUT OIDS;
  7307.  
  7308. CREATE INDEX vlt_sim_idx01 ON public.vlt_sim
  7309. USING btree (idseller);
  7310.  
  7311. CREATE TRIGGER vlt_sim_trg AFTER INSERT OR UPDATE
  7312. ON public.vlt_sim FOR EACH ROW
  7313. EXECUTE PROCEDURE public.vlt_sim_fnc();
  7314.  
  7315. CREATE TABLE public.vlt_sim_history (
  7316. idsimhistory BIGINT DEFAULT nextval('vlt_sim_history_idsimhistory_seq'::regclass) NOT NULL,
  7317. idsim BIGINT NOT NULL,
  7318. idseller BIGINT,
  7319. iddevice BIGINT,
  7320. history_date TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL,
  7321. iduser BIGINT,
  7322. status CHAR(1) DEFAULT 'I'::bpchar NOT NULL,
  7323. CONSTRAINT vlt_sim_history_pkey PRIMARY KEY(idsimhistory),
  7324. CONSTRAINT vlt_sim_history_chk CHECK (status = ANY (ARRAY['A'::bpchar, 'I'::bpchar, 'B'::bpchar])),
  7325. CONSTRAINT foreign_key01 FOREIGN KEY (idsim)
  7326. REFERENCES public.vlt_sim(idsim)
  7327. ON DELETE NO ACTION
  7328. ON UPDATE NO ACTION
  7329. NOT DEFERRABLE,
  7330. CONSTRAINT foreign_key02 FOREIGN KEY (idseller)
  7331. REFERENCES public.vlt_seller(idseller)
  7332. ON DELETE NO ACTION
  7333. ON UPDATE NO ACTION
  7334. NOT DEFERRABLE,
  7335. CONSTRAINT foreign_key03 FOREIGN KEY (iddevice)
  7336. REFERENCES public.vlt_device(iddevice)
  7337. ON DELETE NO ACTION
  7338. ON UPDATE NO ACTION
  7339. NOT DEFERRABLE,
  7340. CONSTRAINT foreign_key04 FOREIGN KEY (iduser)
  7341. REFERENCES public.par_user(iduser)
  7342. ON DELETE NO ACTION
  7343. ON UPDATE NO ACTION
  7344. NOT DEFERRABLE
  7345. ) WITHOUT OIDS;
  7346.  
  7347. CREATE INDEX vlt_sim_history_idx01 ON public.vlt_sim_history
  7348. USING btree (idsim);
  7349.  
  7350. CREATE INDEX vlt_sim_history_idx02 ON public.vlt_sim_history
  7351. USING btree (iddevice);
  7352.  
  7353. -- object recreation
  7354. ALTER TABLE public.vlt_transaction
  7355. DROP CONSTRAINT foreign_key04 RESTRICT;
  7356.  
  7357. ALTER TABLE public.vlt_transaction
  7358. ADD CONSTRAINT foreign_key04 FOREIGN KEY (idtransaction_group)
  7359. REFERENCES public.vlt_transaction(idtransaction)
  7360. ON DELETE CASCADE
  7361. ON UPDATE NO ACTION
  7362. NOT DEFERRABLE;
  7363.  
  7364. -- object recreation
  7365. DROP INDEX public.vlt_transaction_index03;
  7366.  
  7367. CREATE INDEX vlt_transaction_index03 ON public.vlt_transaction
  7368. USING btree (iddevice, valid, idtransaction)
  7369. WITH (fillfactor = 100);
  7370.  
  7371. ALTER TABLE public.adm_transaction_vw
  7372. OWNER TO pgsql;
  7373.  
  7374. CREATE OR REPLACE VIEW public.fin_billet_vw (
  7375. idbilletitem,
  7376. code,
  7377. item_model_billet,
  7378. value,
  7379. idbillet)
  7380. AS
  7381. SELECT bi.idbilletitem, imb.code, imb.item_model_billet, bi.value, bil.idbillet
  7382. FROM fin_item_model_billet imb, fin_model_billet mb, fin_bank b, fin_billet_item bi, fin_billet bil
  7383. WHERE imb.idmodelbillet = mb.idmodelbillet AND b.idbank = mb.idbank AND imb.iditemmodelbillet = bi.iditemmodelbillet AND bil.idbillet = bi.idbillet;
  7384.  
  7385. ALTER TABLE public.mce_customer_vw
  7386. OWNER TO pgsql;
  7387.  
  7388. ALTER TABLE public.mce_refuel_station_vw
  7389. OWNER TO pgsql;
  7390.  
  7391. ALTER TABLE public.par_etiqueta_vw
  7392. OWNER TO pgsql;
  7393.  
  7394. CREATE OR REPLACE VIEW public.par_message_vw (
  7395. idmessage,
  7396. message_date,
  7397. iduser,
  7398. name,
  7399. title,
  7400. message,
  7401. read_date,
  7402. is_read,
  7403. priority,
  7404. from_iddevice,
  7405. deviceorigin,
  7406. to_iddevice,
  7407. devicereceiver,
  7408. from_iduser,
  7409. messageorigin,
  7410. messagereceiver)
  7411. AS
  7412. SELECT par_message.idmessage, par_message.message_date,
  7413. CASE
  7414. WHEN par_message.iduser IS NOT NULL THEN par_message.iduser
  7415. WHEN par_message.to_idcustomer IS NOT NULL THEN ( SELECT par_user.iduser
  7416. FROM par_user
  7417. WHERE par_user.login::text = ((( SELECT par_customer.email
  7418. FROM par_customer
  7419. WHERE par_customer.idcustomer = par_message.to_idcustomer))::text))
  7420. ELSE NULL::bigint
  7421. END AS iduser, touser.name, par_message.title, par_message.message, par_message.read_date, par_message.is_read, par_message.priority, par_message.from_iddevice, fromdevice.vehicle_code AS deviceorigin, par_message.to_iddevice, todevice.vehicle_code AS devicereceiver, par_message.from_iduser,
  7422. CASE
  7423. WHEN par_message.origin::text = 'S'::text THEN 'Sistema'::character varying
  7424. WHEN par_message.origin::text = 'U'::text THEN fromuser.name
  7425. WHEN par_message.origin::text = 'D'::text THEN fromdevice.vehicle_code
  7426. ELSE NULL::character varying
  7427. END AS messageorigin,
  7428. CASE
  7429. WHEN par_message.iduser IS NOT NULL THEN touser.name
  7430. WHEN par_message.to_iddevice IS NOT NULL THEN todevice.vehicle_code
  7431. ELSE NULL::character varying
  7432. END AS messagereceiver
  7433. FROM par_message
  7434. LEFT JOIN par_user fromuser ON fromuser.iduser = par_message.from_iduser
  7435. LEFT JOIN par_user touser ON touser.iduser = par_message.iduser
  7436. LEFT JOIN vlt_device fromdevice ON fromdevice.iddevice = par_message.from_iddevice
  7437. LEFT JOIN vlt_device todevice ON todevice.iddevice = par_message.to_iddevice
  7438. LEFT JOIN par_customer ON par_customer.idcustomer = par_message.to_idcustomer
  7439. ORDER BY par_message.idmessage DESC;
  7440.  
  7441. ALTER TABLE public.par_message_vw
  7442. OWNER TO pgsql;
  7443.  
  7444. CREATE OR REPLACE VIEW public.par_sns_vw (
  7445. idsns,
  7446. desc_token,
  7447. iduser,
  7448. idcustomer,
  7449. idseller,
  7450. "user")
  7451. AS
  7452. SELECT sns.idsns, sns.desc_token, usr.iduser, prof.parcust_id AS idcustomer, cus.idseller, usr.name AS "user"
  7453. FROM par_sns sns, par_user usr, rba_profile prof, par_customer cus
  7454. WHERE sns.iduser = usr.iduser AND prof.id = usr.rbaprof_id AND cus.idcustomer = prof.parcust_id;
  7455.  
  7456. ALTER TABLE public.rba_profile_routes_vw
  7457. RENAME COLUMN id TO idroute;
  7458.  
  7459. ALTER TABLE public.rba_profile_routes_vw
  7460. RENAME COLUMN idroute TO desc_route_name;
  7461.  
  7462. ALTER TABLE public.rba_profile_routes_vw
  7463. RENAME COLUMN desc_route_name TO has_access;
  7464.  
  7465. ALTER TABLE public.rba_profile_routes_vw
  7466. RENAME COLUMN has_access TO id;
  7467.  
  7468. CREATE OR REPLACE VIEW public.rba_profile_routes_vw (
  7469. idroute,
  7470. desc_route_name,
  7471. has_access,
  7472. id)
  7473. AS
  7474. SELECT r.id AS idroute, r.desc_route_name, (EXISTS ( SELECT NULL::unknown AS unknown
  7475. FROM rba_profile_routes
  7476. WHERE rba_profile_routes.rbarout_id = r.id AND rba_profile_routes.rbaprof_id = p.id)) AS has_access, p.id
  7477. FROM rba_routes r, rba_profile p
  7478. WHERE (r.indr_systype::text =
  7479. CASE
  7480. WHEN p.parcust_id IS NOT NULL THEN 'CUS'::text
  7481. WHEN p.idseller IS NOT NULL THEN 'SEL'::text
  7482. WHEN p.idmonitoringcenter IS NOT NULL THEN 'MCE'::text
  7483. ELSE 'ADM'::text
  7484. END OR r.indr_systype IS NULL) AND NOT r.basic
  7485. ORDER BY r.desc_route_name;
  7486.  
  7487. ALTER TABLE public.rba_profile_routes_vw
  7488. OWNER TO pgsql;
  7489.  
  7490. ALTER TABLE public.rpt_speed_vw
  7491. OWNER TO pgsql;
  7492.  
  7493. CREATE OR REPLACE VIEW public.rpt_worked_hours_driver_vw (
  7494. vehicle,
  7495. driver,
  7496. data_trabalhada,
  7497. inicio,
  7498. termino,
  7499. horas,
  7500. iddriver)
  7501. AS
  7502. SELECT ( SELECT vlt_device.vehicle_code
  7503. FROM vlt_device
  7504. WHERE vlt_device.iddevice = vlt_driver_record.iddevice) AS vehicle, vlt_driver.driver, to_date(to_char(tend.command_date, 'dd/mm/yyyy'::text), 'dd/mm/yyyy'::text) AS data_trabalhada, tstart.command_date AS inicio, tend.command_date AS termino, tend.command_date - tstart.command_date AS horas, vlt_driver.iddriver
  7505. FROM vlt_driver_record
  7506. JOIN vlt_driver ON vlt_driver.iddriver = vlt_driver_record.iddriver
  7507. JOIN vlt_transaction tstart ON tstart.idtransaction = vlt_driver_record.idtransaction_start
  7508. JOIN vlt_transaction tend ON tend.idtransaction = vlt_driver_record.idtransaction_end
  7509. GROUP BY vlt_driver_record.iddevice, vlt_driver.iddriver, vlt_driver.driver, tstart.command_date, tend.command_date
  7510. ORDER BY tstart.command_date, tend.command_date;
  7511.  
  7512. ALTER TABLE public.vlt_alert_center_vw
  7513. OWNER TO pgsql;
  7514.  
  7515. CREATE OR REPLACE VIEW public.vlt_command_vw (
  7516. iddevice,
  7517. message,
  7518. status,
  7519. command_date,
  7520. update_date,
  7521. description,
  7522. name,
  7523. idmodelcommand)
  7524. AS
  7525. SELECT vlt_command.iddevice, vlt_command.message, vlt_command.status, vlt_command.command_date, vlt_command.update_date, vlt_model_command.description, par_user.name, vlt_model_command.idmodelcommand
  7526. FROM vlt_command
  7527. JOIN vlt_model_command ON vlt_model_command.idmodelcommand = vlt_command.idmodelcommand
  7528. JOIN par_user ON par_user.iduser = vlt_command.iduser;
  7529.  
  7530. ALTER TABLE public.vlt_command_vw
  7531. OWNER TO pgsql;
  7532.  
  7533. ALTER TABLE public.vlt_console_update_vw
  7534. OWNER TO pgsql;
  7535.  
  7536. ALTER TABLE public.vlt_device_search_vw
  7537. OWNER TO pgsql;
  7538.  
  7539. CREATE OR REPLACE VIEW public.vlt_device_vw (
  7540. iddevice,
  7541. description,
  7542. latitude,
  7543. longitude,
  7544. vehicle_code,
  7545. idcustomer,
  7546. code,
  7547. device_search,
  7548. has_battery,
  7549. has_analog_ports,
  7550. has_digital_ports,
  7551. has_tpms,
  7552. has_fuel,
  7553. has_temperature,
  7554. connected,
  7555. is_connected,
  7556. speed,
  7557. command_date,
  7558. start_date,
  7559. driver,
  7560. address,
  7561. idtransaction,
  7562. online,
  7563. record_type,
  7564. has_alert,
  7565. active,
  7566. odometer)
  7567. AS
  7568. SELECT q.iddevice, q.description, q.latitude, q.longitude, q.vehicle_code, q.idcustomer, q.code, q.device_search, q.has_battery, q.has_analog_ports, q.has_digital_ports, q.has_tpms, q.has_fuel, q.has_temperature, q.connected, q.is_connected, q.speed, q.command_date, q.start_date, q.driver, q.address, q.idtransaction, q.online, q.record_type, q.has_alert, q.active, q.odometer
  7569. FROM ( SELECT dev.iddevice, dev.description, tt.latitude, tt.longitude, dev.vehicle_code, dev.idcustomer, dev.code, dev.device_search, dm.has_battery, dm.has_analog_ports, dm.has_digital_ports, dm.has_tpms, dm.has_fuel, dm.has_temperature,
  7570. CASE
  7571. WHEN tt.connected THEN 'Sim'::text
  7572. ELSE 'Não'::text
  7573. END AS connected, tt.connected AS is_connected, tt.speed, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS command_date, to_char(tt.command_date, 'dd/mm/yyyy hh24:mi:ss'::text)::character varying AS start_date, ( SELECT drv.driver
  7574. FROM vlt_driver drv
  7575. WHERE drv.iddriver = tt.iddriver) AS driver, tt.address, tt.idtransaction, tt.online, rt.description AS record_type, vlt_device_has_alert_fnc(dev.iddevice) AS has_alert, dev.active, round(tt.odometer::numeric / 1000::numeric, 1) AS odometer
  7576. FROM ( SELECT vlt_device.iddevice, vlt_last_tran_dev_fnc(vlt_device.iddevice) AS idtransaction, vlt_device.idcustomer
  7577. FROM vlt_device) tbl
  7578. JOIN vlt_transaction tt ON tt.idtransaction = tbl.idtransaction
  7579. JOIN vlt_device dev ON dev.iddevice = tbl.iddevice
  7580. JOIN vlt_device_model dm ON dm.iddevicemodel = dev.iddevicemodel
  7581. JOIN vlt_record_type rt ON rt.idrecordtype = tt.idrecordtype) q;
  7582.  
  7583. ALTER TABLE public.vlt_port_status_vw
  7584. OWNER TO pgsql;
  7585.  
  7586. CREATE OR REPLACE VIEW public.vlt_refuel_vw (
  7587. idrefuel,
  7588. idrefuelstation,
  7589. refuel_code,
  7590. refuel_date,
  7591. refuel_liters,
  7592. refuel_value,
  7593. idtransaction,
  7594. iddevice,
  7595. name,
  7596. vehicle_code,
  7597. per_liter,
  7598. idcustomer)
  7599. AS
  7600. SELECT vlt_refuel.idrefuel, vlt_refuel.idrefuelstation, vlt_refuel.refuel_code, to_char(vlt_refuel.refuel_date, 'dd/mm/yyyy HH:mm:ss'::text) AS refuel_date, vlt_refuel.refuel_liters, vlt_refuel.refuel_value, vlt_refuel.idtransaction, vlt_refuel.iddevice, vlt_refuel_station.name, vlt_device.vehicle_code, vlt_refuel.refuel_value / vlt_refuel.refuel_liters AS per_liter, vlt_device.idcustomer
  7601. FROM vlt_refuel
  7602. JOIN vlt_refuel_station ON vlt_refuel_station.idrefuelstation = vlt_refuel.idrefuelstation
  7603. JOIN vlt_device ON vlt_device.iddevice = vlt_refuel.iddevice
  7604. ORDER BY vlt_device.vehicle_code;
  7605.  
  7606. ALTER TABLE public.vlt_seller_mc_vw
  7607. OWNER TO pgsql;
  7608.  
  7609. CREATE OR REPLACE VIEW public.vlt_seller_vehicle_vw (
  7610. iddevice,
  7611. id,
  7612. customer,
  7613. idcustomer,
  7614. vehicle_code)
  7615. AS
  7616. SELECT vlt_device.iddevice, par_customer.idseller AS id, par_customer.customer, vlt_device.idcustomer, vlt_device.vehicle_code
  7617. FROM vlt_device, par_customer
  7618. WHERE vlt_device.idcustomer = par_customer.idcustomer;
  7619.  
  7620. CREATE OR REPLACE VIEW public.vlt_sim_history_vw (
  7621. idsimhistory,
  7622. history_date,
  7623. status,
  7624. vehicle_code,
  7625. login,
  7626. idsim,
  7627. iddevice)
  7628. AS
  7629. SELECT vlt_sim_history.idsimhistory, vlt_sim_history.history_date, vlt_sim_history.status, vlt_device.vehicle_code, par_user.login, vlt_sim_history.idsim, vlt_sim_history.iddevice
  7630. FROM vlt_sim_history
  7631. LEFT JOIN par_user ON par_user.iduser = vlt_sim_history.iduser
  7632. JOIN vlt_sim ON vlt_sim.idsim = vlt_sim_history.idsim
  7633. LEFT JOIN vlt_device ON vlt_device.iddevice = vlt_sim_history.iddevice
  7634. ORDER BY vlt_sim_history.history_date DESC;
  7635.  
  7636. ALTER TABLE public.vlt_transaction_vw
  7637. OWNER TO pgsql;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement