= 200801 AND ajustement = '0' AND
is_budget IS DISTINCT FROM '1'
GROUP BY 1,2
ORDER BY 1,2;
-- Ecritures prestataire
DROP TABLE IF EXISTS w_TECRITURE;
CREATE TEMP TABLE w_TECRITURE AS
SELECT
date_part('year',DATEDEBUT) * 100 + date_part('month',DATEDEBUT) AS mois_comptable,
COALESCE(w_TCOMPTEAUXILIAIRE.CODECOMPTEAUXILIAIRE,TCOMPTEGENERAL.CODECOMPTE) AS CODECOMPTE,
date_part('year',DATEDEBUT) AS exercice_comptable,
date(MIN(DATEDEBUT)) AS DATEDEBUT,
date(MAX(DATEFIN)) AS DATEFIN,
Count(*) AS COUNT,
round(SUM(DEBIT),2) AS DEBIT,
round(SUM(CREDIT),2) AS CREDIT
FROM prod_sage100compta.TECRITURE
JOIN prod_sage100compta.TPIECE ON OIDPIECE = TPIECE.OID
JOIN prod_sage100compta.TPERIODE ON OIDPERIODE = TPERIODE.OID
JOIN prod_sage100compta.TCOMPTEGENERAL ON OIDCOMPTEGENERAL = TCOMPTEGENERAL.OID
LEFT JOIN w_TCOMPTEAUXILIAIRE ON TECRITURE.OIDCOMPTEGENERAL = w_TCOMPTEAUXILIAIRE.OIDCOMPTEGENERAL AND
TECRITURE.OIDROLETIERS = w_TCOMPTEAUXILIAIRE.OIDROLETIERS
WHERE typeecriture <> 0
GROUP BY 1,2,3
ORDER BY 1,2,3;
DROP TABLE IF EXISTS w_mois_modifies;
CREATE TEMP TABLE w_mois_modifies AS
SELECT w_TECRITURE.exercice_comptable,
w_TECRITURE.mois_comptable,
MIN(DATEDEBUT) AS DATEDEBUT,
MAX(DATEFIN) AS DATEFIN
FROM w_TECRITURE
LEFT JOIN w_historique_ecritures_total ON
w_historique_ecritures_total.mois_comptable = w_TECRITURE.mois_comptable AND
w_historique_ecritures_total.numero = w_TECRITURE.CODECOMPTE
GROUP BY 1,2
HAVING MAX(CASE WHEN w_historique_ecritures_total.count IS DISTINCT FROM w_TECRITURE.count OR
w_historique_ecritures_total.debit IS DISTINCT FROM w_TECRITURE.debit OR
w_historique_ecritures_total.credit IS DISTINCT FROM w_TECRITURE.credit
THEN 1 ELSE 0 END) = 1;
ALTER TABLE w_mois_modifies ADD CONSTRAINT w_mois_modifies_pk PRIMARY KEY(mois_comptable);
CTISELECT_PROPERTY_READ 'MOISMODIFIES', COALESCE(base.cti_group_concat(mois_comptable),'0')
FROM w_mois_modifies;
echo Mois modifiés : [MOISMODIFIES];
]]>
0 AND TPIECE.NATUREPIECE = 1 AND TPIECE.REFERENCE LIKE '%ture%'
ORDER BY TECRITURE.OID
;
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');
]]>
'C'
AND site_id IN (SELECT oid FROM compta.t_sites WHERE clinique_honoraire <> 'H');
UPDATE compta.p_historique_ecritures
SET clinique_honoraire = 'H'
FROM compta.t_sites
WHERE p_historique_ecritures.site_id = t_sites.oid
AND p_historique_ecritures.clinique_honoraire <> 'H'
AND site_id IN (SELECT oid FROM compta.t_sites WHERE clinique_honoraire = 'H');
UPDATE compta.p_historique_ecritures
SET compte_id = t_comptes.compte_general_id
FROM compta.t_comptes
WHERE comptabilisee <> '1'
AND compte_id = t_comptes.oid
AND t_comptes.oid <> t_comptes.compte_general_id
AND compte_id = compte_extra_id;
-- Précision cli/hon (cli prioritaire)
UPDATE compta.t_comptes
SET clinique_honoraire = subview.clinique_honoraire
FROM
(
SELECT
compte_id AS compte_id,
MIN(CASE WHEN p_historique_ecritures.clinique_honoraire = 'H' THEN 'H' ELSE 'C' END) AS clinique_honoraire
FROM compta.p_historique_ecritures
JOIN compta.t_comptes ON compte_id = t_comptes.oid
GROUP BY 1
) subview
WHERE t_comptes.oid = subview.compte_id AND
t_comptes.clinique_honoraire <> subview.clinique_honoraire;
UPDATE compta.t_comptes
SET clinique_honoraire = subview.clinique_honoraire
FROM
(
SELECT
t_comptes.oid AS compte_id, t_comptes.numero,
MIN(CASE WHEN p_historique_ecritures.clinique_honoraire = 'H' THEN 'H' ELSE 'C' END) AS clinique_honoraire
FROM compta.p_historique_ecritures
JOIN compta.t_comptes ON compte_extra_id = t_comptes.oid
GROUP BY 1,2
) subview
WHERE t_comptes.oid = subview.compte_id AND
t_comptes.clinique_honoraire <> subview.clinique_honoraire;
UPDATE compta.t_journaux
SET clinique_honoraire = subview.clinique_honoraire
FROM
(
SELECT
journal_id,
MIN(CASE WHEN p_historique_ecritures.clinique_honoraire = 'H' THEN 'H' ELSE 'C' END) AS clinique_honoraire
FROM compta.p_historique_ecritures
GROUP BY 1
) subview
WHERE t_journaux.oid = subview.journal_id AND
t_journaux.clinique_honoraire <> subview.clinique_honoraire;
]]>
'' AND
CODE NOT IN (SELECT code FROM compta.t_classes_comptes WHERE code IS NOT NULL)
ORDER BY CODE;
UPDATE compta.t_classes_comptes
SET texte = upper(CAPTION)
FROM prod_sage100compta.TCORRESPONDANCEGROUPECOMPTE
WHERE t_classes_comptes.code = TCORRESPONDANCEGROUPECOMPTE.CODE AND CAPTION <> '' AND
texte <> upper(CAPTION) ;
-- Comptes
UPDATE compta.t_comptes SET
type_compta_id = subview.type_compta_id,
texte = subview.texte
FROM
(
SELECT
COALESCE(t_types_compta.oid,0) AS type_compta_id,
TCOMPTEGENERAL.CODECOMPTE AS numero,
MAX(CAPTION) AS texte
FROM prod_sage100compta.TCOMPTEGENERAL
LEFT JOIN compta.t_types_compta ON
CASE
WHEN TCOMPTEGENERAL.CODECOMPTE LIKE '6%' OR TCOMPTEGENERAL.CODECOMPTE LIKE '7%' OR TCOMPTEGENERAL.CODECOMPTE LIKE '8%' THEN 'GES'
ELSE 'BIL' END
= t_types_compta.code_original
GROUP BY 1,2
) subview
WHERE t_comptes.numero = subview.numero AND
(
t_comptes.type_compta_id IS DISTINCT FROM subview.type_compta_id OR
t_comptes.texte IS DISTINCT FROM subview.texte
);
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
COALESCE(t_types_compta.oid,0) AS type_compta_id,
TCOMPTEGENERAL.CODECOMPTE AS numero,
MAX(CAPTION) AS texte,
0 AS compte_general_id,
'C' AS clinique_honoraire,
MAX(CASE WHEN TCOMPTEGENERAL.CODECOMPTE 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 prod_sage100compta.TCOMPTEGENERAL
LEFT JOIN compta.t_types_compta ON
CASE
WHEN TCOMPTEGENERAL.CODECOMPTE LIKE '6%' OR TCOMPTEGENERAL.CODECOMPTE LIKE '7%' OR TCOMPTEGENERAL.CODECOMPTE LIKE '8%' THEN 'GES'
ELSE 'BIL' END
= t_types_compta.code_original
WHERE TCOMPTEGENERAL.CODECOMPTE NOT IN (SELECT numero FROM compta.t_comptes WHERE numero IS NOT NULL) AND
TCOMPTEGENERAL.OID IN (SELECT OIDCOMPTEGENERAL FROM prod_sage100compta.TECRITURE)
GROUP BY 1,2
ORDER BY 2;
-- Partenaires
INSERT INTO compta.t_partenaires(code_original, code, texte, texte_court)
SELECT OIDTIERS, TTIERS.CODE, TTIERS.CAPTION, substr(TTIERS.CAPTION,1,50)
FROM prod_sage100compta.TROLETIERS
JOIN prod_sage100compta.TTIERS ON OIDTIERS = TTIERS.OID
WHERE TROLETIERS.OID IN (SELECT OIDROLETIERS FROM prod_sage100compta.TECRITURE) AND
OIDTIERS NOT IN (SELECT code_original FROM compta.t_partenaires WHERE code_original IS NOT NULL)
GROUP BY 1,2,3,4;
UPDATE compta.t_partenaires SET
code = TTIERS.CODE,
texte = TTIERS.CAPTION,
texte_court = substr(TTIERS.CAPTION,1,50)
FROM prod_sage100compta.TTIERS
WHERE TTIERS.OID = code_original AND
(t_partenaires.code IS DISTINCT FROM TTIERS.CODE OR
t_partenaires.texte IS DISTINCT FROM TTIERS.CAPTION OR
t_partenaires.texte_court IS DISTINCT FROM substr(TTIERS.CAPTION,1,50));
-- Comptes auxiliaires
DROP TABLE IF EXISTS w_TCOMPTEAUXILIAIRE;
CREATE TEMP TABLE w_TCOMPTEAUXILIAIRE AS
SELECT TCOMPTEAUXILIAIRE.OID,
OIDCOMPTEGENERAL,
TCOMPTEGENERAL.CODECOMPTE,
TCOMPTEGENERAL.CODECOMPTE || '.' || TTIERS.CODE AS CODECOMPTEAUXILIAIRE,
TTIERS.CAPTION,
OIDTIERS,
OIDROLETIERS,
0::bigint AS compte_auxiliaire_id,
0::bigint AS partenaire_id
FROM prod_sage100compta.TCOMPTEAUXILIAIRE
JOIN prod_sage100compta.TCOMPTEGENERAL ON OIDCOMPTEGENERAL = TCOMPTEGENERAL.OID
JOIN prod_sage100compta.TROLETIERS ON OIDROLETIERS = TROLETIERS.OID
JOIN prod_sage100compta.TTIERS ON OIDTIERS = TTIERS.OID;
UPDATE w_TCOMPTEAUXILIAIRE
SET partenaire_id = t_partenaires.oid
FROM compta.t_partenaires
WHERE OIDTIERS = t_partenaires.code_original;
UPDATE compta.t_comptes SET
type_compta_id = subview.type_compta_id,
texte = subview.texte,
compte_general_id = subview.compte_general_id,
partenaire_id = subview.partenaire_id
FROM
(
SELECT
COALESCE(t_types_compta.oid,0) AS type_compta_id,
CODECOMPTEAUXILIAIRE AS numero,
MAX(CAPTION) AS texte,
MAX(COALESCE(t_comptes.oid,0)) AS compte_general_id,
MAX(w_TCOMPTEAUXILIAIRE.partenaire_id) AS partenaire_id
FROM w_TCOMPTEAUXILIAIRE
LEFT JOIN compta.t_comptes ON CODECOMPTE = t_comptes.numero
LEFT JOIN compta.t_types_compta ON
CASE
WHEN CODECOMPTE LIKE '411%' THEN 'CLI'
WHEN CODECOMPTE LIKE '412%' THEN 'CLI'
WHEN CODECOMPTE LIKE '419%' THEN 'CLI'
ELSE 'DIV' END
= t_types_compta.code_original
GROUP BY 1,2
) subview
WHERE t_comptes.numero = subview.numero AND
(
t_comptes.type_compta_id IS DISTINCT FROM subview.type_compta_id OR
t_comptes.texte IS DISTINCT FROM subview.texte OR
t_comptes.compte_general_id IS DISTINCT FROM subview.compte_general_id OR
t_comptes.partenaire_id IS DISTINCT FROM subview.partenaire_id
);
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
COALESCE(t_types_compta.oid,0) AS type_compta_id,
CODECOMPTEAUXILIAIRE AS numero,
MAX(CAPTION) AS texte,
MAX(COALESCE(t_comptes.oid,0)) AS compte_general_id,
'C' AS clinique_honoraire,
'0' AS banque,
'0' AS collectif,
0 AS type_compta_extra_id,
'' AS numero_extra,
MAX(w_TCOMPTEAUXILIAIRE.partenaire_id) AS partenaire_id
FROM w_TCOMPTEAUXILIAIRE
LEFT JOIN compta.t_comptes ON CODECOMPTE = t_comptes.numero
LEFT JOIN compta.t_types_compta ON
CASE
WHEN CODECOMPTE LIKE '40%' THEN 'FOU'
WHEN CODECOMPTE LIKE '411%' THEN 'CLI'
WHEN CODECOMPTE LIKE '412%' THEN 'CLI'
WHEN CODECOMPTE LIKE '419%' THEN 'CLI'
ELSE 'DIV' END
= t_types_compta.code_original
WHERE OIDCOMPTEGENERAL IN (SELECT OIDCOMPTEGENERAL FROM prod_sage100compta.TECRITURE) AND
CODECOMPTEAUXILIAIRE NOT IN (SELECT numero FROM compta.t_comptes WHERE numero IS NOT NULL)
GROUP BY 1,2
ORDER BY 2;
UPDATE w_TCOMPTEAUXILIAIRE
SET compte_auxiliaire_id = t_comptes.oid
FROM compta.t_comptes
WHERE w_TCOMPTEAUXILIAIRE.CODECOMPTEAUXILIAIRE = t_comptes.numero;
UPDATE compta.t_comptes SET
compte_general_id = oid
WHERE compte_general_id = 0 OR compte_general_id IS NULL;
-- Ruptures SAGE
DROP TABLE IF EXISTS w_compte_rupture;
CREATE TEMP TABLE w_compte_rupture AS
SELECT CODECOMPTE,
RUPTURE_LEVEL,
'SAGERUPT'::text || RUPTURE_LEVEL::text||'C'::text AS classe_code,
0::bigint AS classe_id,
CASE RUPTURE_LEVEL
WHEN 1 THEN RUPTURE1
WHEN 2 THEN RUPTURE2
WHEN 3 THEN RUPTURE3
WHEN 4 THEN RUPTURE4
WHEN 5 THEN RUPTURE5
ELSE '' END AS section_code,
0::bigint AS section_id,
0::bigint AS compte_id
FROM
(
SELECT 1::integer AS RUPTURE_LEVEL
UNION
SELECT 2::integer AS RUPTURE_LEVEL
UNION
SELECT 3::integer AS RUPTURE_LEVEL
UNION
SELECT 4::integer AS RUPTURE_LEVEL
UNION
SELECT 5::integer AS RUPTURE_LEVEL
) subview
JOIN compta.t_listes_tables ON t_listes_tables.code = 'CPT'
JOIN prod_sage100compta.TCOMPTEGENERAL ON
(
RUPTURE_LEVEL = 1 AND RUPTURE1 <> '' OR
RUPTURE_LEVEL = 2 AND RUPTURE2 <> '' OR
RUPTURE_LEVEL = 3 AND RUPTURE3 <> '' OR
RUPTURE_LEVEL = 4 AND RUPTURE4 <> '' OR
RUPTURE_LEVEL = 5 AND RUPTURE5 <> ''
)
ORDER BY 1,2
;
UPDATE w_compte_rupture
SET compte_id = t_comptes.oid
FROM compta.t_comptes
WHERE t_comptes.numero = CODECOMPTE AND
t_comptes.compte_general_id = t_comptes.oid
;
INSERT INTO compta.t_classes(code, texte, table_id, is_cti, sequence, contenu_by_code, contenu_non_replicable_ailleurs)
SELECT classe_code,
'SAGE. Rupture '||RUPTURE_LEVEL::text,
subview.table_id,
'0'::text AS is_cti,
subview.max_sequence + RUPTURE_LEVEL,
'0'::text,
'1'::text
FROM w_compte_rupture
LEFT JOIN compta.t_classes ON classe_code = t_classes.code
JOIN
(
SELECT t_listes_tables.oid AS table_id, GREATEST(MAX(sequence),30) AS max_sequence
FROM compta.t_classes
JOIN compta.t_listes_tables ON t_listes_tables.code = 'CPT'
GROUP BY 1
) subview ON 1=1
WHERE t_classes.oid IS NULL
GROUP BY 1,2,3,4,5,6
;
UPDATE w_compte_rupture
SET classe_id = t_classes.oid
FROM compta.t_classes
WHERE t_classes.code = classe_code
;
INSERT INTO compta.t_classes_sections (code, texte, classe_id)
SELECT w_compte_rupture.section_code, w_compte_rupture.section_code, w_compte_rupture.classe_id
FROM w_compte_rupture
LEFT JOIN compta.t_classes_sections ON
t_classes_sections.classe_id = w_compte_rupture.classe_id AND
t_classes_sections.code = w_compte_rupture.section_code
WHERE t_classes_sections.oid IS NULL
GROUP BY 1,2,3
;
UPDATE w_compte_rupture
SET section_id = t_classes_sections.oid
FROM compta.t_classes_sections
WHERE t_classes_sections.classe_id = w_compte_rupture.classe_id AND
t_classes_sections.code = w_compte_rupture.section_code
;
DELETE FROM compta.t_classes_sections_elements
USING
(
SELECT t_classes_sections_elements.section_id, to_id
FROM compta.t_classes_sections_elements
JOIN compta.t_classes_sections ON section_id = t_classes_sections.oid
JOIN compta.t_classes ON classe_id = t_classes.oid
JOIN w_compte_rupture ON
t_classes_sections.classe_id = w_compte_rupture.classe_id AND
t_classes_sections_elements.to_id = w_compte_rupture.compte_id
WHERE t_classes_sections.classe_id IN (SELECT classe_id FROM w_compte_rupture) AND
t_classes_sections_elements.section_id <> w_compte_rupture.section_id AND
w_compte_rupture.section_id <> 0
) subview
WHERE t_classes_sections_elements.section_id = subview.section_id AND
t_classes_sections_elements.to_id = subview.to_id
;
INSERT INTO compta.t_classes_sections_elements (section_id, to_id)
SELECT w_compte_rupture.section_id, w_compte_rupture.compte_id
FROM w_compte_rupture
LEFT JOIN compta.t_classes_sections_elements ON
t_classes_sections_elements.section_id = w_compte_rupture.section_id AND
t_classes_sections_elements.to_id = w_compte_rupture.compte_id
WHERE w_compte_rupture.compte_id <> 0 AND
w_compte_rupture.section_id <> 0 AND
t_classes_sections_elements.section_id IS NULL
GROUP BY 1,2
;
]]>