75 lines
2.5 KiB
SQL
75 lines
2.5 KiB
SQL
SET @INIT_DATE = '{init_date}';
|
|
SET @FINISH_DATE = '{finish_date}';
|
|
|
|
DELETE FROM PRO_REPORTING WHERE `YEAR` >= DATE_FORMAT(CAST(@INIT_DATE AS DATE), '%Y')
|
|
AND `MONTH` >= DATE_FORMAT(CAST(@INIT_DATE AS DATE), '%m')
|
|
AND `YEAR` <= DATE_FORMAT(CAST(@FINISH_DATE AS DATE), '%Y')
|
|
AND `MONTH` <= DATE_FORMAT(CAST(@FINISH_DATE AS DATE), '%m');
|
|
|
|
INSERT INTO PRO_REPORTING (
|
|
PRO_UID,
|
|
`MONTH`,
|
|
`YEAR`,
|
|
AVG_TIME,
|
|
SDV_TIME,
|
|
TOTAL_CASES_IN,
|
|
TOTAL_CASES_OUT,
|
|
CONFIGURED_PROCESS_TIME,
|
|
CONFIGURED_PROCESS_COST,
|
|
TOTAL_CASES_OPEN,
|
|
TOTAL_CASES_OVERDUE,
|
|
TOTAL_CASES_ON_TIME,
|
|
PRO_COST,
|
|
PRO_UNIT_COST
|
|
)
|
|
SELECT
|
|
APPLICATION.PRO_UID,
|
|
DATE_FORMAT(APPLICATION.APP_INIT_DATE, '%m') AS `MONTH`,
|
|
DATE_FORMAT(APPLICATION.APP_INIT_DATE, '%Y') AS `YEAR`,
|
|
AVG(APPLICATION.APP_DURATION*24) AS `AVG_TIME`,
|
|
STD(APPLICATION.APP_DURATION*24) AS `STD_TIME`,
|
|
COUNT(APPLICATION.APP_INIT_DATE) AS `TOTAL_CASES_IN`,
|
|
COUNT(APPLICATION.APP_FINISH_DATE) AS `TOTAL_CASES_OUT`,
|
|
NULL,
|
|
NULL,
|
|
count(if(APPLICATION.APP_FINISH_DATE != null, NULL, 1)) AS TOTAL_CASES_OPEN,
|
|
count(if(APPLICATION.APP_DELAY_DURATION > 0, 1, NULL)) AS TOTAL_CASES_OVERDUE,
|
|
count(if(APPLICATION.APP_DELAY_DURATION <= 0, 1, NULL)) AS TOTAL_CASES_ON_TIME,
|
|
0,
|
|
NULL
|
|
FROM
|
|
APPLICATION FORCE INDEX (PRIMARY)
|
|
WHERE
|
|
APPLICATION.APP_INIT_DATE BETWEEN CAST(@INIT_DATE AS DATETIME) AND CAST(@FINISH_DATE AS DATETIME)
|
|
GROUP BY APPLICATION.PRO_UID;
|
|
|
|
UPDATE USR_REPORTING
|
|
INNER JOIN
|
|
PROCESS
|
|
ON USR_REPORTING.PRO_UID = PROCESS.PRO_UID
|
|
SET USR_REPORTING.PRO_COST = PROCESS.PRO_COST,
|
|
USR_REPORTING.PRO_UNIT_COST = PROCESS.PRO_UNIT_COST;
|
|
|
|
#TODO task duration should be calculated with the calendar
|
|
UPDATE PRO_REPORTING
|
|
SET PRO_REPORTING.CONFIGURED_PROCESS_TIME = (
|
|
SELECT SUM(if (TASK.TAS_TIMEUNIT = "DAYS", (TASK.TAS_DURATION*24), (if (TASK.TAS_TIMEUNIT = "MINUTES", (TASK.TAS_DURATION/60), TASK.TAS_DURATION))))
|
|
FROM TASK
|
|
WHERE PRO_REPORTING.PRO_UID = TASK.PRO_UID
|
|
);
|
|
|
|
UPDATE PRO_REPORTING
|
|
SET PRO_REPORTING.CONFIGURED_PROCESS_COST = (
|
|
SELECT SUM(USERS.USR_COST_BY_HOUR)
|
|
FROM TASK, TASK_USER, USERS
|
|
WHERE TASK.PRO_UID = PRO_REPORTING.PRO_UID
|
|
AND TASK.TAS_UID = TASK_USER.TAS_UID
|
|
AND TASK_USER.USR_UID = USERS.USR_UID
|
|
) OR (
|
|
SELECT SUM(USERS.USR_COST_BY_HOUR)
|
|
FROM TASK, TASK_USER, GROUP_USER, USERS
|
|
WHERE PRO_REPORTING.PRO_UID = TASK.PRO_UID
|
|
AND TASK.TAS_UID = TASK_USER.TAS_UID
|
|
AND TASK_USER.USR_UID = GROUP_USER.GRP_UID
|
|
AND GROUP_USER.USR_UID = USERS.USR_UID
|
|
) |