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); ]]>