Browse Source

initial commit

master
ymi 2 months ago
commit
c532ad34d7
625 changed files with 167111 additions and 0 deletions
  1. +28
    -0
      db/aliciarh_lc_entree.csv
  2. +13
    -0
      db/aliciarh_lc_groupe_cotisation.csv
  3. +201
    -0
      db/aliciarh_lc_pays.csv
  4. +22
    -0
      db/aliciarh_lc_sortie.csv
  5. +795
    -0
      db/aliciarh_rub.csv
  6. +148
    -0
      db/data/dbdata_rh_t_ages.SQL
  7. +88
    -0
      db/data/dbdata_rh_t_anciennetes_annee.SQL
  8. +495
    -0
      db/data/dbdata_rh_t_categories_socio_professionnelle.SQL
  9. +62
    -0
      db/data/dbdata_rh_t_chart.SQL
  10. +132
    -0
      db/data/dbdata_rh_t_classes.SQL
  11. +280
    -0
      db/data/dbdata_rh_t_classes_sections.SQL
  12. +170
    -0
      db/data/dbdata_rh_t_classes_sections_elements_ages.SQL
  13. +111
    -0
      db/data/dbdata_rh_t_classes_sections_elements_anciennetes_annee.SQL
  14. +29
    -0
      db/data/dbdata_rh_t_dashboard.SQL
  15. +40
    -0
      db/data/dbdata_rh_t_dashboard_filter.SQL
  16. +38
    -0
      db/data/dbdata_rh_t_dashboard_onglet.SQL
  17. +49
    -0
      db/data/dbdata_rh_t_dashboard_widget.SQL
  18. +163
    -0
      db/data/dbdata_rh_t_expert_controle.SQL
  19. +273
    -0
      db/data/dbdata_rh_t_expert_controle_rule.SQL
  20. +125
    -0
      db/data/dbdata_rh_t_indicateur_serie.SQL
  21. +395
    -0
      db/data/dbdata_rh_t_indicateurs.SQL
  22. +73
    -0
      db/data/dbdata_rh_t_listes.SQL
  23. +473
    -0
      db/data/dbdata_rh_t_listes_tables.SQL
  24. +49
    -0
      db/data/dbdata_rh_t_rapports.SQL
  25. +270
    -0
      db/data/dbdata_rh_t_rapports_rubriques.SQL
  26. +56
    -0
      db/data/dbdata_rh_t_vue_parametre.SQL
  27. +103
    -0
      db/data/dbdata_rh_t_widget_user_parameter.SQL
  28. +112
    -0
      db/data2/dbdata_rh_t_ages.csv
  29. +52
    -0
      db/data2/dbdata_rh_t_anciennetes_annee.csv
  30. +431
    -0
      db/data2/dbdata_rh_t_categories_socio_professionnelle.csv
  31. +15
    -0
      db/data2/dbdata_rh_t_chart.csv
  32. +18
    -0
      db/data2/dbdata_rh_t_classes.csv
  33. +195
    -0
      db/data2/dbdata_rh_t_classes_sections.csv
  34. +111
    -0
      db/data2/dbdata_rh_t_classes_sections_elements_ages.csv
  35. +52
    -0
      db/data2/dbdata_rh_t_classes_sections_elements_anciennetes_annee.csv
  36. +2
    -0
      db/data2/dbdata_rh_t_dashboard.csv
  37. +6
    -0
      db/data2/dbdata_rh_t_dashboard_filter.csv
  38. +3
    -0
      db/data2/dbdata_rh_t_dashboard_onglet.csv
  39. +12
    -0
      db/data2/dbdata_rh_t_dashboard_widget.csv
  40. +40
    -0
      db/data2/dbdata_rh_t_expert_controle.csv
  41. +38
    -0
      db/data2/dbdata_rh_t_expert_controle_rule.csv
  42. +21
    -0
      db/data2/dbdata_rh_t_indicateur_serie.csv
  43. +192
    -0
      db/data2/dbdata_rh_t_indicateurs.csv
  44. +9
    -0
      db/data2/dbdata_rh_t_listes.csv
  45. +431
    -0
      db/data2/dbdata_rh_t_listes_tables.csv
  46. +6
    -0
      db/data2/dbdata_rh_t_rapports.csv
  47. +105
    -0
      db/data2/dbdata_rh_t_rapports_rubriques.csv
  48. +10
    -0
      db/data2/dbdata_rh_t_vue_parametre.csv
  49. +14
    -0
      db/data2/dbdata_rh_t_widget_user_parameter.csv
  50. +1496
    -0
      db/dbsetup_data_rh.XML
  51. +4
    -0
      db/dvp_data_apply.bat
  52. +2
    -0
      db/dvp_data_extract.bat
  53. +4
    -0
      db/expertDetailLevel.yaml
  54. +10
    -0
      db/hooks/install_db_last_jobs.sql
  55. +792
    -0
      db/hooks/post_install_data.sql
  56. +3
    -0
      db/hooks/pre_install_data.sql
  57. +8
    -0
      db/hooks/pre_install_schema.sql
  58. +219
    -0
      db/schema2/functions/cti_budget_execute_rules.yaml
  59. +19
    -0
      db/schema2/functions/cti_budget_generate_keys.yaml
  60. +771
    -0
      db/schema2/functions/cti_croisement_paie_planning_generate.yaml
  61. +289
    -0
      db/schema2/functions/cti_execute_transform.yaml
  62. +738
    -0
      db/schema2/functions/cti_expert_controle_exec_rule~bi.yaml
  63. +256
    -0
      db/schema2/functions/cti_fusion_salaries.yaml
  64. +53
    -0
      db/schema2/functions/cti_gen_data_profile_views.yaml
  65. +410
    -0
      db/schema2/functions/cti_gen_data_profile_views~tx.yaml
  66. +122
    -0
      db/schema2/functions/cti_gen_od.yaml
  67. +88
    -0
      db/schema2/functions/cti_get_sae_contracts.yaml
  68. +75
    -0
      db/schema2/functions/cti_hp_create_views.yaml
  69. +67
    -0
      db/schema2/functions/cti_now~tx,tx.yaml
  70. +71
    -0
      db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,bi,bi,bi,bi,bi,bi.yaml
  71. +78
    -0
      db/schema2/functions/cti_prepare_rapport_comp~bi.yaml
  72. +109
    -0
      db/schema2/functions/cti_prepare_rapport_get_column~tx,tx.yaml
  73. +17
    -0
      db/schema2/functions/cti_prepare_rapport_get_column~tx.yaml
  74. +215
    -0
      db/schema2/functions/cti_prepare_rapport_indicateurs~bi,tx,tx.yaml
  75. +158
    -0
      db/schema2/functions/cti_prepare_rapport_init~bi.yaml
  76. +65
    -0
      db/schema2/functions/cti_prepare_rapport_month~bi.yaml
  77. +83
    -0
      db/schema2/functions/cti_prepare_rapport~bi.yaml
  78. +1796
    -0
      db/schema2/functions/cti_reorganize_indicateur_condition.yaml
  79. +120
    -0
      db/schema2/functions/cti_reorganize_personne.yaml
  80. +332
    -0
      db/schema2/functions/cti_reorganize_pole.yaml
  81. +338
    -0
      db/schema2/functions/cti_reorganize_population.yaml
  82. +102
    -0
      db/schema2/functions/cti_reorganize_profils.yaml
  83. +52
    -0
      db/schema2/functions/cti_reorganize_profils_table~tx,tx.yaml
  84. +82
    -0
      db/schema2/functions/cti_shs_multicode~tx,tx.yaml
  85. +23
    -0
      db/schema2/functions/cti_to_date~ae,ae,ae.yaml
  86. +49
    -0
      db/schema2/functions/cti_update_effectif_permanent.yaml
  87. +165
    -0
      db/schema2/functions/cti_update_schema_classes~tx.yaml
  88. +23
    -0
      db/schema2/functions/cti_util_translate_list~tx.yaml
  89. +5
    -0
      db/schema2/sequences/s_accident_circonstance.yaml
  90. +5
    -0
      db/schema2/sequences/s_accident_lieu.yaml
  91. +5
    -0
      db/schema2/sequences/s_accident_nature.yaml
  92. +5
    -0
      db/schema2/sequences/s_accident_siege.yaml
  93. +5
    -0
      db/schema2/sequences/s_accident_travail.yaml
  94. +5
    -0
      db/schema2/sequences/s_arrets_travail.yaml
  95. +5
    -0
      db/schema2/sequences/s_budget_cle.yaml
  96. +5
    -0
      db/schema2/sequences/s_budget_cle_rule.yaml
  97. +5
    -0
      db/schema2/sequences/s_cadre_emploi.yaml
  98. +5
    -0
      db/schema2/sequences/s_categorie_conge.yaml
  99. +5
    -0
      db/schema2/sequences/s_categorie_statutaire.yaml
  100. +5
    -0
      db/schema2/sequences/s_categories_socio_professionnelles.yaml

+ 28
- 0
db/aliciarh_lc_entree.csv View File

@ -0,0 +1,28 @@
10|CDD MI-TEMPS THERAPEUTIQUE
11|CDD SURCROIT DE TRAVAIL
12|CDD REMPL. MALADIE / AT
13|CDD REMPL. MATERNITE
14|CDD REMPL. CONGES PAYES
15|CDD REMPL. CONGES PARENTAL
16|CDD REMPL. DISPONIBILITE
17|CDD REMPL. EVENEMENTS FAMILIAUX
18|CDD REMPL. ENFANTS MALADES
19|CDD REMPL. FORMATION
20|CDD REMPL. RECUPERATION
21|CDD REMPL. DELEGATION
28|CDD SUR POSTE TITULAIRE
29|CDD AUTRES
50|CDI REMPLACEMENT
51|CDI REMPLACEMENT DEPART RETRAITE
52|CDI REMPLACEMENT DEPART PRE-RETRAITE
53|CDI REMPLACEMENT DEMISSION
54|CDI REMPLACEMENT LICENCIEMENT
55|CDI REMPLACEMENT DECES
56|CDI REMPLACEMENT TEMPS PARTIEL DEFINITIF
60|CDI CREATION POSTE 35 HEURES
70|CDI CREATION POSTE NON BUDGETE
71|CDI CREATION POSTE BUDGET COMA
72|CDI CREATION POSTE BUDGET SOINS PALIATIFS
90|CHANGEMENT DE CATEGORIE PROFESSIONNELLE
91|NOUVELLES CONDITIONS CONTRACTUELLES
92|MUTATION

+ 13
- 0
db/aliciarh_lc_groupe_cotisation.csv View File

@ -0,0 +1,13 @@
10|Non Cadre
11|Cadre Emploie Multiple
12|Non cadre retraité FP
20|Cadre
30|Cadre Dirigeant
50|Emploi Jeune
51|Qualification
52|Contrat Initiative Emploi
53|Emploi Solidarité
54|Emploi Consolidé
60|Employé TP exo 30%
80|Emploi protégé
90|Apprenti

+ 201
- 0
db/aliciarh_lc_pays.csv View File

@ -0,0 +1,201 @@
100|FRANCE
101|DANEMARK
102|ISLANDE
103|NORVEGE
104|SUEDE
105|FINLANDE
106|ESTONIE
107|LETTONIE
108|LITUANIE
109|ALLEMAGNE
110|AUTRICHE
111|BULGARIE
112|HONGRIE
113|LIECHTENSTEIN
114|ROUMANIE
115|TCHECOSLOVAQUIE
119|CROATIE
121|YOUGOSLAVIE
122|POLOGNE
123|RUSSIE
125|ALBANIE
126|GRECE
127|ITALIE
128|SAN MARIN
129|VATICAN
130|ANDORRE
131|BELGIQUE
132|ROYAUME UNI
133|GIBRALTAR
134|ESPAGNE
135|PAYS BAS
136|EIRE
137|LEXEMBOURG
138|MONACO
139|PORTUGAL
140|SUISSE
143|CHYPRE
144|MALTE
145|SLOVNIE
146|ARMENIE
147|AZERBAIDJAN
148|BIELORUSSIE
149|KAZAKHSTAN
150|KIRGHIZISTAN
151|MOLDAVIE
152|OUZELISTAN
153|TADJIKISTAN
154|TUKMENISTAN
155|UKRAINE
201|ARABIE SAOUDITE
203|IRAQ
204|IRAN
205|LIBAN
206|SYRIE
207|ISRAEL
208|TURQUIE
212|AFGHANISTAN
213|PAKISTAN
214|BOUTHAN
215|NEPAL
216|CHINE
217|JAPON
219|THAILANDE
220|PHILIPPINES
222|JORDANIE
223|INDE
224|BIRMANIE
225|BRUNEI
226|SINGAPOUR
227|MALAISIE
229|MALDIVES
230|HONG KONG
231|INDONESIE
232|MACAO
234|CAMBODGE
235|SRI LANKA
236|TAIWAN
237|COREE
238|COREE DU NORD
239|CORRE DU SUD
240|KOWAIT
241|LAOS
242|MONGOLIE
243|VIET NAM
246|BANGLADESH
247|EMIRAT ARABES UNIS
248|QATAR
249|BAHREIN
250|OMAN
251|YEMEN
301|EGYPTE
302|LIBERIA
303|AFRIQUE DU SUD
304|GAMBIE
306|SAINTE HELENE
308|ILES CHAGOS
309|TANZANIE
310|ZIMBABWE
311|NAMIBIE
312|ZAIRE
313|CANARIES
314|GUINEE EQUATORIALE
315|ETHIOPIE
316|LYBIE
318|SOMALIE
319|ACORES MADERE
321|BURUNDI
322|CAMEROUN
323|CENTRAFRIQUE
324|CONGO
326|COTE D'IVOIRE
327|BENIN
328|GABON
329|GHANA
330|GUINEE
331|BURKINA FASSO
332|KENYA
333|MADAGASCAR
334|MALAWI
335|MALI
336|MAURITANIE
337|NIGER
338|NIGERIA
339|OUGANDA
340|RWANDA
341|SENEGAL
342|SIERRA LEONE
343|SOUDAN
344|TCHAD
345|TOGO
346|ZAMBIE
347|BOTSWANA
348|LESOTHO
350|MAROC
351|TUNISIE
352|ALGERIE
390|MAURICE
391|SWAZILAND
392|GUINE-BISSAU
393|MOZAMBIQUE
394|SAO TOME
395|ANGOLA
396|CAP VERT
397|COMORES
398|SEYCHELLE
399|DJIBOUTI
401|CANADA
404|ETATS UNIS
405|MEXIQUE
406|COSTA RICA
407|CUBA
408|SAINT DOMINGUE
409|GUATEMALA
410|HAITI
411|HONDURAS
412|NICARAGUA
413|PANAMA
414|SALVADOR
415|ARGENTINE
416|BRESIL
417|CHILI
418|BILIVIE
419|COLOMBIE
420|EQUATEUR
421|PARAGUAY
422|PEROU
423|URUGUAY
424|VENEZUELA
425|ILES VIERGES BERMUDES CAIMAN
426|JAMAIQUE
427|ILES MALOUINES
428|GYUANA
429|BELIZE
430|GROENLAND
431|ANTILLES NEERLANDAISES
432|PORTO RICO
433|TRINITE ET TOBAGOO
434|BARBADE
435|GRENADE
436|BAHAMAS
437|SURINAM
438|DOMINIQUE
439|SAINT LUCIE
440|SAINT VINCENT ET LES GRENADINES
441|ANTIGUA ET BARBUDA
442|SAINT CHRISTOPHE ET NIEVES
501|AUSTRALIE
502|NOUVELLE ZELANDE
503|ILES PITCAIRN
505|MARIANNES
506|SAMOA OCCIDENTALES
507|NAURU
508|FIDJI
509|TONGA
510|NOUVELLE GUINEE
511|TUVALU
512|SALOMON
513|KIRIBATI
514|VANUATU
515|ILES MARSHALL
516|MICRONESIE

+ 22
- 0
db/aliciarh_lc_sortie.csv View File

@ -0,0 +1,22 @@
CE|RUPTURE ANTICIPEE CDD PAR L'EMPLOYEUR
CS|RUPTURE ANTICIPEE CDD PAR LE SALARIE
DC|DECES
DD|DEMISSION CDD
DI|FIN DE CDD AVEC REPRISE
DM|DEMISSION
FA|FIN CONTRAT APPRENTISSAGE
FC|FIN CDD
FE|FIN PERIODE D'ESSAI PAR L'EMPLOYEUR
FS|FIN PERIODE D'ESSAI PAR LE SALARIE
FT|FIN DE STAGE
LE|LICENCIEMENT ECONOMIQUE
LG|LICENCIEMENT FAUTE GRAVE
LI|LICENCIEMENT INAP PHYSIQUE
LL|LICENCIEMENT FAUTE LOURDE
LM|LICENCIEMENT LONGUE MALADIE
LP|LICENCIEMENT CAUSE PERSONNELLE
LS|LICENCIEMENT FAUTE SIMPLE
RC|RUPTURE CONVENTION DE CONVERSION LIC. ECO.
RD|DEPART RETRAITE
RM|MISE A LA RETRAITE
TF|TRANSFERT FILIALE

+ 795
- 0
db/aliciarh_rub.csv View File

@ -0,0 +1,795 @@
A000|PAIE DE COMPLEMENT|0
A001|DATE DE PAYE |-1
A002|PERIODE DE PAYE |-1
A004|N° DE CONTRAT|-1
A005|DATE DEBUT PERIODE DE PAIE|0
A006|DATE FIN PERIODE DE PAIE|-1
A007|MODE DE REGLEMENT |0
A010|NOMBRE JOURS SS |-1
A011|NOMBRE JOURS SS MANUEL |-1
A019|BULLETIN EXCLU BASE 10EMME|0
A020|CP ACQUIS|0
A022|CP ANCIENNETE ACQUIS|0
A056|CODE EMPLOI|-1
A060|EMPLOI|0
A064|CODE INSEE EMPLOI |-1
A066|GRILLE INDICIAIRE|0
A067|NIVEAU|0
A068|ECHELON|0
A070|COEFFICIENT|0
A080|HEURES THEORIQUES|0
A085|JOURS OUVRES THEORIQUES PAYES|0
A090|SLD TT COMPTE A PAYER EN BULLETIN COMPL|0
A155|HORAIRE MENSUEL|0
A15A|Heures avenant|0
A200|FORMATION : SANS MAINTIEN DE SALAIRE|0
A250|DROIT RTT MENSUEL|0
A51Q|QUART-TREIZIEME MOIS|0
A51T|DEMI-TREIZIEME MOIS|0
A890|CODE ETABLISSEMENT|-1
A900|SECTION 1|0
A901|SOUS-SECTION|0
A902|SECTION 3|0
A903|SECTION 4|0
A904|SECTION 5|0
A905|SECTION 6|0
A906|SECTION 7|0
A907|SECTION 8|0
A908|SECTION 9|0
A909|SECTION 10|0
A990|VENTILATION COMPTABLE|0
AFIA|Regul Allègemet FILLON|0
ALOF|Allocations familiales|0
AP00|BULLETIN DE PORTABILITE|0
AZGC|Grille des cumuls forcés|0
B001|COMMENTAIRE|-1
B005|SALAIRE CONVENTIONNEL|0
B006|SALAIRE HORAIRE JOUR|-1
B007|SALAIRE HORAIRE NUIT|-1
B008|SALAIRE HORAIRE|-1
B009|SALAIRE CONVENTIONNEL CCU|0
B010|SALAIRE DE BASE|0
B013|COMPLEMENT SALAIRE SMIC|-1
B014|COMPLEMENT RTT|-1
B017|COMMENTAIRE|-1
B018|RAPPEL DE SALAIRE DE BASE|-1
B019|RAPPEL HEURES MOIS PRECEDENT|-1
B01A|RAPPEL SALAIRE INDICIAIRE|-1
B020|--- COMPLEMENT DE SALAIRE|0
B030|INDEMNITE DIFFERENTIELLE|0
B032|COMPLEMENT DE SALAIRE|0
B040|SALAIRE DE BASE|-1
B04V|Vacation|-1
B04W||-1
B05Z|********** ASTREINTE|-1
B060|ASTREINTES A DOMICILE|-1
B061|ASTREINTES NON TRAVAILLEES |-1
B062|ASTREINTES TRAVAILLE|-1
B070|--- PRIMES ETABLISSEMENT|0
B071|ASTREINTE|-1
B072|PRIME DE RESPONSABILITE|-1
B073|PRIME DE LINGERIE|-1
B074|PRIME DE LINGE|-1
B075|ASTREINTE ADMINISTRATIVE|-1
B076|PRIME DE TECHNICITE|-1
B077|PRIME D'ASSIDUITE|-1
B082|COMMENTAIRE|-1
B084|REGUL SALAIRE BRUT CONVENTION|-1
B091|PRIME DE DIALYSE|-1
B092|PRIME EXCEPTIONNELLE|-1
B093|PRIME SUR VARIABLE|-1
B094|PRIME/FONCTION|-1
B095|PRIME D'INSTALLATION|-1
B097|COMMENTAIRE|-1
B098|REGULARISATION DE BRUT|-1
B100|------ HEURES -----|0
B101|COMMENTAIRE|-1
B102|HRS COMPL TEPA|-1
B103|HEURES SUPPL 25 % AVEC RC|-1
B104|HRS COMPLEMENTAIRE|-1
B105|HRS COMPL. 10%|-1
B106|HRS SUPPL 25% TEPA|-1
B107|REGUL HEURES SUPPL. A 25 %|-1
B108|HEURES SUPPL 25%|-1
B109|HRS COMPL. 25%|-1
B110|HEURES SUPPLEMENTAIRES 50%|-1
B111|regul HRS COMPLEMENTAIRE|-1
B112|REGUL HEURES SUPPL. A 50 %|-1
B114|HEURES SUPPLEMNTAIRES 100%|-1
B116|REGUL HEURES SUPPL. A 100 %|-1
B200|----- DEDUCTION ENTRE SORTIE|0
B202|DEDUCTION ENTREE SORTIE|-1
B204|DEDUCTION ENTREE SORTIE|-1
B21Z|----- SUSPENTION DE CONTRAT|0
B220|PERIODE SUSPENSION CONTRAT |-1
B222|SUSPENSION CONGE PARENTAL|-1
B224|SUSPENSION CONGE SABATIQUE|-1
B226|SUSPENSION CREATION ENTREPRISE|-1
B228|SUSPENSION SERVICE MILITAIRE|-1
B230|SUSPENSION CONGE SOLIDARITE |-1
B232|SUSPENSION CONGE FORMATION|-1
B234|SUSPENS CONVENANCE PERSONNELLE|-1
B238|SUSPENSION INCAPACITE DE TRAVAIL|-1
B239|SUSPENSION MISE A PIED|-1
B23A|SUSPENSION THERAPEUTIQUE (H)|-1
B23B|SUSPENSION THERAPEUTIQUE (1/30)|-1
B23C|MAINTIEN THERAPEUTIQUE|-1
B240|-----------------------------ABSENCE RTT|0
B241|COMMENTAIRE|-1
B242|PERIODE ABSENCE RTT|-1
B244|ABSENCE RTT|-1
B246|MAINTIEN RTT|-1
B24A|--------------ABSENCE CPTE EPARGNE TEMPS|0
B24C|PERIODE ABSENCE CET|-1
B24E|HEURES C.E.T. PRISES|-1
B24G|MAINTIEN ABSENCES C.E.T.|-1
B250|-------------------------ABSENCES DIVERS|0
B258|PERIODE ABSENCES DIVERSES|-1
B259|ABSENCES DIVERSES|-1
B260|ABSENCES DIVERSES HRS|-1
B261|PERIODE ABSENCES RECUPERATION|-1
B262|ABSENCE RECUPERATION|-1
B263|MAINTIEN ABSENCE RECUPERATION|-1
B264|PERIODE ABSENCE AUTORISEE|0
B265|ABSENCE AUTORISEE|-1
B266|MAINTIEN ABS AUTORISEE|-1
B26Z|----------------------ABSENCE FORMATIONS|0
B270|PERIODE ABSENCE FORMATION|-1
B271|ABSENCE FORMATION|-1
B272|MAINTIEN ABS. FORMATION|-1
B275|PERIODE ABSENCE FORMATION E.S.S.|-1
B276|ABSENCE FORMATION E.S.S.|-1
B277|MAINTIEN FORMATION E.S.S.|-1
B27Z|------------ABSENCE EVENEMENTS FAMILIAUX|0
B280|PERIODE EVENEMENTS FAMILIAUX|-1
B281|ABSENCE EVENEMENTS FAMILIAUX|-1
B282|MAINTIEN ABS. EVENEMENTS FAMILIAUX|-1
B28Z|-----------------ABSENCE ENFANTS MALADES|0
B290|PERIODE ENFANTS MALADES|-1
B291|ABSENCE ENFANTS MALADES|-1
B292|MAINTIEN ABS. ENFANTS MALADES|-1
B300|-------------------------ABSENCE MALADIE|0
B301|COMMENTAIRE|-1
B302|PERIODE ABSENCE MALADIE|-1
B303|MISE A PIED CONSERVATOIRE|-1
B304|ABSENCE MALADIE |-1
B305|HEURES DE MALADIE|0
B306|MAINTIEN ABS. MALADIE A TAUX 1|-1
B308|MAINTIEN ABS. MALADIE A TAUX 2|-1
B30A|MAINTIEN ABS. MALADIE A TAUX 3|-1
B30E|DEDUCTION DES IJSS MALADIE|-1
B30G|IJSS DE SUBROGATION MALADIE|0
B30I|IJ PREVOYANCE MALADIE|-1
B30J|Régul Absence maladie|-1
B310|-------------ABSENCE ACCIDENT DU TRAVAIL|0
B312|PERIODE ABSENCE AT|-1
B314|ABSENCE AT|-1
B315|HEURES DE AT|0
B316|MAINTIEN ABSENCE AT A TAUX 1|-1
B318|MAINTIEN ABSENCE AT A TAUX 2|-1
B31A|MAINTIEN ABSENCE AT A TAUX 3|-1
B31E|DEDUCTION DES IJSS AT|-1
B31G|IJSS DE SUBROGATION AT|0
B31I|IJ PREVOYANCE AT|-1
B320|----------------------ABSENCE MATERNITE|0
B322|PERIODE ABSENCE MATERNITE|-1
B324|ABSENCE MATERNITE|-1
B325|HEURES DE MATERNITE|0
B326|MAINTIEN ABS MATERNITE|-1
B327|REGUL ABSENCE MATERNITE|-1
B32E|DEDUCTION DES IJSS MATERNITE|-1
B32G|IJSS DE SUBROGATION MATERNITE|0
B32I|IJ PREVOYANCE MATERNITE|-1
B330|------------------ABSENCE CONGE PARENTAL|0
B332|PERIODE ABSENCE CONGES PARENTAL|-1
B334|ABSENCE CONGE PARENTAL|-1
B340|------------------MI TEMPS THERAPEUTIQUE|0
B342|PERIODE MI-TEMPS THERAPEUTIQUE|-1
B344|ABSENCE MI-TEMPS THERAPEUTIQUE|-1
B346|MAINTIEN MI-TEMPS THERAPEUTIQUE|-1
B34E|DEDUCTION DES IJSS MI-TEMPS|-1
B34G|IJSS DE SUBROGATION MI-TEMPS|0
B34I|IJ PREVOYANCE MI-TEMPS|-1
B350|-----------------------ABSENCE PATERNITE|0
B352|PERIODE ABSENCE PATERNITE|-1
B354|ABSENCE D'ABSENCE PATERNITE|-1
B356|MAINTIEN ABSENCE PATERNITE|-1
B360|------------------ABSENCE LONGUE MALADIE|0
B362|PERIODE ABS LONGUE MALADIE|-1
B364|ABSENCE LONGUE MALADIE |-1
B365|HEURES DE LONGUE MALADIE|0
B366|MAINTIEN ABS. LONGUE MALADIE A TAUX 1|-1
B368|MAINTIEN ABS. LONGUE MALADIE A TAUX 2|-1
B36A|MAINTIEN ABS. LONGUE MALADIE A TAUX 3|-1
B36E|DEDUCTION DES IJSS LONGUE MALADIE|-1
B36G|IJSS DE SUBROGATION LONGUE MALADIE|0
B36I|IJ PREVOYANCE LONGUE MALADIE|-1
B500|------ INDEMNITE DIMANCHE FERIE|0
B501|COMMENTAIRE|-1
B502|FERIE NON TRAVAILLE|-1
B503|PAYEMENT RC FERIE NON TRV|0
B504|INDEMINITE DE FERIE NON TRAVAILLE|-1
B505|INDEMNITE FERIE TRAVAILLE|-1
B506|INDEMNITE 1er mai TRAVAILLE|-1
B507|PAYEMENT RC FERIE TRAVAIL|0
B508|INDEMNITE DIMANCHE TRAVAILLE|-1
B509|PAYEMENT RC DIMANCHE TRAVAIL|0
B50A|HEURES RC FERIE ACQUIS|0
B50B|PAIEMENT HEURES RC FERIE|-1
B50C|********** PRIME DE NUIT|-1
B50E|PRIME DE NUIT|-1
B50F|PAYEMENT RC DE NUIT|0
B50G|HEURES RC DE NUIT ACQUIS|0
B50J|PAIEMENT HEURES RC DE NUIT|-1
B50K|PAIEMENT HEURES 1er MAI|-1
B50M|MAINTIEN PRIME DE NUIT AT|-1
B50N|HEURES RC ACQUISES|-1
B50P|COMMENTAIRE|-1
B510|------ PRIME|0
B512|PRIME EXCEPTIONNELLE|-1
B513|PRIME EXCEPTIONNELLE|-1
B514|INDEMNITE DEPART EN RETRAITE|-1
B519|INDEMNITE COMPENSATRICE DE PREAVIS|-1
B51A|------ PRIME DE FIN D'ANNEE|0
B51C|PRIME DE FIN D'ANNEE|-1
B51D|13è mois|-1
B51Q|QUART-TREIZIEME MOIS|-1
B51T|DEMI-TREIZIEME MOIS|-1
B520|--------------------REPOS COMPENSATEURS |0
B521|PERIODE ABSENCE RC|-1
B522|HEURES ABSENCE RC|-1
B523|HEURES MAINTIEN RC|-1
B526|PAIEMENT SOLDE HEURES RC|-1
B528|PAIEMENT HEURES RC|-1
B530|------ AVANTAGE EN NATURE|0
B532|AVANTAGE EN NATURE PETIT DEJEUNE|-1
B533|AVANTAGE EN NATURE REPAS|-1
B53L|AVANTAGES LOGEMENT |-1
B53V|AVANTAGE EN NATURE VOITURE|-1
B54A|------ COMPLEMENT RAG|0
B54S|ETAT RAG Za = Bulletin ZB = Cumul |0
B54V|COMPLEMENT RAG|-1
B54W|** BASE MAINTIEN MOIS/CAL/OUVRE/OUVRA/HR|0
B54Z|** BASE 1/10 CP MOIS/REL/REF/NEW|0
B550|PERIODE CONGES PAYES|-1
B551|ABSENCE CONGES PAYES|-1
B552|INDEMNITE CP Année antérieure|-1
B553|INDEMNITE CP Année encours|-1
B554|INDEMNITE CP Année future|-1
B556|INDEMNITE CP Fractionnement|-1
B558|INDEMNITE CP Ancienneté|-1
B55P|COMMENTAIRE|-1
B55Z|------ IND.COMP. CP -------|0
B561|DECLANCHEMENT IND.COMP. CP CDI|0
B562|IND.COMP. CP Antérieur|-1
B563|IND.COMP. CP Année encours|-1
B564|IND.COMP. CP Année future|-1
B566|IND.COMP. CP Fractionnement|-1
B568|IND.COMP. CP Ancienneté|-1
B56B|PAIEMENT IND.COMP. CP Année antérieure|-1
B56C|PAIEMENT IND.COMP. CP Année encours|-1
B56D|PAIEMENT IND.COMP. CP Année future|-1
B56G|INDEMNITE CONGES PAYES|-1
B56H|PAIEMENT IND.COMP. CP|-1
B56Z|------ IND.COMP. CP CDD -------|0
B570|INDEMNITE DE PRECARITE|-1
B571|DECLANCHEMENT IND.COMP. CP CDD|0
B573|IND.COMP. CP CDD Année encours|-1
B574|IND.COMP. CP CDD Année futur|-1
B576|IND.COMP. CP CDD Fractionnement|-1
B578|IND.COMP. CP CDD Ancienneté|-1
B57M|IND.COMP. CP CDD Année en cours **|-1
B57P|INDEMNITE CONGES PAYES CDD (Mensuelle)|-1
B57Z|------ IND.PRECARITE CDD -------|0
B580|INDEMNITE DE PRECARITE|-1
B582|INDEMNITE DE PRECARITE|-1
B590|COMPLEMENT AU 10EME|-1
B595|INDEMNITE COMPENSATRICE CP|-1
B598|INDEMNITE CONGES PAYES CDD|-1
B5ZZ|----- INDEMNITES JOURNALIERES ----|0
B600|IJSS|-1
B601|REGULARISATION BASE NEGATIVE |-1
B60E|DEDUCTION I.J.S.S. BRUTES A PERCEVOIR|-1
B60M|I.J.S.S. BRUTES|-1
B610|MAINTIEN DU NET|-1
B640|IND. PREVOYANCE SOUMISE|-1
B641|IND. PREVOYANCE EXONEREE|-1
B64M|IND. PREVOYANCE (Régul. base cotis.)|-1
B65A|MAINTIEN SALAIRE 100% BRUT SOUMIS|-1
B65B|MAINTIEN SALAIRE 100% BRUT EXO|-1
B65C|MAINTIEN SALAIRE 80% BRUT SOUMIS|-1
B65D|MAINTIEN SALAIRE 80% BRUT EXO|-1
B65I|I.J.S.S. BRUT SOUMIS|-1
B65J|I.J.S.S. BRUT EXO|-1
B750|INDEMNITE DEPART RETRAITE |-1
B760|IND. LICENCIEMENT CONVENTIONNELLE|-1
B761|IND. LICENCIEMENT non imposable|-1
B765|INTERESSEMENT|-1
B79Z|--- Salaire Emploi protégé (HAND) ----|0
B800|ABATTEMENT Salaire Emploi Protégé (50%)|-1
B805|COMPLEMENT ETAT Salaire Emploi Protégé|-1
B830|----- AVANTAGES EN NATURE -----|0
B833|AVANTAGES EN NATURE REPAS|-1
B851|AVANTAGES NOURRITURE |-1
B855|AVANTAGES LOGEMENT |-1
B860|AVANTAGES VOITURE|-1
B865|AVANTAGES AUTRES |-1
B880|************************** RAPPEL|-1
B88B|RAPPEL COEFFICIEN|-1
B88C|RAPPEL ASTREINTES A DOMICILE|-1
B88D|RAPPEL FERIE NON TRAVAILLE|-1
B88E|RAPPEL INDEMNITE DIMANCHE ET FERIE|-1
B88F|RAPPEL PRIME DE NUIT|-1
B88Z|--- COMPTE EPARGNE TEMPS ----|0
B890|ALIMENTATION COMPTE EPARGNE TEMPS (en H)|-1
B89Z|**** BASE BRUT MOINS IJSS MOIS|0
B900|***************************** TOTAL BRUT|-1
B910|BASE COTISATION |0
B911|URSSAF TA/TB/TC/T3A/TAB |-1
B912|SUP_RETRAITE BR/PL/TA/TB/TC |-1
B9A0|SMIC FILLON|0
B9C0|MONTANT DIFFERENTIEL APPRENTI|0
BFIL|SALAIRE REFERENCE FILLON|0
C002|***** URSSAF ******* |-1
C008|CSG PARTICIPATION PLACEE|0
C105|CSG DEDUCTIBLE- HORS ABATTEMENT|-1
C106|CSG CRDS - HORS ABATTEMENT|0
C107|CSG REGUL |0
C108|CSG CRDS |0
C109|CSG DEDUCTIBLE |-1
C10A|REGUL CSG DEDUCTIBLE |-1
C10F|CSG NON DEDUCTIBLE HORS ABATTEMENT|0
C110|URSSAF / TOTALITE|-1
C11A|URSSAF / TOTALITE AL|-1
C11T|REGUL URSSAF / TOTALITE|-1
C12C|MAJORATION ALLOC. FAMILIALES |-1
C12D|MAJORATION ALLOC. FAMILIALES |-1
C12E|MAJORATION ALLOC. FAMILIALES |-1
C12P|REGUL MAJO ALLOC. FAMILIALES |-1
C12Q|REGUL MAJO ALLOC. FAMILIALES |-1
C12R|REGUL MAJO ALLOC. FAMILIALES PIGISTES|-1
C12S|REGUL MAJO ALLOC. FAMILIALES PIGISTES|-1
C141|FNAL SUPPL. TA|-1
C142|FNAL SUPPL. > PLAFOND|-1
C143|FNAL SUPPL. TA APP|-1
C144|FNAL SUPPL. > PLAFOND APP|-1
C145|FNAL SUPPL. TA ART|-1
C146|FNAL SUPPL. > PLAFOND ART|-1
C149|FORFAIT SOCIAL|-1
C14C|REGUL FNAL TR A|-1
C14D|REGUL FNAL > PLAFOND|-1
C150|URSSAF / PLAFOND |-1
C15T|REGUL URSSAF / PLAFOND|-1
C1A0|***** URSSAF Apprenti ******* |-1
C1A5|URSSAF / PLAFOND APPRENTI|-1
C1C0|***** URSSAF C.E.C. ******* |-1
C1C1|URSSAF / TOTALITE CEC Exonéré|-1
C1C5|URSSAF / PLAFOND CEC Exonéré|-1
C1CA|URSSAF / TOTALITE CEC Exonéré AL|-1
C1CS|CONTRIBUTION SOLIDARITE APPRENTI|-1
C1D0|***** URSSAF DETACHE F.PUBL ******* |-1
C1D1|URSSAF / TOTALITE Détaché Fonct.Publ|-1
C1D5|URSSAF / PLAFOND Détaché Fonct.Publ.|-1
C1DF| FORFAIT SOCIAL|-1
C1DZ|REGUL COTISATION FORFAIT SOCIAL|-1
C1E1|CONTRIBUTION SYNDICALE|-1
C1I0|***** URSSAF C.I.E. ******* |-1
C1I1|URSSAF / TOTALITE CIE Exonéré|-1
C1I5|URSSAF / PLAFOND CIE Exonéré|-1
C1IA|URSSAF / TOTALITE CIE Exonéré AL|-1
C1J0|***** URSSAF C.E.J. ******* |-1
C1J1|URSSAF / TOTALITE CEJ|-1
C1J5|URSSAF / PLAFOND CEJ|-1
C1JA|URSSAF / TOTALITE CEJ AL|-1
C1P0|***** URSSAF MEDECIN PEM ******* |-1
C1P1|URSSAF / TOTALITE Médecin PEM|-1
C1P5|URSSAF / PLAFOND Médecin PEM|-1
C1PA|URSSAF / TOTALITE Médecin PEM AL|-1
C1Q0|***** URSSAF C.Qualif. ******* |-1
C1Q1|URSSAF / TOTALITE C.Qualif. Exonéré|-1
C1Q5|URSSAF / PLAFOND C.Qualif. Exonéré|-1
C1QA|URSSAF / TOTALITE C.Qualif. Exonéré AL|-1
C1R0|***** URSSAF CRE ******* |-1
C1R1|URSSAF / TOTALITE CRE Exonéré|-1
C1R5|URSSAF / PLAFOND CRE Exonéré|-1
C1RA|URSSAF / TOTALITE CRE Exonéré AL|-1
C1S0|***** URSSAF C.E.S. ******* |-1
C1S1|URSSAF / TOTALITE CES Exonéré|-1
C1S5|URSSAF / PLAFOND CES Exonéré|-1
C1SA|URSSAF / TOTALITE CES Exonéré AL|-1
C1T0|***** URSSAF T.P. Exo 30% ******* |-1
C1T1|URSSAF / TOTALITE TP Exo 30%|-1
C1T5|URSSAF / PLAFOND TP Exo 30%|-1
C1TA|URSSAF / TOTALITE TP Exo 30% AL|-1
C200|***** URSSAF COTISATIONS COMMUNES ******|-1
C210|URSSAF FNAL / Totalite|-1
C211|URSSAF FNAL/Totalité REGUL|-1
C215|URSSAF FNAL AP / Tranche A |-1
C220|URSSAF ACCIDENT DU TRAVAIL|-1
C230|URSSAF VERSEMENT TRANSPORT|-1
C23R|URSSAF TRANSPORT REGUL |-1
C240|URSSAF TAXE SUR PREVOYANCE|-1
C242|REGUL TAXE SUR PREVOYANCE|-1
C244|REGUL ALLEGEMENT TEPA|-1
C245|CSG CRDS HRS. SUPP. |-1
C246|ALLEGEMENT HEURES SUPPL. SAL.|-1
C247|ALLEGEMENT HEURES SUPPL. PAT.|-1
C248|ALLEGEMENT HEURES SUPPL. PAT.|-1
C24R|REGUL ALLEGEMENT HRS SUPPL|-1
C250|***** URSSAF ALLEGEMENT ******* |-1
C251|URSSAF Reduction Bas Salaires|-1
C255|URSSAF Alleg AUBRY I|-1
C257|ALLEGEMENT FILLON|-1
C258|ALLEGEMENT FILLON ANNUALISE|-1
C259|URSSAF Alleg AUBRY II|-1
C25Z|******* Total URSSAF |-1
C260|ASSEDIC AC Tranche A |-1
C262|ASSEDIC ASF Tranche A |-1
C265|ASSEDIC AC Apprenti|-1
C266|ASSEDIC ASF Apprenti|-1
C26T|REGUL ASSEDIC Tranche A |-1
C270|ASSEDIC AC Tranche B |-1
C272|ASSEDIC ASF Tranche B |-1
C27R|ASSEDIC TB REGUL |-1
C290|ASSEDIC F.N.G.S. |-1
C291|ASSEDIC F.N.G.S. Apprenti |-1
C292|ASSEDIC F.N.G.S. REGUL |-1
C29Z|******* Total ASSEDIC |-1
C300|Humanis Retr. N.C. Tr.A|-1
C301|Humanis AGFF Tr.A|-1
C302|Humanis Retr. N.C. Tr.B|-1
C303|humanis AGFF Non Cadre Tr.B|-1
C304|Humanis T.B. NC. REGUL |-1
C305|AGFF N.C. T.B. REGUL |-1
C306|HumanisN.C. Tr.A retraité|-1
C307|Humanis AGFF Tr.A retraité|-1
C308|Humanis N.C. Tr.B retraité|-1
C309|Humanis AGFF NC Tr.B retraité|-1
C30A|Humanis Retr. Apprenti Tr.A|-1
C30B|Humanis Retr. Apprenti Tr.B|-1
C30C|Humanis Retr. Cadre Tr.A|-1
C30D|Humanis AGFF Cadre Tr.A|-1
C30M|Humanis Retr. Art.36 Tr.A|-1
C30N|Humanis AGFF Art. 36 Tr.A|-1
C30P|Humanis Regul. Retr. Tr.A|-1
C30Q|Humanis Regul. AGFF NC T.A.|-1
C30R|Humanis Regul. Retr. Cadre Tr.A|-1
C30Z|******* Total non cadre|-1
C500|MEDERIC Retr. Cadre Tr.A|-1
C501|MEDERIC AGFF Cadre Tr.A|-1
C502|MEDERIC Retr. Cadre Tr.B|-1
C503|MEDERIC AGFF Cadre Tr.B|-1
C504|MEDERIC Retr. Cadre Tr.C|-1
C505|REGUL MEDERIC Retr. Cadre Tr.A|-1
C506|REGUL MEDERIC Retr. Cadre Tr.B|-1
C507|REGUL MEDERIC Retr. Cadre Tr.C|-1
C50A|MEDERIC APEC Cadre Tr.B |-1
C50B|MEDERIC APEC Cadre Forfait Annuel|-1
C50C|MEDERIC CET |-1
C50D|MEDERIC APEC Cadre Tr.A |-1
C50G|MEDERIC Retr. cadre GMP|-1
C50H|MEDERIC GMP REGUL|-1
C50M|MEDERIC Retr. Art.36 TrB|-1
C50N|MEDERIC AGFF Art.36 TrB|-1
C50P|MEDERIC CET Art.36 |-1
C50Z|******* Total Cadres|-1
C510|MORNAY Retr. cadre Tr.A|-1
C512|MORNAY AGFF cadre Tr.A|-1
C513|MORNAY Retr. Cadre Tr.B|-1
C514|MORNAY AGFF Cadre Tr.B|-1
C515|MORNAY Retr. Cadre Tr.C|-1
C51A|MORNAY APEC Cadre Tr.B |-1
C51B|MORNAY APEC Cadre Forfait Annuel|-1
C51C|MORNAY CET |-1
C51G|MORNAY Retr. cadre GMP|-1
C51M|MORNAY Retr. Art.36 TrB|-1
C51N|MORNAY AGFF Art.36 TrB|-1
C51P|MORNAY CET Art.36 |-1
C51Z|******* Total cadre|-1
C520|GENERALI Retr. C.D.TrA |-1
C521|GENERALI Retr. C.D.TrB |-1
C522|GENERALI Retr. C.D. Tr.C|-1
C523|GENERALI Prév. C.D.TrA |-1
C524|GENERALI Prév. C.D.TrB |-1
C52Z|******* Total C.D.|-1
C650|VAUBAN Prév. Cadre TrA Incapacité décès|-1
C651|VAUBANPrév. Cadre TrA Maintien|-1
C652|VAUBAN PREV CADRE T.A INC REGUL|-1
C653|VAUBAN PREV CADRE T.A. MAINT.REGUL|-1
C655|VAUBAN Prév. Cadre TrB Incapacité décès|-1
C656|VAUBAN Prév. Cadre TrB Maintien|-1
C657|VAUBAN PREV CADRE T.B. INC REGUL|-1
C658|VAUBAN PREV CADRE T.B. MAINT. REGUL|-1
C65A|VAUBAN Prév. Cadre TrC Incapacité décès|-1
C65B|VAUBAN Prév. Cadre TrC Maintien|-1
C65R|VAUBAN Prév. Cadre REGUL|-1
C65Z|******* Total VAUBAN Prév. Cadre|-1
C660|Collecteam Prév. N.C TrA Incap décès|-1
C661|Collecteam Prév. N.C TrA Maintien|-1
C662|Regul Collecteam Prév. N.C TrA Incap|-1
C665|Collecteam Prév. N.C TrB Incap décès|-1
C666|Collecteam Prév. N.C TrB Maintien|-1
C667|Régul Collecteam Prév. N.C TrB Incap|-1
C66A|Collecteam Prév. N.C TrC Incap décès|-1
C66B|Collecteam Prév. N.C TrC Maintien|-1
C66R|Collecteam Prév. N.C REGUL|-1
C66Z|******* Total Collecteam Prév. N.C|-1
C700|MUTUELLE |-1
C710|MUTUELLE |-1
C805|MEDECINE DU TRAVAIL|0
C810|COMITE ENTREPRISE |0
C811|COMITE ENTREPRISE FONCTIONNEMENT|0
C820|AIDE A LA CONSTRUCTION|0
C82R|AIDE LOGEMENT REGUL |-1
C830|TAXE APPRENTISSAGE|0
C840|FC PLAN DE FORMATION|0
C841|FC FORMATION EN ALTERNANCE|0
C842|FC CONGE INDIVIDUEL FORMATION|0
C844|FORMATION PROFESSIONNEL CDD|0
C850|CONTRIBUTION HANDICAPES|0
C859|SOUS TOTAL AUTRES COTISATIONS|-1
C900|TAXE SUR LES SALAIRES TAUX NORMAL|0
C902|TAXE SUR LES SALAIRES 1ERE TAUX|0
C904|TAXE SUR LES SALAIRES 2EME TAUX|0
C905|TAXE SUR LES SALAIRES 3EME TAUX|0
C906|TAXE SUR LES SALAIRES PRORATA|0
C909|TOTAL TAXE SUR LES SALAIRES|-1
C910|PROVISION CP N|0
C912|CHARGE/PROVISION CP N|0
C920|PROVISION CP N-1|0
C922|CHARGE/PROVISION CP N-1|0
C930|PROVISION CP RELIQUAT|0
C932|CHARGE PROVISION CP RELIQUAT|0
C949|SOUS TOTAL PROVISIONS CP|0
D |********** TOTAL AUTRES COTIS.PATRONALES|-1
D000|******************** TOTAL COTISATIONS|-1
D001|COUT EMPLOYEUR|-1
D008|PARTICIPATION|-1
D009|INTERESSEMENT NET IMPOSABLE |-1
D010|INTERESSEMENT |-1
D015|IND. JOURNALIERES Sécurité Sociale|-1
D018|REGULARISATION DE COTISATION|-1
D01R|REGUL DEDUCTION HEURES SUPPL.|-1
D01S|DEDUCTION HEURES SUPPL.|-1
D020|NET IMPOSABLE |-1
E000|----- NON IMPOSABLE EN PLUS ----|-1
E005|CARTE ORANGE NON|0
E008|PARTICIPATION PLACEE|-1
E010|REMBOURSEMENT TRANSPORT|-1
E012|REMBOURSEMENT TRANSPORT|-1
E014|INDEMNITE DE TRANSPORT EXONEREE|-1
E015|FRAIS DE DEPLACEMENT|-1
E016|FRAIS DE DEPLACEMENT|-1
E017|FRAIS DE DEPLACEMENT|-1
E01R|REGUL REINTEGRATION HEURES SUPPL.|-1
E01S|REINTEGRATION HEURES SUPPL.|-1
E020|REMBOURSEMENT FRAIS|-1
E021|REMBOURSEMENT IJ MALADIE|-1
E022|REMBOURSEMENT SAISIE ARRET|-1
E030|INDEMNITE DE MISE A LA RETRAITE|-1
E040|INDEMNITE DE LICENCIEMENT|-1
E041|INDEM RUPTURE CONVENTIONNELLE|-1
E042|INDEMNITE SPECIALE LICENCIEMENT|-1
E044|AUTRES INDEMNITE LICENCIEMENT|-1
E045|INDEMNITE REQUALIFICATION|-1
E046|IND. POUR IRREGULARITE PROCEDURE|-1
E047|DOMMAGE & INTERET/LICENCIEMENT ABUSIF|-1
E048|INDEMNITE TRANSACTIONNELLE|-1
E050|PRIME DE PANIER|-1
E051|PRIME 1/2 PANIER|-1
E052|PRIME DE PANIER|-1
E060|DIVERS ACHATS +|-1
E300|PARTICIPATION CE MUTUELLE|-1
E301|REMBOURSEMENT MUTUELLE|-1
E691|INTERETS A COMPTER DU 01.04.1997|-1
E900|AVANCE PAYE NEGATIVE|-1
E960|INDEMN.PREVOYANCE NON CADRE (Nettes)|0
E96M|INDEMN.PREVOYANCE NON CADRE (Nettes) ***|0
E980|IND. JOURNALIERES Sécurité Sociale|-1
E98M|IND. JOURNALIERES Sécurité Sociale ***|-1
E98T|IND. JOURNALIERES Séc.Soc. MTT|-1
E990|** TOTAL NON IMPOSABLE PLUS **|0
F000|---- NON IMPOSABLE EN MOINS ----|-1
F001|REGULARISATION BASE FIN D'ANNEE|-1
F008|REPRISE PARTICIPATION PLACEE|-1
F010|ACOMPTE |-1
F012|ACOMPTE PERMANENT |-1
F014|AVANCE |-1
F015|ACOMPTE TREIZIEME MOIS|-1
F020|RETENUES DIVERSES |-1
F021|ACOMPTE PARKING|-1
F022|TICKETS RESTAURANTS|-1
F023|RETENUE DIVERSE|-1
F024|REPAS PRIS|-1
F025|REGULARISATION REPAS PRIS|-1
F026|REPAS PRIS TARIF 2|-1
F027|TICKETS REPAS|-1
F029|MUTUELLE REGULARISATION|-1
F02C|COLLATION|-1
F02S|TICKET SUPPLEMENT|-1
F030|MUTUELLE |-1
F031|REGULARISATION MUTUELLE |-1
F040|PENSION ALIMENTAIRE |-1
F050|REMBOURSEMENT PRET |-1
F052|REMBOURSEMENT PRET |-1
F054|INTERETS PRET |-1
F100|CSG CRDS NON DEDUCTIBLE|-1
F102|CSG DEDUCTIBLE|0
F104|TAXE PREVOYANCE|0
F107|REGUL CSG CRDS|-1
F10F|CSG NON DEDUCTIBLE HORS ABATTEMENT|-1
F10G|CSG DEDUCTIBLE - HORS ABATTEMENT|0
F10H|CSG CRDS - HORS ABATTEMENT|-1
F110|SAISIE ARRET |-1
F112|SAISIE ARRET|-1
F114|SAISIE ARRET (Régularisation)|-1
F116|TEST SAISIE ARRET SI IJSS|0
F1D1|COTISATION FORFAIT SOCIAL|0
F1HS|CSG CRDS HRS. SUPP.|0
F200|LOGEMENT |-1
F800|REPRISE AVANTAGE NATURE|-1
F801|REPRISE AVANTAGE NATURE|-1
F833|REPRISE AVANTAGE NATURE |-1
F900|RETENUE PAYE NEGATIVE |-1
F990|** TOTAL NON IMPOSABLE MOINS **|0
FTPA|DECLENCHEMENT CALCUL TEPA|0
G000|**** TOTAL NON IMPOSABLE ****|-1
G010|NET A PAYER BULLETIN|0
G011|NET A PAYER EN FRANCS|0
GZZZ|COMMENTAIRE FIN DE BULLETIN|-1
H000|HEURES PAYEES/TRAVAILLEES|0
H004|Heures payées sans heure supplémentaire|0
HDU0|Heures payées sans heure supplémentaire|0
I01S|RECAPITULATIF HRS. SUPPL.|0
IA01|SALAIRE REEL PLAF APPRENTIS|0
IA02|BRUT FISCAL INTERMEDIAIRE|0
IC02|Détail calcul base CSG CRDS (2011)|0
ID01|Détail calcul Assiette CICE|0
ID02|Détail calcul SMIC CICE|0
ID03|Montants intermédiaires CICE|0
IFIL|Détail Fillon AT|0
K108|Base Régul. CSG CRDS |0
K109|Base Régul. CSG DEDUCTIBLE |0
K141|Base Régul. fnal suppl. T.A.|0
K142|Base Régul. fnal suppl. > plafond|0
K150|Base Régul. URSSAF / PLAFOND|0
K260|Base Régul. ASSEDIC TA C260|0
K262|Base Régul. ASF TA C262|0
K270|Base Régul. ASSEDIC TB C270|0
K272|Base Régul. ASF TB C272|0
K290|Base Régul. ASSEDIC FNGS C290|0
K300|Base Régul. RNC C300|0
K301|Base Régul. AGFF C301|0
K306|Base Régul. RNC C306|0
K307|Base Régul. AGFF C307|0
K30C|Base Régul. RETR TA C30C|0
K502|Base Régul. Retr. Tr.B C502|0
K503|Base Régul. AGFF Tr.B C503|0
K50A|Base Régul. APEC TB |0
K50D|Base Régul. Mederic APEC T.A.|0
K50G|Base Régul. Retr. GMP C50G|0
K51A|Base Régul. APEC TB C51A|0
K51G|Base Régul. Retr. GMP C51G|0
K524|Base Régul. AGFF TB C524|0
K610|Base Régul. Prév. C610|0
K611|Base Régul. Prév. C611|0
K650|Base Régul. PREV TA C650|0
K651|Base Régul. Prév. C651|0
K655|Base Régul.PREV TB C655|0
K656|Base Régul.PREV TB C656|0
K65M|Base Régul. Prév. C65M|0
K665|Base Régul. Prév. C665|0
K666|Base Régul. Prév. C666|0
K700|Base Régul. Mutuelle C700|0
Q005|CUMUL JOURS OUVRES/OUVRABLES/CAL |-1
Q008|CUMUL JOURS SS |-1
Q009|CUMUL JOURS SS |-1
Q010|HEURES PAYEES/TRAVAILLES|-1
Q011|CUMUL HEURES CONTINGENT|-1
Q014|CUMUL HEURES COMP / 25% / 50% / 100%|-1
Q017|CUMUL CHOMAGE PARTIEL|-1
Q020|CUMUL ABSENCE MALADIE|0
Q021|JOURS MALADIE INDEMNISES 100%/50%|0
Q022|CUMUL ABSENCE AT|0
Q023|JOURS AT INDEMNISES 100%/50%|0
Q024|CUMUL ABSENCE MATERNITE|0
Q026|CUMUL ABSENCE AUTRE|0
Q030|HEURES MALADIE INDEMNISES 100%/50%|0
Q031|HEURES AT INDEMNISES 100%/50%|0
Q032|HEURES MATERNITE INDEMNISES 100%|0
Q090|RAG THEO/RAG_REEL/PAYE|-1
Q100|BRUT/B.ABT/ABT/ /NET IMPOSABLE|-1
Q101|NET A PAYE BULLETIN / CUMUL NAP|-1
Q110|URSSAF PLAF/BASE/A/B/C |-1
Q111|URSSAF TD/3TA/4TA |-1
Q112|TRANCHE C SUR EXERCICE PRECEDENT|-1
Q121|ASSEDIC PLAF/BASE/A/B/C |-1
Q122|ASSEDIC TD/3TA/4TA|-1
Q123|RET CA PLAF/BASE/A/B/C |-1
Q124|RET CA TD/3TA/4TA |-1
Q125|RET AM PLAF/BASE/A/B/C |-1
Q126|RET AM TD/3TA/4TA |-1
Q127|RET NC PLAF/BASE/A/B/C |-1
Q128|RET NC TD/3TA/4TA |-1
Q12A|GMP|-1
Q12G|PREV CA PLAF/BASE/A/B/C |-1
Q12H|PREV CA TD/3TA/4TA |-1
Q12I|PREV AM PLAF/BASE/A/B/C |-1
Q12J|PREV AM TD/3TA/4TA |-1
Q12K|PREV NC PLAF/BASE/A/B/C |-1
Q12L|PREV NC TD/3TA/4TA |-1
Q12M|RET CA CET APEC PLAF/BASE/A/B/C |-1
Q12N|RET CA CET APEC TD/3TA/4TA |-1
Q12O|CUM RETRAITE SUP Brut Theorique|-1
Q12P|CUM RETRAITE SUP TP PLA/TA/TB/SSTH|-1
Q130|CUM.AV.NAT.N/L/V/A |-1
Q132|CUMUL PEE MENSUEL/EXCEPT |-1
Q140|CUM.FP.F/R/P/D/T |-1
Q160|PREVOY BR/PL/TA/TB/TC|-1
Q180|RETENUE A LA SOURCE|-1
Q190|TAXE SUR SALAIRE|-1
Q192|TAXE SUR SALAIRE(limitée)|-1
Q220|CSG CRDS BASE/COT NON DED/COT DED|0
Q222|CSG CRDS BASE/PLAF/AV. ABAT/ABAT/100%|0
Q230|BASE TAXE PREVOYANCE|0
Q250|BASE FORFAIT SOCIAL|0
Q300|CUMUL ABS ENFANT MALADE|0
Q900|CUMUL COTISATIONS SAL/PAT/COUT|0
Q991|CUMUL AUBRY 1|-1
Q992|CUMUL AUBRY 2|-1
Q996|CUMUL ALLEG BAS SALAIRE |-1
QALF|ALLOC FAM SMIC MAJ/REM/BASE/TAUX/MONTANT|-1
QALR|ALLOC FAM SMIC MAJ/REM/BASE/TAUX/MONTANT|-1
QDU0|DADSU - Cumuls / Etab. de rattachement|0
QDU1|DADSU - PARTICIPATION|0
QDU2|DADSU - INTERESSEMENT|0
QDU3|DADSU - Abondement au PLAN D'EPARGNE|0
QDU4|DADSU - DIVIDENDE du travail|0
QFI1|CUMUL ALLEGEMENT FILLON|-1
QFI2|CUMUL COT PAT FILLON|-1
QFIA|FILLON SMIC/BRUT/BRUT-HS EXO/MONT/CotPat|-1
QIA1|SALAIRE APPRENTIS PLAF/BASE/A/B/C |-1
QIA2|SALAIRE APPRENTIS TD/3TA/4TA |-1
R001|NET A PAYER MOIS PRECEDENT |-1
R018|CP JRS PRESENCE/JRS ABSENCE|-1
R019|CP RELIQUAT JAC/JPR/BFA/BFP|-1
R020|CP REFERENCE JAC/JPR/BFA/BFP|0
R021|CP EN COURS JAC/JPR/BFA/BFP|-1
R023|CP FRACTIONNEMENT JAC/JPR|-1
R024|CP ANCIENNETE JAC/JPR|-1
R030|CUMUL RC ACQUIS/PRIS/SOLDE|0
R031|CUMUL RC FERIE ACQUIS/PRIS/SOLDE|0
R032|CUMUL HEURES RTT|0
R035|PROVISION CP MT N/CH N/MT N-1/CH N-1|-1
R036|PROVISION CP MT REL/CH REL|-1
R100|PRET MNT INIT/MENS/REMB/SOLDE|-1
R110|SAISIE ARRET Mt Initial / Mt Remboursé|-1
R200|CUMUL BRUT CDD |-1
R210|CUMUL TRC EXERCICE PRECEDENT|0
R260|CUMUL COMPTE EPARGNE TEMPS|0
R300|CUMUL GEL ANCIENNETE|0
R301|CUMUL ANCIENNETE CDD|0
R601|NBIJSS/MAL/AT/MAT/PLAFOND(janvier)|0
R602|NBIJSS/MAL/AT/MAT/PLAFOND(fevrier)|0
R603|NBIJSS/MAL/AT/MAT/PLAFOND(mars)|0
R604|NBIJSS/MAL/AT/MAT/PLAFOND(avril)|0
R605|NBIJSS/MAL/AT/MAT/PLAFOND(mai)|0
R606|NBIJSS/MAL/AT/MAT/PLAFOND(juin)|0
R607|NBIJSS/MAL/AT/MAT/PLAFOND(juillet)|0
R608|NBIJSS/MAL/AT/MAT/PLAFOND(aout)|0
R609|NBIJSS/MAL/AT/MAT/PLAFOND(septembre)|0
R610|NBIJSS/MAL/AT/MAT/PLAFOND(octobre)|0
R611|NBIJSS/MAL/AT/MAT/PLAFOND(novembre)|0
R612|NBIJSS/MAL/AT/MAT/PLAFOND(decembre)|0
R701|BASE SS MOIS/ PRIME MOIS AT (janvier)|0
R702|BASE SS MOIS/ PRIME MOIS AT (fevrier)|0
R703|BASE SS MOIS/ PRIME MOIS AT (mars)|0
R704|BASE SS MOIS/ PRIME MOIS AT (avril)|0
R705|BASE SS MOIS/ PRIME MOIS AT (mai)|0
R706|BASE SS MOIS/ PRIME MOIS AT (juin)|0
R707|BASE SS MOIS/ PRIME MOIS AT (juillet)|0
R708|BASE SS MOIS/ PRIME MOIS AT (aout)|0
R709|BASE SS MOIS/ PRIME MOIS AT (septembre)|0
R710|BASE SS MOIS/ PRIME MOIS AT (octobre)|0
R711|BASE SS MOIS/ PRIME MOIS AT (novembre)|0
R712|BASE SS MOIS/ PRIME MOIS AT (decembre)|0

+ 148
- 0
db/data/dbdata_rh_t_ages.SQL View File

@ -0,0 +1,148 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
oid AS keepoid,
code,
texte
FROM rh.t_ages
ORDER BY code
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
keepoid,
code,
texte
)
VALUES
(0, '000', 'Nouveaux nés'),
(1, '001', '1 an'),
(2, '002', '2 ans'),
(3, '003', '3 ans'),
(4, '004', '4 ans'),
(5, '005', '5 ans'),
(6, '006', '6 ans'),
(7, '007', '7 ans'),
(8, '008', '8 ans'),
(9, '009', '9 ans'),
(10, '010', '10 ans'),
(11, '011', '11 ans'),
(12, '012', '12 ans'),
(13, '013', '13 ans'),
(14, '014', '14 ans'),
(15, '015', '15 ans'),
(16, '016', '16 ans'),
(17, '017', '17 ans'),
(18, '018', '18 ans'),
(19, '019', '19 ans'),
(20, '020', '20 ans'),
(21, '021', '21 ans'),
(22, '022', '22 ans'),
(23, '023', '23 ans'),
(24, '024', '24 ans'),
(25, '025', '25 ans'),
(26, '026', '26 ans'),
(27, '027', '27 ans'),
(28, '028', '28 ans'),
(29, '029', '29 ans'),
(30, '030', '30 ans'),
(31, '031', '31 ans'),
(32, '032', '32 ans'),
(33, '033', '33 ans'),
(34, '034', '34 ans'),
(35, '035', '35 ans'),
(36, '036', '36 ans'),
(37, '037', '37 ans'),
(38, '038', '38 ans'),
(39, '039', '39 ans'),
(40, '040', '40 ans'),
(41, '041', '41 ans'),
(42, '042', '42 ans'),
(43, '043', '43 ans'),
(44, '044', '44 ans'),
(45, '045', '45 ans'),
(46, '046', '46 ans'),
(47, '047', '47 ans'),
(48, '048', '48 ans'),
(49, '049', '49 ans'),
(50, '050', '50 ans'),
(51, '051', '51 ans'),
(52, '052', '52 ans'),
(53, '053', '53 ans'),
(54, '054', '54 ans'),
(55, '055', '55 ans'),
(56, '056', '56 ans'),
(57, '057', '57 ans'),
(58, '058', '58 ans'),
(59, '059', '59 ans'),
(60, '060', '60 ans'),
(61, '061', '61 ans'),
(62, '062', '62 ans'),
(63, '063', '63 ans'),
(64, '064', '64 ans'),
(65, '065', '65 ans'),
(66, '066', '66 ans'),
(67, '067', '67 ans'),
(68, '068', '68 ans'),
(69, '069', '69 ans'),
(70, '070', '70 ans'),
(71, '071', '71 ans'),
(72, '072', '72 ans'),
(73, '073', '73 ans'),
(74, '074', '74 ans'),
(75, '075', '75 ans'),
(76, '076', '76 ans'),
(77, '077', '77 ans'),
(78, '078', '78 ans'),
(79, '079', '79 ans'),
(80, '080', '80 ans'),
(81, '081', '81 ans'),
(82, '082', '82 ans'),
(83, '083', '83 ans'),
(84, '084', '84 ans'),
(85, '085', '85 ans'),
(86, '086', '86 ans'),
(87, '087', '87 ans'),
(88, '088', '88 ans'),
(89, '089', '89 ans'),
(90, '090', '90 ans'),
(91, '091', '91 ans'),
(92, '092', '92 ans'),
(93, '093', '93 ans'),
(94, '094', '94 ans'),
(95, '095', '95 ans'),
(96, '096', '96 ans'),
(97, '097', '97 ans'),
(98, '098', '98 ans'),
(99, '099', '99 ans'),
(100, '100', '100 ans'),
(101, '101', '101 ans'),
(102, '102', '102 ans'),
(103, '103', '103 ans'),
(104, '104', '104 ans'),
(105, '105', '105 ans'),
(106, '106', '106 ans'),
(107, '107', '107 ans'),
(108, '108', '108 ans'),
(109, '109', '109 ans'),
(110, '110', '110 ans')
;
-- 3/3 : Màj de la table iCTI
UPDATE rh.t_ages SET
code = w_dbsetup.code,
texte = w_dbsetup.texte
FROM w_dbsetup
WHERE t_ages.oid = w_dbsetup.keepoid
;
INSERT INTO rh.t_ages(oid, code, texte)
SELECT keepoid, code, texte FROM w_dbsetup WHERE keepoid NOT IN (SELECT oid FROM rh.t_ages)
;
SELECT * FROM rh.cti_update_schema_classes('AGE')
;

+ 88
- 0
db/data/dbdata_rh_t_anciennetes_annee.SQL View File

@ -0,0 +1,88 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
oid AS keepoid,
code,
texte
FROM rh.t_anciennetes_annee
ORDER BY code
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
keepoid,
code,
texte
)
VALUES
(0, '00', 'Moins de 1 an'),
(1, '01', '1 an'),
(2, '02', '2 ans'),
(3, '03', '3 ans'),
(4, '04', '4 ans'),
(5, '05', '5 ans'),
(6, '06', '6 ans'),
(7, '07', '7 ans'),
(8, '08', '8 ans'),
(9, '09', '9 ans'),
(10, '10', '10 ans'),
(11, '11', '11 ans'),
(12, '12', '12 ans'),
(13, '13', '13 ans'),
(14, '14', '14 ans'),
(15, '15', '15 ans'),
(16, '16', '16 ans'),
(17, '17', '17 ans'),
(18, '18', '18 ans'),
(19, '19', '19 ans'),
(20, '20', '20 ans'),
(21, '21', '21 ans'),
(22, '22', '22 ans'),
(23, '23', '23 ans'),
(24, '24', '24 ans'),
(25, '25', '25 ans'),
(26, '26', '26 ans'),
(27, '27', '27 ans'),
(28, '28', '28 ans'),
(29, '29', '29 ans'),
(30, '30', '30 ans'),
(31, '31', '31 ans'),
(32, '32', '32 ans'),
(33, '33', '33 ans'),
(34, '34', '34 ans'),
(35, '35', '35 ans'),
(36, '36', '36 ans'),
(37, '37', '37 ans'),
(38, '38', '38 ans'),
(39, '39', '39 ans'),
(40, '40', '40 ans'),
(41, '41', '41 ans'),
(42, '42', '42 ans'),
(43, '43', '43 ans'),
(44, '44', '44 ans'),
(45, '45', '45 ans'),
(46, '46', '46 ans'),
(47, '47', '47 ans'),
(48, '48', '48 ans'),
(49, '49', '49 ans'),
(50, '50', '50 ans')
;
-- 3/3 : Màj de la table iCTI
UPDATE rh.t_anciennetes_annee SET
code = w_dbsetup.code,
texte = w_dbsetup.texte
FROM w_dbsetup
WHERE t_anciennetes_annee.oid = w_dbsetup.keepoid
;
INSERT INTO rh.t_anciennetes_annee(oid, code, texte)
SELECT keepoid, code, texte FROM w_dbsetup WHERE keepoid NOT IN (SELECT oid FROM rh.t_anciennetes_annee)
;
SELECT * FROM rh.cti_update_schema_classes('AGE')
;

+ 495
- 0
db/data/dbdata_rh_t_categories_socio_professionnelle.SQL View File

@ -0,0 +1,495 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
max(oid) AS oid,
code,
texte,
texte_court
FROM rh.t_categories_socio_professionnelle
WHERE 1=1
AND code != texte
AND substr(code, 4, 1) !~ '[0-9]'
AND code NOT IN ('642k', '643d')
GROUP BY 2,3,4
ORDER BY code
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
code,
texte,
texte_court
)
VALUES
(0, '*', 'Non renseignée', 'N/R'),
(1, '100x', 'Agriculteurs et éleveurs, salariés de leur exploitation', 'Agriculteurs et éleveurs, salariés de leur explo'),
(1, '210x', 'Artisans salariés de leur entreprise', 'Artisans salariés de leur entreprise'),
(1, '220x', 'Commerçants et assimilés, salariés de leur entreprise', 'Commerçants et assimilés, salariés de leur entr'),
(1, '231a', 'Chefs de grande entreprise de 500 salariés et plus', 'Chefs de grande entreprise de 500 salariés et plu'),
(1, '232a', 'Chefs de moyenne entreprise, de 50 à 499 salariés', 'Chefs de moyenne entreprise, de 50 à 499 salarié'),
(1, '233a', 'Chefs d''entreprise du bâtiment et des travaux publics, de 10 à 49 salariés', 'Chefs d''entreprise du bâtiment et des travaux pub'),
(1, '233b', 'Chefs d''entreprise de l''industrie ou des transports, de 10 à 49 salariés', 'Chefs d''entreprise de l''industrie ou des transport'),
(1, '233c', 'Chefs d''entreprise commerciale, de 10 à 49 salariés', 'Chefs d''entreprise commerciale, de 10 à 49 salari'),
(1, '233d', 'Chefs d''entreprise de services, de 10 à 49 salariés', 'Chefs d''entreprise de services, de 10 à 49 salari'),
(1, '311c', 'Chirurgiens dentistes', 'Chirurgiens dentistes'),
(1, '311d', 'Psychologues, psychanalystes, psychothérapeutes (non médecins)', 'Psychologues, psychanalystes, psychothérapeutes ('),
(1, '311e', 'Vétérinaires', 'Vétérinaires'),
(1, '312a', 'Avocats', 'Avocats'),
(1, '331a', 'Personnels de direction de la fonction publique (Etat, collectivités locales, hôpitaux)', 'Personnels de direction de la fonction publique (E'),
(1, '332a', 'Ingénieurs de l''Etat (y.c. ingénieurs militaires) et assimilés', 'Ingénieurs de l''Etat (y.c. ingénieurs militaires'),
(1, '332b', 'Ingénieurs des collectivités locales et des hôpitaux', 'Ingénieurs des collectivités locales et des hôp'),
(1, '333a', 'Magistrats*', 'Magistrats*'),
(1, '333b', 'Inspecteurs et autres personnels de catégorie A des Impôts, du Trésor et des Douanes', 'Inspecteurs et autres personnels de catégorie A d'),
(1, '333c', 'Cadres de la Poste*', 'Cadres de la Poste*'),
(1, '333d', 'Cadres administratifs de France Télécom (statut public)', 'Cadres administratifs de France Télécom (statut '),
(1, '333e', 'Autres personnels administratifs de catégorie A de l''Etat (hors Enseignement, Patrimoine, Impôts, Trésor, Douanes)', 'Autres personnels administratifs de catégorie A d'),
(1, '333f', 'Personnels administratifs de catégorie A des collectivités locales et hôpitaux publics (hors Enseignement, Patrimoine)', 'Personnels administratifs de catégorie A des coll'),
(1, '334a', 'Officiers des Armées et de la Gendarmerie (sauf officiers généraux)*', 'Officiers des Armées et de la Gendarmerie (sauf o'),
(1, '335a', 'Personnes exerçant un mandat politique ou syndical*', 'Personnes exerçant un mandat politique ou syndica'),
(1, '341a', 'Professeurs agrégés et certifiés de l''enseignement secondaire', 'Professeurs agrégés et certifiés de l''enseignem'),
(1, '341b', 'Chefs d''établissement de l''enseignement secondaire et inspecteurs', 'Chefs d''établissement de l''enseignement secondair'),
(1, '342b', 'Professeurs et maîtres de conférences', 'Professeurs et maîtres de conférences'),
(1, '342c', 'Professeurs agrégés et certifiés en fonction dans l''enseignement supérieur', 'Professeurs agrégés et certifiés en fonction da'),
(1, '342d', 'Personnel enseignant temporaire de l''enseignement supérieur', 'Personnel enseignant temporaire de l''enseignement '),
(1, '342f', 'Directeurs et chargés de recherche de la recherche publique', 'Directeurs et chargés de recherche de la recherch'),
(1, '342g', 'Ingénieurs d''étude et de recherche de la recherche publique', 'Ingénieurs d''étude et de recherche de la recherc'),
(1, '342h', 'Allocataires de la recherche publique', 'Allocataires de la recherche publique'),
(1, '343a', 'Psychologues spécialistes de l''orientation scolaire et professionnelle', 'Psychologues spécialistes de l''orientation scolai'),
(1, '344a', 'Médecins hospitaliers sans activité libérale', 'Médecins hospitaliers sans activité libérale'),
(1, '344b', 'Médecins salariés non hospitaliers', 'Médecins salariés non hospitaliers'),
(1, '344c', 'Internes en médecine, odontologie et pharmacie', 'Internes en médecine, odontologie et pharmacie'),
(1, '344d', 'Pharmaciens salariés', 'Pharmaciens salariés'),
(1, '351a', 'Bibliothécaires, archivistes, conservateurs et autres cadres du patrimoine', 'Bibliothécaires, archivistes, conservateurs et au'),
(1, '352a', 'Journalistes (y c. rédacteurs en chef)', 'Journalistes (y c. rédacteurs en chef)'),
(1, '352b', 'Auteurs littéraires, scénaristes, dialoguistes', 'Auteurs littéraires, scénaristes, dialoguistes'),
(1, '353a', 'Directeurs de journaux, administrateurs de presse, directeurs d''éditions (littéraire, musicale, audiovisuelle et multimédia)', 'Directeurs de journaux, administrateurs de presse,'),
(1, '353b', 'Directeurs, responsables de programmation et de production de l''audiovisuel et des spectacles', 'Directeurs, responsables de programmation et de pr'),
(1, '353c', 'Cadres artistiques et technico-artistiques de la réalisation de l''audiovisuel et des spectacles', 'Cadres artistiques et technico-artistiques de la r'),
(1, '354a', 'Artistes plasticiens', 'Artistes plasticiens'),
(1, '354b', 'Artistes de la musique et du chant', 'Artistes de la musique et du chant'),
(1, '354c', 'Artistes dramatiques', 'Artistes dramatiques'),
(1, '354e', 'Artistes de la danse', 'Artistes de la danse'),
(1, '354f', 'Artistes du cirque et des spectacles divers', 'Artistes du cirque et des spectacles divers'),
(1, '354g', 'Professeurs d''art (hors établissements scolaires)', 'Professeurs d''art (hors établissements scolaires)'),
(1, '371a', 'Cadres d''état-major administratifs, financiers, commerciaux des grandes entreprises', 'Cadres d''état-major administratifs, financiers, c'),
(1, '372a', 'Cadres chargés d''études économiques, financières, commerciales', 'Cadres chargés d''études économiques, financièr'),
(1, '372b', 'Cadres de l''organisation ou du contrôle des services administratifs et financiers', 'Cadres de l''organisation ou du contrôle des servi'),
(1, '372c', 'Cadres spécialistes des ressources humaines et du recrutement', 'Cadres spécialistes des ressources humaines et du'),
(1, '372d', 'Cadres spécialistes de la formation', 'Cadres spécialistes de la formation'),
(1, '372e', 'Juristes', 'Juristes'),
(1, '372f', 'Cadres de la documentation, de l''archivage (hors fonction publique)', 'Cadres de la documentation, de l''archivage (hors f'),
(1, '373a', 'Cadres des services financiers ou comptables des grandes entreprises', 'Cadres des services financiers ou comptables des g'),
(1, '373b', 'Cadres des autres services administratifs des grandes entreprises', 'Cadres des autres services administratifs des gran'),
(1, '373c', 'Cadres des services financiers ou comptables des petites et moyennes entreprises', 'Cadres des services financiers ou comptables des p'),
(1, '373d', 'Cadres des autres services administratifs des petites et moyennes entreprises', 'Cadres des autres services administratifs des peti'),
(1, '374a', 'Cadres de l''exploitation des magasins de vente du commerce de détail', 'Cadres de l''exploitation des magasins de vente du '),
(1, '374b', 'Chefs de produits, acheteurs du commerce et autres cadres de la mercatique', 'Chefs de produits, acheteurs du commerce et autres'),
(1, '374c', 'Cadres commerciaux des grandes entreprises (hors commerce de détail)', 'Cadres commerciaux des grandes entreprises (hors c'),
(1, '374d', 'Cadres commerciaux des petites et moyennes entreprises (hors commerce de détail)', 'Cadres commerciaux des petites et moyennes entrepr'),
(1, '375a', 'Cadres de la publicité', 'Cadres de la publicité'),
(1, '375b', 'Cadres des relations publiques et de la communication', 'Cadres des relations publiques et de la communicat'),
(1, '376a', 'Cadres des marchés financiers', 'Cadres des marchés financiers'),
(1, '376b', 'Cadres des opérations bancaires', 'Cadres des opérations bancaires'),
(1, '376c', 'Cadres commerciaux de la banque', 'Cadres commerciaux de la banque'),
(1, '376d', 'Chefs d''établissements et responsables de l''exploitation bancaire', 'Chefs d''établissements et responsables de l''explo'),
(1, '376e', 'Cadres des services techniques des assurances', 'Cadres des services techniques des assurances'),
(1, '376f', 'Cadres des services techniques des organismes de sécurité sociale et assimilés', 'Cadres des services techniques des organismes de s'),
(1, '376g', 'Cadres de l''immobilier', 'Cadres de l''immobilier'),
(1, '377a', 'Cadres de l''hôtellerie et de la restauration', 'Cadres de l''hôtellerie et de la restauration'),
(1, '380a', 'Directeurs techniques des grandes entreprises', 'Directeurs techniques des grandes entreprises'),
(1, '381b', 'Ingénieurs et cadres d''étude et développement de l''agriculture, la pêche, les eaux et forêts', 'Ingénieurs et cadres d''étude et développement d'),
(1, '381c', 'Ingénieurs et cadres de production et d''exploitation de l''agriculture, la pêche, les eaux et forêts', 'Ingénieurs et cadres de production et d''exploitat'),
(1, '382a', 'Ingénieurs et cadres d''étude du bâtiment et des travaux publics', 'Ingénieurs et cadres d''étude du bâtiment et des'),
(1, '382b', 'Architectes salariés', 'Architectes salariés'),
(1, '382c', 'Ingénieurs, cadres de chantier et conducteurs de travaux (cadres) du bâtiment et des travaux publics', 'Ingénieurs, cadres de chantier et conducteurs de '),
(1, '382d', 'Ingénieurs et cadres technico-commerciaux en bâtiment, travaux publics', 'Ingénieurs et cadres technico-commerciaux en bât'),
(1, '383a', 'Ingénieurs et cadres d''étude, recherche et développement en électricité, électronique', 'Ingénieurs et cadres d''étude, recherche et déve'),
(1, '383b', 'Ingénieurs et cadres de fabrication en matériel électrique, électronique', 'Ingénieurs et cadres de fabrication en matériel '),
(1, '383c', 'Ingénieurs et cadres technico-commerciaux en matériel électrique ou électronique professionnel', 'Ingénieurs et cadres technico-commerciaux en mat?'),
(1, '384a', 'Ingénieurs et cadres d''étude, recherche et développement en mécanique et travail des métaux', 'Ingénieurs et cadres d''étude, recherche et déve'),
(1, '384b', 'Ingénieurs et cadres de fabrication en mécanique et travail des métaux', 'Ingénieurs et cadres de fabrication en mécanique'),
(1, '384c', 'Ingénieurs et cadres technico-commerciaux en matériel mécanique professionnel', 'Ingénieurs et cadres technico-commerciaux en mat?'),
(1, '385a', 'Ingénieurs et cadres d''étude, recherche et développement des industries de transformation (agroalimentaire, chimie, métallurgie, matériaux lourds)', 'Ingénieurs et cadres d''étude, recherche et déve'),
(1, '385b', 'Ingénieurs et cadres de fabrication des industries de transformation (agroalimentaire, chimie, métallurgie, matériaux lourds)', 'Ingénieurs et cadres de fabrication des industrie'),
(1, '385c', 'Ingénieurs et cadres technico-commerciaux des industries de transformations (biens intermédiaires)', 'Ingénieurs et cadres technico-commerciaux des ind'),
(1, '386b', 'Ingénieurs et cadres d''étude, recherche et développement de la distribution d''énergie, eau', 'Ingénieurs et cadres d''étude, recherche et déve'),
(1, '386c', 'Ingénieurs et cadres d''étude, recherche et développement des autres industries (imprimerie, matériaux souples, ameublement et bois)', 'Ingénieurs et cadres d''étude, recherche et déve'),
(1, '386d', 'Ingénieurs et cadres de la production et de la distribution d''énergie, eau', 'Ingénieurs et cadres de la production et de la di'),
(1, '386e', 'Ingénieurs et cadres de fabrication des autres industries (imprimerie, matériaux souples, ameublement et bois)', 'Ingénieurs et cadres de fabrication des autres in'),
(1, '387a', 'Ingénieurs et cadres des achats et approvisionnements industriels', 'Ingénieurs et cadres des achats et approvisionnem'),
(1, '387b', 'Ingénieurs et cadres de la logistique, du planning et de l''ordonnancement', 'Ingénieurs et cadres de la logistique, du plannin'),
(1, '387c', 'Ingénieurs et cadres des méthodes de production', 'Ingénieurs et cadres des méthodes de production'),
(1, '387d', 'Ingénieurs et cadres du contrôle-qualité', 'Ingénieurs et cadres du contrôle-qualité'),
(1, '387e', 'Ingénieurs et cadres de la maintenance, de l''entretien et des travaux neufs', 'Ingénieurs et cadres de la maintenance, de l''entr'),
(1, '387f', 'Ingénieurs et cadres techniques de l''environnement', 'Ingénieurs et cadres techniques de l''environnemen'),
(1, '388a', 'Ingénieurs et cadres d''étude, recherche et développement en informatique', 'Ingénieurs et cadres d''étude, recherche et déve'),
(1, '388b', 'Ingénieurs et cadres d''administration, maintenance, support et services aux utilisateurs en informatique', 'Ingénieurs et cadres d''administration, maintenanc'),
(1, '388c', 'Chefs de projets informatiques, responsables informatiques', 'Chefs de projets informatiques, responsables infor'),
(1, '388d', 'Ingénieurs et cadres technico-commerciaux en informatique et télécommunications', 'Ingénieurs et cadres technico-commerciaux en info'),
(1, '388e', 'Ingénieurs et cadres spécialistes des télécommunications', 'Ingénieurs et cadres spécialistes des télécomm'),
(1, '389a', 'Ingénieurs et cadres techniques de l''exploitation des transports', 'Ingénieurs et cadres techniques de l''exploitation'),
(1, '389b', 'Officiers et cadres navigants techniques et commerciaux de l''aviation civile', 'Officiers et cadres navigants techniques et commer'),
(1, '389c', 'Officiers et cadres navigants techniques de la marine marchande', 'Officiers et cadres navigants techniques de la mar'),
(1, '421a', 'Instituteurs', 'Instituteurs'),
(1, '421b', 'Professeurs des écoles', 'Professeurs des écoles'),
(1, '422a', 'Professeurs d''enseignement général des collèges', 'Professeurs d''enseignement général des collèges'),
(1, '422b', 'Professeurs de lycée professionnel', 'Professeurs de lycée professionnel'),
(1, '422c', 'Maîtres auxiliaires et professeurs contractuels de l''enseignement secondaire', 'Maîtres auxiliaires et professeurs contractuels d'),
(1, '422d', 'Conseillers principaux d''éducation', 'Conseillers principaux d''éducation'),
(1, '422e', 'Surveillants et aides-éducateurs des établissements d''enseignement', 'Surveillants et aides-éducateurs des établisseme'),
(1, '423a', 'Moniteurs d''école de conduite', 'Moniteurs d''école de conduite'),
(1, '423b', 'Formateurs et animateurs de formation continue', 'Formateurs et animateurs de formation continue'),
(1, '424a', 'Moniteurs et éducateurs sportifs, sportifs professionnels', 'Moniteurs et éducateurs sportifs, sportifs profes'),
(1, '425a', 'Sous-bibliothécaires, cadres intermédiaires du patrimoine', 'Sous-bibliothécaires, cadres intermédiaires du p'),
(1, '431a', 'Cadres infirmiers et assimilés', 'Cadres infirmiers et assimilés'),
(1, '431b', 'Infirmiers psychiatriques', 'Infirmiers psychiatriques'),
(1, '431c', 'Puéricultrices', 'Puéricultrices'),
(1, '431d', 'Infirmiers spécialisés (autres qu''infirmiers psychiatriques et puéricultrices)', 'Infirmiers spécialisés (autres qu''infirmiers psy'),
(1, '431e', 'Sages-femmes salariées', 'Sages-femmes salariées'),
(1, '431f', 'Infirmiers en soins généraux, salariés', 'Infirmiers en soins généraux, salariés'),
(1, '432b', 'Masseurs-kinésithérapeutes rééducateurs, salariés', 'Masseurs-kinésithérapeutes rééducateurs, salar'),
(1, '432d', 'Autres spécialistes de la rééducation, salariés', 'Autres spécialistes de la rééducation, salarié'),
(1, '433a', 'Techniciens médicaux', 'Techniciens médicaux'),
(1, '433b', 'Opticiens lunetiers et audioprothésistes salariés', 'Opticiens lunetiers et audioprothésistes salarié'),
(1, '433c', 'Autres spécialistes de l''appareillage médical salariés', 'Autres spécialistes de l''appareillage médical sa'),
(1, '433d', 'Préparateurs en pharmacie', 'Préparateurs en pharmacie'),
(1, '434a', 'Cadres de l''intervention socio-éducative', 'Cadres de l''intervention socio-éducative'),
(1, '434b', 'Assistants de service social', 'Assistants de service social'),
(1, '434c', 'Conseillers en économie sociale familiale', 'Conseillers en économie sociale familiale'),
(1, '434d', 'Educateurs spécialisés', 'Educateurs spécialisés'),
(1, '434e', 'Moniteurs éducateurs', 'Moniteurs éducateurs'),
(1, '434f', 'Educateurs techniques spécialisés, moniteurs d''atelier', 'Educateurs techniques spécialisés, moniteurs d''a'),
(1, '434g', 'Educateurs de jeunes enfants', 'Educateurs de jeunes enfants'),
(1, '435a', 'Directeurs de centres socioculturels et de loisirs', 'Directeurs de centres socioculturels et de loisirs'),
(1, '435b', 'Animateurs socioculturels et de loisirs', 'Animateurs socioculturels et de loisirs'),
(1, '441a', 'Clergé séculier', 'Clergé séculier'),
(1, '441b', 'Clergé régulier', 'Clergé régulier'),
(1, '451a', 'Professions intermédiaires de la Poste', 'Professions intermédiaires de la Poste'),
(1, '451b', 'Professions intermédiaires administratives de France Télécom (statut public)', 'Professions intermédiaires administratives de Fra'),
(1, '451c', 'Contrôleurs des Impôts, du Trésor, des Douanes et assimilés*', 'Contrôleurs des Impôts, du Trésor, des Douanes '),
(1, '451d', 'Ingénieurs du contrôle de la navigation aérienne*', 'Ingénieurs du contrôle de la navigation aérienn'),
(1, '451e', 'Autres personnels administratifs de catégorie B de l''Etat (hors Enseignement, Patrimoine, Impôts, Trésor, Douanes)', 'Autres personnels administratifs de catégorie B d'),
(1, '451g', 'Professions intermédiaires administratives des collectivités locales', 'Professions intermédiaires administratives des co'),
(1, '451h', 'Professions intermédiaires administratives des hôpitaux', 'Professions intermédiaires administratives des h?'),
(1, '452a', 'Inspecteurs et officiers de police*', 'Inspecteurs et officiers de police*'),
(1, '452b', 'Adjudants-chefs, adjudants et sous-officiers de rang supérieur de l''Armée et de la Gendarmerie*', 'Adjudants-chefs, adjudants et sous-officiers de ra'),
(1, '461b', 'Secrétaires de direction, assistants de direction (non cadres)', 'Secrétaires de direction, assistants de direction'),
(1, '461c', 'Secrétaires de niveau supérieur (non cadres, hors secrétaires de direction)', 'Secrétaires de niveau supérieur (non cadres, hor'),
(1, '461d', 'Maîtrise et techniciens des services financiers ou comptables', 'Maîtrise et techniciens des services financiers o'),
(1, '461e', 'Maîtrise et techniciens administratifs des services juridiques ou du personnel', 'Maîtrise et techniciens administratifs des servic'),
(1, '461f', 'Maîtrise et techniciens administratifs des autres services administratifs', 'Maîtrise et techniciens administratifs des autres'),
(1, '462a', 'Chefs de petites surfaces de vente', 'Chefs de petites surfaces de vente'),
(1, '462b', 'Maîtrise de l''exploitation des magasins de vente', 'Maîtrise de l''exploitation des magasins de vente'),
(1, '462c', 'Acheteurs non classés cadres, aides-acheteurs', 'Acheteurs non classés cadres, aides-acheteurs'),
(1, '462d', 'Animateurs commerciaux des magasins de vente, marchandiseurs (non cadres)', 'Animateurs commerciaux des magasins de vente, marc'),
(1, '462e', 'Autres professions intermédiaires commerciales (sauf techniciens des forces de vente)', 'Autres professions intermédiaires commerciales (s'),
(1, '463a', 'Techniciens commerciaux et technico-commerciaux, représentants en informatique', 'Techniciens commerciaux et technico-commerciaux, r'),
(1, '463b', 'Techniciens commerciaux et technico-commerciaux, représentants en biens d''équipement, en biens intermédiaires, commerce interindustriel (hors informatique)', 'Techniciens commerciaux et technico-commerciaux, r'),
(1, '463c', 'Techniciens commerciaux et technico-commerciaux, représentants en biens de consommation auprès d''entreprises', 'Techniciens commerciaux et technico-commerciaux, r'),
(1, '463d', 'Techniciens commerciaux et technico-commerciaux, représentants en services auprès d''entreprises ou de professionnels (hors banque, assurance, informatique)', 'Techniciens commerciaux et technico-commerciaux, r'),
(1, '463e', 'Techniciens commerciaux et technico-commerciaux, représentants auprès de particuliers (hors banque, assurance, informatique)', 'Techniciens commerciaux et technico-commerciaux, r'),
(1, '464a', 'Assistants de la publicité, des relations publiques', 'Assistants de la publicité, des relations publiqu'),
(1, '464b', 'Interprètes, traducteurs', 'Interprètes, traducteurs'),
(1, '465a', 'Concepteurs et assistants techniques des arts graphiques, de la mode et de la décoration salariés', 'Concepteurs et assistants techniques des arts grap'),
(1, '465b', 'Assistants techniques de la réalisation des spectacles vivants et audiovisuels salariés', 'Assistants techniques de la réalisation des spect'),
(1, '465c', 'Photographes', 'Photographes'),
(1, '466a', 'Responsables commerciaux et administratifs des transports de voyageurs et du tourisme (non cadres)', 'Responsables commerciaux et administratifs des tra'),
(1, '466b', 'Responsables commerciaux et administratifs des transports de marchandises (non cadres)', 'Responsables commerciaux et administratifs des tra'),
(1, '466c', 'Responsables d''exploitation des transports de voyageurs et de marchandises (non cadres)', 'Responsables d''exploitation des transports de voya'),
(1, '467a', 'Chargés de clientèle bancaire', 'Chargés de clientèle bancaire'),
(1, '467b', 'Techniciens des opérations bancaires', 'Techniciens des opérations bancaires'),
(1, '467c', 'Professions intermédiaires techniques et commerciales des assurances', 'Professions intermédiaires techniques et commerci'),
(1, '467d', 'Professions intermédiaires techniques des organismes de sécurité sociale', 'Professions intermédiaires techniques des organis'),
(1, '468a', 'Maîtrise de restauration : salle et service', 'Maîtrise de restauration : salle et service'),
(1, '468b', 'Maîtrise de l''hébergement : hall et étages', 'Maîtrise de l''hébergement : hall et étages'),
(1, '471a', 'Techniciens d''étude et de conseil en agriculture, eaux et forêt', 'Techniciens d''étude et de conseil en agriculture,'),
(1, '471b', 'Techniciens d''exploitation et de contrôle de la production en agriculture, eaux et forêt', 'Techniciens d''exploitation et de contrôle de la p'),
(1, '472a', 'Dessinateurs en bâtiment, travaux publics', 'Dessinateurs en bâtiment, travaux publics'),
(1, '472b', 'Géomètres, topographes', 'Géomètres, topographes'),
(1, '472c', 'Métreurs et techniciens divers du bâtiment et des travaux publics', 'Métreurs et techniciens divers du bâtiment et de'),
(1, '472d', 'Techniciens des travaux publics de l''Etat et des collectivités locales', 'Techniciens des travaux publics de l''Etat et des c'),
(1, '473a', 'Dessinateurs en électricité, électromécanique et électronique', 'Dessinateurs en électricité, électromécanique '),
(1, '473b', 'Techniciens de recherche-développement et des méthodes de fabrication en électricité, électromécanique et électronique', 'Techniciens de recherche-développement et des mé'),
(1, '473c', 'Techniciens de fabrication et de contrôle-qualité en électricité, électromécanique et électronique', 'Techniciens de fabrication et de contrôle-qualit?'),
(1, '474a', 'Dessinateurs en construction mécanique et travail des métaux', 'Dessinateurs en construction mécanique et travail'),
(1, '474b', 'Techniciens de recherche-développement et des méthodes de fabrication en construction mécanique et travail des métaux', 'Techniciens de recherche-développement et des mé'),
(1, '474c', 'Techniciens de fabrication et de contrôle-qualité en construction mécanique et travail des métaux', 'Techniciens de fabrication et de contrôle-qualit?'),
(1, '475a', 'Techniciens de recherche-développement et des méthodes de production des industries de transformation', 'Techniciens de recherche-développement et des mé'),
(1, '475b', 'Techniciens de production et de contrôle-qualité des industries de transformation', 'Techniciens de production et de contrôle-qualité'),
(1, '476a', 'Assistants techniques, techniciens de l''imprimerie et de l''édition', 'Assistants techniques, techniciens de l''imprimerie'),
(1, '476b', 'Techniciens de l''industrie des matériaux souples, de l''ameublement et du bois', 'Techniciens de l''industrie des matériaux souples,'),
(1, '477a', 'Techniciens de la logistique, du planning et de l''ordonnancement', 'Techniciens de la logistique, du planning et de l'''),
(1, '477b', 'Techniciens d''installation et de maintenance des équipements industriels (électriques, électromécaniques, mécaniques, hors informatique)', 'Techniciens d''installation et de maintenance des ?'),
(1, '477c', 'Techniciens d''installation et de maintenance des équipements non industriels (hors informatique et télécommunications)', 'Techniciens d''installation et de maintenance des ?'),
(1, '477d', 'Techniciens de l''environnement et du traitement des pollutions', 'Techniciens de l''environnement et du traitement de'),
(1, '478a', 'Techniciens d''étude et de développement en informatique', 'Techniciens d''étude et de développement en infor'),
(1, '478b', 'Techniciens de production, d''exploitation en informatique', 'Techniciens de production, d''exploitation en infor'),
(1, '478c', 'Techniciens d''installation, de maintenance, support et services aux utilisateurs en informatique', 'Techniciens d''installation, de maintenance, suppor'),
(1, '478d', 'Techniciens des télécommunications et de l''informatique des réseaux', 'Techniciens des télécommunications et de l''infor'),
(1, '479a', 'Techniciens des laboratoires de recherche publique ou de l''enseignement', 'Techniciens des laboratoires de recherche publique'),
(1, '479b', 'Experts salariés de niveau technicien, techniciens divers', 'Experts salariés de niveau technicien, technicien'),
(1, '480a', 'Contremaîtres et agents d''encadrement (non cadres) en agriculture, sylviculture', 'Contremaîtres et agents d''encadrement (non cadres'),
(1, '480b', 'Maîtres d''équipage de la marine marchande et de la pêche', 'Maîtres d''équipage de la marine marchande et de '),
(1, '481a', 'Conducteurs de travaux (non cadres)', 'Conducteurs de travaux (non cadres)'),
(1, '481b', 'Chefs de chantier (non cadres)', 'Chefs de chantier (non cadres)'),
(1, '482a', 'Agents de maîtrise en fabrication de matériel électrique, électronique', 'Agents de maîtrise en fabrication de matériel é'),
(1, '483a', 'Agents de maîtrise en construction mécanique, travail des métaux', 'Agents de maîtrise en construction mécanique, tr'),
(1, '484a', 'Agents de maîtrise en fabrication : agroalimentaire, chimie, plasturgie, pharmacie.', 'Agents de maîtrise en fabrication : agroalimentai'),
(1, '484b', 'Agents de maîtrise en fabrication : métallurgie, matériaux lourds et autres industries de transformation', 'Agents de maîtrise en fabrication : métallurgie,'),
(1, '485a', 'Agents de maîtrise et techniciens en production et distribution d''énergie, eau, chauffage', 'Agents de maîtrise et techniciens en production e'),
(1, '485b', 'Agents de maîtrise en fabrication des autres industries (imprimerie, matériaux souples, ameublement et bois)', 'Agents de maîtrise en fabrication des autres indu'),
(1, '486b', 'Agents de maîtrise en maintenance, installation en électricité et électronique', 'Agents de maîtrise en maintenance, installation e'),
(1, '486c', 'Agents de maîtrise en maintenance, installation en électromécanique', 'Agents de maîtrise en maintenance, installation e'),
(1, '486d', 'Agents de maîtrise en maintenance, installation en mécanique', 'Agents de maîtrise en maintenance, installation e'),
(1, '486e', 'Agents de maîtrise en entretien général, installation, travaux neufs (hors mécanique, électromécanique, électronique)', 'Agents de maîtrise en entretien général, instal'),
(1, '487a', 'Responsables d''entrepôt, de magasinage', 'Responsables d''entrepôt, de magasinage'),
(1, '487b', 'Responsables du tri, de l''emballage, de l''expédition et autres responsables de la manutention', 'Responsables du tri, de l''emballage, de l''expédit'),
(1, '488a', 'Maîtrise de restauration : cuisine/production', 'Maîtrise de restauration : cuisine/production'),
(1, '488b', 'Maîtrise de restauration : gestion d''établissement', 'Maîtrise de restauration : gestion d''établissem'),
(1, '521a', 'Employés de la Poste', 'Employés de la Poste'),
(1, '521b', 'Employés de France Télécom (statut public)', 'Employés de France Télécom (statut public)'),
(1, '522a', 'Agents de constatation ou de recouvrement des Impôts, du Trésor, des Douanes*', 'Agents de constatation ou de recouvrement des Imp?'),
(1, '523a', 'Adjoints administratifs de la fonction publique (y c. enseignement)*', 'Adjoints administratifs de la fonction publique (y'),
(1, '523b', 'Adjoints administratifs de l''Etat et assimilés (sauf Poste, France Télécom)', 'Adjoints administratifs de l''Etat et assimilés (s'),
(1, '523c', 'Adjoints administratifs des collectivités locales', 'Adjoints administratifs des collectivités locales'),
(1, '523d', 'Adjoints administratifs des hôpitaux publics', 'Adjoints administratifs des hôpitaux publics'),
(1, '524a', 'Agents administratifs de la fonction publique (y c. enseignement)*', 'Agents administratifs de la fonction publique (y c'),
(1, '524b', 'Agents administratifs de l''Etat et assimilés (sauf Poste, France Télécom)', 'Agents administratifs de l''Etat et assimilés (sau'),
(1, '524c', 'Agents administratifs des collectivités locales', 'Agents administratifs des collectivités locales'),
(1, '524d', 'Agents administratifs des hôpitaux publics', 'Agents administratifs des hôpitaux publics'),
(1, '525a', 'Agents de service des établissements primaires', 'Agents de service des établissements primaires'),
(1, '525b', 'Agents de service des autres établissements d''enseignement', 'Agents de service des autres établissements d''ens'),
(1, '525c', 'Agents de service de la fonction publique (sauf écoles, hôpitaux)', 'Agents de service de la fonction publique (sauf é'),
(1, '525d', 'Agents de service hospitaliers', 'Agents de service hospitaliers'),
(1, '526a', 'Aides-soignants', 'Aides-soignants'),
(1, '526b', 'Assistants dentaires, médicaux et vétérinaires, aides de techniciens médicaux', 'Assistants dentaires, médicaux et vétérinaires,'),
(1, '526c', 'Auxiliaires de puériculture', 'Auxiliaires de puériculture'),
(1, '526d', 'Aides médico-psychologiques', 'Aides médico-psychologiques'),
(1, '526e', 'Ambulanciers salariés', 'Ambulanciers salariés'),
(1, '531a', 'Agents de police de l''Etat*', 'Agents de police de l''Etat*'),
(1, '531b', 'Agents des polices municipales*', 'Agents des polices municipales*'),
(1, '531c', 'Surveillants de l''administration pénitentiaire*', 'Surveillants de l''administration pénitentiaire*'),
(1, '532a', 'Gendarmes (de grade inférieur à adjudant)*', 'Gendarmes (de grade inférieur à adjudant)*'),
(1, '532b', 'Sergents et sous-officiers de grade équivalent des Armées (sauf pompiers militaires)*', 'Sergents et sous-officiers de grade équivalent de'),
(1, '532c', 'Hommes du rang (sauf pompiers militaires)*', 'Hommes du rang (sauf pompiers militaires)*'),
(1, '533a', 'Pompiers (y.c. pompiers militaires)', 'Pompiers (y.c. pompiers militaires)'),
(1, '533b', 'Agents techniques forestiers, gardes des espaces naturels', 'Agents techniques forestiers, gardes des espaces n'),
(1, '533c', 'Agents de surveillance du patrimoine et des administrations', 'Agents de surveillance du patrimoine et des admini'),
(1, '534a', 'Agents civils de sécurité et de surveillance', 'Agents civils de sécurité et de surveillance'),
(1, '534b', 'Convoyeurs de fonds, gardes du corps, enquêteurs privés et métiers assimilés (salariés)', 'Convoyeurs de fonds, gardes du corps, enquêteurs '),
(1, '541b', 'Agents d''accueil qualifiés, hôtesses d''accueil et d''information', 'Agents d''accueil qualifiés, hôtesses d''accueil e'),
(1, '541c', 'Agents d''accueil non qualifiés', 'Agents d''accueil non qualifiés'),
(1, '541d', 'Standardistes, téléphonistes', 'Standardistes, téléphonistes'),
(1, '542a', 'Secrétaires', 'Secrétaires'),
(1, '542b', 'Dactylos, sténodactylos (sans secrétariat), opérateurs de traitement de texte', 'Dactylos, sténodactylos (sans secrétariat), opé'),
(1, '543b', 'Employés qualifiés des services comptables ou financiers', 'Employés qualifiés des services comptables ou fi'),
(1, '543c', 'Employés non qualifiés des services comptables ou financiers', 'Employés non qualifiés des services comptables o'),
(1, '543e', 'Employés qualifiés des services du personnel et des services juridiques', 'Employés qualifiés des services du personnel et '),
(1, '543f', 'Employés qualifiés des services commerciaux des entreprises (hors vente)', 'Employés qualifiés des services commerciaux des '),
(1, '543g', 'Employés administratifs qualifiés des autres services des entreprises', 'Employés administratifs qualifiés des autres ser'),
(1, '543h', 'Employés administratifs non qualifiés', 'Employés administratifs non qualifiés'),
(1, '544a', 'Employés et opérateurs d''exploitation en informatique', 'Employés et opérateurs d''exploitation en informa'),
(1, '545a', 'Employés administratifs des services techniques de la banque', 'Employés administratifs des services techniques d'),
(1, '545b', 'Employés des services commerciaux de la banque', 'Employés des services commerciaux de la banque'),
(1, '545c', 'Employés des services techniques des assurances', 'Employés des services techniques des assurances'),
(1, '545d', 'Employés des services techniques des organismes de sécurité sociale et assimilés', 'Employés des services techniques des organismes d'),
(1, '546a', 'Contrôleurs des transports (personnels roulants)', 'Contrôleurs des transports (personnels roulants)'),
(1, '546b', 'Agents des services commerciaux des transports de voyageurs et du tourisme', 'Agents des services commerciaux des transports de '),
(1, '546c', 'Employés administratifs d''exploitation des transports de marchandises', 'Employés administratifs d''exploitation des transp'),
(1, '546d', 'Hôtesses de l''air et stewards', 'Hôtesses de l''air et stewards'),
(1, '546e', 'Autres agents et hôtesses d''accompagnement (transports, tourisme)', 'Autres agents et hôtesses d''accompagnement (trans'),
(1, '551a', 'Employés de libre service du commerce et magasiniers', 'Employés de libre service du commerce et magasini'),
(1, '552a', 'Caissiers de magasin', 'Caissiers de magasin'),
(1, '553b', 'Vendeurs polyvalents des grands magasins', 'Vendeurs polyvalents des grands magasins'),
(1, '553c', ' Autres vendeurs non spécialisés', ' Autres vendeurs non spécialisés'),
(1, '554a', 'Vendeurs en alimentation', 'Vendeurs en alimentation'),
(1, '554b', 'Vendeurs en ameublement, décor, équipement du foyer', 'Vendeurs en ameublement, décor, équipement du fo'),
(1, '554c', 'Vendeurs en droguerie, bazar, quincaillerie, bricolage', 'Vendeurs en droguerie, bazar, quincaillerie, brico'),
(1, '554d', 'Vendeurs du commerce de fleurs', 'Vendeurs du commerce de fleurs'),
(1, '554e', 'Vendeurs en habillement et articles de sport', 'Vendeurs en habillement et articles de sport'),
(1, '554f', 'Vendeurs en produits de beauté, de luxe (hors biens culturels) et optique', 'Vendeurs en produits de beauté, de luxe (hors bie'),
(1, '554g', 'Vendeurs de biens culturels (livres, disques, multimédia, objets d''art)', 'Vendeurs de biens culturels (livres, disques, mult'),
(1, '554h', 'Vendeurs de tabac, presse et articles divers', 'Vendeurs de tabac, presse et articles divers'),
(1, '554j', 'Pompistes et gérants de station-service (salariés ou mandataires)', 'Pompistes et gérants de station-service (salarié'),
(1, '555a', 'Vendeurs par correspondance, télévendeurs', 'Vendeurs par correspondance, télévendeurs'),
(1, '556a', 'Vendeurs en gros de biens d''équipement, biens intermédiaires', 'Vendeurs en gros de biens d''équipement, biens int'),
(1, '561b', 'Serveurs, commis de restaurant, garçons qualifiés', 'Serveurs, commis de restaurant, garçons qualifié'),
(1, '561c', 'Serveurs, commis de restaurant, garçons non qualifiés', 'Serveurs, commis de restaurant, garçons non quali'),
(1, '561d', 'Aides de cuisine, apprentis de cuisine et employés polyvalents de la restauration', 'Aides de cuisine, apprentis de cuisine et employé'),
(1, '561e', 'Employés de l''hôtellerie : réception et hall', 'Employés de l''hôtellerie : réception et hall'),
(1, '561f', 'Employés d''étage et employés polyvalents de l''hôtellerie', 'Employés d''étage et employés polyvalents de l''h'),
(1, '562a', 'Manucures, esthéticiens ', 'Manucures, esthéticiens '),
(1, '562b', 'Coiffeurs salariés', 'Coiffeurs salariés'),
(1, '563a', 'Assistantes maternelles, gardiennes d''enfants, familles d''accueil', 'Assistantes maternelles, gardiennes d''enfants, fam'),
(1, '563b', 'Aides à domicile, aides ménagères, travailleuses familiales', 'Aides à domicile, aides ménagères, travailleuse'),
(1, '563c', 'Employés de maison et personnels de ménage chez des particuliers', 'Employés de maison et personnels de ménage chez '),
(1, '564a', 'Concierges, gardiens d''immeubles', 'Concierges, gardiens d''immeubles'),
(1, '564b', 'Employés des services divers', 'Employés des services divers'),
(1, '621a', 'Chefs d''équipe du gros oeuvre et des travaux publics', 'Chefs d''équipe du gros oeuvre et des travaux publ'),
(1, '621b', 'Ouvriers qualifiés du travail du béton', 'Ouvriers qualifiés du travail du béton'),
(1, '621c', 'Conducteurs qualifiés d''engins de chantiers du bâtiment et des travaux publics', 'Conducteurs qualifiés d''engins de chantiers du b?'),
(1, '621d', 'Ouvriers des travaux publics en installations électriques et de télécommunications', 'Ouvriers des travaux publics en installations éle'),
(1, '621e', 'Autres ouvriers qualifiés des travaux publics', 'Autres ouvriers qualifiés des travaux publics'),
(1, '621f', 'Ouvriers qualifiés des travaux publics (salariés de l''Etat et des collectivités locales)', 'Ouvriers qualifiés des travaux publics (salariés'),
(1, '621g', 'Mineurs de fond qualifiés et autres ouvriers qualifiés des industries d''extraction (carrières, pétrole, gaz...)', 'Mineurs de fond qualifiés et autres ouvriers qual'),
(1, '622a', 'Opérateurs qualifiés sur machines automatiques en production électrique ou électronique', 'Opérateurs qualifiés sur machines automatiques e'),
(1, '622c', 'Monteurs câbleurs qualifiés en électricité', 'Monteurs câbleurs qualifiés en électricité'),
(1, '622d', 'Câbleurs qualifiés en électronique (prototype, unité, petite série)', 'Câbleurs qualifiés en électronique (prototype, '),
(1, '622e', 'Autres monteurs câbleurs en électronique', 'Autres monteurs câbleurs en électronique'),
(1, '622f', 'Bobiniers qualifiés', 'Bobiniers qualifiés'),
(1, '622g', 'Plateformistes, contrôleurs qualifiés de matériel électrique ou électronique', 'Plateformistes, contrôleurs qualifiés de matéri'),
(1, '623a', 'Chaudronniers-tôliers industriels, opérateurs qualifiés du travail en forge, conducteurs qualifiés d''équipement de formage, traceurs qualifiés', 'Chaudronniers-tôliers industriels, opérateurs qu'),
(1, '623b', 'Tuyauteurs industriels qualifiés', 'Tuyauteurs industriels qualifiés'),
(1, '623d', 'Opérateurs qualifiés sur machine de soudage', 'Opérateurs qualifiés sur machine de soudage'),
(1, '623e', 'Soudeurs manuels', 'Soudeurs manuels'),
(1, '623f', 'Opérateurs qualifiés d''usinage des métaux travaillant à l''unité ou en petite série, moulistes qualifiés', 'Opérateurs qualifiés d''usinage des métaux trava'),
(1, '623g', 'Opérateurs qualifiés d''usinage des métaux sur autres machines (sauf moulistes)', 'Opérateurs qualifiés d''usinage des métaux sur a'),
(1, '624b', 'Monteurs, metteurs au point très qualifiés d''ensembles mécaniques travaillant à l''unité ou en petite série', 'Monteurs, metteurs au point très qualifiés d''ens'),
(1, '624c', 'Monteurs qualifiés d''ensembles mécaniques travaillant en moyenne ou en grande série', 'Monteurs qualifiés d''ensembles mécaniques travai'),
(1, '624d', 'Monteurs qualifiés en structures métalliques', 'Monteurs qualifiés en structures métalliques'),
(1, '624e', 'Ouvriers qualifiés de contrôle et d''essais en mécanique', 'Ouvriers qualifiés de contrôle et d''essais en m?'),
(1, '624f', 'Ouvriers qualifiés des traitements thermiques et de surface sur métaux', 'Ouvriers qualifiés des traitements thermiques et '),
(1, '624g', 'Autres mécaniciens ou ajusteurs qualifiés (ou spécialité non reconnue)', 'Autres mécaniciens ou ajusteurs qualifiés (ou sp'),
(1, '625a', 'Pilotes d''installation lourde des industries de transformation : agroalimentaire, chimie, plasturgie, énergie', 'Pilotes d''installation lourde des industries de tr'),
(1, '625b', 'Ouvriers qualifiés et agents qualifiés de laboratoire : agroalimentaire, chimie, biologie, pharmacie', 'Ouvriers qualifiés et agents qualifiés de labora'),
(1, '625c', 'Autres opérateurs et ouvriers qualifiés de la chimie (y.c. pharmacie) et de la plasturgie', 'Autres opérateurs et ouvriers qualifiés de la ch'),
(1, '625d', 'Opérateurs de la transformation des viandes', 'Opérateurs de la transformation des viandes'),
(1, '625f', 'Autres opérateurs travaillant sur installations ou machines : industrie agroalimentaire (hors transformation des viandes)', 'Autres opérateurs travaillant sur installations o'),
(1, '625g', 'Autres ouvriers de production qualifiés ne travaillant pas sur machine : industrie agroalimentaire (hors transformation des viandes)', 'Autres ouvriers de production qualifiés ne travai'),
(1, '625h', 'Ouvriers qualifiés des autres industries (eau, gaz, énergie, chauffage)', 'Ouvriers qualifiés des autres industries (eau, ga'),
(1, '626a', 'Pilotes d''installation lourde des industries de transformation : métallurgie, production verrière, matériaux de construction', 'Pilotes d''installation lourde des industries de tr'),
(1, '626b', 'Autres opérateurs et ouvriers qualifiés : métallurgie, production verrière, matériaux de construction', 'Autres opérateurs et ouvriers qualifiés : métal'),
(1, '626c', 'Opérateurs et ouvriers qualifiés des industries lourdes du bois et de la fabrication du papier-carton', 'Opérateurs et ouvriers qualifiés des industries '),
(1, '627a', 'Opérateurs qualifiés du textile et de la mégisserie', 'Opérateurs qualifiés du textile et de la mégiss'),
(1, '627b', 'Ouvriers qualifiés de la coupe des vêtements et de l''habillement, autres opérateurs de confection qualifiés', 'Ouvriers qualifiés de la coupe des vêtements et '),
(1, '627c', 'Ouvriers qualifiés du travail industriel du cuir', 'Ouvriers qualifiés du travail industriel du cuir'),
(1, '627d', 'Ouvriers qualifiés de scierie, de la menuiserie industrielle et de l''ameublement', 'Ouvriers qualifiés de scierie, de la menuiserie i'),
(1, '627e', 'Ouvriers de la photogravure et des laboratoires photographiques et cinématographiques', 'Ouvriers de la photogravure et des laboratoires ph'),
(1, '627f', 'Ouvriers de la composition et de l''impression, ouvriers qualifiés de la brochure, de la reliure et du façonnage du papier-carton', 'Ouvriers de la composition et de l''impression, ouv'),
(1, '628a', 'Mécaniciens qualifiés de maintenance, entretien : équipements industriels', 'Mécaniciens qualifiés de maintenance, entretien '),
(1, '628b', 'Electromécaniciens, électriciens qualifiés d''entretien : équipements industriels', 'Electromécaniciens, électriciens qualifiés d''en'),
(1, '628c', 'Régleurs qualifiés d''équipements de fabrication (travail des métaux, mécanique)', 'Régleurs qualifiés d''équipements de fabrication'),
(1, '628d', 'Régleurs qualifiés d''équipements de fabrication (hors travail des métaux et mécanique)', 'Régleurs qualifiés d''équipements de fabrication'),
(1, '628e', 'Ouvriers qualifiés de l''assainissement et du traitement des déchets', 'Ouvriers qualifiés de l''assainissement et du trai'),
(1, '628f', 'Agents qualifiés de laboratoire (sauf chimie, santé)', 'Agents qualifiés de laboratoire (sauf chimie, san'),
(1, '628g', 'Ouvriers qualifiés divers de type industriel', 'Ouvriers qualifiés divers de type industriel'),
(1, '631a', 'Jardiniers', 'Jardiniers'),
(1, '632a', 'Maçons qualifiés', 'Maçons qualifiés'),
(1, '632b', 'Ouvriers qualifiés du travail de la pierre', 'Ouvriers qualifiés du travail de la pierre'),
(1, '632c', 'Charpentiers en bois qualifiés', 'Charpentiers en bois qualifiés'),
(1, '632d', 'Menuisiers qualifiés du bâtiment', 'Menuisiers qualifiés du bâtiment'),
(1, '632e', 'Couvreurs qualifiés', 'Couvreurs qualifiés'),
(1, '632f', 'Plombiers et chauffagistes qualifiés', 'Plombiers et chauffagistes qualifiés'),
(1, '632g', 'Peintres et ouvriers qualifiés de pose de revêtements sur supports verticaux', 'Peintres et ouvriers qualifiés de pose de revête'),
(1, '632h', 'Soliers moquetteurs et ouvriers qualifiés de pose de revêtements souples sur supports horizontaux', 'Soliers moquetteurs et ouvriers qualifiés de pose'),
(1, '632j', 'Monteurs qualifiés en agencement, isolation', 'Monteurs qualifiés en agencement, isolation'),
(1, '632k', 'Ouvriers qualifiés d''entretien général des bâtiments', 'Ouvriers qualifiés d''entretien général des bât'),
(1, '633a', 'Electriciens qualifiés de type artisanal (y.c. bâtiment)', 'Electriciens qualifiés de type artisanal (y.c. b?'),
(1, '633b', 'Dépanneurs qualifiés en radiotélévision, électroménager, matériel électronique (salariés)', 'Dépanneurs qualifiés en radiotélévision, élec'),
(1, '633c', 'Electriciens, électroniciens qualifiés en maintenance entretien, réparation : automobile', 'Electriciens, électroniciens qualifiés en mainte'),
(1, '633d', 'Electriciens, électroniciens qualifiés en maintenance, entretien : équipements non industriels', 'Electriciens, électroniciens qualifiés en mainte'),
(1, '634a', 'Carrossiers d''automobiles qualifiés', 'Carrossiers d''automobiles qualifiés'),
(1, '634b', 'Métalliers, serruriers qualifiés', 'Métalliers, serruriers qualifiés'),
(1, '634c', 'Mécaniciens qualifiés en maintenance, entretien, réparation : automobile', 'Mécaniciens qualifiés en maintenance, entretien,'),
(1, '634d', 'Mécaniciens qualifiés de maintenance, entretien : équipements non industriels', 'Mécaniciens qualifiés de maintenance, entretien '),
(1, '635a', 'Tailleurs et couturières qualifiés, ouvriers qualifiés du travail des étoffes (sauf fabrication de vêtements), ouvriers qualifiés de type artisanal du travail du cuir', 'Tailleurs et couturières qualifiés, ouvriers qua'),
(1, '636a', 'Bouchers (sauf industrie de la viande)', 'Bouchers (sauf industrie de la viande)'),
(1, '636b', 'Charcutiers (sauf industrie de la viande)', 'Charcutiers (sauf industrie de la viande)'),
(1, '636c', 'Boulangers, pâtissiers (sauf activité industrielle)', 'Boulangers, pâtissiers (sauf activité industriel'),
(1, '636d', 'Cuisiniers et commis de cuisine', 'Cuisiniers et commis de cuisine'),
(1, '637a', 'Modeleurs (sauf modeleurs de métal), mouleurs-noyauteurs à la main, ouvriers qualifiés du travail du verre ou de la céramique à la main', 'Modeleurs (sauf modeleurs de métal), mouleurs-noy'),
(1, '637b', 'Ouvriers d''art', 'Ouvriers d''art'),
(1, '637c', 'Ouvriers et techniciens des spectacles vivants et audiovisuels', 'Ouvriers et techniciens des spectacles vivants et '),
(1, '637d', 'Ouvriers qualifiés divers de type artisanal', 'Ouvriers qualifiés divers de type artisanal'),
(1, '641a', 'Conducteurs routiers et grands routiers', 'Conducteurs routiers et grands routiers'),
(1, '641b', 'Conducteurs de véhicule routier de transport en commun', 'Conducteurs de véhicule routier de transport en c'),
(1, '642a', 'Conducteurs de taxi', 'Conducteurs de taxi'),
(1, '642b', 'Conducteurs de voiture particulière', 'Conducteurs de voiture particulière'),
(1, '643a', 'Conducteurs livreurs, coursiers', 'Conducteurs livreurs, coursiers'),
(1, '644a', 'Conducteurs de véhicule de ramassage des ordures ménagères', 'Conducteurs de véhicule de ramassage des ordures '),
(1, '651a', 'Conducteurs d''engin lourd de levage', 'Conducteurs d''engin lourd de levage'),
(1, '651b', 'Conducteurs d''engin lourd de manoeuvre', 'Conducteurs d''engin lourd de manoeuvre'),
(1, '652a', 'Ouvriers qualifiés de la manutention, conducteurs de chariots élévateurs, caristes', 'Ouvriers qualifiés de la manutention, conducteurs'),
(1, '652b', 'Dockers', 'Dockers'),
(1, '653a', 'Magasiniers qualifiés', 'Magasiniers qualifiés'),
(1, '654b', 'Conducteurs qualifiés d''engins de transport guidés (sauf remontées mécaniques)', 'Conducteurs qualifiés d''engins de transport guid?'),
(1, '654c', 'Conducteurs qualifiés de systèmes de remontées mécaniques', 'Conducteurs qualifiés de systèmes de remontées '),
(1, '655a', 'Autres agents et ouvriers qualifiés (sédentaires) des services d''exploitation des transports', 'Autres agents et ouvriers qualifiés (sédentaires'),
(1, '656b', 'Matelots de la marine marchande', 'Matelots de la marine marchande'),
(1, '656c', 'Capitaines et matelots timoniers de la navigation fluviale', 'Capitaines et matelots timoniers de la navigation '),
(1, '671a', 'Ouvriers non qualifiés des travaux publics de l''Etat et des collectivités locales', 'Ouvriers non qualifiés des travaux publics de l''E'),
(1, '671c', 'Ouvriers non qualifiés des travaux publics et du travail du béton', 'Ouvriers non qualifiés des travaux publics et du '),
(1, '671d', 'Aides-mineurs, ouvriers non qualifiés de l''extraction', 'Aides-mineurs, ouvriers non qualifiés de l''extrac'),
(1, '672a', 'Ouvriers non qualifiés de l''électricité et de l''électronique', 'Ouvriers non qualifiés de l''électricité et de l'),
(1, '673a', 'Ouvriers de production non qualifiés travaillant par enlèvement de métal', 'Ouvriers de production non qualifiés travaillant '),
(1, '673b', 'Ouvriers de production non qualifiés travaillant par formage de métal', 'Ouvriers de production non qualifiés travaillant '),
(1, '673c', 'Ouvriers non qualifiés de montage, contrôle en mécanique et travail des métaux', 'Ouvriers non qualifiés de montage, contrôle en m'),
(1, '674a', 'Ouvriers de production non qualifiés : chimie, pharmacie, plasturgie', 'Ouvriers de production non qualifiés : chimie, ph'),
(1, '674b', 'Ouvriers de production non qualifiés de la transformation des viandes', 'Ouvriers de production non qualifiés de la transf'),
(1, '674c', 'Autres ouvriers de production non qualifiés : industrie agroalimentaire', 'Autres ouvriers de production non qualifiés : ind'),
(1, '674d', 'Ouvriers de production non qualifiés : métallurgie, production verrière, céramique, matériaux de construction', 'Ouvriers de production non qualifiés : métallurg'),
(1, '674e', 'Ouvriers de production non qualifiés : industrie lourde du bois, fabrication des papiers et cartons', 'Ouvriers de production non qualifiés : industrie '),
(1, '675a', 'Ouvriers de production non qualifiés du textile et de la confection, de la tannerie-mégisserie et du travail du cuir', 'Ouvriers de production non qualifiés du textile e'),
(1, '675b', 'Ouvriers de production non qualifiés du travail du bois et de l''ameublement', 'Ouvriers de production non qualifiés du travail d'),
(1, '675c', 'Ouvriers de production non qualifiés de l''imprimerie, presse, édition', 'Ouvriers de production non qualifiés de l''imprime'),
(1, '676a', 'Manutentionnaires non qualifiés', 'Manutentionnaires non qualifiés'),
(1, '676b', 'Déménageurs (hors chauffeurs-déménageurs), non qualifiés', 'Déménageurs (hors chauffeurs-déménageurs), non'),
(1, '676c', 'Ouvriers du tri, de l''emballage, de l''expédition, non qualifiés', 'Ouvriers du tri, de l''emballage, de l''expédition,'),
(1, '676d', 'Agents non qualifiés des services d''exploitation des transports', 'Agents non qualifiés des services d''exploitation '),
(1, '676e', 'Ouvriers non qualifiés divers de type industriel', 'Ouvriers non qualifiés divers de type industriel'),
(1, '681a', 'Ouvriers non qualifiés du gros oeuvre du bâtiment', 'Ouvriers non qualifiés du gros oeuvre du bâtimen'),
(1, '681b', 'Ouvriers non qualifiés du second oeuvre du bâtiment', 'Ouvriers non qualifiés du second oeuvre du bâtim'),
(1, '682a', 'Métalliers, serruriers, réparateurs en mécanique non qualifiés', 'Métalliers, serruriers, réparateurs en mécaniqu'),
(1, '683a', 'Apprentis boulangers, bouchers, charcutiers', 'Apprentis boulangers, bouchers, charcutiers'),
(1, '684a', 'Nettoyeurs', 'Nettoyeurs'),
(1, '684b', 'Ouvriers non qualifiés de l''assainissement et du traitement des déchets', 'Ouvriers non qualifiés de l''assainissement et du '),
(1, '685a', 'Ouvriers non qualifiés divers de type artisanal', 'Ouvriers non qualifiés divers de type artisanal'),
(1, '691a', 'Conducteurs d''engin agricole ou forestier', 'Conducteurs d''engin agricole ou forestier'),
(1, '691b', 'Ouvriers de l''élevage', 'Ouvriers de l''élevage'),
(1, '691c', 'Ouvriers du maraîchage ou de l''horticulture', 'Ouvriers du maraîchage ou de l''horticulture'),
(1, '691d', 'Ouvriers de la viticulture ou de l''arboriculture fruitière', 'Ouvriers de la viticulture ou de l''arboriculture f'),
(1, '691e', 'Ouvriers agricoles sans spécialisation particulière', 'Ouvriers agricoles sans spécialisation particuli?'),
(1, '691f', 'Ouvriers de l''exploitation forestière ou de la sylviculture', 'Ouvriers de l''exploitation forestière ou de la sy'),
(1, '692a', 'Marins-pêcheurs et ouvriers de l''aquaculture', 'Marins-pêcheurs et ouvriers de l''aquaculture')
;
-- 3/3 : Màj de la table iCTI
UPDATE rh.t_categories_socio_professionnelle
SET code = w_dbsetup.code
FROM w_dbsetup
WHERE 1=1
AND t_categories_socio_professionnelle.oid = w_dbsetup.oid
AND w_dbsetup.oid = 0
;
UPDATE rh.t_categories_socio_professionnelle
SET
texte = w_dbsetup.texte,
texte_court = w_dbsetup.texte_court
FROM w_dbsetup
WHERE t_categories_socio_professionnelle.code = w_dbsetup.code
;
INSERT INTO rh.t_categories_socio_professionnelle(oid, code, texte, texte_court, code_original)
SELECT oid, code, texte, texte_court, code
FROM w_dbsetup
WHERE 1=1
AND oid = 0
AND oid NOT IN (SELECT oid FROM rh.t_categories_socio_professionnelle)
;
INSERT INTO rh.t_categories_socio_professionnelle(code, texte, texte_court, code_original)
SELECT code, texte, texte_court, code
FROM w_dbsetup
WHERE 1=1
AND oid != 0
AND code NOT IN (SELECT code FROM rh.t_categories_socio_professionnelle)
;
SELECT rh.cti_update_schema_classes('CSC')
;

+ 62
- 0
db/data/dbdata_rh_t_chart.SQL View File

@ -0,0 +1,62 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_chart.type,
t_chart.category,
t_chart.name,
t_chart.default_time_calc,
t_chart.label_view_code,
t_chart.code,
array_agg(DISTINCT t_indicateur_serie.code) as serie_code
FROM rh.t_chart
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.oid] <@ t_chart.serie_id
GROUP BY 1,2,3,4,5,6
ORDER BY 1 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
type,
category,
name,
default_time_calc,
label_view_code,
code,
serie_code
)
VALUES
('card', 'date', 'Carte effectifs', 'val', 0, 'CTI_STATCAR', '{"CTI_FEMMES", "CTI_HOMMES"}'),
('donut', 'CTI_TYPECONTRAT#LS#CTI_TCNT', 'Types de contrats', 'val', 0, 'CTI_TYPECNT', '{"CTI_FEMMES", "CTI_HOMMES"}'),
('spread', 'CTI_AGE#LS#CTI_AGE', 'Effectifs par tranches age', 'val', 0, 'CTI_EFFAGE', '{"CTI_FEMMES", "CTI_HOMMES"}'),
('spread', 'CTI_AGE#LS#CTI_AGE', 'Masse salariale par tranche d''age', 'val', 0, 'CTI_MSAGE', '{"CTI_MSF", "CTI_MSH"}'),
('spread', 'CTI_ANCIENNETE#LS#CTI_ANC', 'Effectifs par tranches anciente', 'val', 0, 'CTI_EFFANC', '{"CTI_FEMMES", "CTI_HOMMES"}'),
('spread', 'CTI_STATUT#LS#CTI_STATUT', 'Effectifs par statut', 'val', 0, 'CTI_EFFSTAT', '{"CTI_FEMMES", "CTI_HOMMES"}'),
('stacked', 'CTI_CSP#DT#', 'Masse salariale par CSP', 'val', 1, 'CTI_MSCSP', '{"CTI_MSF", "CTI_MSH"}'),
('stacked', 'date', 'Effectifs par genre', 'val', 0, 'CTI_EFFGEN', '{"CTI_FEMMES", "CTI_HOMMES"}'),
('stacked', 'date', 'Heures supplementaires', 'val', 0, 'CTI_HSUPP', '{"CTI_HSUPF", "CTI_HSUPH"}'),
('stackedPercent', 'date', 'Repartition par genre', 'val', 0, 'CTI_REPGEN', '{"CTI_FEMMES", "CTI_HOMMES"}'),
('table', 'date', 'Entrees sorties carte', 'val', 0, 'CTI_ENTSORCAR', '{"CTI_DEPSALF", "CTI_DEPSALH", "CTI_EFFDF", "CTI_EFFDH", "CTI_ENTSORF", "CTI_ENTSORH", "CTI_NVSALF", "CTI_NVSALH", "CTI_TOF", "CTI_TOH"}'),
('table2d', 'CTI_STATUT#LS#CTI_STATUT', 'Tableau statuts', 'val', 0, 'CTI_STAT', '{"CTI_FEMMES", "CTI_HOMMES", "CTI_TOTSAL"}'),
('table2dTime', 'CTI_STATUT#LS#CTI_STATUT', 'Statuts temps', 'cum', 0, 'CTI_STATTIME', '{"CTI_TAUXSTAT", "CTI_TOTSAL", "CTI_TOTSALF"}'),
('treemap', 'CTI_CSP#DT#', 'Masse salariale par CSP (MAP)', 'val', 1, 'CTI_MSCSPMAP', '{"CTI_MS"}')
;
-- 3/3 : Màj de la table iCTI
TRUNCATE rh.t_chart;
INSERT INTO rh.t_chart(type, serie_id, category, name, default_time_calc, label_view_code, code)
SELECT
type,
array_agg(DISTINCT t_indicateur_serie.oid),
w_dbsetup.category,
w_dbsetup.name,
w_dbsetup.default_time_calc,
w_dbsetup.label_view_code,
w_dbsetup.code
FROM w_dbsetup
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.code] <@ w_dbsetup.serie_code
GROUP BY 1,3,4,5,6,7
;

+ 132
- 0
db/data/dbdata_rh_t_classes.SQL View File

@ -0,0 +1,132 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_listes_tables.code AS table_code,
t_classes.code AS classe_code,
t_classes.texte,
t_classes.is_cti,
t_classes.contenu_by_code,
t_classes.contenu_non_replicable_ailleurs
FROM rh.t_classes
JOIN rh.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 is_cti = '1'
ORDER BY 1,2 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
table_code,
classe_code,
texte,
is_cti,
contenu_by_code,
contenu_non_replicable_ailleurs
)
VALUES
('AGE', 'CTI_AGE', 'Tranche d''ages Bilan Social', '1', '0', '0'),
('ANC', 'CTI_ANC', 'Tranche d''ancienneté Bilan Social', '1', '0', '0'),
('MOA', 'CTI_ARRET', 'Arrêt de travail Bilan Social', '1', '0', '0'),
('MTF', 'CTI_MFIN', 'Motif de fin Bilan Social', '1', '0', '0'),
('NAT', 'CTI_NAT', 'Nationalité Bilan Social', '1', '0', '0'),
('PSE', 'CTI_CONTRIBUTION_BLOC_OPERATOIRE', 'Services du bloc opératoire pour le calcul de la contribution', '1', '0', '0'),
('QUA', 'CTI_QUAL', 'Qualifications personnels', '1', '0', '0'),
('QUA', 'CTI_SAE_CATEGORIES_PERSONNEL', 'Catégories de personnel SAE', '1', '1', '0'),
('QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL', 'Spécialités détaillées du personnel SAE', '1', '0', '0'),
('QUA', 'CTI_SAE_SPECIALITES_PERSONNEL', 'Spécialités du personnel SAE', '1', '1', '0'),
('QUA', 'CTI_SAE_TYPES_PERSONNEL', 'Types du personnel SAE', '1', '1', '0'),
('RUP', 'ALM_HRS', 'ALM Détail des heures contrat, sup, abs, maintien', '1', '0', '0'),
('RUP', 'CTI_RUB', 'Rubrique Bilan Social', '1', '0', '0'),
('SER', 'CTI_SAE_GROUPES_DISCIPLINES', 'Groupes de disciplines SAE', '1', '0', '0'),
('STA', 'CTI_STATUT', 'Statuts CTI', '1', '0', '0'),
('TCN', 'CTI_TCNT', 'Type de contrat Bilan Social', '1', '0', '0'),
('TTT', 'CTI_TTT', 'Type de temps de travail Bilan Social', '1', '0', '0')
;
-- 3/3 : Màj de la table iCTI
ALTER TABLE w_dbsetup ADD COLUMN IF NOT EXISTS table_id bigint DEFAULT 0
;
UPDATE w_dbsetup
SET table_id = t_listes_tables.oid
FROM rh.t_listes_tables
WHERE t_listes_tables.code = table_code
;
ALTER TABLE w_dbsetup ADD COLUMN IF NOT EXISTS sequence integer DEFAULT 0
;
UPDATE w_dbsetup
SET sequence = t_classes.sequence
FROM rh.t_classes
WHERE t_classes.code = w_dbsetup.classe_code AND
t_classes.table_id = w_dbsetup.table_id
;
UPDATE w_dbsetup
SET sequence = subview.sequence
FROM
(
SELECT
w_dbsetup.classe_code,
w_dbsetup.table_id,
subview.max_sequence_by_table + row_number() OVER (PARTITION BY w_dbsetup.table_id ORDER BY classe_code) AS sequence
FROM w_dbsetup
JOIN (
SELECT
t_listes_tables.oid AS table_id,
MAX(COALESCE(t_classes.sequence, 0)) AS max_sequence_by_table
FROM rh.t_listes_tables
LEFT JOIN rh.t_classes ON t_classes.table_id = t_listes_tables.oid
GROUP BY 1
) AS subview ON w_dbsetup.table_id = subview.table_id
WHERE w_dbsetup.sequence = 0
) AS subview
WHERE w_dbsetup.table_id = subview.table_id AND
w_dbsetup.classe_code = subview.classe_code AND
w_dbsetup.sequence = 0
;
UPDATE rh.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.classe_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 rh.t_classes(
code,
texte,
table_id,
is_cti,
sequence,
contenu_by_code,
contenu_non_replicable_ailleurs
)
SELECT
w_dbsetup.classe_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.table_id::text || '-' || w_dbsetup.sequence::text NOT IN (SELECT table_id::text || '-' || sequence::text FROM rh.t_classes)
AND w_dbsetup.texte NOT LIKE '*SUPPRIME%'
;

+ 280
- 0
db/data/dbdata_rh_t_classes_sections.SQL View File

@ -0,0 +1,280 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_classes_sections.code,
t_classes_sections.texte,
t_classes_sections.condition,
t_classes_sections.exclude_code,
t_classes_sections.include_code,
t_listes_tables.code as table_code,
t_classes.code as classe_code
FROM rh.t_classes_sections
JOIN rh.t_classes ON t_classes.oid = t_classes_sections.classe_id
JOIN rh.t_listes_tables ON t_listes_tables.oid = t_classes.table_id
WHERE t_classes.is_cti = 1
ORDER BY
t_listes_tables.code,
t_classes.code,
t_classes_sections.code
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
code,
texte,
condition,
exclude_code,
include_code,
table_code,
classe_code
)
VALUES
('S1', '- 25 ans', '', '', '', 'AGE', 'CTI_AGE'),
('S2', 'De 25 à 35 ans', '', '', '', 'AGE', 'CTI_AGE'),
('S3', 'De 36 à 45 ans', '', '', '', 'AGE', 'CTI_AGE'),
('S4', 'De 46 à 55 ans', '', '', '', 'AGE', 'CTI_AGE'),
('S5', 'De 56 à 65 ans', '', '', '', 'AGE', 'CTI_AGE'),
('S6', '+ de 65 ans', '', '', '', 'AGE', 'CTI_AGE'),
('S1', '- 10 ans', '', '', '', 'ANC', 'CTI_ANC'),
('S2', 'De 10 à 20 ans', '', '', '', 'ANC', 'CTI_ANC'),
('S3', 'De 21 à 30 ans', '', '', '', 'ANC', 'CTI_ANC'),
('S4', '+ de 30 ans', '', '', '', 'ANC', 'CTI_ANC'),
('ABS', 'Absence (hors divers congés, conflits et service national)', '', '', '', 'MOA', 'CTI_ARRET'),
('ACT', 'Accident du travail, de trajet ou maladie professionnelle', '', '', '', 'MOA', 'CTI_ARRET'),
('AUT', 'Autre', '', '', '', 'MOA', 'CTI_ARRET'),
('COA', 'Congé autorisé (événements familiaux, congés spéciaux pour les femmes...)', '', '', '', 'MOA', 'CTI_ARRET'),
('MAL', 'Maladie', '', '', '', 'MOA', 'CTI_ARRET'),
('MAT', 'Maternité', '', '', '', 'MOA', 'CTI_ARRET'),
('AUT', 'Autre', '', '', '', 'MTF', 'CTI_MFIN'),
('DEC', 'Décés', '', '', '', 'MTF', 'CTI_MFIN'),
('DEM', 'Démission', '', '', '', 'MTF', 'CTI_MFIN'),
('DPE', 'Départ en cours de période d''essai', '', '', '', 'MTF', 'CTI_MFIN'),
('FCD', 'Fin de CDD', '', '', '', 'MTF', 'CTI_MFIN'),
('LAC', 'Licenciement pour autres causes', '', '', '', 'MTF', 'CTI_MFIN'),
('LRP', 'Licenciement économique, dont départ en retraite et préretraite', '', '', '', 'MTF', 'CTI_MFIN'),
('MUT', 'Mutation inter entreprise', '', '', '', 'MTF', 'CTI_MFIN'),
('RPR', 'Départ volontaire en retraite et préretraite', '', '', '', 'MTF', 'CTI_MFIN'),
('ET', 'Etrangère', '', '', '', 'NAT', 'CTI_NAT'),
('FR', 'Française', '', '', '', 'NAT', 'CTI_NAT'),
('UE', 'Union Européenne', '', '', '', 'NAT', 'CTI_NAT'),
('S1', 'Bloc opératoire', '', '', '', 'PSE', 'CTI_CONTRIBUTION_BLOC_OPERATOIRE'),
('PA', 'Personnel administratif et autre', '', '', '', 'QUA', 'CTI_QUAL'),
('PM', 'Personnel médical', '', '', '', 'QUA', 'CTI_QUAL'),
('PS', 'Personnel soignant', '', '', '', 'QUA', 'CTI_QUAL'),
('M9000', 'Personnels médicaux', '', '', '[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:M*]', 'QUA', 'CTI_SAE_CATEGORIES_PERSONNEL'),
('N1000', 'Personnels de direction', '', '', '[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N1*]', 'QUA', 'CTI_SAE_CATEGORIES_PERSONNEL'),
('N2000', 'Personnels des services de soins', '', '', '[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N2*]', 'QUA', 'CTI_SAE_CATEGORIES_PERSONNEL'),
('N3000', 'Personnels éducatifs et sociaux', '', '', '[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N3*]', 'QUA', 'CTI_SAE_CATEGORIES_PERSONNEL'),
('N4000', 'Personnels médico-techniques', '', '', '[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N4*]', 'QUA', 'CTI_SAE_CATEGORIES_PERSONNEL'),
('N5000', 'Personnels techniques et ouvriers', '', '', '[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N5*]', 'QUA', 'CTI_SAE_CATEGORIES_PERSONNEL'),
('X9000', 'Hors champ SAE', '', '', '[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:X*]', 'QUA', 'CTI_SAE_CATEGORIES_PERSONNEL'),
('M1010', 'Médecine générale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1020', 'Anatomie et cytologie pathologiques', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1030', 'Anesthésie-réanimation', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1031', 'Réanimation médicale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1040', 'Cardiologie et maladies cardiovasculaires', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1050', 'Dermatologie - Vénérologie - Allergologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1070', 'Endocrinologie et maladies métaboliques', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1090', 'Gastro entérologie et hépatologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1100', 'Médecine interne etimmunologie clinique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1110', 'Néphrologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1120', 'Neurologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1130', 'Oncologie médicale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1140', 'Pédiatrie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1150', 'Pneumologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1160', 'Radiologie et imagerie médicale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1170', 'Oncologie radiothérapique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1180', 'Médecine physique et de réadaptation', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1190', 'Rhumatologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1200', 'Autres spécialités médicales', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1210', 'Médecine nucléaire', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1310', 'Génétique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1320', 'Gériatrie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1330', 'Hématologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1340', 'Médecine d''urgence', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2010', 'Chirurgie générale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2020', 'Chirurgie maxillo-faciale - Stomatologie et chirurgie orale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2030', 'Chirurgie orthopédique et traumatologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2040', 'Chirurgie plastique reconstructrice et esthétique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2050', 'Gynécologie - Obstétrique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2060', 'Neuro-chirurgie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2070', 'Ophtalmologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2080', 'Oto-rhino-laryngologie et cervico-faciale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2100', 'Chirurgie Urologique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2110', 'Autres spécialités chirurgicale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2120', 'Chirurgie viscérale et digestive', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2130', 'Chirurgie vasculaire', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2140', 'Chirurgie thoracique et cardiaque', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M2150', 'Chirurgie infantile', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3011', 'Médecins spécialisés en biologie médicale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3012', 'Pharmaciens spécialisés en biologie médicale', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3020', 'Psychiatrie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3030', 'Odontologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3040', 'Santé publique (y compris DIM)', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3050', 'Pharmacien (hors biologie médicale)', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3060', 'Médecins du travail', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M3070', 'Autres', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N1110', 'Personnel de direction', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N1210', 'Secrétaires médicaux et assistants médico-administratif', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N1220', 'Autres personnels administratifs', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N1310', 'Directeurs des soins (écoles paramédicales et soins non infirmiers)', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N1410', 'Directeur de soins infirmiers', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2120', 'Surveillants et autres personnels d''encadrement infirmiers', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2130', 'Surveillants des personnels de rééducation et autres personnels d''encadrement non infirmier', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2210', 'Infirmiers DE sans spécialisation (hors secteur psy)', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2220', 'Infirmiers DE en secteur psychiatrique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2310', 'Infirmiers DE anesthésistes', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2320', 'Infirmiers DE bloc opératoire', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2340', 'Puericultrices DE', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2350', 'Infirmiers en pratique avancée (IPA)', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2410', 'Masseurs kinésithérapeuthes', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2420', 'Pédicures - Podologues', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2430', 'Orthophonistes', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2440', 'Orthoptistes', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2450', 'Diététiciens', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2460', 'Ergothérapeuthes', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2470', 'Psychomotricien', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2480', 'Autres emplois des services de rééducation', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2510', 'Aides soignants', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2520', 'Aides médico-psychologique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2530', 'Auxilliaires de puériculture', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2610', 'Agents de service hospitalier', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2620', 'Autres personnels de service des services de soins', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2630', 'Fammilles d''accueil', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2710', 'Psychologues', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N2810', 'Sages-femmes y compris encadrement et écoles', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N3110', 'Personnels éducatifs', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N3111', 'Educateurs spécialisés', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N3120', 'Assistants de service social', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N3121', 'Cadres socio-éducatifs', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N3130', 'Autres personnels éducatifs et sociaux', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4110', 'Personnels des services de laboratoire', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N411B', 'Techniciens de laboratoire', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N411C', 'Autres personnels des services de laboratoire', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4120', 'Préparateurs en pharmacie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N412A', 'Autres personnels des services de pharmacie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4130', 'Manipulateurs d''électroradiologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4140', 'Autres personnels des services de radiologie', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4150', 'Autres personnels médico-technique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4160', 'Surveillants, cadres et autres personnels d''encadrement médico-technique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4170', 'Dosimétristes', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4180', 'Radiophysiciens - Physiciens médicaux', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N4190', 'Conseillers en génétique', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N5110', 'Ingénieurs', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N511A', 'Personnels des services techniques hors ingénieurs', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N5120', 'Personnel informatique et organisation hors ingénieur', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('N5130', 'Personnels des services techniques et des services intérieurs', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('X9190', 'Hors champ SAE Autres', '', '', '', 'QUA', 'CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL'),
('M1000', 'Spécialités médicales', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:M1*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('M2000', 'Spécialités chirurgicales', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:M2*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('M3000', 'Autres disciplines médicales', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:M3*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N1100', 'Personnels de direction', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N11*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N1200', 'Autres personnels administratifs', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N12*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N1300', 'Directeur de soins', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N13*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N1400', 'Directeur de soins infirmiers', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N14*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2100', 'Personnels d''encadrement du personnel des services de soins', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N21*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2200', 'Infirmiers DE sans spécialisation', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N22*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2300', 'Infirmiers DE avec spécialisation', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N23*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2400', 'Personnels de rééducation', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N24*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2500', 'Aides-soignants', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N25*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2600', 'Agents de services hospitaliers', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N26*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2700', 'Psychologues', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N27*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N2800', 'Sages-femmes y compris encadrement et écoles', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N28*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N3100', 'Personnels éducatifs et sociaux', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N31*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N4100', 'Personnels médico-techniques', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N41*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('N5100', 'Personnels techniques et ouvriers', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N51*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('X9100', 'Hors champs SAE', '', '', '[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:X*]', 'QUA', 'CTI_SAE_SPECIALITES_PERSONNEL'),
('M9999', 'Personnels médicaux', '', '', '[CLASSE:CTI_SAE_CATEGORIES_PERSONNEL:M*]', 'QUA', 'CTI_SAE_TYPES_PERSONNEL'),
('N9999', 'Personnels non médicaux', '', '', '[CLASSE:CTI_SAE_CATEGORIES_PERSONNEL:N*]', 'QUA', 'CTI_SAE_TYPES_PERSONNEL'),
('X9999', 'Hors champ SAE', '', '', '[CLASSE:CTI_SAE_CATEGORIES_PERSONNEL:X*]', 'QUA', 'CTI_SAE_TYPES_PERSONNEL'),
('01', 'Absence maladie', '', '', '', 'RUP', 'ALM_HRS'),
('02', 'Absence maternité', '', '', '', 'RUP', 'ALM_HRS'),
('03', 'Absence CP', '', '', '', 'RUP', 'ALM_HRS'),
('04', 'Autres absences', '', '', '', 'RUP', 'ALM_HRS'),
('05', 'Heures contractuelles', '', '', '', 'RUP', 'ALM_HRS'),
('06', 'Heures sup. et comp.', '', '', '', 'RUP', 'ALM_HRS'),
('07', 'Absence AT et MP', '', '', '', 'RUP', 'ALM_HRS'),
('08', 'Absences congés parental', '', '', '', 'RUP', 'ALM_HRS'),
('09', 'Maintien Absence maladie', '', '', '', 'RUP', 'ALM_HRS'),
('10', 'Maintien Absence maternité', '', '', '', 'RUP', 'ALM_HRS'),
('11', 'Maintien Absence CP', '', '', '', 'RUP', 'ALM_HRS'),
('12', 'Maintien Autres absences', '', '', '', 'RUP', 'ALM_HRS'),
('13', 'Maintien AT et MP', '', '', '', 'RUP', 'ALM_HRS'),
('14', 'Maintien Absence congés parental', '', '', '', 'RUP', 'ALM_HRS'),
('15', 'Heures payées', '', '', '', 'RUP', 'ALM_HRS'),
('16', 'Absences payées non travaillées SAGE', '', '', '', 'RUP', 'ALM_HRS'),
('BRU', 'Brut', '', '', '', 'RUP', 'CTI_RUB'),
('CDE', 'Cotisations déductibles', '', '', '', 'RUP', 'CTI_RUB'),
('CND', 'Cotisations non déductibles', '', '', '', 'RUP', 'CTI_RUB'),
('EXO', 'Exonérations', '', '', '', 'RUP', 'CTI_RUB'),
('GAI', 'Gains non imposables', '', '', '', 'RUP', 'CTI_RUB'),
('NAT', 'Avantages en nature', '', '', '', 'RUP', 'CTI_RUB'),
('RET', 'Retenues non imposables', '', '', '', 'RUP', 'CTI_RUB'),
('1', 'MCO', '', '', '', 'SER', 'CTI_SAE_GROUPES_DISCIPLINES'),
('2', 'PSY', '', '', '', 'SER', 'CTI_SAE_GROUPES_DISCIPLINES'),
('3', 'HAD', '', '', '', 'SER', 'CTI_SAE_GROUPES_DISCIPLINES'),
('4', 'SSR', '', '', '', 'SER', 'CTI_SAE_GROUPES_DISCIPLINES'),
('S1', 'Ouvrier', '', '', '', 'STA', 'CTI_STATUT'),
('S2', 'Employé', '', '', '', 'STA', 'CTI_STATUT'),
('S3', 'Technicien', '', '', '', 'STA', 'CTI_STATUT'),
('S4', 'Agent de maitrise', '', '', '', 'STA', 'CTI_STATUT'),
('S5', 'Cadre', '', '', '', 'STA', 'CTI_STATUT'),
('CDD', 'Contrats à durée déterminée', '', '', '', 'TCN', 'CTI_TCNT'),
('CDI', 'Contrats à durée indéterminée', '', '', '', 'TCN', 'CTI_TCNT'),
('TC', 'Temps complet', '', '', '', 'TTT', 'CTI_TTT'),
('TP', 'Temps partiel', '', '', '', 'TTT', 'CTI_TTT')
;
-- 3/3 : Màj de la table iCTI
-- Màj des sections de classe.
UPDATE rh.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,
rh.t_classes,
rh.t_listes_tables
WHERE 1=1
AND t_classes.oid = t_classes_sections.classe_id
AND t_listes_tables.oid = t_classes.table_id
AND w_dbsetup.code = t_classes_sections.code
AND w_dbsetup.classe_code = t_classes.code
AND w_dbsetup.table_code = t_listes_tables.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
)
;
-- Alimentation des sections de classe.
INSERT INTO rh.t_classes_sections(code, texte, condition, exclude_code, include_code, classe_id)
SELECT
w_dbsetup.code,
w_dbsetup.texte,
w_dbsetup.condition,
w_dbsetup.exclude_code,
w_dbsetup.include_code,
t_classes.oid
FROM w_dbsetup
JOIN rh.t_listes_tables ON t_listes_tables.code = w_dbsetup.table_code
JOIN rh.t_classes ON 1=1
AND t_classes.table_id = t_listes_tables.oid
AND t_classes.code = w_dbsetup.classe_code
WHERE 1=1
AND w_dbsetup.code||'@'||w_dbsetup.classe_code||'@'||w_dbsetup.table_code
NOT IN (
SELECT t_classes_sections.code||'@'||t_classes.code||'@'||t_listes_tables.code
FROM rh.t_classes_sections
JOIN rh.t_classes ON t_classes.oid = t_classes_sections.classe_id
JOIN rh.t_listes_tables ON t_listes_tables.oid = t_classes.table_id
)
;

+ 170
- 0
db/data/dbdata_rh_t_classes_sections_elements_ages.SQL View File

@ -0,0 +1,170 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_classes_sections.code AS section_code,
t_ages.code as to_code,
t_listes_tables.code as table_code,
t_classes.sequence as classe_sequence
FROM
rh.t_classes_sections_elements,
rh.t_classes_sections,
rh.t_classes,
rh.t_listes_tables,
rh.t_ages
WHERE
t_classes_sections_elements.section_id = t_classes_sections.oid
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes.is_cti = 1
AND table_id = t_listes_tables.oid
AND t_listes_tables.code = 'AGE'
AND t_classes_sections_elements.to_id = t_ages.oid
ORDER BY
t_classes.sequence,
t_classes_sections.code,
t_ages.code
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
section_code,
to_code,
table_code,
classe_sequence
)
VALUES
('S1', '001', 'AGE', 9),
('S1', '002', 'AGE', 9),
('S1', '003', 'AGE', 9),
('S1', '004', 'AGE', 9),
('S1', '005', 'AGE', 9),
('S1', '006', 'AGE', 9),
('S1', '007', 'AGE', 9),
('S1', '008', 'AGE', 9),
('S1', '009', 'AGE', 9),
('S1', '010', 'AGE', 9),
('S1', '011', 'AGE', 9),
('S1', '012', 'AGE', 9),
('S1', '013', 'AGE', 9),
('S1', '014', 'AGE', 9),
('S1', '015', 'AGE', 9),
('S1', '016', 'AGE', 9),
('S1', '017', 'AGE', 9),
('S1', '018', 'AGE', 9),
('S1', '019', 'AGE', 9),
('S1', '020', 'AGE', 9),
('S1', '021', 'AGE', 9),
('S1', '022', 'AGE', 9),
('S1', '023', 'AGE', 9),
('S1', '024', 'AGE', 9),
('S2', '025', 'AGE', 9),
('S2', '026', 'AGE', 9),
('S2', '027', 'AGE', 9),
('S2', '028', 'AGE', 9),
('S2', '029', 'AGE', 9),
('S2', '030', 'AGE', 9),
('S2', '031', 'AGE', 9),
('S2', '032', 'AGE', 9),
('S2', '033', 'AGE', 9),
('S2', '034', 'AGE', 9),
('S2', '035', 'AGE', 9),
('S3', '036', 'AGE', 9),
('S3', '037', 'AGE', 9),
('S3', '038', 'AGE', 9),
('S3', '039', 'AGE', 9),
('S3', '040', 'AGE', 9),
('S3', '041', 'AGE', 9),
('S3', '042', 'AGE', 9),
('S3', '043', 'AGE', 9),
('S3', '044', 'AGE', 9),
('S3', '045', 'AGE', 9),
('S4', '046', 'AGE', 9),
('S4', '047', 'AGE', 9),
('S4', '048', 'AGE', 9),
('S4', '049', 'AGE', 9),
('S4', '050', 'AGE', 9),
('S4', '051', 'AGE', 9),
('S4', '052', 'AGE', 9),
('S4', '053', 'AGE', 9),
('S4', '054', 'AGE', 9),
('S4', '055', 'AGE', 9),
('S5', '056', 'AGE', 9),
('S5', '057', 'AGE', 9),
('S5', '058', 'AGE', 9),
('S5', '059', 'AGE', 9),
('S5', '060', 'AGE', 9),
('S5', '061', 'AGE', 9),
('S5', '062', 'AGE', 9),
('S5', '063', 'AGE', 9),
('S5', '064', 'AGE', 9),
('S5', '065', 'AGE', 9),
('S6', '066', 'AGE', 9),
('S6', '067', 'AGE', 9),
('S6', '068', 'AGE', 9),
('S6', '069', 'AGE', 9),
('S6', '070', 'AGE', 9),
('S6', '071', 'AGE', 9),
('S6', '072', 'AGE', 9),
('S6', '073', 'AGE', 9),
('S6', '074', 'AGE', 9),
('S6', '075', 'AGE', 9),
('S6', '076', 'AGE', 9),
('S6', '077', 'AGE', 9),
('S6', '078', 'AGE', 9),
('S6', '079', 'AGE', 9),
('S6', '080', 'AGE', 9),
('S6', '081', 'AGE', 9),
('S6', '082', 'AGE', 9),
('S6', '083', 'AGE', 9),
('S6', '084', 'AGE', 9),
('S6', '085', 'AGE', 9),
('S6', '086', 'AGE', 9),
('S6', '087', 'AGE', 9),
('S6', '088', 'AGE', 9),
('S6', '089', 'AGE', 9),
('S6', '090', 'AGE', 9),
('S6', '091', 'AGE', 9),
('S6', '092', 'AGE', 9),
('S6', '093', 'AGE', 9),
('S6', '094', 'AGE', 9),
('S6', '095', 'AGE', 9),
('S6', '096', 'AGE', 9),
('S6', '097', 'AGE', 9),
('S6', '098', 'AGE', 9),
('S6', '099', 'AGE', 9),
('S6', '100', 'AGE', 9),
('S6', '101', 'AGE', 9),
('S6', '102', 'AGE', 9),
('S6', '103', 'AGE', 9),
('S6', '104', 'AGE', 9),
('S6', '105', 'AGE', 9),
('S6', '106', 'AGE', 9),
('S6', '107', 'AGE', 9),
('S6', '108', 'AGE', 9),
('S6', '109', 'AGE', 9),
('S6', '110', 'AGE', 9)
;
-- 3/3 : Màj de la table iCTI
INSERT INTO rh.t_classes_sections_elements(section_id, to_id)
SELECT
t_classes_sections.oid,
t_ages.oid
FROM w_dbsetup
JOIN rh.t_listes_tables ON t_listes_tables.code = w_dbsetup.table_code
JOIN rh.t_classes ON 1=1
AND t_classes.table_id = t_listes_tables.oid
AND t_classes.sequence = w_dbsetup.classe_sequence
JOIN rh.t_classes_sections ON 1=1
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes_sections.code = w_dbsetup.section_code
JOIN rh.t_ages ON t_ages.code = w_dbsetup.to_code
WHERE t_classes_sections.oid::text || '-' || t_ages.oid::text NOT IN
(
SELECT section_id::text || '-' || to_id::text
FROM rh.t_classes_sections_elements
)
;

+ 111
- 0
db/data/dbdata_rh_t_classes_sections_elements_anciennetes_annee.SQL View File

@ -0,0 +1,111 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_classes_sections.code AS section_code,
t_anciennetes_annee.code as to_code,
t_listes_tables.code as table_code,
t_classes.sequence as classe_sequence
FROM
rh.t_classes_sections_elements,
rh.t_classes_sections,
rh.t_classes,
rh.t_listes_tables,
rh.t_anciennetes_annee
WHERE
t_classes_sections_elements.section_id = t_classes_sections.oid
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes.is_cti = 1
AND table_id = t_listes_tables.oid
AND t_listes_tables.code = 'ANC'
AND t_classes_sections_elements.to_id = t_anciennetes_annee.oid
ORDER BY
t_classes.sequence,
t_classes_sections.code,
t_anciennetes_annee.code
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
section_code,
to_code,
table_code,
classe_sequence
)
VALUES
('S1', '00', 'ANC', 9),
('S1', '01', 'ANC', 9),
('S1', '02', 'ANC', 9),
('S1', '03', 'ANC', 9),
('S1', '04', 'ANC', 9),
('S1', '05', 'ANC', 9),
('S1', '06', 'ANC', 9),
('S1', '07', 'ANC', 9),
('S1', '08', 'ANC', 9),
('S1', '09', 'ANC', 9),
('S2', '10', 'ANC', 9),
('S2', '11', 'ANC', 9),
('S2', '12', 'ANC', 9),
('S2', '13', 'ANC', 9),
('S2', '14', 'ANC', 9),
('S2', '15', 'ANC', 9),
('S2', '16', 'ANC', 9),
('S2', '17', 'ANC', 9),
('S2', '18', 'ANC', 9),
('S2', '19', 'ANC', 9),
('S2', '20', 'ANC', 9),
('S3', '21', 'ANC', 9),
('S3', '22', 'ANC', 9),
('S3', '23', 'ANC', 9),
('S3', '24', 'ANC', 9),
('S3', '25', 'ANC', 9),
('S3', '26', 'ANC', 9),
('S3', '27', 'ANC', 9),
('S3', '28', 'ANC', 9),
('S3', '29', 'ANC', 9),
('S3', '30', 'ANC', 9),
('S4', '31', 'ANC', 9),
('S4', '32', 'ANC', 9),
('S4', '33', 'ANC', 9),
('S4', '34', 'ANC', 9),
('S4', '35', 'ANC', 9),
('S4', '36', 'ANC', 9),
('S4', '37', 'ANC', 9),
('S4', '38', 'ANC', 9),
('S4', '39', 'ANC', 9),
('S4', '40', 'ANC', 9),
('S4', '41', 'ANC', 9),
('S4', '42', 'ANC', 9),
('S4', '43', 'ANC', 9),
('S4', '44', 'ANC', 9),
('S4', '45', 'ANC', 9),
('S4', '46', 'ANC', 9),
('S4', '47', 'ANC', 9),
('S4', '48', 'ANC', 9),
('S4', '49', 'ANC', 9),
('S4', '50', 'ANC', 9)
;
-- 3/3 : Màj de la table iCTI
INSERT INTO rh.t_classes_sections_elements(section_id, to_id)
SELECT
t_classes_sections.oid,
t_anciennetes_annee.oid
FROM w_dbsetup
JOIN rh.t_listes_tables ON t_listes_tables.code = w_dbsetup.table_code
JOIN rh.t_classes ON 1=1
AND t_classes.table_id = t_listes_tables.oid
AND t_classes.sequence = w_dbsetup.classe_sequence
JOIN rh.t_classes_sections ON 1=1
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes_sections.code = w_dbsetup.section_code
JOIN rh.t_anciennetes_annee ON t_anciennetes_annee.code = w_dbsetup.to_code
WHERE t_classes_sections.oid::text || '-' || t_anciennetes_annee.oid::text NOT IN
(
SELECT section_id::text || '-' || to_id::text
FROM rh.t_classes_sections_elements
)
;

+ 29
- 0
db/data/dbdata_rh_t_dashboard.SQL View File

@ -0,0 +1,29 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
code, label
FROM rh.t_dashboard
ORDER BY code LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
code,
label
)
VALUES
('CTI_EGAPRO', 'Cockpit RH')
;
-- 3/3 : Màj de la table iCTI
TRUNCATE rh.t_dashboard;
INSERT INTO rh.t_dashboard(code, label)
SELECT
w_dbsetup.code,
w_dbsetup.label
FROM w_dbsetup
;

+ 40
- 0
db/data/dbdata_rh_t_dashboard_filter.SQL View File

@ -0,0 +1,40 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_dashboard_filter.oid,
t_dashboard.code as dashboard_code,
t_indicateur_condition.external_code2
FROM rh.t_dashboard_filter
LEFT JOIN rh.t_dashboard ON t_dashboard.oid = dashboard_id
LEFT JOIN rh.t_indicateur_condition ON t_indicateur_condition.oid = condition_id
ORDER BY 2, 3 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
dashboard_code,
external_code2
)
VALUES
(1, 'CTI_EGAPRO', 'CTI_AGE#LS#AGE:CTI_AGE:S1'),
(1, 'CTI_EGAPRO', 'CTI_AGE#LS#AGE:CTI_AGE:S3'),
(1, 'CTI_EGAPRO', 'CTI_AGE#LS#AGE:CTI_AGE:S6'),
(1, 'CTI_EGAPRO', 'CTI_SEXE#DT#1'),
(1, 'CTI_EGAPRO', 'CTI_SEXE#DT#2')
;
-- 3/3 : Màj de la table iCTI
TRUNCATE rh.t_dashboard_filter;
INSERT INTO rh.t_dashboard_filter(dashboard_id,condition_id)
SELECT
t_dashboard.oid,
t_indicateur_condition.oid
FROM w_dbsetup
LEFT JOIN rh.t_dashboard ON t_dashboard.code = w_dbsetup.dashboard_code
LEFT JOIN rh.t_indicateur_condition ON t_indicateur_condition.external_code2 = w_dbsetup.external_code2
;

+ 38
- 0
db/data/dbdata_rh_t_dashboard_onglet.SQL View File

@ -0,0 +1,38 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_dashboard_onglet.oid,
t_dashboard.code as dashboard_code,
name,
index
FROM rh.t_dashboard_onglet
LEFT JOIN rh.t_dashboard ON t_dashboard.oid = dashboard_id
ORDER BY 2, 4 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
dashboard_code,
name,
index
)
VALUES
(1, 'CTI_EGAPRO', 'Effectif', 0),
(1, 'CTI_EGAPRO', 'Masse Salariale', 1)
;
-- 3/3 : Màj de la table iCTI
TRUNCATE rh.t_dashboard_onglet;
INSERT INTO rh.t_dashboard_onglet(dashboard_id, name, index)
SELECT
t_dashboard.oid,
w_dbsetup.name,
w_dbsetup.index
FROM w_dbsetup
LEFT JOIN rh.t_dashboard ON t_dashboard.code = dashboard_code
;

+ 49
- 0
db/data/dbdata_rh_t_dashboard_widget.SQL View File

@ -0,0 +1,49 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_dashboard_widget.oid,
t_chart.code as chart_code,
t_dashboard.code as dashboard_code,
t_dashboard_widget.deprecated
FROM rh.t_dashboard_widget
LEFT JOIN rh.t_chart ON t_chart.oid = chart_id
LEFT JOIN rh.t_dashboard ON t_dashboard.oid = dashboard_id
ORDER BY 1 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
chart_code,
dashboard_code,
deprecated
)
VALUES
(1, 'CTI_STATTIME', 'CTI_EGAPRO', 't'),
(1, 'CTI_TYPECNT', 'CTI_EGAPRO', 'f'),
(1, 'CTI_STAT', 'CTI_EGAPRO', 'f'),
(1, 'CTI_EFFANC', 'CTI_EGAPRO', 'f'),
(1, 'CTI_ENTSORCAR', 'CTI_EGAPRO', 'f'),
(1, 'CTI_MSCSPMAP', 'CTI_EGAPRO', 'f'),
(1, 'CTI_MSAGE', 'CTI_EGAPRO', 'f'),
(1, 'CTI_EFFGEN', 'CTI_EGAPRO', 'f'),
(1, 'CTI_EFFAGE', 'CTI_EGAPRO', 'f'),
(1, 'CTI_EFFSTAT', 'CTI_EGAPRO', 'f'),
(1, 'CTI_MSCSP', 'CTI_EGAPRO', 'f')
;
-- 3/3 : Màj de la table iCTI
TRUNCATE rh.t_dashboard_widget;
INSERT INTO rh.t_dashboard_widget(dashboard_id, chart_id, deprecated)
SELECT
t_dashboard.oid,
t_chart.oid,
w_dbsetup.deprecated
FROM w_dbsetup
LEFT JOIN rh.t_chart ON t_chart.code = chart_code
LEFT JOIN rh.t_dashboard ON t_dashboard.code = dashboard_code
;

+ 163
- 0
db/data/dbdata_rh_t_expert_controle.SQL View File

@ -0,0 +1,163 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
oid,
code,
texte,
description,
is_cti,
gravite_id
FROM rh.t_expert_controle
WHERE is_cti = '1'
ORDER BY code LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
code,
texte,
description,
is_cti,
gravite_id
)
VALUES
(0, '', '', '', '1', 1),
(1, 'CTI_NIV1_C000', 'Présence de C000', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_CAD_EMP_NR', 'Cadre d''emploi non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_CAT_STAT_NR', 'Catégorie statutaire non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_CE_NR', 'Code emploi non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_COD_POST_NR', 'Code postal non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_COM_PAR_NR', 'Commission paritaire non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_CSP_NR', 'Catégorie socio-professionnelle non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_CTRID_NULL', 'Contrat ID null en paie', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_DAT_NAIS_NR', 'Date de naissance non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_DTEDEB_NR', 'Date de début de contrat non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_DTEFIN_NR', 'Date de fin de contrat non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_FIL_NR', 'Filière non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_GRI_NR', 'Grille non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_GROGRI_NR', 'Groupe Grille non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_GRO_COT_NR', 'Groupe de cotisant non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_MOTDEB_NR', 'Motif de début non renseigné', 'Contrats sans motif de début.', '1', '9', 'A1'),
(1, 'CTI_NIV1_MOTFIN_NR', 'Motif de Fin non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_NAT_NR', 'Nationalité non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_QUAL_NR', 'Qualification non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_SEX_NR', 'Sexe non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_SPE_NR', 'Spécialité non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_SRV_NR', 'Service non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_STT_NR', 'Statut non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_TC_NR', 'Type de contrat non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_TTT_NR', 'Type temps travail non renseigné', '', '1', '9', 'A1'),
(1, 'CTI_NIV1_UNI_FONC_NR', 'Unité fonctionnelle non renseignée', '', '1', '9', 'A1'),
(1, 'CTI_NIV2_C000_BRUT', 'Présence C000 BRUT', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_COT_PAT', 'Présence C000 Cotisation Patronale', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_COT_SAL', 'Présence C000 Cotisation Salariale', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_H_CONTRAT', 'Présence C000 Heures Contrat', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_H_PAYEES', 'Présence C000 Heures Payées', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_H_TRAVAILLEES', 'Présence C000 Heures Travaillées', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_MASSE_SALARIALE', 'Présence C000 Masse Salariale', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_NET_A_PAYE', 'Présence C000 Net A Payer Salarié', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_C000_NET_IMP', 'Présence C000 Net Imposable Salarié', '', '1', '5', 'A1'),
(1, 'CTI_NIV2_HCSORTI', 'Salarié avec plus d''une paie avec heures contrat après sortie de l''établissement', '', '1', '5', 'A1'),
(1, 'CTI_NIV3_PRESENCE_PAIE_PAS_PLANNING', 'Liste des salariés présents en paie mais pas au planning', 'Liste des salariés présents en paie mais pas au planning', '1', 1, 'A2'),
(1, 'CTI_NIV3_PRESENCE_PLANNING_PAS_PAIE', 'Liste des personnes présentes au planning mais pas en planning', 'Liste des personnes présentes au planning mais pas en planning', '1', 1, 'A2')
;
-- 3/3 : Màj de la table iCTI
UPDATE rh.t_expert_controle SET
code = w_dbsetup.code,
texte = w_dbsetup.texte,
description = w_dbsetup.description,
is_cti = w_dbsetup.is_cti,
gravite_id = w_dbsetup.gravite_id
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid = 0
AND rh.t_expert_controle.oid = w_dbsetup.oid
AND
(
t_expert_controle.code IS DISTINCT FROM w_dbsetup.code OR
t_expert_controle.texte IS DISTINCT FROM w_dbsetup.texte OR
t_expert_controle.description IS DISTINCT FROM w_dbsetup.description OR
t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.is_cti OR
t_expert_controle.gravite_id IS DISTINCT FROM w_dbsetup.gravite_id
)
;
UPDATE rh.t_expert_controle SET
code = w_dbsetup.code,
texte = w_dbsetup.texte,
description = w_dbsetup.description,
is_cti = w_dbsetup.is_cti,
gravite_id = w_dbsetup.gravite_id
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid <> 0
AND rh.t_expert_controle.code = w_dbsetup.code
AND
(
t_expert_controle.texte IS DISTINCT FROM w_dbsetup.texte OR
t_expert_controle.description IS DISTINCT FROM w_dbsetup.description OR
t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.is_cti OR
t_expert_controle.gravite_id IS DISTINCT FROM w_dbsetup.gravite_id
)
;
INSERT INTO rh.t_expert_controle(
oid,
code,
texte,
description,
is_active,
was_active,
is_hide,
alerte_id,
is_cti,
gravite_id
)
SELECT
oid,
code,
texte,
description,
'1' AS is_active,
'0' AS is_hide,
0::bigint AS alerte_id,
is_cti,
gravite_id,
date(date_trunc('year',now())) AS date_validite_debut
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid = 0
AND w_dbsetup.oid NOT IN (SELECT oid FROM rh.t_expert_controle)
;
INSERT INTO rh.t_expert_controle(
code,
texte,
description,
is_active,
is_hide,
alerte_id,
is_cti,
gravite_id
)
SELECT
code,
texte,
description,
'1' AS is_active,
'0' AS was_active,
'0' AS is_hide,
0::bigint AS alerte_id,
is_cti,
gravite_id
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid <> 0
AND w_dbsetup.code NOT IN (SELECT code FROM rh.t_expert_controle)
;

+ 273
- 0
db/data/dbdata_rh_t_expert_controle_rule.SQL View File

@ -0,0 +1,273 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_expert_controle_rule.oid,
t_expert_controle.code AS expert_controle_code,
t_expert_controle_rule.data_type,
t_indicateurs.code AS indicateur_code,
COALESCE(t_indicateur_condition_1.external_code2,'') AS indicateur_condition_external_code_1,
COALESCE(t_indicateur_condition_2.external_code2,'') AS indicateur_condition_external_code_2,
COALESCE(t_indicateur_condition_3.external_code2,'') AS indicateur_condition_external_code_3,
t_expert_controle_rule.formula,
t_indicateurs_2.code AS indicateur_code_2,
COALESCE(t_indicateur_condition_21.external_code2,'') AS indicateur_condition_external_code_21,
COALESCE(t_indicateur_condition_22.external_code2,'') AS indicateur_condition_external_code_22,
COALESCE(t_indicateur_condition_23.external_code2,'') AS indicateur_condition_external_code_23,
t_expert_controle_rule.formula_2,
t_indicateurs_3.code AS indicateur_code_3,
COALESCE(t_indicateur_condition_31.external_code2,'') AS indicateur_condition_external_code_31,
COALESCE(t_indicateur_condition_32.external_code2,'') AS indicateur_condition_external_code_32,
COALESCE(t_indicateur_condition_33.external_code2,'') AS indicateur_condition_external_code_33,
t_expert_controle_rule.formula_3,
0::bigint AS expert_controle_id,
0::bigint AS expert_controle_rule_id,
0::bigint AS indicateur_id,
0::bigint AS indicateur_condition_id_1,
0::bigint AS indicateur_condition_id_2,
0::bigint AS indicateur_condition_id_3,
0::bigint AS indicateur_2_id,
0::bigint AS indicateur_condition_id_21,
0::bigint AS indicateur_condition_id_22,
0::bigint AS indicateur_condition_id_23,
0::bigint AS indicateur_3_id,
0::bigint AS indicateur_condition_id_31,
0::bigint AS indicateur_condition_id_32,
0::bigint AS indicateur_condition_id_33
FROM rh.t_expert_controle_rule
JOIN rh.t_expert_controle ON expert_controle_id = t_expert_controle.oid
JOIN rh.t_indicateurs t_indicateurs ON indicateur_id = t_indicateurs.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_1 ON indicateur_condition_id[1] = t_indicateur_condition_1.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_2 ON indicateur_condition_id[2] = t_indicateur_condition_2.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_3 ON indicateur_condition_id[3] = t_indicateur_condition_3.oid
LEFT JOIN rh.t_indicateurs t_indicateurs_2 ON indicateur_2_id = t_indicateurs_2.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_21 ON indicateur_condition_2_id[1] = t_indicateur_condition_21.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_22 ON indicateur_condition_2_id[2] = t_indicateur_condition_22.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_23 ON indicateur_condition_2_id[3] = t_indicateur_condition_23.oid
LEFT JOIN rh.t_indicateurs t_indicateurs_3 ON indicateur_3_id = t_indicateurs_3.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_31 ON indicateur_condition_3_id[1] = t_indicateur_condition_31.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_32 ON indicateur_condition_3_id[2] = t_indicateur_condition_32.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_33 ON indicateur_condition_3_id[3] = t_indicateur_condition_33.oid
WHERE t_expert_controle_rule.is_cti = '1' AND
t_expert_controle_rule.indicateur_id > 0 AND
t_expert_controle.is_cti = '1'
ORDER BY t_expert_controle.code,
t_indicateurs.code,
t_indicateur_condition_1.code,
t_indicateur_condition_2.code,
t_indicateur_condition_3.code
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
expert_controle_code,
data_type,
indicateur_code,
indicateur_condition_external_code_1,
indicateur_condition_external_code_2,
indicateur_condition_external_code_3,
formula,
indicateur_code_2,
indicateur_condition_external_code_21,
indicateur_condition_external_code_22,
indicateur_condition_external_code_23,
formula_2,
indicateur_code_3,
indicateur_condition_external_code_31,
indicateur_condition_external_code_32,
indicateur_condition_external_code_33,
formula_3,
expert_controle_id,
expert_controle_rule_id,
indicateur_id,
indicateur_condition_id_1,
indicateur_condition_id_2,
indicateur_condition_id_3,
indicateur_2_id,
indicateur_condition_id_21,
indicateur_condition_id_22,
indicateur_condition_id_23,
indicateur_3_id,
indicateur_condition_id_31,
indicateur_condition_id_32,
indicateur_condition_id_33
)
VALUES
(1, 'CTI_NIV1_C000', 'salarie', 'CTI_C000', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_CAD_EMP_NR', 'salarie', 'CTI_CDM', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_CAT_STAT_NR', 'salarie', 'CTI_CST', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_CE_NR', 'salarie', 'CTI_CEM', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_COD_POST_NR', 'salarie', 'CTI_CPO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_COM_PAR_NR', 'salarie', 'CTI_CPA', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_CSP_NR', 'salarie', 'CTI_CSP', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_CTRID_NULL', 'salarie', 'CTI_CTRID_NULL', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_DAT_NAIS_NR', 'salarie', 'CTI_DNA', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_DTEDEB_NR', 'salarie', 'CTI_DTEDEB_NR', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_DTEFIN_NR', 'salarie', 'CTI_DTEFIN_NR', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_FIL_NR', 'salarie', 'CTI_FIL', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_GRI_NR', 'salarie', 'CTI_GRI', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_GROGRI_NR', 'salarie', 'CTI_GGR', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_GRO_COT_NR', 'salarie', 'CTI_GCO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_MOTDEB_NR', 'salarie', 'CTI_MDD', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_MOTFIN_NR', 'salarie', 'CTI_MDF', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_NAT_NR', 'salarie', 'CTI_NAT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_QUAL_NR', 'salarie', 'CTI_QUA', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_SEX_NR', 'salarie', 'CTI_SEX', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_SPE_NR', 'salarie', 'CTI_SPE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_SRV_NR', 'salarie', 'CTI_SER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_STT_NR', 'salarie', 'CTI_STA', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_TC_NR', 'salarie', 'CTI_TCNT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_TTT_NR', 'salarie', 'CTI_TTT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV1_UNI_FONC_NR', 'salarie', 'CTI_UFO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_BRUT', 'salarie', 'CTI_C000_BRUT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_COT_PAT', 'salarie', 'CTI_C000_COT_PAT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_COT_SAL', 'salarie', 'CTI_C000_COT_SAL', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_H_CONTRAT', 'salarie', 'CTI_C000_H_CONTRAT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_H_PAYEES', 'salarie', 'CTI_C000_H_PAYEES', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_H_TRAVAILLEES', 'salarie', 'CTI_C000_H_TRAVAILLES', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_MASSE_SALARIALE', 'salarie', 'CTI_C000_MASSE_SALARIALE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_NET_A_PAYE', 'salarie', 'CTI_C000_NET_A_PAYE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV2_C000_NET_IMP', 'salarie', 'CTINETIMPOS', 'CTI_RUBRIQUE#DT#C000', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV3_PRESENCE_PAIE_PAS_PLANNING', 'salarie', 'CTI_PRESENCE_PAIE_PAS_PLANNING', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(1, 'CTI_NIV3_PRESENCE_PLANNING_PAS_PAIE', 'salarie', 'CTI_PRESENCE_PLANNING_PAS_PAIE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
;
-- 3/3 : Màj de la table iCTI
SELECT rh.cti_reorganize_indicateur_condition()
;
UPDATE w_dbsetup
SET expert_controle_id = t_expert_controle.oid
FROM rh.t_expert_controle
WHERE expert_controle_code = t_expert_controle.code
;
UPDATE w_dbsetup
SET indicateur_id = t_indicateurs.oid
FROM rh.t_indicateurs
WHERE indicateur_code = t_indicateurs.code
;
UPDATE w_dbsetup
SET indicateur_2_id = t_indicateurs.oid
FROM rh.t_indicateurs
WHERE indicateur_code_2 = t_indicateurs.code
;
UPDATE w_dbsetup
SET indicateur_3_id = t_indicateurs.oid
FROM rh.t_indicateurs
WHERE indicateur_code_3 = t_indicateurs.code
;
UPDATE w_dbsetup
SET indicateur_condition_id_1 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_1 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_2 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_2 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_3 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_3 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_21 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_21 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_22 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_22 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_23 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_23 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_31 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_31 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_32 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_32 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_33 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_33 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET expert_controle_rule_id = t_expert_controle_rule.oid
FROM rh. t_expert_controle_rule
WHERE w_dbsetup.expert_controle_id = t_expert_controle_rule.expert_controle_id AND
w_dbsetup.indicateur_id = t_expert_controle_rule.indicateur_id AND
w_dbsetup.indicateur_condition_id_1 = COALESCE(t_expert_controle_rule.indicateur_condition_id[1],0) AND
w_dbsetup.indicateur_condition_id_2 = COALESCE(t_expert_controle_rule.indicateur_condition_id[2],0) AND
w_dbsetup.indicateur_condition_id_3 = COALESCE(t_expert_controle_rule.indicateur_condition_id[3],0) AND
w_dbsetup.indicateur_2_id = t_expert_controle_rule.indicateur_2_id AND
w_dbsetup.indicateur_condition_id_21 = COALESCE(t_expert_controle_rule.indicateur_condition_2_id[1],0) AND
w_dbsetup.indicateur_condition_id_22 = COALESCE(t_expert_controle_rule.indicateur_condition_2_id[2],0) AND
w_dbsetup.indicateur_condition_id_23 = COALESCE(t_expert_controle_rule.indicateur_condition_2_id[3],0) AND
w_dbsetup.indicateur_3_id = t_expert_controle_rule.indicateur_3_id AND
w_dbsetup.indicateur_condition_id_31 = COALESCE(t_expert_controle_rule.indicateur_condition_3_id[1],0) AND
w_dbsetup.indicateur_condition_id_32 = COALESCE(t_expert_controle_rule.indicateur_condition_3_id[2],0) AND
w_dbsetup.indicateur_condition_id_33 = COALESCE(t_expert_controle_rule.indicateur_condition_3_id[3],0) AND
w_dbsetup.data_type = t_expert_controle_rule.data_type AND
w_dbsetup.formula = t_expert_controle_rule.formula
;
DELETE
FROM rh.t_expert_controle_rule
WHERE expert_controle_id IN
(SELECT oid
FROM rh.t_expert_controle
WHERE code IN (SELECT expert_controle_code FROM w_dbsetup)) AND
is_cti = '1' AND
oid NOT IN (SELECT expert_controle_rule_id FROM w_dbsetup)
;
INSERT INTO rh.t_expert_controle_rule(
expert_controle_id,
data_type,
indicateur_id,
indicateur_condition_id,
formula,
indicateur_2_id,
indicateur_condition_2_id,
formula_2,
indicateur_3_id,
indicateur_condition_3_id,
formula_3,
is_cti)
SELECT
expert_controle_id,
data_type,
indicateur_id,
ARRAY[w_dbsetup.indicateur_condition_id_1,w_dbsetup.indicateur_condition_id_2,w_dbsetup.indicateur_condition_id_3],
formula,
indicateur_2_id,
ARRAY[w_dbsetup.indicateur_condition_id_21,w_dbsetup.indicateur_condition_id_22,w_dbsetup.indicateur_condition_id_23],
formula_2,
indicateur_3_id,
ARRAY[w_dbsetup.indicateur_condition_id_31,w_dbsetup.indicateur_condition_id_32,w_dbsetup.indicateur_condition_id_33],
formula_3,
'1'::text AS is_cti
FROM w_dbsetup
WHERE expert_controle_rule_id = 0 AND
indicateur_id > 0
;

+ 125
- 0
db/data/dbdata_rh_t_indicateur_serie.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
WITH flatSeries as (
SELECT
oid,
cast(jsonb_array_elements(replace('[' || serie_id || ']', '|', ',')::jsonb)->>'pos' as bigint) as position,
cast(jsonb_array_elements(replace('[' || serie_id || ']', '|', ',')::jsonb)->>'id' as bigint) as id
FROM rh.t_indicateur_serie
WHERE serie_id != '{}' AND serie_id != ''
ORDER BY oid, position
),
flatCodes as (SELECT
flatSeries.oid,
array_agg(position::text || ':' || t_indicateur_serie.code::text) as codes
FROM flatSeries
LEFT JOIN rh.t_indicateur_serie on t_indicateur_serie.oid = id
GROUP BY 1)
SELECT
t_indicateur_serie.code,
coalesce(t_indicateurs.code, '') as indicateur_code,
t_indicateur_serie.name,
t_indicateur_serie.color,
t_indicateur_serie.formula,
t_indicateur_serie.calc,
t_indicateur_serie.total,
t_indicateur_serie.format,
case when array_agg(DISTINCT t_indicateur_condition.external_code2) = ARRAY[null] then ARRAY[]::text[] else array_agg(DISTINCT t_indicateur_condition.external_code2) end as external_code2,
CASE WHEN flatCodes.codes = ARRAY[null] THEN '{}'::text[] ELSE flatCodes.codes::text[] END as serie_code
FROM rh.t_indicateur_serie
LEFT JOIN rh.t_indicateurs ON t_indicateurs.oid = indicateur_id
LEFT JOIN rh.t_indicateur_condition ON ARRAY[t_indicateur_condition.oid] <@ t_indicateur_serie.condition_id
LEFT JOIN flatCodes on flatCodes.oid = t_indicateur_serie.oid
GROUP BY 1,2,3,4,5,6,7,8, flatCodes.codes
ORDER BY 2,1 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
code,
indicateur_code,
name,
color,
formula,
calc,
total,
format,
external_code2,
serie_code
)
VALUES
('CTI_ENTSORF', '', 'Nombre entrees et sorties Femmes', '#d19aed', '[1] + [2]', 't', 'f', '', '{""}', '{"1:CTI_NVSALF", "2:CTI_DEPSALF"}'),
('CTI_ENTSORH', '', 'Nombre entrees et sorties Hommes', '#7b53e8', '[1] + [2]', 't', 'f', '', '{""}', '{"1:CTI_NVSALH", "2:CTI_DEPSALH"}'),
('CTI_HSUPF', '', 'Heures supplementaires Femmes', '#d19aed', '', 'f', 'f', '', '{"CTI_SEXE#DT#2"}', '{}'),
('CTI_HSUPH', '', 'Heures supplementaires Hommes', '#7b53e8', '', 'f', 'f', '', '{"CTI_SEXE#DT#1"}', '{}'),
('CTI_TAUXSTAT', '', 'Taux par statut', '', '([1] / [2])', 't', 'f', '0.00%', '{""}', '{"1:CTI_TOTSAL", "2:CTI_TOTSALF"}'),
('CTI_TOF', '', 'Turn Over Femmes', '#d19aed', '([1]/2) / [2]', 't', 'f', '0.00%', '{""}', '{"1:CTI_ENTSORF", "2:CTI_EFFDF"}'),
('CTI_TOH', '', 'Turn Over Hommes', '#7b53e8', '([1]/2) / [2]', 't', 'f', '0.00%', '{""}', '{"1:CTI_ENTSORH", "2:CTI_EFFDH"}'),
('CTI_MS', 'CTIMTMASSE', 'Masse salariale', '#7b53e8', '', 'f', 'f', '', '{""}', '{}'),
('CTI_MSF', 'CTIMTMASSE', 'Masse salariale Femmes', '#d19aed', '', 'f', 'f', '', '{"CTI_SEXE#DT#2"}', '{}'),
('CTI_MSH', 'CTIMTMASSE', 'Masse salariale Hommes', '#7b53e8', '', 'f', 'f', '', '{"CTI_SEXE#DT#1"}', '{}'),
('CTI_EFFDF', 'CTI_EFFDJPER', 'Effectifs dernier jour Femmes', '#d19aed', '', 'f', 'f', '', '{"CTI_SEXE#DT#2"}', '{}'),
('CTI_EFFDH', 'CTI_EFFDJPER', 'Effectifs dernier jour Hommes', '#7b53e8', '', 'f', 'f', '', '{"CTI_SEXE#DT#1"}', '{}'),
('CTI_FEMMES', 'CTI_NBSALCNT', 'Femmes', '#d19aed', '', 'f', 'f', '', '{"CTI_SEXE#DT#2"}', '{}'),
('CTI_HOMMES', 'CTI_NBSALCNT', 'Hommes', '#7b53e8', '', 'f', 'f', '', '{"CTI_SEXE#DT#1"}', '{}'),
('CTI_TOTSAL', 'CTI_NBSALCNT', 'Total salaries', '', '', 'f', 'f', '', '{""}', '{}'),
('CTI_TOTSALF', 'CTI_NBSALCNT', 'Total Salaries fin annee', '', '', 'f', 't', '', '{""}', '{}'),
('CTI_NVSALF', 'CTI_NOUVSALS', 'Nouveaux salaries Femmes', '#d19aed', '', 'f', 'f', '', '{"CTI_SEXE#DT#2"}', '{}'),
('CTI_NVSALH', 'CTI_NOUVSALS', 'Nouveaux salaries Hommes', '#7b53e8', '', 'f', 'f', '', '{"CTI_SEXE#DT#1"}', '{}'),
('CTI_DEPSALF', 'CTI_SALPARTISSP', 'Departs salaries Femmes', '#d19aed', '', 'f', 'f', '', '{"CTI_SEXE#DT#2"}', '{}'),
('CTI_DEPSALH', 'CTI_SALPARTISSP', 'Departs salaries Hommes', '#7b53e8', '', 'f', 'f', '', '{"CTI_SEXE#DT#1"}', '{}')
;
-- 3/3 : Màj de la table iCTI
SELECT rh.cti_reorganize_indicateur_condition();
TRUNCATE rh.t_indicateur_serie;
INSERT INTO rh.t_indicateur_serie(indicateur_id, condition_id, name, color, formula, calc, serie_id, total, format, code)
SELECT
coalesce(t_indicateurs.oid, 0),
case when array_agg(DISTINCT t_indicateur_condition.oid) = ARRAY[NULL]::bigint[] then ARRAY[]::bigint[] else array_agg(DISTINCT t_indicateur_condition.oid) end,
w_dbsetup.name,
w_dbsetup.color,
w_dbsetup.formula,
w_dbsetup.calc,
case when array_agg(DISTINCT rec.oid) = ARRAY[NULL]::bigint[] then ARRAY[]::bigint[] else array_agg(DISTINCT rec.oid) end,
w_dbsetup.total,
w_dbsetup.format,
w_dbsetup.code
FROM w_dbsetup
LEFT JOIN rh.t_indicateurs ON t_indicateurs.code = w_dbsetup.indicateur_code
LEFT JOIN rh.t_indicateur_condition ON ARRAY[t_indicateur_condition.external_code2] <@ w_dbsetup.external_code2
LEFT JOIN rh.t_indicateur_serie as rec ON ARRAY[rec.code] <@ w_dbsetup.serie_code
GROUP BY 1,3,4,5,6,8,9,10
;
WITH series_id as (
SELECT
w_dbsetup.code,
split_part(unnest(w_dbsetup.serie_code), ':', 1) as pos,
split_part(unnest(w_dbsetup.serie_code), ':', 2) as serie_code
FROM w_dbsetup
),
full_series as (
SELECT
series_id.code,
coalesce(string_agg('{"pos": ' || pos || ', "id": ' || t_indicateur_serie.oid || '}', '|'), '') as serie_id
FROM series_id
LEFT JOIN rh.t_indicateur_serie ON t_indicateur_serie.code = serie_code
GROUP BY 1
)
UPDATE rh.t_indicateur_serie SET
serie_id = CASE WHEN full_series.serie_id IS NULL THEN '' ELSE full_series.serie_id END
FROM w_dbsetup
LEFT JOIN full_series ON full_series.code = w_dbsetup.code
WHERE t_indicateur_serie.code = w_dbsetup.code
;

+ 395
- 0
db/data/dbdata_rh_t_indicateurs.SQL View File

@ -0,0 +1,395 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_indicateurs.oid,
t_indicateurs.code,
t_indicateurs.texte,
t_indicateurs.table_name,
t_indicateurs.column_name,
t_indicateurs.is_cti,
t_indicateurs.entete,
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 rh.t_indicateurs
LEFT JOIN rh.t_indicateurs t_indicateurs_1 ON (t_indicateurs.indicateur_associe_1_id = t_indicateurs_1.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_2 ON (t_indicateurs.indicateur_associe_2_id = t_indicateurs_2.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_3 ON (t_indicateurs.indicateur_associe_3_id = t_indicateurs_3.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_4 ON (t_indicateurs.indicateur_associe_4_id = t_indicateurs_4.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_5 ON (t_indicateurs.indicateur_associe_5_id = t_indicateurs_5.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_6 ON (t_indicateurs.indicateur_associe_6_id = t_indicateurs_6.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_7 ON (t_indicateurs.indicateur_associe_7_id = t_indicateurs_7.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_8 ON (t_indicateurs.indicateur_associe_8_id = t_indicateurs_8.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_9 ON (t_indicateurs.indicateur_associe_9_id = t_indicateurs_9.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_10 ON (t_indicateurs.indicateur_associe_10_id = t_indicateurs_10.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_11 ON (t_indicateurs.indicateur_associe_11_id = t_indicateurs_11.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_12 ON (t_indicateurs.indicateur_associe_12_id = t_indicateurs_12.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_13 ON (t_indicateurs.indicateur_associe_13_id = t_indicateurs_13.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_14 ON (t_indicateurs.indicateur_associe_14_id = t_indicateurs_14.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_15 ON (t_indicateurs.indicateur_associe_15_id = t_indicateurs_15.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_16 ON (t_indicateurs.indicateur_associe_16_id = t_indicateurs_16.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_17 ON (t_indicateurs.indicateur_associe_17_id = t_indicateurs_17.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_18 ON (t_indicateurs.indicateur_associe_18_id = t_indicateurs_18.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_19 ON (t_indicateurs.indicateur_associe_19_id = t_indicateurs_19.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_20 ON (t_indicateurs.indicateur_associe_20_id = t_indicateurs_20.oid)
LEFT JOIN rh.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
LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
code,
texte,
table_name,
column_name,
is_cti,
entete,
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
)
VALUES
(1, 'CTIAN', 'Avantages en nature', 'v_historique_paie_1', 'montant_avantage_nature', '1', 'Avantage nature', 'SUM', '#E', 80, 'Avantages nature', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTICOTPAT', 'Cotisations patronales', 'v_historique_paie_1', 'montant_cotisation_patronale', '1', 'Cotisations patronales', 'SUM', '#E', 80, 'Cotisations patronales', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTICOTSAL ', 'Cotisations salariales', 'v_historique_paie_1', 'montant_cotisation_salarie', '1', 'Cotisations salariales', 'SUM', '#E', 80, 'Cotisations salariales', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTIETPTHM', 'ETP travaillé moyen', '*CALC', 'base.cti_division([1], [2])', '1', 'ETP travaillé moyen', '*CALC', '#,00', 0, 'ETP travaillé moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_ETPW', 'CTI_NBMOIS', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTIHP', 'Heures payées', 'v_historique_paie_1', 'heures_payees', '1', 'Heures payées', 'SUM', '', 80, 'Heures payées', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTIHT', 'Heures travaillées', 'v_historique_paie_1', 'heures_travaillees', '1', 'Heures travaillées', 'SUM', '', 80, 'Heures travaillées', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTIMASSMOY', 'Masse salariale moyenne', '*CALC', 'base.cti_division([1], [2])', '1', 'Masse moyenne', '*CALC', '#E', 80, 'Masse salariale moyenne', ' ', ' ', ' ', ' ', ' ', ' ', 'CTIMTMASSE', 'CTI_ETPPAYE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTIMTBRUT', 'Montant brut', 'v_historique_paie_1', 'montant_brut', '1', 'Brut', 'SUM', '#E', 80, 'Montant brut', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTIMTMASSE', 'Masse salariale', 'v_historique_paie_1', 'montant_masse_salariale', '1', 'Masse', 'SUM', '#E', 80, 'Masse salariale', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTINBCNT', 'Nombre de contrats', 'v_contrats_mois_1', 'DISTINCT contrat_id', '1', 'Contrats', 'COUNT', '', 80, 'Nombre de contrats', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTINBDSAL', 'Nombre de salariés distincts (Historique)', 'v_historique_paie_1', 'DISTINCT salarie_id', '1', 'Salariés distincts', 'COUNT', '', 80, 'Nombre de salariés distincts (Historique)', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTINBHOMME', 'Nombre d''Hommes', 'v_historique_paie_1', 'DISTINCT (CASE WHEN sexe_code = ''M'' THEN salarie_id ELSE null END)', '1', 'NB d''Hommes', 'COUNT', '', 0, 'Nombre d''Hommes', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTINBJARRET', 'Jours d''arret de travail', 'v_arrets_travail_mois_1', 'nb_jours_arret', '1', 'Arrets', 'SUM', '#j', 60, 'Jours d''arret de travail', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTINBSAL', 'Nombre de salariés (Historique)', 'v_historique_paie_1', 'salarie_id', '1', 'Salariés', 'COUNT', '', 80, 'Nombre de salariés (Historique)', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTINETAPAYER', 'Net à Payer', 'v_historique_paie_1', 'montant_net_a_payer_salarie', '1', 'Net A Payer', 'SUM', '#E', 80, 'Net A Payer', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTINETIMPOS', 'Net Imposable', 'v_historique_paie_1', 'montant_net_imposable_salarie', '1', 'Net Imposable', 'SUM', '#E', 80, 'Net Imposable', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTIODNET', 'OD sur Net', 'v_historique_paie_1', 'montant_od_net_salarie', '1', 'OD sur Net', 'SUM', '#E', 80, 'OD sur Net', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTISALCHGMOYH', 'Salaire Horaire Chargé', '*CALC', '[1] / [2]', '1', 'Salaire Chargé Moyen', '*CALC', '', 0, 'Salaire Chargé Moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTIMASSMOY', 'CTIHP', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTISEP', 'Séparateur', 'SEP', '', '1', '', 'SUM', '', 0, '', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTITA', 'Base 4600 TA', 'v_historique_paie_1', 'CASE WHEN rubrique_code = ''4600'' THEN base ELSE 0 END', '1', 'Base 4600 TA', 'SUM', '#¤', 80, 'Base 4600 TA', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTITB', 'Base 4610 TB', 'v_historique_paie_1', 'CASE WHEN rubrique_code = ''4610'' THEN base ELSE 0 END', '1', 'Base 4610 TB', 'SUM', '#¤', 80, 'Base 4610 TB', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_ACTJPCT', 'Pourcentage de jours d''accident du travail', '*CALC', 'base.cti_division([1], [2]) * 100', '1', 'Pourcentage de jours d''accident du travail', '*CALC', '#,0%', 0, 'Pourcentage de jours d''accident du travail', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJARRET_ACT', 'CTINBJARRET', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_ACTPCT', 'Pourcentage d''accident du travail', '*CALC', 'base.cti_division([1], [2]) * 100', '1', 'Pourcentage d''accident du travail', '*CALC', '#,0%', 0, 'Pourcentage d''accident du travail', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBARRET_ACT', 'CTI_NBARRET', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_AGEMOY', 'Age moyen', '*CALC', 'base.cti_division([1]::numeric, [2]::numeric)', '1', 'Age moyen', '*CALC', '#,0', 0, 'Age moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_SAGE', 'CTI_CAGE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_AGESUM', 'Somme totale des ages', 'v_contrats_mois_1', 'rhp_age_id', '1', 'Somme totale des ages', 'SUM', '', 0, 'Somme totale des ages', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_BRUTCPA1', 'Montant Brut CP A-1 ( rub 1981)', 'v_historique_paie_1', 'CASE WHEN rubrique_code = ''1981'' THEN montant_brut ELSE 0 END', '1', 'Brut CP A-1', 'SUM', '#E', 80, 'Montant Brut CP A-1', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_BRUTMOYEN', 'Brut moyen/ETP', '*CALC', '[1] / [2]', '1', 'Brut Moyen(/ETP)', '*CALC', '', 0, 'Brut Moyen(/ETP)', ' ', ' ', ' ', ' ', ' ', ' ', 'CTIMTBRUT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_BRUTMOYENETP', 'Brut moyen/ETP', '*CALC', 'base.cti_division([1], [2])', '1', 'Brut Moyen(/ETP)', '*CALC', '#E', 0, 'Brut Moyen(/ETP)', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTBRUT', 'CTI_ETPPAYE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CAGE', 'Comptage salariés pour Age moyen', 'v_contrats_mois_1', 'DISTINCT salarie_id::text||''-''||age_id::text', '1', 'Comptage salariés pour Age moyen', 'COUNT', '#,0', 0, 'Comptage salariés pour Age moyen', '1', ' ', ' ', ' ', ' ', '1', 'CTI_AGESUM', 'CTI_NDSAL', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CALNBJ_OUVRE', 'Nombre de jours ouvrés', 'CALENDRIER', 'nb_jour_ouvre', '1', 'Jours ouvrés', 'SUM', '#', 80, 'Jours ouvrés', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CALNBJ_SEM', 'Nombre de jours semaine', 'CALENDRIER', 'nb_jour_semaine', '1', 'Jours semaine', 'SUM', '#', 80, 'Jours semaine', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CCO', 'Qualité - Catégorie de congé', 'v_contrats_mois_1', 'DISTINCT CASE WHEN categorie_conge_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Catégorie de congé', 'COUNT', '', 0, 'Catégorie de congé', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CDDSALP', 'Salarié en CDD : Nombre Moyen de contrats', '*CALC', 'base.cti_division([1], [2])', '1', 'Salarié en CDD : Nombre Moyen de contrats', '*CALC', '#,0', 0, 'Salarié en CDD : Nombre Moyen de contrats', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBCONTRATCDD', 'CTI_NBSALCDD', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CDM', 'Qualité - Cadre d''emploi', 'v_contrats_mois_1', 'DISTINCT CASE WHEN cadre_emploi_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Cadre d''emploi', 'COUNT', '', 0, 'Cadre d''emploi', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CEM', 'Qualité - Code emploi', 'v_contrats_mois_1', 'DISTINCT CASE WHEN code_emploi_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Code emploi', 'COUNT', '', 0, 'Code emploi', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CNTCMP', 'Contrats en temps complet', 'v_contrats_mois_1', 'CASE WHEN type_temps_travail_section_code[9] = ''TC'' THEN contrat_id ELSE null END', '1', 'Temps complet', 'COUNT', '', 0, 'Contrats en temps complet', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CNTPAR', 'Contrats en temps partiel', 'v_contrats_mois_1', 'CASE WHEN type_temps_travail_section_code[9] = ''TP'' THEN contrat_id ELSE null END', '1', 'Temps partiel', 'COUNT', '', 0, 'Contrats en temps partiel', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CPA', 'Qualité - Commission paritaire', 'v_contrats_mois_1', 'DISTINCT CASE WHEN commission_paritaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Commission paritaire', 'COUNT', '', 0, 'Commission paritaire', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CPA1', 'Base CP Pris sur A-1 1981', 'v_historique_paie_1', 'CASE WHEN rubrique_code = ''1981'' THEN base ELSE 0 END', '1', 'Base CP a-1', 'SUM', '#j', 80, 'Base CP A-1', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CPO', 'Qualité - Code postal', 'v_contrats_mois_1', 'DISTINCT CASE WHEN code_postal_id = 0 THEN salarie_id ELSE null END', '1', 'Code postal', 'COUNT', '', 0, 'Code postal', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CSA', 'Qualité - Compte salarié', 'v_contrats_mois_1', 'DISTINCT CASE WHEN compte_salarie_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Compte salarié', 'COUNT', '', 0, 'Compte salarié', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CSP', 'Qualité - Catégorie socio-professionnelle', 'v_contrats_mois_1', 'DISTINCT CASE WHEN categorie_socio_professionnelle_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Catégorie socio-professionnelle', 'COUNT', '', 0, 'Catégorie socio-professionnelle', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_CST', 'Qualité - Catégorie statutaire', 'v_contrats_mois_1', 'DISTINCT CASE WHEN categorie_statutaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Catégorie statutaire', 'COUNT', '', 0, 'Catégorie statutaire', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_DBTCDD', 'Nombre débuts de CDD', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN 1=1
AND nombre_debut_contrat > 0
AND type_contrat_section_code[9] = ''CDD''
THEN contrat_id
ELSE null END)', '1', 'Débuts de CDD', 'COUNT', '', 0, 'Nombre débuts de CDD', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_DBTCDI', 'Nombre de début de CDI', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN 1=1
AND nombre_debut_contrat > 0
AND type_contrat_section_code[9] = ''CDI''
THEN contrat_id
ELSE null END)', '1', 'Débuts de CDI', 'COUNT', '', 0, 'Nombre de début de CDI', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_DNA', 'Qualité - Date de naissance', 'v_contrats_mois_1', 'DISTINCT CASE WHEN date_naissance <= ''19200101''::date THEN salarie_id ELSE null END', '1', 'Date de naissance', 'COUNT', '', 0, 'Date de naissance', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_DUREEMOYARRETS', 'Durée moyenne des arrêts', '*CALC', 'base.cti_division([1], [2])', '1', 'Durée moyenne des arrêts', '*CALC', '#,0', 0, 'Durée moyenne des arrêts', ' ', ' ', ' ', ' ', ' ', ' ', 'CTINBJARRET', 'CTI_NBARRET', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EFF1ERJANV', 'Effectif total au 1er janvier', 'v_contrats_mois_1', 'DISTINCT CASE
WHEN 1=1
AND present_debut_mois = 1
AND date_part(''month'', date_debut_activite) = 1
THEN salarie_id
ELSE null
END', '1', 'Effectif total au 1er janvier', 'COUNT', '', 0, 'Effectif total au 1er janvier', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EFF31DEV', 'Effectif total au 31 décembre', 'v_contrats_mois_1', 'DISTINCT CASE
WHEN 1=1
AND present_fin_mois = 1
AND date_part(''month'', date_debut_activite) = 12
THEN salarie_id
ELSE null
END', '1', 'Effectif total au 31 décembre', 'COUNT', '', 0, 'Effectif total au 31 décembre', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EFFDJPER', 'Effectif au dernier jour de la période', 'v_contrats_mois_1', 'DISTINCT CASE
WHEN 1=1
AND present_fin_mois = 1
THEN salarie_id
ELSE null
END', '1', 'Effectif au dernier jour', 'COUNTLASTMONTH', '', 0, 'Effectif au dernier jour de la période', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EFFPERM', 'Effectif permanent', 'v_contrats_mois_1', 'DISTINCT CASE WHEN effectif_permanent = 1 then salarie_id ELSE null END', '1', 'Effectif permanent', 'COUNTLASTMONTH', '', 0, 'Effectif permanent', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EFFPJPER', 'Effectif au premier jour de la période', 'v_contrats_mois_1', 'DISTINCT CASE
WHEN 1=1
AND present_debut_mois = 1
AND to_char(date_debut_activite, ''YYYYMM'') = to_char( periode::date, ''YYYYMM'')
THEN salarie_id
ELSE null
END', '1', 'Effectif au premier jour', 'COUNT', '', 0, 'Effectif au premier jour de la période', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EMBCDD', 'Nombre d''embauche en CDD', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN 1=1
AND nombre_entrees = 1
AND type_contrat_section_code[9] = ''CDD''
THEN salarie_id
ELSE null END)', '1', 'Embauche en CDD', 'COUNT', '', 0, 'Nombre d''embauche en CDD', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EMBCDI', 'Nombre d''embauche en CDI', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN 1=1
AND nombre_entrees = 1
AND type_contrat_section_code[9] = ''CDI''
THEN salarie_id
ELSE null END)', '1', 'Embauche en CDI', 'COUNT', '', 0, 'Nombre d''embauche en CDI', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_EMBMS25', 'Nombre d''embauche de salariés de moins de 25 ans', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN 1=1
AND nombre_entrees = 1
AND rhp_age_id < 25
THEN salarie_id
ELSE null END)', '1', 'Embauche < 25 ans', 'COUNT', '', 0, 'Nombre d''embauche de salariés de moins de 25 ans', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_ETPPAYE', 'ETP rémunéré', 'v_historique_paie_1', 'etp_paye', '1', 'ETP rémunéré', 'SUM', '#,00', 80, 'ETP rémunéré', '4', ' ', ' ', ' ', ' ', '4', 'CTIHP', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_ETPREMMOY', 'ETP rémunéré moyen', '*CALC', 'base.cti_division([1], [2])', '1', 'ETP rémunéré moyen', '*CALC', '#,00', 0, 'ETP rémunéré moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_ETPPAYE', 'CTI_NBMOIS', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_ETPW', 'ETP travaillé', 'v_historique_paie_1', 'etp_travaille', '1', 'ETP travaillé', 'SUM', '#,00', 80, 'ETP travaillé', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_FIL', 'Qualité - Filière', 'v_contrats_mois_1', 'DISTINCT CASE WHEN filiere_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Filière', 'COUNT', '', 0, 'Filière', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_FINCNT', 'Nombre de fin de contrats', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN nombre_fin_contrat > 0 THEN contrat_id ELSE null END)', '1', 'Fin de contrats', 'COUNT', '', 0, 'Nombre de fin de contrats', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_FINCNTCDD', 'Nombre de fin de CDD', 'v_contrats_mois_1', 'DISTINCT (
CASE WHEN 1=1
AND nombre_fin_contrat > 0
AND type_contrat_section_code[9] = ''CDD''
THEN contrat_id
ELSE null
END)', '1', 'Fin de CDD', 'COUNT', '', 0, 'Nombre de fin de CDD', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_FINCNTCDI', 'Nombre de fin de CDI', 'v_contrats_mois_1', 'DISTINCT (
CASE WHEN 1=1
AND nombre_fin_contrat > 0
AND type_contrat_section_code[9] = ''CDI''
THEN contrat_id
ELSE null
END)', '1', 'Fin de CDI', 'COUNT', '', 0, 'Nombre de fin de CDI', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_FRIMPOS', 'Frais Imposable', 'v_historique_paie_1', 'montant_frais_imposables', '1', 'Frais Imposable', 'SUM', '#E', 80, 'Frais Imposable', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_GCO', 'Qualité - Groupe de cotisant', 'v_contrats_mois_1', 'DISTINCT CASE WHEN groupe_cotisant_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Groupe de cotisant', 'COUNT', '', 0, 'Groupe de cotisant', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_GGR', 'Qualité - Groupe de grille', 'v_contrats_mois_1', 'DISTINCT CASE WHEN grille_groupe_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Groupe de grille', 'COUNT', '', 0, 'Groupe de grille', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_GRI', 'Qualité - Grille', 'v_contrats_mois_1', 'DISTINCT CASE WHEN grille_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Grille', 'COUNT', '', 0, 'Grille', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_LBU', 'Qualité - Lettre budgétaire', 'v_contrats_mois_1', 'DISTINCT CASE WHEN lettre_budgetaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Lettre budgétaire', 'COUNT', '', 0, 'Lettre budgétaire', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MALJPCT', 'Pourcentage de jours de maladie', '*CALC', 'base.cti_division([1], [2]) * 100', '1', 'Pourcentage de jours de maladie', '*CALC', '#,0%', 0, 'Pourcentage de jours de maladie', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJARRET_MAL', 'CTINBJARRET', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MALPCT', 'Pourcentage de maladie', '*CALC', 'base.cti_division([1], [2]) * 100', '1', 'Pourcentage de maladie', '*CALC', '#,0%', 0, 'Pourcentage de maladie', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBARRET_MAL', 'CTI_NBARRET', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MATJPCT', 'Pourcentage de jours de maternité', '*CALC', 'base.cti_division([1], [2]) * 100', '1', 'Pourcentage de jours de maternité', '*CALC', '#,0%', 0, 'Pourcentage de jours de maternité', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJARRET_MAT', 'CTINBJARRET', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MATPCT', 'Pourcentage de maternité', '*CALC', 'base.cti_division([1], [2]) * 100', '1', 'Pourcentage de maternité', '*CALC', '#,0%', 0, 'Pourcentage de maternité', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBARRET_MAT', 'CTI_NBARRET', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MDD', 'Qualité - Motif de début de contrat', 'v_contrats_mois_1', 'DISTINCT CASE WHEN motif_debut_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Motif de début', 'COUNT', '', 0, 'Motif de début', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MDF', 'Qualité - Motif de fin de contrat', 'v_contrats_mois_1', 'DISTINCT CASE WHEN motif_fin_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Motif de fin', 'COUNT', '', 0, 'Motif de fin', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MHMC', 'Montant Horaire Moyen Chargé', '*CALC', 'base.cti_division([1], [2])', '1', 'Mnt H. Moy. Chargé', '*CALC', '#,0E', 0, 'Montant Horaire Moyen Chargé', ' ', ' ', ' ', ' ', ' ', ' ', 'CTIMTMASSE', 'CTIHP', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MTBRUT', 'Montant brut', 'v_historique_paie_1', 'montant_brut', '1', 'Brut', 'SUM', '#E', 80, 'Montant brut', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MT_CNT', 'Montant rupture de contrat', 'v_historique_paie_1', 'CASE WHEN rubrique_id IN [LISTE:CTI_EXP_CNT] THEN montant_od_net_salarie ELSE 0 END', '1', 'Montant rupture de contrat', 'SUM', '#E', 0, 'Montant rupture de contrat', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MT_IJ', 'Montant IJSS', 'v_historique_paie_1', 'CASE WHEN rubrique_id IN [LISTE:CTI_EXP_IJS] THEN montant_od_net_salarie ELSE 0 END', '1', 'Montant IJSS', 'SUM', '#E', 0, 'Montant IJSS', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MT_PRE', 'Montant prime de précarité', 'v_historique_paie_1', 'CASE WHEN rubrique_id IN [LISTE:CTI_EXP_PRE] THEN montant_masse_salariale ELSE 0 END', '1', 'Montant Prime de précarité', 'SUM', '#E', 0, 'Montant prime de précarité', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_MT_RET', 'Montant départ à la retraite', 'v_historique_paie_1', 'CASE WHEN rubrique_id IN [LISTE:CTI_EXP_RET] THEN montant_masse_salariale ELSE 0 END', '1', 'Montant retraite', 'SUM', '#E', 0, 'Montant départ à la retraite', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NAT', 'Qualité - Nationalité', 'v_contrats_mois_1', 'DISTINCT CASE WHEN nationalite_id = 0 THEN salarie_id ELSE null END', '1', 'Nationalité', 'COUNT', '', 0, 'Nationalité', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBARRET', 'Nombre d''arrêts', 'v_arrets_travail_mois_1', 'DISTINCT CASE WHEN nb_arret = 1 THEN arret_travail_id ELSE null END', '1', 'Nombre d''arrêts', 'COUNT', '', 0, 'Nombre d''arrêts', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBARRETMOY', 'Nombre d''arrêts moyen', '*CALC', 'base.cti_division([1], [2])', '1', 'Nb d''arrêts moyen', '*CALC', '#,0', 0, 'Nombre d''arrêts moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBARRET', 'CTI_NBSALCNT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBARRET_ACT', 'Nombre d''arrêts pour accident du travail', 'v_arrets_travail_mois_1', 'DISTINCT CASE WHEN nb_arret = 1 AND motif_arret_section_code[9] = ''ACT'' THEN arret_travail_id ELSE null END', '1', 'Nb accident du travail', 'COUNT', '', 0, 'Nombre d''arrêts pour accident du travail', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBARRET_MAL', 'Nombre d''arrêts maladie', 'v_arrets_travail_mois_1', 'DISTINCT CASE WHEN nb_arret = 1 AND motif_arret_section_code[9] = ''MAL'' THEN arret_travail_id ELSE null END', '1', 'Nb maladies', 'COUNT', '', 0, 'Nombre d''arrêts maladie', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBARRET_MAT', 'Nombre d''arrêts maternité', 'v_arrets_travail_mois_1', 'DISTINCT CASE WHEN nb_arret = 1 AND motif_arret_section_code[9] = ''MAT'' THEN arret_travail_id ELSE null END', '1', 'Nb maternités', 'COUNT', '', 0, 'Nombre d''arrêts maternité', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBCNT', 'Nombre de contrats', 'v_contrats_mois_1', 'DISTINCT contrat_id', '1', 'Contrats', 'COUNT', '', 80, 'Nombre de contrats', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBCONTRATCDD', 'Nombre de contrats en CDD', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN type_contrat_section_code[9] = ''CDD'' THEN contrat_id ELSE null END)', '1', 'Contrats CDD', 'COUNT', '', 80, 'Nombre de contrats en CDD', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBCONTRATCDI', 'Nombre de contrats en CDI', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN type_contrat_section_code[9] = ''CDI'' THEN contrat_id ELSE null END)', '1', 'Contrats CDI', 'COUNT', '', 80, 'Nombre de contrats en CDI', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBETRANGERS', 'Nombre d''étrangers', 'v_historique_paie_1', 'DISTINCT (CASE WHEN nationalite_section_code[9] != ''FR'' THEN salarie_id ELSE null END)', '1', 'NB d''étrangers', 'COUNT', '', 0, 'Nombre d''étrangers', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBFEMMECNT', 'Nombre de Femmes (Contrats)', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN sexe_code = ''F'' THEN salarie_id ELSE null END)', '1', 'NB de Femmes', 'COUNT', '', 0, 'Nombre de Femmes', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBFEMMEPAIE', 'Nombre de Femmes (Paie)', 'v_historique_paie_1', 'DISTINCT (CASE WHEN sexe_code = ''F'' THEN salarie_id ELSE null END)', '1', 'NB de Femmes', 'COUNT', '', 0, 'Nombre de Femmes', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBHANDICAP', 'Nombre d''handicapés', 'v_historique_paie_1', 'DISTINCT (CASE WHEN handicap_id = ''1'' THEN salarie_id ELSE null END)', '1', 'NB d''handicapés', 'COUNT', '', 0, 'Nombre d''handicapés', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBIJSS', 'Nombre d''IJSS', 'v_historique_paie_1', 'DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_IJS] THEN salarie_id ELSE null END', '1', 'IJSS', 'COUNT', '', 0, 'Nombre d''IJSS', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBJARRET_ACT', 'Nombre de jours d''arrêt pour accident du travail', 'v_arrets_travail_mois_1', 'CASE WHEN motif_arret_section_code[9] = ''ACT'' THEN nb_jours_arret ELSE 0 END', '1', 'Nb jours accident du travail', 'SUM', '', 0, 'Nombre de jours d''arrêt pour accident du travail', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBJARRET_MAL', 'Nombre de jours d''arrêt maladie', 'v_arrets_travail_mois_1', 'CASE WHEN motif_arret_section_code[9] = ''MAL'' THEN nb_jours_arret ELSE 0 END', '1', 'Nb jours maladie', 'SUM', '', 0, 'Nombre de jours d''arrêt maladie', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBJARRET_MAT', 'Nombre de jours d''arrêt maternité', 'v_arrets_travail_mois_1', 'CASE WHEN motif_arret_section_code[9] = ''MAT'' THEN nb_jours_arret ELSE 0 END', '1', 'Nb jours maternité', 'SUM', '', 0, 'Nombre de jours d''arrêt maternité', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBJT', 'Nombre de journées théoriques travaillées', 'v_historique_paie_1', 'heures_travaillees / 7.0', '1', 'Journées théoriques travaillées', 'SUM', '', 0, 'Nombre de journées théoriques travaillées', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBMOIS', 'Nombre de mois sur la période', 'v_contrats_mois_1', 'DISTINCT mois_activite_id', '1', 'Mois /période', 'COUNT', '', 0, 'Nombre de mois sur la période', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBRUPT', 'Nombre de rupture de contrat', 'v_historique_paie_1', 'DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_CNT] THEN salarie_id ELSE null END', '1', 'Rupture de contrat', 'COUNT', '', 0, 'Nombre de rupture de contrat', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBSAL', 'Nombre de salariés (Paie)', 'v_historique_paie_1', 'DISTINCT salarie_id', '1', 'Salariés', 'COUNT', '', 80, 'Nombre de salariés (Paie)', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBSALCDD', 'Nombre de salariés en CDD', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN type_contrat_section_code[9] = ''CDD'' THEN salarie_id ELSE null END)', '1', 'Salariés CDD', 'COUNT', '', 80, 'Nombre de salariés en CDD', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBSALCNT', 'Nombre de salariés (Contrats)', 'v_contrats_mois_1', 'DISTINCT salarie_id', '1', 'Salariés', 'COUNT', '', 80, 'Nombre de salariés', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBSALCNTFR', 'Nombre de Français (Contrat)', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN nationalite_section_code[9] = ''FR'' THEN salarie_id ELSE null END)', '1', 'NB de Français', 'COUNT', '', 0, 'Nombre de Français', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NBSALPAIEFR', 'Nombre de Français (Paie)', 'v_historique_paie_1', 'DISTINCT (CASE WHEN nationalite_section_code[9] = ''FR'' THEN salarie_id ELSE null END)', '1', 'NB de Français', 'COUNT', '', 0, 'Nombre de Français', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NB_PRE', 'Nombre de prime de précarité', 'v_historique_paie_1', 'DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_PRE] THEN salarie_id ELSE null END', '1', 'Prime de précarité', 'COUNT', '', 0, 'Nombre de prime de précarité', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NB_RET', 'Nombre de départ à la retraite', 'v_historique_paie_1', 'DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_RET] THEN salarie_id ELSE null END', '1', 'Départ à la retraite', 'COUNT', '', 0, 'Nombre de départ à la retraite', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NDSAL', 'Nombre NON DISTINCT de salariés', 'v_contrats_mois_1', 'salarie_id', '1', 'Nombre NON DISTINCT de salariés', 'COUNT', '', 0, 'Nombre NON DISTINCT de salariés', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NOUVSALS', 'Nouveaux salariés', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN nombre_entrees = 1 THEN salarie_id ELSE null END)', '1', 'Nouveaux salariés', 'COUNT', '', 0, 'Nouveaux salariés', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_NVXCNT', 'Nombre de nouveaux contrats', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN nombre_debut_contrat > 0 THEN contrat_id ELSE null END)', '1', 'Nouveaux contrats', 'COUNT', '', 0, 'Nombre de nouveaux contrats', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_PCDD', '% de CDD', '*CALC', 'base.cti_division([1], [2]) * 100', '1', '% CDD', '*CALC', '#,0%', 0, '% de CDD/nb de contrat', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBCONTRATCDD', 'CTI_NBCNT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_PCDI', '% de CDI', '*CALC', 'base.cti_division([1], [2]) * 100', '1', '% CDI', '*CALC', '#,0%', 0, '% de CDI/nb de contrat', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBCONTRATCDI', 'CTI_NBCNT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_PCTFEMMECNT', '% de femmes', '*CALC', 'base.cti_division([1], [2]) * 100', '1', '% de femmes', '*CALC', '#,0%', 0, '% de femmes', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBFEMMECNT', 'CTI_NBSALCNT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_PRESENCE_PAIE_PAS_PLANNING', 'Liste des salariés présents en paie mais pas au planning', 'v_presence_salaries_1', 'CASE WHEN present_paie= true AND present_planning = false THEN 1 ELSE 0 END', '1', '', 'SUM', '#', 0, '', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_PRESENCE_PLANNING_PAS_PAIE', 'Liste des personnes présentes au planning mais pas en paie', 'v_presence_salaries_1', 'CASE WHEN present_paie= false AND present_planning = true THEN 1 ELSE 0 END', '1', '', 'SUM', '#', 0, '', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_QUA', 'Qualité - Qualification', 'v_contrats_mois_1', 'DISTINCT CASE WHEN qualification_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Qualification', 'COUNT', '', 0, 'Qualification', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_RAPPORTCALC', 'Calcul d''indicateurs dans le rapport', '*RAPPORTCALC', '', '1', '', 'sum', '#', 0, '', '0', ' ', ' ', ' ', ' ', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_ROTATIONEMP', 'Rotation de l''emploi', '*CALC', 'base.cti_division((([1] + [2]) / 2), [3]) * 100', '1', 'Rotation de l''emploi', '*CALC', '#,0%', 0, 'Rotation de l''emploi', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NOUVSALS', 'CTI_SALPARTISSP', 'CTI_EFFPJPER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SAC', 'Qualité - Section analytique comptable', 'v_contrats_mois_1', 'DISTINCT CASE WHEN section_analytique_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Section analytique comptable', 'COUNT', '', 0, 'Section analytique comptable', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SAGE', 'Somme Ages pour Age moyen', 'v_contrats_mois_1', 'DISTINCT ARRAY[salarie_id::numeric, age_id::numeric]', '1', 'Somme Ages pour Age moyen', 'base.cti_sum_distinct_on', '#,0', 0, 'Somme Ages pour Age moyen', '1', ' ', ' ', ' ', ' ', '1', 'CTI_AGESUM', 'CTI_NDSAL', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SAL60', 'Nombre de salariés 60 ans et +', 'v_contrats_mois_1', 'DISTINCT CASE WHEN rhp_age_id >= 60 THEN salarie_id ELSE null END', '1', 'Salariés 60 ans et +', 'COUNT', '', 0, 'Nombre de salariés 60 ans et +', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SALCHGMOY', 'Salaire Moyen Chargé', '*CALC', 'base.cti_division([1], [2])', '1', 'Salaire Chargé Moyen', '*CALC', '', 0, 'Salaire Chargé Moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTINETAPAYER', 'CTI_ETPPAYE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SALCHGMOYH', 'Salaire Horaire Chargé Moyen', '*CALC', 'base.cti_division([1], [2])', '1', 'Salaire Chargé Moyen', '*CALC', '', 0, 'Salaire Chargé Moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTIMASSMOY', 'CTIHP', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SALPARTISSP', 'Salarié partis sur la période', 'v_contrats_mois_1', 'DISTINCT (CASE WHEN nombre_departs = 1 THEN salarie_id ELSE null END)', '1', 'Salarié partis /période', 'COUNT', '', 0, 'Salarié partis sur la période', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SAP', 'Qualité - Section analytique paie', 'v_contrats_mois_1', 'DISTINCT CASE WHEN section_analytique_paie_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Section analytique paie', 'COUNT', '', 0, 'Section analytique paie', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SEP', 'Séparateur', 'SEP', '', '1', '', 'SUM', '', 0, '', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SER', 'Qualité - Service', 'v_contrats_mois_1', 'DISTINCT CASE WHEN service_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Service', 'COUNT', '', 0, 'Service', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SEX', 'Qualité - Sexe', 'v_contrats_mois_1', 'DISTINCT CASE WHEN sexe_id = 0 THEN salarie_id ELSE null END', '1', 'Sexe', 'COUNT', '', 0, 'Sexe', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SFA', 'Qualité - Situation de famille', 'v_contrats_mois_1', 'DISTINCT CASE WHEN situation_famille_id = 0 THEN salarie_id ELSE null END', '1', 'Situation de famille', 'COUNT', '', 0, 'Situation de famille', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SIN', 'Qualité - Société d''interim', 'v_contrats_mois_1', 'DISTINCT CASE WHEN societe_interim_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Société d''interim', 'COUNT', '', 0, 'Société d''interim', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_SPE', 'Qualité - Spécialité', 'v_contrats_mois_1', 'DISTINCT CASE WHEN specialite_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Spécialité', 'COUNT', '', 0, 'Spécialité', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_STA', 'Qualité - Statut', 'v_contrats_mois_1', 'DISTINCT CASE WHEN statut_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Statut', 'COUNT', '', 0, 'Statut', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_TCNT', 'Qualité - Type de contrat', 'v_contrats_mois_1', 'DISTINCT CASE WHEN type_contrat_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Type de contrat', 'COUNT', '', 0, 'Type de contrat', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_THO', 'Qualité - Type horaire', 'v_contrats_mois_1', 'DISTINCT CASE WHEN type_horaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Type horaire', 'COUNT', '', 0, 'Type horaire', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_TRACDI', 'Transformation CDI', 'v_contrats_mois_1', 'DISTINCT case when nombre_transformation_cdi = ''1'' then salarie_id else null end', '1', 'Transformation CDI', 'COUNT', '', 0, 'Transformation CDI', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_TTT', 'Qualité - Type de temps de travail', 'v_contrats_mois_1', 'DISTINCT CASE WHEN type_temps_travail_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Type de temps de travail', 'COUNT', '', 0, 'Type de temps de travail', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''),
(1, 'CTI_UFO', 'Qualité - Unité fonctionnelle', 'v_contrats_mois_1', 'DISTINCT CASE WHEN unite_fonctionnelle_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END', '1', 'Unité fonctionnelle', 'COUNT', '', 0, 'Unité fonctionnelle', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')
;
-- 3/3 : Màj de la table iCTI
DELETE FROM rh.t_indicateurs
USING
(
SELECT code, MIN(oid) AS minoid FROM rh.t_indicateurs WHERE code <> '' GROUP BY 1 HAVING count(*) > 1
) subview
WHERE t_indicateurs.code = subview.code AND t_indicateurs.oid <> subview.minoid
;
UPDATE rh.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 rh.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 <> 0 AND code NOT IN (SELECT code FROM rh.t_indicateurs WHERE code IS NOT NULL)
;
UPDATE rh.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 rh.t_indicateurs t_indicateurs_1 ON (w_dbsetup.indicateur_associe_1_code = t_indicateurs_1.code AND w_dbsetup.indicateur_associe_1_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_2 ON (w_dbsetup.indicateur_associe_2_code = t_indicateurs_2.code AND w_dbsetup.indicateur_associe_2_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_3 ON (w_dbsetup.indicateur_associe_3_code = t_indicateurs_3.code AND w_dbsetup.indicateur_associe_3_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_4 ON (w_dbsetup.indicateur_associe_4_code = t_indicateurs_4.code AND w_dbsetup.indicateur_associe_4_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_5 ON (w_dbsetup.indicateur_associe_5_code = t_indicateurs_5.code AND w_dbsetup.indicateur_associe_5_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_6 ON (w_dbsetup.indicateur_associe_6_code = t_indicateurs_6.code AND w_dbsetup.indicateur_associe_6_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_7 ON (w_dbsetup.indicateur_associe_7_code = t_indicateurs_7.code AND w_dbsetup.indicateur_associe_7_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_8 ON (w_dbsetup.indicateur_associe_8_code = t_indicateurs_8.code AND w_dbsetup.indicateur_associe_8_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_9 ON (w_dbsetup.indicateur_associe_9_code = t_indicateurs_9.code AND w_dbsetup.indicateur_associe_9_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_10 ON (w_dbsetup.indicateur_associe_10_code = t_indicateurs_10.code AND w_dbsetup.indicateur_associe_10_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_11 ON (w_dbsetup.indicateur_associe_11_code = t_indicateurs_11.code AND w_dbsetup.indicateur_associe_11_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_12 ON (w_dbsetup.indicateur_associe_12_code = t_indicateurs_12.code AND w_dbsetup.indicateur_associe_12_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_13 ON (w_dbsetup.indicateur_associe_13_code = t_indicateurs_13.code AND w_dbsetup.indicateur_associe_13_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_14 ON (w_dbsetup.indicateur_associe_14_code = t_indicateurs_14.code AND w_dbsetup.indicateur_associe_14_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_15 ON (w_dbsetup.indicateur_associe_15_code = t_indicateurs_15.code AND w_dbsetup.indicateur_associe_15_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_16 ON (w_dbsetup.indicateur_associe_16_code = t_indicateurs_16.code AND w_dbsetup.indicateur_associe_16_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_17 ON (w_dbsetup.indicateur_associe_17_code = t_indicateurs_17.code AND w_dbsetup.indicateur_associe_17_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_18 ON (w_dbsetup.indicateur_associe_18_code = t_indicateurs_18.code AND w_dbsetup.indicateur_associe_18_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_19 ON (w_dbsetup.indicateur_associe_19_code = t_indicateurs_19.code AND w_dbsetup.indicateur_associe_19_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_20 ON (w_dbsetup.indicateur_associe_20_code = t_indicateurs_20.code AND w_dbsetup.indicateur_associe_20_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_reference ON (w_dbsetup.indicateur_reference_code = t_indicateurs_reference.code AND w_dbsetup.indicateur_reference_code <> '')
WHERE t_indicateurs.code = w_dbsetup.code
AND (indicateur_associe_1_code <> '' OR
indicateur_associe_2_code <> '' OR
indicateur_associe_3_code <> '' OR
indicateur_reference_code <> '')
;
SELECT base.cti_reorganize_indicateurs('rh')
;

+ 73
- 0
db/data/dbdata_rh_t_listes.SQL View File

@ -0,0 +1,73 @@
-- 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.texte,
t_listes.chapitre,
t_listes.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
rh.t_listes,
rh.t_listes_tables
WHERE 1=1
AND is_cti = '1'
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,
texte,
chapitre,
code,
is_cti,
show_omit,
utilisateur_createur,
est_partagee_modification,
table_name
)
VALUES
(1, 'Primes à périodicité non mensuelle - Bilan Social', '', 'CTI_BS_PPNM', '1', '1', '*CTI', '1', 't_rubriques'),
(1, 'Eléments exceptionnels : Rupture de contrat : OD/Net.', 'Elements exceptionnels', 'CTI_EXP_CNT', '1', '1', '*CTI', '1', 't_rubriques'),
(1, 'IJSS : Payé SS / OD/Net.', 'Elements exceptionnels', 'CTI_EXP_IJS', '1', '1', '*CTI', '1', 't_rubriques'),
(1, 'Eléments exceptionnels : Prime de précarité', 'Elements exceptionnels', 'CTI_EXP_PRE', '1', '1', '*CTI', '1', 't_rubriques'),
(1, 'Eléments exceptionnels : Retraite', 'Elements exceptionnels', 'CTI_EXP_RET', '1', '1', '*CTI', '1', 't_rubriques'),
(1, 'Elements exceptionnels Retraite et rupture.', 'Elements exceptionnels', 'CTI_EXP_RRU', '1', '1', '*CTI', '1', 't_rubriques'),
(1, 'Heures contrat', 'Paramétrage', 'CTI_HCNT', '1', '0', '*CTI', '1', 't_rubriques'),
(1, 'Pegase forfaits jours', 'Paramétrage', 'CTI_PEGASE_FTJ', '1', '0', '*CTI', '1', 't_rubriques')
;
-- 3/3 : Màj de la table iCTI
UPDATE rh.t_listes SET
texte = w_dbsetup.texte,
chapitre = w_dbsetup.chapitre,
table_id = t_listes_tables.oid,
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
FROM w_dbsetup, rh.t_listes_tables
WHERE w_dbsetup.table_name = t_listes_tables.name and t_listes.code = w_dbsetup.code
;
INSERT INTO rh.t_listes(code, texte, chapitre, table_id, is_cti, show_omit, utilisateur_createur, est_partagee_modification)
SELECT w_dbsetup.code, w_dbsetup.texte, w_dbsetup.chapitre, t_listes_tables.oid, w_dbsetup.is_cti, w_dbsetup.show_omit, w_dbsetup.utilisateur_createur, w_dbsetup.est_partagee_modification
FROM w_dbsetup, rh.t_listes_tables
WHERE 1=1
AND w_dbsetup.table_name = t_listes_tables.name
AND w_dbsetup.code NOT IN (SELECT code FROM rh.t_listes)
AND w_dbsetup.texte NOT LIKE '*SUPPRIME%'
;
DELETE FROM rh.t_listes WHERE texte like '*SUPPRIME%' AND is_cti = '1'
;

+ 473
- 0
db/data/dbdata_rh_t_listes_tables.SQL View File

@ -0,0 +1,473 @@
-- 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 rh.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_ages', 'Age', 'SELECT t_ages.oid, t_ages.code, t_ages.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_ages LEFT JOIN rh.p_oids ON (t_ages.oid = p_oids.oid AND code_table = ''ages'')
WHERE t_ages.oid > 0
ORDER BY t_ages.code', 'AGE'),
(1, 't_section_analytique', 'Section analytique NG', 'SELECT t_section_analytique.oid,
t_section_analytique.code,
t_section_analytique.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_section_analytique
LEFT JOIN rh.p_oids ON (t_section_analytique.oid = p_oids.oid AND code_table = ''section_analytique'')
WHERE t_section_analytique.oid > 0
ORDER BY t_section_analytique.code', 'ANA'),
(1, 't_anciennetes_annee', 'Ancienneté', 'SELECT t_anciennetes_annee.oid, t_anciennetes_annee.code, t_anciennetes_annee.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_anciennetes_annee LEFT JOIN rh.p_oids ON (t_anciennetes_annee.oid = p_oids.oid AND code_table = ''anciennete_annee'')
ORDER BY t_anciennetes_annee.code', 'ANC'),
(1, 't_accident_circonstance', '[DICT.RH.CIRCONSTANCE] accident du travail', 'SELECT t_accident_circonstance.oid,
t_accident_circonstance.code,
t_accident_circonstance.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_accident_circonstance
LEFT JOIN rh.p_oids ON (t_accident_circonstance.oid = p_oids.oid AND code_table = ''accident_circonstance'')
WHERE t_accident_circonstance.oid > 0
ORDER BY t_accident_circonstance.code', 'ATC'),
(1, 't_accident_lieu', '[DICT.RH.LIEU] accident du travail', 'SELECT t_accident_lieu.oid,
t_accident_lieu.code,
t_accident_lieu.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_accident_lieu
LEFT JOIN rh.p_oids ON (t_accident_lieu.oid = p_oids.oid AND code_table = ''accident_lieu'')
WHERE t_accident_lieu.oid > 0
ORDER BY t_accident_lieu.code', 'ATL'),
(1, 't_accident_nature', 'Nature accident du travail', 'SELECT t_accident_nature.oid,
t_accident_nature.code,
t_accident_nature.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_accident_nature
LEFT JOIN rh.p_oids ON (t_accident_nature.oid = p_oids.oid AND code_table = ''accident_nature'')
WHERE t_accident_nature.oid > 0
ORDER BY t_accident_nature.code', 'ATN'),
(1, 't_accident_siege', 'Siège accident du travail', 'SELECT t_accident_siege.oid,
t_accident_siege.code,
t_accident_siege.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_accident_siege
LEFT JOIN rh.p_oids ON (t_accident_siege.oid = p_oids.oid AND code_table = ''accident_siege'')
WHERE t_accident_siege.oid > 0
ORDER BY t_accident_siege.code', 'ATS'),
(1, 't_categorie_conge', 'Catégorie de congé', 'SELECT t_categorie_conge.oid,
t_categorie_conge.code,
t_categorie_conge.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_categorie_conge
LEFT JOIN rh.p_oids ON (t_categorie_conge.oid = p_oids.oid AND code_table = ''categorie_conge'')
WHERE t_categorie_conge.oid > 0
ORDER BY t_categorie_conge.code', 'CAC'),
(1, 't_cadre_emploi', 'Cadre d''emploi', 'SELECT t_cadre_emploi.oid,
t_cadre_emploi.code,
t_cadre_emploi.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_cadre_emploi
LEFT JOIN rh.p_oids ON (t_cadre_emploi.oid = p_oids.oid AND code_table = ''cadre_emploi'')
WHERE t_cadre_emploi.oid > 0
ORDER BY t_cadre_emploi.code', 'CAE'),
(1, 't_categorie_statutaire', 'Catégorie statutaire', 'SELECT t_categorie_statutaire.oid,
t_categorie_statutaire.code,
t_categorie_statutaire.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_categorie_statutaire
LEFT JOIN rh.p_oids ON (t_categorie_statutaire.oid = p_oids.oid AND code_table = ''categorie_statutaire'')
WHERE t_categorie_statutaire.oid > 0
ORDER BY t_categorie_statutaire.code', 'CAS'),
(1, 't_codes_emploi', '[DICT.RH.CODE_EMPLOI]', 'SELECT t_codes_emploi.oid, t_codes_emploi.code, t_codes_emploi.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_codes_emploi LEFT JOIN rh.p_oids ON (t_codes_emploi.oid = p_oids.oid AND code_table = ''codes_emploi'')
WHERE t_codes_emploi.oid > 0
ORDER BY t_codes_emploi.code', 'CEM'),
(1, 't_compte_imputation', 'Compte d''imputation', 'SELECT t_compte_imputation.oid,
t_compte_imputation.code,
t_compte_imputation.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_compte_imputation
LEFT JOIN rh.p_oids ON (t_compte_imputation.oid = p_oids.oid AND code_table = ''compte_imputation'')
WHERE t_compte_imputation.oid > 0
ORDER BY t_compte_imputation.code', 'COI'),
(1, 't_code_cotisation', 'Code cotisation', 'SELECT t_code_cotisation.oid,
t_code_cotisation.code,
t_code_cotisation.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_code_cotisation
LEFT JOIN rh.p_oids ON (t_code_cotisation.oid = p_oids.oid AND code_table = ''code_cotisation'')
WHERE t_code_cotisation.oid > 0
ORDER BY t_code_cotisation.code', 'COT'),
(1, 't_codes_postaux', 'Code postal', 'SELECT t_codes_postaux.oid, t_codes_postaux.code, t_codes_postaux.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_codes_postaux LEFT JOIN rh.p_oids ON (t_codes_postaux.oid = p_oids.oid AND code_table = ''codes_postaux'')
WHERE t_codes_postaux.oid > 0
ORDER BY t_codes_postaux.code', 'CPO'),
(1, 't_compte', 'Compte', 'SELECT t_compte.oid,
t_compte.code,
t_compte.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_compte
LEFT JOIN rh.p_oids ON (t_compte.oid = p_oids.oid AND code_table = ''compte'')
WHERE t_compte.oid > 0
ORDER BY t_compte.code', 'CPT'),
(1, 't_categories_socio_professionnelles', '[DICT.RH.CATEGORIE_SOC_PRO]', 'SELECT t_categories_socio_professionnelle.oid, t_categories_socio_professionnelle.code, t_categories_socio_professionnelle.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_categories_socio_professionnelle LEFT JOIN rh.p_oids ON (t_categories_socio_professionnelle.oid = p_oids.oid AND code_table = ''categories_socio_professionnelle'')
WHERE t_categories_socio_professionnelle.oid > 0
ORDER BY t_categories_socio_professionnelle.code', 'CSC'),
(1, 't_etablissements', 'Etablissement', 'SELECT t_etablissements.oid,
t_etablissements.code,
t_etablissements.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_etablissements
LEFT JOIN rh.p_oids ON (t_etablissements.oid = p_oids.oid AND code_table = ''etablissements'')
WHERE t_etablissements.oid > 0
ORDER BY t_etablissements.code', 'ETS'),
(1, 't_filiere', 'Filière', 'SELECT t_filiere.oid,
t_filiere.code,
t_filiere.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_filiere
LEFT JOIN rh.p_oids ON (t_filiere.oid = p_oids.oid AND code_table = ''filiere'')
WHERE t_filiere.oid > 0
ORDER BY t_filiere.code', 'FIL'),
(1, 't_liste_formations', 'Liste des formations', 'SELECT t_liste_formations.oid,
t_liste_formations.code,
t_liste_formations.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_liste_formations
LEFT JOIN rh.p_oids ON (t_liste_visites.oid = p_oids.oid AND code_table = ''liste_formations'')
WHERE t_liste_formations.oid > 0
ORDER BY t_liste_formations.code', 'FOR'),
(1, 't_commission_paritaire', 'Groupe de commission paritaire', 'SELECT t_commission_paritaire.oid,
t_commission_paritaire.code,
t_commission_paritaire.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_commission_paritaire
LEFT JOIN rh.p_oids ON (t_commission_paritaire.oid = p_oids.oid AND code_table = ''commission_paritaire'')
WHERE t_commission_paritaire.oid > 0
ORDER BY t_commission_paritaire.code', 'GCP'),
(1, 't_groupes_cotisant', '[DICT.RH.GROUPE_COTISANT]', 'SELECT t_groupes_cotisant.oid, t_groupes_cotisant.code, t_groupes_cotisant.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_groupes_cotisant LEFT JOIN rh.p_oids ON (t_groupes_cotisant.oid = p_oids.oid AND code_table = ''groupes_cotisant'')
WHERE t_groupes_cotisant.oid > 0
ORDER BY t_groupes_cotisant.code', 'GCT'),
(1, 't_grilles_groupes', '[DICT.RH.GROUPE_GRILLE]', 'SELECT t_grilles_groupes.oid,
t_grilles_groupes.code,
t_grilles_groupes.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_grilles_groupes
LEFT JOIN rh.p_oids ON (t_grilles_groupes.oid = p_oids.oid AND code_table = ''grilles_groupes'')
WHERE t_grilles_groupes.oid > 0
ORDER BY t_grilles_groupes.code', 'GRG'),
(1, 't_grilles', '[DICT.RH.GRILLE]', 'SELECT t_grilles.oid,
t_grilles.code,
t_grilles.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_grilles
LEFT JOIN rh.p_oids ON (t_grilles.oid = p_oids.oid AND code_table = ''grilles'')
WHERE t_grilles.oid > 0
ORDER BY t_grilles.code', 'GRI'),
(1, 't_lettre_budgetaire', 'Lettre Budgétaire', 'SELECT t_lettre_budgetaire.oid,
t_lettre_budgetaire.code,
t_lettre_budgetaire.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_lettre_budgetaire
LEFT JOIN rh.p_oids ON (t_lettre_budgetaire.oid = p_oids.oid AND code_table = ''lettre_budgetaire'')
WHERE t_lettre_budgetaire.oid > 0
ORDER BY t_lettre_budgetaire.code', 'LEB'),
(1, 't_motifs_arret', 'Motif [DICT.RH.ARRET_TRAVAIL#2]', 'SELECT t_motifs_arret.oid,
t_motifs_arret.code,
t_motifs_arret.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_motifs_arret
LEFT JOIN rh.p_oids ON (t_motifs_arret.oid = p_oids.oid AND code_table = ''motifs_arret'')
WHERE t_motifs_arret.oid > 0
ORDER BY t_motifs_arret.code', 'MOA'),
(1, 't_motifs_debut_contrat', '[DICT.RH.MOTIF_DEBUT#1] [DICT.RH.CONTRAT#2]', 'SELECT t_motifs_debut_contrat.oid, t_motifs_debut_contrat.code, t_motifs_debut_contrat.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_motifs_debut_contrat LEFT JOIN rh.p_oids ON (t_motifs_debut_contrat.oid = p_oids.oid AND code_table = ''motifs_debut_contrat'')
WHERE t_motifs_debut_contrat.oid > 0
ORDER BY t_motifs_debut_contrat.code', 'MTD'),
(1, 't_motifs_fin_contrat', 'Motif fin [DICT.RH.CONTRAT#2]', 'SELECT t_motifs_fin_contrat.oid, t_motifs_fin_contrat.code, t_motifs_fin_contrat.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_motifs_fin_contrat LEFT JOIN rh.p_oids ON (t_motifs_fin_contrat.oid = p_oids.oid AND code_table = ''motifs_fin_contrat'')
WHERE t_motifs_fin_contrat.oid > 0
ORDER BY t_motifs_fin_contrat.code', 'MTF'),
(1, 't_motifs_visite', 'Motif visite médicale', 'SELECT t_motifs_visite.oid,
t_motifs_visite.code,
t_motifs_visite.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_motifs_visite
LEFT JOIN rh.p_oids ON (t_motifs_visite.oid = p_oids.oid AND code_table = ''motifs_visite'')
WHERE t_motifs_visite.oid > 0
ORDER BY t_motifs_visite.code', 'MVM'),
(1, 't_nationalites', 'Nationalité', 'SELECT t_nationalites.oid,
t_nationalites.code,
t_nationalites.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_nationalites
LEFT JOIN rh.p_oids ON (t_nationalites.oid = p_oids.oid AND code_table = ''nationalites'')
WHERE t_nationalites.oid > 0
ORDER BY t_nationalites.code', 'NAT'),
(1, 't_organismes_cotisation', '[DICT.RH.ORGANISME_COTISATION]', 'SELECT t_organismes_cotisation.oid, t_organismes_cotisation.code, t_organismes_cotisation.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_organismes_cotisation LEFT JOIN rh.p_oids ON (t_organismes_cotisation.oid = p_oids.oid AND code_table = ''organismes_cotisation'')
WHERE t_organismes_cotisation.oid > 0
ORDER BY t_organismes_cotisation.code', 'ORC'),
(1, 't_planning_type_absence', 'Type d''absences (planning)', 'SELECT t_planning_type_absence.oid,
t_planning_type_absence.code,
t_planning_type_absence.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_planning_type_absence
LEFT JOIN rh.p_oids ON (t_planning_type_absence.oid = p_oids.oid AND code_table = ''planning_type_absence'')
WHERE t_planning_type_absence.oid > 0
ORDER BY t_planning_type_absence.code', 'PAB'),
(1, 't_planning_code_horaire', 'Code Horaire (planning)', 'SELECT t_planning_code_horaire.oid,
t_planning_code_horaire.code,
t_planning_code_horaire.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_planning_code_horaire
LEFT JOIN rh.p_oids ON (t_planning_code_horaire.oid = p_oids.oid AND code_table = ''planning_code_horaire'')
WHERE t_planning_code_horaire.oid > 0
ORDER BY t_planning_code_horaire.code', 'PCH'),
(1, 't_planning_niveau', '[DICT.RH.NIVEAU#3]', 'SELECT t_planning_niveau.oid,
t_planning_niveau.code,
t_planning_niveau.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_planning_niveau
LEFT JOIN rh.p_oids ON (t_planning_niveau.oid = p_oids.oid AND code_table = ''t_planning_niveau'')
WHERE t_planning_niveau.oid > 0
ORDER BY t_planning_niveau.code', 'PNI'),
(1, 't_population', 'Population', 'SELECT t_population.oid,
t_population.code,
t_population.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_population
LEFT JOIN rh.p_oids ON (t_population.oid = p_oids.oid AND code_table = ''population'')
WHERE t_population.oid > 0
ORDER BY t_population.code', 'POP'),
(1, 't_planning_qualification', 'Qualifications (planning)', 'SELECT t_planning_qualification.oid,
t_planning_qualification.code,
t_planning_qualification.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_planning_qualification
LEFT JOIN rh.p_oids ON (t_planning_qualification.oid = p_oids.oid AND code_table = ''planning_qualification'')
WHERE t_planning_qualification.oid > 0
ORDER BY t_planning_qualification.code', 'PQU'),
(1, 't_planning_service', 'Services (planning)', 'SELECT t_planning_service.oid,
t_planning_service.code,
t_planning_service.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_planning_service
LEFT JOIN rh.p_oids ON (t_planning_service.oid = p_oids.oid AND code_table = ''planning_service'')
WHERE t_planning_service.oid > 0
ORDER BY t_planning_service.code', 'PSE'),
(1, 't_qualifications', 'Qualification', 'SELECT t_qualifications.oid, t_qualifications.code, t_qualifications.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_qualifications LEFT JOIN rh.p_oids ON (t_qualifications.oid = p_oids.oid AND code_table = ''qualifications'')
WHERE t_qualifications.oid > 0
ORDER BY t_qualifications.code', 'QUA'),
(1, 't_rubriques', 'Rubrique', 'SELECT t_rubriques.oid, t_rubriques.code, t_rubriques.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_rubriques LEFT JOIN rh.p_oids ON (t_rubriques.oid = p_oids.oid AND code_table = ''rubriques'')
WHERE t_rubriques.oid > 0
ORDER BY t_rubriques.code', 'RUP'),
(1, 't_sections_analytiques', '[DICT.RH.SECTION_ANA_CPT#1]', 'SELECT t_sections_analytiques.oid, t_sections_analytiques.code, t_sections_analytiques.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_sections_analytiques LEFT JOIN rh.p_oids ON (t_sections_analytiques.oid = p_oids.oid AND code_table = ''sections_analytiques'')
WHERE t_sections_analytiques.oid > 0
ORDER BY t_sections_analytiques.code', 'SAC'),
(1, 'p_salaries', '[DICT.RH.SALARIE]', 'SELECT v_salaries_1.salarie_id AS oid, v_salaries_1.salarie_code AS code, v_salaries_1.salarie_texte || CASE WHEN date_fin_contrat < ''20991231'' THEN '' ('' || date_fin_contrat || '')'' ELSE '''' END AS texte, qualification_texte || '' - ''|| service_texte as complement, ''O''::text as utilise
FROM rh.v_salaries_1
ORDER BY v_salaries_1.salarie_code', 'SAL'),
(1, 't_sections_analytiques_paie', '[DICT.RH.SECTION_ANA_PAIE#1]', 'SELECT t_sections_analytiques_paie.oid, t_sections_analytiques_paie.code, t_sections_analytiques_paie.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_sections_analytiques_paie LEFT JOIN rh.p_oids ON (t_sections_analytiques_paie.oid = p_oids.oid AND code_table = ''sections_analytiques_paie'')
WHERE t_sections_analytiques_paie.oid > 0
ORDER BY t_sections_analytiques_paie.code', 'SAP'),
(1, 't_services', '[DICT.RH.SERVICE]', 'SELECT t_services.oid, t_services.code, t_services.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_services LEFT JOIN rh.p_oids ON (t_services.oid = p_oids.oid AND code_table = ''services'')
WHERE t_services.oid > 0
ORDER BY t_services.code', 'SER'),
(1, 't_specialites', 'Spécialité', 'SELECT t_specialites.oid, t_specialites.code, t_specialites.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_specialites LEFT JOIN rh.p_oids ON (t_specialites.oid = p_oids.oid AND code_table = ''specialites'')
WHERE t_specialites.oid > 0
ORDER BY t_specialites.code', 'SPE'),
(1, 't_statuts', '[DICT.RH.STATUT]', 'SELECT t_statuts.oid,
t_statuts.code,
t_statuts.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_statuts
LEFT JOIN rh.p_oids ON (t_statuts.oid = p_oids.oid AND code_table = ''statuts'')
WHERE t_statuts.oid > 0
ORDER BY t_statuts.code', 'STA'),
(1, 't_types_contrat', '[DICT.RH.TYPE_CONTRAT]', 'SELECT t_types_contrat.oid, t_types_contrat.code, t_types_contrat.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_types_contrat LEFT JOIN rh.p_oids ON (t_types_contrat.oid = p_oids.oid AND code_table = ''types_contrat'')
WHERE t_types_contrat.oid > 0
ORDER BY t_types_contrat.code', 'TCN'),
(1, 't_types_horaire', 'Type horaire', 'SELECT t_types_horaire.oid, t_types_horaire.code, t_types_horaire.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise
FROM rh.t_types_horaire LEFT JOIN rh.p_oids ON (t_types_horaire.oid = p_oids.oid AND code_table = ''types_horaire'')
WHERE t_types_horaire.oid > 0
ORDER BY t_types_horaire.code', 'THO'),
(1, 't_types_temps_travail', 'Type temps travail', 'SELECT t_types_temps_travail.oid,
t_types_temps_travail.code,
t_types_temps_travail.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_types_temps_travail
LEFT JOIN rh.p_oids ON (t_types_temps_travail.oid = p_oids.oid AND code_table = ''types_temps_travail'')
WHERE t_types_temps_travail.oid > 0
ORDER BY t_types_temps_travail.code', 'TTT'),
(1, 't_unite_fonctionnelle', 'Unité fonctionnelle', 'SELECT t_unite_fonctionnelle.oid,
t_unite_fonctionnelle.code,
t_unite_fonctionnelle.texte,
''''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN ''O''
ELSE ''N''
END AS utilise
FROM rh.t_unite_fonctionnelle
LEFT JOIN rh.p_oids ON (t_unite_fonctionnelle.oid = p_oids.oid AND code_table = ''unite_fonctionnelle'')
WHERE t_unite_fonctionnelle.oid > 0
ORDER BY t_unite_fonctionnelle.code', 'UNF')
;
-- 3/3 : Màj de la table iCTI
UPDATE rh.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 rh.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 rh.t_listes_tables)
;
INSERT INTO rh.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 rh.t_listes_tables)
;

+ 49
- 0
db/data/dbdata_rh_t_rapports.SQL View File

@ -0,0 +1,49 @@
-- 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 rh.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_ESS_10', 'RH-Paie', '1', '1'),
(1, 'CTI_ESS_11', 'Rémunérations', '1', '1'),
(1, 'CTI_PF_AGG', 'CTI Portfolio', '1', '1'),
(1, 'CTI_QUA', 'Qualité des données', '1', '0'),
(1, 'RH1', 'Rapport personnalisé RH', '1', '0')
;
-- 3/3 : Màj de la table iCTI
UPDATE rh.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 rh.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 rh.t_rapports)
;
INSERT INTO rh.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 rh.t_rapports)
;

+ 270
- 0
db/data/dbdata_rh_t_rapports_rubriques.SQL View File

@ -0,0 +1,270 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_rapports.code AS rapport_code,
ind1.code AS indicateur_code,
t_rapports_rubriques.numero_rubrique,
t_rapports_rubriques.rapport_id,
t_rapports_rubriques.indicateur_id,
t_rapports_rubriques.entete,
t_rapports_rubriques.output_format,
t_rapports_rubriques.width,
t_rapports_rubriques.entete_etendue,
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.background_color,
t_rapports_rubriques.base_nationale,
t_rapports_rubriques.base_nationale_qualifiee,
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,
t_rapports_rubriques.indicateur_associe_id,
ind2.code AS indicateur_associe_code
FROM rh.t_rapports_rubriques
JOIN rh.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
JOIN rh.t_indicateurs ind1 ON t_rapports_rubriques.indicateur_id = ind1.oid
LEFT JOIN rh.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'
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(
rapport_code,
indicateur_code,
numero_rubrique,
rapport_id,
indicateur_id,
entete,
output_format,
width,
entete_etendue,
periode_reference,
row_height,
padding,
font_size,
font_weight,
border_thickness,
color,
background_color,
base_nationale,
base_nationale_qualifiee,
viewlink,
viewlink_label,
viewlink_param,
picto_enabled,
positif_is_good,
indicateur_associe_id,
indicateur_associe_code
)
VALUES
('CTI_ESS_10', 'CTINBJARRET', 30, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par code emploi et salarié', 'GROUPBY=CEM&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_AGEMOY', 12, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000023', 'Pyramide des âges par Age et salarié.', 'GROUPBY=AGE&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_CDDSALP', 11, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par type de contrat et catégorie socio-professionnelle', 'GROUPBY=TCN&GROUPBY_2=CSC&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_DBTCDD', 21, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par spécialité et salarié', 'GROUPBY=SPE&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#LSCDD&VIEWTAB=2', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_DBTCDI', 20, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par type de temps de travail et salarié', 'GROUPBY=TTT&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_DUREEMOYARRETS', 34, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par code sexe et salarié', 'GROUPBY=SEX&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#DTCTI_CDD&VIEWTAB=2', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_EFF1ERJANV', 7, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par spécialité', 'GROUPBY=SPE', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_EFF31DEV', 8, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par code emploi', 'GROUPBY=CEM', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_EFFPERM', 6, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par type de temps de travail', 'GROUPBY=TTT', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_EMBMS25', 9, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Salarié de mois de 25 ans par qualification et par salarié', 'GROUPBY=QUA&GROUPBY_2=SAL&AGE=IN&AGE_INT=&AGE_INT2=25&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_FINCNT', 22, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par code emploi et salarié', 'GROUPBY=CEM&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_FINCNTCDD', 24, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse des CDD par indice et salarié', 'GROUPBY=GRI&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#LSCDD&VIEWTAB=2', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_FINCNTCDI', 23, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse des CDI par code emploi et salarié', 'GROUPBY=CEM&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#LSCDI&VIEWTAB=2', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBARRET', 26, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par catégorie socio-professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBARRETMOY', 35, 1, 1, 'Nombre d''arrêts moyen (sur total des salariés)', '', 0, 'Nombre d''arrêts moyen (sur total des salariés)', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par catégorie socio-professionnelle', 'GROUPBY=CSC', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBARRET_ACT', 29, 1, 1, 'Dont accident du travail', '', 0, 'Dont accident du travail', ' ', 22, 20, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par spécialité et salarié', 'GROUPBY=SPE&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBARRET_MAL', 27, 1, 1, 'Dont maladie', '', 0, 'Dont maladie', ' ', 22, 20, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par motif d''arrêt et salarié', 'GROUPBY=MOA&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBARRET_MAT', 28, 1, 1, 'Dont maternité', '', 0, 'Dont maternité', ' ', 22, 20, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par service et salarié', 'GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBCNT', 16, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par catégorie socio-professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBCONTRATCDD', 18, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par service et salarié', 'GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBCONTRATCDI', 17, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par qualification et salarié', 'GROUPBY=QUA&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBJARRET_ACT', 33, 1, 1, 'Dont accident du travail', '', 0, 'Dont accident du travail', ' ', 22, 20, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par tranche d''age du bilan social et salarié', 'GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBJARRET_MAL', 31, 1, 1, 'Dont maladie', '', 0, 'Dont maladie', ' ', 22, 20, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par indice et salarié', 'GROUPBY=GRI&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBJARRET_MAT', 32, 1, 1, 'Dont maternité', '', 0, 'Dont maternité', ' ', 22, 20, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000008', 'Analyse par qualification et salarié', 'GROUPBY=QUA&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBSALCNT', 2, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par catégorie socio-professionnelle', 'GROUPBY=CSC', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NBSALCNTFR', 14, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000023', 'Analyse par tranche d''âge du bilan social', 'GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NOUVSALS', 3, 1, 1, '', '', 0, 'Nouveaux salariés', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par qualification', 'GROUPBY=QUA', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_NVXCNT', 19, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par type de contrat et salarié', 'GROUPBY=TCN&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_PCTFEMMECNT', 13, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par classe d''âge du bilan social et salarié', 'GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_ROTATIONEMP', 5, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par type de contrat et qualification', 'GROUPBY=TCN', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_SAL60', 10, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Salariés de 60 ans et + par qualification et par salarié', 'GROUPBY=QUA&GROUPBY_2=SAL&AGE=IN&AGE_INT=60&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_SALPARTISSP', 4, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000003', 'Analyse par service', 'GROUPBY=SER', '1', '1', 0, ''),
('CTI_ESS_10', 'CTI_SEP', 1, 1, 1, '', '', 0, 'Salariés', ' ', 26, 0, 14, 'bold ', 2, '#9B59B6 ', '0xCCCCCC ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_ESS_10', 'CTI_SEP', 15, 1, 1, '', '', 0, 'Contrats', ' ', 26, 0, 14, 'bold ', 2, '#9B59B6 ', '0xCCCCCC ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_ESS_10', 'CTI_SEP', 25, 1, 1, '', '', 0, 'Arrêts de travail', ' ', 26, 0, 14, 'bold ', 2, '#9B59B6 ', '0xCCCCCC ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_ESS_11', 'CTIAN', 12, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par Type de contrat et salarié', 'GROUPBY=TCN&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTICOTPAT', 16, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par rubrique de paie', 'GROUPBY=RUPCLS', '1', '1', 0, ''),
('CTI_ESS_11', 'CTICOTSAL ', 14, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par salarié', 'GROUPBY=SAL', '1', '1', 0, ''),
('CTI_ESS_11', 'CTIETPTHM', 6, 1, 1, 'ETP Travaillé', '', 0, 'ETP Travaillé', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par spécialité', 'GROUPBY=SPE', '0', '0', 0, ''),
('CTI_ESS_11', 'CTIHP', 3, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par catégorie socio-professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTIHT', 4, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par qualification', 'GROUPBY=QUA', '1', '1', 0, ''),
('CTI_ESS_11', 'CTIMASSMOY', 9, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par catégorie socio-professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTIMTMASSE', 8, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par catégorie socio-professionnelle', 'GROUPBY=CSC', '1', '1', 0, ''),
('CTI_ESS_11', 'CTINETAPAYER', 18, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par catégorie socio-professionnelle et type de contrat bilan social', 'GROUPBY=CSC&GROUPBY_2=TCNCLS9', '1', '1', 0, ''),
('CTI_ESS_11', 'CTINETIMPOS', 17, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par type de temps de travail et salarié', 'GROUPBY=TTT&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTIODNET', 15, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par contrat et section analytique comptable', 'GROUPBY=CNT&GROUPBY_2=SAC&GROUPBY_TAB=ARB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_BRUTMOYENETP', 11, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par service et salarié', 'GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_ETPREMMOY', 5, 1, 1, 'ETP Payé', '', 0, 'ETP Payé', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par service', 'GROUPBY=SER', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_FRIMPOS', 13, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par spécialité et salarié', 'GROUPBY=SPE&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_MHMC', 20, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par age bilan social et salarié', 'GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_MTBRUT', 10, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par qualification et salarié', 'GROUPBY=QUA&GROUPBY_2=SAL&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_MT_CNT', 27, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Rupture de contrat par service et salarié', 'GROUPBY=SER&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_CNT', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_MT_IJ', 29, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'IJSS par service et salarié', 'GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB&RUBRIQUE=#LICTI_EXP_IJS', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_MT_PRE', 25, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Précarité par service et salarié', 'GROUPBY=SER&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_PRE&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_MT_RET', 23, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Départ à la retraite par service et salarié', 'GROUPBY=SER&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_RET', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_NBIJSS', 28, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'IJSS par catégorie socio-professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB&RUBRIQUE=#LICTI_EXP_IJS', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_NBRUPT', 26, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Rupture de contrat par catégorie socio-professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_CNT', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_NBSAL', 2, 1, 1, 'Nombre de salariés', '', 0, 'Nombre de salariés', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par catégorie socio-professionnelle', 'GROUPBY=CSC', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_NB_PRE', 24, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Précarité par catégorie socio-professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_PRE&GROUPBY_TAB=TAB', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_NB_RET', 22, 1, 1, '', '', 0, '', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Départ à la retraite par catégorie socio--professionnelle et salarié', 'GROUPBY=CSC&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_RET', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_SALCHGMOY', 19, 1, 1, 'Net à Payer Moyen', '', 0, 'Net à Payer Moyen', ' ', 22, 10, 12, ' ', 0, ' ', ' ', '0', '0', 'RH000007', 'Analyse par catégorie socio-professionnelle et type de temps de travail', 'GROUPBY=CSC&GROUPBY_2=TTTCLS9', '1', '1', 0, ''),
('CTI_ESS_11', 'CTI_SEP', 1, 1, 1, '', '', 0, 'Historique de Paie', ' ', 26, 0, 14, 'bold ', 2, '#9B59B6 ', '0xcccccc ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_ESS_11', 'CTI_SEP', 7, 1, 1, '', '', 0, 'Masse Salariale', ' ', 26, 0, 14, 'bold ', 0, '#9B59B6 ', '0xcccccc ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_ESS_11', 'CTI_SEP', 21, 1, 1, '', '', 0, 'Evènements exceptionnels', ' ', 26, 0, 14, 'bold ', 2, '#9B59B6 ', '0xcccccc ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_QUA', 'CTI_CEM', 12, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_CPO', 7, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_CSP', 13, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_DNA', 4, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_GCO', 20, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_GGR', 21, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_GRI', 22, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_MDD', 10, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_MDF', 11, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_NAT', 5, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_NBSALCNT', 1, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_QUA', 14, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_SAC', 24, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_SAP', 23, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_SEP', 2, 1, 1, '', '', 0, 'Salarié', ' ', 0, 0, 12, 'bold ', 0, '0xffffff ', '0x2c3e50 ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_QUA', 'CTI_SEP', 8, 1, 1, '', '', 0, 'Contrat', ' ', 0, 0, 0, 'bold ', 0, '0xffffff ', '0x2c3e50 ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('CTI_QUA', 'CTI_SER', 15, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_SEX', 3, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_SFA', 6, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_SIN', 25, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_SPE', 16, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_STA', 17, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_TCNT', 9, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_THO', 19, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('CTI_QUA', 'CTI_TTT', 18, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTIHP', 6, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTIMASSMOY', 12, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTINBHOMME', 1, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTINBJARRET', 8, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTITA', 14, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTITB', 15, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_ETPW', 5, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_MTBRUT', 13, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_NBARRET', 7, 1, 1, '', '', 0, '', ' ', 0, 0, 0, ' ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_NBCNT', 3, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_NBFEMMEPAIE', 2, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_PCDD', 10, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_PCDI', 11, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', '0', '0', 0, ''),
('RH1', 'CTI_SEP', 4, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', ' ', ' ', 0, ''),
('RH1', 'CTI_SEP', 9, 1, 1, '', '', 0, '', ' ', 0, 0, 0, 'normal ', 0, ' ', ' ', '0', '0', '', '', '', ' ', ' ', 0, '')
;
-- 3/3 : Màj de la table iCTI
-- Sauvegarder les donnees sources pour rejouer le specifique
SELECT base.cti_verify_table_encoding('rh','t_rapports_rubriques')
;
DROP TABLE IF EXISTS w_specific_rapports_rubriques ;
CREATE TEMP TABLE w_specific_rapports_rubriques AS
SELECT t_rapports_rubriques.*
FROM rh.t_rapports_rubriques
JOIN rh.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
WHERE t_rapports.is_essentiel = '1'
;
-- Installer les donnees CTI
DELETE FROM rh.t_rapports_rubriques
WHERE 1=1
AND rapport_id IN (SELECT oid FROM rh.t_rapports WHERE is_cti = '1')
;
INSERT INTO rh.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 rh.t_rapports ON w_dbsetup.rapport_code = t_rapports.code
JOIN rh.t_indicateurs ind1 ON w_dbsetup.indicateur_code = ind1.code
LEFT JOIN rh.t_indicateurs ind2 ON w_dbsetup.indicateur_associe_code = ind2.code
;
-- Rejouer le specifique
UPDATE rh.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 <> ''
)
;

+ 56
- 0
db/data/dbdata_rh_t_vue_parametre.SQL View File

@ -0,0 +1,56 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT oid,
code,
texte,
array_to_string(data_code, '@') as data_code,
array_to_string(data_entete, '@') as data_entete,
array_to_string(data_format, '@') as data_format,
array_to_string(data_description, '@') as data_description,
position_ratio,
rang
FROM rh.t_vue_parametre
ORDER BY 2 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
oid,
code,
texte,
data_code,
data_entete,
data_format,
data_description,
position_ratio,
rang
)
VALUES
(1, 'BS_LDATA_2', 'CTI : Bilan social', 'NSAL@CNTTOT@NCDI@NCDD@NSALH@NSALF@AGEMOYDJ@EFFPERM@0@0@0@0@0@0@0', 'Nombre Salariés@Contrats total@Nombre CDI@Nombre CDD@Nombre hommes@Nombre Femmes@Age moyen@Effectif permanent', '#@#@#@#@#@#@#,0@#', 'Nombre de salarié total@Nombre de contrat total@Nombre contrats CDI@Nombre contrats CDD@Nombre salariés hommes@Nombre salariés femmes@Age moyen@Salariés titulaires d''un CDI à temps complet et présents sur l''ensemble de la période.', '000000000000000', 0),
(1, 'CT_LDATA_1', 'CTI : Effectif', 'NSAL@EFFPERM@ROTEMP@NSALH@NSALF@AGEMOYDJ@0@0@0@0@0@0@0@0@0', 'NB Salariées@Effectif permanent@Rotation de l''emploi@NB hommes@NB Femmes@Age moyen', '#@#@#%@#@#@#,0', 'Nombre de salarié total@Salariés titulaires d''un CDI à temps complet et présents sur l''ensemble de la période.@(nb d''entrées Ets. + nb de sorties Ets.) / 2 / nb de [DICT.RH.SALARIE#4] en début de période * 100@Nombre salariés hommes@Nombre salariés femmes@Age moyen', '000000000000000', 0),
(1, 'CT_LDATA_3', 'CTI : Contrat', 'NSAL@CNTTOT@NCDI@NCDD@CNTTERM@NHCNT@ETPTH@0@0@0@0@0@0@0@0', 'NB Salariées@Contrats total@Nombre CDI@Nombre CDD@Contrats terminés@Heures contrat@ETP contrat', '#@#@#@#@#@#,00@#,00', 'Nombre de salarié total@Nombre de contrat total@Nombre contrats CDI@Nombre contrats CDD@Contrats terminés@Nombre heures contrat@ETP Contrat', '000000000000000', 0),
(1, 'HP_LDATA_1', 'CTI : Livre de paie', 'NBSAL@MTMASSE@NBHP@NBHT@MTBRUT@MTCOTSALARIE@MTCOTPATRONALE@MTNETIMPOSABLE@MTNETAPAYER@0@0@0@0@0@0', 'NB Salariés@Masse sal.@Heures Payées@Heures Travaillées@Brut@Cot. Salariales@Cot. Patronales@Net imposable@Net à payer', '#@#E@#h@#h@#E@#E@#E@#E@#E', 'Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@Heures issues de la rubrique de paie paramétrée comme &#171;<i>Heures payées</i>&#187; dans la table des rubriques.@Heures paramétrées comme &#171;<i>travaillées</i>&#187; OU heures payées - heures paramétrées comme &#171;<i>Heures non travaillées</i>&#187;.@Montant BRUT@Montant Cotisations Salariales@Montant Cotisations Patronales@Montant Net Imposable@Montant Net à payer@0@0@0@0@0@0', '000000000000000', 0),
(1, 'HP_LDATA_2', 'CTI : Livre de paie ( Avec nombre et base )', 'NBSAL@MTMASSE@NBHP@NBHT@MTBRUT@MTCOTSALARIE@MTCOTPATRONALE@MTNETIMPOSABLE@MTNETAPAYER@NOMBRE@BASE@0@0@0@0', 'NB Salariés@Masse sal.@Heures Payées@Heures Travaillées@Brut@Cot. Salariales@Cot. Patronales@Net imposable@Net à payer@Nombre@Base', '#@#E@#h@#h@#E@#E@#E@#E@#E@#,0@#,0', 'Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@Heures issues de la rubrique de paie paramétrée comme &#171;<i>Heures payées</i>&#187; dans la table des rubriques.@Heures paramétrées comme &#171;<i>travaillées</i>&#187; OU heures payées - heures paramétrées comme &#171;<i>Heures non travaillées</i>&#187;.@Montant BRUT@Montant Cotisations Salariales@Montant Cotisations Patronales@Montant Net Imposable@Montant Net à payer@Nombre@Base@0@0@0@0', '000000000000000', 0),
(1, 'HP_LDATA_3', 'CTI : Décomposition Masse Salariale', 'NBSAL@MTMASSE@MTMASSEMOY@NBHP@MTBRUT@MTBRUTMOY@MTBRUTAVANTAGE@MTFRAISIMPOS@MTCOTPATRONALE@MTODNETPATRONALE@MTHORMOYCHAR@0@0@0@0', 'NB Salariés@Masse sal.@Masse sal. moyen@Heures Payées@Brut@Brut moyen@A. N.@F.I.@Cot. Patronales@OD/NET Patronales@Mnt h. moy. chargé', '#@#E@#E@#h@#E@#E@#E@#E@#E@#E@#,0E', 'Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@(<i>Masse salariale</i> &#247; <i>ETP payé</i>) &#247; Nb mois de la période.@Heures issues de la rubrique de paie paramétrée comme &#171;<i>Heures payées</i>&#187; dans la table des rubriques.@Montant BRUT@Montant BRUT Moyen@Montant Avantages en nature@Montant Frais imposables@Montant Cotisations Patronales@Montant OD NET Patronales@Montant horaire moyen chargé@0@0@0@0', '000000000000000', 0),
(1, 'HP_LDATA_4', 'CTI : Décomposition ETP', 'NBSAL@MTMASSE@MTMASSEMOY@NBETP@NBETPT@0@0@0@0@0@0@0@0@0@0', 'NB Salariés@Masse sal.@Masse sal. moyen@ETP Rémunéré@ETP travaillé', '#@#E@#E@#,00@#,00', 'Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@(<i>Masse salariale</i> &#247; <i>ETP payé</i>) &#247; Nb mois de la période.@Equivalent temps plein basé sur les <i>Heures payées</i>.&#xD;&#xD;Heures payées &#247; Base de calcul de l''ETP (par défaut 151,67 h.) &#247; Nb mois de la période.@Equivalent temps plein basé sur les <i>Heures travaillées</i>.&#xD;&#xD;Heures travaillées &#247; Base de calcul de l''ETP (par défaut 151,67 h.) &#247; Nb mois de la période.@0@0@0@0@0@0@0@0@0@0', '000000000000000', 0),
(1, 'HP_LDATA_5', 'CTI : Qualification', 'NBSAL@MTBRUT@MTCOTSALARIE@MTCOTPATRONALE@MTNETAPAYER@MTNETIMPOSABLE@MTMASSE@MTODNETSALARIE@0@0@0@0@0@0@0', 'NB Salariées@Montant Brut@Cotisations salariales@Cotisations patronales@Net à payer@Net imposable@Masse salariale@OD/net salariales', '#@#@#@#@#@#@#@#', 'Nombre de salarié @Montant BRUT@Montant cotisations salariales@Montant cotisations patronales@Montant net à payer@Montant net imposable@<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@Montant OD/net salariales@0@0@0@0@0@0@0', '000000000000000', 0),
(1, 'HP_LDATA_6', 'CTI : Brut / ETP Payé', 'NBSAL@MTBRUT@NBETP@0@0@0@0@0@0@0@0@0@0@0@0', 'NB Salariées@Montant Brut@ETP payé', '#@#@#,00', 'Nombre de salarié @Montant BRUT@Equivalent temps plein basé sur les Heures payées Heures payées Base de calcul de l''ETP (par défaut 151,67 h.) Nb mois de la période.@0@0@0@0@0@0@0@0@0@0@0', '000000000000000', 0)
;
-- 3/3 : Màj de la table iCTI
INSERT INTO rh.t_vue_parametre(code, texte, data_code, data_entete, data_format, data_description,position_ratio,rang)
SELECT code,
texte,
string_to_array(data_code, '@') as data_code,
string_to_array(data_entete, '@') as data_entete,
string_to_array(data_format, '@') as data_format,
string_to_array(data_description, '@') as data_description,
position_ratio,
rang
FROM w_dbsetup
WHERE 1=1
AND code NOT IN (SELECT code FROM rh.t_vue_parametre)
;

+ 103
- 0
db/data/dbdata_rh_t_widget_user_parameter.SQL View File

@ -0,0 +1,103 @@
-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup AS
SELECT
t_widget_user_parameter.oid as uuid,
t_dashboard.code || '|' || t_chart.code as dashboard_widget_code,
username,
title,
x,
y,
w,
h,
time_calc,
visible,
t_dashboard.code || '|' || t_dashboard_onglet.index as tab_code,
max_cat,
array_agg(DISTINCT t_indicateur_serie.code) as include_series_code
FROM rh.t_widget_user_parameter
JOIN rh.t_dashboard_widget ON t_dashboard_widget.oid = dashboard_widget_id
JOIN rh.t_dashboard ON t_dashboard.oid= t_dashboard_widget.dashboard_id
JOIN rh.t_chart on t_chart.oid = t_dashboard_widget.chart_id
JOIN rh.t_dashboard_onglet on t_dashboard_onglet.oid = tab_id
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.oid] <@ include_series_id
WHERE username = 'cti'
GROUP BY 1,2,3,4,5,6,7,8,9,10,11, t_dashboard_onglet.index
ORDER BY 2, 6, 7 LIMIT 0
;
-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
uuid,
dashboard_widget_code,
username,
title,
x,
y,
w,
h,
time_calc,
visible,
tab_code,
max_cat,
include_series_code
)
VALUES
('60a09a2f-1714-4903-8a48-e0c7c5d5597e', 'CTI_EGAPRO|CTI_EFFAGE', 'cti', 'Répartion par tranche d''âge', 0, 18, 3, 7, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_FEMMES", "CTI_HOMMES"}'),
('2f166ff5-9eca-4a08-a72f-838cdc314385', 'CTI_EGAPRO|CTI_EFFANC', 'cti', 'Répartion par tranche d''ancienneté', 3, 18, 3, 7, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_FEMMES", "CTI_HOMMES"}'),
('4629419f-a2c6-4627-86b3-786d03ec1db7', 'CTI_EGAPRO|CTI_EFFGEN', 'cti', 'Effectif ', 2, 8, 4, 10, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_FEMMES", "CTI_HOMMES"}'),
('54980aad-8b6b-43e5-8d86-b4b47d46ff66', 'CTI_EGAPRO|CTI_EFFSTAT', 'cti', 'Effectifs par statut', 3, 25, 3, 8, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_FEMMES", "CTI_HOMMES"}'),
('fe63666a-69b0-4c35-8564-d243f605f520', 'CTI_EGAPRO|CTI_ENTSORCAR', 'cti', 'Hommes', 0, 8, 2, 5, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_DEPSALH", "CTI_EFFDH", "CTI_ENTSORH", "CTI_NVSALH", "CTI_TOH"}'),
('591c31d9-cf2a-4b9d-afd3-3605a476fc29', 'CTI_EGAPRO|CTI_ENTSORCAR', 'cti', 'Femmes', 0, 13, 2, 5, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_DEPSALF", "CTI_EFFDF", "CTI_ENTSORF", "CTI_NVSALF", "CTI_TOF"}'),
('da27e182-48ea-4c44-b874-4d3b860c875f', 'CTI_EGAPRO|CTI_MSAGE', 'cti', 'Masse salariale par tranche age', 0, 0, 6, 9, 'val', 't', 'CTI_EGAPRO|1', 0, '{"CTI_MSF", "CTI_MSH"}'),
('8230cb17-4b23-4f64-b513-c1f20d8d91f0', 'CTI_EGAPRO|CTI_MSCSP', 'cti', 'Masse salariale par CSP', 3, 9, 3, 13, 'val', 't', 'CTI_EGAPRO|1', 0, '{"CTI_MSF", "CTI_MSH"}'),
('7506a3e7-1b44-41e9-8727-e9fb1af75441', 'CTI_EGAPRO|CTI_MSCSPMAP', 'cti', 'Masse salariale par CSP (MAP)', 0, 9, 3, 13, 'val', 't', 'CTI_EGAPRO|1', 0, '{"CTI_MS"}'),
('1736e926-d668-4375-b042-95299d51b67c', 'CTI_EGAPRO|CTI_STAT', 'cti', 'Tableau statuts', 4, 0, 2, 8, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_FEMMES", "CTI_HOMMES", "CTI_TOTSAL"}'),
('1bf148e8-996a-4e64-b2b4-df19575c3368', 'CTI_EGAPRO|CTI_STATTIME', 'cti', 'Statuts', 0, 25, 3, 8, 'cum', 't', 'CTI_EGAPRO|0', 0, '{"CTI_TAUXSTAT", "CTI_TOTSAL", "CTI_TOTSALF"}'),
('732c7aad-a075-4ed8-a0b6-7a378af82d81', 'CTI_EGAPRO|CTI_TYPECNT', 'cti', 'Types de contrats - Femmes', 0, 0, 2, 8, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_FEMMES"}'),
('ac7b3909-8d3a-497e-9996-3b1111ded80e', 'CTI_EGAPRO|CTI_TYPECNT', 'cti', 'Types de contrats - Hommes', 2, 0, 2, 8, 'val', 't', 'CTI_EGAPRO|0', 0, '{"CTI_HOMMES"}')
;
-- 3/3 : Màj de la table iCTI
DELETE FROM rh.t_widget_user_parameter WHERE username = 'cti';
INSERT INTO rh.t_widget_user_parameter(
oid,
dashboard_widget_id,
username,
title,
x,
y,
w,
h,
time_calc,
visible,
tab_id,
max_cat,
include_series_id
)
SELECT
w_dbsetup.uuid,
t_dashboard_widget.oid,
w_dbsetup.username,
w_dbsetup.title,
w_dbsetup.x,
w_dbsetup.y,
w_dbsetup.w,
w_dbsetup.h,
w_dbsetup.time_calc,
w_dbsetup.visible,
rh.t_dashboard_onglet.oid,
w_dbsetup.max_cat,
case when array_agg(DISTINCT t_indicateur_serie.oid) = ARRAY[NULL]::bigint[] then ARRAY[]::bigint[] else array_agg(DISTINCT t_indicateur_serie.oid) end
FROM w_dbsetup
JOIN rh.t_dashboard ON t_dashboard.code = SPLIT_PART(dashboard_widget_code, '|', 1)
JOIN rh.t_chart on t_chart.code = SPLIT_PART(dashboard_widget_code, '|', 2)
JOIN rh.t_dashboard_widget ON t_dashboard_widget.dashboard_id = t_dashboard.oid and t_dashboard_widget.chart_id = t_chart.oid
JOIN rh.t_dashboard_onglet ON t_dashboard_onglet.dashboard_id = t_dashboard.oid and t_dashboard_onglet.index = SPLIT_PART(tab_code, '|', 2)
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.code] <@ include_series_code
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12
ORDER BY 1
;

+ 112
- 0
db/data2/dbdata_rh_t_ages.csv View File

@ -0,0 +1,112 @@
keepoid|code|texte
0|000|Nouveaux nés
1|001|1 an
2|002|2 ans
3|003|3 ans
4|004|4 ans
5|005|5 ans
6|006|6 ans
7|007|7 ans
8|008|8 ans
9|009|9 ans
10|010|10 ans
11|011|11 ans
12|012|12 ans
13|013|13 ans
14|014|14 ans
15|015|15 ans
16|016|16 ans
17|017|17 ans
18|018|18 ans
19|019|19 ans
20|020|20 ans
21|021|21 ans
22|022|22 ans
23|023|23 ans
24|024|24 ans
25|025|25 ans
26|026|26 ans
27|027|27 ans
28|028|28 ans
29|029|29 ans
30|030|30 ans
31|031|31 ans
32|032|32 ans
33|033|33 ans
34|034|34 ans
35|035|35 ans
36|036|36 ans
37|037|37 ans
38|038|38 ans
39|039|39 ans
40|040|40 ans
41|041|41 ans
42|042|42 ans
43|043|43 ans
44|044|44 ans
45|045|45 ans
46|046|46 ans
47|047|47 ans
48|048|48 ans
49|049|49 ans
50|050|50 ans
51|051|51 ans
52|052|52 ans
53|053|53 ans
54|054|54 ans
55|055|55 ans
56|056|56 ans
57|057|57 ans
58|058|58 ans
59|059|59 ans
60|060|60 ans
61|061|61 ans
62|062|62 ans
63|063|63 ans
64|064|64 ans
65|065|65 ans
66|066|66 ans
67|067|67 ans
68|068|68 ans
69|069|69 ans
70|070|70 ans
71|071|71 ans
72|072|72 ans
73|073|73 ans
74|074|74 ans
75|075|75 ans
76|076|76 ans
77|077|77 ans
78|078|78 ans
79|079|79 ans
80|080|80 ans
81|081|81 ans
82|082|82 ans
83|083|83 ans
84|084|84 ans
85|085|85 ans
86|086|86 ans
87|087|87 ans
88|088|88 ans
89|089|89 ans
90|090|90 ans
91|091|91 ans
92|092|92 ans
93|093|93 ans
94|094|94 ans
95|095|95 ans
96|096|96 ans
97|097|97 ans
98|098|98 ans
99|099|99 ans
100|100|100 ans
101|101|101 ans
102|102|102 ans
103|103|103 ans
104|104|104 ans
105|105|105 ans
106|106|106 ans
107|107|107 ans
108|108|108 ans
109|109|109 ans
110|110|110 ans

+ 52
- 0
db/data2/dbdata_rh_t_anciennetes_annee.csv View File

@ -0,0 +1,52 @@
keepoid|code|texte
0|00|Moins de 1 an
1|01|1 an
2|02|2 ans
3|03|3 ans
4|04|4 ans
5|05|5 ans
6|06|6 ans
7|07|7 ans
8|08|8 ans
9|09|9 ans
10|10|10 ans
11|11|11 ans
12|12|12 ans
13|13|13 ans
14|14|14 ans
15|15|15 ans
16|16|16 ans
17|17|17 ans
18|18|18 ans
19|19|19 ans
20|20|20 ans
21|21|21 ans
22|22|22 ans
23|23|23 ans
24|24|24 ans
25|25|25 ans
26|26|26 ans
27|27|27 ans
28|28|28 ans
29|29|29 ans
30|30|30 ans
31|31|31 ans
32|32|32 ans
33|33|33 ans
34|34|34 ans
35|35|35 ans
36|36|36 ans
37|37|37 ans
38|38|38 ans
39|39|39 ans
40|40|40 ans
41|41|41 ans
42|42|42 ans
43|43|43 ans
44|44|44 ans
45|45|45 ans
46|46|46 ans
47|47|47 ans
48|48|48 ans
49|49|49 ans
50|50|50 ans

+ 431
- 0
db/data2/dbdata_rh_t_categories_socio_professionnelle.csv View File

@ -0,0 +1,431 @@
oid|code|texte|texte_court
0|*|Non renseignée|N/R
1|100x|Agriculteurs et éleveurs, salariés de leur exploitation|Agriculteurs et éleveurs, salariés de leur explo
1|210x|Artisans salariés de leur entreprise|Artisans salariés de leur entreprise
1|220x|Commerçants et assimilés, salariés de leur entreprise|Commerçants et assimilés, salariés de leur entr
1|231a|Chefs de grande entreprise de 500 salariés et plus|Chefs de grande entreprise de 500 salariés et plu
1|232a|Chefs de moyenne entreprise, de 50 à 499 salariés|Chefs de moyenne entreprise, de 50 à 499 salarié
1|233a|Chefs d'entreprise du bâtiment et des travaux publics, de 10 à 49 salariés|Chefs d'entreprise du bâtiment et des travaux pub
1|233b|Chefs d'entreprise de l'industrie ou des transports, de 10 à 49 salariés|Chefs d'entreprise de l'industrie ou des transport
1|233c|Chefs d'entreprise commerciale, de 10 à 49 salariés|Chefs d'entreprise commerciale, de 10 à 49 salari
1|233d|Chefs d'entreprise de services, de 10 à 49 salariés|Chefs d'entreprise de services, de 10 à 49 salari
1|311c|Chirurgiens dentistes|Chirurgiens dentistes
1|311d|Psychologues, psychanalystes, psychothérapeutes (non médecins)|Psychologues, psychanalystes, psychothérapeutes (
1|311e|Vétérinaires|Vétérinaires
1|312a|Avocats|Avocats
1|331a|Personnels de direction de la fonction publique (Etat, collectivités locales, hôpitaux)|Personnels de direction de la fonction publique (E
1|332a|Ingénieurs de l'Etat (y.c. ingénieurs militaires) et assimilés|Ingénieurs de l'Etat (y.c. ingénieurs militaires
1|332b|Ingénieurs des collectivités locales et des hôpitaux|Ingénieurs des collectivités locales et des hôp
1|333a|Magistrats*|Magistrats*
1|333b|Inspecteurs et autres personnels de catégorie A des Impôts, du Trésor et des Douanes|Inspecteurs et autres personnels de catégorie A d
1|333c|Cadres de la Poste*|Cadres de la Poste*
1|333d|Cadres administratifs de France Télécom (statut public)|Cadres administratifs de France Télécom (statut
1|333e|Autres personnels administratifs de catégorie A de l'Etat (hors Enseignement, Patrimoine, Impôts, Trésor, Douanes)|Autres personnels administratifs de catégorie A d
1|333f|Personnels administratifs de catégorie A des collectivités locales et hôpitaux publics (hors Enseignement, Patrimoine)|Personnels administratifs de catégorie A des coll
1|334a|Officiers des Armées et de la Gendarmerie (sauf officiers généraux)*|Officiers des Armées et de la Gendarmerie (sauf o
1|335a|Personnes exerçant un mandat politique ou syndical*|Personnes exerçant un mandat politique ou syndica
1|341a|Professeurs agrégés et certifiés de l'enseignement secondaire|Professeurs agrégés et certifiés de l'enseignem
1|341b|Chefs d'établissement de l'enseignement secondaire et inspecteurs|Chefs d'établissement de l'enseignement secondair
1|342b|Professeurs et maîtres de conférences|Professeurs et maîtres de conférences
1|342c|Professeurs agrégés et certifiés en fonction dans l'enseignement supérieur|Professeurs agrégés et certifiés en fonction da
1|342d|Personnel enseignant temporaire de l'enseignement supérieur|Personnel enseignant temporaire de l'enseignement
1|342f|Directeurs et chargés de recherche de la recherche publique|Directeurs et chargés de recherche de la recherch
1|342g|Ingénieurs d'étude et de recherche de la recherche publique|Ingénieurs d'étude et de recherche de la recherc
1|342h|Allocataires de la recherche publique|Allocataires de la recherche publique
1|343a|Psychologues spécialistes de l'orientation scolaire et professionnelle|Psychologues spécialistes de l'orientation scolai
1|344a|Médecins hospitaliers sans activité libérale|Médecins hospitaliers sans activité libérale
1|344b|Médecins salariés non hospitaliers|Médecins salariés non hospitaliers
1|344c|Internes en médecine, odontologie et pharmacie|Internes en médecine, odontologie et pharmacie
1|344d|Pharmaciens salariés|Pharmaciens salariés
1|351a|Bibliothécaires, archivistes, conservateurs et autres cadres du patrimoine|Bibliothécaires, archivistes, conservateurs et au
1|352a|Journalistes (y c. rédacteurs en chef)|Journalistes (y c. rédacteurs en chef)
1|352b|Auteurs littéraires, scénaristes, dialoguistes|Auteurs littéraires, scénaristes, dialoguistes
1|353a|Directeurs de journaux, administrateurs de presse, directeurs d'éditions (littéraire, musicale, audiovisuelle et multimédia)|Directeurs de journaux, administrateurs de presse,
1|353b|Directeurs, responsables de programmation et de production de l'audiovisuel et des spectacles|Directeurs, responsables de programmation et de pr
1|353c|Cadres artistiques et technico-artistiques de la réalisation de l'audiovisuel et des spectacles|Cadres artistiques et technico-artistiques de la r
1|354a|Artistes plasticiens|Artistes plasticiens
1|354b|Artistes de la musique et du chant|Artistes de la musique et du chant
1|354c|Artistes dramatiques|Artistes dramatiques
1|354e|Artistes de la danse|Artistes de la danse
1|354f|Artistes du cirque et des spectacles divers|Artistes du cirque et des spectacles divers
1|354g|Professeurs d'art (hors établissements scolaires)|Professeurs d'art (hors établissements scolaires)
1|371a|Cadres d'état-major administratifs, financiers, commerciaux des grandes entreprises|Cadres d'état-major administratifs, financiers, c
1|372a|Cadres chargés d'études économiques, financières, commerciales|Cadres chargés d'études économiques, financièr
1|372b|Cadres de l'organisation ou du contrôle des services administratifs et financiers|Cadres de l'organisation ou du contrôle des servi
1|372c|Cadres spécialistes des ressources humaines et du recrutement|Cadres spécialistes des ressources humaines et du
1|372d|Cadres spécialistes de la formation|Cadres spécialistes de la formation
1|372e|Juristes|Juristes
1|372f|Cadres de la documentation, de l'archivage (hors fonction publique)|Cadres de la documentation, de l'archivage (hors f
1|373a|Cadres des services financiers ou comptables des grandes entreprises|Cadres des services financiers ou comptables des g
1|373b|Cadres des autres services administratifs des grandes entreprises|Cadres des autres services administratifs des gran
1|373c|Cadres des services financiers ou comptables des petites et moyennes entreprises|Cadres des services financiers ou comptables des p
1|373d|Cadres des autres services administratifs des petites et moyennes entreprises|Cadres des autres services administratifs des peti
1|374a|Cadres de l'exploitation des magasins de vente du commerce de détail|Cadres de l'exploitation des magasins de vente du
1|374b|Chefs de produits, acheteurs du commerce et autres cadres de la mercatique|Chefs de produits, acheteurs du commerce et autres
1|374c|Cadres commerciaux des grandes entreprises (hors commerce de détail)|Cadres commerciaux des grandes entreprises (hors c
1|374d|Cadres commerciaux des petites et moyennes entreprises (hors commerce de détail)|Cadres commerciaux des petites et moyennes entrepr
1|375a|Cadres de la publicité|Cadres de la publicité
1|375b|Cadres des relations publiques et de la communication|Cadres des relations publiques et de la communicat
1|376a|Cadres des marchés financiers|Cadres des marchés financiers
1|376b|Cadres des opérations bancaires|Cadres des opérations bancaires
1|376c|Cadres commerciaux de la banque|Cadres commerciaux de la banque
1|376d|Chefs d'établissements et responsables de l'exploitation bancaire|Chefs d'établissements et responsables de l'explo
1|376e|Cadres des services techniques des assurances|Cadres des services techniques des assurances
1|376f|Cadres des services techniques des organismes de sécurité sociale et assimilés|Cadres des services techniques des organismes de s
1|376g|Cadres de l'immobilier|Cadres de l'immobilier
1|377a|Cadres de l'hôtellerie et de la restauration|Cadres de l'hôtellerie et de la restauration
1|380a|Directeurs techniques des grandes entreprises|Directeurs techniques des grandes entreprises
1|381b|Ingénieurs et cadres d'étude et développement de l'agriculture, la pêche, les eaux et forêts|Ingénieurs et cadres d'étude et développement d
1|381c|Ingénieurs et cadres de production et d'exploitation de l'agriculture, la pêche, les eaux et forêts|Ingénieurs et cadres de production et d'exploitat
1|382a|Ingénieurs et cadres d'étude du bâtiment et des travaux publics|Ingénieurs et cadres d'étude du bâtiment et des
1|382b|Architectes salariés|Architectes salariés
1|382c|Ingénieurs, cadres de chantier et conducteurs de travaux (cadres) du bâtiment et des travaux publics|Ingénieurs, cadres de chantier et conducteurs de
1|382d|Ingénieurs et cadres technico-commerciaux en bâtiment, travaux publics|Ingénieurs et cadres technico-commerciaux en bât
1|383a|Ingénieurs et cadres d'étude, recherche et développement en électricité, électronique|Ingénieurs et cadres d'étude, recherche et déve
1|383b|Ingénieurs et cadres de fabrication en matériel électrique, électronique|Ingénieurs et cadres de fabrication en matériel
1|383c|Ingénieurs et cadres technico-commerciaux en matériel électrique ou électronique professionnel|Ingénieurs et cadres technico-commerciaux en mat?
1|384a|Ingénieurs et cadres d'étude, recherche et développement en mécanique et travail des métaux|Ingénieurs et cadres d'étude, recherche et déve
1|384b|Ingénieurs et cadres de fabrication en mécanique et travail des métaux|Ingénieurs et cadres de fabrication en mécanique
1|384c|Ingénieurs et cadres technico-commerciaux en matériel mécanique professionnel|Ingénieurs et cadres technico-commerciaux en mat?
1|385a|Ingénieurs et cadres d'étude, recherche et développement des industries de transformation (agroalimentaire, chimie, métallurgie, matériaux lourds)|Ingénieurs et cadres d'étude, recherche et déve
1|385b|Ingénieurs et cadres de fabrication des industries de transformation (agroalimentaire, chimie, métallurgie, matériaux lourds)|Ingénieurs et cadres de fabrication des industrie
1|385c|Ingénieurs et cadres technico-commerciaux des industries de transformations (biens intermédiaires)|Ingénieurs et cadres technico-commerciaux des ind
1|386b|Ingénieurs et cadres d'étude, recherche et développement de la distribution d'énergie, eau|Ingénieurs et cadres d'étude, recherche et déve
1|386c|Ingénieurs et cadres d'étude, recherche et développement des autres industries (imprimerie, matériaux souples, ameublement et bois)|Ingénieurs et cadres d'étude, recherche et déve
1|386d|Ingénieurs et cadres de la production et de la distribution d'énergie, eau|Ingénieurs et cadres de la production et de la di
1|386e|Ingénieurs et cadres de fabrication des autres industries (imprimerie, matériaux souples, ameublement et bois)|Ingénieurs et cadres de fabrication des autres in
1|387a|Ingénieurs et cadres des achats et approvisionnements industriels|Ingénieurs et cadres des achats et approvisionnem
1|387b|Ingénieurs et cadres de la logistique, du planning et de l'ordonnancement|Ingénieurs et cadres de la logistique, du plannin
1|387c|Ingénieurs et cadres des méthodes de production|Ingénieurs et cadres des méthodes de production
1|387d|Ingénieurs et cadres du contrôle-qualité|Ingénieurs et cadres du contrôle-qualité
1|387e|Ingénieurs et cadres de la maintenance, de l'entretien et des travaux neufs|Ingénieurs et cadres de la maintenance, de l'entr
1|387f|Ingénieurs et cadres techniques de l'environnement|Ingénieurs et cadres techniques de l'environnemen
1|388a|Ingénieurs et cadres d'étude, recherche et développement en informatique|Ingénieurs et cadres d'étude, recherche et déve
1|388b|Ingénieurs et cadres d'administration, maintenance, support et services aux utilisateurs en informatique|Ingénieurs et cadres d'administration, maintenanc
1|388c|Chefs de projets informatiques, responsables informatiques|Chefs de projets informatiques, responsables infor
1|388d|Ingénieurs et cadres technico-commerciaux en informatique et télécommunications|Ingénieurs et cadres technico-commerciaux en info
1|388e|Ingénieurs et cadres spécialistes des télécommunications|Ingénieurs et cadres spécialistes des télécomm
1|389a|Ingénieurs et cadres techniques de l'exploitation des transports|Ingénieurs et cadres techniques de l'exploitation
1|389b|Officiers et cadres navigants techniques et commerciaux de l'aviation civile|Officiers et cadres navigants techniques et commer
1|389c|Officiers et cadres navigants techniques de la marine marchande|Officiers et cadres navigants techniques de la mar
1|421a|Instituteurs|Instituteurs
1|421b|Professeurs des écoles|Professeurs des écoles
1|422a|Professeurs d'enseignement général des collèges|Professeurs d'enseignement général des collèges
1|422b|Professeurs de lycée professionnel|Professeurs de lycée professionnel
1|422c|Maîtres auxiliaires et professeurs contractuels de l'enseignement secondaire|Maîtres auxiliaires et professeurs contractuels d
1|422d|Conseillers principaux d'éducation|Conseillers principaux d'éducation
1|422e|Surveillants et aides-éducateurs des établissements d'enseignement|Surveillants et aides-éducateurs des établisseme
1|423a|Moniteurs d'école de conduite|Moniteurs d'école de conduite
1|423b|Formateurs et animateurs de formation continue|Formateurs et animateurs de formation continue
1|424a|Moniteurs et éducateurs sportifs, sportifs professionnels|Moniteurs et éducateurs sportifs, sportifs profes
1|425a|Sous-bibliothécaires, cadres intermédiaires du patrimoine|Sous-bibliothécaires, cadres intermédiaires du p
1|431a|Cadres infirmiers et assimilés|Cadres infirmiers et assimilés
1|431b|Infirmiers psychiatriques|Infirmiers psychiatriques
1|431c|Puéricultrices|Puéricultrices
1|431d|Infirmiers spécialisés (autres qu'infirmiers psychiatriques et puéricultrices)|Infirmiers spécialisés (autres qu'infirmiers psy
1|431e|Sages-femmes salariées|Sages-femmes salariées
1|431f|Infirmiers en soins généraux, salariés|Infirmiers en soins généraux, salariés
1|432b|Masseurs-kinésithérapeutes rééducateurs, salariés|Masseurs-kinésithérapeutes rééducateurs, salar
1|432d|Autres spécialistes de la rééducation, salariés|Autres spécialistes de la rééducation, salarié
1|433a|Techniciens médicaux|Techniciens médicaux
1|433b|Opticiens lunetiers et audioprothésistes salariés|Opticiens lunetiers et audioprothésistes salarié
1|433c|Autres spécialistes de l'appareillage médical salariés|Autres spécialistes de l'appareillage médical sa
1|433d|Préparateurs en pharmacie|Préparateurs en pharmacie
1|434a|Cadres de l'intervention socio-éducative|Cadres de l'intervention socio-éducative
1|434b|Assistants de service social|Assistants de service social
1|434c|Conseillers en économie sociale familiale|Conseillers en économie sociale familiale
1|434d|Educateurs spécialisés|Educateurs spécialisés
1|434e|Moniteurs éducateurs|Moniteurs éducateurs
1|434f|Educateurs techniques spécialisés, moniteurs d'atelier|Educateurs techniques spécialisés, moniteurs d'a
1|434g|Educateurs de jeunes enfants|Educateurs de jeunes enfants
1|435a|Directeurs de centres socioculturels et de loisirs|Directeurs de centres socioculturels et de loisirs
1|435b|Animateurs socioculturels et de loisirs|Animateurs socioculturels et de loisirs
1|441a|Clergé séculier|Clergé séculier
1|441b|Clergé régulier|Clergé régulier
1|451a|Professions intermédiaires de la Poste|Professions intermédiaires de la Poste
1|451b|Professions intermédiaires administratives de France Télécom (statut public)|Professions intermédiaires administratives de Fra
1|451c|Contrôleurs des Impôts, du Trésor, des Douanes et assimilés*|Contrôleurs des Impôts, du Trésor, des Douanes
1|451d|Ingénieurs du contrôle de la navigation aérienne*|Ingénieurs du contrôle de la navigation aérienn
1|451e|Autres personnels administratifs de catégorie B de l'Etat (hors Enseignement, Patrimoine, Impôts, Trésor, Douanes)|Autres personnels administratifs de catégorie B d
1|451g|Professions intermédiaires administratives des collectivités locales|Professions intermédiaires administratives des co
1|451h|Professions intermédiaires administratives des hôpitaux|Professions intermédiaires administratives des h?
1|452a|Inspecteurs et officiers de police*|Inspecteurs et officiers de police*
1|452b|Adjudants-chefs, adjudants et sous-officiers de rang supérieur de l'Armée et de la Gendarmerie*|Adjudants-chefs, adjudants et sous-officiers de ra
1|461b|Secrétaires de direction, assistants de direction (non cadres)|Secrétaires de direction, assistants de direction
1|461c|Secrétaires de niveau supérieur (non cadres, hors secrétaires de direction)|Secrétaires de niveau supérieur (non cadres, hor
1|461d|Maîtrise et techniciens des services financiers ou comptables|Maîtrise et techniciens des services financiers o
1|461e|Maîtrise et techniciens administratifs des services juridiques ou du personnel|Maîtrise et techniciens administratifs des servic
1|461f|Maîtrise et techniciens administratifs des autres services administratifs|Maîtrise et techniciens administratifs des autres
1|462a|Chefs de petites surfaces de vente|Chefs de petites surfaces de vente
1|462b|Maîtrise de l'exploitation des magasins de vente|Maîtrise de l'exploitation des magasins de vente
1|462c|Acheteurs non classés cadres, aides-acheteurs|Acheteurs non classés cadres, aides-acheteurs
1|462d|Animateurs commerciaux des magasins de vente, marchandiseurs (non cadres)|Animateurs commerciaux des magasins de vente, marc
1|462e|Autres professions intermédiaires commerciales (sauf techniciens des forces de vente)|Autres professions intermédiaires commerciales (s
1|463a|Techniciens commerciaux et technico-commerciaux, représentants en informatique|Techniciens commerciaux et technico-commerciaux, r
1|463b|Techniciens commerciaux et technico-commerciaux, représentants en biens d'équipement, en biens intermédiaires, commerce interindustriel (hors informatique)|Techniciens commerciaux et technico-commerciaux, r
1|463c|Techniciens commerciaux et technico-commerciaux, représentants en biens de consommation auprès d'entreprises|Techniciens commerciaux et technico-commerciaux, r
1|463d|Techniciens commerciaux et technico-commerciaux, représentants en services auprès d'entreprises ou de professionnels (hors banque, assurance, informatique)|Techniciens commerciaux et technico-commerciaux, r
1|463e|Techniciens commerciaux et technico-commerciaux, représentants auprès de particuliers (hors banque, assurance, informatique)|Techniciens commerciaux et technico-commerciaux, r
1|464a|Assistants de la publicité, des relations publiques|Assistants de la publicité, des relations publiqu
1|464b|Interprètes, traducteurs|Interprètes, traducteurs
1|465a|Concepteurs et assistants techniques des arts graphiques, de la mode et de la décoration salariés|Concepteurs et assistants techniques des arts grap
1|465b|Assistants techniques de la réalisation des spectacles vivants et audiovisuels salariés|Assistants techniques de la réalisation des spect
1|465c|Photographes|Photographes
1|466a|Responsables commerciaux et administratifs des transports de voyageurs et du tourisme (non cadres)|Responsables commerciaux et administratifs des tra
1|466b|Responsables commerciaux et administratifs des transports de marchandises (non cadres)|Responsables commerciaux et administratifs des tra
1|466c|Responsables d'exploitation des transports de voyageurs et de marchandises (non cadres)|Responsables d'exploitation des transports de voya
1|467a|Chargés de clientèle bancaire|Chargés de clientèle bancaire
1|467b|Techniciens des opérations bancaires|Techniciens des opérations bancaires
1|467c|Professions intermédiaires techniques et commerciales des assurances|Professions intermédiaires techniques et commerci
1|467d|Professions intermédiaires techniques des organismes de sécurité sociale|Professions intermédiaires techniques des organis
1|468a|Maîtrise de restauration : salle et service|Maîtrise de restauration : salle et service
1|468b|Maîtrise de l'hébergement : hall et étages|Maîtrise de l'hébergement : hall et étages
1|471a|Techniciens d'étude et de conseil en agriculture, eaux et forêt|Techniciens d'étude et de conseil en agriculture,
1|471b|Techniciens d'exploitation et de contrôle de la production en agriculture, eaux et forêt|Techniciens d'exploitation et de contrôle de la p
1|472a|Dessinateurs en bâtiment, travaux publics|Dessinateurs en bâtiment, travaux publics
1|472b|Géomètres, topographes|Géomètres, topographes
1|472c|Métreurs et techniciens divers du bâtiment et des travaux publics|Métreurs et techniciens divers du bâtiment et de
1|472d|Techniciens des travaux publics de l'Etat et des collectivités locales|Techniciens des travaux publics de l'Etat et des c
1|473a|Dessinateurs en électricité, électromécanique et électronique|Dessinateurs en électricité, électromécanique
1|473b|Techniciens de recherche-développement et des méthodes de fabrication en électricité, électromécanique et électronique|Techniciens de recherche-développement et des mé
1|473c|Techniciens de fabrication et de contrôle-qualité en électricité, électromécanique et électronique|Techniciens de fabrication et de contrôle-qualit?
1|474a|Dessinateurs en construction mécanique et travail des métaux|Dessinateurs en construction mécanique et travail
1|474b|Techniciens de recherche-développement et des méthodes de fabrication en construction mécanique et travail des métaux|Techniciens de recherche-développement et des mé
1|474c|Techniciens de fabrication et de contrôle-qualité en construction mécanique et travail des métaux|Techniciens de fabrication et de contrôle-qualit?
1|475a|Techniciens de recherche-développement et des méthodes de production des industries de transformation|Techniciens de recherche-développement et des mé
1|475b|Techniciens de production et de contrôle-qualité des industries de transformation|Techniciens de production et de contrôle-qualité
1|476a|Assistants techniques, techniciens de l'imprimerie et de l'édition|Assistants techniques, techniciens de l'imprimerie
1|476b|Techniciens de l'industrie des matériaux souples, de l'ameublement et du bois|Techniciens de l'industrie des matériaux souples,
1|477a|Techniciens de la logistique, du planning et de l'ordonnancement|Techniciens de la logistique, du planning et de l'
1|477b|Techniciens d'installation et de maintenance des équipements industriels (électriques, électromécaniques, mécaniques, hors informatique)|Techniciens d'installation et de maintenance des ?
1|477c|Techniciens d'installation et de maintenance des équipements non industriels (hors informatique et télécommunications)|Techniciens d'installation et de maintenance des ?
1|477d|Techniciens de l'environnement et du traitement des pollutions|Techniciens de l'environnement et du traitement de
1|478a|Techniciens d'étude et de développement en informatique|Techniciens d'étude et de développement en infor
1|478b|Techniciens de production, d'exploitation en informatique|Techniciens de production, d'exploitation en infor
1|478c|Techniciens d'installation, de maintenance, support et services aux utilisateurs en informatique|Techniciens d'installation, de maintenance, suppor
1|478d|Techniciens des télécommunications et de l'informatique des réseaux|Techniciens des télécommunications et de l'infor
1|479a|Techniciens des laboratoires de recherche publique ou de l'enseignement|Techniciens des laboratoires de recherche publique
1|479b|Experts salariés de niveau technicien, techniciens divers|Experts salariés de niveau technicien, technicien
1|480a|Contremaîtres et agents d'encadrement (non cadres) en agriculture, sylviculture|Contremaîtres et agents d'encadrement (non cadres
1|480b|Maîtres d'équipage de la marine marchande et de la pêche|Maîtres d'équipage de la marine marchande et de
1|481a|Conducteurs de travaux (non cadres)|Conducteurs de travaux (non cadres)
1|481b|Chefs de chantier (non cadres)|Chefs de chantier (non cadres)
1|482a|Agents de maîtrise en fabrication de matériel électrique, électronique|Agents de maîtrise en fabrication de matériel é
1|483a|Agents de maîtrise en construction mécanique, travail des métaux|Agents de maîtrise en construction mécanique, tr
1|484a|Agents de maîtrise en fabrication : agroalimentaire, chimie, plasturgie, pharmacie.|Agents de maîtrise en fabrication : agroalimentai
1|484b|Agents de maîtrise en fabrication : métallurgie, matériaux lourds et autres industries de transformation|Agents de maîtrise en fabrication : métallurgie,
1|485a|Agents de maîtrise et techniciens en production et distribution d'énergie, eau, chauffage|Agents de maîtrise et techniciens en production e
1|485b|Agents de maîtrise en fabrication des autres industries (imprimerie, matériaux souples, ameublement et bois)|Agents de maîtrise en fabrication des autres indu
1|486b|Agents de maîtrise en maintenance, installation en électricité et électronique|Agents de maîtrise en maintenance, installation e
1|486c|Agents de maîtrise en maintenance, installation en électromécanique|Agents de maîtrise en maintenance, installation e
1|486d|Agents de maîtrise en maintenance, installation en mécanique|Agents de maîtrise en maintenance, installation e
1|486e|Agents de maîtrise en entretien général, installation, travaux neufs (hors mécanique, électromécanique, électronique)|Agents de maîtrise en entretien général, instal
1|487a|Responsables d'entrepôt, de magasinage|Responsables d'entrepôt, de magasinage
1|487b|Responsables du tri, de l'emballage, de l'expédition et autres responsables de la manutention|Responsables du tri, de l'emballage, de l'expédit
1|488a|Maîtrise de restauration : cuisine/production|Maîtrise de restauration : cuisine/production
1|488b|Maîtrise de restauration : gestion d'établissement|Maîtrise de restauration : gestion d'établissem
1|521a|Employés de la Poste|Employés de la Poste
1|521b|Employés de France Télécom (statut public)|Employés de France Télécom (statut public)
1|522a|Agents de constatation ou de recouvrement des Impôts, du Trésor, des Douanes*|Agents de constatation ou de recouvrement des Imp?
1|523a|Adjoints administratifs de la fonction publique (y c. enseignement)*|Adjoints administratifs de la fonction publique (y
1|523b|Adjoints administratifs de l'Etat et assimilés (sauf Poste, France Télécom)|Adjoints administratifs de l'Etat et assimilés (s
1|523c|Adjoints administratifs des collectivités locales|Adjoints administratifs des collectivités locales
1|523d|Adjoints administratifs des hôpitaux publics|Adjoints administratifs des hôpitaux publics
1|524a|Agents administratifs de la fonction publique (y c. enseignement)*|Agents administratifs de la fonction publique (y c
1|524b|Agents administratifs de l'Etat et assimilés (sauf Poste, France Télécom)|Agents administratifs de l'Etat et assimilés (sau
1|524c|Agents administratifs des collectivités locales|Agents administratifs des collectivités locales
1|524d|Agents administratifs des hôpitaux publics|Agents administratifs des hôpitaux publics
1|525a|Agents de service des établissements primaires|Agents de service des établissements primaires
1|525b|Agents de service des autres établissements d'enseignement|Agents de service des autres établissements d'ens
1|525c|Agents de service de la fonction publique (sauf écoles, hôpitaux)|Agents de service de la fonction publique (sauf é
1|525d|Agents de service hospitaliers|Agents de service hospitaliers
1|526a|Aides-soignants|Aides-soignants
1|526b|Assistants dentaires, médicaux et vétérinaires, aides de techniciens médicaux|Assistants dentaires, médicaux et vétérinaires,
1|526c|Auxiliaires de puériculture|Auxiliaires de puériculture
1|526d|Aides médico-psychologiques|Aides médico-psychologiques
1|526e|Ambulanciers salariés|Ambulanciers salariés
1|531a|Agents de police de l'Etat*|Agents de police de l'Etat*
1|531b|Agents des polices municipales*|Agents des polices municipales*
1|531c|Surveillants de l'administration pénitentiaire*|Surveillants de l'administration pénitentiaire*
1|532a|Gendarmes (de grade inférieur à adjudant)*|Gendarmes (de grade inférieur à adjudant)*
1|532b|Sergents et sous-officiers de grade équivalent des Armées (sauf pompiers militaires)*|Sergents et sous-officiers de grade équivalent de
1|532c|Hommes du rang (sauf pompiers militaires)*|Hommes du rang (sauf pompiers militaires)*
1|533a|Pompiers (y.c. pompiers militaires)|Pompiers (y.c. pompiers militaires)
1|533b|Agents techniques forestiers, gardes des espaces naturels|Agents techniques forestiers, gardes des espaces n
1|533c|Agents de surveillance du patrimoine et des administrations|Agents de surveillance du patrimoine et des admini
1|534a|Agents civils de sécurité et de surveillance|Agents civils de sécurité et de surveillance
1|534b|Convoyeurs de fonds, gardes du corps, enquêteurs privés et métiers assimilés (salariés)|Convoyeurs de fonds, gardes du corps, enquêteurs
1|541b|Agents d'accueil qualifiés, hôtesses d'accueil et d'information|Agents d'accueil qualifiés, hôtesses d'accueil e
1|541c|Agents d'accueil non qualifiés|Agents d'accueil non qualifiés
1|541d|Standardistes, téléphonistes|Standardistes, téléphonistes
1|542a|Secrétaires|Secrétaires
1|542b|Dactylos, sténodactylos (sans secrétariat), opérateurs de traitement de texte|Dactylos, sténodactylos (sans secrétariat), opé
1|543b|Employés qualifiés des services comptables ou financiers|Employés qualifiés des services comptables ou fi
1|543c|Employés non qualifiés des services comptables ou financiers|Employés non qualifiés des services comptables o
1|543e|Employés qualifiés des services du personnel et des services juridiques|Employés qualifiés des services du personnel et
1|543f|Employés qualifiés des services commerciaux des entreprises (hors vente)|Employés qualifiés des services commerciaux des
1|543g|Employés administratifs qualifiés des autres services des entreprises|Employés administratifs qualifiés des autres ser
1|543h|Employés administratifs non qualifiés|Employés administratifs non qualifiés
1|544a|Employés et opérateurs d'exploitation en informatique|Employés et opérateurs d'exploitation en informa
1|545a|Employés administratifs des services techniques de la banque|Employés administratifs des services techniques d
1|545b|Employés des services commerciaux de la banque|Employés des services commerciaux de la banque
1|545c|Employés des services techniques des assurances|Employés des services techniques des assurances
1|545d|Employés des services techniques des organismes de sécurité sociale et assimilés|Employés des services techniques des organismes d
1|546a|Contrôleurs des transports (personnels roulants)|Contrôleurs des transports (personnels roulants)
1|546b|Agents des services commerciaux des transports de voyageurs et du tourisme|Agents des services commerciaux des transports de
1|546c|Employés administratifs d'exploitation des transports de marchandises|Employés administratifs d'exploitation des transp
1|546d|Hôtesses de l'air et stewards|Hôtesses de l'air et stewards
1|546e|Autres agents et hôtesses d'accompagnement (transports, tourisme)|Autres agents et hôtesses d'accompagnement (trans
1|551a|Employés de libre service du commerce et magasiniers|Employés de libre service du commerce et magasini
1|552a|Caissiers de magasin|Caissiers de magasin
1|553b|Vendeurs polyvalents des grands magasins|Vendeurs polyvalents des grands magasins
1|553c| Autres vendeurs non spécialisés| Autres vendeurs non spécialisés
1|554a|Vendeurs en alimentation|Vendeurs en alimentation
1|554b|Vendeurs en ameublement, décor, équipement du foyer|Vendeurs en ameublement, décor, équipement du fo
1|554c|Vendeurs en droguerie, bazar, quincaillerie, bricolage|Vendeurs en droguerie, bazar, quincaillerie, brico
1|554d|Vendeurs du commerce de fleurs|Vendeurs du commerce de fleurs
1|554e|Vendeurs en habillement et articles de sport|Vendeurs en habillement et articles de sport
1|554f|Vendeurs en produits de beauté, de luxe (hors biens culturels) et optique|Vendeurs en produits de beauté, de luxe (hors bie
1|554g|Vendeurs de biens culturels (livres, disques, multimédia, objets d'art)|Vendeurs de biens culturels (livres, disques, mult
1|554h|Vendeurs de tabac, presse et articles divers|Vendeurs de tabac, presse et articles divers
1|554j|Pompistes et gérants de station-service (salariés ou mandataires)|Pompistes et gérants de station-service (salarié
1|555a|Vendeurs par correspondance, télévendeurs|Vendeurs par correspondance, télévendeurs
1|556a|Vendeurs en gros de biens d'équipement, biens intermédiaires|Vendeurs en gros de biens d'équipement, biens int
1|561b|Serveurs, commis de restaurant, garçons qualifiés|Serveurs, commis de restaurant, garçons qualifié
1|561c|Serveurs, commis de restaurant, garçons non qualifiés|Serveurs, commis de restaurant, garçons non quali
1|561d|Aides de cuisine, apprentis de cuisine et employés polyvalents de la restauration|Aides de cuisine, apprentis de cuisine et employé
1|561e|Employés de l'hôtellerie : réception et hall|Employés de l'hôtellerie : réception et hall
1|561f|Employés d'étage et employés polyvalents de l'hôtellerie|Employés d'étage et employés polyvalents de l'h
1|562a|Manucures, esthéticiens |Manucures, esthéticiens
1|562b|Coiffeurs salariés|Coiffeurs salariés
1|563a|Assistantes maternelles, gardiennes d'enfants, familles d'accueil|Assistantes maternelles, gardiennes d'enfants, fam
1|563b|Aides à domicile, aides ménagères, travailleuses familiales|Aides à domicile, aides ménagères, travailleuse
1|563c|Employés de maison et personnels de ménage chez des particuliers|Employés de maison et personnels de ménage chez
1|564a|Concierges, gardiens d'immeubles|Concierges, gardiens d'immeubles
1|564b|Employés des services divers|Employés des services divers
1|621a|Chefs d'équipe du gros oeuvre et des travaux publics|Chefs d'équipe du gros oeuvre et des travaux publ
1|621b|Ouvriers qualifiés du travail du béton|Ouvriers qualifiés du travail du béton
1|621c|Conducteurs qualifiés d'engins de chantiers du bâtiment et des travaux publics|Conducteurs qualifiés d'engins de chantiers du b?
1|621d|Ouvriers des travaux publics en installations électriques et de télécommunications|Ouvriers des travaux publics en installations éle
1|621e|Autres ouvriers qualifiés des travaux publics|Autres ouvriers qualifiés des travaux publics
1|621f|Ouvriers qualifiés des travaux publics (salariés de l'Etat et des collectivités locales)|Ouvriers qualifiés des travaux publics (salariés
1|621g|Mineurs de fond qualifiés et autres ouvriers qualifiés des industries d'extraction (carrières, pétrole, gaz...)|Mineurs de fond qualifiés et autres ouvriers qual
1|622a|Opérateurs qualifiés sur machines automatiques en production électrique ou électronique|Opérateurs qualifiés sur machines automatiques e
1|622c|Monteurs câbleurs qualifiés en électricité|Monteurs câbleurs qualifiés en électricité
1|622d|Câbleurs qualifiés en électronique (prototype, unité, petite série)|Câbleurs qualifiés en électronique (prototype,
1|622e|Autres monteurs câbleurs en électronique|Autres monteurs câbleurs en électronique
1|622f|Bobiniers qualifiés|Bobiniers qualifiés
1|622g|Plateformistes, contrôleurs qualifiés de matériel électrique ou électronique|Plateformistes, contrôleurs qualifiés de matéri
1|623a|Chaudronniers-tôliers industriels, opérateurs qualifiés du travail en forge, conducteurs qualifiés d'équipement de formage, traceurs qualifiés|Chaudronniers-tôliers industriels, opérateurs qu
1|623b|Tuyauteurs industriels qualifiés|Tuyauteurs industriels qualifiés
1|623d|Opérateurs qualifiés sur machine de soudage|Opérateurs qualifiés sur machine de soudage
1|623e|Soudeurs manuels|Soudeurs manuels
1|623f|Opérateurs qualifiés d'usinage des métaux travaillant à l'unité ou en petite série, moulistes qualifiés|Opérateurs qualifiés d'usinage des métaux trava
1|623g|Opérateurs qualifiés d'usinage des métaux sur autres machines (sauf moulistes)|Opérateurs qualifiés d'usinage des métaux sur a
1|624b|Monteurs, metteurs au point très qualifiés d'ensembles mécaniques travaillant à l'unité ou en petite série|Monteurs, metteurs au point très qualifiés d'ens
1|624c|Monteurs qualifiés d'ensembles mécaniques travaillant en moyenne ou en grande série|Monteurs qualifiés d'ensembles mécaniques travai
1|624d|Monteurs qualifiés en structures métalliques|Monteurs qualifiés en structures métalliques
1|624e|Ouvriers qualifiés de contrôle et d'essais en mécanique|Ouvriers qualifiés de contrôle et d'essais en m?
1|624f|Ouvriers qualifiés des traitements thermiques et de surface sur métaux|Ouvriers qualifiés des traitements thermiques et
1|624g|Autres mécaniciens ou ajusteurs qualifiés (ou spécialité non reconnue)|Autres mécaniciens ou ajusteurs qualifiés (ou sp
1|625a|Pilotes d'installation lourde des industries de transformation : agroalimentaire, chimie, plasturgie, énergie|Pilotes d'installation lourde des industries de tr
1|625b|Ouvriers qualifiés et agents qualifiés de laboratoire : agroalimentaire, chimie, biologie, pharmacie|Ouvriers qualifiés et agents qualifiés de labora
1|625c|Autres opérateurs et ouvriers qualifiés de la chimie (y.c. pharmacie) et de la plasturgie|Autres opérateurs et ouvriers qualifiés de la ch
1|625d|Opérateurs de la transformation des viandes|Opérateurs de la transformation des viandes
1|625f|Autres opérateurs travaillant sur installations ou machines : industrie agroalimentaire (hors transformation des viandes)|Autres opérateurs travaillant sur installations o
1|625g|Autres ouvriers de production qualifiés ne travaillant pas sur machine : industrie agroalimentaire (hors transformation des viandes)|Autres ouvriers de production qualifiés ne travai
1|625h|Ouvriers qualifiés des autres industries (eau, gaz, énergie, chauffage)|Ouvriers qualifiés des autres industries (eau, ga
1|626a|Pilotes d'installation lourde des industries de transformation : métallurgie, production verrière, matériaux de construction|Pilotes d'installation lourde des industries de tr
1|626b|Autres opérateurs et ouvriers qualifiés : métallurgie, production verrière, matériaux de construction|Autres opérateurs et ouvriers qualifiés : métal
1|626c|Opérateurs et ouvriers qualifiés des industries lourdes du bois et de la fabrication du papier-carton|Opérateurs et ouvriers qualifiés des industries
1|627a|Opérateurs qualifiés du textile et de la mégisserie|Opérateurs qualifiés du textile et de la mégiss
1|627b|Ouvriers qualifiés de la coupe des vêtements et de l'habillement, autres opérateurs de confection qualifiés|Ouvriers qualifiés de la coupe des vêtements et
1|627c|Ouvriers qualifiés du travail industriel du cuir|Ouvriers qualifiés du travail industriel du cuir
1|627d|Ouvriers qualifiés de scierie, de la menuiserie industrielle et de l'ameublement|Ouvriers qualifiés de scierie, de la menuiserie i
1|627e|Ouvriers de la photogravure et des laboratoires photographiques et cinématographiques|Ouvriers de la photogravure et des laboratoires ph
1|627f|Ouvriers de la composition et de l'impression, ouvriers qualifiés de la brochure, de la reliure et du façonnage du papier-carton|Ouvriers de la composition et de l'impression, ouv
1|628a|Mécaniciens qualifiés de maintenance, entretien : équipements industriels|Mécaniciens qualifiés de maintenance, entretien
1|628b|Electromécaniciens, électriciens qualifiés d'entretien : équipements industriels|Electromécaniciens, électriciens qualifiés d'en
1|628c|Régleurs qualifiés d'équipements de fabrication (travail des métaux, mécanique)|Régleurs qualifiés d'équipements de fabrication
1|628d|Régleurs qualifiés d'équipements de fabrication (hors travail des métaux et mécanique)|Régleurs qualifiés d'équipements de fabrication
1|628e|Ouvriers qualifiés de l'assainissement et du traitement des déchets|Ouvriers qualifiés de l'assainissement et du trai
1|628f|Agents qualifiés de laboratoire (sauf chimie, santé)|Agents qualifiés de laboratoire (sauf chimie, san
1|628g|Ouvriers qualifiés divers de type industriel|Ouvriers qualifiés divers de type industriel
1|631a|Jardiniers|Jardiniers
1|632a|Maçons qualifiés|Maçons qualifiés
1|632b|Ouvriers qualifiés du travail de la pierre|Ouvriers qualifiés du travail de la pierre
1|632c|Charpentiers en bois qualifiés|Charpentiers en bois qualifiés
1|632d|Menuisiers qualifiés du bâtiment|Menuisiers qualifiés du bâtiment
1|632e|Couvreurs qualifiés|Couvreurs qualifiés
1|632f|Plombiers et chauffagistes qualifiés|Plombiers et chauffagistes qualifiés
1|632g|Peintres et ouvriers qualifiés de pose de revêtements sur supports verticaux|Peintres et ouvriers qualifiés de pose de revête
1|632h|Soliers moquetteurs et ouvriers qualifiés de pose de revêtements souples sur supports horizontaux|Soliers moquetteurs et ouvriers qualifiés de pose
1|632j|Monteurs qualifiés en agencement, isolation|Monteurs qualifiés en agencement, isolation
1|632k|Ouvriers qualifiés d'entretien général des bâtiments|Ouvriers qualifiés d'entretien général des bât
1|633a|Electriciens qualifiés de type artisanal (y.c. bâtiment)|Electriciens qualifiés de type artisanal (y.c. b?
1|633b|Dépanneurs qualifiés en radiotélévision, électroménager, matériel électronique (salariés)|Dépanneurs qualifiés en radiotélévision, élec
1|633c|Electriciens, électroniciens qualifiés en maintenance entretien, réparation : automobile|Electriciens, électroniciens qualifiés en mainte
1|633d|Electriciens, électroniciens qualifiés en maintenance, entretien : équipements non industriels|Electriciens, électroniciens qualifiés en mainte
1|634a|Carrossiers d'automobiles qualifiés|Carrossiers d'automobiles qualifiés
1|634b|Métalliers, serruriers qualifiés|Métalliers, serruriers qualifiés
1|634c|Mécaniciens qualifiés en maintenance, entretien, réparation : automobile|Mécaniciens qualifiés en maintenance, entretien,
1|634d|Mécaniciens qualifiés de maintenance, entretien : équipements non industriels|Mécaniciens qualifiés de maintenance, entretien
1|635a|Tailleurs et couturières qualifiés, ouvriers qualifiés du travail des étoffes (sauf fabrication de vêtements), ouvriers qualifiés de type artisanal du travail du cuir|Tailleurs et couturières qualifiés, ouvriers qua
1|636a|Bouchers (sauf industrie de la viande)|Bouchers (sauf industrie de la viande)
1|636b|Charcutiers (sauf industrie de la viande)|Charcutiers (sauf industrie de la viande)
1|636c|Boulangers, pâtissiers (sauf activité industrielle)|Boulangers, pâtissiers (sauf activité industriel
1|636d|Cuisiniers et commis de cuisine|Cuisiniers et commis de cuisine
1|637a|Modeleurs (sauf modeleurs de métal), mouleurs-noyauteurs à la main, ouvriers qualifiés du travail du verre ou de la céramique à la main|Modeleurs (sauf modeleurs de métal), mouleurs-noy
1|637b|Ouvriers d'art|Ouvriers d'art
1|637c|Ouvriers et techniciens des spectacles vivants et audiovisuels|Ouvriers et techniciens des spectacles vivants et
1|637d|Ouvriers qualifiés divers de type artisanal|Ouvriers qualifiés divers de type artisanal
1|641a|Conducteurs routiers et grands routiers|Conducteurs routiers et grands routiers
1|641b|Conducteurs de véhicule routier de transport en commun|Conducteurs de véhicule routier de transport en c
1|642a|Conducteurs de taxi|Conducteurs de taxi
1|642b|Conducteurs de voiture particulière|Conducteurs de voiture particulière
1|643a|Conducteurs livreurs, coursiers|Conducteurs livreurs, coursiers
1|644a|Conducteurs de véhicule de ramassage des ordures ménagères|Conducteurs de véhicule de ramassage des ordures
1|651a|Conducteurs d'engin lourd de levage|Conducteurs d'engin lourd de levage
1|651b|Conducteurs d'engin lourd de manoeuvre|Conducteurs d'engin lourd de manoeuvre
1|652a|Ouvriers qualifiés de la manutention, conducteurs de chariots élévateurs, caristes|Ouvriers qualifiés de la manutention, conducteurs
1|652b|Dockers|Dockers
1|653a|Magasiniers qualifiés|Magasiniers qualifiés
1|654b|Conducteurs qualifiés d'engins de transport guidés (sauf remontées mécaniques)|Conducteurs qualifiés d'engins de transport guid?
1|654c|Conducteurs qualifiés de systèmes de remontées mécaniques|Conducteurs qualifiés de systèmes de remontées
1|655a|Autres agents et ouvriers qualifiés (sédentaires) des services d'exploitation des transports|Autres agents et ouvriers qualifiés (sédentaires
1|656b|Matelots de la marine marchande|Matelots de la marine marchande
1|656c|Capitaines et matelots timoniers de la navigation fluviale|Capitaines et matelots timoniers de la navigation
1|671a|Ouvriers non qualifiés des travaux publics de l'Etat et des collectivités locales|Ouvriers non qualifiés des travaux publics de l'E
1|671c|Ouvriers non qualifiés des travaux publics et du travail du béton|Ouvriers non qualifiés des travaux publics et du
1|671d|Aides-mineurs, ouvriers non qualifiés de l'extraction|Aides-mineurs, ouvriers non qualifiés de l'extrac
1|672a|Ouvriers non qualifiés de l'électricité et de l'électronique|Ouvriers non qualifiés de l'électricité et de l
1|673a|Ouvriers de production non qualifiés travaillant par enlèvement de métal|Ouvriers de production non qualifiés travaillant
1|673b|Ouvriers de production non qualifiés travaillant par formage de métal|Ouvriers de production non qualifiés travaillant
1|673c|Ouvriers non qualifiés de montage, contrôle en mécanique et travail des métaux|Ouvriers non qualifiés de montage, contrôle en m
1|674a|Ouvriers de production non qualifiés : chimie, pharmacie, plasturgie|Ouvriers de production non qualifiés : chimie, ph
1|674b|Ouvriers de production non qualifiés de la transformation des viandes|Ouvriers de production non qualifiés de la transf
1|674c|Autres ouvriers de production non qualifiés : industrie agroalimentaire|Autres ouvriers de production non qualifiés : ind
1|674d|Ouvriers de production non qualifiés : métallurgie, production verrière, céramique, matériaux de construction|Ouvriers de production non qualifiés : métallurg
1|674e|Ouvriers de production non qualifiés : industrie lourde du bois, fabrication des papiers et cartons|Ouvriers de production non qualifiés : industrie
1|675a|Ouvriers de production non qualifiés du textile et de la confection, de la tannerie-mégisserie et du travail du cuir|Ouvriers de production non qualifiés du textile e
1|675b|Ouvriers de production non qualifiés du travail du bois et de l'ameublement|Ouvriers de production non qualifiés du travail d
1|675c|Ouvriers de production non qualifiés de l'imprimerie, presse, édition|Ouvriers de production non qualifiés de l'imprime
1|676a|Manutentionnaires non qualifiés|Manutentionnaires non qualifiés
1|676b|Déménageurs (hors chauffeurs-déménageurs), non qualifiés|Déménageurs (hors chauffeurs-déménageurs), non
1|676c|Ouvriers du tri, de l'emballage, de l'expédition, non qualifiés|Ouvriers du tri, de l'emballage, de l'expédition,
1|676d|Agents non qualifiés des services d'exploitation des transports|Agents non qualifiés des services d'exploitation
1|676e|Ouvriers non qualifiés divers de type industriel|Ouvriers non qualifiés divers de type industriel
1|681a|Ouvriers non qualifiés du gros oeuvre du bâtiment|Ouvriers non qualifiés du gros oeuvre du bâtimen
1|681b|Ouvriers non qualifiés du second oeuvre du bâtiment|Ouvriers non qualifiés du second oeuvre du bâtim
1|682a|Métalliers, serruriers, réparateurs en mécanique non qualifiés|Métalliers, serruriers, réparateurs en mécaniqu
1|683a|Apprentis boulangers, bouchers, charcutiers|Apprentis boulangers, bouchers, charcutiers
1|684a|Nettoyeurs|Nettoyeurs
1|684b|Ouvriers non qualifiés de l'assainissement et du traitement des déchets|Ouvriers non qualifiés de l'assainissement et du
1|685a|Ouvriers non qualifiés divers de type artisanal|Ouvriers non qualifiés divers de type artisanal
1|691a|Conducteurs d'engin agricole ou forestier|Conducteurs d'engin agricole ou forestier
1|691b|Ouvriers de l'élevage|Ouvriers de l'élevage
1|691c|Ouvriers du maraîchage ou de l'horticulture|Ouvriers du maraîchage ou de l'horticulture
1|691d|Ouvriers de la viticulture ou de l'arboriculture fruitière|Ouvriers de la viticulture ou de l'arboriculture f
1|691e|Ouvriers agricoles sans spécialisation particulière|Ouvriers agricoles sans spécialisation particuli?
1|691f|Ouvriers de l'exploitation forestière ou de la sylviculture|Ouvriers de l'exploitation forestière ou de la sy
1|692a|Marins-pêcheurs et ouvriers de l'aquaculture|Marins-pêcheurs et ouvriers de l'aquaculture

+ 15
- 0
db/data2/dbdata_rh_t_chart.csv View File

@ -0,0 +1,15 @@
type|category|name|default_time_calc|label_view_code|code|serie_code
card|date|Carte effectifs|val|0|CTI_STATCAR|{CTI_FEMMES,CTI_HOMMES}
donut|CTI_TYPECONTRAT#LS#CTI_TCNT|Types de contrats|val|0|CTI_TYPECNT|{CTI_FEMMES,CTI_HOMMES}
spread|CTI_AGE#LS#CTI_AGE|Effectifs par tranches age|val|0|CTI_EFFAGE|{CTI_FEMMES,CTI_HOMMES}
spread|CTI_AGE#LS#CTI_AGE|Masse salariale par tranche d'age|val|0|CTI_MSAGE|{CTI_MSF,CTI_MSH}
spread|CTI_ANCIENNETE#LS#CTI_ANC|Effectifs par tranches anciente|val|0|CTI_EFFANC|{CTI_FEMMES,CTI_HOMMES}
spread|CTI_STATUT#LS#CTI_STATUT|Effectifs par statut|val|0|CTI_EFFSTAT|{CTI_FEMMES,CTI_HOMMES}
stacked|CTI_CSP#DT#|Masse salariale par CSP|val|1|CTI_MSCSP|{CTI_MSF,CTI_MSH}
stacked|date|Effectifs par genre|val|0|CTI_EFFGEN|{CTI_FEMMES,CTI_HOMMES}
stacked|date|Heures supplementaires|val|0|CTI_HSUPP|{CTI_HSUPF,CTI_HSUPH}
stackedPercent|date|Repartition par genre|val|0|CTI_REPGEN|{CTI_FEMMES,CTI_HOMMES}
table|date|Entrees sorties carte|val|0|CTI_ENTSORCAR|{CTI_DEPSALF,CTI_DEPSALH,CTI_EFFDF,CTI_EFFDH,CTI_ENTSORF,CTI_ENTSORH,CTI_NVSALF,CTI_NVSALH,CTI_TOF,CTI_TOH}
table2d|CTI_STATUT#LS#CTI_STATUT|Tableau statuts|val|0|CTI_STAT|{CTI_FEMMES,CTI_HOMMES,CTI_TOTSAL}
table2dTime|CTI_STATUT#LS#CTI_STATUT|Statuts temps|cum|0|CTI_STATTIME|{CTI_TAUXSTAT,CTI_TOTSAL,CTI_TOTSALF}
treemap|CTI_CSP#DT#|Masse salariale par CSP (MAP)|val|1|CTI_MSCSPMAP|{CTI_MS}

+ 18
- 0
db/data2/dbdata_rh_t_classes.csv View File

@ -0,0 +1,18 @@
table_code|classe_code|texte|is_cti|contenu_by_code|contenu_non_replicable_ailleurs
AGE|CTI_AGE|Tranche d'ages Bilan Social|1|0|0
ANC|CTI_ANC|Tranche d'ancienneté Bilan Social|1|0|0
MOA|CTI_ARRET|Arrêt de travail Bilan Social|1|0|0
MTF|CTI_MFIN|Motif de fin Bilan Social|1|0|0
NAT|CTI_NAT|Nationalité Bilan Social|1|0|0
PSE|CTI_CONTRIBUTION_BLOC_OPERATOIRE|Services du bloc opératoire pour le calcul de la contribution|1|0|0
QUA|CTI_QUAL|Qualifications personnels|1|0|0
QUA|CTI_SAE_CATEGORIES_PERSONNEL|Catégories de personnel SAE|1|1|0
QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL|Spécialités détaillées du personnel SAE|1|0|0
QUA|CTI_SAE_SPECIALITES_PERSONNEL|Spécialités du personnel SAE|1|1|0
QUA|CTI_SAE_TYPES_PERSONNEL|Types du personnel SAE|1|1|0
RUP|ALM_HRS|ALM Détail des heures contrat, sup, abs, maintien|1|0|0
RUP|CTI_RUB|Rubrique Bilan Social|1|0|0
SER|CTI_SAE_GROUPES_DISCIPLINES|Groupes de disciplines SAE|1|0|0
STA|CTI_STATUT|Statuts CTI|1|0|0
TCN|CTI_TCNT|Type de contrat Bilan Social|1|0|0
TTT|CTI_TTT|Type de temps de travail Bilan Social|1|0|0

+ 195
- 0
db/data2/dbdata_rh_t_classes_sections.csv View File

@ -0,0 +1,195 @@
code|texte|condition|exclude_code|include_code|table_code|classe_code
S1|- 25 ans||||AGE|CTI_AGE
S2|De 25 à 35 ans||||AGE|CTI_AGE
S3|De 36 à 45 ans||||AGE|CTI_AGE
S4|De 46 à 55 ans||||AGE|CTI_AGE
S5|De 56 à 65 ans||||AGE|CTI_AGE
S6|+ de 65 ans||||AGE|CTI_AGE
S1|- 10 ans||||ANC|CTI_ANC
S2|De 10 à 20 ans||||ANC|CTI_ANC
S3|De 21 à 30 ans||||ANC|CTI_ANC
S4|+ de 30 ans||||ANC|CTI_ANC
ABS|Absence (hors divers congés, conflits et service national)||||MOA|CTI_ARRET
ACT|Accident du travail, de trajet ou maladie professionnelle||||MOA|CTI_ARRET
AUT|Autre||||MOA|CTI_ARRET
COA|Congé autorisé (événements familiaux, congés spéciaux pour les femmes...)||||MOA|CTI_ARRET
MAL|Maladie||||MOA|CTI_ARRET
MAT|Maternité||||MOA|CTI_ARRET
AUT|Autre||||MTF|CTI_MFIN
DEC|Décés||||MTF|CTI_MFIN
DEM|Démission||||MTF|CTI_MFIN
DPE|Départ en cours de période d'essai||||MTF|CTI_MFIN
FCD|Fin de CDD||||MTF|CTI_MFIN
LAC|Licenciement pour autres causes||||MTF|CTI_MFIN
LRP|Licenciement économique, dont départ en retraite et préretraite||||MTF|CTI_MFIN
MUT|Mutation inter entreprise||||MTF|CTI_MFIN
RPR|Départ volontaire en retraite et préretraite||||MTF|CTI_MFIN
ET|Etrangère||||NAT|CTI_NAT
FR|Française||||NAT|CTI_NAT
UE|Union Européenne||||NAT|CTI_NAT
S1|Bloc opératoire|<NULL>|||PSE|CTI_CONTRIBUTION_BLOC_OPERATOIRE
PA|Personnel administratif et autre||||QUA|CTI_QUAL
PM|Personnel médical||||QUA|CTI_QUAL
PS|Personnel soignant||||QUA|CTI_QUAL
M9000|Personnels médicaux|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:M*]|QUA|CTI_SAE_CATEGORIES_PERSONNEL
N1000|Personnels de direction|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N1*]|QUA|CTI_SAE_CATEGORIES_PERSONNEL
N2000|Personnels des services de soins|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N2*]|QUA|CTI_SAE_CATEGORIES_PERSONNEL
N3000|Personnels éducatifs et sociaux|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N3*]|QUA|CTI_SAE_CATEGORIES_PERSONNEL
N4000|Personnels médico-techniques|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N4*]|QUA|CTI_SAE_CATEGORIES_PERSONNEL
N5000|Personnels techniques et ouvriers|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:N5*]|QUA|CTI_SAE_CATEGORIES_PERSONNEL
X9000|Hors champ SAE|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_PERSONNEL:X*]|QUA|CTI_SAE_CATEGORIES_PERSONNEL
M1010|Médecine générale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1020|Anatomie et cytologie pathologiques||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1030|Anesthésie-réanimation||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1031|Réanimation médicale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1040|Cardiologie et maladies cardiovasculaires||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1050|Dermatologie - Vénérologie - Allergologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1070|Endocrinologie et maladies métaboliques||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1090|Gastro entérologie et hépatologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1100|Médecine interne etimmunologie clinique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1110|Néphrologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1120|Neurologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1130|Oncologie médicale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1140|Pédiatrie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1150|Pneumologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1160|Radiologie et imagerie médicale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1170|Oncologie radiothérapique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1180|Médecine physique et de réadaptation||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1190|Rhumatologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1200|Autres spécialités médicales||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1210|Médecine nucléaire||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1310|Génétique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1320|Gériatrie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1330|Hématologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1340|Médecine d'urgence||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2010|Chirurgie générale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2020|Chirurgie maxillo-faciale - Stomatologie et chirurgie orale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2030|Chirurgie orthopédique et traumatologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2040|Chirurgie plastique reconstructrice et esthétique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2050|Gynécologie - Obstétrique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2060|Neuro-chirurgie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2070|Ophtalmologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2080|Oto-rhino-laryngologie et cervico-faciale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2100|Chirurgie Urologique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2110|Autres spécialités chirurgicale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2120|Chirurgie viscérale et digestive||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2130|Chirurgie vasculaire||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2140|Chirurgie thoracique et cardiaque||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M2150|Chirurgie infantile||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3011|Médecins spécialisés en biologie médicale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3012|Pharmaciens spécialisés en biologie médicale||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3020|Psychiatrie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3030|Odontologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3040|Santé publique (y compris DIM)||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3050|Pharmacien (hors biologie médicale)||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3060|Médecins du travail||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M3070|Autres||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N1110|Personnel de direction||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N1210|Secrétaires médicaux et assistants médico-administratif||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N1220|Autres personnels administratifs||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N1310|Directeurs des soins (écoles paramédicales et soins non infirmiers)||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N1410|Directeur de soins infirmiers||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2120|Surveillants et autres personnels d'encadrement infirmiers||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2130|Surveillants des personnels de rééducation et autres personnels d'encadrement non infirmier||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2210|Infirmiers DE sans spécialisation (hors secteur psy)||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2220|Infirmiers DE en secteur psychiatrique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2310|Infirmiers DE anesthésistes||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2320|Infirmiers DE bloc opératoire||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2340|Puericultrices DE||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2350|Infirmiers en pratique avancée (IPA)||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2410|Masseurs kinésithérapeuthes||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2420|Pédicures - Podologues||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2430|Orthophonistes||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2440|Orthoptistes||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2450|Diététiciens||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2460|Ergothérapeuthes||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2470|Psychomotricien||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2480|Autres emplois des services de rééducation||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2510|Aides soignants||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2520|Aides médico-psychologique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2530|Auxilliaires de puériculture||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2610|Agents de service hospitalier||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2620|Autres personnels de service des services de soins||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2630|Fammilles d'accueil||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2710|Psychologues||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N2810|Sages-femmes y compris encadrement et écoles||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N3110|Personnels éducatifs||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N3111|Educateurs spécialisés||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N3120|Assistants de service social||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N3121|Cadres socio-éducatifs||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N3130|Autres personnels éducatifs et sociaux||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4110|Personnels des services de laboratoire||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N411B|Techniciens de laboratoire||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N411C|Autres personnels des services de laboratoire||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4120|Préparateurs en pharmacie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N412A|Autres personnels des services de pharmacie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4130|Manipulateurs d'électroradiologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4140|Autres personnels des services de radiologie||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4150|Autres personnels médico-technique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4160|Surveillants, cadres et autres personnels d'encadrement médico-technique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4170|Dosimétristes||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4180|Radiophysiciens - Physiciens médicaux||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N4190|Conseillers en génétique||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N5110|Ingénieurs||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N511A|Personnels des services techniques hors ingénieurs||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N5120|Personnel informatique et organisation hors ingénieur||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
N5130|Personnels des services techniques et des services intérieurs||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
X9190|Hors champ SAE Autres||||QUA|CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL
M1000|Spécialités médicales|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:M1*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
M2000|Spécialités chirurgicales|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:M2*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
M3000|Autres disciplines médicales|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:M3*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N1100|Personnels de direction|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N11*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N1200|Autres personnels administratifs|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N12*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N1300|Directeur de soins|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N13*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N1400|Directeur de soins infirmiers|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N14*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2100|Personnels d'encadrement du personnel des services de soins|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N21*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2200|Infirmiers DE sans spécialisation|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N22*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2300|Infirmiers DE avec spécialisation|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N23*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2400|Personnels de rééducation|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N24*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2500|Aides-soignants|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N25*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2600|Agents de services hospitaliers|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N26*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2700|Psychologues|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N27*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N2800|Sages-femmes y compris encadrement et écoles|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N28*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N3100|Personnels éducatifs et sociaux|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N31*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N4100|Personnels médico-techniques|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N41*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
N5100|Personnels techniques et ouvriers|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:N51*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
X9100|Hors champs SAE|<NULL>||[CLASSE:CTI_SAE_SPECIALITES_DETAILLEES_PERSONNEL:X*]|QUA|CTI_SAE_SPECIALITES_PERSONNEL
M9999|Personnels médicaux|<NULL>||[CLASSE:CTI_SAE_CATEGORIES_PERSONNEL:M*]|QUA|CTI_SAE_TYPES_PERSONNEL
N9999|Personnels non médicaux|<NULL>||[CLASSE:CTI_SAE_CATEGORIES_PERSONNEL:N*]|QUA|CTI_SAE_TYPES_PERSONNEL
X9999|Hors champ SAE|<NULL>||[CLASSE:CTI_SAE_CATEGORIES_PERSONNEL:X*]|QUA|CTI_SAE_TYPES_PERSONNEL
01|Absence maladie||||RUP|ALM_HRS
02|Absence maternité||||RUP|ALM_HRS
03|Absence CP||||RUP|ALM_HRS
04|Autres absences||||RUP|ALM_HRS
05|Heures contractuelles||||RUP|ALM_HRS
06|Heures sup. et comp.||||RUP|ALM_HRS
07|Absence AT et MP||||RUP|ALM_HRS
08|Absences congés parental||||RUP|ALM_HRS
09|Maintien Absence maladie||||RUP|ALM_HRS
10|Maintien Absence maternité||||RUP|ALM_HRS
11|Maintien Absence CP||||RUP|ALM_HRS
12|Maintien Autres absences||||RUP|ALM_HRS
13|Maintien AT et MP||||RUP|ALM_HRS
14|Maintien Absence congés parental||||RUP|ALM_HRS
15|Heures payées||||RUP|ALM_HRS
16|Absences payées non travaillées SAGE||||RUP|ALM_HRS
BRU|Brut||||RUP|CTI_RUB
CDE|Cotisations déductibles||||RUP|CTI_RUB
CND|Cotisations non déductibles||||RUP|CTI_RUB
EXO|Exonérations||||RUP|CTI_RUB
GAI|Gains non imposables||||RUP|CTI_RUB
NAT|Avantages en nature||||RUP|CTI_RUB
RET|Retenues non imposables||||RUP|CTI_RUB
1|MCO|<NULL>|||SER|CTI_SAE_GROUPES_DISCIPLINES
2|PSY|<NULL>|||SER|CTI_SAE_GROUPES_DISCIPLINES
3|HAD|<NULL>|||SER|CTI_SAE_GROUPES_DISCIPLINES
4|SSR|<NULL>|||SER|CTI_SAE_GROUPES_DISCIPLINES
S1|Ouvrier||||STA|CTI_STATUT
S2|Employé||||STA|CTI_STATUT
S3|Technicien||||STA|CTI_STATUT
S4|Agent de maitrise||||STA|CTI_STATUT
S5|Cadre||||STA|CTI_STATUT
CDD|Contrats à durée déterminée||||TCN|CTI_TCNT
CDI|Contrats à durée indéterminée||||TCN|CTI_TCNT
TC|Temps complet||||TTT|CTI_TTT
TP|Temps partiel||||TTT|CTI_TTT

+ 111
- 0
db/data2/dbdata_rh_t_classes_sections_elements_ages.csv View File

@ -0,0 +1,111 @@
section_code|to_code|table_code|classe_sequence
S1|001|AGE|9
S1|002|AGE|9
S1|003|AGE|9
S1|004|AGE|9
S1|005|AGE|9
S1|006|AGE|9
S1|007|AGE|9
S1|008|AGE|9
S1|009|AGE|9
S1|010|AGE|9
S1|011|AGE|9
S1|012|AGE|9
S1|013|AGE|9
S1|014|AGE|9
S1|015|AGE|9
S1|016|AGE|9
S1|017|AGE|9
S1|018|AGE|9
S1|019|AGE|9
S1|020|AGE|9
S1|021|AGE|9
S1|022|AGE|9
S1|023|AGE|9
S1|024|AGE|9
S2|025|AGE|9
S2|026|AGE|9
S2|027|AGE|9
S2|028|AGE|9
S2|029|AGE|9
S2|030|AGE|9
S2|031|AGE|9
S2|032|AGE|9
S2|033|AGE|9
S2|034|AGE|9
S2|035|AGE|9
S3|036|AGE|9
S3|037|AGE|9
S3|038|AGE|9
S3|039|AGE|9
S3|040|AGE|9
S3|041|AGE|9
S3|042|AGE|9
S3|043|AGE|9
S3|044|AGE|9
S3|045|AGE|9
S4|046|AGE|9
S4|047|AGE|9
S4|048|AGE|9
S4|049|AGE|9
S4|050|AGE|9
S4|051|AGE|9
S4|052|AGE|9
S4|053|AGE|9
S4|054|AGE|9
S4|055|AGE|9
S5|056|AGE|9
S5|057|AGE|9
S5|058|AGE|9
S5|059|AGE|9
S5|060|AGE|9
S5|061|AGE|9
S5|062|AGE|9
S5|063|AGE|9
S5|064|AGE|9
S5|065|AGE|9
S6|066|AGE|9
S6|067|AGE|9
S6|068|AGE|9
S6|069|AGE|9
S6|070|AGE|9
S6|071|AGE|9
S6|072|AGE|9
S6|073|AGE|9
S6|074|AGE|9
S6|075|AGE|9
S6|076|AGE|9
S6|077|AGE|9
S6|078|AGE|9
S6|079|AGE|9
S6|080|AGE|9
S6|081|AGE|9
S6|082|AGE|9
S6|083|AGE|9
S6|084|AGE|9
S6|085|AGE|9
S6|086|AGE|9
S6|087|AGE|9
S6|088|AGE|9
S6|089|AGE|9
S6|090|AGE|9
S6|091|AGE|9
S6|092|AGE|9
S6|093|AGE|9
S6|094|AGE|9
S6|095|AGE|9
S6|096|AGE|9
S6|097|AGE|9
S6|098|AGE|9
S6|099|AGE|9
S6|100|AGE|9
S6|101|AGE|9
S6|102|AGE|9
S6|103|AGE|9
S6|104|AGE|9
S6|105|AGE|9
S6|106|AGE|9
S6|107|AGE|9
S6|108|AGE|9
S6|109|AGE|9
S6|110|AGE|9

+ 52
- 0
db/data2/dbdata_rh_t_classes_sections_elements_anciennetes_annee.csv View File

@ -0,0 +1,52 @@
section_code|to_code|table_code|classe_sequence
S1|00|ANC|9
S1|01|ANC|9
S1|02|ANC|9
S1|03|ANC|9
S1|04|ANC|9
S1|05|ANC|9
S1|06|ANC|9
S1|07|ANC|9
S1|08|ANC|9
S1|09|ANC|9
S2|10|ANC|9
S2|11|ANC|9
S2|12|ANC|9
S2|13|ANC|9
S2|14|ANC|9
S2|15|ANC|9
S2|16|ANC|9
S2|17|ANC|9
S2|18|ANC|9
S2|19|ANC|9
S2|20|ANC|9
S3|21|ANC|9
S3|22|ANC|9
S3|23|ANC|9
S3|24|ANC|9
S3|25|ANC|9
S3|26|ANC|9
S3|27|ANC|9
S3|28|ANC|9
S3|29|ANC|9
S3|30|ANC|9
S4|31|ANC|9
S4|32|ANC|9
S4|33|ANC|9
S4|34|ANC|9
S4|35|ANC|9
S4|36|ANC|9
S4|37|ANC|9
S4|38|ANC|9
S4|39|ANC|9
S4|40|ANC|9
S4|41|ANC|9
S4|42|ANC|9
S4|43|ANC|9
S4|44|ANC|9
S4|45|ANC|9
S4|46|ANC|9
S4|47|ANC|9
S4|48|ANC|9
S4|49|ANC|9
S4|50|ANC|9

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

@ -0,0 +1,2 @@
code|label
CTI_EGAPRO|Cockpit RH

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

@ -0,0 +1,6 @@
oid|dashboard_code|external_code2
1|CTI_EGAPRO|CTI_AGE#LS#AGE:CTI_AGE:S1
1|CTI_EGAPRO|CTI_AGE#LS#AGE:CTI_AGE:S3
1|CTI_EGAPRO|CTI_AGE#LS#AGE:CTI_AGE:S6
1|CTI_EGAPRO|CTI_SEXE#DT#1
1|CTI_EGAPRO|CTI_SEXE#DT#2

+ 3
- 0
db/data2/dbdata_rh_t_dashboard_onglet.csv View File

@ -0,0 +1,3 @@
oid|dashboard_code|name|index
1|CTI_EGAPRO|Effectif|0
1|CTI_EGAPRO|Masse Salariale|1

+ 12
- 0
db/data2/dbdata_rh_t_dashboard_widget.csv View File

@ -0,0 +1,12 @@
oid|chart_code|dashboard_code|deprecated
1|CTI_STATTIME|CTI_EGAPRO|t
1|CTI_TYPECNT|CTI_EGAPRO|f
1|CTI_STAT|CTI_EGAPRO|f
1|CTI_EFFANC|CTI_EGAPRO|f
1|CTI_ENTSORCAR|CTI_EGAPRO|f
1|CTI_MSCSPMAP|CTI_EGAPRO|f
1|CTI_MSAGE|CTI_EGAPRO|f
1|CTI_EFFGEN|CTI_EGAPRO|f
1|CTI_EFFAGE|CTI_EGAPRO|f
1|CTI_EFFSTAT|CTI_EGAPRO|f
1|CTI_MSCSP|CTI_EGAPRO|f

+ 40
- 0
db/data2/dbdata_rh_t_expert_controle.csv View File

@ -0,0 +1,40 @@
oid|code|texte|description|is_cti|gravite_id|start_periode
0||||1|9|A1
1|CTI_NIV1_C000|Présence de C000|<NULL>|1|9|A1
1|CTI_NIV1_CAD_EMP_NR|Cadre d'emploi non renseigné|<NULL>|1|9|A1
1|CTI_NIV1_CAT_STAT_NR|Catégorie statutaire non renseignée|<NULL>|1|9|A1
1|CTI_NIV1_CE_NR|Code emploi non renseigné||1|9|A1
1|CTI_NIV1_COD_POST_NR|Code postal non renseigné|<NULL>|1|9|A1
1|CTI_NIV1_COM_PAR_NR|Commission paritaire non renseignée|<NULL>|1|9|A1
1|CTI_NIV1_CSP_NR|Catégorie socio-professionnelle non renseignée||1|9|A1
1|CTI_NIV1_CTRID_NULL|Contrat ID null en paie|<NULL>|1|9|A1
1|CTI_NIV1_DAT_NAIS_NR|Date de naissance non renseignée|<NULL>|1|9|A1
1|CTI_NIV1_DTEDEB_NR|Date de début de contrat non renseignée|<NULL>|1|9|A1
1|CTI_NIV1_DTEFIN_NR|Date de fin de contrat non renseignée|<NULL>|1|9|A1
1|CTI_NIV1_FIL_NR|Filière non renseignée|<NULL>|1|9|A1
1|CTI_NIV1_GRI_NR|Grille non renseignée||1|9|A1
1|CTI_NIV1_GROGRI_NR|Groupe Grille non renseigné||1|9|A1
1|CTI_NIV1_GRO_COT_NR|Groupe de cotisant non renseigné|<NULL>|1|9|A1
1|CTI_NIV1_MOTDEB_NR|Motif de début non renseigné|Contrats sans motif de début.|1|9|A1
1|CTI_NIV1_MOTFIN_NR|Motif de Fin non renseigné||1|9|A1
1|CTI_NIV1_NAT_NR|Nationalité non renseigné||1|9|A1
1|CTI_NIV1_QUAL_NR|Qualification non renseignée||1|9|A1
1|CTI_NIV1_SEX_NR|Sexe non renseigné|<NULL>|1|9|A1
1|CTI_NIV1_SPE_NR|Spécialité non renseignée||1|9|A1
1|CTI_NIV1_SRV_NR|Service non renseigné||1|9|A1
1|CTI_NIV1_STT_NR|Statut non renseigné||1|9|A1
1|CTI_NIV1_TC_NR|Type de contrat non renseigné||1|9|A1
1|CTI_NIV1_TTT_NR|Type temps travail non renseigné||1|9|A1
1|CTI_NIV1_UNI_FONC_NR|Unité fonctionnelle non renseignée|<NULL>|1|9|A1
1|CTI_NIV2_C000_BRUT|Présence C000 BRUT||1|5|A1
1|CTI_NIV2_C000_COT_PAT|Présence C000 Cotisation Patronale||1|5|A1
1|CTI_NIV2_C000_COT_SAL|Présence C000 Cotisation Salariale||1|5|A1
1|CTI_NIV2_C000_H_CONTRAT|Présence C000 Heures Contrat||1|5|A1
1|CTI_NIV2_C000_H_PAYEES|Présence C000 Heures Payées||1|5|A1
1|CTI_NIV2_C000_H_TRAVAILLEES|Présence C000 Heures Travaillées||1|5|A1
1|CTI_NIV2_C000_MASSE_SALARIALE|Présence C000 Masse Salariale||1|5|A1
1|CTI_NIV2_C000_NET_A_PAYE|Présence C000 Net A Payer Salarié||1|5|A1
1|CTI_NIV2_C000_NET_IMP|Présence C000 Net Imposable Salarié||1|5|A1
1|CTI_NIV2_HCSORTI|Salarié avec plus d'une paie avec heures contrat après sortie de l'établissement||1|5|A1
1|CTI_NIV3_PRESENCE_PAIE_PAS_PLANNING|Liste des salariés présents en paie mais pas au planning|Liste des salariés présents en paie mais pas au planning|1|1|A2
1|CTI_NIV3_PRESENCE_PLANNING_PAS_PAIE|Liste des personnes présentes au planning mais pas en planning|Liste des personnes présentes au planning mais pas en planning|1|1|A2

+ 38
- 0
db/data2/dbdata_rh_t_expert_controle_rule.csv View File

@ -0,0 +1,38 @@
oid|expert_controle_code|data_type|indicateur_code|indicateur_condition_external_code_1|indicateur_condition_external_code_2|indicateur_condition_external_code_3|formula|indicateur_code_2|indicateur_condition_external_code_21|indicateur_condition_external_code_22|indicateur_condition_external_code_23|formula_2|indicateur_code_3|indicateur_condition_external_code_31|indicateur_condition_external_code_32|indicateur_condition_external_code_33|formula_3|expert_controle_id|expert_controle_rule_id|indicateur_id|indicateur_condition_id_1|indicateur_condition_id_2|indicateur_condition_id_3|indicateur_2_id|indicateur_condition_id_21|indicateur_condition_id_22|indicateur_condition_id_23|indicateur_3_id|indicateur_condition_id_31|indicateur_condition_id_32|indicateur_condition_id_33
1|CTI_NIV1_C000|salarie|CTI_C000||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_CAD_EMP_NR|salarie|CTI_CDM||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_CAT_STAT_NR|salarie|CTI_CST||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_CE_NR|salarie|CTI_CEM|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_COD_POST_NR|salarie|CTI_CPO||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_COM_PAR_NR|salarie|CTI_CPA||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_CSP_NR|salarie|CTI_CSP|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_CTRID_NULL|salarie|CTI_CTRID_NULL||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_DAT_NAIS_NR|salarie|CTI_DNA||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_DTEDEB_NR|salarie|CTI_DTEDEB_NR||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_DTEFIN_NR|salarie|CTI_DTEFIN_NR||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_FIL_NR|salarie|CTI_FIL||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_GRI_NR|salarie|CTI_GRI|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_GROGRI_NR|salarie|CTI_GGR|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_GRO_COT_NR|salarie|CTI_GCO||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_MOTDEB_NR|salarie|CTI_MDD|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_MOTFIN_NR|salarie|CTI_MDF|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_NAT_NR|salarie|CTI_NAT|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_QUAL_NR|salarie|CTI_QUA|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_SEX_NR|salarie|CTI_SEX||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_SPE_NR|salarie|CTI_SPE|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_SRV_NR|salarie|CTI_SER|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_STT_NR|salarie|CTI_STA|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_TC_NR|salarie|CTI_TCNT|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_TTT_NR|salarie|CTI_TTT|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV1_UNI_FONC_NR|salarie|CTI_UFO||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_BRUT|salarie|CTI_C000_BRUT|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_COT_PAT|salarie|CTI_C000_COT_PAT|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_COT_SAL|salarie|CTI_C000_COT_SAL|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_H_CONTRAT|salarie|CTI_C000_H_CONTRAT||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_H_PAYEES|salarie|CTI_C000_H_PAYEES|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_H_TRAVAILLEES|salarie|CTI_C000_H_TRAVAILLES|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_MASSE_SALARIALE|salarie|CTI_C000_MASSE_SALARIALE|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_NET_A_PAYE|salarie|CTI_C000_NET_A_PAYE|||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV2_C000_NET_IMP|salarie|CTINETIMPOS|CTI_RUBRIQUE#DT#C000||||<NULL>|||||<NULL>|||||0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV3_PRESENCE_PAIE_PAS_PLANNING|salarie|CTI_PRESENCE_PAIE_PAS_PLANNING||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0
1|CTI_NIV3_PRESENCE_PLANNING_PAS_PAIE|salarie|CTI_PRESENCE_PLANNING_PAS_PAIE||||<NULL>|<NULL>||||<NULL>|<NULL>||||<NULL>|0|0|0|0|0|0|0|0|0|0|0|0|0|0

+ 21
- 0
db/data2/dbdata_rh_t_indicateur_serie.csv View File

@ -0,0 +1,21 @@
code|indicateur_code|name|color|formula|calc|total|format|external_code2|serie_code
CTI_ENTSORF||Nombre entrees et sorties Femmes|#d19aed|[1] + [2]|t|f||{}|{1:CTI_NVSALF,2:CTI_DEPSALF}
CTI_ENTSORH||Nombre entrees et sorties Hommes|#7b53e8|[1] + [2]|t|f||{}|{1:CTI_NVSALH,2:CTI_DEPSALH}
CTI_HSUPF||Heures supplementaires Femmes|#d19aed||f|f||{CTI_SEXE#DT#2}|<NULL>
CTI_HSUPH||Heures supplementaires Hommes|#7b53e8||f|f||{CTI_SEXE#DT#1}|<NULL>
CTI_TAUXSTAT||Taux par statut||([1] / [2])|t|f|0.00%|{}|{1:CTI_TOTSAL,2:CTI_TOTSALF}
CTI_TOF||Turn Over Femmes|#d19aed|([1]/2) / [2]|t|f|0.00%|{}|{1:CTI_ENTSORF,2:CTI_EFFDF}
CTI_TOH||Turn Over Hommes|#7b53e8|([1]/2) / [2]|t|f|0.00%|{}|{1:CTI_ENTSORH,2:CTI_EFFDH}
CTI_MS|CTIMTMASSE|Masse salariale|#7b53e8||f|f||{}|<NULL>
CTI_MSF|CTIMTMASSE|Masse salariale Femmes|#d19aed||f|f||{CTI_SEXE#DT#2}|<NULL>
CTI_MSH|CTIMTMASSE|Masse salariale Hommes|#7b53e8||f|f||{CTI_SEXE#DT#1}|<NULL>
CTI_EFFDF|CTI_EFFDJPER|Effectifs dernier jour Femmes|#d19aed||f|f||{CTI_SEXE#DT#2}|<NULL>
CTI_EFFDH|CTI_EFFDJPER|Effectifs dernier jour Hommes|#7b53e8||f|f||{CTI_SEXE#DT#1}|<NULL>
CTI_FEMMES|CTI_NBSALCNT|Femmes|#d19aed||f|f||{CTI_SEXE#DT#2}|<NULL>
CTI_HOMMES|CTI_NBSALCNT|Hommes|#7b53e8||f|f||{CTI_SEXE#DT#1}|<NULL>
CTI_TOTSAL|CTI_NBSALCNT|Total salaries|||f|f||{}|<NULL>
CTI_TOTSALF|CTI_NBSALCNT|Total Salaries fin annee|||f|t||{}|<NULL>
CTI_NVSALF|CTI_NOUVSALS|Nouveaux salaries Femmes|#d19aed||f|f||{CTI_SEXE#DT#2}|<NULL>
CTI_NVSALH|CTI_NOUVSALS|Nouveaux salaries Hommes|#7b53e8||f|f||{CTI_SEXE#DT#1}|<NULL>
CTI_DEPSALF|CTI_SALPARTISSP|Departs salaries Femmes|#d19aed||f|f||{CTI_SEXE#DT#2}|<NULL>
CTI_DEPSALH|CTI_SALPARTISSP|Departs salaries Hommes|#7b53e8||f|f||{CTI_SEXE#DT#1}|<NULL>

+ 192
- 0
db/data2/dbdata_rh_t_indicateurs.csv View File

@ -0,0 +1,192 @@
oid|code|texte|table_name|column_name|is_cti|entete|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|CTIAN|Avantages en nature|v_historique_paie_1|montant_avantage_nature|1|Avantage nature|SUM|#E|80|Avantages nature|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTICOTPAT|Cotisations patronales|v_historique_paie_1|montant_cotisation_patronale|1|Cotisations patronales|SUM|#E|80|Cotisations patronales|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTICOTSAL |Cotisations salariales|v_historique_paie_1|montant_cotisation_salarie|1|Cotisations salariales|SUM|#E|80|Cotisations salariales|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTIETPTHM|ETP travaillé moyen|*CALC|base.cti_division([1], [2])|1|ETP travaillé moyen|*CALC|#,00|0|ETP travaillé moyen| | | | | | |CTI_ETPW|CTI_NBMOIS|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTIHP|Heures payées|v_historique_paie_1|heures_payees|1|Heures payées|SUM||80|Heures payées|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTIHT|Heures travaillées|v_historique_paie_1|heures_travaillees|1|Heures travaillées|SUM||80|Heures travaillées|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTIMASSMOY|Masse salariale moyenne|*CALC|base.cti_division([1], [2])|1|Masse moyenne|*CALC|#E|80|Masse salariale moyenne| | | | | | |CTIMTMASSE|CTI_ETPPAYE|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTIMTBRUT|Montant brut|v_historique_paie_1|montant_brut|1|Brut|SUM|#E|80|Montant brut|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTIMTMASSE|Masse salariale|v_historique_paie_1|montant_masse_salariale|1|Masse|SUM|#E|80|Masse salariale|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTINBCNT|Nombre de contrats|v_contrats_mois_1|DISTINCT contrat_id|1|Contrats|COUNT||80|Nombre de contrats|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTINBDSAL|Nombre de salariés distincts (Historique)|v_historique_paie_1|DISTINCT salarie_id|1|Salariés distincts|COUNT||80|Nombre de salariés distincts (Historique)|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTINBHOMME|Nombre d'Hommes|v_historique_paie_1|DISTINCT (CASE WHEN sexe_code = 'M' THEN salarie_id ELSE null END)|1|NB d'Hommes|COUNT||0|Nombre d'Hommes|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTINBJARRET|Jours d'arret de travail|v_arrets_travail_mois_1|nb_jours_arret|1|Arrets|SUM|#j|60|Jours d'arret de travail|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTINBSAL|Nombre de salariés (Historique)|v_historique_paie_1|salarie_id|1|Salariés|COUNT||80|Nombre de salariés (Historique)|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTINETAPAYER|Net à Payer|v_historique_paie_1|montant_net_a_payer_salarie|1|Net A Payer|SUM|#E|80|Net A Payer|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTINETIMPOS|Net Imposable|v_historique_paie_1|montant_net_imposable_salarie|1|Net Imposable|SUM|#E|80|Net Imposable|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTIODNET|OD sur Net|v_historique_paie_1|montant_od_net_salarie|1|OD sur Net|SUM|#E|80|OD sur 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|CTISALCHGMOYH|Salaire Horaire Chargé|*CALC|[1] / [2]|1|Salaire Chargé Moyen|*CALC||0|Salaire Chargé Moyen| | | | | | |CTIMASSMOY|CTIHP|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTISEP|Séparateur|SEP||1||SUM||0||1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTITA|Base 4600 TA|v_historique_paie_1|CASE WHEN rubrique_code = '4600' THEN base ELSE 0 END|1|Base 4600 TA|SUM|#¤|80|Base 4600 TA|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTITB|Base 4610 TB|v_historique_paie_1|CASE WHEN rubrique_code = '4610' THEN base ELSE 0 END|1|Base 4610 TB|SUM|#¤|80|Base 4610 TB|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_ACTJPCT|Pourcentage de jours d'accident du travail|*CALC|base.cti_division([1], [2]) * 100|1|Pourcentage de jours d'accident du travail|*CALC|#,0%|0|Pourcentage de jours d'accident du travail| | | | | | |CTI_NBJARRET_ACT|CTINBJARRET|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_ACTPCT|Pourcentage d'accident du travail|*CALC|base.cti_division([1], [2]) * 100|1|Pourcentage d'accident du travail|*CALC|#,0%|0|Pourcentage d'accident du travail| | | | | | |CTI_NBARRET_ACT|CTI_NBARRET|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_AGEMOY|Age moyen|*CALC|base.cti_division([1]::numeric, [2]::numeric)|1|Age moyen|*CALC|#,0|0|Age moyen| | | | | | |CTI_SAGE|CTI_CAGE|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_AGESUM|Somme totale des ages|v_contrats_mois_1|rhp_age_id|1|Somme totale des ages|SUM||0|Somme totale des ages|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_BRUTCPA1|Montant Brut CP A-1 ( rub 1981)|v_historique_paie_1|CASE WHEN rubrique_code = '1981' THEN montant_brut ELSE 0 END|1|Brut CP A-1|SUM|#E|80|Montant Brut CP A-1|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_BRUTMOYEN|Brut moyen/ETP|*CALC|[1] / [2]|1|Brut Moyen(/ETP)|*CALC||0|Brut Moyen(/ETP)| | | | | | |CTIMTBRUT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_BRUTMOYENETP|Brut moyen/ETP|*CALC|base.cti_division([1], [2])|1|Brut Moyen(/ETP)|*CALC|#E|0|Brut Moyen(/ETP)| | | | | | |CTI_MTBRUT|CTI_ETPPAYE|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CAGE|Comptage salariés pour Age moyen|v_contrats_mois_1|"DISTINCT salarie_id::text||'-'||age_id::text"|1|Comptage salariés pour Age moyen|COUNT|#,0|0|Comptage salariés pour Age moyen|1| | | | |1|CTI_AGESUM|CTI_NDSAL|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CALNBJ_OUVRE|Nombre de jours ouvrés|CALENDRIER|nb_jour_ouvre|1|Jours ouvrés|SUM|#|80|Jours ouvrés|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CALNBJ_SEM|Nombre de jours semaine|CALENDRIER|nb_jour_semaine|1|Jours semaine|SUM|#|80|Jours semaine|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CCO|Qualité - Catégorie de congé|v_contrats_mois_1|DISTINCT CASE WHEN categorie_conge_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Catégorie de congé|COUNT||0|Catégorie de congé|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CDDSALP|Salarié en CDD : Nombre Moyen de contrats|*CALC|base.cti_division([1], [2])|1|Salarié en CDD : Nombre Moyen de contrats|*CALC|#,0|0|Salarié en CDD : Nombre Moyen de contrats| | | | | | |CTI_NBCONTRATCDD|CTI_NBSALCDD|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CDM|Qualité - Cadre d'emploi|v_contrats_mois_1|DISTINCT CASE WHEN cadre_emploi_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Cadre d'emploi|COUNT||0|Cadre d'emploi|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CEM|Qualité - Code emploi|v_contrats_mois_1|DISTINCT CASE WHEN code_emploi_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Code emploi|COUNT||0|Code emploi|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CNTCMP|Contrats en temps complet|v_contrats_mois_1|CASE WHEN type_temps_travail_section_code[9] = 'TC' THEN contrat_id ELSE null END|1|Temps complet|COUNT||0|Contrats en temps complet|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CNTPAR|Contrats en temps partiel|v_contrats_mois_1|CASE WHEN type_temps_travail_section_code[9] = 'TP' THEN contrat_id ELSE null END|1|Temps partiel|COUNT||0|Contrats en temps partiel|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CPA|Qualité - Commission paritaire|v_contrats_mois_1|DISTINCT CASE WHEN commission_paritaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Commission paritaire|COUNT||0|Commission paritaire|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CPA1|Base CP Pris sur A-1 1981|v_historique_paie_1|CASE WHEN rubrique_code = '1981' THEN base ELSE 0 END|1|Base CP a-1|SUM|#j|80|Base CP A-1|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_CPO|Qualité - Code postal|v_contrats_mois_1|DISTINCT CASE WHEN code_postal_id = 0 THEN salarie_id ELSE null END|1|Code postal|COUNT||0|Code postal|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CSA|Qualité - Compte salarié|v_contrats_mois_1|DISTINCT CASE WHEN compte_salarie_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Compte salarié|COUNT||0|Compte salarié|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CSP|Qualité - Catégorie socio-professionnelle|v_contrats_mois_1|DISTINCT CASE WHEN categorie_socio_professionnelle_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Catégorie socio-professionnelle|COUNT||0|Catégorie socio-professionnelle|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_CST|Qualité - Catégorie statutaire|v_contrats_mois_1|DISTINCT CASE WHEN categorie_statutaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Catégorie statutaire|COUNT||0|Catégorie statutaire|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_DBTCDD|Nombre débuts de CDD|v_contrats_mois_1|"DISTINCT (CASE WHEN 1=1
AND nombre_debut_contrat > 0
AND type_contrat_section_code[9] = 'CDD'
THEN contrat_id
ELSE null END)"|1|Débuts de CDD|COUNT||0|Nombre débuts de CDD|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_DBTCDI|Nombre de début de CDI|v_contrats_mois_1|"DISTINCT (CASE WHEN 1=1
AND nombre_debut_contrat > 0
AND type_contrat_section_code[9] = 'CDI'
THEN contrat_id
ELSE null END)"|1|Débuts de CDI|COUNT||0|Nombre de début de CDI|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_DNA|Qualité - Date de naissance|v_contrats_mois_1|DISTINCT CASE WHEN date_naissance <= '19200101'::date THEN salarie_id ELSE null END|1|Date de naissance|COUNT||0|Date de naissance|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_DUREEMOYARRETS|Durée moyenne des arrêts|*CALC|base.cti_division([1], [2])|1|Durée moyenne des arrêts|*CALC|#,0|0|Durée moyenne des arrêts| | | | | | |CTINBJARRET|CTI_NBARRET|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EFF1ERJANV|Effectif total au 1er janvier|v_contrats_mois_1|"DISTINCT CASE
WHEN 1=1
AND present_debut_mois = 1
AND date_part('month', date_debut_activite) = 1
THEN salarie_id
ELSE null
END"|1|Effectif total au 1er janvier|COUNT||0|Effectif total au 1er janvier|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EFF31DEV|Effectif total au 31 décembre|v_contrats_mois_1|"DISTINCT CASE
WHEN 1=1
AND present_fin_mois = 1
AND date_part('month', date_debut_activite) = 12
THEN salarie_id
ELSE null
END"|1|Effectif total au 31 décembre|COUNT||0|Effectif total au 31 décembre|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EFFDJPER|Effectif au dernier jour de la période|v_contrats_mois_1|"DISTINCT CASE
WHEN 1=1
AND present_fin_mois = 1
THEN salarie_id
ELSE null
END"|1|Effectif au dernier jour|COUNTLASTMONTH||0|Effectif au dernier jour de la période|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EFFPERM|Effectif permanent|v_contrats_mois_1|DISTINCT CASE WHEN effectif_permanent = 1 then salarie_id ELSE null END|1|Effectif permanent|COUNTLASTMONTH||0|Effectif permanent|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EFFPJPER|Effectif au premier jour de la période|v_contrats_mois_1|"DISTINCT CASE
WHEN 1=1
AND present_debut_mois = 1
AND to_char(date_debut_activite, 'YYYYMM') = to_char( periode::date, 'YYYYMM')
THEN salarie_id
ELSE null
END"|1|Effectif au premier jour|COUNT||0|Effectif au premier jour de la période|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EMBCDD|Nombre d'embauche en CDD|v_contrats_mois_1|"DISTINCT (CASE WHEN 1=1
AND nombre_entrees = 1
AND type_contrat_section_code[9] = 'CDD'
THEN salarie_id
ELSE null END)"|1|Embauche en CDD|COUNT||0|Nombre d'embauche en CDD|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EMBCDI|Nombre d'embauche en CDI|v_contrats_mois_1|"DISTINCT (CASE WHEN 1=1
AND nombre_entrees = 1
AND type_contrat_section_code[9] = 'CDI'
THEN salarie_id
ELSE null END)"|1|Embauche en CDI|COUNT||0|Nombre d'embauche en CDI|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_EMBMS25|Nombre d'embauche de salariés de moins de 25 ans|v_contrats_mois_1|"DISTINCT (CASE WHEN 1=1
AND nombre_entrees = 1
AND rhp_age_id < 25
THEN salarie_id
ELSE null END)"|1|Embauche < 25 ans|COUNT||0|Nombre d'embauche de salariés de moins de 25 ans|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_ETPPAYE|ETP rémunéré|v_historique_paie_1|etp_paye|1|ETP rémunéré|SUM|#,00|80|ETP rémunéré|4| | | | |4|CTIHP|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_ETPREMMOY|ETP rémunéré moyen|*CALC|base.cti_division([1], [2])|1|ETP rémunéré moyen|*CALC|#,00|0|ETP rémunéré moyen| | | | | | |CTI_ETPPAYE|CTI_NBMOIS|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_ETPW|ETP travaillé|v_historique_paie_1|etp_travaille|1|ETP travaillé|SUM|#,00|80|ETP travaillé|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_FIL|Qualité - Filière|v_contrats_mois_1|DISTINCT CASE WHEN filiere_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Filière|COUNT||0|Filière|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_FINCNT|Nombre de fin de contrats|v_contrats_mois_1|DISTINCT (CASE WHEN nombre_fin_contrat > 0 THEN contrat_id ELSE null END)|1|Fin de contrats|COUNT||0|Nombre de fin de contrats|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_FINCNTCDD|Nombre de fin de CDD|v_contrats_mois_1|"DISTINCT (
CASE WHEN 1=1
AND nombre_fin_contrat > 0
AND type_contrat_section_code[9] = 'CDD'
THEN contrat_id
ELSE null
END)"|1|Fin de CDD|COUNT||0|Nombre de fin de CDD|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_FINCNTCDI|Nombre de fin de CDI|v_contrats_mois_1|"DISTINCT (
CASE WHEN 1=1
AND nombre_fin_contrat > 0
AND type_contrat_section_code[9] = 'CDI'
THEN contrat_id
ELSE null
END)"|1|Fin de CDI|COUNT||0|Nombre de fin de CDI|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_FRIMPOS|Frais Imposable|v_historique_paie_1|montant_frais_imposables|1|Frais Imposable|SUM|#E|80|Frais Imposable|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_GCO|Qualité - Groupe de cotisant|v_contrats_mois_1|DISTINCT CASE WHEN groupe_cotisant_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Groupe de cotisant|COUNT||0|Groupe de cotisant|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_GGR|Qualité - Groupe de grille|v_contrats_mois_1|DISTINCT CASE WHEN grille_groupe_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Groupe de grille|COUNT||0|Groupe de grille|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_GRI|Qualité - Grille|v_contrats_mois_1|DISTINCT CASE WHEN grille_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Grille|COUNT||0|Grille|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_LBU|Qualité - Lettre budgétaire|v_contrats_mois_1|DISTINCT CASE WHEN lettre_budgetaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Lettre budgétaire|COUNT||0|Lettre budgétaire|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MALJPCT|Pourcentage de jours de maladie|*CALC|base.cti_division([1], [2]) * 100|1|Pourcentage de jours de maladie|*CALC|#,0%|0|Pourcentage de jours de maladie| | | | | | |CTI_NBJARRET_MAL|CTINBJARRET|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MALPCT|Pourcentage de maladie|*CALC|base.cti_division([1], [2]) * 100|1|Pourcentage de maladie|*CALC|#,0%|0|Pourcentage de maladie| | | | | | |CTI_NBARRET_MAL|CTI_NBARRET|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MATJPCT|Pourcentage de jours de maternité|*CALC|base.cti_division([1], [2]) * 100|1|Pourcentage de jours de maternité|*CALC|#,0%|0|Pourcentage de jours de maternité| | | | | | |CTI_NBJARRET_MAT|CTINBJARRET|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MATPCT|Pourcentage de maternité|*CALC|base.cti_division([1], [2]) * 100|1|Pourcentage de maternité|*CALC|#,0%|0|Pourcentage de maternité| | | | | | |CTI_NBARRET_MAT|CTI_NBARRET|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MDD|Qualité - Motif de début de contrat|v_contrats_mois_1|DISTINCT CASE WHEN motif_debut_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Motif de début|COUNT||0|Motif de début|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MDF|Qualité - Motif de fin de contrat|v_contrats_mois_1|DISTINCT CASE WHEN motif_fin_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Motif de fin|COUNT||0|Motif de fin|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MHMC|Montant Horaire Moyen Chargé|*CALC|base.cti_division([1], [2])|1|Mnt H. Moy. Chargé|*CALC|#,0E|0|Montant Horaire Moyen Chargé| | | | | | |CTIMTMASSE|CTIHP|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_MTBRUT|Montant brut|v_historique_paie_1|montant_brut|1|Brut|SUM|#E|80|Montant brut|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_MT_CNT|Montant rupture de contrat|v_historique_paie_1|CASE WHEN rubrique_id IN [LISTE:CTI_EXP_CNT] THEN montant_od_net_salarie ELSE 0 END|1|Montant rupture de contrat|SUM|#E|0|Montant rupture de contrat|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_MT_IJ|Montant IJSS|v_historique_paie_1|CASE WHEN rubrique_id IN [LISTE:CTI_EXP_IJS] THEN montant_od_net_salarie ELSE 0 END|1|Montant IJSS|SUM|#E|0|Montant IJSS|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_MT_PRE|Montant prime de précarité|v_historique_paie_1|CASE WHEN rubrique_id IN [LISTE:CTI_EXP_PRE] THEN montant_masse_salariale ELSE 0 END|1|Montant Prime de précarité|SUM|#E|0|Montant prime de précarité|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_MT_RET|Montant départ à la retraite|v_historique_paie_1|CASE WHEN rubrique_id IN [LISTE:CTI_EXP_RET] THEN montant_masse_salariale ELSE 0 END|1|Montant retraite|SUM|#E|0|Montant départ à la retraite|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_NAT|Qualité - Nationalité|v_contrats_mois_1|DISTINCT CASE WHEN nationalite_id = 0 THEN salarie_id ELSE null END|1|Nationalité|COUNT||0|Nationalité|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBARRET|Nombre d'arrêts|v_arrets_travail_mois_1|DISTINCT CASE WHEN nb_arret = 1 THEN arret_travail_id ELSE null END|1|Nombre d'arrêts|COUNT||0|Nombre d'arrêts|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBARRETMOY|Nombre d'arrêts moyen|*CALC|base.cti_division([1], [2])|1|Nb d'arrêts moyen|*CALC|#,0|0|Nombre d'arrêts moyen| | | | | | |CTI_NBARRET|CTI_NBSALCNT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBARRET_ACT|Nombre d'arrêts pour accident du travail|v_arrets_travail_mois_1|DISTINCT CASE WHEN nb_arret = 1 AND motif_arret_section_code[9] = 'ACT' THEN arret_travail_id ELSE null END|1|Nb accident du travail|COUNT||0|Nombre d'arrêts pour accident du travail|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBARRET_MAL|Nombre d'arrêts maladie|v_arrets_travail_mois_1|DISTINCT CASE WHEN nb_arret = 1 AND motif_arret_section_code[9] = 'MAL' THEN arret_travail_id ELSE null END|1|Nb maladies|COUNT||0|Nombre d'arrêts maladie|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBARRET_MAT|Nombre d'arrêts maternité|v_arrets_travail_mois_1|DISTINCT CASE WHEN nb_arret = 1 AND motif_arret_section_code[9] = 'MAT' THEN arret_travail_id ELSE null END|1|Nb maternités|COUNT||0|Nombre d'arrêts maternité|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBCNT|Nombre de contrats|v_contrats_mois_1|DISTINCT contrat_id|1|Contrats|COUNT||80|Nombre de contrats|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBCONTRATCDD|Nombre de contrats en CDD|v_contrats_mois_1|DISTINCT (CASE WHEN type_contrat_section_code[9] = 'CDD' THEN contrat_id ELSE null END)|1|Contrats CDD|COUNT||80|Nombre de contrats en CDD|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBCONTRATCDI|Nombre de contrats en CDI|v_contrats_mois_1|DISTINCT (CASE WHEN type_contrat_section_code[9] = 'CDI' THEN contrat_id ELSE null END)|1|Contrats CDI|COUNT||80|Nombre de contrats en CDI|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBETRANGERS|Nombre d'étrangers|v_historique_paie_1|DISTINCT (CASE WHEN nationalite_section_code[9] != 'FR' THEN salarie_id ELSE null END)|1|NB d'étrangers|COUNT||0|Nombre d'étrangers|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_NBFEMMECNT|Nombre de Femmes (Contrats)|v_contrats_mois_1|DISTINCT (CASE WHEN sexe_code = 'F' THEN salarie_id ELSE null END)|1|NB de Femmes|COUNT||0|Nombre de Femmes|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBFEMMEPAIE|Nombre de Femmes (Paie)|v_historique_paie_1|DISTINCT (CASE WHEN sexe_code = 'F' THEN salarie_id ELSE null END)|1|NB de Femmes|COUNT||0|Nombre de Femmes|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_NBHANDICAP|Nombre d'handicapés|v_historique_paie_1|DISTINCT (CASE WHEN handicap_id = '1' THEN salarie_id ELSE null END)|1|NB d'handicapés|COUNT||0|Nombre d'handicapés|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_NBIJSS|Nombre d'IJSS|v_historique_paie_1|DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_IJS] THEN salarie_id ELSE null END|1|IJSS|COUNT||0|Nombre d'IJSS|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_NBJARRET_ACT|Nombre de jours d'arrêt pour accident du travail|v_arrets_travail_mois_1|CASE WHEN motif_arret_section_code[9] = 'ACT' THEN nb_jours_arret ELSE 0 END|1|Nb jours accident du travail|SUM||0|Nombre de jours d'arrêt pour accident du travail|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBJARRET_MAL|Nombre de jours d'arrêt maladie|v_arrets_travail_mois_1|CASE WHEN motif_arret_section_code[9] = 'MAL' THEN nb_jours_arret ELSE 0 END|1|Nb jours maladie|SUM||0|Nombre de jours d'arrêt maladie|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBJARRET_MAT|Nombre de jours d'arrêt maternité|v_arrets_travail_mois_1|CASE WHEN motif_arret_section_code[9] = 'MAT' THEN nb_jours_arret ELSE 0 END|1|Nb jours maternité|SUM||0|Nombre de jours d'arrêt maternité|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBJT|Nombre de journées théoriques travaillées|v_historique_paie_1|heures_travaillees / 7.0|1|Journées théoriques travaillées|SUM||0|Nombre de journées théoriques travaillées|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_NBMOIS|Nombre de mois sur la période|v_contrats_mois_1|DISTINCT mois_activite_id|1|Mois /période|COUNT||0|Nombre de mois sur la période|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBRUPT|Nombre de rupture de contrat|v_historique_paie_1|DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_CNT] THEN salarie_id ELSE null END|1|Rupture de contrat|COUNT||0|Nombre de rupture de contrat|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_NBSAL|Nombre de salariés (Paie)|v_historique_paie_1|DISTINCT salarie_id|1|Salariés|COUNT||80|Nombre de salariés (Paie)|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_NBSALCDD|Nombre de salariés en CDD|v_contrats_mois_1|DISTINCT (CASE WHEN type_contrat_section_code[9] = 'CDD' THEN salarie_id ELSE null END)|1|Salariés CDD|COUNT||80|Nombre de salariés en CDD|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBSALCNT|Nombre de salariés (Contrats)|v_contrats_mois_1|DISTINCT salarie_id|1|Salariés|COUNT||80|Nombre de salariés|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBSALCNTFR|Nombre de Français (Contrat)|v_contrats_mois_1|DISTINCT (CASE WHEN nationalite_section_code[9] = 'FR' THEN salarie_id ELSE null END)|1|NB de Français|COUNT||0|Nombre de Français|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NBSALPAIEFR|Nombre de Français (Paie)|v_historique_paie_1|DISTINCT (CASE WHEN nationalite_section_code[9] = 'FR' THEN salarie_id ELSE null END)|1|NB de Français|COUNT||0|Nombre de Français|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_NB_PRE|Nombre de prime de précarité|v_historique_paie_1|DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_PRE] THEN salarie_id ELSE null END|1|Prime de précarité|COUNT||0|Nombre de prime de précarité|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_NB_RET|Nombre de départ à la retraite|v_historique_paie_1|DISTINCT CASE WHEN rubrique_id IN [LISTE:CTI_EXP_RET] THEN salarie_id ELSE null END|1|Départ à la retraite|COUNT||0|Nombre de départ à la retraite|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_NDSAL|Nombre NON DISTINCT de salariés|v_contrats_mois_1|salarie_id|1|Nombre NON DISTINCT de salariés|COUNT||0|Nombre NON DISTINCT de salariés|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NOUVSALS|Nouveaux salariés|v_contrats_mois_1|DISTINCT (CASE WHEN nombre_entrees = 1 THEN salarie_id ELSE null END)|1|Nouveaux salariés|COUNT||0|Nouveaux salariés|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_NVXCNT|Nombre de nouveaux contrats|v_contrats_mois_1|DISTINCT (CASE WHEN nombre_debut_contrat > 0 THEN contrat_id ELSE null END)|1|Nouveaux contrats|COUNT||0|Nombre de nouveaux contrats|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_PCDD|% de CDD|*CALC|base.cti_division([1], [2]) * 100|1|% CDD|*CALC|#,0%|0|% de CDD/nb de contrat| | | | | | |CTI_NBCONTRATCDD|CTI_NBCNT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_PCDI|% de CDI|*CALC|base.cti_division([1], [2]) * 100|1|% CDI|*CALC|#,0%|0|% de CDI/nb de contrat| | | | | | |CTI_NBCONTRATCDI|CTI_NBCNT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_PCTFEMMECNT|% de femmes|*CALC|base.cti_division([1], [2]) * 100|1|% de femmes|*CALC|#,0%|0|% de femmes| | | | | | |CTI_NBFEMMECNT|CTI_NBSALCNT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_PRESENCE_PAIE_PAS_PLANNING|Liste des salariés présents en paie mais pas au planning|v_presence_salaries_1|CASE WHEN present_paie= true AND present_planning = false THEN 1 ELSE 0 END|1||SUM|#|0||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_PRESENCE_PLANNING_PAS_PAIE|Liste des personnes présentes au planning mais pas en paie|v_presence_salaries_1|CASE WHEN present_paie= false AND present_planning = true THEN 1 ELSE 0 END|1||SUM|#|0||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_QUA|Qualité - Qualification|v_contrats_mois_1|DISTINCT CASE WHEN qualification_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Qualification|COUNT||0|Qualification|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_RAPPORTCALC|Calcul d'indicateurs dans le rapport|*RAPPORTCALC||1||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|CTI_ROTATIONEMP|Rotation de l'emploi|*CALC|base.cti_division((([1] + [2]) / 2), [3]) * 100|1|Rotation de l'emploi|*CALC|#,0%|0|Rotation de l'emploi| | | | | | |CTI_NOUVSALS|CTI_SALPARTISSP|CTI_EFFPJPER|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SAC|Qualité - Section analytique comptable|v_contrats_mois_1|DISTINCT CASE WHEN section_analytique_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Section analytique comptable|COUNT||0|Section analytique comptable|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SAGE|Somme Ages pour Age moyen|v_contrats_mois_1|DISTINCT ARRAY[salarie_id::numeric, age_id::numeric]|1|Somme Ages pour Age moyen|base.cti_sum_distinct_on|#,0|0|Somme Ages pour Age moyen|1| | | | |1|CTI_AGESUM|CTI_NDSAL|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SAL60|Nombre de salariés 60 ans et +|v_contrats_mois_1|DISTINCT CASE WHEN rhp_age_id >= 60 THEN salarie_id ELSE null END|1|Salariés 60 ans et +|COUNT||0|Nombre de salariés 60 ans et +|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SALCHGMOY|Salaire Moyen Chargé|*CALC|base.cti_division([1], [2])|1|Salaire Chargé Moyen|*CALC||0|Salaire Chargé Moyen| | | | | | |CTINETAPAYER|CTI_ETPPAYE|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SALCHGMOYH|Salaire Horaire Chargé Moyen|*CALC|base.cti_division([1], [2])|1|Salaire Chargé Moyen|*CALC||0|Salaire Chargé Moyen| | | | | | |CTIMASSMOY|CTIHP|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SALPARTISSP|Salarié partis sur la période|v_contrats_mois_1|DISTINCT (CASE WHEN nombre_departs = 1 THEN salarie_id ELSE null END)|1|Salarié partis /période|COUNT||0|Salarié partis sur la période|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SAP|Qualité - Section analytique paie|v_contrats_mois_1|DISTINCT CASE WHEN section_analytique_paie_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Section analytique paie|COUNT||0|Section analytique paie|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SEP|Séparateur|SEP||1||SUM||0||1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SER|Qualité - Service|v_contrats_mois_1|DISTINCT CASE WHEN service_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Service|COUNT||0|Service|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SEX|Qualité - Sexe|v_contrats_mois_1|DISTINCT CASE WHEN sexe_id = 0 THEN salarie_id ELSE null END|1|Sexe|COUNT||0|Sexe|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SFA|Qualité - Situation de famille|v_contrats_mois_1|DISTINCT CASE WHEN situation_famille_id = 0 THEN salarie_id ELSE null END|1|Situation de famille|COUNT||0|Situation de famille|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SIN|Qualité - Société d'interim|v_contrats_mois_1|DISTINCT CASE WHEN societe_interim_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Société d'interim|COUNT||0|Société d'interim|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_SPE|Qualité - Spécialité|v_contrats_mois_1|DISTINCT CASE WHEN specialite_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Spécialité|COUNT||0|Spécialité|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_STA|Qualité - Statut|v_contrats_mois_1|DISTINCT CASE WHEN statut_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Statut|COUNT||0|Statut|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_TCNT|Qualité - Type de contrat|v_contrats_mois_1|DISTINCT CASE WHEN type_contrat_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Type de contrat|COUNT||0|Type de contrat|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_THO|Qualité - Type horaire|v_contrats_mois_1|DISTINCT CASE WHEN type_horaire_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Type horaire|COUNT||0|Type horaire|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_TRACDI|Transformation CDI|v_contrats_mois_1|DISTINCT case when nombre_transformation_cdi = '1' then salarie_id else null end|1|Transformation CDI|COUNT||0|Transformation CDI|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_TTT|Qualité - Type de temps de travail|v_contrats_mois_1|DISTINCT CASE WHEN type_temps_travail_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Type de temps de travail|COUNT||0|Type de temps de travail|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>
1|CTI_UFO|Qualité - Unité fonctionnelle|v_contrats_mois_1|DISTINCT CASE WHEN unite_fonctionnelle_id = 0 AND est_hors_periode = 0 THEN salarie_id ELSE null END|1|Unité fonctionnelle|COUNT||0|Unité fonctionnelle|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>

+ 9
- 0
db/data2/dbdata_rh_t_listes.csv View File

@ -0,0 +1,9 @@
oid|texte|chapitre|code|is_cti|show_omit|utilisateur_createur|est_partagee_modification|table_name
1|Primes à périodicité non mensuelle - Bilan Social||CTI_BS_PPNM|1|1|*CTI|1|t_rubriques
1|Eléments exceptionnels : Rupture de contrat : OD/Net.|Elements exceptionnels|CTI_EXP_CNT|1|1|*CTI|1|t_rubriques
1|IJSS : Payé SS / OD/Net.|Elements exceptionnels|CTI_EXP_IJS|1|1|*CTI|1|t_rubriques
1|Eléments exceptionnels : Prime de précarité|Elements exceptionnels|CTI_EXP_PRE|1|1|*CTI|1|t_rubriques
1|Eléments exceptionnels : Retraite|Elements exceptionnels|CTI_EXP_RET|1|1|*CTI|1|t_rubriques
1|Elements exceptionnels Retraite et rupture.|Elements exceptionnels|CTI_EXP_RRU|1|1|*CTI|1|t_rubriques
1|Heures contrat|Paramétrage|CTI_HCNT|1|0|*CTI|1|t_rubriques
1|Pegase forfaits jours|Paramétrage|CTI_PEGASE_FTJ|1|0|*CTI|1|t_rubriques

+ 431
- 0
db/data2/dbdata_rh_t_listes_tables.csv View File

@ -0,0 +1,431 @@
oid|name|texte|select_cmd|code
1|t_ages|Age|"SELECT t_ages.oid, t_ages.code, t_ages.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_ages LEFT JOIN rh.p_oids ON (t_ages.oid = p_oids.oid AND code_table = 'ages')
WHERE t_ages.oid > 0
ORDER BY t_ages.code"|AGE
1|t_section_analytique|Section analytique NG|"SELECT t_section_analytique.oid,
t_section_analytique.code,
t_section_analytique.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_section_analytique
LEFT JOIN rh.p_oids ON (t_section_analytique.oid = p_oids.oid AND code_table = 'section_analytique')
WHERE t_section_analytique.oid > 0
ORDER BY t_section_analytique.code"|ANA
1|t_anciennetes_annee|Ancienneté|"SELECT t_anciennetes_annee.oid, t_anciennetes_annee.code, t_anciennetes_annee.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_anciennetes_annee LEFT JOIN rh.p_oids ON (t_anciennetes_annee.oid = p_oids.oid AND code_table = 'anciennete_annee')
ORDER BY t_anciennetes_annee.code"|ANC
1|t_accident_circonstance|[DICT.RH.CIRCONSTANCE] accident du travail|"SELECT t_accident_circonstance.oid,
t_accident_circonstance.code,
t_accident_circonstance.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_accident_circonstance
LEFT JOIN rh.p_oids ON (t_accident_circonstance.oid = p_oids.oid AND code_table = 'accident_circonstance')
WHERE t_accident_circonstance.oid > 0
ORDER BY t_accident_circonstance.code"|ATC
1|t_accident_lieu|[DICT.RH.LIEU] accident du travail|"SELECT t_accident_lieu.oid,
t_accident_lieu.code,
t_accident_lieu.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_accident_lieu
LEFT JOIN rh.p_oids ON (t_accident_lieu.oid = p_oids.oid AND code_table = 'accident_lieu')
WHERE t_accident_lieu.oid > 0
ORDER BY t_accident_lieu.code"|ATL
1|t_accident_nature|Nature accident du travail|"SELECT t_accident_nature.oid,
t_accident_nature.code,
t_accident_nature.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_accident_nature
LEFT JOIN rh.p_oids ON (t_accident_nature.oid = p_oids.oid AND code_table = 'accident_nature')
WHERE t_accident_nature.oid > 0
ORDER BY t_accident_nature.code"|ATN
1|t_accident_siege|Siège accident du travail|"SELECT t_accident_siege.oid,
t_accident_siege.code,
t_accident_siege.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_accident_siege
LEFT JOIN rh.p_oids ON (t_accident_siege.oid = p_oids.oid AND code_table = 'accident_siege')
WHERE t_accident_siege.oid > 0
ORDER BY t_accident_siege.code"|ATS
1|t_categorie_conge|Catégorie de congé|"SELECT t_categorie_conge.oid,
t_categorie_conge.code,
t_categorie_conge.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_categorie_conge
LEFT JOIN rh.p_oids ON (t_categorie_conge.oid = p_oids.oid AND code_table = 'categorie_conge')
WHERE t_categorie_conge.oid > 0
ORDER BY t_categorie_conge.code"|CAC
1|t_cadre_emploi|Cadre d'emploi|"SELECT t_cadre_emploi.oid,
t_cadre_emploi.code,
t_cadre_emploi.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_cadre_emploi
LEFT JOIN rh.p_oids ON (t_cadre_emploi.oid = p_oids.oid AND code_table = 'cadre_emploi')
WHERE t_cadre_emploi.oid > 0
ORDER BY t_cadre_emploi.code"|CAE
1|t_categorie_statutaire|Catégorie statutaire|"SELECT t_categorie_statutaire.oid,
t_categorie_statutaire.code,
t_categorie_statutaire.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_categorie_statutaire
LEFT JOIN rh.p_oids ON (t_categorie_statutaire.oid = p_oids.oid AND code_table = 'categorie_statutaire')
WHERE t_categorie_statutaire.oid > 0
ORDER BY t_categorie_statutaire.code"|CAS
1|t_codes_emploi|[DICT.RH.CODE_EMPLOI]|"SELECT t_codes_emploi.oid, t_codes_emploi.code, t_codes_emploi.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_codes_emploi LEFT JOIN rh.p_oids ON (t_codes_emploi.oid = p_oids.oid AND code_table = 'codes_emploi')
WHERE t_codes_emploi.oid > 0
ORDER BY t_codes_emploi.code"|CEM
1|t_compte_imputation|Compte d'imputation|"SELECT t_compte_imputation.oid,
t_compte_imputation.code,
t_compte_imputation.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_compte_imputation
LEFT JOIN rh.p_oids ON (t_compte_imputation.oid = p_oids.oid AND code_table = 'compte_imputation')
WHERE t_compte_imputation.oid > 0
ORDER BY t_compte_imputation.code"|COI
1|t_code_cotisation|Code cotisation|"SELECT t_code_cotisation.oid,
t_code_cotisation.code,
t_code_cotisation.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_code_cotisation
LEFT JOIN rh.p_oids ON (t_code_cotisation.oid = p_oids.oid AND code_table = 'code_cotisation')
WHERE t_code_cotisation.oid > 0
ORDER BY t_code_cotisation.code"|COT
1|t_codes_postaux|Code postal|"SELECT t_codes_postaux.oid, t_codes_postaux.code, t_codes_postaux.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_codes_postaux LEFT JOIN rh.p_oids ON (t_codes_postaux.oid = p_oids.oid AND code_table = 'codes_postaux')
WHERE t_codes_postaux.oid > 0
ORDER BY t_codes_postaux.code"|CPO
1|t_compte|Compte|"SELECT t_compte.oid,
t_compte.code,
t_compte.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_compte
LEFT JOIN rh.p_oids ON (t_compte.oid = p_oids.oid AND code_table = 'compte')
WHERE t_compte.oid > 0
ORDER BY t_compte.code"|CPT
1|t_categories_socio_professionnelles|[DICT.RH.CATEGORIE_SOC_PRO]|"SELECT t_categories_socio_professionnelle.oid, t_categories_socio_professionnelle.code, t_categories_socio_professionnelle.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_categories_socio_professionnelle LEFT JOIN rh.p_oids ON (t_categories_socio_professionnelle.oid = p_oids.oid AND code_table = 'categories_socio_professionnelle')
WHERE t_categories_socio_professionnelle.oid > 0
ORDER BY t_categories_socio_professionnelle.code"|CSC
1|t_etablissements|Etablissement|"SELECT t_etablissements.oid,
t_etablissements.code,
t_etablissements.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_etablissements
LEFT JOIN rh.p_oids ON (t_etablissements.oid = p_oids.oid AND code_table = 'etablissements')
WHERE t_etablissements.oid > 0
ORDER BY t_etablissements.code"|ETS
1|t_filiere|Filière|"SELECT t_filiere.oid,
t_filiere.code,
t_filiere.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_filiere
LEFT JOIN rh.p_oids ON (t_filiere.oid = p_oids.oid AND code_table = 'filiere')
WHERE t_filiere.oid > 0
ORDER BY t_filiere.code"|FIL
1|t_liste_formations|Liste des formations|"SELECT t_liste_formations.oid,
t_liste_formations.code,
t_liste_formations.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_liste_formations
LEFT JOIN rh.p_oids ON (t_liste_visites.oid = p_oids.oid AND code_table = 'liste_formations')
WHERE t_liste_formations.oid > 0
ORDER BY t_liste_formations.code"|FOR
1|t_commission_paritaire|Groupe de commission paritaire|"SELECT t_commission_paritaire.oid,
t_commission_paritaire.code,
t_commission_paritaire.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_commission_paritaire
LEFT JOIN rh.p_oids ON (t_commission_paritaire.oid = p_oids.oid AND code_table = 'commission_paritaire')
WHERE t_commission_paritaire.oid > 0
ORDER BY t_commission_paritaire.code"|GCP
1|t_groupes_cotisant|[DICT.RH.GROUPE_COTISANT]|"SELECT t_groupes_cotisant.oid, t_groupes_cotisant.code, t_groupes_cotisant.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_groupes_cotisant LEFT JOIN rh.p_oids ON (t_groupes_cotisant.oid = p_oids.oid AND code_table = 'groupes_cotisant')
WHERE t_groupes_cotisant.oid > 0
ORDER BY t_groupes_cotisant.code"|GCT
1|t_grilles_groupes|[DICT.RH.GROUPE_GRILLE]|"SELECT t_grilles_groupes.oid,
t_grilles_groupes.code,
t_grilles_groupes.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_grilles_groupes
LEFT JOIN rh.p_oids ON (t_grilles_groupes.oid = p_oids.oid AND code_table = 'grilles_groupes')
WHERE t_grilles_groupes.oid > 0
ORDER BY t_grilles_groupes.code"|GRG
1|t_grilles|[DICT.RH.GRILLE]|"SELECT t_grilles.oid,
t_grilles.code,
t_grilles.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_grilles
LEFT JOIN rh.p_oids ON (t_grilles.oid = p_oids.oid AND code_table = 'grilles')
WHERE t_grilles.oid > 0
ORDER BY t_grilles.code"|GRI
1|t_lettre_budgetaire|Lettre Budgétaire|"SELECT t_lettre_budgetaire.oid,
t_lettre_budgetaire.code,
t_lettre_budgetaire.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_lettre_budgetaire
LEFT JOIN rh.p_oids ON (t_lettre_budgetaire.oid = p_oids.oid AND code_table = 'lettre_budgetaire')
WHERE t_lettre_budgetaire.oid > 0
ORDER BY t_lettre_budgetaire.code"|LEB
1|t_motifs_arret|Motif [DICT.RH.ARRET_TRAVAIL#2]|"SELECT t_motifs_arret.oid,
t_motifs_arret.code,
t_motifs_arret.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_motifs_arret
LEFT JOIN rh.p_oids ON (t_motifs_arret.oid = p_oids.oid AND code_table = 'motifs_arret')
WHERE t_motifs_arret.oid > 0
ORDER BY t_motifs_arret.code"|MOA
1|t_motifs_debut_contrat|[DICT.RH.MOTIF_DEBUT#1] [DICT.RH.CONTRAT#2]|"SELECT t_motifs_debut_contrat.oid, t_motifs_debut_contrat.code, t_motifs_debut_contrat.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_motifs_debut_contrat LEFT JOIN rh.p_oids ON (t_motifs_debut_contrat.oid = p_oids.oid AND code_table = 'motifs_debut_contrat')
WHERE t_motifs_debut_contrat.oid > 0
ORDER BY t_motifs_debut_contrat.code"|MTD
1|t_motifs_fin_contrat|Motif fin [DICT.RH.CONTRAT#2]|"SELECT t_motifs_fin_contrat.oid, t_motifs_fin_contrat.code, t_motifs_fin_contrat.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_motifs_fin_contrat LEFT JOIN rh.p_oids ON (t_motifs_fin_contrat.oid = p_oids.oid AND code_table = 'motifs_fin_contrat')
WHERE t_motifs_fin_contrat.oid > 0
ORDER BY t_motifs_fin_contrat.code"|MTF
1|t_motifs_visite|Motif visite médicale|"SELECT t_motifs_visite.oid,
t_motifs_visite.code,
t_motifs_visite.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_motifs_visite
LEFT JOIN rh.p_oids ON (t_motifs_visite.oid = p_oids.oid AND code_table = 'motifs_visite')
WHERE t_motifs_visite.oid > 0
ORDER BY t_motifs_visite.code"|MVM
1|t_nationalites|Nationalité|"SELECT t_nationalites.oid,
t_nationalites.code,
t_nationalites.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_nationalites
LEFT JOIN rh.p_oids ON (t_nationalites.oid = p_oids.oid AND code_table = 'nationalites')
WHERE t_nationalites.oid > 0
ORDER BY t_nationalites.code"|NAT
1|t_organismes_cotisation|[DICT.RH.ORGANISME_COTISATION]|"SELECT t_organismes_cotisation.oid, t_organismes_cotisation.code, t_organismes_cotisation.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_organismes_cotisation LEFT JOIN rh.p_oids ON (t_organismes_cotisation.oid = p_oids.oid AND code_table = 'organismes_cotisation')
WHERE t_organismes_cotisation.oid > 0
ORDER BY t_organismes_cotisation.code"|ORC
1|t_planning_type_absence|Type d'absences (planning)|"SELECT t_planning_type_absence.oid,
t_planning_type_absence.code,
t_planning_type_absence.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_planning_type_absence
LEFT JOIN rh.p_oids ON (t_planning_type_absence.oid = p_oids.oid AND code_table = 'planning_type_absence')
WHERE t_planning_type_absence.oid > 0
ORDER BY t_planning_type_absence.code"|PAB
1|t_planning_code_horaire|Code Horaire (planning)|"SELECT t_planning_code_horaire.oid,
t_planning_code_horaire.code,
t_planning_code_horaire.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_planning_code_horaire
LEFT JOIN rh.p_oids ON (t_planning_code_horaire.oid = p_oids.oid AND code_table = 'planning_code_horaire')
WHERE t_planning_code_horaire.oid > 0
ORDER BY t_planning_code_horaire.code"|PCH
1|t_planning_niveau|[DICT.RH.NIVEAU#3]|"SELECT t_planning_niveau.oid,
t_planning_niveau.code,
t_planning_niveau.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_planning_niveau
LEFT JOIN rh.p_oids ON (t_planning_niveau.oid = p_oids.oid AND code_table = 't_planning_niveau')
WHERE t_planning_niveau.oid > 0
ORDER BY t_planning_niveau.code"|PNI
1|t_population|Population|"SELECT t_population.oid,
t_population.code,
t_population.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_population
LEFT JOIN rh.p_oids ON (t_population.oid = p_oids.oid AND code_table = 'population')
WHERE t_population.oid > 0
ORDER BY t_population.code"|POP
1|t_planning_qualification|Qualifications (planning)|"SELECT t_planning_qualification.oid,
t_planning_qualification.code,
t_planning_qualification.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_planning_qualification
LEFT JOIN rh.p_oids ON (t_planning_qualification.oid = p_oids.oid AND code_table = 'planning_qualification')
WHERE t_planning_qualification.oid > 0
ORDER BY t_planning_qualification.code"|PQU
1|t_planning_service|Services (planning)|"SELECT t_planning_service.oid,
t_planning_service.code,
t_planning_service.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_planning_service
LEFT JOIN rh.p_oids ON (t_planning_service.oid = p_oids.oid AND code_table = 'planning_service')
WHERE t_planning_service.oid > 0
ORDER BY t_planning_service.code"|PSE
1|t_qualifications|Qualification|"SELECT t_qualifications.oid, t_qualifications.code, t_qualifications.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_qualifications LEFT JOIN rh.p_oids ON (t_qualifications.oid = p_oids.oid AND code_table = 'qualifications')
WHERE t_qualifications.oid > 0
ORDER BY t_qualifications.code"|QUA
1|t_rubriques|Rubrique|"SELECT t_rubriques.oid, t_rubriques.code, t_rubriques.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_rubriques LEFT JOIN rh.p_oids ON (t_rubriques.oid = p_oids.oid AND code_table = 'rubriques')
WHERE t_rubriques.oid > 0
ORDER BY t_rubriques.code"|RUP
1|t_sections_analytiques|[DICT.RH.SECTION_ANA_CPT#1]|"SELECT t_sections_analytiques.oid, t_sections_analytiques.code, t_sections_analytiques.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_sections_analytiques LEFT JOIN rh.p_oids ON (t_sections_analytiques.oid = p_oids.oid AND code_table = 'sections_analytiques')
WHERE t_sections_analytiques.oid > 0
ORDER BY t_sections_analytiques.code"|SAC
1|p_salaries|[DICT.RH.SALARIE]|"SELECT v_salaries_1.salarie_id AS oid, v_salaries_1.salarie_code AS code, v_salaries_1.salarie_texte || CASE WHEN date_fin_contrat < '20991231' THEN ' (' || date_fin_contrat || ')' ELSE '' END AS texte, qualification_texte || ' - '|| service_texte as complement, 'O'::text as utilise
FROM rh.v_salaries_1
ORDER BY v_salaries_1.salarie_code"|SAL
1|t_sections_analytiques_paie|[DICT.RH.SECTION_ANA_PAIE#1]|"SELECT t_sections_analytiques_paie.oid, t_sections_analytiques_paie.code, t_sections_analytiques_paie.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_sections_analytiques_paie LEFT JOIN rh.p_oids ON (t_sections_analytiques_paie.oid = p_oids.oid AND code_table = 'sections_analytiques_paie')
WHERE t_sections_analytiques_paie.oid > 0
ORDER BY t_sections_analytiques_paie.code"|SAP
1|t_services|[DICT.RH.SERVICE]|"SELECT t_services.oid, t_services.code, t_services.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_services LEFT JOIN rh.p_oids ON (t_services.oid = p_oids.oid AND code_table = 'services')
WHERE t_services.oid > 0
ORDER BY t_services.code"|SER
1|t_specialites|Spécialité|"SELECT t_specialites.oid, t_specialites.code, t_specialites.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_specialites LEFT JOIN rh.p_oids ON (t_specialites.oid = p_oids.oid AND code_table = 'specialites')
WHERE t_specialites.oid > 0
ORDER BY t_specialites.code"|SPE
1|t_statuts|[DICT.RH.STATUT]|"SELECT t_statuts.oid,
t_statuts.code,
t_statuts.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_statuts
LEFT JOIN rh.p_oids ON (t_statuts.oid = p_oids.oid AND code_table = 'statuts')
WHERE t_statuts.oid > 0
ORDER BY t_statuts.code"|STA
1|t_types_contrat|[DICT.RH.TYPE_CONTRAT]|"SELECT t_types_contrat.oid, t_types_contrat.code, t_types_contrat.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_types_contrat LEFT JOIN rh.p_oids ON (t_types_contrat.oid = p_oids.oid AND code_table = 'types_contrat')
WHERE t_types_contrat.oid > 0
ORDER BY t_types_contrat.code"|TCN
1|t_types_horaire|Type horaire|"SELECT t_types_horaire.oid, t_types_horaire.code, t_types_horaire.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise
FROM rh.t_types_horaire LEFT JOIN rh.p_oids ON (t_types_horaire.oid = p_oids.oid AND code_table = 'types_horaire')
WHERE t_types_horaire.oid > 0
ORDER BY t_types_horaire.code"|THO
1|t_types_temps_travail|Type temps travail|"SELECT t_types_temps_travail.oid,
t_types_temps_travail.code,
t_types_temps_travail.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_types_temps_travail
LEFT JOIN rh.p_oids ON (t_types_temps_travail.oid = p_oids.oid AND code_table = 'types_temps_travail')
WHERE t_types_temps_travail.oid > 0
ORDER BY t_types_temps_travail.code"|TTT
1|t_unite_fonctionnelle|Unité fonctionnelle|"SELECT t_unite_fonctionnelle.oid,
t_unite_fonctionnelle.code,
t_unite_fonctionnelle.texte,
''::text AS complement,
CASE
WHEN p_oids.oid IS NOT NULL THEN 'O'
ELSE 'N'
END AS utilise
FROM rh.t_unite_fonctionnelle
LEFT JOIN rh.p_oids ON (t_unite_fonctionnelle.oid = p_oids.oid AND code_table = 'unite_fonctionnelle')
WHERE t_unite_fonctionnelle.oid > 0
ORDER BY t_unite_fonctionnelle.code"|UNF

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

@ -0,0 +1,6 @@
oid|code|texte|is_cti|is_essentiel
1|CTI_ESS_10|RH-Paie|1|1
1|CTI_ESS_11|Rémunérations|1|1
1|CTI_PF_AGG|CTI Portfolio|1|1
1|CTI_QUA|Qualité des données|1|0
1|RH1|Rapport personnalisé RH|1|0

+ 105
- 0
db/data2/dbdata_rh_t_rapports_rubriques.csv View File

@ -0,0 +1,105 @@
rapport_code|indicateur_code|numero_rubrique|rapport_id|indicateur_id|entete|output_format|width|entete_etendue|periode_reference|row_height|padding|font_size|font_weight|border_thickness|color|background_color|base_nationale|base_nationale_qualifiee|viewlink|viewlink_label|viewlink_param|picto_enabled|positif_is_good|indicateur_associe_id|indicateur_associe_code
CTI_ESS_10|CTINBJARRET|30|1|1|||0|| |22|10|12| |0| | |0|0|RH000008|Analyse par code emploi et salarié|GROUPBY=CEM&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_AGEMOY|12|1|1|||0|| |22|10|12| |0| | |0|0|RH000023|Pyramide des âges par Age et salarié.|GROUPBY=AGE&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_CDDSALP|11|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par type de contrat et catégorie socio-professionnelle|GROUPBY=TCN&GROUPBY_2=CSC&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_DBTCDD|21|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par spécialité et salarié|GROUPBY=SPE&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#LSCDD&VIEWTAB=2|1|1|0|<NULL>
CTI_ESS_10|CTI_DBTCDI|20|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par type de temps de travail et salarié|GROUPBY=TTT&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_DUREEMOYARRETS|34|1|1|||0|| |22|10|12| |0| | |0|0|RH000008|Analyse par code sexe et salarié|GROUPBY=SEX&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#DTCTI_CDD&VIEWTAB=2|1|1|0|<NULL>
CTI_ESS_10|CTI_EFF1ERJANV|7|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par spécialité|GROUPBY=SPE|1|1|0|<NULL>
CTI_ESS_10|CTI_EFF31DEV|8|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par code emploi|GROUPBY=CEM|1|1|0|<NULL>
CTI_ESS_10|CTI_EFFPERM|6|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par type de temps de travail|GROUPBY=TTT|1|1|0|<NULL>
CTI_ESS_10|CTI_EMBMS25|9|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Salarié de mois de 25 ans par qualification et par salarié|GROUPBY=QUA&GROUPBY_2=SAL&AGE=IN&AGE_INT=&AGE_INT2=25&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_FINCNT|22|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par code emploi et salarié|GROUPBY=CEM&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_FINCNTCDD|24|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse des CDD par indice et salarié|GROUPBY=GRI&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#LSCDD&VIEWTAB=2|1|1|0|<NULL>
CTI_ESS_10|CTI_FINCNTCDI|23|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse des CDI par code emploi et salarié|GROUPBY=CEM&GROUPBY_2=SAL&GROUPBY_TAB=TAB&TYPE_CONTRAT=#LSCDI&VIEWTAB=2|1|1|0|<NULL>
CTI_ESS_10|CTI_NBARRET|26|1|1|||0|| |22|10|12| |0| | |0|0|RH000008|Analyse par catégorie socio-professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBARRETMOY|35|1|1|Nombre d'arrêts moyen (sur total des salariés)||0|Nombre d'arrêts moyen (sur total des salariés)| |22|10|12| |0| | |0|0|RH000008|Analyse par catégorie socio-professionnelle|GROUPBY=CSC|1|1|0|<NULL>
CTI_ESS_10|CTI_NBARRET_ACT|29|1|1|Dont accident du travail||0|Dont accident du travail| |22|20|12| |0| | |0|0|RH000008|Analyse par spécialité et salarié|GROUPBY=SPE&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBARRET_MAL|27|1|1|Dont maladie||0|Dont maladie| |22|20|12| |0| | |0|0|RH000008|Analyse par motif d'arrêt et salarié|GROUPBY=MOA&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBARRET_MAT|28|1|1|Dont maternité||0|Dont maternité| |22|20|12| |0| | |0|0|RH000008|Analyse par service et salarié|GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBCNT|16|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par catégorie socio-professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBCONTRATCDD|18|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par service et salarié|GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBCONTRATCDI|17|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par qualification et salarié|GROUPBY=QUA&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBJARRET_ACT|33|1|1|Dont accident du travail||0|Dont accident du travail| |22|20|12| |0| | |0|0|RH000008|Analyse par tranche d'age du bilan social et salarié|GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBJARRET_MAL|31|1|1|Dont maladie||0|Dont maladie| |22|20|12| |0| | |0|0|RH000008|Analyse par indice et salarié|GROUPBY=GRI&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBJARRET_MAT|32|1|1|Dont maternité||0|Dont maternité| |22|20|12| |0| | |0|0|RH000008|Analyse par qualification et salarié|GROUPBY=QUA&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NBSALCNT|2|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par catégorie socio-professionnelle|GROUPBY=CSC|1|1|0|<NULL>
CTI_ESS_10|CTI_NBSALCNTFR|14|1|1|||0|| |22|10|12| |0| | |0|0|RH000023|Analyse par tranche d'âge du bilan social|GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_NOUVSALS|3|1|1|||0|Nouveaux salariés| |22|10|12| |0| | |0|0|RH000003|Analyse par qualification|GROUPBY=QUA|1|1|0|<NULL>
CTI_ESS_10|CTI_NVXCNT|19|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par type de contrat et salarié|GROUPBY=TCN&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_PCTFEMMECNT|13|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par classe d'âge du bilan social et salarié|GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_ROTATIONEMP|5|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par type de contrat et qualification|GROUPBY=TCN|1|1|0|<NULL>
CTI_ESS_10|CTI_SAL60|10|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Salariés de 60 ans et + par qualification et par salarié|GROUPBY=QUA&GROUPBY_2=SAL&AGE=IN&AGE_INT=60&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_10|CTI_SALPARTISSP|4|1|1|||0|| |22|10|12| |0| | |0|0|RH000003|Analyse par service|GROUPBY=SER|1|1|0|<NULL>
CTI_ESS_10|CTI_SEP|1|1|1|||0|Salariés| |26|0|14|bold |2|#9B59B6 |0xCCCCCC |0|0|||| | |0|<NULL>
CTI_ESS_10|CTI_SEP|15|1|1|||0|Contrats| |26|0|14|bold |2|#9B59B6 |0xCCCCCC |0|0|||| | |0|<NULL>
CTI_ESS_10|CTI_SEP|25|1|1|||0|Arrêts de travail| |26|0|14|bold |2|#9B59B6 |0xCCCCCC |0|0|||| | |0|<NULL>
CTI_ESS_11|CTIAN|12|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par Type de contrat et salarié|GROUPBY=TCN&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTICOTPAT|16|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par rubrique de paie|GROUPBY=RUPCLS|1|1|0|<NULL>
CTI_ESS_11|CTICOTSAL |14|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par salarié|GROUPBY=SAL|1|1|0|<NULL>
CTI_ESS_11|CTIETPTHM|6|1|1|ETP Travaillé||0|ETP Travaillé| |22|10|12| |0| | |0|0|RH000007|Analyse par spécialité|GROUPBY=SPE|0|0|0|<NULL>
CTI_ESS_11|CTIHP|3|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par catégorie socio-professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTIHT|4|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par qualification|GROUPBY=QUA|1|1|0|<NULL>
CTI_ESS_11|CTIMASSMOY|9|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par catégorie socio-professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTIMTMASSE|8|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par catégorie socio-professionnelle|GROUPBY=CSC|1|1|0|<NULL>
CTI_ESS_11|CTINETAPAYER|18|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par catégorie socio-professionnelle et type de contrat bilan social|GROUPBY=CSC&GROUPBY_2=TCNCLS9|1|1|0|<NULL>
CTI_ESS_11|CTINETIMPOS|17|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par type de temps de travail et salarié|GROUPBY=TTT&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTIODNET|15|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par contrat et section analytique comptable|GROUPBY=CNT&GROUPBY_2=SAC&GROUPBY_TAB=ARB|1|1|0|<NULL>
CTI_ESS_11|CTI_BRUTMOYENETP|11|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par service et salarié|GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTI_ETPREMMOY|5|1|1|ETP Payé||0|ETP Payé| |22|10|12| |0| | |0|0|RH000007|Analyse par service|GROUPBY=SER|1|1|0|<NULL>
CTI_ESS_11|CTI_FRIMPOS|13|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par spécialité et salarié|GROUPBY=SPE&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTI_MHMC|20|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par age bilan social et salarié|GROUPBY=AGECLS09&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTI_MTBRUT|10|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Analyse par qualification et salarié|GROUPBY=QUA&GROUPBY_2=SAL&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTI_MT_CNT|27|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Rupture de contrat par service et salarié|GROUPBY=SER&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_CNT|1|1|0|<NULL>
CTI_ESS_11|CTI_MT_IJ|29|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|IJSS par service et salarié|GROUPBY=SER&GROUPBY_2=SAL&GROUPBY_TAB=TAB&RUBRIQUE=#LICTI_EXP_IJS|1|1|0|<NULL>
CTI_ESS_11|CTI_MT_PRE|25|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Précarité par service et salarié|GROUPBY=SER&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_PRE&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTI_MT_RET|23|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Départ à la retraite par service et salarié|GROUPBY=SER&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_RET|1|1|0|<NULL>
CTI_ESS_11|CTI_NBIJSS|28|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|IJSS par catégorie socio-professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&GROUPBY_TAB=TAB&RUBRIQUE=#LICTI_EXP_IJS|1|1|0|<NULL>
CTI_ESS_11|CTI_NBRUPT|26|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Rupture de contrat par catégorie socio-professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_CNT|1|1|0|<NULL>
CTI_ESS_11|CTI_NBSAL|2|1|1|Nombre de salariés||0|Nombre de salariés| |22|10|12| |0| | |0|0|RH000007|Analyse par catégorie socio-professionnelle|GROUPBY=CSC|1|1|0|<NULL>
CTI_ESS_11|CTI_NB_PRE|24|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Précarité par catégorie socio-professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_PRE&GROUPBY_TAB=TAB|1|1|0|<NULL>
CTI_ESS_11|CTI_NB_RET|22|1|1|||0|| |22|10|12| |0| | |0|0|RH000007|Départ à la retraite par catégorie socio--professionnelle et salarié|GROUPBY=CSC&GROUPBY_2=SAL&RUBRIQUE=#LICTI_EXP_RET|1|1|0|<NULL>
CTI_ESS_11|CTI_SALCHGMOY|19|1|1|Net à Payer Moyen||0|Net à Payer Moyen| |22|10|12| |0| | |0|0|RH000007|Analyse par catégorie socio-professionnelle et type de temps de travail|GROUPBY=CSC&GROUPBY_2=TTTCLS9|1|1|0|<NULL>
CTI_ESS_11|CTI_SEP|1|1|1|||0|Historique de Paie| |26|0|14|bold |2|#9B59B6 |0xcccccc |0|0|||| | |0|<NULL>
CTI_ESS_11|CTI_SEP|7|1|1|||0|Masse Salariale| |26|0|14|bold |0|#9B59B6 |0xcccccc |0|0|||| | |0|<NULL>
CTI_ESS_11|CTI_SEP|21|1|1|||0|Evènements exceptionnels| |26|0|14|bold |2|#9B59B6 |0xcccccc |0|0|||| | |0|<NULL>
CTI_QUA|CTI_CEM|12|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_CPO|7|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_CSP|13|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_DNA|4|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_GCO|20|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_GGR|21|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_GRI|22|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_MDD|10|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_MDF|11|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_NAT|5|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_NBSALCNT|1|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_QUA|14|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_SAC|24|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_SAP|23|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_SEP|2|1|1|||0|Salarié| |0|0|12|bold |0|0xffffff |0x2c3e50 |0|0|||| | |0|<NULL>
CTI_QUA|CTI_SEP|8|1|1|||0|Contrat| |0|0|0|bold |0|0xffffff |0x2c3e50 |0|0|||| | |0|<NULL>
CTI_QUA|CTI_SER|15|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_SEX|3|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_SFA|6|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_SIN|25|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_SPE|16|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_STA|17|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_TCNT|9|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_THO|19|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
CTI_QUA|CTI_TTT|18|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
RH1|CTIHP|6|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTIMASSMOY|12|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTINBHOMME|1|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTINBJARRET|8|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTITA|14|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTITB|15|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_ETPW|5|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_MTBRUT|13|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_NBARRET|7|1|1|||0|| |0|0|0| |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_NBCNT|3|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_NBFEMMEPAIE|2|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_PCDD|10|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_PCDI|11|1|1|||0|| |0|0|0|normal |0| | |0|0||||0|0|0|<NULL>
RH1|CTI_SEP|4|1|1|||0|| |0|0|0|normal |0| | |0|0|||| | |0|<NULL>
RH1|CTI_SEP|9|1|1|||0|| |0|0|0|normal |0| | |0|0|||| | |0|<NULL>

+ 10
- 0
db/data2/dbdata_rh_t_vue_parametre.csv View File

@ -0,0 +1,10 @@
oid|code|texte|data_code|data_entete|data_format|data_description|position_ratio|rang
1|BS_LDATA_2|CTI : Bilan social|NSAL@CNTTOT@NCDI@NCDD@NSALH@NSALF@AGEMOYDJ@EFFPERM@0@0@0@0@0@0@0|Nombre Salariés@Contrats total@Nombre CDI@Nombre CDD@Nombre hommes@Nombre Femmes@Age moyen@Effectif permanent|#@#@#@#@#@#@#,0@#|Nombre de salarié total@Nombre de contrat total@Nombre contrats CDI@Nombre contrats CDD@Nombre salariés hommes@Nombre salariés femmes@Age moyen@Salariés titulaires d'un CDI à temps complet et présents sur l'ensemble de la période.|000000000000000|0
1|CT_LDATA_1|CTI : Effectif|NSAL@EFFPERM@ROTEMP@NSALH@NSALF@AGEMOYDJ@0@0@0@0@0@0@0@0@0|NB Salariées@Effectif permanent@Rotation de l'emploi@NB hommes@NB Femmes@Age moyen|#@#@#%@#@#@#,0|Nombre de salarié total@Salariés titulaires d'un CDI à temps complet et présents sur l'ensemble de la période.@(nb d'entrées Ets. + nb de sorties Ets.) / 2 / nb de [DICT.RH.SALARIE#4] en début de période * 100@Nombre salariés hommes@Nombre salariés femmes@Age moyen|000000000000000|0
1|CT_LDATA_3|CTI : Contrat|NSAL@CNTTOT@NCDI@NCDD@CNTTERM@NHCNT@ETPTH@0@0@0@0@0@0@0@0|NB Salariées@Contrats total@Nombre CDI@Nombre CDD@Contrats terminés@Heures contrat@ETP contrat|#@#@#@#@#@#,00@#,00|Nombre de salarié total@Nombre de contrat total@Nombre contrats CDI@Nombre contrats CDD@Contrats terminés@Nombre heures contrat@ETP Contrat|000000000000000|0
1|HP_LDATA_1|CTI : Livre de paie|NBSAL@MTMASSE@NBHP@NBHT@MTBRUT@MTCOTSALARIE@MTCOTPATRONALE@MTNETIMPOSABLE@MTNETAPAYER@0@0@0@0@0@0|NB Salariés@Masse sal.@Heures Payées@Heures Travaillées@Brut@Cot. Salariales@Cot. Patronales@Net imposable@Net à payer|#@#E@#h@#h@#E@#E@#E@#E@#E|Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@Heures issues de la rubrique de paie paramétrée comme &#171;<i>Heures payées</i>&#187; dans la table des rubriques.@Heures paramétrées comme &#171;<i>travaillées</i>&#187; OU heures payées - heures paramétrées comme &#171;<i>Heures non travaillées</i>&#187;.@Montant BRUT@Montant Cotisations Salariales@Montant Cotisations Patronales@Montant Net Imposable@Montant Net à payer@0@0@0@0@0@0|000000000000000|0
1|HP_LDATA_2|CTI : Livre de paie ( Avec nombre et base )|NBSAL@MTMASSE@NBHP@NBHT@MTBRUT@MTCOTSALARIE@MTCOTPATRONALE@MTNETIMPOSABLE@MTNETAPAYER@NOMBRE@BASE@0@0@0@0|NB Salariés@Masse sal.@Heures Payées@Heures Travaillées@Brut@Cot. Salariales@Cot. Patronales@Net imposable@Net à payer@Nombre@Base|#@#E@#h@#h@#E@#E@#E@#E@#E@#,0@#,0|Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@Heures issues de la rubrique de paie paramétrée comme &#171;<i>Heures payées</i>&#187; dans la table des rubriques.@Heures paramétrées comme &#171;<i>travaillées</i>&#187; OU heures payées - heures paramétrées comme &#171;<i>Heures non travaillées</i>&#187;.@Montant BRUT@Montant Cotisations Salariales@Montant Cotisations Patronales@Montant Net Imposable@Montant Net à payer@Nombre@Base@0@0@0@0|000000000000000|0
1|HP_LDATA_3|CTI : Décomposition Masse Salariale|NBSAL@MTMASSE@MTMASSEMOY@NBHP@MTBRUT@MTBRUTMOY@MTBRUTAVANTAGE@MTFRAISIMPOS@MTCOTPATRONALE@MTODNETPATRONALE@MTHORMOYCHAR@0@0@0@0|NB Salariés@Masse sal.@Masse sal. moyen@Heures Payées@Brut@Brut moyen@A. N.@F.I.@Cot. Patronales@OD/NET Patronales@Mnt h. moy. chargé|#@#E@#E@#h@#E@#E@#E@#E@#E@#E@#,0E|Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@(<i>Masse salariale</i> &#247; <i>ETP payé</i>) &#247; Nb mois de la période.@Heures issues de la rubrique de paie paramétrée comme &#171;<i>Heures payées</i>&#187; dans la table des rubriques.@Montant BRUT@Montant BRUT Moyen@Montant Avantages en nature@Montant Frais imposables@Montant Cotisations Patronales@Montant OD NET Patronales@Montant horaire moyen chargé@0@0@0@0|000000000000000|0
1|HP_LDATA_4|CTI : Décomposition ETP|NBSAL@MTMASSE@MTMASSEMOY@NBETP@NBETPT@0@0@0@0@0@0@0@0@0@0|NB Salariés@Masse sal.@Masse sal. moyen@ETP Rémunéré@ETP travaillé|#@#E@#E@#,00@#,00|Nombre de salarié @<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@(<i>Masse salariale</i> &#247; <i>ETP payé</i>) &#247; Nb mois de la période.@Equivalent temps plein basé sur les <i>Heures payées</i>.&#xD;&#xD;Heures payées &#247; Base de calcul de l'ETP (par défaut 151,67 h.) &#247; Nb mois de la période.@Equivalent temps plein basé sur les <i>Heures travaillées</i>.&#xD;&#xD;Heures travaillées &#247; Base de calcul de l'ETP (par défaut 151,67 h.) &#247; Nb mois de la période.@0@0@0@0@0@0@0@0@0@0|000000000000000|0
1|HP_LDATA_5|CTI : Qualification|NBSAL@MTBRUT@MTCOTSALARIE@MTCOTPATRONALE@MTNETAPAYER@MTNETIMPOSABLE@MTMASSE@MTODNETSALARIE@0@0@0@0@0@0@0|NB Salariées@Montant Brut@Cotisations salariales@Cotisations patronales@Net à payer@Net imposable@Masse salariale@OD/net salariales|#@#@#@#@#@#@#@#|Nombre de salarié @Montant BRUT@Montant cotisations salariales@Montant cotisations patronales@Montant net à payer@Montant net imposable@<i>Brut</i> + <i>Cotisations patronales</i> + <i>OD/Net patronales</i> + <i>Avantages en nature</i> + <i>Frais imposables</i>@Montant OD/net salariales@0@0@0@0@0@0@0|000000000000000|0
1|HP_LDATA_6|CTI : Brut / ETP Payé|NBSAL@MTBRUT@NBETP@0@0@0@0@0@0@0@0@0@0@0@0|NB Salariées@Montant Brut@ETP payé|#@#@#,00|Nombre de salarié @Montant BRUT@Equivalent temps plein basé sur les Heures payées Heures payées Base de calcul de l'ETP (par défaut 151,67 h.) Nb mois de la période.@0@0@0@0@0@0@0@0@0@0@0|000000000000000|0

+ 14
- 0
db/data2/dbdata_rh_t_widget_user_parameter.csv View File

@ -0,0 +1,14 @@
uuid|dashboard_widget_code|username|title|x|y|w|h|time_calc|visible|tab_code|max_cat|include_series_code
60a09a2f-1714-4903-8a48-e0c7c5d5597e|"CTI_EGAPRO|CTI_EFFAGE"|cti|Répartion par tranche d'âge|0|18|3|7|val|t|"CTI_EGAPRO|0"|0|{CTI_FEMMES,CTI_HOMMES}
2f166ff5-9eca-4a08-a72f-838cdc314385|"CTI_EGAPRO|CTI_EFFANC"|cti|Répartion par tranche d'ancienneté|3|18|3|7|val|t|"CTI_EGAPRO|0"|0|{CTI_FEMMES,CTI_HOMMES}
4629419f-a2c6-4627-86b3-786d03ec1db7|"CTI_EGAPRO|CTI_EFFGEN"|cti|Effectif |2|8|4|10|val|t|"CTI_EGAPRO|0"|0|{CTI_FEMMES,CTI_HOMMES}
54980aad-8b6b-43e5-8d86-b4b47d46ff66|"CTI_EGAPRO|CTI_EFFSTAT"|cti|Effectifs par statut|3|25|3|8|val|t|"CTI_EGAPRO|0"|0|{CTI_FEMMES,CTI_HOMMES}
fe63666a-69b0-4c35-8564-d243f605f520|"CTI_EGAPRO|CTI_ENTSORCAR"|cti|Hommes|0|8|2|5|val|t|"CTI_EGAPRO|0"|0|{CTI_DEPSALH,CTI_EFFDH,CTI_ENTSORH,CTI_NVSALH,CTI_TOH}
591c31d9-cf2a-4b9d-afd3-3605a476fc29|"CTI_EGAPRO|CTI_ENTSORCAR"|cti|Femmes|0|13|2|5|val|t|"CTI_EGAPRO|0"|0|{CTI_DEPSALF,CTI_EFFDF,CTI_ENTSORF,CTI_NVSALF,CTI_TOF}
da27e182-48ea-4c44-b874-4d3b860c875f|"CTI_EGAPRO|CTI_MSAGE"|cti|Masse salariale par tranche age|0|0|6|9|val|t|"CTI_EGAPRO|1"|0|{CTI_MSF,CTI_MSH}
8230cb17-4b23-4f64-b513-c1f20d8d91f0|"CTI_EGAPRO|CTI_MSCSP"|cti|Masse salariale par CSP|3|9|3|13|val|t|"CTI_EGAPRO|1"|0|{CTI_MSF,CTI_MSH}
7506a3e7-1b44-41e9-8727-e9fb1af75441|"CTI_EGAPRO|CTI_MSCSPMAP"|cti|Masse salariale par CSP (MAP)|0|9|3|13|val|t|"CTI_EGAPRO|1"|0|{CTI_MS}
1736e926-d668-4375-b042-95299d51b67c|"CTI_EGAPRO|CTI_STAT"|cti|Tableau statuts|4|0|2|8|val|t|"CTI_EGAPRO|0"|0|{CTI_FEMMES,CTI_HOMMES,CTI_TOTSAL}
1bf148e8-996a-4e64-b2b4-df19575c3368|"CTI_EGAPRO|CTI_STATTIME"|cti|Statuts|0|25|3|8|cum|t|"CTI_EGAPRO|0"|0|{CTI_TAUXSTAT,CTI_TOTSAL,CTI_TOTSALF}
732c7aad-a075-4ed8-a0b6-7a378af82d81|"CTI_EGAPRO|CTI_TYPECNT"|cti|Types de contrats - Femmes|0|0|2|8|val|t|"CTI_EGAPRO|0"|0|{CTI_FEMMES}
ac7b3909-8d3a-497e-9996-3b1111ded80e|"CTI_EGAPRO|CTI_TYPECNT"|cti|Types de contrats - Hommes|2|0|2|8|val|t|"CTI_EGAPRO|0"|0|{CTI_HOMMES}

+ 1496
- 0
db/dbsetup_data_rh.XML
File diff suppressed because it is too large
View File


+ 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 rh

+ 2
- 0
db/dvp_data_extract.bat View File

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

+ 4
- 0
db/expertDetailLevel.yaml View File

@ -0,0 +1,4 @@
contrat: Contrat (item)
paie: Historique de Paie (item)
salarie: Salarie (item)
ITMTAB: Table normale Item

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

@ -0,0 +1,10 @@
-- ============================================================
-- Derniers traitements
-- - Lancement de fonctions PGSQL
-- - Nettoyage installdb (éventuel)
-- ============================================================
-- CrÈation des vues de ventilation de la paie;
SELECT rh.cti_hp_create_views()
;

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

@ -0,0 +1,792 @@
-- =====================================================================
-- Divers traitements sur les données après l'installation des données
-- =====================================================================
-- Pas d'utilisation du masquage des indicateurs.
-- Forçage de l'affichage.
UPDATE rh.t_indicateurs
SET is_hide = 0
;
-- Initialisation du paramétre de rubrique "Heures payées" à 0.
UPDATE rh.t_rubriques
SET heures_payees = '0'
WHERE heures_payees IS NULL
;
-- Initialisation des coefficients base/tx salarial/txpatronal lorsque null
UPDATE rh.t_rubriques
SET coefficient_base = 1
WHERE coefficient_base IS NULL
;
UPDATE rh.t_rubriques
SET coefficient_txs = 1
WHERE coefficient_txs IS NULL
;
UPDATE rh.t_rubriques
SET coefficient_txp = 1
WHERE coefficient_txp IS NULL
;
-- Initialisation du nombre d'heures mensuelles servant de base au calcul de l'ETP.
UPDATE rh.t_etablissements
SET base_calcul_etp = 151.67
WHERE 1!=1
OR base_calcul_etp IS NULL
OR base_calcul_etp = 0.0
;
-- Ajout des paramétrages.
DROP TABLE IF EXISTS w_divers
;
CREATE TEMP TABLE w_divers AS
SELECT
'OCTIME_TPS_VALIDE' as code,
'Compteur à utiliser pour le temps validé (5 ou 6).' as texte,
'5' as valeur,
NULL::date as valeur_date,
'Compteur à utiliser pour le temps validé (5 ou 6).' as description
UNION
SELECT
'OCTIME_TPS_VALIDE_A' as code,
'Ajuster le temps validé.' as texte,
'0' as valeur,
NULL::date as valeur_date,
'Ajuster le temps validé (0 désactivé par défaut).' as description
UNION
SELECT
'OCTIME_VENTILATION',
'Ventilation analytique Octime (0 désactivé).',
'0',
NULL::date,
'Ventilation analytique Octime (0 désactivé).'
UNION
SELECT
'OCTIME_SERVICE_ID',
'Provenance du service Octime.',
'2',
NULL::date,
'Provenance du service Octime.'
UNION
-- Paramétrage permettant de définir la provenance de la notion d'établissement Octime.
-- 0 = Manuel
-- 1-3 = niveaux Octime
-- 4 = cas Fondation Hopale où l'ent/ets est un préfixe du matricule.
SELECT
'OCTIME_ETS_ID',
'Provenance de l''établissement Octime.',
'0',
NULL::date,
'Provenance de l''établissement Octime.'
UNION
-- Code établissement saisi à la main lorsque OCTIME_ETS_ID = 0.
-- Doit correspondre à t_entreprises.planning_code||t_etablissements.planning_code.
SELECT
'OCTIME_ETS_MANUEL',
'Code de l''établissement lorsque OCTIME_ETS_ID = 0.',
'',
NULL::date,
'Code de l''établissement lorsque OCTIME_ETS_ID = 0'
UNION
SELECT
'OCTIME_SALARIE',
'Méthode de rapprochement salariés paie/planning.',
'1',
NULL::date,
'Méthode de rapprochement salariés paie/planning.'
UNION
SELECT
'OCTIME_INTERIM_STR',
'Stratégie d''identification des intérimaires.',
'0',
NULL::date,
'Stratégie d''identification des intérimaires.'
UNION
SELECT
'OCTIME_INTERIM_PREFIXE',
'Préfixe à ajouter aux matricules intérimaire.',
'',
NULL::date,
'Préfixe à ajouter aux matricules intérimaire.'
UNION
SELECT
'OCTIME_OLDMAT_PREFIXE',
'Préfixe à ajouter aux matricules de l''ancien prestataire.',
'',
NULL::date,
'Préfixe à ajouter aux matricules de l''ancien prestataire.'
UNION
SELECT
'OCTIME_MAX_NIVEAU',
'Niveau Octime maximum à importer.',
'3',
NULL::date,
'Niveau Octime maximum à importer (3 par défaut, 4 maximum).'
UNION
SELECT
'INTERIM_CNT_CODE',
'Code du type de contrat intérim planning.',
'INT',
NULL::date,
'Code du type de contrat intérim planning.'
UNION
SELECT
'IMP_EXC_MAR',
'Exclusion de motifs d''arrêt lors de l''import.',
'',
NULL::date,
'Exclure des motifs d''arrêt lors de l''import'
UNION
SELECT
'IMP_INC_MAR',
'Inclusion de motifs d''arrêt lors de l''import.',
'',
NULL::date,
'Séparer les codes par des virgules.'
UNION
SELECT
'OPT_STD_HP',
'Historique de paie classique ou paramétré.',
'0',
NULL::date,
'Historique de paie classique ou paramétré.'
UNION
SELECT
'OPT_INTERIM_PLANNING',
'Remonter les intérimaires depuis le planning.',
'0',
NULL::date,
'Remonter les intérimaires depuis le planning.'
UNION
SELECT
'OPT_HP_UP',
'Historique de paie màj (pour fusion).',
'0',
NULL::date,
'Historique de paie màj (pour fusion).'
UNION
SELECT
'OPT_CNT_FIN_FUSION',
'Fusion des contrats consécutifs ayant le(s) motif(s) de fin paramétré(s) ici.',
'',
NULL::date,
'Vide (défaut) : pas de fusion. Un ou plusieurs motifs (séparés par des virgules) : activé.'
UNION
SELECT
'OPT_VENT_PAIE',
'Remonter la ventilation de paie.',
'1',
NULL::date,
'0 : pas de ventilation. 1 (défaut) : activé.'
UNION
SELECT
'HEURES_W',
'Heures Travaillées.',
'0',
NULL::date,
'Calcul des Heures Travaillées (0 = Heures Payées - Heures NON Travaillées, 1 = Heures Travaillées)'
UNION
SELECT
'SIGEMS_AUTO',
'Sigems - Auto-détection du paramétrage des rubriques selon le compte.',
'0',
NULL::date,
'0 = Non (par défaut), 1 = Oui (stratégie 1), N = futures stratégies...'
UNION
SELECT
'SIGEMS_TS',
'Sigems - Taxe sur les Salaires.',
'0',
NULL::date,
'Intégration de la Taxe sur les Salaires (0 = Non, 1 = Oui)'
UNION
SELECT
'SAGE_STATUT',
'Sage - Statut iCTI.',
'CATEGORIE',
NULL::date,
'Le statut iCTI doit être pris de la zone Sage "Catégorie" (CATEGORIE) ou "Niveau" (NIVEAU)'
UNION
SELECT
'SAGE_GRILLE',
'Sage - Grille iCTI.',
'UNITE',
NULL::date,
'La grille iCTI doit être prise de la zone Sage "Unité" (UNITE) ou "Coefficient" (COEFFICIENT)'
UNION
SELECT
'SAGE_QUALIFICATION',
'Sage - Qualification iCTI.',
'UNITE',
NULL::date,
'La qualification iCTI doit être pris de la zone Sage "Unité" (UNITE), "Département" (DEPARTEMENT), "Qualification" (QUALIFICATION) ou "Emploi" (EMPLOI)'
UNION
SELECT
'SAGE_EMPLOI',
'Sage - Code emploi iCTI.',
'EMPLOI',
NULL::date,
'Le code emploi iCTI doit être pris de la zone Sage "Emploi" (EMPLOI) ou "Qualification" (QUALIFICATION)'
UNION
SELECT
'SAGE_TYPE_HORAIRE',
'Sage - Type d''horaire iCTI.',
'VALEURCUMUL_81',
NULL::date,
'Le type d''horaire iCTI doit être pris de la zone Sage "Valeur cumul 81" (VALEURCUMUL_81) ou "Unité" (UNITE)'
UNION
SELECT
'SAGE_SERVICE',
'Sage - Service iCTI.',
'SERVICE',
NULL::date,
'Le service iCTI doit être pris de la zone Sage "Service" (SERVICE) ou "Département" (DEPARTEMENT)'
UNION
SELECT
'SAGE_TEMPS_TRAVAIL',
'Sage - Type de temps de travail.',
'ETP',
NULL::date,
'Privilégier l''ETP (ETP) ou l''Horaire (HORAIRE)'
UNION
SELECT
'CEGID_SERVICE',
'Cegid - Colonne où prendre les services iCTI.',
'3',
NULL::date,
'1, 2 ou 3 (déf.).'
UNION
SELECT
'CEGID_TYPE_CONTRAT',
'Cegid - Colonne où prendre les types de contrat iCTI.',
'1',
NULL::date,
'1 (déf.), 2, 3 ou 4.'
UNION
SELECT
'CEGID_GRILLE',
'Cegid - Colonne où prendre les grilles iCTI.',
'GRILLE',
NULL::date,
'GRILLE (déf.) ou QUALIFICATION.'
UNION
SELECT
'CEGID_QUALIFICATION',
'Cegid - Colonne où prendre les qualifications iCTI.',
'QUALIFICATION',
NULL::date,
'QUALIFICATION (déf.) ou EMPLOI.'
UNION
SELECT
'CEGID_MOTIF_FIN',
'Cegid - Colonne où prendre les motifs de fin iCTI.',
'0',
NULL::date,
'O (déf.) ou 1.'
UNION
SELECT
'CEGID_STATUT',
'Cegid - Colonne où prendre les statuts iCTI.',
'DADSCAT',
NULL::date,
'DADSCAT (déf.), DADSPROF ou INDICE.'
UNION
SELECT
'CEGI_CST_FJ',
'Constante CEGI codant pour les Forfaits Jours',
'DADSH',
NULL::date,
'DADSH (défaut) ou autre.'
UNION
SELECT
'CEGI_CODE_TTT',
'Type de temps de travail tiré de la constante CEGI AAAAC',
'AAAAC',
NULL::date,
'AAAAC (défaut), AARM ou autre.'
UNION
SELECT
'CEGI_SEXE',
'Cegi - Code sexe masculin.',
'1',
NULL::date,
'1 par défaut (2 ou 3 sinon).'
UNION
SELECT
'CEGI_GRILLE',
'Cegi - Colonne où prendre les grilles iCTI.',
'ECHELON',
NULL::date,
'ECHELON (déf.) ou GRILLE.'
UNION
SELECT
'CEGID_GRP_GRILLE',
'Cegi - Colonne où prendre les groupes de grille iCTI.',
'COEFF',
NULL::date,
'COEFF (déf.), IND ou BUL.'
UNION
SELECT
'CEGID_GRP_GRILLE_CST',
'Cegi - Constante de paie où prendre le coefficient (CEGID_GRP_GRILLE = BUL).',
'54',
NULL::date,
'54 (déf.) ou autre constante de paie.'
UNION
SELECT
'CEGI_QUALIFICATION',
'Cegi - Colonne où prendre les qualifications iCTI.',
'QUALCONV',
NULL::date,
'QUALCONV (déf.), QUALIFICATION.'
UNION
SELECT
'CEGI_CODE_EMPLOI',
'Cegi - Colonne où prendre les codes emplois iCTI.',
'MODCNT',
NULL::date,
'MODCNT (déf.), QUALIFICATION.'
UNION
SELECT
'CEGI_STATUT',
'Cegi - Colonne où prendre les statuts iCTI.',
'CATSOC',
NULL::date,
'CATSOC (déf.), GRILLE.'
UNION
SELECT
'CEGI_SITE_SERVICE',
'Cegi Planning - Remonter la notion de site (=établissement).',
'0',
NULL::date,
'0 = non (par déf.), 1 = oui.'
UNION
SELECT
'CEGI_ABS_VALIDE',
'Cegi Planning - Remonter UNIQUEMENT les absences validées.',
'1',
NULL::date,
'1 = oui (par déf.), 0 = non.'
UNION
SELECT
'CEGI_ABS_EXCL',
'Cegi Planning - Codes absence à exclure.',
'',
NULL::date,
'ex. : AMITH, JFCHO, ...'
UNION
SELECT
'CEGI_PAUSE_EXCL',
'Cegi Planning - Codes pauses à exclure.',
'',
NULL::date,
'ex. : PAU, ...'
UNION
SELECT
'CEGI_UNITE_HEURE',
'Cegi Planning - Unités Cegi exprimées en heures.',
'102',
NULL::date,
'102 (par déf.), valeurs séparées par des virgules.'
UNION
SELECT
'CEGI_FORFAIT_JOUR',
'Alimenter la base de la rubrique 1052 de forfait jour à partir de AAAAC.',
'0',
NULL::date,
'0 (défaut) désactivé. Activé lorsqu''à 1.'
UNION
SELECT
'CEGI_VENTILATION',
'Remonter la ventilation analytique CEGI.',
'0',
NULL::date,
'0 (défaut) désactivé. Activé lorsqu''entre 1 et 3.'
UNION
SELECT
'CEGI_TPA_ID',
'Identifiant Cegi du plan analytique à remonter.',
'0',
NULL::date,
'0 (défaut) désactivé. Consulter la table prod_cegi.rhp_cmtyplana pour obtenir la valeur de TPA_ID.'
UNION
SELECT
'SHS_ANCIENNETE',
'SHS - Mode de calcul des anciennetés.',
'0',
NULL::date,
'SHS - 0 = reprise du calcul SHS (défaut), 1 = calcul effectué par iCTI.'
UNION
SELECT
'SHS_MOTIF',
'SHS - Utiliser la précision à la place du motif d''arrêt.',
'0',
NULL::date,
'Utiliser la précision à la place du motif d''arrêt (0 = Non par défaut, 1 = Oui)'
UNION
SELECT
'PAIE_VENTILATION',
'Remonter la ventilation analytique de paie.',
'0',
NULL::date,
'0 (défaut) désactivé. Activé lorsqu''entre 1 et 3.'
UNION
SELECT
'PEGASE_VEN_PROV',
'Provenance de la ventilation PEGASE.',
'1',
NULL::date,
'Onglet n°1 par défaut. Peut être 2, 3 ou plus selon les établissements.'
UNION
SELECT
'BS_CLA_AGE',
'Classe d''âges du Bilan Social.',
'CTI_AGE',
NULL::date,
'Classe d''âges du Bilan Social.'
UNION
SELECT
'BS_CLA_ANC',
'Classe d''anciennetés du Bilan Social.',
'CTI_ANC',
NULL::date,
'Classe d''anciennetés du Bilan Social.'
UNION
SELECT
'FUSION_STRATEGIE',
'Stratégie de rapprochement des matricules ancien/nouveau prestataire.',
'0',
NULL::date,
'Stratégie de rapprochement des matricules ancien/nouveau prestataire.'
UNION
SELECT
'FUSION_IGNORE_ARRETS',
'Ignorer les arrêts de travail lors d''une fusion.',
'0',
NULL::date,
'Ignorer les arrêts de travail lors d''une fusion.'
UNION
SELECT
'EXERCICE_DECALE',
'L''exercice de paie commence au mois de janvier (0) ou décembre (1).',
'0',
NULL::date,
'L''exercice de paie commence au mois de janvier (0) ou décembre (1).'
UNION
SELECT
'CORRECTION_DE_ETS',
'Corriger la date d''entrée établissement en se basant sur la date de début du premier contrat.',
'0',
NULL::date,
'Corriger la date d''entrée établissement en se basant sur la date de début du premier contrat.'
UNION
SELECT
'CORRECTION_DS_ETS',
'Corriger la date de sortie établissement en se basant sur la date de fin du dernier contrat.',
'0',
NULL::date,
'Corriger la date de sortie établissement en se basant sur la date de fin du dernier contrat.'
UNION
SELECT
'VENTIL_JOUR',
'Ventilation par jour',
'0',
NULL::date,
'(0) garder la ventilation du prestataire (1) Ventiler par jour (césure à minuit)'
UNION
SELECT
'AGILETIME_PAUSE',
'Id code(s) heure(s) de pause Agiletime',
'21,27',
NULL::date,
'Définition du ou des id correspondant à des heures de pause à retrancher séparés par , sans espaces'
UNION
SELECT
'AGILETIME_TODEL',
'Id du code heure à ne pas prendre en compte',
'15',
NULL::date,
'Définition du ou des id correspondant à des heures de pause à ignorer séparés par , sans espaces'
UNION
SELECT
'QUALIF_ASSOC',
'Association automatique des qualifications paie/planning',
'2',
NULL::date,
'0: désactivé, 1: code, 2:texte, 3:les deux'
UNION
SELECT
'SERVICE_ASSOC',
'Association automatique des services paie/planning',
'2',
NULL::date,
'0: désactivé, 1: code, 2:texte, 3:les deux'
UNION
SELECT
'SENSPARAMETRE_CLASSE',
'Sens consolidation classes/listes.',
'0',
NULL::date,
'0: désactivé, M: Montant, D: Descendant'
UNION
SELECT
'OPT_IMP_QUALIF',
'Option d''import de la Qualification',
'0',
NULL::date,
'0: valeur par défaut, 1: mise à jour du code et du texte'
UNION
SELECT
'FUSIONSALARIE',
'Fusion des salariés',
'0',
NULL::date,
'1 = Fusion des salariés activée'
UNION
SELECT
'FUSIONENTREESALARIE',
'Fusion des dates entrées salariés (quelque soit entreprise)',
'0',
NULL::date,
'1 = Fusion des dates entrée salariés activée'
UNION
SELECT
'EXPERT_ACTIVE',
'Contrôles EXPERT activés',
'1',
NULL::date,
'1=Activé'
UNION
SELECT
'EIG_SERVICE',
'Provenance du service EIG',
'0',
NULL::date,
'0: Service, 1: Section contrat, 2: Section contrat - Service'
UNION
SELECT
'EIG_ETABLISSEMENT',
'Provenance de l''établissement EIG',
'1',
NULL::date,
'0: Bulletin, 1: Contrat, 2: Personne'
UNION
SELECT
'ADP_TYPE_CONTRAT',
'Colonne pour type de contrat ',
'0',
NULL::date,
'0: Nature du contrat (cnlcnt), 1: Type de contrat (lnmcnt)'
UNION
SELECT
'ADP_SERVICE_COLUMN',
'Colonne pour service',
'SACAFF',
NULL::date,
'SACAFF, SACAFFEC01, SACAFFEC02, SACAFFEC05 (dft)'
UNION
SELECT
'CEGI_PLANNING_FORCE_TYPE_HORAIRE_ABSENCE',
'Cegi Planning - Pour forcer des codes de types horaires en temps d''absence',
'',
NULL::date,
'Valeurs séparées par des virgules'
UNION
SELECT
'CPP_COEF_VALORISATION_INTERIM',
'Coefficient de valorisation des moyennes salariales pour les intérimaires',
'1.20',
NULL::date,
'Coefficient de valorisation des moyennes salariales pour les intérimaires'
UNION
SELECT
'CPP_JOUR_DEBUT_MOIS_PAIE',
'Croisement Paie Planning : Date du premier jour d''affectation de la paie',
'1',
NULL::date,
'Croisement Paie Planning : Date du premier jour d''affectation de la paie'
UNION
SELECT
'CEGI_PLANNING_ABSENCE_HEURE',
'Cegi Planning - Codes d''absences dont l''unité de temps utilisée est l''heure',
'',
NULL::date,
'Valeurs séparées par des virgules'
UNION
SELECT
'CEGI_PLANNING_TYPE_HORAIRE_TEMPS_VALIDE_VERS_TEMPS_DU',
'Cegi Planning - Codes de types horaires à transférer du temps_validé vers le temps_du',
'',
NULL::date,
'Valeurs séparées par des virgules'
;
INSERT INTO rh.t_divers(
code,
texte,
valeur,
valeur_date,
description)
SELECT
code,
texte,
valeur,
valeur_date,
description
FROM w_divers
WHERE code NOT IN (SELECT code FROM rh.t_divers)
;
UPDATE rh.t_divers SET
texte = w_divers.texte,
description = w_divers.description
FROM w_divers
WHERE 1=1
AND t_divers.code = w_divers.code
AND (1!=1
OR t_divers.texte != w_divers.texte
OR t_divers.description != w_divers.description)
;
-- Màj du paramétre par défaut CEGID_STATUT qui passe de DADS à DADSCAT.
UPDATE rh.t_divers SET
valeur = 'DADSCAT'
WHERE 1=1
AND code = 'CEGID_STATUT'
AND valeur = 'DADS'
;
-- Maintenance de ce qui existe en prod (SALARIE_CORR => OCTIME_SALARIE).
UPDATE rh.t_divers
SET valeur = (SELECT valeur FROM rh.t_divers WHERE code = 'SALARIE_CORR')
WHERE 1=1
AND code = 'OCTIME_SALARIE'
AND (SELECT count(*) FROM rh.t_divers WHERE code = 'SALARIE_CORR') > 0
;
DELETE FROM rh.t_divers
WHERE code = 'SALARIE_CORR'
;
-- Création d'une liste CTI de rubrique(s) à paramétrer permettant d'identifier d'eventuelles rubriques d'heures contrat.
DROP TABLE IF EXISTS w_dbsetup
;
CREATE TEMP TABLE w_dbsetup (oid text, texte text,chapitre text,code text, is_cti text, contenu_by_code text, include_code text, exclude_code text, show_omit text, utilisateur_createur text, est_partagee_modification text,table_code text)
;
INSERT INTO w_dbsetup
VALUES('0',
'Heures contrat',
'Paramétrage',
'CTI_HCNT',
'1',
'0',
'',
'',
'0',
'',
'1',
'RUP')
;
UPDATE rh.t_listes SET
texte = w_dbsetup.texte,
chapitre = w_dbsetup.chapitre,
table_id = t_listes_tables.oid,
is_cti = w_dbsetup.is_cti,
show_omit = w_dbsetup.show_omit,
contenu_by_code = w_dbsetup.contenu_by_code,
include_code = w_dbsetup.include_code,
exclude_code = w_dbsetup.exclude_code,
utilisateur_createur =
CASE
WHEN t_listes.utilisateur_createur = '' OR w_dbsetup.est_partagee_modification <> '1' THEN w_dbsetup.utilisateur_createur
ELSE t_listes.utilisateur_createur
END,
est_partagee_modification = w_dbsetup.est_partagee_modification
FROM w_dbsetup, rh.t_listes_tables
WHERE true
AND w_dbsetup.table_code = t_listes_tables.code
AND t_listes.code = w_dbsetup.code
;
INSERT INTO rh.t_listes(code, texte, chapitre, table_id, is_cti, show_omit, contenu_by_code, include_code, exclude_code, utilisateur_createur, est_partagee_modification)
SELECT w_dbsetup.code,
w_dbsetup.texte,
w_dbsetup.chapitre,
t_listes_tables.oid,
w_dbsetup.is_cti,
w_dbsetup.show_omit,
w_dbsetup.contenu_by_code,
w_dbsetup.include_code,
w_dbsetup.exclude_code,
w_dbsetup.utilisateur_createur,
w_dbsetup.est_partagee_modification
FROM w_dbsetup,
rh.t_listes_tables
WHERE true
AND w_dbsetup.table_code = t_listes_tables.code
AND w_dbsetup.code NOT IN (SELECT code FROM rh.t_listes)
;
-- Initialisation du code cotisation pour un salarié.
UPDATE rh.p_salaries
SET code_cotisation_id = 0
WHERE code_cotisation_id IS NULL
;
UPDATE rh.p_historique_paie
SET compte_id = 0
WHERE compte_id IS NULL
;
-- Màj des établissements dans p_contrats_mois lorsque non renseigné lors de l'import.
-- Doit aussi être effectué dans le SHARE à l'issu de chaque import.
UPDATE rh.p_contrats_mois SET
etablissement_id = p_contrats.etablissement_id
FROM rh.p_contrats
WHERE 1=1
AND p_contrats_mois.contrat_id = p_contrats.oid
AND p_contrats_mois.etablissement_id IS NULL
;
-- Màj de l'établissement pour chaque ligne de paie lorsque non renseigné.
-- Doit aussi être effectué dans le SHARE à l'issu de chaque import.
UPDATE rh.p_historique_paie SET
etablissement_id = p_contrats_mois.etablissement_id
FROM rh.p_contrats_mois
WHERE 1=1
AND p_historique_paie.contrat_mois_id = p_contrats_mois.oid
AND p_historique_paie.etablissement_id IS NULL
;
-- Alimentation des anciennetés en jours lorsque non renseigné lors de l'import.
-- (365 + 365 + 365 + 366) / (12 * 4) = 30.4375
UPDATE rh.p_contrats
SET anciennete_anterieure_jours = anciennete_anterieure_calculee_mois * 30.4375
WHERE 1!=1
OR anciennete_anterieure_jours = 0
OR anciennete_anterieure_jours IS NULL
;
UPDATE rh.p_contrats_mois
SET anciennete_jours = anciennete_mois * 30.4375
WHERE 1!=1
OR anciennete_jours = 0
OR anciennete_jours IS NULL
;
-- Correction sur les rapports Essentiels passés à is_hide = 1 par erreur.
UPDATE rh.t_rapports SET
is_hide = '0'
WHERE 1=1
AND code IN ('CTI_ESS_10', 'CTI_ESS_11')
AND is_hide = '1'
;
-- Les Handicaps sont désactivés
TRUNCATE rh.p_handicap
;

+ 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
-- =============================================

+ 219
- 0
db/schema2/functions/cti_budget_execute_rules.yaml View File

@ -0,0 +1,219 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
_module_pmsimco TEXT;
BEGIN
RAISE NOTICE '%' , 'Initialisation budget_cles';
-- Contenu table
INSERT INTO rh.t_budget_cle (oid, code, texte, texte_court)
SELECT 0, '**', 'Non renseigné', 'Non renseigné'
WHERE 0 NOT IN (SELECT oid FROM rh.t_budget_cle);
-- Oids des sections de classe
DROP TABLE IF EXISTS w_classe_section_to_id;
CREATE TEMP TABLE w_classe_section_to_id AS
SELECT '[CLASSE:'||t_classes.code||':'||t_classes_sections.code||']' AS classe_section_code, to_id AS classe_section_to_id
FROM rh.t_classes
JOIN rh.t_classes_sections ON classe_id = t_classes.oid
JOIN rh.t_classes_sections_elements ON section_id = t_classes_sections.oid
WHERE t_classes.code <> ''
GROUP BY 1,2
;
-- Traduction des règles en oid
RAISE NOTICE '%' , 'Application des regles. Traduction en oid';
DROP TABLE IF EXISTS w_budget_cle_rule;
CREATE TEMP TABLE w_budget_cle_rule AS
SELECT
t_budget_cle_rule.oid,
budget_cle_id,
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_etablissement <> '' THEN '1' ELSE '0' END AS a_liste_etablissement,
string_to_array(translate(liste_etablissement,'*,','% '),' ') AS liste_etablissement,
NULL::bigint[] AS liste_etablissement_id ,
CASE WHEN liste_service <> '' THEN '1' ELSE '0' END AS a_liste_service,
string_to_array(translate(liste_service,'*,','% '),' ') AS liste_service,
NULL::bigint[] AS liste_service_id ,
CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite,
string_to_array(translate(liste_specialite,'*,','% '),' ') AS liste_specialite,
NULL::bigint[] AS liste_specialite_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_section_analytique_paie <> '' THEN '1' ELSE '0' END AS a_liste_section_analytique_paie,
string_to_array(translate(liste_section_analytique_paie,'*,','% '),' ') AS liste_section_analytique_paie,
NULL::bigint[] AS liste_section_analytique_paie_id ,
CASE WHEN liste_qualification <> '' THEN '1' ELSE '0' END AS a_liste_qualification,
string_to_array(translate(liste_qualification,'*,','% '),' ') AS liste_qualification,
NULL::bigint[] AS liste_qualification_id ,
CASE WHEN liste_grille <> '' THEN '1' ELSE '0' END AS a_liste_grille,
string_to_array(translate(liste_grille,'*,','% '),' ') AS liste_grille,
NULL::bigint[] AS liste_grille_id ,
CASE WHEN liste_code_emploi <> '' THEN '1' ELSE '0' END AS a_liste_code_emploi,
string_to_array(translate(liste_code_emploi,'*,','% '),' ') AS liste_code_emploi,
NULL::bigint[] AS liste_code_emploi_id ,
CASE WHEN liste_categorie_socio_professionnelle <> '' THEN '1' ELSE '0' END AS a_liste_categorie_socio_professionnelle,
string_to_array(translate(liste_categorie_socio_professionnelle,'*,','% '),' ') AS liste_categorie_socio_professionnelle,
NULL::bigint[] AS liste_categorie_socio_professionnelle_id
FROM rh.t_budget_cle_rule
JOIN rh.t_budget_cle ON budget_cle_id = t_budget_cle.oid
ORDER BY priorite, budget_cle_id;
DELETE FROM w_budget_cle_rule
WHERE
(a_liste_finess::int +
a_liste_etablissement::int +
a_liste_service::int +
a_liste_specialite::int +
a_liste_section_analytique::int +
a_liste_section_analytique_paie::int +
a_liste_qualification::int +
a_liste_grille::int +
a_liste_code_emploi::int +
a_liste_categorie_socio_professionnelle::int) = 0
;
UPDATE w_budget_cle_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_budget_cle_rule
SET liste_etablissement_id = (SELECT base.cti_group_array3(oid) FROM rh.t_etablissements WHERE oid <> 0 AND code LIKE ANY (liste_etablissement))
WHERE a_liste_etablissement = '1';
UPDATE w_budget_cle_rule
SET liste_service_id = (SELECT base.cti_group_array3(oid) FROM rh.t_services WHERE oid <> 0 AND code LIKE ANY (liste_service))
WHERE a_liste_service = '1';
UPDATE w_budget_cle_rule
SET liste_specialite_id = (SELECT base.cti_group_array3(oid) FROM rh.t_specialites WHERE oid <> 0 AND code LIKE ANY (liste_specialite))
WHERE a_liste_specialite = '1';
UPDATE w_budget_cle_rule
SET liste_section_analytique_id = (SELECT base.cti_group_array3(oid) FROM rh.t_sections_analytiques WHERE oid <> 0 AND code LIKE ANY (liste_section_analytique))
WHERE a_liste_section_analytique = '1';
UPDATE w_budget_cle_rule
SET liste_section_analytique_paie_id = (SELECT base.cti_group_array3(oid) FROM rh.t_sections_analytiques_paie WHERE oid <> 0 AND code LIKE ANY (liste_section_analytique_paie))
WHERE a_liste_section_analytique_paie = '1';
UPDATE w_budget_cle_rule
SET liste_qualification_id = (SELECT base.cti_group_array3(oid) FROM rh.t_qualifications WHERE oid <> 0 AND code LIKE ANY (liste_qualification))
WHERE a_liste_qualification = '1';
UPDATE w_budget_cle_rule
SET liste_qualification_id = subview.liste_qualification_id
FROM
(
SELECT w_budget_cle_rule.oid,
array_cat(MAX(liste_qualification_id),base.cti_group_array3(classe_section_to_id)) AS liste_qualification_id
FROM w_budget_cle_rule
JOIN w_classe_section_to_id ON classe_section_code = ANY(liste_qualification)
WHERE a_liste_qualification = '1'
GROUP BY 1
) subview
WHERE w_budget_cle_rule.oid = subview.oid
;
UPDATE w_budget_cle_rule
SET liste_grille_id = (SELECT base.cti_group_array3(oid) FROM rh.t_grilles WHERE oid <> 0 AND code LIKE ANY (liste_grille))
WHERE a_liste_grille = '1';
UPDATE w_budget_cle_rule
SET liste_code_emploi_id = (SELECT base.cti_group_array3(oid) FROM rh.t_codes_emploi WHERE oid <> 0 AND code LIKE ANY (liste_code_emploi))
WHERE a_liste_code_emploi = '1';
UPDATE w_budget_cle_rule
SET liste_categorie_socio_professionnelle_id = (SELECT base.cti_group_array3(oid) FROM rh.t_categories_socio_professionnelle WHERE oid <> 0 AND code LIKE ANY (liste_categorie_socio_professionnelle))
WHERE a_liste_categorie_socio_professionnelle = '1';
RAISE NOTICE '%' , 'Application des regles.'
;
DROP TABLE IF EXISTS w_profil_contrat_mois
;
CREATE TEMP TABLE w_profil_contrat_mois AS
SELECT
p_profil_contrat_mois.oid,
COALESCE(MIN(priorite),999999999) AS budget_cle_priorite,
COALESCE((MIN(ARRAY[priorite,w_budget_cle_rule.budget_cle_id]))[2],0) AS budget_cle_id
FROM rh.p_profil_contrat_mois
JOIN rh.p_contrats_mois ON p_profil_contrat_mois.contrat_mois_id = p_contrats_mois.oid
JOIN rh.t_etablissements ON t_etablissements.oid = p_contrats_mois.etablissement_id
JOIN rh.p_profils ON p_profil_contrat_mois.profil_id = p_profils.oid
JOIN w_budget_cle_rule ON
(a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND
(a_liste_etablissement = '0' OR p_contrats_mois.etablissement_id = ANY (liste_etablissement_id)) AND
(a_liste_service = '0' OR p_profils.service_id = ANY (liste_service_id)) AND
(a_liste_specialite = '0' OR p_profils.specialite_id = ANY (liste_specialite_id)) AND
(a_liste_qualification = '0' OR p_profils.qualification_id = ANY (liste_qualification_id)) AND
(a_liste_section_analytique = '0' OR p_profils.section_analytique_id = ANY (liste_section_analytique_id)) AND
(a_liste_section_analytique_paie = '0' OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id)) AND
(a_liste_grille = '0' OR p_profils.grille_id = ANY (liste_grille_id)) AND
(a_liste_code_emploi = '0' OR p_profils.code_emploi_id = ANY (liste_code_emploi_id)) AND
(a_liste_categorie_socio_professionnelle = '0' OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
-- Pas de service planning.
WHERE
(a_liste_finess::int +
a_liste_etablissement::int +
a_liste_service::int +
a_liste_specialite::int +
a_liste_section_analytique::int +
a_liste_section_analytique_paie::int +
a_liste_qualification::int +
a_liste_grille::int +
a_liste_code_emploi::int +
a_liste_categorie_socio_professionnelle::int) > 0
GROUP BY 1
ORDER BY 2,1
;
RAISE NOTICE '%' , 'Application des regles. Validation des budget_cles';
UPDATE rh.p_profil_contrat_mois SET
budget_cle_id = w_profil_contrat_mois.budget_cle_id
FROM w_profil_contrat_mois
WHERE p_profil_contrat_mois.oid = w_profil_contrat_mois.oid AND
p_profil_contrat_mois.budget_cle_id IS DISTINCT FROM w_profil_contrat_mois.budget_cle_id
;
UPDATE rh.p_profil_contrat_mois SET
budget_cle_id = 0
WHERE 1=1
AND oid NOT IN (SELECT oid FROM w_profil_contrat_mois group by 1)
AND budget_cle_id IS DISTINCT FROM 0
;
ANALYSE rh.p_profil_contrat_mois
;
INSERT INTO rh.p_oids (code_table, oid)
SELECT 'budget_cle', budget_cle_id
FROM rh.p_profil_contrat_mois
WHERE budget_cle_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'budget_cle')
GROUP BY 2
;
RETURN 'OK';
END;

+ 19
- 0
db/schema2/functions/cti_budget_generate_keys.yaml View File

@ -0,0 +1,19 @@
return: text
lang: plpgsql
src: |
DECLARE
BEGIN
-- Oid 0 = Non renseigné
INSERT INTO rh.t_budget_cle (oid, code, texte, texte_court)
SELECT
0, '*NR', 'N/R', 'N/R'
WHERE 0 NOT IN (SELECT oid FROM rh.t_budget_cle)
;
RETURN 'OK' ;
END;

+ 771
- 0
db/schema2/functions/cti_croisement_paie_planning_generate.yaml View File

@ -0,0 +1,771 @@
return: text
lang: plpgsql
src: |
DECLARE
min_month_to_get numeric;
closed_payroll_month numeric;
max_month_to_get numeric;
BEGIN
-- Date la plus ancienne à récupérer de la paie
min_month_to_get = (SELECT MIN(mois_paie) FROM rh.p_historique_paie);
-- Date la plus récente à récupérer de la paie. Dernière paie cloturée
closed_payroll_month = (SELECT MAX(mois_paie) FROM rh.p_historique_paie);
-- Pour l'instant, le calcul ne se fait que jusqu'au dernier mois de paie cloturé
max_month_to_get = closed_payroll_month;
-- Vidage des tables
TRUNCATE rh.p_taux_horaires_mensuels;
TRUNCATE rh.p_croisement_paie_planning;
TRUNCATE rh.p_sommes_mensuelles_ventilees_paie;
TRUNCATE rh.p_sommes_mensuelles_ventilees_planning;
TRUNCATE rh.p_presence_salaries;
TRUNCATE rh.t_periode_paie;
-- Génération des périodes de paie
DROP TABLE IF EXISTS periode_paie
;
CREATE TEMP TABLE periode_paie AS
SELECT
date AS date_debut,
((date + interval '1 MONTH') - interval '1 DAY')::date AS date_fin,
(to_char(((date + interval '1 MONTH') - interval '1 DAY')::date, 'YYYYMM'))::int AS mois_paie
FROM base.p_calendrier
WHERE
date BETWEEN (SELECT MIN(p_historique_paie.date_debut) FROM rh.p_historique_paie) AND (SELECT MAX(p_historique_paie.date_fin) FROM rh.p_historique_paie)
AND date_part('DAY', date) = (SELECT valeur::numeric FROM rh.t_divers WHERE code = 'CPP_JOUR_DEBUT_MOIS_PAIE')
ORDER BY 1
;
INSERT INTO rh.t_periode_paie (
date_debut,
date_fin,
mois_paie
)
SELECT
date_debut,
date_fin,
mois_paie
FROM periode_paie
;
-- Récupération des salariés présents en paie par mois
DROP TABLE IF EXISTS presence_histo_paie
;
CREATE TEMP TABLE presence_histo_paie AS
SELECT
p_historique_paie.salarie_id,
t_periode_paie.mois_paie
FROM rh.p_historique_paie
JOIN rh.t_periode_paie ON t_periode_paie.mois_paie = p_historique_paie.mois_paie
GROUP BY 1,2
;
-- Récupération des salariés présents au planning par mois
DROP TABLE IF EXISTS presence_mouvements_planning
;
CREATE TEMP TABLE presence_mouvements_planning AS
SELECT
p_planning_mouvement.salarie_id,
t_periode_paie.mois_paie
FROM rh.p_planning_mouvement
JOIN rh.t_periode_paie ON true
WHERE p_planning_mouvement.date BETWEEN t_periode_paie.date_debut AND t_periode_paie.date_fin
GROUP BY 1,2
;
-- Génération de la présence des salariés dans la paie et dans le planning par mois
DROP TABLE IF EXISTS presence_salaries
;
CREATE TEMP TABLE presence_salaries AS
SELECT
p_salaries.oid AS salarie_id,
t_periode_paie.mois_paie,
COUNT(presence_histo_paie.salarie_id) > 0 AS present_paie,
COUNT(presence_mouvements_planning.salarie_id) > 0 AS present_planning,
CASE WHEN p_salaries.matricule LIKE 'INTERIM-%' THEN true ELSE false END AS est_interimaire
FROM rh.p_salaries
JOIN rh.t_periode_paie ON true
LEFT JOIN presence_histo_paie ON
presence_histo_paie.salarie_id = p_salaries.oid AND
presence_histo_paie.mois_paie = t_periode_paie.mois_paie
LEFT JOIN presence_mouvements_planning ON
presence_mouvements_planning.salarie_id = p_salaries.oid AND
presence_mouvements_planning.mois_paie = t_periode_paie.mois_paie
GROUP BY 1,2
ORDER BY 1,2
;
INSERT INTO rh.p_presence_salaries(
salarie_id,
mois_paie,
present_paie,
present_planning,
est_interimaire
)
SELECT
salarie_id,
mois_paie,
present_paie,
present_planning,
est_interimaire
FROM presence_salaries
;
ANALYZE rh.p_presence_salaries
;
-- Aggrégation par salarié, mois, établissement, service et qualification des différents indicateurs de paie (montant_brut, montant_masse_salariale, etc)
DROP TABLE IF EXISTS sommes_mensuelles_ventilees_paie
;
CREATE TEMP TABLE sommes_mensuelles_ventilees_paie AS
SELECT
p_historique_paie.salarie_id,
p_historique_paie.mois_paie,
p_historique_paie.etablissement_id,
t_services.oid AS paie_service_id,
t_services.code AS paie_service_code,
t_services.texte AS paie_service_texte,
t_qualifications.oid AS paie_qualification_id,
t_qualifications.code AS paie_qualification_code,
t_qualifications.texte AS paie_qualification_texte,
sum(p_historique_paie.heure_contrat) AS heure_contrat,
sum(p_historique_paie.heure_payee) AS heure_payee,
sum(p_historique_paie.heure_travaillee) AS heure_travaillee,
sum(p_historique_paie.montant_brut) AS montant_brut,
sum(p_historique_paie.montant_masse_salariale) AS montant_masse_salariale,
sum(p_historique_paie.montant_cotisation_patronale) AS montant_cotisation_patronale,
sum(p_historique_paie.montant_provisions) AS montant_provisions,
sum(p_historique_paie.montant_masse_salariale_provisionnee) AS montant_masse_salariale_provisionnee,
sum(base.cti_division(p_historique_paie.heure_contrat * p_profil_contrat_mois.ratio, t_etablissements.base_calcul_etp)) AS equivalent_temps_plein
FROM rh.p_historique_paie
JOIN rh.p_contrats_mois ON p_contrats_mois.oid = p_historique_paie.contrat_mois_id
JOIN rh.p_profils ON p_profils.oid = p_contrats_mois.profil_id
JOIN rh.p_profil_contrat_mois ON p_profil_contrat_mois.contrat_mois_id = p_contrats_mois.oid AND p_profil_contrat_mois.profil_id = p_contrats_mois.profil_id
JOIN rh.t_etablissements ON t_etablissements.oid = p_historique_paie.etablissement_id
JOIN rh.t_qualifications ON t_qualifications.oid = p_profils.qualification_id
JOIN rh.t_services ON t_services.oid = p_profils.service_id
WHERE p_historique_paie.mois_paie BETWEEN min_month_to_get AND closed_payroll_month
GROUP BY p_historique_paie.salarie_id, p_historique_paie.mois_paie, p_historique_paie.etablissement_id, t_services.oid, t_qualifications.oid
;
CREATE INDEX sommes_mensuelles_ventilees_paie_i1 ON sommes_mensuelles_ventilees_paie USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_ventilees_paie_i2 ON sommes_mensuelles_ventilees_paie USING btree(mois_paie)
;
CREATE INDEX sommes_mensuelles_ventilees_paie_i3 ON sommes_mensuelles_ventilees_paie USING btree(etablissement_id)
;
ANALYZE sommes_mensuelles_ventilees_paie
;
-- Aggrégation par salarié et mois des différents indicateurs de paie (montant_brut, montant_masse_salariale, etc)
DROP TABLE IF EXISTS sommes_mensuelles_paie
;
CREATE TEMP TABLE sommes_mensuelles_paie AS
SELECT
salarie_id,
mois_paie,
sum(heure_contrat) AS heure_contrat,
sum(heure_payee) AS heure_payee,
sum(heure_travaillee) AS heure_travaillee,
sum(montant_brut) AS montant_brut,
sum(montant_masse_salariale) AS montant_masse_salariale,
sum(montant_cotisation_patronale) AS montant_cotisation_patronale,
sum(montant_provisions) AS montant_provisions,
sum(montant_masse_salariale_provisionnee) AS montant_masse_salariale_provisionnee,
sum(equivalent_temps_plein) AS equivalent_temps_plein
FROM sommes_mensuelles_ventilees_paie
GROUP BY 1,2
;
CREATE INDEX sommes_mensuelles_paie_i1 ON sommes_mensuelles_paie USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_paie_i2 ON sommes_mensuelles_paie USING btree(mois_paie)
;
ANALYZE sommes_mensuelles_paie
;
-- Aggrégation par salarié, mois, établissement, service et qualification des différents indicateurs de planning (les 3 principaux indicateurs de temps : temps_du_initial, temps_du, temps_valide)
DROP TABLE IF EXISTS sommes_mensuelles_ventilees_planning
;
CREATE TEMP TABLE sommes_mensuelles_ventilees_planning AS
SELECT
p_planning_mouvement.salarie_id,
t_periode_paie.mois_paie,
p_planning_mouvement.etablissement_id,
t_planning_service.oid AS planning_service_id,
t_planning_service.code AS planning_service_code,
t_planning_service.texte AS planning_service_texte,
t_planning_qualification.oid AS planning_qualification_id,
t_planning_qualification.code AS planning_qualification_code,
t_planning_qualification.texte AS planning_qualification_texte,
sum(p_planning_mouvement.temps_du_initial) AS temps_du_initial,
sum(p_planning_mouvement.temps_du) AS temps_du,
sum(p_planning_mouvement.temps_valide) AS temps_valide
FROM rh.p_planning_mouvement
JOIN rh.t_periode_paie ON base.cti_overlaps(t_periode_paie.date_debut, t_periode_paie.date_fin, p_planning_mouvement.date, p_planning_mouvement.date)
LEFT JOIN rh.t_planning_service ON t_planning_service.oid = p_planning_mouvement.service_id
LEFT JOIN rh.t_planning_qualification ON t_planning_qualification.oid = p_planning_mouvement.qualification_id
WHERE p_planning_mouvement.mois BETWEEN min_month_to_get AND closed_payroll_month
GROUP BY p_planning_mouvement.salarie_id, t_periode_paie.mois_paie, p_planning_mouvement.etablissement_id, t_planning_service.oid, t_planning_service.code, t_planning_service.texte, t_planning_qualification.oid, t_planning_qualification.code, t_planning_qualification.texte
;
CREATE INDEX sommes_mensuelles_ventilees_planning_i1 ON sommes_mensuelles_ventilees_planning USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_ventilees_planning_i2 ON sommes_mensuelles_ventilees_planning USING btree(mois_paie)
;
CREATE INDEX sommes_mensuelles_ventilees_planning_i3 ON sommes_mensuelles_ventilees_planning USING btree(etablissement_id)
;
ANALYZE sommes_mensuelles_ventilees_planning
;
-- Aggrégation par salarié, mois et établissement des différents indicateurs de planning (les 3 principaux indicateurs de temps : temps_du_initial, temps_du, temps_valide)
DROP TABLE IF EXISTS sommes_mensuelles_planning
;
CREATE TEMP TABLE sommes_mensuelles_planning AS
SELECT
salarie_id,
mois_paie,
etablissement_id,
sum(temps_du_initial) AS temps_du_initial,
sum(temps_du) AS temps_du,
sum(temps_valide) AS temps_valide
FROM sommes_mensuelles_ventilees_planning
GROUP BY 1,2,3
;
CREATE INDEX sommes_mensuelles_planning_i1 ON sommes_mensuelles_planning USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_planning_i2 ON sommes_mensuelles_planning USING btree(mois_paie)
;
CREATE INDEX sommes_mensuelles_planning_i3 ON sommes_mensuelles_planning USING btree(etablissement_id)
;
ANALYZE sommes_mensuelles_planning
;
INSERT INTO rh.p_sommes_mensuelles_ventilees_paie (
salarie_id,
mois_paie,
etablissement_id,
paie_service_id,
paie_service_code,
paie_service_texte,
paie_qualification_id,
paie_qualification_code,
paie_qualification_texte,
heure_contrat,
heure_payee,
heure_travaillee,
montant_brut,
montant_masse_salariale,
montant_cotisation_patronale,
montant_provisions,
montant_masse_salariale_provisionnee,
equivalent_temps_plein
)
SELECT
salarie_id,
mois_paie,
etablissement_id,
paie_service_id,
paie_service_code,
paie_service_texte,
paie_qualification_id,
paie_qualification_code,
paie_qualification_texte,
heure_contrat,
heure_payee,
heure_travaillee,
montant_brut,
montant_masse_salariale,
montant_cotisation_patronale,
montant_provisions,
montant_masse_salariale_provisionnee,
equivalent_temps_plein
FROM sommes_mensuelles_ventilees_paie
;
INSERT INTO rh.p_sommes_mensuelles_ventilees_planning (
salarie_id,
mois_paie,
etablissement_id,
planning_service_id,
planning_service_code,
planning_service_texte,
planning_qualification_id,
planning_qualification_code,
planning_qualification_texte,
temps_du_initial,
temps_du,
temps_valide
)
SELECT
salarie_id,
mois_paie,
etablissement_id,
planning_service_id,
planning_service_code,
planning_service_texte,
planning_qualification_id,
planning_qualification_code,
planning_qualification_texte,
temps_du_initial,
temps_du,
temps_valide
FROM sommes_mensuelles_ventilees_planning
;
-- Calcul du taux horaire mensuel pour chaque salarié
-- En rapport les différents indicateurs de paie (montant_brut, montant_masse_salariale, etc) au différents indicateur de planning (les 3 principaux indicateurs de temps : temps_du_initial, temps_du, temps_valide)
DROP TABLE IF EXISTS taux_horaires_mensuels
;
CREATE TEMP TABLE taux_horaires_mensuels AS
SELECT sommes_mensuelles_planning.salarie_id,
sommes_mensuelles_planning.mois_paie,
sommes_mensuelles_planning.temps_du_initial,
sommes_mensuelles_planning.temps_du,
sommes_mensuelles_planning.temps_valide,
sommes_mensuelles_paie.heure_contrat,
base.cti_division(sommes_mensuelles_paie.heure_contrat, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_heure_contrat_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.heure_contrat, sommes_mensuelles_planning.temps_du) AS taux_horaire_heure_contrat_temps_du,
base.cti_division(sommes_mensuelles_paie.heure_contrat, sommes_mensuelles_planning.temps_valide) AS taux_horaire_heure_contrat_temps_valide,
sommes_mensuelles_paie.heure_payee,
base.cti_division(sommes_mensuelles_paie.heure_payee, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_heure_payee_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.heure_payee, sommes_mensuelles_planning.temps_du) AS taux_horaire_heure_payee_temps_du,
base.cti_division(sommes_mensuelles_paie.heure_payee, sommes_mensuelles_planning.temps_valide) AS taux_horaire_heure_payee_temps_valide,
sommes_mensuelles_paie.heure_travaillee,
base.cti_division(sommes_mensuelles_paie.heure_travaillee, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_heure_travaillee_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.heure_travaillee, sommes_mensuelles_planning.temps_du) AS taux_horaire_heure_travaillee_temps_du,
base.cti_division(sommes_mensuelles_paie.heure_travaillee, sommes_mensuelles_planning.temps_valide) AS taux_horaire_heure_travaillee_temps_valide,
sommes_mensuelles_paie.montant_brut,
base.cti_division(sommes_mensuelles_paie.montant_brut, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_brut_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_brut, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_brut_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_brut, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_brut_temps_valide,
sommes_mensuelles_paie.montant_masse_salariale,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_masse_salariale_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_masse_salariale_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_masse_salariale_temps_valide,
sommes_mensuelles_paie.montant_cotisation_patronale,
base.cti_division(sommes_mensuelles_paie.montant_cotisation_patronale, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_cotisation_patronale_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_cotisation_patronale, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_cotisation_patronale_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_cotisation_patronale, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_cotisation_patronale_temps_valide,
sommes_mensuelles_paie.montant_provisions,
base.cti_division(sommes_mensuelles_paie.montant_provisions, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_provisions_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_provisions, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_provisions_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_provisions, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_provisions_temps_valide,
sommes_mensuelles_paie.montant_masse_salariale_provisionnee,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale_provisionnee, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale_provisionnee, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale_provisionnee, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
sommes_mensuelles_paie.equivalent_temps_plein,
base.cti_division(sommes_mensuelles_paie.equivalent_temps_plein, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_equivalent_temps_plein_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.equivalent_temps_plein, sommes_mensuelles_planning.temps_du) AS taux_horaire_equivalent_temps_plein_temps_du,
base.cti_division(sommes_mensuelles_paie.equivalent_temps_plein, sommes_mensuelles_planning.temps_valide) AS taux_horaire_equivalent_temps_plein_temps_valide
FROM rh.p_presence_salaries
JOIN sommes_mensuelles_planning ON
sommes_mensuelles_planning.salarie_id = p_presence_salaries.salarie_id AND
sommes_mensuelles_planning.mois_paie = p_presence_salaries.mois_paie
JOIN sommes_mensuelles_paie ON
sommes_mensuelles_paie.salarie_id = p_presence_salaries.salarie_id AND
sommes_mensuelles_paie.mois_paie = p_presence_salaries.mois_paie
WHERE p_presence_salaries.present_paie = true AND p_presence_salaries.present_planning = true AND p_presence_salaries.est_interimaire = false
;
CREATE INDEX taux_horaires_mensuels_i1 ON taux_horaires_mensuels USING btree(salarie_id)
;
CREATE INDEX taux_horaires_mensuels_i2 ON taux_horaires_mensuels USING btree(mois_paie)
;
ANALYZE taux_horaires_mensuels
;
INSERT INTO rh.p_taux_horaires_mensuels (
salarie_id,
mois_paie,
temps_du_initial,
temps_du,
temps_valide,
heure_contrat,
taux_horaire_heure_contrat_temps_du_initial,
taux_horaire_heure_contrat_temps_du,
taux_horaire_heure_contrat_temps_valide,
heure_payee,
taux_horaire_heure_payee_temps_du_initial,
taux_horaire_heure_payee_temps_du,
taux_horaire_heure_payee_temps_valide,
heure_travaillee,
taux_horaire_heure_travaillee_temps_du_initial,
taux_horaire_heure_travaillee_temps_du,
taux_horaire_heure_travaillee_temps_valide,
montant_brut,
taux_horaire_montant_brut_temps_du_initial,
taux_horaire_montant_brut_temps_du,
taux_horaire_montant_brut_temps_valide,
montant_masse_salariale,
taux_horaire_montant_masse_salariale_temps_du_initial,
taux_horaire_montant_masse_salariale_temps_du,
taux_horaire_montant_masse_salariale_temps_valide,
montant_cotisation_patronale,
taux_horaire_montant_cotisation_patronale_temps_du_initial,
taux_horaire_montant_cotisation_patronale_temps_du,
taux_horaire_montant_cotisation_patronale_temps_valide,
montant_provisions,
taux_horaire_montant_provisions_temps_du_initial,
taux_horaire_montant_provisions_temps_du,
taux_horaire_montant_provisions_temps_valide,
montant_masse_salariale_provisionnee,
taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
taux_horaire_montant_masse_salariale_provisionnee_temps_du,
taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
equivalent_temps_plein,
taux_horaire_equivalent_temps_plein_temps_du_initial,
taux_horaire_equivalent_temps_plein_temps_du,
taux_horaire_equivalent_temps_plein_temps_valide
)
SELECT
salarie_id,
mois_paie,
temps_du_initial,
temps_du,
temps_valide,
heure_contrat,
taux_horaire_heure_contrat_temps_du_initial,
taux_horaire_heure_contrat_temps_du,
taux_horaire_heure_contrat_temps_valide,
heure_payee,
taux_horaire_heure_payee_temps_du_initial,
taux_horaire_heure_payee_temps_du,
taux_horaire_heure_payee_temps_valide,
heure_travaillee,
taux_horaire_heure_travaillee_temps_du_initial,
taux_horaire_heure_travaillee_temps_du,
taux_horaire_heure_travaillee_temps_valide,
montant_brut,
taux_horaire_montant_brut_temps_du_initial,
taux_horaire_montant_brut_temps_du,
taux_horaire_montant_brut_temps_valide,
montant_masse_salariale,
taux_horaire_montant_masse_salariale_temps_du_initial,
taux_horaire_montant_masse_salariale_temps_du,
taux_horaire_montant_masse_salariale_temps_valide,
montant_cotisation_patronale,
taux_horaire_montant_cotisation_patronale_temps_du_initial,
taux_horaire_montant_cotisation_patronale_temps_du,
taux_horaire_montant_cotisation_patronale_temps_valide,
montant_provisions,
taux_horaire_montant_provisions_temps_du_initial,
taux_horaire_montant_provisions_temps_du,
taux_horaire_montant_provisions_temps_valide,
montant_masse_salariale_provisionnee,
taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
taux_horaire_montant_masse_salariale_provisionnee_temps_du,
taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
equivalent_temps_plein,
taux_horaire_equivalent_temps_plein_temps_du_initial,
taux_horaire_equivalent_temps_plein_temps_du,
taux_horaire_equivalent_temps_plein_temps_valide
FROM taux_horaires_mensuels
;
-- Calcul du taux horaire mensuel moyen par service et qualification pour chaque salarié
DROP TABLE IF EXISTS taux_horaires_mensuels_ventiles
;
CREATE TEMP TABLE taux_horaires_mensuels_ventiles AS
SELECT
p_taux_horaires_mensuels.mois_paie,
p_sommes_mensuelles_ventilees_planning.planning_service_id,
p_sommes_mensuelles_ventilees_planning.planning_qualification_id,
AVG(p_taux_horaires_mensuels.temps_du_initial) AS temps_du_initial,
AVG(p_taux_horaires_mensuels.temps_du) AS temps_du,
AVG(p_taux_horaires_mensuels.temps_valide) AS temps_valide,
AVG(p_taux_horaires_mensuels.heure_contrat) AS heure_contrat,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du_initial) AS taux_horaire_heure_contrat_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du) AS taux_horaire_heure_contrat_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_valide) AS taux_horaire_heure_contrat_temps_valide,
AVG(p_taux_horaires_mensuels.heure_payee) AS heure_payee,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du_initial) AS taux_horaire_heure_payee_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du) AS taux_horaire_heure_payee_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_valide) AS taux_horaire_heure_payee_temps_valide,
AVG(p_taux_horaires_mensuels.heure_travaillee) AS heure_travaillee,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du_initial) AS taux_horaire_heure_travaillee_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du) AS taux_horaire_heure_travaillee_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_valide) AS taux_horaire_heure_travaillee_temps_valide,
AVG(p_taux_horaires_mensuels.montant_brut) AS montant_brut,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du_initial) AS taux_horaire_montant_brut_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du) AS taux_horaire_montant_brut_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_valide) AS taux_horaire_montant_brut_temps_valide,
AVG(p_taux_horaires_mensuels.montant_masse_salariale) AS montant_masse_salariale,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du_initial) AS taux_horaire_montant_masse_salariale_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du) AS taux_horaire_montant_masse_salariale_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_valide) AS taux_horaire_montant_masse_salariale_temps_valide,
AVG(p_taux_horaires_mensuels.montant_cotisation_patronale) AS montant_cotisation_patronale,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du_initial) AS taux_horaire_montant_cotisation_patronale_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du) AS taux_horaire_montant_cotisation_patronale_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_valide) AS taux_horaire_montant_cotisation_patronale_temps_valide,
AVG(p_taux_horaires_mensuels.montant_provisions) AS montant_provisions,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du_initial) AS taux_horaire_montant_provisions_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du) AS taux_horaire_montant_provisions_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_valide) AS taux_horaire_montant_provisions_temps_valide,
AVG(p_taux_horaires_mensuels.montant_masse_salariale_provisionnee) AS montant_masse_salariale_provisionnee,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_valide) AS taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
AVG(p_taux_horaires_mensuels.equivalent_temps_plein) AS equivalent_temps_plein,
AVG(p_taux_horaires_mensuels.taux_horaire_equivalent_temps_plein_temps_du_initial) AS taux_horaire_equivalent_temps_plein_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_equivalent_temps_plein_temps_du) AS taux_horaire_equivalent_temps_plein_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_equivalent_temps_plein_temps_valide) AS taux_horaire_equivalent_temps_plein_temps_valide
FROM rh.p_sommes_mensuelles_ventilees_planning
JOIN rh.p_taux_horaires_mensuels ON
p_taux_horaires_mensuels.salarie_id = p_sommes_mensuelles_ventilees_planning.salarie_id AND
p_taux_horaires_mensuels.mois_paie = p_sommes_mensuelles_ventilees_planning.mois_paie
GROUP BY 1,2,3
;
-- Génération du croisement
-- Récupération du planning quotidien de chaque salarié auquel on multiplie les différents temps par le taux horaire (précédemment calculé) du salarié
DROP TABLE IF EXISTS croisement_paie_planning
;
CREATE TEMP TABLE croisement_paie_planning AS
-- Cas des salariés (présents dans la paie et dans le planning)
SELECT
p_planning_mouvement.oid AS planning_id,
p_presence_salaries.salarie_id,
p_planning_mouvement.date,
t_periode_paie.mois_paie,
p_planning_mouvement.etablissement_id,
p_planning_mouvement.contrat_mois_id,
'Salariés'::text AS presence_detail,
p_planning_mouvement.temps_du_initial,
p_planning_mouvement.temps_du,
p_planning_mouvement.temps_valide,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du_initial, 2) AS HEUR_CONT_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du, 2) AS HEUR_CONT_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_valide, 2) AS HEUR_CONT_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du_initial, 2) AS HEUR_PAYE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du, 2) AS HEUR_PAYE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_valide, 2) AS HEUR_PAYE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du_initial, 2) AS HEUR_TRAV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du, 2) AS HEUR_TRAV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_valide, 2) AS HEUR_TRAV_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du_initial, 2) AS MONT_BRUT_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du, 2) AS MONT_BRUT_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_valide, 2) AS MONT_BRUT_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du_initial, 2) AS MONT_MASS_SALA_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du, 2) AS MONT_MASS_SALA_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_valide, 2) AS MONT_MASS_SALA_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du_initial, 2) AS MONT_COTI_PATR_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du, 2) AS MONT_COTI_PATR_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_valide, 2) AS MONT_COTI_PATR_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du_initial, 2) AS MONT_PROV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du, 2) AS MONT_PROV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_valide, 2) AS MONT_PROV_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init, 2) AS MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du, 2) AS MONT_MASS_SALA_PROV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_valide, 2) AS MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
0::numeric AS MONT_INTE_PROR_TEMP_DU_INIT,
0::numeric AS MONT_INTE_PROR_TEMP_DU,
0::numeric AS MONT_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du_initial, 2) AS MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du, 2) AS MONT_MASS_SALA_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_valide, 2) AS MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init, 2) AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du, 2) AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_valide, 2) AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
FROM rh.p_presence_salaries
JOIN rh.t_periode_paie ON
t_periode_paie.mois_paie = p_presence_salaries.mois_paie AND
t_periode_paie.mois_paie BETWEEN min_month_to_get AND closed_payroll_month
JOIN rh.p_planning_mouvement ON
p_planning_mouvement.salarie_id = p_presence_salaries.salarie_id AND
p_planning_mouvement.date >= t_periode_paie.date_debut AND
p_planning_mouvement.date <= t_periode_paie.date_fin
JOIN rh.p_taux_horaires_mensuels ON
p_taux_horaires_mensuels.salarie_id = p_presence_salaries.salarie_id AND
p_taux_horaires_mensuels.mois_paie = p_presence_salaries.mois_paie
WHERE p_presence_salaries.present_paie = true AND p_presence_salaries.present_planning = true AND p_presence_salaries.est_interimaire = false
;
INSERT INTO croisement_paie_planning
-- Cas des intérimaires (présents au planning et ayant été détecté précédemment commes des intérimaires). Application du coefficient multiplicateur CPP_COEF_VALORISATION_INTERIM pour valoriser le coût de l'intérim
SELECT
p_planning_mouvement.oid AS planning_id,
p_presence_salaries.salarie_id,
p_planning_mouvement.date,
t_periode_paie.mois_paie,
p_planning_mouvement.etablissement_id,
p_planning_mouvement.contrat_mois_id AS contrat_mois_id,
'Intérimaires'::text AS presence_detail,
p_planning_mouvement.temps_du_initial,
p_planning_mouvement.temps_du,
p_planning_mouvement.temps_valide,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_heure_contrat_temps_du_initial, 2) * t_divers.valeur::numeric AS HEUR_CONT_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_heure_contrat_temps_du, 2) * t_divers.valeur::numeric AS HEUR_CONT_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_heure_contrat_temps_valide, 2) * t_divers.valeur::numeric AS HEUR_CONT_PROR_TEMP_VAL,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_heure_payee_temps_du_initial, 2) * t_divers.valeur::numeric AS HEUR_PAYE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_heure_payee_temps_du, 2) * t_divers.valeur::numeric AS HEUR_PAYE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_heure_payee_temps_valide, 2) * t_divers.valeur::numeric AS HEUR_PAYE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_heure_travaillee_temps_du_initial, 2) * t_divers.valeur::numeric AS HEUR_TRAV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_heure_travaillee_temps_du, 2) * t_divers.valeur::numeric AS HEUR_TRAV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_heure_travaillee_temps_valide, 2) * t_divers.valeur::numeric AS HEUR_TRAV_PROR_TEMP_VALI,
0::numeric AS MONT_BRUT_PROR_TEMP_DU_INIT,
0::numeric AS MONT_BRUT_PROR_TEMP_DU,
0::numeric AS MONT_BRUT_PROR_TEMP_VALI,
0::numeric AS MONT_MASS_SALA_PROR_TEMP_DU_INIT,
0::numeric AS MONT_MASS_SALA_PROR_TEMP_DU,
0::numeric AS MONT_MASS_SALA_PROR_TEMP_VALI,
0::numeric AS MONT_COTI_PATR_PROR_TEMP_DU_INIT,
0::numeric AS MONT_COTI_PATR_PROR_TEMP_DU,
0::numeric AS MONT_COTI_PATR_PROR_TEMP_VALI,
0::numeric AS MONT_PROV_PROR_TEMP_DU_INIT,
0::numeric AS MONT_PROV_PROR_TEMP_DU,
0::numeric AS MONT_PROV_PROR_TEMP_VALI,
0::numeric AS MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
0::numeric AS MONT_MASS_SALA_PROV_PROR_TEMP_DU,
0::numeric AS MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du_initial, 2) * t_divers.valeur::numeric AS MONT_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du, 2) * t_divers.valeur::numeric AS MONT_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_valide, 2) * t_divers.valeur::numeric AS MONT_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du_initial, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_valide, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_montant_masse_salariale_provisionnee_temps_du, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_montant_masse_salariale_provisionnee_temps_valide, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
FROM rh.p_presence_salaries
JOIN rh.t_periode_paie ON
t_periode_paie.mois_paie = p_presence_salaries.mois_paie
JOIN rh.p_planning_mouvement ON
p_planning_mouvement.salarie_id = p_presence_salaries.salarie_id AND
p_planning_mouvement.date >= t_periode_paie.date_debut AND
p_planning_mouvement.date <= t_periode_paie.date_fin
LEFT JOIN taux_horaires_mensuels_ventiles ON
taux_horaires_mensuels_ventiles.mois_paie = p_presence_salaries.mois_paie AND
taux_horaires_mensuels_ventiles.planning_service_id = p_planning_mouvement.service_id AND
taux_horaires_mensuels_ventiles.planning_qualification_id = p_planning_mouvement.qualification_id
JOIN rh.t_divers ON t_divers.code = 'CPP_COEF_VALORISATION_INTERIM'
WHERE p_presence_salaries.present_planning = true AND p_presence_salaries.est_interimaire = true
;
INSERT INTO rh.p_croisement_paie_planning (
planning_id,
salarie_id,
date,
mois_paie,
etablissement_id,
contrat_mois_id,
presence_detail,
temps_du_initial,
temps_du,
temps_valide,
HEUR_CONT_PROR_TEMP_DU_INIT,
HEUR_CONT_PROR_TEMP_DU,
HEUR_CONT_PROR_TEMP_VALI,
HEUR_PAYE_PROR_TEMP_DU_INIT,
HEUR_PAYE_PROR_TEMP_DU,
HEUR_PAYE_PROR_TEMP_VALI,
HEUR_TRAV_PROR_TEMP_DU_INIT,
HEUR_TRAV_PROR_TEMP_DU,
HEUR_TRAV_PROR_TEMP_VALI,
MONT_BRUT_PROR_TEMP_DU_INIT,
MONT_BRUT_PROR_TEMP_DU,
MONT_BRUT_PROR_TEMP_VALI,
MONT_MASS_SALA_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROR_TEMP_DU,
MONT_MASS_SALA_PROR_TEMP_VALI,
MONT_COTI_PATR_PROR_TEMP_DU_INIT,
MONT_COTI_PATR_PROR_TEMP_DU,
MONT_COTI_PATR_PROR_TEMP_VALI,
MONT_PROV_PROR_TEMP_DU_INIT,
MONT_PROV_PROR_TEMP_DU,
MONT_PROV_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
MONT_INTE_PROR_TEMP_DU_INIT,
MONT_INTE_PROR_TEMP_DU,
MONT_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
)
SELECT
planning_id,
salarie_id,
date,
mois_paie,
etablissement_id,
contrat_mois_id,
presence_detail,
temps_du_initial,
temps_du,
temps_valide,
HEUR_CONT_PROR_TEMP_DU_INIT,
HEUR_CONT_PROR_TEMP_DU,
HEUR_CONT_PROR_TEMP_VALI,
HEUR_PAYE_PROR_TEMP_DU_INIT,
HEUR_PAYE_PROR_TEMP_DU,
HEUR_PAYE_PROR_TEMP_VALI,
HEUR_TRAV_PROR_TEMP_DU_INIT,
HEUR_TRAV_PROR_TEMP_DU,
HEUR_TRAV_PROR_TEMP_VALI,
MONT_BRUT_PROR_TEMP_DU_INIT,
MONT_BRUT_PROR_TEMP_DU,
MONT_BRUT_PROR_TEMP_VALI,
MONT_MASS_SALA_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROR_TEMP_DU,
MONT_MASS_SALA_PROR_TEMP_VALI,
MONT_COTI_PATR_PROR_TEMP_DU_INIT,
MONT_COTI_PATR_PROR_TEMP_DU,
MONT_COTI_PATR_PROR_TEMP_VALI,
MONT_PROV_PROR_TEMP_DU_INIT,
MONT_PROV_PROR_TEMP_DU,
MONT_PROV_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
MONT_INTE_PROR_TEMP_DU_INIT,
MONT_INTE_PROR_TEMP_DU,
MONT_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
FROM croisement_paie_planning
;
ANALYZE rh.p_croisement_paie_planning
;
RETURN 'OK';
END

+ 289
- 0
db/schema2/functions/cti_execute_transform.yaml View File

@ -0,0 +1,289 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
-- Transformations saisies ?
IF NOT EXISTS (SELECT * FROM rh.t_transformation) THEN
RETURN 'OK. Non concerné' ;
END IF;
-- Stockage profil source
UPDATE rh.p_profil_contrat_mois
SET profil_avant_transformation_id = profil_id
WHERE profil_avant_transformation_id IS NULL OR
profil_avant_transformation_id = 0
;
-- Table de travail des profils par contrat peut être concernés
DROP TABLE IF EXISTS w_execute_transform_profils;
CREATE TEMP TABLE w_execute_transform_profils AS
SELECT p_profils.*,
salarie_id,
p_profil_contrat_mois.contrat_mois_id,
date(p_profil_contrat_mois.mois|| '01') AS date_contrat,
'0'::text AS with_transformation,
'0'::text AS est_doublon,
p_profils.oid AS from_profil_id
FROM rh.p_profils
JOIN rh.p_profil_contrat_mois ON p_profil_contrat_mois.profil_avant_transformation_id = p_profils.oid
WHERE
(
service_id IN (SELECT from_service_id FROM rh.t_transformation) OR
qualification_id IN (SELECT from_qualification_id FROM rh.t_transformation) OR
salarie_id IN (SELECT salarie_id FROM rh.t_transformation)
)
;
-- execution des règles
-- Spécifiques salarié
UPDATE w_execute_transform_profils SET
with_transformation = '1',
service_id = CASE WHEN to_service_id = -1 THEN w_execute_transform_profils.service_id ELSE to_service_id END,
qualification_id = CASE WHEN to_qualification_id = -1 THEN w_execute_transform_profils.qualification_id ELSE to_qualification_id END,
oid = nextval('rh.s_profils'::regclass)
FROM rh.t_transformation
WHERE (w_execute_transform_profils.salarie_id = t_transformation.salarie_id AND t_transformation.salarie_id <> -1) AND
(w_execute_transform_profils.service_id = from_service_id OR from_service_id = -1) AND
(w_execute_transform_profils.qualification_id = from_qualification_id OR from_qualification_id = -1) AND
date_contrat BETWEEN t_transformation.date_debut AND t_transformation.date_fin AND
(to_service_id <> -1 OR to_qualification_id <> -1)
;
-- Générales
UPDATE w_execute_transform_profils SET
with_transformation = '1',
service_id = CASE WHEN to_service_id = -1 THEN w_execute_transform_profils.service_id ELSE to_service_id END,
qualification_id = CASE WHEN to_qualification_id = -1 THEN w_execute_transform_profils.qualification_id ELSE to_qualification_id END,
oid = nextval('rh.s_profils'::regclass)
FROM rh.t_transformation
WHERE with_transformation <> '1' AND
(t_transformation.salarie_id = -1) AND
(w_execute_transform_profils.service_id = from_service_id OR from_service_id = -1) AND
(w_execute_transform_profils.qualification_id = from_qualification_id OR from_qualification_id = -1) AND
date_contrat BETWEEN t_transformation.date_debut AND t_transformation.date_fin AND
(to_service_id <> -1 OR to_qualification_id <> -1)
;
-- Traitement des profils cibles en double
DROP TABLE IF EXISTS w_execute_transform_profils_uniques;
CREATE TEMP TABLE w_execute_transform_profils_uniques AS
SELECT
w_execute_transform_profils.from_profil_id,
MIN(oid) AS oid
FROM w_execute_transform_profils
WHERE with_transformation = '1'
GROUP BY 1
HAVING count(distinct
ARRAY[type_contrat_id,
motif_debut_id,
motif_fin_id,
qualification_id,
service_id,
specialite_id,
type_temps_travail_id,
categorie_socio_professionnelle_id,
statut_id,
code_emploi_id,
societe_interim_id,
section_analytique_paie_id,
section_analytique_id,
grille_id,
grille_groupe_id,
type_horaire_id,
groupe_cotisant_id,
unite_fonctionnelle_id,
lettre_budgetaire_id,
commission_paritaire_id,
compte_salarie_id,
categorie_conge_id,
filiere_id,
cadre_emploi_id,
categorie_statutaire_id]) = 1
;
UPDATE w_execute_transform_profils
SET oid = w_execute_transform_profils_uniques.oid,
est_doublon = '1'
FROM w_execute_transform_profils_uniques
WHERE with_transformation = '1' AND
w_execute_transform_profils.from_profil_id = w_execute_transform_profils_uniques.from_profil_id AND
w_execute_transform_profils.oid <> w_execute_transform_profils_uniques.oid
;
-- Ajout des nouveaux profils
INSERT INTO rh.p_profils (
oid,
type_contrat_id,
type_contrat_code_original,
motif_debut_id,
motif_debut_code_original,
motif_fin_id,
motif_fin_code_original,
qualification_id,
qualification_code_original,
service_id,
service_code_original,
specialite_id,
specialite_code_original,
type_temps_travail_id,
type_temps_travail_code_original,
categorie_socio_professionnelle_id,
categorie_socio_professionnelle_code_original,
statut_id,
statut_code_original,
code_emploi_id,
code_emploi_code_original,
societe_interim_id,
societe_interim_code_original,
section_analytique_paie_id,
section_analytique_paie_code_original,
section_analytique_id,
section_analytique_code_original,
grille_id,
grille_code_original,
grille_groupe_id,
grille_groupe_code_original,
type_horaire_id,
type_horaire_code_original,
groupe_cotisant_id,
groupe_cotisant_code_original,
unite_fonctionnelle_id,
unite_fonctionnelle_code_original,
lettre_budgetaire_id,
lettre_budgetaire_code_original,
commission_paritaire_id,
commission_paritaire_code_original,
compte_salarie_id,
compte_salarie_code_original,
categorie_conge_id,
categorie_conge_code_original,
filiere_id,
filiere_code_original,
cadre_emploi_id,
cadre_emploi_code_original,
categorie_statutaire_id,
categorie_statutaire_code_original
)
SELECT
w_execute_transform_profils.oid,
type_contrat_id,
type_contrat_code_original,
motif_debut_id,
motif_debut_code_original,
motif_fin_id,
motif_fin_code_original,
qualification_id,
t_qualifications.code_original AS qualification_code_original,
service_id,
t_services.code_original AS service_code_original,
specialite_id,
specialite_code_original,
type_temps_travail_id,
type_temps_travail_code_original,
categorie_socio_professionnelle_id,
categorie_socio_professionnelle_code_original,
statut_id,
statut_code_original,
code_emploi_id,
code_emploi_code_original,
societe_interim_id,
societe_interim_code_original,
section_analytique_paie_id,
section_analytique_paie_code_original,
section_analytique_id,
section_analytique_code_original,
grille_id,
grille_code_original,
grille_groupe_id,
grille_groupe_code_original,
type_horaire_id,
type_horaire_code_original,
groupe_cotisant_id,
groupe_cotisant_code_original,
unite_fonctionnelle_id,
unite_fonctionnelle_code_original,
lettre_budgetaire_id,
lettre_budgetaire_code_original,
commission_paritaire_id,
commission_paritaire_code_original,
compte_salarie_id,
compte_salarie_code_original,
categorie_conge_id,
categorie_conge_code_original,
filiere_id,
filiere_code_original,
cadre_emploi_id,
cadre_emploi_code_original,
categorie_statutaire_id,
categorie_statutaire_code_original
FROM w_execute_transform_profils
JOIN rh.t_services ON service_id = t_services.oid
JOIN rh.t_qualifications On qualification_id = t_qualifications.oid
WHERE with_transformation = '1' AND
est_doublon <> '1'
;
-- Mise à jour des profils par mois
UPDATE rh.p_profil_contrat_mois
SET profil_id = w_execute_transform_profils.oid
FROM w_execute_transform_profils
WHERE p_profil_contrat_mois.contrat_mois_id = w_execute_transform_profils.contrat_mois_id AND
p_profil_contrat_mois.profil_avant_transformation_id = w_execute_transform_profils.from_profil_id AND
with_transformation = '1'
;
-- Mise à jour des contrats avec dernière valeur des profils
UPDATE rh.p_contrats
SET profil_id = new_execute_transform_profil_id
FROM
(
SELECT
p_contrats_mois.contrat_id,
(MAX(ARRAY[p_profil_contrat_mois.mois * 100 + p_profil_contrat_mois.ratio,p_profil_contrat_mois.profil_id]))[2] AS new_execute_transform_profil_id,
MAX(p_contrats.profil_id) AS old_profil_id
FROM rh.p_profil_contrat_mois
JOIN rh.p_contrats_mois ON contrat_mois_id = p_contrats_mois.oid
JOIN rh.p_contrats ON p_contrats_mois.contrat_id = p_contrats.oid
GROUP BY 1
HAVING (MAX(ARRAY[p_profil_contrat_mois.mois * 100 + p_profil_contrat_mois.ratio,p_profil_contrat_mois.profil_id]))[2] <> MAX(p_contrats.profil_id)
) subview
WHERE subview.contrat_id = p_contrats.oid
;
-- Mise à jour des salariés avec dernière valeur des profils
UPDATE rh.p_salaries
SET profil_id = new_execute_transform_profil_id
FROM
(
SELECT
p_profil_contrat_mois.salarie_id,
(MAX(ARRAY[p_profil_contrat_mois.mois * 100 + p_profil_contrat_mois.ratio,p_profil_contrat_mois.profil_id]))[2] AS new_execute_transform_profil_id,
MAX(p_salaries.profil_id) AS old_profil_id
FROM rh.p_profil_contrat_mois
JOIN rh.p_salaries ON p_profil_contrat_mois.salarie_id = p_salaries.oid
GROUP BY 1
HAVING (MAX(ARRAY[p_profil_contrat_mois.mois * 100 + p_profil_contrat_mois.ratio,p_profil_contrat_mois.profil_id]))[2] <> MAX(p_salaries.profil_id)
) subview
WHERE subview.salarie_id = p_salaries.oid
;
-- Ajout des éventuels nouveaux oids
INSERT INTO rh.p_oids (code_table, oid)
SELECT 'services', service_id
FROM rh.p_profils
WHERE service_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'services')
GROUP BY 1,2
;
INSERT INTO rh.p_oids (code_table, oid)
SELECT 'qualifications', qualification_id
FROM rh.p_profils
WHERE qualification_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'qualifications')
GROUP BY 1,2
;
-- Réorganisation des nouveaux profils créés
PERFORM rh.cti_reorganize_profils();
PERFORM rh.cti_update_schema_classes('QUA');
PERFORM rh.cti_update_schema_classes('SER');
RETURN 'OK';
END;

+ 738
- 0
db/schema2/functions/cti_expert_controle_exec_rule~bi.yaml View File

@ -0,0 +1,738 @@
return: text
lang: plpgsql
parameters:
p0:
type: bigint
name: i_expert_controle_id
src: |
DECLARE
result TEXT;
BEGIN
RAISE NOTICE '%' , 'Recuperation OPTIMISER';
DROP TABLE IF EXISTS w_dboptimizer_line;
CREATE TEMP TABLE w_dboptimizer_line(in_data text)
;
BEGIN
PERFORM base.cti_execute(
'COPY w_dboptimizer_line FROM ''' || t_settings.value || 'modules/rh/settings/RH_dboptimizer.xml'' WITH DELIMITER AS E''\02'' CSV HEADER QUOTE AS E''\01'''
,1)
FROM base.t_settings
WHERE code = 'ENVIRONMENT/DIR'
;
EXCEPTION
WHEN others THEN RETURN 'Dossier application non trouvé';
END;
DROP TABLE IF EXISTS w_dboptimizer;
CREATE TEMP TABLE w_dboptimizer AS
SELECT array_to_string(base.cti_array_accum(translate(in_data,'éêè','e')),'') AS in_data_txt
FROM w_dboptimizer_line
WHERE in_data IS NOT NULL
ORDER BY row_number() OVER()
;
DROP TABLE IF EXISTS w_dboptimizer_xml;
CREATE TEMP TABLE w_dboptimizer_xml AS
SELECT xmlroot(xmlparse(document in_data_txt), version '1.0', standalone yes) AS in_data_xml
FROM w_dboptimizer
;
DROP TABLE IF EXISTS w_dboptimizer_VIEWNAMEOPTIMIZER;
CREATE TEMP TABLE w_dboptimizer_VIEWNAMEOPTIMIZER AS
SELECT *
FROM
(
SELECT i AS VIEWNAMEOPTIMIZER_index,
(xpath('/DBOPTIMIZER/VIEWNAMEOPTIMIZER['||i||']', in_data_xml))[1] AS VIEWNAMEOPTIMIZER_path,
(xpath('/DBOPTIMIZER/VIEWNAMEOPTIMIZER['||i||']/@viewName', in_data_xml))[1]::text AS viewName,
(xpath('/DBOPTIMIZER/VIEWNAMEOPTIMIZER['||i||']/@defaultViewName', in_data_xml))[1]::text AS defaultViewName
FROM w_dboptimizer_xml
JOIN generate_series(1,100) AS i ON 1=1
) subview
WHERE VIEWNAMEOPTIMIZER_path IS NOT NULL
;
DROP TABLE IF EXISTS w_dboptimizer_LEFTJOININDICATOR;
CREATE TEMP TABLE w_dboptimizer_LEFTJOININDICATOR AS
SELECT *
FROM
(
SELECT VIEWNAMEOPTIMIZER_index,
i AS LEFTJOININDICATOR_index,
(xpath('/VIEWNAMEOPTIMIZER/LEFTJOININDICATOR['||i||']', VIEWNAMEOPTIMIZER_path))[1] AS LEFTJOININDICATOR_path,
(xpath('/VIEWNAMEOPTIMIZER/LEFTJOININDICATOR['||i||']/@leftjoin', VIEWNAMEOPTIMIZER_path))[1]::text AS leftjoin
FROM w_dboptimizer_VIEWNAMEOPTIMIZER
JOIN generate_series(1,100) AS i ON 1=1
) subview
WHERE LEFTJOININDICATOR_path IS NOT NULL
;
DROP TABLE IF EXISTS w_dboptimizer_FIELD;
CREATE TEMP TABLE w_dboptimizer_FIELD AS
SELECT *
FROM
(
SELECT VIEWNAMEOPTIMIZER_index,
LEFTJOININDICATOR_index,
i AS FIELD_index,
(xpath('/LEFTJOININDICATOR/FIELD['||i||']', LEFTJOININDICATOR_path))[1] AS FIELD_path,
(xpath('/LEFTJOININDICATOR/FIELD['||i||']/@name', LEFTJOININDICATOR_path))[1]::text AS FIELD_name
FROM w_dboptimizer_LEFTJOININDICATOR
JOIN generate_series(1,100) AS i ON 1=1
) subview
WHERE FIELD_path IS NOT NULL
;
RAISE NOTICE '%' , 'Identification indicateurs';
DROP TABLE IF EXISTS w_expert_controle_data;
CREATE TEMP TABLE w_expert_controle_data (
expert_controle_id bigint,
expert_controle_rule_id bigint,
expert_controle_rule_index bigint,
data_type text,
data_id bigint,
expert_controle_code text,
contrat_mois_data text[],
indicateur_value numeric,
date_signalement date,
etat text,
date_correction date,
date_evenement date,
data_code_original text,
texte text)
;
UPDATE rh.t_expert_controle
SET date_validite_debut =
date(
CASE start_periode
WHEN 'A0' THEN date_trunc('year',now())
WHEN 'A1' THEN date_trunc('year',now())-interval '1 year'
WHEN 'A2' THEN date_trunc('year',now())-interval '2 year'
WHEN 'M12' THEN date_trunc('month',now())-interval '12 month'
WHEN 'M24' THEN date_trunc('month',now())-interval '24 month'
ELSE date_trunc('year',now())-interval '1 year' END
)
;
-- Période par défaut
UPDATE rh.t_expert_controle
SET start_periode = 'A1'
WHERE oid = 0 AND
start_periode = ''
;
UPDATE rh.t_expert_controle
SET date_validite_debut = t_expert_controle0.date_validite_debut
FROM rh.t_expert_controle t_expert_controle0
WHERE t_expert_controle0.oid = 0 AND
t_expert_controle.oid <> 0 AND
t_expert_controle.start_periode = ''
;
DROP TABLE IF EXISTS w_indicateurs;
CREATE TEMP TABLE w_indicateurs AS
SELECT t_expert_controle.oid AS expert_controle_id,
t_expert_controle.code AS expert_controle_code,
-- GREATEST(COALESCE(t_expert_controle.date_validite_debut,'00010101'),COALESCE(t_expert_controle0.date_validite_debut,'00010101')) AS date_validite_debut,
COALESCE(t_expert_controle.date_validite_debut,'00010101') AS date_validite_debut,
t_expert_controle_rule.oid AS expert_controle_rule_id,
CASE WHEN indicateur_2_id <> 0 OR indicateur_3_id <> 0 THEN 1::bigint ELSE 0::bigint END AS expert_controle_rule_index,
t_expert_controle_rule.data_type,
CASE WHEN t_expert_controle_rule.formula <> '' THEN t_expert_controle_rule.formula ELSE '<> 0' END AS formula,
NULL::integer[] AS VIEWNAMEOPTIMIZER_index_array,
t_indicateurs.total_function,
t_indicateurs.table_name,
column_name,
t_expert_controle_rule.indicateur_condition_id,
t_expert_controle_rule.conditions_operateur AS conditions_operateur,
''::text AS sqlcmd,
''::text AS sqlresult
FROM rh.t_expert_controle
JOIN rh.t_expert_controle t_expert_controle0 ON
t_expert_controle0.oid = 0 AND
t_expert_controle0.is_active = '1'
JOIN rh.t_expert_controle_rule ON expert_controle_id = t_expert_controle.oid
JOIN rh.t_indicateurs On indicateur_id = t_indicateurs.oid
WHERE t_expert_controle.is_active = '1' AND
(
i_expert_controle_id = 0 OR
t_expert_controle.oid = i_expert_controle_id
)
;
INSERT INTO w_indicateurs
SELECT t_expert_controle.oid AS expert_controle_id,
t_expert_controle.code AS expert_controle_code,
-- GREATEST(COALESCE(t_expert_controle.date_validite_debut,'00010101'),COALESCE(t_expert_controle0.date_validite_debut,'00010101')) AS date_validite_debut,
COALESCE(t_expert_controle.date_validite_debut,'00010101') AS date_validite_debut,
t_expert_controle_rule.oid AS expert_controle_rule_id,
2::bigint AS expert_controle_rule_index,
t_expert_controle_rule.data_type,
CASE WHEN t_expert_controle_rule.formula_2 <> '' THEN t_expert_controle_rule.formula_2 ELSE '<> 0' END AS formula,
NULL::integer[] AS VIEWNAMEOPTIMIZER_index_array,
t_indicateurs.total_function,
t_indicateurs.table_name,
column_name,
t_expert_controle_rule.indicateur_condition_2_id,
t_expert_controle_rule.conditions_operateur_2 AS conditions_operateur,
''::text AS sqlcmd,
''::text AS sqlresult
FROM rh.t_expert_controle
JOIN rh.t_expert_controle t_expert_controle0 ON
t_expert_controle0.oid = 0 AND
t_expert_controle0.is_active = '1'
JOIN rh.t_expert_controle_rule ON expert_controle_id = t_expert_controle.oid
JOIN rh.t_indicateurs On indicateur_2_id = t_indicateurs.oid
WHERE t_expert_controle.is_active = '1' AND
indicateur_2_id <> 0 AND
(
i_expert_controle_id = 0 OR
t_expert_controle.oid = i_expert_controle_id
)
;
INSERT INTO w_indicateurs
SELECT t_expert_controle.oid AS expert_controle_id,
t_expert_controle.code AS expert_controle_code,
GREATEST(COALESCE(t_expert_controle.date_validite_debut,'00010101'),COALESCE(t_expert_controle0.date_validite_debut,'00010101')) AS date_validite_debut,
t_expert_controle_rule.oid AS expert_controle_rule_id,
3::bigint AS expert_controle_rule_index,
t_expert_controle_rule.data_type,
CASE WHEN t_expert_controle_rule.formula_3 <> '' THEN t_expert_controle_rule.formula_3 ELSE '<> 0' END AS formula,
NULL::integer[] AS VIEWNAMEOPTIMIZER_index_array,
t_indicateurs.total_function,
t_indicateurs.table_name,
column_name,
t_expert_controle_rule.indicateur_condition_3_id,
t_expert_controle_rule.conditions_operateur_3 AS conditions_operateur,
''::text AS sqlcmd,
''::text AS sqlresult
FROM rh.t_expert_controle
JOIN rh.t_expert_controle t_expert_controle0 ON
t_expert_controle0.oid = 0 AND
t_expert_controle0.is_active = '1'
JOIN rh.t_expert_controle_rule ON expert_controle_id = t_expert_controle.oid
JOIN rh.t_indicateurs On indicateur_3_id = t_indicateurs.oid
WHERE t_expert_controle.is_active = '1' AND
indicateur_3_id <> 0 AND
(
i_expert_controle_id = 0 OR
t_expert_controle.oid = i_expert_controle_id
)
;
-- Constitution requete SQL
UPDATE w_indicateurs
SET column_name = 'CASE WHEN ' || condition_where || ' THEN ' || column_name || ' ELSE ' || CASE WHEN total_function <> 'COUNT' THEN '0' ELSE 'NULL' END || ' END'
FROM
(
SELECT
expert_controle_rule_id,
expert_controle_rule_index,
array_to_string(
base.cti_array_accum('('||check_where||')'),
' '||MAX(conditions_operateur)||' '
) AS condition_where
FROM w_indicateurs
JOIN rh.t_indicateur_condition ON t_indicateur_condition.oid = ANY(indicateur_condition_id)
JOIN rh.t_indicateur_condition_table ON t_indicateur_condition_table.indicateur_condition_id = t_indicateur_condition.oid
WHERE check_where <> '' AND t_indicateur_condition_table.table_name NOT IN ('CALENDRIER', 'BUDGET_RH')
GROUP BY 1,2
) subview
WHERE w_indicateurs.expert_controle_rule_id = subview.expert_controle_rule_id AND
w_indicateurs.expert_controle_rule_index = subview.expert_controle_rule_index
;
UPDATE w_indicateurs
SET column_name = trim(replace('CASE WHEN (' || column_name ||') IS NOT NULL THEN 1 ELSE 0 END','DISTINCT',''))
WHERE total_function = 'COUNT'
;
UPDATE rh.t_expert_controle SET
last_execution_ok = '0',
last_execution_timestamp = now(),
last_execution_count = 0
WHERE is_active = '1' AND
(
i_expert_controle_id = 0 OR
t_expert_controle.oid = i_expert_controle_id
)
;
UPDATE w_indicateurs
SET sqlcmd =
'@INSERT INTO w_expert_controle_data
SELECT ' || expert_controle_id::text || '::bigint AS expert_controle_id, ' ||
expert_controle_rule_id::text || '::bigint AS expert_controle_rule_id, ' ||
expert_controle_rule_index::text || '::bigint AS expert_controle_rule_index,
''' ||
CASE
WHEN data_type = '' THEN table_name || 'ITM'
WHEN data_type = 'ITM' THEN table_name
WHEN data_type = 'ITMTAB' THEN table_name
ELSE data_type
END || '''::text AS data_type,'
||
CASE
WHEN data_type = '' THEN 'source_id'
WHEN data_type = 'contrat' THEN 'contrat_id'
WHEN data_type = 'paie' THEN 'contrat_mois_id'
WHEN data_type = 'ITM' AND table_name = 'v_contrats_mois_1' THEN 'contrat_mois_id'
WHEN data_type = 'ITMTAB' THEN table_name
WHEN data_type = 'salarie' THEN 'salarie_id'
ELSE '0' END ||
'::bigint AS data_id, ' ||
'''' || expert_controle_code || '''::text AS expert_controle_code,
MIN(ARRAY[date_debut_activite::text, date_fin_activite::text, contrat_code::text]) AS contrat_mois_data,
SUM(' || column_name || ')::numeric AS indicateur_value,
MAX(date(now())) AS date_signalement,
''''::text AS etat,
''20991231'' AS date_correction,
MIN(' || v_schema_settings_1.property_array[2] || ' ) AS date_evenement,
''''::text AS data_code_original,
''''::text AS texte
FROM ' || v_schema_settings_1.property_array[1] || '
#LEFTJOIN#
WHERE ' || v_schema_settings_1.property_array[2] || ' >= ''' || date_validite_debut || ''' AND ' ||
CASE WHEN formula <> '=0' THEN '( ' || column_name || ' ) ' || replace(formula,'''','''''') ELSE '1=1' END || '
GROUP BY 1,2,3,4,5 ' ||
CASE WHEN formula <> '=0' THEN 'HAVING SUM( ' || column_name || ' ) ' || replace(formula,'''','''''') ELSE '' END || '
;
'
FROM rh.v_schema_settings_1
WHERE table_name||'#1' = v_schema_settings_1.code AND
v_schema_settings_1.setting_type = 'FROM'
;
PERFORM base.cti_execute('
UPDATE w_indicateurs SET
sqlcmd = replace(sqlcmd , ''#''||viewName||''#'', defaultViewName),
VIEWNAMEOPTIMIZER_index_array = array_append(VIEWNAMEOPTIMIZER_index_array,VIEWNAMEOPTIMIZER_index)
FROM w_dboptimizer_VIEWNAMEOPTIMIZER
WHERE w_indicateurs.sqlcmd LIKE ''%#''||viewName||''#%''
',50)
;
UPDATE w_indicateurs
SET sqlcmd = replace(sqlcmd,'#LEFTJOIN#',leftjoin)
FROM
(
SELECT expert_controle_rule_id, array_to_string(base.cti_array_accum(leftjoin),chr(10)) AS leftjoin
FROM
(
SELECT expert_controle_rule_id, w_dboptimizer_LEFTJOININDICATOR.VIEWNAMEOPTIMIZER_index, w_dboptimizer_LEFTJOININDICATOR.LEFTJOININDICATOR_index,
MAX(leftjoin) AS leftjoin
FROM w_indicateurs
JOIN w_dboptimizer_LEFTJOININDICATOR ON w_dboptimizer_LEFTJOININDICATOR.VIEWNAMEOPTIMIZER_index = ANY(VIEWNAMEOPTIMIZER_index_array)
JOIN w_dboptimizer_FIELD ON
w_dboptimizer_FIELD.VIEWNAMEOPTIMIZER_index = w_dboptimizer_LEFTJOININDICATOR.VIEWNAMEOPTIMIZER_index AND
w_dboptimizer_FIELD.LEFTJOININDICATOR_index = w_dboptimizer_LEFTJOININDICATOR.LEFTJOININDICATOR_index AND
w_indicateurs.sqlcmd LIKE '% ' || field_name|| '%'
GROUP BY 1,2,3
ORDER BY 1,2,3
) subview
GROUP BY 1
) subview
WHERE w_indicateurs.expert_controle_rule_id = subview.expert_controle_rule_id
;
UPDATE w_indicateurs
SET sqlcmd = replace(sqlcmd,'#LEFTJOIN#','')
WHERE sqlcmd LIKE '%#LEFTJOIN#%'
;
RAISE NOTICE '%' , (SELECT array_to_string(base.cti_array_accum(sqlcmd),'; ') FROM w_indicateurs);
RAISE NOTICE '%' , 'Extraction donnees';
UPDATE w_indicateurs
SET sqlresult = base.cti_execute(sqlcmd,1)
;
ANALYSE w_expert_controle_data
;
RAISE NOTICE '%' , (SELECT array_to_string(base.cti_array_accum('INSERT INTO w_expert_controle_data
SELECT ' || t_expert_controle_rule.expert_controle_id || ', ' ||
t_expert_controle_rule.oid || ',
0::numeric,
data_type,
data_id,
contrat_mois_data,
expert_controle_code,
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 1 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula <> '' THEN formula ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 2 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_2 <> '' THEN formula_2 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 3 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_3 <> '' THEN formula_3 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END
,
date_signalement,
etat,
date_correction,
date_evenement,
data_code_original,
texte
FROM w_expert_controle_data
GROUP BY 1,2,3,4,5,6,7,9,10,11,12,13,14
HAVING
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 1 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula <> '' THEN formula ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 2 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_2 <> '' THEN formula_2 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 3 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_3 <> '' THEN formula_3 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END
= ' || (1 + CASE WHEN indicateur_2_id <> 0 THEN 1 ELSE 0 END + CASE WHEN indicateur_3_id <> 0 THEN 1 ELSE 0 END)::text ||'
'),'; ')
FROM rh.t_expert_controle_rule
WHERE oid IN (SELECT expert_controle_rule_id FROM w_expert_controle_data) AND
(
t_expert_controle_rule.indicateur_2_id <> 0 OR
t_expert_controle_rule.indicateur_3_id <> 0
)) ;
-- Plusieurs indicateurs dans condition ?
PERFORM base.cti_execute(
'INSERT INTO w_expert_controle_data
SELECT ' || t_expert_controle_rule.expert_controle_id || ', ' ||
t_expert_controle_rule.oid || ',
0::numeric,
data_type,
data_id,
contrat_mois_data,
expert_controle_code,
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 1 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula <> '' THEN formula ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 2 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_2 <> '' THEN formula_2 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 3 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_3 <> '' THEN formula_3 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END
,
date_signalement,
etat,
date_correction,
date_evenement,
data_code_original,
texte
FROM w_expert_controle_data
GROUP BY 1,2,3,4,5,6,7,9,10,11,12,13,14
HAVING
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 1 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula <> '' THEN formula ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 2 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_2 <> '' THEN formula_2 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END +
CASE WHEN MAX(CASE WHEN expert_controle_rule_index = 3 THEN COALESCE(indicateur_value,0) ELSE 0 END) ' || replace(CASE WHEN formula_3 <> '' THEN formula_3 ELSE '<>0' END,'''','''''') || ' THEN 1 ELSE 0 END
= ' || (1 + CASE WHEN indicateur_2_id <> 0 THEN 1 ELSE 0 END + CASE WHEN indicateur_3_id <> 0 THEN 1 ELSE 0 END)::text ||'
',1)
FROM rh.t_expert_controle_rule
WHERE oid IN (SELECT expert_controle_rule_id FROM w_expert_controle_data) AND
(
t_expert_controle_rule.indicateur_2_id <> 0 OR
t_expert_controle_rule.indicateur_3_id <> 0
)
;
DELETE FROM w_expert_controle_data
WHERE expert_controle_rule_index > 0
;
UPDATE rh.t_expert_controle_rule
SET last_execution_result = CASE WHEN sqlresult NOT LIKE 'OK%' THEN sqlresult ELSE 'OK' END
FROM w_indicateurs
WHERE w_indicateurs.expert_controle_rule_id = t_expert_controle_rule.oid
;
UPDATE rh.t_expert_controle
SET last_execution_ok = subview.execution_ok
FROM
(
SELECT expert_controle_id,
MIN(CASE WHEN last_execution_result LIKE 'KO%' THEN '0' ELSE '1' END) AS execution_ok
FROM rh.t_expert_controle_rule
WHERE indicateur_id <> 0
GROUP BY 1
) subview
WHERE expert_controle_id = t_expert_controle.oid
;
UPDATE rh.t_expert_controle
SET last_execution_count = subview.nb
FROM
(
SELECT expert_controle_id,
count(*) AS nb
FROM w_expert_controle_data
GROUP BY 1
) subview
WHERE expert_controle_id = t_expert_controle.oid
;
ANALYSE w_expert_controle_data
;
-- Identifiants des tables
if 1<>1 then
PERFORM base.cti_execute('@UPDATE w_expert_controle_data SET
data_code_original = t_source.code_original, texte = ''' || t_listes_tables.texte || ' '' || t_source.texte || '' ('' || t_source.code || '')''
FROM rh.' || t_listes_tables.name || ' t_source
WHERE data_type = ''' || t_listes_tables.code || ''' AND t_source.oid = data_id
',1)
FROM rh.t_listes_tables
WHERE t_listes_tables.code <> 'salarie' AND
t_listes_tables.code IN (SELECT data_type FROM w_expert_controle_data)
;
PERFORM base.cti_execute('@UPDATE w_expert_controle_data SET
data_code_original = t_source.code_original, texte = ''Séjour '' || t_source.no_salarie
FROM rh.' || t_listes_tables.name || ' t_source
WHERE data_type = ''' || t_listes_tables.code || ''' AND t_source.oid = data_id
',1)
FROM rh.t_listes_tables
WHERE t_listes_tables.code = 'salarie' AND
t_listes_tables.code IN (SELECT data_type FROM w_expert_controle_data)
;
end if;
-- Identifiants des items
UPDATE w_expert_controle_data SET
data_code_original = p_contrats.code_original,
texte = 'Contrat ' ||
numero_contrat ||
' du ' || to_char(p_contrats.date_debut,'DD/MM/YYYY') ||
' au ' || to_char(p_contrats.date_fin,'DD/MM/YYYY')
FROM rh.p_contrats_mois
JOIN rh.p_contrats ON p_contrats_mois.contrat_id = p_contrats.oid
WHERE data_type IN ('contrat', 'salarie') AND
p_contrats_mois.date_debut = w_expert_controle_data.contrat_mois_data[1] AND
p_contrats_mois.date_fin = w_expert_controle_data.contrat_mois_data[2] AND
p_contrats.numero_contrat = w_expert_controle_data.contrat_mois_data[3]
;
UPDATE w_expert_controle_data SET
data_code_original = p_contrats.code_original || to_char(p_contrats_mois.date_fin,'YYYYMMDD'),
texte = 'Contrat ' ||
p_contrats.numero_contrat ||
'Paie du ' || to_char(p_contrats_mois.date_debut,'DD/MM/YYYY') ||
' au ' || to_char(p_contrats_mois.date_fin,'DD/MM/YYYY')
FROM rh.p_contrats_mois
JOIN rh.p_contrats ON p_contrats_mois.contrat_id = p_contrats.oid
WHERE data_type = 'paie' AND
p_contrats_mois.date_debut = w_expert_controle_data.contrat_mois_data[1] AND
p_contrats_mois.date_fin = w_expert_controle_data.contrat_mois_data[2] AND
p_contrats.numero_contrat = w_expert_controle_data.contrat_mois_data[3]
;
-- Actualisation des oid des tables
if 1<>1 then
PERFORM base.cti_execute('@UPDATE rh.p_expert_controle_data SET
data_id = t_source.oid
FROM rh.' || t_listes_tables.name || ' t_source
WHERE data_type = ''' || t_listes_tables.code || ''' AND
data_code_original = t_source.code_original AND
data_id <> t_source.oid
',1)
FROM rh.t_listes_tables
WHERE t_listes_tables.code IN (SELECT data_type FROM rh.p_expert_controle_data)
;
end if;
-- Corrigé si erreur a disparu
UPDATE rh.p_expert_controle_data SET
etat = 'T',
date_correction = date(now())
WHERE etat = '' AND
expert_controle_id NOT IN (SELECT t_expert_controle.oid FROM rh.t_expert_controle WHERE t_expert_controle.oid > 0 AND last_execution_ok <> '1') AND
(
i_expert_controle_id = 0 OR
p_expert_controle_data.expert_controle_id = i_expert_controle_id
) AND
p_expert_controle_data.expert_controle_id::text||'#'||p_expert_controle_data.data_type||'#'||p_expert_controle_data.data_id::text
NOT IN (SELECT w_expert_controle_data.expert_controle_id::text||'#'||w_expert_controle_data.data_type||'#'||w_expert_controle_data.data_id FROM w_expert_controle_data)
;
-- L'erreur réapparait aprés avoir disparu, réactivation
UPDATE rh.p_expert_controle_data SET
etat = '',
date_correction = '20991231'
WHERE etat = 'T' AND
(
i_expert_controle_id = 0 OR
p_expert_controle_data.expert_controle_id = i_expert_controle_id
) AND
p_expert_controle_data.expert_controle_id::text||'#'||p_expert_controle_data.data_type||'#'||p_expert_controle_data.data_id::text
IN (SELECT w_expert_controle_data.expert_controle_id::text||'#'||w_expert_controle_data.data_type||'#'||w_expert_controle_data.data_id FROM w_expert_controle_data)
;
INSERT INTO rh.p_expert_controle_data(
expert_controle_id,
date_item,
date_signalement,
etat,
date_evenement,
date_correction,
contrat_mois_data,
data_type,
data_id,
data_code_original,
texte,
nb_cree,
nb_portee,
nb_cloture
)
SELECT
expert_controle_id,
date_signalement AS date_item,
date_signalement,
etat,
date_evenement,
date_correction,
contrat_mois_data,
data_type,
data_id,
data_code_original,
texte,
1::numeric AS nb_cree,
0::numeric AS nb_portee,
0::numeric AS nb_cloture
FROM w_expert_controle_data
WHERE (w_expert_controle_data.expert_controle_id::text||'#'||w_expert_controle_data.data_type||'#'||w_expert_controle_data.data_id)
NOT IN (SELECT p_expert_controle_data.expert_controle_id::text||'#'||p_expert_controle_data.data_type||'#'||p_expert_controle_data.data_id FROM rh.p_expert_controle_data)
;
ANALYSE rh.p_expert_controle_data
;
DELETE FROM rh.p_expert_controle_data
WHERE expert_controle_id IN (SELECT oid FROM rh.t_expert_controle WHERE is_active <> '1')
;
DELETE FROM rh.p_expert_controle_data
WHERE nb_cree = 0
;
UPDATE rh.p_expert_controle_data
SET expert_controle_data_id = oid
WHERE expert_controle_data_id <> oid
;
INSERT INTO rh.p_expert_controle_data
(
oid,
expert_controle_data_id,
expert_controle_id,
date_item,
date_signalement,
etat,
date_evenement,
date_correction,
contrat_mois_data,
data_type,
data_id,
data_code_original,
texte,
nb_cree,
nb_portee,
nb_cloture
)
SELECT
0::bigint AS oid,
expert_controle_data_id,
expert_controle_id,
date_evenement AS date_item,
date_signalement,
etat,
date_evenement,
date_correction,
contrat_mois_data,
data_type,
data_id,
data_code_original,
texte,
0::bigint AS nb_cree,
1::bigint AS nb_portee,
0::bigint AS nb_cloture
FROM rh.p_expert_controle_data
WHERE nb_cree = 1 AND
date_evenement <> '20991231'
;
INSERT INTO rh.p_expert_controle_data
(
oid,
expert_controle_data_id,
expert_controle_id,
date_item,
date_signalement,
etat,
date_evenement,
date_correction,
contrat_mois_data,
data_type,
data_id,
data_code_original,
texte,
nb_cree,
nb_portee,
nb_cloture
)
SELECT
0::bigint AS oid,
expert_controle_data_id,
expert_controle_id,
date_correction AS date_item,
date_signalement,
etat,
date_evenement,
date_correction,
contrat_mois_data,
data_type,
data_id,
data_code_original,
texte,
0::bigint AS nb_cree,
0::bigint AS nb_portee,
1::bigint AS nb_cloture
FROM rh.p_expert_controle_data
WHERE nb_cree = 1 AND
date_correction <> '20991231'
;
ANALYSE rh.p_expert_controle_data
;
UPDATE rh.t_expert_controle
SET last_execution_count = subview.nb
FROM
(
SELECT t_expert_controle.oid,
count(p_expert_controle_data.expert_controle_id) AS nb
FROM rh.t_expert_controle
LEFT JOIN rh.p_expert_controle_data ON
expert_controle_id = t_expert_controle.oid AND
nb_cree = 1 AND
date_correction = '20991231'
GROUP BY 1
) subview
WHERE t_expert_controle.oid = subview.oid AND
last_execution_count <> subview.nb
;
RETURN 'OK';
END;

+ 256
- 0
db/schema2/functions/cti_fusion_salaries.yaml View File

@ -0,0 +1,256 @@
return: text
lang: plpgsql
src: |
DECLARE
_sqlcmd TEXT;
result TEXT;
BEGIN
-- Initialisation du nouveau champ
UPDATE rh.p_salaries
SET salarie_fusionne_id = 0
WHERE salarie_fusionne_id IS NULL;
UPDATE rh.p_salaries
SET salarie_fusionne_id = 0
WHERE salarie_fusionne_id <> 0 AND
salarie_fusionne_id NOT IN (SELECT oid FROM rh.p_salaries);
-- Paramétrés
INSERT INTO rh.t_divers (code, texte, valeur, description)
SELECT
'FUSIONSALARIE',
'Fusion des salariés',
'0',
'1 = Fusion des salariés activée'
WHERE 'FUSIONSALARIE' NOT IN (SELECT code FROM rh.t_divers);
IF NOT EXISTS (SELECT *
FROM rh.t_divers
WHERE t_divers.code = 'FUSIONSALARIE' AND
t_divers.valeur = '1'
LIMIT 1) THEN
return 'Fusion non activée';
END IF;
-- Stockage des salaries par nom
DROP TABLE IF EXISTS w_fusion_salaries;
CREATE TEMP TABLE w_fusion_salaries AS
SELECT *,
'0'::text AS origine,
base.cti_soundex_nom(nom) AS nom_soundex,
base.cti_soundex_prenom(prenom) AS prenom_soundex
FROM rh.p_salaries
WHERE nom <> '' AND
(nom_naissance = nom OR nom_naissance = '') AND
oid IN (SELECT salarie_id FROM rh.p_contrats);
-- Stockage des salaries par nom de naissance
INSERT INTO w_fusion_salaries
SELECT *,
'1'::text AS origine,
base.cti_soundex_nom(nom_naissance) AS nom_soundex,
base.cti_soundex_prenom(prenom) AS prenom_soundex
FROM rh.p_salaries
WHERE nom <> '' AND
nom_naissance <> '' AND
nom_naissance <> nom AND
oid IN (SELECT salarie_id FROM rh.p_contrats);
-- Détection salariés à regrouper et regrouper sur le plus récent
UPDATE rh.p_salaries
SET salarie_fusionne_id = CASE WHEN p_salaries.oid <> subview.salarie_fusionne_id THEN subview.salarie_fusionne_id ELSE 0 END
FROM
(
SELECT
w_fusion_salaries.oid,
subview.salarie_fusionne_id,
w_fusion_salaries.entreprise_id,
w_fusion_salaries.nom_soundex,
w_fusion_salaries.prenom_soundex,
w_fusion_salaries.date_naissance,
w_fusion_salaries.sexe
FROM w_fusion_salaries
JOIN
(
SELECT
entreprise_id,
nom_soundex,
prenom_soundex,
date_naissance,
sexe,
count(*) AS nb,
(MAX(ARRAY[date_debut::text,oid::text]))[2]::bigint AS salarie_fusionne_id,
base.cti_array_accum(w_fusion_salaries.oid) AS salaries_array
FROM w_fusion_salaries
GROUP BY 1,2,3,4,5
HAVING count(*) > 1
) subview ON
w_fusion_salaries.oid = ANY(salaries_array)
ORDER BY 1,2,3,4,5,6
) subview
WHERE subview.oid = p_salaries.oid
;
-- Mise à jour du salarié cible
UPDATE rh.p_salaries SET
date_debut = subview.date_debut,
date_fin = subview.date_fin,
date_entree_ets = subview.date_entree_ets,
date_entree_fp = subview.date_entree_fp,
date_entree_fph = subview.date_entree_fph,
date_sortie_ets = subview.date_sortie_ets
FROM
(
SELECT
CASE WHEN salarie_fusionne_id <> 0 THEN salarie_fusionne_id ELSE oid END,
MIN(date_debut) AS date_debut,
MAX(date_fin) AS date_fin,
MIN(date_entree_ets) AS date_entree_ets,
MIN(date_entree_fp) AS date_entree_fp,
MIN(date_entree_fph) AS date_entree_fph,
MAX(date_sortie_ets) AS date_sortie_ets
FROM rh.p_salaries
GROUP BY 1
HAVING COUNT(*) > 1
) subview
WHERE p_salaries.oid = subview.oid;
-- Mise à jour référence salarié dans contrats
UPDATE rh.p_contrats
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_contrats.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> salarie_id;
UPDATE rh.p_contrats
SET salarie_remplace_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_contrats.salarie_remplace_id <> 0 AND
p_contrats.salarie_remplace_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> salarie_remplace_id;
--fusion ancienneté sans prendre en compte l'entreprise
INSERT INTO rh.t_divers (code, texte, valeur, description)
SELECT
'FUSIONENTREESALARIE',
'Fusion des dates entrées salariés (quelque soit entreprise)',
'0',
'1 = Fusion des dates entrée salariés activée'
WHERE 'FUSIONENTREESALARIE' NOT IN (SELECT code FROM rh.t_divers);
-- Mise à jour du salarié cible
UPDATE rh.p_salaries SET
date_entree_ets = subview.date_entree_ets
FROM
(
SELECT
w_fusion_salaries.nom_soundex,
w_fusion_salaries.prenom_soundex,
w_fusion_salaries.date_naissance,
w_fusion_salaries.sexe,
(MAX(ARRAY[date_debut::text,oid::text]))[2]::bigint AS salarie_fusionne_id,
base.cti_array_accum(w_fusion_salaries.oid) AS salaries_array,
MIN(date_debut) AS date_debut,
MAX(date_fin) AS date_fin,
MIN(date_entree_ets) AS date_entree_ets,
MIN(date_entree_fp) AS date_entree_fp,
MIN(date_entree_fph) AS date_entree_fph,
MAX(date_sortie_ets) AS date_sortie_ets
FROM w_fusion_salaries
GROUP BY 1,2,3,4
HAVING COUNT(*) > 1
) subview
WHERE p_salaries.oid = ANY(salaries_array)
AND (SELECT valeur = 1 FROM rh.t_divers WHERE code = 'FUSIONENTREESALARIE');
UPDATE rh.p_contrats SET
anciennete_anterieure_jours = subview.anciennete_anterieure_jours,
anciennete_anterieure_calculee_mois = subview.anciennete_anterieure_calculee_mois
FROM
(
SELECT p_contrats.oid,
SUM(p_contrats_anterieurs.date_fin-p_contrats_anterieurs.date_debut+1) AS anciennete_anterieure_jours,
floor(SUM(p_contrats_anterieurs.date_fin-p_contrats_anterieurs.date_debut+1)/30.00) AS anciennete_anterieure_calculee_mois
FROM rh.p_contrats
JOIN rh.p_contrats p_contrats_anterieurs ON
p_contrats_anterieurs.salarie_id = p_contrats.salarie_id AND
p_contrats_anterieurs.etablissement_id = p_contrats.etablissement_id AND
p_contrats_anterieurs.date_debut < p_contrats.date_debut
WHERE p_contrats.salarie_id <> 0 AND
p_contrats.salarie_id IN (SELECT salarie_fusionne_id FROM rh.p_salaries)
GROUP BY 1
) subview
WHERE p_contrats.oid = subview.oid;
-- Mise à jour référence salarié dans contrats mois
UPDATE rh.p_contrats_mois
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_contrats_mois.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_contrats_mois.salarie_id;
UPDATE rh.p_contrats_mois SET
anciennete_jours = p_contrats_mois.date_fin - p_contrats.date_debut + 1 + p_contrats.anciennete_anterieure_jours,
anciennete_mois = floor((p_contrats_mois.date_fin - p_contrats.date_debut + 1 + p_contrats.anciennete_anterieure_jours)/30.00),
anciennete_annee_id = floor((p_contrats_mois.date_fin - p_contrats.date_debut + 1 + p_contrats.anciennete_anterieure_jours)/365.25),
nombre_entrees = CASE WHEN date_entree_ets BETWEEN p_contrats_mois.date_debut AND p_contrats_mois.date_fin THEN 1 ELSE 0 END
FROM rh.p_contrats
JOIN rh.p_salaries ON p_contrats.salarie_id = p_salaries.oid
WHERE p_contrats_mois.contrat_id = p_contrats.oid AND
p_contrats.salarie_id IN (SELECT salarie_fusionne_id FROM rh.p_salaries)
;
UPDATE rh.p_contrats_mois
SET nombre_entrees = 0
FROM
(SELECT salarie_id, (MIN(Array[date_debut::text, oid::text]))[2] AS oid_ok FROM rh.p_contrats_mois WHERE nombre_entrees = 1 GROUP BY 1 HAVING count(*) > 1) subview
WHERE p_contrats_mois.salarie_id = subview.salarie_id AND
p_contrats_mois.nombre_entrees = 1 AND
p_contrats_mois.oid <> oid_ok
;
UPDATE rh.p_profil_contrat_mois
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_profil_contrat_mois.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_profil_contrat_mois.salarie_id;
-- Mise à jour référence salarié dans autres tables
UPDATE rh.p_historique_paie
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_historique_paie.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_historique_paie.salarie_id;
UPDATE rh.p_accident_travail
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_accident_travail.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_accident_travail.salarie_id;
UPDATE rh.p_arrets_travail
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_arrets_travail.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_arrets_travail.salarie_id;
UPDATE rh.p_arrets_travail_mois
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_arrets_travail_mois.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_arrets_travail_mois.salarie_id;
UPDATE rh.p_formations
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_formations.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_formations.salarie_id;
UPDATE rh.p_handicap
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_handicap.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_handicap.salarie_id;
UPDATE rh.p_visites_medicales
SET salarie_id = p_salaries.salarie_fusionne_id
FROM rh.p_salaries
WHERE p_visites_medicales.salarie_id = p_salaries.oid AND
salarie_fusionne_id <> 0 AND
salarie_fusionne_id <> p_visites_medicales.salarie_id;
RETURN 'OK';
END;

+ 53
- 0
db/schema2/functions/cti_gen_data_profile_views.yaml View File

@ -0,0 +1,53 @@
return: text
lang: plpgsql
src: |
DECLARE
_cursor refcursor;
_sqlcmd text;
_todataprofile text;
_schema text;
result TEXT;
BEGIN
-- Suppression des profils inexistants
_sqlcmd = 'SELECT substr(nspname,17)
FROM pg_namespace
WHERE substr(nspname,1,16) = ''rh_data_profile_'' AND
LOWER(substr(nspname,17)) NOT IN (SELECT LOWER(t_data_profile.code) FROM rh.t_data_profile) '
;
OPEN _cursor FOR EXECUTE _sqlcmd;
FETCH _cursor INTO _todataprofile;
WHILE FOUND LOOP
BEGIN
RAISE NOTICE 'Suppression du data_profile %', _todataprofile;
EXECUTE 'SELECT base.cti_perform_hors_transaction(''SELECT rh.cti_gen_data_profile_views('''''||_todataprofile||''''')'')';
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , 'SELECT base.cti_perform_hors_transaction(''SELECT rh.cti_gen_data_profile_views('''''||_todataprofile||''''')'')';
END;
FETCH _cursor INTO _todataprofile;
END LOOP;
CLOSE _cursor;
-- Pour chaque data_profile défini, appeler rh.cti_gen_data_profile_views(_in_data_profile_code)
-- Lister les _in_data_profile_code
_sqlcmd = 'SELECT t_data_profile.code
FROM rh.t_data_profile
WHERE t_data_profile.code <> '''' '
;
OPEN _cursor FOR EXECUTE _sqlcmd;
FETCH _cursor INTO _todataprofile;
WHILE FOUND LOOP
BEGIN
RAISE NOTICE 'Traitement du data_profile %', _todataprofile;
EXECUTE 'SELECT base.cti_perform_hors_transaction(''SELECT rh.cti_gen_data_profile_views('''''||_todataprofile||''''')'')';
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , 'SELECT base.cti_perform_hors_transaction(''SELECT rh.cti_gen_data_profile_views('''''||_todataprofile||''''')'')';
END;
FETCH _cursor INTO _todataprofile;
END LOOP;
CLOSE _cursor;
return 'OK';
END;

+ 410
- 0
db/schema2/functions/cti_gen_data_profile_views~tx.yaml View File

@ -0,0 +1,410 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: _in_data_profile_code
src: |
DECLARE
_cursor refcursor;
_toschema text;
_sqlcmd text;
_sqlobject text;
_data_profile_code text;
_tosqlcmd text;
_tosqlcmd_deja text;
_tosqlcmd_base text;
result TEXT;
BEGIN
-- Suppression si inexistant
IF _in_data_profile_code <> '' AND
EXISTS (SELECT nspname
FROM pg_namespace
WHERE LOWER(nspname) = LOWER('rh_data_profile_' || _in_data_profile_code) AND
LOWER(substr(nspname,17)) NOT IN (SELECT LOWER(t_data_profile.code) FROM rh.t_data_profile)
)
THEN
RAISE NOTICE 'Suppression %', 'rh_data_profile_' || _in_data_profile_code;
BEGIN
EXECUTE 'DROP SCHEMA rh_data_profile_' || _in_data_profile_code || ' CASCADE';
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , 'DROP SCHEMA ' || 'rh_data_profile_' || _in_data_profile_code || ' CASCADE';
END;
return 'OK';
END IF;
-- Traitement des listes pour être bien interprétées par string_to_array
UPDATE rh.t_data_profile
SET etablissement_inclus = trim(etablissement_inclus);
UPDATE rh.t_data_profile
SET etablissement_inclus = replace(etablissement_inclus,' ,',',')
WHERE etablissement_inclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET etablissement_inclus = replace(etablissement_inclus,' ,',',')
WHERE etablissement_inclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET etablissement_inclus = replace(etablissement_inclus,', ',',')
WHERE etablissement_inclus LIKE '%, %';
UPDATE rh.t_data_profile
SET etablissement_inclus = replace(etablissement_inclus,', ',',')
WHERE etablissement_inclus LIKE '%, %';
UPDATE rh.t_data_profile
SET etablissement_exclus = trim(etablissement_exclus);
UPDATE rh.t_data_profile
SET etablissement_exclus = replace(etablissement_exclus,' ,',',')
WHERE etablissement_exclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET etablissement_exclus = replace(etablissement_exclus,' ,',',')
WHERE etablissement_exclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET etablissement_exclus = replace(etablissement_exclus,', ',',')
WHERE etablissement_exclus LIKE '%, %';
UPDATE rh.t_data_profile
SET etablissement_exclus = replace(etablissement_exclus,', ',',')
WHERE etablissement_exclus LIKE '%, %';
UPDATE rh.t_data_profile
SET service_inclus = trim(service_inclus);
UPDATE rh.t_data_profile
SET service_inclus = replace(service_inclus,' ,',',')
WHERE service_inclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET service_inclus = replace(service_inclus,' ,',',')
WHERE service_inclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET service_inclus = replace(service_inclus,', ',',')
WHERE service_inclus LIKE '%, %';
UPDATE rh.t_data_profile
SET service_inclus = replace(service_inclus,', ',',')
WHERE service_inclus LIKE '%, %';
UPDATE rh.t_data_profile
SET service_exclus = trim(service_exclus);
UPDATE rh.t_data_profile
SET service_exclus = replace(service_exclus,' ,',',')
WHERE service_exclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET service_exclus = replace(service_exclus,' ,',',')
WHERE service_exclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET service_exclus = replace(service_exclus,', ',',')
WHERE service_exclus LIKE '%, %';
UPDATE rh.t_data_profile
SET service_exclus = replace(service_exclus,', ',',')
WHERE service_exclus LIKE '%, %';
UPDATE rh.t_data_profile
SET statut_inclus = trim(statut_inclus);
UPDATE rh.t_data_profile
SET statut_inclus = replace(statut_inclus,' ,',',')
WHERE statut_inclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET statut_inclus = replace(statut_inclus,' ,',',')
WHERE statut_inclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET statut_inclus = replace(statut_inclus,', ',',')
WHERE statut_inclus LIKE '%, %';
UPDATE rh.t_data_profile
SET statut_inclus = replace(statut_inclus,', ',',')
WHERE statut_inclus LIKE '%, %';
UPDATE rh.t_data_profile
SET statut_exclus = trim(statut_exclus);
UPDATE rh.t_data_profile
SET statut_exclus = replace(statut_exclus,' ,',',')
WHERE statut_exclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET statut_exclus = replace(statut_exclus,' ,',',')
WHERE statut_exclus LIKE '% ,%';
UPDATE rh.t_data_profile
SET statut_exclus = replace(statut_exclus,', ',',')
WHERE statut_exclus LIKE '%, %';
UPDATE rh.t_data_profile
SET statut_exclus = replace(statut_exclus,', ',',')
WHERE statut_exclus LIKE '%, %';
-- Génération des oids sur les profils
UPDATE rh.t_data_profile
SET service_id_array = subview.service_id_array
FROM
(
SELECT
t_data_profile.oid,
base.cti_array_accum(t_services.oid) AS service_id_array
FROM rh.t_data_profile
LEFT JOIN rh.t_services ON (t_services.code LIKE ANY(string_to_array(replace(t_data_profile.service_inclus,'*','%'),',')) OR t_data_profile.service_inclus = '' OR t_data_profile.service_inclus IS NULL)
LEFT JOIN rh.t_services t_services_exclus ON t_data_profile.service_exclus <> '' AND
t_services_exclus.code LIKE ANY(string_to_array(replace(t_data_profile.service_exclus,'*','%'),',')) AND
t_services.oid = t_services_exclus.oid
WHERE t_services_exclus.oid IS NULL
GROUP BY 1
)subview
WHERE subview.oid = t_data_profile.oid
;
UPDATE rh.t_data_profile
SET statut_id_array = subview.statut_id_array
FROM
(
SELECT
t_data_profile.oid,
base.cti_array_accum(t_statuts.oid) AS statut_id_array
FROM rh.t_data_profile
LEFT JOIN rh.t_statuts ON (t_statuts.code LIKE ANY(string_to_array(replace(t_data_profile.statut_inclus,'*','%'),',')) OR t_data_profile.statut_inclus = '' OR t_data_profile.statut_inclus IS NULL)
LEFT JOIN rh.t_statuts t_statuts_exclus ON t_data_profile.statut_exclus <> '' AND
t_statuts_exclus.code LIKE ANY(string_to_array(replace(t_data_profile.statut_exclus,'*','%'),',')) AND
t_statuts.oid = t_statuts_exclus.oid
WHERE t_statuts_exclus.oid IS NULL
GROUP BY 1
)subview
WHERE subview.oid = t_data_profile.oid
;
UPDATE rh.t_data_profile
SET etablissement_id_array = subview.etablissement_id_array
FROM
(
SELECT
t_data_profile.oid,
base.cti_array_accum(t_etablissements.oid) AS etablissement_id_array
FROM rh.t_data_profile
LEFT JOIN rh.t_etablissements ON (t_etablissements.code LIKE ANY(string_to_array(replace(t_data_profile.etablissement_inclus,'*','%'),',')) OR t_data_profile.etablissement_inclus = '' OR t_data_profile.etablissement_inclus IS NULL)
LEFT JOIN rh.t_etablissements t_etablissements_exclus ON t_data_profile.etablissement_exclus <> '' AND
t_etablissements_exclus.code LIKE ANY(string_to_array(replace(t_data_profile.etablissement_exclus,'*','%'),',')) AND
t_etablissements.oid = t_etablissements_exclus.oid
WHERE t_etablissements_exclus.oid IS NULL
GROUP BY 1
)subview
WHERE subview.oid = t_data_profile.oid
;
-- Actualisation des schémas
DROP TABLE IF EXISTS w_tables;
CREATE TEMP TABLE w_tables AS
SELECT schemaname, tablename
FROM pg_tables
WHERE schemaname LIKE 'rh%' AND
tablename IN ('p_oids','p_indicateurs_cumules');
DROP TABLE IF EXISTS w_views;
CREATE TEMP TABLE w_views AS
SELECT schemaname, viewname, definition
FROM pg_views
WHERE schemaname LIKE 'rh%';
-- création des schémas
_sqlcmd = 'SELECT t_data_profile.code,
''CREATE SCHEMA IF NOT EXISTS rh_DATA_PROFILE_'' || t_data_profile.code
FROM rh.t_data_profile
WHERE 1=1
AND CASE WHEN trim('''||_in_data_profile_code||''') = '''' THEN true ELSE t_data_profile.code = trim('''||_in_data_profile_code||''') END
AND t_data_profile.code <> ''''';
OPEN _cursor FOR
EXECUTE _sqlcmd;
FETCH _cursor INTO _sqlobject, _tosqlcmd;
WHILE FOUND LOOP
BEGIN
--RAISE NOTICE 'Schema = %',_sqlobject;
--RAISE NOTICE 'SQL %' , substr(_tosqlcmd,1,100);
EXECUTE _tosqlcmd;
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , _tosqlcmd;
END;
FETCH _cursor INTO _sqlobject, _tosqlcmd;
END LOOP;
CLOSE _cursor;
-- création des fichiers OIDS
_sqlcmd = 'SELECT from_tablename,
''CREATE TABLE rh_DATA_PROFILE_'' || dataprofile_code || ''.'' || from_tablename || '' AS
SELECT *
FROM rh.'' || from_tablename || ''
LIMIT 0''
FROM
(
SELECT ''p_oids'' AS from_tablename, t_data_profile.code AS dataprofile_code FROM rh.t_data_profile
UNION
SELECT ''p_indicateurs_cumules'' AS from_tablename, t_data_profile.code AS dataprofile_code FROM rh.t_data_profile
) subview
LEFT JOIN w_tables ON tablename = from_tablename AND
schemaname ILIKE ''rh_DATA_PROFILE_'' || dataprofile_code
WHERE tablename IS NULL';
OPEN _cursor FOR
EXECUTE _sqlcmd;
FETCH _cursor INTO _sqlobject, _tosqlcmd;
WHILE FOUND LOOP
BEGIN
--RAISE NOTICE 'Schema = %',_sqlobject;
--RAISE NOTICE 'SQL %' , substr(_tosqlcmd,1,100);
EXECUTE _tosqlcmd;
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , _tosqlcmd;
END;
FETCH _cursor INTO _sqlobject, _tosqlcmd;
END LOOP;
CLOSE _cursor;
-- recréation des vues dans un schema utilisateur
_sqlcmd = 'SELECT w_views.viewname,
t_data_profile.code,
''DROP VIEW IF EXISTS '' || w_views.schemaname || ''_DATA_PROFILE_'' || t_data_profile.code || ''.'' || w_views.viewname || ''; '' ||
''CREATE VIEW '' || w_views.schemaname || ''_DATA_PROFILE_'' || t_data_profile.code || ''.'' || w_views.viewname || '' AS '' || w_views.definition,
COALESCE(''DROP VIEW IF EXISTS '' || w_views_deja.schemaname || ''.'' || w_views_deja.viewname || ''; '' ||
''CREATE VIEW '' || w_views_deja.schemaname || ''.'' || w_views_deja.viewname || '' AS '' || w_views_deja.definition,'''')
FROM w_views
JOIN rh.t_data_profile ON t_data_profile.code <> ''''
LEFT JOIN w_views w_views_deja ON w_views.viewname = w_views_deja.viewname AND
w_views_deja.schemaname ILIKE (''rh_DATA_PROFILE_'' || t_data_profile.code)
WHERE w_views.schemaname = ''rh''';
--RAISE NOTICE 'SQL %' , _sqlcmd;
OPEN _cursor FOR
EXECUTE _sqlcmd;
FETCH _cursor INTO _sqlobject, _data_profile_code, _tosqlcmd, _tosqlcmd_deja;
WHILE FOUND LOOP
BEGIN
-- Remplacement accès table p_indicateurs_cumules
_tosqlcmd = replace(_tosqlcmd, 'rh.p_indicateurs_cumules',
'rh_data_profile_' || _data_profile_code || '.p_indicateurs_cumules'
);
-- Remplacement accès table t_data_profile
_tosqlcmd = replace(_tosqlcmd, 'rh.t_data_profile',
'(rh.t_data_profile
JOIN rh.t_data_profile t_data_profile_2 ON t_data_profile_2.oid = t_data_profile.oid AND t_data_profile_2.code::text = ''' || _data_profile_code || '''::text)'
);
-- Remplacement accès table t_services
_tosqlcmd = replace(_tosqlcmd, 'rh.t_services',
'(rh.t_services
JOIN rh.t_data_profile t_data_profile_service ON t_data_profile_service.code::text = ''' || _data_profile_code || '''::text AND t_services.oid = ANY (t_data_profile_service.service_id_array))'
);
-- Remplacement accès table t_statuts
_tosqlcmd = replace(_tosqlcmd, 'rh.t_statuts',
'(rh.t_statuts
JOIN rh.t_data_profile t_data_profile_statut ON t_data_profile_statut.code::text = ''' || _data_profile_code || '''::text AND t_statuts.oid = ANY (t_data_profile_statut.statut_id_array))'
);
-- Remplacement accès table t_etablissements
_tosqlcmd = replace(_tosqlcmd, 'rh.t_etablissements',
'(rh.t_etablissements
JOIN rh.t_data_profile t_data_profile_etablissement ON t_data_profile_etablissement.code::text = ''' || _data_profile_code || '''::text AND t_etablissements.oid = ANY (t_data_profile_etablissement.etablissement_id_array))'
);
-- Remplacement accès table p_profils
_tosqlcmd = replace(_tosqlcmd, 'rh.p_profils',
'(rh.p_profils
JOIN rh.t_data_profile t_data_profile_profil ON t_data_profile_profil.code::text = ''' || _data_profile_code || '''::text AND
p_profils.service_id = ANY (t_data_profile_profil.service_id_array) AND
p_profils.statut_id = ANY (t_data_profile_profil.statut_id_array)
)'
);
-- Remplacement accès table p_oids
_tosqlcmd = replace(_tosqlcmd, 'rh.p_oids',
'rh_DATA_PROFILE_' || _data_profile_code || '.p_oids'
);
IF lower(_tosqlcmd) <> lower(_tosqlcmd_deja) THEN
--RAISE NOTICE 'Vue = %',_sqlobject || ' (' || _data_profile_code || ')';
--RAISE NOTICE 'SQL %' , _tosqlcmd;
--RAISE NOTICE 'SQL %' , _tosqlcmd_deja;
EXECUTE _tosqlcmd;
END IF;
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , substr(_tosqlcmd,1,100);
END;
FETCH _cursor INTO _sqlobject, _data_profile_code, _tosqlcmd, _tosqlcmd_deja;
END LOOP;
CLOSE _cursor;
-- Alimentation des oids par profil
_tosqlcmd_base = 'TRUNCATE rh.p_oids;
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''anciennetes_annee'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''situations_famille'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''nationalites'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''codes_postaux'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''departements'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''motifs_arret'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''precisions_motif_arret'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''rubriques'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''organismes_cotisation'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''motifs_visite'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''accident_circonstance'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''accident_lieu'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''accident_nature'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''accident_siege'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''formations'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''compte'';
INSERT INTO rh.p_oids (code_table, oid) SELECT code_table, oid FROM rh.p_oids WHERE code_table = ''planning_type_absence'';
INSERT INTO rh.p_oids (code_table, oid) SELECT ''salaries'', p_profil_contrat_mois.salarie_id FROM rh.p_profil_contrat_mois JOIN rh.p_profils ON p_profil_contrat_mois.profil_id = p_profils.oid GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''services'', p_profils.service_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''qualifications'', p_profils.qualification_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''types_temps_travail'', p_profils.type_temps_travail_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''types_contrat'', p_profils.type_contrat_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''specialites'', p_profils.specialite_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''categories_socio_professionnelle'', p_profils.categorie_socio_professionnelle_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''statuts'', p_profils.statut_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''codes_emploi'', p_profils.code_emploi_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''motifs_debut_contrat'', p_profils.motif_debut_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''motifs_fin_contrat'', p_profils.motif_fin_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''sections_analytiques_paie'', p_profils.section_analytique_paie_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''sections_analytiques'', p_profils.section_analytique_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''grilles'', p_profils.grille_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''grilles_groupes'', p_profils.grille_groupe_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''groupes_cotisant'', p_profils.groupe_cotisant_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''societes_interim'', p_profils.societe_interim_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''lettre_budgetaire'', p_profils.lettre_budgetaire_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''compte_salarie'', p_profils.compte_salarie_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''categorie_conge'', p_profils.categorie_conge_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''commission_paritaire'', p_profils.commission_paritaire_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''filiere'', p_profils.filiere_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''cadre_emploi'', p_profils.cadre_emploi_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''categorie_statutaire'', p_profils.categorie_statutaire_id FROM rh.p_profils GROUP BY 1,2;
INSERT INTO rh.p_oids (code_table, oid) SELECT ''unite_fonctionnelle'', p_profils.unite_fonctionnelle_id FROM rh.p_profils GROUP BY 1,2;
';
-- recréation des vues dans un schema utilisateur
_sqlcmd = 'SELECT t_data_profile.code
FROM rh.t_data_profile
WHERE t_data_profile.code <> ''''';
--RAISE NOTICE 'SQL %' , _sqlcmd;
OPEN _cursor FOR
EXECUTE _sqlcmd;
FETCH _cursor INTO _data_profile_code;
WHILE FOUND LOOP
BEGIN
--RAISE NOTICE 'SQL %' , _data_profile_code;
--RAISE NOTICE 'SQL %' , _tosqlcmd_base;
-- Remplacement accès table p_oids
_tosqlcmd = replace(_tosqlcmd_base, 'INSERT INTO rh.p_oids',
'INSERT INTO rh_DATA_PROFILE_' || _data_profile_code || '.p_oids'
);
_tosqlcmd = replace(_tosqlcmd, 'TRUNCATE rh.p_oids',
'TRUNCATE rh_DATA_PROFILE_' || _data_profile_code || '.p_oids'
);
-- Remplacement accès table p_profils
_tosqlcmd = replace(_tosqlcmd, 'rh.p_profils',
'(rh.p_profils
JOIN rh.t_data_profile ON t_data_profile.code::text = ''' || _data_profile_code || '''::text AND
p_profils.service_id = ANY (t_data_profile.service_id_array) AND
p_profils.statut_id = ANY (t_data_profile.statut_id_array)
)'
);
-- Remplacement accès table t_etablissements
_tosqlcmd = replace(_tosqlcmd, 'rh.t_etablissements',
'(rh.t_etablissements
JOIN rh.t_data_profile ON t_data_profile.code::text = ''' || _data_profile_code || '''::text AND t_etablissements.oid = ANY (t_data_profile.etablissement_id_array))'
);
--RAISE NOTICE 'SQL %' , _tosqlcmd;
EXECUTE _tosqlcmd;
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , substr(_tosqlcmd,1,100);
END;
FETCH _cursor INTO _data_profile_code;
END LOOP;
CLOSE _cursor;
return 'OK';
END;

+ 122
- 0
db/schema2/functions/cti_gen_od.yaml View File

@ -0,0 +1,122 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
INSERT INTO rh.t_divers (code, texte, valeur, description)
SELECT
'ODETP_SALARIE',
'OD ETP. Liste des salaries',
''::text,
'Format MATRICULE:HEURES|MATRICULE:HEURES|MATRICULE:HEURES'
WHERE 'ODETP_SALARIE' NOT IN (SELECT code FROM rh.t_divers);
INSERT INTO rh.t_divers (code, texte, valeur, description)
SELECT
'ODETP_RUBRIQUE_BRUT',
'OD ETP. Rubrique identifiant la presence',
''::text,
'Code de la rubrique'
WHERE 'ODETP_RUBRIQUE_BRUT' NOT IN (SELECT code FROM rh.t_divers);
INSERT INTO rh.t_divers (code, texte, valeur, description)
SELECT
'ODETP_RUBRIQUE_HEURE',
'OD ETP. Rubrique d''heure pour generation OD',
''::text,
'Code de la rubrique'
WHERE 'ODETP_RUBRIQUE_HEURE' NOT IN (SELECT code FROM rh.t_divers);
DROP TABLE IF EXISTS w_divers_odetp;
CREATE TEMP TABLE w_divers_odetp AS
SELECT p_salaries.oid AS odetp_salarie_id,
CASE WHEN ((string_to_array((string_to_array(replace(t_divers_odetp_salaries.valeur,',','.'),'|'))[i],':'))[2])::text <> '*' THEN base.cti_to_number((string_to_array((string_to_array(replace(t_divers_odetp_salaries.valeur,',','.'),'|'))[i],':'))[2]::text)
ELSE -1 END AS odetp_nb_heures,
t_rubriques_brut.oid AS odetp_rubrique_brut_id,
t_rubriques_heure.oid AS odetp_rubrique_heure_id
FROM rh.p_salaries
JOIN rh.t_divers t_divers_odetp_salaries ON t_divers_odetp_salaries.code = 'ODETP_SALARIE'
JOIN generate_series(1,100) i ON (string_to_array(t_divers_odetp_salaries.valeur,'|'))[i] <> ''
JOIN rh.t_divers t_divers_odetp_rubrique_brut ON t_divers_odetp_rubrique_brut.code = 'ODETP_RUBRIQUE_BRUT'
JOIN rh.t_divers t_divers_odetp_rubrique_heure ON t_divers_odetp_rubrique_heure.code = 'ODETP_RUBRIQUE_HEURE'
JOIN rh.t_rubriques t_rubriques_brut ON t_divers_odetp_rubrique_brut.valeur = t_rubriques_brut.code
JOIN rh.t_rubriques t_rubriques_heure ON t_divers_odetp_rubrique_heure.valeur = t_rubriques_heure.code
WHERE matricule = (string_to_array((string_to_array(t_divers_odetp_salaries.valeur,'|'))[i],':'))[1]
;
DROP TABLE IF EXISTS w_odetp_mois;
CREATE TEMP TABLE w_odetp_mois AS
SELECT p_historique_paie.salarie_id,
p_historique_paie.contrat_mois_id,
mois_paie,
CASE WHEN MAX(odetp_nb_heures) >= 0 THEN MAX(odetp_nb_heures) ELSE 0 END AS odetp_heure_contrat,
CASE WHEN MAX(odetp_nb_heures) >= 0 THEN MAX(odetp_nb_heures) ELSE SUM(heure_contrat) END AS odetp_heure_payee,
MAX(odetp_rubrique_brut_id) AS odetp_rubrique_brut_id,
MAX(odetp_rubrique_heure_id) AS odetp_rubrique_heure_id
FROM rh.p_historique_paie
JOIN w_divers_odetp ON salarie_id = odetp_salarie_id
WHERE rubrique_id = odetp_rubrique_brut_id OR
rubrique_id = odetp_rubrique_heure_id OR
heure_contrat <> 0 AND odetp_nb_heures = -1
GROUP BY 1,2,3
HAVING MAX(CASE WHEN rubrique_id = odetp_rubrique_heure_id THEN rubrique_id ELSE 0 END) = 0 AND
MAX(CASE WHEN rubrique_id = odetp_rubrique_brut_id THEN rubrique_id ELSE 0 END) <> 0
;
DROP TABLE IF EXISTS w_odetp_historique;
CREATE TEMP TABLE w_odetp_historique AS
SELECT p_historique_paie.*
FROM rh.p_historique_paie
JOIN w_odetp_mois ON
p_historique_paie.salarie_id = w_odetp_mois.salarie_id AND
p_historique_paie.mois_paie = w_odetp_mois.mois_paie AND
p_historique_paie.contrat_mois_id = w_odetp_mois.contrat_mois_id AND
p_historique_paie.rubrique_id = odetp_rubrique_brut_id;
UPDATE w_odetp_historique SET
rubrique_id = odetp_rubrique_heure_id,
base = odetp_heure_payee,
heure_payee = odetp_heure_payee,
heure_travaillee = odetp_heure_payee,
heure_contrat = odetp_heure_contrat,
montant_brut = 0,
taux_cotisation_salarie = 0,
montant_cotisation_salarie = 0,
taux_cotisation_patronale = 0,
montant_cotisation_patronale = 0,
montant_net_imposable_salarie = 0,
montant_net_a_payer_salarie = 0,
montant_avantage_nature = 0,
montant_frais_imposables = 0,
montant_masse_salariale = 0,
montant_od_net_salarie = 0
FROM w_odetp_mois
WHERE w_odetp_mois.salarie_id = w_odetp_historique.salarie_id AND
w_odetp_mois.contrat_mois_id = w_odetp_historique.contrat_mois_id AND
w_odetp_mois.mois_paie = w_odetp_historique.mois_paie
;
INSERT INTO rh.p_historique_paie
SELECT *
FROM w_odetp_historique;
UPDATE rh.p_chiffrier_production
SET nombre_heures_od = 0
WHERE nombre_heures_od IS NULL;
UPDATE rh.p_chiffrier_production
SET nombre_heures_od = p_chiffrier_production.nombre_heures_od + subview.nombre_heures_od
FROM
(
SELECT t_etablissements.entreprise_id,
p_contrats.etablissement_id,
mois_paie,
SUM(base) AS nombre_heures_od
FROM w_odetp_historique
JOIN rh.p_contrats ON contrat_id = p_contrats.oid
JOIN rh.t_etablissements ON p_contrats.etablissement_id = t_etablissements.oid
GROUP BY 1,2,3
) subview
WHERE p_chiffrier_production.entreprise_id = subview.entreprise_id AND
p_chiffrier_production.etablissement_id = subview.etablissement_id AND
p_chiffrier_production.mois = subview.mois_paie;
RETURN 'OK';
END;

+ 88
- 0
db/schema2/functions/cti_get_sae_contracts.yaml View File

@ -0,0 +1,88 @@
return: text
lang: plpgsql
src: |
DECLARE
year int;
tableToCheck text;
maxYearInserted int;
yearsToDo int[];
tablesToCheck text[];
request text;
canDoYear bool;
startDate date;
endDate date;
targetTable text;
BEGIN
startDate = (COALESCE((SELECT MAX(annee) FROM rh.p_sae_contrats) + 1, 2017)|| '-01-01')::date;
endDate = (date_part('YEAR', NOW())::text || '-01-01')::date - interval '1 year';
yearsToDo = (SELECT array_agg(date_part) FROM (SELECT date_part('YEAR', (generate_series(startDate, endDate, '1 year'::interval)))::int) AS sub);
tablesToCheck = ARRAY['t_#YEAR#_sae_contrat', 't_#YEAR#_sae_groupe_discipline'];
-- Si une des 2 tables nécessaires n'existent pas
IF yearsToDo IS NULL THEN RETURN 'Aucune année à traiter'; END IF;
FOREACH year IN ARRAY yearsToDo LOOP
-- Vérification de l'existence des tables requises pour l'année de la boucle
FOREACH tableToCheck IN ARRAY tablesToCheck LOOP
IF year = 2017 THEN
tableToCheck = REPLACE(tableToCheck, '_#YEAR#_', '_');
END IF;
IF year > 2017 THEN
tableToCheck = REPLACE(tableToCheck, '#YEAR#', year);
END IF;
canDoYear = ((SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'ssae' AND table_name = tableToCheck) = 1);
END LOOP;
-- Si une des 2 tables nécessaires n'existent pas
IF NOT canDoYear THEN RETURN 'Une table nécessaire n''existe pas'; END IF;
request = '
INSERT INTO rh.p_sae_contrats (
annee,
mois_activite_debut_id,
mois_activite_fin_id,
salarie_id,
contrat_code,
contrat_id,
groupe_discipline_texte,
qualification_texte,
filiere_texte
)
SELECT
#YEAR# AS annee,
saec.mois_activite_debut_id,
saec.mois_activite_fin_id,
saec.salarie_id,
saec.contrat_code,
saec.contrat_id,
saegd.texte AS groupe_discipline_texte,
saec.qualification_texte,
CASE filiere_code
WHEN ''01'' THEN ''MEDECIN SOIGNANT''
WHEN ''11'' THEN ''SOIGNANT''
WHEN ''21'' THEN ''NON SOIGNANT''
WHEN ''91'' THEN ''Hors champ SAE''
ELSE ''???'' END AS filiere_texte
FROM ssae.t_#YEAR#_sae_contrat AS saec
LEFT JOIN ssae.t_#YEAR#_sae_groupe_discipline AS saegd ON saegd.oid = saec.groupe_discipline_id[1]'
;
IF year = 2017 THEN
request = replace(request, '_#YEAR#_', '_');
request = replace(request, '#YEAR#', year);
END IF;
IF year > 2017 THEN
request = replace(request, '#YEAR#', year);
END IF;
EXECUTE request;
RAISE NOTICE 'Année % traitée', year;
END LOOP;
RETURN 'OK';
END;

+ 75
- 0
db/schema2/functions/cti_hp_create_views.yaml View File

@ -0,0 +1,75 @@
return: text
lang: plpgsql
src: |
DECLARE
_nbPlanAna integer; -- Nb de plans analytiques possibles.
_templateName text; -- Nom de la vue SQL template.
_template text; -- source SQL template à compléter par cette fonction.
_opt_mode text; -- Option t_divers définissant quelle vue SQL source est à prendre
_viewName text; -- Nom de la vue à créer.
_sqlView text; -- SQL de la vue à créer.
_tmpRatio text; -- Ratio à appliquer.
_tmpSelectId text[]; -- Colonnes à ajouter.
_tmpSelectCode text[]; -- Colonnes à ajouter.
_tmpSelectTexte text[]; -- Colonnes à ajouter.
_tmpJoin text; -- Jointure à utiliser.
result text;
BEGIN
_nbPlanAna = 3; -- Actuellement on gère 3 plans analytiques maximum.
_templateName = 'v_historique_paie_0'; -- Par défaut, le template SQL à récupérer est situé dans cette vue.
_opt_mode = ''; -- Par défaut, on prend la vue standard.
-- Récupération de l'option.
SELECT CASE WHEN valeur != '0' THEN '_1' ELSE '' END INTO _opt_mode FROM rh.t_divers WHERE code = 'OPT_STD_HP';
-- Récupération du template.
SELECT pg_get_viewdef(c.oid, true) INTO _template FROM pg_class c JOIN pg_namespace as n on n.oid = c.relnamespace WHERE n.nspname = 'rh' AND c.relname = _templateName||coalesce(_opt_mode, ''::text);
-- La vue v_historique_paie_0 est un template dans lequel il faut remplace "* 999" et "JOIN ( SELECT 1) subq ON 1 = 1" par les bonnes valeurs.
FOR i IN 1..2^_nbPlanAna LOOP
_tmpRatio = '';
_tmpSelectId = null;
_tmpSelectCode = null;
_tmpSelectTexte = null;
_tmpJoin = '';
_sqlView = '';
IF (i::bit(3) = 0::bit(3)) THEN
_viewName = 'rh.v_historique_paie_1';
ELSE
_viewName = 'rh.v_historique_paie_1_' || i::bit(3)::text;
END IF;
FOR j IN 1.._nbPlanAna LOOP
IF (substr(i::bit(3)::text, j, 1) = '1') THEN
_tmpRatio = _tmpRatio || ' * v' || j::text || '.ratio';
_tmpSelectId[j] = 'v' || j::text || '.section_analytique_id as ng_section_analytique_' || j::text || '_id, v' || j::text || '.section_analytique_section_id as ng_section_analytique_' || j::text || '_section_id';
_tmpSelectCode[j] = 'v' || j::text || '.section_analytique_code as ng_section_analytique_' || j::text || '_code, v' || j::text || '.section_analytique_section_code as ng_section_analytique_' || j::text || '_section_code';
_tmpSelectTexte[j] = 'v' || j::text || '.section_analytique_texte as ng_section_analytique_' || j::text || '_texte, v' || j::text || '.section_analytique_section_texte as ng_section_analytique_' || j::text || '_section_texte';
_tmpJoin = _tmpJoin || ' JOIN rh.p_ventilation_section AS v' || j::text || ' ON v' || j::text || '.ventilation_id = p_historique_paie.ventilation_'|| j::text ||'_id';
ELSE
_tmpSelectId[j] = 'null::bigint as ng_section_analytique_' || j::text || '_id';
_tmpSelectCode[j] = 'null::text as ng_section_analytique_' || j::text || '_code';
_tmpSelectTexte[j] = 'null::text as ng_section_analytique_' || j::text || '_texte';
END IF;
END LOOP;
-- Remplacements
_sqlView = replace (_template, '* 999', _tmpRatio);
_sqlView = replace (_sqlView, '999::bigint', array_to_string(_tmpSelectId, ', ', 'null::bigint'));
_sqlView = replace (_sqlView, '''section_analytique_ng_code''::text', array_to_string(_tmpSelectCode, ', ', 'null::text'));
_sqlView = replace (_sqlView, '''section_analytique_ng_texte''::text', array_to_string(_tmpSelectTexte, ', ', 'null::text'));
_sqlView = replace (_sqlView, 'JOIN ( SELECT 1) subq ON 1 = 1', _tmpJoin);
_sqlView = replace (_sqlView, ' AS to_replace_id', '');
_sqlView = replace (_sqlView, ' AS to_replace_code', '');
_sqlView = replace (_sqlView, ' AS to_replace_texte', '');
-- Suppression de la vue si elle existe.
EXECUTE 'DROP VIEW IF EXISTS ' || _viewName;
-- Création de la vue.
EXECUTE 'CREATE VIEW ' || _viewName || ' AS ' || _sqlView;
END LOOP;
RETURN 'OK';
END;

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

@ -0,0 +1,67 @@
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 rh.t_divers WHERE code = _code) THEN
_option = 'FORCE';
END IF;
IF _option = 'FORCE' THEN
_now =
CASE _code
WHEN 'NOW' THEN
(SELECT MAX(date_fin) FROM rh.p_contrats WHERE date_fin <= date(now()) )
WHEN 'NOWCLOTURE' THEN
(SELECT CASE WHEN date(date_trunc('month',MAX(date_paie)) + interval '1 month' - interval '1 day') <= date(date_trunc('month',now() - interval '5 days')) THEN
date(date_trunc('month',MAX(date_paie)) + interval '1 month' - interval '1 day')
ELSE
date(date_trunc('month',MAX(date_paie)) - interval '1 day')
END
FROM rh.p_historique_paie WHERE date_paie <= date(date_trunc('month',now()) + interval '1 month' - interval '1 day')
)
ELSE date(now())
END;
UPDATE rh.t_divers SET
texte = CASE _code
WHEN 'NOW' THEN 'Date en-cours'
WHEN 'NOWCLOTURE' THEN 'Date clôture'
ELSE 'Date en-cours'
END,
valeur = to_char(_now, 'YYYYMM'),
valeur_date = _now,
show_info_module = true
WHERE code = _code;
INSERT INTO rh.t_divers (code, texte, valeur, valeur_date, description, show_info_module)
SELECT
_code,
CASE _code
WHEN 'NOW' THEN 'Date en-cours'
WHEN 'NOWCLOTURE' THEN 'Date clôture'
ELSE 'Date en-cours'
END,
to_char(_now, 'YYYYMM'),
_now,
'Date non modifiable',
true
WHERE _code NOT IN (SELECT code FROM rh.t_divers);
ELSE
_now = (SELECT valeur_date FROM rh.t_divers WHERE code = _code);
END IF;
RETURN _now;
END;

+ 71
- 0
db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,bi,bi,bi,bi,bi,bi.yaml View File

@ -0,0 +1,71 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: i_column_name
p1:
type: text
name: i_table_name
p2:
type: integer
name: i_array_index
p3:
type: bigint
name: i_indicateur_id
p4:
type: bigint
name: i_indicateur_associe_1_id
p5:
type: bigint
name: i_indicateur_associe_2_id
p6:
type: bigint
name: i_indicateur_associe_3_id
p7:
type: bigint
name: i_indicateur_associe_4_id
p8:
type: bigint
name: i_indicateur_associe_5_id
p9:
type: bigint
name: i_indicateur_associe_6_id
p10:
type: bigint
name: i_indicateur_associe_7_id
p11:
type: bigint
name: i_indicateur_associe_8_id
p12:
type: bigint
name: i_indicateur_associe_9_id
p13:
type: bigint
name: i_indicateur_associe_10_id
src: |
DECLARE
column_name text;
array_index text;
BEGIN
array_index = '';
if i_array_index > 0 THEN
array_index = '[0000' || i_array_index || ']';
END IF;
if i_table_name <> '*CALC' THEN
column_name = 'SUM(indicateurs[000' || i_indicateur_id || ']' || array_index ||')';
ELSE
column_name = replace(i_column_name, '[1]', 'SUM(indicateurs[000' || i_indicateur_associe_1_id || ']' || array_index ||')');
column_name = replace(column_name, '[2]', 'SUM(indicateurs[000' || i_indicateur_associe_2_id || ']' || array_index ||')');
column_name = replace(column_name, '[3]', 'SUM(indicateurs[000' || i_indicateur_associe_3_id || ']' || array_index ||')');
column_name = replace(column_name, '[4]', 'SUM(indicateurs[000' || i_indicateur_associe_4_id || ']' || array_index ||')');
column_name = replace(column_name, '[5]', 'SUM(indicateurs[000' || i_indicateur_associe_5_id || ']' || array_index ||')');
column_name = replace(column_name, '[6]', 'SUM(indicateurs[000' || i_indicateur_associe_6_id || ']' || array_index ||')');
column_name = replace(column_name, '[7]', 'SUM(indicateurs[000' || i_indicateur_associe_7_id || ']' || array_index ||')');
column_name = replace(column_name, '[8]', 'SUM(indicateurs[000' || i_indicateur_associe_8_id || ']' || array_index ||')');
column_name = replace(column_name, '[9]', 'SUM(indicateurs[000' || i_indicateur_associe_9_id || ']' || array_index ||')');
column_name = replace(column_name, '[10]', 'SUM(indicateurs[000' || i_indicateur_associe_10_id || ']' || array_index ||')');
END IF;
RETURN column_name;
END;

+ 78
- 0
db/schema2/functions/cti_prepare_rapport_comp~bi.yaml View File

@ -0,0 +1,78 @@
return: SETOF record
lang: plpgsql
parameters:
p0:
type: bigint
name: i_rapport_id
src: |
DECLARE
sqlcmd text;
temp_cursor refcursor;
_oid integer;
_maxind integer;
row RECORD;
BEGIN
-- Selection des rubriques et ajout des conditions
PERFORM rh.cti_prepare_rapport_init(i_rapport_id)
;
FOR row IN
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_contrats_mois_1', 'COMP') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_historique_paie_1', 'COMP') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_arrets_travail_mois_1', 'COMP') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'PLANNING_MOUVEMENT', 'COMP') AS (name text, value text)
UNION
SELECT 'RUBRIQUES_RAPPORT',
base.cti_group_concat(
'ARRAY[' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
'(' || rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ' - ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ') ' ||
', ' ||
'CASE WHEN ' || rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ' > 0 AND ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || '> 0 THEN ' ||
'base.cti_division((' || rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ' - ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || '), ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ') * 100 ' ||
'ELSE 0 END, ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
'(' || rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ' - ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ') ' ||
', ' ||
'CASE WHEN ' || rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ' > 0 AND ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || '> 0 THEN ' ||
'base.cti_division((' || rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ' - ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || '), ' ||
rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ') * 100 ' ||
'ELSE 0 END ' ||
']'
)
FROM (SELECT * FROM w_VP_rapports_rubriques t_rapports_rubriques
JOIN w_VP_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid
WHERE rapport_id = i_rapport_id ORDER BY numero_rubrique
) subview
LOOP
RETURN NEXT row;
END LOOP;
RETURN ;
END;

+ 109
- 0
db/schema2/functions/cti_prepare_rapport_get_column~tx,tx.yaml View File

@ -0,0 +1,109 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: i_column_name
p1:
type: text
name: i_option
src: |
DECLARE
to_column_name text;
listeString text;
listeCode text;
d int;
f int;
l int;
BEGIN
to_column_name = i_column_name;
IF (i_option = 'MONTH') THEN
IF to_column_name NOT ILIKE 'DISTINCT%' THEN
to_column_name = 'CASE WHEN COLUMNCHECKSEQUENCE THEN ' || to_column_name || ' ELSE NULL END';
ELSE
to_column_name = 'DISTINCT CASE WHEN COLUMNCHECKSEQUENCE THEN ' || substr(to_column_name,9) || ' ELSE NULL END';
END IF;
END IF;
d = strpos(to_column_name,'[LISTE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 8, length(listeString) - 8);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_listes JOIN rh.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')');
END IF;
END IF;
d = strpos(to_column_name,'[LISTE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 8, length(listeString) - 8);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_listes JOIN rh.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')');
END IF;
END IF;
d = strpos(to_column_name,'[LISTE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 8, length(listeString) - 8);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_listes JOIN rh.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')');
END IF;
END IF;
d = strpos(to_column_name,'[LISTE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 8, length(listeString) - 8);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_listes JOIN rh.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')');
END IF;
END IF;
d = strpos(to_column_name,'[LISTE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 8, length(listeString) - 8);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_listes JOIN rh.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')');
END IF;
END IF;
d = strpos(to_column_name,'[CLASSE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 9, length(listeString) - 9);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_classes JOIN rh.t_classes_sections ON classe_id = t_classes.oid JOIN rh.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''' || listeCode || ''')');
END IF;
END IF;
d = strpos(to_column_name,'[CLASSE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 9, length(listeString) - 9);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_classes JOIN rh.t_classes_sections ON classe_id = t_classes.oid JOIN rh.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''' || listeCode || ''')');
END IF;
END IF;
d = strpos(to_column_name,'[CLASSE:');
IF (d > 0) THEN
f = strpos(to_column_name,']');
IF (f > 0) THEN
l = f - d + 1;
listeString = substr(to_column_name, d, l);
listeCode = substr(listeString, 9, length(listeString) - 9);
to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM rh.t_classes JOIN rh.t_classes_sections ON classe_id = t_classes.oid JOIN rh.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''' || listeCode || ''')');
END IF;
END IF;
RETURN to_column_name;
END;

+ 17
- 0
db/schema2/functions/cti_prepare_rapport_get_column~tx.yaml View File

@ -0,0 +1,17 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: i_column_name
src: |
DECLARE
to_column_name text;
BEGIN
to_column_name = i_column_name;
to_column_name = regexp_replace(to_column_name, '\[LISTE:(.*?)\]', '(SELECT to_id FROM rh.t_listes JOIN rh.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''\1'')', 'g');
to_column_name = regexp_replace(to_column_name, '\[CLASSE:(.*?)\]', '(SELECT to_id FROM rh.t_classes JOIN rh.t_classes_sections ON classe_id = t_classes.oid JOIN rh.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''\1'')', 'g');
RETURN to_column_name;
END;

+ 215
- 0
db/schema2/functions/cti_prepare_rapport_indicateurs~bi,tx,tx.yaml View File

@ -0,0 +1,215 @@
return: SETOF record
lang: plpgsql
parameters:
p0:
type: bigint
name: i_rapport_id
p1:
type: text
name: i_table_name
p2:
type: text
name: i_option
src: |
DECLARE
sqlcmd text;
temp_cursor refcursor;
_oid integer;
_count integer;
_table_count integer;
_maxind integer;
_indicateur_name text;
row RECORD;
BEGIN
_maxind = 100;
_table_count = 0;
OPEN temp_cursor FOR
SELECT MAX(oid), SUM(CASE WHEN i_table_name = table_name THEN 1 ELSE 0 END)
FROM w_VP_indicateurs t_indicateurs
WHERE oid IN (
SELECT base.cti_unnest(
ARRAY[
indicateur_id,
indicateur_associe_1_id,
indicateur_associe_2_id,
indicateur_associe_3_id,
indicateur_associe_4_id,
indicateur_associe_5_id,
indicateur_associe_6_id,
indicateur_associe_7_id,
indicateur_associe_8_id,
indicateur_associe_9_id,
indicateur_associe_10_id
])
FROM rh.t_rapports
JOIN w_VP_rapports_rubriques t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
JOIN w_VP_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid);
FETCH temp_cursor INTO _oid,_count;
WHILE FOUND LOOP
_maxind = _oid;
_table_count = _count;
FETCH temp_cursor INTO _oid, _count;
END LOOP;
CLOSE temp_cursor;
_indicateur_name = CASE i_table_name WHEN 'v_contrats_mois_1' THEN 'INDICATEURS_CONTRAT'
WHEN 'v_historique_paie_1' THEN 'INDICATEURS_PAIE'
WHEN 'v_arrets_travail_mois_1' THEN 'INDICATEURS_ARRET'
WHEN 'PLANNING_MOUVEMENT' THEN 'INDICATEURS_PLANNING'
WHEN 'CALENDRIER' THEN 'INDICATEURS_CALENDRIER'
ELSE 'INDICATEURS_OTHERS' END;
IF (_table_count = 0) THEN
FOR row IN SELECT _indicateur_name::text, ''::text
LOOP
RETURN NEXT row;
END LOOP;
END IF;
IF (i_option <> 'MONTH' AND i_option <> 'COMP' AND _table_count > 0) THEN
FOR row IN
SELECT
_indicateur_name::text, base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || rh.cti_prepare_rapport_get_column(column_name) || ')' ELSE 'NULL::numeric' END)
FROM generate_series(1, _maxind)
LEFT JOIN
(
SELECT *
FROM w_VP_indicateurs t_indicateurs
WHERE oid IN (
SELECT base.cti_unnest(
ARRAY[
indicateur_id,
indicateur_associe_1_id,
indicateur_associe_2_id,
indicateur_associe_3_id,
indicateur_associe_4_id,
indicateur_associe_5_id,
indicateur_associe_6_id,
indicateur_associe_7_id,
indicateur_associe_8_id,
indicateur_associe_9_id,
indicateur_associe_10_id
])
FROM rh.t_rapports
JOIN w_VP_rapports_rubriques t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
JOIN w_VP_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
) subview ON generate_series = subview.oid AND subview.table_name = i_table_name
LOOP
RETURN NEXT row;
END LOOP;
END IF;
IF (i_option = 'MONTH' AND _table_count > 0) THEN
FOR row IN
SELECT
_indicateur_name::text,
base.cti_group_concat(
CASE WHEN subview.oid IS NOT NULL THEN
'ARRAY['
|| '(' || total_function || '(' || rh.cti_prepare_rapport_get_column(column_name) || ')::numeric),'
|| replace(month_formula, '#SEQ#', '< 1') || ','
|| replace(month_formula, '#SEQ#', '= 1') || ','
|| replace(month_formula, '#SEQ#', '= 2') || ','
|| replace(month_formula, '#SEQ#', '= 3') || ','
|| replace(month_formula, '#SEQ#', '= 4') || ','
|| replace(month_formula, '#SEQ#', '= 5') || ','
|| replace(month_formula, '#SEQ#', '= 6') || ','
|| replace(month_formula, '#SEQ#', '= 7') || ','
|| replace(month_formula, '#SEQ#', '= 8') || ','
|| replace(month_formula, '#SEQ#', '= 9') || ','
|| replace(month_formula, '#SEQ#', '= 10') || ','
|| replace(month_formula, '#SEQ#', '= 11') || ','
|| replace(month_formula, '#SEQ#', '= 12') || ''
|| ']'
ELSE 'ARRAY[NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric]' END)
FROM generate_series(1, _maxind)
LEFT JOIN
(
SELECT *,
CASE WHEN column_name ILIKE '%DISTINCT%'
THEN total_function || '(DISTINCT CASE WHEN columnby_sequence #SEQ# THEN ' || replace(rh.cti_prepare_rapport_get_column(column_name),'DISTINCT','') || ' ELSE NULL END)'
ELSE total_function || '(CASE WHEN columnby_sequence #SEQ# THEN ' || rh.cti_prepare_rapport_get_column(column_name) || ' ELSE NULL END)' END AS month_formula
FROM w_VP_indicateurs t_indicateurs
WHERE oid IN (
SELECT base.cti_unnest(
ARRAY[
indicateur_id,
indicateur_associe_1_id,
indicateur_associe_2_id,
indicateur_associe_3_id,
indicateur_associe_4_id,
indicateur_associe_5_id,
indicateur_associe_6_id,
indicateur_associe_7_id,
indicateur_associe_8_id,
indicateur_associe_9_id,
indicateur_associe_10_id
])
FROM rh.t_rapports
JOIN w_VP_rapports_rubriques t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
JOIN w_VP_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
) subview ON generate_series = subview.oid AND subview.table_name = i_table_name
LOOP
RETURN NEXT row;
END LOOP;
END IF;
IF (i_option = 'COMP' AND _table_count > 0) THEN
FOR row IN
SELECT
_indicateur_name::text,
base.cti_group_concat(
CASE WHEN subview.oid IS NOT NULL THEN
'ARRAY['
|| replace(month_formula, '#SEQ#', '= 1') || '::numeric,'
|| replace(month_formula, '#SEQ#', '= 2') || '::numeric,'
|| replace(month_formula, '#SEQ#', '= 3') || '::numeric'
|| ']'
ELSE 'ARRAY[NULL::numeric,NULL::numeric,NULL::numeric]' END)
FROM generate_series(1, _maxind)
LEFT JOIN
(
SELECT *,
CASE WHEN column_name ILIKE '%DISTINCT%'
THEN total_function || '(DISTINCT CASE WHEN columnby_sequence #SEQ# THEN ' || replace(rh.cti_prepare_rapport_get_column(column_name),'DISTINCT','') || ' ELSE NULL END)'
ELSE total_function || '(CASE WHEN columnby_sequence #SEQ# THEN ' || rh.cti_prepare_rapport_get_column(column_name) || ' ELSE NULL END)' END AS month_formula
FROM w_VP_indicateurs t_indicateurs
WHERE oid IN (
SELECT base.cti_unnest(
ARRAY[
indicateur_id,
indicateur_associe_1_id,
indicateur_associe_2_id,
indicateur_associe_3_id,
indicateur_associe_4_id,
indicateur_associe_5_id,
indicateur_associe_6_id,
indicateur_associe_7_id,
indicateur_associe_8_id,
indicateur_associe_9_id,
indicateur_associe_10_id
])
FROM rh.t_rapports
JOIN w_VP_rapports_rubriques t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id
JOIN w_VP_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid)
) subview ON generate_series = subview.oid AND subview.table_name = i_table_name
LOOP
RETURN NEXT row;
END LOOP;
END IF;
RETURN ;
END;

+ 158
- 0
db/schema2/functions/cti_prepare_rapport_init~bi.yaml View File

@ -0,0 +1,158 @@
return: text
lang: plpgsql
parameters:
p0:
type: bigint
name: i_rapport_id
src: |
DECLARE
BEGIN
DROP TABLE IF EXISTS w_VP_rapports_rubriques;
CREATE TEMP TABLE w_VP_rapports_rubriques AS
SELECT t_rapports_rubriques.*,
array_cat(CASE WHEN erase_rapport_indicateur_condition IS DISTINCT FROM '1' THEN t_rapports.rapport_indicateur_condition_id ELSE NULL END,indicateur_condition_id) AS vp_indicateur_condition_id
FROM rh.t_rapports_rubriques
JOIN rh.t_rapports ON rapport_id = t_rapports.oid
WHERE rapport_id = i_rapport_id
;
DROP TABLE IF EXISTS w_VP_indicateurs;
CREATE TEMP TABLE w_VP_indicateurs AS
SELECT t_indicateurs_target.*,
numero_rubrique AS vp_numero_rubrique,
vp_indicateur_condition_id AS indicateur_condition_id,
''::text AS indicateur_condition_where,
row_number() OVER(ORDER BY numero_rubrique, indicateur_id) AS vp_oid
FROM rh.t_indicateurs
JOIN rh.t_indicateurs t_indicateurs_target ON
(
t_indicateurs.total_function = '*CALC' AND
t_indicateurs_target.oid = ANY(
ARRAY[
t_indicateurs.indicateur_associe_1_id,
t_indicateurs.indicateur_associe_2_id,
t_indicateurs.indicateur_associe_3_id,
t_indicateurs.indicateur_associe_4_id,
t_indicateurs.indicateur_associe_5_id,
t_indicateurs.indicateur_associe_6_id,
t_indicateurs.indicateur_associe_7_id,
t_indicateurs.indicateur_associe_8_id,
t_indicateurs.indicateur_associe_9_id,
t_indicateurs.indicateur_associe_10_id
]) OR
t_indicateurs.oid = t_indicateurs_target.oid
)
JOIN w_VP_rapports_rubriques t_rapports_rubriques ON
t_indicateurs.oid = t_rapports_rubriques.indicateur_id
ORDER BY numero_rubrique, indicateur_id
;
UPDATE w_VP_rapports_rubriques
SET indicateur_id = w_VP_indicateurs.vp_oid
FROM w_VP_indicateurs
WHERE w_VP_rapports_rubriques.numero_rubrique = w_VP_indicateurs.vp_numero_rubrique AND
w_VP_rapports_rubriques.indicateur_id = w_VP_indicateurs.oid
;
UPDATE w_VP_indicateurs
SET indicateur_associe_1_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_1_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_2_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_2_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_3_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_3_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_4_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_4_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_5_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_5_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_6_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_6_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_7_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_7_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_8_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_8_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_9_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_9_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs
SET indicateur_associe_10_id = w_VP_indicateurs_f.vp_oid
FROM w_VP_indicateurs w_VP_indicateurs_f
WHERE w_VP_indicateurs.indicateur_associe_10_id = w_VP_indicateurs_f.oid AND
w_VP_indicateurs.vp_numero_rubrique = w_VP_indicateurs_f.vp_numero_rubrique
;
UPDATE w_VP_indicateurs SET
oid = vp_oid
;
UPDATE w_VP_indicateurs SET
indicateur_condition_where = condition_where
FROM
(
SELECT w_VP_indicateurs.oid, array_to_string(array_agg('('||COALESCE(t_indicateur_condition_table_spec.check_where,t_indicateur_condition_table.check_where)||')'),' AND ') AS condition_where
FROM w_VP_indicateurs
JOIN rh.t_indicateur_condition ON t_indicateur_condition.oid = ANY(indicateur_condition_id)
JOIN rh.t_indicateur_condition_table ON
t_indicateur_condition_table.indicateur_condition_id = t_indicateur_condition.oid AND
t_indicateur_condition_table.table_name = ''
LEFT JOIN rh.t_indicateur_condition_table t_indicateur_condition_table_spec ON
t_indicateur_condition_table_spec.indicateur_condition_id = t_indicateur_condition.oid AND
t_indicateur_condition_table_spec.table_name = w_VP_indicateurs.table_name
WHERE COALESCE(t_indicateur_condition_table_spec.check_where,t_indicateur_condition_table.check_where) <> ''
GROUP BY 1
) subview
WHERE w_VP_indicateurs.oid = subview.oid
;
UPDATE w_VP_indicateurs
SET column_name =
CASE WHEN column_name ILIKE 'DISTINCT%' THEN 'DISTINCT ' ELSE '' END ||
'CASE WHEN ' || indicateur_condition_where ||
' THEN ' || CASE WHEN column_name ILIKE 'DISTINCT%' THEN substr(column_name,9) ELSE column_name END ||
' ELSE ' ||
CASE WHEN total_function = 'SUM' THEN '0' ELSE 'NULL' END || ' END'
WHERE indicateur_condition_where <> '' AND
total_function In('SUM','COUNT')
;
RETURN 'OK';
END;

+ 65
- 0
db/schema2/functions/cti_prepare_rapport_month~bi.yaml View File

@ -0,0 +1,65 @@
return: SETOF record
lang: plpgsql
parameters:
p0:
type: bigint
name: i_rapport_id
src: |
DECLARE
sqlcmd text;
temp_cursor refcursor;
_oid integer;
_maxind integer;
row RECORD;
BEGIN
-- Selection des rubriques et ajout des conditions
PERFORM rh.cti_prepare_rapport_init(i_rapport_id)
;
FOR row IN
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_contrats_mois_1', 'MONTH') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_historique_paie_1', 'MONTH') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_arrets_travail_mois_1', 'MONTH') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'PLANNING_MOUVEMENT', 'MONTH') AS (name text, value text)
UNION
SELECT 'RUBRIQUES_RAPPORT',
base.cti_group_concat(
'ARRAY[' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 8, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 9, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 10, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 11, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 12, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 13, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id) || ', ' ||
rh.cti_prepare_rapport_calc_indicator(rh.cti_prepare_rapport_get_column(column_name), table_name, 14, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id)
|| ']'
)
FROM (SELECT * FROM w_VP_rapports_rubriques t_rapports_rubriques
JOIN w_VP_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid
WHERE rapport_id = i_rapport_id ORDER BY numero_rubrique
) subview
LOOP
RETURN NEXT row;
END LOOP;
RETURN ;
END;

+ 83
- 0
db/schema2/functions/cti_prepare_rapport~bi.yaml View File

@ -0,0 +1,83 @@
return: SETOF record
lang: plpgsql
parameters:
p0:
type: bigint
name: i_rapport_id
src: |
DECLARE
sqlcmd text;
temp_cursor refcursor;
_oid integer;
_maxind integer;
row RECORD;
BEGIN
-- Selection des rubriques et ajout des conditions
PERFORM rh.cti_prepare_rapport_init(i_rapport_id)
;
FOR row IN
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_contrats_mois_1', '') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_historique_paie_1', '') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_arrets_travail_mois_1', '') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'PLANNING_MOUVEMENT', '') AS (name text, value text)
UNION
SELECT * FROM rh.cti_prepare_rapport_indicateurs(i_rapport_id, 'CALENDRIER', '') AS (name text, value text)
UNION
SELECT 'RUBRIQUES_RAPPORT',
base.cti_group_concat(rh.cti_prepare_rapport_calc_indicator(column_name, table_name, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id, indicateur_associe_8_id, indicateur_associe_9_id, indicateur_associe_10_id))
FROM (SELECT * FROM w_VP_rapports_rubriques t_rapports_rubriques
JOIN w_VP_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid
WHERE rapport_id = i_rapport_id ORDER BY numero_rubrique
) subview
UNION
SELECT 'IC' || numero_rubrique, t_indicateurs.oid::text FROM w_VP_rapports_rubriques t_rapports_rubriques, w_VP_indicateurs t_indicateurs
WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid
UNION
SELECT 'IH' || numero_rubrique, CASE WHEN t_rapports_rubriques.entete <> '' THEN t_rapports_rubriques.entete ELSE t_indicateurs.entete END FROM w_VP_rapports_rubriques t_rapports_rubriques, w_VP_indicateurs t_indicateurs
WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid
UNION
SELECT 'IW' || numero_rubrique,
CASE
WHEN t_indicateurs.table_name = 'SEP' THEN '2'
WHEN t_rapports_rubriques.width > 0 THEN t_rapports_rubriques.width::text
WHEN t_indicateurs.width > 0 THEN t_indicateurs.width::text
ELSE '80'
END
FROM w_VP_rapports_rubriques t_rapports_rubriques, w_VP_indicateurs t_indicateurs
WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid
UNION
SELECT 'IO' || numero_rubrique,
CASE WHEN t_rapports_rubriques.output_format <> '' THEN t_rapports_rubriques.output_format
WHEN t_indicateurs.output_format <> '' THEN t_indicateurs.output_format
ELSE '#' END
FROM w_VP_rapports_rubriques t_rapports_rubriques, w_VP_indicateurs t_indicateurs
WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid
UNION
SELECT 'IT' || numero_rubrique, t_indicateurs.table_name::text FROM w_VP_rapports_rubriques t_rapports_rubriques, w_VP_indicateurs t_indicateurs
WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid
LOOP
RETURN NEXT row;
END LOOP;
RETURN ;
END;

+ 1796
- 0
db/schema2/functions/cti_reorganize_indicateur_condition.yaml
File diff suppressed because it is too large
View File


+ 120
- 0
db/schema2/functions/cti_reorganize_personne.yaml View File

@ -0,0 +1,120 @@
return: text
lang: plpgsql
src: |
DECLARE
_sqlcmd TEXT;
result TEXT;
BEGIN
-- Le nom_naissance dans certains prestataires est récupéré sous le format NULL pour indiquer la non saisie de ce champ
-- Historiquement dans les prestataires, le nom_naissance non renseigné était enregistré au format chaîne vide ('')
-- Les requêtes suivantes et la table p_personne attendent que la colonne nom_naissance soit au format chaîne lorsque vide
UPDATE rh.p_salaries
SET nom_naissance = ''
WHERE nom_naissance IS NULL
;
-- Extraction par nom
DROP TABLE IF EXISTS w_fusion_salaries;
CREATE TEMP TABLE w_fusion_salaries AS
SELECT *,
'0'::text AS origine,
base.cti_soundex_nom(nom) AS nom_soundex,
base.cti_soundex_prenom(prenom) AS prenom_soundex
FROM rh.p_salaries
WHERE nom <> '' AND
(nom_naissance = nom OR nom_naissance = '') AND
oid IN (SELECT salarie_id FROM rh.p_contrats);
-- Extraction par nom de naissance
INSERT INTO w_fusion_salaries
SELECT *,
'1'::text AS origine,
base.cti_soundex_nom(nom_naissance) AS nom_soundex,
base.cti_soundex_prenom(prenom) AS prenom_soundex
FROM rh.p_salaries
WHERE nom <> '' AND
nom_naissance <> '' AND
nom_naissance <> nom AND
oid IN (SELECT salarie_id FROM rh.p_contrats);
-- Table temporaire des personnes avec
-- regroupement par nom/nom_naissance, prénom, date_naissance, sexe
-- identifiant md5 (clé de la personne) utilisant nom de naissance
DROP TABLE IF EXISTS w_personne;
CREATE TEMP TABLE w_personne AS
SELECT COALESCE(salarie_courant_id, w_fusion_salaries.oid) AS salarie_courant_id,
md5(
MAX(
CASE WHEN w_fusion_salaries.oid = salarie_courant_id OR subview.salarie_courant_id IS NULL
THEN base.cti_soundex_nom(CASE WHEN nom_naissance <> '' THEN nom_naissance ELSE nom END)
|| base.cti_soundex_prenom(prenom)
|| w_fusion_salaries.date_naissance
|| w_fusion_salaries.sexe
ELSE NULL END)
) AS cle_interne,
MAX(CASE WHEN w_fusion_salaries.oid = salarie_courant_id OR subview.salarie_courant_id IS NULL THEN w_fusion_salaries.nom ELSE NULL END) AS nom,
MAX(CASE WHEN w_fusion_salaries.oid = salarie_courant_id OR subview.salarie_courant_id IS NULL THEN w_fusion_salaries.nom_naissance ELSE NULL END) AS nom_naissance,
MAX(CASE WHEN w_fusion_salaries.oid = salarie_courant_id OR subview.salarie_courant_id IS NULL THEN w_fusion_salaries.prenom ELSE NULL END) AS prenom,
MAX(w_fusion_salaries.date_naissance) AS date_naissance,
MAX(w_fusion_salaries.sexe) AS sexe,
MAX(CASE WHEN w_fusion_salaries.oid = salarie_courant_id OR subview.salarie_courant_id IS NULL THEN w_fusion_salaries.matricule ELSE NULL END) AS matricule_courant,
MAX(
CASE
WHEN w_fusion_salaries.oid = subview.salarie_courant_id THEN salarie_array_id
WHEN subview.salarie_courant_id IS NULL THEN Array[w_fusion_salaries.oid]
ELSE NULL END
) AS salarie_array_id
FROM w_fusion_salaries
LEFT JOIN
(
SELECT
nom_soundex,
prenom_soundex,
date_naissance,
sexe,
count(*) AS nb,
(MAX(ARRAY[date_debut::text,oid::text]))[2]::bigint AS salarie_courant_id,
base.cti_array_accum(w_fusion_salaries.oid) AS salarie_array_id
FROM w_fusion_salaries
GROUP BY 1,2,3,4
HAVING count(*) > 1
) subview ON
w_fusion_salaries.oid = ANY(salarie_array_id)
GROUP BY 1
;
-- Mise à jour table p_personnes
UPDATE rh.p_personne SET
nom = w_personne.nom,
nom_naissance = w_personne.nom_naissance,
prenom = w_personne.prenom,
salarie_courant_id = w_personne.salarie_courant_id,
salarie_array_id = w_personne.salarie_array_id,
matricule_courant = w_personne.matricule_courant
FROM w_personne
WHERE p_personne.cle_interne = w_personne.cle_interne AND
(
p_personne.nom IS DISTINCT FROM w_personne.nom OR
p_personne.nom_naissance IS DISTINCT FROM w_personne.nom_naissance OR
p_personne.prenom IS DISTINCT FROM w_personne.prenom OR
p_personne.salarie_courant_id IS DISTINCT FROM w_personne.salarie_courant_id OR
p_personne.salarie_array_id IS DISTINCT FROM w_personne.salarie_array_id OR
p_personne.matricule_courant IS DISTINCT FROM w_personne.matricule_courant
)
;
INSERT INTO rh.p_personne (cle_interne, nom, nom_naissance, prenom, date_naissance, sexe, salarie_courant_id, salarie_array_id, matricule_courant)
SELECT cle_interne, nom, nom_naissance, prenom, date_naissance, sexe, salarie_courant_id, salarie_array_id, matricule_courant
FROm w_personne
WHERE cle_interne NOT IN
(SELECT cle_interne FROM rh.p_personne)
;
-- Mise à jour table p_salaries
UPDATE rh.p_salaries SET
personne_id = p_personne.oid
FROM rh.p_personne
WHERE p_salaries.oid = ANY(p_personne.salarie_array_id)
;
RETURN 'OK';
END;

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

@ -0,0 +1,332 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
_module_pmsimco TEXT;
BEGIN
RAISE NOTICE '%' , 'Initialisation poles';
-- 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 rh
TRUNCATE rh.t_pole;
INSERT INTO rh.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
;
-- 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,
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_etablissement <> '' THEN '1' ELSE '0' END AS a_liste_etablissement,
string_to_array(translate(liste_etablissement,'*,','% '),' ') AS liste_etablissement,
NULL::bigint[] AS liste_etablissement_id ,
CASE WHEN liste_service <> '' THEN '1' ELSE '0' END AS a_liste_service,
string_to_array(translate(liste_service,'*,','% '),' ') AS liste_service,
NULL::bigint[] AS liste_service_id ,
CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite,
string_to_array(translate(liste_specialite,'*,','% '),' ') AS liste_specialite,
NULL::bigint[] AS liste_specialite_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_section_analytique_paie <> '' THEN '1' ELSE '0' END AS a_liste_section_analytique_paie,
string_to_array(translate(liste_section_analytique_paie,'*,','% '),' ') AS liste_section_analytique_paie,
NULL::bigint[] AS liste_section_analytique_paie_id ,
CASE WHEN liste_qualification <> '' THEN '1' ELSE '0' END AS a_liste_qualification,
string_to_array(translate(liste_qualification,'*,','% '),' ') AS liste_qualification,
NULL::bigint[] AS liste_qualification_id ,
CASE WHEN liste_grille <> '' THEN '1' ELSE '0' END AS a_liste_grille,
string_to_array(translate(liste_grille,'*,','% '),' ') AS liste_grille,
NULL::bigint[] AS liste_grille_id ,
CASE WHEN liste_code_emploi <> '' THEN '1' ELSE '0' END AS a_liste_code_emploi,
string_to_array(translate(liste_code_emploi,'*,','% '),' ') AS liste_code_emploi,
NULL::bigint[] AS liste_code_emploi_id ,
CASE WHEN liste_categorie_socio_professionnelle <> '' THEN '1' ELSE '0' END AS a_liste_categorie_socio_professionnelle,
string_to_array(translate(liste_categorie_socio_professionnelle,'*,','% '),' ') AS liste_categorie_socio_professionnelle,
NULL::bigint[] AS liste_categorie_socio_professionnelle_id ,
CASE WHEN liste_service_planning <> '' THEN '1' ELSE '0' END AS a_liste_service_planning,
string_to_array(translate(liste_service_planning,'*,','% '),' ') AS liste_service_planning,
NULL::bigint[] AS liste_service_planning_id
FROM rh.t_pole_rule
JOIN rh.t_pole ON pole_id = t_pole.oid
ORDER BY priorite, pole_id;
DELETE FROM w_pole_rule
WHERE
(a_liste_finess::int +
a_liste_etablissement::int +
a_liste_service::int +
a_liste_specialite::int +
a_liste_section_analytique::int +
a_liste_section_analytique_paie::int +
a_liste_qualification::int +
a_liste_grille::int +
a_liste_code_emploi::int +
a_liste_categorie_socio_professionnelle::int +
a_liste_service_planning::int) = 0
;
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_etablissement_id = (SELECT base.cti_group_array3(oid) FROM rh.t_etablissements WHERE oid <> 0 AND code LIKE ANY (liste_etablissement))
WHERE a_liste_etablissement = '1';
UPDATE w_pole_rule
SET liste_service_id = (SELECT base.cti_group_array3(oid) FROM rh.t_services WHERE oid <> 0 AND code LIKE ANY (liste_service))
WHERE a_liste_service = '1';
UPDATE w_pole_rule
SET liste_specialite_id = (SELECT base.cti_group_array3(oid) FROM rh.t_specialites WHERE oid <> 0 AND code LIKE ANY (liste_specialite))
WHERE a_liste_specialite = '1';
UPDATE w_pole_rule
SET liste_section_analytique_id = (SELECT base.cti_group_array3(oid) FROM rh.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_section_analytique_paie_id = (SELECT base.cti_group_array3(oid) FROM rh.t_sections_analytiques_paie WHERE oid <> 0 AND code LIKE ANY (liste_section_analytique_paie))
WHERE a_liste_section_analytique_paie = '1';
UPDATE w_pole_rule
SET liste_qualification_id = (SELECT base.cti_group_array3(oid) FROM rh.t_qualifications WHERE oid <> 0 AND code LIKE ANY (liste_qualification))
WHERE a_liste_qualification = '1';
UPDATE w_pole_rule
SET liste_grille_id = (SELECT base.cti_group_array3(oid) FROM rh.t_grilles WHERE oid <> 0 AND code LIKE ANY (liste_grille))
WHERE a_liste_grille = '1';
UPDATE w_pole_rule
SET liste_code_emploi_id = (SELECT base.cti_group_array3(oid) FROM rh.t_codes_emploi WHERE oid <> 0 AND code LIKE ANY (liste_code_emploi))
WHERE a_liste_code_emploi = '1';
UPDATE w_pole_rule
SET liste_categorie_socio_professionnelle_id = (SELECT base.cti_group_array3(oid) FROM rh.t_categories_socio_professionnelle WHERE oid <> 0 AND code LIKE ANY (liste_categorie_socio_professionnelle))
WHERE a_liste_categorie_socio_professionnelle = '1';
UPDATE w_pole_rule
SET liste_service_planning_id = (SELECT base.cti_group_array3(oid) FROM rh.t_planning_service WHERE oid <> 0 AND code LIKE ANY (liste_service_planning))
WHERE a_liste_service_planning = '1';
RAISE NOTICE '%' , 'Application des regles.'
;
DROP TABLE IF EXISTS w_profil_contrat_mois
;
CREATE TEMP TABLE w_profil_contrat_mois AS
SELECT
p_profil_contrat_mois.oid,
COALESCE(MIN(priorite),999999999) AS pole_priorite,
COALESCE((MIN(ARRAY[priorite,w_pole_rule.pole_id]))[2],0) AS pole_id
FROM rh.p_profil_contrat_mois
JOIN rh.p_contrats_mois ON p_profil_contrat_mois.contrat_mois_id = p_contrats_mois.oid
JOIN rh.t_etablissements ON t_etablissements.oid = p_contrats_mois.etablissement_id
JOIN rh.p_profils ON p_profil_contrat_mois.profil_id = p_profils.oid
JOIN w_pole_rule ON
(a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND
(a_liste_etablissement = '0' OR p_contrats_mois.etablissement_id = ANY (liste_etablissement_id)) AND
(a_liste_service = '0' OR p_profils.service_id = ANY (liste_service_id)) AND
(a_liste_specialite = '0' OR p_profils.specialite_id = ANY (liste_specialite_id)) AND
(a_liste_qualification = '0' OR p_profils.qualification_id = ANY (liste_qualification_id)) AND
(a_liste_section_analytique = '0' OR p_profils.section_analytique_id = ANY (liste_section_analytique_id)) AND
(a_liste_section_analytique_paie = '0' OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id)) AND
(a_liste_grille = '0' OR p_profils.grille_id = ANY (liste_grille_id)) AND
(a_liste_code_emploi = '0' OR p_profils.code_emploi_id = ANY (liste_code_emploi_id)) AND
(a_liste_categorie_socio_professionnelle = '0' OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
-- Pas de service planning.
WHERE
(a_liste_finess::int +
a_liste_etablissement::int +
a_liste_service::int +
a_liste_specialite::int +
a_liste_section_analytique::int +
a_liste_section_analytique_paie::int +
a_liste_qualification::int +
a_liste_grille::int +
a_liste_code_emploi::int +
a_liste_categorie_socio_professionnelle::int) > 0 OR
a_liste_service_planning::int = 0
GROUP BY 1
ORDER BY 2,1
;
DROP TABLE IF EXISTS w_contrats_mois
;
CREATE TEMP TABLE w_contrats_mois AS
SELECT
p_contrats_mois.oid,
COALESCE(MIN(priorite),999999999) AS pole_priorite,
COALESCE((MIN(ARRAY[priorite,w_pole_rule.pole_id]))[2],0) AS pole_id
FROM rh.p_contrats_mois
JOIN rh.t_etablissements ON t_etablissements.oid = p_contrats_mois.etablissement_id
JOIN rh.p_profils ON p_contrats_mois.profil_id = p_profils.oid
JOIN w_pole_rule ON
(a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND
(a_liste_etablissement = '0' OR p_contrats_mois.etablissement_id = ANY (liste_etablissement_id)) AND
(a_liste_service = '0' OR p_profils.service_id = ANY (liste_service_id)) AND
(a_liste_specialite = '0' OR p_profils.specialite_id = ANY (liste_specialite_id)) AND
(a_liste_qualification = '0' OR p_profils.qualification_id = ANY (liste_qualification_id)) AND
(a_liste_section_analytique = '0' OR p_profils.section_analytique_id = ANY (liste_section_analytique_id)) AND
(a_liste_section_analytique_paie = '0' OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id)) AND
(a_liste_grille = '0' OR p_profils.grille_id = ANY (liste_grille_id)) AND
(a_liste_code_emploi = '0' OR p_profils.code_emploi_id = ANY (liste_code_emploi_id)) AND
(a_liste_categorie_socio_professionnelle = '0' OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
-- Pas de service planning.
GROUP BY 1
ORDER BY 1
;
DROP TABLE IF EXISTS w_contrats
;
CREATE TEMP TABLE w_contrats AS
SELECT p_contrats.oid,
COALESCE(MIN(priorite),999999999) AS pole_priorite,
COALESCE((MIN(ARRAY[priorite,w_pole_rule.pole_id]))[2],0) AS pole_id
FROM rh.p_contrats
LEFT JOIN rh.t_etablissements ON t_etablissements.oid = etablissement_id
LEFT JOIN rh.p_profils ON p_contrats.profil_id = p_profils.oid
JOIN w_pole_rule ON
(a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND
(a_liste_etablissement = '0' OR p_contrats.etablissement_id = ANY (liste_etablissement_id)) AND
(a_liste_service = '0' OR p_profils.service_id = ANY (liste_service_id)) AND
(a_liste_specialite = '0' OR p_profils.specialite_id = ANY (liste_specialite_id)) AND
(a_liste_qualification = '0' OR p_profils.qualification_id = ANY (liste_qualification_id)) AND
(a_liste_section_analytique = '0' OR p_profils.section_analytique_id = ANY (liste_section_analytique_id)) AND
(a_liste_section_analytique_paie = '0' OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id)) AND
(a_liste_grille = '0' OR p_profils.grille_id = ANY (liste_grille_id)) AND
(a_liste_code_emploi = '0' OR p_profils.code_emploi_id = ANY (liste_code_emploi_id)) AND
(a_liste_categorie_socio_professionnelle = '0' OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
-- Pas de service planning.
GROUP BY 1
ORDER BY 1
;
DROP TABLE IF EXISTS w_planning_mouvement
;
CREATE TEMP TABLE w_planning_mouvement AS
SELECT
p_planning_mouvement.ctid as pm_ctid,
COALESCE(MIN(priorite),999999999) AS pole_priorite,
COALESCE((MIN(ARRAY[priorite,w_pole_rule.pole_id]))[2],0) AS pole_id
FROM rh.p_planning_mouvement
JOIN rh.p_contrats ON p_planning_mouvement.contrat_id = p_contrats.oid
JOIN rh.p_contrats_mois ON p_planning_mouvement.contrat_mois_id = p_contrats_mois.oid
JOIN rh.p_profil_contrat_mois ON p_profil_contrat_mois.contrat_mois_id = p_contrats_mois.oid
JOIN rh.p_profils ON p_profil_contrat_mois.profil_id = p_profils.oid
JOIN rh.t_etablissements ON t_etablissements.oid = p_planning_mouvement.etablissement_id
JOIN w_pole_rule ON 1=1
AND (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id))
AND (a_liste_etablissement = '0' OR p_planning_mouvement.etablissement_id = ANY (liste_etablissement_id))
AND (a_liste_service = '0' OR p_profils.service_id = ANY (liste_service_id))
AND (a_liste_specialite = '0' OR p_profils.specialite_id = ANY (liste_specialite_id))
AND (a_liste_qualification = '0' OR p_profils.qualification_id = ANY (liste_qualification_id))
AND (a_liste_section_analytique = '0' OR p_profils.section_analytique_id = ANY (liste_section_analytique_id))
AND (a_liste_section_analytique_paie = '0' OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id))
AND (a_liste_grille = '0' OR p_profils.grille_id = ANY (liste_grille_id))
AND (a_liste_code_emploi = '0' OR p_profils.code_emploi_id = ANY (liste_code_emploi_id))
AND (a_liste_categorie_socio_professionnelle = '0' OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
AND (a_liste_service_planning = '0' OR p_planning_mouvement.service_id = ANY (liste_service_planning_id))
GROUP BY 1
ORDER BY 1
;
RAISE NOTICE '%' , 'Application des regles. Validation des poles';
UPDATE rh.p_profil_contrat_mois SET
pole_id = w_profil_contrat_mois.pole_id
FROM w_profil_contrat_mois
WHERE p_profil_contrat_mois.oid = w_profil_contrat_mois.oid AND
p_profil_contrat_mois.pole_id IS DISTINCT FROM w_profil_contrat_mois.pole_id
;
UPDATE rh.p_profil_contrat_mois SET
pole_id = 0
WHERE 1=1
AND oid NOT IN (SELECT oid FROM w_profil_contrat_mois group by 1)
AND pole_id IS DISTINCT FROM 0
;
UPDATE rh.p_contrats_mois SET
pole_id = w_contrats_mois.pole_id
FROM w_contrats_mois
WHERE p_contrats_mois.oid = w_contrats_mois.oid AND
p_contrats_mois.pole_id IS DISTINCT FROM w_contrats_mois.pole_id
;
UPDATE rh.p_contrats_mois SET
pole_id = 0
WHERE 1=1
AND oid NOT IN (SELECT oid FROM w_contrats_mois group by 1)
AND pole_id IS DISTINCT FROM 0
;
UPDATE rh.p_contrats SET
pole_id = w_contrats.pole_id
FROM w_contrats
WHERE p_contrats.oid = w_contrats.oid AND
p_contrats.pole_id IS DISTINCT FROM w_contrats.pole_id
;
UPDATE rh.p_contrats SET
pole_id = 0
WHERE 1=1
AND oid NOT IN (SELECT oid FROM w_contrats group by 1)
AND pole_id IS DISTINCT FROM 0
;
with asso as (
select
p_planning_mouvement.ctid as pm_ctid,
coalesce(w_planning_mouvement.pole_id, 0) as pole_id
from rh.p_planning_mouvement
left join w_planning_mouvement on w_planning_mouvement.pm_ctid = p_planning_mouvement.ctid
)
UPDATE rh.p_planning_mouvement SET
pole_id = asso.pole_id
FROM asso
WHERE 1=1
AND p_planning_mouvement.ctid = asso.pm_ctid
AND p_planning_mouvement.pole_id IS DISTINCT FROM asso.pole_id
;
ANALYSE rh.p_profil_contrat_mois
;
ANALYSE rh.p_contrats_mois
;
ANALYSE rh.p_contrats
;
INSERT INTO rh.p_oids (code_table, oid)
SELECT 'pole', pole_id
FROM rh.p_profil_contrat_mois
WHERE pole_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'pole')
GROUP BY 2
;
RETURN 'OK';
END;

+ 338
- 0
db/schema2/functions/cti_reorganize_population.yaml View File

@ -0,0 +1,338 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
domains RECORD;
tmpSchema TEXT;
tmpTable TEXT;
tmpListe TEXT;
tmpReq TEXT;
BEGIN
RAISE NOTICE '%' , 'Initialisation Populations'
;
-- Contenu table
INSERT INTO rh.t_population(oid, code, texte, texte_court)
SELECT 0, chr(127) || '*', 'Non renseignée', 'N/R'
WHERE 0 NOT IN (SELECT oid FROM rh.t_population)
;
DROP TABLE IF EXISTS w_domains
;
CREATE TEMP TABLE w_domains AS
SELECT
domain
FROM unnest(ARRAY[
'base|t_finess|finess',
'rh|t_etablissements|etablissement',
'rh|t_services|service',
'rh|t_specialites|specialite',
'rh|t_sections_analytiques|section_analytique',
'rh|t_sections_analytiques_paie|section_analytique_paie',
'rh|t_qualifications|qualification',
'rh|t_grilles|grille',
'rh|t_codes_emploi|code_emploi',
'rh|t_categories_socio_professionnelle|categorie_socio_professionnelle',
'rh|t_statuts|statut'
]) as domain
;
tmpReq = '';
FOR domains IN SELECT * FROM w_domains LOOP
tmpSchema = split_part(domains.domain, '|', 1);
tmpTable = split_part(domains.domain, '|', 2);
tmpListe = split_part(domains.domain, '|', 3);
tmpReq = concat_ws(', ', tmpReq,
format('
(select coalesce(min(position (''^'' in token)) = 0, false)
from unnest(string_to_array(replace(liste_%s, '','', ''''), '' '')) as token
where length(trim(token)) > 0
) as has_liste_%s,
(select
array_agg(coalesce(table_liste.oid, listes.oid, classes.oid))
from unnest(string_to_array(replace(liste_%s, '','', ''''), '' '')) as token
left join %s.t_listes_tables on t_listes_tables.name = ''%s''
left join %s.%s as table_liste on table_liste.code like replace(trim(token), ''*'', ''%%'')
left join listes on listes.code like ''{''||t_listes_tables.code||''}''||replace(trim(token), ''*'', ''%%'')
left join classes on classes.code like ''{''||t_listes_tables.code||''}''||replace(trim(token), ''*'', ''%%'')
where 1=1
and token != ''''
and coalesce(table_liste.oid, listes.oid, classes.oid) is distinct from null
) as liste_%s_id', tmpListe, tmpListe, tmpListe, tmpSchema, tmpTable, tmpSchema, tmpTable, tmpListe),
format('
(select coalesce(max(position (''^'' in token)) > 0, false)
from unnest(string_to_array(replace(liste_%s, '','', ''''), '' '')) as token
where length(trim(token)) > 0
) as has_exc_liste_%s,
(select
array_agg(coalesce(table_liste.oid, listes_exc.oid, classes_exc.oid))
from unnest(string_to_array(replace(liste_%s, '','', ''''), '' '')) as token
left join %s.t_listes_tables on t_listes_tables.name = ''%s''
left join %s.%s as table_liste on ''^''||table_liste.code like replace(trim(token), ''*'', ''%%'')
left join listes_exc on listes_exc.code like ''{''||t_listes_tables.code||''}''||replace(trim(token), ''*'', ''%%'')
left join classes_exc on classes_exc.code like ''{''||t_listes_tables.code||''}''||replace(trim(token), ''*'', ''%%'')
where 1=1
and token != ''''
and coalesce(table_liste.oid, listes_exc.oid, classes_exc.oid) is distinct from null
) as liste_exc_%s_id', tmpListe, tmpListe, tmpListe, tmpSchema, tmpTable, tmpSchema, tmpTable, tmpListe));
END LOOP;
-- Traduction des règles en oid
RAISE NOTICE '%' , 'Application des regles. Traduction en oid'
;
DROP TABLE IF EXISTS w_population_regle
;
EXECUTE format('
CREATE TEMP TABLE w_population_regle AS
with listes as (
select
''{''||t_listes_tables.code||''}[LISTE:''||t_listes.code||'']'' as code,
t_listes_contenu.to_id as oid
from rh.t_listes
join rh.t_listes_tables on t_listes_tables.oid = t_listes.table_id
join rh.t_listes_contenu on t_listes_contenu.liste_id = t_listes.oid
UNION ALL
select
''{''||t_listes_tables.code||''}[LISTE:''||t_listes.code||'']'' as code,
t_listes_contenu.to_id as oid
from base.t_listes
join base.t_listes_tables on t_listes_tables.oid = t_listes.table_id
join base.t_listes_contenu on t_listes_contenu.liste_id = t_listes.oid
)
, classes as (
select
''{''||t_listes_tables.code||''}[CLASSE:''||t_classes.code||'':''||t_classes_sections.code||'']'' as code,
t_classes_sections_elements.to_id as oid
from rh.t_classes
join rh.t_listes_tables on t_listes_tables.oid = t_classes.table_id
join rh.t_classes_sections on t_classes_sections.classe_id = t_classes.oid
join rh.t_classes_sections_elements on t_classes_sections_elements.section_id = t_classes_sections.oid
UNION ALL
select
''{''||t_listes_tables.code||''}[CLASSE:''||t_classes.code||'':''||t_classes_sections.code||'']'' as code,
t_classes_sections_elements.to_id as oid
from base.t_classes
join base.t_listes_tables on t_listes_tables.oid = t_classes.table_id
join base.t_classes_sections on t_classes_sections.classe_id = t_classes.oid
join base.t_classes_sections_elements on t_classes_sections_elements.section_id = t_classes_sections.oid
)
, listes_exc as (
select
''{''||t_listes_tables.code||''}^[LISTE:''||t_listes.code||'']'' as code,
t_listes_contenu.to_id as oid
from rh.t_listes
join rh.t_listes_tables on t_listes_tables.oid = t_listes.table_id
join rh.t_listes_contenu on t_listes_contenu.liste_id = t_listes.oid
UNION ALL
select
''{''||t_listes_tables.code||''}^[LISTE:''||t_listes.code||'']'' as code,
t_listes_contenu.to_id as oid
from base.t_listes
join base.t_listes_tables on t_listes_tables.oid = t_listes.table_id
join base.t_listes_contenu on t_listes_contenu.liste_id = t_listes.oid
)
, classes_exc as (
select
''{''||t_listes_tables.code||''}^[CLASSE:''||t_classes.code||'':''||t_classes_sections.code||'']'' as code,
t_classes_sections_elements.to_id as oid
from rh.t_classes
join rh.t_listes_tables on t_listes_tables.oid = t_classes.table_id
join rh.t_classes_sections on t_classes_sections.classe_id = t_classes.oid
join rh.t_classes_sections_elements on t_classes_sections_elements.section_id = t_classes_sections.oid
UNION ALL
select
''{''||t_listes_tables.code||''}^[CLASSE:''||t_classes.code||'':''||t_classes_sections.code||'']'' as code,
t_classes_sections_elements.to_id as oid
from base.t_classes
join base.t_listes_tables on t_listes_tables.oid = t_classes.table_id
join base.t_classes_sections on t_classes_sections.classe_id = t_classes.oid
join base.t_classes_sections_elements on t_classes_sections_elements.section_id = t_classes_sections.oid
)
select
t_population_regle.oid,
population_id,
priorite
%s
from rh.t_population_regle
JOIN rh.t_population ON t_population.oid = t_population_regle.population_id
ORDER BY priorite, population_id
', tmpReq);
DROP TABLE IF EXISTS temp.toto
;
CREATE TABLE temp.toto AS
select * from w_population_regle
;
RAISE NOTICE '%' , tmpReq
;
RAISE NOTICE '%' , 'Application des regles.'
;
DROP TABLE IF EXISTS w_profil_contrat_mois
;
CREATE TEMP TABLE w_profil_contrat_mois AS
SELECT
p_profil_contrat_mois.oid,
COALESCE(MIN(priorite), 999999999) AS population_priorite,
COALESCE((MIN(ARRAY[priorite, w_population_regle.population_id]))[2], 0) AS population_id
FROM rh.p_profil_contrat_mois
JOIN rh.p_contrats_mois ON p_profil_contrat_mois.contrat_mois_id = p_contrats_mois.oid
JOIN rh.t_etablissements ON t_etablissements.oid = etablissement_id
JOIN rh.p_profils ON p_profil_contrat_mois.profil_id = p_profils.oid
JOIN w_population_regle ON true
AND (NOT has_liste_finess OR finess_id = ANY (liste_finess_id))
AND (NOT (has_exc_liste_finess AND liste_exc_finess_id IS NOT NULL) OR NOT (finess_id = ANY (liste_exc_finess_id)))
AND (NOT has_liste_etablissement OR etablissement_id = ANY (liste_etablissement_id))
AND (NOT (has_exc_liste_etablissement AND liste_exc_etablissement_id IS NOT NULL) OR NOT (etablissement_id = ANY (liste_exc_etablissement_id)))
AND (NOT has_liste_service OR p_profils.service_id = ANY (liste_service_id))
AND (NOT (has_exc_liste_service AND liste_exc_service_id IS NOT NULL) OR NOT (p_profils.service_id = ANY (liste_exc_service_id)))
AND (NOT has_liste_specialite OR p_profils.specialite_id = ANY (liste_specialite_id))
AND (NOT (has_exc_liste_specialite AND liste_exc_specialite_id IS NOT NULL) OR NOT (p_profils.specialite_id = ANY (liste_exc_specialite_id)))
AND (NOT has_liste_qualification OR p_profils.qualification_id = ANY (liste_qualification_id))
AND (NOT (has_exc_liste_qualification AND liste_exc_qualification_id IS NOT NULL) OR NOT (p_profils.qualification_id = ANY (liste_exc_qualification_id)))
AND (NOT has_liste_section_analytique OR p_profils.section_analytique_id = ANY (liste_section_analytique_id))
AND (NOT (has_exc_liste_section_analytique AND liste_exc_section_analytique_id IS NOT NULL) OR NOT (p_profils.section_analytique_id = ANY (liste_exc_section_analytique_id)))
AND (NOT has_liste_section_analytique_paie OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id))
AND (NOT (has_exc_liste_section_analytique_paie AND liste_exc_section_analytique_paie_id IS NOT NULL) OR NOT (p_profils.section_analytique_paie_id = ANY (liste_exc_section_analytique_paie_id)))
AND (NOT has_liste_grille OR p_profils.grille_id = ANY (liste_grille_id))
AND (NOT (has_exc_liste_grille AND liste_exc_grille_id IS NOT NULL) OR NOT (p_profils.grille_id = ANY (liste_exc_grille_id)))
AND (NOT has_liste_code_emploi OR p_profils.code_emploi_id = ANY (liste_code_emploi_id))
AND (NOT (has_exc_liste_code_emploi AND liste_exc_code_emploi_id IS NOT NULL) OR NOT (p_profils.code_emploi_id = ANY (liste_exc_code_emploi_id)))
AND (NOT has_liste_categorie_socio_professionnelle OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
AND (NOT (has_exc_liste_categorie_socio_professionnelle AND liste_exc_categorie_socio_professionnelle_id IS NOT NULL) OR NOT (p_profils.categorie_socio_professionnelle_id = ANY (liste_exc_categorie_socio_professionnelle_id)))
AND (NOT has_liste_statut OR p_profils.statut_id = ANY (liste_statut_id))
AND (NOT (has_exc_liste_statut AND liste_exc_statut_id IS NOT NULL) OR NOT (p_profils.statut_id = ANY (liste_exc_statut_id)))
GROUP BY 1
ORDER BY 2,1
;
DROP TABLE IF EXISTS w_contrats_mois
;
CREATE TEMP TABLE w_contrats_mois AS
SELECT
p_contrats_mois.oid,
COALESCE(MIN(priorite), 999999999) AS population_priorite,
COALESCE((MIN(ARRAY[priorite, w_population_regle.population_id]))[2], 0) AS population_id
FROM rh.p_contrats_mois
LEFT JOIN rh.t_etablissements ON t_etablissements.oid = etablissement_id
LEFT JOIN rh.p_profils ON p_contrats_mois.profil_id = p_profils.oid
JOIN w_population_regle ON true
AND (NOT has_liste_finess OR finess_id = ANY (liste_finess_id))
AND (NOT (has_exc_liste_finess AND liste_exc_finess_id IS NOT NULL) OR NOT (finess_id = ANY (liste_exc_finess_id)))
AND (NOT has_liste_etablissement OR etablissement_id = ANY (liste_etablissement_id))
AND (NOT (has_exc_liste_etablissement AND liste_exc_etablissement_id IS NOT NULL) OR NOT (etablissement_id = ANY (liste_exc_etablissement_id)))
AND (NOT has_liste_service OR p_profils.service_id = ANY (liste_service_id))
AND (NOT (has_exc_liste_service AND liste_exc_service_id IS NOT NULL) OR NOT (p_profils.service_id = ANY (liste_exc_service_id)))
AND (NOT has_liste_specialite OR p_profils.specialite_id = ANY (liste_specialite_id))
AND (NOT (has_exc_liste_specialite AND liste_exc_specialite_id IS NOT NULL) OR NOT (p_profils.specialite_id = ANY (liste_exc_specialite_id)))
AND (NOT has_liste_qualification OR p_profils.qualification_id = ANY (liste_qualification_id))
AND (NOT (has_exc_liste_qualification AND liste_exc_qualification_id IS NOT NULL) OR NOT (p_profils.qualification_id = ANY (liste_exc_qualification_id)))
AND (NOT has_liste_section_analytique OR p_profils.section_analytique_id = ANY (liste_section_analytique_id))
AND (NOT (has_exc_liste_section_analytique AND liste_exc_section_analytique_id IS NOT NULL) OR NOT (p_profils.section_analytique_id = ANY (liste_exc_section_analytique_id)))
AND (NOT has_liste_section_analytique_paie OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id))
AND (NOT (has_exc_liste_section_analytique_paie AND liste_exc_section_analytique_paie_id IS NOT NULL) OR NOT (p_profils.section_analytique_paie_id = ANY (liste_exc_section_analytique_paie_id)))
AND (NOT has_liste_grille OR p_profils.grille_id = ANY (liste_grille_id))
AND (NOT (has_exc_liste_grille AND liste_exc_grille_id IS NOT NULL) OR NOT (p_profils.grille_id = ANY (liste_exc_grille_id)))
AND (NOT has_liste_code_emploi OR p_profils.code_emploi_id = ANY (liste_code_emploi_id))
AND (NOT (has_exc_liste_code_emploi AND liste_exc_code_emploi_id IS NOT NULL) OR NOT (p_profils.code_emploi_id = ANY (liste_exc_code_emploi_id)))
AND (NOT has_liste_categorie_socio_professionnelle OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
AND (NOT (has_exc_liste_categorie_socio_professionnelle AND liste_exc_categorie_socio_professionnelle_id IS NOT NULL) OR NOT (p_profils.categorie_socio_professionnelle_id = ANY (liste_exc_categorie_socio_professionnelle_id)))
AND (NOT has_liste_statut OR p_profils.statut_id = ANY (liste_statut_id))
AND (NOT (has_exc_liste_statut AND liste_exc_statut_id IS NOT NULL) OR NOT (p_profils.statut_id = ANY (liste_exc_statut_id)))
GROUP BY 1
ORDER BY 1
;
DROP TABLE IF EXISTS w_contrats
;
CREATE TEMP TABLE w_contrats AS
SELECT
p_contrats.oid,
COALESCE(MIN(priorite), 999999999) AS population_priorite,
COALESCE((MIN(ARRAY[priorite, w_population_regle.population_id]))[2], 0) AS population_id
FROM rh.p_contrats
LEFT JOIN rh.t_etablissements ON t_etablissements.oid = etablissement_id
LEFT JOIN rh.p_profils ON p_contrats.profil_id = p_profils.oid
JOIN w_population_regle ON true
AND (NOT has_liste_finess OR finess_id = ANY (liste_finess_id))
AND (NOT (has_exc_liste_finess AND liste_exc_finess_id IS NOT NULL) OR NOT (finess_id = ANY (liste_exc_finess_id)))
AND (NOT has_liste_etablissement OR etablissement_id = ANY (liste_etablissement_id))
AND (NOT (has_exc_liste_etablissement AND liste_exc_etablissement_id IS NOT NULL) OR NOT (etablissement_id = ANY (liste_exc_etablissement_id)))
AND (NOT has_liste_service OR p_profils.service_id = ANY (liste_service_id))
AND (NOT (has_exc_liste_service AND liste_exc_service_id IS NOT NULL) OR NOT (p_profils.service_id = ANY (liste_exc_service_id)))
AND (NOT has_liste_specialite OR p_profils.specialite_id = ANY (liste_specialite_id))
AND (NOT (has_exc_liste_specialite AND liste_exc_specialite_id IS NOT NULL) OR NOT (p_profils.specialite_id = ANY (liste_exc_specialite_id)))
AND (NOT has_liste_qualification OR p_profils.qualification_id = ANY (liste_qualification_id))
AND (NOT (has_exc_liste_qualification AND liste_exc_qualification_id IS NOT NULL) OR NOT (p_profils.qualification_id = ANY (liste_exc_qualification_id)))
AND (NOT has_liste_section_analytique OR p_profils.section_analytique_id = ANY (liste_section_analytique_id))
AND (NOT (has_exc_liste_section_analytique AND liste_exc_section_analytique_id IS NOT NULL) OR NOT (p_profils.section_analytique_id = ANY (liste_exc_section_analytique_id)))
AND (NOT has_liste_section_analytique_paie OR p_profils.section_analytique_paie_id = ANY (liste_section_analytique_paie_id))
AND (NOT (has_exc_liste_section_analytique_paie AND liste_exc_section_analytique_paie_id IS NOT NULL) OR NOT (p_profils.section_analytique_paie_id = ANY (liste_exc_section_analytique_paie_id)))
AND (NOT has_liste_grille OR p_profils.grille_id = ANY (liste_grille_id))
AND (NOT (has_exc_liste_grille AND liste_exc_grille_id IS NOT NULL) OR NOT (p_profils.grille_id = ANY (liste_exc_grille_id)))
AND (NOT has_liste_code_emploi OR p_profils.code_emploi_id = ANY (liste_code_emploi_id))
AND (NOT (has_exc_liste_code_emploi AND liste_exc_code_emploi_id IS NOT NULL) OR NOT (p_profils.code_emploi_id = ANY (liste_exc_code_emploi_id)))
AND (NOT has_liste_categorie_socio_professionnelle OR p_profils.categorie_socio_professionnelle_id = ANY (liste_categorie_socio_professionnelle_id))
AND (NOT (has_exc_liste_categorie_socio_professionnelle AND liste_exc_categorie_socio_professionnelle_id IS NOT NULL) OR NOT (p_profils.categorie_socio_professionnelle_id = ANY (liste_exc_categorie_socio_professionnelle_id)))
AND (NOT has_liste_statut OR p_profils.statut_id = ANY (liste_statut_id))
AND (NOT (has_exc_liste_statut AND liste_exc_statut_id IS NOT NULL) OR NOT (p_profils.statut_id = ANY (liste_exc_statut_id)))
GROUP BY 1
ORDER BY 1
;
RAISE NOTICE '%' , 'Application des regles. Validation des Populations'
;
UPDATE rh.p_profil_contrat_mois SET
population_id[1] = w_profil_contrat_mois.population_id
FROM w_profil_contrat_mois
WHERE true
AND p_profil_contrat_mois.oid = w_profil_contrat_mois.oid
AND p_profil_contrat_mois.population_id[1] IS DISTINCT FROM w_profil_contrat_mois.population_id
;
UPDATE rh.p_profil_contrat_mois SET
population_id[1] = 0
WHERE true
AND oid NOT IN (SELECT oid FROM w_profil_contrat_mois)
AND population_id[1] IS DISTINCT FROM 0
;
UPDATE rh.p_contrats_mois SET
population_id[1] = w_contrats_mois.population_id
FROM w_contrats_mois
WHERE true
AND p_contrats_mois.oid = w_contrats_mois.oid
AND p_contrats_mois.population_id[1] IS DISTINCT FROM w_contrats_mois.population_id
;
UPDATE rh.p_contrats SET
population_id[1] = w_contrats.population_id
FROM w_contrats
WHERE true
AND p_contrats.oid = w_contrats.oid
AND p_contrats.population_id[1] IS DISTINCT FROM w_contrats.population_id
;
ANALYSE rh.p_profil_contrat_mois
;
ANALYSE rh.p_contrats_mois
;
ANALYSE rh.p_contrats
;
INSERT INTO rh.p_oids (code_table, oid)
SELECT 'population', population_id[1]
FROM rh.p_profil_contrat_mois
WHERE population_id[1] NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'population')
GROUP BY 2
;
RETURN 'OK'
;
END;

+ 102
- 0
db/schema2/functions/cti_reorganize_profils.yaml View File

@ -0,0 +1,102 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
_champs TEXT[];
_i INTEGER;
_table TEXT;
_champ TEXT;
_affectations TEXT;
_selects TEXT;
_tests TEXT;
_joins TEXT;
_sqlcmd TEXT;
_affected_rows bigint;
BEGIN
-- Salariés sans profil
UPDATE rh.p_salaries
SET profil_id = 0
WHERE profil_id IS NULL;
INSERT INTO rh.p_profils(oid)
SELECT 0
WHERE 0 NOT IN (SELECT oid FROM rh.p_profils) AND
0 IN (SELECT profil_id FROM rh.p_salaries WHERE profil_id = 0);
-- Initialisation des champs
_champs = Array[
't_types_contrat', 'type_contrat',
't_motifs_debut_contrat', 'motif_debut',
't_motifs_fin_contrat', 'motif_fin',
't_qualifications', 'qualification',
't_services', 'service',
't_specialites', 'specialite',
't_types_temps_travail', 'type_temps_travail',
't_categories_socio_professionnelle', 'categorie_socio_professionnelle',
't_statuts', 'statut',
't_codes_emploi', 'code_emploi',
't_societes_interim', 'societe_interim',
't_sections_analytiques_paie', 'section_analytique_paie',
't_sections_analytiques', 'section_analytique',
't_grilles', 'grille',
't_grilles_groupes', 'grille_groupe',
't_types_horaire', 'type_horaire',
't_groupes_cotisant', 'groupe_cotisant',
't_cadre_emploi', 'cadre_emploi',
't_categorie_conge', 'categorie_conge',
't_categorie_statutaire', 'categorie_statutaire',
't_commission_paritaire', 'commission_paritaire',
't_compte', 'compte_salarie',
't_filiere', 'filiere',
't_lettre_budgetaire', 'lettre_budgetaire',
't_unite_fonctionnelle', 'unite_fonctionnelle'
];
_i = 0;
_affectations = '';
_selects = '';
_joins = '';
_tests = '';
WHILE _i <= 48 LOOP
_i = _i + 1;
_table = _champs[_i];
_i = _i + 1;
_champ = _champs[_i];
IF _affectations <> '' THEN
_affectations = _affectations || ', ' || chr(10);
END IF;
IF _selects <> '' THEN
_selects = _selects || ', ' || chr(10);
END IF;
IF _tests <> '' THEN
_tests = _tests || ' OR ' || chr(10);
END IF;
_affectations = _affectations || _champ || '_id = new_' || _champ || '_id, ' || chr(10);
_affectations = _affectations || _champ || '_code = new_' || _champ || '_code, ' || chr(10);
_affectations = _affectations || _champ || '_texte = new_' || _champ || '_texte';
_selects = _selects || 'COALESCE(' || _table || '.oid,0) AS new_' || _champ || '_id, ' || chr(10);
_selects = _selects || 'COALESCE(' || _table || '.code,' || _table || '_0.code) AS new_' || _champ || '_code, ' || chr(10);
_selects = _selects || 'COALESCE(' || _table || '.texte,' || _table || '_0.texte) AS new_' || _champ || '_texte';
_joins = _joins || chr(10) || 'LEFT JOIN rh.' || _table || ' ' || _table || '_0 ON ' || _table || '_0.oid = 0';
_joins = _joins || chr(10) || 'LEFT JOIN rh.' || _table || ' ON ' || _table || '.code_original = ' || _champ || '_code_original';
_tests = _tests || _champ || '_id IS DISTINCT FROM new_' || _champ || '_id OR ' || chr(10);
_tests = _tests || _champ || '_code IS DISTINCT FROM new_' || _champ || '_code OR ' || chr(10);
_tests = _tests || _champ || '_texte IS DISTINCT FROM new_' || _champ || '_texte';
END LOOP;
_sqlcmd = 'UPDATE rh.p_profils SET' || chr(10);
_sqlcmd = _sqlcmd || _affectations || chr(10);
_sqlcmd = _sqlcmd || 'FROM (' || chr(10);
_sqlcmd = _sqlcmd || 'SELECT' || chr(10);
_sqlcmd = _sqlcmd || 'p_profils.oid AS new_profil_id,' || chr(10);
_sqlcmd = _sqlcmd || _selects || chr(10);
_sqlcmd = _sqlcmd || 'FROM rh.p_profils' || chr(10);
_sqlcmd = _sqlcmd || _joins || chr(10);
_sqlcmd = _sqlcmd || ') subview' || chr(10);
_sqlcmd = _sqlcmd || 'WHERE p_profils.oid = new_profil_id AND' || chr(10);
_sqlcmd = _sqlcmd || '(' || _tests || ')';
EXECUTE _sqlcmd;
GET DIAGNOSTICS _affected_rows = ROW_COUNT;
return (_affected_rows::text || ' ligne(s) modifiée(s)')::text;
END;

+ 52
- 0
db/schema2/functions/cti_reorganize_profils_table~tx,tx.yaml View File

@ -0,0 +1,52 @@
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;
t0 timestamp;
t1 timestamp;
t2 timestamp;
t3 timestamp;
BEGIN
w_tablename = tablename;
IF w_tablename = '' THEN
w_tablename = 't_codes_emploi';
END IF;
w_field_prefix = field_prefix;
IF w_field_prefix = '' THEN
w_field_prefix = 'code_emploi';
END IF;
RAISE NOTICE 'Traitement de %', w_tablename;
t0 = clock_timestamp();
EXECUTE 'UPDATE rh.p_profils
SET ' || w_field_prefix || '_id = ' || w_tablename || '.oid
FROM rh.' || w_tablename || '
WHERE ' || w_tablename || '.code_original = p_profils.' || w_field_prefix || '_code_original
AND ' || w_field_prefix || '_id IS DISTINCT FROM ' || w_tablename || '.oid;';
t1 = clock_timestamp();
EXECUTE 'UPDATE rh.p_profils SET ' || w_field_prefix || '_id = 0 WHERE ' || w_field_prefix || '_id IS NULL;';
t2 = clock_timestamp();
EXECUTE 'UPDATE rh.p_profils
SET
' || w_field_prefix || '_code = ' || w_tablename || '.code,
' || w_field_prefix || '_texte = ' || w_tablename || '.texte
FROM rh.' || w_tablename || '
WHERE ' || w_tablename || '.oid = p_profils.' || 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);';
t3 = clock_timestamp();
RAISE NOTICE 'Total % (1 : %; 2 : %; 3 : %)', t3 - t0, t1 - t0, t2 - t1, t3 - t2;
RETURN 'OK';
END;

+ 82
- 0
db/schema2/functions/cti_shs_multicode~tx,tx.yaml View File

@ -0,0 +1,82 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: i_from_table
p1:
type: text
name: i_to_table
src: |
DECLARE
_sqlcmd TEXT;
result TEXT;
BEGIN
IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = i_to_table) THEN
_sqlcmd = '
CREATE TEMP TABLE ' || i_to_table || '
(
XXCENT numeric,
XXCETS numeric,
XXCODO text,
XXCODE text,
in_code text,
in_code_original text,
in_texte text,
in_id bigint
);
CREATE INDEX ' || i_to_table || '_i1 ON ' || i_to_table || ' USING btree(XXCODO)
'
;
EXECUTE _sqlcmd;
END IF;
-- Table de correspondance
_sqlcmd = '
TRUNCATE ' || i_to_table || '
;
INSERT INTO ' || i_to_table || '
SELECT
XXCENT,
XXCETS,
XXCODO,
XXCODE,
XXCODE ||
CASE WHEN base.cti_soundex_nom(replace(XXTEXT,''.'','''')) <> XXTEXT_STD_soundex THEN
''('' || XXCENT || ''.'' || XXCETS || '')''
ELSE '''' END
AS in_code,
XXCODO ||
CASE WHEN base.cti_soundex_nom(replace(XXTEXT,''.'','''')) <> XXTEXT_STD_soundex THEN
''_'' || to_char(XXCENT,''FM000'') || to_char(XXCETS,''FM000'')
ELSE '''' END
AS in_code_original,
CASE WHEN base.cti_soundex_nom(replace(XXTEXT,''.'','''')) <> XXTEXT_STD_soundex THEN XXTEXT ELSE XXTEXT_STD END AS in_texte,
0::bigint AS in_id
FROM
' || i_from_table || '
JOIN
(
SELECT XXCODE AS XXCODE_STD,
(MAX(Array[key, XXTEXT_soundex]))[2] AS XXTEXT_STD_soundex,
(MAX(Array[key, XXTEXT_STD]))[2] AS XXTEXT_STD
FROM
(
SELECT XXCODE,
base.cti_soundex_nom(replace(XXTEXT,''.'','''')) AS XXTEXT_soundex,
MIN(XXTEXT) AS XXTEXT_STD,
to_char(count(*),''FM0000000000'') || MIN(to_char(XXCENT,''FM000'') || to_char(XXCETS,''FM000'')) AS key
FROM ' || i_from_table || '
GROUP BY 1,2
) subview
GROUP BY 1
) cti_shs_multicode_std
ON XXCODE = XXCODE_STD
ORDER BY 3,5
;'
;
EXECUTE _sqlcmd;
RETURN 'OK';
END;

+ 23
- 0
db/schema2/functions/cti_to_date~ae,ae,ae.yaml View File

@ -0,0 +1,23 @@
return: date
lang: plpgsql
parameters:
p0:
type: anyelement
p1:
type: anyelement
p2:
type: anyelement
strict: STRICT
src: |
DECLARE
i_year text;
i_month text;
i_day text;
return_date date;
BEGIN
i_year = $1;
i_month = $2;
i_day = $3;
return_date = to_date(lpad(i_year, 4, '0') || lpad(i_month, 2, '0') || lpad(i_day, 2, '0'), 'YYYYMMDD');
return return_date;
END;

+ 49
- 0
db/schema2/functions/cti_update_effectif_permanent.yaml View File

@ -0,0 +1,49 @@
return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
with eff_perm_0 as (
select
p_contrats_mois.oid,
p_contrats_mois.salarie_id,
p_contrats_mois.mois_activite,
sum(case when bool_and(p_profils.type_contrat_section_code[9] = 'CDI' and p_profils.type_temps_travail_section_code[9] = 'TC')
then
case when to_char(p_contrats_mois.date_fin, 'YYYYMM') != p_contrats_mois.mois_activite then base.cti_last_day((p_contrats_mois.mois_activite||'01')::date) else p_contrats_mois.date_fin end
- case when to_char(p_contrats_mois.date_debut, 'YYYYMM') != p_contrats_mois.mois_activite then base.cti_first_day((p_contrats_mois.mois_activite||'01')::date) else p_contrats_mois.date_debut end
+ 1
else 0 end
)
over (partition by p_contrats_mois.salarie_id, substr(p_contrats_mois.mois_activite, 1, 4) order by p_contrats_mois.date_debut) as duree
from rh.p_contrats_mois
join rh.p_profil_contrat_mois on p_profil_contrat_mois.contrat_mois_id = p_contrats_mois.oid
join rh.p_profils on p_profils.oid = p_profil_contrat_mois.profil_id
group by 1,2,3, p_contrats_mois.date_debut, p_contrats_mois.date_fin, p_contrats_mois.mois_activite
window w as (partition by p_contrats_mois.salarie_id, p_contrats_mois.mois_activite))
, eff_perm_1 as (
select
array_agg(oid) as arr_oid,
salarie_id,
mois_activite,
case when sum(base.cti_last_day((mois_activite||'01')::date) - base.cti_first_day((substr(mois_activite, 1, 4)||'0101')::date)) + 1 = duree
then 1 else 0 end as effectif_permanent
from eff_perm_0
GROUP BY salarie_id, mois_activite, duree
)
, eff_perm as (
select
unnest(arr_oid) as oid,
effectif_permanent
from eff_perm_1
)
update rh.p_contrats_mois set
effectif_permanent = eff_perm.effectif_permanent
from eff_perm
where true
and p_contrats_mois.oid = eff_perm.oid
and p_contrats_mois.effectif_permanent is distinct from eff_perm.effectif_permanent
;
return 'OK';
END;

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

@ -0,0 +1,165 @@
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') THEN
PERFORM base.cti_initialize_classes_by_code('rh');
PERFORM base.cti_initialize_listes_by_code('rh');
END IF;
IF (i_table_code = 'ANA' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_section_analytique'', ''ANA'','''');';
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_ventilation_section'', ''ANA'',''section_analytique_section'');';
END IF;
IF (i_table_code = 'AGE' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_ages'', ''AGE'','''');';
END IF;
IF (i_table_code = 'ANC' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_anciennetes_annee'', ''ANC'','''');';
END IF;
IF (i_table_code = 'CPO' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_codes_postaux'', ''CPO'','''');';
END IF;
IF (i_table_code = 'CPT' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_compte'', ''CPT'','''');';
END IF;
IF (i_table_code = 'ETS' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_etablissements'', ''ETS'','''');';
END IF;
IF (i_table_code = 'COM' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_compte'', ''COM'','''');';
END IF;
IF (i_table_code = 'MOA' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_motifs_arret'', ''MOA'','''');';
END IF;
IF (i_table_code = 'NAT' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_nationalites'', ''NAT'','''');';
END IF;
IF (i_table_code = 'ORC' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_organismes_cotisation'', ''ORC'','''');';
END IF;
IF (i_table_code = 'CAE' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''CAE'',''cadre_emploi_section'');';
END IF;
IF (i_table_code = 'CAC' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''CAC'',''categorie_conge_section'');';
END IF;
IF (i_table_code = 'CSC' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''CSC'',''categorie_socio_professionnelle_section'');';
END IF;
IF (i_table_code = 'CAS' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''CAS'',''categorie_statutaire_section'');';
END IF;
IF (i_table_code = 'CEM' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''CEM'',''code_emploi_section'');';
END IF;
IF (i_table_code = 'GCP' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''GCP'',''commission_paritaire_section'');';
END IF;
IF (i_table_code = 'COI' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''COI'',''compte_salarie_section'');';
END IF;
IF (i_table_code = 'FIL' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''FIL'',''filiere_section'');';
END IF;
IF (i_table_code = 'GCT' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''GCT'',''groupe_cotisant_section'');';
END IF;
IF (i_table_code = 'GRG' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''GRG'',''grille_groupe_section'');';
END IF;
IF (i_table_code = 'GRI' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''GRI'',''grille_section'');';
END IF;
IF (i_table_code = 'LEB' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''LEB'',''lettre_budgetaire_section'');';
END IF;
IF (i_table_code = 'MTD' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''MTD'',''motif_debut_section'');';
END IF;
IF (i_table_code = 'MTF' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''MTF'',''motif_fin_section'');';
END IF;
IF (i_table_code = 'PNI' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_planning_niveau'', ''PNI'','''');';
END IF;
IF (i_table_code = 'SER' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''SER'',''service_section'');';
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_planning_service'', ''SER'',''service_section'');';
END IF;
IF (i_table_code = 'QUA' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''QUA'',''qualification_section'');';
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_planning_qualification'', ''QUA'',''qualification_section'');';
END IF;
IF (i_table_code = 'SAC' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''SAC'',''section_analytique_section'');';
END IF;
IF (i_table_code = 'SAP' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''SAP'',''section_analytique_paie_section'');';
END IF;
IF (i_table_code = 'SPE' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''SPE'',''specialite_section'');';
END IF;
IF (i_table_code = 'STA' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''STA'',''statut_section'');';
END IF;
IF (i_table_code = 'TCN' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''TCN'',''type_contrat_section'');';
END IF;
IF (i_table_code = 'THO' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''THO'',''type_horaire_section'');';
END IF;
IF (i_table_code = 'TTT' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''TTT'',''type_temps_travail_section'');';
END IF;
IF (i_table_code = 'UNF' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_profils'', ''UNF'',''unite_fonctionnelle_section'');';
END IF;
IF (i_table_code = 'RUP' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_rubriques'', ''RUP'','''');';
END IF;
IF (i_table_code = 'SAL' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''p_salaries'', ''SAL'','''');';
END IF;
IF (i_table_code = 'PQU' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_planning_qualification'', ''PQU'','''');';
END IF;
IF (i_table_code = 'PSE' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_planning_service'', ''PSE'','''');';
END IF;
IF (i_table_code = 'PAB' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_planning_type_absence'', ''PAB'','''');';
END IF;
IF (i_table_code = 'PCH' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT base.cti_update_classes(''rh'', ''t_planning_code_horaire'', ''PCH'','''');';
END IF;
IF (i_table_code = 'TCN' OR i_table_code = 'TTT' OR i_table_code = '*ALL') THEN
EXECUTE 'SELECT rh.cti_update_effectif_permanent();';
END IF;
IF (i_table_code = 'POLE' OR i_table_code = '*ALL') THEN
PERFORM base.cti_update_classes('base', 't_pole', 'POLE','');
UPDATE rh.t_pole SET
section_id = t_pole.section_id,
section_code = t_pole.section_code,
section_texte = t_pole.section_texte
FROM base.t_pole as t_pole_base
WHERE t_pole.oid = t_pole_base.oid AND
(
t_pole.section_id IS DISTINCT FROM t_pole_base.section_id OR
t_pole.section_code IS DISTINCT FROM t_pole_base.section_code OR
t_pole.section_texte IS DISTINCT FROM t_pole_base.section_texte
)
;
END IF;
RETURN 'OK';
END;

+ 23
- 0
db/schema2/functions/cti_util_translate_list~tx.yaml View File

@ -0,0 +1,23 @@
return: text
lang: plpgsql
parameters:
p0:
type: text
name: i_liste
src: |
DECLARE
_liste text;
BEGIN
_liste = i_liste;
_liste = trim(translate(COALESCE(_liste,''),'"' || chr(9) || chr(10) || chr(13),' '));
_liste = replace(_liste,' ',' ');
_liste = replace(_liste,' ',' ');
_liste = replace(_liste,' ',' ');
_liste = replace(_liste,' ',' ');
_liste = (SELECT coalesce(base.cti_group_concat_without_sep(code || ' '), '')
FROM
(SELECT code FROM base.cti_unnest(string_to_array(_liste,' ')) AS code ORDER BY 1) subview
);
RETURN _liste ;
END;

+ 5
- 0
db/schema2/sequences/s_accident_circonstance.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_accident_lieu.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_accident_nature.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_accident_siege.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_accident_travail.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_arrets_travail.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_cle.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_cle_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_cadre_emploi.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_categorie_conge.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_categorie_statutaire.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_categories_socio_professionnelles.yaml View File

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

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

Loading…
Cancel
Save