<?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>
|