Browse Source

initial commit

master
ymi 2 months ago
commit
43528c48ef
322 changed files with 70868 additions and 0 deletions
  1. +125
    -0
      db/data/dbdata_compta_t_classes.SQL
  2. +620
    -0
      db/data/dbdata_compta_t_classes_comptes.SQL
  3. +105
    -0
      db/data/dbdata_compta_t_classes_sections.SQL
  4. +45
    -0
      db/data/dbdata_compta_t_divers.SQL
  5. +112
    -0
      db/data/dbdata_compta_t_indicateurs.SQL
  6. +162
    -0
      db/data/dbdata_compta_t_listes.SQL
  7. +75
    -0
      db/data/dbdata_compta_t_listes_tables.SQL
  8. +26
    -0
      db/data/dbdata_compta_t_rapports.SQL
  9. +207
    -0
      db/data/dbdata_compta_t_rapports_rubriques.SQL
  10. +2
    -0
      db/data2/dbdata_compta_t_classes.csv
  11. +370
    -0
      db/data2/dbdata_compta_t_classes_comptes.csv
  12. +4
    -0
      db/data2/dbdata_compta_t_classes_sections.csv
  13. +4
    -0
      db/data2/dbdata_compta_t_divers.csv
  14. +59
    -0
      db/data2/dbdata_compta_t_indicateurs.csv
  15. +57
    -0
      db/data2/dbdata_compta_t_listes.csv
  16. +55
    -0
      db/data2/dbdata_compta_t_listes_tables.csv
  17. +6
    -0
      db/data2/dbdata_compta_t_rapports.csv
  18. +42
    -0
      db/data2/dbdata_compta_t_rapports_rubriques.csv
  19. +507
    -0
      db/dbsetup_data_compta.XML
  20. +4
    -0
      db/dvp_data_apply.bat
  21. +2
    -0
      db/dvp_data_extract.bat
  22. +5
    -0
      db/hooks/install_db_last_jobs.sql
  23. +123
    -0
      db/hooks/post_install_data.sql
  24. +3
    -0
      db/hooks/pre_install_data.sql
  25. +8
    -0
      db/hooks/pre_install_schema.sql
  26. +322
    -0
      db/schema2/functions/cti_create_indicateurs_from_listes.yaml
  27. +401
    -0
      db/schema2/functions/cti_gen_ajustements~bi.yaml
  28. +554
    -0
      db/schema2/functions/cti_gen_budget~bi.yaml
  29. +61
    -0
      db/schema2/functions/cti_now~tx,tx.yaml
  30. +818
    -0
      db/schema2/functions/cti_reorganize_comptes_c.yaml
  31. +136
    -0
      db/schema2/functions/cti_reorganize_controle_chiffrier.yaml
  32. +570
    -0
      db/schema2/functions/cti_reorganize_indicateur_condition.yaml
  33. +15
    -0
      db/schema2/functions/cti_reorganize_lieux_cout_patient_shs.yaml
  34. +42
    -0
      db/schema2/functions/cti_reorganize_lieux_cout_patient_shs_table~tx,tx.yaml
  35. +803
    -0
      db/schema2/functions/cti_reorganize_pole.yaml
  36. +128
    -0
      db/schema2/functions/cti_update_schema_classes~tx.yaml
  37. +263
    -0
      db/schema2/functions/get_formule_indicateur~bi,in.yaml
  38. +48
    -0
      db/schema2/functions/get_rapport_indicateurs~in.yaml
  39. +5
    -0
      db/schema2/sequences/s_activites_cout_patient_shs.yaml
  40. +5
    -0
      db/schema2/sequences/s_arbre_comptes.yaml
  41. +5
    -0
      db/schema2/sequences/s_budget.yaml
  42. +5
    -0
      db/schema2/sequences/s_budget_compte.yaml
  43. +5
    -0
      db/schema2/sequences/s_budget_compte_compte.yaml
  44. +5
    -0
      db/schema2/sequences/s_chart.yaml
  45. +5
    -0
      db/schema2/sequences/s_classes.yaml
  46. +5
    -0
      db/schema2/sequences/s_classes_comptes.yaml
  47. +5
    -0
      db/schema2/sequences/s_classes_sections.yaml
  48. +5
    -0
      db/schema2/sequences/s_collectifs.yaml
  49. +5
    -0
      db/schema2/sequences/s_comptes.yaml
  50. +5
    -0
      db/schema2/sequences/s_dashboard.yaml
  51. +5
    -0
      db/schema2/sequences/s_dashboard_filter.yaml
  52. +5
    -0
      db/schema2/sequences/s_dashboard_onglet.yaml
  53. +5
    -0
      db/schema2/sequences/s_dashboard_widget.yaml
  54. +5
    -0
      db/schema2/sequences/s_ecritures_ajustement.yaml
  55. +5
    -0
      db/schema2/sequences/s_elements_cout_patient_shs.yaml
  56. +5
    -0
      db/schema2/sequences/s_etages_cout_patient_shs.yaml
  57. +5
    -0
      db/schema2/sequences/s_indicateur_condition.yaml
  58. +5
    -0
      db/schema2/sequences/s_indicateur_condition_table.yaml
  59. +5
    -0
      db/schema2/sequences/s_indicateur_serie.yaml
  60. +5
    -0
      db/schema2/sequences/s_indicateur_theme.yaml
  61. +5
    -0
      db/schema2/sequences/s_indicateurs.yaml
  62. +5
    -0
      db/schema2/sequences/s_journaux.yaml
  63. +5
    -0
      db/schema2/sequences/s_lieux_cout_patient_shs.yaml
  64. +5
    -0
      db/schema2/sequences/s_listes.yaml
  65. +5
    -0
      db/schema2/sequences/s_listes_tables.yaml
  66. +5
    -0
      db/schema2/sequences/s_lits_cout_patient_shs.yaml
  67. +5
    -0
      db/schema2/sequences/s_medecins_cout_patient_shs.yaml
  68. +5
    -0
      db/schema2/sequences/s_mode_paiement.yaml
  69. +5
    -0
      db/schema2/sequences/s_partenaires.yaml
  70. +5
    -0
      db/schema2/sequences/s_pole_rule.yaml
  71. +5
    -0
      db/schema2/sequences/s_rapports.yaml
  72. +5
    -0
      db/schema2/sequences/s_rapports_rapports.yaml
  73. +5
    -0
      db/schema2/sequences/s_sections_analytiques.yaml
  74. +5
    -0
      db/schema2/sequences/s_services_facturation_cout_patient_shs.yaml
  75. +5
    -0
      db/schema2/sequences/s_sites.yaml
  76. +5
    -0
      db/schema2/sequences/s_types_compta.yaml
  77. +5
    -0
      db/schema2/sequences/s_unites_oeuvre_shs.yaml
  78. +5
    -0
      db/schema2/sequences/s_validation_parametre.yaml
  79. +18
    -0
      db/schema2/tables/p_chiffrier_comptable.yaml
  80. +23
    -0
      db/schema2/tables/p_chiffrier_comptable_compte.yaml
  81. +19
    -0
      db/schema2/tables/p_chiffrier_sagex3.yaml
  82. +19
    -0
      db/schema2/tables/p_chiffrier_shs.yaml
  83. +30
    -0
      db/schema2/tables/p_consolidation_translation.yaml
  84. +67
    -0
      db/schema2/tables/p_couts_patient_shs.yaml
  85. +121
    -0
      db/schema2/tables/p_ecriture_fournisseur.yaml
  86. +157
    -0
      db/schema2/tables/p_historique_ecritures.yaml
  87. +137
    -0
      db/schema2/tables/p_historique_ecritures_total.yaml
  88. +37
    -0
      db/schema2/tables/p_indicateurs_cumules.yaml
  89. +19
    -0
      db/schema2/tables/p_mois_comptables.yaml
  90. +24
    -0
      db/schema2/tables/p_oids.yaml
  91. +46
    -0
      db/schema2/tables/p_repartitions_analytiques_shs.yaml
  92. +17
    -0
      db/schema2/tables/t_activites_cout_patient_shs.yaml
  93. +30
    -0
      db/schema2/tables/t_budget.yaml
  94. +50
    -0
      db/schema2/tables/t_budget_compte.yaml
  95. +22
    -0
      db/schema2/tables/t_budget_compte_compte.yaml
  96. +26
    -0
      db/schema2/tables/t_chart.yaml
  97. +36
    -0
      db/schema2/tables/t_classes.yaml
  98. +23
    -0
      db/schema2/tables/t_classes_comptes.yaml
  99. +26
    -0
      db/schema2/tables/t_classes_sections.yaml
  100. +20
    -0
      db/schema2/tables/t_classes_sections_elements.yaml

+ 125
- 0
db/data/dbdata_compta_t_classes.SQL View File

@ -0,0 +1,125 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
CASE WHEN t_classes.oid = 0 THEN t_classes.oid ELSE 1 END AS oid,
t_listes_tables.code as table_code,
t_classes.code,
t_classes.sequence AS sequence_source,
t_classes.texte,
t_classes.is_cti,
t_classes.contenu_by_code,
t_classes.contenu_non_replicable_ailleurs,
0::numeric AS sequence,
0::bigint AS table_id
FROM compta.t_classes
JOIN compta.t_listes_tables ON table_id = t_listes_tables.oid
WHERE t_classes.code <> '' AND
(is_cti = '1' OR t_classes.code ilike 'CTI_%') AND
1=1
ORDER BY 2,3 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
table_code,
code,
sequence_source,
texte,
is_cti,
contenu_by_code,
contenu_non_replicable_ailleurs,
sequence,
table_id
)
VALUES
(1, 'CPT', 'CTI_CONTRIBUTION_BLOC_OPERATOIRE', 42, 'Coût des charges pour le calcul de la contribution', '1', '0', '0', 0, 0)
;
-- 3/3 : Màj de la table iCTI
UPDATE w_dbsetup
SET table_id = t_listes_tables.oid
FROM compta.t_listes_tables
WHERE t_listes_tables.Code = table_code
;
UPDATE w_dbsetup
SET sequence = t_classes.sequence
FROM compta.t_classes
WHERE t_classes.code = w_dbsetup.code AND
t_classes.table_id = w_dbsetup.table_id
;
UPDATE w_dbsetup
SET sequence = sequence_source
WHERE code NOT IN (SELECT code FROM compta.t_classes) AND
w_dbsetup.table_id::text || '-' || w_dbsetup.sequence_source::text NOT IN (SELECT table_id::text || '-' || sequence::text FROM compta.t_classes)
;
UPDATE w_dbsetup
SET sequence = subview.sequence
FROM
(
SELECT w_dbsetup.table_id, sequence_source,
CASE WHEN sequence1 < 7 THEN sequence1 WHEN sequence2 <= 27 THEN sequence2 ELSE sequence3 END + row_number() OVER (PARTITION BY w_dbsetup.table_id ORDER BY code) AS sequence
FROM w_dbsetup
JOIN
(
SELECT t_listes_tables.oid AS table_id,
MAX(CASE WHEN sequence < 7 THEN sequence ELSE 0 END) AS sequence1,
MAX(CASE WHEN sequence BETWEEN 10 AND 27 THEN sequence ELSE 9 END) AS sequence2,
MAX(CASE WHEN sequence > 30 THEN sequence ELSE 30 END) AS sequence3
FROM compta.t_listes_tables
LEFT JOIN compta.t_classes ON t_listes_tables.oid = table_id
GROUP BY 1
) subview ON w_dbsetup.table_id = subview.table_id
WHERE sequence = 0
) subview
WHERE w_dbsetup.table_id = subview.table_id AND
w_dbsetup.sequence_source = subview.sequence_source AND
w_dbsetup.sequence = 0
;
UPDATE compta.t_classes SET
texte = w_dbsetup.texte,
table_id = w_dbsetup.table_id,
is_cti = w_dbsetup.is_cti,
contenu_by_code = w_dbsetup.contenu_by_code,
contenu_non_replicable_ailleurs = w_dbsetup.contenu_non_replicable_ailleurs
FROM w_dbsetup
WHERE 1=1
AND t_classes.code = w_dbsetup.code
AND t_classes.table_id = w_dbsetup.table_id
AND (1!=1
OR t_classes.texte IS DISTINCT FROM w_dbsetup.texte
OR t_classes.is_cti IS DISTINCT FROM w_dbsetup.is_cti
OR t_classes.contenu_by_code IS DISTINCT FROM w_dbsetup.contenu_by_code
OR t_classes.contenu_non_replicable_ailleurs IS DISTINCT FROM w_dbsetup.contenu_non_replicable_ailleurs)
;
INSERT INTO compta.t_classes(
code,
texte,
table_id,
is_cti,
sequence,
contenu_by_code,
contenu_non_replicable_ailleurs
)
SELECT
w_dbsetup.code,
w_dbsetup.texte,
w_dbsetup.table_id,
w_dbsetup.is_cti,
w_dbsetup.sequence,
w_dbsetup.contenu_by_code,
w_dbsetup.contenu_non_replicable_ailleurs
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.sequence <> 0
AND w_dbsetup.table_id::text || '-' || w_dbsetup.sequence::text NOT IN (SELECT table_id::text || '-' || sequence::text FROM compta.t_classes)
AND w_dbsetup.texte NOT LIKE '*SUPPRIME%'
;

+ 620
- 0
db/data/dbdata_compta_t_classes_comptes.SQL View File

@ -0,0 +1,620 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT code, texte FROM compta.t_classes_comptes WHERE length(code) <= 3 AND oid <> 0 ORDER BY code LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
code,
texte
)
VALUES
('00', ''),
('000', ''),
('1', 'CAPITAUX'),
('1', 'CAPITAUX'),
('10', 'CAPITAL ET RESERVES'),
('10', 'CAPITAL ET RESERVES'),
('101', 'CAPITAL'),
('101', 'CAPITAL'),
('104', 'PRIMES LIEES AU CAPITAL SOCIAL'),
('104', 'PRIMES LIEES AU CAPITAL SOCIAL'),
('105', 'PRIMES LIEES AU CAPITAL S'),
('106', 'RESERVES LEGALES ET FACULTATIV'),
('106', 'RESERVES LEGALES ET FACULTATIV'),
('107', 'ECART D''EQUIVALENCE'),
('108', 'COMPTE DE L''EXPLOITANT'),
('109', 'ACTIONNAIRES CAPITAL SOUSCRIT'),
('11', 'REPORT A NOUVEAU'),
('11', 'REPORT A NOUVEAU'),
('110', 'REPORT A NOUVEAU (CREDITEUR)'),
('110', 'REPORT A NOUVEAU (CREDITEUR)'),
('119', 'REPORT A NOUVEAU (DEBITEUR)'),
('12', 'RESULTAT DE L''EXERCICE'),
('12', 'RESULTAT DE L''EXERCICE'),
('120', 'RESULTAT EXERCICE (BENEFICE)'),
('120', 'RESULTAT EXERCICE (BENEFICE)'),
('121', ''),
('128', ''),
('129', 'RESULTAT EXERCICE (PERTE)'),
('129', 'RESULTAT EXERCICE (PERTE)'),
('13', 'SUBVENTIONS D''INVESTISSEMENT'),
('131', 'SUBVENTIONS D''EQUIPEMENT'),
('133', ''),
('138', 'AUTRES SUBVENTIONS'),
('139', 'SUBVENTIONS D''INVESTISSEMENT INSCRITES AU COMPTE DE RESULTAT '),
('14', 'PROVISIONS REGLEMENTEES'),
('142', 'PROVISIONS REGLEMENTEES IMMO'),
('143', 'PROVISIONS REGLEMENTEES STOCKS'),
('144', 'PROVISIONS REGLEMENTEES AUTRES'),
('145', 'AMORTISSEMENTS DEROGATOIRES'),
('146', 'PROV. SPECIALE DE REEVALUATION'),
('147', 'PLUS-VALUES REINVESTIES'),
('148', 'AUTRES PROVISIONS REGLEMENTEES '),
('15', 'PROVISIONS RISQUES ET CHARGES'),
('15', 'PROVISIONS RISQUES ET CHARGES'),
('151', 'PROVISIONS POUR RISQUES'),
('151', 'PROVISIONS POUR RISQUES'),
('153', 'PROVISIONS POUR PENSIONS ET OBLIGATIONS SIMILAIRES '),
('154', 'PROVISIONS POUR RESTRUCTURATIONS '),
('155', 'PROVISIONS POUR IMPOTS'),
('156', 'PROVISIONS RENOUVELLEMENT IMMO'),
('157', 'PROVISIONS CHARGES A REPARTIR'),
('158', 'AUTRES PROVISIONS POUR CHARGES'),
('16', 'EMPRUNTS ET DETTES ASSIMILEES'),
('16', 'EMPRUNTS ET DETTES ASSIMILEES'),
('161', 'EMPRUNTS OBLIGATAIRES CONVERT.'),
('162', ''),
('163', 'AUTRES EMPRUNTS OBLIGATAIRES'),
('164', 'EMPRUNTS ETABLISSEMENTS CREDIT'),
('164', 'EMPRUNTS ETABLISSEMENTS CREDIT'),
('165', 'DEPOTS ET CAUTIONNEMENTS RECUS'),
('166', 'PARTICIPATIONS DES SALARIES'),
('167', 'EMPRUNTS, DETTES PARTICULIERS'),
('167', 'EMPRUNTS, DETTES PARTICULIERS'),
('168', 'AUTRES EMPRUNTS ET DETTES'),
('168', 'AUTRES EMPRUNTS ET DETTES'),
('169', 'PRIMES REMBOURSEMENT OBLIG.'),
('17', 'DETTES RATTACHEES A DES PARTI.'),
('171', 'DETTES RATTACHEES A DES PARTICIPATIONS (GROUPE) '),
('174', 'DETTES RATTACHEES A DES PARTICIPATIONS (HORS GROUPE) '),
('178', 'DETTES RATTACHEES A DES SOCIETES EN PARTICIPATION '),
('18', 'COMPTES LIAISON ETAB. ET SCTES'),
('18', 'COMPTES LIAISON ETAB. ET SCTES'),
('180', ''),
('180', ''),
('181', 'COMPTES DE LIAISON DES ETABLISSEMENTS '),
('186', 'BIENS ET PRESTATIONS DE SERVICES ECHANGES ENTRE ETABLISSEMENTS (CHARGES) '),
('187', 'BIENS ET PRESTATIONS DE SERVICES ECHANGES ENTRE ETABLISSEMENTS (PRODUITS) '),
('188', 'COMPTES DE LIAISON DES SOCIETES EN PARTICIPATION '),
('19', ''),
('194', ''),
('2', 'CLASSE 2'),
('2', 'CLASSE 2'),
('20', 'IMMOBILISATIONS INCORPORELLES'),
('20', 'IMMOBILISATIONS INCORPORELLES'),
('200', ''),
('201', 'FRAIS D''ETABLISSEMENT'),
('201', 'FRAIS D''ETABLISSEMENT'),
('203', 'FRAIS RECHERCHE / DVLPT'),
('203', 'FRAIS RECHERCHE / DVLPT'),
('205', 'BREVETS / LICENCES'),
('205', 'BREVETS / LICENCES'),
('206', 'DROIT AU BAIL'),
('207', 'FONDS COMMERCIAL'),
('207', 'FONDS COMMERCIAL'),
('208', 'AUTRES IMMO. INCORPORELLES'),
('208', 'AUTRES IMMO. INCORPORELLES'),
('21', 'IMMOBILISATIONS CORPORELLES'),
('21', 'IMMOBILISATIONS CORPORELLES'),
('211', 'TERRAINS'),
('212', 'AGENC. ET AMENAG. DE TERRAINS'),
('213', 'CONSTRUCTIONS'),
('213', 'CONSTRUCTIONS'),
('214', 'CONSTRUCTIONS SUR SOL D''AUTRUI (MEME VENTILATION QUE CELLE DU COMPTE 213) '),
('215', 'INSTAL TECHN, MAT ET OUT INDUS'),
('215', 'INSTAL TECHN, MAT ET OUT INDUS'),
('218', 'AUTRES IMMO. CORPORELLES'),
('218', 'AUTRES IMMO. CORPORELLES'),
('22', 'IMMO. MISES EN CONCESSION'),
('23', 'IMMOBILISATIONS EN COURS'),
('23', 'IMMOBILISATIONS EN COURS'),
('230', ''),
('231', 'IMMO CORPO. EN COURS'),
('231', 'IMMO CORPO. EN COURS'),
('232', 'IMMOBILISATIONS INCORPORELLES EN COURS '),
('237', 'AV/ACPTE IMMO INCORP 20,6%RP'),
('238', 'AVANC./ACOMPT. CDE IMMO CORPO.'),
('238', 'AVANC./ACOMPT. CDE IMMO CORPO.'),
('25', 'PARTS DANS DES ENTREPRISES LIEES ET CREANCES SUR DES ENTREPRISES LIEES '),
('26', 'PART. ET CREANCES RATTACHEES'),
('26', 'PART. ET CREANCES RATTACHEES'),
('261', 'TITRES DE PARTICIPATION'),
('261', 'TITRES DE PARTICIPATION'),
('266', 'AUTRES FORMES DE PARTICIPATION '),
('267', 'CREANCES RATTACHEES A DES PARTICIPATIONS '),
('268', 'CREANCES RATTACHEES A DES SOCIETES EN PARTICIPATION '),
('269', 'VERSEMENTS RESTANT A EFFECTUER SUR TITRES DE PARTICIPATION NON LIBERES '),
('27', 'AUTRES IMMO. FINANCIERES'),
('27', 'AUTRES IMMO. FINANCIERES'),
('271', 'TITRES IMMOBILISES AUTRES QUE LES TITRES IMMOBILISES DE L''ACTIVITE DE PORTEFEUILLE (DROIT DE PROPRIETE) '),
('272', 'TITRES IMMOBILISES (DROIT DE CREANCE) '),
('273', 'TITRES IMMOBILISES DE L''ACTIVITE DE PORTEFEUILLE '),
('274', 'PRETS'),
('274', 'PRETS'),
('275', 'DEPOTS ET CAUTIONNEMENTS'),
('275', 'DEPOTS ET CAUTIONNEMENTS'),
('276', 'AUTRES CREANCES IMMOBILISEES'),
('277', '(ACTIONS PROPRES OU PARTS PROPRES)'),
('279', 'VERSEMENTS RESTANT A EFFECTUER SUR TITRES IMMOBILISES NON LIBERES '),
('28', 'AMORTISSEMENTS IMMOBILISATIONS'),
('28', 'AMORTISSEMENTS IMMOBILISATIONS'),
('280', 'AMORT. IMMO. INCORPORELLES'),
('280', 'AMORT. IMMO. INCORPORELLES'),
('281', 'AMORT. IMMO. CORPORELLES'),
('281', 'AMORT. IMMO. CORPORELLES'),
('282', 'AMORTISSEMENTS SITUATION'),
('29', 'PROVISIONS DEPRECIATION IMMO.'),
('29', 'PROVISIONS DEPRECIATION IMMO.'),
('290', 'PROV. DEPRECIATION IMMO INCORP'),
('291', 'PROV. DEPRECIATION IMMO. CORP'),
('292', 'DEPRECIATIONS DES IMMOBILISATIONS MISES EN CONCESSION '),
('293', 'DEPRECIATIONS DES IMMOBILISATIONS EN COURS '),
('296', 'PROVISIONS POUR DEPRECIATION DES PARTICIPATIONS ET CREANCES RATTACHEES A DES PARTICIPATIONS '),
('297', 'PROV. DEPREC. AUTRES IMMO FIN'),
('297', 'PROV. DEPREC. AUTRES IMMO FIN'),
('3', 'COMPTES DE STOCKS ET EN COURS'),
('3', 'COMPTES DE STOCKS ET EN COURS'),
('31', 'MATIERES PREMIERES,FOURNITURES'),
('310', 'STOCKS'),
('311', 'STOCKS DENREES'),
('312', 'MATIERES (OU GROUPE) B'),
('317', 'FOURNITURES A, B, C,'),
('32', 'AUTRES APPROVISIONNEMENTS'),
('32', 'AUTRES APPROVISIONNEMENTS'),
('321', 'MATIERES CONSOMMABLES'),
('321', 'MATIERES CONSOMMABLES'),
('322', 'FOURNITURES CONSOMMABLES'),
('326', 'EMBALLAGES'),
('33', 'EN-COURS DE PRODUCTION DE BIENS '),
('331', 'PRODUITS EN COURS'),
('335', 'TRAVAUX EN COURS'),
('34', 'EN-COURS PRODUCTION SERVICES'),
('341', 'ETUDES EN COURS'),
('345', 'PRESTATIONS DE SERVICES EN COURS'),
('35', 'STOCKS DE PRODUITS'),
('351', 'PRODUITS INTERMEDIAIRES'),
('355', 'PRODUITS FINIS'),
('358', 'PRODUITS RESIDUELS (OU MATIERES DE RECUPERATION) '),
('36', '"COMPTE A OUVRIR, LE CAS ECHEANT, SOUS L''INTITULE "" STOCKS PROVENANT D''IMMOBILISATIONS "" "'),
('37', 'STOCKS DE MARCHANDISES'),
('371', 'MARCHANDISES (OU GROUPE) A'),
('372', 'MARCHANDISES (OU GROUPE) B'),
('38', 'LORSQUE L''ENTITE TIENT UN INVENTAIRE PERMANENT EN COMPTABILITE GENERALE, LE COMPTE 38 PEUT ETRE UTILISE POUR COMPTABILISER LES STOCKS EN VOIE D''ACHEMINEMENT, MIS EN DEPOT OU DONNES EN CONSIGNATION '),
('39', 'PROVISIONS DEPRECIATION STOCKS'),
('391', 'PROV DEPREC MAT 1ERES ET FOURN'),
('392', 'PROV. DEPREC. AUTRES APPRO.'),
('393', 'PROVISIONS POUR DEPRECIATION DES EN-COURS DE PRODUCTION DE BIENS '),
('394', 'PROV DEPREC EN-COURS SERVICES'),
('395', 'PROV DEPREC STOCKS PRODUITS'),
('397', 'PROV DEPREC STOCK MARCHANDISES'),
('4', 'COMPTES DE TIERS'),
('4', 'COMPTES DE TIERS'),
('40', 'FOURNISSEURS ET CPTES RATTACHE'),
('40', 'FOURNISSEURS ET CPTES RATTACHE'),
('400', 'FOURNISSEURS COMPTES RATTACHES'),
('400', 'FOURNISSEURS COMPTES RATTACHES'),
('401', 'FOURNISSEURS'),
('401', 'FOURNISSEURS'),
('402', ''),
('402', ''),
('403', 'FOURNISSEURS - EFFETS A PAYER'),
('403', 'FOURNISSEURS - EFFETS A PAYER'),
('404', 'FOURNISSEURS IMMOBILISATIONS'),
('404', 'FOURNISSEURS IMMOBILISATIONS'),
('405', 'EFFETS A PAYER IMMOBILISATION'),
('406', ''),
('406', ''),
('407', ''),
('407', ''),
('408', 'FOURN. FACTURES NON PARVENUES'),
('408', 'FOURN. FACTURES NON PARVENUES'),
('409', 'FOURNISSEURS DEBITEURS'),
('409', 'FOURNISSEURS DEBITEURS'),
('41', 'CLIENTS ET COMPTES RATTACHES'),
('41', 'CLIENTS ET COMPTES RATTACHES'),
('410', 'CLIENTS COGECIS'),
('410', 'CLIENTS COGECIS'),
('411', 'CLIENTS'),
('411', 'CLIENTS'),
('412', 'CLIENTS ASSMED'),
('412', 'CLIENTS ASSMED'),
('413', 'CLIENTS - EFFETS A RECEVOIR'),
('413', 'CLIENTS - EFFETS A RECEVOIR'),
('415', ''),
('416', 'CLIENTS DOUTEUX'),
('416', 'CLIENTS DOUTEUX'),
('418', 'CLIENTS-PRODUITS NON FACTURES'),
('418', 'CLIENTS-PRODUITS NON FACTURES'),
('419', 'CLIENTS CREDITEURS'),
('419', 'CLIENTS CREDITEURS'),
('42', 'PERSONNEL ET CPTES RATTACHES'),
('42', 'PERSONNEL ET CPTES RATTACHES'),
('421', 'PERSONNEL-REMUNERATIONS DUES'),
('421', 'PERSONNEL-REMUNERATIONS DUES'),
('422', 'COMITES D''ENTREPRISE'),
('422', 'COMITES D''ENTREPRISE'),
('424', 'PARTICIPATION SALARIES'),
('425', 'PERSONNEL-AVANCES ET ACOMPTES'),
('425', 'PERSONNEL-AVANCES ET ACOMPTES'),
('426', 'PERSONNEL-DEPOTS'),
('427', 'PERSONNEL-OPPOSITION'),
('427', 'PERSONNEL-OPPOSITION'),
('428', 'PER-CH A PAYER-PTDS A RECEVOIR'),
('428', 'PER-CH A PAYER-PTDS A RECEVOIR'),
('43', 'CHARGES SOCIALES'),
('43', 'CHARGES SOCIALES'),
('431', 'SECURITE SOCIALE'),
('431', 'SECURITE SOCIALE'),
('437', 'AUTRES ORGANISMES SOCIAUX'),
('437', 'AUTRES ORGANISMES SOCIAUX'),
('438', 'ORG. SOCIAUX-CH A P-PDT A REC'),
('438', 'ORG. SOCIAUX-CH A P-PDT A REC'),
('44', 'ETAT-AUTRES COLLECTIVITES'),
('44', 'ETAT-AUTRES COLLECTIVITES'),
('441', 'ETAT - SUBVENTIONS A RECEVOIR'),
('442', 'ETAT - IMPOTS ET TAXES RECOUVRABLES SUR DES TIERS '),
('443', 'OPERATIONS PARTICULIERES AVEC L''ETAT, LES COLLECTIVITES PUBLIQUES, LES ORGANISMES INTERNATIONAUX '),
('444', 'ETAT-IMPOT SUR LES BENEFICES'),
('444', 'ETAT-IMPOT SUR LES BENEFICES'),
('445', 'ETAT-TAXES /CHIFFRE D''AFFAIRES'),
('445', 'ETAT-TAXES /CHIFFRE D''AFFAIRES'),
('446', 'OBLIGATIONS CAUTIONNEES'),
('447', 'AUTRES IMPOTS ET TAXES'),
('447', 'AUTRES IMPOTS ET TAXES'),
('448', 'ETAT - CHARGES A PAYER'),
('448', 'ETAT - CHARGES A PAYER'),
('449', 'QUOTAS D''EMISSION A RESTITUER A L''ETAT '),
('45', 'GROUPE ET ASSOCIES'),
('45', 'GROUPE ET ASSOCIES'),
('451', 'STE D''EXPLOITATION CCN'),
('452', ''),
('452', ''),
('453', ''),
('453', ''),
('455', 'ASSOCIES-COMPTES COURANTS'),
('455', 'ASSOCIES-COMPTES COURANTS'),
('456', 'ASSOCIES - OPERATIONS SUR LE CAPITAL '),
('457', 'ASSOCIES - DIVIDENDES A PAYER '),
('458', 'ASSOCIES - OPERATIONS FAITES EN COMMUN ET EN G.I.E. '),
('46', 'DEBITEURS ET CREDITEURS DIVERS'),
('46', 'DEBITEURS ET CREDITEURS DIVERS'),
('460', 'DEBITEURS DIVERS'),
('461', 'DIVERS HONORAIRES'),
('461', 'DIVERS HONORAIRES'),
('462', 'CREANCES / CESSION IMMO'),
('462', 'CREANCES / CESSION IMMO'),
('463', ''),
('464', 'DETTES SUR ACQUISITIONS DE VALEURS MOBILIERES DE PLACEMENT '),
('465', 'CREANCES / CESSIONS VMP'),
('465', 'CREANCES / CESSIONS VMP'),
('466', 'HONORAIRES A REVERSER'),
('466', 'HONORAIRES A REVERSER'),
('467', 'AUTRES DEBITEURS ET CREDITEURS'),
('467', 'AUTRES DEBITEURS ET CREDITEURS'),
('468', 'CH A PAYER-PDTS A RECEVOIR'),
('468', 'CH A PAYER-PDTS A RECEVOIR'),
('47', 'COMPTES D ATTENTE'),
('47', 'COMPTES D ATTENTE'),
('471', 'COMPTES D''ATTENTE'),
('471', 'COMPTES D''ATTENTE'),
('472', 'NON IMPUTABLE NOEMIE HON'),
('473', 'COMPTE D''ATTENTE PARK'),
('474', 'CPTE ATTENTE JUSTIFICATIF'),
('476', 'DIFFéRENCES DE CONVERSION - ACTIF'),
('477', 'DIFFéRENCES DE CONVERSION - PASSIF'),
('478', 'AUTRES COMPTES TRANSITOIRES'),
('478', 'AUTRES COMPTES TRANSITOIRES'),
('479', 'ENCAISSEMENTS A VENTILER'),
('479', 'ENCAISSEMENTS A VENTILER'),
('48', 'COMPTES DE REGULARISATION'),
('48', 'COMPTES DE REGULARISATION'),
('481', 'CHARGES A REPARTIR'),
('481', 'CHARGES A REPARTIR'),
('486', 'CHARGES CONSTATEES D''AVANCE'),
('486', 'CHARGES CONSTATEES D''AVANCE'),
('487', 'PRODUITS CONSTATES D''AVANCE'),
('487', 'PRODUITS CONSTATES D''AVANCE'),
('488', 'COMPTES DE REPARTITION'),
('488', 'COMPTES DE REPARTITION'),
('489', 'QUOTAS D''EMISSION ALLOUES PAR L''ETAT '),
('49', 'PROV. DEPREC. COMPTES DE TIERS'),
('49', 'PROV. DEPREC. COMPTES DE TIERS'),
('491', 'PROV. DEPREC. COMPTES CLIENTS'),
('491', 'PROV. DEPREC. COMPTES CLIENTS'),
('495', 'PROVISIONS POUR DEPRECIATION DES COMPTES DU GROUPE ET DES ASSOCIES '),
('496', 'PROV. DEPRE CPT DIV DEBITEURS'),
('496', 'PROV. DEPRE CPT DIV DEBITEURS'),
('5', 'COMPTES FINANCIERS'),
('5', 'COMPTES FINANCIERS'),
('50', 'VALEURS MOBILIERES PLACEMENT'),
('50', 'VALEURS MOBILIERES PLACEMENT'),
('501', 'PARTS DANS DES ENTREPRISES LIEES '),
('502', 'ACTIONS PROPRES'),
('503', 'ACTIONS'),
('504', 'AUTRES TITRES'),
('504', 'AUTRES TITRES'),
('505', 'OBLIGATIONS ET BONS EMIS PAR LA SOCIETE ET RACHETES PAR ELLE '),
('506', 'OBLIGATIONS'),
('507', 'BONS DU TRESOR ET BONS DE CAISSE A COURT TERME'),
('508', 'AUTRES VALEURS MOBILIERES DE PLACEMENT ET AUTRES CREANCES ASSIMILEES '),
('509', 'VERSEMENTS RESTANT A EFFECTUER SUR VALEURS MOBILIERES DE PLACEMENT NON LIBEREES '),
('51', 'BANQUES ETS FINANCIERS'),
('51', 'BANQUES ETS FINANCIERS'),
('511', 'VALEURS A L''ENCAISSEMENT'),
('511', 'VALEURS A L''ENCAISSEMENT'),
('512', 'BANQUES'),
('512', 'BANQUES'),
('513', ''),
('513', ''),
('514', 'CHEQUES POSTAUX'),
('514', 'CHEQUES POSTAUX'),
('515', '""" CAISSES "" DU TRESOR ET DES ETABLISSEMENTS PUBLICS "'),
('516', 'SOCIETES DE BOURSE'),
('517', 'AUTRES ORGANISMES FINANCIERS'),
('518', 'INTERETS COURUS'),
('518', 'INTERETS COURUS'),
('519', 'CONCOURS BANCAIRES COURANTS'),
('52', 'INSTRUMENTS DE TRESORERIE'),
('53', 'CAISSE'),
('53', 'CAISSE'),
('530', 'CAISSE'),
('530', 'CAISSE'),
('531', 'CAISSE'),
('532', 'CAISSE SUCCURSALE A'),
('532', 'CAISSE SUCCURSALE A'),
('533', 'CAISSE SUCCURSALE (OU USINE) B '),
('54', 'REGIES D''AVANCE ET ACCREDITIFS'),
('58', 'VIREMENTS INTERNES'),
('58', 'VIREMENTS INTERNES'),
('580', 'VIREMENTS INTERNES'),
('580', 'VIREMENTS INTERNES'),
('581', 'VIREMNTS DE FONDS INTRASOCIETE'),
('581', 'VIREMNTS DE FONDS INTRASOCIETE'),
('582', 'VIREMENTS INTERNES HONORAIRES'),
('59', 'PROVISIONS POUR DEPRECIATION DES COMPTES FINANCIERS '),
('590', 'PROVISIONS POUR DEPRECIATION DES VALEURS MOBILIERES DE PLACEMENT '),
('6', 'COMPTES DE CHARGES'),
('6', 'COMPTES DE CHARGES'),
('60', 'ACHATS'),
('60', 'ACHATS'),
('601', 'ACHATS STOCKES'),
('602', 'ACHATS STOCKES AUTRES APPRO.'),
('602', 'ACHATS STOCKES AUTRES APPRO.'),
('603', 'VARIATION DES STOCKS'),
('603', 'VARIATION DES STOCKS'),
('604', 'ACHATS PRESTATIONS SERVICES'),
('605', 'ACHATS DE MATERIEL,EQUIPEMENTS'),
('606', 'ACHATS NON STOCKES'),
('606', 'ACHATS NON STOCKES'),
('607', 'ACHATS DE MARCHANDISES'),
('608', '(COMPTE RESERVE, LE CAS ECHEANT, A LA RECAPITULATION DES FRAIS ACCESSOIRES INCORPORES AUX ACHATS) '),
('609', 'R.R.R OBTENUES SUR ACHATS'),
('609', 'R.R.R OBTENUES SUR ACHATS'),
('61', 'SERVICES EXTERIEURS'),
('61', 'SERVICES EXTERIEURS'),
('611', 'SOUS-TRAITANCE GENERALE'),
('611', 'SOUS-TRAITANCE GENERALE'),
('612', 'REDEVANCES DE CREDIT-BAIL'),
('612', 'REDEVANCES DE CREDIT-BAIL'),
('613', 'LOCATIONS'),
('613', 'LOCATIONS'),
('614', 'CHARGES LOCATIVES/COPROPRIETE'),
('614', 'CHARGES LOCATIVES/COPROPRIETE'),
('615', 'ENTRETIEN ET REPARATIONS'),
('615', 'ENTRETIEN ET REPARATIONS'),
('616', 'PRIMES D''ASSURANCE'),
('616', 'PRIMES D''ASSURANCE'),
('617', 'ETUDES ET RECHERCHES'),
('617', 'ETUDES ET RECHERCHES'),
('618', 'DIVERS'),
('618', 'DIVERS'),
('619', 'R.R.R OBTENUS/SUR SERVICES EXT'),
('62', 'AUTRES SERVICES EXTERIEURS'),
('62', 'AUTRES SERVICES EXTERIEURS'),
('621', 'INTERIM'),
('621', 'INTERIM'),
('622', 'REMUNERATIONS INTERMED ET HONO'),
('622', 'REMUNERATIONS INTERMED ET HONO'),
('623', 'PUBLICITE,PUBLICATIONS'),
('623', 'PUBLICITE,PUBLICATIONS'),
('624', 'TRANSPORTS'),
('624', 'TRANSPORTS'),
('625', 'DEPLACEMENTS'),
('625', 'DEPLACEMENTS'),
('626', 'FRAIS POSTAUX ET TELEPHONE'),
('626', 'FRAIS POSTAUX ET TELEPHONE'),
('627', 'SERVICES BANCAIRES'),
('627', 'SERVICES BANCAIRES'),
('628', 'DIVERS'),
('628', 'DIVERS'),
('629', 'RABAIS, REMISES ET RISTOURNES OBTENUS SUR AUTRES SERVICES EXTERIEURS '),
('63', 'IMPOTS ET TAXES'),
('63', 'IMPOTS ET TAXES'),
('631', 'IMPOTS ET TAXES/REMUNERATIONS'),
('631', 'IMPOTS ET TAXES/REMUNERATIONS'),
('632', 'CHARGES FISCALES/CP'),
('633', 'IMPOTS ET TAXES/REMUNERATIONS'),
('635', 'AUTRES IMPOTS ET TAXES'),
('635', 'AUTRES IMPOTS ET TAXES'),
('637', 'AUTRES IMPOTS (AUTRES ORG)'),
('637', 'AUTRES IMPOTS (AUTRES ORG)'),
('64', 'CHARGES PERSONNEL'),
('64', 'CHARGES PERSONNEL'),
('641', 'REMUNERATION DU PERSONNEL'),
('641', 'REMUNERATION DU PERSONNEL'),
('642', ''),
('644', 'REMUNERATION DU TRAVAIL DE L''EXPLOITANT '),
('645', 'CHARGES DE S.S ET PREVOYANCE'),
('645', 'CHARGES DE S.S ET PREVOYANCE'),
('646', 'COTISATIONS SOCIALES PERSONNELLES DE L''EXPLOITANT '),
('647', 'AUTRES CHARGES SOCIALES'),
('647', 'AUTRES CHARGES SOCIALES'),
('648', 'AUTRES CHARGES DE PERSONNEL'),
('648', 'AUTRES CHARGES DE PERSONNEL'),
('65', 'AUTRES CH. DE GESTION COURANTE'),
('65', 'AUTRES CH. DE GESTION COURANTE'),
('650', ''),
('650', ''),
('651', 'Autres taxes et redevances'),
('652', 'REDEVANCE'),
('653', 'JETONS DE PRESENCE'),
('654', 'PERTES/CREANCES IRRECOUVRABLES'),
('654', 'PERTES/CREANCES IRRECOUVRABLES'),
('655', 'QUOTE-PART DE RESULTAT SUR OPERATIONS FAITES EN COMMUN '),
('658', 'CH. DIVERSES GESTION COURANTE'),
('658', 'CH. DIVERSES GESTION COURANTE'),
('66', 'CHARGES FINANCIERES'),
('66', 'CHARGES FINANCIERES'),
('661', 'CHARGES D''INTERETS'),
('661', 'CHARGES D''INTERETS'),
('664', 'PERTES SUR CREANCES LIEES A DES PARTICIPATIONS '),
('665', 'ESCOMPTES ACCORDéS'),
('666', 'PERTES DE CHANGE'),
('667', 'CHARGES NETTES SUR CESSIONS DE VALEURS MOBILIERES DE PLACEMENT '),
('668', 'AUTRES CHARGES FINANCIERES'),
('668', 'AUTRES CHARGES FINANCIERES'),
('67', 'CHARGES EXCEPTIONNELLES'),
('67', 'CHARGES EXCEPTIONNELLES'),
('671', 'AUTRES CHARGES FINANCIERES'),
('671', 'AUTRES CHARGES FINANCIERES'),
('672', 'CHARGES EXCPT / EXERCICE ANTE.'),
('672', 'CHARGES EXCPT / EXERCICE ANTE.'),
('675', 'VALEURS COMPTA ELEMENTS ACTIFS'),
('675', 'VALEURS COMPTA ELEMENTS ACTIFS'),
('676', ''),
('676', ''),
('678', 'AUTRES CHARGES EXCEPTIONNELLES'),
('678', 'AUTRES CHARGES EXCEPTIONNELLES'),
('68', 'DOTATIONS AMORT.ET PROVISIONS'),
('68', 'DOTATIONS AMORT.ET PROVISIONS'),
('681', 'D.A.P CHARGES D''EXPLOITATION'),
('681', 'D.A.P CHARGES D''EXPLOITATION'),
('686', 'D.A.P CHARGES FINANCIERES'),
('687', 'D.A.P CHARGES EXCEPTIONNELLES'),
('687', 'D.A.P CHARGES EXCEPTIONNELLES'),
('69', 'PART.DES SALARIES-IMPOTS/BENEF'),
('69', 'PART.DES SALARIES-IMPOTS/BENEF'),
('691', 'PARTICIPATION SALARIES'),
('691', 'PARTICIPATION SALARIES'),
('695', 'IMPOTS SUR LES BENEFICES'),
('695', 'IMPOTS SUR LES BENEFICES'),
('696', 'SUPPLEMENTS D''IMPOT SUR LES SOCIETES LIES AUX DISTRIBUTIONS '),
('697', 'IMPOSITION FORFAITAIRE SOCIETE'),
('698', 'INTEGRATION FISCALE'),
('699', 'PRODUITS - REPORTS EN ARRIERE DES DEFICITS '),
('699', 'PRODUITS - REPORTS EN ARRIERE DES DEFICITS '),
('7', 'COMPTES DE PRODUITS'),
('7', 'COMPTES DE PRODUITS'),
('70', 'VENTES PRODUITS PREST SERVICES'),
('70', 'VENTES PRODUITS PREST SERVICES'),
('700', ''),
('700', ''),
('701', 'VENTES DE PRODUITS FINIS'),
('702', 'VENTES DE PRODUITS INTERMEDIAIRES '),
('703', 'VENTES DE PRODUITS RESIDUELS'),
('704', 'TRAVAUX'),
('705', 'ETUDES'),
('706', 'PRESTATIONS DE SERVICE'),
('706', 'PRESTATIONS DE SERVICE'),
('707', 'VENTES DE MARCHANDISES'),
('708', 'PRODUITS ACTIVITES ANNEXES'),
('708', 'PRODUITS ACTIVITES ANNEXES'),
('709', 'RABAIS, REMISES ET RISTOURNES ACCORDES PAR L''ENTREPRISE '),
('71', 'PRODUCTION STOCKEE (OU DESTOCKAGE)'),
('713', 'VARIATION DES STOCKS (EN-COURS DE PRODUCTION, PRODUITS) '),
('716', ''),
('72', 'PRODUCTION IMMOBILISEE'),
('72', 'PRODUCTION IMMOBILISEE'),
('721', 'IMMOBILISATIONS INCORPORELLES'),
('722', 'IMMOBILISATIONS CORPORELLES'),
('722', 'IMMOBILISATIONS CORPORELLES'),
('74', 'Subventions d''expmoitation'),
('74', 'SUBVENTIONS D''EXPLOITATION'),
('740', ''),
('741', ''),
('748', ''),
('748', ''),
('75', 'AUTRES PRODUITS GESTION'),
('75', 'AUTRES PRODUITS GESTION'),
('751', 'REDEVANCES POUR BREVETS ...'),
('751', 'REDEVANCES POUR BREVETS ...'),
('752', 'REVENUS DES IMMEUBLES'),
('752', 'REVENUS DES IMMEUBLES'),
('753', 'JETONS DE PRESENCE ET REMUNERATIONS D''ADMINISTRATEURS, GERANTS,... '),
('754', 'RISTOURNES PERÇUES DES COOPERATIVES (PROVENANT DES EXCEDENTS) '),
('754', 'RISTOURNES PERÇUES DES COOPERATIVES (PROVENANT DES EXCEDENTS) '),
('755', 'QUOTES-PARTS DE RESULTAT SUR OPERATIONS FAITES EN COMMUN '),
('758', 'PRODUITS DIVERS GESTION'),
('758', 'PRODUITS DIVERS GESTION'),
('76', 'PRODUITS FINANCIERS'),
('76', 'PRODUITS FINANCIERS'),
('761', 'PRODUITS DE PARTICIPATIONS'),
('762', 'PRODUITS AUTRES IMMOBILISATION'),
('762', 'PRODUITS AUTRES IMMOBILISATION'),
('763', 'REVENUS DES AUTRES CREANCES'),
('764', 'REVENUS SUR V.M.P.'),
('764', 'REVENUS SUR V.M.P.'),
('765', 'ESCOMPTES OBTENUS'),
('765', 'ESCOMPTES OBTENUS'),
('766', 'GAINS DE CHANGE'),
('767', 'PRODUITS NETS / CESSIONS VMP'),
('767', 'PRODUITS NETS / CESSIONS VMP'),
('768', 'AUTRES PRODUITS FINANCIERS'),
('768', 'AUTRES PRODUITS FINANCIERS'),
('77', 'PRODUITS EXCEPTIONNELS'),
('77', 'PRODUITS EXCEPTIONNELS'),
('771', 'PRODUITS EXCEPTIONNELS GESTION'),
('771', 'PRODUITS EXCEPTIONNELS GESTION'),
('772', 'PRODUITS EXCPT / EXERCICES ANT'),
('772', 'PRODUITS EXCPT / EXERCICES ANT'),
('775', 'PDTS CESSIONS ELEMENTS ACTIF'),
('775', 'PDTS CESSIONS ELEMENTS ACTIF'),
('776', ''),
('776', ''),
('777', 'QUOTE-PART DES SUBVENTIONS D''INVESTISSEMENT VIREE AU RESULTAT DE L''EXERCICE '),
('778', 'AUTRES PRODUITS EXCEPTIONNELS'),
('778', 'AUTRES PRODUITS EXCEPTIONNELS'),
('78', 'REPRISES / AMORT. ET PROV.'),
('78', 'REPRISES / AMORT. ET PROV.'),
('781', 'REPRISES / AMORT (PROD. EXPL)'),
('781', 'REPRISES / AMORT (PROD. EXPL)'),
('786', 'REPRISES SUR PROVISIONS POUR RISQUES (A INSCRIRE DANS LES PRODUITS FINANCIERS) '),
('787', 'REPRISES / PROV. (PROD. EXCPT)'),
('787', 'REPRISES / PROV. (PROD. EXCPT)'),
('79', 'TRANSFERT DE CHARGES'),
('79', 'TRANSFERT DE CHARGES'),
('791', 'TRANSFERTS CHARG. EXPLOITATION'),
('791', 'TRANSFERTS CHARG. EXPLOITATION'),
('796', 'TRANSFERTS DE CHARGES FINANCIèRES'),
('797', 'TRANSFERTS DE CHARGES EXCEPTIONNELLES'),
('8', 'RESULTAT'),
('80', 'ENGAGEMENTS*'),
('801', 'ENGAGEMENTS DONNES PAR L''ENTITE*'),
('802', 'ENGAGEMENTS RECUS PAR L''ENTITE*'),
('809', 'CONTREPARTIE DES ENGAGEMENTS*'),
('88', 'RéSULTAT EN INSTANCE D''AFFECTATION'),
('880', ''),
('89', 'BILAN*'),
('890', ''),
('9', ''),
('901', 'COMPTABILISATION DES GRATUITS'),
('99', ''),
('999', '')
;
-- 3/3 : Màj de la table iCTI
UPDATE compta.t_classes_comptes SET texte = w_dbsetup.texte FROM w_dbsetup WHERE t_classes_comptes.code = w_dbsetup.code AND t_classes_comptes.texte = '' ; INSERT INTO compta.t_classes_comptes(code, texte) SELECT code, texte FROM w_dbsetup WHERE code NOT IN (SELECT code FROM compta.t_classes_comptes);

+ 105
- 0
db/data/dbdata_compta_t_classes_sections.SQL View File

@ -0,0 +1,105 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
CASE WHEN t_classes_sections.oid = 0 THEN t_classes_sections.oid ELSE 1 END AS oid,
t_listes_tables.code as table_code,
t_classes.code AS classe_code,
t_classes.sequence as classe_sequence,
t_classes_sections.code,
t_classes_sections.texte,
t_classes_sections.condition,
t_classes_sections.exclude_code,
t_classes_sections.include_code,
0::bigint AS classe_id,
0::bigint AS table_id
FROM compta.t_classes_sections
JOIN compta.t_classes ON t_classes_sections.classe_id = t_classes.oid
JOIN compta.t_listes_tables ON table_id = t_listes_tables.oid
WHERE t_classes.code <> '' AND
(t_classes.is_cti = '1' OR t_classes.code LIKE 'CTI_%') AND
1=1
ORDER BY 2,3,5 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
table_code,
classe_code,
classe_sequence,
code,
texte,
condition,
exclude_code,
include_code,
classe_id,
table_id
)
VALUES
(1, 'CPT', 'CTI_CONTRIBUTION_BLOC_OPERATOIRE', 42, 'S1', 'Consommable', '', '', '', 0, 0),
(1, 'CPT', 'CTI_CONTRIBUTION_BLOC_OPERATOIRE', 42, 'S2', 'Structure', '', '', '', 0, 0),
(1, 'CPT', 'CTI_CONTRIBUTION_BLOC_OPERATOIRE', 42, 'S3', 'Energie', '', '', '', 0, 0)
;
-- 3/3 : Màj de la table iCTI
UPDATE w_dbsetup
SET table_id = t_listes_tables.oid
FROM compta.t_listes_tables
WHERE table_code = t_listes_tables.code
;
UPDATE w_dbsetup
SET classe_id = t_classes.oid
FROM compta.t_classes
WHERE w_dbsetup.classe_code = t_classes.code AND
w_dbsetup.table_id = t_classes.table_id
;
DELETE FROM compta.t_classes_sections
USING
(
SELECT t_classes_sections.classe_id, t_classes_sections.oid
FROM compta.t_classes_sections
LEFT JOIN w_dbsetup ON
w_dbsetup.classe_id = t_classes_sections.classe_id AND
w_dbsetup.code = t_classes_sections.code
WHERE w_dbsetup.oid IS NULL AND
t_classes_sections.classe_id IN (SELECT classe_id FROM w_dbsetup) AND
t_classes_sections.oid NOT IN (SELECT section_id FROM compta.t_classes_sections_elements)
) subview
WHERE subview.classe_id = t_classes_sections.classe_id AND
subview.oid = t_classes_sections.oid
;
UPDATE compta.t_classes_sections SET
texte = w_dbsetup.texte,
condition = w_dbsetup.condition,
exclude_code = w_dbsetup.exclude_code,
include_code = w_dbsetup.include_code
FROM w_dbsetup
WHERE w_dbsetup.classe_id = t_classes_sections.classe_id AND
w_dbsetup.code = t_classes_sections.code AND
(
t_classes_sections.texte IS DISTINCT FROM w_dbsetup.texte OR
t_classes_sections.condition IS DISTINCT FROM w_dbsetup.condition OR
t_classes_sections.exclude_code IS DISTINCT FROM w_dbsetup.exclude_code OR
t_classes_sections.include_code IS DISTINCT FROM w_dbsetup.include_code
)
;
INSERT INTO compta.t_classes_sections(code, texte, classe_id, condition, exclude_code, include_code)
SELECT
w_dbsetup.code,
w_dbsetup.texte,
w_dbsetup.classe_id,
w_dbsetup.condition,
w_dbsetup.exclude_code,
w_dbsetup.include_code
FROM w_dbsetup
WHERE w_dbsetup.classe_id > 0 AND
(w_dbsetup.code||'@'||w_dbsetup.classe_id::text)
NOT IN (SELECT t_classes_sections.code||'@'||t_classes_sections.classe_id FROM compta.t_classes_sections)
;

+ 45
- 0
db/data/dbdata_compta_t_divers.SQL View File

@ -0,0 +1,45 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_divers.code,
t_divers.description,
t_divers.show_info_module,
t_divers.texte,
t_divers.valeur,
t_divers.valeur_date::text
FROM
compta.t_divers
ORDER BY code LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
code,
description,
show_info_module,
texte,
valeur,
valeur_date
)
VALUES
('MOIS_DEBUT', 'Mois de début de la période comptable', 't', 'Mois début période comptable.', '7', '1970-01-01'),
('NOW', 'Date non modifiable', 't', 'Date dernière écriture', '', '1970-01-01'),
('NOWCLOTURE', 'Date non modifiable', 't', 'Date clôture', '', '1970-01-01')
;
-- 3/3 : Màj de la table iCTI
INSERT INTO compta.t_divers(code, description, show_info_module, texte, valeur, valeur_date)
SELECT
w_dbsetup.code,
w_dbsetup.description,
w_dbsetup.show_info_module,
w_dbsetup.texte,
w_dbsetup.valeur,
CASE WHEN w_dbsetup.valeur_date = '' THEN '19700101'::date ELSE w_dbsetup.valeur_date::date END AS valeur_date
FROM
w_dbsetup
WHERE w_dbsetup.code NOT IN (SELECT code from compta.t_divers)
;

+ 112
- 0
db/data/dbdata_compta_t_indicateurs.SQL
File diff suppressed because it is too large
View File


+ 162
- 0
db/data/dbdata_compta_t_listes.SQL View File

@ -0,0 +1,162 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_listes.oid,
t_listes.code,
t_listes.texte,
t_listes.chapitre,
t_listes.contenu_by_code,
t_listes.include_code,
t_listes.exclude_code,
t_listes.is_cti,
t_listes.show_omit,
t_listes.utilisateur_createur,
t_listes.est_partagee_modification,
t_listes_tables.name as table_name
FROM
compta.t_listes,
compta.t_listes_tables
WHERE
(is_cti = '1' OR t_listes.code LIKE 'CTI%')
AND t_listes.code <> ''
AND table_id = t_listes_tables.oid
ORDER BY t_listes.code LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
code,
texte,
chapitre,
contenu_by_code,
include_code,
exclude_code,
is_cti,
show_omit,
utilisateur_createur,
est_partagee_modification,
table_name
)
VALUES
(1, 'CTISIG2AC', 'SIG2. AUTRES ACHATS ET CHARGES EXTERNES', 'SIG2', '1', '[CLASSE:CTISIG03:D650][CLASSE:CTISIG03:E*][CLASSE:CTISIG03:F*][CLASSE:CTISIG03:G*]', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2CA', 'SIG2. CHIFFRE D''AFFAIRE', 'SIG2', '1', '[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B7065]', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2EB', 'SIG2. EBIT', 'SIG2', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2EBDR', 'SIG2. EBITDAR', 'SIG2', '1', '[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B*][CLASSE:CTISIG03:C*][CLASSE:CTISIG03:D*][CLASSE:CTISIG03:E*][CLASSE:CTISIG03:F*][CLASSE:CTISIG03:G*]', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2EDITDA', 'SIG2. EDITDA', 'SIG2', '1', '[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B*][CLASSE:CTISIG03:C*][CLASSE:CTISIG03:D*][CLASSE:CTISIG03:E*][CLASSE:CTISIG03:F*][CLASSE:CTISIG03:G*][CLASSE:CTISIG03:H6132]', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2HA', 'SIG2. ACHATS ET VARIATIONS DE STOCKS', 'SIG2', '1', '60*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2PX', 'SIG2. PRODUITS D''EXPLOITATION', 'SIG2', '1', '[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B*][CLASSE:CTISIG03:C*]', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2RN', 'SIG2. RESULTAT NET', 'SIG2', '1', '6* 7*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2SE', 'SIG2. SERVICES EXTERIEURS', 'SIG2', '1', '61*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIG2TO', 'SIG2. TOTAL', 'SIG2', '0', '601 602 6061 6062 6063 6064 6068 6111 6131 6151 6161 6221 6231 6261 6281 6211', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGAUACEX', 'CTISIG. Autres achats et charges externes', 'SIG', '1', '604* 605* 606* 61* 62*', '621*', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGAUCHGC', 'CTISIG. Autres charges de gestion courante', 'SIG', '1', '65*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGAUPRGC', 'CTISIG. Autres produits de gestion courante', 'SIG', '1', '75*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGCA', 'CTISIG. Chiffre d''affaire', 'SIG', '1', '70*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGCHEX', 'CTISIG. Charges exceptionnelles', 'SIG', '1', '67* 687*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGCHFI', 'CTISIG. Charges financières', 'SIG', '1', '66* 686*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGCHFICB', 'CTISIG. Charges financières sur crédit-bail', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGCHPR', 'CTISIG. Charges de personnel', 'SIG', '1', '64*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGCOACMA', 'CTISIG. Coût d''achat des marchandises vendues', 'SIG', '1', '607* 6087* 6037* 6047* 6057* 6067* 6097*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGCOACMP', 'CTISIG. Coût d''achat matières premières et approv.', 'SIG', '1', '601* 602* 6091* 6092* 6093*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGDOAMCB', 'CTISIG. Dotations aux amortissements de crédit-bail', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGDOAMDP', 'CTISIG. Dotations aux amortissements, dépréciations et provisions', 'SIG', '1', '681*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGEXBREX', 'CTISIG. Excédent brut d''exploitation', 'SIG', '1', '707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62* 63* 64* 74*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGIMBE', 'CTISIG. Impôts sur les bénéfices', 'SIG', '1', '695*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGIMTX', 'CTISIG. Impôts et taxes', 'SIG', '1', '63*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGIMTXHV', 'CTISIG. Impôts et taxes hors valeur ajoutée', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGJOU', 'SIG : Liste des journaux fin d''exercice', 'SIG', '0', '', '', '1', '1', '*CTI', '1', 't_journaux'),
(1, 'CTISIGJSAUFJRN', 'CTISIG. Journaux à omettre des SIG', '', '0', '', '', '0', '0', 'cti', '1', 't_journaux'),
(1, 'CTISIGMACO', 'CTISIG. Marge commerciale', 'SIG', '1', '707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPASA', 'CTISIG. Participation des salariés', 'SIG', '1', '691*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPEEX', 'CTISIG. Personnel extérieur', 'SIG', '1', '621*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPREX', 'CTISIG. Production de l''exercice', 'SIG', '1', '707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPRFI', 'CTISIG. Produits financiers', 'SIG', '1', '76* 786* 796*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPRIM', 'CTISIG. Production immobilisée', 'SIG', '1', '72*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPRSTDE', 'CTISIG. Production stockée ou déstockage', 'SIG', '1', '713*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPRVE', 'CTISIG. Production vendue', 'SIG', '1', '701* 702* 703* 704* 705* 706* 708* 709*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGPRXX', 'CTISIG. Produits exceptionnels', 'SIG', '1', '77* 787* 797*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGQPOPCO', 'CTISIG. Quote-part sur opérations faites en commun', 'SIG', '1', '755* 655*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGRCB', 'CTISIG. Redevance crédit-bail (mobilier)', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGREDCB', 'CTISIG. Redevances crédit-bail', 'SIG', '1', '612*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGRPAMDP', 'CTISIG. Reprises sur amort. dépréciations et provisions', 'SIG', '1', '781*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGRSCO', 'CTISIG. Résultat courant', 'SIG', '1', '707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62* 63* 64* 74* 781* 791* 75* 681* 65* 76* 786* 796* 66* 686* 755* 655*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGRSEX', 'CTISIG. Résultat d''exploitation', 'SIG', '1', '707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62* 63* 64* 74* 781* 791* 75* 681* 65*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGRSNT', 'CTISIG. Résultat net', 'SIG', '1', '6* 7*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGRSXX', 'CTISIG. Résultat exceptionnel', 'SIG', '1', '77* 787* 797* 67* 687*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGSOTRDI', 'CTISIG. Sous-traitance directe', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGSTPR', 'CTISIG. Sous-traitance production', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGSUEX', 'CTISIG. Subventions d''exploitation', 'SIG', '1', '74*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGSUPR', 'CTISIG. Subventions de production', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGSUVTMA', 'CTISIG. Subventions sur ventes de marchandise', 'SIG', '0', '', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGTRCHEX', 'CTISIG. Transferts de charges d''exploitation', 'SIG', '1', '791*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGVAAJ', 'CTISIG. Valeur ajoutée', 'SIG', '1', '707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62*', '621*', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGVAST', 'CTISIG. Variations de stock', 'SIG', '1', '6031* 6032*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTISIGVTMA', 'CTISIG. Ventes de marchandises', 'SIG', '1', '707* 7097*', '', '1', '0', '*CTI', '1', 't_comptes'),
(1, 'CTITYPEGES', 'Gestion', '', '0', '', '', '1', '0', '*CTI', '1', 't_types_compta'),
(1, 'CTI_TYP_BIL', 'Bilan', '', '0', '', '', '1', '0', '*CTI', '1', 't_types_compta')
;
-- 3/3 : Màj de la table iCTI
UPDATE compta.t_listes SET
texte = w_dbsetup.texte,
chapitre = w_dbsetup.chapitre,
contenu_by_code= w_dbsetup.contenu_by_code,
include_code = w_dbsetup.include_code,
exclude_code = w_dbsetup.exclude_code,
is_cti = w_dbsetup.is_cti,
show_omit = w_dbsetup.show_omit,
utilisateur_createur = w_dbsetup.utilisateur_createur,
est_partagee_modification = w_dbsetup.est_partagee_modification,
table_id = t_listes_tables.oid
FROM
w_dbsetup,
compta.t_listes_tables
WHERE
w_dbsetup.table_name = t_listes_tables.name
AND t_listes.code = w_dbsetup.code
;
INSERT INTO compta.t_listes(
code,
texte,
chapitre,
contenu_by_code,
include_code,
exclude_code,
is_cti,
show_omit,
utilisateur_createur,
est_partagee_modification,
table_id
)
SELECT
w_dbsetup.code,
w_dbsetup.texte,
w_dbsetup.chapitre,
w_dbsetup.contenu_by_code,
w_dbsetup.include_code,
w_dbsetup.exclude_code,
w_dbsetup.is_cti,
w_dbsetup.show_omit,
w_dbsetup.utilisateur_createur,
w_dbsetup.est_partagee_modification,
t_listes_tables.oid
FROM
w_dbsetup,
compta.t_listes_tables
WHERE
w_dbsetup.table_name = t_listes_tables.name
AND w_dbsetup.code NOT IN (SELECT code FROM compta.t_listes)
AND w_dbsetup.texte NOT LIKE '*SUPPRIME%'
;
DELETE FROM compta.t_listes WHERE texte like '*SUPPRIME%' AND is_cti = '1'
;
SELECT base.cti_initialize_listes_by_code('compta');

+ 75
- 0
db/data/dbdata_compta_t_listes_tables.SQL View File

@ -0,0 +1,75 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT oid, name, texte, select_cmd, code FROM compta.t_listes_tables ORDER BY code LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
name,
texte,
select_cmd,
code
)
VALUES
(1, 't_sections_analytiques', 'Sections analytiques', 'SELECT oid, code, texte, '''' as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''sections_analytiques_c'') THEN ''O'' ELSE ''N'' END as utilise FROM compta.t_sections_analytiques WHERE oid > 0 ORDER BY code', 'ANA'),
(1, 't_sections_analytiques_c', 'Sections analytiques Clinique', 'SELECT oid, code, texte, '''' as complement, ''O'' as utilise FROM compta.t_sections_analytiques WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''sections_analytiques_c'') ORDER BY code', 'ANAC'),
(1, 't_comptes', 'Comptes', 'SELECT t_comptes.oid, t_comptes.numero as code, t_comptes.texte, t_types_compta.texte as complement, CASE WHEN t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table IN (''comptes_c'', ''comptes_h'', ''comptes_extra_c'', ''comptes_extra_h'')) THEN ''O'' ELSE ''N'' END as utilise FROM compta.t_comptes, compta.t_types_compta WHERE t_comptes.oid > 0 AND t_comptes.type_compta_id = t_types_compta.oid
AND t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table IN (''comptes_c'', ''comptes_h'', ''comptes_extra_c'', ''comptes_extra_h'')) ORDER BY code', 'CPT'),
(1, 't_comptes_c', 'Comptes Clinique', 'SELECT t_comptes.oid, t_comptes.numero as code, t_comptes.texte, t_types_compta.texte as complement, ''O'' as utilise FROM compta.t_comptes, compta.t_types_compta WHERE t_comptes.oid > 0 AND t_comptes.type_compta_id = t_types_compta.oid AND t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''comptes_c'') ORDER BY code', 'CPTC'),
(1, 't_comptes_h', 'Comptes Honoraires', 'SELECT t_comptes.oid, t_comptes.numero as code, t_comptes.texte, t_types_compta.texte as complement, ''O'' as utilise FROM compta.t_comptes, compta.t_types_compta WHERE t_comptes.oid > 0 AND t_comptes.type_compta_id = t_types_compta.oid AND t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''comptes_h'') ORDER BY code', 'CPTH'),
(1, 't_activites_cout_patient_shs', 'Cout patient SHS. Activités', 'SELECT t_activites_cout_patient_shs.oid, t_activites_cout_patient_shs.code, t_activites_cout_patient_shs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_activites_cout_patient_shs LEFT JOIN compta.p_oids ON (t_activites_cout_patient_shs.oid = p_oids.oid AND code_table = ''activites_cout_patient_shs'')
WHERE t_activites_cout_patient_shs.oid > 0
ORDER BY t_activites_cout_patient_shs.code', 'CSA'),
(1, 't_elements_cout_patient_shs', 'Cout patient SHS. Eléments de cout', 'SELECT t_elements_cout_patient_shs.oid, t_elements_cout_patient_shs.code, t_elements_cout_patient_shs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_elements_cout_patient_shs LEFT JOIN compta.p_oids ON (t_elements_cout_patient_shs.oid = p_oids.oid AND code_table = ''etages_cout_patient_shs'')
WHERE t_elements_cout_patient_shs.oid > 0
ORDER BY t_elements_cout_patient_shs.code', 'CSC'),
(1, 't_etages_cout_patient_shs', 'Cout patient SHS. Etages', 'SELECT t_etages_cout_patient_shs.oid, t_etages_cout_patient_shs.code, t_etages_cout_patient_shs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_etages_cout_patient_shs LEFT JOIN compta.p_oids ON (t_etages_cout_patient_shs.oid = p_oids.oid AND code_table = ''etages_cout_patient_shs'')
WHERE t_etages_cout_patient_shs.oid > 0
ORDER BY t_etages_cout_patient_shs.code', 'CSE'),
(1, 't_services_facturation_cout_patient_shs', 'Cout patient SHS. Services', 'SELECT t_services_facturation_cout_patient_shs.oid, t_services_facturation_cout_patient_shs.code, t_services_facturation_cout_patient_shs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_services_facturation_cout_patient_shs LEFT JOIN compta.p_oids ON (t_services_facturation_cout_patient_shs.oid = p_oids.oid AND code_table = ''services_facturation_cout_patient_shs'')
WHERE t_services_facturation_cout_patient_shs.oid > 0
ORDER BY t_services_facturation_cout_patient_shs.code', 'CSF'),
(1, 't_ghm_cout_patient_shs', 'Cout patient SHS. GHM', 'SELECT t_ghm_cout_patient_shs.oid, t_ghm_cout_patient_shs.code, t_ghm_cout_patient_shs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_ghm_cout_patient_shs LEFT JOIN compta.p_oids ON (t_ghm_cout_patient_shs.oid = p_oids.oid AND code_table = ''ghm_cout_patient_shs'')
WHERE t_ghm_cout_patient_shs.oid > 0
ORDER BY t_ghm_cout_patient_shs.code', 'CSG'),
(1, 't_ghs_cout_patient_shs', 'Cout patient SHS. GHS', 'SELECT t_ghs_cout_patient_shs.oid, t_ghs_cout_patient_shs.code, t_ghs_cout_patient_shs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_ghs_cout_patient_shs LEFT JOIN compta.p_oids ON (t_ghs_cout_patient_shs.oid = p_oids.oid AND code_table = ''ghs_cout_patient_shs'')
WHERE t_ghs_cout_patient_shs.oid > 0
ORDER BY t_ghs_cout_patient_shs.code', 'CSH'),
(1, 't_medecins_cout_patient_shs', 'Cout patient SHS. Médecins', 'SELECT t_medecins_cout_patient_shs.oid, t_medecins_cout_patient_shs.code, t_medecins_cout_patient_shs.nom || '' '' || t_medecins_cout_patient_shs.prenom AS texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_medecins_cout_patient_shs LEFT JOIN compta.p_oids ON (t_medecins_cout_patient_shs.oid = p_oids.oid AND code_table = ''medecins_cout_patient_shs'')
WHERE t_medecins_cout_patient_shs.oid > 0
ORDER BY t_medecins_cout_patient_shs.code', 'CSM'),
(1, 't_unites_oeuvres_shs', 'Cout patient SHS. Unités d''oeuvre', 'SELECT t_unites_oeuvre_shs.oid, t_unites_oeuvre_shs.code, t_unites_oeuvre_shs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM compta.t_unites_oeuvre_shs LEFT JOIN compta.p_oids ON (t_unites_oeuvre_shs.oid = p_oids.oid AND code_table = ''etages_cout_patient_shs'')
WHERE t_unites_oeuvre_shs.oid > 0
ORDER BY t_unites_oeuvre_shs.code', 'CSU'),
(1, 't_journaux', 'Journaux', 'SELECT t_journaux.oid, t_journaux.code, t_journaux.texte, subview.clinique_honoraire as complement, ''O'' as utilise FROM compta.t_journaux,
(SELECT oid, trim(MAX(CASE WHEN code_table = ''journaux_c'' THEN ''CLINIQUE'' ELSE '''' END) || '' '' || MAX(CASE WHEN code_table = ''journaux_h'' THEN ''HONORAIRE'' ELSE '''' END)) as clinique_honoraire FROM compta.p_oids WHERE code_table IN (''journaux_c'', ''journaux_h'') GROUP BY oid
) subview
WHERE t_journaux.oid > 0 AND t_journaux.oid = subview.oid
ORDER BY code', 'JRN'),
(1, 't_journaux_c', 'Journaux Clinique', 'SELECT oid, code, texte, '''' as complement, ''O'' as utilise FROM compta.t_journaux WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''journaux_c'') ORDER BY code', 'JRNC'),
(1, 't_journaux_h', 'Journaux Honoraires', 'SELECT oid, code, texte, '''' as complement, ''O'' as utilise FROM compta.t_journaux WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''journaux_h'') ORDER BY code', 'JRNH'),
(1, 't_partenaires', 'Partenaires', 'SELECT oid, code, texte, subview.comptes as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table IN (''partenaires_c'', ''partenaires_h'')) THEN ''O'' ELSE ''N'' END as utilise FROM compta.t_partenaires LEFT JOIN (SELECT partenaire_id, base.cti_group_concat(DISTINCT compte_numero || '' '' || substr(compte_texte, 1 , 15)) as comptes FROM compta.v_historique_ecritures_total_1 GROUP BY partenaire_id) subview ON (subview.partenaire_id = t_partenaires.oid) WHERE oid > 0 ORDER BY code', 'PAR'),
(1, 't_partenaires_c', 'Partenaires Clinique', 'SELECT oid, code, texte, subview.comptes as complement, ''O'' as utilise FROM compta.t_partenaires LEFT JOIN (SELECT partenaire_id, base.cti_group_concat(DISTINCT compte_numero || '' '' || substr(compte_texte, 1 , 15)) as comptes FROM compta.v_historique_ecritures_total_1 GROUP BY partenaire_id) subview ON (subview.partenaire_id = t_partenaires.oid) WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''partenaires_c'') ORDER BY code', 'PARC'),
(1, 't_partenaires_h', 'Partenaires Honoraires', 'SELECT oid, code, texte, subview.comptes as complement, ''O'' as utilise FROM compta.t_partenaires LEFT JOIN (SELECT partenaire_id, base.cti_group_concat(DISTINCT compte_numero || '' '' || substr(compte_texte, 1 , 15)) as comptes FROM compta.v_historique_ecritures_total_1 GROUP BY partenaire_id) subview ON (subview.partenaire_id = t_partenaires.oid) WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''partenaires_h'') ORDER BY code', 'PARH'),
(1, 't_sites', 'Sites', 'SELECT oid, code, texte, '''' as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table IN (''sites_c'', ''t_sites_h'')) THEN ''O'' ELSE ''N'' END as utilise FROM compta.t_sites WHERE oid > 0 ORDER BY code', 'SIT'),
(1, 't_sites_c', 'Sites Clinique', 'SELECT oid, code, texte, '''' as complement, ''O'' as utilise FROM compta.t_sites WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''sites_c'') ORDER BY code', 'SITC'),
(1, 't_sites_h', 'Sites Honoraires', 'SELECT oid, code, texte, '''' as complement, ''O'' as utilise FROM compta.t_sites WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = ''sites_h'') ORDER BY code', 'SITH'),
(1, 't_types_compta', 'Types comptabilité', 'SELECT oid, code, texte, '''' as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table In (''types_compta_c'', ''types_compta_extra_c'', ''types_compta_h'', ''types_compta_extra_h'')) THEN ''O'' ELSE ''N'' END as utilise FROM compta.t_types_compta WHERE oid > 0 ORDER BY code', 'TYP'),
(1, 't_types_compta_c', 'Types comptabilité Clinique', 'SELECT oid, code, texte, '''' as complement, ''O'' as utilise FROM compta.t_types_compta WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table In (''types_compta_c'', ''types_compta_extra_c'')) ORDER BY code', 'TYPC'),
(1, 't_types_compta_h', 'Types comptabilité Honoraires', 'SELECT oid, code, texte, '''' as complement, ''O'' as utilise FROM compta.t_types_compta WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table In (''types_compta_h'', ''types_compta_extra_h'')) ORDER BY code', 'TYPH')
;
-- 3/3 : Màj de la table iCTI
UPDATE compta.t_listes_tables SET code = w_dbsetup.code, texte = w_dbsetup.texte, select_cmd = w_dbsetup.select_cmd FROM w_dbsetup WHERE t_listes_tables.name = w_dbsetup.name; INSERT INTO compta.t_listes_tables(oid, code, name, texte, select_cmd) SELECT oid, code, name, texte, select_cmd FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM compta.t_listes_tables); INSERT INTO compta.t_listes_tables(code, name, texte, select_cmd) SELECT code, name, texte, select_cmd FROM w_dbsetup WHERE oid <> 0 AND name NOT IN (SELECT name FROM compta.t_listes_tables);

+ 26
- 0
db/data/dbdata_compta_t_rapports.SQL View File

@ -0,0 +1,26 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT oid, code, texte, is_cti, is_essentiel FROM compta.t_rapports WHERE is_cti = '1' ORDER BY code LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
code,
texte,
is_cti,
is_essentiel
)
VALUES
(1, 'CTI_BAL1', 'X EXEMPLE CTI - Balance', '1', '0'),
(1, 'CTI_ESS_1', 'COMPTA Essentiels 1', '1', '1'),
(1, 'CTI_ESS_2', 'COMPTA Essentiels 2', '1', '1'),
(1, 'CTI_PF_AGG', 'CTI Portfolio', '1', '1'),
(1, 'CTI_PORTFO', 'CTI Portfolio ', '1', '1')
;
-- 3/3 : Màj de la table iCTI
UPDATE compta.t_rapports SET texte = w_dbsetup.texte, is_cti = w_dbsetup.is_cti, is_essentiel = w_dbsetup.is_essentiel FROM w_dbsetup WHERE t_rapports.code = w_dbsetup.code; INSERT INTO compta.t_rapports(oid, code, texte, is_cti, is_essentiel) SELECT oid, code, texte, is_cti, is_essentiel FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM compta.t_rapports); INSERT INTO compta.t_rapports(code, texte, is_cti, is_essentiel) SELECT code, texte, is_cti, is_essentiel FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM compta.t_rapports);

+ 207
- 0
db/data/dbdata_compta_t_rapports_rubriques.SQL View File

@ -0,0 +1,207 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_rapports_rubriques.numero_rubrique,
t_rapports_rubriques.entete,
t_rapports_rubriques.entete_etendue,
t_rapports_rubriques.output_format,
t_rapports_rubriques.width,
t_rapports_rubriques.periode_reference,
t_rapports_rubriques.row_height,
t_rapports_rubriques.padding,
t_rapports_rubriques.font_size,
t_rapports_rubriques.font_weight,
t_rapports_rubriques.border_thickness,
t_rapports_rubriques.color,
t_rapports_rubriques.base_nationale,
t_rapports_rubriques.base_nationale_qualifiee,
t_rapports_rubriques.background_color,
t_rapports_rubriques.viewlink,
t_rapports_rubriques.viewlink_label,
t_rapports_rubriques.viewlink_param,
t_rapports_rubriques.picto_enabled,
t_rapports_rubriques.positif_is_good,
COALESCE(ind2.code, 'PAS_DE_CODE') as indicateur_associe_code,
t_rapports.code AS rapport_code,
ind1.code AS indicateur_code
FROM
compta.t_rapports_rubriques
JOIN compta.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
JOIN compta.t_indicateurs ind1 ON t_rapports_rubriques.indicateur_id = ind1.oid
LEFT JOIN compta.t_indicateurs ind2 ON t_rapports_rubriques.indicateur_associe_id = ind2.oid
WHERE 1=1
AND ind1.is_cti = '1'
AND ind1.code <> ''
AND t_rapports.is_cti = '1'
AND ind2.is_cti IS DISTINCT FROM '0'
ORDER BY
t_rapports.code,
ind1.code,
t_rapports_rubriques.numero_rubrique
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
numero_rubrique,
entete,
entete_etendue,
output_format,
width,
periode_reference,
row_height,
padding,
font_size,
font_weight,
border_thickness,
color,
base_nationale,
base_nationale_qualifiee,
background_color,
viewlink,
viewlink_label,
viewlink_param,
picto_enabled,
positif_is_good,
indicateur_associe_code,
rapport_code,
indicateur_code
)
VALUES
(1, '', 'SOLDE INTERMEDIAIRE DE GESTION (synthèse)', '', 0, ' ', 26, 0, 18, 'bold ', 2, '0x6633 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG - CTI synthèse', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI77', ' ', ' ', 'PAS_DE_CODE', 'CTI_ESS_1', 'CTI_SEP'),
(15, '', 'k. Autres achats et charges externes', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Autres achats et charges externes', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI47', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGAUACEX'),
(27, '', 'u. Autres charges de gestion courante ', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Autres charges de gestion courante', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI48', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGAUCHGC'),
(24, '', 'r. Autres produits de gestion courante', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Autres produits de gestion courante', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI49', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGAUPRGC'),
(2, '', 'Chiffre d''affaire :', '', 0, ' ', 0, 0, 12, 'bold ', 0, '0x0 ', '0', '0', ' ', 'COMPTA000057', 'SIG - CHIFFRE D''AFFAIRE', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI50', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGCA'),
(36, '', 'Charges exceptionnelles', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Charges exceptionnelles', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI51', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGCHEX'),
(31, '', 'x. Charges financières', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Charges financières', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS46 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI52', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGCHFI'),
(32, '', 'y. Charges financières sur crédit-bail', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Charges financières sur crédit-bail', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI53', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGCHFICB'),
(20, '', 'o. Charges de personnel ', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Charges de personnel', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI54', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGCHPR'),
(5, '', 'c. Coût d''achat des marchandises vendues ', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Coût d''achat des marchandises vendues', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI55', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGCOACMA'),
(13, '', 'i. Coût d''achat matières premières et approv.', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Coût d''achat matières premières et approv.', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI56', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGCOACMP'),
(28, '', 'v. Dotations aux amortissements de crédit-bail', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Dotations aux amortissement de crédit-bail', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI57', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGDOAMCB'),
(26, '', 't. Dotations aux amortissements, dépréciations et provisions', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Dotations aux amortissements, dépréciations et provisions', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI58', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGDOAMDP'),
(22, '', '1. Excédent brut d''exploitation (II+m+n+o+p)', '', 0, ' ', 0, 0, 12, 'bold ', 0, '0x6600 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI EXCEDENT BRUT D''EXPLOITATION', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS32 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS17 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI59', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGEXBREX'),
(19, '', 'n. Impôts et taxes', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Impôts et taxes', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI61', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGIMTX'),
(16, '', 'l. Impôts et taxes hors valeur ajoutée', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Impôts et taxes hors valeur ajoutée', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI62', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGIMTXHV'),
(6, '', 'Marge commerciale :', '', 0, ' ', 0, 0, 12, 'bold ', 0, '0x0 ', '0', '0', ' ', 'COMPTA000057', 'SIG - MARGE COMMERCIALE', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI64', '0', '0', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGMACO'),
(21, '', 'p. Personnel extérieur', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Personnel extérieur', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI66', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGPEEX'),
(12, '', 'I. PRODUCTION DE L''EXERCICE (a+b+c+d+e+f+g+h)', '', 0, ' ', 26, 0, 14, 'bold ', 2, '0x6633 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI PRODUCTION DE L''EXERCICE', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI67', '0', '0', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGPREX'),
(30, '', 'w. Produits financiers', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Produits financiers', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI68', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGPRFI'),
(10, '', 'g. Production immobilisée ', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Production immobilisée', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS28 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI69', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGPRIM'),
(9, '', 'f. Production stockée ou déstockage', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Production stockée ou déstockage', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI70', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGPRSTDE'),
(7, '', 'd. Production vendue', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG Production vendue', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI71', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGPRVE'),
(35, '', 'Produits exceptionnels', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Produits exceptionnels', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI72', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGPRXX'),
(33, '', 'z. Quote-part sur opérations faites en commun', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Quote-part sur opérations faites en commun', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI73', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGQPOPCO'),
(23, '', 'q. Reprises sur amort. dépréciations et provisions', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Reprises sur amort. dépréciations et provisions', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI74', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGRPAMDP'),
(34, '', '3. Résultat courant (2+/-y+v-w-x)', '', 0, ' ', 0, 0, 12, 'bold ', 0, '0x6600 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI RESULTAT COURANT', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI75', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGRSCO'),
(29, '', '2. Résultat exploitation (1+q+r+s-t-u)', '', 0, ' ', 0, 0, 12, 'bold ', 0, '0x6600 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI RESULTAT D''EXPLOITATION', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS18 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS19 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI76', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGRSEX'),
(38, 'RESULTAT NET', 'RESULTAT NET', '', 0, ' ', 26, 0, 14, 'bold ', 2, '0x990000 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI RESULTAT NET', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI77', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGRSNT'),
(37, '', '4. Résultat exceptionnel (Produits except. - Charges except.)', '', 0, ' ', 0, 0, 12, 'bold ', 0, '0x6600 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI RESULTAT EXCEPTIONNEL', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI78', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGRSXX'),
(11, '', 'h. Sous-traitance production', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Sous-traitance production', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI80', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGSTPR'),
(18, '', 'm. Subventions d''exploitation', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Subventions d''exploitation', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI81', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGSUEX'),
(8, '', 'e. Subventions de production', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Subventions de production', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI82', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGSUPR'),
(4, '', 'b. Subventions sur ventes de marchandise', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Subventions sur ventes de marchandise', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI83', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGSUVTMA'),
(17, '', 'II. VALEUR AJOUTEE (I-(i+j+k+l))', '', 0, ' ', 26, 0, 14, 'bold ', 2, '0x6633 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI VALEUR AJOUTEE', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI85', '0', '0', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGVAAJ'),
(14, '', 'j. Variations de stock', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG - Variations de stock', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI86', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGVAST'),
(3, '', 'a. Vente de marchandises ', '', 0, ' ', 0, 10, 12, ' ', 0, ' ', '0', '0', ' ', 'COMPTA000057', 'SIG -Ventes de marchandises', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI87', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_1', 'L_CTISIGVTMA'),
(1, '', 'SOLDE INTERMEDIAIRE DE GESTION (détaillé)', '', 0, ' ', 28, 0, 18, 'bold ', 2, '0x6633 ', '0', '0', '0xcccccc ', 'COMPTA000057', 'SIG CTI détaillé', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=SAISIECODE & COMPTE_C_CODES=6*,7*', ' ', ' ', 'PAS_DE_CODE', 'CTI_ESS_2', 'CTI_SEP'),
(40, '', 'G. Dotations aux amortissements, dépréciations et provisions', '', 0, ' ', 0, 10, 0, ' ', 0, '0x0 ', '0', '0', ' ', 'COMPTA000057', 'SIG CTI Niveau 2 - Dotations aux amort.', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI58', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_2', 'L_CTISIGDOAMDP'),
(41, '', 'H. Redevance crédit-bail (mobilier) ', '#', 0, ' ', 0, 10, 0, ' ', 0, '0x0 ', '0', '0', ' ', 'COMPTA000057', 'SIG CTI Niveau 2 - Redevance crédit-bail (mobilier)', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI107', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_2', 'L_CTISIGRCB'),
(39, '', 'F. Reprises sur amort. dépréciations et provisions ', '', 0, ' ', 0, 10, 0, ' ', 0, '0x0 ', '0', '0', ' ', 'COMPTA000057', 'SIG CTI Niveau 2 - Reprises sur amort.', 'MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI74', '1', '1', 'PAS_DE_CODE', 'CTI_ESS_2', 'L_CTISIGRPAMDP')
;
-- 3/3 : Màj de la table iCTI
-- Sauvegarder les données sources pour rejouer le spécifique
SELECT base.cti_verify_table_encoding('compta','t_rapports_rubriques')
;
DROP TABLE IF EXISTS w_specific_rapports_rubriques ;
CREATE TEMP TABLE w_specific_rapports_rubriques AS
SELECT t_rapports_rubriques.*
FROM compta.t_rapports_rubriques
JOIN compta.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
WHERE t_rapports.is_essentiel = '1'
;
-- Installer les données CTI
DELETE FROM compta.t_rapports_rubriques
WHERE 1=1
AND rapport_id IN (SELECT oid FROM compta.t_rapports WHERE is_cti = '1')
;
INSERT INTO compta.t_rapports_rubriques(
rapport_id,
numero_rubrique,
indicateur_id,
entete,
entete_etendue,
output_format,
width,
periode_reference,
row_height,
padding,
font_size,
font_weight,
border_thickness,
color,
base_nationale,
base_nationale_qualifiee,
background_color,
viewlink,
viewlink_label,
viewlink_param,
picto_enabled,
positif_is_good,
indicateur_associe_id
)
SELECT
t_rapports.oid,
numero_rubrique,
ind1.oid,
w_dbsetup.entete,
w_dbsetup.entete_etendue,
w_dbsetup.output_format,
w_dbsetup.width,
w_dbsetup.periode_reference,
w_dbsetup.row_height,
w_dbsetup.padding,
w_dbsetup.font_size,
w_dbsetup.font_weight,
w_dbsetup.border_thickness,
w_dbsetup.color,
w_dbsetup.base_nationale,
w_dbsetup.base_nationale_qualifiee,
w_dbsetup.background_color,
w_dbsetup.viewlink,
w_dbsetup.viewlink_label,
w_dbsetup.viewlink_param,
w_dbsetup.picto_enabled,
w_dbsetup.positif_is_good,
COALESCE(ind2.oid, 0)
FROM
w_dbsetup
JOIN compta.t_rapports ON w_dbsetup.rapport_code = t_rapports.code
JOIN compta.t_indicateurs ind1 ON w_dbsetup.indicateur_code = ind1.code
LEFT JOIN compta.t_indicateurs ind2 ON w_dbsetup.indicateur_associe_code = ind2.code
;
-- Rejouer le spécifique
UPDATE compta.t_rapports_rubriques SET
is_hide = w_specific_rapports_rubriques.is_hide,
specific_viewlink = w_specific_rapports_rubriques.specific_viewlink,
specific_viewlink_label = w_specific_rapports_rubriques.specific_viewlink_label,
specific_viewlink_param = w_specific_rapports_rubriques.specific_viewlink_param
FROM w_specific_rapports_rubriques
WHERE w_specific_rapports_rubriques.rapport_id = t_rapports_rubriques.rapport_id AND
w_specific_rapports_rubriques.indicateur_id = t_rapports_rubriques.indicateur_id AND
w_specific_rapports_rubriques.entete_etendue = t_rapports_rubriques.entete_etendue AND
(
w_specific_rapports_rubriques.is_hide = '1' OR
w_specific_rapports_rubriques.specific_viewlink <> '' OR
w_specific_rapports_rubriques.specific_viewlink_label <> '' OR
w_specific_rapports_rubriques.specific_viewlink_param <> ''
)
;

+ 2
- 0
db/data2/dbdata_compta_t_classes.csv View File

@ -0,0 +1,2 @@
oid|table_code|code|sequence_source|texte|is_cti|contenu_by_code|contenu_non_replicable_ailleurs|sequence|table_id
1|CPT|CTI_CONTRIBUTION_BLOC_OPERATOIRE|42|Coût des charges pour le calcul de la contribution|1|0|0|0|0

+ 370
- 0
db/data2/dbdata_compta_t_classes_comptes.csv View File

@ -0,0 +1,370 @@
code|texte
00|
000|
1|CAPITAUX (CLASSE 1)
10|CAPITAL ET RÉSERVES
101|Capital
102|Fonds fiduciaires
104|Primes liées au capital social
105|Écarts de réévaluation
106|Réserves
107|Écart d'équivalence
108|Compte de l'exploitant
109|Actionnaires : Capital souscrit - non appelé
11|REPORT A NOUVEAU (solde créditeur ou débiteur)
110|Report à nouveau (solde créditeur)
119|Report à nouveau (solde débiteur)
12|RÉSULTAT DE L'EXERCICE (bénéfice ou perte)
120|Résultat de l'exercice (bénéfice)
129|Résultat de l'exercice (perte)
13|SUBVENTIONS D'INVESTISSEMENT
131|Subventions d'équipement
138|Autres subventions d'investissement (même ventilation que celle du compte 131)
139|Subventions d'investissement inscrites au compte de résultat
14|PROVISIONS RÉGLEMENTÉES
142|Provisions réglementées relatives aux immobilisations
143|Provisions réglementées relatives aux stocks
144|Provisions réglementées relatives aux autres éléments de l'actif
145|Amortissements dérogatoires
146|Provision spéciale de réévaluation
147|Plus - values réinvesties
148|Autres provisions réglementées
15|PROVISIONS
151|Provisions pour risques
153|Provisions pour pensions et obligations similaires
154|Provisions pour restructurations
155|Provisions pour impôts
156|Provisions pour renouvellement des immobilisations (entreprises concessionnaires)
157|Provisions pour charges à répartir sur plusieurs exercices
158|Autres provisions pour charges
16|EMPRUNTS ET DETTES ASSIMILÉES
161|Emprunts obligataires convertibles
162|Obligations représentatives de passifs nets remis en fiducie
163|Autres emprunts obligataires
164|Emprunts auprès des établissements de crédit
165|Dépôts et cautionnements reçus
166|Participation des salariés aux résultats
167|Emprunts et dettes assortis de conditions particulières
168|Autres emprunts et dettes assimilées
169|Primes de remboursement des obligations
17|DETTES RATTACHÉES A DES PARTICIPATIONS
171|Dettes rattachées à des participations (groupe)
174|Dettes rattachées à des participations (hors groupe)
178|Dettes rattachées à des sociétés en participation
18|COMPTES DE LIAISON DES ÉTABLISSEMENTS ET SOCIÉTÉS EN PARTICIPATION
181|Comptes de liaison des établissements
186|Biens et prestations de services échangés entre établissements (charges)
187|Biens et prestations de services échangés entre établissements (produits)
188|Comptes de liaison des sociétés en participation
2|IMMOBILISATIONS (CLASSE 2)
20|IMMOBILISATIONS INCORPORELLES
201|Frais d'établissement
203|Frais de recherche et de développement
205|Concessions et droits similaires, brevets, licences, marques, procédés, logiciels, droits et valeurs similaires
206|Droit au bail
207|Fonds commercial
208|Autres immobilisations incorporelles
21|IMMOBILISATIONS CORPORELLES
211|Terrains
212|Agencements et aménagements de terrains (même ventilation que celle du compte 211)
213|Constructions
214|Constructions sur sol d'autrui (même ventilation que celle du compte 213)
215|Installations techniques, matériels et outillage industriels
218|Autres immobilisations corporelles
22|IMMOBILISATIONS MISES EN CONCESSION
23|IMMOBILISATIONS EN COURS
231|Immobilisations corporelles en cours
232|Immobilisations incorporelles en cours
237|Avances et acomptes versés sur immobilisations incorporelles
238|Avances et acomptes versés sur commandes d'immobilisations corporelles
25|PARTS DANS DES ENTREPRISES LIÉES ET CRÉANCES SUR DES ENTREPRISES LIÉES
26|PARTICIPATIONS ET CRÉANCES RATTACHÉES À DES PARTICIPATIONS
261|Titres de participation
266|Autres formes de participation
267|Créances rattachées à des participations
268|Créances rattachées à des sociétés en participation
269|Versements restant à effectuer sur titres de participation non libérés
27|AUTRES IMMOBILISATIONS FINANCIÈRES
271|Titres immobilisés autres que les titres immobilisés de l'activité de portefeuille (droit de propriété)
272|Titres immobilisés (droit de créance)
273|Titres immobilisés de l'activité de portefeuille
274|Prêts
275|Dépôts et cautionnements versés
276|Autres créances immobilisées
277|Actions propres ou parts propres
278|Mali de fusion sur actifs financiers (1)
279|Versements restant à effectuer sur titres immobilisés non libérés
28|AMORTISSEMENTS DES IMMOBILISATIONS
280|Amortissements des immobilisations incorporelles
281|Amortissements des immobilisations corporelles
282|Amortissements des immobilisations mises en concession
29|DÉPRÉCIATIONS DES IMMOBILISATIONS
290|Dépréciations des immobilisations incorporelles
291|dépréciations des immobilisations corporelles (même ventilation que celle du compte 21)
292|dépréciations des immobilisations mises en concession
293|dépréciations des immobilisations en cours
296|Dépréciations des participations et créances rattachées à des participations ?
297|Dépréciations des autres immobilisations financières
3|COMPTE DES STOCKS ET EN-COURS (CLASSE 3)
31|MATIÈRES PREMIÈRES (ET FOURNITURES)
311|Matières (ou groupe) A
312|Matières (ou groupe) B
317|Fournitures A, B, C, ...
32|AUTRES APPROVISIONNEMENTS
321|Matières consommables
322|Fournitures consommables
326|Emballages
33|EN-COURS DE PRODUCTION DE BIENS
331|Produits en cours
335|Travaux en cours
34|EN-COURS DE PRODUCTION DE SERVICES
341|Études en cours
345|Prestations de services en cours
35|STOCKS DE PRODUITS
351|Produits intermédiaires
355|Produits finis
358|Produits résiduels (ou matières de récupération)
36|(compte à ouvrir, le cas échéant, sous l'intitulé « stocks provenant d'immobilisations »)
37|STOCKS DE MARCHANDISES
371|Marchandises (ou groupe) A
372|Marchandises (ou groupe) B
38|(lorsque l'entité tient un inventaire permanent en comptabilité générale, le compte 38 peut être utilisé pour comptabiliser les stocks en voie d'acheminement, mis en dépôt ou donnés en consignation)
39|DÉPRÉCIATIONS DES STOCKS ET EN-COURS
391|Dépréciations des matières premières (et fournitures)
392|Dépréciations des autres approvisionnements
393|Dépréciations des en-cours de production de biens
394|Dépréciations des en-cours de production de services
395|Dépréciations des stocks de produits
397|Dépréciations des stocks de marchandises
4|TIERS (CLASSE 4)
40|FOURNISSEURS ET COMPTES RATTACHÉS
400|Fournisseurs et Comptes rattachés
401|Fournisseurs
403|Fournisseurs - Effets à payer
404|Fournisseurs d'immobilisations
405|Fournisseurs d'immobilisations - Effets à payer
408|Fournisseurs - Factures non parvenues
409|Fournisseurs débiteurs
41|CLIENTS ET COMPTES RATTACHÉS
410|Clients et Comptes rattachés
411|Clients
413|Clients - Effets à recevoir
416|Clients douteux ou litigieux
418|Clients - Produits non encore facturés
419|Clients créditeurs
42|PERSONNEL ET COMPTES RATTACHÉS
421|Personnel - Rémunérations dues
422|Comités d'entreprises, d'établissement, ...
424|Participation des salariés aux résultats
425|Personnel - Avances et acomptes
426|Personnel ? Dépôts
427|Personnel - Oppositions
428|Personnel - Charges à payer et produits à recevoir
43|SÉCURITÉ SOCIALE ET AUTRES ORGANISMES SOCIAUX
431|Sécurité sociale
437|Autres organismes sociaux
438|Organismes sociaux - Charges à payer et produits à recevoir
44|ETAT ET AUTRES COLLECTIVITÉS PUBLIQUES
441|Etat - Subventions à recevoir
442|Contributions, impôts et taxes recouvrés pour le compte de l'Etat (2)
443|Opérations particulières avec l'État, les collectivités publiques, les organismes internationaux
444|État - Impôts sur les bénéfices
445|État - Taxes sur le chiffre d'affaires
446|Obligations cautionnées
447|Autres impôts, taxes et versements assimilés
448|État - Charges à payer et produits à recevoir
449|Quotas d'émission à acquérir
45|GROUPE ET ASSOCIÉS
451|Groupe
455|Associés - Comptes courants
456|Associés - Opérations sur le capital
457|Associés - Dividendes à payer
458|Associés - Opérations faites en commun et en G.I.E.
46|DÉBITEURS DIVERS ET CRÉDITEURS DIVERS
462|Créances sur cessions d'immobilisations
464|Dettes sur acquisitions de valeurs mobilières de placement
465|Créances sur cessions de valeurs mobilières de placement
467|Autres comptes débiteurs ou créditeurs
468|Divers - Charges à payer et produits à recevoir
47|COMPTES TRANSITOIRES OU D'ATTENTE
471|Comptes d'attente
472|Comptes d'attente
473|Comptes d'attente
474|Différences d'évaluation de jetons sur des passifs
475|Comptes d'attente
476|Différence de conversion - ACTIF
477|Différences de conversion - PASSIF
478|Autres comptes transitoires
48|COMPTES DE RÉGULARISATION
481|Charges à répartir sur plusieurs exercices
486|Charges constatées d'avance
487|Produits constatés d'avance
488|Comptes de répartition périodique des charges et des produits
49|DÉPRÉCIATIONS DES COMPTES DE TIERS
491|Dépréciations des comptes de clients
495|Dépréciations des comptes du groupe et des associés
496|Dépréciations des comptes de débiteurs divers
5|FINANCIERS (CLASSE 5)
50|VALEURS MOBILIÈRES DE PLACEMENT
501|Parts dans des entreprises liées
502|Actions propres
503|Actions
504|Autres titres conférant un droit de propriété
505|Obligations et bons émis par la société et rachetés par elle
506|Obligations
507|Bons du Trésor et bons de caisse à court terme
508|Autres valeurs mobilières de placement et autres créances assimilées
509|Versements restant à effectuer sur valeurs mobilières de placement non libérées
51|BANQUES, ÉTABLISSEMENTS FINANCIERS ET ASSIMILÉS
511|Valeurs à l'encaissement
512|Banques
514|Chèques postaux
515|« Caisses » du Trésor et des établissements publics
516|Sociétés de bourse
517|Autres organismes financiers
518|Intérêts courus
519|Concours bancaires courants
52|INSTRUMENTS FINANCIERS À TERME ET JETONS DÉTENUS
521|Instruments financiers à terme
522|Jetons détenus
523|Jetons auto-détenus
524|Jetons empruntés
53|CAISSE
531|Caisse siège social
532|Caisse succursale (ou usine) A
533|Caisse succursale (ou usine) B
54|RÉGIES D'AVANCE ET ACCRÉDITIFS
58|VIREMENTS INTERNES
59|DÉPRÉCIATIONS DES COMPTES FINANCIERS
590|Dépréciations des valeurs mobilières de placement
6|CHARGES (CLASSE 6)
60|ACHATS (sauf 603)
601|Achats stockés - Matières premières (et fournitures)
602|Achats stockés - Autres approvisionnements
604|Achats d'études et prestations de services
605|Achats de matériel, équipements et travaux
606|Achats non stockés de matières et fournitures
607|Achats de marchandises
608|(Compte réservé, le cas échéant, à la récapitulation des frais accessoires incorporés aux achats)
609|Rabais, remises et ristournes obtenus sur achats
603|VARIATIONS DES STOCKS (approvisionnements et marchandises)
61|SERVICES EXTÉRIEURS
611|Sous-traitance générale
612|Redevances de crédit-bail
613|Locations
614|Charges locatives et de copropriété
615|Entretien et réparations
616|Primes d'assurances
617|Études et recherches
618|Divers
619|Rabais, remises et ristournes obtenus sur services extérieurs
62|AUTRES SERVICES EXTÉRIEURS
621|Personnel extérieur à l'entreprise
622|Rémunérations d'intermédiaires et honoraires
623|Publicité, publications, relations publiques
624|Transports de biens et transports collectifs du personnel
625|Déplacements, missions et réceptions
626|Frais postaux et de télécommunications
627|Services bancaires et assimilés
628|Divers
629|Rabais, remises et ristournes obtenus sur autres services extérieurs
63|IMPÔTS, TAXES ET VERSEMENTS ASSIMILÉS
631|Impôts, taxes et versements assimilés sur rémunérations (administrations des impôts)
633|Impôts, taxes et versements assimilés sur rémunérations (autres organismes)
635|Autres impôts, taxes et versements assimilés (administrations des impôts)
637|Autres impôts, taxes et versements assimilés (autres organismes)
64|CHARGES DE PERSONNEL
641|Rémunérations du personnel
644|Rémunération du travail de l'exploitant
645|Charges de sécurité sociale et de prévoyance
646|Cotisations sociales personnelles de l'exploitant
647|Autres charges sociales
648|Autres charges de personnel
65|AUTRES CHARGES DE GESTION COURANTE
651|Redevances pour concessions, brevets, licences, marques, procédés, logiciels, droits et valeurs similaires
653|Jetons de présence
654|Pertes sur créances irrécouvrables
655|Quotes - parts de résultat sur opérations faites en commun
656|Pertes de change sur créances commerciales
658|Charges diverses de gestion courante
66|CHARGES FINANCIÈRES
661|Charges d'intérêts
664|Pertes sur créances liées à des participations
665|Escomptes accordés
666|Pertes de change financières
667|Charges nettes sur cessions de valeurs mobilières de placement
668|Autres charges financières
67|CHARGES EXCEPTIONNELLES
671|Charges exceptionnelles sur opérations de gestion
672|(Compte à la disposition des entités pour enregistrer, en cours d'exercice, les charges sur exercices antérieurs)
674|Opérations de constitution ou liquidation des fiducies
675|Valeurs comptables des éléments d'actif cédés
678|Autres charges exceptionnelles
68|DOTATIONS AUX AMORTISSEMENTS, DÉPRÉCIATIONS ET PROVISIONS
681|Dotations aux amortissements, dépréciations et provisions ? Charges d'exploitation
686|Dotations aux amortissements, dépréciations et provisions - Charges financières
687|Dotations aux amortissements dépréciations et provisions - Charges exceptionnelles
69|PARTICIPATION DES SALARIÉS - IMPÔTS SUR LES BÉNÉFICES ET ASSIMILÉS
691|Participation des salariés aux résultats
695|Impôts sur les bénéfices
696|Suppléments d'impôt sur les sociétés liés aux distributions
698|Intégration fiscale
699|Produits - Report en arrière des déficits
7|PRODUITS (CLASSE 7)
70|VENTES DE PRODUITS FABRIQUÉS, PRESTATIONS DE SERVICES, MARCHANDISES
701|Ventes de produits finis
702|Ventes de produits intermédiaires
703|Ventes de produits résiduels
704|Travaux
705|Études
706|Prestations de services
707|Ventes de marchandises
708|Produits des activités annexes
709|Rabais, remises et ristournes accordés par l'entreprise
71|PRODUCTION STOCKÉE (OU DÉSTOCKAGE)
713|Variation des stocks (en-cours de production, produits)
72|PRODUCTION IMMOBILISÉE
721|Immobilisations incorporelles
722|Immobilisations corporelles
74|SUBVENTIONS D'EXPLOITATION
75|AUTRES PRODUITS DE GESTION COURANTE
751|Redevances pour concessions, brevets, licences, marques, procédés, logiciels, droits et valeurs similaires
752|Revenus des immeubles non affectés à des activités professionnelles
753|Jetons de présence et rémunérations d'administrateurs, gérants
754|Ristournes perçues des coopératives (provenant des excédents)
755|Quotes - parts de résultat sur opérations faites en commun
756|Gains de change sur créances commerciales
758|Produits divers de gestion courante
76|PRODUITS FINANCIERS
761|Produits de participations
762|Produits des autres immobilisations financières
763|Revenus des autres créances
764|Revenus des valeurs mobilières de placement
765|Escomptes obtenus
766|Gains de change
767|Produits nets sur cessions de valeurs mobilières de placement
768|Autres produits financiers
77|PRODUITS EXCEPTIONNELS
771|Produits exceptionnels sur opérations de gestion
772|(Compte à la disposition des entités pour enregistrer, en cours d'exercice, les produits sur exercices antérieurs)
774|Opérations de constitution ou liquidation des fiducies
775|Produits des cessions d'éléments d'actif
777|Quote - part des subventions d'investissement virée au résultat de l'exercice
778|Autres produits exceptionnels
78|REPRISES SUR AMORTISSEMENTS, DÉPRÉCIATIONS ET PROVISIONS
781|Reprises sur amortissements, dépréciations et provisions (à inscrire dans les produits d'exploitation)
786|Reprises sur dépréciations et provisions (à inscrire dans les produits financiers)
787|Reprises sur dépréciations et provisions (à inscrire dans les produits exceptionnels)
79|TRANSFERTS DE CHARGES
791|Transferts de charges d'exploitation
796|Transferts de charges financières
797|Transferts de charges exceptionnelles
8|RESULTAT
80|ENGAGEMENTS*
801|ENGAGEMENTS DONNES PAR L'ENTITE*
802|ENGAGEMENTS RECUS PAR L'ENTITE*
809|CONTREPARTIE DES ENGAGEMENTS*
88|RéSULTAT EN INSTANCE D'AFFECTATION
89|BILAN*
9|
901|COMPTABILISATION DES GRATUITS

+ 4
- 0
db/data2/dbdata_compta_t_classes_sections.csv View File

@ -0,0 +1,4 @@
oid|table_code|classe_code|classe_sequence|code|texte|condition|exclude_code|include_code|classe_id|table_id
1|CPT|CTI_CONTRIBUTION_BLOC_OPERATOIRE|42|S1|Consommable||||0|0
1|CPT|CTI_CONTRIBUTION_BLOC_OPERATOIRE|42|S2|Structure||||0|0
1|CPT|CTI_CONTRIBUTION_BLOC_OPERATOIRE|42|S3|Energie||||0|0

+ 4
- 0
db/data2/dbdata_compta_t_divers.csv View File

@ -0,0 +1,4 @@
code|description|show_info_module|texte|valeur|valeur_date
MOIS_DEBUT|Mois de début de la période comptable|t|Mois début période comptable.|7|1970-01-01
NOW|Date non modifiable|t|Date dernière écriture||1970-01-01
NOWCLOTURE|Date non modifiable|t|Date clôture||1970-01-01

+ 59
- 0
db/data2/dbdata_compta_t_indicateurs.csv View File

@ -0,0 +1,59 @@
oid|texte|table_name|column_name|is_cti|entete|code|total_function|output_format|width|entete_etendue|dimension_date_1|dimension_date_2|dimension_date_3|dimension_date_4|dimension_date_5|dimension_date|indicateur_associe_1_code|indicateur_associe_2_code|indicateur_associe_3_code|indicateur_associe_4_code|indicateur_associe_5_code|indicateur_associe_6_code|indicateur_associe_7_code|indicateur_associe_8_code|indicateur_associe_9_code|indicateur_associe_10_code|indicateur_associe_11_code|indicateur_associe_12_code|indicateur_associe_13_code|indicateur_associe_14_code|indicateur_associe_15_code|indicateur_associe_16_code|indicateur_associe_17_code|indicateur_associe_18_code|indicateur_associe_19_code|indicateur_associe_20_code|indicateur_reference_code
1|BILAN Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code IN ('1', '2', '3', '4', '5') THEN montant_solde_debit ELSE 0 END|1|BILAN|CTI_BILC|SUM|#E|80|BILAN|4| | | | |4|CTI_CL6C|CTI_CL7C|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CAPITAUX Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code = '1' THEN montant_solde_debit ELSE 0 END|1|CAPITAUX|CTI_CL1C|SUM|#E|80|CAPITAUX|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|IMMOBILISATIONS Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code = '2' THEN montant_solde_debit ELSE 0 END|1|IMMOBILISATIONS|CTI_CL2C|SUM|#E|80|IMMOBILISATIONS|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|STOCKS Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code = '3' THEN montant_solde_debit ELSE 0 END|1|STOCKS|CTI_CL3C|SUM|#E|80|STOCKS|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CLIENTS Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_2_code = '41' THEN montant_solde_debit ELSE 0 END|1|CLIENTS|CTI_CL41C|SUM|#E|80|CLIENTS|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CLIENTS Honoraires|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'H' AND classe_2_code = '41' THEN montant_solde_debit ELSE 0 END|1|CLIENTS H|CTI_CL41H|SUM|#E|80|CLIENTS Honoraires|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|COMPTES DE TIERS Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code = '4' THEN montant_solde_debit ELSE 0 END|1|COMPTES DE TIERS|CTI_CL4C|SUM|#E|80|COMPTES DE TIERS|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|COMPTES FINANCIERS Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code = '5' THEN montant_solde_debit ELSE 0 END|1|COMPTES FINANCIERS|CTI_CL5C|SUM|#E|80|COMPTES FINANCIERS|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|COMPTES DE CHARGE Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code = '6' THEN montant_solde_debit ELSE 0 END|1|COMPTES DE CHARGE|CTI_CL6C|SUM|#E|80|COMPTES DE CHARGE|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|COMPTES DE PRODUIT Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code = '7' THEN montant_solde_debit ELSE 0 END|1|COMPTES DE PRODUIT|CTI_CL7C|SUM|#E|80|COMPTES DE PRODUIT|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|Erreur|SEP||1||CTI_ERROR|SEP|#|0||0| | | | |0|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|X. EXEMPLE CTI. Choix d'un compte|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND compte_numero = '41110000' THEN montant_solde_debit ELSE 0 END|1|Exemple CTI. Choix d'un compte|CTI_EXEMPLE1|SUM|#E|0|Exemple CTI. Choix d'un compte|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|X. EXEMPLE CTI. Choix d'une liste de comptes|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND compte_numero IN ('41110000', '4114000', '41180000') THEN montant_solde_debit ELSE 0 END|1|Exemple CTI. Choix d'une liste de comptes|CTI_EXEMPLE2|SUM|#E|0|Exemple CTI. Choix d'une liste de comptes|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|X. EXEMPLE CTI. Choix de comptes (début du code)|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND compte_numero LIKE '4111%' THEN montant_solde_debit ELSE 0 END|1|Exemple CTI. Choix de comptes (début du code)|CTI_EXEMPLE3|SUM|#E|0|Exemple CTI. Choix de comptes (début du code)|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|X. EXEMPLE CTI. Choix de comptes (plusieurs début du code)|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND (compte_numero LIKE '4111%' OR compte_numero LIKE '4114%' OR compte_numero LIKE '4118%' ) THEN montant_solde_debit ELSE 0 END|1|Exemple CTI. Choix de comptes (plusieurs début du code)|CTI_EXEMPLE4|SUM|#E|0|Exemple CTI. Choix de comptes (plusieurs début du code)|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|X. EXEMPLE CTI. Choix d'un journal|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_code = '071' THEN montant_debit ELSE 0 END|1|Exemple CTI. Choix d'un journal|CTI_EXEMPLE5|SUM|#E|0|Exemple CTI. Choix d'un journal|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|GESTION Clinique|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND classe_1_code IN ('6', '7') THEN montant_solde_debit ELSE 0 END|1|GESTION|CTI_GESC|SUM|#E|80|GESTION|4| | | | |4|CTI_CL6C|CTI_CL7C|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI. Montant crédit|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' THEN montant_solde_credit ELSE 0 END|1|Montant crédit|CTI_MTCREDIT|SUM|#|0|Montant crédit|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI. Montant débit|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' THEN montant_solde_credit ELSE 0 END|1|Montant débit|CTI_MTDEBIT|SUM|#|0|Montant débit|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|Calcul d'indicateurs dans le rapport|*RAPPORTCALC||1||CTI_RAPPORTCALC|sum|#|0||0| | | | |0|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|Séparateur|SEP|0|1||CTI_SEP|SEP|#|0||0| | | | |0|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Autres achats et charges externes|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGAUACEX] THEN montant_solde_credit ELSE 0 END|1|Autres achats et charges externes|L_CTISIGAUACEX|SUM|#|0|Autres achats et charges externes|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Autres charges de gestion courante|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGAUCHGC] THEN montant_solde_credit ELSE 0 END|1|Autres charges de gestion courante|L_CTISIGAUCHGC|SUM|#|0|Autres charges de gestion courante|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Autres produits de gestion courante|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGAUPRGC] THEN montant_solde_credit ELSE 0 END|1|Autres produits de gestion courante|L_CTISIGAUPRGC|SUM|#|0|Autres produits de gestion courante|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Chiffre d'affaire|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGCA] THEN montant_solde_credit ELSE 0 END|1|Chiffre d'affaire|L_CTISIGCA|SUM|#|0|Chiffre d'affaire|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Charges exceptionnelles|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGCHEX] THEN montant_solde_credit ELSE 0 END|1|Charges exceptionnelles|L_CTISIGCHEX|SUM|#|0|Charges exceptionnelles|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Charges financières|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGCHFI] THEN montant_solde_credit ELSE 0 END|1|Charges financières|L_CTISIGCHFI|SUM|#|0|Charges financières|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Charges financières sur crédit-bail|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGCHFICB] THEN montant_solde_credit ELSE 0 END|1|Charges financières sur crédit-bail|L_CTISIGCHFICB|SUM|#|0|Charges financières sur crédit-bail|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Charges de personnel|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGCHPR] THEN montant_solde_credit ELSE 0 END|1|Charges de personnel|L_CTISIGCHPR|SUM|#|0|Charges de personnel|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Coût d'achat des marachandises vendues|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGCOACMA] THEN montant_solde_credit ELSE 0 END|1|Coût d'achat des marachandises vendues|L_CTISIGCOACMA|SUM|#|0|Coût d'achat des marachandises vendues|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Coût d'achat matières premières et approv.|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGCOACMP] THEN montant_solde_credit ELSE 0 END|1|Coût d'achat matières premières et approv.|L_CTISIGCOACMP|SUM|#|0|Coût d'achat matières premières et approv.|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Dotations aux amortissements de crédit-bail|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGDOAMCB] THEN montant_solde_credit ELSE 0 END|1|SIG. Dotations aux amortissements de crédit-bail|L_CTISIGDOAMCB|SUM|#|0|SIG. Dotations aux amortissements de crédit-bail|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Dotations aux amortissements, dépréciations et provisions|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGDOAMDP] THEN montant_solde_credit ELSE 0 END|1|Dotations aux amortissements, dépréciations et provisions|L_CTISIGDOAMDP|SUM|#|0|Dotations aux amortissements, dépréciations et provisions|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Excédent brut d'exploitation|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGEXBREX] THEN montant_solde_credit ELSE 0 END|1|Excédent brut d'exploitation|L_CTISIGEXBREX|SUM|#|0|Excédent brut d'exploitation|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Impôts et taxes|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGIMTX] THEN montant_solde_credit ELSE 0 END|1|Impôts et taxes|L_CTISIGIMTX|SUM|#|0|Impôts et taxes|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Impôts et taxes hors valeur ajoutée|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGIMTXHV] THEN montant_solde_credit ELSE 0 END|1|Impôts et taxes hors valeur ajoutée|L_CTISIGIMTXHV|SUM|#|0|Impôts et taxes hors valeur ajoutée|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Marge commerciale|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGMACO] THEN montant_solde_credit ELSE 0 END|1|Marge commerciale|L_CTISIGMACO|SUM|#|0|Marge commerciale|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Personnel extérieur|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGPEEX] THEN montant_solde_credit ELSE 0 END|1|Personnel extérieur|L_CTISIGPEEX|SUM|#|0|Personnel extérieur|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Production de l'exercice|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGPREX] THEN montant_solde_credit ELSE 0 END|1|Production de l'exercice|L_CTISIGPREX|SUM|#|0|Production de l'exercice|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Produits financiers|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGPRFI] THEN montant_solde_credit ELSE 0 END|1|Produits financiers|L_CTISIGPRFI|SUM|#|0|Produits financiers|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Production immobilisée|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGPRIM] THEN montant_solde_credit ELSE 0 END|1|Production immobilisée|L_CTISIGPRIM|SUM|#|0|Production immobilisée|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Production stockée ou déstockage|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGPRSTDE] THEN montant_solde_credit ELSE 0 END|1|Production stockée ou déstockage|L_CTISIGPRSTDE|SUM|#|0|Production stockée ou déstockage|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Production vendue|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGPRVE] THEN montant_solde_credit ELSE 0 END|1|Production vendue|L_CTISIGPRVE|SUM|#|0|Production vendue|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Produits exceptionnels|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGPRXX] THEN montant_solde_credit ELSE 0 END|1|Produits exceptionnels|L_CTISIGPRXX|SUM|#|0|Produits exceptionnels|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Quote-part sur opérations faites en commun|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGQPOPCO] THEN montant_solde_credit ELSE 0 END|1|Quote-part sur opérations faites en commun|L_CTISIGQPOPCO|SUM|#|0|Quote-part sur opérations faites en commun|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Redevance crédit-bail (mobilier)|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGRCB] THEN montant_solde_credit ELSE 0 END|1|Redevance crédit-bail (mobilier)|L_CTISIGRCB|SUM|#|0|Redevance crédit-bail (mobilier)|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Reprises sur amort. dépréciations et provisions|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGRPAMDP] THEN montant_solde_credit ELSE 0 END|1|Reprises sur amort. dépréciations et provisions|L_CTISIGRPAMDP|SUM|#|0|Reprises sur amort. dépréciations et provisions|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Résultat courant|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGRSCO] THEN montant_solde_credit ELSE 0 END|1|Résultat courant|L_CTISIGRSCO|SUM|#|0|Résultat courant|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Résultat d'exploitation|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGRSEX] THEN montant_solde_credit ELSE 0 END|1|Résultat d'exploitation|L_CTISIGRSEX|SUM|#|0|Résultat d'exploitation|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Résultat net|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGRSNT] THEN montant_solde_credit ELSE 0 END|1|Résultat net|L_CTISIGRSNT|SUM|#|0|Résultat net|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Résultat exceptionnel|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGRSXX] THEN montant_solde_credit ELSE 0 END|1|Résultat exceptionnel|L_CTISIGRSXX|SUM|#|0|Résultat exceptionnel|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Sous-traitance production|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGSTPR] THEN montant_solde_credit ELSE 0 END|1|Sous-traitance production|L_CTISIGSTPR|SUM|#|0|Sous-traitance production|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Subventions d'exploitation|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGSUEX] THEN montant_solde_credit ELSE 0 END|1|Subventions d'exploitation|L_CTISIGSUEX|SUM|#|0|Subventions d'exploitation|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Subventions de production|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGSUPR] THEN montant_solde_credit ELSE 0 END|1|Subventions de production|L_CTISIGSUPR|SUM|#|0|Subventions de production|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Subventions sur ventes de marchandise|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGSUVTMA] THEN montant_solde_credit ELSE 0 END|1|Subventions sur ventes de marchandise|L_CTISIGSUVTMA|SUM|#|0|Subventions sur ventes de marchandise|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Valeur ajoutée|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGVAAJ] THEN montant_solde_credit ELSE 0 END|1|Valeur ajoutée|L_CTISIGVAAJ|SUM|#|0|Valeur ajoutée|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Variations de stock|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGVAST] THEN montant_solde_credit ELSE 0 END|1|Variations de stock|L_CTISIGVAST|SUM|#|0|Variations de stock|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISIG. Ventes de marchandises|v_historique_ecritures_1|CASE WHEN clinique_honoraire = 'C' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:CTISIGVTMA] THEN montant_solde_credit ELSE 0 END|1|Ventes de marchandises|L_CTISIGVTMA|SUM|#|0|Ventes de marchandises|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>

+ 57
- 0
db/data2/dbdata_compta_t_listes.csv View File

@ -0,0 +1,57 @@
oid|code|texte|chapitre|contenu_by_code|include_code|exclude_code|is_cti|show_omit|utilisateur_createur|est_partagee_modification|table_name
1|CTISIG2AC|SIG2. AUTRES ACHATS ET CHARGES EXTERNES|SIG2|1|[CLASSE:CTISIG03:D650][CLASSE:CTISIG03:E*][CLASSE:CTISIG03:F*][CLASSE:CTISIG03:G*]||1|0|*CTI|1|t_comptes
1|CTISIG2CA|SIG2. CHIFFRE D'AFFAIRE|SIG2|1|[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B7065]||1|0|*CTI|1|t_comptes
1|CTISIG2EB|SIG2. EBIT|SIG2|0|||1|0|*CTI|1|t_comptes
1|CTISIG2EBDR|SIG2. EBITDAR|SIG2|1|[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B*][CLASSE:CTISIG03:C*][CLASSE:CTISIG03:D*][CLASSE:CTISIG03:E*][CLASSE:CTISIG03:F*][CLASSE:CTISIG03:G*]||1|0|*CTI|1|t_comptes
1|CTISIG2EDITDA|SIG2. EDITDA|SIG2|1|[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B*][CLASSE:CTISIG03:C*][CLASSE:CTISIG03:D*][CLASSE:CTISIG03:E*][CLASSE:CTISIG03:F*][CLASSE:CTISIG03:G*][CLASSE:CTISIG03:H6132]||1|0|*CTI|1|t_comptes
1|CTISIG2HA|SIG2. ACHATS ET VARIATIONS DE STOCKS|SIG2|1|60*||1|0|*CTI|1|t_comptes
1|CTISIG2PX|SIG2. PRODUITS D'EXPLOITATION|SIG2|1|[CLASSE:CTISIG03:A*][CLASSE:CTISIG03:B*][CLASSE:CTISIG03:C*]||1|0|*CTI|1|t_comptes
1|CTISIG2RN|SIG2. RESULTAT NET|SIG2|1|6* 7*||1|0|*CTI|1|t_comptes
1|CTISIG2SE|SIG2. SERVICES EXTERIEURS|SIG2|1|61*||1|0|*CTI|1|t_comptes
1|CTISIG2TO|SIG2. TOTAL|SIG2|0|601 602 6061 6062 6063 6064 6068 6111 6131 6151 6161 6221 6231 6261 6281 6211||1|0|*CTI|1|t_comptes
1|CTISIGAUACEX|CTISIG. Autres achats et charges externes|SIG|1|604* 605* 606* 61* 62*|621*|1|0|*CTI|1|t_comptes
1|CTISIGAUCHGC|CTISIG. Autres charges de gestion courante|SIG|1|65*||1|0|*CTI|1|t_comptes
1|CTISIGAUPRGC|CTISIG. Autres produits de gestion courante|SIG|1|75*||1|0|*CTI|1|t_comptes
1|CTISIGCA|CTISIG. Chiffre d'affaire|SIG|1|70*||1|0|*CTI|1|t_comptes
1|CTISIGCHEX|CTISIG. Charges exceptionnelles|SIG|1|67* 687*||1|0|*CTI|1|t_comptes
1|CTISIGCHFI|CTISIG. Charges financières|SIG|1|66* 686*||1|0|*CTI|1|t_comptes
1|CTISIGCHFICB|CTISIG. Charges financières sur crédit-bail|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGCHPR|CTISIG. Charges de personnel|SIG|1|64*||1|0|*CTI|1|t_comptes
1|CTISIGCOACMA|CTISIG. Coût d'achat des marchandises vendues|SIG|1|607* 6087* 6037* 6047* 6057* 6067* 6097*||1|0|*CTI|1|t_comptes
1|CTISIGCOACMP|CTISIG. Coût d'achat matières premières et approv.|SIG|1|601* 602* 6091* 6092* 6093*||1|0|*CTI|1|t_comptes
1|CTISIGDOAMCB|CTISIG. Dotations aux amortissements de crédit-bail|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGDOAMDP|CTISIG. Dotations aux amortissements, dépréciations et provisions|SIG|1|681*||1|0|*CTI|1|t_comptes
1|CTISIGEXBREX|CTISIG. Excédent brut d'exploitation|SIG|1|707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62* 63* 64* 74*||1|0|*CTI|1|t_comptes
1|CTISIGIMBE|CTISIG. Impôts sur les bénéfices|SIG|1|695*||1|0|*CTI|1|t_comptes
1|CTISIGIMTX|CTISIG. Impôts et taxes|SIG|1|63*||1|0|*CTI|1|t_comptes
1|CTISIGIMTXHV|CTISIG. Impôts et taxes hors valeur ajoutée|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGJOU|SIG : Liste des journaux fin d'exercice|SIG|0|||1|1|*CTI|1|t_journaux
1|CTISIGJSAUFJRN|CTISIG. Journaux à omettre des SIG||0|||0|0|cti|1|t_journaux
1|CTISIGMACO|CTISIG. Marge commerciale|SIG|1|707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097*||1|0|*CTI|1|t_comptes
1|CTISIGPASA|CTISIG. Participation des salariés|SIG|1|691*||1|0|*CTI|1|t_comptes
1|CTISIGPEEX|CTISIG. Personnel extérieur|SIG|1|621*||1|0|*CTI|1|t_comptes
1|CTISIGPREX|CTISIG. Production de l'exercice|SIG|1|707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72*||1|0|*CTI|1|t_comptes
1|CTISIGPRFI|CTISIG. Produits financiers|SIG|1|76* 786* 796*||1|0|*CTI|1|t_comptes
1|CTISIGPRIM|CTISIG. Production immobilisée|SIG|1|72*||1|0|*CTI|1|t_comptes
1|CTISIGPRSTDE|CTISIG. Production stockée ou déstockage|SIG|1|713*||1|0|*CTI|1|t_comptes
1|CTISIGPRVE|CTISIG. Production vendue|SIG|1|701* 702* 703* 704* 705* 706* 708* 709*||1|0|*CTI|1|t_comptes
1|CTISIGPRXX|CTISIG. Produits exceptionnels|SIG|1|77* 787* 797*||1|0|*CTI|1|t_comptes
1|CTISIGQPOPCO|CTISIG. Quote-part sur opérations faites en commun|SIG|1|755* 655*||1|0|*CTI|1|t_comptes
1|CTISIGRCB|CTISIG. Redevance crédit-bail (mobilier)|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGREDCB|CTISIG. Redevances crédit-bail|SIG|1|612*||1|0|*CTI|1|t_comptes
1|CTISIGRPAMDP|CTISIG. Reprises sur amort. dépréciations et provisions|SIG|1|781*||1|0|*CTI|1|t_comptes
1|CTISIGRSCO|CTISIG. Résultat courant|SIG|1|707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62* 63* 64* 74* 781* 791* 75* 681* 65* 76* 786* 796* 66* 686* 755* 655*||1|0|*CTI|1|t_comptes
1|CTISIGRSEX|CTISIG. Résultat d'exploitation|SIG|1|707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62* 63* 64* 74* 781* 791* 75* 681* 65*||1|0|*CTI|1|t_comptes
1|CTISIGRSNT|CTISIG. Résultat net|SIG|1|6* 7*||1|0|*CTI|1|t_comptes
1|CTISIGRSXX|CTISIG. Résultat exceptionnel|SIG|1|77* 787* 797* 67* 687*||1|0|*CTI|1|t_comptes
1|CTISIGSOTRDI|CTISIG. Sous-traitance directe|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGSTPR|CTISIG. Sous-traitance production|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGSUEX|CTISIG. Subventions d'exploitation|SIG|1|74*||1|0|*CTI|1|t_comptes
1|CTISIGSUPR|CTISIG. Subventions de production|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGSUVTMA|CTISIG. Subventions sur ventes de marchandise|SIG|0|||1|0|*CTI|1|t_comptes
1|CTISIGTRCHEX|CTISIG. Transferts de charges d'exploitation|SIG|1|791*||1|0|*CTI|1|t_comptes
1|CTISIGVAAJ|CTISIG. Valeur ajoutée|SIG|1|707* 7097* 607* 6087* 6037* 6047* 6057* 6067* 6097* 701* 702* 703* 704* 705* 706* 708* 709* 713* 72* 601* 602* 604* 605* 606* 6091* 6092* 6093* 6031* 6032* 61* 62*|621*|1|0|*CTI|1|t_comptes
1|CTISIGVAST|CTISIG. Variations de stock|SIG|1|6031* 6032*||1|0|*CTI|1|t_comptes
1|CTISIGVTMA|CTISIG. Ventes de marchandises|SIG|1|707* 7097*||1|0|*CTI|1|t_comptes
1|CTITYPEGES|Gestion||0|||1|0|*CTI|1|t_types_compta
1|CTI_TYP_BIL|Bilan||0|||1|0|*CTI|1|t_types_compta

+ 55
- 0
db/data2/dbdata_compta_t_listes_tables.csv View File

@ -0,0 +1,55 @@
oid|name|texte|select_cmd|code
1|t_sections_analytiques|Sections analytiques|SELECT oid, code, texte, '' as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_c') THEN 'O' ELSE 'N' END as utilise FROM compta.t_sections_analytiques WHERE oid > 0 ORDER BY code|ANA
1|t_sections_analytiques_c|Sections analytiques Clinique|SELECT oid, code, texte, '' as complement, 'O' as utilise FROM compta.t_sections_analytiques WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_c') ORDER BY code|ANAC
1|t_comptes|Comptes|"SELECT t_comptes.oid, t_comptes.numero as code, t_comptes.texte, t_types_compta.texte as complement, CASE WHEN t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table IN ('comptes_c', 'comptes_h', 'comptes_extra_c', 'comptes_extra_h')) THEN 'O' ELSE 'N' END as utilise FROM compta.t_comptes, compta.t_types_compta WHERE t_comptes.oid > 0 AND t_comptes.type_compta_id = t_types_compta.oid
AND t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table IN ('comptes_c', 'comptes_h', 'comptes_extra_c', 'comptes_extra_h')) ORDER BY code"|CPT
1|t_comptes_c|Comptes Clinique|SELECT t_comptes.oid, t_comptes.numero as code, t_comptes.texte, t_types_compta.texte as complement, 'O' as utilise FROM compta.t_comptes, compta.t_types_compta WHERE t_comptes.oid > 0 AND t_comptes.type_compta_id = t_types_compta.oid AND t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_c') ORDER BY code|CPTC
1|t_comptes_h|Comptes Honoraires|SELECT t_comptes.oid, t_comptes.numero as code, t_comptes.texte, t_types_compta.texte as complement, 'O' as utilise FROM compta.t_comptes, compta.t_types_compta WHERE t_comptes.oid > 0 AND t_comptes.type_compta_id = t_types_compta.oid AND t_comptes.oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_h') ORDER BY code|CPTH
1|t_activites_cout_patient_shs|Cout patient SHS. Activités|"SELECT t_activites_cout_patient_shs.oid, t_activites_cout_patient_shs.code, t_activites_cout_patient_shs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_activites_cout_patient_shs LEFT JOIN compta.p_oids ON (t_activites_cout_patient_shs.oid = p_oids.oid AND code_table = 'activites_cout_patient_shs')
WHERE t_activites_cout_patient_shs.oid > 0
ORDER BY t_activites_cout_patient_shs.code"|CSA
1|t_elements_cout_patient_shs|Cout patient SHS. Eléments de cout|"SELECT t_elements_cout_patient_shs.oid, t_elements_cout_patient_shs.code, t_elements_cout_patient_shs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_elements_cout_patient_shs LEFT JOIN compta.p_oids ON (t_elements_cout_patient_shs.oid = p_oids.oid AND code_table = 'etages_cout_patient_shs')
WHERE t_elements_cout_patient_shs.oid > 0
ORDER BY t_elements_cout_patient_shs.code"|CSC
1|t_etages_cout_patient_shs|Cout patient SHS. Etages|"SELECT t_etages_cout_patient_shs.oid, t_etages_cout_patient_shs.code, t_etages_cout_patient_shs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_etages_cout_patient_shs LEFT JOIN compta.p_oids ON (t_etages_cout_patient_shs.oid = p_oids.oid AND code_table = 'etages_cout_patient_shs')
WHERE t_etages_cout_patient_shs.oid > 0
ORDER BY t_etages_cout_patient_shs.code"|CSE
1|t_services_facturation_cout_patient_shs|Cout patient SHS. Services|"SELECT t_services_facturation_cout_patient_shs.oid, t_services_facturation_cout_patient_shs.code, t_services_facturation_cout_patient_shs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_services_facturation_cout_patient_shs LEFT JOIN compta.p_oids ON (t_services_facturation_cout_patient_shs.oid = p_oids.oid AND code_table = 'services_facturation_cout_patient_shs')
WHERE t_services_facturation_cout_patient_shs.oid > 0
ORDER BY t_services_facturation_cout_patient_shs.code"|CSF
1|t_ghm_cout_patient_shs|Cout patient SHS. GHM|"SELECT t_ghm_cout_patient_shs.oid, t_ghm_cout_patient_shs.code, t_ghm_cout_patient_shs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_ghm_cout_patient_shs LEFT JOIN compta.p_oids ON (t_ghm_cout_patient_shs.oid = p_oids.oid AND code_table = 'ghm_cout_patient_shs')
WHERE t_ghm_cout_patient_shs.oid > 0
ORDER BY t_ghm_cout_patient_shs.code"|CSG
1|t_ghs_cout_patient_shs|Cout patient SHS. GHS|"SELECT t_ghs_cout_patient_shs.oid, t_ghs_cout_patient_shs.code, t_ghs_cout_patient_shs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_ghs_cout_patient_shs LEFT JOIN compta.p_oids ON (t_ghs_cout_patient_shs.oid = p_oids.oid AND code_table = 'ghs_cout_patient_shs')
WHERE t_ghs_cout_patient_shs.oid > 0
ORDER BY t_ghs_cout_patient_shs.code"|CSH
1|t_medecins_cout_patient_shs|Cout patient SHS. Médecins|"SELECT t_medecins_cout_patient_shs.oid, t_medecins_cout_patient_shs.code, t_medecins_cout_patient_shs.nom || ' ' || t_medecins_cout_patient_shs.prenom AS texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_medecins_cout_patient_shs LEFT JOIN compta.p_oids ON (t_medecins_cout_patient_shs.oid = p_oids.oid AND code_table = 'medecins_cout_patient_shs')
WHERE t_medecins_cout_patient_shs.oid > 0
ORDER BY t_medecins_cout_patient_shs.code"|CSM
1|t_unites_oeuvres_shs|Cout patient SHS. Unités d'oeuvre|"SELECT t_unites_oeuvre_shs.oid, t_unites_oeuvre_shs.code, t_unites_oeuvre_shs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM compta.t_unites_oeuvre_shs LEFT JOIN compta.p_oids ON (t_unites_oeuvre_shs.oid = p_oids.oid AND code_table = 'etages_cout_patient_shs')
WHERE t_unites_oeuvre_shs.oid > 0
ORDER BY t_unites_oeuvre_shs.code"|CSU
1|t_journaux|Journaux|"SELECT t_journaux.oid, t_journaux.code, t_journaux.texte, subview.clinique_honoraire as complement, 'O' as utilise FROM compta.t_journaux,
(SELECT oid, trim(MAX(CASE WHEN code_table = 'journaux_c' THEN 'CLINIQUE' ELSE '' END) || ' ' || MAX(CASE WHEN code_table = 'journaux_h' THEN 'HONORAIRE' ELSE '' END)) as clinique_honoraire FROM compta.p_oids WHERE code_table IN ('journaux_c', 'journaux_h') GROUP BY oid
) subview
WHERE t_journaux.oid > 0 AND t_journaux.oid = subview.oid
ORDER BY code"|JRN
1|t_journaux_c|Journaux Clinique|SELECT oid, code, texte, '' as complement, 'O' as utilise FROM compta.t_journaux WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'journaux_c') ORDER BY code|JRNC
1|t_journaux_h|Journaux Honoraires|SELECT oid, code, texte, '' as complement, 'O' as utilise FROM compta.t_journaux WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'journaux_h') ORDER BY code|JRNH
1|t_partenaires|Partenaires|"SELECT oid, code, texte, subview.comptes as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table IN ('partenaires_c', 'partenaires_h')) THEN 'O' ELSE 'N' END as utilise FROM compta.t_partenaires LEFT JOIN (SELECT partenaire_id, base.cti_group_concat(DISTINCT compte_numero || ' ' || substr(compte_texte, 1 , 15)) as comptes FROM compta.v_historique_ecritures_total_1 GROUP BY partenaire_id) subview ON (subview.partenaire_id = t_partenaires.oid) WHERE oid > 0 ORDER BY code"|PAR
1|t_partenaires_c|Partenaires Clinique|"SELECT oid, code, texte, subview.comptes as complement, 'O' as utilise FROM compta.t_partenaires LEFT JOIN (SELECT partenaire_id, base.cti_group_concat(DISTINCT compte_numero || ' ' || substr(compte_texte, 1 , 15)) as comptes FROM compta.v_historique_ecritures_total_1 GROUP BY partenaire_id) subview ON (subview.partenaire_id = t_partenaires.oid) WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'partenaires_c') ORDER BY code"|PARC
1|t_partenaires_h|Partenaires Honoraires|"SELECT oid, code, texte, subview.comptes as complement, 'O' as utilise FROM compta.t_partenaires LEFT JOIN (SELECT partenaire_id, base.cti_group_concat(DISTINCT compte_numero || ' ' || substr(compte_texte, 1 , 15)) as comptes FROM compta.v_historique_ecritures_total_1 GROUP BY partenaire_id) subview ON (subview.partenaire_id = t_partenaires.oid) WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'partenaires_h') ORDER BY code"|PARH
1|t_sites|Sites|SELECT oid, code, texte, '' as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table IN ('sites_c', 't_sites_h')) THEN 'O' ELSE 'N' END as utilise FROM compta.t_sites WHERE oid > 0 ORDER BY code|SIT
1|t_sites_c|Sites Clinique|SELECT oid, code, texte, '' as complement, 'O' as utilise FROM compta.t_sites WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'sites_c') ORDER BY code|SITC
1|t_sites_h|Sites Honoraires|SELECT oid, code, texte, '' as complement, 'O' as utilise FROM compta.t_sites WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table = 'sites_h') ORDER BY code|SITH
1|t_types_compta|Types comptabilité|SELECT oid, code, texte, '' as complement, CASE WHEN oid in (SELECT oid FROM compta.p_oids WHERE code_table In ('types_compta_c', 'types_compta_extra_c', 'types_compta_h', 'types_compta_extra_h')) THEN 'O' ELSE 'N' END as utilise FROM compta.t_types_compta WHERE oid > 0 ORDER BY code|TYP
1|t_types_compta_c|Types comptabilité Clinique|SELECT oid, code, texte, '' as complement, 'O' as utilise FROM compta.t_types_compta WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table In ('types_compta_c', 'types_compta_extra_c')) ORDER BY code|TYPC
1|t_types_compta_h|Types comptabilité Honoraires|SELECT oid, code, texte, '' as complement, 'O' as utilise FROM compta.t_types_compta WHERE oid > 0 AND oid in (SELECT oid FROM compta.p_oids WHERE code_table In ('types_compta_h', 'types_compta_extra_h')) ORDER BY code|TYPH

+ 6
- 0
db/data2/dbdata_compta_t_rapports.csv View File

@ -0,0 +1,6 @@
oid|code|texte|is_cti|is_essentiel
1|CTI_BAL1|X EXEMPLE CTI - Balance|1|0
1|CTI_ESS_1|COMPTA Essentiels 1|1|1
1|CTI_ESS_2|COMPTA Essentiels 2|1|1
1|CTI_PF_AGG|CTI Portfolio|1|1
1|CTI_PORTFO|CTI Portfolio |1|1

+ 42
- 0
db/data2/dbdata_compta_t_rapports_rubriques.csv View File

@ -0,0 +1,42 @@
numero_rubrique|entete|entete_etendue|output_format|width|periode_reference|row_height|padding|font_size|font_weight|border_thickness|color|base_nationale|base_nationale_qualifiee|background_color|viewlink|viewlink_label|viewlink_param|picto_enabled|positif_is_good|indicateur_associe_code|rapport_code|indicateur_code
1||SOLDE INTERMEDIAIRE DE GESTION (synthèse)||0| |26|0|18|bold |2|0x6633 |0|0|0xcccccc |COMPTA000057|SIG - CTI synthèse|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI77"| | |PAS_DE_CODE|CTI_ESS_1|CTI_SEP
15||k. Autres achats et charges externes||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Autres achats et charges externes|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI47"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGAUACEX
27||u. Autres charges de gestion courante ||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Autres charges de gestion courante|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI48"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGAUCHGC
24||r. Autres produits de gestion courante||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Autres produits de gestion courante|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI49"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGAUPRGC
2||Chiffre d'affaire :||0| |0|0|12|bold |0|0x0 |0|0| |COMPTA000057|SIG - CHIFFRE D'AFFAIRE|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI50"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGCA
36||Charges exceptionnelles||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Charges exceptionnelles|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI51"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGCHEX
31||x. Charges financières||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Charges financières|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS46 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI52"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGCHFI
32||y. Charges financières sur crédit-bail||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Charges financières sur crédit-bail|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI53"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGCHFICB
20||o. Charges de personnel ||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Charges de personnel|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI54"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGCHPR
5||c. Coût d'achat des marchandises vendues ||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Coût d'achat des marchandises vendues|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI55"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGCOACMA
13||i. Coût d'achat matières premières et approv.||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Coût d'achat matières premières et approv.|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI56"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGCOACMP
28||v. Dotations aux amortissements de crédit-bail||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Dotations aux amortissement de crédit-bail|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI57"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGDOAMCB
26||t. Dotations aux amortissements, dépréciations et provisions||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Dotations aux amortissements, dépréciations et provisions|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI58"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGDOAMDP
22||1. Excédent brut d'exploitation (II+m+n+o+p)||0| |0|0|12|bold |0|0x6600 |0|0|0xcccccc |COMPTA000057|SIG CTI EXCEDENT BRUT D'EXPLOITATION|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS32 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS17 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI59"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGEXBREX
19||n. Impôts et taxes||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Impôts et taxes|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI61"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGIMTX
16||l. Impôts et taxes hors valeur ajoutée||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Impôts et taxes hors valeur ajoutée|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI62"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGIMTXHV
6||Marge commerciale :||0| |0|0|12|bold |0|0x0 |0|0| |COMPTA000057|SIG - MARGE COMMERCIALE|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI64"|0|0|PAS_DE_CODE|CTI_ESS_1|L_CTISIGMACO
21||p. Personnel extérieur||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Personnel extérieur|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI66"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGPEEX
12||I. PRODUCTION DE L'EXERCICE (a+b+c+d+e+f+g+h)||0| |26|0|14|bold |2|0x6633 |0|0|0xcccccc |COMPTA000057|SIG CTI PRODUCTION DE L'EXERCICE|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI67"|0|0|PAS_DE_CODE|CTI_ESS_1|L_CTISIGPREX
30||w. Produits financiers||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Produits financiers|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI68"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGPRFI
10||g. Production immobilisée ||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Production immobilisée|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS28 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI69"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGPRIM
9||f. Production stockée ou déstockage||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Production stockée ou déstockage|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI70"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGPRSTDE
7||d. Production vendue||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG Production vendue|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI71"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGPRVE
35||Produits exceptionnels||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Produits exceptionnels|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI72"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGPRXX
33||z. Quote-part sur opérations faites en commun||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Quote-part sur opérations faites en commun|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI73"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGQPOPCO
23||q. Reprises sur amort. dépréciations et provisions||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Reprises sur amort. dépréciations et provisions|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI74"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGRPAMDP
34||3. Résultat courant (2+/-y+v-w-x)||0| |0|0|12|bold |0|0x6600 |0|0|0xcccccc |COMPTA000057|SIG CTI RESULTAT COURANT|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI75"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGRSCO
29||2. Résultat exploitation (1+q+r+s-t-u)||0| |0|0|12|bold |0|0x6600 |0|0|0xcccccc |COMPTA000057|SIG CTI RESULTAT D'EXPLOITATION|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS18 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS19 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI76"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGRSEX
38|RESULTAT NET|RESULTAT NET||0| |26|0|14|bold |2|0x990000 |0|0|0xcccccc |COMPTA000057|SIG CTI RESULTAT NET|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI77"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGRSNT
37||4. Résultat exceptionnel (Produits except. - Charges except.)||0| |0|0|12|bold |0|0x6600 |0|0|0xcccccc |COMPTA000057|SIG CTI RESULTAT EXCEPTIONNEL|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI78"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGRSXX
11||h. Sous-traitance production||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Sous-traitance production|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI80"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGSTPR
18||m. Subventions d'exploitation||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Subventions d'exploitation|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI81"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGSUEX
8||e. Subventions de production||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Subventions de production|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL2 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI82"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGSUPR
4||b. Subventions sur ventes de marchandise||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Subventions sur ventes de marchandise|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI83"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGSUVTMA
17||II. VALEUR AJOUTEE (I-(i+j+k+l))||0| |26|0|14|bold |2|0x6633 |0|0|0xcccccc |COMPTA000057|SIG CTI VALEUR AJOUTEE|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL1 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI85"|0|0|PAS_DE_CODE|CTI_ESS_1|L_CTISIGVAAJ
14||j. Variations de stock||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG - Variations de stock|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI86"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGVAST
3||a. Vente de marchandises ||0| |0|10|12| |0| |0|0| |COMPTA000057|SIG -Ventes de marchandises|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CL3 & GROUPBY_TAB=TREE & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI87"|1|1|PAS_DE_CODE|CTI_ESS_1|L_CTISIGVTMA
1||SOLDE INTERMEDIAIRE DE GESTION (détaillé)||0| |28|0|18|bold |2|0x6633 |0|0|0xcccccc |COMPTA000057|SIG CTI détaillé|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=SAISIECODE & COMPTE_C_CODES=6*,7*"| | |PAS_DE_CODE|CTI_ESS_2|CTI_SEP
40||G. Dotations aux amortissements, dépréciations et provisions||0| |0|10|0| |0|0x0 |0|0| |COMPTA000057|SIG CTI Niveau 2 - Dotations aux amort.|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI58"|1|1|PAS_DE_CODE|CTI_ESS_2|L_CTISIGDOAMDP
41||H. Redevance crédit-bail (mobilier) |#|0| |0|10|0| |0|0x0 |0|0| |COMPTA000057|SIG CTI Niveau 2 - Redevance crédit-bail (mobilier)|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI107"|1|1|PAS_DE_CODE|CTI_ESS_2|L_CTISIGRCB
39||F. Reprises sur amort. dépréciations et provisions ||0| |0|10|0| |0|0x0 |0|0| |COMPTA000057|SIG CTI Niveau 2 - Reprises sur amort.|"MOIS=VIEW.CURRENT_TOMOIS & DATA=SC & ARBRE1=CPTCLS12 & GROUPBY_TAB=TREE & ARBRE2=CPTCLS13 & GROUPBY=CPT & JOURNAL_C=SL100 & COMPTE_C=LI74"|1|1|PAS_DE_CODE|CTI_ESS_2|L_CTISIGRPAMDP

+ 507
- 0
db/dbsetup_data_compta.XML View File

@ -0,0 +1,507 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<DBSETUPDATA softCode="iCTI_compta" schema="compta">
<!-- SCHEMA "BASE" -->
<TABLE name="p_calendrier" label="Calendrier" schema="base" />
<TABLE name="p_calendrier_mois" label="Calendrier (mois)" schema="base" />
<!-- SCHEMA "COMPTA" -->
<TABLE name="t_classes" label="Classes" template="t_classes" />
<TABLE name="t_classes_sections" label="Sections de classes" template="t_classes_sections" />
<TABLE name="t_classes_comptes"
label="Classes de comptes"
selectCmd="SELECT code, texte FROM compta.t_classes_comptes WHERE length(code) &lt;= 3 AND oid &lt;&gt; 0 ORDER BY code"
updateCmd="
UPDATE compta.t_classes_comptes SET
texte = w_dbsetup.texte
FROM w_dbsetup
WHERE t_classes_comptes.code = w_dbsetup.code AND t_classes_comptes.texte = '' ;
INSERT INTO compta.t_classes_comptes(code, texte)
SELECT code, texte FROM w_dbsetup WHERE code NOT IN (SELECT code FROM compta.t_classes_comptes);
"
/>
<TABLE name="t_listes_tables"
label="Tables pour les listes"
selectCmd="SELECT oid,
name,
texte,
select_cmd,
code
FROM compta.t_listes_tables
ORDER BY code;"
updateCmd="
UPDATE compta.t_listes_tables SET
code = w_dbsetup.code,
texte = w_dbsetup.texte,
select_cmd = w_dbsetup.select_cmd
FROM w_dbsetup
WHERE t_listes_tables.name = w_dbsetup.name;
INSERT INTO compta.t_listes_tables(oid, code, name, texte, select_cmd)
SELECT oid, code, name, texte, select_cmd FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM compta.t_listes_tables);
INSERT INTO compta.t_listes_tables(code, name, texte, select_cmd)
SELECT code, name, texte, select_cmd FROM w_dbsetup WHERE oid &lt;&gt; 0 AND name NOT IN (SELECT name FROM compta.t_listes_tables);
"
/>
<TABLE name="t_divers" label="Divers">
<selectCmd><![CDATA[
SELECT
t_divers.code,
t_divers.description,
t_divers.show_info_module,
t_divers.texte,
t_divers.valeur,
t_divers.valeur_date::text
FROM
compta.t_divers
ORDER BY code;
]]> </selectCmd>
<updateCmd><![CDATA[
INSERT INTO compta.t_divers(code, description, show_info_module, texte, valeur, valeur_date)
SELECT
w_dbsetup.code,
w_dbsetup.description,
w_dbsetup.show_info_module,
w_dbsetup.texte,
w_dbsetup.valeur,
CASE WHEN w_dbsetup.valeur_date = '' THEN '19700101'::date ELSE w_dbsetup.valeur_date::date END AS valeur_date
FROM
w_dbsetup
WHERE w_dbsetup.code NOT IN (SELECT code from compta.t_divers)
;
]]> </updateCmd>
</TABLE>
<TABLE name="t_indicateurs"
label="Indicateurs de rapports"
selectCmd="SELECT t_indicateurs.oid,
t_indicateurs.texte,
t_indicateurs.table_name,
t_indicateurs.column_name,
t_indicateurs.is_cti,
t_indicateurs.entete,
t_indicateurs.code,
t_indicateurs.total_function,
t_indicateurs.output_format,
t_indicateurs.width,
t_indicateurs.entete_etendue,
t_indicateurs.dimension_date_1,
t_indicateurs.dimension_date_2,
t_indicateurs.dimension_date_3,
t_indicateurs.dimension_date_4,
t_indicateurs.dimension_date_5,
t_indicateurs.dimension_date,
t_indicateurs_1.code as indicateur_associe_1_code,
t_indicateurs_2.code as indicateur_associe_2_code,
t_indicateurs_3.code as indicateur_associe_3_code,
t_indicateurs_4.code as indicateur_associe_4_code,
t_indicateurs_5.code as indicateur_associe_5_code,
t_indicateurs_6.code as indicateur_associe_6_code,
t_indicateurs_7.code as indicateur_associe_7_code,
t_indicateurs_8.code as indicateur_associe_8_code,
t_indicateurs_9.code as indicateur_associe_9_code,
t_indicateurs_10.code as indicateur_associe_10_code,
t_indicateurs_11.code as indicateur_associe_11_code,
t_indicateurs_12.code as indicateur_associe_12_code,
t_indicateurs_13.code as indicateur_associe_13_code,
t_indicateurs_14.code as indicateur_associe_14_code,
t_indicateurs_15.code as indicateur_associe_15_code,
t_indicateurs_16.code as indicateur_associe_16_code,
t_indicateurs_17.code as indicateur_associe_17_code,
t_indicateurs_18.code as indicateur_associe_18_code,
t_indicateurs_19.code as indicateur_associe_19_code,
t_indicateurs_20.code as indicateur_associe_20_code,
t_indicateurs_reference.code as indicateur_reference_code
FROM compta.t_indicateurs
LEFT JOIN compta.t_indicateurs t_indicateurs_1 ON (t_indicateurs.indicateur_associe_1_id = t_indicateurs_1.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_2 ON (t_indicateurs.indicateur_associe_2_id = t_indicateurs_2.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_3 ON (t_indicateurs.indicateur_associe_3_id = t_indicateurs_3.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_4 ON (t_indicateurs.indicateur_associe_4_id = t_indicateurs_4.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_5 ON (t_indicateurs.indicateur_associe_5_id = t_indicateurs_5.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_6 ON (t_indicateurs.indicateur_associe_6_id = t_indicateurs_6.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_7 ON (t_indicateurs.indicateur_associe_7_id = t_indicateurs_7.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_8 ON (t_indicateurs.indicateur_associe_8_id = t_indicateurs_8.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_9 ON (t_indicateurs.indicateur_associe_9_id = t_indicateurs_9.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_10 ON (t_indicateurs.indicateur_associe_10_id = t_indicateurs_10.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_11 ON (t_indicateurs.indicateur_associe_11_id = t_indicateurs_11.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_12 ON (t_indicateurs.indicateur_associe_12_id = t_indicateurs_12.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_13 ON (t_indicateurs.indicateur_associe_13_id = t_indicateurs_13.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_14 ON (t_indicateurs.indicateur_associe_14_id = t_indicateurs_14.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_15 ON (t_indicateurs.indicateur_associe_15_id = t_indicateurs_15.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_16 ON (t_indicateurs.indicateur_associe_16_id = t_indicateurs_16.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_17 ON (t_indicateurs.indicateur_associe_17_id = t_indicateurs_17.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_18 ON (t_indicateurs.indicateur_associe_18_id = t_indicateurs_18.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_19 ON (t_indicateurs.indicateur_associe_19_id = t_indicateurs_19.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_20 ON (t_indicateurs.indicateur_associe_20_id = t_indicateurs_20.oid)
LEFT JOIN compta.t_indicateurs t_indicateurs_reference ON (t_indicateurs.indicateur_reference_id = t_indicateurs_reference.oid)
WHERE t_indicateurs.is_cti = '1'
ORDER BY t_indicateurs.code;"
updateCmd="
DELETE FROM compta.t_indicateurs
USING
(
SELECT code, MIN(oid) AS minoid FROM compta.t_indicateurs WHERE code &lt;&gt; '' GROUP BY 1 HAVING count(*) > 1
) subview
WHERE t_indicateurs.code = subview.code AND t_indicateurs.oid &lt;&gt; subview.minoid;
UPDATE compta.t_indicateurs SET
texte = w_dbsetup.texte,
table_name = w_dbsetup.table_name,
column_name = w_dbsetup.column_name,
is_cti = w_dbsetup.is_cti,
entete = w_dbsetup.entete,
entete_etendue = w_dbsetup.entete_etendue,
total_function = w_dbsetup.total_function,
output_format = w_dbsetup.output_format,
width = w_dbsetup.width,
dimension_date_1 = w_dbsetup.dimension_date_1,
dimension_date_2 = w_dbsetup.dimension_date_2,
dimension_date_3 = w_dbsetup.dimension_date_3,
dimension_date_4 = w_dbsetup.dimension_date_4,
dimension_date_5 = w_dbsetup.dimension_date_5,
dimension_date = w_dbsetup.dimension_date
FROM w_dbsetup
WHERE t_indicateurs.code = w_dbsetup.code;
INSERT INTO compta.t_indicateurs(texte, table_name, column_name, is_cti, entete, entete_etendue, code, total_function, output_format, width,
dimension_date_1, dimension_date_2, dimension_date_3, dimension_date_4, dimension_date_5, dimension_date)
SELECT texte, table_name, column_name, is_cti, entete, entete_etendue, code, total_function, output_format, width,
dimension_date_1, dimension_date_2, dimension_date_3, dimension_date_4, dimension_date_5, dimension_date
FROM w_dbsetup WHERE oid &lt;&gt; 0 AND code NOT IN (SELECT code FROM compta.t_indicateurs WHERE code IS NOT NULL);
UPDATE compta.t_indicateurs SET
indicateur_associe_1_id = COALESCE(t_indicateurs_1.oid,0),
indicateur_associe_2_id = COALESCE(t_indicateurs_2.oid,0),
indicateur_associe_3_id = COALESCE(t_indicateurs_3.oid,0),
indicateur_associe_4_id = COALESCE(t_indicateurs_4.oid,0),
indicateur_associe_5_id = COALESCE(t_indicateurs_5.oid,0),
indicateur_associe_6_id = COALESCE(t_indicateurs_6.oid,0),
indicateur_associe_7_id = COALESCE(t_indicateurs_7.oid,0),
indicateur_associe_8_id = COALESCE(t_indicateurs_8.oid,0),
indicateur_associe_9_id = COALESCE(t_indicateurs_9.oid,0),
indicateur_associe_10_id = COALESCE(t_indicateurs_10.oid,0),
indicateur_associe_11_id = COALESCE(t_indicateurs_11.oid,0),
indicateur_associe_12_id = COALESCE(t_indicateurs_12.oid,0),
indicateur_associe_13_id = COALESCE(t_indicateurs_13.oid,0),
indicateur_associe_14_id = COALESCE(t_indicateurs_14.oid,0),
indicateur_associe_15_id = COALESCE(t_indicateurs_15.oid,0),
indicateur_associe_16_id = COALESCE(t_indicateurs_16.oid,0),
indicateur_associe_17_id = COALESCE(t_indicateurs_17.oid,0),
indicateur_associe_18_id = COALESCE(t_indicateurs_18.oid,0),
indicateur_associe_19_id = COALESCE(t_indicateurs_19.oid,0),
indicateur_associe_20_id = COALESCE(t_indicateurs_20.oid,0),
indicateur_reference_id = COALESCE(t_indicateurs_reference.oid,0)
FROM w_dbsetup
LEFT JOIN compta.t_indicateurs t_indicateurs_1 ON (w_dbsetup.indicateur_associe_1_code = t_indicateurs_1.code AND w_dbsetup.indicateur_associe_1_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_2 ON (w_dbsetup.indicateur_associe_2_code = t_indicateurs_2.code AND w_dbsetup.indicateur_associe_2_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_3 ON (w_dbsetup.indicateur_associe_3_code = t_indicateurs_3.code AND w_dbsetup.indicateur_associe_3_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_4 ON (w_dbsetup.indicateur_associe_4_code = t_indicateurs_4.code AND w_dbsetup.indicateur_associe_4_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_5 ON (w_dbsetup.indicateur_associe_5_code = t_indicateurs_5.code AND w_dbsetup.indicateur_associe_5_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_6 ON (w_dbsetup.indicateur_associe_6_code = t_indicateurs_6.code AND w_dbsetup.indicateur_associe_6_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_7 ON (w_dbsetup.indicateur_associe_7_code = t_indicateurs_7.code AND w_dbsetup.indicateur_associe_7_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_8 ON (w_dbsetup.indicateur_associe_8_code = t_indicateurs_8.code AND w_dbsetup.indicateur_associe_8_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_9 ON (w_dbsetup.indicateur_associe_9_code = t_indicateurs_9.code AND w_dbsetup.indicateur_associe_9_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_10 ON (w_dbsetup.indicateur_associe_10_code = t_indicateurs_10.code AND w_dbsetup.indicateur_associe_10_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_11 ON (w_dbsetup.indicateur_associe_11_code = t_indicateurs_11.code AND w_dbsetup.indicateur_associe_11_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_12 ON (w_dbsetup.indicateur_associe_12_code = t_indicateurs_12.code AND w_dbsetup.indicateur_associe_12_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_13 ON (w_dbsetup.indicateur_associe_13_code = t_indicateurs_13.code AND w_dbsetup.indicateur_associe_13_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_14 ON (w_dbsetup.indicateur_associe_14_code = t_indicateurs_14.code AND w_dbsetup.indicateur_associe_14_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_15 ON (w_dbsetup.indicateur_associe_15_code = t_indicateurs_15.code AND w_dbsetup.indicateur_associe_15_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_16 ON (w_dbsetup.indicateur_associe_16_code = t_indicateurs_16.code AND w_dbsetup.indicateur_associe_16_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_17 ON (w_dbsetup.indicateur_associe_17_code = t_indicateurs_17.code AND w_dbsetup.indicateur_associe_17_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_18 ON (w_dbsetup.indicateur_associe_18_code = t_indicateurs_18.code AND w_dbsetup.indicateur_associe_18_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_19 ON (w_dbsetup.indicateur_associe_19_code = t_indicateurs_19.code AND w_dbsetup.indicateur_associe_19_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_20 ON (w_dbsetup.indicateur_associe_20_code = t_indicateurs_20.code AND w_dbsetup.indicateur_associe_20_code &lt;&gt; '')
LEFT JOIN compta.t_indicateurs t_indicateurs_reference ON (w_dbsetup.indicateur_reference_code = t_indicateurs_reference.code AND w_dbsetup.indicateur_reference_code &lt;&gt; '')
WHERE t_indicateurs.code = w_dbsetup.code
AND (indicateur_associe_1_code &lt;&gt; '' OR
indicateur_associe_2_code &lt;&gt; '' OR
indicateur_associe_3_code &lt;&gt; '' OR
indicateur_reference_code &lt;&gt; '');
SELECT base.cti_reorganize_indicateurs('compta');
" />
<TABLE name="t_rapports"
label="Rapports"
selectCmd="
SELECT
oid,
code,
texte,
is_cti,
is_essentiel
FROM compta.t_rapports
WHERE is_cti = '1'
ORDER BY code
;"
updateCmd="
UPDATE compta.t_rapports SET
texte = w_dbsetup.texte,
is_cti = w_dbsetup.is_cti,
is_essentiel = w_dbsetup.is_essentiel
FROM w_dbsetup
WHERE t_rapports.code = w_dbsetup.code;
INSERT INTO compta.t_rapports(oid, code, texte, is_cti, is_essentiel)
SELECT oid, code, texte, is_cti, is_essentiel FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM compta.t_rapports);
INSERT INTO compta.t_rapports(code, texte, is_cti, is_essentiel)
SELECT code, texte, is_cti, is_essentiel FROM w_dbsetup WHERE oid &lt;&gt; 0 AND code NOT IN (SELECT code FROM compta.t_rapports);
"
/>
<TABLE name="t_rapports_rubriques" label="Rubriques des rapports" >
<selectCmd><![CDATA[
SELECT
t_rapports_rubriques.numero_rubrique,
t_rapports_rubriques.entete,
t_rapports_rubriques.entete_etendue,
t_rapports_rubriques.output_format,
t_rapports_rubriques.width,
t_rapports_rubriques.periode_reference,
t_rapports_rubriques.row_height,
t_rapports_rubriques.padding,
t_rapports_rubriques.font_size,
t_rapports_rubriques.font_weight,
t_rapports_rubriques.border_thickness,
t_rapports_rubriques.color,
t_rapports_rubriques.base_nationale,
t_rapports_rubriques.base_nationale_qualifiee,
t_rapports_rubriques.background_color,
t_rapports_rubriques.viewlink,
t_rapports_rubriques.viewlink_label,
t_rapports_rubriques.viewlink_param,
t_rapports_rubriques.picto_enabled,
t_rapports_rubriques.positif_is_good,
COALESCE(ind2.code, 'PAS_DE_CODE') as indicateur_associe_code,
t_rapports.code AS rapport_code,
ind1.code AS indicateur_code
FROM
compta.t_rapports_rubriques
JOIN compta.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
JOIN compta.t_indicateurs ind1 ON t_rapports_rubriques.indicateur_id = ind1.oid
LEFT JOIN compta.t_indicateurs ind2 ON t_rapports_rubriques.indicateur_associe_id = ind2.oid
WHERE 1=1
AND ind1.is_cti = '1'
AND ind1.code <> ''
AND t_rapports.is_cti = '1'
AND ind2.is_cti IS DISTINCT FROM '0'
ORDER BY
t_rapports.code,
ind1.code,
t_rapports_rubriques.numero_rubrique
;
]]></selectCmd>
<updateCmd><![CDATA[
-- Sauvegarder les données sources pour rejouer le spécifique
SELECT base.cti_verify_table_encoding('compta','t_rapports_rubriques')
;
DROP TABLE IF EXISTS w_specific_rapports_rubriques ;
CREATE TEMP TABLE w_specific_rapports_rubriques AS
SELECT t_rapports_rubriques.*
FROM compta.t_rapports_rubriques
JOIN compta.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
WHERE t_rapports.is_essentiel = '1'
;
-- Installer les données CTI
DELETE FROM compta.t_rapports_rubriques
WHERE 1=1
AND rapport_id IN (SELECT oid FROM compta.t_rapports WHERE is_cti = '1')
;
INSERT INTO compta.t_rapports_rubriques(
rapport_id,
numero_rubrique,
indicateur_id,
entete,
entete_etendue,
output_format,
width,
periode_reference,
row_height,
padding,
font_size,
font_weight,
border_thickness,
color,
base_nationale,
base_nationale_qualifiee,
background_color,
viewlink,
viewlink_label,
viewlink_param,
picto_enabled,
positif_is_good,
indicateur_associe_id
)
SELECT
t_rapports.oid,
numero_rubrique,
ind1.oid,
w_dbsetup.entete,
w_dbsetup.entete_etendue,
w_dbsetup.output_format,
w_dbsetup.width,
w_dbsetup.periode_reference,
w_dbsetup.row_height,
w_dbsetup.padding,
w_dbsetup.font_size,
w_dbsetup.font_weight,
w_dbsetup.border_thickness,
w_dbsetup.color,
w_dbsetup.base_nationale,
w_dbsetup.base_nationale_qualifiee,
w_dbsetup.background_color,
w_dbsetup.viewlink,
w_dbsetup.viewlink_label,
w_dbsetup.viewlink_param,
w_dbsetup.picto_enabled,
w_dbsetup.positif_is_good,
COALESCE(ind2.oid, 0)
FROM
w_dbsetup
JOIN compta.t_rapports ON w_dbsetup.rapport_code = t_rapports.code
JOIN compta.t_indicateurs ind1 ON w_dbsetup.indicateur_code = ind1.code
LEFT JOIN compta.t_indicateurs ind2 ON w_dbsetup.indicateur_associe_code = ind2.code
;
-- Rejouer le spécifique
UPDATE compta.t_rapports_rubriques SET
is_hide = w_specific_rapports_rubriques.is_hide,
specific_viewlink = w_specific_rapports_rubriques.specific_viewlink,
specific_viewlink_label = w_specific_rapports_rubriques.specific_viewlink_label,
specific_viewlink_param = w_specific_rapports_rubriques.specific_viewlink_param
FROM w_specific_rapports_rubriques
WHERE w_specific_rapports_rubriques.rapport_id = t_rapports_rubriques.rapport_id AND
w_specific_rapports_rubriques.indicateur_id = t_rapports_rubriques.indicateur_id AND
w_specific_rapports_rubriques.entete_etendue = t_rapports_rubriques.entete_etendue AND
(
w_specific_rapports_rubriques.is_hide = '1' OR
w_specific_rapports_rubriques.specific_viewlink <> '' OR
w_specific_rapports_rubriques.specific_viewlink_label <> '' OR
w_specific_rapports_rubriques.specific_viewlink_param <> ''
)
;
]]></updateCmd>
</TABLE>
<TABLE name="t_listes" label="Listes de codes">
<selectCmd><![CDATA[
SELECT
t_listes.oid,
t_listes.code,
t_listes.texte,
t_listes.chapitre,
t_listes.contenu_by_code,
t_listes.include_code,
t_listes.exclude_code,
t_listes.is_cti,
t_listes.show_omit,
t_listes.utilisateur_createur,
t_listes.est_partagee_modification,
t_listes_tables.name as table_name
FROM
compta.t_listes,
compta.t_listes_tables
WHERE
(is_cti = '1' OR t_listes.code LIKE 'CTI%')
AND t_listes.code <> ''
AND table_id = t_listes_tables.oid
ORDER BY t_listes.code;
]]></selectCmd>
<updateCmd><![CDATA[
UPDATE compta.t_listes SET
texte = w_dbsetup.texte,
chapitre = w_dbsetup.chapitre,
contenu_by_code= w_dbsetup.contenu_by_code,
include_code = w_dbsetup.include_code,
exclude_code = w_dbsetup.exclude_code,
is_cti = w_dbsetup.is_cti,
show_omit = w_dbsetup.show_omit,
utilisateur_createur = w_dbsetup.utilisateur_createur,
est_partagee_modification = w_dbsetup.est_partagee_modification,
table_id = t_listes_tables.oid
FROM
w_dbsetup,
compta.t_listes_tables
WHERE
w_dbsetup.table_name = t_listes_tables.name
AND t_listes.code = w_dbsetup.code
;
INSERT INTO compta.t_listes(
code,
texte,
chapitre,
contenu_by_code,
include_code,
exclude_code,
is_cti,
show_omit,
utilisateur_createur,
est_partagee_modification,
table_id
)
SELECT
w_dbsetup.code,
w_dbsetup.texte,
w_dbsetup.chapitre,
w_dbsetup.contenu_by_code,
w_dbsetup.include_code,
w_dbsetup.exclude_code,
w_dbsetup.is_cti,
w_dbsetup.show_omit,
w_dbsetup.utilisateur_createur,
w_dbsetup.est_partagee_modification,
t_listes_tables.oid
FROM
w_dbsetup,
compta.t_listes_tables
WHERE
w_dbsetup.table_name = t_listes_tables.name
AND w_dbsetup.code NOT IN (SELECT code FROM compta.t_listes)
AND w_dbsetup.texte NOT LIKE '*SUPPRIME%'
;
DELETE FROM compta.t_listes WHERE texte like '*SUPPRIME%' AND is_cti = '1'
;
SELECT base.cti_initialize_listes_by_code('compta');
]]></updateCmd>
</TABLE>
</DBSETUPDATA>

+ 4
- 0
db/dvp_data_apply.bat View File

@ -0,0 +1,4 @@
@ECHO Off
ECHO /!\ VOUS ETES SUR LE POINT DE PERDRE LES DONNEES DE VOTRE BASE /!\
PAUSE
..\..\..\Sources\db\data\iCTI_svn_data_apply.exe -m compta

+ 2
- 0
db/dvp_data_extract.bat View File

@ -0,0 +1,2 @@
@ECHO Off
..\..\..\Sources\db\data\iCTI_svn_data_extract.exe -m compta

+ 5
- 0
db/hooks/install_db_last_jobs.sql View File

@ -0,0 +1,5 @@
-- ============================================================
-- Derniers traitements
-- - Lancement de fonctions PGSQL
-- - Nettoyage installdb (éventuel)
-- ============================================================

+ 123
- 0
db/hooks/post_install_data.sql View File

@ -0,0 +1,123 @@
-- =====================================================================
-- Divers traitements sur les données après l'installation des données
-- =====================================================================
-- Initilisation du mois de début de période comptable.
-- w_mois trouve le mois de début de période qui apparait le plus dans p_calendrier_mois
WITH w_mois AS (
SELECT
to_number(substring(to_char(exercice_mois_comptable_1, 'FM999999') from '..$'), '99') as mois_debut,
count(*) as combien
FROM base.p_calendrier_mois
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1
)
INSERT INTO compta.t_divers(
code,
texte,
valeur,
valeur_date,
description,
show_info_module)
SELECT
'MOIS_DEBUT',
'Mois début période comptable.',
w_mois.mois_debut::text,
NULL,
'Mois de début de la période comptable',
true
FROM
w_mois
WHERE (SELECT count(*) FROM compta.t_divers WHERE code = 'MOIS_DEBUT') = 0
;
UPDATE base.p_calendrier_mois SET
exercice_comptable = to_char(date_debut - (subview.valeur::text || ' month'::text)::interval + '1 month'::interval, 'YYYY')::numeric,
exercice_mois_comptable_1 = (to_char(date_debut - (subview.valeur::text || ' month'::text)::interval + '1 month'::interval, 'YYYY')||ltrim(to_char(subview.valeur::numeric, '00')))::numeric
FROM
(SELECT max(valeur) as valeur FROM compta.t_divers WHERE code = 'MOIS_DEBUT') subview
;
-- Mise à jour des rubriques de rapports suite au passage des séquences sur deux digits
UPDATE compta.t_rapports_rubriques SET viewlink_param = regexp_replace(viewlink_param, 'CLS([0-9][^0-9])', 'CLS0\1', 'g')
WHERE viewlink_param ~ '.*CLS[0-9][^0-9].*';
-- Réplication du code banque sur les comptes signés
WITH w_cpt AS (
SELECT
oid as compte_id,
banque
FROM
compta.t_comptes
WHERE
banque = '1'
)
UPDATE compta.t_comptes SET
banque = w_cpt.banque
FROM
w_cpt
WHERE 1=1
AND t_comptes.compte_general_id = w_cpt.compte_id
AND t_comptes.banque IS DISTINCT FROM w_cpt.banque;
-- Initialisation mois en cours/mois clôturé (NOW/NOWCLOTURE) lorsque pas déjà renseigné lors de l'import.
WITH subq as (
SELECT date_ecriture
FROM compta.p_historique_ecritures
WHERE 1=1
AND date_ecriture <= now()
AND ajustement = '0'
AND is_budget <> '1'
ORDER BY date_ecriture DESC
LIMIT 1)
INSERT INTO compta.t_divers(
code,
texte,
valeur,
valeur_date,
description,
show_info_module)
SELECT
'NOW',
'Mois en cours.',
to_char(date_ecriture, 'YYYYMM'),
date_ecriture,
'Mois en cours.',
true
FROM subq
WHERE (SELECT count(*) FROM compta.t_divers WHERE code = 'NOW') = 0
;
WITH subq as (
SELECT ((mois_comptable||'01')::date + interval '1 month' - interval '1 day' - interval '1 month')::date as date_comptable
FROM compta.p_historique_ecritures
WHERE 1=1
AND date_ecriture <= now()
AND ajustement = '0'
AND is_budget <> '1'
ORDER BY mois_comptable DESC
LIMIT 1)
INSERT INTO compta.t_divers(
code,
texte,
valeur,
valeur_date,
description,
show_info_module)
SELECT
'NOWCLOTURE',
'Mois clôturé.',
to_char(date_comptable, 'YYYYMM'),
date_comptable,
'Mois clôturé.',
true
FROM subq
WHERE (SELECT count(*) FROM compta.t_divers WHERE code = 'NOWCLOTURE') = 0
;
--Maj table compta.t_pole
INSERT INTO compta.t_pole (oid, code, texte, texte_court)
SELECT 0, '**', 'Non renseigné', 'Non renseigné'
WHERE 0 NOT IN (SELECT oid FROM compta.t_pole)
;

+ 3
- 0
db/hooks/pre_install_data.sql View File

@ -0,0 +1,3 @@
-- =====================================================================
-- Divers traitements sur les données avant l'installation des données
-- =====================================================================

+ 8
- 0
db/hooks/pre_install_schema.sql View File

@ -0,0 +1,8 @@
-- =============================================
-- Nettoyage de la BDD avant installation.
-- (Supprimer le contenu au bout de 3 mois)
-- - Suppression de tables
-- - Suppression de champs
-- - Suppression de vues/fonctions SQL
-- - Suppression ou modification de séquences
-- =============================================

+ 322
- 0
db/schema2/functions/cti_create_indicateurs_from_listes.yaml View File

@ -0,0 +1,322 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
UPDATE compta.t_indicateurs
SET external_code = code
WHERE substr(code,1,3) IN ('*L_', '*C_') AND COALESCE(external_code,'') = '';
UPDATE compta.t_indicateurs
SET external_code = ''
WHERE external_code IS NULL
;
DROP TABLE IF EXISTS w_indicateurs;
CREATE TEMP TABLE w_indicateurs AS
SELECT
code,
external_code,
old_code,
liste_code,
texte,
table_name,
CASE
WHEN classe IN ('2', '3', '5', '6') THEN column_name_debit
WHEN classe2 IN ('41') THEN column_name_debit
WHEN classe2 IN ('44') THEN column_name_debit
WHEN classe2 IN ('45') THEN column_name_debit
WHEN classe2 IN ('46') THEN column_name_debit
WHEN classe IN ('1', '4', '7') THEN column_name_credit
ELSE column_name_debit END AS column_name,
is_cti,
entete,
entete_etendue,
total_function
FROM (
SELECT
'*L_' || t_listes.code::text AS code,
'*L_' || t_listes.oid::text AS external_code,
'L_' || t_listes.code AS old_code,
t_listes.code::text AS liste_code,
'Comptes de la liste : ' || t_listes.texte || CASE WHEN t_listes.code <> '' THEN ' (' || t_listes.code || ')' ELSE '' END as texte,
'v_historique_ecritures_1' as table_name,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''C'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:' || t_listes.code ||'] THEN montant_solde_debit ELSE 0 END' as column_name_debit,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''C'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:' || t_listes.code ||'] THEN montant_solde_credit ELSE 0 END' as column_name_credit,
'0' AS is_cti,
t_listes.texte AS entete,
t_listes.texte AS entete_etendue,
'SUM'::text AS total_function,
MIN(substr(t_comptes.numero,1,1)) AS classe,
MIN(substr(t_comptes.numero,1,2)) AS classe2
FROM compta.t_listes
JOIN compta.t_listes_tables ON (table_id = t_listes_tables.oid)
JOIN compta.t_listes_contenu ON (t_listes.oid = t_listes_contenu.liste_id)
JOIN compta.t_comptes ON (t_listes_contenu.to_id = t_comptes.oid)
WHERE t_listes_tables.code = 'CPT' AND t_listes.code <> '' AND t_listes.is_cti <> '1'
GROUP BY 1,2,3,4,5,6,7,8,9,10
HAVING MAX(clinique_honoraire) <> 'H' OR MIN(clinique_honoraire) <> 'H'
) w_indicateurs;
-- Comptes honoraires
INSERT INTO w_indicateurs
SELECT
code,
external_code,
old_code,
liste_code,
texte,
table_name,
CASE
WHEN classe IN ('2', '3', '5', '6') THEN column_name_debit
WHEN classe2 IN ('41') THEN column_name_debit
WHEN classe2 IN ('44') THEN column_name_debit
WHEN classe2 IN ('45') THEN column_name_debit
WHEN classe2 IN ('46') THEN column_name_debit
WHEN classe IN ('1', '4', '7') THEN column_name_credit
ELSE column_name_debit END AS column_name,
is_cti,
entete,
entete_etendue,
total_function
FROM (
SELECT
'*L_' || t_listes.code::text || '_H' AS code,
'*L_' || t_listes.oid::text || '_H' AS external_code,
'L_' || t_listes.code || '_H' AS old_code,
t_listes.code AS liste_code,
'Comptes de la liste : ' || t_listes.texte || ' (HON)' || CASE WHEN t_listes.code <> '' THEN ' (' || t_listes.code || ')' ELSE '' END as texte,
'v_historique_ecritures_1' as table_name,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''H'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:' || t_listes.code ||'] THEN montant_solde_debit ELSE 0 END' as column_name_debit,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''H'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:' || t_listes.code ||'] THEN montant_solde_credit ELSE 0 END' as column_name_credit,
'0' AS is_cti,
t_listes.texte AS entete,
t_listes.texte AS entete_etendue,
'SUM'::text AS total_function,
MIN(substr(t_comptes.numero,1,1)) AS classe,
MIN(substr(t_comptes.numero,1,2)) AS classe2
FROM compta.t_listes
JOIN compta.t_listes_tables ON (table_id = t_listes_tables.oid)
JOIN compta.t_listes_contenu ON (t_listes.oid = t_listes_contenu.liste_id)
JOIN compta.t_comptes ON (t_listes_contenu.to_id = t_comptes.oid)
WHERE t_listes_tables.code = 'CPT' AND t_listes.code <> '' AND t_listes.is_cti <> '1'
GROUP BY 1,2,3,4,5,6,7,8,9,10
HAVING MAX(clinique_honoraire) = 'H' AND MIN(clinique_honoraire) = 'H'
) w_indicateurs;
INSERT INTO w_indicateurs
SELECT
code,
external_code,
old_code,
liste_code,
texte,
table_name,
CASE
WHEN classe IN ('2', '3', '5', '6') THEN column_name_debit
WHEN classe2 IN ('41') THEN column_name_debit
WHEN classe2 IN ('44') THEN column_name_debit
WHEN classe2 IN ('45') THEN column_name_debit
WHEN classe2 IN ('46') THEN column_name_debit
WHEN classe IN ('1', '4', '7') THEN column_name_credit
ELSE column_name_debit END AS column_name,
is_cti,
entete,
entete_etendue,
total_function
FROM (
SELECT
'*L_' || t_listes.code::text || '_H' AS code,
'*L_' || t_listes.oid::text || '_H' AS external_code,
'L_' || t_listes.code || '_H' AS old_code,
t_listes.code AS liste_code,
'Comptes de la liste : ' || t_listes.texte || ' (HON)' || CASE WHEN t_listes.code <> '' THEN ' (' || t_listes.code || ')' ELSE '' END as texte,
'v_historique_ecritures_1' as table_name,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''H'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:' || t_listes.code ||'] THEN montant_solde_debit ELSE 0 END' as column_name_debit,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''H'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [LISTE:' || t_listes.code ||'] THEN montant_solde_credit ELSE 0 END' as column_name_credit,
'0' AS is_cti,
t_listes.texte AS entete,
t_listes.texte AS entete_etendue,
'SUM'::text AS total_function,
MIN(substr(t_comptes.numero,1,1)) AS classe,
MIN(substr(t_comptes.numero,1,2)) AS classe2
FROM compta.t_listes
JOIN compta.t_listes_tables ON (table_id = t_listes_tables.oid)
JOIN compta.t_listes_contenu ON (t_listes.oid = t_listes_contenu.liste_id)
JOIN compta.t_comptes ON (t_listes_contenu.to_id = t_comptes.oid)
WHERE t_listes_tables.code = 'CPT' AND t_listes.code <> '' AND t_listes.is_cti <> '1'
GROUP BY 1,2,3,4,5,6,7,8,9,10
HAVING MAX(clinique_honoraire) = 'H' AND MIN(clinique_honoraire) <> 'H'
) w_indicateurs;
UPDATE compta.t_indicateurs
SET code = w_indicateurs.code,
texte = w_indicateurs.texte
FROM w_indicateurs
WHERE w_indicateurs.external_code = t_indicateurs.external_code AND
(
t_indicateurs.texte IS DISTINCT FROM w_indicateurs.texte OR
t_indicateurs.code IS DISTINCT FROM w_indicateurs.code
);
UPDATE compta.t_indicateurs
SET column_name = w_indicateurs.column_name
FROM w_indicateurs
WHERE w_indicateurs.external_code = t_indicateurs.external_code AND
t_indicateurs.column_name IS DISTINCT FROM w_indicateurs.column_name AND
t_indicateurs.column_name NOT LIKE '%LISTE:' || liste_code || '%' AND liste_code <> '';
INSERT INTO compta.t_indicateurs(
code,
external_code,
texte,
table_name,
column_name,
is_cti,
entete,
entete_etendue,
total_function,
dimension_date)
SELECT
code,
external_code,
texte,
table_name,
column_name,
is_cti,
entete,
entete_etendue,
total_function,
'4'::text AS dimension_date
FROM w_indicateurs
WHERE external_code NOT IN (SELECT external_code FROM compta.t_indicateurs WHERE external_code IS NOT NULL);
-- CLasses
TRUNCATE w_indicateurs;
INSERT INTO w_indicateurs
SELECT
code,
external_code,
old_code,
classe_section_code,
texte,
table_name,
column_name,
is_cti,
entete,
entete_etendue,
total_function
FROM (
SELECT
'*C_' || t_classes.code|| '-' || t_classes_sections.code || '-D' AS code,
'*C_' || t_classes.oid::text || '-' || t_classes_sections.oid::text || '-D' AS external_code,
''::text AS old_code,
t_classes.code|| ':' || t_classes_sections.code AS classe_section_code,
'Comptes de la section : ' || t_classes.texte || ' - ' || t_classes_sections.texte || ' (DEBIT)' as texte,
'v_historique_ecritures_1' as table_name,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''C'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [CLASSE:' || t_classes.code || ':' || t_classes_sections.code ||'] THEN montant_solde_debit ELSE 0 END' as column_name,
'0' AS is_cti,
t_classes_sections.texte AS entete,
t_classes_sections.texte AS entete_etendue,
'SUM'::text AS total_function
FROM compta.t_classes
JOIN compta.t_listes_tables ON (table_id = t_listes_tables.oid)
JOIN compta.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid
WHERE t_listes_tables.code = 'CPT' AND t_classes.code <> '' AND t_classes.is_cti <> '1' AND t_classes.sequence <> 9
GROUP BY 1,2,3,4,5,6,7,8,9,10,11
) w_indicateurs;
INSERT INTO w_indicateurs
SELECT
code,
external_code,
old_code,
classe_section_code,
texte,
table_name,
column_name,
is_cti,
entete,
entete_etendue,
total_function
FROM (
SELECT
'*C_' || t_classes.code|| '-' || t_classes_sections.code || '-C' AS code,
'*C_' || t_classes.oid::text || '-' || t_classes_sections.oid::text || '-C' AS external_code,
''::text AS old_code,
t_classes.code|| ':' || t_classes_sections.code AS classe_section_code,
'Comptes de la section : ' || t_classes.texte || ' - ' || t_classes_sections.texte || ' (CREDIT)' as texte,
'v_historique_ecritures_1' as table_name,
'CASE WHEN ecriture_consolidee <> ''1'' AND v_historique_ecritures_1.clinique_honoraire = ''C'' AND journal_id NOT IN [LISTE:CTISIGJSAUFJRN] AND compte_id IN [CLASSE:' || t_classes.code || ':' || t_classes_sections.code ||'] THEN montant_solde_credit ELSE 0 END' as column_name,
'0' AS is_cti,
t_classes_sections.texte AS entete,
t_classes_sections.texte AS entete_etendue,
'SUM'::text AS total_function
FROM compta.t_classes
JOIN compta.t_listes_tables ON (table_id = t_listes_tables.oid)
JOIN compta.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid
WHERE t_listes_tables.code = 'CPT' AND t_classes.code <> '' AND t_classes.is_cti <> '1' AND t_classes.sequence <> 9
GROUP BY 1,2,3,4,5,6,7,8,9,10,11
) w_indicateurs;
UPDATE compta.t_indicateurs
SET code = w_indicateurs.code,
texte = w_indicateurs.texte
FROM w_indicateurs
WHERE w_indicateurs.external_code = t_indicateurs.external_code AND
(
t_indicateurs.texte IS DISTINCT FROM w_indicateurs.texte OR
t_indicateurs.code IS DISTINCT FROM w_indicateurs.code
);
INSERT INTO compta.t_indicateurs(
code,
external_code,
texte,
table_name,
column_name,
is_cti,
entete,
entete_etendue,
total_function,
dimension_date)
SELECT
code,
external_code,
texte,
table_name,
column_name,
is_cti,
entete,
entete_etendue,
total_function,
'4'::text AS dimension_date
FROM w_indicateurs
WHERE external_code NOT IN (SELECT external_code FROM compta.t_indicateurs WHERE external_code IS NOT NULL);
-- Changement de codes à reporter
UPDATE compta.t_indicateurs
SET column_name = replace(column_name,split_part(split_part(column_name,'[CLASSE:',2),']',1),(t_classes.code || ':' || t_classes_sections.code))
FROM compta.t_classes_sections
JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
WHERE t_indicateurs.external_code like '*C%' AND
t_classes_sections.oid::text = split_part(substr(t_indicateurs.external_code,4),'-',2) AND
t_classes_sections.classe_id::text = split_part(substr(t_indicateurs.external_code,4),'-',1) AND
column_name LIKE '%[CLASSE:%' AND
split_part(split_part(column_name,'[CLASSE:',2),']',1) <> (t_classes.code || ':' || t_classes_sections.code)
;
-- Ménage
DELETE FROM compta.t_indicateurs
WHERE oid IN
(
SELECT
t_indicateurs.oid
FROM compta.t_indicateurs
LEFT JOIN compta.t_classes_sections ON t_classes_sections.oid = split_part(substr(t_indicateurs.external_code,4),'-',2)::bigint
WHERE t_indicateurs.external_code like '*C%' AND
t_indicateurs.oid NOT IN (SELECT indicateur_id FROM compta.t_rapports_rubriques) AND
t_indicateurs.oid NOT IN (SELECT indicateur_id FROM compta.p_indicateurs_cumules) AND
(t_classes_sections.oid IS NULL OR
t_classes_sections.classe_id IS DISTINCT FROM split_part(substr(t_indicateurs.external_code,4),'-',1))
);
-- Reorganisation et valeurs par defaut
PERFORM base.cti_reorganize_indicateurs('compta');
RETURN 'OK';
END;

+ 401
- 0
db/schema2/functions/cti_gen_ajustements~bi.yaml View File

@ -0,0 +1,401 @@
return: text
lang: plpgsql
parameters:
p0:
type: bigint
name: i_oid
src: |
DECLARE
result TEXT;
BEGIN
-- Paramètres
-- i_oid = oid ajustement ou 0 pour tout
-- Suppression écritures déjà générées
DELETE FROM compta.p_historique_ecritures WHERE ajustement = '1' AND (cle_originale = i_oid::text OR i_oid = 0);
-- Insertion des écritures 'simples'
INSERT INTO compta.p_historique_ecritures(
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)
SELECT
COALESCE(t_comptes.oid, t_comptes_extra.compte_general_id, 0),
t_ecritures_ajustement.date_ecriture,
t_ecritures_ajustement.mois_comptable,
t_ecritures_ajustement.montant_credit,
t_ecritures_ajustement.montant_debit,
t_journaux.oid,
COALESCE(t_sections_analytiques.oid,0),
t_ecritures_ajustement.clinique_honoraire,
p_calendrier_mois.exercice_comptable,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.type_compta_id ELSE t_comptes_gen.type_compta_id END,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.oid ELSE COALESCE(t_comptes_extra.oid,0) END,
'0', '0', '1',
CASE WHEN t_ecritures_ajustement.ecriture_maitre_id = 0 THEN t_ecritures_ajustement.oid ELSE t_ecritures_ajustement.ecriture_maitre_id END::text,
0,
t_ecritures_ajustement.texte,
null, '', '', null, 0, 0, ''
FROM compta.t_ecritures_ajustement
JOIN base.p_calendrier_mois ON (t_ecritures_ajustement.mois_comptable = p_calendrier_mois.mois)
JOIN compta.t_journaux ON (t_ecritures_ajustement.journal_code = t_journaux.code)
LEFT JOIN compta.t_sections_analytiques ON (t_ecritures_ajustement.section_analytique_code = t_sections_analytiques.code)
LEFT JOIN compta.t_comptes ON (t_ecritures_ajustement.compte_numero = t_comptes.numero AND t_comptes.oid = t_comptes.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_extra ON (t_ecritures_ajustement.compte_numero = t_comptes_extra.numero AND t_comptes_extra.oid <> t_comptes_extra.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_gen ON (t_comptes_extra.compte_general_id = t_comptes_gen.oid)
WHERE t_ecritures_ajustement.est_import_data IS DISTINCT FROM '1' AND
(
t_ecritures_ajustement.oid = i_oid OR
t_ecritures_ajustement.ecriture_maitre_id = i_oid OR
i_oid = 0
);
-- Insertion des écritures 'simples' en report mois suivant
INSERT INTO compta.p_historique_ecritures(
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)
SELECT
COALESCE(t_comptes.oid, t_comptes_extra.compte_general_id, 0),
t_ecritures_ajustement.date_ecriture,
CASE WHEN substr(t_ecritures_ajustement.mois_comptable, 5, 2) <> '12' THEN t_ecritures_ajustement.mois_comptable + 1 ELSE t_ecritures_ajustement.mois_comptable + 89 END,
t_ecritures_ajustement.montant_debit,
t_ecritures_ajustement.montant_credit,
t_journaux.oid,
COALESCE(t_sections_analytiques.oid,0),
t_ecritures_ajustement.clinique_honoraire,
p_calendrier_mois.exercice_comptable,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.type_compta_id ELSE t_comptes_gen.type_compta_id END,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.oid ELSE COALESCE(t_comptes_extra.oid,0) END,
'0', '0', '1',
CASE WHEN t_ecritures_ajustement.ecriture_maitre_id = 0 THEN t_ecritures_ajustement.oid ELSE t_ecritures_ajustement.ecriture_maitre_id END::text,
0,
'REPORT ' || t_ecritures_ajustement.texte,
null, '', '', null, 0, 0, ''
FROM compta.t_ecritures_ajustement
JOIN base.p_calendrier_mois ON (t_ecritures_ajustement.mois_comptable = p_calendrier_mois.mois)
JOIN compta.t_journaux ON (t_ecritures_ajustement.journal_code = t_journaux.code)
LEFT JOIN compta.t_sections_analytiques ON (t_ecritures_ajustement.section_analytique_code = t_sections_analytiques.code)
LEFT JOIN compta.t_comptes ON (t_ecritures_ajustement.compte_numero = t_comptes.numero AND t_comptes.oid = t_comptes.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_extra ON (t_ecritures_ajustement.compte_numero = t_comptes_extra.numero AND t_comptes_extra.oid <> t_comptes_extra.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_gen ON (t_comptes_extra.compte_general_id = t_comptes_gen.oid)
WHERE t_ecritures_ajustement.est_import_data IS DISTINCT FROM '1' AND
t_ecritures_ajustement.report_automatique_mois_suivant = '1' AND
(
t_ecritures_ajustement.oid = i_oid OR
t_ecritures_ajustement.ecriture_maitre_id = i_oid OR
i_oid = 0
);
-- Insertion des écritures en format Excel
IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_gen_ajustements') THEN
CREATE TEMP TABLE w_cti_gen_ajustements(
oid bigint,
clinique_honoraire text,
report_automatique_mois_suivant text,
est_balance text,
texte_source text,
import_ligne text,
import_date text,
import_journal text,
import_compte text,
import_section text,
import_texte text,
import_debit text,
import_credit text,
date_ecriture date DEFAULT '20991231',
mois_comptable numeric DEFAULT 0,
exercice_comptable numeric DEFAULT 0,
montant_debit numeric default 0,
montant_credit numeric default 0);
END IF;
TRUNCATE w_cti_gen_ajustements;
INSERT INTO w_cti_gen_ajustements(oid, clinique_honoraire, report_automatique_mois_suivant, est_balance, texte_source, import_ligne)
SELECT
oid,
clinique_honoraire,
report_automatique_mois_suivant,
est_balance,
texte,
trim(import_ligne) AS import_ligne
FROM
(
SELECT oid, clinique_honoraire, report_automatique_mois_suivant, est_balance, texte, unnest(data_array) AS import_ligne
FROM
(
SELECT
t_ecritures_ajustement.oid, clinique_honoraire, report_automatique_mois_suivant, est_balance, texte, string_to_array(replace(import_data,E'\t','||'),E'\r') AS data_array
FROM compta.t_ecritures_ajustement
WHERE est_import_data = '1' AND
(
t_ecritures_ajustement.oid = i_oid OR
i_oid = 0
)
) subview
) subview
WHERE trim(import_ligne) <> '';
UPDATE w_cti_gen_ajustements SET
import_date = trim(split_part(import_ligne,'||',1)),
import_journal = upper(trim(split_part(import_ligne,'||',2))),
import_compte = trim(split_part(import_ligne,'||',3)),
import_section = trim(split_part(import_ligne,'||',4)),
import_texte = trim(split_part(import_ligne,'||',5)),
import_debit = trim(split_part(import_ligne,'||',6)),
import_credit = trim(split_part(import_ligne,'||',7))
;
UPDATE w_cti_gen_ajustements SET
date_ecriture = base.cti_to_date(import_date),
montant_debit = base.cti_to_number(translate(import_debit,',€? ','.')),
montant_credit = base.cti_to_number(translate(import_credit ,',€? ','.'));
UPDATE w_cti_gen_ajustements SET
mois_comptable = date_part('year',date_ecriture)*100+date_part('month',date_ecriture)
;
UPDATE w_cti_gen_ajustements SET
exercice_comptable = p_calendrier_mois.exercice_comptable
FROM base.p_calendrier_mois
WHERE p_calendrier_mois.mois = w_cti_gen_ajustements.mois_comptable
;
-- Si balance, traitement comptes en double
UPDATE w_cti_gen_ajustements SET
import_compte = CASE WHEN w_cti_gen_ajustements.CTID = keepCTID THEN w_cti_gen_ajustements.import_compte ELSE '' END,
montant_debit = subview.montant_debit,
montant_credit = subview.montant_credit
FROM
(
SELECT
mois_comptable,
clinique_honoraire,
import_compte,
SUM(montant_debit) AS montant_debit,
SUM(montant_credit) AS montant_credit,
MIN(CTID) AS keepCTID
FROM w_cti_gen_ajustements
WHERE est_balance IN ('M','X') AND
NOT (import_compte = '' OR import_compte < '1' OR import_compte >= '8')
GROUP BY 1,2,3
HAVING count(*) > 1
) subview
WHERE w_cti_gen_ajustements.mois_comptable = subview.mois_comptable AND
w_cti_gen_ajustements.import_compte = subview.import_compte AND
w_cti_gen_ajustements.clinique_honoraire = subview.clinique_honoraire
;
DELETE FROM w_cti_gen_ajustements
WHERE import_compte = '' OR import_compte < '1' OR import_compte >= '8' ;
-- Si import balances, génération des écarts
DROP TABLE IF EXISTS w_cti_gen_ajustements_synthese;
CREATE TEMP TABLE w_cti_gen_ajustements_synthese AS
SELECT oid,
mois_comptable,
mois_comptable AS mois_comptable_1,
0::numeric AS exercice_comptable,
clinique_honoraire,
substr(import_compte,1,1) AS classe,
MAX(import_journal) AS import_journal,
MAX(import_texte) AS import_texte,
MAX(date_ecriture) AS date_ecriture,
MAX(texte_source) AS texte_source,
MAX(report_automatique_mois_suivant) AS report_automatique_mois_suivant,
MAX(est_balance) AS est_balance
FROM w_cti_gen_ajustements
WHERE import_compte <> '' AND
est_balance IN ('M','X') AND
mois_comptable IS NOT NULL AND
substr(import_compte,1,1) IN ('1','2','3','4','5','6','7')
GROUP BY 1,2,3,4,5,6;
UPDATE w_cti_gen_ajustements_synthese SET
mois_comptable_1 = CASE WHEN est_balance = 'X' THEN p_calendrier_mois.exercice_mois_comptable_1 ELSE mois_comptable_1 END,
exercice_comptable = p_calendrier_mois.exercice_comptable
FROM base.p_calendrier_mois
WHERE mois = mois_comptable;
DROP TABLE IF EXISTS w_cti_gen_ajustements_deja;
CREATE TEMP TABLE w_cti_gen_ajustements_deja AS
SELECT w_cti_gen_ajustements_synthese.oid,
w_cti_gen_ajustements_synthese.mois_comptable,
w_cti_gen_ajustements_synthese.exercice_comptable,
w_cti_gen_ajustements_synthese.clinique_honoraire,
compte_nonsigne_numero AS numero,
SUM(montant_debit) AS montant_debit,
SUM(montant_credit) AS montant_credit,
SUM(montant_debit) - SUM(montant_credit) AS montant,
MAX(import_journal) AS import_journal,
MAX(import_texte) AS import_texte,
MAX(w_cti_gen_ajustements_synthese.date_ecriture) AS date_ecriture,
MAX(texte_source) AS texte_source,
MAX(report_automatique_mois_suivant) AS report_automatique_mois_suivant,
MAX(est_balance) AS est_balance
FROM compta.p_historique_ecritures
JOIN compta.t_comptes ON compte_id = t_comptes.oid
JOIN w_cti_gen_ajustements_synthese ON
substr(t_comptes.numero,1,1) = w_cti_gen_ajustements_synthese.classe AND
p_historique_ecritures.mois_comptable BETWEEN w_cti_gen_ajustements_synthese.mois_comptable_1 AND w_cti_gen_ajustements_synthese.mois_comptable AND
p_historique_ecritures.clinique_honoraire = w_cti_gen_ajustements_synthese.clinique_honoraire AND
p_historique_ecritures.is_budget = '0'
GROUP BY 1,2,3,4,5
ORDER BY 1,2,3,5,6
;
INSERT INTO w_cti_gen_ajustements(oid, clinique_honoraire, report_automatique_mois_suivant, est_balance, texte_source, import_journal, import_compte, import_texte, date_ecriture, exercice_comptable, mois_comptable, montant_debit, montant_credit)
SELECT w_cti_gen_ajustements_deja.oid,
w_cti_gen_ajustements_deja.clinique_honoraire,
w_cti_gen_ajustements_deja.report_automatique_mois_suivant,
w_cti_gen_ajustements_deja.est_balance,
w_cti_gen_ajustements_deja.texte_source,
w_cti_gen_ajustements_deja.import_journal,
w_cti_gen_ajustements_deja.numero,
w_cti_gen_ajustements_deja.import_texte,
w_cti_gen_ajustements_deja.date_ecriture,
w_cti_gen_ajustements_deja.exercice_comptable,
w_cti_gen_ajustements_deja.mois_comptable,
0,
0
FROM w_cti_gen_ajustements_deja
LEFT JOIN w_cti_gen_ajustements ON
w_cti_gen_ajustements_deja.mois_comptable = w_cti_gen_ajustements.mois_comptable AND
w_cti_gen_ajustements_deja.clinique_honoraire = w_cti_gen_ajustements.clinique_honoraire AND
w_cti_gen_ajustements_deja.numero = w_cti_gen_ajustements.import_compte
WHERE w_cti_gen_ajustements.import_compte IS NULL
;
UPDATE w_cti_gen_ajustements SET
montant_debit = CASE WHEN montant_ajustement <= 0 THEN 0-montant_ajustement ELSE 0 END,
montant_credit = CASE WHEN montant_ajustement >= 0 THEN montant_ajustement ELSE 0 END
FROM
(
SELECT
w_cti_gen_ajustements_deja.mois_comptable,
w_cti_gen_ajustements_deja.clinique_honoraire,
numero,
w_cti_gen_ajustements_deja.montant - (w_cti_gen_ajustements.montant_debit - w_cti_gen_ajustements.montant_credit) AS montant_ajustement
FROM w_cti_gen_ajustements_deja
JOIN w_cti_gen_ajustements ON
w_cti_gen_ajustements_deja.mois_comptable = w_cti_gen_ajustements.mois_comptable AND
w_cti_gen_ajustements_deja.clinique_honoraire = w_cti_gen_ajustements.clinique_honoraire AND
w_cti_gen_ajustements_deja.numero = w_cti_gen_ajustements.import_compte
ORDER BY 1,2,3
) subview
WHERE subview.mois_comptable = w_cti_gen_ajustements.mois_comptable AND
subview.clinique_honoraire = w_cti_gen_ajustements.clinique_honoraire AND
subview.numero = w_cti_gen_ajustements.import_compte;
-- Génération des écritures
INSERT INTO compta.p_historique_ecritures(
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)
SELECT
COALESCE(t_comptes.oid, t_comptes_extra.compte_general_id, 0),
w_cti_gen_ajustements.date_ecriture,
w_cti_gen_ajustements.mois_comptable,
w_cti_gen_ajustements.montant_credit,
w_cti_gen_ajustements.montant_debit,
t_journaux.oid,
COALESCE(t_sections_analytiques.oid,0),
w_cti_gen_ajustements.clinique_honoraire,
w_cti_gen_ajustements.exercice_comptable,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.type_compta_id ELSE t_comptes_gen.type_compta_id END,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.oid ELSE COALESCE(t_comptes_extra.oid,0) END,
'0', '0', '1',
w_cti_gen_ajustements.oid::text,
0,
w_cti_gen_ajustements.texte_source || CASE WHEN w_cti_gen_ajustements.import_texte <> '' THEN '- ' || w_cti_gen_ajustements.import_texte ELSE '' END,
null, '', '', null, 0, 0, ''
FROM w_cti_gen_ajustements
JOIN compta.t_journaux ON (w_cti_gen_ajustements.import_journal = t_journaux.code)
LEFT JOIN compta.t_sections_analytiques ON (w_cti_gen_ajustements.import_section = t_sections_analytiques.code)
LEFT JOIN compta.t_comptes ON (w_cti_gen_ajustements.import_compte = t_comptes.numero AND t_comptes.oid = t_comptes.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_extra ON (w_cti_gen_ajustements.import_compte = t_comptes_extra.numero AND t_comptes_extra.oid <> t_comptes_extra.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_gen ON (t_comptes_extra.compte_general_id = t_comptes_gen.oid)
WHERE import_compte <> '' AND
(w_cti_gen_ajustements.montant_debit <> 0 OR
w_cti_gen_ajustements.montant_credit <> 0)
;
-- Report mois suivant
INSERT INTO compta.p_historique_ecritures(
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)
SELECT
COALESCE(t_comptes.oid, t_comptes_extra.compte_general_id, 0),
w_cti_gen_ajustements.date_ecriture,
CASE WHEN substr(w_cti_gen_ajustements.mois_comptable, 5, 2) <> '12' THEN w_cti_gen_ajustements.mois_comptable + 1 ELSE w_cti_gen_ajustements.mois_comptable + 89 END,
w_cti_gen_ajustements.montant_debit,
w_cti_gen_ajustements.montant_credit,
t_journaux.oid,
COALESCE(t_sections_analytiques.oid,0),
w_cti_gen_ajustements.clinique_honoraire,
w_cti_gen_ajustements.exercice_comptable,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.type_compta_id ELSE t_comptes_gen.type_compta_id END,
CASE WHEN t_comptes.oid IS NOT NULL THEN t_comptes.oid ELSE COALESCE(t_comptes_extra.oid,0) END,
'0', '0', '1',
w_cti_gen_ajustements.oid::text,
0,
'REPORT ' || w_cti_gen_ajustements.texte_source || CASE WHEN w_cti_gen_ajustements.import_texte <> '' THEN '- ' || w_cti_gen_ajustements.import_texte ELSE '' END,
null, '', '', null, 0, 0, ''
FROM w_cti_gen_ajustements
JOIN compta.t_journaux ON (w_cti_gen_ajustements.import_journal = t_journaux.code)
LEFT JOIN compta.t_sections_analytiques ON (w_cti_gen_ajustements.import_section = t_sections_analytiques.code)
LEFT JOIN compta.t_comptes ON (w_cti_gen_ajustements.import_compte = t_comptes.numero AND t_comptes.oid = t_comptes.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_extra ON (w_cti_gen_ajustements.import_compte = t_comptes_extra.numero AND t_comptes_extra.oid <> t_comptes_extra.compte_general_id)
LEFT JOIN compta.t_comptes t_comptes_gen ON (t_comptes_extra.compte_general_id = t_comptes_gen.oid)
WHERE import_compte <> '' AND
w_cti_gen_ajustements.report_automatique_mois_suivant = '1' AND
(w_cti_gen_ajustements.montant_debit <> 0 OR
w_cti_gen_ajustements.montant_credit <> 0)
;
UPDATE compta.p_historique_ecritures
SET site_id = coalesce((SELECT MIN(oid) FROM compta.t_sites WHERE oid <> 0), 0)
WHERE site_id IS NULL OR site_id = 0;
-- Regénération écritures 'total'
DELETE FROM compta.p_historique_ecritures_total WHERE ajustement = '1' ;
INSERT INTO compta.p_historique_ecritures_total(
compte_id, mois_comptable, montant_credit, montant_debit, journal_id,
section_analytique_id, clinique_honoraire, exercice_comptable,
type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,
ajustement, inter_site, ecriture_consolidee, nombre_ecritures)
SELECT
compte_id, mois_comptable, sum(montant_credit), sum(montant_debit), journal_id,
section_analytique_id, clinique_honoraire, exercice_comptable,
type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,
ajustement, inter_site, ecriture_consolidee, count(*)
FROM compta.p_historique_ecritures
WHERE ajustement = '1'
GROUP BY
compte_id, mois_comptable, journal_id,
section_analytique_id, clinique_honoraire, exercice_comptable,
type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,
ajustement, inter_site, ecriture_consolidee;
-- Report des cumuls sur données importées excel
UPDATE compta.t_ecritures_ajustement SET
journal_code = subview.journal_code,
mois_comptable = subview.mois_comptable,
montant_debit = subview.montant_debit,
montant_credit = subview.montant_credit
FROM
(
SELECT
cle_originale,
base.cti_group_concat(DISTINCT t_journaux.code) AS journal_code,
SUM(montant_debit) AS montant_debit,
SUM(montant_credit) AS montant_credit,
MAX(CASE WHEN p_historique_ecritures.texte NOT LIKE 'REPORT %' THEN mois_comptable ELSE 0 END) AS mois_comptable
FROM compta.p_historique_ecritures
JOIN compta.t_journaux ON journal_id = t_journaux.oid
WHERE ajustement = '1'
GROUP BY 1
) subview
WHERE t_ecritures_ajustement.oid = subview.cle_originale AND
t_ecritures_ajustement.est_import_data = '1';
RETURN 'OK';
END;

+ 554
- 0
db/schema2/functions/cti_gen_budget~bi.yaml View File

@ -0,0 +1,554 @@
return: text
lang: plpgsql
parameters:
p0:
type: bigint
name: i_oid
src: |
DECLARE
result TEXT;
BEGIN
-- Table de travail
IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_gen_budget') THEN
DROP TABLE IF EXISTS w_cti_gen_budget;
CREATE TEMP TABLE w_cti_gen_budget(
oid bigint,
import_ligne text,
import_compte_budgetaire text,
import_compte_texte text,
import_include_comptes text,
import_exclude_comptes text,
import_montant_exercice text,
import_type_ventilation text,
import_taux01 text,
import_taux02 text,
import_taux03 text,
import_taux04 text,
import_taux05 text,
import_taux06 text,
import_taux07 text,
import_taux08 text,
import_taux09 text,
import_taux10 text,
import_taux11 text,
import_taux12 text,
montant_exercice numeric,
taux01 numeric,
taux02 numeric,
taux03 numeric,
taux04 numeric,
taux05 numeric,
taux06 numeric,
taux07 numeric,
taux08 numeric,
taux09 numeric,
taux10 numeric,
taux11 numeric,
taux12 numeric,
import_section_analytique text
);
END IF;
-- lignes de budget issues du copier coller excel
TRUNCATE w_cti_gen_budget;
INSERT INTO w_cti_gen_budget(oid, import_ligne)
SELECT
oid,
trim(import_ligne) AS import_ligne
FROM
(
SELECT oid, unnest(data_array) AS import_ligne
FROM
(
SELECT
t_budget.oid, string_to_array(replace(import_data,E'\t','||'),E'\r') AS data_array
FROM compta.t_budget
WHERE is_actif = '1' AND
(
t_budget.oid = i_oid OR
i_oid = 0
)
) subview
) subview
WHERE trim(import_ligne) <> '';
-- Découpage champs
UPDATE w_cti_gen_budget SET
import_compte_budgetaire = trim(split_part(import_ligne,'||',1)),
import_compte_texte = trim(split_part(import_ligne,'||',2)),
import_include_comptes = trim(split_part(import_ligne,'||',3)),
import_exclude_comptes = trim(split_part(import_ligne,'||',4)),
import_montant_exercice = trim(split_part(import_ligne,'||',5)),
import_type_ventilation = trim(split_part(import_ligne,'||',6)),
import_taux01 = trim(split_part(import_ligne,'||',7)),
import_taux02 = trim(split_part(import_ligne,'||',8)),
import_taux03 = trim(split_part(import_ligne,'||',9)),
import_taux04 = trim(split_part(import_ligne,'||',10)),
import_taux05 = trim(split_part(import_ligne,'||',11)),
import_taux06 = trim(split_part(import_ligne,'||',12)),
import_taux07 = trim(split_part(import_ligne,'||',13)),
import_taux08 = trim(split_part(import_ligne,'||',14)),
import_taux09 = trim(split_part(import_ligne,'||',15)),
import_taux10 = trim(split_part(import_ligne,'||',16)),
import_taux11 = trim(split_part(import_ligne,'||',17)),
import_taux12 = trim(split_part(import_ligne,'||',18)),
import_section_analytique = trim(split_part(import_ligne,'||',19))
;
-- Champs numériques
UPDATE w_cti_gen_budget SET
montant_exercice = CASE WHEN import_montant_exercice <> '' THEN base.cti_to_number(translate(import_montant_exercice ,',€? ','.')) ELSE 0 END,
taux01 = CASE WHEN import_taux01 <> '' THEN base.cti_to_number(translate(import_taux01 ,',€? ','.')) ELSE 0 END,
taux02 = CASE WHEN import_taux02 <> '' THEN base.cti_to_number(translate(import_taux02 ,',€? ','.')) ELSE 0 END,
taux03 = CASE WHEN import_taux03 <> '' THEN base.cti_to_number(translate(import_taux03 ,',€? ','.')) ELSE 0 END,
taux04 = CASE WHEN import_taux04 <> '' THEN base.cti_to_number(translate(import_taux04 ,',€? ','.')) ELSE 0 END,
taux05 = CASE WHEN import_taux05 <> '' THEN base.cti_to_number(translate(import_taux05 ,',€? ','.')) ELSE 0 END,
taux06 = CASE WHEN import_taux06 <> '' THEN base.cti_to_number(translate(import_taux06 ,',€? ','.')) ELSE 0 END,
taux07 = CASE WHEN import_taux07 <> '' THEN base.cti_to_number(translate(import_taux07 ,',€? ','.')) ELSE 0 END,
taux08 = CASE WHEN import_taux08 <> '' THEN base.cti_to_number(translate(import_taux08 ,',€? ','.')) ELSE 0 END,
taux09 = CASE WHEN import_taux09 <> '' THEN base.cti_to_number(translate(import_taux09 ,',€? ','.')) ELSE 0 END,
taux10 = CASE WHEN import_taux10 <> '' THEN base.cti_to_number(translate(import_taux10 ,',€? ','.')) ELSE 0 END,
taux11 = CASE WHEN import_taux11 <> '' THEN base.cti_to_number(translate(import_taux11 ,',€? ','.')) ELSE 0 END,
taux12 = CASE WHEN import_taux12 <> '' THEN base.cti_to_number(translate(import_taux12 ,',€? ','.')) ELSE 0 END
;
-- Génération des tables budget
DELETE FROM compta.t_budget_compte
WHERE budget_id IN (SELECT oid FROM w_cti_gen_budget)
;
-- Budget structuré
INSERT INTO compta.t_budget_compte(
budget_id,
numero,
texte,
clinique_honoraire,
section_analytique_code,
include_numero,
exclude_numero,
montant_budget_exercice,
mode_ventilation,
taux_budget_mensuel)
SELECT
oid,
import_compte_budgetaire,
import_compte_texte,
'C'::text AS clinique_honoraire,
import_section_analytique,
import_include_comptes,
import_exclude_comptes,
montant_exercice,
import_type_ventilation,
Array[
taux01,
taux02,
taux03,
taux04,
taux05,
taux06,
taux07,
taux08,
taux09,
taux10,
taux11,
taux12
]
FROM w_cti_gen_budget
WHERE import_compte_budgetaire <> '' AND
import_compte_budgetaire BETWEEN '1' AND '99999999' AND
import_include_comptes <> ''
;
-- Ajout compte à zéro pour jointure budget
INSERT INTO compta.t_types_compta(
oid, code_original, code, texte, specialite)
SELECT 0, '', 'NR', 'Non renseigné', ''
WHERE 0 NOT IN (SELECT oid FROM compta.t_types_compta)
;
INSERT INTO compta.t_classes_comptes
(oid, code, texte, clinique, honoraire)
SELECT 0, '0', 'Non renseigné', '0', '0'
WHERE 0 NOT IN (SELECT oid FROM compta.t_classes_comptes)
;
INSERT INTO compta.t_comptes
(oid, type_compta_id, numero, texte, clinique_honoraire, compte_general_id)
SELECT 0, 0, '00000000', 'Non renseigné', 'C', 0
WHERE 0 NOT IN (SELECT oid FROM compta.t_comptes)
;
INSERT INTO compta.t_comptes(
type_compta_id, numero, texte, clinique_honoraire)
SELECT subview.type_compta_id,
t_budget_compte.numero,
t_budget_compte.texte,
t_budget_compte.clinique_honoraire
FROM compta.t_budget_compte
JOIN
(
SELECT
substr(numero,1,1) AS classe, MAX(type_compta_id) AS type_compta_id
FROM compta.t_comptes
WHERE oid = compte_general_id
GROUP BY 1
ORDER BY count(*) DESC
) subview ON substr(numero,1,1)= subview.classe
LEFT JOIN compta.t_comptes ON
t_budget_compte.numero = t_comptes.numero AND
subview.type_compta_id = t_comptes.type_compta_id
WHERE t_budget_compte.numero BETWEEN '1' AND '99999999' AND
t_comptes.oid IS NULL
;
UPDATE compta.t_comptes
SET compte_general_id = oid
WHERE (compte_general_id IS NULL OR compte_general_id = 0) AND
numero IN (SELECT numero FROM compta.t_budget_compte)
;
PERFORM compta.cti_reorganize_comptes_c();
PERFORM base.cti_update_classes('compta', 't_comptes_c', 'CPT','');
UPDATE compta.t_budget_compte
SET compte_budget_id = t_comptes.oid
FROM compta.t_comptes
WHERE t_budget_compte.numero = t_comptes.numero AND
t_budget_compte.numero BETWEEN '1' AND '99999999' AND
compte_budget_id IS DISTINCT FROM t_comptes.oid
;
-- Table d'association lignes budget - comptes
DROP TABLE IF EXISTS w_budget_compte_compte;
CREATE TEMP TABLE w_budget_compte_compte AS
SELECT t_budget_compte.oid AS in_budget_compte_id, t_comptes.oid AS in_compte_id
FROM compta.t_budget_compte
JOIN compta.t_comptes ON
t_comptes.numero ILIKE ANY (string_to_array(replace(include_numero,'*','%'),' ')) AND
NOT (t_comptes.numero ILIKE ANY (string_to_array(replace(exclude_numero,'*','%'),' ')))
;
INSERT INTO compta.t_budget_compte_compte
(budget_compte_id, compte_id)
SELECT in_budget_compte_id, in_compte_id
FROM w_budget_compte_compte
LEFT JOIN compta.t_budget_compte_compte ON
in_budget_compte_id = budget_compte_id AND
in_compte_id = compte_id
WHERE budget_compte_id IS NULL
;
DELETE FROM compta.t_budget_compte_compte
USING
(
SELECT budget_compte_id, compte_id
FROM compta.t_budget_compte_compte
LEFT JOIN w_budget_compte_compte ON
in_budget_compte_id = budget_compte_id AND
in_compte_id = compte_id
WHERE in_budget_compte_id IS NULL
) subview
WHERE t_budget_compte_compte.budget_compte_id = subview.budget_compte_id AND
t_budget_compte_compte.compte_id = subview.compte_id
;
UPDATE compta.p_historique_ecritures_total p_historique_ecritures
SET compte_budget_id = t_budget_compte.compte_budget_id
FROM compta.t_budget_compte_compte,
compta.t_budget_compte,
compta.t_budget
WHERE t_budget_compte_compte.compte_id = p_historique_ecritures.compte_id AND
t_budget_compte_compte.budget_compte_id = t_budget_compte.oid AND
t_budget_compte.budget_id = t_budget.oid AND
t_budget.exercice_comptable = p_historique_ecritures.exercice_comptable AND
t_budget.site_id = p_historique_ecritures.site_id AND
p_historique_ecritures.compte_budget_id IS DISTINCT FROM t_budget_compte.compte_budget_id
;
UPDATE compta.p_historique_ecritures
SET compte_budget_id = t_budget_compte.compte_budget_id
FROM compta.t_budget_compte_compte,
compta.t_budget_compte,
compta.t_budget
WHERE t_budget_compte_compte.compte_id = p_historique_ecritures.compte_id AND
t_budget_compte_compte.budget_compte_id = t_budget_compte.oid AND
t_budget_compte.budget_id = t_budget.oid AND
t_budget.exercice_comptable = p_historique_ecritures.exercice_comptable AND
t_budget.site_id = p_historique_ecritures.site_id AND
p_historique_ecritures.compte_budget_id IS DISTINCT FROM t_budget_compte.compte_budget_id
;
UPDATE compta.p_historique_ecritures_total
SET compte_budget_id = compte_nonsigne_id
FROM compta.t_comptes
WHERE compte_id = t_comptes.oid AND
(compte_budget_id = 0 OR compte_budget_id IS NULL)
;
UPDATE compta.p_historique_ecritures
SET compte_budget_id = compte_nonsigne_id
FROM compta.t_comptes
WHERE compte_id = t_comptes.oid AND
(compte_budget_id = 0 OR compte_budget_id IS NULL)
;
UPDATE compta.p_historique_ecritures_total
SET compte_budget_id = 0
WHERE compte_budget_id IS NULL
;
UPDATE compta.p_historique_ecritures
SET compte_budget_id = 0
WHERE compte_budget_id IS NULL
;
-- Ventilation mensuelle
-- Mois
UPDATE compta.t_budget
SET mois = subview.mois
FROM
(
SELECT oid, base.cti_array_accum(mois) AS mois
FROM
(
SELECT t_budget.oid, p_calendrier_mois.mois
FROM base.p_calendrier_mois
JOIN compta.t_budget ON t_budget.exercice_comptable = p_calendrier_mois.exercice_comptable
ORDER BY t_budget.oid, p_calendrier_mois.mois
) subview
GROUP BY 1
) subview
WHERE t_budget.oid = subview.oid AND
t_budget.mois IS DISTINCT FROM subview.mois
;
-- Taux de ventilation
-- Prorata temporis
UPDATE compta.t_budget_compte
SET taux_budget_mensuel =
ARRAY[
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12,
1.00/12
]
WHERE mode_ventilation = '1'
;
--Saisonnalisé
UPDATE compta.t_budget_compte
SET taux_budget_mensuel = subview.taux_budget_mensuel
FROM
(
SELECT
t_budget_compte.oid,
t_budget_compte.numero,
Array[
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[1] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[2] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[3] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[4] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[5] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[6] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[7] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[8] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[9] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[10] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[11] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit)),
base.cti_division(SUM(CASE WHEN mois_comptable+100 = t_budget.mois[12] THEN montant_debit-montant_credit ELSE 0 END),SUM(montant_debit-montant_credit))
] AS taux_budget_mensuel,
SUM(montant_debit-montant_credit)
FROM compta.p_historique_ecritures
JOIN compta.t_budget ON p_historique_ecritures.exercice_comptable = t_budget.exercice_comptable -1
JOIN compta.t_budget_compte ON budget_id = t_budget.oid AND mode_ventilation = '2'
JOIN compta.t_budget_compte_compte ON t_budget_compte.oid = budget_compte_id
WHERE p_historique_ecritures.compte_id = t_budget_compte_compte.compte_id AND
is_budget IS DISTINCT FROM '1'
GROUP BY 1,2
) subview
WHERE t_budget_compte.oid = subview.oid
;
-- Montant saisis
UPDATE compta.t_budget_compte
SET taux_budget_mensuel =
ARRAY[
base.cti_division(taux_budget_mensuel[1],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[2],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[3],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[4],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[5],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[6],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[7],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[8],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[9],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[10],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[11],montant_budget_exercice),
base.cti_division(taux_budget_mensuel[12],montant_budget_exercice)
]
WHERE mode_ventilation = '8'
;
-- Ajustement dernier mois (arrondis)
UPDATE compta.t_budget_compte SET
montant_budget_mensuel =
ARRAY[
round(montant_budget_exercice * taux_budget_mensuel[1],2),
round(montant_budget_exercice * taux_budget_mensuel[2],2),
round(montant_budget_exercice * taux_budget_mensuel[3],2),
round(montant_budget_exercice * taux_budget_mensuel[4],2),
round(montant_budget_exercice * taux_budget_mensuel[5],2),
round(montant_budget_exercice * taux_budget_mensuel[6],2),
round(montant_budget_exercice * taux_budget_mensuel[7],2),
round(montant_budget_exercice * taux_budget_mensuel[8],2),
round(montant_budget_exercice * taux_budget_mensuel[9],2),
round(montant_budget_exercice * taux_budget_mensuel[10],2),
round(montant_budget_exercice * taux_budget_mensuel[11],2),
0.00
]
;
UPDATE compta.t_budget_compte SET
montant_budget_mensuel[12] =
montant_budget_exercice -
montant_budget_mensuel[1] -
montant_budget_mensuel[2] -
montant_budget_mensuel[3] -
montant_budget_mensuel[4] -
montant_budget_mensuel[5] -
montant_budget_mensuel[6] -
montant_budget_mensuel[7] -
montant_budget_mensuel[8] -
montant_budget_mensuel[9] -
montant_budget_mensuel[10] -
montant_budget_mensuel[11]
;
-- Génération en comptabilité
DELETE FROM compta.p_historique_ecritures
WHERE is_budget = '1'
;
INSERT INTO compta.p_historique_ecritures(
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,
texte,
date_facture_fournisseur,
date_echeance,
numero_cheque,
site_id,
is_budget,
compte_budget_id)
SELECT
t_budget_compte.compte_budget_id,
(t_budget.mois[i]||'01')::date AS date_ecriture,
t_budget.mois[i] AS mois_comptable,
CASE WHEN t_budget_compte.numero LIKE '7%' OR t_budget_compte.numero BETWEEN '1' AND '59999999' OR t_budget_compte.numero BETWEEN '8' AND '99999999' AND montant_budget_mensuel[i] > 0 THEN montant_budget_mensuel[i] ELSE 0 END AS montant_credit,
CASE WHEN t_budget_compte.numero LIKE '6%' OR t_budget_compte.numero BETWEEN '1' AND '59999999' OR t_budget_compte.numero BETWEEN '8' AND '99999999' AND montant_budget_mensuel[i] < 0 THEN 0-montant_budget_mensuel[i] ELSE 0 END AS montant_debit,
0::bigint AS journal_id,
COALESCE(t_sections_analytiques.oid,0::bigint) AS section_analytique_id,
t_budget_compte.clinique_honoraire,
t_budget.exercice_comptable,
t_comptes.type_compta_id,
t_budget_compte.compte_budget_id AS compte_extra_id,
'0'::text AS comptabilisee,
'0'::text AS fin_exercice,
'0'::text AS ajustement,
t_budget.oid AS cle_originale,
'Budget ' || t_budget.exercice_comptable || ' ' || t_budget.texte,
'20991231'::date AS date_facture_fournisseur,
'20991231'::date AS date_echeance,
''::text AS numero_cheque,
t_budget.site_id,
'1'::text AS is_budget,
t_budget_compte.compte_budget_id
FROM compta.t_budget
JOIN compta.t_budget_compte ON budget_id = t_budget.oid
JOIN compta.t_comptes ON t_budget_compte.compte_budget_id = t_comptes.oid
LEFT JOIN compta.t_sections_analytiques ON t_budget_compte.section_analytique_code = t_sections_analytiques.code AND t_budget_compte.section_analytique_code <> ''
JOIN (
SELECT generate_series(1,12) AS i
) subview ON 1=1
WHERE is_actif = '1'
;
-- Regénération écritures 'total'
DELETE FROM compta.p_historique_ecritures_total WHERE is_budget = '1' ;
INSERT INTO compta.p_historique_ecritures_total(
compte_id, mois_comptable, montant_credit, montant_debit, journal_id,
section_analytique_id, clinique_honoraire, exercice_comptable,
type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,
ajustement, inter_site, ecriture_consolidee,
is_budget,
compte_budget_id,
nombre_ecritures)
SELECT
compte_id, mois_comptable, montant_credit, montant_debit, journal_id,
section_analytique_id, clinique_honoraire, exercice_comptable,
type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,
ajustement, inter_site, ecriture_consolidee,
is_budget,
compte_budget_id,
1
FROM compta.p_historique_ecritures
WHERE is_budget = '1'
;
-- Ajout des oid des comptes budgetaires
INSERT INTO compta.p_oids (code_table, oid)
SELECT 'comptes_budget_c', compte_budget_id
FROM compta.p_historique_ecritures_total
WHERE clinique_honoraire = 'C'
AND compte_budget_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_budget_c')
GROUP BY 1,2;
RETURN 'OK';
END;

+ 61
- 0
db/schema2/functions/cti_now~tx,tx.yaml View File

@ -0,0 +1,61 @@
return: date
lang: plpgsql
parameters:
p0:
type: text
name: i_code
p1:
type: text
name: i_option
src: |
DECLARE
_code text;
_option text;
_now date;
BEGIN
_code = i_code;
IF _code NOT IN ('NOW', 'NOWCLOTURE') THEN
_code = 'NOW';
END IF;
_option = i_option;
IF NOT EXISTS (SELECT * FROM compta.t_divers WHERE code = _code) THEN
_option = 'FORCE';
END IF;
IF _option = 'FORCE' THEN
_now =
CASE _code
WHEN 'NOW' THEN
(SELECT MAX(date_ecriture) FROM compta.p_historique_ecritures WHERE date_ecriture <= date(now()) )
WHEN 'NOWCLOTURE' THEN
(SELECT date(((MAX(mois_comptable))||'01')::date - interval '1 day') FROM compta.p_historique_ecritures WHERE (mois_comptable||'01')::date <= date(now()) )
ELSE date(now())
END;
UPDATE compta.t_divers SET
texte = CASE _code
WHEN 'NOW' THEN 'Date dernière écriture'
WHEN 'NOWCLOTURE' THEN 'Date clôture'
ELSE 'Date dernière écriture'
END,
valeur = _now::text,
valeur_date = _now,
show_info_module = true
WHERE code = _code;
INSERT INTO compta.t_divers (code, texte, valeur, valeur_date, description, show_info_module)
SELECT
_code,
CASE _code
WHEN 'NOW' THEN 'Date dernière écriture'
WHEN 'NOWCLOTURE' THEN 'Date clôture'
ELSE 'Date dernière écriture'
END,
_now::text,
_now,
'Date non modifiable',
true
WHERE _code NOT IN (SELECT code FROM compta.t_divers);
ELSE
_now = (SELECT valeur_date FROM compta.t_divers WHERE code = _code);
END IF;
RETURN _now;
END;

+ 818
- 0
db/schema2/functions/cti_reorganize_comptes_c.yaml View File

@ -0,0 +1,818 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
UPDATE compta.t_comptes
SET classe_1_id = t_classes_comptes.oid
FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux
WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND
substr(t_comptes_generaux.numero, 1 , 1) = t_classes_comptes.code AND
t_comptes.classe_1_id IS DISTINCT FROM t_classes_comptes.oid;
UPDATE compta.t_comptes
SET classe_2_id = t_classes_comptes.oid
FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux
WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND
substr(t_comptes_generaux.numero, 1 , 2) = t_classes_comptes.code AND
t_comptes.classe_2_id IS DISTINCT FROM t_classes_comptes.oid;
UPDATE compta.t_comptes
SET classe_3_id = t_classes_comptes.oid
FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux
WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND
substr(t_comptes_generaux.numero, 1 , 3) = t_classes_comptes.code AND
t_comptes.classe_3_id IS DISTINCT FROM t_classes_comptes.oid;
UPDATE compta.t_comptes
SET classe_4_id = t_classes_comptes.oid
FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux
WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND
substr(t_comptes_generaux.numero, 1 , 4) = t_classes_comptes.code AND
t_comptes.classe_4_id IS DISTINCT FROM t_classes_comptes.oid;
UPDATE compta.t_comptes
SET classe_5_id = t_classes_comptes.oid
FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux
WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND
substr(t_comptes_generaux.numero, 1 , 5) = t_classes_comptes.code AND
t_comptes.classe_5_id IS DISTINCT FROM t_classes_comptes.oid;
UPDATE compta.t_comptes
SET classe_6_id = t_classes_comptes.oid
FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux
WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND
substr(t_comptes_generaux.numero, 1 , 6) = t_classes_comptes.code AND
t_comptes.classe_6_id IS DISTINCT FROM t_classes_comptes.oid;
-- Comptes signes (classes 4 et 5 pour bilan)
-- Nouveaux champs
UPDATE compta.t_comptes
SET sens = ''
WHERE sens IS NULL;
UPDATE compta.t_comptes
SET sens = 'C'
WHERE t_comptes.numero like '%(C)' AND sens = ''
;
UPDATE compta.t_comptes
SET sens = 'D'
WHERE t_comptes.numero like '%(D)' AND sens = ''
;
UPDATE compta.t_comptes
SET compte_nonsigne_id = t_comptes_nonsigne.oid,
compte_nonsigne_numero = t_comptes_nonsigne.numero
FROM compta.t_comptes t_comptes_nonsigne
WHERE t_comptes_nonsigne.type_compta_id = t_comptes.type_compta_id AND
split_part(t_comptes.numero,'(C)',1) = t_comptes_nonsigne.numero AND
t_comptes.numero like '%(C)' AND
t_comptes.oid = t_comptes.compte_nonsigne_id
;
UPDATE compta.t_comptes
SET compte_nonsigne_id = t_comptes_nonsigne.oid,
compte_nonsigne_numero = t_comptes_nonsigne.numero
FROM compta.t_comptes t_comptes_nonsigne
WHERE t_comptes_nonsigne.type_compta_id = t_comptes.type_compta_id AND
split_part(t_comptes.numero,'(D)',1) = t_comptes_nonsigne.numero AND
t_comptes.numero like '%(D)' AND
t_comptes.oid = t_comptes.compte_nonsigne_id
;
UPDATE compta.t_comptes
SET compte_nonsigne_id = oid
WHERE sens = '' AND
compte_nonsigne_id IS DISTINCT FROM oid;
UPDATE compta.t_comptes
SET compte_nonsigne_numero = numero
WHERE sens = '' AND
compte_nonsigne_numero IS DISTINCT FROm numero
;
-- Sens des comptes selon exercice
DROP TABLE IF EXISTS cti_reorganize_comptes_compte_sens;
CREATE TEMP TABLE cti_reorganize_comptes_compte_sens AS
SELECT p_historique_ecritures_total.site_id,
t_comptes.compte_nonsigne_id AS oid,
t_comptes.compte_nonsigne_numero AS numero,
exercice_comptable,
CASE
WHEN SUM(montant_debit)-SUM(montant_credit) > 0 THEN 'D'
WHEN SUM(montant_debit)-SUM(montant_credit) < 0 THEN 'C'
ELSE '' END AS sens
FROM compta.p_historique_ecritures_total
JOIN compta.t_comptes ON t_comptes.oid = p_historique_ecritures_total.compte_id
WHERE t_comptes.numero LIKE '4%' OR t_comptes.numero LIKE '5%' OR t_comptes.numero LIKE '603%' OR t_comptes.numero LIKE '1813%' OR t_comptes.numero LIKE '1814%'
GROUP BY 1,2,3,4
ORDER BY 1,2;
UPDATE cti_reorganize_comptes_compte_sens
SET sens =
CASE
WHEN nb_c > nb_d THEN 'C'
WHEN nb_d > nb_c THEN 'D'
ELSE '' END
FROM (
SELECT oid,
SUM(CASE WHEN sens = 'C' THEN 1 ELSE 0 END) AS nb_c,
SUM(CASE WHEN sens = 'D' THEN 1 ELSE 0 END) AS nb_d
FROM cti_reorganize_comptes_compte_sens
GROUP BY 1
) subview
WHERE cti_reorganize_comptes_compte_sens.oid = subview.oid AND cti_reorganize_comptes_compte_sens.sens = ''
;
UPDATE cti_reorganize_comptes_compte_sens
SET sens =
CASE
WHEN nb_c > nb_d THEN 'C'
WHEN nb_d > nb_c THEN 'D'
ELSE '' END
FROM (
SELECT substr(numero,1,3) AS sous_classe,
SUM(CASE WHEN sens = 'C' THEN 1 ELSE 0 END) AS nb_c,
SUM(CASE WHEN sens = 'D' THEN 1 ELSE 0 END) AS nb_d
FROM cti_reorganize_comptes_compte_sens
GROUP BY 1
ORDER BY 1
) subview
WHERE substr(cti_reorganize_comptes_compte_sens.numero,1,3) = subview.sous_classe AND cti_reorganize_comptes_compte_sens.sens = ''
;
UPDATE cti_reorganize_comptes_compte_sens
SET sens =
CASE
WHEN nb_c > nb_d THEN 'C'
WHEN nb_d > nb_c THEN 'D'
ELSE '' END
FROM (
SELECT substr(numero,1,2) AS sous_classe,
SUM(CASE WHEN sens = 'C' THEN 1 ELSE 0 END) AS nb_c,
SUM(CASE WHEN sens = 'D' THEN 1 ELSE 0 END) AS nb_d
FROM cti_reorganize_comptes_compte_sens
GROUP BY 1
ORDER BY 1
) subview
WHERE substr(cti_reorganize_comptes_compte_sens.numero,1,2) = subview.sous_classe AND cti_reorganize_comptes_compte_sens.sens = ''
;
UPDATE cti_reorganize_comptes_compte_sens
SET sens = 'C'
WHERE sens = '' AND
substr(numero,1,1) = '4';
UPDATE cti_reorganize_comptes_compte_sens
SET sens = 'D'
WHERE sens = '' AND
substr(numero,1,1) = '5';
UPDATE cti_reorganize_comptes_compte_sens
SET sens = 'D'
WHERE sens = '' AND
substr(numero,1,3) = '603';
-- Ajout des comptes signes (debit et credit)
INSERT INTO compta.t_comptes(
type_compta_id,
numero,
texte,
compte_general_id,
clinique_honoraire,
banque,
etat,
classe_1_id,
classe_2_id,
classe_3_id,
classe_4_id,
classe_5_id,
classe_6_id,
solde_initial,
collectif,
type_compta_extra_id,
numero_extra,
texte_extra,
partenaire_id,
inter_site,
sens,
compte_nonsigne_id,
compte_nonsigne_numero)
SELECT
t_comptes.type_compta_id,
t_comptes.numero|| '(C)',
t_comptes.texte,
t_comptes.compte_general_id,
t_comptes.clinique_honoraire,
t_comptes.banque,
t_comptes.etat,
t_comptes.classe_1_id,
t_comptes.classe_2_id,
t_comptes.classe_3_id,
t_comptes.classe_4_id,
t_comptes.classe_5_id,
t_comptes.classe_6_id,
t_comptes.solde_initial,
t_comptes.collectif,
t_comptes.type_compta_extra_id,
t_comptes.numero_extra,
t_comptes.texte_extra,
t_comptes.partenaire_id,
t_comptes.inter_site,
'C' AS sens,
t_comptes.oid AS compte_nonsigne_id,
t_comptes.numero AS compte_nonsigne_numero
FROM compta.t_comptes
JOIN
( SELECT oid
FROM cti_reorganize_comptes_compte_sens
WHERE sens <> ''
GROUP BY 1
) subview
ON t_comptes.oid = subview.oid
WHERE (t_comptes.numero|| '(C)') NOT IN (SELECT numero FROM compta.t_comptes)
;
INSERT INTO compta.t_comptes(
type_compta_id,
numero,
texte,
compte_general_id,
clinique_honoraire,
banque,
etat,
classe_1_id,
classe_2_id,
classe_3_id,
classe_4_id,
classe_5_id,
classe_6_id,
solde_initial,
collectif,
type_compta_extra_id,
numero_extra,
texte_extra,
partenaire_id,
inter_site,
sens,
compte_nonsigne_id,
compte_nonsigne_numero)
SELECT
t_comptes.type_compta_id,
t_comptes.numero|| '(D)',
t_comptes.texte,
t_comptes.compte_general_id,
t_comptes.clinique_honoraire,
t_comptes.banque,
t_comptes.etat,
t_comptes.classe_1_id,
t_comptes.classe_2_id,
t_comptes.classe_3_id,
t_comptes.classe_4_id,
t_comptes.classe_5_id,
t_comptes.classe_6_id,
t_comptes.solde_initial,
t_comptes.collectif,
t_comptes.type_compta_extra_id,
t_comptes.numero_extra,
t_comptes.texte_extra,
t_comptes.partenaire_id,
t_comptes.inter_site,
'D' AS sens,
t_comptes.oid AS compte_nonsigne_id,
t_comptes.numero AS compte_nonsigne_numero
FROM compta.t_comptes
JOIN
( SELECT oid
FROM cti_reorganize_comptes_compte_sens
WHERE sens <> ''
GROUP BY 1
) subview
ON t_comptes.oid = subview.oid
WHERE (t_comptes.numero|| '(D)') NOT IN (SELECT numero FROM compta.t_comptes)
;
UPDATE compta.t_comptes_c
SET banque = t_comptes.banque
FROM compta.t_comptes
WHERE t_comptes.oid = t_comptes_c.compte_nonsigne_id AND
t_comptes_c.banque <> t_comptes.banque
;
-- Mise a jour des ecritures
UPDATE compta.p_historique_ecritures
SET compte_id = t_comptes_signe.oid
FROM compta.t_comptes
JOIN cti_reorganize_comptes_compte_sens ON t_comptes.compte_nonsigne_id = cti_reorganize_comptes_compte_sens.oid
JOIN compta.t_comptes t_comptes_signe ON cti_reorganize_comptes_compte_sens.oid = t_comptes_signe.compte_nonsigne_id AND
cti_reorganize_comptes_compte_sens.sens = t_comptes_signe.sens
WHERE p_historique_ecritures.compte_id = t_comptes.oid AND
p_historique_ecritures.site_id = cti_reorganize_comptes_compte_sens.site_id AND
p_historique_ecritures.exercice_comptable = cti_reorganize_comptes_compte_sens.exercice_comptable AND
p_historique_ecritures.compte_id IS DISTINCT FROM t_comptes_signe.oid
;
UPDATE compta.p_historique_ecritures_total p_historique_ecritures
SET compte_id = t_comptes_signe.oid
FROM compta.t_comptes
JOIN cti_reorganize_comptes_compte_sens ON t_comptes.compte_nonsigne_id = cti_reorganize_comptes_compte_sens.oid
JOIN compta.t_comptes t_comptes_signe ON cti_reorganize_comptes_compte_sens.oid = t_comptes_signe.compte_nonsigne_id AND
cti_reorganize_comptes_compte_sens.sens = t_comptes_signe.sens
WHERE p_historique_ecritures.compte_id = t_comptes.oid AND
p_historique_ecritures.site_id = cti_reorganize_comptes_compte_sens.site_id AND
p_historique_ecritures.exercice_comptable = cti_reorganize_comptes_compte_sens.exercice_comptable AND
p_historique_ecritures.compte_id IS DISTINCT FROM t_comptes_signe.oid
;
-- Code banque
UPDATE compta.t_comptes
SET banque = t_comptes_nonsignes.banque
FROM compta.t_comptes t_comptes_nonsignes
WHERE t_comptes.compte_nonsigne_id = t_comptes_nonsignes.oid AND
t_comptes.compte_nonsigne_id <> t_comptes.oid AND
t_comptes.banque <> t_comptes_nonsignes.banque
;
-- Mise a jour table repliquee
UPDATE compta.t_comptes_c SET
compte_general_id = t_comptes.compte_general_id,
compte_general_numero = t_comptes_generaux.numero,
compte_general_texte = t_comptes_generaux.texte,
numero = t_comptes.numero,
texte = t_comptes.texte,
clinique_honoraire = t_comptes.clinique_honoraire,
type_compta_id = t_comptes.type_compta_id,
type_compta_code = t_types_compta.code,
type_compta_texte = t_types_compta.texte,
banque = t_comptes.banque,
classe_1_id = t_comptes.classe_1_id,
classe_1_code = t_classe_1.code,
classe_1_texte = t_classe_1.texte,
classe_2_id = t_comptes.classe_2_id,
classe_2_code = t_classe_2.code,
classe_2_texte = t_classe_2.texte,
classe_3_id = t_comptes.classe_3_id,
classe_3_code = t_classe_3.code,
classe_3_texte = t_classe_3.texte,
classe_4_id = t_comptes.classe_4_id,
classe_4_code = t_classe_4.code,
classe_4_texte = t_classe_4.texte,
classe_5_id = t_comptes.classe_5_id,
classe_5_code = t_classe_5.code,
classe_5_texte = t_classe_5.texte,
classe_6_id = t_comptes.classe_6_id,
classe_6_code = t_classe_6.code,
classe_6_texte = t_classe_6.texte,
compte_nonsigne_id = t_comptes.compte_nonsigne_id,
compte_nonsigne_numero = t_comptes.compte_nonsigne_numero
FROM compta.t_comptes
JOIN compta.t_types_compta ON (t_comptes.type_compta_id = t_types_compta.oid )
JOIN compta.t_comptes t_comptes_generaux ON (t_comptes_generaux.oid = t_comptes.compte_general_id)
JOIN compta.t_classes_comptes t_classe_1 ON (t_comptes.classe_1_id = t_classe_1.oid)
JOIN compta.t_classes_comptes t_classe_2 ON (t_comptes.classe_2_id = t_classe_2.oid)
JOIN compta.t_classes_comptes t_classe_3 ON (t_comptes.classe_3_id = t_classe_3.oid)
JOIN compta.t_classes_comptes t_classe_4 ON (t_comptes.classe_4_id = t_classe_4.oid)
JOIN compta.t_classes_comptes t_classe_5 ON (t_comptes.classe_5_id = t_classe_5.oid)
JOIN compta.t_classes_comptes t_classe_6 ON (t_comptes.classe_6_id = t_classe_6.oid)
WHERE t_comptes.oid = t_comptes_c.oid
AND (
t_comptes_c.compte_general_id IS DISTINCT FROM t_comptes.compte_general_id OR
t_comptes_c.compte_general_numero IS DISTINCT FROM t_comptes_generaux.numero OR
t_comptes_c.compte_general_texte IS DISTINCT FROM t_comptes_generaux.texte OR
t_comptes_c.numero IS DISTINCT FROM t_comptes.numero OR
t_comptes_c.texte IS DISTINCT FROM t_comptes.texte OR
t_comptes_c.clinique_honoraire IS DISTINCT FROM t_comptes.clinique_honoraire OR
t_comptes_c.type_compta_id IS DISTINCT FROM t_comptes.type_compta_id OR
t_comptes_c.type_compta_code IS DISTINCT FROM t_types_compta.code OR
t_comptes_c.type_compta_texte IS DISTINCT FROM t_types_compta.texte OR
t_comptes_c.banque IS DISTINCT FROM t_comptes.banque OR
t_comptes_c.classe_1_id IS DISTINCT FROM t_comptes.classe_1_id OR
t_comptes_c.classe_1_code IS DISTINCT FROM t_classe_1.code OR
t_comptes_c.classe_1_texte IS DISTINCT FROM t_classe_1.texte OR
t_comptes_c.classe_2_id IS DISTINCT FROM t_comptes.classe_2_id OR
t_comptes_c.classe_2_code IS DISTINCT FROM t_classe_2.code OR
t_comptes_c.classe_2_texte IS DISTINCT FROM t_classe_2.texte OR
t_comptes_c.classe_3_id IS DISTINCT FROM t_comptes.classe_3_id OR
t_comptes_c.classe_3_code IS DISTINCT FROM t_classe_3.code OR
t_comptes_c.classe_3_texte IS DISTINCT FROM t_classe_3.texte OR
t_comptes_c.classe_4_id IS DISTINCT FROM t_comptes.classe_4_id OR
t_comptes_c.classe_4_code IS DISTINCT FROM t_classe_4.code OR
t_comptes_c.classe_4_texte IS DISTINCT FROM t_classe_4.texte OR
t_comptes_c.classe_5_id IS DISTINCT FROM t_comptes.classe_5_id OR
t_comptes_c.classe_5_code IS DISTINCT FROM t_classe_5.code OR
t_comptes_c.classe_5_texte IS DISTINCT FROM t_classe_5.texte OR
t_comptes_c.classe_6_id IS DISTINCT FROM t_comptes.classe_6_id OR
t_comptes_c.classe_6_code IS DISTINCT FROM t_classe_6.code OR
t_comptes_c.classe_6_texte IS DISTINCT FROM t_classe_6.texte OR
t_comptes_c.compte_nonsigne_id IS DISTINCT FROM t_comptes.compte_nonsigne_id OR
t_comptes_c.compte_nonsigne_numero IS DISTINCT FROM t_comptes.compte_nonsigne_numero
);
INSERT INTO compta.t_comptes_c(
compte_general_id,
compte_general_numero,
compte_general_texte,
oid,
numero,
texte,
clinique_honoraire,
type_compta_id,
type_compta_code,
type_compta_texte,
banque,
classe_1_id, classe_1_code, classe_1_texte,
classe_2_id, classe_2_code, classe_2_texte,
classe_3_id, classe_3_code, classe_3_texte,
classe_4_id, classe_4_code, classe_4_texte,
classe_5_id, classe_5_code, classe_5_texte,
classe_6_id, classe_6_code, classe_6_texte,
compte_nonsigne_id, compte_nonsigne_numero
)
SELECT
t_comptes.compte_general_id,
t_comptes_generaux.numero,
t_comptes_generaux.texte,
t_comptes.oid,
t_comptes.numero,
t_comptes.texte,
t_comptes.clinique_honoraire,
t_comptes.type_compta_id,
t_types_compta.code,
t_types_compta.texte,
t_comptes.banque,
t_comptes.classe_1_id, t_classe_1.code, t_classe_1.texte,
t_comptes.classe_2_id, t_classe_2.code, t_classe_2.texte,
t_comptes.classe_3_id, t_classe_3.code, t_classe_3.texte,
t_comptes.classe_4_id, t_classe_4.code, t_classe_4.texte,
t_comptes.classe_5_id, t_classe_5.code, t_classe_5.texte,
t_comptes.classe_6_id, t_classe_6.code, t_classe_6.texte,
t_comptes.compte_nonsigne_id, t_comptes.compte_nonsigne_numero
FROM compta.t_comptes
JOIN compta.t_types_compta ON (t_comptes.type_compta_id = t_types_compta.oid )
JOIN compta.t_comptes t_comptes_generaux ON (t_comptes_generaux.oid = t_comptes.compte_general_id)
JOIN compta.t_classes_comptes t_classe_1 ON (t_comptes.classe_1_id = t_classe_1.oid)
JOIN compta.t_classes_comptes t_classe_2 ON (t_comptes.classe_2_id = t_classe_2.oid)
JOIN compta.t_classes_comptes t_classe_3 ON (t_comptes.classe_3_id = t_classe_3.oid)
JOIN compta.t_classes_comptes t_classe_4 ON (t_comptes.classe_4_id = t_classe_4.oid)
JOIN compta.t_classes_comptes t_classe_5 ON (t_comptes.classe_5_id = t_classe_5.oid)
JOIN compta.t_classes_comptes t_classe_6 ON (t_comptes.classe_6_id = t_classe_6.oid)
WHERE t_comptes.oid NOT IN (SELECt oid FROM compta.t_comptes_c)
ORDER BY t_comptes.numero;
-- Texte des comptes signes
UPDATE compta.t_comptes_c SET
compte_nonsigne_numero = t_comptes_nonsigne.numero,
texte = t_comptes_nonsigne.texte
FROM compta.t_comptes t_comptes_nonsigne
WHERE t_comptes_nonsigne.oid = t_comptes_c.compte_nonsigne_id AND
t_comptes_c.compte_nonsigne_id <> t_comptes_c.oid AND
(
t_comptes_c.compte_nonsigne_numero IS DISTINCT FROM t_comptes_nonsigne.numero OR
t_comptes_c.texte IS DISTINCT FROM t_comptes_nonsigne.texte
)
;
-- Classes
UPDATE compta.t_comptes_c SET
arbre_classe_1_id = 0,
arbre_classe_1_code = '',
arbre_classe_1_texte = '',
arbre_classe_2_id = 0,
arbre_classe_2_code = '',
arbre_classe_2_texte = '',
arbre_classe_3_id = 0,
arbre_classe_3_code = '',
arbre_classe_3_texte = '',
arbre_classe_4_id = 0,
arbre_classe_4_code = '',
arbre_classe_4_texte = '',
arbre_classe_5_id = 0,
arbre_classe_5_code = '',
arbre_classe_5_texte = '',
arbre_classe_6_id = 0,
arbre_classe_6_code = '',
arbre_classe_6_texte = '',
arbre_classe_7_id = 0,
arbre_classe_7_code = '',
arbre_classe_7_texte = '';
UPDATE compta.t_comptes_c
SET
arbre_classe_1_id =
CASE
WHEN classe_1_texte <> '' THEN classe_1_id
WHEN classe_2_texte <> '' THEN classe_2_id
WHEN classe_3_texte <> '' THEN classe_3_id
WHEN classe_4_texte <> '' THEN classe_4_id
WHEN classe_5_texte <> '' THEN classe_5_id
WHEN classe_6_texte <> '' THEN classe_6_id
ELSE compte_general_id
END,
arbre_classe_1_code =
CASE
WHEN classe_1_texte <> '' THEN classe_1_code
WHEN classe_2_texte <> '' THEN classe_2_code
WHEN classe_3_texte <> '' THEN classe_3_code
WHEN classe_4_texte <> '' THEN classe_4_code
WHEN classe_5_texte <> '' THEN classe_5_code
WHEN classe_6_texte <> '' THEN classe_6_code
ELSE compte_general_numero
END,
arbre_classe_1_texte =
CASE
WHEN classe_1_texte <> '' THEN classe_1_texte
WHEN classe_2_texte <> '' THEN classe_2_texte
WHEN classe_3_texte <> '' THEN classe_3_texte
WHEN classe_4_texte <> '' THEN classe_4_texte
WHEN classe_5_texte <> '' THEN classe_5_texte
WHEN classe_6_texte <> '' THEN classe_6_texte
ELSE compte_general_texte
END
WHERE
arbre_classe_1_id IS DISTINCT FROM
CASE
WHEN classe_1_texte <> '' THEN classe_1_id
WHEN classe_2_texte <> '' THEN classe_2_id
WHEN classe_3_texte <> '' THEN classe_3_id
WHEN classe_4_texte <> '' THEN classe_4_id
WHEN classe_5_texte <> '' THEN classe_5_id
WHEN classe_6_texte <> '' THEN classe_6_id
ELSE compte_general_id
END OR
arbre_classe_1_code IS DISTINCT FROM
CASE
WHEN classe_1_texte <> '' THEN classe_1_code
WHEN classe_2_texte <> '' THEN classe_2_code
WHEN classe_3_texte <> '' THEN classe_3_code
WHEN classe_4_texte <> '' THEN classe_4_code
WHEN classe_5_texte <> '' THEN classe_5_code
WHEN classe_6_texte <> '' THEN classe_6_code
ELSE compte_general_numero
END OR
arbre_classe_1_texte IS DISTINCT FROM
CASE
WHEN classe_1_texte <> '' THEN classe_1_texte
WHEN classe_2_texte <> '' THEN classe_2_texte
WHEN classe_3_texte <> '' THEN classe_3_texte
WHEN classe_4_texte <> '' THEN classe_4_texte
WHEN classe_5_texte <> '' THEN classe_5_texte
WHEN classe_6_texte <> '' THEN classe_6_texte
ELSE compte_general_texte
END;
UPDATE compta.t_comptes_c
SET
arbre_classe_2_id =
CASE
WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_id
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_id
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_id
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END,
arbre_classe_2_code =
CASE
WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_code
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_code
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_code
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END,
arbre_classe_2_texte =
CASE
WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_texte
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_texte
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_texte
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
WHERE arbre_classe_1_code <> compte_general_numero
AND (
arbre_classe_2_id IS DISTINCT FROM
CASE
WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_id
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_id
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_id
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END OR
arbre_classe_2_code IS DISTINCT FROM
CASE
WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_code
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_code
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_code
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END OR
arbre_classe_2_texte IS DISTINCT FROM
CASE
WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_texte
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_texte
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_texte
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
);
UPDATE compta.t_comptes_c
SET
arbre_classe_3_id =
CASE
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_id
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_id
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END,
arbre_classe_3_code =
CASE
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_code
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_code
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END,
arbre_classe_3_texte =
CASE
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_texte
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_texte
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero
AND (
arbre_classe_3_id IS DISTINCT FROM
CASE
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_id
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_id
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END OR
arbre_classe_3_code IS DISTINCT FROM
CASE
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_code
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_code
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END OR
arbre_classe_3_texte IS DISTINCT FROM
CASE
WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_texte
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_texte
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
);
UPDATE compta.t_comptes_c
SET
arbre_classe_4_id =
CASE
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_id
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END,
arbre_classe_4_code =
CASE
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_code
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END,
arbre_classe_4_texte =
CASE
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_texte
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero
AND (
arbre_classe_4_id IS DISTINCT FROM
CASE
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_id
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END OR
arbre_classe_4_code IS DISTINCT FROM
CASE
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_code
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END OR
arbre_classe_4_texte IS DISTINCT FROM
CASE
WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_texte
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
);
UPDATE compta.t_comptes_c
SET
arbre_classe_5_id =
CASE
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END,
arbre_classe_5_code =
CASE
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END,
arbre_classe_5_texte =
CASE
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND
arbre_classe_3_code <> compte_general_numero AND arbre_classe_4_code <> compte_general_numero AND
(
arbre_classe_5_id IS DISTINCT FROM
CASE
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_id
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END OR
arbre_classe_5_code IS DISTINCT FROM
CASE
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_code
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END OR
arbre_classe_5_texte IS DISTINCT FROM
CASE
WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_texte
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
);
UPDATE compta.t_comptes_c
SET
arbre_classe_6_id =
CASE
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END,
arbre_classe_6_code =
CASE
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END,
arbre_classe_6_texte =
CASE
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero AND
arbre_classe_4_code <> compte_general_numero AND arbre_classe_5_code <> compte_general_numero AND
(
arbre_classe_6_id IS DISTINCT FROM
CASE
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id
ELSE compte_general_id
END OR
arbre_classe_6_code IS DISTINCT FROM
CASE
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code
ELSE compte_general_numero
END OR
arbre_classe_6_texte IS DISTINCT FROM
CASE
WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte
ELSE compte_general_texte
END
);
UPDATE compta.t_comptes_c
SET
arbre_classe_7_id = compte_general_id,
arbre_classe_7_code = compte_general_numero,
arbre_classe_7_texte = compte_general_texte
WHERE arbre_classe_1_code <> numero
AND arbre_classe_2_code <> compte_general_numero
AND arbre_classe_3_code <> compte_general_numero
AND arbre_classe_4_code <> compte_general_numero
AND arbre_classe_5_code <> compte_general_numero
AND arbre_classe_6_code <> compte_general_numero
AND (
arbre_classe_7_id IS DISTINCT FROM compte_general_id OR
arbre_classe_7_code IS DISTINCT FROM compte_general_numero OR
arbre_classe_7_texte IS DISTINCT FROM compte_general_texte
);
-- Synchronisation entre les tables t_comptes_c et t_comptes cf. intégrité des tables
DELETE
FROM compta.t_comptes_c
WHERE oid NOT IN (
SELECT oid
FROM compta.t_comptes
);
RETURN 'OK';
END;

+ 136
- 0
db/schema2/functions/cti_reorganize_controle_chiffrier.yaml View File

@ -0,0 +1,136 @@
return: text
lang: plpgsql
src: |
DECLARE
_marge_erreur numeric;
_ignorer_reglements text;
result TEXT;
BEGIN
RAISE NOTICE 'Initialisations';
RAISE NOTICE 'Lignes detaillees';
DROP TABLE IF EXISTS w_cumuls;
CREATE TEMP TABLE w_cumuls AS
SELECT site_id, 0::bigint AS provider_id, mois_comptable, clinique_honoraire,
round(SUM(montant_debit),2) AS montant_debit_d,
round(SUM(montant_credit),2) AS montant_credit_d,
0::numeric AS montant_debit_t,
0::numeric AS montant_credit_t,
0::numeric AS montant_debit_c,
0::numeric AS montant_credit_c
FROM compta.p_historique_ecritures
WHERE ajustement NOT IN ('1','2','3') AND ecriture_consolidee <= '0' AND
is_budget <> '1'
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4;
RAISE NOTICE 'Lignes totalisées';
INSERT INTO w_cumuls
SELECT site_id, 0::bigint AS provider_id, mois_comptable, clinique_honoraire,
0::numeric AS montant_debit_d,
0::numeric AS montant_credit_d,
round(SUM(montant_debit),2) AS montant_debit_t,
round(SUM(montant_credit),2) AS montant_credit_t,
0::numeric AS montant_debit_c,
0::numeric AS montant_credit_c
FROM compta.p_historique_ecritures_total
WHERE ajustement NOT IN ('1','2','3') AND ecriture_consolidee <= '0' AND
is_budget <> '1'
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4;
RAISE NOTICE 'Chiffrier production';
INSERT INTO w_cumuls
SELECT site_id, COALESCE(provider_id,0), mois_comptable, clinique_honoraire,
0::numeric AS montant_debit_d,
0::numeric AS montant_credit_d,
0::numeric AS montant_debit_t,
0::numeric AS montant_credit_t,
round(SUM(montant_debit),2) AS montant_debit_c,
round(SUM(montant_credit),2) AS montant_credit_c
FROM compta.p_chiffrier_comptable
WHERE mois_comptable >= (SELECT MIN(mois_comptable) FROM w_cumuls)
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4;
RAISE NOTICE 'Controles';
DROP TABLE IF EXISTS w_controle_chiffrier;
CREATE TEMP TABLE w_controle_chiffrier AS
SELECT site_id, provider_id, mois_comptable, clinique_honoraire,
SUM(montant_debit_d) AS montant_debit_d,
SUM(montant_credit_d) AS montant_credit_d,
SUM(montant_debit_t) AS montant_debit_t,
SUM(montant_credit_t) AS montant_credit_t,
SUM(montant_debit_c) AS montant_debit_c,
SUM(montant_credit_c) AS montant_credit_c,
CASE
WHEN SUM(montant_debit_d) = SUM(montant_debit_t) AND
SUM(montant_debit_c) = 0 AND
SUM(montant_credit_d) = SUM(montant_credit_t) AND
SUM(montant_credit_c) = 0
THEN '1'
WHEN SUM(montant_debit_d) = SUM(montant_debit_t) AND
SUM(montant_debit_d) = SUM(montant_debit_c) AND
SUM(montant_credit_d) = SUM(montant_credit_t) AND
SUM(montant_credit_d) = SUM(montant_credit_c)
THEN '1'
ELSE '0' END AS valide
FROM w_cumuls
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4;
UPDATE w_controle_chiffrier
SET valide = '1'
FROM compta.t_controle_chiffrier
WHERE w_controle_chiffrier.site_id = t_controle_chiffrier.site_id AND
w_controle_chiffrier.provider_id = t_controle_chiffrier.provider_id AND
w_controle_chiffrier.mois_comptable = t_controle_chiffrier.mois_comptable AND
w_controle_chiffrier.clinique_honoraire = t_controle_chiffrier.clinique_honoraire AND
w_controle_chiffrier.valide = '0' AND
t_controle_chiffrier.valide = '1' AND
w_controle_chiffrier.montant_debit_d = t_controle_chiffrier.montant_debit_d AND
w_controle_chiffrier.montant_debit_t = t_controle_chiffrier.montant_debit_t AND
w_controle_chiffrier.montant_debit_c = t_controle_chiffrier.montant_debit_c AND
w_controle_chiffrier.montant_credit_d = t_controle_chiffrier.montant_credit_d AND
w_controle_chiffrier.montant_credit_t = t_controle_chiffrier.montant_credit_t AND
w_controle_chiffrier.montant_credit_c = t_controle_chiffrier.montant_credit_c;
-- Antérieur
UPDATE w_controle_chiffrier
SET valide = '1'
WHERE valide <> '1' AND
mois_comptable < (SELECT MIN(mois_comptable) AS mois_comptable_first FROM compta.p_historique_ecritures);
TRUNCATE compta.t_controle_chiffrier;
INSERT INTO compta.t_controle_chiffrier
(
site_id, provider_id, mois_comptable, clinique_honoraire,
montant_debit_d,
montant_credit_d,
montant_debit_t,
montant_credit_t,
montant_debit_c,
montant_credit_c,
valide
)
SELECT w_controle_chiffrier.site_id, w_controle_chiffrier.provider_id, w_controle_chiffrier.mois_comptable, w_controle_chiffrier.clinique_honoraire,
montant_debit_d,
montant_credit_d,
montant_debit_t,
montant_credit_t,
montant_debit_c,
montant_credit_c,
valide
FROM w_controle_chiffrier
ORDER BY 1,2,3,4;
RETURN 'OK';
END;

+ 570
- 0
db/schema2/functions/cti_reorganize_indicateur_condition.yaml View File

@ -0,0 +1,570 @@
return: text
lang: plpgsql
src: |
DECLARE
sqlcmd text;
def_cursor refcursor;
_schemaname text;
result TEXT;
BEGIN
-- Formes d'activité
DROP TABLE IF EXISTS w_indicateur_condition;
CREATE TEMP TABLE w_indicateur_condition AS
SELECT
'CTI_COMPTE#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Compte. ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'compte_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'COMPTE_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_comptes_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid NOT LIKE 'CP%' AND
v_source.oid NOT LIKE 'CL%' AND
v_source.oid NOT LIKE 'LS09%' AND
v_source.oid <> '-1'
;
-- Journaux
INSERT INTO w_indicateur_condition
SELECT
'CTI_JOURNAL#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Journal. ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'journal_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'JOURNAL_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'JR%' THEN COALESCE('JR#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_journaux_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_journaux t_source ON v_source.oid LIKE 'JR%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1'
;
-- POLES
INSERT INTO w_indicateur_condition
SELECT
'CTI_POLE#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Pole. ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'pole_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'POLE='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'JR%' THEN COALESCE('JR#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_pole_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_journaux t_source ON v_source.oid LIKE 'JR%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1'
;
-- Sites
INSERT INTO w_indicateur_condition
SELECT
'CTI_SITE#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Site. ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'site_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'SITE_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SI%' THEN COALESCE('SI#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
v_source.texte
] AS arbre_texte
FROM compta.v_sites_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_sites t_source ON v_source.oid LIKE 'SI%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1' AND
v_source.oid <> 'SI0'
;
-- Sections analytiques
INSERT INTO w_indicateur_condition
SELECT
'CTI_SECANA#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section. ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'section_analytique_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'SECTION_ANALYTIQUE_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_sections_analytiques_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1'
;
-- Sections analytiques
INSERT INTO w_indicateur_condition
SELECT
'CTI_SECANA2#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (2). ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'section_analytique_2_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'SECTION_ANALYTIQUE_2_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_sections_analytiques_2_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1'
;
-- Sections analytiques
INSERT INTO w_indicateur_condition
SELECT
'CTI_SECANA3#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (3). ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'section_analytique_3_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'SECTION_ANALYTIQUE_3_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_sections_analytiques_3_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'SA%' OR (SELECT count(*) FROM compta.v_sections_analytiques_3_c_1) < 1000) AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1'
;
-- Sections analytiques
INSERT INTO w_indicateur_condition
SELECT
'CTI_SECANA4#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (4). ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'section_analytique_4_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'SECTION_ANALYTIQUE_4_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_sections_analytiques_4_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1'
;
-- Sections analytiques
INSERT INTO w_indicateur_condition
SELECT
'CTI_SECANA5#' || v_source.oid::text AS code,
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (5). ' || v_source.texte::text) AS texte,
v_source.texte AS texte_court,
'section_analytique_5_id'::text AS column_name,
''::text AS rule,
v_source.oid::text AS value,
'SECTION_ANALYTIQUE_5_C='||v_source.oid AS view_select_rule,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
ELSE '9' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
ELSE v_source.oid END
] AS arbre_code,
ARRAY[
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
ELSE 'Valeurs' END,
CASE
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
ELSE v_source.texte END
] AS arbre_texte
FROM compta.v_sections_analytiques_5_c_1 v_source
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
t_classes_sections.oid::text = substr(v_source.oid,5)
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
t_listes.oid::text = substr(v_source.oid,3) AND
t_listes.code <> ''
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
WHERE v_source.oid NOT LIKE 'LC%' AND
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
v_source.oid <> '-1'
;
-- Ne pas garder les listes vides
-- DELETE FROM w_indicateur_condition
-- WHERE value LIKE 'LI%' AND
-- substr(value,3) NOT IN (SELECT liste_id::text FROM compta.t_listes_contenu)
-- ;
INSERT INTO compta.t_indicateur_condition(code, texte,texte_court,column_name,rule,value,view_select_rule, arbre_code, arbre_texte)
SELECT code, texte,texte_court,column_name,rule,value,view_select_rule, arbre_code, arbre_texte
FROM w_indicateur_condition
WHERE code NOT IN (SELECT code FROM compta.t_indicateur_condition WHERE code IS NOT NULL)
;
UPDATE compta.t_indicateur_condition SET
texte = w_indicateur_condition.texte,
texte_court = w_indicateur_condition.texte_court,
column_name = w_indicateur_condition.column_name,
rule = w_indicateur_condition.rule,
value = w_indicateur_condition.value,
view_select_rule = w_indicateur_condition.view_select_rule,
arbre_code = w_indicateur_condition.arbre_code,
arbre_texte = w_indicateur_condition.arbre_texte
FROM w_indicateur_condition
WHERE w_indicateur_condition.code = t_indicateur_condition.code AND
(
t_indicateur_condition.texte IS DISTINCT FROM w_indicateur_condition.texte OR
t_indicateur_condition.texte_court IS DISTINCT FROM w_indicateur_condition.texte_court OR
t_indicateur_condition.column_name IS DISTINCT FROM w_indicateur_condition.column_name OR
t_indicateur_condition.rule IS DISTINCT FROM w_indicateur_condition.rule OR
t_indicateur_condition.value IS DISTINCT FROM w_indicateur_condition.value OR
t_indicateur_condition.view_select_rule IS DISTINCT FROM w_indicateur_condition.view_select_rule OR
t_indicateur_condition.arbre_code IS DISTINCT FROM w_indicateur_condition.arbre_code OR
t_indicateur_condition.arbre_texte IS DISTINCT FROM w_indicateur_condition.arbre_texte
)
;
DELETE FROM compta.t_indicateur_condition
WHERE code LIKE 'CTI%' AND
code NOT IN (SELECT code FROM w_indicateur_condition)
;
UPDATE compta.t_indicateur_condition SET
column_texte = CASE column_name
WHEN 'x' THEN 'x'
ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END
WHERE
column_texte IS DISTINCT FROM
CASE column_name
WHEN 'x' THEN 'x'
ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END
;
UPDATE compta.t_indicateur_condition
SET external_code = split_part(code,'#',1)||'#'||arbre_code[2]
WHERE external_code IS DISTINCT FROM (split_part(code,'#',1)||'#'||arbre_code[2])
;
DROP TABLE IF EXISTS w_indicateur_condition_table;
CREATE TEMP TABLE w_indicateur_condition_table AS
SELECT t_indicateur_condition.oid AS indicateur_condition_id,
''::text As table_name,
t_indicateur_condition.column_name || ' ' ||
CASE
WHEN t_indicateur_condition.value LIKE 'LS%' THEN '= ANY(ARRAY'
WHEN t_indicateur_condition.value LIKE 'LI%' THEN '= ANY(ARRAY'
WHEN t_indicateur_condition.value LIKE 'SL%' THEN '<> ALL(ARRAY'
WHEN t_indicateur_condition.value LIKE 'DT%' THEN '='
ELSE '='
END || ' ' ||
CASE
WHEN t_indicateur_condition.value LIKE 'LS%' THEN
'(SELECT to_id FROM compta.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')'
WHEN t_indicateur_condition.value LIKE 'LI%' THEN
'(SELECT to_id FROM compta.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')'
WHEN t_indicateur_condition.value LIKE 'SL%' THEN
'(SELECT to_id FROM compta.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')'
WHEN t_indicateur_condition.value LIKE 'DT%' THEN
substr(value,3)
ELSE substr(value,3)
END || ' ' ||
CASE
WHEN t_indicateur_condition.value LIKE 'LS%' THEN ')'
WHEN t_indicateur_condition.value LIKE 'LI%' THEN ')'
WHEN t_indicateur_condition.value LIKE 'SL%' THEN ')'
ELSE ''
END AS check_where
FROM compta.t_indicateur_condition
WHERE t_indicateur_condition.code LIKE 'CTI%'
;
INSERT INTO compta.t_indicateur_condition_table(indicateur_condition_id, table_name, check_where)
SELECT indicateur_condition_id, table_name, check_where
FROM w_indicateur_condition_table
WHERE (indicateur_condition_id || '-' || table_name) NOT IN
(SELECT indicateur_condition_id || '-' || table_name FROM compta.t_indicateur_condition_table WHERE table_name IS NOT NULL)
;
UPDATE compta.t_indicateur_condition_table SET
check_where = w_indicateur_condition_table.check_where
FROM w_indicateur_condition_table
WHERE t_indicateur_condition_table.indicateur_condition_id = w_indicateur_condition_table.indicateur_condition_id AND
t_indicateur_condition_table.table_name = w_indicateur_condition_table.table_name AND
(
t_indicateur_condition_table.check_where IS DISTINCT FROM w_indicateur_condition_table.check_where
)
;
DELETE FROM compta.t_indicateur_condition_table
USING compta.t_indicateur_condition
WHERE t_indicateur_condition.oid = t_indicateur_condition_table.indicateur_condition_id AND
t_indicateur_condition.code LIKE 'CTI%' AND
(indicateur_condition_id || '-' || table_name) NOT IN
(SELECT indicateur_condition_id || '-' || table_name FROM w_indicateur_condition_table WHERE table_name IS NOT NULL)
;
RETURN 'OK';
END;

+ 15
- 0
db/schema2/functions/cti_reorganize_lieux_cout_patient_shs.yaml View File

@ -0,0 +1,15 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
PERFORM compta.cti_reorganize_lieux_cout_patient_shs_table('t_services_facturation_cout_patient_shs', 'service_facturation');
PERFORM compta.cti_reorganize_lieux_cout_patient_shs_table('t_activites_cout_patient_shs', 'activite');
PERFORM compta.cti_reorganize_lieux_cout_patient_shs_table('t_etages_cout_patient_shs', 'etage');
PERFORM compta.cti_reorganize_lieux_cout_patient_shs_table('t_lits_cout_patient_shs', 'lit');
RETURN 'OK';
END;

+ 42
- 0
db/schema2/functions/cti_reorganize_lieux_cout_patient_shs_table~tx,tx.yaml View File

@ -0,0 +1,42 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: tablename
p1:
type: text
name: field_prefix
src: |
DECLARE
w_tablename text;
w_field_prefix text;
result TEXT;
BEGIN
w_tablename = tablename;
IF w_tablename = '' THEN
w_tablename = 't_services_facturation_cout_patient_shs';
END IF;
w_field_prefix = field_prefix;
IF w_field_prefix = '' THEN
w_field_prefix = 'service_facturation';
END IF;
EXECUTE 'UPDATE compta.t_lieux_cout_patient_shs
SET ' || w_field_prefix || '_id = ' || w_tablename || '.oid
FROM compta.' || w_tablename || '
WHERE ' || w_tablename || '.code_original = t_lieux_cout_patient_shs.' || w_field_prefix || '_code_original
AND ' || w_field_prefix || '_id IS DISTINCT FROM ' || w_tablename || '.oid;';
EXECUTE 'UPDATE compta.t_lieux_cout_patient_shs SET ' || w_field_prefix || '_id = 0 WHERE ' || w_field_prefix || '_id IS NULL;';
EXECUTE 'UPDATE compta.t_lieux_cout_patient_shs
SET
' || w_field_prefix || '_code = ' || w_tablename || '.code,
' || w_field_prefix || '_texte = ' || w_tablename || '.texte_court
FROM compta.' || w_tablename || '
WHERE ' || w_tablename || '.oid = t_lieux_cout_patient_shs.' || w_field_prefix || '_id
AND (' || w_field_prefix || '_code IS DISTINCT FROM ' || w_tablename || '.code OR
' || w_field_prefix || '_texte IS DISTINCT FROM ' || w_tablename || '.texte_court);';
RETURN 'OK';
END;

+ 803
- 0
db/schema2/functions/cti_reorganize_pole.yaml View File

@ -0,0 +1,803 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
_module_activite TEXT;
_module_eco TEXT;
_module_rh TEXT;
BEGIN
RAISE NOTICE '%' , 'Initialisation poles';
IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'activite' AND tablename = 't_pole') THEN
_module_activite = '1';
ELSE
_module_activite = '0';
END IF;
IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'eco' AND tablename = 't_pole') THEN
_module_eco = '1';
ELSE
_module_eco = '0';
END IF;
IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'rh' AND tablename = 't_pole') THEN
_module_rh = '1';
ELSE
_module_rh = '0';
END IF;
-- Contenu table
INSERT INTO base.t_pole (oid, code, texte, texte_court)
SELECT 0, '**', 'Non renseigné', 'Non renseigné'
WHERE 0 NOT IN (SELECT oid FROM base.t_pole);
-- replication dans compta
TRUNCATE compta.t_pole;
INSERT INTO compta.t_pole (oid, code, texte, texte_court, section_id, section_code, section_texte)
SELECT oid, code, texte, texte_court, section_id, section_code, section_texte
FROM base.t_pole
;
-- Pole par défaut
INSERT INTO compta.t_pole_rule(
code,
texte,
pole_id,
priorite,
liste_compte,
liste_sauf_compte,
liste_journal,
liste_sauf_journal,
liste_section_analytique,
liste_sauf_section_analytique,
liste_finess,
liste_site,
liste_exercice,
liste_mois_comptable,
special_calc,
special_calc_from,
from_rule_id
)
SELECT
'*DFT'::text AS code,
'Défaut'::text AS texte,
0::bigint AS pole_id,
99999::numeric AS priorite,
''::text AS liste_compte,
''::text AS liste_sauf_compte,
''::text AS liste_journal,
''::text AS liste_sauf_journal,
''::text AS liste_section_analytique,
''::text AS liste_sauf_section_analytique,
''::text AS liste_finess,
''::text AS liste_site,
''::text AS liste_exercice,
''::text AS liste_mois_comptable,
''::text AS special_calc,
''::text AS special_calc_from,
0::bigint AS from_rule_id
WHERE '*DFT' NOT IN (SELECT code FROM compta.t_pole_rule WHERE code IS NOT NULL)
;
DELETE FROM compta.t_pole_rule_pole
WHERE pole_rule_id <> 0 AND
(
pole_rule_id NOT IN (SELECT oid FROM compta.t_pole_rule) OR
pole_rule_id IS NULL
)
;
INSERT INTO compta.t_pole_rule_pole (pole_rule_id, pole_id, taux)
SELECT oid, pole_id, 1
FROM compta.t_pole_rule
WHERE oid NOT IN (SELECT pole_rule_id FROM compta.t_pole_rule_pole WHERE pole_rule_id IS NOT NULL)
;
-- Traduction des règles en oid
RAISE NOTICE '%' , 'Application des regles. Traduction en oid';
DROP TABLE IF EXISTS w_pole_rule;
CREATE TEMP TABLE w_pole_rule AS
SELECT
t_pole_rule.oid,
pole_id AS default_pole_id,
special_calc,
priorite,
CASE WHEN liste_finess <> '' THEN '1' ELSE '0' END AS a_liste_finess,
string_to_array(translate(liste_finess,'*,','% '),' ') AS liste_finess,
NULL::bigint[] AS liste_finess_id ,
CASE WHEN liste_site <> '' THEN '1' ELSE '0' END AS a_liste_site,
string_to_array(translate(liste_site,'*,','% '),' ') AS liste_site,
NULL::bigint[] AS liste_site_id ,
CASE WHEN liste_exercice <> '' THEN '1' ELSE '0' END AS a_liste_exercice,
string_to_array(translate(liste_exercice,'*,','% '),' ') AS liste_exercice,
NULL::bigint[] AS liste_exercice_id ,
CASE WHEN liste_mois_comptable <> '' THEN '1' ELSE '0' END AS a_liste_mois_comptable,
string_to_array(translate(liste_mois_comptable,'*,','% '),' ') AS liste_mois_comptable,
NULL::bigint[] AS liste_mois_comptable_id ,
CASE WHEN liste_compte <> '' THEN '1' ELSE '0' END AS a_liste_compte,
string_to_array(translate(liste_compte,'*,','% '),' ') AS liste_compte,
NULL::bigint[] AS liste_compte_id ,
CASE WHEN liste_sauf_compte <> '' THEN '1' ELSE '0' END AS a_liste_sauf_compte,
string_to_array(translate(liste_sauf_compte,'*,','% '),' ') AS liste_sauf_compte,
NULL::bigint[] AS liste_sauf_compte_id,
CASE WHEN liste_journal <> '' THEN '1' ELSE '0' END AS a_liste_journal,
string_to_array(translate(liste_journal,'*,','% '),' ') AS liste_journal,
NULL::bigint[] AS liste_journal_id,
CASE WHEN liste_sauf_journal <> '' THEN '1' ELSE '0' END AS a_liste_sauf_journal,
string_to_array(translate(liste_sauf_journal,'*,','% '),' ') AS liste_sauf_journal,
NULL::bigint[] AS liste_sauf_journal_id,
CASE WHEN liste_section_analytique <> '' THEN '1' ELSE '0' END AS a_liste_section_analytique,
string_to_array(translate(liste_section_analytique,'*,','% '),' ') AS liste_section_analytique,
NULL::bigint[] AS liste_section_analytique_id,
CASE WHEN liste_sauf_section_analytique <> '' THEN '1' ELSE '0' END AS a_liste_sauf_section_analytique,
string_to_array(translate(liste_sauf_section_analytique,'*,','% '),' ') AS liste_sauf_section_analytique,
NULL::bigint[] AS liste_sauf_section_analytique_id
FROM compta.t_pole_rule
JOIN compta.t_pole ON pole_id = t_pole.oid
WHERE special_calc_from = ''
ORDER BY priorite, pole_id;
ANALYSE w_pole_rule
;
UPDATE w_pole_rule
SET liste_finess_id = (SELECT base.cti_group_array3(oid) FROM base.t_finess WHERE oid <> 0 AND code LIKE ANY (liste_finess))
WHERE a_liste_finess = '1';
UPDATE w_pole_rule
SET liste_site_id = (SELECT base.cti_group_array3(oid) FROM compta.t_sites WHERE oid <> 0 AND code LIKE ANY (liste_site))
WHERE a_liste_site = '1';
UPDATE w_pole_rule
SET liste_exercice_id = subview.liste_exercice_id
FROM
(
SELECT oid, base.cti_array_accum(exercice) AS liste_exercice_id
FROM
(
SELECT oid, base.cti_to_number(exercice)::bigint AS exercice
FROM
(
SELECT oid, unnest(liste_exercice) AS exercice
FROM w_pole_rule
WHERE a_liste_exercice = '1'
) subview
WHERE exercice > 0
) subview
GROUP BY 1
) subview
WHERE w_pole_rule.oid = subview.oid
;
UPDATE w_pole_rule
SET liste_mois_comptable_id = subview.liste_mois_comptable_id
FROM
(
SELECT oid, base.cti_array_accum(mois_comptable) AS liste_mois_comptable_id
FROM
(
SELECT oid, base.cti_to_number(mois_comptable)::bigint AS mois_comptable
FROM
(
SELECT oid, unnest(liste_mois_comptable) AS mois_comptable
FROM w_pole_rule
WHERE a_liste_mois_comptable = '1'
) subview
WHERE mois_comptable > 0
) subview
GROUP BY 1
) subview
WHERE w_pole_rule.oid = subview.oid
;
UPDATE w_pole_rule
SET liste_compte_id = (SELECT base.cti_group_array3(oid) FROM compta.t_comptes WHERE oid <> 0 AND numero LIKE ANY (liste_compte))
WHERE a_liste_compte = '1';
UPDATE w_pole_rule
SET liste_sauf_compte_id = (SELECT base.cti_group_array3(oid) FROM compta.t_comptes WHERE oid <> 0 AND numero LIKE ANY (liste_sauf_compte))
WHERE a_liste_sauf_compte = '1';
UPDATE w_pole_rule
SET liste_journal_id = (SELECT base.cti_group_array3(oid) FROM compta.t_journaux WHERE oid <> 0 AND code LIKE ANY (liste_journal))
WHERE a_liste_journal = '1';
UPDATE w_pole_rule
SET liste_sauf_journal_id = (SELECT base.cti_group_array3(oid) FROM compta.t_journaux WHERE oid <> 0 AND code LIKE ANY (liste_sauf_journal))
WHERE a_liste_sauf_journal = '1';
UPDATE w_pole_rule
SET liste_section_analytique_id = (SELECT base.cti_group_array3(oid) FROM compta.t_sections_analytiques WHERE oid <> 0 AND code LIKE ANY (liste_section_analytique))
WHERE a_liste_section_analytique = '1';
UPDATE w_pole_rule
SET liste_sauf_section_analytique_id = (SELECT base.cti_group_array3(oid) FROM compta.t_sections_analytiques WHERE oid <> 0 AND code LIKE ANY (liste_sauf_section_analytique))
WHERE a_liste_sauf_section_analytique = '1';
-- oids selon listes
PERFORM base.cti_execute('
UPDATE w_pole_rule
SET liste_'||item||'_id = array_cat(
liste_'||item||'_id
,
(
SELECT base.cti_group_array3(to_id)
FROM compta.t_listes
JOIN compta.t_listes_contenu ON liste_id = t_listes.oid
WHERE (''[LISTE:''||t_listes.code||'']'') LIKE ANY (liste_'||item||')
)
)
WHERE a_liste_'||item||' = ''1'' AND
array_to_string(liste_'||item||','','') LIKE ''%[LISTE:%''
',1)
FROM
(
SELECT 'compte'::text AS item
UNION
SELECT 'sauf_compte'::text AS item
UNION
SELECT 'journal'::text AS item
UNION
SELECT 'sauf_journal'::text AS item
UNION
SELECT 'section_analytique'::text AS item
UNION
SELECT 'sauf_section_analytique'::text AS item
) subview
;
-- oids selon classes
PERFORM base.cti_execute('
UPDATE w_pole_rule
SET liste_'||item||'_id = array_cat(
liste_'||item||'_id
,
(
SELECT base.cti_group_array3(to_id)
FROM compta.t_classes
JOIN compta.t_classes_sections ON classe_id = t_classes.oid
JOIN compta.t_classes_sections_elements ON section_id = t_classes_sections.oid
WHERE (''[CLASSE:''||t_classes.code||'':''||t_classes_sections.code||'']'') LIKE ANY (liste_'||item||')
)
)
WHERE a_liste_'||item||' = ''1'' AND
array_to_string(liste_'||item||','','') LIKE ''%[CLASSE:%''
',1)
FROM
(
SELECT 'compte'::text AS item
UNION
SELECT 'sauf_compte'::text AS item
UNION
SELECT 'journal'::text AS item
UNION
SELECT 'sauf_journal'::text AS item
UNION
SELECT 'section_analytique'::text AS item
UNION
SELECT 'sauf_section_analytique'::text AS item
) subview
;
-- Génération automatique des ventilations automatiques
DELETE FROM compta.t_pole_rule_pole
WHERE pole_rule_id IN
(SELECT oid
FROM compta.t_pole_rule
WHERE special_calc_from <> ''
)
;
DELETE FROM compta.t_pole_rule
WHERE special_calc_from <> ''
;
DROP TABLE IF EXISTS w_pole_rule_pole;
CREATE TEMP TABLE w_pole_rule_pole(
pole_rule_id bigint,
exercice_comptable text,
mois_comptable text,
compte_code text,
pole_id bigint,
taux numeric,
subrule_index numeric
)
;
-- Journal des ventes
IF _module_activite = '1' THEN
RAISE NOTICE '%' , 'Ventilations automatiques JVT.';
INSERT INTO w_pole_rule_pole
SELECT pole_rule_id,
exercice_comptable,
mois_comptable,
compte_code,
pole_id,
base.cti_division(total_comptabilise,SUM(total_comptabilise) OVER (PARTITION BY pole_rule_id, exercice_comptable, mois_comptable, compte_code)) AS taux,
rank() OVER (PARTITION BY pole_rule_id ORDER BY exercice_comptable, mois_comptable, compte_code) AS subrule_index
FROM
(
SELECT w_pole_rule.oid AS pole_rule_id,
to_char(date_vente,'YYYY') AS exercice_comptable,
CASE WHEN special_calc = 'JVTCPTMM' THEN to_char(date_vente,'YYYYMM') ELSE '' END AS mois_comptable,
CASE WHEN special_calc <> 'JVTALLEX' THEN t_compte.code ELSE '' END AS compte_code,
CASE WHEN p_factures_lignes_c.pole_id > 0 THEN p_factures_lignes_c.pole_id ELSE default_pole_id END AS pole_id,
SUM(montant_comptabilise) AS total_comptabilise
FROM activite.p_factures_lignes_c
JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture
JOIN activite.t_compte ON compte_produit_id = t_compte.oid
JOIN w_pole_rule ON
(
special_calc = 'JVTCPTMM' OR
special_calc = 'JVTCPTEX' OR
special_calc = 'JVTALLEX'
)
WHERE date_vente >= '20180101' AND
montant_comptabilise <> 0 AND
(a_liste_compte = '0' OR t_compte.code <> '' AND t_compte.code LIKE ANY (liste_compte)) AND
(a_liste_exercice = '0' OR date_part('year',date_vente) = ANY (liste_exercice))
GROUP BY 1,2,3,4,5
HAVING SUM(montant_comptabilise) > 0
) subview
;
END IF ;
IF _module_eco = '1' THEN
RAISE NOTICE '%' , 'Ventilations automatiques Conso Eco.';
INSERT INTO w_pole_rule_pole
SELECT pole_rule_id,
exercice_comptable,
mois_comptable,
compte_code,
CASE WHEN taux < 0.005 THEN default_pole_id ELSE pole_id END AS pole_id,
SUM(taux),
MIN(subrule_index)
FROM
(
SELECT pole_rule_id,
exercice_comptable,
mois_comptable,
compte_code,
pole_id,
default_pole_id,
base.cti_division(total_sortie_montant_ht,SUM(total_sortie_montant_ht) OVER (PARTITION BY pole_rule_id, exercice_comptable, mois_comptable, compte_code)) AS taux,
rank() OVER (PARTITION BY pole_rule_id ORDER BY exercice_comptable, mois_comptable, compte_code) AS subrule_index
FROM
(
SELECT w_pole_rule.oid AS pole_rule_id,
to_char(p_mouvements_articles.date,'YYYY') AS exercice_comptable,
CASE WHEN special_calc = 'ECOCPTMM' THEN to_char(p_mouvements_articles.date,'YYYYMM') ELSE '' END AS mois_comptable,
CASE WHEN special_calc <> 'ECOALLEX' THEN t_compte.code ELSE '' END AS compte_code,
CASE WHEN p_mouvements_articles.pole_id > 0 THEN p_mouvements_articles.pole_id ELSE default_pole_id END AS pole_id,
default_pole_id,
SUM(sortie_montant_ht) AS total_sortie_montant_ht
FROM eco.p_mouvements_articles
JOIN eco.t_compte ON p_mouvements_articles.compte_id = t_compte.oid
JOIN w_pole_rule ON
(
special_calc = 'ECOCPTEX' OR
special_calc = 'ECOALLEX'
)
WHERE p_mouvements_articles.date >= '20180101' AND
sortie_montant_ht <> 0 AND
p_mouvements_articles.unite_fonctionnelle_id <> 0 AND
(a_liste_compte = '0' OR t_compte.code <> '' AND t_compte.code LIKE ANY (liste_compte)) AND
(a_liste_exercice = '0' OR date_part('year',p_mouvements_articles.date) = ANY (liste_exercice))
GROUP BY 1,2,3,4,5,6
HAVING SUM(sortie_montant_ht) > 0
) subview
) subview
GROUP BY 1,2,3,4,5
;
END IF;
IF _module_rh = '1' THEN
RAISE NOTICE '%' , 'Ventilations automatiques PAIE';
INSERT INTO w_pole_rule_pole
SELECT pole_rule_id,
exercice_comptable,
mois_comptable,
compte_code,
pole_id,
base.cti_division(total_montant_masse_salariale,SUM(total_montant_masse_salariale) OVER (PARTITION BY pole_rule_id, exercice_comptable, mois_comptable, compte_code)) AS taux,
rank() OVER (PARTITION BY pole_rule_id ORDER BY exercice_comptable, mois_comptable, compte_code) AS subrule_index
FROM
(
SELECT w_pole_rule.oid AS pole_rule_id,
to_char(p_historique_paie.date_paie,'YYYY') AS exercice_comptable,
CASE WHEN special_calc = 'PAICPTMM' THEN to_char(p_historique_paie.date_paie,'YYYYMM') ELSE '' END AS mois_comptable,
CASE WHEN special_calc <> 'PAIALLEX' THEN t_compte.code ELSE '' END AS compte_code,
CASE WHEN p_profil_contrat_mois.pole_id > 0 THEN p_profil_contrat_mois.pole_id ELSE default_pole_id END AS pole_id,
SUM(montant_masse_salariale) AS total_montant_masse_salariale
FROM rh.p_historique_paie
JOIN rh.p_profil_contrat_mois ON p_profil_contrat_mois.contrat_mois_id = p_historique_paie.contrat_mois_id
JOIN rh.t_compte ON p_historique_paie.compte_id = t_compte.oid
JOIN w_pole_rule ON
(
special_calc = 'PAICPTEX' OR
special_calc = 'PAIALLEX'
)
WHERE p_historique_paie.date_paie >= '20180101' AND
montant_masse_salariale <> 0 AND
(a_liste_compte = '0' OR t_compte.code <> '' AND t_compte.code LIKE ANY (liste_compte)) AND
(a_liste_exercice = '0' OR date_part('year',p_historique_paie.date_paie) = ANY (liste_exercice))
GROUP BY 1,2,3,4,5
HAVING SUM(montant_masse_salariale) > 0
) subview
;
END IF;
-- Génération des sous regles
UPDATE w_pole_rule_pole SET
exercice_comptable = '',
mois_comptable = ''
FROM
(
SELECT pole_rule_id,
compte_code
FROM w_pole_rule_pole
GROUP BY 1,2
HAVING count(DISTINCT pole_id) = 1
) subview
WHERE w_pole_rule_pole.pole_rule_id = subview.pole_rule_id AND
w_pole_rule_pole.compte_code = subview.compte_code
;
UPDATE w_pole_rule_pole SET
mois_comptable = ''
FROM
(
SELECT pole_rule_id,
compte_code,
exercice_comptable
FROM w_pole_rule_pole
WHERE exercice_comptable <> ''
GROUP BY 1,2,3
HAVING count(DISTINCT pole_id) = 1
) subview
WHERE w_pole_rule_pole.pole_rule_id = subview.pole_rule_id AND
w_pole_rule_pole.compte_code = subview.compte_code AND
w_pole_rule_pole.exercice_comptable = subview.exercice_comptable
;
DELETE FROM w_pole_rule_pole
USING
(
SELECT pole_rule_id,
compte_code,
exercice_comptable,
mois_comptable,
pole_id,
MIN(w_pole_rule_pole.CTID) AS CTID_keep
FROM w_pole_rule_pole
GROUP BY 1,2,3,4,5
HAVING count(*) > 1
) subview
WHERE w_pole_rule_pole.pole_rule_id = subview.pole_rule_id AND
w_pole_rule_pole.compte_code = subview.compte_code AND
w_pole_rule_pole.exercice_comptable = subview.exercice_comptable AND
w_pole_rule_pole.mois_comptable = subview.mois_comptable AND
w_pole_rule_pole.pole_id = subview.pole_id AND
w_pole_rule_pole.CTID <> CTID_keep
;
UPDATE w_pole_rule_pole
SET compte_code = liste_compte
FROM compta.t_pole_rule
WHERE w_pole_rule_pole.pole_rule_id = t_pole_rule.oid AND
w_pole_rule_pole.compte_code = ''
;
INSERT INTO compta.t_pole_rule(
oid,
code,
texte,
priorite,
liste_finess,
liste_site,
liste_exercice,
liste_mois_comptable,
liste_compte,
liste_sauf_compte,
liste_journal,
liste_sauf_journal,
liste_section_analytique,
liste_sauf_section_analytique,
special_calc,
special_calc_from,
from_rule_id
)
SELECT
0 - (pole_rule_id * 1000000 + subrule_index) AS oid,
MAX(t_pole_rule.code || compte_code || w_pole_rule_pole.mois_comptable),
MAX(t_pole_rule.texte || ' ' || compte_code || ' ' || w_pole_rule_pole.mois_comptable),
MAX(t_pole_rule.priorite),
MAX(t_pole_rule.liste_finess),
MAX(t_pole_rule.liste_site),
MAX(CASE WHEN w_pole_rule_pole.mois_comptable = '' THEN w_pole_rule_pole.exercice_comptable ELSE '' END) AS liste_exercice,
MAX(w_pole_rule_pole.mois_comptable) AS liste_mois_comptable,
MAX(w_pole_rule_pole.compte_code) AS liste_compte,
''::text AS liste_sauf_compte,
MAX(t_pole_rule.liste_journal),
MAX(t_pole_rule.liste_sauf_journal),
MAX(t_pole_rule.liste_section_analytique),
MAX(t_pole_rule.liste_sauf_section_analytique),
''::text AS special_calc,
MAX(t_pole_rule.special_calc) AS special_calc_from,
MAX(pole_rule_id)
FROM w_pole_rule_pole
JOIN compta.t_pole_rule ON pole_rule_id = t_pole_rule.oid
GROUP BY 1
;
INSERT INTO compta.t_pole_rule_pole (pole_rule_id, pole_id, taux)
SELECT t_pole_rule.oid AS pole_rule_id, w_pole_rule_pole.pole_id, w_pole_rule_pole.taux
FROM w_pole_rule_pole
JOIN compta.t_pole_rule ON
t_pole_rule.from_rule_id = w_pole_rule_pole.pole_rule_id AND
(
t_pole_rule.special_calc_from = 'JVTCPTMM' OR
t_pole_rule.special_calc_from = 'JVTCPTEX' OR
t_pole_rule.special_calc_from = 'JVTALLEX' OR
t_pole_rule.special_calc_from = 'ECOCPTEX' OR
t_pole_rule.special_calc_from = 'ECOALLEX' OR
t_pole_rule.special_calc_from = 'PAICPTEX' OR
t_pole_rule.special_calc_from = 'PAIALLEX'
) AND
t_pole_rule.liste_compte = w_pole_rule_pole.compte_code AND
t_pole_rule.liste_exercice = CASE WHEN w_pole_rule_pole.mois_comptable = '' THEN w_pole_rule_pole.exercice_comptable ELSE '' END AND
t_pole_rule.liste_mois_comptable = w_pole_rule_pole.mois_comptable
;
INSERT INTO w_pole_rule
SELECT t_pole_rule.oid,
w_pole_rule.default_pole_id,
t_pole_rule.special_calc,
w_pole_rule.priorite,
w_pole_rule.a_liste_finess,
w_pole_rule.liste_finess,
w_pole_rule.liste_finess_id,
w_pole_rule.a_liste_site,
w_pole_rule.liste_site,
w_pole_rule.liste_site_id,
CASE WHEN t_pole_rule.liste_exercice <> '' THEN '1' ELSE '0' END AS a_liste_exercice,
string_to_array(translate(t_pole_rule.liste_exercice,'*,','% '),' ') AS liste_exercice,
NULL::bigint[] AS liste_exercice_id ,
CASE WHEN t_pole_rule.liste_mois_comptable <> '' THEN '1' ELSE '0' END AS a_liste_mois_comptable,
string_to_array(translate(t_pole_rule.liste_mois_comptable,'*,','% '),' ') AS liste_mois_comptable,
NULL::bigint[] AS liste_mois_comptable_id ,
CASE WHEN t_pole_rule.liste_compte <> '' THEN '1' ELSE '0' END AS a_liste_compte,
string_to_array(translate(t_pole_rule.liste_compte,'*,','% '),' ') AS liste_compte,
NULL::bigint[] AS liste_compte_id ,
'0'::text AS a_liste_sauf_compte,
NULL::text[] AS liste_sauf_compte,
NULL::bigint[] AS liste_sauf_compte_id,
w_pole_rule.a_liste_journal,
w_pole_rule.liste_journal,
w_pole_rule.liste_journal_id,
w_pole_rule.a_liste_sauf_journal,
w_pole_rule.liste_sauf_journal,
w_pole_rule.liste_sauf_journal_id,
w_pole_rule.a_liste_section_analytique,
w_pole_rule.liste_section_analytique,
w_pole_rule.liste_section_analytique_id,
a_liste_sauf_section_analytique,
w_pole_rule.liste_sauf_section_analytique,
w_pole_rule.liste_sauf_section_analytique_id
FROM w_pole_rule
JOIN compta.t_pole_rule ON
w_pole_rule.special_calc <> '' AND
w_pole_rule.special_calc = t_pole_rule.special_calc_from AND
w_pole_rule.oid = t_pole_rule.from_rule_id
;
ANALYSE w_pole_rule
;
UPDATE w_pole_rule
SET liste_exercice_id = subview.liste_exercice_id
FROM
(
SELECT oid, base.cti_array_accum(exercice) AS liste_exercice_id
FROM
(
SELECT oid, base.cti_to_number(exercice)::bigint AS exercice
FROM
(
SELECT oid, unnest(liste_exercice) AS exercice
FROM w_pole_rule
WHERE a_liste_exercice = '1'
) subview
WHERE exercice > 0
) subview
GROUP BY 1
) subview
WHERE w_pole_rule.oid = subview.oid
;
UPDATE w_pole_rule
SET liste_mois_comptable_id = subview.liste_mois_comptable_id
FROM
(
SELECT oid, base.cti_array_accum(mois_comptable) AS liste_mois_comptable_id
FROM
(
SELECT oid, base.cti_to_number(mois_comptable)::bigint AS mois_comptable
FROM
(
SELECT oid, unnest(liste_mois_comptable) AS mois_comptable
FROM w_pole_rule
WHERE a_liste_mois_comptable = '1'
) subview
WHERE mois_comptable > 0
) subview
GROUP BY 1
) subview
WHERE w_pole_rule.oid = subview.oid
;
UPDATE w_pole_rule
SET liste_compte_id = (SELECT base.cti_group_array3(oid) FROM compta.t_comptes WHERE oid <> 0 AND numero LIKE ANY (liste_compte))
WHERE a_liste_compte = '1';
RAISE NOTICE '%' , 'Application des regles.';
PERFORM base.cti_execute('
DROP TABLE IF EXISTS w_historique_ecritures_total;
CREATE TEMP TABLE w_historique_ecritures_total AS
SELECT p_historique_ecritures.CTID AS from_CTID,
COALESCE((MIN(ARRAY[priorite,w_pole_rule.oid]))[2],0) AS pole_rule_id
FROM compta.p_historique_ecritures_total p_historique_ecritures
' || CASE WHEN a_liste_finess = '1' THEN 'JOIN compta.t_sites ON t_sites.oid = site_id' ELSE '' END || '
LEFT JOIN w_pole_rule ON
special_calc = ''''
' || CASE WHEN a_liste_finess = '1' THEN 'AND (a_liste_finess = ''0'' OR finess_id = ANY (liste_finess_id))' ELSE '' END || '
' || CASE WHEN a_liste_site = '1' THEN 'AND (a_liste_site = ''0'' OR site_id = ANY (liste_site_id))' ELSE '' END || '
' || CASE WHEN a_liste_exercice = '1' THEN 'AND (a_liste_exercice = ''0'' OR exercice_comptable = ANY (liste_exercice))' ELSE '' END || '
' || CASE WHEN a_liste_mois_comptable = '1' THEN 'AND (a_liste_mois_comptable = ''0'' OR mois_comptable = ANY (liste_mois_comptable))' ELSE '' END || '
' || CASE WHEN a_liste_compte = '1' THEN 'AND (a_liste_compte = ''0'' OR compte_id = ANY (liste_compte_id))' ELSE '' END || '
' || CASE WHEN a_liste_sauf_compte = '1' THEN 'AND (a_liste_sauf_compte = ''0'' OR compte_id <> ALL (liste_sauf_compte_id))' ELSE '' END || '
' || CASE WHEN a_liste_journal = '1' THEN 'AND (a_liste_journal = ''0'' OR journal_id = ANY (liste_journal_id))' ELSE '' END || '
' || CASE WHEN a_liste_sauf_journal = '1' THEN 'AND ((a_liste_sauf_journal = ''0'' OR compte_id <> ALL (liste_sauf_journal_id))' ELSE '' END || '
' || CASE WHEN a_liste_section_analytique = '1' THEN 'AND (a_liste_section_analytique = ''0'' OR section_analytique_id = ANY (liste_section_analytique_id))' ELSE '' END || '
' || CASE WHEN a_liste_sauf_section_analytique = '1' THEN 'AND (a_liste_sauf_section_analytique = ''0'' OR compte_id <> ALL (liste_sauf_section_analytique_id)) ' ELSE '' END || '
WHERE mois_comptable >= 201801 AND
clinique_honoraire <> ''H''
GROUP BY 1
HAVING COALESCE((MIN(ARRAY[priorite,w_pole_rule.oid]))[2],0) IS DISTINCT FROM MAX(COALESCE(p_historique_ecritures.pole_rule_id,0))
',1)
FROM (
SELECT
MAX(a_liste_finess) AS a_liste_finess,
MAX(a_liste_site) AS a_liste_site,
MAX(a_liste_exercice) AS a_liste_exercice,
MAX(a_liste_mois_comptable) AS a_liste_mois_comptable,
MAX(a_liste_compte) AS a_liste_compte,
MAX(a_liste_sauf_compte) AS a_liste_sauf_compte,
MAX(a_liste_journal) AS a_liste_journal,
MAX(a_liste_sauf_journal) AS a_liste_sauf_journal,
MAX(a_liste_section_analytique) AS a_liste_section_analytique,
MAX(a_liste_sauf_section_analytique) AS a_liste_sauf_section_analytique
FROM w_pole_rule
) subview
;
ANALYSE w_historique_ecritures_total
;
RAISE NOTICE '%' , 'Application des regles. Validation des poles';
UPDATE compta.p_historique_ecritures_total p_historique_ecritures SET
pole_rule_id = w_historique_ecritures.pole_rule_id
FROM w_historique_ecritures_total w_historique_ecritures
WHERE
p_historique_ecritures.CTID = w_historique_ecritures.from_CTID AND
p_historique_ecritures.pole_rule_id IS DISTINCT FROM w_historique_ecritures.pole_rule_id
;
ANALYSE compta.p_historique_ecritures_total
;
-- Réplication sur détail
DROP TABLE IF EXISTS w_ecriture_pole;
CREATE TEMP TABLE w_ecriture_pole AS
SELECT site_id, mois_comptable, compte_id, journal_id, section_analytique_id, MAX(pole_rule_id) AS pole_rule_id
FROM compta.p_historique_ecritures_total
WHERE mois_comptable >= 201801 AND
clinique_honoraire <> 'H'
GROUP BY 1,2,3,4,5
;
ANALYSE w_ecriture_pole;
CREATE INDEX iw_ecriture_pole_2 ON w_ecriture_pole USING btree (compte_id);
UPDATE compta.p_historique_ecritures
SET pole_rule_id = w_ecriture_pole.pole_rule_id
FROM w_ecriture_pole
WHERE p_historique_ecritures.compte_id = w_ecriture_pole.compte_id AND
p_historique_ecritures.mois_comptable >= '201801' AND
clinique_honoraire <> 'H' AND
p_historique_ecritures.site_id = w_ecriture_pole.site_id AND
p_historique_ecritures.mois_comptable = w_ecriture_pole.mois_comptable AND
p_historique_ecritures.journal_id = w_ecriture_pole.journal_id AND
p_historique_ecritures.section_analytique_id = w_ecriture_pole.section_analytique_id AND
p_historique_ecritures.pole_rule_id IS DISTINCT FROM w_ecriture_pole.pole_rule_id
;
INSERT INTO compta.t_pole_rule_pole(pole_rule_id, pole_id, taux)
SELECT 0,0,1
WHERE 0 NOT IN (SELECT pole_rule_id FROM compta.t_pole_rule_pole)
;
UPDATE compta.t_pole_rule_pole SET
pole_code = t_pole.code,
pole_texte = t_pole.texte,
pole_section_id = t_pole.section_id,
pole_section_code = t_pole.section_code,
pole_section_texte = t_pole.section_texte
FROM compta.t_pole
WHERE t_pole_rule_pole.pole_id = t_pole.oid AND
(
t_pole_rule_pole.pole_code IS DISTINCT FROM t_pole.code OR
t_pole_rule_pole.pole_texte IS DISTINCT FROM t_pole.texte OR
t_pole_rule_pole.pole_section_id IS DISTINCT FROM t_pole.section_id OR
t_pole_rule_pole.pole_section_code IS DISTINCT FROM t_pole.section_code OR
t_pole_rule_pole.pole_section_texte IS DISTINCT FROM t_pole.section_texte
)
;
INSERT INTO compta.p_oids (code_table, oid)
SELECT 'pole', t_pole_rule_pole.pole_id
FROM compta.p_historique_ecritures_total
JOIN compta.t_pole_rule_pole ON t_pole_rule_pole.pole_rule_id = p_historique_ecritures_total.pole_rule_id
WHERE t_pole_rule_pole.pole_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'pole')
GROUP BY 2;
RETURN 'OK';
END;

+ 128
- 0
db/schema2/functions/cti_update_schema_classes~tx.yaml View File

@ -0,0 +1,128 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: i_table_code
src: |
DECLARE
result TEXT;
BEGIN
-- Si Toutes les tables, mettre à jour oid par codes
IF (i_table_code = '*ALL' OR i_table_code = 'CPT') THEN
PERFORM base.cti_initialize_classes_by_code('compta');
PERFORM base.cti_initialize_listes_by_code('compta');
END IF;
-- Tables par tables
IF (i_table_code = 'CPT' OR i_table_code = '*ALL') THEN
INSERT INTO compta.t_classes(code, texte, table_id, is_cti, sequence)
SELECT 'REGCPT', 'Regroupement de comptes', t_listes_tables.oid, '0', 9
FROM compta.t_listes_tables
WHERE t_listes_tables.code = 'CPT' AND 9 NOT IN (SELECT sequence FROM compta.t_classes WHERE table_id IN (SELECT oid FROM compta.t_listes_tables WHERE code ='CPT'));
INSERT INTO compta.t_classes_sections(code, texte, classe_id)
SELECT DISTINCT t_comptes_generaux.numero, t_comptes_generaux.texte, t_classes.oid
FROM compta.t_comptes JOIN compta.t_comptes t_comptes_generaux ON (t_comptes.compte_general_id = t_comptes_generaux.oid),
compta.t_classes JOIN compta.t_listes_tables ON (t_listes_tables.oid = t_classes.table_id)
WHERE t_listes_tables.code = 'CPT' AND t_classes.sequence = 9 AND t_classes.code = 'REGCPT'
AND t_comptes_generaux.oid IN
(SELECT oid FROM compta.p_oids WHERE code_table IN ('comptes_c', 'comptes_h'))
AND t_comptes_generaux.numero NOT IN
(SELECT t_classes_sections.code
FROM compta.t_classes
JOIN compta.t_listes_tables ON (t_listes_tables.oid = t_classes.table_id)
JOIN compta.t_classes_sections ON (t_classes_sections.classe_id = t_classes.oid)
WHERE t_listes_tables.code = 'CPT' AND t_classes.sequence = 9 AND t_classes_sections.classe_id = t_classes.oid
);
INSERT INTO compta.t_classes_sections_elements(section_id, to_id)
SELECT t_classes_sections.oid, t_comptes.oid
FROM compta.t_comptes
JOIN compta.t_comptes t_comptes_generaux ON (t_comptes.compte_general_id = t_comptes_generaux.oid),
compta.t_classes
JOIN compta.t_listes_tables ON (t_listes_tables.oid = t_classes.table_id)
JOIN compta.t_classes_sections ON (t_classes_sections.classe_id = t_classes.oid)
WHERE t_listes_tables.code = 'CPT' AND
t_classes.sequence = 9 AND t_classes.code = 'REGCPT' AND
t_comptes_generaux.numero = t_classes_sections.code AND
t_classes_sections.oid::text || '|' || t_comptes.oid::text NOT IN (SELECT section_id::text || '|' || to_id::text FROM compta.t_classes_sections_elements ) AND
t_comptes.oid IN (SELECT oid FROM compta.p_oids WHERE code_table IN ('comptes_c', 'comptes_h', 'comptes_extra_c', 'comptes_extra_h')) AND
t_comptes.oid NOT IN (SELECT to_id
FROM compta.t_classes
JOIN compta.t_classes_sections ON (t_classes_sections.classe_id = t_classes.oid)
JOIN compta.t_classes_sections_elements ON (t_classes_sections_elements.section_id = t_classes_sections.oid)
WHERE t_classes.sequence = 9 );
-- Si compte sans signe et pas compte signé dans classe, compte signé a la section de compte sans signe
DROP TABLE IF EXISTS w_comptes_section;
CREATE TEMP TABLE w_comptes_section AS
SELECT t_classes_sections.oid AS classe_id,
t_classes_sections.oid AS section_id,
t_comptes.numero AS compte_numero,
COALESCE(t_comptes_signes.numero, t_comptes.numero) AS compte_signe_numero,
t_comptes.oid AS compte_id, COALESCE(t_comptes_signes.oid,t_comptes.oid) AS compte_signe_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 compta.t_listes_tables ON table_id = t_listes_tables.oid AND
t_listes_tables.code = 'CPT'
JOIN compta.t_comptes ON to_id = t_comptes.oid
LEFT JOIN compta.t_comptes t_comptes_signes ON t_comptes_signes.compte_nonsigne_id = t_comptes.oid
;
ANALYSE w_comptes_section
;
INSERT INTO compta.t_classes_sections_elements (section_id, to_id)
SELECT w_comptes_section.section_id, w_comptes_section.compte_signe_id AS to_id
FROM w_comptes_section
LEFT JOIN w_comptes_section w_comptes_section_signe ON
w_comptes_section.classe_id = w_comptes_section_signe.classe_id AND
w_comptes_section.compte_signe_id = w_comptes_section_signe.compte_id
where w_comptes_section.compte_id <> w_comptes_section.compte_signe_id AND
w_comptes_section_signe.section_id IS NULL
GROUP BY 1,2
;
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_comptes_c'', ''CPT'','''');';
END IF;
IF (i_table_code = 'JRN' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_journaux'', ''JRN'','''');';
END IF;
IF (i_table_code = 'SIT' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_sites'', ''SIT'','''');';
END IF;
IF (i_table_code = 'PAR' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_partenaires'', ''PAR'','''');';
END IF;
IF (i_table_code = 'ANA' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_sections_analytiques'', ''ANA'','''');';
END IF;
IF (i_table_code = 'CSF' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_lieux_cout_patient_shs'', ''CSF'',''service_facturation_section'');';
END IF;
IF (i_table_code = 'CSA' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_lieux_cout_patient_shs'', ''CSA'',''activite_section'');';
END IF;
IF (i_table_code = 'CSE' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_lieux_cout_patient_shs'', ''CSE'',''etage_section'');';
END IF;
IF (i_table_code = 'CSM' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_medecins_cout_patient_shs'', ''CSM'','''');';
END IF;
IF (i_table_code = 'CSG' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_ghm_cout_patient_shs'', ''CSG'','''');';
END IF;
IF (i_table_code = 'CSH' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_ghs_cout_patient_shs'', ''CSH'','''');';
END IF;
IF (i_table_code = 'CSC' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_elements_cout_patient_shs'', ''CSC'','''');';
END IF;
IF (i_table_code = 'CSU' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_unites_oeuvre_shs'', ''CSU'','''');';
END IF;
RETURN 'OK';
END;

+ 263
- 0
db/schema2/functions/get_formule_indicateur~bi,in.yaml View File

@ -0,0 +1,263 @@
return: text
lang: plpgsql
parameters:
p0:
type: bigint
name: i_indicateur_id
p1:
type: integer
name: i_level
strict: STRICT
src: |
DECLARE
formule_indicateur TEXT;
rapports_cursor refcursor;
column_name TEXT;
table_name TEXT;
total_function TEXT;
liste_code_start integer;
to_column_name TEXT;
o_level INTEGER;
column_name_a1 TEXT;
column_name_a2 TEXT;
column_name_a3 TEXT;
column_name_a4 TEXT;
column_name_a5 TEXT;
column_name_a6 TEXT;
column_name_a7 TEXT;
column_name_a8 TEXT;
column_name_a9 TEXT;
column_name_a10 TEXT;
column_name_a11 TEXT;
column_name_a12 TEXT;
column_name_a13 TEXT;
column_name_a14 TEXT;
column_name_a15 TEXT;
column_name_a16 TEXT;
column_name_a17 TEXT;
column_name_a18 TEXT;
column_name_a19 TEXT;
column_name_a20 TEXT;
table_name_a1 TEXT;
table_name_a2 TEXT;
table_name_a3 TEXT;
table_name_a4 TEXT;
table_name_a5 TEXT;
table_name_a6 TEXT;
table_name_a7 TEXT;
table_name_a8 TEXT;
table_name_a9 TEXT;
table_name_a10 TEXT;
table_name_a11 TEXT;
table_name_a12 TEXT;
table_name_a13 TEXT;
table_name_a14 TEXT;
table_name_a15 TEXT;
table_name_a16 TEXT;
table_name_a17 TEXT;
table_name_a18 TEXT;
table_name_a19 TEXT;
table_name_a20 TEXT;
total_function_a1 TEXT;
total_function_a2 TEXT;
total_function_a3 TEXT;
total_function_a4 TEXT;
total_function_a5 TEXT;
total_function_a6 TEXT;
total_function_a7 TEXT;
total_function_a8 TEXT;
total_function_a9 TEXT;
total_function_a10 TEXT;
total_function_a11 TEXT;
total_function_a12 TEXT;
total_function_a13 TEXT;
total_function_a14 TEXT;
total_function_a15 TEXT;
total_function_a16 TEXT;
total_function_a17 TEXT;
total_function_a18 TEXT;
total_function_a19 TEXT;
total_function_a20 TEXT;
champ_associe_1 TEXT;
champ_associe_2 TEXT;
champ_associe_3 TEXT;
champ_associe_4 TEXT;
champ_associe_5 TEXT;
champ_associe_6 TEXT;
champ_associe_7 TEXT;
champ_associe_8 TEXT;
champ_associe_9 TEXT;
champ_associe_10 TEXT;
champ_associe_11 TEXT;
champ_associe_12 TEXT;
champ_associe_13 TEXT;
champ_associe_14 TEXT;
champ_associe_15 TEXT;
champ_associe_16 TEXT;
champ_associe_17 TEXT;
champ_associe_18 TEXT;
champ_associe_19 TEXT;
champ_associe_20 TEXT;
champ_calcule TEXT;
i int2;
ch TEXT;
BEGIN
formule_indicateur = '0';
IF (i_indicateur_id = 0) THEN
return formule_indicateur;
END IF;
IF (i_indicateur_id IS NULL) THEN
return formule_indicateur;
END IF;
IF (i_level > 10) THEN
return formule_indicateur;
END IF;
o_level = i_level + 1;
OPEN rapports_cursor FOR
SELECT
t_indicateurs.column_name, t_indicateurs.table_name, t_indicateurs.total_function,
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_1_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_2_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_3_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_4_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_5_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_6_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_7_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_8_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_9_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_10_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_11_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_12_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_13_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_14_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_15_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_16_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_17_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_18_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_19_id,0), o_level),
compta.get_formule_indicateur(COALESCE(t_indicateurs.indicateur_associe_20_id,0), o_level)
FROM compta.t_indicateurs
WHERE t_indicateurs.oid = i_indicateur_id ;
FETCH rapports_cursor INTO column_name , table_name, total_function,
column_name_a1,
column_name_a2,
column_name_a3,
column_name_a4,
column_name_a5,
column_name_a6,
column_name_a7,
column_name_a8,
column_name_a9,
column_name_a10,
column_name_a11,
column_name_a12,
column_name_a13,
column_name_a14,
column_name_a15,
column_name_a16,
column_name_a17,
column_name_a18,
column_name_a19,
column_name_a20 ;
IF (table_name != 'SEP') THEN
IF (table_name != '*CALC' AND table_name != '*CALC_SUM') THEN
to_column_name = '';
liste_code_start = 0;
FOR i IN 1..length(column_name) LOOP
IF (liste_code_start = 0) THEN
IF(substring(column_name,i,7)='[LISTE:') THEN
liste_code_start = i + 7;
ELSE
to_column_name = to_column_name || substring(column_name,i,1);
END IF;
ELSE
IF(substring(column_name,i,1)=']') THEN
to_column_name = to_column_name || '(SELECT to_id FROM compta.t_listes, compta.t_listes_contenu WHERE t_listes.oid = t_listes_contenu.liste_id AND t_listes.code = ''' || substring(column_name,liste_code_start,i - liste_code_start) || ''')';
liste_code_start = 0;
END IF;
END IF;
END LOOP;
liste_code_start = 0;
column_name = to_column_name;
to_column_name = '';
FOR i IN 1..length(column_name) LOOP
IF (liste_code_start = 0) THEN
IF(substring(column_name,i,8)='[CLASSE:') THEN
liste_code_start = i + 8;
ELSE
to_column_name = to_column_name || substring(column_name,i,1);
END IF;
ELSE
IF(substring(column_name,i,1)=']') THEN
to_column_name = to_column_name || '(SELECT to_id FROM compta.t_classes JOIN compta.t_classes_sections ON classe_id = t_classes.oid JOIN compta.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''' || substring(column_name,liste_code_start,i - liste_code_start) || ''')';
liste_code_start = 0;
END IF;
END IF;
END LOOP;
IF (to_column_name = '') THEN
to_column_name = '0';
END IF;
formule_indicateur = total_function || '(' || to_column_name || ') ' ;
ELSE
IF (table_name != '*CALC_SUM') THEN
champ_calcule = column_name;
champ_calcule = replace(champ_calcule,'[1]','(' || column_name_a1 || ')');
champ_calcule = replace(champ_calcule,'[2]','(' || column_name_a2 || ')');
champ_calcule = replace(champ_calcule,'[3]','(' || column_name_a3 || ')');
champ_calcule = replace(champ_calcule,'[4]','(' || column_name_a4 || ')');
champ_calcule = replace(champ_calcule,'[5]','(' || column_name_a5 || ')');
champ_calcule = replace(champ_calcule,'[6]','(' || column_name_a6 || ')');
champ_calcule = replace(champ_calcule,'[7]','(' || column_name_a7 || ')');
champ_calcule = replace(champ_calcule,'[8]','(' || column_name_a8 || ')');
champ_calcule = replace(champ_calcule,'[9]','(' || column_name_a9 || ')');
champ_calcule = replace(champ_calcule,'[10]','(' || column_name_a10 || ')');
champ_calcule = replace(champ_calcule,'[11]','(' || column_name_a11 || ')');
champ_calcule = replace(champ_calcule,'[12]','(' || column_name_a12 || ')');
champ_calcule = replace(champ_calcule,'[13]','(' || column_name_a13 || ')');
champ_calcule = replace(champ_calcule,'[14]','(' || column_name_a14 || ')');
champ_calcule = replace(champ_calcule,'[15]','(' || column_name_a15 || ')');
champ_calcule = replace(champ_calcule,'[16]','(' || column_name_a16 || ')');
champ_calcule = replace(champ_calcule,'[17]','(' || column_name_a17 || ')');
champ_calcule = replace(champ_calcule,'[18]','(' || column_name_a18 || ')');
champ_calcule = replace(champ_calcule,'[19]','(' || column_name_a19 || ')');
champ_calcule = replace(champ_calcule,'[20]','(' || column_name_a20 || ')');
ELSE
champ_calcule = '(' || column_name_a1 || ') + ' ||
'(' || column_name_a2 || ') + ' ||
'(' || column_name_a3 || ') + ' ||
'(' || column_name_a4 || ') + ' ||
'(' || column_name_a5 || ') + ' ||
'(' || column_name_a6 || ') + ' ||
'(' || column_name_a7 || ') + ' ||
'(' || column_name_a8 || ') + ' ||
'(' || column_name_a9 || ') + ' ||
'(' || column_name_a10 || ') + ' ||
'(' || column_name_a11 || ') + ' ||
'(' || column_name_a12 || ') + ' ||
'(' || column_name_a13 || ') + ' ||
'(' || column_name_a14 || ') + ' ||
'(' || column_name_a15 || ') + ' ||
'(' || column_name_a16 || ') + ' ||
'(' || column_name_a17 || ') + ' ||
'(' || column_name_a18 || ') + ' ||
'(' || column_name_a19 || ') + ' ||
'(' || column_name_a20 || ')';
END IF;
formule_indicateur = champ_calcule;
END IF;
ELSE
formule_indicateur = '0';
END IF;
IF formule_indicateur = '' THEN
formule_indicateur = '0';
END IF;
RETURN formule_indicateur ;
END;

+ 48
- 0
db/schema2/functions/get_rapport_indicateurs~in.yaml View File

@ -0,0 +1,48 @@
return: text
lang: plpgsql
parameters:
p0:
type: integer
name: i_rapport_id
strict: STRICT
src: |
DECLARE
rapport_columns TEXT;
rapports_cursor refcursor;
numero_rubrique INTEGER;
column_name TEXT;
table_name TEXT;
total_function TEXT;
liste_code_start integer;
to_column_name TEXT;
champ_calcule TEXT;
i int2;
ch TEXT;
last_rubrique INTEGER;
BEGIN
rapport_columns = '';
last_rubrique = 0;
OPEN rapports_cursor FOR
SELECT t_rapports_rubriques.numero_rubrique,
compta.get_formule_indicateur(t_indicateurs.oid, 1)
FROM compta.t_rapports_rubriques, compta.t_indicateurs
WHERE rapport_id = i_rapport_id AND indicateur_id = t_indicateurs.oid ORDER BY t_rapports_rubriques.numero_rubrique;
FETCH rapports_cursor INTO numero_rubrique, column_name ;
WHILE FOUND LOOP
last_rubrique = last_rubrique + 1;
FOR i IN last_rubrique..numero_rubrique - 1 LOOP
rapport_columns = rapport_columns || ', 0 ' ;
last_rubrique = last_rubrique + 1;
END LOOP;
IF (rapport_columns != '') THEN
rapport_columns = rapport_columns || ', ';
END IF;
rapport_columns = rapport_columns || column_name;
FETCH rapports_cursor INTO numero_rubrique, column_name ;
END LOOP;
CLOSE rapports_cursor;
rapport_columns = 'ARRAY[' || rapport_columns || ']::text[] as indicateurs ' ;
RETURN rapport_columns ;
END;

+ 5
- 0
db/schema2/sequences/s_activites_cout_patient_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_arbre_comptes.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_budget.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_budget_compte.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_budget_compte_compte.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_chart.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_classes.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_classes_comptes.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_classes_sections.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_collectifs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_comptes.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_dashboard.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_dashboard_filter.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_dashboard_onglet.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_dashboard_widget.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_ecritures_ajustement.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_elements_cout_patient_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_etages_cout_patient_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_indicateur_condition.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_indicateur_condition_table.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_indicateur_serie.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_indicateur_theme.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_indicateurs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_journaux.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_lieux_cout_patient_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_listes.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_listes_tables.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_lits_cout_patient_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_medecins_cout_patient_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_mode_paiement.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_partenaires.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_pole_rule.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_rapports.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_rapports_rapports.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_sections_analytiques.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_services_facturation_cout_patient_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_sites.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_types_compta.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_unites_oeuvre_shs.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 5
- 0
db/schema2/sequences/s_validation_parametre.yaml View File

@ -0,0 +1,5 @@
min: NO MINVALUE
max: NO MAXVALUE
start: 1
increment: 1
cache: 1

+ 18
- 0
db/schema2/tables/p_chiffrier_comptable.yaml View File

@ -0,0 +1,18 @@
columns:
clinique_honoraire:
type: character(1)
mois_comptable:
type: integer
montant_credit:
type: numeric(13,2)
montant_debit:
type: numeric(13,2)
provider_id:
type: bigint
default: "0"
site_id:
type: bigint
indexes:
i_chiffrier_comptable_1:
column: mois_comptable
method: btree

+ 23
- 0
db/schema2/tables/p_chiffrier_comptable_compte.yaml View File

@ -0,0 +1,23 @@
columns:
clinique_honoraire:
type: character(1)
compte_id:
type: bigint
mois_comptable:
type: integer
montant_credit:
type: numeric(13,2)
montant_debit:
type: numeric(13,2)
provider_id:
type: bigint
default: "0"
site_id:
type: bigint
indexes:
i_chiffrier_comptable_compte_compte_id:
column: compte_id
method: btree
i_chiffrier_comptable_compte_mois_comptable:
column: mois_comptable
method: btree

+ 19
- 0
db/schema2/tables/p_chiffrier_sagex3.yaml View File

@ -0,0 +1,19 @@
columns:
clinique_honoraire:
type: character(1)
mois_comptable:
type: integer
montant_credit:
type: numeric(13,2)
montant_credit_13:
type: numeric(13,2)
montant_debit:
type: numeric(13,2)
montant_debit_13:
type: numeric(13,2)
site_id:
type: bigint
indexes:
i_chiffrier_sagex3_1:
column: mois_comptable
method: btree

+ 19
- 0
db/schema2/tables/p_chiffrier_shs.yaml View File

@ -0,0 +1,19 @@
columns:
clinique_honoraire:
type: character(1)
mois_comptable:
type: integer
montant_journaux:
type: numeric(13,2)
montant_journaux_13:
type: numeric(13,2)
montant_reglements:
type: numeric(13,2)
montant_solde_client:
type: numeric(13,2)
montant_ventes:
type: numeric(13,2)
indexes:
i_chiffrier_shs_1:
column: clinique_honoraire, mois_comptable
method: btree

+ 30
- 0
db/schema2/tables/p_consolidation_translation.yaml View File

@ -0,0 +1,30 @@
columns:
from_code:
type: text
default: "''::text"
from_database:
type: text
from_id:
type: bigint
default: "0"
table_code:
type: text
to_code:
type: text
default: "''::text"
to_id:
type: bigint
default: "0"
indexes:
i_consolidation_translation_1:
column: from_database
method: btree
i_consolidation_translation_2:
column: table_code
method: btree
i_consolidation_translation_3:
column: from_id
method: btree
i_consolidation_translation_4:
column: to_id
method: btree

+ 67
- 0
db/schema2/tables/p_couts_patient_shs.yaml View File

@ -0,0 +1,67 @@
columns:
cout:
type: numeric(13,2)
default: "0"
date_entree:
type: date
date_sortie:
type: date
element_cout_id:
type: bigint
exercice_comptable:
type: numeric(4,0)
default: "0"
ghm_id:
type: bigint
ghs_id:
type: bigint
lieu_id:
type: bigint
medecin_administratif_id:
type: bigint
mois_comptable:
type: numeric(6,0)
not_null: NOT NULL
default: "0"
montant_facture:
type: numeric(13,2)
default: "0"
no_facture:
type: character varying(20)
not_null: NOT NULL
no_sejour:
type: character(10)
not_null: NOT NULL
prix_unitaire:
type: numeric(13,4)
default: "0"
quantite_consommee:
type: numeric(20,6)
default: "0"
unite_oeuvre_id:
type: bigint
indexes:
i_couts_patient_shs_1:
column: mois_comptable
method: btree
i_couts_patient_shs_2:
column: lieu_id
method: btree
i_couts_patient_shs_3:
column: medecin_administratif_id
method: btree
i_couts_patient_shs_4:
column: ghs_id
method: btree
i_couts_patient_shs_5:
column: element_cout_id
method: btree
i_couts_patient_shs_6:
column: unite_oeuvre_id
method: btree
i_couts_patient_shs_7:
column: ghm_id
method: btree
i_couts_patient_shs_8:
column: medecin_administratif_id
method: btree

+ 121
- 0
db/schema2/tables/p_ecriture_fournisseur.yaml View File

@ -0,0 +1,121 @@
columns:
ajustement:
type: character(1)
default: "'0'::bpchar"
cle_originale:
type: text
default: "''::text"
clinique_honoraire:
type: character(1)
comptabilisee:
type: character(1)
default: "'1'::bpchar"
compte_contrepartie_id:
type: bigint
default: "0"
compte_extra_id:
type: bigint
compte_id:
type: bigint
not_null: NOT NULL
date_echeance:
type: date
date_ecriture:
type: date
not_null: NOT NULL
date_facture_fournisseur:
type: date
dossier:
type: text
default: "''::text"
ecriture_consolidee:
type: character(1)
default: "'0'::bpchar"
ecriture_exclue:
type: character(1)
default: "'0'::bpchar"
exercice_comptable:
type: numeric
facture_soldee:
type: character(1)
default: "'0'::bpchar"
fin_exercice:
type: character(1)
default: "'0'::bpchar"
identifiant_operation:
type: text
default: "''::text"
inter_site:
type: character(1)
default: "'0'::bpchar"
journal_id:
type: bigint
journal_paiement_id:
type: bigint
default: "0"
mode_paiement_id:
type: bigint
default: "0"
mois_comptable:
type: numeric
montant_credit:
type: numeric
montant_debit:
type: numeric
numero_cheque:
type: text
partenaire_id:
type: bigint
default: "0"
piece:
type: text
default: "''::text"
section_analytique_id:
type: bigint
site_id:
type: bigint
default: "0"
texte:
type: text
type_compta_id:
type: bigint
indexes:
i_ecriture_fournisseur_1:
column: mois_comptable
method: btree
i_ecriture_fournisseur_10:
column: fin_exercice
method: btree
i_ecriture_fournisseur_11:
column: ajustement
method: btree
i_ecriture_fournisseur_12:
column: partenaire_id
method: btree
i_ecriture_fournisseur_13:
column: identifiant_operation
method: btree
i_ecriture_fournisseur_2:
column: compte_id
method: btree
i_ecriture_fournisseur_3:
column: comptabilisee
method: btree
i_ecriture_fournisseur_4:
column: compte_extra_id
method: btree
i_ecriture_fournisseur_5:
column: cle_originale
method: btree
i_ecriture_fournisseur_6:
column: journal_id
method: btree
i_ecriture_fournisseur_7:
column: date_ecriture
method: btree
i_ecriture_fournisseur_8:
column: dossier
method: btree
i_ecriture_fournisseur_9:
column: site_id
method: btree

+ 157
- 0
db/schema2/tables/p_historique_ecritures.yaml View File

@ -0,0 +1,157 @@
columns:
ajustement:
type: character(1)
default: "'0'::bpchar"
cle_originale:
type: character varying(255)
default: "''::character varying"
clinique_honoraire:
type: character(1)
comptabilisee:
type: character(1)
default: "'1'::bpchar"
compte_budget_id:
type: bigint
default: "0"
compte_contrepartie_id:
type: bigint
default: "0"
compte_extra_id:
type: bigint
compte_id:
type: bigint
not_null: NOT NULL
date_echeance:
type: date
date_ecriture:
type: date
not_null: NOT NULL
date_facture_fournisseur:
type: date
dossier:
type: character varying(255)
default: "''::character varying"
ecriture_consolidee:
type: character(1)
default: "'0'::bpchar"
exercice_comptable:
type: numeric(4,0)
fin_exercice:
type: character(1)
default: "'0'::bpchar"
identifiant_operation:
type: character varying(255)
default: "''::character varying"
inter_site:
type: character(1)
default: "'0'::bpchar"
is_budget:
type: text
default: "'0'::text"
journal_id:
type: bigint
journal_paiement_id:
type: bigint
default: "0"
mode_paiement_id:
type: bigint
default: "0"
mois_comptable:
type: numeric(6,0)
montant_credit:
type: numeric
montant_debit:
type: numeric
numero_cheque:
type: character varying(10)
partenaire_id:
type: bigint
default: "0"
piece:
type: character varying(255)
default: "''::character varying"
pole_id:
type: bigint
default: "0"
pole_rule_id:
type: bigint
default: "0"
section_analytique_2_id:
type: bigint
default: (0)::bigint
section_analytique_3_id:
type: bigint
default: (0)::bigint
section_analytique_4_id:
type: bigint
default: (0)::bigint
section_analytique_5_id:
type: bigint
default: (0)::bigint
section_analytique_6_id:
type: bigint
default: (0)::bigint
section_analytique_7_id:
type: bigint
default: (0)::bigint
section_analytique_8_id:
type: bigint
default: (0)::bigint
section_analytique_9_id:
type: bigint
default: (0)::bigint
section_analytique_id:
type: bigint
site_id:
type: bigint
default: "0"
texte:
type: character varying(255)
type_compta_id:
type: bigint
indexes:
i_historique_ecritures_1:
column: mois_comptable
method: btree
i_historique_ecritures_10:
column: fin_exercice
method: btree
i_historique_ecritures_11:
column: ajustement
method: btree
i_historique_ecritures_12:
column: partenaire_id
method: btree
i_historique_ecritures_13:
column: identifiant_operation
method: btree
i_historique_ecritures_2:
column: compte_id
method: btree
i_historique_ecritures_3:
column: comptabilisee
method: btree
i_historique_ecritures_4:
column: compte_extra_id
method: btree
i_historique_ecritures_5:
column: cle_originale
method: btree
i_historique_ecritures_6:
column: journal_id
method: btree
i_historique_ecritures_7:
column: date_ecriture
method: btree
i_historique_ecritures_8:
column: dossier
method: btree
i_historique_ecritures_9:
column: site_id
method: btree
i_historique_ecritures_compte_budget_id:
column: compte_budget_id
method: btree
i_historique_ecritures_pole_id:
column: pole_id
method: btree

+ 137
- 0
db/schema2/tables/p_historique_ecritures_total.yaml View File

@ -0,0 +1,137 @@
columns:
ajustement:
type: character(1)
default: "'0'::bpchar"
clinique_honoraire:
type: character(1)
comptabilisee:
type: character(1)
default: "'1'::bpchar"
compte_budget_id:
type: bigint
default: "0"
compte_extra_id:
type: bigint
compte_id:
type: bigint
not_null: NOT NULL
ecriture_consolidee:
type: character(1)
default: "'0'::bpchar"
exercice_comptable:
type: numeric(4,0)
fin_exercice:
type: character(1)
default: "'0'::bpchar"
inter_site:
type: character(1)
default: "0"
is_budget:
type: text
default: "'0'::text"
journal_id:
type: bigint
mois_comptable:
type: numeric(6,0)
montant_credit:
type: numeric
montant_debit:
type: numeric
nombre_ecritures:
type: bigint
default: "0"
partenaire_id:
type: bigint
default: "0"
pole_id:
type: bigint
default: "0"
pole_rule_id:
type: bigint
default: "0"
section_analytique_2_id:
type: bigint
default: (0)::bigint
section_analytique_3_id:
type: bigint
default: (0)::bigint
section_analytique_4_id:
type: bigint
default: (0)::bigint
section_analytique_5_id:
type: bigint
default: (0)::bigint
section_analytique_6_id:
type: bigint
default: (0)::bigint
section_analytique_7_id:
type: bigint
default: (0)::bigint
section_analytique_8_id:
type: bigint
default: (0)::bigint
section_analytique_9_id:
type: bigint
default: (0)::bigint
section_analytique_id:
type: bigint
site_id:
type: bigint
default: "0"
type_compta_id:
type: bigint
indexes:
i_historique_ecritures_total_1:
column: clinique_honoraire, compte_extra_id, compte_id, journal_id, mois_comptable, section_analytique_id
method: btree
i_historique_ecritures_total_10:
column: fin_exercice
method: btree
i_historique_ecritures_total_11:
column: ajustement
method: btree
i_historique_ecritures_total_2:
column: compte_id
method: btree
i_historique_ecritures_total_3:
column: comptabilisee
method: btree
i_historique_ecritures_total_4:
column: compte_extra_id
method: btree
i_historique_ecritures_total_5:
column: partenaire_id
method: btree
i_historique_ecritures_total_6:
column: journal_id
method: btree
i_historique_ecritures_total_7:
column: site_id
method: btree
i_historique_ecritures_total_9:
column: inter_site
method: btree
i_historique_ecritures_total_compte_budget_id:
column: compte_budget_id
method: btree
i_historique_ecritures_total_pole_id:
column: pole_id
method: btree
i_historique_ecritures_total_section_analytique_2_id:
column: section_analytique_2_id
method: btree
i_historique_ecritures_total_section_analytique_3_id:
column: section_analytique_3_id
method: btree
i_historique_ecritures_total_section_analytique_4_id:
column: section_analytique_4_id
method: btree
i_historique_ecritures_total_section_analytique_5_id:
column: section_analytique_5_id
method: btree
i_historique_ecritures_total_section_analytique_6_id:
column: section_analytique_6_id
method: btree
i_historique_ecritures_total_section_analytique_id:
column: section_analytique_id
method: btree

+ 37
- 0
db/schema2/tables/p_indicateurs_cumules.yaml View File

@ -0,0 +1,37 @@
columns:
date_reference:
type: date
finess_id:
type: bigint
default: "0"
indicateur_condition_id:
type: 'bigint[]'
indicateur_id:
type: bigint
periode_type:
type: text
pole_id:
type: bigint
default: "0"
value:
type: numeric
value_cum:
type: numeric
value_cum12:
type: numeric
value_cum4t:
type: numeric
default: "0"
value_exercice:
type: numeric
default: "0"
value_trimestre:
type: numeric
default: "0"
indexes:
i_indicateurs_cumules_1:
column: indicateur_id
method: btree
i_indicateurs_cumules_2:
column: date_reference
method: btree

+ 19
- 0
db/schema2/tables/p_mois_comptables.yaml View File

@ -0,0 +1,19 @@
columns:
annee:
type: numeric(4,0)
exercice_comptable:
type: numeric(4,0)
exercice_mois_comptable_1:
type: numeric(6,0)
mois:
type: numeric(2,0)
mois_comptable:
type: numeric(6,0)
texte:
type: character varying(50)
texte_court:
type: character varying(10)
indexes:
i_mois_comptables_1:
column: mois_comptable
method: btree

+ 24
- 0
db/schema2/tables/p_oids.yaml View File

@ -0,0 +1,24 @@
columns:
code:
type: character varying(10)
not_null: NOT NULL
default: "''::character varying"
code_table:
type: character varying(255)
oid:
type: bigint
default: "0"
constraints:
p_oids_code_table_key:
type: UNIQUE
column: code, code_table, oid
indexes:
i_oids_1:
column: code_table
method: btree
i_oids_2:
column: oid
method: btree
i_oids_3:
column: code
method: btree

+ 46
- 0
db/schema2/tables/p_repartitions_analytiques_shs.yaml View File

@ -0,0 +1,46 @@
columns:
code_prevision_realisation:
type: character(1)
default: "'R'::bpchar"
compte_id:
type: bigint
not_null: NOT NULL
default: "0"
etape_id:
type: bigint
default: "0"
exercice_comptable:
type: numeric(4,0)
default: "0"
mois_comptable:
type: numeric(6,0)
not_null: NOT NULL
default: "0"
montant:
type: numeric(13,2)
default: "0"
section_analytique_id:
type: bigint
default: "0"
section_analytique_origine_id:
type: bigint
default: "0"
indexes:
i_repartitions_analytiques_shs_1:
column: mois_comptable
method: btree
i_repartitions_analytiques_shs_2:
column: compte_id
method: btree
i_repartitions_analytiques_shs_3:
column: section_analytique_id
method: btree
i_repartitions_analytiques_shs_4:
column: etape_id
method: btree
i_repartitions_analytiques_shs_5:
column: code_prevision_realisation
method: btree
i_repartitions_analytiques_shs_6:
column: section_analytique_origine_id
method: btree

+ 17
- 0
db/schema2/tables/t_activites_cout_patient_shs.yaml View File

@ -0,0 +1,17 @@
columns:
code:
type: character varying(10)
code_original:
type: character varying(10)
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_activites_cout_patient_shs'::regclass)"
texte:
type: character varying(255)
texte_court:
type: character varying(255)
constraints:
t_activites_cout_patient_shs_pkey:
type: PRIMARY KEY
column: oid

+ 30
- 0
db/schema2/tables/t_budget.yaml View File

@ -0,0 +1,30 @@
columns:
code:
type: text
exercice_comptable:
type: numeric(4,0)
import_data:
type: text
default: "''::text"
is_actif:
type: text
default: "'1'::text"
mois:
type: 'numeric[]'
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_budget'::regclass)"
site_id:
type: bigint
default: "0"
texte:
type: text
constraints:
t_budget_pkey:
type: PRIMARY KEY
column: oid
indexes:
i_budget_1:
column: code
method: btree

+ 50
- 0
db/schema2/tables/t_budget_compte.yaml View File

@ -0,0 +1,50 @@
columns:
budget_id:
type: bigint
not_null: NOT NULL
clinique_honoraire:
type: text
default: "'C'::text"
compte_budget_id:
type: bigint
default: "0"
exclude_numero:
type: text
default: "''::text"
include_numero:
type: text
default: "''::text"
mode_ventilation:
type: text
default: "'1'::text"
montant_budget_exercice:
type: numeric
default: "0"
montant_budget_mensuel:
type: 'numeric[]'
numero:
type: text
not_null: NOT NULL
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_budget_compte'::regclass)"
section_analytique_code:
type: text
default: "''::text"
taux_budget_mensuel:
type: 'numeric[]'
texte:
type: text
default: "''::text"
constraints:
t_budget_compte_pkey:
type: PRIMARY KEY
column: oid
indexes:
i_budget_compte_1:
column: numero
method: btree
i_budget_compte_2:
column: compte_budget_id
method: btree

+ 22
- 0
db/schema2/tables/t_budget_compte_compte.yaml View File

@ -0,0 +1,22 @@
columns:
budget_compte_id:
type: bigint
not_null: NOT NULL
compte_id:
type: bigint
not_null: NOT NULL
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_budget_compte_compte'::regclass)"
constraints:
t_budget_compte_compte_pkey:
type: PRIMARY KEY
column: oid
indexes:
i_budget_compte_compte_1:
column: budget_compte_id
method: btree
i_budget_compte_compte_2:
column: compte_id
method: btree

+ 26
- 0
db/schema2/tables/t_chart.yaml View File

@ -0,0 +1,26 @@
columns:
category:
type: text
code:
type: text
default_time_calc:
type: text
drilldown:
type: jsonb
label_view_code:
type: numeric
default: "0"
name:
type: text
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_chart'::regclass)"
serie_id:
type: 'bigint[]'
type:
type: text
constraints:
t_chart_pkey:
type: PRIMARY KEY
column: oid

+ 36
- 0
db/schema2/tables/t_classes.yaml View File

@ -0,0 +1,36 @@
columns:
code:
type: text
contenu_by_code:
type: text
default: "'0'::text"
contenu_non_replicable_ailleurs:
type: character(1)
default: "'0'::bpchar"
is_cti:
type: character(1)
default: "0"
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_classes'::regclass)"
sequence:
type: integer
default: "1"
table_id:
type: bigint
not_null: NOT NULL
default: "0"
texte:
type: text
constraints:
t_classes_pkey:
type: PRIMARY KEY
column: oid
indexes:
i_classes_1:
column: code
method: btree
i_classes_classes_1:
column: code
method: btree

+ 23
- 0
db/schema2/tables/t_classes_comptes.yaml View File

@ -0,0 +1,23 @@
columns:
clinique:
type: character(1)
default: "'0'::bpchar"
code:
type: text
honoraire:
type: character(1)
default: "'0'::bpchar"
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_classes_comptes'::regclass)"
texte:
type: text
constraints:
t_classes_comptes_pkey:
type: PRIMARY KEY
column: oid
indexes:
i_classes_comptes_1:
column: code
method: btree

+ 26
- 0
db/schema2/tables/t_classes_sections.yaml View File

@ -0,0 +1,26 @@
columns:
classe_id:
type: bigint
not_null: NOT NULL
default: "0"
code:
type: text
condition:
type: text
default: "''::text"
exclude_code:
type: text
default: "''::text"
include_code:
type: text
default: "''::text"
oid:
type: bigint
not_null: NOT NULL
default: "nextval('s_classes_sections'::regclass)"
texte:
type: text
constraints:
t_classes_sections_pkey:
type: PRIMARY KEY
column: oid

+ 20
- 0
db/schema2/tables/t_classes_sections_elements.yaml View File

@ -0,0 +1,20 @@
columns:
section_id:
type: bigint
not_null: NOT NULL
default: "0"
to_id:
type: bigint
not_null: NOT NULL
default: "0"
constraints:
t_classes_sections_elements_ukey:
type: UNIQUE
column: section_id, to_id
indexes:
i_classes_sections_elements_1:
column: section_id
method: btree
i_classes_sections_elements_2:
column: to_id
method: btree

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save