|
|
return: SETOF record
|
|
|
lang: plpgsql
|
|
|
parameters:
|
|
|
p0:
|
|
|
type: bigint
|
|
|
name: i_rapport_id
|
|
|
p1:
|
|
|
type: text
|
|
|
name: i_option
|
|
|
src: |
|
|
|
DECLARE
|
|
|
sqlcmd text;
|
|
|
|
|
|
|
|
|
_maxind integer;
|
|
|
|
|
|
row RECORD;
|
|
|
BEGIN
|
|
|
|
|
|
_maxind = activite.cti_prepare_rapport_maxoid(i_rapport_id);
|
|
|
|
|
|
|
|
|
IF (i_option <> 'COMP' AND i_rapport_id <> 0) THEN
|
|
|
FOR row IN
|
|
|
SELECT
|
|
|
'INDICATEURS_' || subview_s.table_name || '#' || subview_s.dimension_date,
|
|
|
CASE WHEN SUM(subview.oid) > 0
|
|
|
THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || activite.cti_prepare_rapport_get_column(column_name,'') || ')' ELSE 'NULL::numeric' END)
|
|
|
ELSE '' END
|
|
|
FROM
|
|
|
(SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date
|
|
|
FROM activite.v_rapports_tables_indicateurs_1, generate_series(1, _maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date
|
|
|
WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s
|
|
|
LEFT JOIN
|
|
|
(
|
|
|
|
|
|
SELECT *
|
|
|
FROM activite.t_indicateurs
|
|
|
WHERE oid IN (
|
|
|
SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id])
|
|
|
FROM activite.t_rapports
|
|
|
JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
|
|
|
JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
|
|
|
) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date
|
|
|
GROUP BY 1
|
|
|
UNION
|
|
|
SELECT
|
|
|
'INDICATEURS_BUDGET'::text,
|
|
|
CASE WHEN SUM(subview.oid) > 0
|
|
|
THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN 'SUM' || '(' || activite.cti_prepare_rapport_get_column('CASE WHEN indicateur_id = ' || subview.oid::text || ' THEN budget ELSE 0 END','') || ')' ELSE 'NULL::numeric' END)
|
|
|
ELSE '' END
|
|
|
FROM
|
|
|
(
|
|
|
SELECT *
|
|
|
FROM
|
|
|
(SELECT generate_series AS indicateur_id , ''::text AS dimension_date
|
|
|
FROM generate_series(1, _maxind)
|
|
|
ORDER BY 1) subview_s
|
|
|
LEFT JOIN
|
|
|
(
|
|
|
|
|
|
SELECT *
|
|
|
FROM activite.t_indicateurs
|
|
|
WHERE oid IN (
|
|
|
SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id])
|
|
|
FROM activite.t_rapports
|
|
|
JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
|
|
|
JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
|
|
|
AND oid IN (SELECT indicateur_id FROM activite.t_budget_cle_budget)
|
|
|
) subview ON subview_s.indicateur_id = subview.oid
|
|
|
ORDER BY 1
|
|
|
) subview
|
|
|
GROUP BY 1
|
|
|
|
|
|
ORDER BY 1
|
|
|
|
|
|
|
|
|
|
|
|
LOOP
|
|
|
RETURN NEXT row;
|
|
|
END LOOP;
|
|
|
|
|
|
END IF;
|
|
|
FOR row IN
|
|
|
SELECT
|
|
|
'INDICATEURS_WHERE_' || subview_s.table_name || '#' || subview_s.dimension_date,
|
|
|
CASE WHEN SUM(subview.oid) > 0
|
|
|
THEN
|
|
|
'AND (1<>1 ' || base.cti_group_concat_without_sep(
|
|
|
CASE WHEN subview.oid IS NOT NULL
|
|
|
THEN ' OR ' ||
|
|
|
CASE WHEN total_function <> 'COUNT' THEN 'COALESCE(' || activite.cti_prepare_rapport_get_column(column_name,'') || ',0) <> 0'
|
|
|
ELSE replace(activite.cti_prepare_rapport_get_column(column_name,''),'DISTINCT', '') || ' IS NOT NULL' END
|
|
|
ELSE '' END) || ')'
|
|
|
ELSE '' END
|
|
|
FROM
|
|
|
(SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date
|
|
|
FROM activite.v_rapports_tables_indicateurs_1, generate_series(1,_maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date
|
|
|
WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s
|
|
|
LEFT JOIN
|
|
|
(
|
|
|
|
|
|
SELECT *
|
|
|
FROM activite.t_indicateurs
|
|
|
WHERE oid IN (
|
|
|
SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id])
|
|
|
FROM activite.t_rapports
|
|
|
JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
|
|
|
JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
|
|
|
) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date
|
|
|
GROUP BY 1
|
|
|
UNION
|
|
|
SELECT
|
|
|
'INDICATEURS_WHERE_BUDGET'::text,
|
|
|
CASE WHEN SUM(subview.oid) > 0
|
|
|
THEN
|
|
|
'AND (1<>1 ' || base.cti_group_concat_without_sep(
|
|
|
CASE WHEN subview.oid IS NOT NULL
|
|
|
THEN ' OR ' ||
|
|
|
'COALESCE(' || activite.cti_prepare_rapport_get_column('CASE WHEN indicateur_id = ' || subview.oid || ' THEN budget ELSE 0 END','') || ',0) <> 0'
|
|
|
ELSE '' END) || ')'
|
|
|
ELSE '' END
|
|
|
FROM
|
|
|
(SELECT generate_series AS indicateur_id , ''::text AS dimension_date
|
|
|
FROM generate_series(1, _maxind)
|
|
|
GROUP BY 1 ORDER BY 1) subview_s
|
|
|
LEFT JOIN
|
|
|
(
|
|
|
|
|
|
SELECT *
|
|
|
FROM activite.t_indicateurs
|
|
|
WHERE oid IN (
|
|
|
SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id])
|
|
|
FROM activite.t_rapports
|
|
|
JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
|
|
|
JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
|
|
|
AND oid IN (SELECT indicateur_id FROM activite.t_budget_cle_budget)
|
|
|
) subview ON subview_s.indicateur_id = subview.oid
|
|
|
GROUP BY 1
|
|
|
ORDER BY 1
|
|
|
|
|
|
|
|
|
|
|
|
LOOP
|
|
|
RETURN NEXT row;
|
|
|
END LOOP;
|
|
|
IF (i_option = 'MONTH' OR i_option = 'COMP') AND i_rapport_id <> 0 THEN
|
|
|
FOR row IN
|
|
|
SELECT
|
|
|
'INDICATEURS_COLUMNS_' || subview_s.table_name || '#' || subview_s.dimension_date,
|
|
|
CASE WHEN SUM(subview.oid) > 0
|
|
|
THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || activite.cti_prepare_rapport_get_column(column_name,'MONTH') || ')' ELSE 'NULL::numeric' END)
|
|
|
ELSE '' END
|
|
|
FROM
|
|
|
(SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date
|
|
|
FROM activite.v_rapports_tables_indicateurs_1, generate_series(1, _maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date
|
|
|
WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s
|
|
|
LEFT JOIN
|
|
|
(
|
|
|
|
|
|
SELECT *
|
|
|
FROM activite.t_indicateurs
|
|
|
WHERE oid IN (
|
|
|
SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id])
|
|
|
FROM activite.t_rapports
|
|
|
JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
|
|
|
JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
|
|
|
) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date
|
|
|
GROUP BY 1
|
|
|
UNION
|
|
|
SELECT
|
|
|
'INDICATEURS_COLUMNS_BUDGET'::text,
|
|
|
CASE WHEN SUM(subview.oid) > 0
|
|
|
THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN 'SUM' || '(' || activite.cti_prepare_rapport_get_column('CASE WHEN indicateur_id = ' || subview.oid::text || ' THEN budget ELSE 0 END','MONTH') || ')' ELSE 'NULL::numeric' END)
|
|
|
ELSE '' END
|
|
|
FROM
|
|
|
(SELECT subview_s.indicateur_id, subview_s.dimension_date, subview.oid
|
|
|
FROM
|
|
|
(SELECT generate_series AS indicateur_id , ''::text AS dimension_date
|
|
|
FROM generate_series(1, _maxind)
|
|
|
GROUP BY 1 ORDER BY 1) subview_s
|
|
|
LEFT JOIN
|
|
|
(
|
|
|
|
|
|
SELECT *
|
|
|
FROM activite.t_indicateurs
|
|
|
WHERE oid IN (
|
|
|
SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id])
|
|
|
FROM activite.t_rapports
|
|
|
JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
|
|
|
JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
|
|
|
AND oid IN (SELECT indicateur_id FROM activite.t_budget_cle_budget)
|
|
|
) subview ON subview_s.indicateur_id = subview.oid
|
|
|
ORDER BY 1
|
|
|
) subview
|
|
|
GROUP BY 1
|
|
|
ORDER BY 1
|
|
|
|
|
|
|
|
|
|
|
|
LOOP
|
|
|
RETURN NEXT row;
|
|
|
END LOOP;
|
|
|
|
|
|
END IF;
|
|
|
IF (i_option = 'DASHBOARD') THEN
|
|
|
FOR row IN
|
|
|
SELECT
|
|
|
'INDICATEURS_' || subview_s.table_name || '#' || subview_s.dimension_date,
|
|
|
CASE WHEN SUM(subview.oid) > 0
|
|
|
THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || activite.cti_prepare_rapport_get_column(column_name,'') || ')' ELSE 'NULL::numeric' END)
|
|
|
ELSE '' END
|
|
|
FROM
|
|
|
(SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date
|
|
|
FROM activite.v_rapports_tables_indicateurs_1, generate_series(1, _maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date
|
|
|
WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s
|
|
|
LEFT JOIN
|
|
|
(
|
|
|
|
|
|
SELECT *
|
|
|
FROM activite.t_indicateurs
|
|
|
WHERE oid IN (
|
|
|
SELECT base.cti_unnest(Array[oid, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id])
|
|
|
FROM activite.t_indicateurs WHERE code <> '' AND t_indicateurs.oid > 0 AND (indicateur_reference_id <> 0 OR COALESCE(dimension_date_2,'') = ''))
|
|
|
) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date
|
|
|
GROUP BY 1
|
|
|
ORDER BY 1
|
|
|
|
|
|
|
|
|
|
|
|
LOOP
|
|
|
RETURN NEXT row;
|
|
|
END LOOP;
|
|
|
|
|
|
END IF;
|
|
|
|
|
|
RETURN ;
|
|
|
END;
|