You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

553 lines
21 KiB

<?xml version="1.0" encoding="ISO-8859-1"?>
<ROOT>
<NODE name="INIT" label="INITIALISATIONS ENVIRONNEMENT [FINESS] [FINESS_TEXTE]" />
<NODE name="PARAM" label="RÉCUPÉRATION DES PARAMÈTRES">
<NODE label="Récupération des tables">
<sqlcmd><![CDATA[
-- Niveau.
SELECT base.cti_copy_table(
'dbname=[DBNAME] host=[DBHOST] port=[DBPORT] user=[DBUSERNAME] password=[DBPASSWORD]',
'SELECT * FROM rh.t_planning_niveau',
'temp t_planning_niveau')
;
-- Création de la table de correspondance (t_corr).
DROP TABLE IF EXISTS c_planning_niveau
;
CREATE TEMP TABLE c_planning_niveau AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex,
null::text AS to_code,
null::text AS to_texte,
null::bigint AS to_oid
FROM t_planning_niveau
;
-- Création d'une table temp des données de destination avec soundex (t_dsx).
DROP TABLE IF EXISTS w_planning_niveau_to
;
CREATE TEMP TABLE w_planning_niveau_to AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex
FROM rh.t_planning_niveau
;
-- Màj de t_corr à partir de t_dsx avec liaison différente sur le code (nouveaux codes).
UPDATE c_planning_niveau SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte
WHERE code NOT IN (SELECT code FROM w_planning_niveau_to)
;
-- Pour les lignes de t_corr non traitées, màj à partir de t_dsx avec liaison sur le code et le soundex.
-- Permet de rapprocher les codes existants.
UPDATE c_planning_niveau SET
to_oid = w_planning_niveau_to.oid,
to_code = w_planning_niveau_to.code,
to_texte = w_planning_niveau_to.texte
FROM w_planning_niveau_to
WHERE 1=1
AND c_planning_niveau.to_oid IS NULL
AND c_planning_niveau.code = w_planning_niveau_to.code
AND c_planning_niveau.texte_soundex = w_planning_niveau_to.texte_soundex
;
-- Pour les lignes restantes, on applique la translation standard.
UPDATE c_planning_niveau SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte_court
WHERE to_oid IS NULL
;
ALTER TABLE c_planning_niveau ADD CONSTRAINT c_planning_niveau_pkey PRIMARY KEY(oid)
;
-- ???
UPDATE rh.t_planning_niveau SET
code_original = '#'||oid::text
WHERE code_original != oid::text
;
UPDATE rh.t_planning_niveau SET
code_original = oid::text
WHERE code_original != oid::text
;
INSERT INTO rh.t_planning_niveau(
oid,
code_original,
code,
texte,
texte_court)
SELECT
to_oid,
to_oid AS code_original,
to_code,
texte,
texte_court
FROM c_planning_niveau
WHERE 1=1
AND oid != 0 -- Le N/R est importé dans le SHARE.
AND to_oid NOT IN (SELECT oid FROM rh.t_planning_niveau) -- On insère que les nouveaux codes.
;
-- Qualification.
SELECT base.cti_copy_table(
'dbname=[DBNAME] host=[DBHOST] port=[DBPORT] user=[DBUSERNAME] password=[DBPASSWORD]',
'SELECT * FROM rh.t_planning_qualification',
'temp t_planning_qualification')
;
-- Création de la table de correspondance (t_corr).
DROP TABLE IF EXISTS c_planning_qualification
;
CREATE TEMP TABLE c_planning_qualification AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex,
null::text AS to_code,
null::text AS to_texte,
null::bigint AS to_oid
FROM t_planning_qualification
;
-- Création d'une table temp des données de destination avec soundex (t_dsx).
DROP TABLE IF EXISTS w_planning_qualification_to
;
CREATE TEMP TABLE w_planning_qualification_to AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex
FROM rh.t_planning_qualification
;
-- Màj de t_corr à partir de t_dsx avec liaison différente sur le code (nouveaux codes).
UPDATE c_planning_qualification SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte
WHERE code NOT IN (SELECT code FROM w_planning_qualification_to)
;
-- Pour les lignes de t_corr non traitées, màj à partir de t_dsx avec liaison sur le code et le soundex.
-- Permet de rapprocher les codes existants.
UPDATE c_planning_qualification SET
to_oid = w_planning_qualification_to.oid,
to_code = w_planning_qualification_to.code,
to_texte = w_planning_qualification_to.texte
FROM w_planning_qualification_to
WHERE 1=1
AND c_planning_qualification.to_oid IS NULL
AND c_planning_qualification.code = w_planning_qualification_to.code
AND c_planning_qualification.texte_soundex = w_planning_qualification_to.texte_soundex
;
-- Pour les lignes restantes, on applique la translation standard.
UPDATE c_planning_qualification SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte_court
WHERE to_oid IS NULL
;
ALTER TABLE c_planning_qualification ADD CONSTRAINT c_planning_qualification_pkey PRIMARY KEY(oid)
;
-- ???
UPDATE rh.t_planning_qualification SET
code_original = '#'||oid::text
WHERE code_original != oid::text
;
UPDATE rh.t_planning_qualification SET
code_original = oid::text
WHERE code_original != oid::text
;
INSERT INTO rh.t_planning_qualification(
oid,
code_original,
code,
texte,
texte_court)
SELECT
to_oid,
to_oid AS code_original,
to_code,
texte,
texte_court
FROM c_planning_qualification
WHERE 1=1
AND oid != 0 -- Le N/R est importé dans le SHARE.
AND to_oid NOT IN (SELECT oid FROM rh.t_planning_qualification) -- On insère que les nouveaux codes.
;
-- Service.
SELECT base.cti_copy_table(
'dbname=[DBNAME] host=[DBHOST] port=[DBPORT] user=[DBUSERNAME] password=[DBPASSWORD]',
'SELECT * FROM rh.t_planning_service',
'temp t_planning_service')
;
-- Création de la table de correspondance (t_corr).
DROP TABLE IF EXISTS c_planning_service
;
CREATE TEMP TABLE c_planning_service AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex,
null::text AS to_code,
null::text AS to_texte,
null::bigint AS to_oid
FROM t_planning_service
;
-- Création d'une table temp des données de destination avec soundex (t_dsx).
DROP TABLE IF EXISTS w_planning_service_to
;
CREATE TEMP TABLE w_planning_service_to AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex
FROM rh.t_planning_service
;
-- Màj de t_corr à partir de t_dsx avec liaison différente sur le code (nouveaux codes).
UPDATE c_planning_service SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte
WHERE code NOT IN (SELECT code FROM w_planning_service_to)
;
-- Pour les lignes de t_corr non traitées, màj à partir de t_dsx avec liaison sur le code et le soundex.
-- Permet de rapprocher les codes existants.
UPDATE c_planning_service SET
to_oid = w_planning_service_to.oid,
to_code = w_planning_service_to.code,
to_texte = w_planning_service_to.texte
FROM w_planning_service_to
WHERE 1=1
AND c_planning_service.to_oid IS NULL
AND c_planning_service.code = w_planning_service_to.code
AND c_planning_service.texte_soundex = w_planning_service_to.texte_soundex
;
-- Pour les lignes restantes, on applique la translation standard.
UPDATE c_planning_service SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte_court
WHERE to_oid IS NULL
;
ALTER TABLE c_planning_service ADD CONSTRAINT c_planning_service_pkey PRIMARY KEY(oid)
;
-- ???
UPDATE rh.t_planning_service SET
code_original = '#'||oid::text
WHERE code_original != oid::text
;
UPDATE rh.t_planning_service SET
code_original = oid::text
WHERE code_original != oid::text
;
INSERT INTO rh.t_planning_service(
oid,
code_original,
code,
texte,
texte_court)
SELECT
to_oid,
to_oid AS code_original,
to_code,
texte,
texte_court
FROM c_planning_service
WHERE 1=1
AND oid != 0 -- Le N/R est importé dans le SHARE.
AND to_oid NOT IN (SELECT oid FROM rh.t_planning_service) -- On insère que les nouveaux codes.
;
-- Type d'absence.
SELECT base.cti_copy_table(
'dbname=[DBNAME] host=[DBHOST] port=[DBPORT] user=[DBUSERNAME] password=[DBPASSWORD]',
'SELECT * FROM rh.t_planning_type_absence',
'temp t_planning_type_absence')
;
-- Création de la table de correspondance (t_corr).
DROP TABLE IF EXISTS c_planning_type_absence
;
CREATE TEMP TABLE c_planning_type_absence AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex,
null::text AS to_code,
null::text AS to_texte,
null::bigint AS to_oid
FROM t_planning_type_absence
;
-- Création d'une table temp des données de destination avec soundex (t_dsx).
DROP TABLE IF EXISTS w_planning_type_absence_to
;
CREATE TEMP TABLE w_planning_type_absence_to AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex
FROM rh.t_planning_type_absence
;
-- Màj de t_corr à partir de t_dsx avec liaison différente sur le code (nouveaux codes).
UPDATE c_planning_type_absence SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte
WHERE code NOT IN (SELECT code FROM w_planning_type_absence_to)
;
-- Pour les lignes de t_corr non traitées, màj à partir de t_dsx avec liaison sur le code et le soundex.
-- Permet de rapprocher les codes existants.
UPDATE c_planning_type_absence SET
to_oid = w_planning_type_absence_to.oid,
to_code = w_planning_type_absence_to.code,
to_texte = w_planning_type_absence_to.texte
FROM w_planning_type_absence_to
WHERE 1=1
AND c_planning_type_absence.to_oid IS NULL
AND c_planning_type_absence.code = w_planning_type_absence_to.code
AND c_planning_type_absence.texte_soundex = w_planning_type_absence_to.texte_soundex
;
-- Pour les lignes restantes, on applique la translation standard.
UPDATE c_planning_type_absence SET
to_oid = oid + [IPX],
to_code = code,
to_texte = texte_court
WHERE to_oid IS NULL
;
ALTER TABLE c_planning_type_absence ADD CONSTRAINT c_planning_type_absence_pkey PRIMARY KEY(oid)
;
-- ???
UPDATE rh.t_planning_type_absence SET
code_original = '#'||oid::text
WHERE code_original != oid::text
;
UPDATE rh.t_planning_type_absence SET
code_original = oid::text
WHERE code_original != oid::text
;
INSERT INTO rh.t_planning_type_absence(
oid,
code_original,
code,
texte,
texte_court)
SELECT
to_oid,
to_oid AS code_original,
to_code,
texte,
texte_court
FROM c_planning_type_absence
WHERE 1=1
AND oid != 0 -- Le N/R est importé dans le SHARE.
AND to_oid NOT IN (SELECT oid FROM rh.t_planning_type_absence) -- On insère que les nouveaux codes.
;
-- Code horaire.
SELECT base.cti_copy_table(
'dbname=[DBNAME] host=[DBHOST] port=[DBPORT] user=[DBUSERNAME] password=[DBPASSWORD]',
'SELECT * FROM rh.t_planning_code_horaire',
'temp t_planning_code_horaire')
;
-- Création de la table de correspondance (t_corr).
DROP TABLE IF EXISTS c_planning_code_horaire
;
CREATE TEMP TABLE c_planning_code_horaire AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex,
null::text AS to_code,
null::text AS to_texte,
null::bigint AS to_oid
FROM t_planning_code_horaire
;
-- Création d'une table temp des données de destination avec soundex (t_dsx).
DROP TABLE IF EXISTS w_planning_code_horaire_to
;
CREATE TEMP TABLE w_planning_code_horaire_to AS
SELECT
*,
base.cti_soundex_nom(texte) AS texte_soundex
FROM rh.t_planning_code_horaire
;
-- Màj de t_corr à partir de t_dsx avec liaison différente sur le code (nouveaux codes).
UPDATE c_planning_code_horaire SET
to_oid = oid + [IPX],
to_code = code_original,
to_texte = texte
WHERE code_original NOT IN (SELECT code_original FROM w_planning_code_horaire_to)
;
-- Pour les lignes de t_corr non traitées, màj à partir de t_dsx avec liaison sur le code et le soundex.
-- Permet de rapprocher les codes existants.
UPDATE c_planning_code_horaire SET
to_oid = w_planning_code_horaire_to.oid,
to_code = w_planning_code_horaire_to.code_original,
to_texte = w_planning_code_horaire_to.texte
FROM w_planning_code_horaire_to
WHERE 1=1
AND c_planning_code_horaire.to_oid IS NULL
AND c_planning_code_horaire.code_original = w_planning_code_horaire_to.code_original
AND c_planning_code_horaire.texte_soundex = w_planning_code_horaire_to.texte_soundex
;
-- Pour les lignes restantes, on applique la translation standard.
UPDATE c_planning_code_horaire SET
to_oid = oid + [IPX],
to_code = code_original,
to_texte = texte_court
WHERE to_oid IS NULL
;
ALTER TABLE c_planning_code_horaire ADD CONSTRAINT c_planning_code_horaire_pkey PRIMARY KEY(oid)
;
-- ???
-- UPDATE rh.t_planning_code_horaire SET
-- code_original = '#'||oid::text
-- WHERE code_original != oid::text
-- ;
-- UPDATE rh.t_planning_code_horaire SET
-- code_original = oid::text
-- WHERE code_original != oid::text
-- ;
INSERT INTO rh.t_planning_code_horaire(
oid,
code_original,
code,
texte,
texte_court)
SELECT
to_oid,
to_oid AS code_original,
to_code,
texte,
texte_court
FROM c_planning_code_horaire
WHERE 1=1
AND oid != 0 -- Le N/R est importé dans le SHARE.
AND to_oid NOT IN (SELECT oid FROM rh.t_planning_code_horaire) -- On insère que les nouveaux codes.
;
UPDATE rh.t_planning_code_horaire SET
code = t_planning_code_horaire_source.code,
texte = t_planning_code_horaire_source.texte,
texte_court = t_planning_code_horaire_source.texte_court
FROM t_planning_code_horaire t_planning_code_horaire_source
WHERE t_planning_code_horaire . oid = t_planning_code_horaire_source.oid + [IPX] AND
(
t_planning_code_horaire.code <> t_planning_code_horaire_source.code OR
t_planning_code_horaire.texte <> t_planning_code_horaire_source.texte OR
t_planning_code_horaire.texte_court <> t_planning_code_horaire_source.texte_court
)
]]></sqlcmd>
</NODE>
</NODE>
<NODE name="PLANNING" label="RÉCUPÉRATION DU PLANNING">
<NODE label="Mouvements du planning">
<sqlcmd><![CDATA[
-- Mouvements du planning.
SELECT base.cti_copy_table(
'dbname=[DBNAME] host=[DBHOST] port=[DBPORT] user=[DBUSERNAME] password=[DBPASSWORD]',
'SELECT * FROM rh.p_planning_mouvement',
'temp p_planning_mouvement')
;
INSERT INTO rh.p_planning_mouvement (
contrat_id,
contrat_mois_id,
date,
etablissement_id,
mois,
niveau_id,
qualification_id,
salarie_id,
semaine,
service_id,
code_horaire_id,
temps_absence,
temps_du,
temps_du_initial,
temps_valide,
type_absence_id)
SELECT
contrat_id + [IPX] AS contrat_id,
contrat_mois_id + [IPX] AS contrat_mois_id,
date,
case when p_planning_mouvement.etablissement_id = 0 then 0 else p_planning_mouvement.etablissement_id + [IPX] end AS etablissement_id,
mois,
coalesce(c_planning_niveau.to_oid, 0) AS niveau_id,
coalesce(c_planning_qualification.to_oid, 0) AS qualification_id,
salarie_id + [IPX] AS salarie_id,
semaine,
coalesce(c_planning_service.to_oid, 0) AS service_id,
coalesce(c_planning_code_horaire.to_oid, 0) AS code_horaire_id,
temps_absence,
temps_du,
temps_du_initial,
temps_valide,
coalesce(c_planning_type_absence.to_oid, 0) AS type_absence_id
FROM p_planning_mouvement
LEFT JOIN c_planning_niveau ON c_planning_niveau.oid = p_planning_mouvement.niveau_id
LEFT JOIN c_planning_qualification ON c_planning_qualification.oid = p_planning_mouvement.qualification_id
LEFT JOIN c_planning_service ON c_planning_service.oid = p_planning_mouvement.service_id
LEFT JOIN c_planning_code_horaire ON c_planning_code_horaire.oid = p_planning_mouvement.code_horaire_id
LEFT JOIN c_planning_type_absence ON c_planning_type_absence.oid = p_planning_mouvement.type_absence_id
;
]]></sqlcmd>
</NODE>
</NODE>
<NODE name="RAZ" type="common" />
<NODE name="POST" type="common" />
<NODE name="VACUUM" type="common" />
<NODE name="DISABLE_INDEX" type="common" />
<NODE name="ENABLE_INDEX" type="common" />
</ROOT>