sum(case when bl_histo_rub IN ('SALBASE', '51_PAY_METIER') then montant_sal else 0 end) as prendre_minconv
from w_hst_hp
group by 1,2,3,4,5,6,7,8
;
-- Suppression des rubriques 51_MAINTIEN de septembre 2017 à septembre 2018 inclu (suite à qualif. RH-Paie avec Mme SALMON).
DELETE FROM w_hst_hp
WHERE 1=1
AND bl_histo_rub = '51_MAINTIEN'
AND mois_paie between 201709 and 201809
;
-- Suppression des rubriques SALBASE et 51_PAY_METIER lorsque le coefficient de la grille est <= 337 (suite à qualif. RH-Paie avec Mme SALMON).
-- DROP TABLE IF EXISTS w_grille_eig
-- ;
-- CREATE TEMP TABLE w_grille_eig AS
-- SELECT grialias, grilibelle, griid, 0::numeric as griparentid, gricoef -- Correction de la racine qui pointe sur elle-même et bloque la requête récursive qui suit.
-- FROM prod_eig.sgrheig_grilles_convention
-- where griid = 1
-- union
-- SELECT grialias, grilibelle, griid, griparentid, gricoef
-- FROM prod_eig.sgrheig_grilles_convention
-- where griid > 1
-- ;
-- DROP TABLE IF EXISTS w_grille_eig_coeff
-- ;
-- CREATE TEMP TABLE w_grille_eig_coeff AS
-- with RECURSIVE search_graph as (
-- SELECT grialias, grilibelle, griid, griparentid, gricoef
-- FROM w_grille_eig
-- where griid = 1
-- UNION ALL
-- SELECT o.grialias, o.grilibelle, o.griid, o.griparentid, coalesce(nullif(o.gricoef, 0), search_graph.gricoef) as gricoef -- si le coefficient n'est pas renseigné on prend celui du parent.
-- FROM w_grille_eig as o
-- JOIN search_graph ON search_graph.griid = o.griparentid)
-- select * from search_graph
-- ;
-- DELETE FROM w_hst_hp
-- USING prod_eig.sgrheig_contrats, w_grille_eig_coeff
-- WHERE 1=1
-- AND sgrheig_contrats.ctrid = w_hst_hp.bl_histo_ctrid
-- AND w_grille_eig_coeff.grialias::int = sgrheig_contrats.v_grialias::int
-- AND bl_histo_rub IN ('SALBASE', '51_PAY_METIER')
-- AND gricoef::int <= 337
-- ;
-- WITH w_grille_eig_coeff as (
-- select cti_bul
-- from w_hst_bul
-- where coeff <= 328
-- )
-- DELETE FROM w_hst_hp
-- USING w_grille_eig_coeff
-- WHERE 1=1
-- AND w_hst_hp.cti_bul = w_grille_eig_coeff.cti_bul
-- AND bl_histo_rub IN ('SALBASE', '51_PAY_METIER')
-- ;
WITH w_minconv as (
select cti_bul
from w_hst_bul
where prendre_minconv
)
DELETE FROM w_hst_hp
USING w_minconv
WHERE 1=1
AND w_hst_hp.cti_bul = w_minconv.cti_bul
AND bl_histo_rub IN ('SALBASE', '51_PAY_METIER')
;
INSERT INTO rh.p_chiffrier_production(entreprise_id, etablissement_id, mois, nombre_salaries, montant_brut, nombre_heures)
SELECT
entreprise_id,
t_etablissements.oid,
to_char(date_debut, 'YYYYMM')::numeric,
count(DISTINCT bl_histo_perid),
sum(CASE WHEN p_brut and p_cumul THEN (CASE s_brut
WHEN 0 THEN to_number(coalesce(nullif(trim(nombre::text), ''), '0'), '999999999999.9999')
WHEN 1 THEN base
WHEN 2 THEN taux_sal
WHEN 3 THEN montant_sal
WHEN 4 THEN taux_emp
WHEN 5 THEN montant_emp
WHEN 6 THEN montant_sal + montant_emp
WHEN 7 THEN montant_sal - montant_emp
WHEN 8 THEN -montant_sal + montant_emp
END) ELSE 0 END * c_brut),
sum(CASE WHEN p_heures_payees and p_cumul THEN (CASE s_heures_payees
WHEN 0 THEN to_number(coalesce(nullif(trim(nombre::text), ''), '0'), '999999999999.9999')
WHEN 1 THEN base
WHEN 2 THEN taux_sal
WHEN 3 THEN montant_sal
WHEN 4 THEN taux_emp
WHEN 5 THEN montant_emp
WHEN 6 THEN montant_sal + montant_emp
WHEN 7 THEN montant_sal - montant_emp
WHEN 8 THEN -montant_sal + montant_emp
END) ELSE 0 END * c_heures_payees)
FROM w_hst_hp
JOIN prod_eig.sgrheig_contrats ON true
AND sgrheig_contrats.v_matpers::int = w_hst_hp.v_matpers
AND sgrheig_contrats.ctrid = w_hst_hp.bl_histo_ctrid
JOIN rh.t_etablissements ON t_etablissements.code_original = w_hst_hp.bl_histo_etab
JOIN prod_eig.sgrheig_rubriques ON sgrheig_rubriques.rubid::int::text = w_hst_hp.bl_histo_clerub
JOIN rh.t_rubriques ON t_rubriques.code_original = w_hst_hp.bl_histo_clerub
WHERE 1=1
AND trim(sgrheig_contrats.v_matpers) != ''
AND to_char(date_paie, 'YYYY')::int >= 2015
AND (p_cumul OR p_detail)
GROUP BY 1,2,3
;
-- Ajout de la ligne chiffrier (production) à 0 pour le mois en cours si besoin.
INSERT INTO rh.p_chiffrier_production (entreprise_id, etablissement_id, mois, nombre_salaries, montant_brut, nombre_heures)
SELECT
entreprise_id,
etablissement_id,
mois_paie_encours::numeric,
0,0,0
FROM w_periode, rh.p_chiffrier_production
WHERE mois_paie_encours NOT IN (SELECT mois FROM rh.p_chiffrier_production GROUP BY 1)
GROUP BY 1,2,3
;
]]>
on met le mois de paie en cours (et surtout pas current_date).
from w_hst_contrat, w_periode
group by 1
UNION ALL
select
v_matpers as mat,
min(date_debut) as date_debut,
max(greatest(date_fin, date_paie)) as date_fin
from w_hst_bul
group by 1
) as subq
join prod_eig.sgrheig_personnes on sgrheig_personnes.permatricule::int = subq.mat
JOIN rh.t_etablissements ON peretab = t_etablissements.code_original
group by 1
;
CREATE INDEX i_lim_sal_v_matpers ON w_lim_sal USING btree(v_matpers);
CREATE INDEX i_lim_sal_dates ON w_lim_sal USING btree(date_debut, date_fin);
DROP TABLE IF EXISTS w_evt_mois
;
-- CREATE TEMP TABLE w_evt_mois AS
-- select
-- w_lim_sal.v_matpers,
-- cti_cnt, -- contrat
-- cti_bul, -- bulletin.
-- p_calendrier.mois,
-- min(p_calendrier.date) as date_debut,
-- max(p_calendrier.date) as date_fin,
-- (max(p_calendrier.date) - min(p_calendrier.date) + 1)::numeric / (base.cti_last_day(max(p_calendrier.date)) - base.cti_first_day(min(p_calendrier.date)) + 1)::numeric as ratio_temps
-- from base.p_calendrier
-- join w_lim_sal on p_calendrier.date between w_lim_sal.date_debut and w_lim_sal.date_fin
-- left join w_hst_contrat on 1=1
-- and w_hst_contrat.mat = w_lim_sal.v_matpers
-- and p_calendrier.date between w_hst_contrat.date_debut and w_hst_contrat.date_fin
-- left join w_hst_bul on 1=1
-- and w_hst_bul.v_matpers = w_lim_sal.v_matpers
-- and p_calendrier.date between w_hst_bul.date_debut and w_hst_bul.date_fin
-- group by 1,2,3,4--5,,6,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,33,34,35,36,37,38
-- having 1!=1
-- or cti_cnt is not null -- on ne conserve que les évenements ou il y a un contrat OU
-- or cti_bul is not null -- un bulletin
-- ;
CREATE TEMP TABLE w_evt_mois AS
with ValidDates as (
select v_matpers::int, date_debut::date as date from w_hst_contrat
union select v_matpers::int, date_fin::date as date from w_hst_contrat
union select v_matpers, date_debut::date as date from w_hst_bul
union select v_matpers, date_fin::date as date from w_hst_bul
)
, ValidDateRanges1 as (
select *, case when lead(date) over w = date + '1 day'::interval then false else true end as correct,
(case when lead(date) over w = date + '1 day'::interval then null else (date + '1 day'::interval) end)::date as date_debut,
(case when lead(date) over w = date + '1 day'::interval then null else (lead(date) over w - '1 day'::interval) end)::date as date_fin
from ValidDates
window w as (partition by v_matpers order by Date)
)
, ValidDateRanges as (
select v_matpers, date_debut as ValidFrom, date_fin as ValidTo from ValidDateRanges1 where correct
union
select v_matpers, date, date from ValidDates
)
, detail as (
select
E.v_matpers,
OU.cti_cnt,
-- L.cti_bul,
null::text as cti_bul,
D.ValidFrom,
D.ValidTo,
e.date_fin as max_date
from w_lim_sal E
join ValidDateRanges D on E.v_matpers::int=D.v_matpers::int and base.cti_overlaps(E.date_debut::date, E.date_fin::date, D.ValidFrom ,D.ValidTo )
left join w_hst_contrat OU on true
and OU.v_matpers::int=D.v_matpers
and base.cti_overlaps(OU.date_debut::date, OU.date_fin::date, D.ValidFrom ,D.ValidTo )
-- left join w_hst_bul L on true
-- and L.v_matpers=D.v_matpers
-- and base.cti_overlaps(L.date_debut::date, L.date_fin::date, D.ValidFrom ,D.ValidTo )
-- and L.bl_histo_ctrid = OU.ctrid
where false
or cti_cnt is not null
-- or cti_bul is not null
)
--,toto as (
select
v_matpers,
cti_cnt, -- contrat
cti_cnt as cti_cnt_all,
cti_bul, -- bulletin.
mois,
min(greatest(validfrom, date_debut)) as date_debut,
max(least(validto, date_fin)) as date_fin,
(max(least(validto, date_fin)) - min(greatest(validfrom, date_debut)) + 1)::numeric / (max(date_fin) - min(date_debut) + 1)::numeric as ratio_temps
from detail
left join base.p_calendrier_mois on true
and base.cti_overlaps(validfrom, validto, date_debut, date_fin)
and date_fin <= max_date
group by 1,2,3,4,5
-- )
-- select
-- v_matpers,
-- cti_cnt, -- contrat
-- -- coalesce(cti_cnt, -- si la valeur est renseignée sur la ligne courante, on la prend.
-- -- (max(case when cti_cnt is null then null else ARRAY[extract(epoch from date_debut)::text, cti_cnt] end) over wb)[2], -- sinon on prend la valeur renseignée la plus proche dans le passé
-- -- (min(case when cti_cnt is null then null else ARRAY[extract(epoch from date_debut)::text, cti_cnt] end) over wf)[2], -- sinon on prend la valeur renseignée la plus proche dans le futur
-- -- null -- sinon on prend null. Ne devrait pas arriver.
-- -- )
-- cti_cnt as cti_cnt_all,
-- cti_bul, -- bulletin.
-- -- coalesce(cti_bul, -- si la valeur est renseignée sur la ligne courante, on la prend.
-- -- (max(case when cti_bul is null then null else ARRAY[extract(epoch from date_debut)::text, cti_bul] end) over wb)[2], -- sinon on prend la valeur renseignée la plus proche dans le passé
-- -- (min(case when cti_bul is null then null else ARRAY[extract(epoch from date_debut)::text, cti_bul] end) over wf)[2], -- sinon on prend la valeur renseignée la plus proche dans le futur
-- -- null -- sinon on prend null. Ne devrait pas arriver.
-- -- ) as cti_bul_all,
-- mois,
-- date_debut,
-- date_fin,
-- ratio_temps
-- from toto
-- window wb as (PARTITION BY v_matpers ORDER BY date_debut rows unbounded preceding), -- sélectionne les lignes précédentes
-- wf as (PARTITION BY v_matpers ORDER BY date_debut rows between current row and unbounded following) -- sélectionne les lignes suivantes
;
-- WITH all_rsg as (
-- SELECT
-- t1.ctid,
-- (max(array[t2.date_fin::text, t2.cti_cnt]))[2] as cti_cnt
-- FROM w_evt_mois as t1
-- LEFT JOIN w_evt_mois as t2 ON true
-- AND t1.v_matpers = t2.v_matpers
-- AND t2.date_fin < t1.date_debut
-- -- WHERE cti_cnt IS NULL
-- GROUP BY 1
-- )
-- UPDATE w_evt_mois SET
-- cti_cnt_all = all_rsg.cti_cnt
-- FROM all_rsg
-- WHERE true
-- AND w_evt_mois.ctid = all_rsg.ctid
-- AND w_evt_mois.cti_cnt IS NULL
-- ;
]]>
= 2015
AND t_rubriques.p_detail
GROUP BY 1,2,3, 6,7,8,9,10,11,12
;
DROP TABLE IF EXISTS w_hp_1
;
CREATE TEMP TABLE w_hp_1 AS
SELECT
(max(ARRAY[extract(epoch from p_contrats.date_fin)::text, p_contrats.code_original]))[2] as cti_cnt_id,
cti_bul,
w_hp.date_debut,
w_hp.date_fin,
w_hp.mois_paie,
w_hp.date_paie,
p_salaries.oid as salarie_id,
(max(ARRAY[extract(epoch from p_contrats.date_fin), p_contrats.oid]))[2] as contrat_id,
(max(ARRAY[extract(epoch from p_contrats_mois.date_fin), p_contrats_mois.oid]))[2] as contrat_mois_id,
mois,
w_hp.rubrique_id,
w_hp.compte_id,
0 as organisme_cotisation_id,
t_etablissements.oid as etablissement_id,
w_hp.base,
w_hp.nombre,
w_hp.heures_contrat,
w_hp.heures_payees,
w_hp.heures_travaillees,
w_hp.montant_masse_salariale,
w_hp.montant_brut,
w_hp.montant_avantage_nature,
w_hp.montant_frais_imposables,
w_hp.taux_cotisation_salarie,
w_hp.montant_cotisation_salarie,
w_hp.taux_cotisation_patronale,
w_hp.montant_cotisation_patronale,
w_hp.montant_od_net_salarie,
w_hp.montant_od_net_patronale,
w_hp.montant_net_imposable_salarie,
w_hp.montant_net_a_payer_salarie,
w_hp.nombre_provisions,
w_hp.montant_provisions,
w_hp.montant_masse_salariale_provisionnee
FROM w_hp
JOIN rh.p_salaries on p_salaries.code_original = w_hp.v_matpers
LEFT JOIN rh.p_contrats on p_contrats.code_original = w_hp.bl_histo_ctrid
LEFT JOIN rh.p_contrats_mois on 1=1
AND p_contrats_mois.contrat_id = p_contrats.oid
AND p_contrats_mois.mois_activite = w_hp.mois_paie
JOIN rh.t_etablissements on t_etablissements.code_original = w_hp.bl_histo_etab
GROUP BY 2,3,4,5,6,7, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, w_hp.ctid
;
-- Associer les bulletins hors contrat (is null) avec le contrat précédent.
UPDATE w_hp_1
SET contrat_id = subq.contrat_id,
contrat_mois_id = subq.contrat_mois_id
FROM (
select
w_hp_1.ctid,
(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.ctid = subq.ctid
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.ctid,
(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.ctid = subq.ctid
AND w_hp_1.contrat_mois_id is null
;
TRUNCATE rh.p_historique_paie
;
INSERT INTO rh.p_historique_paie(
salarie_id,
contrat_id,
contrat_mois_id,
mois_activite,
date_debut,
date_fin,
mois_paie,
date_paie,
rubrique_id,
compte_id,
organisme_cotisation_id,
etablissement_id,
base,
nombre,
heure_contrat,
heure_payee,
heure_travaillee,
montant_masse_salariale,
montant_brut,
montant_avantage_nature,
montant_frais_imposables,
taux_cotisation_salarie,
montant_cotisation_salarie,
taux_cotisation_patronale,
montant_cotisation_patronale,
montant_od_net_salarie,
montant_od_net_patronale,
montant_net_imposable_salarie,
montant_net_a_payer_salarie,
nombre_provisions,
montant_provisions,
montant_masse_salariale_provisionnee)
SELECT
salarie_id,
contrat_id,
contrat_mois_id,
mois,
date_debut,
date_fin,
mois_paie,
date_paie, --bul_datepaie,
rubrique_id,
compte_id,
organisme_cotisation_id,
etablissement_id,
base,
nombre,
heures_contrat,
heures_payees,
heures_travaillees,
montant_masse_salariale,
montant_brut,
montant_avantage_nature,
montant_frais_imposables,
taux_cotisation_salarie,
montant_cotisation_salarie,
taux_cotisation_patronale,
montant_cotisation_patronale,
montant_od_net_salarie,
montant_od_net_patronale,
montant_net_imposable_salarie,
montant_net_a_payer_salarie,
nombre_provisions,
montant_provisions,
montant_masse_salariale_provisionnee
FROM w_hp_1
;
]]>
= 2015
-- AND p_cumul -- NE PAS LE METTRE ICI, ça enlève trop de ligne !!
GROUP BY 1,2,3,4
;
-- Insérer 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 (
contrat_id,
contrat_mois_id,
date_debut,
date_fin,
date_paie,
mois_activite,
mois_paie,
base,
nombre,
heure_contrat,
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,
organisme_cotisation_id,
etablissement_id,
rubrique_id,
compte_id,
salarie_id,
taux_cotisation_patronale,
taux_cotisation_salarie,
nombre_provisions,
montant_provisions,
montant_masse_salariale_provisionnee)
SELECT
subq.contrat_id,
subq.contrat_mois_id,
subq.date_debut,
subq.date_fin,
subq.date_paie,
subq.mois_activite,
subq.mois_paie,
0 AS base,
0 AS nombre,
COALESCE(hcum_heures_contrat,0) - subq.heure_contrat AS heure_contrat,
COALESCE(hcum_heures_payees,0) - subq.heure_payee AS heure_payee,
COALESCE(hcum_heures_travaillees,0) - subq.heure_travaillee AS heure_travaillee,
COALESCE(hcum_avantage_nature,0) - subq.montant_avantage_nature AS montant_avantage_nature,
COALESCE(hcum_brut,0) - subq.montant_brut AS montant_brut,
COALESCE(hcum_masse_salariale, 0) - subq.montant_masse_salariale AS montant_masse_salariale,
COALESCE(hcum_cotisation_patronale,0) - subq.montant_cotisation_patronale AS montant_cotisation_patronale,
COALESCE(hcum_cotisation_salarie,0) - subq.montant_cotisation_salarie AS montant_cotisation_salarie,
0 AS montant_frais_imposables,
COALESCE(hcum_net_a_payer_salarie,0) - subq.montant_net_a_payer_salarie AS montant_net_a_payer_salarie,
COALESCE(hcum_net_imposable_salarie,0) - subq.montant_net_imposable_salarie AS montant_net_imposable_salarie,
0 AS montant_od_net_salarie,
subq.organisme_cotisation_id AS organisme_cotisation_id,
subq.etablissement_id as etablissement_id,
(SELECT oid FROM rh.t_rubriques WHERE code = 'C000') AS rubrique_id,
0 AS compte_id,
subq.salarie_id AS salarie_id,
0 AS taux_cotisation_patronale,
0 AS taux_cotisation_salarie,
COALESCE(hcum_nombre_provisions,0) - subq.nombre_provisions AS nombre_provisions,
COALESCE(hcum_montant_provisions,0) - subq.montant_provisions AS montant_provisions,
COALESCE(hcum_masse_salariale_provisionnee,0) - subq.montant_masse_salariale_provisionnee AS montant_masse_salariale_provisionnee
FROM (
SELECT
cti_bul,
contrat_id,
contrat_mois_id,
date_debut,
date_fin,
date_paie as date_paie,
mois as mois_activite,
mois_paie as mois_paie,
0 AS base,
0 AS nombre,
sum(heures_contrat) AS heure_contrat,
sum(heures_payees) AS heure_payee,
sum(heures_travaillees) AS heure_travaillee,
sum(montant_avantage_nature) AS montant_avantage_nature,
sum(montant_brut) AS montant_brut,
sum(montant_masse_salariale) AS montant_masse_salariale,
sum(montant_cotisation_patronale) AS montant_cotisation_patronale,
sum(montant_cotisation_salarie) AS montant_cotisation_salarie,
0 AS montant_frais_imposables,
sum(montant_net_a_payer_salarie) AS montant_net_a_payer_salarie,
sum(montant_net_imposable_salarie) AS montant_net_imposable_salarie,
0 AS montant_od_net_salarie,
organisme_cotisation_id,
etablissement_id,
(SELECT oid FROM rh.t_rubriques WHERE code = 'C000'),
salarie_id,
0 AS taux_cotisation_patronale,
0 AS taux_cotisation_salarie,
sum(nombre_provisions) AS nombre_provisions,
sum(montant_provisions) AS montant_provisions,
sum(montant_masse_salariale_provisionnee) AS montant_masse_salariale_provisionnee
FROM w_hp_1
GROUP BY 1,2,3,4,5,6,7,8,9,10, 22, 23,24,25,26) AS subq
JOIN w_totaux ON w_totaux.cti_bul = subq.cti_bul
WHERE 1!=1
OR COALESCE(hcum_avantage_nature,0) - subq.montant_avantage_nature != 0
OR COALESCE(hcum_brut,0) - subq.montant_brut != 0
OR COALESCE(hcum_masse_salariale,0) - subq.montant_masse_salariale != 0
OR COALESCE(hcum_net_a_payer_salarie,0) - subq.montant_net_a_payer_salarie != 0
OR COALESCE(hcum_net_imposable_salarie,0) - subq.montant_net_imposable_salarie != 0
OR COALESCE(hcum_cotisation_patronale,0) - subq.montant_cotisation_patronale != 0
OR COALESCE(hcum_cotisation_salarie,0) - subq.montant_cotisation_salarie != 0
OR COALESCE(hcum_heures_contrat,0) - subq.heure_contrat != 0
OR COALESCE(hcum_heures_payees,0) - subq.heure_payee != 0
OR COALESCE(hcum_heures_travaillees,0) - subq.heure_travaillee != 0
OR COALESCE(hcum_nombre_provisions,0) - subq.nombre_provisions != 0
OR COALESCE(hcum_montant_provisions,0) - subq.montant_provisions != 0
OR COALESCE(hcum_masse_salariale_provisionnee,0) - subq.montant_masse_salariale_provisionnee != 0
;
]]>