diff --git a/Bootstrap_new/css/custom.css b/Bootstrap_new/css/custom.css
index d7e8beba..daa9aadd 100755
--- a/Bootstrap_new/css/custom.css
+++ b/Bootstrap_new/css/custom.css
@@ -18,7 +18,7 @@ color:white
}
.active-submenu{
color:black !important;
- width:250px;
+ width:150px;
font-weight: 700;
/* background:#857a7a */
/* text-decoration: underline; */
@@ -33,9 +33,9 @@ color:white
}
.sidebar-nav .nav-content a:hover{
- color:grey !important
+ color:#cac2a4 !important;
/* background:grey !important */
-
+ font-weight: bold !important;
}
.nav-item:hover .bi, .nav-item:hover .bx, .nav-item:hover .collapsed{
@@ -109,10 +109,6 @@ visibility:hidden
margin-right:2px;
}
-.active-main{
-color: red;
-}
-
/* style la barre de navigation horizontale */
div.scrollmenu {
@@ -209,7 +205,7 @@ padding:5px
}
.sidebar-nav .nav-link{
-width:180px
+width:190px
}
#main{
diff --git a/Bootstrap_new/css/theme-modern.css b/Bootstrap_new/css/theme-modern.css
index b695e7f5..c942aba0 100644
--- a/Bootstrap_new/css/theme-modern.css
+++ b/Bootstrap_new/css/theme-modern.css
@@ -1,6 +1,7 @@
/* =============================
- INTER SANTÉ — THEME MODERN
- SaaS Premium UI v2025
+ INTER SANTÉ — THEME NEUTRAL PRO
+ SaaS Minimal UI v2025
+ Palette : Charcoal · Gris · Blanc
============================= */
/* === FONTS === */
@@ -8,36 +9,36 @@
/* === CSS VARIABLES === */
:root {
- /* Brand Colors */
- --color-primary: #1a6b4a;
- --color-primary-light: #25a06e;
- --color-primary-dark: #114532;
- --color-primary-ghost: rgba(26, 107, 74, 0.08);
+ /* Brand Colors — Charcoal / Gris neutre (zéro vert) */
+ --color-primary: #212E53; /*#2e3440;*/ /* charcoal foncé */
+ --color-primary-light: #4c566a; /* slate moyen */
+ --color-primary-dark: #1a1d24; /* quasi-noir */
+ --color-primary-ghost: rgba(46, 52, 64, 0.07);
- /* Accent / Status */
- --color-accent: #0abf7c;
- --color-urgent: #e63946;
- --color-warning: #f4a261;
- --color-success: #2ec4b6;
- --color-info: #3a86ff;
- --color-neutral: #6c757d;
+ /* Accent / Status — conservés pour lisibilité fonctionnelle */
+ --color-accent: #5e6e82; /* gris-bleu neutre */
+ --color-urgent: #c0392b;
+ --color-warning: #e67e22;
+ --color-success: #27ae60;
+ --color-info: #2980b9;
+ --color-neutral: #7f8c8d;
/* Backgrounds */
- --bg-base: #f4f6f9;
+ --bg-base: #f2f3f5;
--bg-surface: #ffffff;
- --bg-surface-2: #f8fafc;
- --bg-sidebar: #ffffff;
+ --bg-surface-2: #f8f9fa;
+ --bg-sidebar: #7A90A4;/*#1e2228;*/ /* charcoal très sombre */
--bg-header: #ffffff;
- /* Text */
- --text-primary: #1a2332;
- --text-secondary: #6b7280;
- --text-muted: #9ca3af;
+ /* Text — contraste maximal */
+ --text-primary: #1a1d24;
+ --text-secondary: #4c566a;
+ --text-muted: #7b8a99;
--text-inverse: #ffffff;
/* Borders */
- --border-light: #e8ecf0;
- --border-medium: #d1d5db;
+ --border-light: #e3e6ea;
+ --border-medium: #c8cdd4;
/* Spacing & Radius */
--radius-sm: 6px;
@@ -46,13 +47,13 @@
--radius-xl: 24px;
--radius-full: 9999px;
- /* Shadows */
- --shadow-xs: 0 1px 3px rgba(0,0,0,.05), 0 1px 2px rgba(0,0,0,.04);
- --shadow-sm: 0 2px 8px rgba(0,0,0,.07), 0 1px 3px rgba(0,0,0,.05);
- --shadow-md: 0 4px 16px rgba(0,0,0,.08), 0 2px 6px rgba(0,0,0,.05);
- --shadow-lg: 0 8px 32px rgba(0,0,0,.10), 0 4px 12px rgba(0,0,0,.06);
- --shadow-xl: 0 16px 48px rgba(0,0,0,.12), 0 8px 24px rgba(0,0,0,.07);
- --shadow-primary: 0 4px 20px rgba(26,107,74,.25);
+ /* Shadows — neutres, sans teinte colorée */
+ --shadow-xs: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
+ --shadow-sm: 0 2px 8px rgba(0,0,0,.08), 0 1px 3px rgba(0,0,0,.05);
+ --shadow-md: 0 4px 16px rgba(0,0,0,.10), 0 2px 6px rgba(0,0,0,.06);
+ --shadow-lg: 0 8px 32px rgba(0,0,0,.12), 0 4px 12px rgba(0,0,0,.07);
+ --shadow-xl: 0 16px 48px rgba(0,0,0,.14), 0 8px 24px rgba(0,0,0,.08);
+ --shadow-primary: 0 4px 20px rgba(30,34,40,.20);
/* Transitions */
--transition-fast: 0.15s ease;
@@ -60,7 +61,7 @@
--transition-slow: 0.4s cubic-bezier(.4,0,.2,1);
/* Layout */
- --sidebar-width: 240px;
+ --sidebar-width: 200px;
--sidebar-collapsed: 68px;
--header-height: 64px;
--context-width: 320px;
@@ -104,7 +105,7 @@ h1, h2, h3, h4, h5, h6,
}
#header.mode-test {
- background: linear-gradient(90deg, #7b2d00, #c0392b);
+ background: linear-gradient(90deg, #5d0000, #c0392b);
}
#header .logo {
@@ -155,8 +156,9 @@ h1, h2, h3, h4, h5, h6,
transition: color var(--transition-fast);
}
.breadcrumb-item a:hover { color: var(--color-primary); }
-.breadcrumb-item.active { color: var(--color-primary); font-weight: 600; }
+.breadcrumb-item.active { color: var(--color-primary); }
.breadcrumb-item + .breadcrumb-item::before { color: var(--border-medium); }
+#descriptionVue{color:#212E53 !important; font-weight: bold;}
/* Header Nav Icons */
#header .header-nav .nav-link {
@@ -273,15 +275,16 @@ h1, h2, h3, h4, h5, h6,
overflow-x: hidden;
transition: width var(--transition-slow);
z-index: 900;
- padding: 12px 8px;
+ padding: 8px 4px;
}
+/* Liseré supérieur discret — gris clair */
#sidebar::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 2px;
- background: linear-gradient(90deg, var(--color-accent), var(--color-primary-light));
+ background: linear-gradient(90deg, #4c566a, #7b8a99);
}
/* Sidebar Nav */
@@ -333,8 +336,9 @@ h1, h2, h3, h4, h5, h6,
white-space: nowrap;
}
+/* Active item : blanc brillant */
.sidebar-nav > .nav-item > .nav-link span.active-main {
- color: var(--color-accent);
+ color: var(--text-primary);
font-weight: 700;
}
@@ -345,7 +349,6 @@ h1, h2, h3, h4, h5, h6,
flex-shrink: 0;
}
-/* Rotates chevron when open */
.sidebar-nav > .nav-item > .nav-link[aria-expanded="true"] .bi-chevron-down {
transform: rotate(180deg);
opacity: 1;
@@ -356,7 +359,7 @@ h1, h2, h3, h4, h5, h6,
list-style: none;
padding: 4px 0 4px 32px;
margin: 0;
- background: rgba(0,0,0,0.15);
+ background: rgba(0,0,0,0.18);
border-radius: var(--radius-sm);
margin-bottom: 2px;
}
@@ -378,19 +381,20 @@ h1, h2, h3, h4, h5, h6,
.sidebar-nav .nav-content li a:hover {
color: white;
background: rgba(255,255,255,0.07);
- border-left-color: var(--color-accent);
+ border-left-color: rgba(255,255,255,0.5);
padding-left: 14px;
}
+/* Sous-menu actif : fond blanc translucide + bordure blanche */
.sidebar-nav .nav-content li a.active-submenu {
- color: var(--color-accent);
- background: rgba(10,191,124,0.12);
- border-left-color: var(--color-accent);
+ color: #ffffff;
+ background: rgba(255,255,255,0.12);
+ border-left-color: #ffffff;
font-weight: 600;
- padding-left: 14px;
+ padding-left: 10px;
+ width: 100% !important;
}
-/* Active indicator dot */
.sidebar-nav .nav-content li a.active-submenu::after {
content: '';
position: absolute;
@@ -400,7 +404,7 @@ h1, h2, h3, h4, h5, h6,
width: 5px;
height: 5px;
border-radius: 50%;
- background: var(--color-accent);
+ background: rgba(255,255,255,0.8);
}
/* Separator label */
@@ -410,11 +414,39 @@ h1, h2, h3, h4, h5, h6,
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
- color: rgba(255,255,255,0.3);
+ color: rgba(255,255,255,0.28);
padding: 12px 10px 4px;
margin-top: 4px;
}
+.sidebar-footer {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ padding: 15px;
+ border-top: 1px solid var(--border-light);
+ background: var(--bg-sidebar); /* Garde la couleur de ta sidebar */
+}
+
+.version-info {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 0.7rem;
+ color: rgba(255, 255, 255, 0.4); /* Très discret sur fond sombre */
+ font-family: 'DM Sans', sans-serif;
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+}
+
+.version-tag {
+ background: rgba(255, 255, 255, 0.1);
+ padding: 2px 6px;
+ border-radius: 4px;
+ font-weight: 700;
+}
+
/* ==============================
MAIN CONTENT
============================== */
@@ -441,7 +473,7 @@ h1, h2, h3, h4, h5, h6,
background: var(--bg-surface);
border-radius: var(--radius-md);
box-shadow: var(--shadow-xs);
- margin: 0 16px 16px;
+ margin: 0 1px 16px;
scrollbar-width: none;
}
.scrollmenu::-webkit-scrollbar { display: none; }
@@ -462,7 +494,7 @@ h1, h2, h3, h4, h5, h6,
.scrollmenu a:hover {
background: var(--color-primary-ghost);
color: var(--color-primary);
- border-color: rgba(26,107,74,0.2);
+ border-color: rgba(46,52,64,0.15);
}
.scrollmenu a.active {
@@ -473,7 +505,7 @@ h1, h2, h3, h4, h5, h6,
/* Page content wrapper */
.page-content {
- padding: 0 16px;
+ padding: 26px 0px;
}
/* Fixed header within main */
@@ -482,17 +514,15 @@ h1, h2, h3, h4, h5, h6,
top: var(--header-height);
z-index: 500;
background: var(--bg-base);
- padding-bottom: 4px;
}
-/* Section */
.section { padding: 0; }
/* ==============================
CONTEXT DRAWER (Barre Latérale D)
============================== */
-/* Trigger button */
+/* Trigger button — gris charcoal */
.btn-info-context {
position: fixed;
right: 0;
@@ -560,7 +590,7 @@ h1, h2, h3, h4, h5, h6,
margin-bottom: 16px;
border-radius: 0;
}
-.btn-cacher-contexte:hover { background: var(--color-primary); }
+.btn-cacher-contexte:hover { background: var(--color-primary-light); }
/* Context Cards */
.context-card {
@@ -584,7 +614,8 @@ h1, h2, h3, h4, h5, h6,
align-items: center;
gap: 6px;
}
-.context-card-label i { color: var(--color-primary); }
+/* Icône label — gris moyen */
+.context-card-label i { color: var(--color-primary-light); }
.context-card-label a {
color: var(--color-primary);
@@ -619,7 +650,7 @@ h1, h2, h3, h4, h5, h6,
border-color: var(--color-primary-light);
color: var(--color-primary);
}
-.context-btn i { color: var(--color-primary); flex-shrink: 0; }
+.context-btn i { color: var(--color-primary-light); flex-shrink: 0; }
.context-btn.btn-primary-context {
background: var(--color-primary);
@@ -672,7 +703,7 @@ h1, h2, h3, h4, h5, h6,
gap: 6px;
margin-bottom: 8px;
}
-.recent-policies-title i { color: var(--color-primary); }
+.recent-policies-title i { color: var(--color-primary-light); }
.policy-item {
padding: 7px 10px;
@@ -692,7 +723,7 @@ h1, h2, h3, h4, h5, h6,
.policy-item:hover {
background: var(--color-primary-ghost);
color: var(--color-primary);
- border-color: rgba(26,107,74,0.2);
+ border-color: rgba(46,52,64,0.18);
padding-left: 14px;
}
@@ -737,7 +768,7 @@ h1, h2, h3, h4, h5, h6,
/* Devis mode banner */
.mode-devis-banner {
- background: linear-gradient(135deg, #7209b7, #f72585);
+ background: linear-gradient(135deg, #3a3a4a, #55556a);
color: white;
text-align: center;
font-family: 'Syne', sans-serif;
@@ -772,6 +803,7 @@ h1, h2, h3, h4, h5, h6,
--bs-table-striped-color: var(--text-primary) !important;
}
+/* En-tête : charcoal sombre */
.table thead tr {
background: var(--color-primary) !important;
color: white !important;
@@ -813,8 +845,9 @@ h1, h2, h3, h4, h5, h6,
background: var(--color-primary-ghost) !important;
font-style: normal !important;
}
+/* Bordure gauche gris moyen au survol */
.table tbody tr:hover td:first-child {
- border-left: 3px solid var(--color-accent);
+ border-left: 3px solid var(--color-primary-light);
}
/* Status Badges */
@@ -836,11 +869,11 @@ h1, h2, h3, h4, h5, h6,
border-radius: 50%;
background: currentColor;
}
-.badge-valide { background: rgba(46,196,182,0.12); color: var(--color-success); }
-.badge-urgent { background: rgba(230,57,70,0.12); color: var(--color-urgent); }
-.badge-attente { background: rgba(244,162,97,0.12); color: var(--color-warning); }
-.badge-info { background: rgba(58,134,255,0.12); color: var(--color-info); }
-.badge-inactive { background: rgba(108,117,125,0.12); color: var(--color-neutral); }
+.badge-valide { background: rgba(39,174,96,0.10); color: #1e8449; }
+.badge-urgent { background: rgba(192,57,43,0.10); color: var(--color-urgent); }
+.badge-attente { background: rgba(230,126,34,0.10); color: #b9720a; }
+.badge-info { background: rgba(41,128,185,0.10); color: #1a6898; }
+.badge-inactive { background: rgba(127,140,141,0.10); color: var(--color-neutral); }
/* ==============================
CARDS
@@ -879,14 +912,15 @@ h1, h2, h3, h4, h5, h6,
gap: 6px;
}
+/* Bouton primaire : charcoal */
.btn-primary {
background: var(--color-primary) !important;
color: white !important;
- box-shadow: 0 2px 8px rgba(26,107,74,0.3);
+ box-shadow: 0 2px 8px rgba(30,34,40,.22);
}
.btn-primary:hover {
background: var(--color-primary-light) !important;
- box-shadow: 0 4px 16px rgba(26,107,74,0.4);
+ box-shadow: 0 4px 16px rgba(30,34,40,.30);
transform: translateY(-1px);
}
@@ -895,7 +929,7 @@ h1, h2, h3, h4, h5, h6,
color: white !important;
}
.btn-info:hover {
- background: #2563eb !important;
+ background: #1f6fa0 !important;
transform: translateY(-1px);
}
@@ -930,13 +964,13 @@ h1, h2, h3, h4, h5, h6,
}
.form-control:focus, .form-select:focus {
border-color: var(--color-primary-light);
- box-shadow: 0 0 0 3px rgba(26,107,74,0.1);
+ box-shadow: 0 0 0 3px rgba(46,52,64,0.10);
outline: none;
}
td input[readonly], td select[readonly],
td input[disabled], td select[disabled] {
- background: #f1f5f9 !important;
+ background: #f1f4f6 !important;
font-weight: 600;
color: var(--text-secondary);
}
@@ -967,6 +1001,7 @@ fieldset legend, form legend {
overflow: hidden;
}
+/* Header modal : charcoal */
.modal-header {
background: var(--color-primary) !important;
color: white !important;
@@ -981,16 +1016,16 @@ fieldset legend, form legend {
}
.modal-header .close, .modal-header .btn-close {
- background: rgba(255,255,255,0.2) !important;
+ background: rgba(255,255,255,0.18) !important;
color: white !important;
- border: 1px solid rgba(255,255,255,0.3) !important;
+ border: 1px solid rgba(255,255,255,0.28) !important;
border-radius: var(--radius-sm);
opacity: 1;
transition: background var(--transition-fast);
font-size: 0.75rem;
padding: 4px 10px;
}
-.modal-header .close:hover { background: rgba(255,255,255,0.35) !important; }
+.modal-header .close:hover { background: rgba(255,255,255,0.32) !important; }
.modal-body { padding: 20px; }
@@ -1000,7 +1035,7 @@ fieldset legend, form legend {
gap: 8px;
}
-/* Side Panel Modal (optional modern variant) */
+/* Side Panel Modal */
.modal.side-panel .modal-dialog {
position: fixed;
top: 0; right: 0;
@@ -1034,6 +1069,7 @@ fieldset legend, form legend {
color: var(--color-primary);
background: var(--color-primary-ghost);
}
+/* Onglet actif : charcoal */
.nav-tabs .nav-item.show .nav-link,
.nav-tabs .nav-link.active {
background: var(--color-primary) !important;
@@ -1052,13 +1088,13 @@ fieldset legend, form legend {
font-size: 0.82rem;
border-left: 4px solid;
}
-.alert-success { border-color: var(--color-success); background: rgba(46,196,182,0.1); }
-.alert-danger { border-color: var(--color-urgent); background: rgba(230,57,70,0.1); }
-.alert-warning { border-color: var(--color-warning); background: rgba(244,162,97,0.1); }
-.alert-info { border-color: var(--color-info); background: rgba(58,134,255,0.1); }
+.alert-success { border-color: var(--color-success); background: rgba(39,174,96,0.08); }
+.alert-danger { border-color: var(--color-urgent); background: rgba(192,57,43,0.08); }
+.alert-warning { border-color: var(--color-warning); background: rgba(230,126,34,0.08); }
+.alert-info { border-color: var(--color-info); background: rgba(41,128,185,0.08); }
/* ==============================
- FOOTER (inside context bar)
+ FOOTER
============================== */
footer { background: transparent !important; color: var(--text-muted) !important; font-size: 0.7rem; }
@@ -1081,7 +1117,7 @@ footer { background: transparent !important; color: var(--text-muted) !important
/* Skeleton Loader */
.skeleton {
- background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
+ background: linear-gradient(90deg, #ebebeb 25%, #dcdcdc 50%, #ebebeb 75%);
background-size: 200% 100%;
animation: skeleton-loading 1.5s infinite;
border-radius: var(--radius-sm);
@@ -1111,18 +1147,18 @@ footer { background: transparent !important; color: var(--text-muted) !important
/* Pulse animation for notifications */
@keyframes pulse-badge {
- 0%, 100% { box-shadow: 0 0 0 0 rgba(230,57,70,0.4); }
- 50% { box-shadow: 0 0 0 5px rgba(230,57,70,0); }
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(192,57,43,0.4); }
+ 50% { box-shadow: 0 0 0 5px rgba(192,57,43,0); }
}
-.badge-number { animation: pulse-badge 2s infinite; }
+.badge-number { animation: pulse-badge 2s infinite; color:#fff;}
/* Mode Test Banner */
.mode-test-active #header {
- background: linear-gradient(90deg, #7b2d00, #c0392b) !important;
+ background: linear-gradient(90deg, #5d0000, #c0392b) !important;
}
.mode-test-banner {
background: repeating-linear-gradient(
- 45deg, #ffd700, #ffd700 10px, #000 10px, #000 20px
+ 45deg, #cccccc, #cccccc 10px, #333333 10px, #333333 20px
);
color: white;
text-align: center;
@@ -1134,7 +1170,7 @@ footer { background: transparent !important; color: var(--text-muted) !important
/* Filter option */
.filter-option-inner-inner {
- background-color: #f1f5f9 !important;
+ background-color: #f1f4f6 !important;
}
/* h6 links in context */
@@ -1142,7 +1178,7 @@ h6 a {
text-decoration: none;
color: var(--color-primary);
font-weight: 600;
- border-bottom: 1px dashed var(--color-primary);
+ border-bottom: 1px dashed var(--color-primary-light);
transition: all var(--transition-fast);
}
h6 a:hover {
@@ -1162,7 +1198,7 @@ h6 a:hover {
padding: 8px;
}
-/* .sr-only (keep accessible but hidden visually) */
+/* .sr-only */
.sr-only {
position: absolute;
width: 1px; height: 1px;
@@ -1173,6 +1209,10 @@ h6 a:hover {
border-width: 0;
}
+/* ==============================
+ SCROLLBAR hover — gris neutre */
+::-webkit-scrollbar-thumb:hover { background: var(--color-primary-light); }
+
/* ==============================
RESPONSIVE
============================== */
@@ -1180,5 +1220,205 @@ h6 a:hover {
#sidebar { width: var(--sidebar-width); }
#barre_laterale_d { width: 100% !important; }
.scrollmenu { margin: 0 8px 8px; }
- .page-content { padding: 0 8px; }
+ .page-content { padding: 18px 0px; }
+}
+
+/* --- COMPOSANTS GLOBAUX --- */
+.required::after { content: " *"; color: var(--color-urgent); font-weight: bold; }
+.bg-warning-ghost { background: rgba(243, 156, 18, 0.12); }
+.bg-primary-ghost { background: rgba(33, 46, 83, 0.05); }
+
+/* ============================================================
+ BOOTSTRAP-SELECT : CORRECTIF FINAL SANS LARGEUR FORCÉE
+ ============================================================ */
+
+/* 1. DISPARITION TOTALE DU SELECT NATIF
+ On utilise opacity et position pour le rendre invisible sans casser
+ le fonctionnement du plugin, tout en évitant le doublon visuel. */
+select.selectpicker,
+select[class*="selectpicker"],
+.bootstrap-select > select.bs-select-hidden {
+ display: none !important;
+ visibility: hidden !important;
+ opacity: 0 !important;
+ position: absolute !important;
+ z-index: -1 !important;
+}
+
+/* 2. STYLE DU BOUTON (L'interface visible)
+ On retire le "width: 100%" pour laisser le bouton s'adapter à son contenu
+ ou à sa colonne parente naturelle. */
+.btn-form-select {
+ background-color: #ffffff !important;
+ border: 1px solid #e2e8f0 !important;
+ color: var(--color-primary) !important;
+ font-size: 0.82rem !important;
+ padding: 0.5rem 0.75rem !important;
+ border-radius: var(--radius-sm) !important;
+ display: inline-flex !important; /* Permet au bouton de ne pas prendre toute la largeur */
+ align-items: center;
+ justify-content: space-between;
+ min-width: 200px; /* Optionnel : définit une largeur minimale raisonnable */
+}
+
+/* 3. NETTOYAGE DE L'ÉLÉMENT INTERNE (Ce que vous avez vu à l'image)
+ On s'assure qu'il n'y a pas de background ou de bordure parasite */
+.bootstrap-select .filter-option {
+ display: flex;
+ align-items: center;
+}
+
+.filter-option-inner-inner {
+ background-color: transparent !important;
+ padding: 0 !important;
+ color: inherit !important;
+}
+
+/* 4. LE MENU DÉROULANT
+ On le laisse s'adapter à la largeur du bouton parent */
+.bootstrap-select .dropdown-menu {
+ border: 1px solid #e2e8f0;
+ box-shadow: var(--shadow-lg);
+ border-radius: var(--radius-md);
+ font-size: 0.82rem;
+}
+
+/* 5. ZONE DE RECHERCHE */
+.bootstrap-select .bs-searchbox .form-control {
+ border: 1px solid #ced4da !important;
+ font-size: 0.8rem !important;
+ background-color: #fff !important;
+}
+
+/* --- Style spécifique aux onglets de paramètres --- */
+
+/* On cible les ID des conteneurs pour isoler le style */
+#Generaux, #Production, #Medical, #Prestation {
+ animation: fadeIn 0.4s ease-in-out;
+}
+
+/* On cible les lignes de paramètres spécifiquement dans ces ID */
+#Generaux .table td,
+#Production .table td,
+#Medical .table td,
+#Prestation .table td {
+ padding: 1.1rem 1rem;
+ border-top: 1px solid #f1f4f6;
+ vertical-align: middle;
+}
+
+/* --- THÈME NEUTRAL PRO : HAUT CONTRASTE --- */
+.text-dark { color: #1a1d24 !important; }
+.bg-success-ghost { background-color: rgba(39, 174, 96, 0.12); color: #27ae60; }
+.bg-danger-ghost { background-color: rgba(192, 57, 43, 0.12); color: #c0392b; }
+.bg-primary-ghost { background-color: rgba(33, 46, 83, 0.08); color: #212e53; }
+
+/* Navigation Pills Modernes */
+.nav-pills .nav-link { color: #64748b; padding: 10px 20px; transition: 0.3s; border: none; background: none; }
+.nav-pills .nav-link.active { background-color: #212e53 !important; color: white !important; box-shadow: var(--shadow-md); }
+
+/* Tableaux et Cards */
+.table td { padding: 1.2rem 1rem !important; border-top: 1px solid #f1f4f6 !important; font-size:0.95rem !important;}
+.table-hover tbody tr:hover { background-color: #f8fafc; cursor: pointer; }
+
+.bg-light-info { background-color: rgba(33, 46, 83, 0.02); }
+.bg-light-success { background-color: rgba(39, 174, 96, 0.02); }
+
+.fs-5 { font-size: 1.15rem !important; }
+
+.searchable-row:hover { background-color: #f8fafc !important; }
+
+
+/* ============================================================
+ DESIGN SYSTEM - PAGE PARAMÈTRES (NEUTRAL PRO)
+ ============================================================ */
+
+/* Conteneurs de sections (Onglets) */
+.tab-custom-content {
+ animation: fadeIn 0.4s ease-in-out;
+}
+
+/* Style des Cartes (Sections) */
+.tab-custom-content .card {
+ border-radius: var(--radius-md);
+ overflow: hidden;
+ margin-bottom: 1.5rem;
+}
+
+/* En-têtes de tableaux/sections */
+.tab-custom-content .card-header {
+ padding: 0.75rem 1.25rem;
+}
+
+.tab-custom-content .card-header h6 {
+ margin-bottom: 0;
+ font-size: 0.85rem;
+ letter-spacing: 0.05em;
+}
+
+/* Tableaux de paramètres */
+.tab-custom-content .table td {
+ padding: 1.1rem 1rem;
+ border-top: 1px solid #f1f4f6;
+ vertical-align: middle;
+}
+
+/* Libellés de paramètres (Haut Contraste) */
+.tab-custom-content .text-dark {
+ color: #1a1d24 !important; /* Noir profond */
+ font-weight: 700 !important; /* Gras pour la lisibilité */
+ font-size: 0.95rem;
+}
+
+/* Valeurs (Colonne de droite) */
+.tab-custom-content .valeur-display {
+ text-align: center;
+ border-left: 1px solid #f1f4f6;
+ background-color: rgba(248, 250, 252, 0.5);
+ font-weight: 700;
+}
+
+/* BADGES "GHOST" (Sémantique des couleurs) */
+.badge-ghost {
+ padding: 0.5rem 0.8rem;
+ border-radius: 50px;
+ font-weight: 700;
+ font-size: 0.75rem;
+}
+
+/* Animation */
+@keyframes fadeIn {
+ from { opacity: 0; transform: translateY(5px); }
+ to { opacity: 1; transform: translateY(0); }
+}
+
+/* Optionnel : Réduire légèrement l'entête lors du scroll (via JS si besoin) */
+#titre-page {
+ color: var(--color-primary);
+ letter-spacing: -0.5px;
+ font-family: 'DM Sans', sans-serif; /* Ou votre police SaaS */
+}
+
+/* ENTÊTE FIXE "STICKY" */
+.header-section {
+ position: -webkit-sticky; /* Pour Safari */
+ position: sticky;
+ top: 0;
+ z-index: 1050; /* Doit être supérieur aux cartes et tableaux */
+ background-color: rgba(244, 247, 250, 0.8); /* Couleur de fond de votre page avec transparence */
+ backdrop-filter: blur(10px); /* Effet de flou moderne */
+ padding-top: 15px;
+ padding-bottom: 15px;
+ margin-bottom: 0.5rem !important;
+ transition: all 0.3s ease;
+}
+
+/* On s'assure que la carte à l'intérieur de la section fixe garde son ombre */
+.header-section > div {
+ box-shadow: 0 4px 4px rgba(0, 0, 0, 0.08) !important;
+}
+
+/* Ajustement des icônes pour plus de finesse */
+.icon-shape {
+ flex-shrink: 0;
}
diff --git a/Controleur/gabarit.php b/Controleur/gabarit.php
index 5a304f6c..b094d3f7 100755
--- a/Controleur/gabarit.php
+++ b/Controleur/gabarit.php
@@ -263,7 +263,7 @@ controlerPlafondBeneficiaire : = $_SESSION['controlerPlafondBeneficiaire'] ?>
-
+
diff --git a/Js/fonctions.js b/Js/fonctions.js
index 9da7626d..1ea27030 100755
--- a/Js/fonctions.js
+++ b/Js/fonctions.js
@@ -46023,20 +46023,7 @@ $(function(){
// Initialiser Select2
$('.js-example-basic-single').select2();
- // Initialiser Bootstrap Select avec vérification
- if (typeof $.fn.selectpicker !== 'undefined') {
- $('.selectpicker').selectpicker();
- } else {
- console.warn("Bootstrap Select n'est pas disponible. Assurez-vous que bootstrap-select.min.js est chargé.");
- // Fallback: transformer les select en select2
- $('.selectpicker').each(function() {
- if (!$(this).hasClass('select2-hidden-accessible')) {
- $(this).select2({
- theme: 'bootstrap-5'
- });
- }
- });
- }
+ initSelectPicker();
// Rafraîchir les notifications toutes les 2 secondes
setInterval(raffraichier_gabarit, 2000);
@@ -46174,6 +46161,24 @@ $(function(){
document.getElementById('Production').style.display="none";
document.getElementById('Medical').style.display="none";
document.getElementById('Prestation').style.display="none";
+
+ // SYSTÈME DE RECHERCHE DYNAMIQUE
+ $("#globalSearch").on("keyup", function() {
+ var value = $(this).val().toLowerCase();
+ $(".searchable-row").filter(function() {
+ $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
+ });
+ });
+
+ // Gestion visuelle des boutons nav-link
+ const navButtons = document.querySelectorAll('.nav-pills .nav-link');
+ navButtons.forEach(btn => {
+ btn.addEventListener('click', function() {
+ navButtons.forEach(b => b.classList.remove('active'));
+ this.classList.add('active');
+ });
+ });
+
}else if($('#nomForm').val()=="listebareme"){
codeGcAssureur = $("#codeGcAssureur").val();
codeProduit = $("#codeProduit").val();
@@ -74780,8 +74785,7 @@ function liste_villes()
},
success: function(data) {
$("#div_ville").html(data);
- $("#ville" ).selectpicker();
-
+ ui_refresh_select("#ville");
}
});
}
@@ -84315,16 +84319,6 @@ function alertvip(codeReponse, medical, idDemandederogation)
}
-function retour_modifierparametre()
-{
- codeProfil = $('#codeProfil_C').val();
-
- if(codeProfil=="SUPADM"){
- window.location.assign($("#racineWeb" ).val()+"Listecentregestion/");
- }else{
- window.location.assign($("#racineWeb" ).val()+"Parametresgeneraux/");
- }
-}
function listeenteteententeprealables() {
codePrestataire = $("#codePrestataire").val();
@@ -91564,4 +91558,37 @@ function init_revoquer_htagcarte(idHtagcarte) {
$("#idHtagcarte").val(idHtagcarte);
$("#div_revoquer_carte").modal({backdrop: 'static', keyboard: false, show: true });
$("#div_revoquer_carte").modal("show");
+}
+
+/**
+ * Initialisation globale au chargement
+ */
+function initSelectPicker() {
+ // Appel direct de la fonction générique sur la classe
+ ui_refresh_select('.selectpicker');
+}
+
+/**
+ * Rafraîchit un SelectPicker de manière propre
+ */
+function ui_refresh_select(selector) {
+ let $el = $(selector);
+ if ($el.length === 0) return;
+
+ // Détection de la langue pour les textes
+ let codeLangue = $("#codeLangue").val();
+ let placeholder = (codeLangue === "en_US") ? 'Search...' : 'Rechercher...';
+ let noneText = (codeLangue === "en_US") ? 'Nothing selected' : 'Rien de sélectionné';
+
+ if (typeof $.fn.selectpicker !== 'undefined') {
+ // La séquence 'destroy' puis initialisation est cruciale contre le doublon
+ $el.selectpicker('destroy').selectpicker({
+ style: 'btn-form-select',
+ liveSearch: true,
+ liveSearchPlaceholder: placeholder,
+ noneSelectedText: noneText,
+ width: 'auto', // Laisse le plugin décider de la largeur selon le contenu
+ container: false // Garde le menu dans son parent direct
+ });
+ }
}
\ No newline at end of file
diff --git a/Vue/Autresparametresgeneraux/index.php b/Vue/Autresparametresgeneraux/index.php
index c227c021..529b6c79 100755
--- a/Vue/Autresparametresgeneraux/index.php
+++ b/Vue/Autresparametresgeneraux/index.php
@@ -1,1054 +1,515 @@
-titre = "INTER SANTE - Autres Paramètres Généraux"; ?>
+
+
-
-
+
+
+ = _("Commun") ?>
+
+
+ = _("Production & Comptabilité") ?>
+
+
+ = _("Médical") ?>
+
+
+ = _("Prestations") ?>
+
+
- = _("AUTRES PARAMETRES SYSTEME DU CENTRE DE GESTION") ?>
-
+
+
+
-
-
- = _("Commun") ?>
-
-
- = _("Production et Comptabilité") ?>
-
-
- = _("Médical") ?>
-
-
- = _("Prestataires") ?>
-
-
-
-
-
-
-
-
-
- = _("PARAMETRES") ?>
-
- = _("VALEURS") ?>
-
-
-
-
-
+
+
+
+
+ 01
+ = _("Langue du centre de gestion") ?>
+
+
+ = $this->nettoyer($societeuser['codeLangueSociete']) ?>
+
+
+
+
+ 02
+ = _("Identifiant du fuseau horaire") ?>
+
+ = $this->nettoyer($societeuser['code_timezone_identifier']) ?>
+
+
+
+ 03
+ = _("Devise") ?>
+
+ = $this->nettoyer($societeuser['devise']) ?>
+
+
+
+
+
+
+
+
-
- 01
-
- = _("Langue du centre de gestion") ?>
-
-
-
- =$this->nettoyer($societeuser['codeLangueSociete'])?>
-
+
+
+
+
+
+
+
+ #
+ = _("Désignation du Paramètre") ?>
+ = _("Valeur de Configuration") ?>
+
+
+
+
+ 01
+ = _("Quote-part du centre de gestion par prime encaissée.") ?>
+
+ = $this->nettoyer($societeuser['tauxHonoraires']) ?> %
+
+
-
-
-
-
-
-
- 02
-
- = _("Identifiant du fuseau horaire") ?>
-
- =$this->nettoyer($societeuser['code_timezone_identifier'])?>
-
-
-
-
-
-
-
- 03
-
- = _("Devise") ?>
-
- =$this->nettoyer($societeuser['devise'])?>
-
-
-
-
-
+
+ 02
+ = _("Seuil maximum du ratio S/P (spMax) appliqué au taux d'ajustement.") ?>
+
+ = $this->nettoyer($societeuser['spMax']) ?> %
+
+
-
-
-
-
-
-
-
-
-
- = _("PARAMETRES") ?>
-
- = _("VALEURS") ?>
-
-
-
-
-
+
+
+ = $c[0] ?>
+ = $c[1] ?>
+
+ = format_N($this->nettoyer($societeuser[$c[2]])) ?>
+ = $_SESSION['devise_C'] ?>
+
+
+
-
- = " ". _("PRODUCTION") ?>
-
-
-
-
-
-
-
- 01
-
- = _("Taux des honoraires ou des commissions du gestionnaire sur chaque prime.") ?>
-
-
- =$this->nettoyer($societeuser['tauxHonoraires']) . " % "?>
+
+ 06
+ = _("Ratio S/P marquant une famille en surconsommation.") ?>
+
+ = $this->nettoyer($societeuser['spAlertAdherent']) ?> %
+
+
-
-
-
-
-
-
- 02
-
- = _("Rapport Sinistres/Primes au-delà duquel les lignes s'affichent en rouge dans les états statistiques. Il est utilisé pour le calcul du taux d'ajustement lors du renouvellement => Nouvelle Prime = ((Ancienne Prime * S/P) / spMax ). Ce qui veut dire que la S/P ne devrait pas dépasser ce rapport spMax") ?>
-
-
- =$this->nettoyer($societeuser['spMax']) . " % "?>
-
-
-
-
-
+
+ 07
+ = _("Taux appliqué à la prime non acquise lors d'un retrait.") ?>
+
+ = $this->nettoyer($societeuser['tauxRistourne']) ?> %
+
+
+
+ 08
+ = _("Seuil S/P annulant la ristourne au retrait de l'assuré.") ?>
+
+ = $this->nettoyer($societeuser['seuilRistourne']) ?> %
+
+
-
- 03
-
- = _("Le coût d'une nouvelle carte (assuré entrant)") ?>
-
-
- =format_N($this->nettoyer($societeuser['fraisCarteAN'])) . " " . $_SESSION['devise_C']?>
-
+
+
+ = $b[0] ?>
+ = $b[1] ?>
+
+
+
+ = $val ? _("OUI") : _("NON") ?>
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
- 04
-
- = _("Le coût d'une carte pour un renouvellement (assuré déjà dans le portefeuille)") ?>
-
-
- =format_N($this->nettoyer($societeuser['fraisCarteREN'])) . " " . $_SESSION['devise_C']?>
-
+
+
+
+
+
+ 01
+ = _("Tolérance d'écart à l'encaissement des primes garants.") ?>
+
+ = format_N($this->nettoyer($societeuser['EcartEncaissementTolerable'])) ?>
+ = $_SESSION['devise_C'] ?>
+
+
+
+ 02
+ = _("Activer le lettrage automatique à l'encaissement des primes garants.") ?>
+
+
+
+ = $lettrage ? _("OUI") : _("NON") ?>
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+ #
+ = _("PARAMÈTRE DE COMMUNICATION") ?>
+ = _("ÉTAT") ?>
+
+
+
+
+
+ = $c[0] ?>
+ = $c[1] ?>
+
+
+
+ = $status ? _("OUI") : _("NON") ?>
+
+
+
+
+
+
+
+
+
-
- 05
-
- = _("Le coût pour ré-imprimer une carte existante (perdue, abîmée, etc.)") ?>
-
-
- =format_N($this->nettoyer($societeuser['fraisCarteImp'])) . " " . $_SESSION['devise_C']?>
-
+
+
+
+
+
+
+
+ 08
+ = _("Déclencher une entente préalable si le seuil du montant total des examens prescrits est dépassé.") ?>
+
+ = format_N($this->nettoyer($societeuser['montantTotalExamen'])) ?>
+ = $_SESSION['devise_C'] ?>
+
+
+
+ 09
+ = _("Déclencher une entente préalable si le seuil du montant total des médicaments prescrits est dépassé.") ?>
+
+ = format_N($this->nettoyer($societeuser['montantTotalMedicament'])) ?>
+ = $_SESSION['devise_C'] ?>
+
+
+
+
+ 10
+ = _("Autoriser le médecin du souscripteur à recevoir et traiter les ententes préalables.") ?>
+
+
+
+ = $med ? _("OUI") : _("NON") ?>
+
+
+
+
+ 11
+ = _("Délai de réponse alloué au médecin du souscripteur.") ?>
+
+ = $this->nettoyer($societeuser['delaisReponseMedecinSouscripteur']) ?>
+ = _("Heure(s)") ?>
+
+
-
-
-
+
+ 12
+ = _("Tout acte en entente préalable entraîne la soumission complète de la prescription.") ?>
+
+
+
+ = $tous ? _("OUI") : _("NON") ?>
+
+
+
+
+ 13
+ = _("Déclencher une entente préalable au dépassement du nombre d'actes par prescription.") ?>
+
+ = $this->nettoyer($societeuser['nombreActeEntentePrealable']) ?>
+
+
+
+ 14
+ = _("Appliquer automatiquement le tarif négocié le plus bas.") ?>
+
+
+
+ = $tarif ? _("OUI") : _("NON") ?>
+
+
+
+
+
+
+
+
+
-
- 06
-
- = _("Rapport Sinistres/Primes au délà duquel une famille est marquée comme à consommation trop élevée") ?>
-
-
- =$this->nettoyer($societeuser['spAlertAdherent']) . " % "?>
-
+
+
+
+
+
+
+
+
+
+ #
+ = _("RÈGLE DE PRESTATION") ?>
+ = _("CONFIGURATION") ?>
+
+
+
+
+
+ = $b[0] ?>
+ = $b[1] ?>
+
+
+ = $val ? _("OUI") : _("NON") ?>
+
+
+
+
-
-
-
+
+
+ = $n[0] ?>
+ = $n[1] ?>
+
+ = $this->nettoyer($societeuser[$n[2]]) ?>
+ = $n[3] ?>
+
+
+
-
- 07
-
- = _("Taux à appliquer à la prime non acquise en cas de retrait d'un assuré afin d'avoir la prime à ristourner. Exemple, pour une prime non acquise de 100 000, on retournera 75 000 si tauxRistourne = 75%") ?>
-
-
- =$this->nettoyer($societeuser['tauxRistourne']) . " % "?>
-
+
+ 13
+ = _("Mode de biométrie utilisé pour l'authentification des assurés.") ?>
+
+ = est_anglophone() ? $this->nettoyer($societeuser['biometrieEng']) : $this->nettoyer($societeuser['biometrie']) ?>
+
+
+
+ 14
+ = _("Intitulé de l'acte de consultation gratuite.") ?>
+
+ = est_anglophone() ? $this->nettoyer($societeuser['acteConsultationGratuiteEng']) : $this->nettoyer($societeuser['acteConsultationGratuite']) ?>
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+ = $pb[0] ?>
+ = $pb[1] ?>
+
+
+ = $status ? _("OUI") : _("NON") ?>
+
+
+
+
-
- 08
-
- = _("Rapport Sinistres/Primes au dela duquel, il n'y aura plus de ristourne en cas de retrait d'un assuré. Exemple si le seuil est de 65% et que le S/P de la police est de 55%, on aura une retourne en cas de retrait. Par contre, dès que le S/P de la police atteindra 65%, tous les futurs retraits se feront sans ristourne") ?>
-
-
- =$this->nettoyer($societeuser['seuilRistourne']) . " % "?>
-
+
+ 07
+ = _("Mode d'application de la marge pharmacie/système (% ou forfait).") ?>
+ = $this->nettoyer($societeuser['typeMargePrixMedicament']) ?>
+
+
+ 08
+ = _("Marge autorisée entre prix système et prix pratiqué en pharmacie.") ?>
+
+ = format_N($this->nettoyer($societeuser['margePrixMedicament'])) ?>
+ = ($societeuser['typeMargePrixMedicament'] == "Forfait") ? $_SESSION['devise_C'] : "%" ?>
+
+
+
+ 09
+ = _("Marge autorisée entre prix de référence et prix pharmacie sur les substitutions.") ?>
+
+ = format_N($this->nettoyer($societeuser['margePrixSubstitutMedicament'])) ?>
+ = ($societeuser['typeMargePrixMedicament'] == "Forfait") ? $_SESSION['devise_C'] : "%" ?>
+
+
+
+
+
+
-
-
-
-
-
- 09
-
- = _("Permettre l'archivage automatique des primes à l'incorporation des assurés ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
-
- 10
-
- = _("Le bénéficiaire reçoit-il son numéro d'assuré par SMS, WhatsApp et/ou Mail ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 11
-
- = _("L'assuré principal reçoit en groupe, les numéros d'assurés de tous les membres de sa famille, par SMS, WhatsApp et/ou E-Mail ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 12
-
- = _("Activer le paramétrage de la facturation d'un garant par produit ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 13
-
- = _("Permettre aux adhérents d'ajouter les photos de leurs familles au niveau du portail assuré ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- = " ". _("COMPTABILITE") ?>
-
-
-
-
-
-
-
- 01
-
- = _("La valeur de l'écart toléré lorsqu'un encaissement de prime ou de facture garant est fait") ?>
-
-
- =format_N($this->nettoyer($societeuser['EcartEncaissementTolerable'])) . " " . $_SESSION['devise_C']?>
-
-
-
-
-
-
-
- 02
-
- = _("Le lettrage des encaissements garants se fait-il automatiquement ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = _("PARAMETRES") ?>
-
- = _("VALEURS") ?>
-
-
-
-
-
-
-
- 01
-
- = _("Activer les envois de SMS ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 02
-
- = _("Activer les envois de messages par WhatsApp ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 03
-
- = _("Activer l'envoi de SMS/WhatsApp aux assurés ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 04
-
- = _("Envoyer un SMS/WhatsApp à l'assuré à chaque facturation ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 05
-
- = _("Envoyer un E-mail à l'assuré à chaque facturation ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 06
-
- = _("Envoyer à l'assuré une copie du SMS/WhatsApp envoyé à l'assureur ou au prestataire en cas de demande et/ou de réponse à une entente préalable ou une dérogation") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 07
-
- = _("Alerter l'assuré par SMS/WhatsApp et/ou par E-mail si son solde a atteint un certain seuil ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 08
-
- = _("Envoyer une demande d'entente préalable au gestionnaire lorsque le montant total des examens prescrits est supérieur à") ?>
-
-
- =format_N($this->nettoyer($societeuser['montantTotalExamen'])). " " . $_SESSION['devise_C'] ?>
-
-
-
-
-
-
-
- 09
-
- = _("Envoyer une demande d'entente préalable au gestionnaire lorsque le montant total des médicaments prescrits est supérieur à") ?>
-
-
- =format_N($this->nettoyer($societeuser['montantTotalMedicament'])). " " . $_SESSION['devise_C'] ?>
-
-
-
-
-
-
-
-
- 10
-
- = _("Permettre au médecin du souscripteur de recevoir et répondre à leurs demandes d'ententes préalables ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 11
-
- = _("Délai de réponse accordé au médecin du souscripteur") ?>
-
-
- = $this->nettoyer($societeuser['delaisReponseMedecinSouscripteur'])." ". _("Heure(s)") ?>
-
-
-
-
-
-
-
- 12
-
- = _("Soumettre tous les actes d'une prescription, en entente préalable si l'un des actes est en entente préalable ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 13
-
- = _("Nombre limite des actes d'une prescription à atteindre pour déclencher une alerte d'entente préalable") ?>
-
-
- = $this->nettoyer($societeuser['nombreActeEntentePrealable']) ?>
-
-
-
-
-
-
-
- 14
-
- = _("Activer l'application du tarif le plus bas parmi des tarifs négociés ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = _("PARAMETRES") ?>
-
- = _("VALEURS") ?>
-
-
-
-
-
-
-
- = " ". _("CENTRES DE SOINS ET DENTISTERIES") ?>
-
-
-
-
-
-
-
- 01
-
- = _("Limiter la recherche d'un médecin à la liste des médecins enregistrés dans le centre de soins courant") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 02
-
- = _("Nombre maximum de médicaments pouvant être prescrit sur un bon de prise en charge") ?>
-
-
- =$this->nettoyer($societeuser['nbMedicamentMax']) ?>
-
-
-
-
-
-
-
- 03
-
- = _("Nombre maximum de consultation spécialiste en une journée") ?>
-
-
- =$this->nettoyer($societeuser['nbConsultationSpecialisteJour']) ?>
-
-
-
-
-
-
-
- 04
-
- = _("Âge maximum pour une consultation pédiatrique (En année)") ?>
-
-
- =$this->nettoyer($societeuser['ageMaxiPediatrie']) ?>
-
-
-
-
-
-
-
- 05
-
- = _("Nombre maximum de consultation gratuite par jour") ?>
-
-
- =$this->nettoyer($societeuser['nombreFeuilleGratuitJour']) ?>
-
-
-
-
-
-
-
- 06
-
- = _("Mode de biométrie activé") ?>
-
-
-
-
- =$this->nettoyer($societeuser['biometrieEng']) ?>
-
- =$this->nettoyer($societeuser['biometrie']) ?>
-
-
-
-
-
-
-
-
-
-
- 07
-
- = _("Le nombre de mauvaises tentatives en biométrie, qui alerte l'assuré principal et le gestionnaire") ?>
-
-
- = $this->nettoyer($societeuser['nbTentativeBiometrie']) ?>
-
-
-
-
-
-
-
- 08
-
- = _("Permettre une prescription malgré un blocage révélé dans le barème de prestation ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 09
-
- = _("Désignation de l'acte de consultation gratuite") ?>
-
-
-
-
- =$this->nettoyer($societeuser['acteConsultationGratuiteEng']) ?>
-
- =$this->nettoyer($societeuser['acteConsultationGratuite']) ?>
-
-
-
-
-
-
-
-
-
-
-
- 10
-
- = _("La quantité maximum de boîte autorisée d'un médicament prescrit sur un bon de prise en charge") ?>
-
-
- = $this->nettoyer($societeuser['quantiteMedicamentPermise']) ?>
-
-
-
-
-
-
-
- 11
-
- = _("Autoriser qu'un bon de consultation gratuite soit obligatoirement lié à un bon de consultation principal ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 12
-
- = _("Autoriser qu'un bon d'hospitalisation généré après une proforma, soit réalisé par le centre, avant la date de début prévue ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 13
-
- = _("Interdire une prestation en cas de prime impayée ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- = " ". _("PHARMACIES") ?>
-
-
-
-
-
-
-
-
- 01
-
-
- = _("Permettre aux pharmaciens de créer un nouveau médicament qui sera soumis à entente préalable ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 02
-
- = _("Permettre aux pharmaciens de compléter la prescription du médecin ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 03
-
- = _("Mode d'application de la marge entre le prix d'un médicament fournit par le système et celui de la pharmacie") ?>
-
-
- =$this->nettoyer($societeuser['typeMargePrixMedicament']) ?>
-
-
-
-
-
-
-
-
-
- 04
-
- = _("Permettre l'application d'une marge entre le prix d'un médicament fourni par le système et celui de la pharmacie ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 05
-
- = _("Marge maximum acceptée entre le prix d'un médicament fourni par le système et celui de la pharmacie") ?>
-
-
- =format_N($this->nettoyer($societeuser['margePrixMedicament'])). " " . $_SESSION['devise_C'] ?>
-
- =format_N($this->nettoyer($societeuser['margePrixMedicament'])). " " . "%" ?>
-
-
-
-
-
-
-
-
-
- 06
-
- = _("Permettre l'application d'une marge sur le prix du médicament de substitution ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 07
-
- = _("Marge maximum acceptée entre le prix d'un médicament fourni par le système et celui de substitution") ?>
-
-
-
-
- =format_N($this->nettoyer($societeuser['margePrixSubstitutMedicament'])). " " . $_SESSION['devise_C'] ?>
-
- =format_N($this->nettoyer($societeuser['margePrixSubstitutMedicament'])). " " . "%" ?>
-
-
-
-
-
-
-
-
-
- 08
-
- = _("Interdire la vente partielle de médicaments en pharmacie ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- 09
-
- = _("Permettre aux pharmaciens de modifier le prix d'un médicament ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
- = " ". _("LABORATOIRES ET IMAGERIES") ?>
-
-
-
-
-
-
-
- 01
-
- = _("Permettre aux LABO de compléter la prescription du médecin ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ 01
+ = _("Permettre aux laboratoires de compléter une prescription médicale.") ?>
+
+
+
+ = $labo ? _("OUI") : _("NON") ?>
+
+
+
+
+
+
+
diff --git a/Vue/Modifautresparametresprod/index.php b/Vue/Modifautresparametresprod/index.php
index 1b085a16..5a08822f 100755
--- a/Vue/Modifautresparametresprod/index.php
+++ b/Vue/Modifautresparametresprod/index.php
@@ -1,335 +1,221 @@
-titre = "INTER SANTE - Modifier Paramètres Généraux de la Production"; ?>
+titre = "INTER SANTE - " . _("Modifier Paramètres Production"); ?>
-
-
-
-
= _("MODIFIER PARAMETRES SYSTEME DE PRODUCTION ET DE COMPTABILITE") ?>
-
-
-
-
-
- = _("Paramètres") ?>
- = _("Ancienne Valeur") ?>
- = _("Nouvelle Valeur") ?>
-
-
-
-
-
-
-
-
-
- = _("PRODUCTION") ?>
-
-
-
-
-
-
-
- 01
-
- = _("Taux des honoraires ou des commissions du gestionnaire sur chaque prime.") ?>
-
-
-
- =$this->nettoyer($societeuser['tauxHonoraires']) . " % "?>
-
-
-
-
-
-
-
-
-
- 02
-
- = _("Rapport Sinistres/Primes au-delà duquel les lignes s'affichent en rouge dans les états statistiques. Il est utilisé pour le calcul du taux d'ajustement lors du renouvellement => Nouvelle Prime = ((Ancienne Prime * S/P) / spMax ). Ce qui veut dire que la S/P ne devrait pas dépasser ce rapport spMax") ?>
-
-
- =$this->nettoyer($societeuser['spMax']) . " % "?>
-
-
-
-
-
-
-
-
-
- 03
-
- = _("Le coût d'une nouvelle carte (assuré entrant)") ?>
-
-
- =format_N($this->nettoyer($societeuser['fraisCarteAN'])) . " " . $_SESSION['devise_C']?>
-
-
-
-
-
-
-
-
-
- 04
-
- = _("Le coût d'une carte pour un renouvellement (assuré déjà dans le portefeuille)") ?>
-
-
- =format_N($this->nettoyer($societeuser['fraisCarteREN'])) . " " . $_SESSION['devise_C']?>
-
-
-
-
-
-
-
-
-
- 05
-
- = _("Le coût pour ré-imprimer une carte existante (perdue, abîmée, etc.)") ?>
-
-
- =format_N($this->nettoyer($societeuser['fraisCarteImp'])) . " " . $_SESSION['devise_C']?>
-
-
-
-
-
-
-
-
-
- 06
-
- = _("Rapport Sinistres/Primes au délà duquel une famille est marquée comme à consommation trop élevée") ?>
-
-
- =$this->nettoyer($societeuser['spAlertAdherent']) . " % "?>
-
-
-
-
-
-
-
-
-
- 07
-
- = _("Taux à appliquer à la prime non acquise en cas de retrait d'un assuré afin d'avoir la prime à ristourner. Exemple, pour une prime non acquise de 100 000, on retournera 75 000 si tauxRistourne = 75%") ?>
-
-
- =$this->nettoyer($societeuser['tauxRistourne']) . " % "?>
-
-
-
-
-
-
-
-
-
- 08
-
- = _("Rapport Sinistres/Primes au dela duquel, il n'y aura plus de ristourne en cas de retrait d'un assuré. Exemple si le seuil est de 65% et que le S/P de la police est de 55%, on aura une retourne en cas de retrait. Par contre, dès que le S/P de la police atteindra 65%, tous les futurs retraits se feront sans ristourne") ?>
-
-
- =$this->nettoyer($societeuser['seuilRistourne']) . " % " ?>
-
-
-
-
-
-
-
-
-
- 09
-
- = _("Permettre l'archivage automatique des primes?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
- nettoyer($societeuser['archivageAutomatiquePrime']), true); ?>
-
-
-
-
-
-
-
-
-
- 10
-
- = _("Le bénéficiaire reçoit-il son numéro d'assuré par SMS, WhatsApp et/ou Mail ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
- nettoyer($societeuser['notificationSmsNumeroAssure']), true); ?>
-
-
-
-
-
-
-
-
-
- 11
-
- = _("L'assuré principal reçoit en groupe, les numéros d'assurés de tous les membres de sa famille, par SMS, WhatsApp et/ou E-Mail ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
- nettoyer($societeuser['notificationGroupeNumeroAssure']), true); ?>
-
-
-
-
-
-
-
-
-
- 12
-
- = _("Activer le paramétrage de la facturation d'un garant par produit ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
- nettoyer($societeuser['parametresFacturationGarantProduit']), true); ?>
-
-
-
-
-
-
-
-
-
- 13
-
- = _("Permettre aux adhérents d'ajouter les photos de leurs familles au niveau du portail assuré ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
- nettoyer($societeuser['assureAjoutPhoto']), true); ?>
-
-
-
-
-
-
-
-
-
- = _("COMPTABILITE") ?>
-
-
-
-
-
-
-
- 01
-
- = _("La valeur de l'écart toléré lorsqu'un encaissement de prime ou de facture garant est fait") ?>
-
-
- =format_N($this->nettoyer($societeuser['EcartEncaissementTolerable'])) . " " . $_SESSION['devise_C']?>
-
-
-
-
-
-
-
-
-
- 02
-
- = _("Le lettrage des encaissements garants se fait-il automatiquement ?") ?>
-
-
-
-
- = _("Oui") ?>
-
- = _("Non") ?>
-
-
-
-
-
- nettoyer($societeuser['lettrageAutoGarant']), true); ?>
-
-
-
-
-
-
-
-
-
- " onClick="javascript:enregistrer_modif_parametres_prod();" style='font-size:10pt;' >
-
- " onClick="javascript:afficher_autres_parametresgeneraux();" style='font-size:10pt;' >
-
-
-
+
diff --git a/Vue/Modifautresparametressin/index.php b/Vue/Modifautresparametressin/index.php
index deb55aea..727d54b1 100755
--- a/Vue/Modifautresparametressin/index.php
+++ b/Vue/Modifautresparametressin/index.php
@@ -1,877 +1,298 @@
-titre = "INTER SANTE - Modifier Paramètres Généraux de la Gestion Médical et Autres"; ?>
+titre = "INTER SANTE - " . _("Modifier Paramètres Médical & Prestataires"); ?>
+
+
+
+
+
\ No newline at end of file
diff --git a/Vue/Parametresgeneraux/index.php b/Vue/Parametresgeneraux/index.php
index d92825f2..5eb58cc8 100755
--- a/Vue/Parametresgeneraux/index.php
+++ b/Vue/Parametresgeneraux/index.php
@@ -1,152 +1,256 @@
-titre = "INTER SANTE - Paramètres Généraux"; ?>
-
+
-
+
+
+
+
+
+
+
+
+
= _("Code") ?>
+
= $this->nettoyer($societeuser['codeSociete']) ?>
+
+
+ = _("Dénomination") ?>
+
+
+
+ = _("Sigle") ?>
+
+
-
= _("Paramètres système du centre de gestion") ?>
+
+
+
+ = _("Siège Social") ?>
+
+
+
+ = _("Boite Postale") ?>
+
+
+
+ = _("Ville") ?>
+
+
+
+ = _("Pays") ?>
+
+
+
+
+
+
+
+
-
-
-
-
- Code
-
+
+
+
+
+
+
+ = _("Standard Fixe") ?>
+ = $this->nettoyer($societeuser['telephoneSociete']) ?>
+
+
+ = _("Ligne Directe") ?>
+ = $this->nettoyer($societeuser['portable']) ?>
+
+
+ = _("Email Officiel") ?>
+ = $this->nettoyer($societeuser['emailSociete']) ?>
+
+
+ = _("Fax") ?>
+ = $this->nettoyer($societeuser['faxSociete']) ?>
+
+
+
+
+
- = _("Nom") ?>
-
-
- = _("Adresse Géo") ?>
-
+
+
+
+
+
+ 'Médecin Conseil', 'v' => 'emailMedecinConseil', 'i' => 'fa-user-md', 'sms' => 'smsMedecinConseil'],
+ ['l' => 'Gestion des Bons', 'v' => 'emailGestionBon', 'i' => 'fa-ticket-alt', 'sms' => 'smsGestionBon'],
+ ['l' => 'Comptabilité', 'v' => 'emailCcomptabilite', 'i' => 'fa-calculator', 'sms' => null],
+ ['l' => 'Dérogation', 'v' => 'emailDerogation', 'i' => 'fa-exclamation-circle', 'sms' => 'smsDerogation'],
+ ['l' => 'Accord Préalable', 'v' => 'emailAccordPrealable', 'i' => 'fa-check-double', 'sms' => 'smsAccordPrealable'],
+ ['l' => 'Lutte Fraude', 'v' => 'emailFraudeFinger', 'i' => 'fa-fingerprint', 'sms' => null],
+ ['l' => 'Remboursements', 'v' => 'emailRd', 'i' => 'fa-hand-holding-usd', 'sms' => 'smsRd'],
+ ];
-
= _("Adresse Postale") ?>
-
-
+ foreach($services as $s): ?>
+
+
+
+
+ = _($s['l']) ?>
+
+
+
= _("Email Service") ?>
+
= $this->nettoyer($societeuser[$s['v']]) ?>
+
+
+
+
= _("SMS Alertes") ?>
+
= $this->nettoyer($societeuser[$s['sms']]) ?>
+
+
+
+
+
+
+
+
+
-
- = _("Ville") ?>
-
-
- nettoyer($societeuser['ville'])); ?>
-
-
+
+
+
+
+
+
+
+
+
+
+
= _("Alerte Consommation") ?>
+
+
= $this->nettoyer($societeuser['alertLimiteConsommation']) ?>
+
%
+
+ = $this->nettoyer($societeuser['emailAlertLimiteConsommation']) ?>
+
+
+
+
+
-
= _("Téléphone") ?>
-
-
-
Fax
-
+
+
+
+
+
+
+
= _("Taux Alerte S/P Max") ?>
+
= $this->nettoyer($societeuser['spMax']) ?> %
+
+
+
-
E-mail
-
-
-
-
- = _("Tél Portable") ?>
-
+
+
+
+
+
+
+
= _("Tarif Carte AFN") ?>
+
= format_N($this->nettoyer($societeuser['fraisCarteAN'])) ?> FCFA
+
+
+
- = _("Responsable") ?>
-
+
+
= _("Logs Visites") ?>
+ nettoyer($societeuser['activerLogVisitePages']);
+ $badgeClass = ($logStatus == 'OUI' || $logStatus == '1') ? 'bg-success' : 'bg-secondary';
+ ?>
+
+ = $logStatus ?>
+
+
+
+
+
+
+
+
- = _("Pays") ?>
-
+
\ No newline at end of file
diff --git a/Vue/Recherche/index.php b/Vue/Recherche/index.php
index 6b6a799f..801d15ae 100755
--- a/Vue/Recherche/index.php
+++ b/Vue/Recherche/index.php
@@ -1,125 +1,162 @@
-