600600 as p_od_net_salarie,
3 as s_od_net_salarie,
-1 as c_od_net_salarie,
-- OD/Net patronales
false as p_od_net_patronale,
5 as s_od_net_patronale,
1 as c_od_net_patronale,
-- Net imposable
cdde1k in ('G', 'R') and cdrubk::int < 599920 as p_net_imposable,
3 as s_net_imposable,
1 as c_net_imposable,
-- Net à payer
cdde1k in ('G', 'R') p_net_a_payer,
3 as s_net_a_payer,
1 as c_net_a_payer
from prod_talentia_rh.iptw2fghm_rubrik
;
update rh.t_rubriques set
p_cumul = rub.p_cumul,
p_detail = rub.p_detail,
p_nombre = rub.p_nombre,
s_nombre = rub.s_nombre,
c_nombre = rub.c_nombre,
p_base = rub.p_base,
s_base = rub.s_base,
c_base = rub.c_base,
p_heures_payees = rub.p_heures_payees,
s_heures_payees = rub.s_heures_payees,
c_heures_payees = rub.c_heures_payees,
p_heures_travaillees = rub.p_heures_travaillees,
s_heures_travaillees = rub.s_heures_travaillees,
c_heures_travaillees = rub.c_heures_travaillees,
p_masse_salariale = rub.p_masse_salariale,
s_masse_salariale = rub.s_masse_salariale,
c_masse_salariale = rub.c_masse_salariale,
p_brut = rub.p_brut,
s_brut = rub.s_brut,
c_brut = rub.c_brut,
p_avantage_nature = rub.p_avantage_nature,
s_avantage_nature = rub.s_avantage_nature,
c_avantage_nature = rub.c_avantage_nature,
p_frais_imposables = rub.p_frais_imposables,
s_frais_imposables = rub.s_frais_imposables,
c_frais_imposables = rub.c_frais_imposables,
p_cotisation_salarie = rub.p_cotisation_salarie,
s_cotisation_salarie = rub.s_cotisation_salarie,
c_cotisation_salarie = rub.c_cotisation_salarie,
p_cotisation_patronale = rub.p_cotisation_patronale,
s_cotisation_patronale = rub.s_cotisation_patronale,
c_cotisation_patronale = rub.c_cotisation_patronale,
p_od_net_salarie = rub.p_od_net_salarie,
s_od_net_salarie = rub.s_od_net_salarie,
c_od_net_salarie = rub.c_od_net_salarie,
p_od_net_patronale = rub.p_od_net_patronale,
s_od_net_patronale = rub.s_od_net_patronale,
c_od_net_patronale = rub.c_od_net_patronale,
p_net_imposable = rub.p_net_imposable,
s_net_imposable = rub.s_net_imposable,
c_net_imposable = rub.c_net_imposable,
p_net_a_payer = rub.p_net_a_payer,
s_net_a_payer = rub.s_net_a_payer,
c_net_a_payer = rub.c_net_a_payer
from w_rub_affectation as rub
where 1=1
AND t_rubriques.code_original = rub.cdrubk
AND NOT t_rubriques.user_modified
;
]]>
= 2016
AND (1!=1
OR t_rubriques.p_detail
OR t_rubriques.p_cumul)
;
TRUNCATE rh.p_historique_paie
;
ALTER SEQUENCE rh.s_historique_paie RESTART WITH 1
;
SELECT base.cti_stash_table_indexes('rh', 'p_historique_paie')
;
DROP TABLE IF EXISTS w_hp_1
;
CREATE TEMP TABLE w_hp_1 AS
SELECT
nextval('rh.s_historique_paie'::regclass) as oid,
date_part('year', age(w_hp.date_debut, date_naissance)) AS age_id,
w_hp.nombre,
w_hp.base AS base,
(max(ARRAY[EXTRACT(EPOCH FROM p_contrats_mois.date_fin),p_contrats_mois.contrat_id]))[2] AS contrat_id,
(max(ARRAY[EXTRACT(EPOCH FROM p_contrats_mois.date_fin),p_contrats_mois.oid]))[2] AS contrat_mois_id,
w_hp.date_debut,
w_hp.date_fin,
w_hp.date_paie,
w_hp.mois_activite,
w_hp.mois_paie,
w_hp.heure_payee,
w_hp.heure_travaillee,
w_hp.montant_avantage_nature,
w_hp.montant_brut,
w_hp.montant_masse_salariale,
w_hp.montant_cotisation_patronale,
w_hp.montant_cotisation_salarie,
w_hp.montant_frais_imposables,
w_hp.montant_net_a_payer_salarie,
w_hp.montant_net_imposable_salarie,
w_hp.montant_od_net_salarie,
w_hp.montant_od_net_patronale,
coalesce(t_organismes_cotisation.oid, 0) AS organisme_cotisation_id,
rubrique_id,
w_hp.mat,
w_hp.salarie_id,
w_hp.taux_cotisation_patronale,
w_hp.taux_cotisation_salarie,
0 AS compte_id,
nojobo,
norjpo
FROM w_hp
LEFT JOIN w_caisses ON w_caisses.rub = w_hp.rub
LEFT JOIN rh.t_organismes_cotisation ON t_organismes_cotisation.code_original = w_caisses.code_ori
LEFT JOIN rh.p_contrats_mois ON 1=1
AND p_contrats_mois.salarie_id = w_hp.salarie_id
AND base.cti_overlaps(p_contrats_mois.date_debut, p_contrats_mois.date_fin, w_hp.date_debut, w_hp.date_fin)
WHERE w_hp.p_detail
GROUP BY 1,2,3,4, 7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, w_hp.ctid
;
-- Associer les bulletins hors contrat (is null) avec le contrat PRECEDENT.
UPDATE w_hp_1 SET
contrat_id = subq.contrat_id,
contrat_mois_id = subq.contrat_mois_id
FROM (
select
w_hp_1.oid,
(max(array[extract(epoch from p_contrats_mois.date_fin), p_contrats_mois.contrat_id]))[2] as contrat_id,
(max(array[extract(epoch from p_contrats_mois.date_fin), p_contrats_mois.oid]))[2] as contrat_mois_id
from w_hp_1
join rh.p_contrats_mois on true
and p_contrats_mois.salarie_id = w_hp_1.salarie_id
and p_contrats_mois.date_fin < w_hp_1.date_debut
where contrat_mois_id is null
group by 1) as subq
WHERE true
AND w_hp_1.oid = subq.oid
AND w_hp_1.contrat_mois_id is null
;
-- Associer les bulletins hors contrat (is null) avec le contrat SUIVANT.
UPDATE w_hp_1 SET
contrat_id = subq.contrat_id,
contrat_mois_id = subq.contrat_mois_id
FROM (
select
w_hp_1.oid,
(max(array[extract(epoch from p_contrats_mois.date_fin), p_contrats_mois.contrat_id]))[2] as contrat_id,
(max(array[extract(epoch from p_contrats_mois.date_fin), p_contrats_mois.oid]))[2] as contrat_mois_id
from w_hp_1
join rh.p_contrats_mois on true
and p_contrats_mois.salarie_id = w_hp_1.salarie_id
and p_contrats_mois.date_debut > w_hp_1.date_fin
where contrat_mois_id is null
group by 1) as subq
WHERE true
AND w_hp_1.oid = subq.oid
AND w_hp_1.contrat_mois_id is null
;
-- Insertion dans la table de production CTI.
INSERT INTO rh.p_historique_paie(
oid,
age_id,
nombre,
base,
contrat_id,
contrat_mois_id,
date_debut,
date_fin,
date_paie,
mois_activite,
mois_paie,
heure_payee,
heure_travaillee,
montant_avantage_nature,
montant_brut,
montant_masse_salariale,
montant_cotisation_patronale,
montant_cotisation_salarie,
montant_frais_imposables,
montant_net_a_payer_salarie,
montant_net_imposable_salarie,
montant_od_net_salarie,
montant_od_net_patronale,
organisme_cotisation_id,
rubrique_id,
salarie_id,
taux_cotisation_patronale,
taux_cotisation_salarie,
compte_id)
SELECT
oid,
age_id,
nombre,
base,
contrat_id,
contrat_mois_id,
date_debut,
date_fin,
date_paie,
mois_activite,
mois_paie,
heure_payee,
heure_travaillee,
montant_avantage_nature,
montant_brut,
montant_masse_salariale,
montant_cotisation_patronale,
montant_cotisation_salarie,
montant_frais_imposables,
montant_net_a_payer_salarie,
montant_net_imposable_salarie,
montant_od_net_salarie,
montant_od_net_patronale,
organisme_cotisation_id,
rubrique_id,
salarie_id,
taux_cotisation_patronale,
taux_cotisation_salarie,
compte_id
FROM w_hp_1
;
-- Inserer pour chaque bulletin une ligne qui va faire le compte avec le total (rubrique 'C000' nommée 'Ecart cumulé')
INSERT INTO rh.p_historique_paie(
age_id,
contrat_id,
contrat_mois_id,
date_debut,
date_fin,
date_paie,
mois_activite,
mois_paie,
nombre,
base,
heure_payee,
heure_travaillee,
montant_masse_salariale,
montant_brut,
montant_avantage_nature,
montant_frais_imposables,
montant_cotisation_salarie,
montant_cotisation_patronale,
montant_od_net_salarie,
montant_od_net_patronale,
montant_net_imposable_salarie,
montant_net_a_payer_salarie,
organisme_cotisation_id,
profil_id, -- @deprecated
rubrique_id,
salarie_id,
taux_cotisation_patronale,
taux_cotisation_salarie)
SELECT
age_id,
contrat_id,
contrat_mois_id,
subq.date_debut,
subq.date_fin,
subq.date_paie,
subq.mois_activite,
subq.mois_paie,
0 as nombre,
0 AS base,
sum(cum.heure_payee - subq.heure_payee) as heure_payee,
sum(cum.heure_travaillee - subq.heure_travaillee) as heure_travaillee,
sum(cum.montant_masse_salariale - subq.montant_masse_salariale) as montant_masse_salariale,
sum(cum.montant_brut - subq.montant_brut) as montant_brut,
sum(cum.montant_avantage_nature - subq.montant_avantage_nature) as montant_avantage_nature,
sum(cum.montant_frais_imposables - subq.montant_frais_imposables) as montant_frais_imposables,
sum(cum.montant_cotisation_salarie - subq.montant_cotisation_salarie) as montant_cotisation_salarie,
sum(cum.montant_cotisation_patronale - subq.montant_cotisation_patronale) as montant_cotisation_patronale,
sum(cum.montant_od_net_salarie - subq.montant_od_net_salarie) as montant_od_net_salarie,
sum(cum.montant_od_net_patronale - subq.montant_od_net_patronale) as montant_od_net_patronale,
sum(cum.montant_net_imposable_salarie - subq.montant_net_imposable_salarie) as montant_net_imposable_salarie,
sum(cum.montant_net_a_payer_salarie - subq.montant_net_a_payer_salarie) as montant_net_a_payer_salarie,
subq.organisme_cotisation_id AS organisme_cotisation_id,
subq.profil_id AS profil_id,
(SELECT oid FROM rh.t_rubriques WHERE code = 'C000') AS rubrique_id,
subq.salarie_id AS salarie_id,
0 AS taux_cotisation_patronale,
0 AS taux_cotisation_salarie
FROM (
SELECT
w_hp.salarie_id,
w_hp.nojobo,
w_hp.norjpo,
sum(w_hp.heure_payee) as heure_payee,
sum(w_hp.heure_travaillee) as heure_travaillee,
sum(w_hp.montant_avantage_nature) as montant_avantage_nature,
sum(w_hp.montant_brut) as montant_brut,
sum(w_hp.montant_masse_salariale) as montant_masse_salariale,
sum(w_hp.montant_cotisation_patronale) as montant_cotisation_patronale,
sum(w_hp.montant_cotisation_salarie) as montant_cotisation_salarie,
sum(w_hp.montant_frais_imposables) as montant_frais_imposables,
sum(w_hp.montant_net_a_payer_salarie) as montant_net_a_payer_salarie,
sum(w_hp.montant_net_imposable_salarie) as montant_net_imposable_salarie,
sum(w_hp.montant_od_net_salarie) as montant_od_net_salarie,
sum(w_hp.montant_od_net_patronale) as montant_od_net_patronale
FROM w_hp
WHERE w_hp.p_cumul
GROUP BY 1,2,3) as cum
JOIN (
SELECT
age_id,
contrat_id,
contrat_mois_id,
date_debut,
date_fin,
date_paie,
mois_activite,
mois_paie,
nojobo,
norjpo,
sum(heure_payee) as heure_payee,
sum(heure_travaillee) as heure_travaillee,
sum(montant_masse_salariale) as montant_masse_salariale,
sum(montant_brut) AS montant_brut,
sum(montant_avantage_nature) AS montant_avantage_nature,
sum(montant_frais_imposables) AS montant_frais_imposables,
sum(montant_cotisation_salarie) AS montant_cotisation_salarie,
sum(montant_cotisation_patronale) AS montant_cotisation_patronale,
sum(montant_od_net_salarie) as montant_od_net_salarie,
sum(montant_od_net_patronale) as montant_od_net_patronale,
sum(montant_net_imposable_salarie) AS montant_net_imposable_salarie,
sum(montant_net_a_payer_salarie) AS montant_net_a_payer_salarie,
0 AS organisme_cotisation_id,
0 AS profil_id,
(SELECT oid FROM rh.t_rubriques WHERE code = 'C000'),
salarie_id,
0 AS taux_cotisation_patronale,
0 AS taux_cotisation_salarie
FROM w_hp_1
GROUP BY 1,2,3,4,5,6,7,8,9,10, 23,24,25,26,27,28) AS subq ON true
AND subq.salarie_id = cum.salarie_id
AND subq.nojobo = cum.nojobo
AND subq.norjpo = cum.norjpo
GROUP BY 1,2,3,4,5,6,7,8, 23,24,25,26,27,28
HAVING 1!=1
OR sum(cum.heure_payee - subq.heure_payee) != 0
OR sum(cum.heure_travaillee - subq.heure_travaillee) != 0
OR sum(cum.montant_masse_salariale - subq.montant_masse_salariale) != 0
OR sum(cum.montant_brut - subq.montant_brut) != 0
OR sum(cum.montant_avantage_nature - subq.montant_avantage_nature) != 0
OR sum(cum.montant_frais_imposables - subq.montant_frais_imposables) != 0
OR sum(cum.montant_cotisation_salarie - subq.montant_cotisation_salarie) != 0
OR sum(cum.montant_cotisation_patronale - subq.montant_cotisation_patronale) != 0
OR sum(cum.montant_od_net_salarie - subq.montant_od_net_salarie) != 0
OR sum(cum.montant_od_net_patronale - subq.montant_od_net_patronale) != 0
OR sum(cum.montant_net_imposable_salarie - subq.montant_net_imposable_salarie) != 0
OR sum(cum.montant_net_a_payer_salarie - subq.montant_net_a_payer_salarie) != 0
;
SELECT base.cti_stash_pop_table_indexes('rh', 'p_historique_paie')
;
INSERT INTO rh.t_divers (code, texte, valeur, valeur_date, description, show_info_module)
SELECT
'NOW',
'Date en-cours',
to_char(date_max, 'YYYYMM'),
date_max,
'Date non modifiable',
true
FROM
(SELECT date(MAX(date_paie) + interval '1 month') AS date_max FROM rh.p_historique_paie WHERE date_paie <= now()) sub
WHERE 'NOW' NOT IN (SELECT code FROM rh.t_divers);
INSERT INTO rh.t_divers (code, texte, valeur, valeur_date, description, show_info_module)
SELECT
'NOWCLOTURE',
'Date en-cours',
to_char(date_max, 'YYYYMM'),
date_max,
'Date non modifiable',
true
FROM
(SELECT date(MAX(date_paie)) AS date_max FROM rh.p_historique_paie WHERE date_paie <= now()) sub
WHERE 'NOWCLOTURE' NOT IN (SELECT code FROM rh.t_divers);
]]>