3 AND NODTSO >= '20120101' OR
NDOADM.STID <> 3 AND NODTEN >= '20120101' OR
NDOADM.STID <> 3 AND NODTSO = '00010101' OR
NDOADM.STID <> 3 AND NODTSO IS NULL OR
NONUMA IN (
SELECT FACTURES.NONUMA
FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES
WHERE FADAT >= '20120101') OR
NONUMA IN (
SELECT FACTURES.NONUMA
FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES
JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC
WHERE (ACSDTF*100+ACADTF) >= 2012
)
);
CREATE INDEX w_NDOADM_SELECT_i1
ON w_NDOADM_SELECT
USING btree
(NONUMA);
]]>
0 THEN CCAM4_GHS.ghs ELSE 0 END),0) AS GHS_bebe_code,
MAX(COALESCE(CASE WHEN STDEV_SEJBEBE.BENU > 0 THEN t_ghs.oid ELSE 0 END,0)) AS ghs_bebe_id,
COALESCE(MAX(CASE WHEN STDEV_SEJBEBE.BENU > 0 THEN CCAM4_GHM.code ELSE '' END),'') AS GHM_bebe_code,
MAX(COALESCE(CASE WHEN STDEV_SEJBEBE.BENU > 0 THEN t_ghm.oid ELSE 0 END,0)) AS ghm_bebe_id,
CASE WHEN MAX(GHMOK) = 1 THEN date(COALESCE(MAX(GREATEST(DATEPRVAL,DATEDRVAL)),'20991231')) ELSE '20991231' END AS DATEDRVAL,
COALESCE(MAX(to_char(MVTLIEU_DEB.MDEID,'FM9')),'8') AS MDEID,
COALESCE(MAX(CASE WHEN MVTLIEU_DEB.PREID <> 0 THEN to_char(MVTLIEU_DEB.PREID,'FM0') ELSE '' END),'') AS PREID,
COALESCE(MAX(to_char(MVTLIEU_FIN.MDSID,'FM9')),'8') AS MDSID,
COALESCE(MAX(CASE WHEN MVTLIEU_DEB.DEEID <> 0 THEN to_char(MVTLIEU_DEB.DEEID,'FM0') ELSE '' END),'') AS DEEID
FROM w_NDOADM_SELECT
LEFT JOIN prod_chataigneraie_mysql.STDEV_SEJBEBE ON STDEV_SEJBEBE.SENUM = NONUMA AND STDEV_SEJBEBE.IDETAB = w_NDOADM_SELECT.IDETAB
LEFT JOIN prod_chataigneraie_mysql.STDEV_RUM ON
STDEV_RUM.SENUMD = STDEV_SEJBEBE.SENUM AND
STDEV_RUM.IDETAB = STDEV_SEJBEBE.IDETAB AND
STDEV_RUM.DUUNIQ = STDEV_SEJBEBE.DUUNIQ
LEFT JOIN prod_chataigneraie_mysql.STDEV_MVTLIEU MVTLIEU_DEB ON
STDEV_RUM.IDETAB = MVTLIEU_DEB.IDETAB AND
IDMVTDEB = MVTLIEU_DEB.IDMVTL
LEFT JOIN prod_chataigneraie_mysql.STDEV_MVTLIEU MVTLIEU_FIN ON
STDEV_RUM.IDETAB = MVTLIEU_FIN.IDETAB AND
IDMVTFIN = MVTLIEU_FIN.IDMVTL
LEFT JOIN prod_chataigneraie_mysql.CCAM4_GHM ON CCAM4_GHM.ID = STDEV_RUM.IDGHM
LEFT JOIN prod_chataigneraie_mysql.CCAM4_GHS ON CCAM4_GHS.ID = STDEV_RUM.IDGHS
LEFT JOIN base.t_ghm ON CCAM4_GHM.code = t_ghm.code
LEFT JOIN base.t_ghs ON CCAM4_GHS.ghs = t_ghs.code
GROUP BY 1
;
UPDATE w_NDOADM_GHM
SET DATEDRVAL = '20991231'
WHERE DATEDRVAL = '00010101'
;
UPDATE w_NDOADM_GHM SET
ghm_id = ghm_bebe_id,
ghm_code = ghm_bebe_code,
ghs_id = ghs_bebe_id,
ghs_code = ghs_bebe_code,
ghm_bebe_id = 0,
ghm_bebe_code = '',
ghs_bebe_id = 0,
ghs_bebe_code = 0
WHERE ghm_bebe_id <> 0 AND
ghm_id = 0;
CREATE INDEX w_NDOADM_GHM_i1
ON w_NDOADM_GHM
USING btree
(NONUMA);
-- Médecin
UPDATE w_NDOADM_SELECT
SET medecin_sejour_id = t_medecins_administratifs.oid
FROM activite[PX].t_medecins_administratifs
WHERE t_medecins_administratifs.code_original = DPERNU
;
-- Id code postal
UPDATE w_NDOADM_SELECT
SET code_postal_id = t_codes_postaux.oid
FROM base.t_codes_postaux
WHERE t_codes_postaux.code = NOCDPH
;
-- Id des Tiers payant
UPDATE w_NDOADM_SELECT
SET tiers_payant_1_id = t_tiers_payant.oid
FROM activite[PX].t_tiers_payant
WHERE t_tiers_payant.code_original = ('C'||NOCAIS)
;
UPDATE w_NDOADM_SELECT
SET tiers_payant_2_id = t_tiers_payant.oid
FROM activite[PX].t_tiers_payant
WHERE t_tiers_payant.code_original = ('M'||NOCMUT)
;
UPDATE w_NDOADM_SELECT
SET tiers_payant_0_id = t_tiers_payant.oid
FROM activite[PX].t_tiers_payant
WHERE t_tiers_payant.code_original = 'PATIENT'
;
-- Code service de sortie
UPDATE w_NDOADM_SELECT SET
mode_traitement_id = t_services_facturation.mode_traitement_id,
mode_traitement_code = t_modes_traitement.code,
dmt_code = t_dmt.code
FROM activite[PX].t_services_facturation
JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid
JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid
WHERE w_NDOADM_SELECT.TARID = t_services_facturation.code_original
;
-- Date sortie repoussée sur présents
UPDATE w_NDOADM_SELECT SET
NODTSO = date(now())
WHERE NODTSO < date(now()) AND
SEPRE = 'O'
;
DROP TABLE IF EXISTS w_NDOADM_LIEU;
CREATE TEMP TABLE w_NDOADM_LIEU AS
SELECT
w_NDOADM_SELECT.NONUMA,
0::bigint AS lieu_id,
MAX(TARID) AS lieu_sortie_service_facturation_code_original,
COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,SPESAE::text]))[2],'0') AS lieu_sortie_activite_code_original,
COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,NMVTCHB.SENU::text]))[2],'0') AS lieu_sortie_etage_code_original,
COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,(NMVTCHB.SENU||'|'||NMVTCHB.LITNU)]))[2],'0') AS lieu_sortie_lit_code_original,
COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,NMVTCHB.SENU::text]))[2],'0') AS lieu_sortie_unite_fonctionnelle_code_original,
'0'::text AS lieu_sortie_unite_medicale_code_original,
'0'::text AS type_sejour_force
FROM w_NDOADM_SELECT
LEFT JOIN prod_chataigneraie_as400.NXXXFAC_NMVTCHB NMVTCHB ON w_NDOADM_SELECT.NONUMA = NMVTCHB.SENUMD AND
MVANNU = ''
GROUP BY 1
ORDER BY 1
;
INSERT INTO activite[PX].t_lieux(
code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6)
SELECT lieu_sortie_service_facturation_code_original,
lieu_sortie_activite_code_original,
lieu_sortie_etage_code_original,
lieu_sortie_lit_code_original,
lieu_sortie_unite_fonctionnelle_code_original,
lieu_sortie_unite_medicale_code_original
FROM w_NDOADM_LIEU
LEFT JOIN activite[PX].t_lieux ON (
code_original_1 = lieu_sortie_service_facturation_code_original AND
code_original_2 = lieu_sortie_activite_code_original AND
code_original_3 = lieu_sortie_etage_code_original AND
code_original_4 = lieu_sortie_lit_code_original AND
code_original_5 = lieu_sortie_unite_fonctionnelle_code_original AND
code_original_6 = lieu_sortie_unite_medicale_code_original
)
WHERE t_lieux.oid IS NULL
GROUP BY 1,2,3,4,5,6;
UPDATE activite[PX].t_lieux SET
service_facturation_id = COALESCE(t_services_facturation.oid,0),
mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0)
FROM
activite[PX].t_services_facturation
WHERE code_original_1 = t_services_facturation.code_original AND
(t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR
t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0)
)
;
UPDATE activite[PX].t_lieux SET
activite_id = COALESCE(t_activites.oid,0)
FROM
activite[PX].t_activites
WHERE code_original_6 = t_activites.code_original
AND activite_id <> COALESCE(t_activites.oid,0);
UPDATE activite[PX].t_lieux SET
unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0)
FROM
activite[PX].t_unites_fonctionnelles
WHERE code_original_6 = t_unites_fonctionnelles.code_original
AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0);
UPDATE activite[PX].t_lieux SET
unite_medicale_id = COALESCE(t_unites_medicales.oid,0)
FROM
activite[PX].t_unites_medicales
WHERE code_original_5 = t_unites_medicales.code_original
AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0);
UPDATE activite[PX].t_lieux SET
lit_id = COALESCE(t_lits.oid,0)
FROM
activite[PX].t_lits
WHERE code_original_4 = t_lits.code_original AND
t_lieux.lit_id <> COALESCE(t_lits.oid,0)
;
UPDATE w_NDOADM_LIEU SET
lieu_id = t_lieux.oid,
type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour ELSE '0' END
FROM activite[PX].t_lieux
JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid
WHERE
code_original_1 = lieu_sortie_service_facturation_code_original AND
code_original_2 = lieu_sortie_activite_code_original AND
code_original_3 = lieu_sortie_etage_code_original AND
code_original_4 = lieu_sortie_lit_code_original AND
code_original_5 = lieu_sortie_unite_fonctionnelle_code_original AND
code_original_6 = lieu_sortie_unite_medicale_code_original
;
DROP TABLE IF EXISTS w_sejours;
CREATE TEMP TABLE w_sejours AS
SELECT
'000000000'::text AS finess,
w_NDOADM_SELECT.NONUMA as no_sejour,
w_NDOADM_SELECT.NONUMA as code_original,
to_char(DUUNIQ,'FM000000000') as no_patient,
NODTEN as date_entree,
to_char(NOHREN,'HH24MISS')::numeric as heure_entree,
NODTSO as date_sortie,
to_char(NOHRSO,'HH24MISS')::numeric as heure_sortie,
NOSEXH as code_sexe,
0 AS age,
CASE WHEN SEPRE = 'O' THEN 0 ELSE 1 END::numeric as code_sorti,
CASE WHEN NODTEN > now() THEN 1::numeric ELSE 0::numeric END AS code_prevu,
CASE
WHEN w_NDOADM_SELECT.STID = 3 THEN '9'
WHEN type_sejour_force <> '0' THEN type_sejour_force
WHEN w_NDOADM_GHM.ghm_code LIKE '28%' THEN '5'
WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3'
WHEN mode_traitement_code IN ('03') AND NODTSO = NODTEN THEN '2'
WHEN mode_traitement_code IN ('04') AND NODTSO = NODTEN THEN '2'
WHEN mode_traitement_code IN ('19', '23') AND NODTSO = NODTEN THEN '2'
WHEN mode_traitement_code IN ('03') THEN '1'
WHEN NODTSO = NODTEN THEN '2'
ELSE '1' END as type_sejour,
w_NDOADM_LIEU.lieu_id AS lieu_sortie_id,
w_NDOADM_SELECT.medecin_sejour_id,
w_NDOADM_GHM.ghs_id,
w_NDOADM_GHM.ghm_id,
w_NDOADM_GHM.ghs_bebe_id AS ghs_bebe1_id,
0::numeric AS ghs_bebe2_id,
0::numeric AS ghs_bebe3_id,
w_NDOADM_GHM.DATEDRVAL AS DATE_GROUPAGE,
'0'::text AS code_cp_demandee,
w_NDOADM_SELECT.mode_traitement_id,
w_NDOADM_GHM.MDEID AS mode_entree,
w_NDOADM_GHM.PREID AS provenance,
w_NDOADM_GHM.MDSID AS mode_sortie,
w_NDOADM_GHM.DEEID AS destination,
w_NDOADM_SELECT.tiers_payant_0_id,
w_NDOADM_SELECT.tiers_payant_1_id,
w_NDOADM_SELECT.tiers_payant_2_id,
w_NDOADM_SELECT.tiers_payant_22_id,
0 AS est_budget_global,
w_NDOADM_SELECT.code_postal_id
FROM w_NDOADM_SELECT
JOIN w_NDOADM_GHM ON w_NDOADM_SELECT.NONUMA = w_NDOADM_GHM.NONUMA
JOIN w_NDOADM_LIEU ON w_NDOADM_SELECT.NONUMA = w_NDOADM_LIEU.NONUMA
;
-- Forcage type selon séjour
UPDATE w_sejours
SET type_sejour = t_sejour.type_sejour
FROM activite.t_sejour
WHERE t_sejour.no_sejour = w_sejours.no_sejour AND
t_sejour.type_sejour IN ('1','2','3','4','5','6','9');
UPDATE w_sejours
SET type_sejour = t_sejour.type_sejour
FROM activite.t_sejour
WHERE t_sejour.no_sejour = ('SP_'||w_sejours.no_sejour) AND
t_sejour.type_sejour IN ('1','2','3','4','5','6','9');
-- FINESS
UPDATE w_sejours
SET finess = t_finess.code
FROM activite[PX].t_lieux
JOIN activite[PX].t_services_facturation on service_facturation_id = t_services_facturation.oid
JOIN base.t_finess ON finess_id = t_finess.oid
WHERE lieu_sortie_id = t_lieux.oid;
-- Validation des séjours
SELECT base.cti_disable_index('activite', 'i_sejours_2');
SELECT base.cti_disable_index('activite', 'i_sejours_3');
SELECT base.cti_disable_index('activite', 'i_sejours_4');
SELECT base.cti_disable_index('activite', 'i_sejours_5');
SELECT base.cti_disable_index('activite', 'i_sejours_6');
SELECT base.cti_disable_index('activite', 'i_sejours_7');
SELECT base.cti_disable_index('activite', 'i_sejours_8');
SELECT base.cti_disable_index('activite', 'i_sejours_9');
SELECT base.cti_disable_index('activite', 'i_sejours_10');
SELECT base.cti_disable_index('activite', 'i_sejours_11');
SELECT base.cti_disable_index('activite', 'i_sejours_12');
SELECT base.cti_disable_index('activite', 'i_sejours_13');
UPDATE activite[PX].p_sejours SET
finess = w_sejours.finess,
code_original = w_sejours.code_original,
no_patient = w_sejours.no_patient,
date_entree = w_sejours.date_entree,
heure_entree = w_sejours.heure_entree,
date_sortie = w_sejours.date_sortie,
heure_sortie = w_sejours.heure_sortie,
code_sexe = w_sejours.code_sexe,
age = w_sejours.age,
code_sorti = w_sejours.code_sorti,
code_prevu = w_sejours.code_prevu,
type_sejour = w_sejours.type_sejour,
lieu_sortie_id = w_sejours.lieu_sortie_id,
medecin_sejour_id = w_sejours.medecin_sejour_id,
code_cp_demandee = w_sejours.code_cp_demandee,
mode_traitement_id = w_sejours.mode_traitement_id,
mode_entree = w_sejours.mode_entree,
provenance = w_sejours.provenance,
mode_sortie = w_sejours.mode_sortie,
destination = w_sejours.destination,
tiers_payant_0_id = w_sejours.tiers_payant_0_id,
tiers_payant_1_id = w_sejours.tiers_payant_1_id,
tiers_payant_2_id = w_sejours.tiers_payant_2_id,
tiers_payant_22_id = w_sejours.tiers_payant_22_id,
est_budget_global = w_sejours.est_budget_global,
date_groupage = w_sejours.date_groupage,
ghs_id = w_sejours.ghs_id,
ghm_id = w_sejours.ghm_id,
ghs_bebe1_id = w_sejours.ghs_bebe1_id,
ghs_bebe2_id = w_sejours.ghs_bebe2_id,
ghs_bebe3_id = w_sejours.ghs_bebe3_id,
code_postal_id = w_sejours.code_postal_id
FROM w_sejours
WHERE w_sejours.no_sejour = p_sejours.no_sejour
AND (
w_sejours.finess IS DISTINCT FROM p_sejours.finess OR
w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR
w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR
w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR
w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR
w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR
w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR
w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR
w_sejours.age IS DISTINCT FROM p_sejours.age OR
w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR
w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR
w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR
w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR
w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR
w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR
w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR
w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR
w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR
w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR
w_sejours.destination IS DISTINCT FROM p_sejours.destination OR
w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR
w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR
w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR
w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR
w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR
w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR
w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR
w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR
w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR
w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR
w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR
w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id
);
INSERT INTO activite[PX].p_sejours (
finess,
no_sejour,
code_original,
no_patient,
date_entree,
heure_entree,
date_sortie,
heure_sortie,
code_sexe,
age,
code_sorti,
code_prevu,
type_sejour,
lieu_sortie_id,
medecin_sejour_id,
ghs_id,
ghm_id,
ghs_bebe1_id,
ghs_bebe2_id,
ghs_bebe3_id,
date_groupage,
code_cp_demandee,
mode_traitement_id,
mode_entree,
provenance,
mode_sortie,
destination,
tiers_payant_0_id,
tiers_payant_1_id,
tiers_payant_2_id,
tiers_payant_22_id,
est_budget_global,
code_postal_id
)
SELECT
w_sejours.finess,
w_sejours.no_sejour,
w_sejours.code_original,
w_sejours.no_patient,
w_sejours.date_entree,
w_sejours.heure_entree,
w_sejours.date_sortie,
w_sejours.heure_sortie,
w_sejours.code_sexe,
w_sejours.age,
w_sejours.code_sorti,
w_sejours.code_prevu,
w_sejours.type_sejour,
w_sejours.lieu_sortie_id,
w_sejours.medecin_sejour_id,
w_sejours.ghs_id,
w_sejours.ghm_id,
w_sejours.ghs_bebe1_id,
w_sejours.ghs_bebe2_id,
w_sejours.ghs_bebe3_id,
w_sejours.date_groupage,
w_sejours.code_cp_demandee,
w_sejours.mode_traitement_id,
w_sejours.mode_entree,
w_sejours.provenance,
w_sejours.mode_sortie,
w_sejours.destination,
w_sejours.tiers_payant_0_id,
w_sejours.tiers_payant_1_id,
w_sejours.tiers_payant_2_id,
w_sejours.tiers_payant_22_id,
w_sejours.est_budget_global,
w_sejours.code_postal_id
FROM w_sejours
LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour)
WHERE p_sejours.no_sejour IS NULL;
DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour FROM w_sejours );
DELETE FROM activite[PX].p_sejours USING
(
SELECT no_sejour, min(CTID) AS koctid
FROM activite[PX].p_sejours
GROUP BY 1
HAVING count(*) > 1
) subview
WHERE CTID = koctid;
-- Séjours ignorés
UPDATE activite[PX].p_sejours
SET etat = 'I'
FROM activite.t_sejour
WHERE t_sejour.no_sejour = p_sejours.no_sejour AND
est_ignore = '1' AND
etat <> 'I' AND
'' = '';
UPDATE activite[PX].p_sejours
SET etat = ''
WHERE etat = 'I' AND
no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND
'' = '';
-- Médecin séjour forcé
UPDATE activite[PX].p_sejours
SET medecin_sejour_id = t_sejour.medecin_sejour_id
FROM activite.t_sejour
WHERE t_sejour.no_sejour = p_sejours.no_sejour AND
t_sejour.medecin_sejour_id <> 0 AND
p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND
'' = '';
-- recréation index
SELECT base.cti_enable_index('activite', 'i_sejours_2');
SELECT base.cti_enable_index('activite', 'i_sejours_3');
SELECT base.cti_enable_index('activite', 'i_sejours_4');
SELECT base.cti_enable_index('activite', 'i_sejours_5');
SELECT base.cti_enable_index('activite', 'i_sejours_6');
SELECT base.cti_enable_index('activite', 'i_sejours_7');
SELECT base.cti_enable_index('activite', 'i_sejours_8');
SELECT base.cti_enable_index('activite', 'i_sejours_9');
SELECT base.cti_enable_index('activite', 'i_sejours_10');
SELECT base.cti_enable_index('activite', 'i_sejours_11');
SELECT base.cti_enable_index('activite', 'i_sejours_12');
SELECT base.cti_enable_index('activite', 'i_sejours_13');
]]>
(MIN(ARRAY[to_char(sequence,'FM00000000'),MVDHEN::text]))[2]::timestamp without time zone
) subview
WHERE w_NMVTCHB.NONUMA = subview.NONUMA AND
w_NMVTCHB.sequence = subview.sequence_first
;
-- Correction des mouvements en désaccord avec séjour (date sortie)
UPDATE w_NMVTCHB SET
MVDTSO = w_NMVTCHB.NODTSO,
MVHRSO = w_NMVTCHB.NOHRSO,
MVDHSO = w_NMVTCHB.NODHSO
FROM
(
SELECT NONUMA,
MAX(sequence) AS sequence_last,
MAX(NODTSO) AS NODTSO,
MAX(NOHRSO) AS NOHRSO,
MAX(NODHSO) AS NODHSO,
(MAX(ARRAY[to_char(sequence,'FM00000000'),MVDTSO::text]))[2]::date AS MVDTSO_last,
(MAX(ARRAY[to_char(sequence,'FM00000000'),MVHRSO::text]))[2]::time without time zone AS MVHRSO_last,
(MAX(ARRAY[to_char(sequence,'FM00000000'),MVDHSO::text]))[2]::timestamp without time zone AS MVDHSO_last
FROM w_NMVTCHB
GROUP BY 1
HAVING MAX(NODHSO) <>
(MAX(ARRAY[to_char(sequence,'FM00000000'),MVDHSO::text]))[2]::timestamp without time zone
) subview
WHERE w_NMVTCHB.NONUMA = subview.NONUMA AND
w_NMVTCHB.sequence = subview.sequence_last
;
UPDATE w_NMVTCHB SET
MVDHEN = MVDHSO - interval '1 second',
MVDTEN = date(MVDHSO - interval '1 second'),
MVHREN = (MVDHSO - interval '1 second')::time without time zone
WHERE MVDHEN > MVDHSO
;
UPDATE w_NMVTCHB SET
MVDHSO = w_NMVTCHB_after.MVDHEN - interval '1 second',
MVDTSO = date(w_NMVTCHB_after.MVDHEN - interval '1 second'),
MVHRSO = (w_NMVTCHB_after.MVDHEN - interval '1 second')::time without time zone
FROM w_NMVTCHB w_NMVTCHB_after
WHERE w_NMVTCHB.NONUMA = w_NMVTCHB_after.NONUMA AND
w_NMVTCHB.sequence = w_NMVTCHB_after.sequence -1
;
DELETE FROM w_NMVTCHB
WHERE MVDHSO < NODHEN
;
DELETE FROM w_NMVTCHB
WHERE MVDTEN < date('1900-12-31')
;
INSERT INTO activite[PX].t_lieux(
code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6)
SELECT lieu_service_facturation_code_original,
lieu_activite_code_original,
lieu_etage_code_original,
lieu_lit_code_original,
lieu_unite_medicale_code_original,
lieu_unite_fonctionnelle_code_original
FROM w_NMVTCHB
LEFT JOIN activite[PX].t_lieux ON (
code_original_1 = lieu_service_facturation_code_original AND
code_original_2 = lieu_activite_code_original AND
code_original_3 = lieu_etage_code_original AND
code_original_4 = lieu_lit_code_original AND
code_original_5 = lieu_unite_medicale_code_original AND
code_original_6 = lieu_unite_fonctionnelle_code_original
)
WHERE t_lieux.oid IS NULL
GROUP BY 1,2,3,4,5,6;
UPDATE activite[PX].t_lieux SET
service_facturation_id = COALESCE(t_services_facturation.oid,0),
mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0)
FROM
activite[PX].t_services_facturation
WHERE code_original_1 = t_services_facturation.code_original AND
(t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR
t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0)
)
;
UPDATE activite[PX].t_lieux SET
activite_id = COALESCE(t_activites.oid,0)
FROM
activite[PX].t_activites
WHERE code_original_6 = t_activites.code_original
AND activite_id <> COALESCE(t_activites.oid,0);
UPDATE activite[PX].t_lieux SET
unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0)
FROM
activite[PX].t_unites_fonctionnelles
WHERE code_original_6 = t_unites_fonctionnelles.code_original
AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0);
UPDATE activite[PX].t_lieux SET
unite_medicale_id = COALESCE(t_unites_medicales.oid,0)
FROM
activite[PX].t_unites_medicales
WHERE code_original_5 = t_unites_medicales.code_original
AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0);
UPDATE activite[PX].t_lieux SET
lit_id = COALESCE(t_lits.oid,0)
FROM
activite[PX].t_lits
WHERE code_original_4 = t_lits.code_original AND
t_lieux.lit_id <> COALESCE(t_lits.oid,0)
;
UPDATE w_NMVTCHB SET
lieu_id = t_lieux.oid,
est_chambre_particuliere = CASE WHEN t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END
FROM activite[PX].t_lieux
JOIN activite[PX].t_lits ON lit_id = t_lits.oid
WHERE
code_original_1 = lieu_service_facturation_code_original AND
code_original_2 = lieu_activite_code_original AND
code_original_3 = lieu_etage_code_original AND
code_original_4 = lieu_lit_code_original AND
code_original_5 = lieu_unite_medicale_code_original AND
code_original_6 = lieu_unite_fonctionnelle_code_original
;
-- Etat avant
UPDATE w_NMVTCHB SET
lieu_service_facturation_before = w_NMVTCHB_before.lieu_service_facturation_code_original,
lieu_activite_before = w_NMVTCHB_before.lieu_activite_code_original,
lieu_etage_before = w_NMVTCHB_before.lieu_etage_code_original,
lieu_lit_before = w_NMVTCHB_before.lieu_lit_code_original,
lieu_unite_fonctionnelle_before = w_NMVTCHB_before.lieu_unite_fonctionnelle_code_original,
lieu_unite_medicale_before = w_NMVTCHB_before.lieu_unite_medicale_code_original
FROM w_NMVTCHB w_NMVTCHB_before
WHERE w_NMVTCHB.NONUMA = w_NMVTCHB_before.NONUMA AND
w_NMVTCHB.sequence = w_NMVTCHB_before.sequence +1
;
-- Etat apres
UPDATE w_NMVTCHB SET
lieu_service_facturation_after = w_NMVTCHB_after.lieu_service_facturation_code_original,
lieu_activite_after = w_NMVTCHB_after.lieu_activite_code_original,
lieu_etage_after = w_NMVTCHB_after.lieu_etage_code_original,
lieu_lit_after = w_NMVTCHB_after.lieu_lit_code_original,
lieu_unite_fonctionnelle_after = w_NMVTCHB_after.lieu_unite_fonctionnelle_code_original,
lieu_unite_medicale_after = w_NMVTCHB_after.lieu_unite_medicale_code_original
FROM w_NMVTCHB w_NMVTCHB_after
WHERE w_NMVTCHB.NONUMA = w_NMVTCHB_after.NONUMA AND
w_NMVTCHB.sequence = w_NMVTCHB_after.sequence -1
;
DROP TABLE IF EXISTS w_mouvements_sejour;
CREATE TEMP TABLE w_mouvements_sejour AS
SELECT
w_NMVTCHB.NONUMA,
w_NMVTCHB.NONUMA AS no_sejour,
p_sejours.oid AS sejour_id,
sequence,
p_calendrier.date,
p_calendrier.jour_semaine,
p_calendrier.is_weekend,
CASE WHEN p_calendrier.date = MVDTEN THEN to_char(MVHREN,'HH24MISS')::numeric ELSE 0 END AS heure_debut,
CASE WHEN p_calendrier.date = MVDTSO THEN to_char(MVHRSO,'HH24MISS')::numeric ELSE 240000 END AS heure_fin,
CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes,
CASE WHEN MVDHSO = NODHSO AND p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes,
CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree,
CASE WHEN MVDHSO = NODHSO AND p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie,
CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation,
CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires,
CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes,
CASE WHEN NOURGA = '1' AND p_calendrier.date = MVDTEN AND MVDHEN = NODHEN THEN 1 ELSE 0 END AS nb_urgences,
CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '5' THEN 1 ELSE 0 END AS nb_seances,
CASE WHEN p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' AND MVDHEN <> NODHEN AND lieu_service_facturation_code_original <> lieu_service_facturation_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service,
CASE WHEN p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' AND MVDHSO <> NODHSO AND lieu_service_facturation_code_original <> lieu_service_facturation_after THEN 1 ELSE 0 END AS nb_sorties_mutation_service,
CASE WHEN p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' AND MVDHEN <> NODHEN AND lieu_etage_code_original <> lieu_etage_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage,
CASE WHEN p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' AND MVDHSO <> NODHSO AND lieu_etage_code_original <> lieu_etage_after THEN 1 ELSE 0 END AS nb_sorties_mutation_etage,
0 AS nb_entrees_mutation_activite,
0 AS nb_sorties_mutation_activite,
0 AS nb_entrees_mutation_unite_medicale,
0 AS nb_sorties_mutation_unite_medicale,
CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus,
CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> MVDTSO THEN 1 ELSE 0 END AS nb_jours_js_non_inclus,
CASE WHEN p_sejours.type_sejour IN ('1','2') THEN est_chambre_particuliere ELSE '0' END AS est_chambre_particuliere,
CASE WHEN p_sejours.type_sejour IN ('1','2') AND est_chambre_particuliere = 1 THEN 1 ELSE 0 END AS nb_chambres_particulieres,
0 AS nb_bebes,
lieu_id,
p_sejours.medecin_sejour_id as medecin_sejour_id,
CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now_chataigneraie) THEN '1' ELSE '0' END AS est_mouvement_previsionnel
FROM w_NMVTCHB
JOIN w_PERIODE ON 1=1
JOIN activite[PX].p_sejours ON w_NMVTCHB.NONUMA = p_sejours.no_sejour AND p_sejours.etat = ''
JOIN base.p_calendrier ON (p_calendrier.date BETWEEN MVDTEN AND MVDTSO AND p_calendrier.date <= now() + interval '1 month' )
ORDER BY sequence, p_calendrier.date;
-- Bébés A faire
-- Séances A Faire
DELETE FROM w_mouvements_sejour
WHERE
nb_entrees_directes = 0 AND
nb_sorties_directes = 0 AND
est_jour_hospitalisation <> '1' AND
nb_ambulatoires = 0 AND
nb_externes = 0 AND
nb_urgences = 0 AND
nb_seances = 0 AND
nb_entrees_mutation_service = 0 AND
nb_sorties_mutation_service = 0 AND
nb_entrees_mutation_etage = 0 AND
nb_sorties_mutation_etage = 0 AND
nb_entrees_mutation_activite = 0 AND
nb_sorties_mutation_activite = 0 AND
nb_entrees_mutation_unite_medicale = 0 AND
nb_sorties_mutation_unite_medicale = 0 AND
nb_jours_js_inclus = 0 AND
nb_jours_js_non_inclus = 0 AND
est_chambre_particuliere <> '1' AND
nb_chambres_particulieres = 0 AND
nb_bebes = 0;
SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_1');
SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_2');
SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_3');
SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_4');
SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_5');
INSERT INTO activite[PX].p_mouvements_sejour(
sejour_id, no_sejour, date, nb_jours_js_non_inclus,
lieu_id, nb_entrees_directes, nb_sorties_directes,
nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id,
nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service,
nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite,
nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres,
heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation,
est_chambre_particuliere,
nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale,
nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend)
SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus,
lieu_id, nb_entrees_directes, nb_sorties_directes,
nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id,
nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service,
nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite,
nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres,
heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation,
est_chambre_particuliere,
nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale,
nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend
FROM w_mouvements_sejour
ORDER BY no_sejour, sequence;
SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_1');
SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_2');
SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_3');
SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_4');
SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_5');
UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id
FROM activite[PX].p_mouvements_sejour
WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour
AND p_mouvements_sejour.date = p_sejours.date_sortie
AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id);
UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id
FROM activite[PX].p_mouvements_sejour
WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour
AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1
AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL);
UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id
FROM activite[PX].p_mouvements_sejour
WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour
AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL);
UPDATE activite[PX].p_sejours
SET type_sejour = '5'
WHERE type_sejour <> '5' AND
type_sejour <> '1' AND
no_sejour IN (
SELECT no_sejour
FROM activite[PX].p_mouvements_sejour
WHERE nb_seances > 0);
UPDATE activite[PX].p_mouvements_sejour
SET nb_externes = 0, nb_ambulatoires = 0
FROM activite[PX].p_sejours
WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND
p_sejours.type_sejour = '5' AND
(
nb_externes <> 0 OR
nb_ambulatoires <> 0
)
;
]]>
100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH,
COALESCE(SUM(CASE WHEN ACINDI = 1 AND ACID > 100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH_1,
COALESCE(SUM(CASE WHEN ACINDI = 2 AND ACID > 100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH_2,
COALESCE(SUM(CASE WHEN ACINDI = 3 AND ACID > 100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH_3,
COALESCE(MAX(CASE WHEN ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH,
COALESCE(MAX(CASE WHEN ACINDI = 1 AND ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH_1,
COALESCE(MAX(CASE WHEN ACINDI = 2 AND ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH_2,
COALESCE(MAX(CASE WHEN ACINDI = 3 AND ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH_3,
COALESCE(MAX(to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date,'00010101') AS ACDDTCH
FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES
JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA
LEFT JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC
GROUP BY 1,2;
UPDATE w_REGLI SET
FATTCL = 0 - FATTCL,
FAHOTT = 0 - FAHOTT
WHERE FAAVFA = 'A';
CREATE INDEX w_REGLI_i1
ON w_REGLI
USING btree
(FAID);
DROP TABLE IF EXISTS w_factures;
CREATE TEMP TABLE w_factures AS
SELECT
FACTURES.FAID,
nextval('activite[PX].s_factures'::regclass) AS oid,
p_sejours.oid AS sejour_id,
p_sejours.no_sejour,
FACTURES.FAID::text AS no_facture,
FACTURES.FAID::text AS no_facture_reference,
0::bigint AS facture_reference_id,
FAC_FAID::text AS no_facture_od_avoir,
0::bigint AS facture_od_avoir_id,
FADTE AS date_debut,
FADTS AS date_fin,
p_sejours.ghs_id,
p_sejours.ghs_bebe1_id,
p_sejours.ghs_bebe2_id,
p_sejours.ghs_bebe3_id,
p_sejours.code_cp_demandee,
FACTURES.FAAVFA,
CASE WHEN FACTURES.FAAVFA = 'A' THEN '1' ELSE '0' END AS type_facture,
CASE WHEN FACTURES.FAAVFA = 'A' THEN 1 ELSE 0 END AS nb_rejets,
'1' AS code_facture,
FADAT AS date_facture,
'1' AS code_vente,
to_char(FADAT,'YYYYMM')::numeric AS mois_vente,
FADAT AS date_vente,
'' AS code_cloture,
'' AS particularite_t2a,
p_sejours.tiers_payant_0_id,
FACCAI,
p_sejours.tiers_payant_1_id,
FACMUT,
p_sejours.tiers_payant_2_id,
p_sejours.tiers_payant_22_id,
w_FACPAR.FATTCL AS montant_facture_c,
w_FACPAR.FAHOTT AS montant_facture_h,
COALESCE(FACPCT_3,0) AS montant_facture_0_c,
COALESCE(FACPHO_3,0) AS montant_facture_0_h,
COALESCE(FACPCT_1,0) AS montant_facture_1_c,
COALESCE(FACPHO_1,0) AS montant_facture_1_h,
COALESCE(FACPCT_2,0) AS montant_facture_2_c,
COALESCE(FACPHO_3,0) AS montant_facture_2_h,
0::numeric AS montant_facture_22_c,
0::numeric AS montant_facture_22_h,
w_FACPAR.FATTCL AS montant_comptabilise_c,
w_FACPAR.FAHOTT AS montant_comptabilise_h,
FACPCT_3 AS montant_comptabilise_0_c,
FACPHO_3 AS montant_comptabilise_0_h,
FACPCT_1 AS montant_comptabilise_1_c,
FACPHO_1 AS montant_comptabilise_1_h,
FACPCT_2 AS montant_comptabilise_2_c,
FACPHO_3 AS montant_comptabilise_2_h,
0::numeric AS montant_comptabilise_22_c,
0::numeric AS montant_comptabilise_22_h,
ACMTFC AS montant_regle_c,
ACMTFH AS montant_regle_h,
ACMTFC_3 AS montant_regle_0_c,
ACMTFH_3 AS montant_regle_0_h,
ACMTFC_1 AS montant_regle_1_c,
ACMTFH_1 AS montant_regle_1_h,
ACMTFC_2 AS montant_regle_2_c,
ACMTFH_2 AS montant_regle_2_h,
0::numeric AS montant_regle_22_c,
0::numeric AS montant_regle_22_h,
CASE WHEN FACPDE_3 > '00010101' THEN '1' ELSE '0' END AS code_expedie_0,
CASE WHEN FACPDE_1 > '00010101' THEN '1' ELSE '0' END AS code_expedie_1,
CASE WHEN FACPDE_2 > '00010101' THEN '1' ELSE '0' END AS code_expedie_2,
'0' AS code_expedie_22,
GREATEST(FACPDE_1,FACPDE_2,FACPDE_3) AS date_expedition,
FACPDE_3 AS date_expedition_0,
FACPDE_1 AS date_expedition_1,
FACPDE_2 AS date_expedition_2,
'20991231'::date AS date_expedition_22,
FACNBO_3::text AS no_bordereau_0,
FACNBO_1::text AS no_bordereau_1,
FACNBO_2::text AS no_bordereau_2,
''::text AS no_bordereau_22,
ACDDTCH AS date_solde,
ACDDTF AS date_solde_c,
ACDDTH AS date_solde_h,
ACDDTF_3 AS date_solde_0_c,
ACDDTH_3 AS date_solde_0_h,
ACDDTF_1 AS date_solde_1_c,
ACDDTH_1 AS date_solde_1_h,
ACDDTF_2 AS date_solde_2_c,
ACDDTH_2 AS date_solde_2_h,
'0001-01-01'::date AS date_solde_22_c,
'0001-01-01'::date AS date_solde_22_h
FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES
JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA
JOIN activite[PX].p_sejours ON FACTURES.NONUMA = p_sejours.code_original
JOIN w_FACPAR ON FACTURES.FAID = w_FACPAR.FAID
JOIN w_REGLI ON FACTURES.FAID = w_REGLI.FAID
WHERE FACTURES.FAID <> 0
;
CREATE INDEX w_factures_i1
ON w_factures
USING btree
(FAID);
CREATE INDEX w_factures_i2
ON w_factures
USING btree
(sejour_id);
UPDATE w_factures
SET facture_od_avoir_id = w_factures_od_avoir.oid
FROM w_factures w_factures_od_avoir
WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture
;
UPDATE w_factures
SET type_facture = 'X'
WHERE w_factures.no_facture_od_avoir <> '0' AND
w_factures.type_facture = '0'
;
UPDATE w_factures
SET no_facture_reference = subview.no_facture_reference
FROM
(SELECT sejour_id,
(MAX(ARRAY[date_facture::text,no_facture]))[2] AS no_facture_reference
FROM w_factures
WHERE type_facture = '0'
GROUP BY 1
) subview
WHERE w_factures.sejour_id = subview.sejour_id AND
w_factures.no_facture_reference <> subview.no_facture_reference
;
UPDATE w_factures
SET facture_reference_id = w_factures_reference.oid
FROM w_factures w_factures_reference
WHERE w_factures.no_facture_reference = w_factures_reference.no_facture
;
SELECT base.cti_disable_index('activite', 'i_factures_3');
SELECT base.cti_disable_index('activite', 'i_factures_4');
SELECT base.cti_disable_index('activite', 'i_factures_5');
SELECT base.cti_disable_index('activite', 'i_factures_6');
SELECT base.cti_disable_index('activite', 'i_factures_7');
SELECT base.cti_disable_index('activite', 'i_factures_8');
SELECT base.cti_disable_index('activite', 'i_factures_9');
SELECT base.cti_disable_index('activite', 'i_factures_10');
SELECT base.cti_disable_index('activite', 'i_factures_11');
SELECT base.cti_disable_index('activite', 'i_factures_12');
SELECT base.cti_disable_index('activite', 'i_factures_13');
SELECT base.cti_disable_index('activite', 'i_factures_14');
INSERT INTO activite[PX].p_factures (
oid,
sejour_id,
no_sejour,
no_facture,
no_facture_reference,
facture_reference_id,
no_facture_od_avoir,
facture_od_avoir_id,
date_debut,
date_fin,
ghs_id,
ghs_bebe1_id,
ghs_bebe2_id,
ghs_bebe3_id,
code_cp_demandee,
type_facture,
nb_rejets,
code_facture,
date_facture,
code_vente,
mois_vente,
date_vente,
code_cloture,
particularite_t2a,
tiers_payant_0_id,
tiers_payant_1_id,
tiers_payant_2_id,
tiers_payant_22_id,
montant_facture_c,
montant_facture_h,
montant_facture_0_c,
montant_facture_0_h,
montant_facture_1_c,
montant_facture_1_h,
montant_facture_2_c,
montant_facture_2_h,
montant_facture_22_c,
montant_facture_22_h,
montant_comptabilise_c,
montant_comptabilise_h,
montant_comptabilise_0_c,
montant_comptabilise_0_h,
montant_comptabilise_1_c,
montant_comptabilise_1_h,
montant_comptabilise_2_c,
montant_comptabilise_2_h,
montant_comptabilise_22_c,
montant_comptabilise_22_h,
montant_regle_c,
montant_regle_h,
montant_regle_0_c,
montant_regle_0_h,
montant_regle_1_c,
montant_regle_1_h,
montant_regle_2_c,
montant_regle_2_h,
montant_regle_22_c,
montant_regle_22_h,
code_expedie_0,
code_expedie_1,
code_expedie_2,
code_expedie_22,
date_expedition,
date_expedition_0,
date_expedition_1,
date_expedition_2,
date_expedition_22,
no_bordereau_0,
no_bordereau_1,
no_bordereau_2,
no_bordereau_22,
date_solde,
date_solde_c,
date_solde_h,
date_solde_0_c,
date_solde_0_h,
date_solde_1_c,
date_solde_1_h,
date_solde_2_c,
date_solde_2_h,
date_solde_22_c,
date_solde_22_h
)
SELECT
oid,
sejour_id,
no_sejour,
no_facture,
w_factures.no_facture_reference,
facture_reference_id,
no_facture_od_avoir,
facture_od_avoir_id,
date_debut,
date_fin,
ghs_id,
ghs_bebe1_id,
ghs_bebe2_id,
ghs_bebe3_id,
code_cp_demandee,
type_facture,
nb_rejets,
code_facture,
date_facture,
code_vente,
mois_vente,
date_vente,
code_cloture,
particularite_t2a,
tiers_payant_0_id,
tiers_payant_1_id,
tiers_payant_2_id,
tiers_payant_22_id,
montant_facture_c,
montant_facture_h,
montant_facture_0_c,
montant_facture_0_h,
montant_facture_1_c,
montant_facture_1_h,
montant_facture_2_c,
montant_facture_2_h,
montant_facture_22_c,
montant_facture_22_h,
montant_comptabilise_c,
montant_comptabilise_h,
montant_comptabilise_0_c,
montant_comptabilise_0_h,
montant_comptabilise_1_c,
montant_comptabilise_1_h,
montant_comptabilise_2_c,
montant_comptabilise_2_h,
montant_comptabilise_22_c,
montant_comptabilise_22_h,
montant_regle_c,
montant_regle_h,
montant_regle_0_c,
montant_regle_0_h,
montant_regle_1_c,
montant_regle_1_h,
montant_regle_2_c,
montant_regle_2_h,
montant_regle_22_c,
montant_regle_22_h,
code_expedie_0,
code_expedie_1,
code_expedie_2,
code_expedie_22,
CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END,
CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END,
CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END,
CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END,
CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END,
no_bordereau_0,
no_bordereau_1,
no_bordereau_2,
no_bordereau_22,
CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END,
CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END,
CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END,
CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END,
CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END,
CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END,
CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END,
CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END,
CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END,
CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END,
CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END
FROM w_factures
WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures);
SELECT base.cti_enable_index('activite', 'i_factures_3');
SELECT base.cti_enable_index('activite', 'i_factures_4');
SELECT base.cti_enable_index('activite', 'i_factures_5');
SELECT base.cti_enable_index('activite', 'i_factures_6');
SELECT base.cti_enable_index('activite', 'i_factures_7');
SELECT base.cti_enable_index('activite', 'i_factures_8');
SELECT base.cti_enable_index('activite', 'i_factures_9');
SELECT base.cti_enable_index('activite', 'i_factures_10');
SELECT base.cti_enable_index('activite', 'i_factures_11');
SELECT base.cti_enable_index('activite', 'i_factures_12');
SELECT base.cti_enable_index('activite', 'i_factures_13');
SELECT base.cti_enable_index('activite', 'i_factures_14');
-- Séjours sans facture
DROP TABLE IF EXISTS w_factures_trous;
CREATE TEMP TABLE w_factures_trous AS
SELECT
p_sejours.finess,
p_sejours.no_sejour,
p_sejours.date_entree,
p_sejours.tiers_payant_0_id,
p_sejours.tiers_payant_1_id,
p_sejours.tiers_payant_2_id,
p_sejours.tiers_payant_22_id,
p_sejours.code_cp_demandee,
COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire,
p_sejours.code_sorti,
CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie,
MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture,
date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours,
CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours
FROM activite[PX].p_sejours
LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%'
JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid
JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid
WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' AND code_prevu <> 1
GROUP BY 1,2,3,4,5,6,7,8,9,10,11;
INSERT INTO activite[PX].p_factures(
finess,
no_sejour,
no_facture,
no_facture_reference,
type_facture,
code_facture,
date_facture,
tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id,
code_cp_demandee,
date_debut,
date_fin)
SELECT finess,
no_sejour,
no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END,
no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END,
'E',
'0',
'20991231'::date,
tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id,
code_cp_demandee ,
MIN(GREATEST(date_debut_encours, p_calendrier.date)),
MAX(LEAST(date_fin_encours, p_calendrier.date))
FROM w_factures_trous
JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours
WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null)
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12;
UPDATE activite[PX].p_factures SET
date_debut = date_entree,
date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END
FROM activite[PX].p_sejours
JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid
JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND
avec_facturation_intermediaire IS DISTINCT FROM '1'
WHERE p_factures.no_sejour = p_sejours.no_sejour AND
CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND
(
p_factures.date_debut <> date_entree OR
p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END
);
]]>
0 THEN MCO ELSE 1 END AS coefficient_mco,
t_rubriques_facturation.oid AS rubrique_facturation_id,
t_rubriques_facturation.oid AS rubrique_comptabilisation_id,
t_prestations.oid AS prestation_id,
t_prestations.code AS prestation_code,
t_prestations.type_ventilation_jour AS prestation_type_ventilation_jour,
COALESCE(t_compte.oid,0) AS compte_produit_id,
p_sejours.lieu_sortie_id AS lieu_id,
1::bigint AS origine_facturation_id,
SFTTC AS prix_unitaire,
0::numeric AS taux_0,
SFTXSS AS taux_1,
0::numeric AS taux_2,
0::numeric AS taux_22,
SFDTEA AS date_debut,
SFDTSA AS date_fin,
CASE WHEN SFCOEF <> 0 THEN SFCOEF ELSE SFQTE END AS nb_rubrique,
CASE WHEN SFCOEF <> 0 THEN SFCOEF ELSE SFQTE END AS nb_prestation,
SFTTTO AS montant_facture,
SFTTHO AS montant_facture_0,
SFTTSS AS montant_facture_1,
SFTTMU AS montant_facture_2,
0::numeric AS montant_facture_22,
SFTTTO AS montant_comptabilise,
SFTTHO AS montant_comptabilise_0,
SFTTSS AS montant_comptabilise_1,
SFTTMU AS montant_comptabilise_2,
0::numeric AS montant_comptabilise_22,
0::numeric AS rubrique_facture_id
FROM prod_chataigneraie_as400.NXXXFAC_NELFTARC NELFTARC
JOIN w_factures ON w_factures.FAID = NELFTARC.FAID
JOIN activite[PX].p_sejours ON w_factures.no_sejour = p_sejours.no_sejour
JOIN prod_chataigneraie_as400.NXXXFAC_BFARCLI BFARCLI ON BFARCLI.ARIID = NELFTARC.ARIID
JOIN prod_chataigneraie_as400.NXXXFAC_BFAB2 BFAB2 ON BFAB2.AB2ID = BFARCLI.AB2ID
LEFT JOIN prod_chataigneraie_as400.NXXXFAC_BFCENT BFCENT ON
BFCENT.ARIID = NELFTARC.ARIID AND
BFCENT.CATID = NELFTARC.SFCATID AND
BFCENT.SCAID = NELFTARC.SFSCAID AND
BFCENT.BFTXID = NELFTARC.BFTXID
JOIN activite[PX].t_rubriques_facturation ON NELFTARC.ARIID = t_rubriques_facturation.code_original
JOIN activite.t_prestations ON BFAB2.AB2OF = t_prestations.code
LEFT JOIN activite[PX].t_compte ON BFCENT.CPTID = t_compte.code
;
DROP TABLE IF EXISTS w_BFTYMED;
CREATE TEMP TABLE w_BFTYMED AS
SELECT TYLFMED,
TYLFMED||'M' AS rubrique_code_original,
0::bigint AS rubrique_facturation_id,
''::text AS rubrique_facturation_code,
COALESCE(AB2OF,
CASE
WHEN TYLFLI ILIKE '%proth%' THEN 'PII'
WHEN TYLFLI ILIKE '%cament%' THEN 'PH8'
ELSE 'PII' END) AS prestation_code_original,
0::bigint AS prestation_id,
''::text AS prestation_code
FROM prod_chataigneraie_as400.NXXXFAC_BFTYMED BFTYMED
LEFT JOIN prod_chataigneraie_as400.NXXXFAC_BFAB2 BFAB2 ON BFAB2.AB2ID = BFTYMED.AB2ID
;
UPDATE w_BFTYMED
SET prestation_id = t_prestations.oid,
prestation_code = t_prestations.code
FROM activite.t_prestations
WHERE prestation_code_original = code;
UPDATE w_BFTYMED
SET rubrique_facturation_id = t_rubriques_facturation.oid,
rubrique_facturation_code = t_rubriques_facturation.code
FROM activite[PX].t_rubriques_facturation
WHERE rubrique_code_original = code_original;
INSERT INTO w_factures_lignes_c
SELECT
nextval('w_factures_lignes_c_seq'::regclass) AS sequence,
w_factures.no_sejour,
w_factures.oid AS facture_id,
w_factures.no_facture AS no_facture,
w_factures.date_vente,
w_factures.FAAVFA,
1::numeric AS coefficient,
1::numeric AS coefficient_mco,
w_BFTYMED.rubrique_facturation_id,
w_BFTYMED.rubrique_facturation_id AS rubrique_comptabilisation_id,
w_BFTYMED.prestation_id,
w_BFTYMED.prestation_code,
'0'::text AS prestation_type_ventilation_jour,
0::bigint AS compte_produit_id,
p_sejours.lieu_sortie_id AS lieu_id,
1::bigint AS origine_facturation_id,
SMPUTC AS prix_unitaire,
0::numeric AS taux_0,
SMTXSS AS taux_1,
0::numeric AS taux_2,
0::numeric AS taux_22,
SMDINA AS date_debut,
SMDINA AS date_fin,
CASE WHEN SMCOEF <> 0 THEN SMCOEF ELSE SMQTE END AS nb_rubrique,
CASE WHEN SMCOEF <> 0 THEN SMCOEF ELSE SMQTE END AS nb_prestation,
SMTTTO AS montant_facture,
SMTTHO AS montant_facture_0,
SMTTSS AS montant_facture_1,
SMTTMU AS montant_facture_2,
0::numeric AS montant_facture_22,
CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTTO ELSE 0 END AS montant_comptabilise,
CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTHO ELSE 0 END AS montant_comptabilise_0,
CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTSS ELSE 0 END AS montant_comptabilise_1,
CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTMU ELSE 0 END AS montant_comptabilise_2,
0::numeric AS montant_comptabilise_22,
0::numeric AS rubrique_facture_id
FROM prod_chataigneraie_as400.NXXXFAC_NELFMEDI NELFMEDI
JOIN w_factures ON w_factures.FAID = NELFMEDI.FAID
JOIN activite[PX].p_sejours ON w_factures.no_sejour = p_sejours.no_sejour
JOIN w_BFTYMED ON w_BFTYMED.TYLFMED = NELFMEDI.TYLFMED
;
CREATE INDEX w_factures_lignes_c_i1
ON w_factures_lignes_c
USING btree
(sequence);
CREATE INDEX w_factures_lignes_c_i2
ON w_factures_lignes_c
USING btree
(prestation_id);
-- Eclatement des supplements par jour
DROP TABLE IF EXISTS w_factures_lignes_sup_c;
CREATE TEMP TABLE w_factures_lignes_sup_c AS
SELECT
date(p_sejours.date_entree) AS date_debut_ghs,
date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs,
(date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs,
CASE WHEN prestation_code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(date_debut + interval '1 day') END AS date_debut_det,
CASE WHEN prestation_code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(date_debut + ((ABS(nb_prestation)-1)|| ' days')::interval) END AS date_fin_det,
ABS(CASE WHEN prestation_code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det,
w_factures_lignes_c.*
FROM w_factures_lignes_c
JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour
WHERE
(
prestation_code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR
prestation_type_ventilation_jour = '1'
)
AND
(
(nb_prestation > 1 or nb_prestation < -1 OR
(prestation_code = 'GHS' AND date(date_sortie) - date(date_entree) > 1))
) ;
UPDATE w_factures_lignes_sup_c SET
date_fin_ghs = date(date_debut_exh - interval '1 day'),
date_fin_det = date(date_debut_exh - interval '1 day'),
nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1,
nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1
FROM (
SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh
FROM w_factures_lignes_c
JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH'
GROUP BY 1) subview
WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND
w_factures_lignes_sup_c.prestation_code = 'GHS';
CREATE INDEX w_factures_lignes_sup_c_i1
ON w_factures_lignes_sup_c
USING btree
(date_debut);
DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup;
CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS
SELECT
sequence,
no_sejour,
facture_id,
no_facture,
date_vente,
FAAVFA,
coefficient,
coefficient_mco,
rubrique_facturation_id,
rubrique_comptabilisation_id,
prestation_id,
prestation_code,
prestation_type_ventilation_jour,
compte_produit_id,
lieu_id,
origine_facturation_id,
prix_unitaire,
taux_0,
taux_1,
taux_2,
taux_22,
date AS date_debut,
date AS date_fin,
CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique,
CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation,
round(montant_facture / ABS(nb_det),2) AS montant_facture,
round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0,
round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1,
round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2,
round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22,
round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise,
round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0,
round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1,
round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2,
round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22,
rubrique_facture_id
FROM w_factures_lignes_sup_c
JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det
;
DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot;
CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS
SELECT sequence,
SUM(nb_rubrique) AS nb_rubrique,
SUM(nb_prestation) AS nb_prestation,
SUM(montant_facture) AS montant_facture,
SUM(montant_facture_0) AS montant_facture_0,
SUM(montant_facture_1) AS montant_facture_1,
SUM(montant_facture_2) AS montant_facture_2,
SUM(montant_facture_22) AS montant_facture_22,
SUM(montant_comptabilise) AS montant_comptabilise,
SUM(montant_comptabilise_0) AS montant_comptabilise_0,
SUM(montant_comptabilise_1) AS montant_comptabilise_1,
SUM(montant_comptabilise_2) AS montant_comptabilise_2,
SUM(montant_comptabilise_22) AS montant_comptabilise_22
FROM w_factures_lignes_sup_c_sup
GROUP BY 1;
UPDATE w_factures_lignes_c
SET
date_fin = w_factures_lignes_c.date_debut,
nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique,
nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation,
montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture,
montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0,
montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1,
montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2,
montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22,
montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise,
montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0,
montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1,
montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2,
montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22
FROM w_factures_lignes_sup_c_sup_tot
WHERE w_factures_lignes_c.sequence = w_factures_lignes_sup_c_sup_tot.sequence;
-- Ajout des lignes
INSERT INTO w_factures_lignes_c(
sequence,
no_sejour,
facture_id,
no_facture,
date_vente,
FAAVFA,
coefficient,
coefficient_mco,
rubrique_facturation_id,
rubrique_comptabilisation_id,
prestation_id,
prestation_code,
prestation_type_ventilation_jour,
compte_produit_id,
lieu_id,
origine_facturation_id,
prix_unitaire,
taux_0,
taux_1,
taux_2,
taux_22,
date_debut,
date_fin,
nb_rubrique,
nb_prestation,
montant_facture,
montant_facture_0,
montant_facture_1,
montant_facture_2,
montant_facture_22,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22,
rubrique_facture_id)
SELECT
sequence,
no_sejour,
facture_id,
no_facture,
date_vente,
FAAVFA,
coefficient,
coefficient_mco,
rubrique_facturation_id,
rubrique_comptabilisation_id,
prestation_id,
prestation_code,
prestation_type_ventilation_jour,
compte_produit_id,
lieu_id,
origine_facturation_id,
prix_unitaire,
taux_0,
taux_1,
taux_2,
taux_22,
date_debut,
date_fin,
nb_rubrique,
nb_prestation,
montant_facture,
montant_facture_0,
montant_facture_1,
montant_facture_2,
montant_facture_22,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22,
rubrique_facture_id
FROM w_factures_lignes_sup_c_sup;
-- Inversion signe pour avoirs
UPDATE w_factures_lignes_c SET
nb_rubrique = 0-nb_rubrique,
nb_prestation = 0-nb_prestation,
montant_facture = 0-montant_facture,
montant_facture_0 = 0-montant_facture_0,
montant_facture_1 = 0-montant_facture_1,
montant_facture_2 = 0-montant_facture_2,
montant_facture_22 = 0-montant_facture_22,
montant_comptabilise = 0-montant_comptabilise,
montant_comptabilise_0 = 0-montant_comptabilise_0,
montant_comptabilise_1 = 0-montant_comptabilise_1,
montant_comptabilise_2 = 0-montant_comptabilise_2,
montant_comptabilise_22 = 0-montant_comptabilise_22
WHERE FAAVFA = 'A'
;
-- Lieu exécution
UPDATE w_factures_lignes_c
SET lieu_id = p_mouvements_sejour.lieu_id
FROM
activite[PX].p_mouvements_sejour
WHERE
w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND
w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND
(230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR
nb_entrees_directes = 1 AND heure_fin = 240000 OR
nb_sorties_directes = 1 ) AND
w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id;
-- Rubriques internes cti
SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c');
-- Validation des lignes de facture
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_1');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_2');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_3');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_4');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_5');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_6');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_7');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_8');
INSERT INTO activite[PX].p_factures_lignes_c (
facture_id,
no_facture,
date_debut,
date_fin,
nb_rubrique,
nb_prestation,
coefficient,
coefficient_mco,
rubrique_facture_id,
rubrique_facturation_id,
rubrique_comptabilisation_id,
prestation_id,
compte_produit_id,
montant_facture,
montant_facture_0,
montant_facture_1,
montant_facture_2,
montant_facture_22,
taux_0,
taux_1,
taux_2,
taux_22,
prix_unitaire,
lieu_id,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22,
montant_encours,
montant_encours_0,
montant_encours_1,
montant_encours_2,
montant_encours_22,
montant_facture_actes_inclus_dans_sejour,
montant_facture_0_actes_inclus_dans_sejour,
montant_facture_1_actes_inclus_dans_sejour,
montant_facture_2_actes_inclus_dans_sejour,
montant_facture_22_actes_inclus_dans_sejour,
montant_comptabilise_budget_global_1,
origine_facturation_id
)
SELECT
facture_id,
no_facture,
date_debut,
date_fin,
nb_rubrique,
nb_prestation,
coefficient,
coefficient_mco,
rubrique_facture_id,
rubrique_facturation_id,
rubrique_comptabilisation_id,
prestation_id,
compte_produit_id,
montant_facture,
montant_facture_0,
montant_facture_1,
montant_facture_2,
montant_facture_22,
taux_0,
taux_1,
taux_2,
taux_22,
prix_unitaire,
lieu_id,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22,
0::numeric AS montant_encours,
0::numeric AS montant_encours_0,
0::numeric AS montant_encours_1,
0::numeric AS montant_encours_2,
0::numeric AS montant_encours_22,
0::numeric AS montant_facture_actes_inclus_dans_sejour,
0::numeric AS montant_facture_0_actes_inclus_dans_sejour,
0::numeric AS montant_facture_1_actes_inclus_dans_sejour,
0::numeric AS montant_facture_2_actes_inclus_dans_sejour,
0::numeric AS montant_facture_22_actes_inclus_dans_sejour,
0::numeric AS montant_comptabilise_budget_global_1,
origine_facturation_id
FROM w_factures_lignes_c
WHERE montant_facture <> 0;
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_1');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_2');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_3');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_4');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_5');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_6');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_7');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_8');
]]>
= '20120101' AND
date_vente IS NOT NULL AND
(montant_comptabilise <> 0 OR
montant_comptabilise_0 <> 0 OR
montant_comptabilise_1 <> 0 OR
montant_comptabilise_2 <> 0 OR
montant_comptabilise_22 <> 0
)
GROUP BY 1,2,3,4,5;
INSERT INTO activite[PX].p_factures_soldes_c(
facture_id,
no_facture,
date_comptable,
rubrique_comptabilisee_id,
prestation_id,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22,
montant_regle,
montant_regle_0,
montant_regle_1,
montant_regle_2,
montant_regle_22
)
SELECT
w_factures.oid AS facture_id,
no_facture,
(to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||'01')::date,
0::bigint AS rubrique_comptabilisation_id,
0::bigint AS prestation_id,
0,
0,
0,
0,
0,
SUM(0-ACMTFC) AS montant_regle,
SUM(CASE WHEN ACINDI = 3 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_0,
SUM(CASE WHEN ACINDI = 1 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_1,
SUM(CASE WHEN ACINDI = 2 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_2,
0 AS montant_regle_22
FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES
JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA
JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC
JOIN w_factures ON REGLI.ACNFAC = w_factures.FAID
WHERE ACSDTF*100+ACADTF >= 2012 AND
ACID < 100
GROUP BY 1,2,3,4,5
;
SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_1');
SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_2');
SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_3');
SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_4');
SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_8');
]]>
p_mouvements_sejour.lieu_id;
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_1');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_2');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_3');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_4');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_5');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_6');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_7');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_8');
SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_9');
INSERT INTO activite[PX].p_factures_lignes_h (
facture_id,
no_facture,
date_debut,
date_fin,
nb_rubrique,
nb_prestation,
coefficient,
coefficient_mco,
medecin_facture_id,
medecin_comptabilise_id,
prestation_id,
rubrique_facturation_id,
acte_id,
activite_ccam,
extension_ccam,
phase_ccam,
modificateur_ccam_1,
modificateur_ccam_2,
modificateur_ccam_3,
modificateur_ccam_4,
montant_facture,
montant_facture_0,
montant_facture_1,
montant_facture_2,
montant_facture_22,
montant_depassement,
taux_0,
taux_1,
taux_2,
taux_22,
prix_unitaire,
lieu_id,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22
)
SELECT
facture_id,
no_facture,
date_debut,
date_fin,
nb_rubrique,
nb_prestation,
coefficient,
coefficient_mco,
medecin_facture_id,
medecin_comptabilise_id,
prestation_id,
rubrique_facturation_id,
acte_id,
activite_ccam,
extension_ccam,
phase_ccam,
modificateur_ccam_1,
modificateur_ccam_2,
modificateur_ccam_3,
modificateur_ccam_4,
montant_facture,
montant_facture_0,
montant_facture_1,
montant_facture_2,
montant_facture_22,
montant_depassement,
taux_0,
taux_1,
taux_2,
taux_22,
prix_unitaire,
lieu_id,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22
FROM w_factures_lignes_h;
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_1');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_2');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_3');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_4');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_5');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_6');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_7');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_8');
SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_9');
]]>
= '20120101' AND
(montant_comptabilise <> 0 OR
montant_comptabilise_0 <> 0 OR
montant_comptabilise_1 <> 0 OR
montant_comptabilise_2 <> 0 OR
montant_comptabilise_22 <> 0
)
GROUP BY 1,2,3,4,5,6;
DROP TABLE IF EXISTS w_medecins_3;
CREATE TEMP TABLE w_medecins_3 AS
SELECT
base.cti_to_number(right(code_original,3)) AS code_3,
MAX(oid) AS medecin_administratif_id
FROM activite[PX].t_medecins_administratifs
GROUP BY 1;
INSERT INTO activite[PX].p_factures_soldes_h(
facture_id,
no_facture,
date_comptable,
medecin_comptabilise_id,
prestation_id,
rubrique_comptabilisee_id,
montant_comptabilise,
montant_comptabilise_0,
montant_comptabilise_1,
montant_comptabilise_2,
montant_comptabilise_22,
montant_regle,
montant_regle_0,
montant_regle_1,
montant_regle_2,
montant_regle_22
)
SELECT
w_factures.oid AS facture_id,
no_facture,
(to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||'01')::date,
COALESCE(w_medecins_3.medecin_administratif_id,0) AS medecin_comptabilise_id,
0::bigint AS rubrique_comptabilisation_id,
0::bigint AS prestation_id,
0,
0,
0,
0,
0,
SUM(0-ACMTFC) AS montant_regle,
SUM(CASE WHEN ACINDI = 3 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_0,
SUM(CASE WHEN ACINDI = 1 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_1,
SUM(CASE WHEN ACINDI = 2 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_2,
0 AS montant_regle_22
FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES
JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA
JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC
JOIN w_factures ON REGLI.ACNFAC = w_factures.FAID
LEFT JOIN w_medecins_3 ON w_medecins_3.code_3 = ACMED
WHERE ACSDTF*100+ACADTF >= 2012 AND
ACID > 100
GROUP BY 1,2,3,4,5,6
;
SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_1');
SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_3');
SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_4');
SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_8');
]]>
'A' THEN FATTCL ELSE 0-FATTCL END) AS montant_ventes_c,
0::numeric AS montant_reglements_c,
SUM(CASE WHEN FAAVFA <> 'A' THEN FAHOTT ELSE 0-FAHOTT END) AS montant_ventes_h,
0::numeric AS montant_reglements_h
FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES
WHERE FADAT >= '20120101'
GROUP BY 1,2;
INSERT INTO w_factures_comptables
SELECT
ACNFAC::text AS no_facture,
(to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||'01')::date AS date_comptable,
0::numeric AS montant_ventes_c,
SUM(CASE WHEN ACID < 100 THEN 0-ACMTFC ELSE 0 END) AS montant_reglements_c,
0::numeric AS montant_ventes_h,
SUM(CASE WHEN ACID > 100 THEN 0-ACMTFC ELSE 0 END) AS montant_reglements_h
FROM prod_chataigneraie_as400.XXXFICH_REGLI REGLI
WHERE ACSDTF*100+ACADTF >= 2012
GROUP BY 1,2
;
TRUNCATE activite[PX].p_chiffrier_comptable;
INSERT INTO activite[PX].p_chiffrier_comptable(
date_comptable,
montant_ventes_c,
montant_reglements_c,
montant_solde_client_c,
montant_ventes_h,
montant_reglements_h,
montant_solde_client_h)
SELECT
date_comptable,
SUM(montant_ventes_c),
SUM(montant_reglements_c),
0 AS montant_solde_client_c,
SUM(montant_ventes_h),
SUM(montant_reglements_h),
0 AS montant_solde_client_h
FROM w_factures_comptables
WHERE date_comptable >= '20120101'
GROUP BY 1;
TRUNCATE activite[PX].p_factures_comptables;
INSERT INTO activite[PX].p_factures_comptables(
facture_id,
no_facture,
date_comptable,
montant_ventes_c,
montant_reglements_c,
montant_ventes_h,
montant_reglements_h)
SELECT
0::bigint AS facture_id,
no_facture,
date_comptable,
SUM(montant_ventes_c),
SUM(montant_reglements_c),
SUM(montant_ventes_h),
SUM(montant_reglements_h)
FROM w_factures_comptables
WHERE date_comptable >= '20120101' AND
no_facture IS NOT NULL
GROUP BY 1,2,3;
]]>
0
WHERE t_tiers_payant.code_original = 'C'||NOCAIS AND
(grand_regime_id = 0 OR grand_regime_id IS NULL);
INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court)
SELECT 'M'||MUNUM, 'M'||MUNUM,
'1',
MAX(MUNMMU), MAX(MUNMMU)
FROM prod_chataigneraie_as400.NXXXFAC_BFMUTU
WHERE ('M'||MUNUM) NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL)
GROUP BY 1,2;
]]>
PERNOM OR
t_medecins_administratifs.prenom <> PERPNM OR
t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR
t_medecins_administratifs.medecin_id <> w_medecins.medecin_id
);
UPDATE base.t_medecins SET specialite_id = subview.specialite_id
FROM
(SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id
FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin
WHERE t_medecins.oid = t_medecins_administratifs.medecin_id
AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid
GROUP BY t_medecins.oid) subview
WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0;
]]>
COALESCE(t_modes_traitement.oid,0);
UPDATE activite[PX].t_services_facturation
SET dmt_id = COALESCE(t_dmt.oid,0)
FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA BFGRTA
JOIN prod_chataigneraie_as400.NXXXFAC_BFDMT BFDMT ON BFGRTA.DISID = BFDMT.DISID
LEFT JOIN base.t_dmt ON BFDMT.DISLISS = t_dmt.code
WHERE t_services_facturation.code_original = TARID AND
COALESCE(dmt_id,0) = 0 AND
COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0);
-- Services non facturables
INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits, type_t2a)
SELECT TARID||'-NF', TARID||'-NF', TARLI || ' (Non facturable)', TARLI || ' (Non facturable)', 0 AS nb_lits, '0' AS type_t2a
FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA
WHERE TARID IN (SELECT NOTAR FROM prod_chataigneraie_as400.NXXXFAC_NDOADM WHERE NOFACT = 'N') AND
(TARID||'-NF') NOT IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE code_original IS NOT NULL)
ORDER BY TARID;
UPDATE activite[PX].t_services_facturation SET
texte = TARLI || ' (Non facturable)',
texte_court = CASE WHEN texte_court = texte THEN TARLI ELSE texte_court END || ' (Non facturable)'
FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA
WHERE (TARID||'-NF') = code_original AND
(
texte IS DISTINCT FROM (TARLI || ' (Non facturable)') OR
texte_court IS DISTINCT FROM (CASE WHEN texte_court = texte THEN TARLI ELSE texte_court END || ' (Non facturable)')
);
UPDATE activite[PX].t_services_facturation
SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0)
FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA BFGRTA
JOIN prod_chataigneraie_as400.NXXXFAC_BFMT BFMT ON BFGRTA.MTID = BFMT.MTID
LEFT JOIN base.t_modes_traitement ON BFMT.MTLISS = t_modes_traitement.code
WHERE t_services_facturation.code_original = (TARID||'-NF') AND
COALESCE(mode_traitement_id,0) = 0 AND
COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0);
UPDATE activite[PX].t_services_facturation
SET dmt_id = COALESCE(t_dmt.oid,0)
FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA BFGRTA
JOIN prod_chataigneraie_as400.NXXXFAC_BFDMT BFDMT ON BFGRTA.DISID = BFDMT.DISID
LEFT JOIN base.t_dmt ON BFDMT.DISLISS = t_dmt.code
WHERE t_services_facturation.code_original = (TARID||'-NF') AND
COALESCE(dmt_id,0) = 0 AND
COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0);
-- Unités fonctionnelles
INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court)
SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles);
INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court)
SELECT SENU, SELIC, SELI, SELI
FROM prod_chataigneraie_as400.NXXXFIC_NSERSO
WHERE SENU NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles WHERE code_original IS NOT NULL)
ORDER BY SELIC;
UPDATE activite[PX].t_unites_fonctionnelles SET
code = SELIC,
texte = SELI,
texte_court = CASE WHEN texte_court = texte THEN SELI ELSE texte_court END
FROM prod_chataigneraie_as400.NXXXFIC_NSERSO
WHERE SENU = code_original AND
(
code IS DISTINCT FROM SELIC OR
texte IS DISTINCT FROM SELI OR
texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN SELI ELSE texte_court END
);
-- Unités médicales
INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court)
SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales);
INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court)
SELECT
CHROUM,
to_char(VALUM,'FM0000')||'-'||CHROUM,
LUM AS texte,
LUM AS texte_court
FROM prod_chataigneraie_mysql.STDEV_UNIMED
WHERE IDETAB = 10 AND
CHROUM NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales WHERE code_original IS NOT NULL)
ORDER BY 1,2,3
;
-- Activités
INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court)
SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites);
INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court)
SELECT SPESAE, SPESAE, LSPESA, LSPESA
FROM prod_chataigneraie_as400.NXXXFAC_BFSPESAE
WHERE SPESAE NOT IN (SELECT code_original FROM activite[PX].t_activites WHERE code_original IS NOT NULL)
ORDER BY SPESAE;
UPDATE activite[PX].t_activites SET
texte = LSPESA,
texte_court = CASE WHEN texte_court = texte THEN LSPESA ELSE texte_court END
FROM prod_chataigneraie_as400.NXXXFAC_BFSPESAE
WHERE SPESAE = code_original AND
(
texte IS DISTINCT FROM LSPESA OR
texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN LSPESA ELSE texte_court END
);
-- Etages et lits
INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits)
SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages);
INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits)
SELECT SENU, SELIC, SELI, SELI, 0
FROM prod_chataigneraie_as400.NXXXFIC_NSERSO
WHERE SENU NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL)
ORDER BY SELIC;
UPDATE activite[PX].t_etages SET
code = SELIC,
texte = SELI,
texte_court = CASE WHEN texte_court = texte THEN SELI ELSE texte_court END
FROM prod_chataigneraie_as400.NXXXFIC_NSERSO
WHERE SENU = code_original AND
(
code IS DISTINCT FROM SELIC OR
texte IS DISTINCT FROM SELI OR
texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN SELI ELSE texte_court END
);
INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere)
SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits);
DROP TABLE IF EXISTS w_lits;
CREATE TEMP TABLE w_lits AS
SELECT
NMVTCHB.SENU,
NMVTCHB.LITNU,
NMVTCHB.SENU||'|'||NMVTCHB.LITNU AS lit_code_original,
CHLIC||LITLOC AS lit_code,
MAX(CASE WHEN base.cti_to_number(CHLIC) > 0 AND LITLOC = '' AND length(CHLIC) = 4 THEN 'O' ELSE 'N' END) AS chambre_particuliere,
count(*) AS nb,
NMVTCHB.SENU||'|'||NMVTCHB.LITNU AS lit_code_original_cible,
0::bigint AS lit_id
FROM prod_chataigneraie_as400.NXXXFAC_NMVTCHB NMVTCHB
JOIN prod_chataigneraie_as400.NXXXFIC_DLIT DLIT ON NMVTCHB.LITNU = DLIT.LITNU
JOIN prod_chataigneraie_as400.NXXXFIC_NCHAMBR NCHAMBR ON DLIT.CHNU1 = NCHAMBR.CHNU1
WHERE NMVTCHB.SENU <> 0 AND NMVTCHB.LITNU <> 0
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4;
UPDATE w_lits
SET lit_code_original_cible = subview.lit_code_original_cible
FROM
(
SELECT SENU,lit_code,(MAX(Array[to_char(nb,'FM0000000000'),lit_code_original]))[2] AS lit_code_original_cible
FROM w_lits
GROUP BY 1,2
HAVING COUNT(*) > 1
) subview
WHERE w_lits.SENU = subview.SENU AND
w_lits.lit_code = subview.lit_code AND
w_lits.lit_code_original <> subview.lit_code_original_cible
;
INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere)
SELECT lit_code_original, lit_code, lit_code, lit_code,
t_etages.oid, chambre_particuliere
FROM w_lits
JOIN activite[PX].t_etages ON SENU = t_etages.code_original
WHERE lit_code_original_cible = lit_code_original AND
lit_code_original <> '' AND
lit_code_original NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL)
ORDER BY 2;
UPDATE w_lits
SET lit_id = t_lits.oid
FROM activite[PX].t_lits
WHERE lit_code_original_cible = t_lits.code_original
;
INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere)
SELECT code_original || '|0' , '', 'Non renseigné', 'Non renseigné', oid, 'O'
FROM activite[PX].t_etages
WHERE oid > 0 AND
code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL );
]]>
''
GROUP BY 1
) subview
WHERE BAREGROU||'-C' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code IS NOT NULL)
GROUP BY 1,2
ORDER BY BAREGROU;
INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire)
SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations);
INSERT INTO activite.t_prestations(code_original, code, texte, texte_court)
SELECT AB2OF, AB2OF, MAX(AB2LC), MAX(AB2LC)
FROM prod_chataigneraie_as400.NXXXFAC_BFAB2
WHERE AB2OF NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL)
GROUP BY 1,2
ORDER BY AB2OF;
INSERT INTO activite.t_prestations(code_original, code, texte, texte_court)
SELECT AHLOF ,AHLOF, MAX(AHLIB), MAX(AHLIB)
FROM prod_chataigneraie_as400.NXXXFAC_BFHONO
WHERE AHLOF NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL)
GROUP BY 1,2
ORDER BY AHLOF;
INSERT INTO activite.t_prestations(code_original, code, texte, texte_court)
SELECT BAREGROU ,BAREGROU, BAREGROU, BAREGROU
FROM
(
SELECT BAREGROU
FROM prod_chataigneraie_mysql.STDEV_NELFHONOC
WHERE BAREGROU IS NOT NULL AND BAREGROU <> ''
GROUP BY 1
) subview
WHERE BAREGROU NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL)
GROUP BY 1
ORDER BY BAREGROU;
INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court)
SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte);
INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court)
SELECT CPTID, CPTID, CPTID, CPTID
FROM prod_chataigneraie_as400.NXXXFAC_BFCENT
WHERE CPTID NOT IN (SELECT code FROM activite[PX].t_compte WHERE code IS NOT NULL)
GROUP BY 1
;
INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court)
SELECT CPTID, CPTID, CPTID, CPTID
FROM prod_chataigneraie_as400.NXXXFAC_BFCENT
WHERE CPTID NOT IN (SELECT code FROM activite[PX].t_compte WHERE code IS NOT NULL)
GROUP BY 1
;
]]>
'2099-12-31';
]]>
'2099-12-31';
DROP TABLE IF EXISTS w_sejours_total;
CREATE TEMP TABLE w_sejours_total AS
SELECT
p_sejours.no_sejour AS no_sejour,
p_sejours.code_sorti,
p_sejours.date_sortie,
p_sejours.date_groupage,
p_sejours.ghs_id,
MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture,
MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition,
MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde,
SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c,
SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h,
SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c,
SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h,
SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures,
SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation,
SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets,
SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c,
SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h,
SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c,
SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h,
MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0,
MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0,
SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c,
SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h,
SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c,
SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h,
MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1,
MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1,
SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c,
SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h,
SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c,
SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h,
MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2,
MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2,
SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c,
SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h,
SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c,
SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h,
MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22,
MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 ,
SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c,
SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h,
SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c,
SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h,
SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c,
SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h,
SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c,
SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h,
SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c,
SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h,
SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c,
SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour,
SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour,
0::numeric AS delai_groupage,
0::numeric AS delai_facture,
0::numeric AS delai_expedition,
0::numeric AS delai_solde,
0::numeric AS delai_expedition_0,
0::numeric AS delai_solde_0,
0::numeric AS delai_expedition_1,
0::numeric AS delai_solde_1,
0::numeric AS delai_expedition_2,
0::numeric AS delai_solde_2,
0::numeric AS delai_expedition_22,
0::numeric AS delai_solde_22
FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P'
GROUP BY 1,2,3,4,5;
UPDATE w_sejours_total
SET date_groupage = date_facture
WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND
date_facture <> '2099-12-31';
UPDATE w_sejours_total SET
date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END,
date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END,
date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END,
date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END,
date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END,
date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END,
date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END,
date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END,
date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END,
date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END,
date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END,
date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END;
UPDATE w_sejours_total SET
delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0
THEN date_groupage - date_sortie ELSE 0 END,
delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie
THEN date_facture - date_sortie ELSE 0 END,
delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31'
THEN date_expedition - date_sortie ELSE 0 END,
delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31'
THEN date_solde - date_sortie ELSE 0 END,
delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31'
THEN date_expedition_0 - date_sortie ELSE 0 END,
delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31'
THEN date_solde_0 - date_sortie ELSE 0 END,
delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31'
THEN date_expedition_1 - date_sortie ELSE 0 END,
delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31'
THEN date_solde_1 - date_sortie ELSE 0 END,
delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31'
THEN date_expedition_2 - date_sortie ELSE 0 END,
delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31'
THEN date_solde_2 - date_sortie ELSE 0 END,
delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31'
THEN date_expedition_22 - date_sortie ELSE 0 END,
delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31'
THEN date_solde_22 - date_sortie ELSE 0 END;
ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour);
UPDATE activite[PX].p_sejours SET
date_facture = w_sejours_total.date_facture,
date_expedition = w_sejours_total.date_expedition,
date_solde = w_sejours_total.date_solde,
montant_facture_c = w_sejours_total.montant_facture_c,
montant_facture_h = w_sejours_total.montant_facture_h,
montant_regle_c = w_sejours_total.montant_regle_c,
montant_regle_h = w_sejours_total.montant_regle_h,
nb_factures = w_sejours_total.nb_factures,
nb_factures_regularisation = w_sejours_total.nb_factures_regularisation,
nb_factures_rejet = w_sejours_total.nb_rejets,
montant_facture_0_c = w_sejours_total.montant_facture_0_c,
montant_facture_0_h = w_sejours_total.montant_facture_0_h,
montant_regle_0_c = w_sejours_total.montant_regle_0_c,
montant_regle_0_h = w_sejours_total.montant_regle_0_h,
date_expedition_0 = w_sejours_total.date_expedition_0,
date_solde_0 = w_sejours_total.date_solde_0,
montant_facture_1_c = w_sejours_total.montant_facture_1_c,
montant_facture_1_h = w_sejours_total.montant_facture_1_h,
montant_regle_1_c = w_sejours_total.montant_regle_1_c,
montant_regle_1_h = w_sejours_total.montant_regle_1_h,
date_expedition_1 = w_sejours_total.date_expedition_1,
date_solde_1 = w_sejours_total.date_solde_1,
montant_facture_2_c = w_sejours_total.montant_facture_2_c,
montant_facture_2_h = w_sejours_total.montant_facture_2_h,
montant_regle_2_c = w_sejours_total.montant_regle_2_c,
montant_regle_2_h = w_sejours_total.montant_regle_2_h,
date_expedition_2 = w_sejours_total.date_expedition_2,
date_solde_2 = w_sejours_total.date_solde_2,
montant_facture_22_c = w_sejours_total.montant_facture_22_c,
montant_facture_22_h = w_sejours_total.montant_facture_22_h,
montant_regle_22_c = w_sejours_total.montant_regle_22_c,
montant_regle_22_h = w_sejours_total.montant_regle_22_h,
date_expedition_22 = w_sejours_total.date_expedition_22,
date_solde_22 = w_sejours_total.date_solde_22,
montant_comptabilise_c = w_sejours_total.montant_comptabilise_c,
montant_comptabilise_h = w_sejours_total.montant_comptabilise_h,
montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c,
montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h,
montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c,
montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h,
montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c,
montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h,
montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c,
montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h,
montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c,
montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour,
montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour,
delai_groupage = w_sejours_total.delai_groupage,
delai_facture = w_sejours_total.delai_facture,
delai_expedition = w_sejours_total.delai_expedition,
delai_solde = w_sejours_total.delai_solde,
delai_expedition_0 = w_sejours_total.delai_expedition_0,
delai_solde_0 = w_sejours_total.delai_solde_0,
delai_expedition_1 = w_sejours_total.delai_expedition_1,
delai_solde_1 = w_sejours_total.delai_solde_1,
delai_expedition_2 = w_sejours_total.delai_expedition_2,
delai_solde_2 = w_sejours_total.delai_solde_2,
delai_expedition_22 = w_sejours_total.delai_expedition_22,
delai_solde_22 = w_sejours_total.delai_solde_22
FROM w_sejours_total
WHERE w_sejours_total.no_sejour = p_sejours.no_sejour
AND (
p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR
p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR
p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR
p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR
p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR
p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR
p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR
p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR
p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR
p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR
p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR
p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR
p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR
p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR
p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR
p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR
p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR
p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR
p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR
p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR
p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR
p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR
p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR
p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR
p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR
p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR
p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR
p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR
p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR
p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR
p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR
p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR
p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR
p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR
p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR
p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR
p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR
p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR
p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR
p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR
p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR
p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR
p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR
p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR
p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR
p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR
p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR
p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR
p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR
p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR
p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR
p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR
p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR
p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR
p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR
p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR
p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR
p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR
p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22
);
]]>