0 AND
MCTYPE NOT IN (95,96);
UPDATE prod_shs.[COMPTASCHEMA]F_MCP01F
SET MCSANA = PESANA
FROM prod_shs.[COMPTASCHEMA]_PEP01
WHERE MCTYPE = PETYPE AND MCCPTE = PECPTE AND
MCSANA = 0 AND PESANA <> 0 AND
MCTYPE NOT IN (95,96);
UPDATE prod_shs.[COMPTASCHEMA]I_MCP01I
SET MCSANA = PESANA
FROM prod_shs.[COMPTASCHEMA]_PEP01
WHERE MCTYPE = PETYPE AND MCCPTE = PECPTE AND
MCSANA = 0 AND PESANA <> 0 AND
MCTYPE NOT IN (95,96);
-- Ecritures exercice en cours
DROP TABLE IF EXISTS w_CCP01_next;
CREATE TEMP TABLE w_CCP01_next AS
SELECT MAX(CCANEE*100+CCMOIS + CASE WHEN CCMOIS <> 12 THEN 1 ELSE 89 END) AS CCAMTC
FROM prod_shs.[COMPTASCHEMA]_CCP01
WHERE CCMOIS <= 12 AND
CCNOR3 IN (320) ;
-- Forcage mois sur non comptabilisé
UPDATE prod_shs.[COMPTASCHEMA]_MCP01
SET MCAMTC = CASE
WHEN to_number(substr(MCDTEC,1,6),'FM999999') < CCAMTC THEN CCAMTC
ELSE to_number(substr(MCDTEC,1,6),'FM999999') END
FROM w_CCP01_next
WHERE MCPOIC <> '1' AND
MCAMTC <> CASE
WHEN to_number(substr(MCDTEC,1,6),'FM999999') < CCAMTC THEN CCAMTC
ELSE to_number(substr(MCDTEC,1,6),'FM999999') END AND
MCTYMV = 0 AND MCCANN <> 'A';
-- Forcage mois sur situation
UPDATE prod_shs.[COMPTASCHEMA]I_MCP01I
SET MCAMTC = to_number(substr(MCDTEC,1,6),'FM999999')
WHERE MCPOIC <> '1' AND
MCAMTC <> to_number(substr(MCDTEC,1,6),'FM999999') AND
MCTYMV = 0 AND MCCANN <> 'A';
-- Ecritures exercice précédent
DROP TABLE IF EXISTS w_CCP01F_next;
CREATE TEMP TABLE w_CCP01F_next AS
SELECT MAX(MCAMTC) AS CCAMTC
FROM prod_shs.[COMPTASCHEMA]F_MCP01F
WHERE MCTYMV = '0' AND MCCANN <> 'A'
;
-- Forcage mois sur non comptabilisé
UPDATE prod_shs.[COMPTASCHEMA]F_MCP01F
SET MCAMTC = CCAMTC
FROM w_CCP01F_next
WHERE MCPOIC <> '1' AND
MCAMTC <> CCAMTC AND
MCTYMV = 0 AND MCCANN <> 'A' AND (MCPOIC = '0' OR MCPOI5 = '1');
-- Mois modifiés sur compte extra
DROP TABLE IF EXISTS w_historique_ecritures_total;
CREATE TEMP TABLE w_historique_ecritures_total AS
SELECT mois_comptable,
t_comptes.numero as numero,
SUM(CASE WHEN fin_exercice <> '1' THEN montant_debit ELSE 0.00 END) as debit,
SUM(CASE WHEN fin_exercice <> '1' THEN montant_credit ELSE 0.00 END) as credit,
SUM(CASE WHEN fin_exercice = '1' THEN montant_debit ELSE 0.00 END) as debit_fin_exercice,
SUM(CASE WHEN fin_exercice = '1' THEN montant_credit ELSE 0.00 END) as credit_fin_exercice,
0.00 AS debit_situation,
0.00 AS credit_situation,
SUM(nombre_ecritures) as count
FROM compta.p_historique_ecritures_total
JOIN compta.t_comptes ON p_historique_ecritures_total.compte_extra_id = t_comptes.oid
WHERE mois_comptable >= 200801 AND ecriture_consolidee = '0' AND ajustement = '0' AND
is_budget IS DISTINCT FROM '1'
GROUP BY 1,2
ORDER BY 1,2;
DROP TABLE IF EXISTS w_ECRITURES;
CREATE TEMP TABLE w_ECRITURES AS
SELECT MCAMTC,
MCPOIC,
MCCPTE,
'0'::text AS exercice_precedent,
'0'::text AS situation,
Count(*) AS COUNT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCSENS = 'D' THEN MCMONT ELSE 0.00 END),2) AS DEBIT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCSENS = 'C' THEN MCMONT ELSE 0.00 END),2) AS CREDIT,
0.00 AS DEBIT_fin_exercice,
0.00 AS CREDIT_fin_exercice,
0.00 AS DEBIT_situation,
0.00 AS CREDIT_situation
FROM prod_shs.[COMPTASCHEMA]_MCP01
WHERE MCTYMV = '0' AND MCCANN <> 'A'
GROUP BY 1,2,3
ORDER BY 1,2;
-- Ecritures exercice précédent
INSERT INTO w_ECRITURES
SELECT MCAMTC,
MCPOIC,
MCCPTE,
'1'::text AS exercice_precedent,
'0'::text AS situation,
Count(*) AS COUNT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCPOIC = '1' AND MCSENS = 'D' THEN MCMONT ELSE 0.00 END),2) AS DEBIT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCPOIC = '1' AND MCSENS = 'C' THEN MCMONT ELSE 0.00 END),2) AS CREDIT,
round(SUM(CASE WHEN (MCPOI5 = '1' OR MCPOIC = '0') AND MCSENS = 'D' THEN MCMONT ELSE 0.00 END),2) AS DEBIT_fin_exercice,
round(SUM(CASE WHEN (MCPOI5 = '1' OR MCPOIC = '0') AND MCSENS = 'C' THEN MCMONT ELSE 0.00 END),2) AS CREDIT_fin_exercice,
0.00 AS DEBIT_situation,
0.00 AS CREDIT_situation
FROM prod_shs.[COMPTASCHEMA]F_MCP01F
WHERE MCTYMV = '0' AND MCCANN <> 'A' AND (MCPOIC = '1' OR MCPOIC = '0' OR MCPOI5 = '1')
GROUP BY 1,2,3
ORDER BY 1,2;
-- Mois modifiés (date echeancec fournisseur)
DROP TABLE IF EXISTS w_exercice_courant;
CREATE TEMP TABLE w_exercice_courant AS
SELECT substr(MAX(MCAMTC),1,4)::numeric AS exercice_comptable_courant
FROM prod_shs.[COMPTASCHEMA]_MCP01
;
DROP TABLE IF EXISTS w_echeances_fournisseurs_cti;
CREATE TEMP TABLE w_echeances_fournisseurs_cti AS
SELECT mois_comptable AS mois_comptable_cti,
to_char(date_echeance,'YYYYMMDD') AS date_cti,
count(*) AS nb_cti
FROM compta.p_historique_ecritures
JOIN w_exercice_courant ON exercice_comptable >= exercice_comptable_courant
WHERE date_echeance IS NOT NULL AND date_echeance <> '20991231'
GROUP BY 1,2
ORDER BY 1;
DROP TABLE IF EXISTS w_echeances_fournisseurs_shs;
CREATE TEMP TABLE w_echeances_fournisseurs_shs AS
SELECT MCAMTC AS mois_comptable_shs,
MCDTEH AS date_shs,
count(*) AS nb_shs
FROM prod_shs.[COMPTASCHEMA]_MCP01
WHERE MCDTEH <> 0 AND
MCTYMV = '0' AND MCCANN <> 'A'
GROUP BY 1,2
ORDER BY 1;
DROP TABLE IF EXISTS w_mois_modifies_date_echeance;
CREATE TEMP TABLE w_mois_modifies_date_echeance AS
SELECT mois_comptable_modifie_echeance
FROM
(
SELECT mois_comptable_cti AS mois_comptable_modifie_echeance
FROM w_echeances_fournisseurs_cti
LEFT JOIN w_echeances_fournisseurs_shs ON date_shs = date_cti AND mois_comptable_shs = mois_comptable_cti
WHERE nb_shs IS DISTINCT FROM nb_cti
UNION
SELECT mois_comptable_shs AS mois_comptable_modifie_echeance
FROM w_echeances_fournisseurs_shs
LEFT JOIN w_echeances_fournisseurs_cti ON date_shs = date_cti AND mois_comptable_shs = mois_comptable_cti
WHERE nb_shs IS DISTINCT FROM nb_cti
) subview
GROUP BY 1
;
-- Mois modifiés
DROP TABLE IF EXISTS w_mois_modifies;
CREATE TEMP TABLE w_mois_modifies AS
SELECT p_calendrier_mois.exercice_comptable,
w_ECRITURES.exercice_precedent,
w_ECRITURES.situation,
w_ECRITURES.MCAMTC AS mois_comptable
FROM w_ECRITURES
LEFT JOIN w_historique_ecritures_total ON
w_historique_ecritures_total.mois_comptable = w_ECRITURES.MCAMTC AND
w_historique_ecritures_total.numero = w_ECRITURES.MCCPTE
LEFT JOIN w_mois_modifies_date_echeance ON w_ECRITURES.MCAMTC = mois_comptable_modifie_echeance
JOIN base.p_calendrier_mois ON w_ECRITURES.MCAMTC = p_calendrier_mois.mois
GROUP BY 1,2,3,4
HAVING MAX(
CASE WHEN
mois_comptable_modifie_echeance IS NOT NULL OR
w_historique_ecritures_total.count IS DISTINCT FROM w_ECRITURES.count OR
w_historique_ecritures_total.debit IS DISTINCT FROM w_ECRITURES.debit OR
w_historique_ecritures_total.credit IS DISTINCT FROM w_ECRITURES.credit OR
w_historique_ecritures_total.debit_fin_exercice IS DISTINCT FROM w_ECRITURES.debit_fin_exercice OR
w_historique_ecritures_total.credit_fin_exercice IS DISTINCT FROM w_ECRITURES.credit_fin_exercice OR
w_historique_ecritures_total.debit_situation IS DISTINCT FROM w_ECRITURES.debit_situation OR
w_historique_ecritures_total.credit_situation IS DISTINCT FROM w_ECRITURES.credit_situation
THEN 1 ELSE 0 END) = 1;
ALTER TABLE w_mois_modifies ADD CONSTRAINT w_mois_modifies_pk PRIMARY KEY(mois_comptable, exercice_precedent, situation);
-- Mois modifiés sur compte général
DROP TABLE IF EXISTS w_historique_ecritures_total;
CREATE TEMP TABLE w_historique_ecritures_total AS
SELECT mois_comptable,
t_comptes.numero as numero,
SUM(CASE WHEN fin_exercice <> '1' THEN montant_debit ELSE 0.00 END) as debit,
SUM(CASE WHEN fin_exercice <> '1' THEN montant_credit ELSE 0.00 END) as credit,
SUM(CASE WHEN fin_exercice = '1' THEN montant_debit ELSE 0.00 END) as debit_fin_exercice,
SUM(CASE WHEN fin_exercice = '1' THEN montant_credit ELSE 0.00 END) as credit_fin_exercice,
0.00 AS debit_situation,
0.00 AS credit_situation,
SUM(nombre_ecritures) as count
FROM compta.p_historique_ecritures_total
JOIN compta.t_comptes ON p_historique_ecritures_total.compte_id = t_comptes.oid
WHERE mois_comptable >= 200801 AND ecriture_consolidee = '0' AND ajustement = '0' AND
is_budget IS DISTINCT FROM '1'
GROUP BY 1,2
ORDER BY 1,2;
DROP TABLE IF EXISTS w_ECRITURES;
CREATE TEMP TABLE w_ECRITURES AS
SELECT MCAMTC,
MCPOIC,
COALESCE(CLCPTE,MCCPTE) AS MCCPTE,
'0'::text AS exercice_precedent,
'0'::text AS situation,
Count(*) AS COUNT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCSENS = 'D' THEN MCMONT ELSE 0.00 END),2) AS DEBIT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCSENS = 'C' THEN MCMONT ELSE 0.00 END),2) AS CREDIT,
0.00 AS DEBIT_fin_exercice,
0.00 AS CREDIT_fin_exercice,
0.00 AS DEBIT_situation,
0.00 AS CREDIT_situation
FROM prod_shs.[COMPTASCHEMA]_MCP01
LEFT JOIN prod_shs.[COMPTASCHEMA]_CLP01 ON MCTYPE = CLTYPE AND MCSANA = CLCCOL
WHERE MCTYMV = '0' AND MCCANN <> 'A'
GROUP BY 1,2,3
ORDER BY 1,2;
-- Ecritures exercice précédent
INSERT INTO w_ECRITURES
SELECT MCAMTC,
MCPOIC,
COALESCE(CLCPTE,MCCPTE) AS MCCPTE,
'1'::text AS exercice_precedent,
'0'::text AS situation,
Count(*) AS COUNT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCPOIC = '1' AND MCSENS = 'D' THEN MCMONT ELSE 0.00 END),2) AS DEBIT,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCPOIC = '1' AND MCSENS = 'C' THEN MCMONT ELSE 0.00 END),2) AS CREDIT,
round(SUM(CASE WHEN (MCPOI5 = '1' OR MCPOIC = '0') AND MCSENS = 'D' THEN MCMONT ELSE 0.00 END),2) AS DEBIT_fin_exercice,
round(SUM(CASE WHEN (MCPOI5 = '1' OR MCPOIC = '0') AND MCSENS = 'C' THEN MCMONT ELSE 0.00 END),2) AS CREDIT_fin_exercice,
0.00 AS DEBIT_situation,
0.00 AS CREDIT_situation
FROM prod_shs.[COMPTASCHEMA]F_MCP01F
LEFT JOIN prod_shs.[COMPTASCHEMA]_CLP01 ON MCTYPE = CLTYPE AND MCSANA = CLCCOL
WHERE MCTYMV = '0' AND MCCANN <> 'A' AND (MCPOIC = '1' OR MCPOIC = '0' OR MCPOI5 = '1')
GROUP BY 1,2,3
ORDER BY 1,2;
-- Ecritures situation
INSERT INTO w_ECRITURES
SELECT MCAMTC,
MCPOIC,
COALESCE(CLCPTE,MCCPTE) AS MCCPTE,
'0'::text AS exercice_precedent,
'1'::text AS situation,
Count(*) AS COUNT,
0::numeric AS DEBIT,
0::numeric AS CREDIT,
0::numeric AS DEBIT_fin_exercice,
0::numeric AS CREDIT_fin_exercice,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCSENS = 'D' THEN MCMONT ELSE 0.00 END),2) AS DEBIT_situation,
round(SUM(CASE WHEN MCPOI5 <> '1' AND MCSENS = 'C' THEN MCMONT ELSE 0.00 END),2) AS CREDIT_situation
FROM prod_shs.[COMPTASCHEMA]I_MCP01I
LEFT JOIN prod_shs.[COMPTASCHEMA]_CLP01 ON MCTYPE = CLTYPE AND MCSANA = CLCCOL
WHERE MCTYMV = '0' AND MCCANN <> 'A' AND MCPOIC = '0'
GROUP BY 1,2,3
ORDER BY 1,2;
-- Mois modifiés
INSERT INTO w_mois_modifies
SELECT p_calendrier_mois.exercice_comptable,
w_ECRITURES.exercice_precedent,
w_ECRITURES.situation,
w_ECRITURES.MCAMTC AS mois_comptable
FROM w_ECRITURES
LEFT JOIN w_historique_ecritures_total ON
w_historique_ecritures_total.mois_comptable = w_ECRITURES.MCAMTC AND
w_historique_ecritures_total.numero = w_ECRITURES.MCCPTE
JOIN base.p_calendrier_mois ON w_ECRITURES.MCAMTC = p_calendrier_mois.mois
LEFT JOIN w_mois_modifies ON
w_ECRITURES.exercice_precedent = w_mois_modifies.exercice_precedent AND
w_ECRITURES.situation = w_mois_modifies.situation AND
w_ECRITURES.MCAMTC = w_mois_modifies.mois_comptable
WHERE w_mois_modifies.mois_comptable IS NULL
GROUP BY 1,2,3,4
HAVING MAX(CASE WHEN w_historique_ecritures_total.count IS DISTINCT FROM w_ECRITURES.count OR
w_historique_ecritures_total.debit IS DISTINCT FROM w_ECRITURES.debit OR
w_historique_ecritures_total.credit IS DISTINCT FROM w_ECRITURES.credit OR
w_historique_ecritures_total.debit_fin_exercice IS DISTINCT FROM w_ECRITURES.debit_fin_exercice OR
w_historique_ecritures_total.credit_fin_exercice IS DISTINCT FROM w_ECRITURES.credit_fin_exercice OR
w_historique_ecritures_total.debit_situation IS DISTINCT FROM w_ECRITURES.debit_situation OR
w_historique_ecritures_total.credit_situation IS DISTINCT FROM w_ECRITURES.credit_situation
THEN 1 ELSE 0 END) = 1;
CTISELECT_PROPERTY_READ 'MOISMODIFIES', COALESCE(base.cti_group_concat(mois_comptable),'0')
FROM w_mois_modifies;
CTISELECT_PROPERTY_READ 'MOISMODIFIESC', COALESCE(base.cti_group_concat(mois_comptable),'0')
FROM w_mois_modifies
WHERE exercice_precedent = '0';
CTISELECT_PROPERTY_READ 'MOISMODIFIESP', COALESCE(base.cti_group_concat(mois_comptable),'0')
FROM w_mois_modifies
WHERE exercice_precedent = '1';
CTISELECT_PROPERTY_READ 'MOISMODIFIESI', COALESCE(base.cti_group_concat(mois_comptable),'0')
FROM w_mois_modifies
WHERE situation = '1';
echo Mois modifiés Exercice en cours : [MOISMODIFIESC];
echo Mois modifiés Exercice précédent : [MOISMODIFIESP];
echo Mois modifiés Situation : [MOISMODIFIESI];
]]>
'A';
-- Ecritures consolidées
INSERT INTO compta.p_historique_ecritures
(site_id,
type_compta_id,
compte_id,
date_ecriture,
exercice_comptable,
mois_comptable,
clinique_honoraire,
journal_id,
section_analytique_id,
partenaire_id,
compte_extra_id,
comptabilisee,
fin_exercice,
ajustement,
inter_site,
cle_originale,
identifiant_operation,
compte_contrepartie_id,
texte,
date_facture_fournisseur,
piece,
dossier,
date_echeance,
journal_paiement_id,
mode_paiement_id,
numero_cheque,
ecriture_consolidee,
montant_credit,
montant_debit)
SELECT
COALESCE(t_sites.oid,0) AS site_id,
t_comptes.type_compta_id,
t_comptes.compte_general_id AS compte_id,
base.cti_to_date(to_char(MCDTEC,'FM00000000')) AS date_ecriture,
w_MCP01.exercice_comptable,
w_MCP01.mois_comptable,
CASE WHEN MCCCLH = '2' THEN 'H' ELSE 'C' END AS clinique_honoraire,
t_journaux.oid AS journal_id,
COALESCE(t_sections_analytiques.oid, 0) AS section_analytique_id,
t_comptes.partenaire_id,
t_comptes.oid AS compte_extra_id,
CASE WHEN MCPOIC = '1' THEN '1' ELSE '0' END::text AS comptabilisee,
CASE WHEN MCPOI5 = '1' THEN '1' ELSE '0' END::text AS fin_exercice,
'0'::text AS ajustement,
'0'::text AS inter_site,
to_char(exercice_comptable,'FM0000') || '-' || to_char(MCFOLI,'FM00000') || '-' || to_char(MCLIGN,'FM00') AS cle_originale,
''::text AS identifiant_operation,
COALESCE(t_comptes_contre.oid,0) AS compte_contrepartie_id,
substr(MCINT3,1,100) AS texte,
COALESCE(base.cti_to_date(to_char(MCDTFO,'FM00000000')),'20991231') AS date_facture_fournisseur,
MCPIE1 AS piece,
MCDOSA || CASE WHEN MCDCPA NOT IN ('', '00') THEN '.' || MCDCPA ELSE '' END AS dossier,
COALESCE(base.cti_to_date(to_char(MCDTEH,'FM00000000')),'20991231') AS date_echeance,
COALESCE(t_journaux_paiement.oid,0) AS journal_paiement_id,
COALESCE(t_mode_paiement.oid,0) AS mode_paiement_id,
MCNCHK AS numero_cheque,
'1' AS ecriture_consolidee,
CASE WHEN MCSENS = 'C' THEN MCMONT ELSE 0 END AS montant_credit,
CASE WHEN MCSENS = 'D' THEN MCMONT ELSE 0 END AS montant_debit
FROM w_MCP01
LEFT JOIN compta.t_sites ON t_sites.code_original = MCCETS
JOIN compta.t_journaux ON MCCJAL_A = t_journaux.code_original
LEFT JOIN compta.t_journaux t_journaux_paiement ON MCJALP_A = t_journaux_paiement.code_original
JOIN compta.t_types_compta ON MCTYPE_A = t_types_compta.code_original
JOIN compta.t_comptes ON MCCPTE = t_comptes.numero AND
t_types_compta.oid = t_comptes.type_compta_id
LEFT JOIN compta.t_types_compta t_types_compta_contre ON MCTYCP_A = t_types_compta_contre.code_original
LEFT JOIN compta.t_comptes t_comptes_contre ON MCCPCT = t_comptes_contre.numero AND
t_types_compta_contre.oid = t_comptes_contre.type_compta_id
LEFT JOIN compta.t_sections_analytiques ON MCSANA_A = t_sections_analytiques.code_original
LEFT JOIN compta.t_mode_paiement ON MCMDPA = t_mode_paiement.code_original
WHERE MCTYMV = 1 AND MCCANN <> 'A' AND MCPOIC <> '1' AND MCCJAL <> 0;
INSERT INTO compta.p_historique_ecritures
(site_id,
type_compta_id,
compte_id,
date_ecriture,
exercice_comptable,
mois_comptable,
clinique_honoraire,
journal_id,
section_analytique_id,
partenaire_id,
compte_extra_id,
comptabilisee,
fin_exercice,
ajustement,
inter_site,
cle_originale,
identifiant_operation,
compte_contrepartie_id,
texte,
date_facture_fournisseur,
piece,
dossier,
date_echeance,
journal_paiement_id,
mode_paiement_id,
numero_cheque,
ecriture_consolidee,
montant_credit,
montant_debit)
SELECT
COALESCE(t_sites.oid,0) AS site_id,
t_comptes.type_compta_id,
t_comptes.compte_general_id AS compte_id,
base.cti_to_date(to_char(MCDTEC,'FM00000000')) AS date_ecriture,
w_MCP01.exercice_comptable,
w_MCP01.mois_comptable,
CASE WHEN MCCCLH = '2' THEN 'H' ELSE 'C' END AS clinique_honoraire,
t_journaux.oid AS journal_id,
COALESCE(t_sections_analytiques.oid, 0) AS section_analytique_id,
t_comptes.partenaire_id,
t_comptes.oid AS compte_extra_id,
CASE WHEN MCPOIC = '1' THEN '1' ELSE '0' END::text AS comptabilisee,
CASE WHEN MCPOI5 = '1' THEN '1' ELSE '0' END::text AS fin_exercice,
'0'::text AS ajustement,
'0'::text AS inter_site,
to_char(exercice_comptable,'FM0000') || '-' || to_char(MCFOLI,'FM00000') || '-' || to_char(MCLIGN,'FM00') AS cle_originale,
''::text AS identifiant_operation,
COALESCE(t_comptes_contre.oid,0) AS compte_contrepartie_id,
substr(MCINT3,1,100) AS texte,
COALESCE(base.cti_to_date(to_char(MCDTFO,'FM00000000')),'20991231') AS date_facture_fournisseur,
MCPIE1 AS piece,
MCDOSA || CASE WHEN MCDCPA NOT IN ('', '00') THEN '.' || MCDCPA ELSE '' END AS dossier,
COALESCE(base.cti_to_date(to_char(MCDTEH,'FM00000000')),'20991231') AS date_echeance,
COALESCE(t_journaux_paiement.oid,0) AS journal_paiement_id,
COALESCE(t_mode_paiement.oid,0) AS mode_paiement_id,
MCNCHK AS numero_cheque,
'2' AS ecriture_consolidee,
SUM(CASE WHEN MCSENS = 'D' THEN MCMONT ELSE 0 END) AS montant_credit,
SUM(CASE WHEN MCSENS = 'C' THEN MCMONT ELSE 0 END) AS montant_debit
FROM w_MCP01
LEFT JOIN compta.t_sites ON t_sites.code_original = MCCETS
JOIN compta.t_journaux ON MCCJAL_A = t_journaux.code_original
LEFT JOIN compta.t_journaux t_journaux_paiement ON MCJALP_A = t_journaux_paiement.code_original
JOIN compta.t_types_compta ON MCTYPE_A = t_types_compta.code_original
JOIN compta.t_comptes ON MCCPTE = t_comptes.numero AND
t_types_compta.oid = t_comptes.type_compta_id
LEFT JOIN compta.t_types_compta t_types_compta_contre ON MCTYCP_A = t_types_compta_contre.code_original
LEFT JOIN compta.t_comptes t_comptes_contre ON MCCPCT = t_comptes_contre.numero AND
t_types_compta_contre.oid = t_comptes_contre.type_compta_id
LEFT JOIN compta.t_sections_analytiques ON MCSANA_A = t_sections_analytiques.code_original
LEFT JOIN compta.t_mode_paiement ON MCMDPA = t_mode_paiement.code_original
WHERE MCTYMV = 1 AND MCCANN <> 'A' AND MCPOIC <> '1' AND MCCJAL <> 0
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
HAVING
(
SUM(CASE WHEN MCSENS = 'D' THEN MCMONT ELSE 0 END) <> 0 OR
SUM(CASE WHEN MCSENS = 'C' THEN MCMONT ELSE 0 END) <> 0
);
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_1');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_2');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_3');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_4');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_5');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_6');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_7');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_8');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_9');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_10');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_11');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_12');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_13');
]]>
'A';
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_1');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_2');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_3');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_4');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_5');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_6');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_7');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_8');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_9');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_10');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_11');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_12');
SELECT base.cti_enable_index('compta', 'i_historique_ecritures_13');
]]>
'A' AND MCPOIC = '0'
;
INSERT INTO compta.p_historique_ecritures
(site_id,
type_compta_id,
compte_id,
date_ecriture,
exercice_comptable,
mois_comptable,
clinique_honoraire,
journal_id,
section_analytique_id,
partenaire_id,
compte_extra_id,
comptabilisee,
fin_exercice,
ajustement,
inter_site,
cle_originale,
identifiant_operation,
compte_contrepartie_id,
texte,
date_facture_fournisseur,
piece,
dossier,
date_echeance,
journal_paiement_id,
mode_paiement_id,
numero_cheque,
montant_credit,
montant_debit)
SELECT
COALESCE(t_sites.oid,0) AS site_id,
t_comptes.type_compta_id,
t_comptes.oid AS compte_id,
base.cti_to_date(to_char(MCDTEC,'FM00000000')) AS date_ecriture,
w_MCP01.exercice_comptable,
w_MCP01.mois_comptable,
CASE WHEN MCCCLH = '2' THEN 'H' ELSE 'C' END AS clinique_honoraire,
t_journaux.oid AS journal_id,
COALESCE(t_sections_analytiques.oid, 0) AS section_analytique_id,
t_comptes_extra.partenaire_id,
t_comptes_extra.oid AS compte_extra_id,
CASE WHEN MCPOIC = '1' THEN '1' ELSE '0' END::text AS comptabilisee,
'0'::text AS fin_exercice,
'2'::text AS ajustement,
'0'::text AS inter_site,
to_char(exercice_comptable,'FM0000') || '-' || to_char(MCFOLI,'FM00000') || '-' || to_char(MCLIGN,'FM00') AS cle_originale,
''::text AS identifiant_operation,
COALESCE(t_comptes_contre.oid,0) AS compte_contrepartie_id,
substr(MCINT3,1,100) AS texte,
COALESCE(base.cti_to_date(to_char(MCDTFO,'FM00000000')),'20991231') AS date_facture_fournisseur,
MCPIE1 AS piece,
MCDOSA || CASE WHEN MCDCPA NOT IN ('', '00') THEN '.' || MCDCPA ELSE '' END AS dossier,
COALESCE(base.cti_to_date(to_char(MCDTEH,'FM00000000')),'20991231') AS date_echeance,
COALESCE(t_journaux_paiement.oid,0) AS journal_paiement_id,
COALESCE(t_mode_paiement.oid,0) AS mode_paiement_id,
MCNCHK AS numero_cheque,
CASE WHEN MCSENS = 'C' THEN MCMONT ELSE 0 END AS montant_credit,
CASE WHEN MCSENS = 'D' THEN MCMONT ELSE 0 END AS montant_debit
FROM w_MCP01
JOIN compta.t_journaux ON MCCJAL_A = t_journaux.code_original
JOIN compta.t_types_compta t_types_compta_extra ON MCTYPE_A = t_types_compta_extra.code_original
JOIN compta.t_comptes t_comptes_extra ON MCCPTE = t_comptes_extra.numero AND
t_types_compta_extra.oid = t_comptes_extra.type_compta_id
JOIN compta.t_types_compta ON CLTYPG_A = t_types_compta.code_original
JOIN compta.t_comptes ON CLCPTE = t_comptes.numero AND
t_types_compta.oid = t_comptes.type_compta_id
LEFT JOIN compta.t_sites ON t_sites.code_original = MCCETS
LEFT JOIN compta.t_journaux t_journaux_paiement ON MCJALP_A = t_journaux_paiement.code_original
LEFT JOIN compta.t_types_compta t_types_compta_contre ON MCTYCP_A = t_types_compta_contre.code_original
LEFT JOIN compta.t_comptes t_comptes_contre ON MCCPCT = t_comptes_contre.numero AND
t_types_compta_contre.oid = t_comptes_contre.type_compta_id
LEFT JOIN compta.t_sections_analytiques ON MCSANA_A = t_sections_analytiques.code_original
LEFT JOIN compta.t_mode_paiement ON MCMDPA = t_mode_paiement.code_original
WHERE MCTYMV = 0 AND MCCANN <> 'A';
]]>
= 2015 AND t_comptes_c_extra.type_compta_code='40'
;
TRUNCATE compta.p_ecriture_fournisseur;
INSERT INTO compta.p_ecriture_fournisseur
(
compte_id,
date_ecriture,
mois_comptable,
montant_credit,
montant_debit,
journal_id,
section_analytique_id,
clinique_honoraire,
exercice_comptable,
type_compta_id,
compte_extra_id,
comptabilisee,
fin_exercice,
ajustement,
cle_originale,
compte_contrepartie_id,
texte,
date_facture_fournisseur,
piece,
dossier,
date_echeance,
journal_paiement_id,
mode_paiement_id,
numero_cheque,
site_id,
partenaire_id,
inter_site,
identifiant_operation,
ecriture_consolidee,
facture_soldee,
ecriture_exclue
)
SELECT
compte_id,
date_ecriture,
mois_comptable,
montant_credit,
montant_debit,
journal_id,
section_analytique_id,
p_historique_ecritures.clinique_honoraire,
exercice_comptable,
p_historique_ecritures.type_compta_id,
compte_extra_id,
comptabilisee,
fin_exercice,
ajustement,
cle_originale,
compte_contrepartie_id,
p_historique_ecritures.texte,
date_facture_fournisseur,
piece,
dossier,
date_echeance,
journal_paiement_id,
mode_paiement_id,
numero_cheque,
site_id,
partenaire_id,
inter_site,
identifiant_operation,
ecriture_consolidee,
'0'::text AS facture_soldee,
'0'::text AS ecriture_exclue
FROM compta.p_historique_ecritures
JOIN w_exercice_fournisseur ON exercice_comptable >= exercice_comptable_fournisseur
JOIN compta.t_comptes_c t_comptes_c_extra ON p_historique_ecritures.compte_extra_id = t_comptes_c_extra.oid AND
t_comptes_c_extra.type_compta_code='40'
;
UPDATE compta.p_ecriture_fournisseur
SET facture_soldee = '1'
FROM
(
SELECT
compte_extra_id
FROM compta.p_ecriture_fournisseur
GROUP BY 1
HAVING SUM(montant_credit) = SUM(montant_debit)
) subview
WHERE compta.p_ecriture_fournisseur.compte_extra_id = subview.compte_extra_id
;
UPDATE compta.p_ecriture_fournisseur
SET facture_soldee = '1'
FROM
(
SELECT
compte_extra_id,
piece
FROM compta.p_ecriture_fournisseur
WHERE facture_soldee = '0'
GROUP BY 1,2
HAVING SUM(montant_credit) = SUM(montant_debit)
) subview
WHERE compta.p_ecriture_fournisseur.compte_extra_id = subview.compte_extra_id AND
compta.p_ecriture_fournisseur.piece = subview.piece AND
facture_soldee = '0'
;
UPDATE compta.p_ecriture_fournisseur
SET facture_soldee = '1'
FROM
(
SELECT
compte_extra_id,
piece,
journal_id
FROM compta.p_ecriture_fournisseur
WHERE facture_soldee = '0'
GROUP BY 1,2,3
HAVING SUM(montant_credit) = SUM(montant_debit)
) subview
WHERE compta.p_ecriture_fournisseur.compte_extra_id = subview.compte_extra_id AND
compta.p_ecriture_fournisseur.piece = subview.piece AND
compta.p_ecriture_fournisseur.journal_id = subview.journal_id AND
compta.p_ecriture_fournisseur.facture_soldee = '0'
;
UPDATE compta.p_ecriture_fournisseur
SET facture_soldee = '1'
FROM
(
SELECT
compte_extra_id,
journal_id
FROM compta.p_ecriture_fournisseur
WHERE facture_soldee = '0'
GROUP BY 1,2
HAVING SUM(montant_credit) = SUM(montant_debit)
) subview
WHERE compta.p_ecriture_fournisseur.compte_extra_id = subview.compte_extra_id AND
compta.p_ecriture_fournisseur.journal_id = subview.journal_id AND
compta.p_ecriture_fournisseur.facture_soldee = '0'
;
UPDATE compta.p_ecriture_fournisseur
SET facture_soldee = '1'
FROM
(
SELECT
compte_extra_id,
dossier,
journal_id
FROM compta.p_ecriture_fournisseur
WHERE facture_soldee = '0'
GROUP BY 1,2,3
HAVING SUM(montant_credit) = SUM(montant_debit)
) subview
WHERE compta.p_ecriture_fournisseur.compte_extra_id = subview.compte_extra_id AND
compta.p_ecriture_fournisseur.journal_id = subview.journal_id AND
compta.p_ecriture_fournisseur.facture_soldee = '0'
;
UPDATE compta.p_ecriture_fournisseur
SET ecriture_exclue = '1'
WHERE facture_soldee = '0' AND
piece <> '';
UPDATE compta.p_ecriture_fournisseur
SET ecriture_exclue = '1'
WHERE facture_soldee = '0' AND
ecriture_exclue = '0' AND
(date_echeance = '20991231' OR date_facture_fournisseur = '20991231');
]]>
13 THEN CCANEE*100+CCMOIS ELSE dernier_mois END AS mois_comptable,
0::bigint AS site_id,
'C'::text AS clinique_honoraire,
SUM(CCMLCL) AS montant_debit,
SUM(CCMLCL) AS montant_credit
FROM prod_shs.[COMPTASCHEMA]_CCP01
JOIN w_exercice ON exercice_comptable = CCANEE
WHERE CCCMON = 'E' AND
CCMOIS <> 99 AND
CCNOR3 IN (320) AND
CCMLCL <> 0
GROUP BY 1,2,3
ORDER BY 1;
INSERT INTO compta.p_chiffrier_comptable
(
mois_comptable,
site_id,
clinique_honoraire,
montant_debit,
montant_credit
)
SELECT CASE WHEN CCMOIS <> 13 THEN CCANEE*100+CCMOIS ELSE dernier_mois END AS mois_comptable,
0::bigint AS site_id,
'H'::text AS clinique_honoraire,
SUM(CCMLHO) AS montant_debit,
SUM(CCMLHO) AS montant_credit
FROM prod_shs.[COMPTASCHEMA]_CCP01
JOIN w_exercice ON exercice_comptable = CCANEE
WHERE CCCMON = 'E' AND
CCMOIS <> 99 AND
CCNOR3 IN (320) AND
CCMLHO <> 0
GROUP BY 1,2,3
ORDER BY 1;
UPDATE compta.p_chiffrier_comptable
SET site_id = (SELECT MAX(site_id) FROM compta.p_historique_ecritures)
WHERE site_id = 0;
]]>
= subview.exercice_mois_comptable_1 AND subview.exercice_mois_comptable_1 > 1 THEN 1
ELSE 0 END AS exercice_comptable
FROM base.p_calendrier_mois
JOIN (
SELECT
MCAMTC_deb,
MCAMTC_fin,
to_number(substr(MCAMTC_fin,1,4),'FM0000') AS exercice_comptable,
to_number(substr(MCAMTC_deb,5,2),'FM00') AS exercice_mois_comptable_1
FROM
(
SELECT
MIN(MCAMTC) AS MCAMTC_deb,
MIN(MCAMTC) + 99 AS MCAMTC_fin
FROM prod_shs.[COMPTASCHEMA]_MCP01
WHERE MCPOIC = '1' AND MCTYMV = 0 AND MCCANN <> 'A'
) subview
) subview ON 1 = 1
) subview
WHERE p_calendrier_mois.mois = subview.mois AND
p_calendrier_mois.exercice_comptable IS DISTINCT FROM subview.exercice_comptable;
UPDATE base.p_calendrier_mois SET
exercice_comptable = subview.exercice_comptable
FROM (
SELECT
p_calendrier_mois.mois,
p_calendrier_mois.date_debut,
date_part('year',p_calendrier_mois.date_debut) + CASE
WHEN to_number(substr(p_calendrier_mois.mois,5,2),'FM00') >= subview.exercice_mois_comptable_1 AND subview.exercice_mois_comptable_1 > 1 THEN 1
ELSE 0 END AS exercice_comptable
FROM base.p_calendrier_mois
JOIN (
SELECT
MCAMTC_deb,
MCAMTC_fin,
to_number(substr(MCAMTC_fin,1,4),'FM0000') AS exercice_comptable,
to_number(substr(MCAMTC_deb,5,2),'FM00') AS exercice_mois_comptable_1
FROM
(
SELECT
MIN(MCAMTC) AS MCAMTC_deb,
MIN(MCAMTC) + 99 AS MCAMTC_fin
FROM prod_shs.[COMPTASCHEMA]F_MCP01F
WHERE MCPOIC = '1' AND MCTYMV = 0 AND MCCANN <> 'A'
) subview
) subview ON 1 = 1
) subview
WHERE p_calendrier_mois.mois = subview.mois AND
p_calendrier_mois.exercice_comptable IS DISTINCT FROM subview.exercice_comptable;
UPDATE base.p_calendrier_mois
SET exercice_mois_comptable_1 = subview.exercice_mois_comptable_1
FROM
(
SELECT exercice_comptable,
MIN(mois) AS exercice_mois_comptable_1
FROM base.p_calendrier_mois
GROUP BY 1
) subview
WHERE p_calendrier_mois.exercice_comptable = subview.exercice_comptable AND
p_calendrier_mois.exercice_mois_comptable_1 IS DISTINCT FROM subview.exercice_mois_comptable_1;
-- Site = Etablissement
INSERT INTO compta.t_sites(oid, code, texte, clinique_honoraire, code_original)
SELECT 0, chr(127) || '***', 'Non renseigné', 'C', '' WHERE 0 NOT IN (SELECT oid FROM compta.t_sites);
;
INSERT INTO compta.t_sites(code, code_original, texte)
SELECT ETCETS, ETCETS, ETRSOC
FROM prod_shs.[COMPTASCHEMA]_ETP01
WHERE ETCETS NOT IN (SELECT code_original FROM compta.t_sites WHERE code_original IS NOT NULL) AND
ETCETS IN (SELECT MCCETS FROM prod_shs.[COMPTASCHEMA]_MCP01)
ORDER BY 1;
-- Types de compte
INSERT INTO compta.t_types_compta(code, code_original, texte, specialite)
SELECT
CASE TYTYPE
WHEN 95 THEN 'BILAN'
WHEN 96 THEN 'GESTION'
WHEN 97 THEN 'RESULTAT'
ELSE to_char(TYTYPE,'FM00') END,
to_char(TYTYPE,'FM00'),
TYINT4,
CASE TYTYPE
WHEN 40 THEN 'FOU'
WHEN 42 THEN 'CLI'
WHEN 43 THEN 'CLI'
WHEN 46 THEN 'HON'
WHEN 47 THEN 'HON'
WHEN 48 THEN 'HON'
WHEN 91 THEN 'CLI'
WHEN 92 THEN 'CLI'
WHEN 95 THEN 'BIL'
WHEN 96 THEN 'GES'
WHEN 97 THEN 'RES'
ELSE '' END
FROM prod_shs.[COMPTASCHEMA]_TYP01
WHERE to_char(TYTYPE,'FM00') NOT IN (SELECT code_original FROM compta.t_types_compta WHERE code_original IS NOT NULL)
;
-- Inexistants dans table des types
INSERT INTO compta.t_types_compta(code, code_original, texte, specialite)
SELECT
CASE PETYPE
WHEN 95 THEN 'BILAN'
WHEN 96 THEN 'GESTION'
WHEN 97 THEN 'RESULTAT'
ELSE to_char(PETYPE,'FM00') END,
to_char(PETYPE,'FM00'),
'Type ' || to_char(PETYPE,'FM00'),
CASE PETYPE
WHEN 40 THEN 'FOU'
WHEN 42 THEN 'CLI'
WHEN 43 THEN 'CLI'
WHEN 46 THEN 'HON'
WHEN 47 THEN 'HON'
WHEN 48 THEN 'HON'
WHEN 91 THEN 'CLI'
WHEN 92 THEN 'CLI'
WHEN 95 THEN 'BIL'
WHEN 96 THEN 'GES'
WHEN 97 THEN 'RES'
ELSE '' END
FROM prod_shs.[COMPTASCHEMA]_PEP01
WHERE to_char(PETYPE,'FM00') NOT IN (SELECT code_original FROM compta.t_types_compta WHERE code_original IS NOT NULL)
GROUP BY PETYPE
;
-- Inexistants dans table des types (13eme compta)
INSERT INTO compta.t_types_compta(code, code_original, texte, specialite)
SELECT
CASE PETYPE
WHEN 95 THEN 'BILAN'
WHEN 96 THEN 'GESTION'
WHEN 97 THEN 'RESULTAT'
ELSE to_char(PETYPE,'FM00') END,
to_char(PETYPE,'FM00'),
'Type ' || to_char(PETYPE,'FM00'),
CASE PETYPE
WHEN 40 THEN 'FOU'
WHEN 42 THEN 'CLI'
WHEN 43 THEN 'CLI'
WHEN 46 THEN 'HON'
WHEN 47 THEN 'HON'
WHEN 48 THEN 'HON'
WHEN 91 THEN 'CLI'
WHEN 92 THEN 'CLI'
WHEN 95 THEN 'BIL'
WHEN 96 THEN 'GES'
WHEN 97 THEN 'RES'
ELSE '' END
FROM prod_shs.[COMPTASCHEMA]F_PEP01F
WHERE to_char(PETYPE,'FM00') NOT IN (SELECT code_original FROM compta.t_types_compta WHERE code_original IS NOT NULL)
GROUP BY PETYPE
;
-- Sections analytiques
INSERT INTO compta.t_sections_analytiques(oid, code, code_original, texte)
SELECT 0, '0000', '', 'Non renseignée'
WHERE 0 NOT IN (SELECT oid FROM compta.t_sections_analytiques);
INSERT INTO compta.t_sections_analytiques(code, code_original, texte)
SELECT to_char(ANSANA,'FM0000'), to_char(ANSANA,'FM0000'), ANINT3
FROM prod_shs.[COMPTASCHEMA]_ANP01
WHERE to_char(ANSANA,'FM0000') NOT IN (SELECT code_original FROM compta.t_sections_analytiques WHERE code_original IS NOT NULL)
ORDER BY 1;
-- Journaux
INSERT INTO compta.t_journaux(code, code_original, texte, a_nouveaux, clinique_honoraire)
SELECT to_char(JLCJAL,'FM000'), to_char(JLCJAL,'FM000'), JLINT7, CASE WHEN JLCJAL < 10 THEN '1' ELSE '0' END, CASE WHEN JLQSEP = '2' THEN 'H' ELSE 'C' END
FROM prod_shs.[COMPTASCHEMA]_JLP01
WHERE to_char(JLCJAL,'FM000') NOT IN (SELECT code_original FROM compta.t_journaux WHERE code_original IS NOT NULL)
ORDER BY 1;
-- Mode de paiement
INSERT INTO compta.t_mode_paiement(oid, code, code_original, texte)
SELECT 0, '**', '**', 'Non renseigné'
WHERE 0 NOT IN (SELECT oid FROM compta.t_mode_paiement);
INSERT INTO compta.t_mode_paiement(code, code_original, texte)
SELECT MPMDPA, MPMDPA, MAX(MPINTS)
FROM prod_shs.[COMPTASCHEMA]_MPP01
WHERE MPMDPA <> '' AND
MPMDPA NOT IN (SELECT code_original FROM compta.t_mode_paiement WHERE code_original IS NOT NULL)
GROUP BY 1,2
ORDER BY 1;
-- Classes de comptes
INSERT INTO compta.t_classes_comptes(code, texte)
SELECT PGCLAS, PGINT3
FROM prod_shs.[COMPTASCHEMA]_PGP01
WHERE PGCLAS NOT IN (SELECT code FROM compta.t_classes_comptes WHERE code IS NOT NULL)
ORDER BY 1;
UPDATE compta.t_classes_comptes
SET texte = PGINT3
FROM prod_shs.[COMPTASCHEMA]_PGP01
WHERE PGCLAS = code AND
texte IS DISTINCT FROM PGINT3;
-- Comptes
DROP TABLE IF EXISTS w_PEP01;
CREATE TEMP TABLE w_PEP01 AS
SELECT PETYPE,
0::bigint AS type_compta_id,
to_char(PECPTE,'FM00000000') AS PECPTE,
PEINT3,
PECCLH,
CASE WHEN PETYPE IN (95,96,97) THEN to_char(PESANA,'FM0000') ELSE '0000' END AS PESANA,
CASE WHEN PETYPE NOT IN (95,96,97) THEN COALESCE(CLTYPG,95) ELSE PETYPE END AS PETYPE_GENE,
0::bigint AS type_compta_gene_id,
CASE WHEN PETYPE NOT IN (95,96,97) THEN to_char(COALESCE(CLCPTE,PECPTE),'FM00000000') ELSE to_char(PECPTE,'FM00000000') END AS PECPTE_GENE
FROM prod_shs.[COMPTASCHEMA]_PEP01
LEFT JOIN prod_shs.[COMPTASCHEMA]_CLP01 ON
PETYPE = CLTYPE AND
PESANA = CLCCOL;
INSERT INTO w_PEP01
SELECT PETYPE,
0::bigint AS type_compta_id,
to_char(PECPTE,'FM00000000') AS PECPTE,
PEINT3,
PECCLH,
CASE WHEN PETYPE IN (95,96,97) THEN to_char(PESANA,'FM0000') ELSE '0000' END AS PESANA,
CASE WHEN PETYPE NOT IN (95,96,97) THEN COALESCE(CLTYPG,95) ELSE PETYPE END AS PETYPE_GENE,
0::bigint AS type_compta_gene_id,
CASE WHEN PETYPE NOT IN (95,96,97) THEN to_char(COALESCE(CLCPTE,PECPTE),'FM00000000') ELSE to_char(PECPTE,'FM00000000') END AS PECPTE_GENE
FROM prod_shs.[COMPTASCHEMA]F_PEP01F
LEFT JOIN prod_shs.[COMPTASCHEMA]_CLP01 ON
PETYPE = CLTYPE AND
PESANA = CLCCOL
WHERE PETYPE||to_char(PECPTE,'FM00000000') NOT IN
(SELECT PETYPE||PECPTE FROM w_PEP01);
-- Comptes généraux non saisis (venant de CLP01)
INSERT INTO w_PEP01
SELECT PETYPE_GENE,
0::bigint AS type_compta_gene_id,
PECPTE_GENE,
PEINT3,
PECCLH,
PESANA,
PETYPE_GENE,
0::bigint AS type_compta_gene_id,
PECPTE_GENE
FROM w_PEP01
WHERE PETYPE_GENE||PECPTE_GENE NOT IN
(SELECT PETYPE||PECPTE FROM w_PEP01);
-- Adaptation texte avec *
UPDATE w_PEP01
SET PEINT3 = substr(PEINT3, 1, 23)
WHERE substr(PEINT3, 24, 7) = '*';
UPDATE w_PEP01
SET PEINT3 = substr(PEINT3, 1, 22)
WHERE substr(PEINT3, 23, 8) = '*';
-- Affectation types de compta
UPDATE w_PEP01
SET type_compta_id = t_types_compta.oid
FROM compta.t_types_compta
WHERE t_types_compta.code_original = to_char(PETYPE,'FM00');
UPDATE w_PEP01
SET type_compta_gene_id = t_types_compta.oid
FROM compta.t_types_compta
WHERE t_types_compta.code_original = to_char(PETYPE_GENE,'FM00');
UPDATE compta.t_comptes SET
texte = PEINT3
FROM w_PEP01
WHERE t_comptes.type_compta_id = w_PEP01.type_compta_id AND
t_comptes.numero = w_PEP01.PECPTE AND
texte IS DISTINCT FROM PEINT3;
-- Ajout des nouveaux comptes
INSERT INTO compta.t_comptes(
type_compta_id, numero, texte, compte_general_id, clinique_honoraire,
banque, collectif, type_compta_extra_id, numero_extra, partenaire_id)
SELECT
w_PEP01.type_compta_id,
PECPTE AS numero,
PEINT3 AS texte,
0 AS compte_general_id,
CASE WHEN PECCLH = '2' THEN 'H' ELSE 'C' END AS clinique_honoraire,
CASE WHEN PECPTE LIKE '512%' THEN '1' ELSE '0' END AS banque,
'0' AS collectif,
0 AS type_compta_extra_id,
'' AS numero_extra,
0::bigint AS partenaire_id
FROM w_PEP01
LEFT JOIN compta.t_comptes ON
w_PEP01.type_compta_id = t_comptes.type_compta_id AND
PECPTE = t_comptes.numero
WHERE t_comptes.oid IS NULL
ORDER BY 2;
-- Comptes généraux des extra comptable
UPDATE compta.t_comptes SET
compte_general_id = t_comptes_c.oid,
collectif = CASE WHEN t_comptes.oid = t_comptes_c.oid THEN '1' ELSE '0' END
FROM w_PEP01
JOIN compta.t_comptes t_comptes_c ON type_compta_gene_id = t_comptes_c.type_compta_id AND
PECPTE_GENE = t_comptes_c.numero
WHERE w_PEP01.PECPTE = t_comptes.numero AND
w_PEP01.type_compta_id = t_comptes.type_compta_id AND
(
t_comptes.compte_general_id IS DISTINCT FROM t_comptes_c.oid OR
t_comptes.collectif IS DISTINCT FROM (CASE WHEN t_comptes.oid = t_comptes_c.oid THEN '1' ELSE '0' END)
);
-- Partenaires
INSERT INTO compta.t_partenaires(oid, code, code_original, texte, texte_court)
SELECT 0, chr(127) || '***', '', 'Non renseigné', 'Non renseigné'
WHERE 0 NOT IN (SELECT oid FROM compta.t_partenaires);
INSERT INTO compta.t_partenaires (code, code_original, texte, texte_court)
SELECT code, code, texte, texte FROM
(
SELECT 'C' || substr(numero, 5, 5) as code, MAX(texte) as texte
FROM compta.t_comptes
WHERE type_compta_id IN (select oid FROM compta.t_types_compta where code IN ('42', '43', '91', '92') ) GROUP BY 1
UNION
SELECT 'F' || substr(numero, 4, 5) as code, MAX(texte) as texte
FROM compta.t_comptes
WHERE type_compta_id IN (select oid FROM compta.t_types_compta where code IN ('40') ) GROUP BY 1
UNION
SELECT 'M' || substr(numero, 5, 5) as code, MAX(texte) as texte
FROM compta.t_comptes
WHERE type_compta_id IN (select oid FROM compta.t_types_compta where code IN ('46', '47', '48') ) GROUP BY 1
) subview
WHERE subview.code NOT IN (select code_original FROM compta.t_partenaires WHERE code_original IS NOT NULL);
UPDATE compta.t_comptes SET partenaire_id = t_partenaires.oid
FROM compta.t_partenaires
WHERE type_compta_id IN (select oid FROM compta.t_types_compta where code IN ('42', '43', '91', '92') )
AND t_partenaires.code_original = 'C' || substr(t_comptes.numero, 5, 5)
AND (partenaire_id <> t_partenaires.oid OR partenaire_id IS NULL);
UPDATE compta.t_comptes SET partenaire_id = t_partenaires.oid
FROM compta.t_partenaires
WHERE type_compta_id IN (select oid FROM compta.t_types_compta where code IN ('40') )
AND t_partenaires.code_original = 'F' || substr(t_comptes.numero, 4, 5)
AND (partenaire_id <> t_partenaires.oid OR partenaire_id IS NULL);
UPDATE compta.t_comptes SET partenaire_id = t_partenaires.oid
FROM compta.t_partenaires
WHERE type_compta_id IN (select oid FROM compta.t_types_compta where code IN ('46', '47', '48') )
AND t_partenaires.code_original = 'M' || substr(t_comptes.numero, 5, 5)
AND (partenaire_id <> t_partenaires.oid OR partenaire_id IS NULL);
UPDATE compta.t_comptes SET partenaire_id = 0 WHERE partenaire_id IS NULL;
]]>