|
|
-- 1/3 : Création de la table temporaire
|
|
|
DROP TABLE IF EXISTS w_dbsetup
|
|
|
;
|
|
|
|
|
|
CREATE TEMP TABLE w_dbsetup AS
|
|
|
SELECT
|
|
|
t_classes_sections.oid,
|
|
|
t_classes_sections.code,
|
|
|
t_classes_sections.texte,
|
|
|
t_classes_sections.condition,
|
|
|
t_classes_sections.include_code,
|
|
|
t_classes_sections.exclude_code,
|
|
|
CASE WHEN NOT (t_classes.sequence != 30 AND t_listes_tables.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN t_listes_tables.code ELSE 'TYA' END as table_code,
|
|
|
t_classes.sequence as classe_sequence
|
|
|
FROM
|
|
|
eco.t_classes_sections,
|
|
|
eco.t_classes,
|
|
|
eco.t_listes_tables
|
|
|
WHERE 1=1
|
|
|
AND t_classes_sections.classe_id = t_classes.oid
|
|
|
AND table_id = t_listes_tables.oid
|
|
|
AND (t_classes.is_cti = '1' OR (t_classes.code ilike 'CTI_%' AND t_classes.code NOT IN ('CTI_CPTLETBUD','CTI_CPTVOTE','CTI_CPTRCV','CTI_UFCR','CTI_UFUM','CTI_UFSERS','CTI_UFSITE')))
|
|
|
ORDER BY
|
|
|
t_listes_tables.code,
|
|
|
t_classes.sequence,
|
|
|
t_classes_sections.code LIMIT 0
|
|
|
;
|
|
|
|
|
|
-- 2/3 : Peuplement de la table temporaire
|
|
|
INSERT INTO w_dbsetup(
|
|
|
oid,
|
|
|
code,
|
|
|
texte,
|
|
|
condition,
|
|
|
include_code,
|
|
|
exclude_code,
|
|
|
table_code,
|
|
|
classe_sequence
|
|
|
)
|
|
|
VALUES
|
|
|
(1, 'ATE', 'Atelier', '', '0', '0', 'TYA', 30),
|
|
|
(1, 'CUI', 'Cuisine', '', '0', '0', 'TYA', 30),
|
|
|
(1, 'DM', 'Dispositifs Médicaux', '', '0', '0', 'TYA', 30),
|
|
|
(1, 'DMI', 'Dispositifs Médicaux Implantables', '', '0', '0', 'TYA', 30),
|
|
|
(1, 'ECO', 'Economat', '', '0', '0', 'TYA', 30),
|
|
|
(1, 'LIN', 'Lingerie', '', '0', '0', 'TYA', 30),
|
|
|
(1, 'MED', 'Médicaments', '', '0', '0', 'TYA', 30),
|
|
|
(1, 'PAR', 'Parapharmacie', '', '0', '0', 'TYA', 30),
|
|
|
(1, '00', 'Livraison', '', '', '', 'TYM', 1),
|
|
|
(1, '01', 'Consommations', '', '', '', 'TYM', 1),
|
|
|
(1, '02', 'Pertes', '', '', '', 'TYM', 1),
|
|
|
(1, '99', 'Autres', '', '', '', 'TYM', 1),
|
|
|
(1, '11', 'Régularisation livraison', '', '', '', 'TYM', 1),
|
|
|
(1, '12', 'Retour', '', '', '', 'TYM', 1),
|
|
|
(1, '13', 'Avoir', '', '', '', 'TYM', 1),
|
|
|
(1, '30', 'Régularisation inventaire', '', '', '', 'TYM', 1)
|
|
|
;
|
|
|
|
|
|
-- 3/3 : Màj de la table iCTI
|
|
|
-- Sections à supprimer -> Sections CTI non-livrées
|
|
|
DROP TABLE IF EXISTS w_del_sections
|
|
|
;
|
|
|
CREATE TEMP TABLE w_del_sections as (
|
|
|
SELECT oid FROM eco.t_classes_sections
|
|
|
WHERE classe_id IN (
|
|
|
SELECT
|
|
|
t_classes.oid
|
|
|
FROM eco.t_classes
|
|
|
LEFT JOIN w_dbsetup ON w_dbsetup.code = t_classes_sections.code
|
|
|
WHERE 1=1
|
|
|
AND is_cti = '1'
|
|
|
AND w_dbsetup.code IS NULL
|
|
|
)
|
|
|
);
|
|
|
|
|
|
DELETE FROM eco.t_classes_sections_elements
|
|
|
WHERE section_id IN (SELECT oid FROM w_del_sections);
|
|
|
|
|
|
|
|
|
DELETE FROM eco.t_classes_sections
|
|
|
WHERE oid IN (SELECT oid FROM w_del_sections);
|
|
|
|
|
|
UPDATE eco.t_classes_sections SET
|
|
|
texte = w_dbsetup.texte,
|
|
|
condition = w_dbsetup.condition,
|
|
|
exclude_code = w_dbsetup.exclude_code,
|
|
|
include_code = w_dbsetup.include_code
|
|
|
FROM w_dbsetup, eco.t_classes, eco.t_listes_tables
|
|
|
WHERE t_classes.oid = t_classes_sections.classe_id
|
|
|
AND t_listes_tables.oid = t_classes.table_id
|
|
|
AND w_dbsetup.code||'@'||w_dbsetup.classe_sequence||'@'||w_dbsetup.table_code = t_classes_sections.code||'@'||t_classes.sequence||'@'||t_listes_tables.code
|
|
|
AND (
|
|
|
t_classes_sections.texte IS DISTINCT FROM w_dbsetup.texte
|
|
|
OR t_classes_sections.condition IS DISTINCT FROM w_dbsetup.condition
|
|
|
OR t_classes_sections.exclude_code IS DISTINCT FROM w_dbsetup.exclude_code
|
|
|
OR t_classes_sections.include_code IS DISTINCT FROM w_dbsetup.include_code
|
|
|
);
|
|
|
|
|
|
INSERT INTO eco.t_classes_sections(code, texte, classe_id, include_code, exclude_code)
|
|
|
SELECT
|
|
|
w_dbsetup.code,
|
|
|
w_dbsetup.texte,
|
|
|
t_classes.oid,
|
|
|
w_dbsetup.include_code,
|
|
|
w_dbsetup.exclude_code
|
|
|
FROM
|
|
|
w_dbsetup
|
|
|
JOIN eco.t_listes_tables ON (w_dbsetup.table_code = t_listes_tables.code
|
|
|
-- ou s'il s'agit de la classe des cles
|
|
|
OR (classe_sequence = 30 AND t_listes_tables.code = (SELECT t_listes_tables.code FROM eco.t_listes_tables JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' AND table_id = t_listes_tables.oid)))
|
|
|
JOIN eco.t_classes ON 1=1
|
|
|
AND t_classes.table_id = t_listes_tables.oid
|
|
|
AND t_classes.sequence = w_dbsetup.classe_sequence
|
|
|
WHERE w_dbsetup.code||'@'||w_dbsetup.classe_sequence||'@'|| CASE WHEN w_dbsetup.classe_sequence != 30 THEN w_dbsetup.table_code ELSE (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') END
|
|
|
NOT IN (
|
|
|
SELECT t_classes_sections.code||'@'||t_classes.sequence||'@'||CASE WHEN w_dbsetup.classe_sequence != 30 THEN t_listes_tables.code ELSE (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') END
|
|
|
FROM eco.t_classes_sections
|
|
|
JOIN eco.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
JOIN eco.t_listes_tables ON t_listes_tables.oid = t_classes.table_id)
|
|
|
;
|