migrated the sql scripts from the clarity-vitals project
parent
d36464aa8a
commit
05e21fda8e
@ -0,0 +1,21 @@
|
|||||||
|
DROP TABLE IF EXISTS tokens;
|
||||||
|
|
||||||
|
CREATE OR REPLACE INDEX billing_refnum ON billing (refNumber);
|
||||||
|
|
||||||
|
-- noinspection SqlWithoutWhere
|
||||||
|
UPDATE users SET hash = '';
|
||||||
|
|
||||||
|
UPDATE project_lifecycle SET new_value = '+CREATED', changed_column = 'status' WHERE changed_column = 'created';
|
||||||
|
DELETE FROM project_lifecycle WHERE project_number = 'EVENT';
|
||||||
|
|
||||||
|
#TIMEZONE FIX
|
||||||
|
# we'll store the roll amount as a single variable
|
||||||
|
SET @roll = 4;
|
||||||
|
UPDATE billing set accepted_date = accepted_date - INTERVAL @roll HOUR, line_created = line_created - INTERVAL @roll HOUR;
|
||||||
|
UPDATE dispatch SET date_dispatched = date_dispatched - INTERVAL @roll HOUR;
|
||||||
|
UPDATE project_comments set timestamp = timestamp - INTERVAL @roll HOUR;
|
||||||
|
UPDATE project_lifecycle SET timestamp = timestamp - INTERVAL @roll HOUR;
|
||||||
|
|
||||||
|
ALTER TABLE project_lifecycle ADD COLUMN id INT AUTO_INCREMENT KEY FIRST;
|
||||||
|
CREATE OR REPLACE INDEX lifecycle_timestamp on project_lifecycle (timestamp);
|
||||||
|
CREATE OR REPLACE INDEX lifecycle_newval on project_lifecycle (new_value);
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
DROP VIEW IF EXISTS all_projects;
|
||||||
|
DROP TABLE IF EXISTS all_projects;
|
||||||
|
|
||||||
|
|
||||||
|
#todo we have to find out how to generate this from the info on tablemetadata
|
||||||
|
CREATE TABLE all_projects AS
|
||||||
|
SELECT *
|
||||||
|
FROM CLT2019
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM CLT2020
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM CLT2021
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM CLT2022
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM RDU2019
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM RDU2020
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM RDU2021
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM RDU2022
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM ENV2020
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM ENV2021
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM ENV2022
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM SRV2020
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM SRV2021;
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX ref_num ON all_projects (refnum);
|
||||||
|
CREATE INDEX project_flavor ON all_projects (proj_type);
|
||||||
|
|
||||||
|
|
||||||
|
UPDATE all_projects
|
||||||
|
SET description = TRIM(BOTH ' ' FROM description)
|
||||||
|
WHERE description RLIKE '^ '
|
||||||
|
OR description RLIKE ' $';
|
||||||
|
|
||||||
|
UPDATE all_projects
|
||||||
|
SET description = 'Soil/Footings'
|
||||||
|
WHERE description IN
|
||||||
|
(
|
||||||
|
'Soil/Footings - Revisit #1',
|
||||||
|
'Soils/Footings',
|
||||||
|
'Soils/Footings - Revisit #1',
|
||||||
|
'Soils/Footings - Revisit #1'
|
||||||
|
);
|
||||||
|
|
||||||
|
UPDATE all_projects
|
||||||
|
SET description = 'Framing Items'
|
||||||
|
WHERE description IN
|
||||||
|
(
|
||||||
|
'Framing Item'
|
||||||
|
);
|
||||||
|
|
||||||
|
UPDATE all_projects
|
||||||
|
SET description = '3rd Party Footing Inspection'
|
||||||
|
WHERE description IN
|
||||||
|
(
|
||||||
|
'3rd Party Footing Preparation Inspection'
|
||||||
|
'3rd Party Footing Preparation Inspection - Revisit #1'
|
||||||
|
);
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
DROP TABLE IF EXISTS billing_report;
|
||||||
|
|
||||||
|
CREATE TABLE billing_report AS
|
||||||
|
SELECT billing.pkey,
|
||||||
|
refNumber,
|
||||||
|
(SELECT all_projects.proj_type from all_projects where all_projects.refnum = refNumber) AS division,
|
||||||
|
line_created,
|
||||||
|
accepted_date,
|
||||||
|
(qty * default_price) AS fee,
|
||||||
|
invoice_accepted,
|
||||||
|
clients.name as Client
|
||||||
|
FROM billing
|
||||||
|
INNER JOIN all_projects on billing.refNumber = all_projects.refnum
|
||||||
|
INNER JOIN contacts on all_projects.contact_fkey = contacts.pkey
|
||||||
|
INNER JOIN clients on contacts.cl_fkey = clients.pkey
|
||||||
|
where invoice_accepted = 1;
|
||||||
|
|
||||||
|
CREATE INDEX ref_num ON billing_report (refNumber);
|
||||||
|
CREATE INDEX div_idx ON billing_report (division);
|
||||||
|
|
||||||
|
|
||||||
|
UPDATE billing_report
|
||||||
|
SET division = IF(
|
||||||
|
division = 'Warranty',
|
||||||
|
CONCAT(SUBSTRING(refNumber, 1, 3), ' - ', 'Structural'),
|
||||||
|
CONCAT(SUBSTRING(refNumber, 1, 3), ' - ', division)
|
||||||
|
);
|
||||||
@ -0,0 +1,83 @@
|
|||||||
|
DROP TABLE IF EXISTS engineer_contributions;
|
||||||
|
|
||||||
|
#########################Engineer Contributions########################################################################
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE engineer_contributions AS
|
||||||
|
SELECT CONCAT(users.lname, ', ', users.fname) AS `Engineer`,
|
||||||
|
users.email,
|
||||||
|
project_lifecycle.project_number AS `ProjectNumber`,
|
||||||
|
project_lifecycle.timestamp,
|
||||||
|
new_value AS `ActionType`,
|
||||||
|
CONCAT(SUBSTR(project_lifecycle.project_number, 1, 3), ' - ',
|
||||||
|
IF(ap.proj_type = 'Warranty', 'Structural', ap.proj_type)) AS `Region`,
|
||||||
|
clients.name AS `Client`,
|
||||||
|
ap.description AS `Description`
|
||||||
|
FROM users
|
||||||
|
INNER JOIN project_lifecycle ON pkey = modifier
|
||||||
|
INNER JOIN all_projects ap on project_lifecycle.project_number = ap.refnum
|
||||||
|
INNER JOIN contacts on ap.contact_fkey = contacts.pkey
|
||||||
|
INNER JOIN clients on contacts.cl_fkey = clients.pkey
|
||||||
|
WHERE project_lifecycle.new_value IN ('+SEALED')
|
||||||
|
AND users.priv & POW(2, 25) > 0;
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE engineer_contributions
|
||||||
|
ADD COLUMN IF NOT EXISTS id INT AUTO_INCREMENT KEY FIRST;
|
||||||
|
|
||||||
|
#https://stackoverflow.com/a/9639548
|
||||||
|
DELETE
|
||||||
|
FROM engineer_contributions
|
||||||
|
WHERE id IN (SELECT bad_rows.id
|
||||||
|
FROM engineer_contributions AS bad_rows
|
||||||
|
INNER JOIN (SELECT engineer_contributions.`ProjectNumber`, MAX(id) as min_id
|
||||||
|
FROM engineer_contributions
|
||||||
|
GROUP BY engineer_contributions.`ProjectNumber`
|
||||||
|
HAVING count(*) > 1) AS good_rows
|
||||||
|
ON good_rows.`ProjectNumber` =
|
||||||
|
bad_rows.`ProjectNumber`
|
||||||
|
AND good_rows.min_id <> bad_rows.id);
|
||||||
|
|
||||||
|
ALTER TABLE engineer_contributions
|
||||||
|
DROP COLUMN IF EXISTS id;
|
||||||
|
|
||||||
|
#########################Soil Contributions#############################################################################
|
||||||
|
DROP TABLE IF EXISTS rdu_soil_contributions;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE rdu_soil_contributions AS
|
||||||
|
SELECT CONCAT(users.email) AS `Technician`,
|
||||||
|
project_lifecycle.project_number AS `ProjectNumber`,
|
||||||
|
project_lifecycle.timestamp,
|
||||||
|
new_value AS `ActionType`,
|
||||||
|
'RDU - Soil' AS `Region`,
|
||||||
|
clients.name AS `Client`,
|
||||||
|
ap.description AS `Description`
|
||||||
|
FROM users
|
||||||
|
INNER JOIN project_lifecycle ON pkey = modifier
|
||||||
|
INNER JOIN all_projects ap on project_lifecycle.project_number = ap.refnum
|
||||||
|
INNER JOIN contacts on ap.contact_fkey = contacts.pkey
|
||||||
|
INNER JOIN clients on contacts.cl_fkey = clients.pkey
|
||||||
|
WHERE project_lifecycle.new_value IN ('+READY_FOR_REVIEW')
|
||||||
|
AND SUBSTR(ap.refnum, 1, 3) = 'RDU'
|
||||||
|
AND ap.proj_type = 'Soil';
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE rdu_soil_contributions
|
||||||
|
ADD COLUMN IF NOT EXISTS id INT AUTO_INCREMENT KEY FIRST;
|
||||||
|
|
||||||
|
|
||||||
|
DELETE
|
||||||
|
FROM rdu_soil_contributions
|
||||||
|
WHERE id IN (SELECT bad_rows.id
|
||||||
|
FROM rdu_soil_contributions AS bad_rows
|
||||||
|
INNER JOIN (SELECT rdu_soil_contributions.`ProjectNumber`, MAX(id) as min_id
|
||||||
|
FROM rdu_soil_contributions
|
||||||
|
GROUP BY rdu_soil_contributions.`ProjectNumber`
|
||||||
|
HAVING count(*) > 1) AS good_rows
|
||||||
|
ON good_rows.`ProjectNumber` =
|
||||||
|
bad_rows.`ProjectNumber`
|
||||||
|
AND good_rows.min_id <> bad_rows.id);
|
||||||
|
|
||||||
|
ALTER TABLE rdu_soil_contributions
|
||||||
|
DROP COLUMN IF EXISTS id;
|
||||||
@ -0,0 +1,77 @@
|
|||||||
|
CREATE OR REPLACE TABLE lifecycle_times
|
||||||
|
(
|
||||||
|
id int primary key auto_increment,
|
||||||
|
project_number varchar(25),
|
||||||
|
created datetime,
|
||||||
|
ready_for_review datetime,
|
||||||
|
ready_for_review_two datetime,
|
||||||
|
ready_for_deliver datetime,
|
||||||
|
sealed datetime,
|
||||||
|
delivered datetime,
|
||||||
|
has_been_invoiced datetime,
|
||||||
|
ready_to_invoice datetime
|
||||||
|
);
|
||||||
|
CREATE OR REPLACE INDEX lifetimes_refnum on project_lifecycle (project_number);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO lifecycle_times (project_number)
|
||||||
|
SELECT DISTINCT project_number
|
||||||
|
FROM project_lifecycle;
|
||||||
|
|
||||||
|
|
||||||
|
UPDATE lifecycle_times
|
||||||
|
set created = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+CREATED'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
ready_for_review = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+READY_FOR_REVIEW'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
ready_for_review_two = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+READY_FOR_REVIEW2'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
ready_for_deliver = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+READY_FOR_DELIVER'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
ready_for_deliver = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+READY_FOR_DELIVER'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
sealed = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+SEALED'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
delivered = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+DELIVERED'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
has_been_invoiced = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+HAS_BEEN_INVOICED'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1),
|
||||||
|
ready_to_invoice = (SELECT timestamp
|
||||||
|
from project_lifecycle
|
||||||
|
where new_value = '+READY_TO_INVOICE'
|
||||||
|
and project_lifecycle.project_number = lifecycle_times.project_number
|
||||||
|
order by timestamp desc
|
||||||
|
limit 1)
|
||||||
|
;
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
DROP TABLE IF EXISTS event_counts;
|
||||||
|
|
||||||
|
CREATE TABLE event_counts AS
|
||||||
|
SELECT DATE(timestamp) AS event_date,
|
||||||
|
all_projects.proj_type AS division_raw,
|
||||||
|
SUBSTRING(all_projects.refnum, 1, 3) AS prefix,
|
||||||
|
if(SUBSTRING(new_value, 1, 1) = '+', 1, -1) AS event_count,
|
||||||
|
SUBSTRING(`new_value` FROM 2) AS flag
|
||||||
|
FROM project_lifecycle
|
||||||
|
INNER JOIN all_projects ON project_lifecycle.project_number = all_projects.refnum
|
||||||
|
WHERE changed_column = 'status';
|
||||||
|
|
||||||
Loading…
Reference in New Issue