templates/DemandeAchatVue/show.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title></title>
  6. <meta name="keywords" content="index de l'application" />
  7. <meta name="description" content="index de l'application" />
  8. <style>
  9. .val-date {
  10. text-align: left;
  11. }
  12. .val-circuit { margin: 0; padding: 0; }
  13. .val-section { margin-bottom: 6px; }
  14. .val-row {
  15. display: flex;
  16. align-items: stretch;
  17. border: 0.5px solid #e5e7eb;
  18. border-radius: 8px;
  19. overflow: hidden;
  20. background: #fff;
  21. }
  22. {# Label bleu gauche — identique pour tous les niveaux #}
  23. .val-label {
  24. min-width: 175px;
  25. max-width: 175px;
  26. background: var(--accent2);
  27. color: #fff;
  28. font-size: .72rem;
  29. font-weight: 700;
  30. text-transform: uppercase;
  31. letter-spacing: .07em;
  32. padding: 11px 14px;
  33. white-space: nowrap;
  34. text-align: left;
  35. }
  36. {# Grille auto-fit — s'adapte automatiquement de 1 à 8 slots
  37. sans aucune modification du HTML selon le nombre de slots actifs #}
  38. .val-grid {
  39. flex: 1;
  40. display: grid;
  41. grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  42. }
  43. {# Slot individuel — identique pour chefs de projet ET directeurs DP #}
  44. .val-slot {
  45. padding: 8px 12px;
  46. border-left: 0.5px solid #e5e7eb;
  47. border-bottom: 0.5px solid #e5e7eb;
  48. display: flex;
  49. flex-direction: column;
  50. gap: 4px;
  51. min-width: 0;
  52. }
  53. .val-slot:last-child { border-bottom: none; }
  54. {# Sous-titre du slot : projet/bailleur pour chefs, CC pour DP, vide pour niveaux uniques #}
  55. .slot-sub {
  56. font-size: 11px;
  57. color: #9ca3af;
  58. white-space: nowrap;
  59. overflow: hidden;
  60. text-overflow: ellipsis;
  61. }
  62. {# Badges — états possibles d'un slot #}
  63. .val-badge {
  64. display: inline-flex;
  65. align-items: center;
  66. gap: 5px;
  67. border-radius: 6px;
  68. padding: 3px 8px;
  69. font-size: 12px;
  70. width: fit-content;
  71. }
  72. .val-badge.signed { background: #f0fdf4; color: var(--accent2); border: 0.5px solid #bbf7d0; }
  73. .val-badge.refused { background: #fef2f2; color: #991b1b; border: 0.5px solid #fecaca; }
  74. .val-badge.pending { background: #fffbeb; color: #92400e; border: 0.5px solid #fde68a; }
  75. .val-badge.locked { background: #f9fafb; color: #9ca3af; border: 0.5px solid #e5e7eb; }
  76. .val-date { font-size: 11px; color: #9ca3af; }
  77. {# Boutons approuver/rejeter — identiques pour tous les niveaux #}
  78. .val-btns { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 3px; }
  79. .btn-approve {
  80. display: inline-flex; align-items: center; gap: 4px;
  81. background: #f0fdf4; color: #166534; border: 0.5px solid #bbf7d0;
  82. border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: pointer;
  83. }
  84. .btn-approve:hover { background: #dcfce7; }
  85. .btn-reject {
  86. display: inline-flex; align-items: center; gap: 4px;
  87. background: #fef2f2; color: #991b1b; border: 0.5px solid #fecaca;
  88. border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: pointer;
  89. }
  90. .btn-reject:hover { background: #fee2e2; }
  91. .val-row.not-required { opacity: 0.4; pointer-events: none; }
  92. .custom-table td {
  93. font-size: 13px;
  94. font-weight: 600;
  95. letter-spacing: 0.3px;
  96. }
  97. .col-designation {
  98. width: 200px; /* réduit */
  99. max-width: 200px;
  100. word-break: break-word;
  101. }
  102. .col-pu {
  103. width: 100px; /* augmente */
  104. min-width: 100px;
  105. text-align: right;
  106. }
  107. .col-bail {
  108. width: 100px; /* réduit */
  109. max-width: 100px;
  110. word-break: break-word;
  111. }
  112. .col-descrip {
  113. width: 100px; /* augmente */
  114. min-width: 100px;
  115. text-align: left;
  116. word-break: break-word;
  117. }
  118. @font-face {
  119. font-family: 'DM Sans';
  120. src: url('{{ asset('fonts/dm-sans-v17-latin-300.woff2') }}') format('woff2');
  121. font-weight: 300; font-style: normal; font-display: swap;
  122. }
  123. @font-face {
  124. font-family: 'DM Sans';
  125. src: url('{{ asset('fonts/dm-sans-v17-latin-regular.woff2') }}') format('woff2');
  126. font-weight: 400; font-style: normal; font-display: swap;
  127. }
  128. @font-face {
  129. font-family: 'DM Sans';
  130. src: url('{{ asset('fonts/dm-sans-v17-latin-500.woff2') }}') format('woff2');
  131. font-weight: 500; font-style: normal; font-display: swap;
  132. }
  133. @font-face {
  134. font-family: 'DM Sans';
  135. src: url('{{ asset('fonts/dm-sans-v17-latin-600.woff2') }}') format('woff2');
  136. font-weight: 600; font-style: normal; font-display: swap;
  137. }
  138. @font-face {
  139. font-family: 'DM Sans';
  140. src: url('{{ asset('fonts/dm-sans-v17-latin-700.woff2') }}') format('woff2');
  141. font-weight: 700; font-style: normal; font-display: swap;
  142. }
  143. @font-face {
  144. font-family: 'DM Mono';
  145. src: url('{{ asset('fonts/dm-mono-v16-latin-300.woff2') }}') format('woff2');
  146. font-weight: 300; font-style: normal; font-display: swap;
  147. }
  148. @font-face {
  149. font-family: 'DM Mono';
  150. src: url('{{ asset('fonts/dm-mono-v16-latin-regular.woff2') }}') format('woff2');
  151. font-weight: 400; font-style: normal; font-display: swap;
  152. }
  153. @font-face {
  154. font-family: 'DM Mono';
  155. src: url('{{ asset('fonts/dm-mono-v16-latin-500.woff2') }}') format('woff2');
  156. font-weight: 500; font-style: normal; font-display: swap;
  157. }
  158. .da-wrap { font-family: 'DM Sans', sans-serif !important; }
  159. :root {
  160. --bg: #f4f6f9;
  161. --surface: #ffffff;
  162. --surface2: #f0f3f7;
  163. --border: #dde3ed;
  164. --accent: #1a56db;
  165. --accent2: #0e3fa8;
  166. --success: #0e9f6e;
  167. --warning: #e3a008;
  168. --danger: #e02424;
  169. --info: #0694a2;
  170. --text: #111827;
  171. --muted: #6b7280;
  172. --radius: 10px;
  173. --shadow: 0 2px 12px rgba(0,0,0,.07);
  174. --shadow-lg: 0 8px 32px rgba(0,0,0,.12);
  175. }
  176. * { box-sizing: border-box; margin: 0; padding: 0; }
  177. body {
  178. font-family: 'DM Sans','Lato', sans-serif;
  179. font-size: 14px;
  180. }
  181. /* ── Page wrapper ── */
  182. .da-page {
  183. max-width: 1600px;
  184. margin: 0 auto;
  185. padding: 24px 16px 48px;
  186. width: 100%;
  187. }
  188. /* ── Header ── */
  189. .da-header {
  190. display: flex;
  191. align-items: center;
  192. justify-content: space-between;
  193. flex-wrap: wrap;
  194. gap: 16px;
  195. background: var(--surface);
  196. border-radius: var(--radius);
  197. padding: 20px 28px;
  198. box-shadow: var(--shadow);
  199. margin-bottom: 20px;
  200. border-left: 5px solid var(--accent);
  201. }
  202. .da-header__brand {
  203. display: flex;
  204. align-items: center;
  205. gap: 16px;
  206. }
  207. .da-header__brand img {
  208. height: 52px;
  209. object-fit: contain;
  210. }
  211. .da-header__title {
  212. font-size: 1.4rem;
  213. font-weight: 700;
  214. color: var(--accent2);
  215. letter-spacing: -.3px;
  216. }
  217. .da-header__sub {
  218. font-family: 'DM Mono', monospace;
  219. font-size: .78rem;
  220. color: var(--muted);
  221. margin-top: 2px;
  222. }
  223. /* ── Actions bar ── */
  224. .da-actions {
  225. display: flex;
  226. flex-wrap: wrap;
  227. gap: 8px;
  228. background: var(--surface);
  229. border-radius: var(--radius);
  230. padding: 14px 20px;
  231. box-shadow: var(--shadow);
  232. margin-bottom: 20px;
  233. align-items: center;
  234. width: 100%;
  235. }
  236. .da-actions .btn {
  237. display: inline-flex;
  238. align-items: center;
  239. gap: 6px;
  240. padding: 7px 16px;
  241. border-radius: 7px;
  242. font-size: .82rem;
  243. font-weight: 800;
  244. font-family: 'DM Sans', sans-serif;
  245. border: none;
  246. cursor: pointer;
  247. text-decoration: none;
  248. transition: filter .15s, transform .1s;
  249. }
  250. .da-actions .btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
  251. .da-actions .btn:active { transform: translateY(0); }
  252. .btn-primary { background: var(--accent); color: #fff; }
  253. .btn-success { background: var(--success); color: #fff; }
  254. .btn-danger { background: var(--danger); color: #fff; }
  255. .btn-warning { background: var(--warning); color: #fff; }
  256. .btn-info { background: var(--info); color: #fff; }
  257. .btn-outline { background: transparent; color: var(--danger); border: 1.5px solid var(--danger); }
  258. .btn-secondary { background: var(--surface2); color: var(--text); border: 1.5px solid var(--border); }
  259. .btn-xs { padding: 5px 12px; font-size: .78rem; }
  260. /* ── Info Grid ── */
  261. .da-info-grid {
  262. display: grid;
  263. grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  264. gap: 14px;
  265. margin-bottom: 20px;
  266. }
  267. .da-info-card {
  268. background: var(--surface);
  269. border-radius: var(--radius);
  270. padding: 16px 20px;
  271. box-shadow: var(--shadow);
  272. display: flex;
  273. flex-direction: column;
  274. gap: 4px;
  275. }
  276. .da-info-card__label {
  277. font-size: .72rem;
  278. font-weight: 600;
  279. text-transform: uppercase;
  280. letter-spacing: .06em;
  281. color: var(--muted);
  282. }
  283. .da-info-card__value {
  284. font-size: .98rem;
  285. font-weight: 600;
  286. color: var(--text);
  287. }
  288. .da-info-card__sig {
  289. font-size: .8rem;
  290. color: var(--muted);
  291. font-style: italic;
  292. text-decoration: line-through;
  293. }
  294. /* Statut badge */
  295. .badge {
  296. display: inline-flex;
  297. align-items: center;
  298. gap: 5px;
  299. padding: 3px 10px;
  300. border-radius: 20px;
  301. font-size: .75rem;
  302. font-weight: 700;
  303. letter-spacing: .04em;
  304. }
  305. .badge-success { background: #d1fae5; color: #065f46; }
  306. .badge-warning { background: #fef3c7; color: #92400e; }
  307. /* ── Objet band ── */
  308. .da-objet {
  309. background: var(--surface);
  310. border-radius: var(--radius);
  311. padding: 14px 20px;
  312. box-shadow: var(--shadow);
  313. margin-bottom: 20px;
  314. font-weight: 500;
  315. color: var(--text);
  316. border-left: 4px solid var(--info);
  317. }
  318. .da-objet span { color: var(--muted); font-weight: 400; }
  319. /* ── Table ── */
  320. .da-table-wrap {
  321. background: var(--surface);
  322. border-radius: var(--radius);
  323. box-shadow: var(--shadow);
  324. overflow: hidden;
  325. margin-bottom: 20px;
  326. }
  327. .da-table-wrap table {
  328. width: 100%;
  329. border-collapse: collapse;
  330. }
  331. .da-table-wrap thead th {
  332. background: var(--accent2);
  333. color: #fff;
  334. font-size: .72rem;
  335. font-weight: 700;
  336. text-transform: uppercase;
  337. letter-spacing: .07em;
  338. padding: 11px 14px;
  339. white-space: nowrap;
  340. text-align: left;
  341. }
  342. .da-table-wrap tbody tr {
  343. border-bottom: 1px solid var(--border);
  344. transition: background .12s;
  345. }
  346. .da-table-wrap tbody tr:last-child { border-bottom: none; }
  347. .da-table-wrap tbody tr:hover { background: var(--surface2); }
  348. .da-table-wrap tbody td {
  349. padding: 10px 14px;
  350. font-size: .84rem;
  351. vertical-align: middle;
  352. color: var(--text);
  353. }
  354. .da-table-wrap tbody td.num {
  355. font-family: 'DM Mono', monospace;
  356. font-size: .82rem;
  357. text-align: right;
  358. }
  359. .da-table-wrap tbody td .reject-reason {
  360. font-size: .76rem;
  361. color: var(--danger);
  362. font-style: italic;
  363. margin-top: 2px;
  364. }
  365. .col-designation { min-width: 160px; }
  366. .col-descrip { min-width: 130px; color: var(--muted) !important; font-size: .8rem !important; }
  367. .col-pu, .col-total { text-align: right; }
  368. .da-table-wrap td img { vertical-align: middle; margin-left: 4px; }
  369. /* ── Add row trigger ── */
  370. .da-add-row td {
  371. padding: 8px 14px !important;
  372. background: var(--surface2);
  373. }
  374. /* ── Recap / totals + validations ── */
  375. .da-bottom {
  376. display: grid;
  377. grid-template-columns: 1fr 1fr;
  378. gap: 18px;
  379. margin-bottom: 20px;
  380. }
  381. @media (max-width: 768px) {
  382. .da-bottom { grid-template-columns: 1fr; }
  383. }
  384. .da-validations, .da-totals {
  385. background: var(--surface);
  386. border-radius: var(--radius);
  387. box-shadow: var(--shadow);
  388. padding: 20px 24px;
  389. }
  390. .da-section-title {
  391. font-size: .7rem;
  392. font-weight: 700;
  393. text-transform: uppercase;
  394. letter-spacing: .1em;
  395. color: var(--muted);
  396. margin-bottom: 16px;
  397. padding-bottom: 8px;
  398. border-bottom: 1px solid var(--border);
  399. }
  400. /* Validations */
  401. .da-valid-row {
  402. display: flex;
  403. align-items: flex-start;
  404. gap: 12px;
  405. padding: 10px 0;
  406. border-bottom: 1px solid var(--border);
  407. }
  408. .da-valid-row:last-child { border-bottom: none; }
  409. .da-valid-row__icon {
  410. width: 32px;
  411. height: 32px;
  412. border-radius: 50%;
  413. display: flex;
  414. align-items: center;
  415. justify-content: center;
  416. font-size: 14px;
  417. flex-shrink: 0;
  418. }
  419. .icon-pending { background: #fef3c7; color: var(--warning); }
  420. .icon-ok { background: #d1fae5; color: var(--success); }
  421. .icon-rejected { background: #fee2e2; color: var(--danger); }
  422. .da-valid-row__body { flex: 1; }
  423. .da-valid-row__name { font-weight: 600; font-size: .84rem; }
  424. .da-valid-row__meta { font-size: .75rem; color: var(--muted); margin-top: 2px; }
  425. .da-valid-row__sig { font-style: italic; text-decoration: line-through; font-size: .75rem; color: var(--accent); }
  426. .da-valid-row__actions { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
  427. /* Totals */
  428. .da-totals-table { width: 100%; }
  429. .da-totals-table tr td {
  430. padding: 8px 0;
  431. font-size: .88rem;
  432. border-bottom: 1px solid var(--border);
  433. }
  434. .da-totals-table tr:last-child td { border-bottom: none; }
  435. .da-totals-table .t-label {
  436. color: var(--muted);
  437. font-weight: 500;
  438. }
  439. .da-totals-table .t-value {
  440. font-family: 'DM Mono', monospace;
  441. font-weight: 700;
  442. text-align: right;
  443. font-size: .92rem;
  444. }
  445. .da-totals-table .t-ttc .t-label,
  446. .da-totals-table .t-ttc .t-value {
  447. font-size: 1.05rem;
  448. color: var(--accent2);
  449. }
  450. /* TVA inline form */
  451. .tva-form {
  452. display: inline-flex;
  453. align-items: center;
  454. gap: 6px;
  455. }
  456. .tva-form select, .tva-form input[type="number"] {
  457. border: 1.5px solid var(--border);
  458. border-radius: 6px;
  459. padding: 3px 8px;
  460. font-family: 'DM Sans', sans-serif;
  461. font-size: .82rem;
  462. color: var(--text);
  463. background: var(--surface2);
  464. outline: none;
  465. transition: border-color .15s;
  466. width: 70px;
  467. }
  468. .tva-form select:focus, .tva-form input:focus { border-color: var(--accent); }
  469. /* ── Pièce jointe ── */
  470. .da-attachment {
  471. background: var(--surface);
  472. border-radius: var(--radius);
  473. box-shadow: var(--shadow);
  474. padding: 18px 24px;
  475. margin-bottom: 20px;
  476. display: flex;
  477. align-items: center;
  478. gap: 16px;
  479. flex-wrap: wrap;
  480. border-left: 4px solid var(--warning);
  481. }
  482. .da-attachment__icon {
  483. font-size: 1.8rem;
  484. color: var(--warning);
  485. }
  486. .da-attachment__label {
  487. font-weight: 600;
  488. font-size: .9rem;
  489. color: var(--text);
  490. }
  491. .da-attachment__sub {
  492. font-size: .78rem;
  493. color: var(--muted);
  494. }
  495. /* Loaders */
  496. .loader-img { vertical-align: middle; display: none; }
  497. /* ── Responsive table scroll ── */
  498. .da-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  499. /* ── Print ── */
  500. @media print {
  501. .da-actions, .da-attachment { display: none; }
  502. .da-page { padding: 0; }
  503. }
  504. /* ── Mobile ── */
  505. @media (max-width: 600px) {
  506. .da-header { flex-direction: column; text-align: center; }
  507. .da-header__brand { flex-direction: column; }
  508. .da-table-wrap thead { display: none; }
  509. .da-table-wrap tbody td {
  510. display: flex;
  511. justify-content: space-between;
  512. padding: 6px 14px;
  513. font-size: .82rem;
  514. }
  515. .da-table-wrap tbody td::before {
  516. content: attr(data-label);
  517. font-weight: 700;
  518. color: var(--muted);
  519. font-size: .72rem;
  520. text-transform: uppercase;
  521. margin-right: 8px;
  522. flex-shrink: 0;
  523. }
  524. .da-table-wrap tbody tr {
  525. display: block;
  526. border: 1px solid var(--border);
  527. border-radius: 8px;
  528. margin: 8px 12px;
  529. }
  530. }
  531. .custom-statu {
  532. font-size: 13px;
  533. font-weight: 600;
  534. letter-spacing: 0.3px;
  535. }
  536. </style>
  537. <script>
  538. $(document).ready(function () {
  539. $('.monModal').on('show.bs.modal', function (e) {
  540. var button = $(e.relatedTarget);
  541. var url = button.data('url');
  542. var modal = $(this);
  543. if (!url) return;
  544. modal.find('.modal-body').html('<div class="text-center">Loading...</div>');
  545. $.ajax({
  546. url: url,
  547. method: 'GET',
  548. success: function (data) {
  549. modal.find('.modal-body').html(data);
  550. },
  551. error: function () {
  552. modal.find('.modal-body').html('Erreur de chargement');
  553. }
  554. });
  555. });
  556. $('.monModal').on('hidden.bs.modal', function () {
  557. $(this).find('.modal-body').html('');
  558. });
  559. });
  560. </script>
  561. <script>
  562. $(document).ready(function () {
  563. let currentDemAchatId = null;
  564. // ✅ Délégation d'événement — capture aussi les boutons ajoutés dynamiquement
  565. $(document).on('click', '[data-target="#modalUpload"]', function () {
  566. currentDemAchatId = $(this).data('id');
  567. const fichier = $(this).data('fichier');
  568. const url = $(this).data('url');
  569. // Reset
  570. $('#pieceJointeFile').val('');
  571. $('#uploadAlert').addClass('d-none').html('');
  572. $('#uploadProgress').addClass('d-none');
  573. $('#downloadSection').addClass('d-none');
  574. // Afficher le fichier existant si présent
  575. if (fichier) {
  576. const icone = getIconeFichier(fichier);
  577. $('#iconeFichierExistant').html(icone + ' ');
  578. $('#lienFichierExistant').attr('href', url).text(fichier);
  579. $('#fichierExistant').removeClass('d-none');
  580. } else {
  581. $('#fichierExistant').addClass('d-none');
  582. }
  583. });
  584. // Clic sur "Envoyer"
  585. $('#btnUpload').on('click', function () {
  586. const file = $('#pieceJointeFile')[0].files[0];
  587. if (!file) {
  588. afficherAlerte('danger', 'Veuillez sélectionner un fichier.');
  589. return;
  590. }
  591. // Vérification taille max : 5 Mo
  592. const maxSize = 5 * 1024 * 1024;
  593. if (file.size > maxSize) {
  594. afficherAlerte('danger', 'Le fichier est trop volumineux. Taille max : 5 Mo.');
  595. return;
  596. }
  597. const formData = new FormData();
  598. formData.append('pieceJointe', file);
  599. $('#uploadProgress').removeClass('d-none');
  600. $('#btnUpload').prop('disabled', true);
  601. $('#uploadAlert').addClass('d-none');
  602. $.ajax({
  603. url: '/dem-achat/' + currentDemAchatId + '/upload',
  604. type: 'POST',
  605. data: formData,
  606. processData: false,
  607. contentType: false,
  608. success: function (response) {
  609. $('#uploadProgress').addClass('d-none');
  610. $('#btnUpload').prop('disabled', false);
  611. if (response.success) {
  612. afficherAlerte('success', response.message);
  613. const icone = getIconeFichier(response.filename);
  614. // Lien dans le modal
  615. $('#downloadLink')
  616. .attr('href', response.downloadUrl)
  617. .html(icone + ' Télécharger la pièce jointe');
  618. $('#downloadSection').removeClass('d-none');
  619. // Mise à jour sur la page DA
  620. $('#pjSection').html(`
  621. <a href="${response.downloadUrl}" target="_blank" class="btn btn-success btn-sm">
  622. ${icone} Télécharger la pièce jointe
  623. </a>
  624. <button class="btn btn-warning btn-sm ml-2"
  625. data-toggle="modal" data-target="#modalUpload"
  626. data-id="${currentDemAchatId}"
  627. data-fichier="${response.filename}"
  628. data-url="${response.downloadUrl}">
  629. <i class="fas fa-sync"></i> Remplacer
  630. </button>
  631. `);
  632. } else {
  633. afficherAlerte('danger', response.message);
  634. }
  635. },
  636. error: function (xhr) {
  637. $('#uploadProgress').addClass('d-none');
  638. $('#btnUpload').prop('disabled', false);
  639. const msg = xhr.responseJSON?.message || 'Erreur serveur.';
  640. afficherAlerte('danger', msg);
  641. }
  642. });
  643. });
  644. // Icône selon le type de fichier
  645. function getIconeFichier(filename) {
  646. const ext = filename.split('.').pop().toLowerCase();
  647. const icones = {
  648. 'pdf' : '<i class="fas fa-file-pdf text-danger"></i>',
  649. 'doc' : '<i class="fas fa-file-word text-primary"></i>',
  650. 'docx' : '<i class="fas fa-file-word text-primary"></i>',
  651. 'xls' : '<i class="fas fa-file-excel text-success"></i>',
  652. 'xlsx' : '<i class="fas fa-file-excel text-success"></i>',
  653. 'png' : '<i class="fas fa-file-image text-warning"></i>',
  654. 'jpeg' : '<i class="fas fa-file-image text-warning"></i>',
  655. 'txt' : '<i class="fas fa-file-alt text-secondary"></i>',
  656. };
  657. return icones[ext] || '<i class="fas fa-file text-secondary"></i>';
  658. }
  659. // Afficher alerte
  660. function afficherAlerte(type, message) {
  661. $('#uploadAlert')
  662. .removeClass('d-none alert-success alert-danger')
  663. .addClass('alert alert-' + type)
  664. .html(message);
  665. }
  666. });
  667. </script>
  668. <script>
  669. $("#imgrefuacha").hide();
  670. $("#imgrespacha").hide();
  671. $("#imginfo").hide();
  672. $("#imggarag").hide();
  673. $("#imgrefuinfo").hide();
  674. $("#imgrefugarag").hide();
  675. $("#loadr").hide();
  676. $("#loadrr").hide();
  677. $("#loadp").hide();
  678. $("#loadpr").hide();
  679. $("#loaders").hide();
  680. $("#loadiscus").hide();
  681. $("#lods").hide();
  682. $("#lod").hide();
  683. $("#lad").hide();
  684. $("#loads").hide();
  685. $("#imglead").hide();
  686. $("#imglea").hide();
  687. $("#imgchef").hide();
  688. $("#imgche").hide();
  689. $("#tva").hide();
  690. $("#loareg").hide();
  691. $("#loadreg").hide();
  692. $("#loasuph").hide();
  693. $("#loasuphr").hide();
  694. $("#charg").hide();
  695. $("#loamedical").hide();
  696. $("#loamedicalr").hide();
  697. $("#loadbc").hide();Sanscc
  698. $("#Sanscc").hide();
  699. </script>
  700. <script>
  701. $('#signdrmedicalrefu').click(function()
  702. {
  703. $("#signdrmedicalrefu").hide();
  704. $("#loamedicalr").show();
  705. $.ajax({
  706. type : 'POST',
  707. url : '{{ path('ajax_drmedicalrefu')}}',
  708. data : 'listnum=' + $('#form_listnum').val()+
  709. '&listnum2=' + $('#form_listnum2').val()+
  710. '&listnum1=' + $('#form_listnum1').val()+
  711. '&listnum5=' + $('#form_listnum5').val()+
  712. '&listnum4=' + $('#form_listnum4').val()+
  713. '&listnum3=' + $('#form_listnum3').val()+
  714. '&listnum7=' + $('#form_listnum7').val()+
  715. '&listnum9=' + $('#form_listnum9').val(),
  716. success: function(data)
  717. {
  718. $("#loamedicalr").hide();
  719. $('#liste').html(data);
  720. }
  721. });
  722. });
  723. </script>
  724. <script>
  725. $('#signdrmedical').click(function()
  726. {
  727. $("#signdrmedical").hide();
  728. $("#loamedical").show();
  729. $.ajax({
  730. type : 'POST',
  731. url : '{{ path('ajax_drapodrmedical')}}',
  732. data : 'listnum=' + $('#form_listnum').val()+
  733. '&listnum2=' + $('#form_listnum2').val()+
  734. '&listnum1=' + $('#form_listnum1').val()+
  735. '&listnum5=' + $('#form_listnum5').val()+
  736. '&listnum4=' + $('#form_listnum4').val()+
  737. '&listnum3=' + $('#form_listnum3').val()+
  738. '&listnum7=' + $('#form_listnum7').val()+
  739. '&listnum9=' + $('#form_listnum9').val(),
  740. success: function(data)
  741. {
  742. $("#loamedical").hide();
  743. $('#liste').html(data);
  744. }
  745. });
  746. });
  747. </script>
  748. <script>
  749. $('#charge').click(function()
  750. {
  751. $('#charge').hide();
  752. $('#charg').show();
  753. $.ajax({
  754. type : 'POST',
  755. url : '{{ path('ajax_drapoCharge')}}',
  756. data : 'listnum=' + $('#form_listnum').val()+
  757. '&listnum2=' + $('#form_listnum2').val()+
  758. '&listnum1=' + $('#form_listnum1').val()+
  759. '&listnum5=' + $('#form_listnum5').val()+
  760. '&listnum4=' + $('#form_listnum4').val()+
  761. '&listnum3=' + $('#form_listnum3').val()+
  762. '&listnum7=' + $('#form_listnum7').val()+
  763. '&listnum9=' + $('#form_listnum9').val(),
  764. success: function(data)
  765. {
  766. if (data.message) {
  767. $('#charg').hide();
  768. $('#charge').show();
  769. alert(data.message); // ou utilisez une autre méthode pour afficher le message
  770. }
  771. else {
  772. $('#charg').hide();
  773. $('#charge').show();
  774. $('#liste').html(data);
  775. }
  776. }
  777. });
  778. });
  779. </script>
  780. <script>
  781. $('#grille').click(function()
  782. {
  783. $("#load").show();
  784. $.ajax({
  785. type : 'POST',
  786. url : '{{ path('ajax_list_grille')}}',
  787. data : 'listnum=' + $('#form_listnum').val()+
  788. '&listnum2=' + $('#form_listnum2').val()+
  789. '&listnum1=' + $('#form_listnum1').val()+
  790. '&listnum5=' + $('#form_listnum5').val()+
  791. '&listnum4=' + $('#form_listnum4').val()+
  792. '&listnum3=' + $('#form_listnum3').val()+
  793. '&listnum7=' + $('#form_listnum7').val()+
  794. '&listnum9=' + $('#form_listnum9').val(),
  795. success: function(data)
  796. {
  797. $("#load").hide();
  798. $('#liste').html(data);
  799. }
  800. });
  801. });
  802. </script>
  803. <script>
  804. $('#validtech1').click(function()
  805. {
  806. $("#validtech1").hide();
  807. $("#imginfo").show();
  808. $.ajax({
  809. type : 'POST',
  810. url : '{{ path('ajax_valid_tech1')}}',
  811. data : 'listnum=' + $('#form_listnum').val()+
  812. '&listnum2=' + $('#form_listnum2').val()+
  813. '&listnum1=' + $('#form_listnum1').val()+
  814. '&listnum5=' + $('#form_listnum5').val()+
  815. '&listnum4=' + $('#form_listnum4').val()+
  816. '&listnum3=' + $('#form_listnum3').val()+
  817. '&listnum7=' + $('#form_listnum7').val()+
  818. '&listnum9=' + $('#form_listnum9').val(),
  819. success: function(data)
  820. {
  821. $("#imginfo").hide();
  822. $('#liste').html(data);
  823. }
  824. });
  825. });
  826. </script>
  827. <script>
  828. $('#validtech1refu').click(function()
  829. {
  830. $("#validtech1refu").hide();
  831. $("#imgrefuinfo").show();
  832. $.ajax({
  833. type : 'POST',
  834. url : '{{ path('ajax_valid_tech1_refu')}}',
  835. data : 'listnum=' + $('#form_listnum').val()+
  836. '&listnum2=' + $('#form_listnum2').val()+
  837. '&listnum1=' + $('#form_listnum1').val()+
  838. '&listnum5=' + $('#form_listnum5').val()+
  839. '&listnum4=' + $('#form_listnum4').val()+
  840. '&listnum3=' + $('#form_listnum3').val()+
  841. '&listnum7=' + $('#form_listnum7').val()+
  842. '&listnum9=' + $('#form_listnum9').val(),
  843. success: function(data)
  844. {
  845. $("#imgrefuinfo").hide();
  846. $('#liste').html(data);
  847. }
  848. });
  849. });
  850. </script>
  851. <script>
  852. $('#validtech2').click(function()
  853. {
  854. $("#validtech2").hide();
  855. $("#imggarag").show();
  856. $.ajax({
  857. type : 'POST',
  858. url : '{{ path('ajax_valid2')}}',
  859. data : 'listnum=' + $('#form_listnum').val()+
  860. '&listnum2=' + $('#form_listnum2').val()+
  861. '&listnum1=' + $('#form_listnum1').val()+
  862. '&listnum5=' + $('#form_listnum5').val()+
  863. '&listnum4=' + $('#form_listnum4').val()+
  864. '&listnum3=' + $('#form_listnum3').val()+
  865. '&listnum7=' + $('#form_listnum7').val()+
  866. '&listnum9=' + $('#form_listnum9').val(),
  867. success: function(data)
  868. {
  869. $("#imggarag").hide();
  870. $('#liste').html(data);
  871. }
  872. });
  873. });
  874. </script>
  875. <script>
  876. $('#validtech2refu').click(function()
  877. {
  878. $("#validtech2refu").hide();
  879. $("#imgrefugarag").show();
  880. $.ajax({
  881. type : 'POST',
  882. url : '{{ path('ajax_valid2_refu')}}',
  883. data : 'listnum=' + $('#form_listnum').val()+
  884. '&listnum2=' + $('#form_listnum2').val()+
  885. '&listnum1=' + $('#form_listnum1').val()+
  886. '&listnum5=' + $('#form_listnum5').val()+
  887. '&listnum4=' + $('#form_listnum4').val()+
  888. '&listnum3=' + $('#form_listnum3').val()+
  889. '&listnum7=' + $('#form_listnum7').val()+
  890. '&listnum9=' + $('#form_listnum9').val(),
  891. success: function(data)
  892. {
  893. $("#imgrefugarag").hide();
  894. $('#liste').html(data);
  895. }
  896. });
  897. });
  898. </script>
  899. <script>
  900. $('#correct').click(function()
  901. {
  902. $("#correct").hide();
  903. $.ajax({
  904. type : 'POST',
  905. url : '{{ path('ajax_correction_da')}}',
  906. data : 'listnum=' + $('#form_listnum').val()+
  907. '&listnum2=' + $('#form_listnum2').val()+
  908. '&listnum1=' + $('#form_listnum1').val()+
  909. '&listnum5=' + $('#form_listnum5').val()+
  910. '&listnum4=' + $('#form_listnum4').val()+
  911. '&listnum3=' + $('#form_listnum3').val()+
  912. '&listnum7=' + $('#form_listnum7').val()+
  913. '&listnum9=' + $('#form_listnum9').val(),
  914. success: function(data)
  915. {
  916. alert('vous pouvez effectuer les corrections sur la DA!');
  917. $('#liste').html(data);
  918. }
  919. });
  920. });
  921. </script>
  922. <script>
  923. $('#monlistnum10').change(function()
  924. {
  925. $("#tva").show();
  926. $.ajax({
  927. type : 'POST',
  928. url : '{{ path('ajax_mod_tva')}}',
  929. data : 'listnum=' + $('#form_listnum').val()+
  930. '&listnum2=' + $('#form_listnum2').val()+
  931. '&listnum1=' + $('#form_listnum1').val()+
  932. '&listnum5=' + $('#form_listnum5').val()+
  933. '&listnum4=' + $('#form_listnum4').val()+
  934. '&listnum3=' + $('#form_listnum3').val()+
  935. '&listnum7=' + $('#form_listnum7').val()+
  936. '&listnum9=' + $('#form_listnum9').val()+
  937. '&tva=' + $('#form_tva').val(),
  938. })
  939. .done(function(response)
  940. {
  941. $("#tva").hide();
  942. $('#liste').html(response);
  943. })
  944. .fail(function(jqXHR, textStatus, errorThrown)
  945. {
  946. $("#load").hide();
  947. alert('Error : ' + errorThrown);
  948. });
  949. return false;
  950. });
  951. </script>
  952. <script>
  953. $('#bcSanscc').click(function()
  954. {
  955. $("#Sanscc").show();
  956. $.ajax({
  957. type : 'POST',
  958. url : '{{ path('ajax_ca_sans_contrat')}}',
  959. data : 'listnum=' + $('#form_listnum').val()+
  960. '&listnum2=' + $('#form_listnum2').val()+
  961. '&listnum1=' + $('#form_listnum1').val()+
  962. '&listnum5=' + $('#form_listnum5').val()+
  963. '&listnum4=' + $('#form_listnum4').val()+
  964. '&listnum3=' + $('#form_listnum3').val()+
  965. '&listnum7=' + $('#form_listnum7').val()+
  966. '&listnum9=' + $('#form_listnum9').val(),
  967. success: function(data)
  968. {
  969. $("#Sanscc").hide();
  970. if (data.message) {
  971. alert(data.message);
  972. }
  973. }
  974. });
  975. });
  976. </script>
  977. <script>
  978. $('#bc').click(function()
  979. {
  980. $("#loadbc").show();
  981. $.ajax({
  982. type : 'POST',
  983. url : '{{ path('ajax_create_ca_contrat')}}',
  984. data : 'listnum=' + $('#form_listnum').val()+
  985. '&listnum2=' + $('#form_listnum2').val()+
  986. '&listnum1=' + $('#form_listnum1').val()+
  987. '&listnum5=' + $('#form_listnum5').val()+
  988. '&listnum4=' + $('#form_listnum4').val()+
  989. '&listnum3=' + $('#form_listnum3').val()+
  990. '&listnum7=' + $('#form_listnum7').val()+
  991. '&listnum9=' + $('#form_listnum9').val(),
  992. success: function(data)
  993. {
  994. $("#loadbc").hide();
  995. //$('#liste').html(data);
  996. if (data.message) {
  997. alert(data.message);
  998. }
  999. }
  1000. });
  1001. });
  1002. </script>
  1003. <script>
  1004. $('#suph').click(function()
  1005. {
  1006. $("#suph").hide();
  1007. $("#loasuph").show();
  1008. $.ajax({
  1009. type : 'POST',
  1010. url : '{{ path('ajax_draposuph')}}',
  1011. data : 'listnum=' + $('#form_listnum').val()+
  1012. '&listnum2=' + $('#form_listnum2').val()+
  1013. '&listnum1=' + $('#form_listnum1').val()+
  1014. '&listnum5=' + $('#form_listnum5').val()+
  1015. '&listnum4=' + $('#form_listnum4').val()+
  1016. '&listnum3=' + $('#form_listnum3').val()+
  1017. '&listnum7=' + $('#form_listnum7').val()+
  1018. '&listnum9=' + $('#form_listnum9').val(),
  1019. success: function(data)
  1020. {
  1021. $("#loasuph").hide();
  1022. $('#liste').html(data);
  1023. }
  1024. });
  1025. });
  1026. </script>
  1027. <script>
  1028. $('#suphrefu').click(function()
  1029. {
  1030. $("#suphrefu").hide();
  1031. $("#loasuphr").show();
  1032. $.ajax({
  1033. type : 'POST',
  1034. url : '{{ path('ajax_draposuphrefu')}}',
  1035. data : 'listnum=' + $('#form_listnum').val()+
  1036. '&listnum2=' + $('#form_listnum2').val()+
  1037. '&listnum1=' + $('#form_listnum1').val()+
  1038. '&listnum5=' + $('#form_listnum5').val()+
  1039. '&listnum4=' + $('#form_listnum4').val()+
  1040. '&listnum3=' + $('#form_listnum3').val()+
  1041. '&listnum7=' + $('#form_listnum7').val()+
  1042. '&listnum9=' + $('#form_listnum9').val(),
  1043. success: function(data)
  1044. {
  1045. $("#loasuphr").hide();
  1046. $('#liste').html(data);
  1047. }
  1048. });
  1049. });
  1050. </script>
  1051. <script>
  1052. $('#signrespacha').click(function()
  1053. {
  1054. $("#signrespacha").hide();
  1055. $("#imgrespacha").show();
  1056. $.ajax({
  1057. type : 'POST',
  1058. url : '{{ path('ajax_draporacha')}}',
  1059. data : 'listnum=' + $('#form_listnum').val()+
  1060. '&listnum2=' + $('#form_listnum2').val()+
  1061. '&listnum1=' + $('#form_listnum1').val()+
  1062. '&listnum5=' + $('#form_listnum5').val()+
  1063. '&listnum4=' + $('#form_listnum4').val()+
  1064. '&listnum3=' + $('#form_listnum3').val()+
  1065. '&listnum7=' + $('#form_listnum7').val()+
  1066. '&listnum9=' + $('#form_listnum9').val(),
  1067. success: function(data)
  1068. {
  1069. $("#imgrespacha").hide();
  1070. if (data.message) {
  1071. $("#signrespacha").show();
  1072. alert(data.message); // ou utilisez une autre méthode pour afficher le message
  1073. }
  1074. else
  1075. $('#liste').html(data);
  1076. }
  1077. });
  1078. });
  1079. </script>
  1080. <script>
  1081. $('#refurespacha').click(function()
  1082. {
  1083. $("#refurespacha").hide();
  1084. $("#imgrefuacha").show();
  1085. $.ajax({
  1086. type : 'POST',
  1087. url : '{{ path('ajax_draporacharefu')}}',
  1088. data : 'listnum=' + $('#form_listnum').val()+
  1089. '&listnum2=' + $('#form_listnum2').val()+
  1090. '&listnum1=' + $('#form_listnum1').val()+
  1091. '&listnum5=' + $('#form_listnum5').val()+
  1092. '&listnum4=' + $('#form_listnum4').val()+
  1093. '&listnum3=' + $('#form_listnum3').val()+
  1094. '&listnum7=' + $('#form_listnum7').val()+
  1095. '&listnum9=' + $('#form_listnum9').val(),
  1096. success: function(data)
  1097. {
  1098. $("#imgrefuacha").hide();
  1099. $('#liste').html(data);
  1100. }
  1101. });
  1102. });
  1103. </script>
  1104. <script>
  1105. $('#signreg').click(function()
  1106. {
  1107. $("#signreg").hide();
  1108. $("#loareg").show();
  1109. $.ajax({
  1110. type : 'POST',
  1111. url : '{{ path('ajax_draporespreg')}}',
  1112. data : 'listnum=' + $('#form_listnum').val()+
  1113. '&listnum2=' + $('#form_listnum2').val()+
  1114. '&listnum1=' + $('#form_listnum1').val()+
  1115. '&listnum5=' + $('#form_listnum5').val()+
  1116. '&listnum4=' + $('#form_listnum4').val()+
  1117. '&listnum3=' + $('#form_listnum3').val()+
  1118. '&listnum7=' + $('#form_listnum7').val()+
  1119. '&listnum9=' + $('#form_listnum9').val(),
  1120. success: function(data)
  1121. {
  1122. $("#loareg").hide();
  1123. $('#liste').html(data);
  1124. }
  1125. });
  1126. });
  1127. </script>
  1128. <script>
  1129. $('#signregrefu').click(function()
  1130. {
  1131. $("#signregrefu").hide();
  1132. $("#loadreg").show();
  1133. $.ajax({
  1134. type : 'POST',
  1135. url : '{{ path('ajax_draporespregrefu')}}',
  1136. data : 'listnum=' + $('#form_listnum').val()+
  1137. '&listnum2=' + $('#form_listnum2').val()+
  1138. '&listnum1=' + $('#form_listnum1').val()+
  1139. '&listnum5=' + $('#form_listnum5').val()+
  1140. '&listnum4=' + $('#form_listnum4').val()+
  1141. '&listnum3=' + $('#form_listnum3').val()+
  1142. '&listnum7=' + $('#form_listnum7').val()+
  1143. '&listnum9=' + $('#form_listnum9').val(),
  1144. success: function(data)
  1145. {
  1146. $("#loadreg").hide();
  1147. $('#liste').html(data);
  1148. }
  1149. });
  1150. });
  1151. </script>
  1152. <script>
  1153. $('#signlead').click(function()
  1154. {
  1155. $("#signlead").hide();
  1156. $("#imglead").show();
  1157. $.ajax({
  1158. type : 'POST',
  1159. url : '{{ path('ajax_drapolead')}}',
  1160. data : 'listnum=' + $('#form_listnum').val()+
  1161. '&listnum2=' + $('#form_listnum2').val()+
  1162. '&listnum1=' + $('#form_listnum1').val()+
  1163. '&listnum5=' + $('#form_listnum5').val()+
  1164. '&listnum4=' + $('#form_listnum4').val()+
  1165. '&listnum3=' + $('#form_listnum3').val()+
  1166. '&listnum7=' + $('#form_listnum7').val()+
  1167. '&listnum9=' + $('#form_listnum9').val(),
  1168. success: function(data)
  1169. {
  1170. $("#imglead").hide();
  1171. $('#liste').html(data);
  1172. }
  1173. });
  1174. });
  1175. </script>
  1176. <script>
  1177. $('#leadrefu').click(function()
  1178. {
  1179. $("#leadrefu").hide();
  1180. $("#imglea").show();
  1181. $.ajax({
  1182. type : 'POST',
  1183. url : '{{ path('ajax_drapoleadrefu')}}',
  1184. data : 'listnum=' + $('#form_listnum').val()+
  1185. '&listnum2=' + $('#form_listnum2').val()+
  1186. '&listnum1=' + $('#form_listnum1').val()+
  1187. '&listnum5=' + $('#form_listnum5').val()+
  1188. '&listnum4=' + $('#form_listnum4').val()+
  1189. '&listnum3=' + $('#form_listnum3').val()+
  1190. '&listnum7=' + $('#form_listnum7').val()+
  1191. '&listnum9=' + $('#form_listnum9').val(),
  1192. success: function(data)
  1193. {
  1194. $("#imglea").hide();
  1195. $('#liste').html(data);
  1196. }
  1197. });
  1198. });
  1199. </script>
  1200. <script>
  1201. $('#signchef').click(function()
  1202. {
  1203. $("#signchef").hide();
  1204. $("#imgchef").show();
  1205. $.ajax({
  1206. type : 'POST',
  1207. url : '{{ path('ajax_drapochefp')}}',
  1208. data : 'listnum=' + $('#form_listnum').val()+
  1209. '&listnum2=' + $('#form_listnum2').val()+
  1210. '&listnum1=' + $('#form_listnum1').val()+
  1211. '&listnum5=' + $('#form_listnum5').val()+
  1212. '&listnum4=' + $('#form_listnum4').val()+
  1213. '&listnum3=' + $('#form_listnum3').val()+
  1214. '&listnum7=' + $('#form_listnum7').val()+
  1215. '&listnum9=' + $('#form_listnum9').val(),
  1216. success: function(data)
  1217. {
  1218. $("#imgchef").hide();
  1219. if (data.message) {
  1220. $("#signchef").show();
  1221. alert(data.message); // ou utilisez une autre méthode pour afficher le message
  1222. }
  1223. else
  1224. $('#liste').html(data);
  1225. }
  1226. });
  1227. });
  1228. </script>
  1229. <script>
  1230. $('#traiter').click(function()
  1231. {
  1232. $('#traiter').hide();
  1233. $.ajax({
  1234. type : 'POST',
  1235. url : '{{ path('ajax_drapoTraite')}}',
  1236. data : 'listnum=' + $('#form_listnum').val()+
  1237. '&listnum2=' + $('#form_listnum2').val()+
  1238. '&listnum1=' + $('#form_listnum1').val()+
  1239. '&listnum5=' + $('#form_listnum5').val()+
  1240. '&listnum4=' + $('#form_listnum4').val()+
  1241. '&listnum3=' + $('#form_listnum3').val()+
  1242. '&listnum7=' + $('#form_listnum7').val()+
  1243. '&listnum9=' + $('#form_listnum9').val(),
  1244. success: function(data)
  1245. {
  1246. $('#liste').html(data);
  1247. $('#traiter').show();
  1248. }
  1249. });
  1250. });
  1251. </script>
  1252. <script>
  1253. $('#dscsc').click(function()
  1254. {
  1255. $("#lods").show();
  1256. $("#dscsc").hide();
  1257. $.ajax({
  1258. type : 'POST',
  1259. url : '{{ path('ajax_drapodscsc')}}',
  1260. data : 'listnum=' + $('#form_listnum').val()+
  1261. '&listnum2=' + $('#form_listnum2').val()+
  1262. '&listnum1=' + $('#form_listnum1').val()+
  1263. '&listnum5=' + $('#form_listnum5').val()+
  1264. '&listnum4=' + $('#form_listnum4').val()+
  1265. '&listnum3=' + $('#form_listnum3').val()+
  1266. '&listnum7=' + $('#form_listnum7').val()+
  1267. '&listnum9=' + $('#form_listnum9').val(),
  1268. success: function(data)
  1269. {
  1270. $("#lods").hide();
  1271. $('#liste').html(data);
  1272. }
  1273. });
  1274. });
  1275. </script>
  1276. <script>
  1277. $('#dscscrefu').click(function()
  1278. {
  1279. $("#lod").show();
  1280. $("#dscscrefu").hide();
  1281. $.ajax({
  1282. type : 'POST',
  1283. url : '{{ path('ajax_drapodscscrefu')}}',
  1284. data : 'listnum=' + $('#form_listnum').val()+
  1285. '&listnum2=' + $('#form_listnum2').val()+
  1286. '&listnum1=' + $('#form_listnum1').val()+
  1287. '&listnum5=' + $('#form_listnum5').val()+
  1288. '&listnum4=' + $('#form_listnum4').val()+
  1289. '&listnum3=' + $('#form_listnum3').val()+
  1290. '&listnum7=' + $('#form_listnum7').val()+
  1291. '&listnum9=' + $('#form_listnum9').val(),
  1292. success: function(data)
  1293. {
  1294. $("#lod").hide();
  1295. $('#liste').html(data);
  1296. }
  1297. });
  1298. });
  1299. </script>
  1300. <script>
  1301. $('#dp').click(function()
  1302. {
  1303. $("#loadp").show();
  1304. $("#dp").hide();
  1305. $.ajax({
  1306. type : 'POST',
  1307. url : '{{ path('ajax_drapodp')}}',
  1308. data : 'listnum=' + $('#form_listnum').val()+
  1309. '&listnum2=' + $('#form_listnum2').val()+
  1310. '&listnum1=' + $('#form_listnum1').val()+
  1311. '&listnum5=' + $('#form_listnum5').val()+
  1312. '&listnum4=' + $('#form_listnum4').val()+
  1313. '&listnum3=' + $('#form_listnum3').val()+
  1314. '&listnum7=' + $('#form_listnum7').val()+
  1315. '&listnum9=' + $('#form_listnum9').val(),
  1316. success: function(data)
  1317. {
  1318. $("#loadp").hide();
  1319. $('#liste').html(data);
  1320. }
  1321. });
  1322. });
  1323. </script>
  1324. <script>
  1325. $('#dprefu').click(function()
  1326. {
  1327. $("#loadpr").show();
  1328. $("#dprefu").hide();
  1329. $.ajax({
  1330. type : 'POST',
  1331. url : '{{ path('ajax_drapodprefu')}}',
  1332. data : 'listnum=' + $('#form_listnum').val()+
  1333. '&listnum2=' + $('#form_listnum2').val()+
  1334. '&listnum1=' + $('#form_listnum1').val()+
  1335. '&listnum5=' + $('#form_listnum5').val()+
  1336. '&listnum4=' + $('#form_listnum4').val()+
  1337. '&listnum3=' + $('#form_listnum3').val()+
  1338. '&listnum7=' + $('#form_listnum7').val()+
  1339. '&listnum9=' + $('#form_listnum9').val(),
  1340. success: function(data)
  1341. {
  1342. $("#loadpr").hide();
  1343. $('#liste').html(data);
  1344. }
  1345. });
  1346. });
  1347. </script>
  1348. <script>
  1349. $('#rrrefu').click(function()
  1350. {
  1351. $("#loadrr").show();
  1352. $("#rrrefu").hide();
  1353. $.ajax({
  1354. type : 'POST',
  1355. url : '{{ path('ajax_draporrrefu')}}',
  1356. data : 'listnum=' + $('#form_listnum').val()+
  1357. '&listnum2=' + $('#form_listnum2').val()+
  1358. '&listnum1=' + $('#form_listnum1').val()+
  1359. '&listnum5=' + $('#form_listnum5').val()+
  1360. '&listnum4=' + $('#form_listnum4').val()+
  1361. '&listnum3=' + $('#form_listnum3').val()+
  1362. '&listnum7=' + $('#form_listnum7').val()+
  1363. '&listnum9=' + $('#form_listnum9').val(),
  1364. success: function(data)
  1365. {
  1366. $("#loadrr").hide();
  1367. $('#liste').html(data);
  1368. }
  1369. });
  1370. });
  1371. </script>
  1372. <script>
  1373. $('#rr').click(function()
  1374. {
  1375. $("#loadr").show();
  1376. $("#rr").hide();
  1377. $.ajax({
  1378. type : 'POST',
  1379. url : '{{ path('ajax_draporr')}}',
  1380. data : 'listnum=' + $('#form_listnum').val()+
  1381. '&listnum2=' + $('#form_listnum2').val()+
  1382. '&listnum1=' + $('#form_listnum1').val()+
  1383. '&listnum5=' + $('#form_listnum5').val()+
  1384. '&listnum4=' + $('#form_listnum4').val()+
  1385. '&listnum3=' + $('#form_listnum3').val()+
  1386. '&listnum7=' + $('#form_listnum7').val()+
  1387. '&listnum9=' + $('#form_listnum9').val(),
  1388. success: function(data)
  1389. {
  1390. $("#loadr").hide();
  1391. $('#liste').html(data);
  1392. }
  1393. });
  1394. });
  1395. </script>
  1396. <script>
  1397. $('#annul').click(function()
  1398. {
  1399. $.ajax({
  1400. type : 'POST',
  1401. url : '{{ path('ajax_annul')}}',
  1402. data : 'listnum=' + $('#form_listnum').val()+
  1403. '&listnum2=' + $('#form_listnum2').val()+
  1404. '&listnum1=' + $('#form_listnum1').val()+
  1405. '&listnum5=' + $('#form_listnum5').val()+
  1406. '&listnum4=' + $('#form_listnum4').val()+
  1407. '&listnum3=' + $('#form_listnum3').val()+
  1408. '&listnum7=' + $('#form_listnum7').val()+
  1409. '&listnum9=' + $('#form_listnum9').val(),
  1410. success: function(data)
  1411. {
  1412. alert('la demande est annulés!');
  1413. $('#liste').html(data);
  1414. }
  1415. });
  1416. });
  1417. </script>
  1418. </head>
  1419. <body>
  1420. {% if demachats[0].etat==1 %}
  1421. <p>&nbsp;</p>
  1422. {% if demachats[0].drapoValide==0 %}
  1423. <div align="left">
  1424. <div class="table-responsive mb-3">
  1425. <table class="table table-bordered table-sm w-auto custom-table">
  1426. <thead class="thead-light">
  1427. <tr>
  1428. <th>Approbateur</th>
  1429. <th>Statut</th>
  1430. </tr>
  1431. </thead>
  1432. <tbody>
  1433. {% if valid1 !=0 %}
  1434. <tr>
  1435. <td > {{utiltecinfo.prenom}}&nbsp;{{utiltecinfo.nom}} (review Technique)</td>
  1436. <td >
  1437. {% if demachats[0].drapoInfo == 1 %}
  1438. <span class="badge badge-success">Approuvé</span>
  1439. {% elseif demachats[0].drapoInforefu == 1 %}
  1440. <span class="badge badge-danger">Rejeté</span>
  1441. {% else %}
  1442. <span class="badge badge-warning">En attente</span>
  1443. {% endif %}
  1444. </td>
  1445. </tr>
  1446. {% endif %}
  1447. {% if valid2 !=0 %}
  1448. <tr>
  1449. <td >{{utiltecgarag.prenom}}&nbsp;{{utiltecgarag.nom}} (review Technique)</td>
  1450. <td>
  1451. {% if demachats[0].drapoGarage==1 %}
  1452. <span class="badge badge-success">Approuvé </span>
  1453. {% elseif demachats[0].drapoGaragerefu==1 %}
  1454. <span class="badge badge-danger">rejeté</span>
  1455. {% elseif demachats[0].drapoGaragerefu==0 and demachats[0].drapoGarage==0 %}
  1456. <span class="badge badge-warning">En attente</span>
  1457. {% endif %}
  1458. </td>
  1459. </tr>
  1460. {% endif %}
  1461. <tr>
  1462. <td>{{utilrachat.prenom}}&nbsp;{{utilrachat.nom}}(responsable achat) </td>
  1463. <td> {% if demachats[0].drapoRespAcha==1 %}
  1464. <span class="badge badge-success">Approuvé </span>
  1465. {% elseif demachats[0].drapoRespAcharefu==1 %}
  1466. <span class="badge badge-danger">rejeté</span>
  1467. {% elseif demachats[0].drapoRespAcharefu==0 and demachats[0].drapoRespAcha==0 %}
  1468. <span class="badge badge-warning">En attente</span>
  1469. {% endif %}
  1470. </td>
  1471. </tr>
  1472. {% if nomb ==1 %}
  1473. <tr>
  1474. <td>{% if suph is not null %}{{suph.prenom}}&nbsp;{{suph.nom}}(superieur hierarchique) {% endif %}</td>
  1475. <td>
  1476. {% if demachats[0].drapoSup==1 %}
  1477. <span class="badge badge-success">Approuvé </span>
  1478. {% elseif demachats[0].drapoSuprefu==1 %}
  1479. <span class="badge badge-danger">rejeté</span>
  1480. {% elseif demachats[0].drapoSuprefu==0 and demachats[0].drapoSup==0 %}
  1481. <span class="badge badge-warning">En attente</span>
  1482. {% endif %}
  1483. </td>
  1484. </tr>
  1485. {% if usedep is not null %}
  1486. <tr>
  1487. <td>{{usedep.prenom}}&nbsp;{{usedep.nom}} (Dr département)</td>
  1488. <td> {% if demachats[0].drapoDP==1 %}
  1489. <span class="badge badge-success">Approuvé </span>
  1490. {% elseif demachats[0].drapoDPrefu==1 %}
  1491. <span class="badge badge-danger">rejeté</span>
  1492. {% elseif demachats[0].drapoDPrefu==0 and demachats[0].drapoDP==0 %}
  1493. <span class="badge badge-warning">En attente</span>
  1494. {% endif %}
  1495. </td>
  1496. </tr>
  1497. {% endif %}
  1498. {% if usedp1 is not null and usedep is null %}
  1499. <tr>
  1500. <td >{{usedp1.prenom}}&nbsp;{{usedp1.nom}} (Dr département)</td>
  1501. <td > {% if demachats[0].drapoDP1==1 %}
  1502. <span class="badge badge-success">Approuvé </span>
  1503. {% elseif demachats[0].drapoDPrefu1==1 %}
  1504. <span class="badge badge-danger">rejeté</span>
  1505. {% elseif demachats[0].drapoDPrefu1==0 and demachats[0].drapoDP1==0 %}
  1506. <span class="badge badge-warning">En attente</span>
  1507. {% endif %}
  1508. </td>
  1509. </tr>
  1510. {% endif %}
  1511. {% if usedp2 is not null and usedep is null %}
  1512. <tr>
  1513. <td >{{usedp2.prenom}}&nbsp;{{usedp2.nom}} (Dr département)</td>
  1514. <td > {% if demachats[0].drapoDP2==1 %}
  1515. <span class="badge badge-success">Approuvé </span>
  1516. {% elseif demachats[0].drapoDPrefu2==1 %}
  1517. <span class="badge badge-danger">rejeté</span>
  1518. {% elseif demachats[0].drapoDPrefu2==0 and demachats[0].drapoDP2==0 %}
  1519. <span class="badge badge-warning">En attente</span>
  1520. {% endif %}
  1521. </td>
  1522. </tr>
  1523. {% endif %}
  1524. {% if usedp3 is not null and usedep is null %}
  1525. <tr>
  1526. <td >{{usedp3.prenom}}&nbsp;{{usedp3.nom}} (Dr département)</td>
  1527. <td > {% if demachats[0].drapoDP3==1 %}
  1528. <span class="badge badge-success">Approuvé </span>
  1529. {% elseif demachats[0].drapoDPrefu3==1 %}
  1530. <span class="badge badge-danger">rejeté</span>
  1531. {% elseif demachats[0].drapoDPrefu3==0 and demachats[0].drapoDP3==0 %}
  1532. <span class="badge badge-warning">En attente</span>
  1533. {% endif %}
  1534. </td>
  1535. </tr>
  1536. {% endif %}
  1537. {% if usedp4 is not null and usedep is null %}
  1538. <tr>
  1539. <td >{{usedp4.prenom}}&nbsp;{{usedp4.nom}} (Dr département)</td>
  1540. <td > {% if demachats[0].drapoDP1==1 %}
  1541. <span class="badge badge-success">Approuvé </span>
  1542. {% elseif demachats[0].drapoDPrefu4==1 %}
  1543. <span class="badge badge-danger">rejeté</span>
  1544. {% elseif demachats[0].drapoDPrefu4==0 and demachats[0].drapoDP4==0 %}
  1545. <span class="badge badge-warning">En attente</span>
  1546. {% endif %}
  1547. </td>
  1548. </tr>
  1549. {% endif %}
  1550. {% if usedp5 is not null and usedep is null %}
  1551. <tr>
  1552. <td >{{usedp5.prenom}}&nbsp;{{usedp5.nom}} (Dr département)</td>
  1553. <td > {% if demachats[0].drapoDP5==1 %}
  1554. <span class="badge badge-success">Approuvé </span>
  1555. {% elseif demachats[0].drapoDPrefu5==1 %}
  1556. <span class="badge badge-danger">rejeté</span>
  1557. {% elseif demachats[0].drapoDPrefu5==0 and demachats[0].drapoDP5==0 %}
  1558. <span class="badge badge-warning">En attente</span>
  1559. {% endif %}
  1560. </td>
  1561. </tr>
  1562. {% endif %}
  1563. {% if usedp6 is not null and usedep is null %}
  1564. <tr>
  1565. <td >{{usedp6.prenom}}&nbsp;{{usedp6.nom}} (Dr département)</td>
  1566. <td > {% if demachats[0].drapoDP6==1 %}
  1567. <span class="badge badge-success">Approuvé </span>
  1568. {% elseif demachats[0].drapoDPrefu6==1 %}
  1569. <span class="badge badge-danger">rejeté</span>
  1570. {% elseif demachats[0].drapoDPrefu6==0 and demachats[0].drapoDP6==0 %}
  1571. <span class="badge badge-warning">En attente</span>
  1572. {% endif %}
  1573. </td>
  1574. </tr>
  1575. {% endif %}
  1576. {% if usedp7 is not null and usedep is null %}
  1577. <tr>
  1578. <td >{{usedp7.prenom}}&nbsp;{{usedp7.nom}} (Dr département)</td>
  1579. <td > {% if demachats[0].drapoDP7==1 %}
  1580. <span class="badge badge-success">Approuvé </span>
  1581. {% elseif demachats[0].drapoDPrefu7==1 %}
  1582. <span class="badge badge-danger">rejeté</span>
  1583. {% elseif demachats[0].drapoDPrefu7==0 and demachats[0].drapoDP7==0 %}
  1584. <span class="badge badge-warning">En attente</span>
  1585. {% endif %}
  1586. </td>
  1587. </tr>
  1588. {% endif %}
  1589. {% if usedp8 is not null and usedep is null %}
  1590. <tr>
  1591. <td >{{usedp8.prenom}}&nbsp;{{usedp8.nom}} (Dr département)</td>
  1592. <td > {% if demachats[0].drapoDP8==1 %}
  1593. <span class="badge badge-success">Approuvé </span>
  1594. {% elseif demachats[0].drapoDPrefu8==1 %}
  1595. <span class="badge badge-danger">rejeté</span>
  1596. {% elseif demachats[0].drapoDPrefu8==0 and demachats[0].drapoDP8==0 %}
  1597. <span class="badge badge-warning">En attente</span>
  1598. {% endif %}
  1599. </td>
  1600. </tr>
  1601. {% endif %}
  1602. {% if demachats[0].montant <2500000 %}
  1603. <tr>
  1604. <td >{{utildscsc2.prenom}}&nbsp;{{utildscsc2.nom}}(charge des finances) </td>
  1605. <td > {% if demachats[0].drapoDSCSC==1 %}
  1606. <span class="badge badge-success">Approuvé </span>
  1607. {% elseif demachats[0].drapoDSCSCrefu==1 %}
  1608. <span class="badge badge-danger">rejeté</span>
  1609. {% elseif demachats[0].drapoDSCSCrefu==0 and demachats[0].drapoDSCSC==0 %}
  1610. <span class="badge badge-warning">En attente</span>
  1611. {% endif %}
  1612. </td>
  1613. </tr>
  1614. {% endif %}
  1615. {% if demachats[0].montant >2499999 %}
  1616. <tr>
  1617. <td >{{utildscsc.prenom}}&nbsp;{{utildscsc.nom}} (DAF)</td>
  1618. <td > {% if demachats[0].drapoDSCSC==1 %}
  1619. <span class="badge badge-success">Approuvé </span>
  1620. {% elseif demachats[0].drapoDSCSCrefu==1 %}
  1621. <span class="badge badge-danger">rejeté</span>
  1622. {% elseif demachats[0].drapoDSCSCrefu==0 and demachats[0].drapoDSCSC==0 %}
  1623. <span class="badge badge-warning">En attente</span>
  1624. {% endif %}
  1625. </td>
  1626. </tr>
  1627. {% endif %}
  1628. {% if demachats[0].montant >4999999 %}
  1629. <tr>
  1630. <td >{{utilrr.prenom}}&nbsp;{{utilrr.nom}}(Country Director) </td>
  1631. <td> {% if demachats[0].drapoRR==1 %}
  1632. <span class="badge badge-success">Approuvé </span>
  1633. {% elseif demachats[0].drapoRRrefu==1 %}
  1634. <span class="badge badge-danger">rejeté</span>
  1635. {% elseif demachats[0].drapoRRrefu==0 and demachats[0].drapoRR==0 %}
  1636. <span class="badge badge-warning">En attente</span>
  1637. {% endif %}
  1638. </td>
  1639. </tr>
  1640. {% endif %}
  1641. {% endif %}
  1642. {% if demachats[0].costcenter !=null %}
  1643. {% if demachats[0].costcenter.code==13 and nomb ==0 %}
  1644. {% if usereg is not null %}
  1645. <tr>
  1646. <td >{{usereg.prenom}}&nbsp;{{usereg.nom}}(Responsable régional) </td>
  1647. <td > {% if demachats[0].drapoRespReg==1 %}
  1648. <span class="badge badge-success">Approuvé </span>
  1649. {% elseif demachats[0].drapoRespRegrefu==1 %}
  1650. <span class="badge badge-danger">rejeté</span>
  1651. {% elseif demachats[0].drapoRespRegrefu==0 and demachats[0].drapoRespReg==0 %}
  1652. <span class="badge badge-warning">En attente</span>
  1653. {% endif %}
  1654. </td>
  1655. </tr>
  1656. {% endif %}
  1657. {% if uselead is not null %}
  1658. <tr>
  1659. <td>{{uselead.prenom}}&nbsp;{{uselead.nom}}(chanel lead) </td>
  1660. <td> {% if demachats[0].drapoLead==1 %}
  1661. <span class="badge badge-success">Approuvé </span>
  1662. {% elseif demachats[0].drapoLeadrefu==1 %}
  1663. <span class="badge badge-danger">rejeté</span>
  1664. {% elseif demachats[0].drapoLeadrefu==0 and demachats[0].drapoLead==0 %}
  1665. <span class="badge badge-warning">En attente</span>
  1666. {% endif %}
  1667. </td>
  1668. </tr>
  1669. {% endif %}
  1670. {% if uselead is null %}
  1671. {% if uselead1 is not null %}
  1672. <tr>
  1673. <td >{{uselead1.uselead.prenom}}&nbsp;{{uselead1.uselead.nom}} (chanel lead)</td>
  1674. <td > {% if demachats[0].drapoLead1==1 %}
  1675. <span class="badge badge-success">Approuvé </span>
  1676. {% elseif demachats[0].drapoLeadrefu1==1 %}
  1677. <span class="badge badge-danger">rejeté</span>
  1678. {% elseif demachats[0].drapoLeadrefu1==0 and demachats[0].drapoLead1==0 %}
  1679. <span class="badge badge-warning">En attente</span>
  1680. {% endif %}
  1681. </td>
  1682. </tr>
  1683. {% endif %}
  1684. {% if uselead2 is not null %}
  1685. <tr>
  1686. <td >{{uselead2.uselead.prenom}}&nbsp;{{uselead1.uselead.nom}} (chanel lead)</td>
  1687. <td > {% if demachats[0].drapoLead2==1 %}
  1688. <span class="badge badge-success">Approuvé </span>
  1689. {% elseif demachats[0].drapoLeadrefu2==1 %}
  1690. <span class="badge badge-danger">rejeté</span>
  1691. {% elseif demachats[0].drapoLeadrefu2==0 and demachats[0].drapoLead2==0 %}
  1692. <span class="badge badge-warning">En attente</span>
  1693. {% endif %}
  1694. </td>
  1695. </tr>
  1696. {% endif %}
  1697. {% if uselead3 is not null %}
  1698. <tr>
  1699. <td >{{uselead3.uselead.prenom}}&nbsp;{{uselead3.uselead.nom}} (chanel lead)</td>
  1700. <td > {% if demachats[0].drapoLead3==1 %}
  1701. <span class="badge badge-success">Approuvé </span>
  1702. {% elseif demachats[0].drapoLeadrefu3==1 %}
  1703. <span class="badge badge-danger">rejeté</span>
  1704. {% elseif demachats[0].drapoLeadrefu3==0 and demachats[0].drapoLead3==0 %}
  1705. <span class="badge badge-warning">En attente</span>
  1706. {% endif %}
  1707. </td>
  1708. </tr>
  1709. {% endif %}
  1710. {% if uselead4 is not null %}
  1711. <tr>
  1712. <td >{{uselead4.uselead.prenom}}&nbsp;{{uselead1.uselead.nom}} (chanel lead)</td>
  1713. <td > {% if demachats[0].drapoLead4==1 %}
  1714. <span class="badge badge-success">Approuvé </span>
  1715. {% elseif demachats[0].drapoLeadrefu4==1 %}
  1716. <span class="badge badge-danger">rejeté</span>
  1717. {% elseif demachats[0].drapoLeadrefu4==0 and demachats[0].drapoLead4==0 %}
  1718. <span class="badge badge-warning">En attente</span>
  1719. {% endif %}
  1720. </td>
  1721. </tr>
  1722. {% endif %}
  1723. {% if uselead5 is not null %}
  1724. <tr>
  1725. <td >{{uselead5.uselead.prenom}}&nbsp;{{uselead5.uselead.nom}} (chanel lead)</td>
  1726. <td > {% if demachats[0].drapoLead5==1 %}
  1727. <span class="badge badge-success">Approuvé </span>
  1728. {% elseif demachats[0].drapoLeadrefu5==1 %}
  1729. <span class="badge badge-danger">rejeté</span>
  1730. {% elseif demachats[0].drapoLeadrefu5==0 and demachats[0].drapoLead5==0 %}
  1731. <span class="badge badge-warning">En attente</span>
  1732. {% endif %}
  1733. </td>
  1734. </tr>
  1735. {% endif %}
  1736. {% endif %}
  1737. {% if categmedical==1 %}
  1738. <tr>
  1739. <td >{{utildrmedical.prenom}}&nbsp;{{utildrmedical.nom}}(Directeur Médical) </td>
  1740. <td> {% if demachats[0].drapoDRMEDICAL==1 %}
  1741. <span class="badge badge-success">Approuvé </span>
  1742. {% elseif demachats[0].drapoDRMEDICALrefu==1 %}
  1743. <span class="badge badge-danger">rejeté</span>
  1744. {% elseif demachats[0].drapoDRMEDICALrefu==0 and demachats[0].drapoDRMEDICAL==0 %}
  1745. <span class="badge badge-warning">En attente</span>
  1746. {% endif %}
  1747. </td>
  1748. </tr>
  1749. {% endif %}
  1750. {% if usechef1 is not null %}
  1751. <tr>
  1752. <td >{{usechef1.user.prenom}}&nbsp;{{usechef1.user.nom}} (chef de projet)</td>
  1753. <td > {% if demachats[0].drapoChefp1==1 or demachats[0].drapoChefp==1 %}
  1754. <span class="badge badge-success">Approuvé </span>
  1755. {% elseif demachats[0].drapoChefprefu1==1 or demachats[0].drapoChefprefu==1 %}
  1756. <span class="badge badge-danger">rejeté</span>
  1757. {% elseif demachats[0].drapoChefprefu1==0 and demachats[0].drapoChefp1==0 %}
  1758. <span class="badge badge-warning">En attente</span>
  1759. {% endif %}
  1760. </td>
  1761. </tr>
  1762. {% endif %}
  1763. {% if usechef2 is not null %}
  1764. <tr>
  1765. <td >{{usechef2.user.prenom}}&nbsp;{{usechef2.user.nom}} (chef de projet)</td>
  1766. <td > {% if demachats[0].drapoChefp1==1 or demachats[0].drapoChefp==1 %}
  1767. <span class="badge badge-success">Approuvé </span>
  1768. {% elseif demachats[0].drapoChefprefu2==1 or demachats[0].drapoChefprefu==1 %}
  1769. <span class="badge badge-danger">rejeté</span>
  1770. {% elseif demachats[0].drapoChefprefu2==0 and demachats[0].drapoChefp2==0 %}
  1771. <span class="badge badge-warning">En attente</span>
  1772. {% endif %}
  1773. </td>
  1774. </tr>
  1775. {% endif %}
  1776. {% if usechef3 is not null %}
  1777. <tr>
  1778. <td >{{usechef3.user.prenom}}&nbsp;{{usechef1.user.nom}} (chef de projet)</td>
  1779. <td > {% if demachats[0].drapoChefp3==1 or demachats[0].drapoChefp==1 %}
  1780. <span class="badge badge-success">Approuvé </span>
  1781. {% elseif demachats[0].drapoChefprefu3==1 or demachats[0].drapoChefprefu==1 %}
  1782. <span class="badge badge-danger">rejeté</span>
  1783. {% elseif demachats[0].drapoChefprefu3==0 and demachats[0].drapoChefp3==0 %}
  1784. <span class="badge badge-warning">En attente</span>
  1785. {% endif %}
  1786. </td>
  1787. </tr>
  1788. {% endif %}
  1789. {% if usechef4 is not null %}
  1790. <tr>
  1791. <td >{{usechef4.user.prenom}}&nbsp;{{usechef4.user.nom}} (chef de projet)</td>
  1792. <td > {% if demachats[0].drapoChefp4==1 or demachats[0].drapoChefp==1 %}
  1793. <span class="badge badge-success">Approuvé </span>
  1794. {% elseif demachats[0].drapoChefprefu4==1 or demachats[0].drapoChefprefu==1 %}
  1795. <span class="badge badge-danger">rejeté</span>
  1796. {% elseif demachats[0].drapoChefprefu4==0 and demachats[0].drapoChefp4==0 %}
  1797. <span class="badge badge-warning">En attente</span>
  1798. {% endif %}
  1799. </td>
  1800. </tr>
  1801. {% endif %}
  1802. {% if usechef5 is not null %}
  1803. <tr>
  1804. <td >{{usechef5.user.prenom}}&nbsp;{{usechef5.user.nom}} (chef de projet)</td>
  1805. <td > {% if demachats[0].drapoChefp5==1 or demachats[0].drapoChefp==1 %}
  1806. <span class="badge badge-success">Approuvé </span>
  1807. {% elseif demachats[0].drapoChefprefu5==1 or demachats[0].drapoChefprefu==1 %}
  1808. <span class="badge badge-danger">rejeté</span>
  1809. {% elseif demachats[0].drapoChefprefu5==0 and demachats[0].drapoChefp5==0 %}
  1810. <span class="badge badge-warning">En attente</span>
  1811. {% endif %}
  1812. </td>
  1813. </tr>
  1814. {% endif %}
  1815. {% if usechef6 is not null %}
  1816. <tr>
  1817. <td >{{usechef6.user.prenom}}&nbsp;{{usechef6.user.nom}} (chef de projet)</td>
  1818. <td > {% if demachats[0].drapoChefp6==1 or demachats[0].drapoChefp==1 %}
  1819. <span class="badge badge-success">Approuvé </span>
  1820. {% elseif demachats[0].drapoChefprefu6==1 or demachats[0].drapoChefprefu==1 %}
  1821. <span class="badge badge-danger">rejeté</span>
  1822. {% elseif demachats[0].drapoChefprefu6==0 and demachats[0].drapoChefp6==0 %}
  1823. <span class="badge badge-warning">En attente</span>
  1824. {% endif %}
  1825. </td>
  1826. </tr>
  1827. {% endif %}
  1828. {% if usechef7 is not null %}
  1829. <tr>
  1830. <td >{{usechef7.user.prenom}}&nbsp;{{usechef1.user.nom}} (chef de projet)</td>
  1831. <td > {% if demachats[0].drapoChefp7==1 or demachats[0].drapoChefp==1 %}
  1832. <span class="badge badge-success">Approuvé </span>
  1833. {% elseif demachats[0].drapoChefprefu7==1 or demachats[0].drapoChefprefu==1 %}
  1834. <span class="badge badge-danger">rejeté</span>
  1835. {% elseif demachats[0].drapoChefprefu7==0 and demachats[0].drapoChefp7==0 %}
  1836. <span class="badge badge-warning">En attente</span>
  1837. {% endif %}
  1838. </td>
  1839. </tr>
  1840. {% endif %}
  1841. {% if usedep is not null %}
  1842. <tr>
  1843. <td>{{usedep.prenom}}&nbsp;{{usedep.nom}} (Dr département)</td>
  1844. <td> {% if demachats[0].drapoDP==1 %}
  1845. <span class="badge badge-success">Approuvé </span>
  1846. {% elseif demachats[0].drapoDPrefu==1 %}
  1847. <span class="badge badge-danger">rejeté</span>
  1848. {% elseif demachats[0].drapoDPrefu==0 and demachats[0].drapoDP==0 %}
  1849. <span class="badge badge-warning">En attente</span>
  1850. {% endif %}
  1851. </td>
  1852. </tr>
  1853. {% endif %}
  1854. {% if usedp1 is not null and usedep is null %}
  1855. <tr>
  1856. <td >{{usedp1.prenom}}&nbsp;{{usedp1.nom}} (Dr département)</td>
  1857. <td > {% if demachats[0].drapoDP1==1 %}
  1858. <span class="badge badge-success">Approuvé </span>
  1859. {% elseif demachats[0].drapoDPrefu1==1 %}
  1860. <span class="badge badge-danger">rejeté</span>
  1861. {% elseif demachats[0].drapoDPrefu1==0 and demachats[0].drapoDP1==0 %}
  1862. <span class="badge badge-warning">En attente</span>
  1863. {% endif %}
  1864. </td>
  1865. </tr>
  1866. {% endif %}
  1867. {% if usedp2 is not null and usedep is null %}
  1868. <tr>
  1869. <td >{{usedp2.prenom}}&nbsp;{{usedp2.nom}} (Dr département)</td>
  1870. <td > {% if demachats[0].drapoDP2==1 %}
  1871. <span class="badge badge-success">Approuvé </span>
  1872. {% elseif demachats[0].drapoDPrefu2==1 %}
  1873. <span class="badge badge-danger">rejeté</span>
  1874. {% elseif demachats[0].drapoDPrefu2==0 and demachats[0].drapoDP2==0 %}
  1875. <span class="badge badge-warning">En attente</span>
  1876. {% endif %}
  1877. </td>
  1878. </tr>
  1879. {% endif %}
  1880. {% if usedp3 is not null and usedep is null %}
  1881. <tr>
  1882. <td >{{usedp3.prenom}}&nbsp;{{usedp3.nom}} (Dr département)</td>
  1883. <td > {% if demachats[0].drapoDP3==1 %}
  1884. <span class="badge badge-success">Approuvé </span>
  1885. {% elseif demachats[0].drapoDPrefu3==1 %}
  1886. <span class="badge badge-danger">rejeté</span>
  1887. {% elseif demachats[0].drapoDPrefu3==0 and demachats[0].drapoDP3==0 %}
  1888. <span class="badge badge-warning">En attente</span>
  1889. {% endif %}
  1890. </td>
  1891. </tr>
  1892. {% endif %}
  1893. {% if usedp4 is not null and usedep is null %}
  1894. <tr>
  1895. <td >{{usedp4.prenom}}&nbsp;{{usedp4.nom}} (Dr département)</td>
  1896. <td > {% if demachats[0].drapoDP1==1 %}
  1897. <span class="badge badge-success">Approuvé </span>
  1898. {% elseif demachats[0].drapoDPrefu4==1 %}
  1899. <span class="badge badge-danger">rejeté</span>
  1900. {% elseif demachats[0].drapoDPrefu4==0 and demachats[0].drapoDP4==0 %}
  1901. <span class="badge badge-warning">En attente</span>
  1902. {% endif %}
  1903. </td>
  1904. </tr>
  1905. {% endif %}
  1906. {% if usedp5 is not null and usedep is null %}
  1907. <tr>
  1908. <td >{{usedp5.prenom}}&nbsp;{{usedp5.nom}} (Dr département)</td>
  1909. <td > {% if demachats[0].drapoDP5==1 %}
  1910. <span class="badge badge-success">Approuvé </span>
  1911. {% elseif demachats[0].drapoDPrefu5==1 %}
  1912. <span class="badge badge-danger">rejeté</span>
  1913. {% elseif demachats[0].drapoDPrefu5==0 and demachats[0].drapoDP5==0 %}
  1914. <span class="badge badge-warning">En attente</span>
  1915. {% endif %}
  1916. </td>
  1917. </tr>
  1918. {% endif %}
  1919. {% if usedp6 is not null and usedep is null %}
  1920. <tr>
  1921. <td >{{usedp6.prenom}}&nbsp;{{usedp6.nom}} (Dr département)</td>
  1922. <td > {% if demachats[0].drapoDP6==1 %}
  1923. <span class="badge badge-success">Approuvé </span>
  1924. {% elseif demachats[0].drapoDPrefu6==1 %}
  1925. <span class="badge badge-danger">rejeté</span>
  1926. {% elseif demachats[0].drapoDPrefu6==0 and demachats[0].drapoDP6==0 %}
  1927. <span class="badge badge-warning">En attente</span>
  1928. {% endif %}
  1929. </td>
  1930. </tr>
  1931. {% endif %}
  1932. {% if usedp7 is not null and usedep is null %}
  1933. <tr>
  1934. <td >{{usedp7.prenom}}&nbsp;{{usedp7.nom}} (Dr département)</td>
  1935. <td > {% if demachats[0].drapoDP7==1 %}
  1936. <span class="badge badge-success">Approuvé </span>
  1937. {% elseif demachats[0].drapoDPrefu7==1 %}
  1938. <span class="badge badge-danger">rejeté</span>
  1939. {% elseif demachats[0].drapoDPrefu7==0 and demachats[0].drapoDP7==0 %}
  1940. <span class="badge badge-warning">En attente</span>
  1941. {% endif %}
  1942. </td>
  1943. </tr>
  1944. {% endif %}
  1945. {% if usedp8 is not null and usedep is null %}
  1946. <tr>
  1947. <td >{{usedp8.prenom}}&nbsp;{{usedp8.nom}} (Dr département)</td>
  1948. <td > {% if demachats[0].drapoDP8==1 %}
  1949. <span class="badge badge-success">Approuvé </span>
  1950. {% elseif demachats[0].drapoDPrefu8==1 %}
  1951. <span class="badge badge-danger">rejeté</span>
  1952. {% elseif demachats[0].drapoDPrefu8==0 and demachats[0].drapoDP8==0 %}
  1953. <span class="badge badge-warning">En attente</span>
  1954. {% endif %}
  1955. </td>
  1956. </tr>
  1957. {% endif %}
  1958. {% if demachats[0].montant <2500000 %}
  1959. <tr>
  1960. <td >{{utildscsc2.prenom}}&nbsp;{{utildscsc2.nom}}(charge des finances) </td>
  1961. <td > {% if demachats[0].drapoDSCSC==1 %}
  1962. <span class="badge badge-success">Approuvé </span>
  1963. {% elseif demachats[0].drapoDSCSCrefu==1 %}
  1964. <span class="badge badge-danger">rejeté</span>
  1965. {% elseif demachats[0].drapoDSCSCrefu==0 and demachats[0].drapoDSCSC==0 %}
  1966. <span class="badge badge-warning">En attente</span>
  1967. {% endif %}
  1968. </td>
  1969. </tr>
  1970. {% endif %}
  1971. {% if demachats[0].montant >2499999 %}
  1972. <tr>
  1973. <td >{{utildscsc.prenom}}&nbsp;{{utildscsc.nom}} (DAF)</td>
  1974. <td > {% if demachats[0].drapoDSCSC==1 %}
  1975. <span class="badge badge-success">Approuvé </span>
  1976. {% elseif demachats[0].drapoDSCSCrefu==1 %}
  1977. <span class="badge badge-danger">rejeté</span>
  1978. {% elseif demachats[0].drapoDSCSCrefu==0 and demachats[0].drapoDSCSC==0 %}
  1979. <span class="badge badge-warning">En attente</span>
  1980. {% endif %}
  1981. </td>
  1982. </tr>
  1983. {% endif %}
  1984. {% if demachats[0].montant >4999999 %}
  1985. <tr>
  1986. <td >{{utilrr.prenom}}&nbsp;{{utilrr.nom}}(Country Director) </td>
  1987. <td> {% if demachats[0].drapoRR==1 %}
  1988. <span class="badge badge-success">Approuvé </span>
  1989. {% elseif demachats[0].drapoRRrefu==1 %}
  1990. <span class="badge badge-danger">rejeté</span>
  1991. {% elseif demachats[0].drapoRRrefu==0 and demachats[0].drapoRR==0 %}
  1992. <span class="badge badge-warning">En attente</span>
  1993. {% endif %}
  1994. </td>
  1995. </tr>
  1996. {% endif %}
  1997. {% endif %}
  1998. {% endif %}
  1999. {% if demachats[0].costcenter !=null %}
  2000. {% if demachats[0].costcenter.code==61 and nomb ==0 %}
  2001. {% if usereg is not null %}
  2002. <tr>
  2003. <td >{{usereg.prenom}}&nbsp;{{usereg.nom}}(responsable regional) </td>
  2004. <td"> {% if demachats[0].drapoRespReg==1 %}
  2005. <span class="badge badge-success">Approuvé </span>
  2006. {% elseif demachats[0].drapoRespRegrefu==1 %}
  2007. <span class="badge badge-danger">rejeté</span>
  2008. {% elseif demachats[0].drapoRespRegrefu==0 and demachats[0].drapoRespReg==0 %}
  2009. <span class="badge badge-warning">En attente</span>
  2010. {% endif %}
  2011. </td>
  2012. </tr>
  2013. {% endif %}
  2014. {% if usedep is not null %}
  2015. <tr>
  2016. <td>{{usedep.prenom}}&nbsp;{{usedep.nom}} (Dr département)</td>
  2017. <td> {% if demachats[0].drapoDP==1 %}
  2018. <span class="badge badge-success">Approuvé </span>
  2019. {% elseif demachats[0].drapoDPrefu==1 %}
  2020. <span class="badge badge-danger">rejeté</span>
  2021. {% elseif demachats[0].drapoDPrefu==0 and demachats[0].drapoDP==0 %}
  2022. <span class="badge badge-warning">En attente</span>
  2023. {% endif %}
  2024. </td>
  2025. </tr>
  2026. {% endif %}
  2027. {% if usedp1 is not null and usedep is null %}
  2028. <tr>
  2029. <td >{{usedp1.prenom}}&nbsp;{{usedp1.nom}} (Dr département)</td>
  2030. <td > {% if demachats[0].drapoDP1==1 %}
  2031. <span class="badge badge-success">Approuvé </span>
  2032. {% elseif demachats[0].drapoDPrefu1==1 %}
  2033. <span class="badge badge-danger">rejeté</span>
  2034. {% elseif demachats[0].drapoDPrefu1==0 and demachats[0].drapoDP1==0 %}
  2035. <span class="badge badge-warning">En attente</span>
  2036. {% endif %}
  2037. </td>
  2038. </tr>
  2039. {% endif %}
  2040. {% if usedp2 is not null and usedep is null %}
  2041. <tr>
  2042. <td >{{usedp2.prenom}}&nbsp;{{usedp2.nom}} (Dr département)</td>
  2043. <td > {% if demachats[0].drapoDP2==1 %}
  2044. <span class="badge badge-success">Approuvé </span>
  2045. {% elseif demachats[0].drapoDPrefu2==1 %}
  2046. <span class="badge badge-danger">rejeté</span>
  2047. {% elseif demachats[0].drapoDPrefu2==0 and demachats[0].drapoDP2==0 %}
  2048. <span class="badge badge-warning">En attente</span>
  2049. {% endif %}
  2050. </td>
  2051. </tr>
  2052. {% endif %}
  2053. {% if usedp3 is not null and usedep is null %}
  2054. <tr>
  2055. <td >{{usedp3.prenom}}&nbsp;{{usedp3.nom}} (Dr département)</td>
  2056. <td > {% if demachats[0].drapoDP3==1 %}
  2057. <span class="badge badge-success">Approuvé </span>
  2058. {% elseif demachats[0].drapoDPrefu3==1 %}
  2059. <span class="badge badge-danger">rejeté</span>
  2060. {% elseif demachats[0].drapoDPrefu3==0 and demachats[0].drapoDP3==0 %}
  2061. <span class="badge badge-warning">En attente</span>
  2062. {% endif %}
  2063. </td>
  2064. </tr>
  2065. {% endif %}
  2066. {% if usedp4 is not null and usedep is null %}
  2067. <tr>
  2068. <td >{{usedp4.prenom}}&nbsp;{{usedp4.nom}} (Dr département)</td>
  2069. <td > {% if demachats[0].drapoDP1==1 %}
  2070. <span class="badge badge-success">Approuvé </span>
  2071. {% elseif demachats[0].drapoDPrefu4==1 %}
  2072. <span class="badge badge-danger">rejeté</span>
  2073. {% elseif demachats[0].drapoDPrefu4==0 and demachats[0].drapoDP4==0 %}
  2074. <span class="badge badge-warning">En attente</span>
  2075. {% endif %}
  2076. </td>
  2077. </tr>
  2078. {% endif %}
  2079. {% if usedp5 is not null and usedep is null %}
  2080. <tr>
  2081. <td >{{usedp5.prenom}}&nbsp;{{usedp5.nom}} (Dr département)</td>
  2082. <td > {% if demachats[0].drapoDP5==1 %}
  2083. <span class="badge badge-success">Approuvé </span>
  2084. {% elseif demachats[0].drapoDPrefu5==1 %}
  2085. <span class="badge badge-danger">rejeté</span>
  2086. {% elseif demachats[0].drapoDPrefu5==0 and demachats[0].drapoDP5==0 %}
  2087. <span class="badge badge-warning">En attente</span>
  2088. {% endif %}
  2089. </td>
  2090. </tr>
  2091. {% endif %}
  2092. {% if usedp6 is not null and usedep is null %}
  2093. <tr>
  2094. <td >{{usedp6.prenom}}&nbsp;{{usedp6.nom}} (Dr département)</td>
  2095. <td > {% if demachats[0].drapoDP6==1 %}
  2096. <span class="badge badge-success">Approuvé </span>
  2097. {% elseif demachats[0].drapoDPrefu6==1 %}
  2098. <span class="badge badge-danger">rejeté</span>
  2099. {% elseif demachats[0].drapoDPrefu6==0 and demachats[0].drapoDP6==0 %}
  2100. <span class="badge badge-warning">En attente</span>
  2101. {% endif %}
  2102. </td>
  2103. </tr>
  2104. {% endif %}
  2105. {% if usedp7 is not null and usedep is null %}
  2106. <tr>
  2107. <td >{{usedp7.prenom}}&nbsp;{{usedp7.nom}} (Dr département)</td>
  2108. <td > {% if demachats[0].drapoDP7==1 %}
  2109. <span class="badge badge-success">Approuvé </span>
  2110. {% elseif demachats[0].drapoDPrefu7==1 %}
  2111. <span class="badge badge-danger">rejeté</span>
  2112. {% elseif demachats[0].drapoDPrefu7==0 and demachats[0].drapoDP7==0 %}
  2113. <span class="badge badge-warning">En attente</span>
  2114. {% endif %}
  2115. </td>
  2116. </tr>
  2117. {% endif %}
  2118. {% if usedp8 is not null and usedep is null %}
  2119. <tr>
  2120. <td >{{usedp8.prenom}}&nbsp;{{usedp8.nom}} (Dr département)</td>
  2121. <td > {% if demachats[0].drapoDP8==1 %}
  2122. <span class="badge badge-success">Approuvé </span>
  2123. {% elseif demachats[0].drapoDPrefu8==1 %}
  2124. <span class="badge badge-danger">rejeté</span>
  2125. {% elseif demachats[0].drapoDPrefu8==0 and demachats[0].drapoDP8==0 %}
  2126. <span class="badge badge-warning">En attente</span>
  2127. {% endif %}
  2128. </td>
  2129. </tr>
  2130. {% endif %}
  2131. {% if usechef1 is not null %}
  2132. <tr>
  2133. <td >{{usechef1.user.prenom}}&nbsp;{{usechef1.user.nom}} (chef de projet)</td>
  2134. <td > {% if demachats[0].drapoChefp1==1 or demachats[0].drapoChefp==1 %}
  2135. <span class="badge badge-success">Approuvé </span>
  2136. {% elseif demachats[0].drapoChefprefu1==1 or demachats[0].drapoChefprefu==1 %}
  2137. <span class="badge badge-danger">rejeté</span>
  2138. {% elseif demachats[0].drapoChefprefu1==0 and demachats[0].drapoChefp1==0 %}
  2139. <span class="badge badge-warning">En attente</span>
  2140. {% endif %}
  2141. </td>
  2142. </tr>
  2143. {% endif %}
  2144. {% if usechef2 is not null %}
  2145. <tr>
  2146. <td >{{usechef2.user.prenom}}&nbsp;{{usechef2.user.nom}} (chef de projet)</td>
  2147. <td > {% if demachats[0].drapoChefp1==1 or demachats[0].drapoChefp==1 %}
  2148. <span class="badge badge-success">Approuvé </span>
  2149. {% elseif demachats[0].drapoChefprefu2==1 or demachats[0].drapoChefprefu==1 %}
  2150. <span class="badge badge-danger">rejeté</span>
  2151. {% elseif demachats[0].drapoChefprefu2==0 and demachats[0].drapoChefp2==0 %}
  2152. <span class="badge badge-warning">En attente</span>
  2153. {% endif %}
  2154. </td>
  2155. </tr>
  2156. {% endif %}
  2157. {% if usechef3 is not null %}
  2158. <tr>
  2159. <td >{{usechef3.user.prenom}}&nbsp;{{usechef1.user.nom}} (chef de projet)</td>
  2160. <td > {% if demachats[0].drapoChefp3==1 or demachats[0].drapoChefp==1 %}
  2161. <span class="badge badge-success">Approuvé </span>
  2162. {% elseif demachats[0].drapoChefprefu3==1 or demachats[0].drapoChefprefu==1 %}
  2163. <span class="badge badge-danger">rejeté</span>
  2164. {% elseif demachats[0].drapoChefprefu3==0 and demachats[0].drapoChefp3==0 %}
  2165. <span class="badge badge-warning">En attente</span>
  2166. {% endif %}
  2167. </td>
  2168. </tr>
  2169. {% endif %}
  2170. {% if usechef4 is not null %}
  2171. <tr>
  2172. <td >{{usechef4.user.prenom}}&nbsp;{{usechef4.user.nom}} (chef de projet)</td>
  2173. <td > {% if demachats[0].drapoChefp4==1 or demachats[0].drapoChefp==1 %}
  2174. <span class="badge badge-success">Approuvé </span>
  2175. {% elseif demachats[0].drapoChefprefu4==1 or demachats[0].drapoChefprefu==1 %}
  2176. <span class="badge badge-danger">rejeté</span>
  2177. {% elseif demachats[0].drapoChefprefu4==0 and demachats[0].drapoChefp4==0 %}
  2178. <span class="badge badge-warning">En attente</span>
  2179. {% endif %}
  2180. </td>
  2181. </tr>
  2182. {% endif %}
  2183. {% if usechef5 is not null %}
  2184. <tr>
  2185. <td >{{usechef5.user.prenom}}&nbsp;{{usechef5.user.nom}} (chef de projet)</td>
  2186. <td > {% if demachats[0].drapoChefp5==1 or demachats[0].drapoChefp==1 %}
  2187. <span class="badge badge-success">Approuvé </span>
  2188. {% elseif demachats[0].drapoChefprefu5==1 or demachats[0].drapoChefprefu==1 %}
  2189. <span class="badge badge-danger">rejeté</span>
  2190. {% elseif demachats[0].drapoChefprefu5==0 and demachats[0].drapoChefp5==0 %}
  2191. <span class="badge badge-warning">En attente</span>
  2192. {% endif %}
  2193. </td>
  2194. </tr>
  2195. {% endif %}
  2196. {% if usechef6 is not null %}
  2197. <tr>
  2198. <td >{{usechef6.user.prenom}}&nbsp;{{usechef6.user.nom}} (chef de projet)</td>
  2199. <td > {% if demachats[0].drapoChefp6==1 or demachats[0].drapoChefp==1 %}
  2200. <span class="badge badge-success">Approuvé </span>
  2201. {% elseif demachats[0].drapoChefprefu6==1 or demachats[0].drapoChefprefu==1 %}
  2202. <span class="badge badge-danger">rejeté</span>
  2203. {% elseif demachats[0].drapoChefprefu6==0 and demachats[0].drapoChefp6==0 %}
  2204. <span class="badge badge-warning">En attente</span>
  2205. {% endif %}
  2206. </td>
  2207. </tr>
  2208. {% endif %}
  2209. {% if usechef7 is not null %}
  2210. <tr>
  2211. <td >{{usechef7.user.prenom}}&nbsp;{{usechef7.user.nom}} (chef de projet)</td>
  2212. <td > {% if demachats[0].drapoChefp7==1 or demachats[0].drapoChefp==1 %}
  2213. <span class="badge badge-success">Approuvé </span>
  2214. {% elseif demachats[0].drapoChefprefu7==1 or demachats[0].drapoChefprefu==1 %}
  2215. <span class="badge badge-danger">rejeté</span>
  2216. {% elseif demachats[0].drapoChefprefu7==0 and demachats[0].drapoChefp7==0 %}
  2217. <span class="badge badge-warning">En attente</span>
  2218. {% endif %}
  2219. </td>
  2220. </tr>
  2221. {% endif %}
  2222. {% if demachats[0].montant <2500000 %}
  2223. <tr>
  2224. <td >{{utildscsc2.prenom}}&nbsp;{{utildscsc2.nom}}(charge des finances) </td>
  2225. <td > {% if demachats[0].drapoDSCSC==1 %}
  2226. <span class="badge badge-success">Approuvé </span>
  2227. {% elseif demachats[0].drapoDSCSCrefu==1 %}
  2228. <span class="badge badge-danger">rejeté</span>
  2229. {% elseif demachats[0].drapoDSCSCrefu==0 and demachats[0].drapoDSCSC==0 %}
  2230. <span class="badge badge-warning">En attente</span>
  2231. {% endif %}
  2232. </td>
  2233. </tr>
  2234. {% endif %}
  2235. {% if demachats[0].montant >2499999 %}
  2236. <tr>
  2237. <td >{{utildscsc.prenom}}&nbsp;{{utildscsc.nom}} (DAF)</td>
  2238. <td > {% if demachats[0].drapoDSCSC==1 %}
  2239. <span class="badge badge-success">Approuvé </span>
  2240. {% elseif demachats[0].drapoDSCSCrefu==1 %}
  2241. <span class="badge badge-danger">rejeté</span>
  2242. {% elseif demachats[0].drapoDSCSCrefu==0 and demachats[0].drapoDSCSC==0 %}
  2243. <span class="badge badge-warning">En attente</span>
  2244. {% endif %}
  2245. </td>
  2246. </tr>
  2247. {% endif %}
  2248. {% if demachats[0].montant >4999999 %}
  2249. <tr>
  2250. <td >{{utilrr.prenom}}&nbsp;{{utilrr.nom}}(Country Director) </td>
  2251. <td> {% if demachats[0].drapoRR==1 %}
  2252. <span class="badge badge-success">Approuvé </span>
  2253. {% elseif demachats[0].drapoRRrefu==1 %}
  2254. <span class="badge badge-danger">rejeté</span>
  2255. {% elseif demachats[0].drapoRRrefu==0 and demachats[0].drapoRR==0 %}
  2256. <span class="badge badge-warning">En attente</span>
  2257. {% endif %}
  2258. </td>
  2259. </tr>
  2260. {% endif %}
  2261. {% endif %}
  2262. {% endif %}
  2263. </tbody>
  2264. </table>
  2265. </div>
  2266. </div>
  2267. {% endif %}
  2268. {% set total2 = 0 %}{% set var = 0 %}
  2269. <div class="da-page">
  2270. {# ── ACTIONS ── #}
  2271. <div class="da-actions d-flex">
  2272. {% if demachats[0].drapoDRMEDICALrefu==1 or demachats[0].drapoGaragerefu==1
  2273. or demachats[0].drapoChefprefu1==1 or demachats[0].drapoChefprefu7==1
  2274. or demachats[0].drapoChefprefu6==1 or demachats[0].drapoChefprefu5==1
  2275. or demachats[0].drapoChefprefu4==1 or demachats[0].drapoChefprefu3==1
  2276. or demachats[0].drapoChefprefu2==1 or demachats[0].drapoDPrefu1==1
  2277. or demachats[0].drapoDPrefu2==1 or demachats[0].drapoDPrefu3==1
  2278. or demachats[0].drapoDPrefu4==1 or demachats[0].drapoDPrefu5==1
  2279. or demachats[0].drapoDPrefu6==1 or demachats[0].drapoDPrefu7==1
  2280. or demachats[0].drapoDPrefu8==1 or demachats[0].drapoLeadrefu1==1
  2281. or demachats[0].drapoLeadrefu2==1 or demachats[0].drapoLeadrefu3==1
  2282. or demachats[0].drapoLeadrefu4==1 or demachats[0].drapoLeadrefu5==1
  2283. or demachats[0].drapoRespRegrefu==1 or demachats[0].drapoRespAcharefu==1
  2284. or demachats[0].drapoDSCSCrefu==1 or demachats[0].drapoDPrefu==1
  2285. or demachats[0].drapoRRrefu==1 or demachats[0].drapoSuprefu==1
  2286. or demachats[0].drapoLeadrefu==1 or demachats[0].drapoChefprefu==1 %}
  2287. {% set var = 1 %}
  2288. {% if demachats[0].user.username == user.username %}
  2289. <button id="correct" class="btn btn-warning">✏️ Corriger</button>
  2290. {% endif %}
  2291. {% endif %}
  2292. {% if is_granted('ROLE_ADMIN') %}
  2293. <a id="annul" data-toggle="modal" data-backdrop="false" href="#suppr" class="btn btn-outline">🗑 Annuler</a>
  2294. {% endif %}
  2295. <a href="{{ path('excel_export',{'id_dem': demachats[0].id}) }}" class="btn btn-secondary">📊 Excel</a>
  2296. <a href="{{ path('imprim_demachat',{'id': demachats[0].id}) }}" target="_blank" class="btn btn-secondary">📄 PDF</a>
  2297. {% if demachats[0].drapoValide==1 or demachats[0].costcenter==null %}
  2298. {% set var=2 %}
  2299. {% if is_granted('ROLE_RACHAT') or is_granted('ROLE_DIRECT_APPROV') %}
  2300. <button id="traiter" class="btn btn-secondary">⚙️ Traiter</button>
  2301. {% if demachats[0].drapoCC==1%}
  2302. <button id="bc" class="btn btn-secondary">📋 Générer BC contrat</button>
  2303. <img id="loadbc" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2304. {% endif %}
  2305. {% if demachats[0].drapoSansCC==1%}
  2306. <button id="bcSanscc" class="btn btn-secondary">📋 Générer BC sans contrat </button>
  2307. <img id="Sanscc" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2308. {% endif %}
  2309. {% if da_sans_cc is not null%}
  2310. <a href="{{ path('cotation_new', {daId: da_sans_cc.id}) }}"
  2311. class="btn btn-sm btn-primary" title="Créer une cotation">
  2312. <i class="fas fa-file-invoice-dollar"></i> Cotation
  2313. </a>
  2314. {% endif %}
  2315. <button id="grille" class="btn btn-secondary">📑 Grille</button>
  2316. {% endif %}
  2317. {% endif %}
  2318. {% if demachats[0].user.username == user.username %}
  2319. <div style="display:flex; gap:8px; flex-wrap:wrap;">
  2320. {% if demachats[0].pieceJointe %}
  2321. <a href="{{ asset('uploads/dem_achat/' ~ demachats[0].pieceJointe) }}" target="_blank" class="btn btn-secondary">⬇ Teléchargé PJ</a>
  2322. <button class="btn btn-secondary"
  2323. data-toggle="modal" data-target="#modalUpload"
  2324. data-id="{{ demachats[0].id }}"
  2325. data-fichier="{{ demachats[0].pieceJointe }}"
  2326. data-url="{{ demachats[0].pieceJointe ? asset('uploads/dem_achat/' ~ demachats[0].pieceJointe) : '' }}">
  2327. 🔄 Remplacer PJ
  2328. </button>
  2329. {% else %}
  2330. <button class="btn btn-secondary"
  2331. data-toggle="modal" data-target="#modalUpload"
  2332. data-id="{{ demachats[0].id }}"
  2333. data-fichier=""
  2334. data-url="">
  2335. 📎 Joindre PJ
  2336. </button>
  2337. {% endif %}
  2338. </div>
  2339. {% endif %}
  2340. </div>
  2341. {# ── HEADER ── #}
  2342. <div class="da-header">
  2343. <div class="da-header__brand">
  2344. <img src="{{ asset('img/stope.jpg') }}" alt="Logo">
  2345. <div>
  2346. <div class="da-header__title">Demande d'Achat N°{{ "%05d"|format(numach) }}/{{ demachats[0].dateSoumis|date("Y") }}</div>
  2347. <div class="da-header__sub">Soumise le {{ demachats[0].dateSoumis|date('d/m/Y') }}</div>
  2348. </div>
  2349. </div>
  2350. <div class=" custom-statue">
  2351. {% if cloture==1 %}
  2352. <span class="badge badge-success">Clôturé </span>
  2353. {% elseif var==2 %}
  2354. <span class="badge badge-success">Approuvé </span>
  2355. {% elseif var==1 %}
  2356. <span class="badge badge-danger custom-statu">rejeté</span>
  2357. {% elseif var==0 %}
  2358. <span class="badge badge-warning">En attente</span>
  2359. {% endif %}
  2360. </div>
  2361. </div>
  2362. <div class="da-actions">
  2363. <div class="da-info-card">
  2364. <div class="da-info-card__label">Soumise par</div>
  2365. <div class="da-info-card__label">{{ demachats[0].user.nom }} {{ demachats[0].user.prenom }}</div>
  2366. <div class="da-info-card__sig">{{ demachats[0].user.username }}</div>
  2367. </div>
  2368. <div class="da-info-card">
  2369. <div class="da-info-card__label">Date de soumission</div>
  2370. <div class="da-info-card__label">{{ demachats[0].dateSoumis|date('d-m-Y') }}</div>
  2371. </div>
  2372. <div class="da-info-card">
  2373. <div class="da-info-card__label">Date livraison souhaitée</div>
  2374. <div class="da-info-card__label">{{ demachats[0].delais }}</div>
  2375. </div>
  2376. <div class="da-info-card">
  2377. <div class="da-info-card__label">Région de </div>
  2378. <div class="da-info-card__label">{{ demachats[0].region != 'empty_value' ? demachats[0].region : '—' }}</div>
  2379. </div>
  2380. <div class="da-info-card">
  2381. <div class="da-info-card__label">Délai prévisionnel</div>
  2382. <div class="da-info-card__label" style="display:flex; align-items:center; gap:8px;">
  2383. {{ demachats[0].delaisPrevu ?? '—' }}
  2384. {% if is_granted('ROLE_RACHAT') %}
  2385. <a data-toggle="modal"
  2386. href="{{ path('ajax_modifier_delai_prevu',{'id_dem': demachats[0].id}) }}"
  2387. data-target="#modifprevu">
  2388. <img src="{{ asset('img/b_edit.png') }}" width="15">
  2389. </a>
  2390. {% endif %}
  2391. </div>
  2392. </div>
  2393. </div>
  2394. {# ── OBJET ── #}
  2395. {% if demachats[0].objet is not null %}
  2396. <div class="da-objet">
  2397. <span>Objet :</span>&nbsp; {{ demachats[0].objet }}
  2398. </div>
  2399. {% endif %}
  2400. {# ── TABLE DES ARTICLES ── #}
  2401. <div class="table-responsive">
  2402. <div class="da-table-wrap">
  2403. <div class="table-scroll">
  2404. <table>
  2405. <thead>
  2406. <tr>
  2407. <th>N°</th>
  2408. <th>Désignation</th>
  2409. <th>Détail</th>
  2410. <th>Qté</th>
  2411. <th>PU</th>
  2412. <th>Ctre Coût</th>
  2413. <th>Bailleur</th>
  2414. <th>Code Bail</th>
  2415. <th>Projet</th>
  2416. <th>DRL</th>
  2417. <th>Total</th>
  2418. <th >Obs</th>
  2419. {% if is_granted('ROLE_RACHAT') %}
  2420. <th>CC</th>
  2421. {% endif %}
  2422. <th ></th>
  2423. </tr>
  2424. </thead>
  2425. <tbody>
  2426. {% set n = 0 %}
  2427. {% for demachat in demachats %}
  2428. {% set n = n + 1 %}
  2429. {% set total = demachat.quantDemande * demachat.prixU %}
  2430. {% set total2 = total + total2 %}
  2431. <tr>
  2432. <td data-label="N°">
  2433. {{ n }}
  2434. {% if demachats[0].drapoRR!=1 and demachats[0].drapoDSCSC!=1 and demachats[0].drapoDP!=1 and demachats[0].drapoChefp!=1 and demachats[0].drapoLead!=1 %}
  2435. {% if demachat.user.username == user.username %}
  2436. {% if x != 1 %}
  2437. <a href="#" data-url="{{ path('supprimer_acha',{'id': demachat.id}) }}"
  2438. data-toggle="modal" data-target="#supp" class="open-modal btn btn-sm btn-outline-danger">
  2439. <i class="fas fa-trash-alt"></i>
  2440. </a>
  2441. {% endif %}
  2442. {% endif %}
  2443. {% endif %}
  2444. </td>
  2445. <td data-label="Désignation" class="col-designation">
  2446. {% set designation = 'designation'|t('Catalogue', demachat.catalogue.id) %}
  2447. {{ designation ? designation : demachat.catalogue.designation }}
  2448. {% if demachats[0].drapoRR!=1 and demachats[0].drapoDSCSC!=1 and demachats[0].drapoDP!=1 and demachats[0].drapoChefp!=1 and demachats[0].drapoLead!=1 %}
  2449. {% if demachat.user.username==user.username or is_granted('ROLE_RACHAT') or (valid1==1 and demachats[0].drapoInfo==0 and is_granted('ROLE_VALID_TECH_INFO')) or (valid2==1 and demachats[0].drapoGarage==0 and is_granted('ROLE_VALID_TECH_GARAG')) %}
  2450. <a href="#" class="open-modal" data-url="{{ path('ajax_modifier_demacha',{'id_dem': demachat.id}) }}" data-toggle="modal" data-target="#modifies">
  2451. <img src="{{ asset('img/b_edit.png') }}">
  2452. </a>
  2453. {% endif %}
  2454. {% endif %}
  2455. {% if is_granted('ROLE_ADMIN') %}
  2456. <a href="#" class="open-modal" data-url="{{ path('ajax_modifier_demacha',{'id_dem': demachat.id}) }}" data-toggle="modal" data-target="#modifies">
  2457. <img src="{{ asset('img/b_edit.png') }}">
  2458. </a>
  2459. {% endif %}
  2460. </td>
  2461. <td data-label="Détail" class="col-descrip">{{ demachat.description }}
  2462. </td>
  2463. <td data-label="Qté">{{ demachat.quantDemande }}
  2464. </td>
  2465. <td data-label="PU" class="num col-descrip">
  2466. {% if demachat.prixU %}{{ demachat.prixU|number_format(0, ',', ' ') }}{% endif %}
  2467. </td>
  2468. <td data-label="Centre">{{ demachat.centreCout }}</td>
  2469. <td data-label="Bailleur" class="col-bail">{{ demachat.nomProjet }}</td>
  2470. <td data-label="Code Bail">
  2471. {{ demachat.bailleur }}
  2472. {# Boutons édition code bailleur par chef projet #}
  2473. {% for i in 1..7 %}
  2474. {% set usechefI = attribute(_context, 'usechef' ~ i) %}
  2475. {% set usebailleI = attribute(_context, 'usebaille' ~ i) %}
  2476. {% set role = 'ROLE_CHEFP' ~ i %}
  2477. {% if usechefI is not null %}
  2478. {% for usebai in usebailleI %}
  2479. {% if demachat.nomProjet == usebai.bailleur.libele and is_granted(role) %}
  2480. <a href="#" class="open-modal"
  2481. data-url="{{ path('ajax_modif_acha',{'id_dem': demachat.id}) }}"
  2482. data-toggle="modal" data-target="#modbailleur">
  2483. <img src="{{ asset('img/b_edit.png') }}">
  2484. </a>
  2485. {% endif %}
  2486. {% endfor %}
  2487. {% endif %}
  2488. {% endfor %}
  2489. </td>
  2490. <td data-label="Projet">{{ demachat.projet }}</td>
  2491. <td data-label="DRL">{{ demachat.ligneBudget }}</td>
  2492. <td data-label="Total" class="num col-descrip">{{ total|number_format(0, ',', ' ') }}</td>
  2493. <td data-label="Obs" >
  2494. {{ demachat.observation }}
  2495. {% if is_granted('ROLE_RACHAT') or is_granted('ROLE_VALID_TECH_GARAG') or is_granted('ROLE_VALID_TECH_INFO') or is_granted('ROLE_DP') or is_granted('ROLE_RR') or is_granted('ROLE_DSCSC2') or is_granted('ROLE_DSCSC') or is_granted('ROLE_CPROJET') or is_granted('ROLE_LEAD') %}
  2496. <a href="#" data-toggle="modal" class="open-modal"
  2497. data-url="{{ path('ajax_modif_demacha',{'id_dem': demachat.id}) }}"
  2498. data-target="#mod">
  2499. <img src="{{ asset('img/b_edit.png') }}">
  2500. </a>
  2501. {% endif %}
  2502. </td>
  2503. {% if is_granted('ROLE_RACHAT') %}
  2504. <td>
  2505. {% if demachat.contratCadre %}
  2506. <span class="badge badge-danger">
  2507. {{ demachat.contratCadre.reference }}
  2508. </span>
  2509. <a href="{{ path('contrat_cadre_show', {id: demachat.contratCadre.id}) }}"
  2510. <i class="fas fa-eye mr-1"></i>
  2511. </a>
  2512. {% if demachat.drapoValide==0 %}
  2513. <a href="#" data-toggle="modal" class="open-modal"
  2514. data-url="{{ path('ajax_modif_contra_cadre',{'id_dem': demachat.id}) }}"
  2515. data-target="#contrat">
  2516. <img src="{{ asset('img/b_edit.png') }}">
  2517. </a>
  2518. {% endif %}
  2519. {% endif %}
  2520. </td>
  2521. {% endif %}
  2522. <td>
  2523. {% if demachat.drapoCloture %}
  2524. <span class="badge badge-success">
  2525. Clôturé
  2526. </span>
  2527. {% elseif demachat.quantiteValidee > 0 %}
  2528. <span class="badge badge-warning">
  2529. Partiellement <br/>
  2530. commandé.reste: {{ demachat.resteACommander }}
  2531. <span data-toggle="tooltip"title="Quantité restante à commander : {{ demachat.resteACommander }}">
  2532. <i class="fas fa-shopping-cart"></i>
  2533. </span>
  2534. {% elseif demachat.resteACommander < demachat.quantDemande %}
  2535. <span class="badge badge-info">
  2536. Commande en cours<br/>
  2537. de validation
  2538. </span>
  2539. {% endif %}
  2540. </td>
  2541. </tr>
  2542. {% endfor %}
  2543. {# Ligne ajout article #}
  2544. <tr class="da-add-row">
  2545. <td>
  2546. {% if demachats[0].drapoRR!=1 and demachats[0].drapoDSCSC!=1 and demachats[0].drapoDP!=1 and demachats[0].drapoLead!=1 and demachats[0].drapoChefp1!=1 %}
  2547. {% if demachats[0].user.username == user.username %}
  2548. <a data-toggle="modal" data-backdrop="false" href="#inf" style="text-decoration:none">
  2549. <img src="{{ asset('img/but.jpg') }}" width="22" height="22" title="Ajouter un article">
  2550. </a>
  2551. {% endif %}
  2552. {% endif %}
  2553. </td>
  2554. <td colspan="12" style="font-size:.76rem; color:var(--muted); padding:8px 14px !important;">
  2555. {% if demachats[0].user.username == user.username %}Cliquer sur + pour ajouter un article{% endif %}
  2556. </td>
  2557. {% if is_granted('ROLE_CPROJET') %}<td></td>{% endif %}
  2558. </tr>
  2559. </tbody>
  2560. </table>
  2561. </div>
  2562. </div>
  2563. </div>
  2564. {# ── BLOC BAS : VALIDATIONS + TOTAUX ── #}
  2565. <div class="da-bottom">
  2566. {# ── VALIDATIONS ── #}
  2567. <div class="da-validations">
  2568. <div class="da-section-title">Vrification</div>
  2569. {# Validation technique INFO #}
  2570. {% if valid1 == 1 %}
  2571. <div class="da-valid-row">
  2572. <div class="da-valid-row__icon {% if demachats[0].drapoInfo==1 %}icon-ok{% elseif demachats[0].drapoInforefu==1 %}icon-rejected{% else %}icon-pending{% endif %}">
  2573. {% if demachats[0].drapoInfo==1 %}✔{% elseif demachats[0].drapoInforefu==1 %}✗{% else %}⏳{% endif %}
  2574. </div>
  2575. <div class="da-valid-row__body">
  2576. <div class="da-valid-row__name">Validation technique (Info)
  2577. {% if var!=2 %}
  2578. {% if valid1==1 and is_granted('ROLE_VALID_TECH_INFO') %}
  2579. {% if demachats[0].drapoInfo==0 %}
  2580. <img id="imginfo" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2581. <button id="validtech1" class="btn btn-success btn-xs">✔ Approuver</button>
  2582. {% endif %}
  2583. {% if demachats[0].drapoInforefu==0 %}
  2584. <img id="imgrefuinfo" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2585. <button id="validtech1refu" class="btn btn-danger btn-xs">✗ Rejeter</button>
  2586. {% endif %}
  2587. {% endif %}
  2588. {% endif %}
  2589. </div>
  2590. {% if demachats[0].drapoInfo==1 %}
  2591. <div class="da-valid-row__meta">{{ demachats[0].dateInfo|date('d-m-Y H\h:i') }}</div>
  2592. <div class="da-valid-row__sig">{{ usevalid1.username }}</div>
  2593. {% elseif demachats[0].drapoInforefu==1 %}
  2594. <div class="da-valid-row__meta" style="color:var(--danger)">Rejeté — {{ demachats[0].dateInfo|date('d-m-Y H\h:i') }}</div>
  2595. {% else %}
  2596. <div class="da-valid-row__meta">En attente</div>
  2597. {% endif %}
  2598. </div>
  2599. </div>
  2600. {% endif %}
  2601. {# Validation technique GARAGE #}
  2602. {% if valid2 == 1 %}
  2603. <div class="da-valid-row">
  2604. <div class="da-valid-row__icon {% if demachats[0].drapoGarage==1 %}icon-ok{% elseif demachats[0].drapoGaragerefu==1 %}icon-rejected{% else %}icon-pending{% endif %}">
  2605. {% if demachats[0].drapoGarage==1 %}✔{% elseif demachats[0].drapoGaragerefu==1 %}✗{% else %}⏳{% endif %}
  2606. </div>
  2607. <div class="da-valid-row__body">
  2608. <div class="da-valid-row__name">Validation technique (Garage)
  2609. {% if var!=2 %}
  2610. {% if valid2==1 and is_granted('ROLE_VALID_TECH_GARAG') %}
  2611. {% if demachats[0].drapoGarage==0 %}
  2612. <img id="imggarag" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2613. <button id="validtech2" class="btn btn-success btn-xs">✔ Approuver</button>
  2614. {% endif %}
  2615. {% if demachats[0].drapoGaragerefu==0 %}
  2616. <img id="imgrefugarag" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2617. <button id="validtech2refu" class="btn btn-danger btn-xs">✗ Rejeter</button>
  2618. {% endif %}
  2619. {% endif %}
  2620. {% endif %}
  2621. </div>
  2622. {% if demachats[0].drapoGarage==1 %}
  2623. <div class="da-valid-row__meta">{{ demachats[0].dateGarage|date('d-m-Y H\h:i') }}</div>
  2624. <div class="da-valid-row__sig">{{ usegarage.username }}</div>
  2625. {% elseif demachats[0].drapoGaragerefu==1 %}
  2626. <div class="da-valid-row__meta" style="color:var(--danger)">Rejeté — {{ demachats[0].dateGarage|date('d-m-Y') }}</div>
  2627. {% else %}
  2628. <div class="da-valid-row__meta">En attente</div>
  2629. {% endif %}
  2630. </div>
  2631. </div>
  2632. {% endif %}
  2633. {# Assistant Achat #}
  2634. <div class="da-valid-row">
  2635. <div class="da-valid-row__icon {% if demachats[0].drapoRespAcha==1 %}icon-ok{% elseif demachats[0].drapoRespAcharefu==1 %}icon-rejected{% else %}icon-pending{% endif %}">
  2636. {% if demachats[0].drapoRespAcha==1 %}✔{% elseif demachats[0].drapoRespAcharefu==1 %}✗{% else %}⏳{% endif %}
  2637. </div>
  2638. <div class="da-valid-row__body">
  2639. <div class="da-valid-row__name">Vérif. Assistant Achat
  2640. {# Conditions identiques à l'original selon valid1/valid2 #}
  2641. {% if var!=2 %}
  2642. {% if is_granted('ROLE_RACHAT') %}
  2643. {% if valid1==0 and valid2==0 %}
  2644. {% if demachats[0].drapoRespAcha==0 %}
  2645. <img id="imgrespacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2646. <button id="signrespacha" class="btn btn-success btn-xs">✔ Approuver</button>
  2647. {% endif %}
  2648. {% if demachats[0].drapoRespAcharefu==0 %}
  2649. <img id="imgrefuacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2650. <button id="refurespacha" class="btn btn-danger btn-xs">✗ Rejeter</button>
  2651. {% endif %}
  2652. {% elseif valid1==1 and valid2==0 %}
  2653. {% if demachats[0].drapoRespAcha==0 and demachats[0].drapoInfo==1 %}
  2654. <img id="imgrespacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2655. <button id="signrespacha" class="btn btn-success btn-xs">✔ Approuver</button>
  2656. {% endif %}
  2657. {% if demachats[0].drapoRespAcharefu==0 and demachats[0].drapoInfo==1 %}
  2658. <img id="imgrefuacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2659. <button id="refurespacha" class="btn btn-danger btn-xs">✗ Rejeter</button>
  2660. {% endif %}
  2661. {% elseif valid1==0 and valid2==1 %}
  2662. {% if demachats[0].drapoRespAcha==0 and demachats[0].drapoGarage==1 %}
  2663. <img id="imgrespacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2664. <button id="signrespacha" class="btn btn-success btn-xs">✔ Approuver</button>
  2665. {% endif %}
  2666. {% if demachats[0].drapoRespAcharefu==0 and demachats[0].drapoGarage==1 %}
  2667. <img id="imgrefuacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2668. <button id="refurespacha" class="btn btn-danger btn-xs">✗ Rejeter</button>
  2669. {% endif %}
  2670. {% elseif valid1==1 and valid2==1 %}
  2671. {% if demachats[0].drapoRespAcha==0 and demachats[0].drapoGarage==1 and demachats[0].drapoInfo==1 %}
  2672. <img id="imgrespacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2673. <button id="signrespacha" class="btn btn-success btn-xs">✔ Approuver</button>
  2674. {% endif %}
  2675. {% if demachats[0].drapoRespAcharefu==0 %}
  2676. <img id="imgrefuacha" class="loader-img" src="{{ asset('img/loders.gif') }}" width="30" height="22">
  2677. <button id="refurespacha" class="btn btn-danger btn-xs">✗ Rejeter</button>
  2678. {% endif %}
  2679. {% endif %}
  2680. {% endif %}
  2681. {% endif %}
  2682. </div>
  2683. {% if demachats[0].drapoRespAcha==1 %}
  2684. <div class="da-valid-row__meta">{{ demachats[0].dateRespAcha|date('d-m-Y H\h:i') }}</div>
  2685. <div class="da-valid-row__sig">{{ userespacha.username }}</div>
  2686. {% elseif demachats[0].drapoRespAcharefu==1 %}
  2687. <div class="da-valid-row__meta" style="color:var(--danger)">Rejeté — {{ demachats[0].dateRespAcha|date('d-m-Y H\h:i') }}</div>
  2688. {% else %}
  2689. <div class="da-valid-row__meta">En attente</div>
  2690. {% endif %}
  2691. </div>
  2692. </div>
  2693. </div>
  2694. {# ── TOTAUX ── #}
  2695. <div class="da-totals">
  2696. <div class="da-section-title">Récapitulatif financier</div>
  2697. {% set mtva = total2 * demachats[0].tva / 100 %}
  2698. {% set mttc = total2 + mtva %}
  2699. <table class="da-totals-table">
  2700. <tr>
  2701. <td class="t-label">Montant total HT</td>
  2702. <td class="t-value">{{ total2|number_format(0, ',', ' ') }} FCFA</td>
  2703. </tr>
  2704. <tr>
  2705. <td class="t-label">
  2706. TVA
  2707. <form id="monlistnum10" action="{{ path('mstopes_gestion_demande_achat') }}" method="post" class="tva-form" style="display:inline-flex; margin-left:8px;">
  2708. &nbsp;{{ demachats[0].tva }}%
  2709. {% if demachats[0].drapoRR!=1 and demachats[0].drapoDSCSC!=1 and demachats[0].drapoDP!=1 and demachats[0].drapoChefp!=1 and demachats[0].drapoLead!=1 %}
  2710. {% if demachats[0].user.username==user.username or is_granted('ROLE_RACHAT') %}
  2711. {{ form_widget(form10.tva) }}
  2712. <img id="tva" class="loader-img" src="{{ asset('img/loders.gif') }}" width="24" height="18">
  2713. {% endif %}
  2714. {% endif %}
  2715. </form>
  2716. </td>
  2717. <td class="t-value">{{ mtva|number_format(0, ',', ' ') }} FCFA</td>
  2718. </tr>
  2719. <tr class="t-ttc">
  2720. <td class="t-label"><strong>Montant total TTC</strong></td>
  2721. <td class="t-value"><strong>{{ mttc|number_format(0, ',', ' ') }} FCFA</strong></td>
  2722. </tr>
  2723. </table>
  2724. </div>
  2725. </div>{# end da-bottom #}
  2726. </div>{# end da-page #}
  2727. <div class="table-responsive auth-table">
  2728. <table class="table table-bordered custom-table">
  2729. <tr>
  2730. <td class="section-title" >Autorisation</td>
  2731. </tr>
  2732. </table>
  2733. </div>
  2734. {% if demachats[0].costcenter !=null %}
  2735. {% if nomb ==1 %}
  2736. <div class="val-circuit">
  2737. <div class="val-section">
  2738. <div class="val-row">
  2739. <div class="val-label">
  2740. Superieur hierachique
  2741. </div>
  2742. <div class="val-grid">
  2743. <div class="val-slot">
  2744. {# Signé #}
  2745. {% if demachats[0].drapoSup==1 %}
  2746. <div class="val-badge signed">
  2747. ✓ <s><i>{{usesuph.username}}</i></s>
  2748. </div>
  2749. <div class="val-date">{{demachats[0].dateSuph|date('d-m-Y H\\h:i')}} </div>
  2750. {# Rejeté #}
  2751. {% elseif demachats[0].drapoSuprefu==1 %}
  2752. <div class="val-badge refused">✗ rejeté</div>
  2753. <div class="val-date">{{demachats[0].dateSuph|date('d-m-Y H\\h:i')}}</div>
  2754. {% endif %}
  2755. {% if suph is not null %}
  2756. {% if user.username==suph.username and demachats[0].drapoRespAcha==1 and var!=2 %}
  2757. <div class="val-btns">
  2758. {% if demachats[0].drapoSup==0 %}
  2759. <img id="loasuph" src="{{ asset('img/loders.gif')}}"width="40" height="30"/>
  2760. <button id="signreg" class="btn-approve">✓ approuvé</button>
  2761. {% endif %}
  2762. {% if demachats[0].drapoSuprefu==0 %}
  2763. <img id="loasuphr" src="{{ asset('img/loders.gif')}}"width="40" height="30"/>
  2764. <button id="signregrefu" class="btn-reject">✗ rejeté</button>
  2765. {% endif %}
  2766. </div>
  2767. {% endif %}
  2768. {% endif %}
  2769. </div>
  2770. </div>
  2771. </div>
  2772. </div> {# fin section suph #}
  2773. {# --------------------------------------------------------
  2774. DIRECTEUR DU DÉPARTEMENT
  2775. RÉTROCOMPATIBILITÉ :
  2776. - usedp is not null → ancienne DA (avant migration multi-DP) → slot unique
  2777. - usedp is null → nouvelle DA → slots usedp1..8 via grille auto-fit
  2778. val-grid gère automatiquement 1 à 8 slots actifs
  2779. sans aucune modification du HTML
  2780. -------------------------------------------------------- #}
  2781. <div class="val-section">
  2782. <div class="val-row">
  2783. <div class="val-label">
  2784. DR. Département
  2785. </div>
  2786. <div class="val-grid">
  2787. {# SLOT DP 1 #}
  2788. {% if usedp1 is not null %}
  2789. <div class="val-slot">
  2790. {# Ce slot est le valideur effectif #}
  2791. {% if demachats[0].drapoDP1 == 1 %}
  2792. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  2793. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  2794. {# drapoDP global==1 mais via un autre slot
  2795. → afficher le valideur effectif #}
  2796. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  2797. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  2798. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  2799. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  2800. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  2801. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  2802. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  2803. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  2804. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  2805. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  2806. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  2807. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  2808. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  2809. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  2810. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  2811. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  2812. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  2813. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  2814. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  2815. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  2816. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  2817. {# Rejeté #}
  2818. {% elseif demachats[0].drapoDPrefu1 == 1 %}
  2819. <div class="val-badge refused">✗ rejeté</div>
  2820. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  2821. {% endif %}
  2822. {# Boutons — visibles pour le DP propriétaire du slot
  2823. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  2824. {% if user.username == usedp1.username and var!=2 and demachats[0].drapoSup == 1 %}
  2825. <div class="val-btns">
  2826. {% if demachats[0].drapoDP1 == 0 %}
  2827. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2828. <button id="dp" class="btn-approve">✓ approuvé</button>
  2829. {% endif %}
  2830. {% if demachats[0].drapoDPrefu1 == 0 %}
  2831. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2832. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  2833. {% endif %}
  2834. </div>
  2835. {% endif %}
  2836. </div>
  2837. {% endif %} {# fin DP1 #}
  2838. {# SLOT DP 2 #}
  2839. {% if usedp2 is not null %}
  2840. <div class="val-slot">
  2841. {# Ce slot est le valideur effectif #}
  2842. {% if demachats[0].drapoDP2 == 1 %}
  2843. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  2844. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  2845. {# drapoDP global==1 mais via un autre slot
  2846. → afficher le valideur effectif #}
  2847. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  2848. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  2849. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  2850. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  2851. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  2852. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  2853. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  2854. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  2855. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  2856. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  2857. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  2858. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  2859. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  2860. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  2861. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  2862. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  2863. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  2864. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  2865. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  2866. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  2867. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  2868. {# Rejeté #}
  2869. {% elseif demachats[0].drapoDPrefu2 == 1 %}
  2870. <div class="val-badge refused">✗ rejeté</div>
  2871. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  2872. {% endif %}
  2873. {# Boutons — visibles pour le DP propriétaire du slot
  2874. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  2875. {% if user.username == usedp2.username and var!=2 and demachats[0].drapoSup == 1 %}
  2876. <div class="val-btns">
  2877. {% if demachats[0].drapoDP2 == 0 %}
  2878. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2879. <button id="dp" class="btn-approve">✓ approuvé</button>
  2880. {% endif %}
  2881. {% if demachats[0].drapoDPrefu2 == 0 %}
  2882. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2883. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  2884. {% endif %}
  2885. </div>
  2886. {% endif %}
  2887. </div>
  2888. {% endif %} {# fin DP2 #}
  2889. {# SLOT DP 3 #}
  2890. {% if usedp3 is not null %}
  2891. <div class="val-slot">
  2892. {# Ce slot est le valideur effectif #}
  2893. {% if demachats[0].drapoDP3 == 1 %}
  2894. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  2895. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  2896. {# drapoDP global==1 mais via un autre slot
  2897. → afficher le valideur effectif #}
  2898. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  2899. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  2900. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  2901. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  2902. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  2903. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  2904. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  2905. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  2906. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  2907. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  2908. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  2909. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  2910. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  2911. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  2912. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  2913. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  2914. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  2915. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  2916. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  2917. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  2918. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  2919. {# Rejeté #}
  2920. {% elseif demachats[0].drapoDPrefu3 == 1 %}
  2921. <div class="val-badge refused">✗ rejeté</div>
  2922. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  2923. {% endif %}
  2924. {# Boutons — visibles pour le DP propriétaire du slot
  2925. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  2926. {% if user.username == usedp3.username and var!=2 and demachats[0].drapoSup == 1 %}
  2927. <div class="val-btns">
  2928. {% if demachats[0].drapoDP3 == 0 %}
  2929. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2930. <button id="dp" class="btn-approve">✓ approuvé</button>
  2931. {% endif %}
  2932. {% if demachats[0].drapoDPrefu3 == 0 %}
  2933. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2934. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  2935. {% endif %}
  2936. </div>
  2937. {% endif %}
  2938. </div>
  2939. {% endif %} {# fin DP3 #}
  2940. {# SLOT DP 4 #}
  2941. {% if usedp4 is not null %}
  2942. <div class="val-slot">
  2943. {# Ce slot est le valideur effectif #}
  2944. {% if demachats[0].drapoDP4 == 1 %}
  2945. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  2946. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  2947. {# drapoDP global==1 mais via un autre slot
  2948. → afficher le valideur effectif #}
  2949. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  2950. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  2951. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  2952. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  2953. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  2954. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  2955. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  2956. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  2957. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  2958. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  2959. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  2960. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  2961. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  2962. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  2963. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  2964. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  2965. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  2966. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  2967. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  2968. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  2969. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  2970. {# Rejeté #}
  2971. {% elseif demachats[0].drapoDPrefu4 == 1 %}
  2972. <div class="val-badge refused">✗ rejeté</div>
  2973. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  2974. {% endif %}
  2975. {# Boutons — visibles pour le DP propriétaire du slot
  2976. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  2977. {% if user.username == usedp4.username and var!=2 and demachats[0].drapoSup == 1 %}
  2978. <div class="val-btns">
  2979. {% if demachats[0].drapoDP4 == 0 %}
  2980. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2981. <button id="dp" class="btn-approve">✓ approuvé</button>
  2982. {% endif %}
  2983. {% if demachats[0].drapoDPrefu4 == 0 %}
  2984. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  2985. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  2986. {% endif %}
  2987. </div>
  2988. {% endif %}
  2989. </div>
  2990. {% endif %} {# fin DP4 #}
  2991. {# SLOT DP 5 #}
  2992. {% if usedp5 is not null %}
  2993. <div class="val-slot">
  2994. {# Ce slot est le valideur effectif #}
  2995. {% if demachats[0].drapoDP5 == 1 %}
  2996. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  2997. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  2998. {# drapoDP global==1 mais via un autre slot
  2999. → afficher le valideur effectif #}
  3000. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  3001. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  3002. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  3003. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  3004. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  3005. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  3006. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  3007. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  3008. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  3009. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  3010. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  3011. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  3012. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  3013. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  3014. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  3015. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  3016. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  3017. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  3018. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  3019. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  3020. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  3021. {# Rejeté #}
  3022. {% elseif demachats[0].drapoDPrefu5 == 1 %}
  3023. <div class="val-badge refused">✗ rejeté</div>
  3024. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  3025. {% endif %}
  3026. {# Boutons — visibles pour le DP propriétaire du slot
  3027. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  3028. {% if user.username == usedp5.username and var!=2 and demachats[0].drapoSup == 1 %}
  3029. <div class="val-btns">
  3030. {% if demachats[0].drapoDP5 == 0 %}
  3031. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3032. <button id="dp" class="btn-approve">✓ approuvé</button>
  3033. {% endif %}
  3034. {% if demachats[0].drapoDPrefu5 == 0 %}
  3035. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3036. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  3037. {% endif %}
  3038. </div>
  3039. {% endif %}
  3040. </div>
  3041. {% endif %} {# fin DP5 #}
  3042. {# SLOT DP 6 #}
  3043. {% if usedp6 is not null %}
  3044. <div class="val-slot">
  3045. {# Ce slot est le valideur effectif #}
  3046. {% if demachats[0].drapoDP6 == 1 %}
  3047. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  3048. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  3049. {# drapoDP global==1 mais via un autre slot
  3050. → afficher le valideur effectif #}
  3051. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  3052. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  3053. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  3054. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  3055. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  3056. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  3057. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  3058. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  3059. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  3060. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  3061. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  3062. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  3063. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  3064. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  3065. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  3066. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  3067. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  3068. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  3069. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  3070. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  3071. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  3072. {# Rejeté #}
  3073. {% elseif demachats[0].drapoDPrefu6 == 1 %}
  3074. <div class="val-badge refused">✗ rejeté</div>
  3075. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  3076. {% endif %}
  3077. {# Boutons — visibles pour le DP propriétaire du slot
  3078. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  3079. {% if user.username == usedp6.username and var!=2 and demachats[0].drapoSup == 1 %}
  3080. <div class="val-btns">
  3081. {% if demachats[0].drapoDP6 == 0 %}
  3082. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3083. <button id="dp" class="btn-approve">✓ approuvé</button>
  3084. {% endif %}
  3085. {% if demachats[0].drapoDPrefu6 == 0 %}
  3086. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3087. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  3088. {% endif %}
  3089. </div>
  3090. {% endif %}
  3091. </div>
  3092. {% endif %} {# fin DP6 #}
  3093. {# SLOT DP 7 #}
  3094. {% if usedp7 is not null %}
  3095. <div class="val-slot">
  3096. {# Ce slot est le valideur effectif #}
  3097. {% if demachats[0].drapoDP7 == 1 %}
  3098. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  3099. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  3100. {# drapoDP global==1 mais via un autre slot
  3101. → afficher le valideur effectif #}
  3102. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  3103. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  3104. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  3105. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  3106. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  3107. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  3108. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  3109. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  3110. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  3111. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  3112. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  3113. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  3114. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  3115. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  3116. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  3117. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  3118. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  3119. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  3120. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  3121. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  3122. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  3123. {# Rejeté #}
  3124. {% elseif demachats[0].drapoDPrefu7 == 1 %}
  3125. <div class="val-badge refused">✗ rejeté</div>
  3126. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  3127. {% endif %}
  3128. {# Boutons — visibles pour le DP propriétaire du slot
  3129. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  3130. {% if user.username == usedp7.username and var!=2 and demachats[0].drapoSup == 1 %}
  3131. <div class="val-btns">
  3132. {% if demachats[0].drapoDP7 == 0 %}
  3133. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3134. <button id="dp" class="btn-approve">✓ approuvé</button>
  3135. {% endif %}
  3136. {% if demachats[0].drapoDPrefu7 == 0 %}
  3137. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3138. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  3139. {% endif %}
  3140. </div>
  3141. {% endif %}
  3142. </div>
  3143. {% endif %} {# fin DP7 #}
  3144. {# SLOT DP 8 #}
  3145. {% if usedp8 is not null %}
  3146. <div class="val-slot">
  3147. {# Ce slot est le valideur effectif #}
  3148. {% if demachats[0].drapoDP8 == 1 %}
  3149. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  3150. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  3151. {# drapoDP global==1 mais via un autre slot
  3152. → afficher le valideur effectif #}
  3153. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  3154. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  3155. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  3156. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  3157. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  3158. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  3159. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  3160. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  3161. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  3162. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  3163. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  3164. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  3165. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  3166. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  3167. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  3168. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  3169. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  3170. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  3171. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  3172. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  3173. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  3174. {# Rejeté #}
  3175. {% elseif demachats[0].drapoDPrefu8 == 1 %}
  3176. <div class="val-badge refused">✗ rejeté</div>
  3177. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  3178. {% endif %}
  3179. {# Boutons — visibles pour le DP propriétaire du slot
  3180. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  3181. {% if user.username == usedp8.username and var!=2 and demachats[0].drapoSup == 1 %}
  3182. <div class="val-btns">
  3183. {% if demachats[0].drapoDP8 == 0 %}
  3184. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3185. <button id="dp" class="btn-approve">✓ approuvé</button>
  3186. {% endif %}
  3187. {% if demachats[0].drapoDPrefu8 == 0 %}
  3188. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3189. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  3190. {% endif %}
  3191. </div>
  3192. {% endif %}
  3193. </div>
  3194. {% endif %} {# fin DP8 #}
  3195. </div>
  3196. </div>
  3197. </div>{# fin section DP #}
  3198. {% if demachats[0].montant < 2500000 %}
  3199. <div class="val-section">
  3200. <div class="val-row">
  3201. <div class="val-label">
  3202. Finances
  3203. </div>
  3204. <div class="val-grid">
  3205. <div class="val-slot">
  3206. {% if demachats[0].drapoDSCSC == 1 %}
  3207. <div class="val-badge signed">✓ <s><i>{{usedscsc.username}}</i></s></div>
  3208. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  3209. {% elseif demachats[0].drapoDSCSCrefu == 1 %}
  3210. <div class="val-badge refused">✗ rejeté</div>
  3211. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  3212. {% endif %}
  3213. {% if is_granted('ROLE_DSCSC2') and demachats[0].drapoDP == 1 and var!=2 %}
  3214. <div class="val-btns">
  3215. {% if demachats[0].drapoDSCSC ==0 %}
  3216. <img id="lods" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3217. <button id="dscsc" class="btn-approve">✓ approuvé</button>
  3218. {% endif %}
  3219. {% if demachats[0].drapoDSCSCrefu == 0 %}
  3220. <img id="lod" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3221. <button id="dscscrefu" class="btn-reject">✗ rejeté</button>
  3222. {% endif %}
  3223. </div>
  3224. {% endif %}
  3225. </div>
  3226. </div>
  3227. </div>
  3228. </div>
  3229. {% endif %}
  3230. {% if demachats[0].montant > 2499999 %}
  3231. <div class="val-section">
  3232. <div class="val-row">
  3233. <div class="val-label">
  3234. DAF
  3235. </div>
  3236. <div class="val-grid">
  3237. <div class="val-slot">
  3238. {% if demachats[0].drapoDSCSC == 1 %}
  3239. <div class="val-badge signed">✓ <s><i>{{usedscsc.username}}</i></s></div>
  3240. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  3241. {% elseif demachats[0].drapoDSCSCrefu == 1 %}
  3242. <div class="val-badge refused">✗ rejeté</div>
  3243. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  3244. {% endif %}
  3245. {% if is_granted('ROLE_DSCSC') and demachats[0].drapoDP == 1 and var!=2 %}
  3246. <div class="val-btns">
  3247. {% if demachats[0].drapoDSCSC ==0 %}
  3248. <img id="lods" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3249. <button id="dscsc" class="btn-approve">✓ approuvé</button>
  3250. {% endif %}
  3251. {% if demachats[0].drapoDSCSCrefu == 0 %}
  3252. <img id="lod" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3253. <button id="dscscrefu" class="btn-reject">✗ rejeté</button>
  3254. {% endif %}
  3255. </div>
  3256. {% endif %}
  3257. </div>
  3258. </div>
  3259. </div>
  3260. </div>
  3261. {% endif %}
  3262. {# --------------------------------------------------------
  3263. REPRÉSENTANT RÉSIDENT
  3264. Uniquement pour montant > 5 000 000 FCFA
  3265. Grisé et non cliquable si non requis
  3266. -------------------------------------------------------- #}
  3267. {% if demachats[0].montant > 4999999 %}
  3268. <div class="val-section">
  3269. <div class="val-row">
  3270. <div class="val-label">
  3271. Repr. Résident
  3272. </div>
  3273. <div class="val-grid">
  3274. <div class="val-slot">
  3275. {% if demachats[0].drapoRR == 1 %}
  3276. <div class="val-badge signed">✓ <s><i>{{userr.username}}</i></s></div>
  3277. <div class="val-date">{{demachats[0].dateRR|date('d-m-Y H\\h:i')}}</div>
  3278. {% elseif demachats[0].drapoRRrefu == 1 %}
  3279. <div class="val-badge refused">✗ rejeté</div>
  3280. <div class="val-date">{{demachats[0].dateRR|date('d-m-Y H\\h:i')}}</div>
  3281. {% endif %}
  3282. {% if is_granted('ROLE_RR') and demachats[0].drapoDSCSC == 1 and var!=2 %}
  3283. <div class="val-btns">
  3284. {% if demachats[0].drapoRR == 0 %}
  3285. <img id="loadr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3286. <button id="rr" class="btn-approve">✓ approuvé</button>
  3287. {% endif %}
  3288. {% if demachats[0].drapoRRrefu == 0 %}
  3289. <img id="loadrr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3290. <button id="rrrefu" class="btn-reject">✗ rejeté</button>
  3291. {% endif %}
  3292. </div>
  3293. {% endif %}
  3294. </div>
  3295. </div>
  3296. </div>
  3297. </div>
  3298. {% endif %}
  3299. </div>
  3300. {% elseif code == 13 %}
  3301. <div class="val-circuit">
  3302. {# --------------------------------------------------------
  3303. RESPONSABLE RÉGIONAL
  3304. Affiché uniquement si DA hors Bamako
  3305. Slot unique — pas de grille multi-slots
  3306. -------------------------------------------------------- #}
  3307. {% if demachats[0].region is not null and demachats[0].region != "Bamako" %}
  3308. <div class="val-section">
  3309. <div class="val-row">
  3310. <div class="val-label">
  3311. Resp. Régional
  3312. </div>
  3313. <div class="val-grid">
  3314. <div class="val-slot">
  3315. {# Signé #}
  3316. {% if demachats[0].drapoRespReg == 1 %}
  3317. <div class="val-badge signed" >
  3318. ✓ <s><i>{{userreg.username}}</i></s>
  3319. </div>
  3320. <div class="val-date" align="left">{{demachats[0].dateRespReg|date('d-m-Y H\\h:i')}}</div>
  3321. {# Rejeté #}
  3322. {% elseif demachats[0].drapoRespRegrefu == 1 %}
  3323. <div class="val-badge refused">✗ rejeté</div>
  3324. <div class="val-date" align="left">{{demachats[0].dateRespReg|date('d-m-Y H\\h:i')}}</div>
  3325. {% endif %}
  3326. {# Boutons — visibles uniquement pour le RespReg connecté
  3327. Condition : RespAcha a déjà validé (drapoRespAcha==1) #}
  3328. {% if usereg is not null %}
  3329. {% if user.username == usereg.username and demachats[0].drapoRespAcha == 1 %}
  3330. <div class="val-btns">
  3331. {% if demachats[0].drapoRespReg ==0 %}
  3332. <img id="loareg" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3333. <button id="signreg" class="btn-approve">✓ approuvé</button>
  3334. {% endif %}
  3335. {% if demachats[0].drapoRespRegrefu == 0 %}
  3336. <img id="loadreg" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3337. <button id="signregrefu" class="btn-reject">✗ rejeté</button>
  3338. {% endif %}
  3339. </div>
  3340. {% endif %}
  3341. {% endif %}
  3342. </div>
  3343. </div>
  3344. </div>
  3345. </div>
  3346. {% endif %}{# fin section resp.regional #}
  3347. {# CHANNEL LEAD #}
  3348. <div class="val-section">
  3349. <div class="val-row">
  3350. <div class="val-label">
  3351. Channel Lead
  3352. </div>
  3353. <div class="val-grid">
  3354. {% if uselead1 is not null %}
  3355. <div class="val-slot">
  3356. {% if demachats[0].drapoLead1 == 1 %}
  3357. <div class="val-badge signed">✓ <s><i>{{signelead1.username}}</i></s></div>
  3358. <div class="val-date">{{demachats[0].dateLead1|date('d-m-Y H\\h:i')}}</div>
  3359. {% elseif demachats[0].drapoLeadrefu1 == 1 %}
  3360. <div class="val-badge refused">✗ rejeté</div>
  3361. <div class="val-date">{{demachats[0].dateLead1|date('d-m-Y H\\h:i')}}</div>
  3362. {% endif %}
  3363. {% if user.username == uselead1.uselead.username and var!=2
  3364. and (
  3365. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  3366. or
  3367. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  3368. ) %}
  3369. <div class="val-btns">
  3370. {% if demachats[0].drapoLead1 == 0 %}
  3371. <img id="imglead" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3372. <button id="signlead" class="btn-approve">✓ approuvé</button>
  3373. {% endif %}
  3374. {% if demachats[0].drapoLeadrefu1 == 0 %}
  3375. <img id="imglea" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3376. <button id="leadrefu" class="btn-reject">✗ rejeté</button>
  3377. {% endif %}
  3378. </div>
  3379. {% endif %}
  3380. </div>
  3381. {% endif %}
  3382. {# Slots lead2..5 — même structure que slot 1 #}
  3383. {% if uselead2 is not null %}
  3384. <div class="val-slot">
  3385. {% if demachats[0].drapoLead2 == 1 %}
  3386. <div class="val-badge signed">✓ <s><i>{{signelead2.username}}</i></s></div>
  3387. <div class="val-date">{{demachats[0].dateLead2|date('d-m-Y H\\h:i')}}</div>
  3388. {% elseif demachats[0].drapoLeadrefu2 == 1 %}
  3389. <div class="val-badge refused">✗ rejeté</div>
  3390. <div class="val-date">{{demachats[0].dateLead2|date('d-m-Y H\\h:i')}}</div>
  3391. {% endif %}
  3392. {% if user.username == uselead2.uselead.username and var!=2
  3393. and (
  3394. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  3395. or
  3396. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  3397. ) %} <div class="val-btns">
  3398. {% if demachats[0].drapoLead2 == 0 %}
  3399. <img src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3400. <button id="signlead" class="btn-approve">✓ approuvé</button>
  3401. {% endif %}
  3402. {% if demachats[0].drapoLeadrefu2 == 0 %}
  3403. <img src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3404. <button id="leadrefu" class="btn-reject">✗ rejeté</button>
  3405. {% endif %}
  3406. </div>
  3407. {% endif %}
  3408. </div>
  3409. {% endif %}
  3410. {# ... leads 3 #}
  3411. {% if uselead3 is not null %}
  3412. <div class="val-slot">
  3413. {% if demachats[0].drapoLead3 == 1 %}
  3414. <div class="val-badge signed">✓ <s><i>{{signelead3.username}}</i></s></div>
  3415. <div class="val-date">{{demachats[0].dateLead3|date('d-m-Y H\\h:i')}}</div>
  3416. {% elseif demachats[0].drapoLeadrefu3 == 1 %}
  3417. <div class="val-badge refused">✗ rejeté</div>
  3418. <div class="val-date">{{demachats[0].dateLead3|date('d-m-Y H\\h:i')}}</div>
  3419. {% endif %}
  3420. {% if user.username == uselead3.uselead.username and var!=2
  3421. and (
  3422. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  3423. or
  3424. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  3425. ) %}
  3426. <div class="val-btns">
  3427. {% if demachats[0].drapoLead3 == 0 %}
  3428. <img id="imglead" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3429. <button id="signlead" class="btn-approve">✓ approuvé</button>
  3430. {% endif %}
  3431. {% if demachats[0].drapoLeadrefu3 == 0%}
  3432. <img id="imglea" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3433. <button id="leadrefu" class="btn-reject">✗ rejeté</button>
  3434. {% endif %}
  3435. </div>
  3436. {% endif %}
  3437. </div>
  3438. {% endif %}
  3439. {# ... leads 4 #}
  3440. {% if uselead4 is not null %}
  3441. <div class="val-slot">
  3442. {% if demachats[0].drapoLead4 == 1 %}
  3443. <div class="val-badge signed">✓ <s><i>{{signelead4.username}}</i></s></div>
  3444. <div class="val-date">{{demachats[0].dateLead4|date('d-m-Y H\\h:i')}}</div>
  3445. {% elseif demachats[0].drapoLeadrefu4 == 1 %}
  3446. <div class="val-badge refused">✗ rejeté</div>
  3447. <div class="val-date">{{demachats[0].dateLead4|date('d-m-Y H\\h:i')}}</div>
  3448. {% endif %}
  3449. {% if user.username == uselead4.uselead.username and var!=2
  3450. and (
  3451. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  3452. or
  3453. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  3454. ) %}
  3455. <div class="val-btns">
  3456. {% if demachats[0].drapoLead4 == 0 %}
  3457. <img id="imglead" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3458. <button id="signlead" class="btn-approve">✓ approuvé</button>
  3459. {% endif %}
  3460. {% if demachats[0].drapoLeadrefu4 == 0 %}
  3461. <img id="imglea" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3462. <button id="leadrefu" class="btn-reject">✗ rejeté</button>
  3463. {% endif %}
  3464. </div>
  3465. {% endif %}
  3466. </div>
  3467. {% endif %}
  3468. {# ... leads 5 #}
  3469. {% if uselead5 is not null %}
  3470. <div class="val-slot">
  3471. {% if demachats[0].drapoLead5 == 1 %}
  3472. <div class="val-badge signed">✓ <s><i>{{signelead5.username}}</i></s></div>
  3473. <div class="val-date">{{demachats[0].dateLead5|date('d-m-Y H\\h:i')}}</div>
  3474. {% elseif demachats[0].drapoLeadrefu5 == 1 %}
  3475. <div class="val-badge refused">✗ rejeté</div>
  3476. <div class="val-date">{{demachats[0].dateLead5|date('d-m-Y H\\h:i')}}</div>
  3477. {% endif %}
  3478. {% if user.username == uselead5.uselead.username and var!=2
  3479. and (
  3480. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  3481. or
  3482. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  3483. ) %}
  3484. <div class="val-btns">
  3485. {% if demachats[0].drapoLead5 == 0 %}
  3486. <img id="imglead" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3487. <button id="signlead" class="btn-approve">✓ approuvé</button>
  3488. {% endif %}
  3489. {% if demachats[0].drapoLeadrefu5 == 0 %}
  3490. <img id="imglea" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3491. <button id="leadrefu" class="btn-reject">✗ rejeté</button>
  3492. {% endif %}
  3493. </div>
  3494. {% endif %}
  3495. </div>
  3496. {% endif %}
  3497. </div>
  3498. </div>
  3499. </div>
  3500. {# --------------------------------------------------------
  3501. DIRECTEUR MÉDICAL
  3502. Affiché uniquement si categmedical == 1
  3503. S'intercale entre Lead et Chefs de projet
  3504. -------------------------------------------------------- #}
  3505. {% if categmedical == 1 %}
  3506. <div class="val-section">
  3507. <div class="val-row">
  3508. <div class="val-label"> DR. Médical </div>
  3509. <div class="val-grid">
  3510. <div class="val-slot">
  3511. {% if demachats[0].drapoDRMEDICAL == 1 %}
  3512. <div class="val-badge signed">✓ <s><i>{{usedrmedical.username}}</i></s></div>
  3513. <div class="val-date" align="left">{{demachats[0].dateDRMEDICAL|date('d-m-Y H\\h:i')}}</div>
  3514. {% elseif demachats[0].drapoDRMEDICALrefu == 1 %}
  3515. <div class="val-badge refused">✗ rejeté</div>
  3516. <div class="val-date"align="left">{{demachats[0].dateDRMEDICAL|date('d-m-Y H\\h:i')}}</div>
  3517. {% endif %}
  3518. {% if is_granted('ROLE_DR_MEDICAL') and demachats[0].drapoLead == 1 and var!=2 %}
  3519. <div class="val-btns">
  3520. {% if demachats[0].drapoDRMEDICAL == 0 %}
  3521. <img id="loamedical" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3522. <button id="signdrmedical" class="btn-approve">✓ approuvé</button>
  3523. {% endif %}
  3524. {% if demachats[0].drapoDRMEDICALrefu == 0 %}
  3525. <img id="loamedicalr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3526. <button id="signdrmedicalrefu" class="btn-reject">✗ rejeté</button>
  3527. {% endif %}
  3528. </div>
  3529. {% endif %}
  3530. </div>
  3531. </div>
  3532. </div>
  3533. </div>
  3534. {% endif %}{# fin section dr medical #}
  3535. {# --------------------------------------------------------
  3536. CHEFS DE PROJET
  3537. RÈGLE MÉTIER — slots séparés intentionnellement (voir commentaires généraux)
  3538. Branche médicale : prérequis drapoDRMEDICAL==1
  3539. Branche standard : prérequis drapoLead==1
  3540. Pour chaque slot :
  3541. - drapoChefpX==1 → ce slot est le valideur effectif → afficher signechefpX
  3542. - drapoChefp==1 and drapoChefpY==1 → un autre slot a validé → afficher signechefpY
  3543. - drapoChefp==0 → en attente ou bloqué
  3544. UN SEUL drapoChefpX sera à 1 sur une même DA (unicité par projet/bailleur)
  3545. -------------------------------------------------------- #}
  3546. <div class="val-section">
  3547. <div class="val-row">
  3548. <div class="val-label"> Chef de projet </div>
  3549. <div class="val-grid">
  3550. {# SLOT CHEF 1 #}
  3551. {% if usechef1 is not null %}
  3552. <div class="val-slot">
  3553. {# Sous-titre : nom du projet/bailleur associé à ce slot #}
  3554. {# Cas 1 : ce slot est le valideur effectif #}
  3555. {% if demachats[0].drapoChefp1 == 1 %}
  3556. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  3557. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3558. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  3559. → chercher le valideur effectif parmi les autres slots
  3560. → UN SEUL drapoChefpX sera à 1 #}
  3561. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  3562. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  3563. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3564. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  3565. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  3566. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3567. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  3568. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  3569. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3570. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  3571. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  3572. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3573. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  3574. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  3575. <div class="val-date" align="left">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  3576. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  3577. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  3578. <div class="val-date" align="left">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  3579. {# Cas 3 : rejeté par ce slot #}
  3580. {% elseif demachats[0].drapoChefprefu1 == 1 %}
  3581. <div class="val-badge refused">✗ rejeté</div>
  3582. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3583. {% endif %}
  3584. {# boutons visibles pour le propriétaire actuel du slot
  3585. Branche médicale : drapoDRMEDICAL==1 requis
  3586. Branche standard : drapoLead==1 requis
  3587. drapoChefp==0 : personne n'a encore finalisé globalement #}
  3588. {% if user.username == usechef1.user.username and var!=2
  3589. and (
  3590. (categmedical == 1 and demachats[0].drapoDRMEDICAL == 1)
  3591. or
  3592. (categmedical != 1 and demachats[0].drapoLead == 1)
  3593. ) %}
  3594. <div class="val-btns">
  3595. {% if demachats[0].drapoChefp1 == 0 %}
  3596. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3597. <button id="signchef" class="btn-approve">✓ approuvé</button>
  3598. {% endif %}
  3599. {% if demachats[0].drapoChefprefu1 == 0 %}
  3600. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3601. <a data-toggle="modal" data-backdrop="false"
  3602. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  3603. data-target="#chefpr">
  3604. <button class="btn-reject">✗ rejeté</button>
  3605. </a>
  3606. {% endif %}
  3607. </div>
  3608. {% endif %}
  3609. </div>
  3610. {% endif %}{# fin chefp1 #}
  3611. {# SLOT CHEF 2 — même structure que slot 1, slot indépendant
  3612. car projet/bailleur distinct et règle de réattribution identique #}
  3613. {% if usechef2 is not null %}
  3614. <div class="val-slot">
  3615. {# Cas 1 : ce slot est le valideur effectif #}
  3616. {% if demachats[0].drapoChefp2 == 1 %}
  3617. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  3618. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3619. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  3620. → chercher le valideur effectif parmi les autres slots
  3621. → UN SEUL drapoChefpX sera à 1 #}
  3622. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  3623. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  3624. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3625. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  3626. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  3627. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3628. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  3629. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  3630. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3631. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  3632. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  3633. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3634. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  3635. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  3636. <div class="val-date" align="left">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  3637. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  3638. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  3639. <div class="val-date" align="left">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  3640. {# Cas 3 : rejeté par ce slot #}
  3641. {% elseif demachats[0].drapoChefprefu2 == 1 %}
  3642. <div class="val-badge refused">✗ rejeté</div>
  3643. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3644. {% endif %}
  3645. {# boutons visibles pour le propriétaire actuel du slot
  3646. Branche médicale : drapoDRMEDICAL==1 requis
  3647. Branche standard : drapoLead==1 requis
  3648. drapoChefp==0 : personne n'a encore finalisé globalement #}
  3649. {% if user.username == usechef2.user.username and var!=2
  3650. and (
  3651. (categmedical == 1 and demachats[0].drapoDRMEDICAL == 1)
  3652. or
  3653. (categmedical != 1 and demachats[0].drapoLead == 1)
  3654. ) %}
  3655. <div class="val-btns">
  3656. {% if demachats[0].drapoChefp2 == 0 %}
  3657. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3658. <button id="signchef" class="btn-approve">✓ approuvé</button>
  3659. {% endif %}
  3660. {% if demachats[0].drapoChefprefu2 == 0 %}
  3661. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3662. <a data-toggle="modal" data-backdrop="false"
  3663. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  3664. data-target="#chefpr">
  3665. <button class="btn-reject">✗ rejeté</button>
  3666. </a>
  3667. {% endif %}
  3668. </div>
  3669. {% endif %}
  3670. </div>
  3671. {% endif %}{# fin chefp2 #}
  3672. {# SLOTS CHEF 3 #}
  3673. {% if usechef3 is not null %}
  3674. <div class="val-slot">
  3675. {# Cas 1 : ce slot est le valideur effectif #}
  3676. {% if demachats[0].drapoChefp3 == 1 %}
  3677. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  3678. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3679. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  3680. → chercher le valideur effectif parmi les autres slots
  3681. → UN SEUL drapoChefpX sera à 1 #}
  3682. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  3683. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  3684. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3685. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  3686. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  3687. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3688. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  3689. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  3690. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3691. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  3692. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  3693. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3694. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  3695. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  3696. <div class="val-date" align="left">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  3697. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  3698. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  3699. <div class="val-date" align="left">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  3700. {# Cas 3 : rejeté par ce slot #}
  3701. {% elseif demachats[0].drapoChefprefu3 == 1 %}
  3702. <div class="val-badge refused">✗ rejeté</div>
  3703. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3704. {% endif %}
  3705. {# boutons visibles pour le propriétaire actuel du slot
  3706. Branche médicale : drapoDRMEDICAL==1 requis
  3707. Branche standard : drapoLead==1 requis
  3708. drapoChefp==0 : personne n'a encore finalisé globalement #}
  3709. {% if user.username == usechef3.user.username and var!=2
  3710. and (
  3711. (categmedical == 1 and demachats[0].drapoDRMEDICAL == 1)
  3712. or
  3713. (categmedical != 1 and demachats[0].drapoLead == 1)
  3714. ) %}
  3715. <div class="val-btns">
  3716. {% if demachats[0].drapoChefp3 == 0 %}
  3717. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3718. <button id="signchef" class="btn-approve">✓ approuvé</button>
  3719. {% endif %}
  3720. {% if demachats[0].drapoChefprefu3 == 0 %}
  3721. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3722. <a data-toggle="modal" data-backdrop="false"
  3723. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  3724. data-target="#chefpr">
  3725. <button class="btn-reject">✗ rejeté</button>
  3726. </a>
  3727. {% endif %}
  3728. </div>
  3729. {% endif %}
  3730. </div>
  3731. {% endif %}{# fin chefp3 #}
  3732. {# SLOTS CHEF 4 #}
  3733. {% if usechef4 is not null %}
  3734. <div class="val-slot">
  3735. {# Cas 1 : ce slot est le valideur effectif #}
  3736. {% if demachats[0].drapoChefp4 == 1 %}
  3737. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  3738. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3739. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  3740. → chercher le valideur effectif parmi les autres slots
  3741. → UN SEUL drapoChefpX sera à 1 #}
  3742. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  3743. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  3744. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3745. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  3746. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  3747. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3748. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  3749. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  3750. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3751. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  3752. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  3753. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3754. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  3755. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  3756. <div class="val-date" align="left">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  3757. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  3758. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  3759. <div class="val-date" align="left">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  3760. {# Cas 3 : rejeté par ce slot #}
  3761. {% elseif demachats[0].drapoChefprefu4 == 1 %}
  3762. <div class="val-badge refused">✗ rejeté</div>
  3763. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3764. {% endif %}
  3765. {# boutons visibles pour le propriétaire actuel du slot
  3766. Branche médicale : drapoDRMEDICAL==1 requis
  3767. Branche standard : drapoLead==1 requis
  3768. drapoChefp==0 : personne n'a encore finalisé globalement #}
  3769. {% if user.username == usechef4.user.username and var!=2
  3770. and (
  3771. (categmedical == 1 and demachats[0].drapoDRMEDICAL == 1)
  3772. or
  3773. (categmedical != 1 and demachats[0].drapoLead == 1)
  3774. ) %}
  3775. <div class="val-btns">
  3776. {% if demachats[0].drapoChefp4 == 0 %}
  3777. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3778. <button id="signchef" class="btn-approve">✓ approuvé</button>
  3779. {% endif %}
  3780. {% if demachats[0].drapoChefprefu4 == 0 %}
  3781. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3782. <a data-toggle="modal" data-backdrop="false"
  3783. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  3784. data-target="#chefpr">
  3785. <button class="btn-reject">✗ rejeté</button>
  3786. </a>
  3787. {% endif %}
  3788. </div>
  3789. {% endif %}
  3790. </div>
  3791. {% endif %}{# fin chefp4 #}
  3792. {# SLOTS CHEF 5 #}
  3793. {% if usechef5 is not null %}
  3794. <div class="val-slot">
  3795. {# Cas 1 : ce slot est le valideur effectif #}
  3796. {% if demachats[0].drapoChefp5 == 1 %}
  3797. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  3798. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3799. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  3800. → chercher le valideur effectif parmi les autres slots
  3801. → UN SEUL drapoChefpX sera à 1 #}
  3802. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  3803. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  3804. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3805. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  3806. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  3807. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3808. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  3809. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  3810. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3811. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  3812. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  3813. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3814. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  3815. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  3816. <div class="val-date" align="left">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  3817. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  3818. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  3819. <div class="val-date" align="left">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  3820. {# Cas 3 : rejeté par ce slot #}
  3821. {% elseif demachats[0].drapoChefprefu5 == 1 %}
  3822. <div class="val-badge refused">✗ rejeté</div>
  3823. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3824. {% endif %}
  3825. {# boutons visibles pour le propriétaire actuel du slot
  3826. Branche médicale : drapoDRMEDICAL==1 requis
  3827. Branche standard : drapoLead==1 requis
  3828. drapoChefp==0 : personne n'a encore finalisé globalement #}
  3829. {% if user.username == usechef5.user.username and var!=2
  3830. and (
  3831. (categmedical == 1 and demachats[0].drapoDRMEDICAL == 1)
  3832. or
  3833. (categmedical != 1 and demachats[0].drapoLead == 1)
  3834. ) %}
  3835. <div class="val-btns">
  3836. {% if demachats[0].drapoChefp5 == 0 %}
  3837. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3838. <button id="signchef" class="btn-approve">✓ approuvé</button>
  3839. {% endif %}
  3840. {% if demachats[0].drapoChefprefu5 == 0 %}
  3841. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3842. <a data-toggle="modal" data-backdrop="false"
  3843. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  3844. data-target="#chefpr">
  3845. <button class="btn-reject">✗ rejeté</button>
  3846. </a>
  3847. {% endif %}
  3848. </div>
  3849. {% endif %}
  3850. </div>
  3851. {% endif %}{# fin chefp5 #}
  3852. {# SLOTS CHEF 6 #}
  3853. {% if usechef6 is not null %}
  3854. <div class="val-slot">
  3855. {# Cas 1 : ce slot est le valideur effectif #}
  3856. {% if demachats[0].drapoChefp6 == 1 %}
  3857. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  3858. <div class="val-date" align="left">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  3859. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  3860. → chercher le valideur effectif parmi les autres slots
  3861. → UN SEUL drapoChefpX sera à 1 #}
  3862. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  3863. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  3864. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3865. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  3866. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  3867. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3868. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  3869. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  3870. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3871. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  3872. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  3873. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3874. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  3875. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  3876. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3877. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  3878. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  3879. <div class="val-date" align="left">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  3880. {# Cas 3 : rejeté par ce slot #}
  3881. {% elseif demachats[0].drapoChefprefu6 == 1 %}
  3882. <div class="val-badge refused">✗ rejeté</div>
  3883. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3884. {% endif %}
  3885. {# boutons visibles pour le propriétaire actuel du slot
  3886. Branche médicale : drapoDRMEDICAL==1 requis
  3887. Branche standard : drapoLead==1 requis
  3888. drapoChefp==0 : personne n'a encore finalisé globalement #}
  3889. {% if user.username == usechef6.user.username and var!=2
  3890. and (
  3891. (categmedical == 1 and demachats[0].drapoDRMEDICAL == 1)
  3892. or
  3893. (categmedical != 1 and demachats[0].drapoLead == 1)
  3894. ) %}
  3895. <div class="val-btns">
  3896. {% if demachats[0].drapoChefp6 == 0 %}
  3897. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3898. <button id="signchef" class="btn-approve">✓ approuvé</button>
  3899. {% endif %}
  3900. {% if demachats[0].drapoChefprefu6 == 0 %}
  3901. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3902. <a data-toggle="modal" data-backdrop="false"
  3903. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  3904. data-target="#chefpr">
  3905. <button class="btn-reject">✗ rejeté</button>
  3906. </a>
  3907. {% endif %}
  3908. </div>
  3909. {% endif %}
  3910. </div>
  3911. {% endif %}{# fin chefp6 #}
  3912. {# SLOTS CHEF 7 #}
  3913. {% if usechef7 is not null %}
  3914. <div class="val-slot">
  3915. {# Cas 1 : ce slot est le valideur effectif #}
  3916. {% if demachats[0].drapoChefp6 == 1 %}
  3917. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  3918. <div class="val-date" align="left">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  3919. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  3920. → chercher le valideur effectif parmi les autres slots
  3921. → UN SEUL drapoChefpX sera à 1 #}
  3922. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  3923. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  3924. <div class="val-date" align="left">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  3925. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  3926. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  3927. <div class="val-date" align="left">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  3928. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  3929. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  3930. <div class="val-date" align="left">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  3931. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  3932. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  3933. <div class="val-date" align="left">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  3934. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  3935. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  3936. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3937. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  3938. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  3939. <div class="val-date" align="left">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  3940. {# Cas 3 : rejeté par ce slot #}
  3941. {% elseif demachats[0].drapoChefprefu7 == 1 %}
  3942. <div class="val-badge refused">✗ rejeté</div>
  3943. <div class="val-date" align="left">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  3944. {% endif %}
  3945. {# boutons visibles pour le propriétaire actuel du slot
  3946. Branche médicale : drapoDRMEDICAL==1 requis
  3947. Branche standard : drapoLead==1 requis
  3948. drapoChefp==0 : personne n'a encore finalisé globalement #}
  3949. {% if user.username == usechef7.user.username and var!=2
  3950. and (
  3951. (categmedical == 1 and demachats[0].drapoDRMEDICAL == 1)
  3952. or
  3953. (categmedical != 1 and demachats[0].drapoLead == 1)
  3954. ) %}
  3955. <div class="val-btns">
  3956. {% if demachats[0].drapoChefp7 == 0 %}
  3957. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3958. <button id="signchef" class="btn-approve">✓ approuvé</button>
  3959. {% endif %}
  3960. {% if demachats[0].drapoChefprefu7 == 0 %}
  3961. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  3962. <a data-toggle="modal" data-backdrop="false"
  3963. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  3964. data-target="#chefpr">
  3965. <button class="btn-reject">✗ rejeté</button>
  3966. </a>
  3967. {% endif %}
  3968. </div>
  3969. {% endif %}
  3970. </div>
  3971. {% endif %}{# fin chefp7 #}
  3972. </div>
  3973. </div>
  3974. </div>
  3975. {# --------------------------------------------------------
  3976. DIRECTEUR DU DÉPARTEMENT
  3977. RÉTROCOMPATIBILITÉ :
  3978. - usedp is not null → ancienne DA (avant migration multi-DP) → slot unique
  3979. - usedp is null → nouvelle DA → slots usedp1..8 via grille auto-fit
  3980. val-grid gère automatiquement 1 à 8 slots actifs
  3981. sans aucune modification du HTML
  3982. -------------------------------------------------------- #}
  3983. <div class="val-section">
  3984. <div class="val-row">
  3985. <div class="val-label">
  3986. DR. Département
  3987. </div>
  3988. <div class="val-grid">
  3989. {# SLOT DP 1 #}
  3990. {% if usedp1 is not null %}
  3991. <div class="val-slot">
  3992. {# Ce slot est le valideur effectif #}
  3993. {% if demachats[0].drapoDP1 == 1 %}
  3994. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  3995. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  3996. {# drapoDP global==1 mais via un autre slot
  3997. → afficher le valideur effectif #}
  3998. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  3999. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4000. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4001. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4002. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4003. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4004. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4005. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4006. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4007. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4008. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4009. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4010. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4011. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4012. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4013. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4014. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4015. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4016. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4017. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4018. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4019. {# Rejeté #}
  4020. {% elseif demachats[0].drapoDPrefu1 == 1 %}
  4021. <div class="val-badge refused">✗ rejeté</div>
  4022. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4023. {% endif %}
  4024. {# Boutons — visibles pour le DP propriétaire du slot
  4025. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4026. {% if user.username == usedp1.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4027. <div class="val-btns">
  4028. {% if demachats[0].drapoDP1 == 0 %}
  4029. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4030. <button id="dp" class="btn-approve">✓ approuvé</button>
  4031. {% endif %}
  4032. {% if demachats[0].drapoDPrefu1 == 0 %}
  4033. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4034. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4035. {% endif %}
  4036. </div>
  4037. {% endif %}
  4038. </div>
  4039. {% endif %} {# fin DP1 #}
  4040. {# SLOT DP 2 #}
  4041. {% if usedp2 is not null %}
  4042. <div class="val-slot">
  4043. {# Ce slot est le valideur effectif #}
  4044. {% if demachats[0].drapoDP2 == 1 %}
  4045. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4046. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4047. {# drapoDP global==1 mais via un autre slot
  4048. → afficher le valideur effectif #}
  4049. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4050. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4051. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4052. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4053. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4054. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4055. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4056. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4057. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4058. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4059. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4060. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4061. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4062. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4063. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4064. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4065. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4066. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4067. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4068. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4069. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4070. {# Rejeté #}
  4071. {% elseif demachats[0].drapoDPrefu2 == 1 %}
  4072. <div class="val-badge refused">✗ rejeté</div>
  4073. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4074. {% endif %}
  4075. {# Boutons — visibles pour le DP propriétaire du slot
  4076. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4077. {% if user.username == usedp2.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4078. <div class="val-btns">
  4079. {% if demachats[0].drapoDP2 == 0 %}
  4080. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4081. <button id="dp" class="btn-approve">✓ approuvé</button>
  4082. {% endif %}
  4083. {% if demachats[0].drapoDPrefu2 == 0 %}
  4084. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4085. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4086. {% endif %}
  4087. </div>
  4088. {% endif %}
  4089. </div>
  4090. {% endif %} {# fin DP2 #}
  4091. {# SLOT DP 3 #}
  4092. {% if usedp3 is not null %}
  4093. <div class="val-slot">
  4094. {# Ce slot est le valideur effectif #}
  4095. {% if demachats[0].drapoDP3 == 1 %}
  4096. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4097. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4098. {# drapoDP global==1 mais via un autre slot
  4099. → afficher le valideur effectif #}
  4100. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4101. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4102. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4103. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4104. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4105. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4106. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4107. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4108. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4109. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4110. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4111. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4112. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4113. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4114. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4115. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4116. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4117. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4118. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4119. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4120. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4121. {# Rejeté #}
  4122. {% elseif demachats[0].drapoDPrefu3 == 1 %}
  4123. <div class="val-badge refused">✗ rejeté</div>
  4124. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4125. {% endif %}
  4126. {# Boutons — visibles pour le DP propriétaire du slot
  4127. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4128. {% if user.username == usedp3.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4129. <div class="val-btns">
  4130. {% if demachats[0].drapoDP3 == 0 %}
  4131. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4132. <button id="dp" class="btn-approve">✓ approuvé</button>
  4133. {% endif %}
  4134. {% if demachats[0].drapoDPrefu3 == 0 %}
  4135. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4136. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4137. {% endif %}
  4138. </div>
  4139. {% endif %}
  4140. </div>
  4141. {% endif %} {# fin DP3 #}
  4142. {# SLOT DP 4 #}
  4143. {% if usedp4 is not null %}
  4144. <div class="val-slot">
  4145. {# Ce slot est le valideur effectif #}
  4146. {% if demachats[0].drapoDP4 == 1 %}
  4147. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4148. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4149. {# drapoDP global==1 mais via un autre slot
  4150. → afficher le valideur effectif #}
  4151. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4152. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4153. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4154. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4155. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4156. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4157. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4158. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4159. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4160. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4161. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4162. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4163. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4164. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4165. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4166. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4167. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4168. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4169. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4170. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4171. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4172. {# Rejeté #}
  4173. {% elseif demachats[0].drapoDPrefu4 == 1 %}
  4174. <div class="val-badge refused">✗ rejeté</div>
  4175. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4176. {% endif %}
  4177. {# Boutons — visibles pour le DP propriétaire du slot
  4178. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4179. {% if user.username == usedp4.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4180. <div class="val-btns">
  4181. {% if demachats[0].drapoDP4 == 0 %}
  4182. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4183. <button id="dp" class="btn-approve">✓ approuvé</button>
  4184. {% endif %}
  4185. {% if demachats[0].drapoDPrefu4 == 0 %}
  4186. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4187. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4188. {% endif %}
  4189. </div>
  4190. {% endif %}
  4191. </div>
  4192. {% endif %} {# fin DP4 #}
  4193. {# SLOT DP 5 #}
  4194. {% if usedp5 is not null %}
  4195. <div class="val-slot">
  4196. {# Ce slot est le valideur effectif #}
  4197. {% if demachats[0].drapoDP5 == 1 %}
  4198. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4199. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4200. {# drapoDP global==1 mais via un autre slot
  4201. → afficher le valideur effectif #}
  4202. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4203. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4204. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4205. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4206. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4207. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4208. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4209. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4210. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4211. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4212. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4213. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4214. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4215. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4216. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4217. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4218. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4219. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4220. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4221. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4222. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4223. {# Rejeté #}
  4224. {% elseif demachats[0].drapoDPrefu5 == 1 %}
  4225. <div class="val-badge refused">✗ rejeté</div>
  4226. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4227. {% endif %}
  4228. {# Boutons — visibles pour le DP propriétaire du slot
  4229. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4230. {% if user.username == usedp5.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4231. <div class="val-btns">
  4232. {% if demachats[0].drapoDP5 == 0 %}
  4233. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4234. <button id="dp" class="btn-approve">✓ approuvé</button>
  4235. {% endif %}
  4236. {% if demachats[0].drapoDPrefu5 == 0 %}
  4237. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4238. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4239. {% endif %}
  4240. </div>
  4241. {% endif %}
  4242. </div>
  4243. {% endif %} {# fin DP5 #}
  4244. {# SLOT DP 6 #}
  4245. {% if usedp6 is not null %}
  4246. <div class="val-slot">
  4247. {# Ce slot est le valideur effectif #}
  4248. {% if demachats[0].drapoDP6 == 1 %}
  4249. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4250. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4251. {# drapoDP global==1 mais via un autre slot
  4252. → afficher le valideur effectif #}
  4253. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4254. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4255. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4256. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4257. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4258. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4259. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4260. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4261. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4262. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4263. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4264. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4265. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4266. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4267. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4268. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4269. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4270. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4271. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4272. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4273. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4274. {# Rejeté #}
  4275. {% elseif demachats[0].drapoDPrefu6 == 1 %}
  4276. <div class="val-badge refused">✗ rejeté</div>
  4277. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4278. {% endif %}
  4279. {# Boutons — visibles pour le DP propriétaire du slot
  4280. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4281. {% if user.username == usedp6.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4282. <div class="val-btns">
  4283. {% if demachats[0].drapoDP6 == 0 %}
  4284. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4285. <button id="dp" class="btn-approve">✓ approuvé</button>
  4286. {% endif %}
  4287. {% if demachats[0].drapoDPrefu6 == 0 %}
  4288. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4289. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4290. {% endif %}
  4291. </div>
  4292. {% endif %}
  4293. </div>
  4294. {% endif %} {# fin DP6 #}
  4295. {# SLOT DP 7 #}
  4296. {% if usedp7 is not null %}
  4297. <div class="val-slot">
  4298. {# Ce slot est le valideur effectif #}
  4299. {% if demachats[0].drapoDP7 == 1 %}
  4300. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4301. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4302. {# drapoDP global==1 mais via un autre slot
  4303. → afficher le valideur effectif #}
  4304. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4305. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4306. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4307. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4308. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4309. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4310. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4311. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4312. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4313. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4314. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4315. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4316. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4317. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4318. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4319. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4320. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4321. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4322. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4323. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4324. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4325. {# Rejeté #}
  4326. {% elseif demachats[0].drapoDPrefu7 == 1 %}
  4327. <div class="val-badge refused">✗ rejeté</div>
  4328. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4329. {% endif %}
  4330. {# Boutons — visibles pour le DP propriétaire du slot
  4331. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4332. {% if user.username == usedp7.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4333. <div class="val-btns">
  4334. {% if demachats[0].drapoDP7 == 0 %}
  4335. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4336. <button id="dp" class="btn-approve">✓ approuvé</button>
  4337. {% endif %}
  4338. {% if demachats[0].drapoDPrefu7 == 0 %}
  4339. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4340. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4341. {% endif %}
  4342. </div>
  4343. {% endif %}
  4344. </div>
  4345. {% endif %} {# fin DP7 #}
  4346. {# SLOT DP 8 #}
  4347. {% if usedp8 is not null %}
  4348. <div class="val-slot">
  4349. {# Ce slot est le valideur effectif #}
  4350. {% if demachats[0].drapoDP8 == 1 %}
  4351. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4352. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4353. {# drapoDP global==1 mais via un autre slot
  4354. → afficher le valideur effectif #}
  4355. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4356. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4357. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4358. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4359. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4360. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4361. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4362. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4363. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4364. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4365. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4366. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4367. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4368. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4369. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4370. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4371. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4372. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4373. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4374. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4375. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4376. {# Rejeté #}
  4377. {% elseif demachats[0].drapoDPrefu8 == 1 %}
  4378. <div class="val-badge refused">✗ rejeté</div>
  4379. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4380. {% endif %}
  4381. {# Boutons — visibles pour le DP propriétaire du slot
  4382. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4383. {% if user.username == usedp8.username and var!=2 and demachats[0].drapoChefp == 1 %}
  4384. <div class="val-btns">
  4385. {% if demachats[0].drapoDP8 == 0 %}
  4386. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4387. <button id="dp" class="btn-approve">✓ approuvé</button>
  4388. {% endif %}
  4389. {% if demachats[0].drapoDPrefu8 == 0 %}
  4390. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4391. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4392. {% endif %}
  4393. </div>
  4394. {% endif %}
  4395. </div>
  4396. {% endif %} {# fin DP8 #}
  4397. </div>
  4398. </div>
  4399. </div>{# fin section DP #}
  4400. {# --------------------------------------------------------
  4401. FINANCES / DAF
  4402. Même structure — slot unique
  4403. Label et rôle changent selon le montant :
  4404. < 2 500 000 FCFA → "Finances" (ROLE_DSCSC2)
  4405. ≥ 2 500 000 FCFA → "DAF" (ROLE_DSCSC)
  4406. drapoDSCSC porte le flag dans les deux cas
  4407. -------------------------------------------------------- #}
  4408. {% if demachats[0].montant < 2500000 %}
  4409. <div class="val-section">
  4410. <div class="val-row">
  4411. <div class="val-label">
  4412. Finances
  4413. </div>
  4414. <div class="val-grid">
  4415. <div class="val-slot">
  4416. {% if demachats[0].drapoDSCSC == 1 %}
  4417. <div class="val-badge signed">✓ <s><i>{{usedscsc.username}}</i></s></div>
  4418. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  4419. {% elseif demachats[0].drapoDSCSCrefu == 1 %}
  4420. <div class="val-badge refused">✗ rejeté</div>
  4421. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  4422. {% endif %}
  4423. {% if is_granted('ROLE_DSCSC2') and demachats[0].drapoDP == 1 and var!=2 %}
  4424. <div class="val-btns">
  4425. {% if demachats[0].drapoDSCSC ==0 %}
  4426. <img id="lods" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4427. <button id="dscsc" class="btn-approve">✓ approuvé</button>
  4428. {% endif %}
  4429. {% if demachats[0].drapoDSCSCrefu == 0 %}
  4430. <img id="lod" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4431. <button id="dscscrefu" class="btn-reject">✗ rejeté</button>
  4432. {% endif %}
  4433. </div>
  4434. {% endif %}
  4435. </div>
  4436. </div>
  4437. </div>
  4438. </div>
  4439. {% endif %}
  4440. {% if demachats[0].montant > 2499999 %}
  4441. <div class="val-section">
  4442. <div class="val-row">
  4443. <div class="val-label">
  4444. DAF
  4445. </div>
  4446. <div class="val-grid">
  4447. <div class="val-slot">
  4448. {% if demachats[0].drapoDSCSC == 1 %}
  4449. <div class="val-badge signed">✓ <s><i>{{usedscsc.username}}</i></s></div>
  4450. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  4451. {% elseif demachats[0].drapoDSCSCrefu == 1 %}
  4452. <div class="val-badge refused">✗ rejeté</div>
  4453. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  4454. {% endif %}
  4455. {% if is_granted('ROLE_DSCSC') and demachats[0].drapoDP == 1 and var!=2 %}
  4456. <div class="val-btns">
  4457. {% if demachats[0].drapoDSCSC ==0 %}
  4458. <img id="lods" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4459. <button id="dscsc" class="btn-approve">✓ approuvé</button>
  4460. {% endif %}
  4461. {% if demachats[0].drapoDSCSCrefu == 0 %}
  4462. <img id="lod" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4463. <button id="dscscrefu" class="btn-reject">✗ rejeté</button>
  4464. {% endif %}
  4465. </div>
  4466. {% endif %}
  4467. </div>
  4468. </div>
  4469. </div>
  4470. </div>
  4471. {% endif %}
  4472. {# --------------------------------------------------------
  4473. REPRÉSENTANT RÉSIDENT
  4474. Uniquement pour montant > 5 000 000 FCFA
  4475. Grisé et non cliquable si non requis
  4476. -------------------------------------------------------- #}
  4477. {% if demachats[0].montant > 4999999 %}
  4478. <div class="val-section">
  4479. <div class="val-row">
  4480. <div class="val-label">
  4481. Repr. Résident
  4482. </div>
  4483. <div class="val-grid">
  4484. <div class="val-slot">
  4485. {%if demachats[0].drapoRR == 1 %}
  4486. <div class="val-badge signed">✓ <s><i>{{userr.username}}</i></s></div>
  4487. <div class="val-date">{{demachats[0].dateRR|date('d-m-Y H\\h:i')}}</div>
  4488. {% elseif demachats[0].drapoRRrefu == 1 %}
  4489. <div class="val-badge refused">✗ rejeté</div>
  4490. <div class="val-date">{{demachats[0].dateRR|date('d-m-Y H\\h:i')}}</div>
  4491. {% endif %}
  4492. {% if is_granted('ROLE_RR') and demachats[0].drapoDSCSC == 1 and var!=2 %}
  4493. <div class="val-btns">
  4494. {% if demachats[0].drapoRR == 0 %}
  4495. <img id="loadr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4496. <button id="rr" class="btn-approve">✓ approuvé</button>
  4497. {% endif %}
  4498. {% if demachats[0].drapoRRrefu == 0 %}
  4499. <img id="loadrr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4500. <button id="rrrefu" class="btn-reject">✗ rejeté</button>
  4501. {% endif %}
  4502. </div>
  4503. {% endif %}
  4504. </div>
  4505. </div>
  4506. </div>
  4507. </div>
  4508. {% endif %}
  4509. </div>
  4510. {# fin code==13 #}
  4511. {% elseif code == 61 %}
  4512. <div class="val-circuit">
  4513. {# --------------------------------------------------------
  4514. RESPONSABLE RÉGIONAL
  4515. Affiché uniquement si DA hors Bamako
  4516. Slot unique — pas de grille multi-slots
  4517. -------------------------------------------------------- #}
  4518. {% if demachats[0].region is not null and demachats[0].region != "Bamako" %}
  4519. <div class="val-section">
  4520. <div class="val-row">
  4521. <div class="val-label">
  4522. Resp. Régional
  4523. </div>
  4524. <div class="val-grid">
  4525. <div class="val-slot">
  4526. {# Signé #}
  4527. {% if demachats[0].drapoRespReg == 1 %}
  4528. <div class="val-badge signed">
  4529. ✓ <s><i>{{userreg.username}}</i></s>
  4530. </div>
  4531. <div class="val-date">{{demachats[0].dateRespReg|date('d-m-Y H\\h:i')}}</div>
  4532. {# Rejeté #}
  4533. {% elseif demachats[0].drapoRespRegrefu == 1 %}
  4534. <div class="val-badge refused">✗ rejeté</div>
  4535. <div class="val-date">{{demachats[0].dateRespReg|date('d-m-Y H\\h:i')}}</div>
  4536. {% endif %}
  4537. {# Boutons — visibles uniquement pour le RespReg connecté
  4538. Condition : RespAcha a déjà validé (drapoRespAcha==1) #}
  4539. {% if usereg is not null %}
  4540. {% if user.username == usereg.username and demachats[0].drapoRespAcha == 1 and var!=2 %}
  4541. <div class="val-btns">
  4542. {% if demachats[0].drapoRespReg ==0 %}
  4543. <img id="loareg" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4544. <button id="signreg" class="btn-approve">✓ approuvé</button>
  4545. {% endif %}
  4546. {% if demachats[0].drapoRespRegrefu == 0 %}
  4547. <img id="loadreg" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4548. <button id="signregrefu" class="btn-reject">✗ rejeté</button>
  4549. {% endif %}
  4550. </div>
  4551. {% endif %}
  4552. {% endif %}
  4553. </div>
  4554. </div>
  4555. </div>
  4556. </div>
  4557. {% endif %}{# fin section resp.regional #}
  4558. {# --------------------------------------------------------
  4559. DIRECTEUR DU DÉPARTEMENT
  4560. RÉTROCOMPATIBILITÉ :
  4561. - usedp is not null → ancienne DA (avant migration multi-DP) → slot unique
  4562. - usedp is null → nouvelle DA → slots usedp1..8 via grille auto-fit
  4563. val-grid gère automatiquement 1 à 8 slots actifs
  4564. sans aucune modification du HTML
  4565. -------------------------------------------------------- #}
  4566. <div class="val-section">
  4567. <div class="val-row">
  4568. <div class="val-label">
  4569. DR. Département
  4570. </div>
  4571. <div class="val-grid">
  4572. {# SLOT DP 1 #}
  4573. {% if usedp1 is not null %}
  4574. <div class="val-slot">
  4575. {# Ce slot est le valideur effectif #}
  4576. {% if demachats[0].drapoDP1 == 1 %}
  4577. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4578. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4579. {# drapoDP global==1 mais via un autre slot
  4580. → afficher le valideur effectif #}
  4581. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4582. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4583. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4584. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4585. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4586. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4587. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4588. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4589. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4590. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4591. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4592. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4593. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4594. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4595. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4596. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4597. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4598. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4599. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4600. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4601. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4602. {# Rejeté #}
  4603. {% elseif demachats[0].drapoDPrefu1 == 1 %}
  4604. <div class="val-badge refused">✗ rejeté</div>
  4605. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4606. {% endif %}
  4607. {# Boutons — visibles pour le DP propriétaire du slot
  4608. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4609. {% if user.username == usedp1.username and var!=2
  4610. and (
  4611. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4612. or
  4613. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  4614. ) %}
  4615. <div class="val-btns">
  4616. {% if demachats[0].drapoDP1 == 0 %}
  4617. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4618. <button id="dp" class="btn-approve">✓ approuvé</button>
  4619. {% endif %}
  4620. {% if demachats[0].drapoDPrefu1 == 0 %}
  4621. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4622. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4623. {% endif %}
  4624. </div>
  4625. {% endif %}
  4626. </div>
  4627. {% endif %} {# fin DP1 #}
  4628. {# SLOT DP 2 #}
  4629. {% if usedp2 is not null %}
  4630. <div class="val-slot">
  4631. {# Ce slot est le valideur effectif #}
  4632. {% if demachats[0].drapoDP2 == 1 %}
  4633. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4634. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4635. {# drapoDP global==1 mais via un autre slot
  4636. → afficher le valideur effectif #}
  4637. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4638. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4639. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4640. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4641. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4642. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4643. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4644. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4645. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4646. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4647. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4648. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4649. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4650. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4651. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4652. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4653. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4654. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4655. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4656. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4657. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4658. {# Rejeté #}
  4659. {% elseif demachats[0].drapoDPrefu2 == 1 %}
  4660. <div class="val-badge refused">✗ rejeté</div>
  4661. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4662. {% endif %}
  4663. {# Boutons — visibles pour le DP propriétaire du slot
  4664. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4665. {% if user.username == usedp2.username and var!=2
  4666. and (
  4667. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4668. or
  4669. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  4670. ) %}
  4671. <div class="val-btns">
  4672. {% if demachats[0].drapoDP2 == 0 %}
  4673. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4674. <button id="dp" class="btn-approve">✓ approuvé</button>
  4675. {% endif %}
  4676. {% if demachats[0].drapoDPrefu2 == 0 %}
  4677. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4678. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4679. {% endif %}
  4680. </div>
  4681. {% endif %}
  4682. </div>
  4683. {% endif %} {# fin DP2 #}
  4684. {# SLOT DP 3 #}
  4685. {% if usedp3 is not null %}
  4686. <div class="val-slot">
  4687. {# Ce slot est le valideur effectif #}
  4688. {% if demachats[0].drapoDP3 == 1 %}
  4689. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4690. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4691. {# drapoDP global==1 mais via un autre slot
  4692. → afficher le valideur effectif #}
  4693. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4694. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4695. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4696. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4697. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4698. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4699. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4700. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4701. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4702. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4703. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4704. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4705. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4706. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4707. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4708. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4709. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4710. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4711. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4712. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4713. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4714. {# Rejeté #}
  4715. {% elseif demachats[0].drapoDPrefu3 == 1 %}
  4716. <div class="val-badge refused">✗ rejeté</div>
  4717. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4718. {% endif %}
  4719. {# Boutons — visibles pour le DP propriétaire du slot
  4720. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4721. {% if user.username == usedp3.username and var!=2 and (
  4722. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4723. or
  4724. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  4725. ) %}
  4726. <div class="val-btns">
  4727. {% if demachats[0].drapoDP3 == 0 %}
  4728. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4729. <button id="dp" class="btn-approve">✓ approuvé</button>
  4730. {% endif %}
  4731. {% if demachats[0].drapoDPrefu3 == 0 %}
  4732. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4733. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4734. {% endif %}
  4735. </div>
  4736. {% endif %}
  4737. </div>
  4738. {% endif %} {# fin DP3 #}
  4739. {# SLOT DP 4 #}
  4740. {% if usedp4 is not null %}
  4741. <div class="val-slot">
  4742. {# Ce slot est le valideur effectif #}
  4743. {% if demachats[0].drapoDP4 == 1 %}
  4744. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4745. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4746. {# drapoDP global==1 mais via un autre slot
  4747. → afficher le valideur effectif #}
  4748. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4749. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4750. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4751. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4752. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4753. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4754. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4755. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4756. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4757. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4758. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4759. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4760. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4761. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4762. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4763. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4764. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4765. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4766. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4767. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4768. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4769. {# Rejeté #}
  4770. {% elseif demachats[0].drapoDPrefu4 == 1 %}
  4771. <div class="val-badge refused">✗ rejeté</div>
  4772. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4773. {% endif %}
  4774. {# Boutons — visibles pour le DP propriétaire du slot
  4775. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4776. {% if user.username == usedp4.username and var!=2 and (
  4777. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4778. or
  4779. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  4780. ) %}
  4781. <div class="val-btns">
  4782. {% if demachats[0].drapoDP4 == 0 %}
  4783. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4784. <button id="dp" class="btn-approve">✓ approuvé</button>
  4785. {% endif %}
  4786. {% if demachats[0].drapoDPrefu4 == 0 %}
  4787. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4788. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4789. {% endif %}
  4790. </div>
  4791. {% endif %}
  4792. </div>
  4793. {% endif %} {# fin DP4 #}
  4794. {# SLOT DP 5 #}
  4795. {% if usedp5 is not null %}
  4796. <div class="val-slot">
  4797. {# Ce slot est le valideur effectif #}
  4798. {% if demachats[0].drapoDP5 == 1 %}
  4799. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4800. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4801. {# drapoDP global==1 mais via un autre slot
  4802. → afficher le valideur effectif #}
  4803. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4804. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4805. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4806. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4807. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4808. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4809. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4810. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4811. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4812. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4813. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4814. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4815. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4816. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4817. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4818. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4819. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4820. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4821. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4822. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4823. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4824. {# Rejeté #}
  4825. {% elseif demachats[0].drapoDPrefu5 == 1 %}
  4826. <div class="val-badge refused">✗ rejeté</div>
  4827. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4828. {% endif %}
  4829. {# Boutons — visibles pour le DP propriétaire du slot
  4830. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4831. {% if user.username == usedp5.username and var!=2 and (
  4832. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4833. or
  4834. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  4835. ) %}
  4836. <div class="val-btns">
  4837. {% if demachats[0].drapoDP5 == 0 %}
  4838. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4839. <button id="dp" class="btn-approve">✓ approuvé</button>
  4840. {% endif %}
  4841. {% if demachats[0].drapoDPrefu5 == 0 %}
  4842. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4843. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4844. {% endif %}
  4845. </div>
  4846. {% endif %}
  4847. </div>
  4848. {% endif %} {# fin DP5 #}
  4849. {# SLOT DP 6 #}
  4850. {% if usedp6 is not null %}
  4851. <div class="val-slot">
  4852. {# Ce slot est le valideur effectif #}
  4853. {% if demachats[0].drapoDP6 == 1 %}
  4854. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4855. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4856. {# drapoDP global==1 mais via un autre slot
  4857. → afficher le valideur effectif #}
  4858. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4859. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4860. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4861. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4862. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4863. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4864. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4865. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4866. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4867. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4868. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4869. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4870. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4871. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4872. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4873. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4874. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4875. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4876. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4877. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4878. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4879. {# Rejeté #}
  4880. {% elseif demachats[0].drapoDPrefu6 == 1 %}
  4881. <div class="val-badge refused">✗ rejeté</div>
  4882. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4883. {% endif %}
  4884. {# Boutons — visibles pour le DP propriétaire du slot
  4885. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4886. {% if user.username == usedp6.username and var!=2 and (
  4887. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4888. or
  4889. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  4890. ) %}
  4891. <div class="val-btns">
  4892. {% if demachats[0].drapoDP6 == 0 %}
  4893. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4894. <button id="dp" class="btn-approve">✓ approuvé</button>
  4895. {% endif %}
  4896. {% if demachats[0].drapoDPrefu6 == 0 %}
  4897. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4898. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4899. {% endif %}
  4900. </div>
  4901. {% endif %}
  4902. </div>
  4903. {% endif %} {# fin DP6 #}
  4904. {# SLOT DP 7 #}
  4905. {% if usedp7 is not null %}
  4906. <div class="val-slot">
  4907. {# Ce slot est le valideur effectif #}
  4908. {% if demachats[0].drapoDP7 == 1 %}
  4909. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4910. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4911. {# drapoDP global==1 mais via un autre slot
  4912. → afficher le valideur effectif #}
  4913. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4914. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4915. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4916. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4917. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4918. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4919. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4920. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4921. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4922. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4923. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4924. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4925. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4926. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4927. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4928. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4929. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4930. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4931. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP8 == 1 %}
  4932. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4933. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4934. {# Rejeté #}
  4935. {% elseif demachats[0].drapoDPrefu7 == 1 %}
  4936. <div class="val-badge refused">✗ rejeté</div>
  4937. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4938. {% endif %}
  4939. {# Boutons — visibles pour le DP propriétaire du slot
  4940. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4941. {% if user.username == usedp7.username and var!=2 and (
  4942. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4943. or
  4944. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  4945. ) %}
  4946. <div class="val-btns">
  4947. {% if demachats[0].drapoDP7 == 0 %}
  4948. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4949. <button id="dp" class="btn-approve">✓ approuvé</button>
  4950. {% endif %}
  4951. {% if demachats[0].drapoDPrefu7 == 0 %}
  4952. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  4953. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  4954. {% endif %}
  4955. </div>
  4956. {% endif %}
  4957. </div>
  4958. {% endif %} {# fin DP7 #}
  4959. {# SLOT DP 8 #}
  4960. {% if usedp8 is not null %}
  4961. <div class="val-slot">
  4962. {# Ce slot est le valideur effectif #}
  4963. {% if demachats[0].drapoDP8 == 1 %}
  4964. <div class="val-badge signed">✓ <s><i>{{signeDP8.username}}</i></s></div>
  4965. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4966. {# drapoDP global==1 mais via un autre slot
  4967. → afficher le valideur effectif #}
  4968. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP1 == 1 %}
  4969. <div class="val-badge signed">✓ <s><i>{{signeDP1.username}}</i></s></div>
  4970. <div class="val-date">{{demachats[0].dateDP1|date('d-m-Y H\\h:i')}}</div>
  4971. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP2 == 1 %}
  4972. <div class="val-badge signed">✓ <s><i>{{signeDP2.username}}</i></s></div>
  4973. <div class="val-date">{{demachats[0].dateDP2|date('d-m-Y H\\h:i')}}</div>
  4974. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP3 == 1 %}
  4975. <div class="val-badge signed">✓ <s><i>{{signeDP3.username}}</i></s></div>
  4976. <div class="val-date">{{demachats[0].dateDP3|date('d-m-Y H\\h:i')}}</div>
  4977. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP4 == 1 %}
  4978. <div class="val-badge signed">✓ <s><i>{{signeDP4.username}}</i></s></div>
  4979. <div class="val-date">{{demachats[0].dateDP4|date('d-m-Y H\\h:i')}}</div>
  4980. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP5 == 1 %}
  4981. <div class="val-badge signed">✓ <s><i>{{signeDP5.username}}</i></s></div>
  4982. <div class="val-date">{{demachats[0].dateDP5|date('d-m-Y H\\h:i')}}</div>
  4983. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP6 == 1 %}
  4984. <div class="val-badge signed">✓ <s><i>{{signeDP6.username}}</i></s></div>
  4985. <div class="val-date">{{demachats[0].dateDP6|date('d-m-Y H\\h:i')}}</div>
  4986. {% elseif demachats[0].drapoDP == 1 and demachats[0].drapoDP7 == 1 %}
  4987. <div class="val-badge signed">✓ <s><i>{{signeDP7.username}}</i></s></div>
  4988. <div class="val-date">{{demachats[0].dateDP7|date('d-m-Y H\\h:i')}}</div>
  4989. {# Rejeté #}
  4990. {% elseif demachats[0].drapoDPrefu8 == 1 %}
  4991. <div class="val-badge refused">✗ rejeté</div>
  4992. <div class="val-date">{{demachats[0].dateDP8|date('d-m-Y H\\h:i')}}</div>
  4993. {% endif %}
  4994. {# Boutons — visibles pour le DP propriétaire du slot
  4995. Conditions : chefs validés + lead validé + DSCSC pas encore passé #}
  4996. {% if user.username == usedp8.username and var!=1 and (
  4997. (demachats[0].region != "Bamako" and demachats[0].drapoRespReg == 1)
  4998. or
  4999. (demachats[0].region == "Bamako" and demachats[0].drapoRespAcha == 1)
  5000. ) %}
  5001. <div class="val-btns">
  5002. {% if demachats[0].drapoDP8 == 0 %}
  5003. <img id="loadp" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5004. <button id="dp" class="btn-approve">✓ approuvé</button>
  5005. {% endif %}
  5006. {% if demachats[0].drapoDPrefu8 == 0 %}
  5007. <img id="loadpr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5008. <button id="dprefu" class="btn-reject">✗ rejeté</button>
  5009. {% endif %}
  5010. </div>
  5011. {% endif %}
  5012. </div>
  5013. {% endif %} {# fin DP8 #}
  5014. </div>
  5015. </div>
  5016. </div>{# fin section DP #}
  5017. {# --------------------------------------------------------
  5018. CHEFS DE PROJET
  5019. RÈGLE MÉTIER — slots séparés intentionnellement (voir commentaires généraux)
  5020. Branche standard : prérequis drapoDP==1
  5021. Pour chaque slot :
  5022. - drapoChefpX==1 → ce slot est le valideur effectif → afficher signechefpX
  5023. - drapoChefp==1 and drapoChefpY==1 → un autre slot a validé → afficher signechefpY
  5024. - drapoChefp==0 → en attente ou bloqué
  5025. UN SEUL drapoChefpX sera à 1 sur une même DA (unicité par projet/bailleur)
  5026. -------------------------------------------------------- #}
  5027. <div class="val-section">
  5028. <div class="val-row">
  5029. <div class="val-label"> Chef de projet </div>
  5030. <div class="val-grid">
  5031. {# SLOT CHEF 1 #}
  5032. {% if usechef1 is not null %}
  5033. <div class="val-slot">
  5034. {# Sous-titre : nom du projet/bailleur associé à ce slot #}
  5035. {# Cas 1 : ce slot est le valideur effectif #}
  5036. {% if demachats[0].drapoChefp1 == 1 %}
  5037. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  5038. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5039. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  5040. → chercher le valideur effectif parmi les autres slots
  5041. → UN SEUL drapoChefpX sera à 1 #}
  5042. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  5043. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  5044. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5045. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  5046. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  5047. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5048. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  5049. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  5050. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5051. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  5052. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  5053. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5054. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  5055. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  5056. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5057. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  5058. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  5059. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5060. {# Cas 3 : rejeté par ce slot #}
  5061. {% elseif demachats[0].drapoChefprefu1 == 1 %}
  5062. <div class="val-badge refused">✗ rejeté</div>
  5063. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5064. {% endif %}
  5065. {# boutons visibles pour le propriétaire actuel du slot
  5066. Branche médicale : drapoDRMEDICAL==1 requis
  5067. Branche standard : drapoLead==1 requis
  5068. drapoChefp==0 : personne n'a encore finalisé globalement #}
  5069. {% if user.username == usechef1.user.username and var!=2 and demachats[0].drapoDP == 1 %}
  5070. <div class="val-btns">
  5071. {% if demachats[0].drapoChefp1 == 0 %}
  5072. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5073. <button id="signchef" class="btn-approve">✓ approuvé</button>
  5074. {% endif %}
  5075. {% if demachats[0].drapoChefprefu1 == 0 %}
  5076. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5077. <a data-toggle="modal" data-backdrop="false"
  5078. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  5079. data-target="#chefpr">
  5080. <button class="btn-reject">✗ rejeté</button>
  5081. </a>
  5082. {% endif %}
  5083. </div>
  5084. {% endif %}
  5085. </div>
  5086. {% endif %}{# fin chefp1 #}
  5087. {# SLOT CHEF 2 — même structure que slot 1, slot indépendant
  5088. car projet/bailleur distinct et règle de réattribution identique #}
  5089. {% if usechef2 is not null %}
  5090. <div class="val-slot">
  5091. {# Cas 1 : ce slot est le valideur effectif #}
  5092. {% if demachats[0].drapoChefp2 == 1 %}
  5093. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  5094. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5095. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  5096. → chercher le valideur effectif parmi les autres slots
  5097. → UN SEUL drapoChefpX sera à 1 #}
  5098. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  5099. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  5100. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5101. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  5102. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  5103. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5104. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  5105. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  5106. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5107. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  5108. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  5109. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5110. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  5111. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  5112. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5113. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  5114. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  5115. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5116. {# Cas 3 : rejeté par ce slot #}
  5117. {% elseif demachats[0].drapoChefprefu2 == 1 %}
  5118. <div class="val-badge refused">✗ rejeté</div>
  5119. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5120. {% endif %}
  5121. {# boutons visibles pour le propriétaire actuel du slot
  5122. Branche médicale : drapoDRMEDICAL==1 requis
  5123. Branche standard : drapoLead==1 requis
  5124. drapoChefp==0 : personne n'a encore finalisé globalement #}
  5125. {% if user.username == usechef2.user.username and var!=2 and demachats[0].drapoDP == 1 %}
  5126. <div class="val-btns">
  5127. {% if demachats[0].drapoChefp2 == 0 %}
  5128. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5129. <button id="signchef" class="btn-approve">✓ approuvé</button>
  5130. {% endif %}
  5131. {% if demachats[0].drapoChefprefu2 == 0 %}
  5132. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5133. <a data-toggle="modal" data-backdrop="false"
  5134. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  5135. data-target="#chefpr">
  5136. <button class="btn-reject">✗ rejeté</button>
  5137. </a>
  5138. {% endif %}
  5139. </div>
  5140. {% endif %}
  5141. </div>
  5142. {% endif %}{# fin chefp2 #}
  5143. {# SLOTS CHEF 3 #}
  5144. {% if usechef3 is not null %}
  5145. <div class="val-slot">
  5146. {# Cas 1 : ce slot est le valideur effectif #}
  5147. {% if demachats[0].drapoChefp3 == 1 %}
  5148. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  5149. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5150. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  5151. → chercher le valideur effectif parmi les autres slots
  5152. → UN SEUL drapoChefpX sera à 1 #}
  5153. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  5154. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  5155. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5156. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  5157. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  5158. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5159. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  5160. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  5161. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5162. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  5163. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  5164. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5165. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  5166. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  5167. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5168. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  5169. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  5170. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5171. {# Cas 3 : rejeté par ce slot #}
  5172. {% elseif demachats[0].drapoChefprefu3 == 1 %}
  5173. <div class="val-badge refused">✗ rejeté</div>
  5174. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5175. {% endif %}
  5176. {# boutons visibles pour le propriétaire actuel du slot
  5177. Branche médicale : drapoDRMEDICAL==1 requis
  5178. Branche standard : drapoLead==1 requis
  5179. drapoChefp==0 : personne n'a encore finalisé globalement #}
  5180. {% if user.username == usechef3.user.username and var!=2 and demachats[0].drapoDP == 1 %}
  5181. <div class="val-btns">
  5182. {% if demachats[0].drapoChefp3 == 0 %}
  5183. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5184. <button id="signchef" class="btn-approve">✓ approuvé</button>
  5185. {% endif %}
  5186. {% if demachats[0].drapoChefprefu3 == 0 %}
  5187. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5188. <a data-toggle="modal" data-backdrop="false"
  5189. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  5190. data-target="#chefpr">
  5191. <button class="btn-reject">✗ rejeté</button>
  5192. </a>
  5193. {% endif %}
  5194. </div>
  5195. {% endif %}
  5196. </div>
  5197. {% endif %}{# fin chefp3 #}
  5198. {# SLOTS CHEF 4 #}
  5199. {% if usechef4 is not null %}
  5200. <div class="val-slot">
  5201. {# Cas 1 : ce slot est le valideur effectif #}
  5202. {% if demachats[0].drapoChefp4 == 1 %}
  5203. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  5204. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5205. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  5206. → chercher le valideur effectif parmi les autres slots
  5207. → UN SEUL drapoChefpX sera à 1 #}
  5208. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  5209. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  5210. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5211. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  5212. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  5213. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5214. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  5215. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  5216. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5217. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  5218. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  5219. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5220. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  5221. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  5222. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5223. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  5224. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  5225. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5226. {# Cas 3 : rejeté par ce slot #}
  5227. {% elseif demachats[0].drapoChefprefu4 == 1 %}
  5228. <div class="val-badge refused">✗ rejeté</div>
  5229. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5230. {% endif %}
  5231. {# boutons visibles pour le propriétaire actuel du slot
  5232. Branche médicale : drapoDRMEDICAL==1 requis
  5233. Branche standard : drapoLead==1 requis
  5234. drapoChefp==0 : personne n'a encore finalisé globalement #}
  5235. {% if user.username == usechef4.user.username and var!=2 and demachats[0].drapoDP == 1 %}
  5236. <div class="val-btns">
  5237. {% if demachats[0].drapoChefp4 == 0 %}
  5238. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5239. <button id="signchef" class="btn-approve">✓ approuvé</button>
  5240. {% endif %}
  5241. {% if demachats[0].drapoChefprefu4 == 0 %}
  5242. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5243. <a data-toggle="modal" data-backdrop="false"
  5244. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  5245. data-target="#chefpr">
  5246. <button class="btn-reject">✗ rejeté</button>
  5247. </a>
  5248. {% endif %}
  5249. </div>
  5250. {% endif %}
  5251. </div>
  5252. {% endif %}{# fin chefp4 #}
  5253. {# SLOTS CHEF 5 #}
  5254. {% if usechef5 is not null %}
  5255. <div class="val-slot">
  5256. {# Cas 1 : ce slot est le valideur effectif #}
  5257. {% if demachats[0].drapoChefp5 == 1 %}
  5258. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  5259. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5260. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  5261. → chercher le valideur effectif parmi les autres slots
  5262. → UN SEUL drapoChefpX sera à 1 #}
  5263. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  5264. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  5265. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5266. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  5267. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  5268. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5269. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  5270. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  5271. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5272. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  5273. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  5274. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5275. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  5276. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  5277. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5278. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  5279. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  5280. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5281. {# Cas 3 : rejeté par ce slot #}
  5282. {% elseif demachats[0].drapoChefprefu5 == 1 %}
  5283. <div class="val-badge refused">✗ rejeté</div>
  5284. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5285. {% endif %}
  5286. {# boutons visibles pour le propriétaire actuel du slot
  5287. Branche médicale : drapoDRMEDICAL==1 requis
  5288. Branche standard : drapoLead==1 requis
  5289. drapoChefp==0 : personne n'a encore finalisé globalement #}
  5290. {% if user.username == usechef5.user.username and var!=2 and demachats[0].drapoDP == 1 %}
  5291. <div class="val-btns">
  5292. {% if demachats[0].drapoChefp5 == 0 %}
  5293. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5294. <button id="signchef" class="btn-approve">✓ approuvé</button>
  5295. {% endif %}
  5296. {% if demachats[0].drapoChefprefu5 == 0 %}
  5297. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5298. <a data-toggle="modal" data-backdrop="false"
  5299. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  5300. data-target="#chefpr">
  5301. <button class="btn-reject">✗ rejeté</button>
  5302. </a>
  5303. {% endif %}
  5304. </div>
  5305. {% endif %}
  5306. </div>
  5307. {% endif %}{# fin chefp5 #}
  5308. {# SLOTS CHEF 6 #}
  5309. {% if usechef6 is not null %}
  5310. <div class="val-slot">
  5311. {# Cas 1 : ce slot est le valideur effectif #}
  5312. {% if demachats[0].drapoChefp6 == 1 %}
  5313. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  5314. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5315. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  5316. → chercher le valideur effectif parmi les autres slots
  5317. → UN SEUL drapoChefpX sera à 1 #}
  5318. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  5319. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  5320. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5321. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  5322. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  5323. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5324. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  5325. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  5326. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5327. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  5328. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  5329. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5330. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  5331. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  5332. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5333. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp7 == 1 %}
  5334. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  5335. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5336. {# Cas 3 : rejeté par ce slot #}
  5337. {% elseif demachats[0].drapoChefprefu6 == 1 %}
  5338. <div class="val-badge refused">✗ rejeté</div>
  5339. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5340. {% endif %}
  5341. {# boutons visibles pour le propriétaire actuel du slot
  5342. Branche médicale : drapoDRMEDICAL==1 requis
  5343. Branche standard : drapoLead==1 requis
  5344. drapoChefp==0 : personne n'a encore finalisé globalement #}
  5345. {% if user.username == usechef6.user.username and var!=2 and demachats[0].drapoDP == 1%}
  5346. <div class="val-btns">
  5347. {% if demachats[0].drapoChefp6 == 0 %}
  5348. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5349. <button id="signchef" class="btn-approve">✓ approuvé</button>
  5350. {% endif %}
  5351. {% if demachats[0].drapoChefprefu6 == 0 %}
  5352. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5353. <a data-toggle="modal" data-backdrop="false"
  5354. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  5355. data-target="#chefpr">
  5356. <button class="btn-reject">✗ rejeté</button>
  5357. </a>
  5358. {% endif %}
  5359. </div>
  5360. {% endif %}
  5361. </div>
  5362. {% endif %}{# fin chefp6 #}
  5363. {# SLOTS CHEF 7 #}
  5364. {% if usechef7 is not null %}
  5365. <div class="val-slot">
  5366. {# Cas 1 : ce slot est le valideur effectif #}
  5367. {% if demachats[0].drapoChefp7 == 1 %}
  5368. <div class="val-badge signed">✓ <s><i>{{signechefp7.username}}</i></s></div>
  5369. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5370. {# Cas 2 : drapoChefp global==1 mais via un autre slot
  5371. → chercher le valideur effectif parmi les autres slots
  5372. → UN SEUL drapoChefpX sera à 1 #}
  5373. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp1 == 1 %}
  5374. <div class="val-badge signed">✓ <s><i>{{signechefp1.username}}</i></s></div>
  5375. <div class="val-date">{{demachats[0].dateChefp1|date('d-m-Y H\\h:i')}}</div>
  5376. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp2 == 1 %}
  5377. <div class="val-badge signed">✓ <s><i>{{signechefp2.username}}</i></s></div>
  5378. <div class="val-date">{{demachats[0].dateChefp2|date('d-m-Y H\\h:i')}}</div>
  5379. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp3 == 1 %}
  5380. <div class="val-badge signed">✓ <s><i>{{signechefp3.username}}</i></s></div>
  5381. <div class="val-date">{{demachats[0].dateChefp3|date('d-m-Y H\\h:i')}}</div>
  5382. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp4 == 1 %}
  5383. <div class="val-badge signed">✓ <s><i>{{signechefp4.username}}</i></s></div>
  5384. <div class="val-date">{{demachats[0].dateChefp4|date('d-m-Y H\\h:i')}}</div>
  5385. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp5 == 1 %}
  5386. <div class="val-badge signed">✓ <s><i>{{signechefp5.username}}</i></s></div>
  5387. <div class="val-date">{{demachats[0].dateChefp5|date('d-m-Y H\\h:i')}}</div>
  5388. {% elseif demachats[0].drapoChefp == 1 and demachats[0].drapoChefp6 == 1 %}
  5389. <div class="val-badge signed">✓ <s><i>{{signechefp6.username}}</i></s></div>
  5390. <div class="val-date">{{demachats[0].dateChefp6|date('d-m-Y H\\h:i')}}</div>
  5391. {# Cas 3 : rejeté par ce slot #}
  5392. {% elseif demachats[0].drapoChefprefu7 == 1 %}
  5393. <div class="val-badge refused">✗ rejeté</div>
  5394. <div class="val-date">{{demachats[0].dateChefp7|date('d-m-Y H\\h:i')}}</div>
  5395. {% endif %}
  5396. {# boutons visibles pour le propriétaire actuel du slot
  5397. Branche médicale : drapoDRMEDICAL==1 requis
  5398. Branche standard : drapoLead==1 requis
  5399. drapoChefp==0 : personne n'a encore finalisé globalement #}
  5400. {% if user.username == usechef7.user.username and var!=2 and demachats[0].drapoDP == 1 %}
  5401. <div class="val-btns">
  5402. {% if demachats[0].drapoChefp7 == 0 %}
  5403. <img id="imgchef" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5404. <button id="signchef" class="btn-approve">✓ approuvé</button>
  5405. {% endif %}
  5406. {% if demachats[0].drapoChefprefu7 == 0 %}
  5407. <img id="imgche" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5408. <a data-toggle="modal" data-backdrop="false"
  5409. href="{{path('raison_refu', {'id': demachats[0].id})}}"
  5410. data-target="#chefpr">
  5411. <button class="btn-reject">✗ rejeté</button>
  5412. </a>
  5413. {% endif %}
  5414. </div>
  5415. {% endif %}
  5416. </div>
  5417. {% endif %}{# fin chefp7 #}
  5418. </div>
  5419. </div>
  5420. </div>
  5421. {% if demachats[0].montant < 2500000 %}
  5422. <div class="val-section">
  5423. <div class="val-row">
  5424. <div class="val-label">
  5425. Finances
  5426. </div>
  5427. <div class="val-grid">
  5428. <div class="val-slot">
  5429. {% if demachats[0].drapoDSCSC == 1 %}
  5430. <div class="val-badge signed">✓ <s><i>{{usedscsc.username}}</i></s></div>
  5431. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  5432. {% elseif demachats[0].drapoDSCSCrefu == 1 %}
  5433. <div class="val-badge refused">✗ rejeté</div>
  5434. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  5435. {% endif %}
  5436. {% if is_granted('ROLE_DSCSC2') and demachats[0].drapoDP == 1 and var!=2 %}
  5437. <div class="val-btns">
  5438. {% if demachats[0].drapoDSCSC ==0 %}
  5439. <img id="lods" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5440. <button id="dscsc" class="btn-approve">✓ approuvé</button>
  5441. {% endif %}
  5442. {% if demachats[0].drapoDSCSCrefu == 0 %}
  5443. <img id="lod" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5444. <button id="dscscrefu" class="btn-reject">✗ rejeté</button>
  5445. {% endif %}
  5446. </div>
  5447. {% endif %}
  5448. </div>
  5449. </div>
  5450. </div>
  5451. </div>
  5452. {% endif %}
  5453. {% if demachats[0].montant > 2499999 %}
  5454. <div class="val-section">
  5455. <div class="val-row">
  5456. <div class="val-label">
  5457. DAF
  5458. </div>
  5459. <div class="val-grid">
  5460. <div class="val-slot">
  5461. {% if demachats[0].drapoDSCSC == 1 %}
  5462. <div class="val-badge signed">✓ <s><i>{{usedscsc.username}}</i></s></div>
  5463. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  5464. {% elseif demachats[0].drapoDSCSCrefu == 1 %}
  5465. <div class="val-badge refused">✗ rejeté</div>
  5466. <div class="val-date">{{demachats[0].dateDSCSC|date('d-m-Y H\\h:i')}}</div>
  5467. {% endif %}
  5468. {% if is_granted('ROLE_DSCSC') and demachats[0].drapoDP == 1 and var!=2 %}
  5469. <div class="val-btns">
  5470. {% if demachats[0].drapoDSCSC ==0 %}
  5471. <img id="lods" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5472. <button id="dscsc" class="btn-approve">✓ approuvé</button>
  5473. {% endif %}
  5474. {% if demachats[0].drapoDSCSCrefu == 0 %}
  5475. <img id="lod" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5476. <button id="dscscrefu" class="btn-reject">✗ rejeté</button>
  5477. {% endif %}
  5478. </div>
  5479. {% endif %}
  5480. </div>
  5481. </div>
  5482. </div>
  5483. </div>
  5484. {% endif %}
  5485. {# --------------------------------------------------------
  5486. REPRÉSENTANT RÉSIDENT
  5487. Uniquement pour montant > 5 000 000 FCFA
  5488. Grisé et non cliquable si non requis
  5489. -------------------------------------------------------- #}
  5490. {% if demachats[0].montant > 4999999 %}
  5491. <div class="val-section">
  5492. <div class="val-row">
  5493. <div class="val-label">
  5494. Repr. Résident
  5495. </div>
  5496. <div class="val-grid">
  5497. <div class="val-slot">
  5498. {%if demachats[0].drapoRR == 1 %}
  5499. <div class="val-badge signed">✓ <s><i>{{userr.username}}</i></s></div>
  5500. <div class="val-date">{{demachats[0].dateRR|date('d-m-Y H\\h:i')}}</div>
  5501. {% elseif demachats[0].drapoRRrefu == 1 %}
  5502. <div class="val-badge refused">✗ rejeté</div>
  5503. <div class="val-date">{{demachats[0].dateRR|date('d-m-Y H\\h:i')}}</div>
  5504. {% endif %}
  5505. {% if is_granted('ROLE_RR') and demachats[0].drapoDSCSC == 1 and var!=2 %}
  5506. <div class="val-btns">
  5507. {% if demachats[0].drapoRR == 0 %}
  5508. <img id="loadr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5509. <button id="rr" class="btn-approve">✓ approuvé</button>
  5510. {% endif %}
  5511. {% if demachats[0].drapoRRrefu == 0 %}
  5512. <img id="loadrr" src="{{ asset('img/loders.gif') }}" width="40" height="30"/>
  5513. <button id="rrrefu" class="btn-reject">✗ rejeté</button>
  5514. {% endif %}
  5515. </div>
  5516. {% endif %}
  5517. </div>
  5518. </div>
  5519. </div>
  5520. </div>
  5521. {% endif %}
  5522. </div>
  5523. {# fin code==61 #}
  5524. {% endif %}
  5525. {% endif %}
  5526. <p>&nbsp;</p>
  5527. {% if demachatrefus[0] is defined %}
  5528. <div class="table-responsive" style="width:90%; margin:auto;">
  5529. <table class="table table-bordered table-hover">
  5530. <caption class="text-center">
  5531. <h4>Articles du D.A rejeté par le chef de projet</h4>
  5532. </caption>
  5533. <thead class="thead-light">
  5534. <tr>
  5535. <th class="text-center">Designation Article</th>
  5536. <th class="text-center">Qte Demandée</th>
  5537. <th class="text-center">Prix Unitaire</th>
  5538. <th class="text-center">Centre de cout</th>
  5539. <th class="text-center">Bailleur</th>
  5540. <th class="text-center">Raison du rejet</th>
  5541. <th class="text-center">Chef de Projet</th>
  5542. </tr>
  5543. </thead>
  5544. <tbody>
  5545. {% for demachatrefu in demachatrefus %}
  5546. <tr>
  5547. <td>{{ demachatrefu.designation }}</td>
  5548. <td>{{ demachatrefu.quantDemande }}</td>
  5549. <td>{{ demachatrefu.prixU }}</td>
  5550. <td>{{ demachatrefu.centreCout }}</td>
  5551. <td>{{ demachatrefu.nomProjet }}</td>
  5552. <td>{{ demachatrefu.raisonRefu }}</td>
  5553. <td>{{ demachatrefu.signeChef.nom }} {{ demachatrefu.signeChef.prenom }}</td>
  5554. </tr>
  5555. {% endfor %}
  5556. </tbody>
  5557. </table>
  5558. </div>
  5559. {% endif %}
  5560. <p>&nbsp;</p>
  5561. </div>
  5562. </div>
  5563. <div class="modal fade monModal" id="mod" tabindex="-1" role="dialog" aria-labelledby="infLabel" aria-hidden="true">
  5564. <div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable" role="document">
  5565. <div class="modal-content">
  5566. <!-- HEADER -->
  5567. <div class="modal-header">
  5568. <h5 class="modal-title" id="infLabel">Observation </h5>
  5569. <button type="button" class="close" data-dismiss="modal">
  5570. <span>&times;</span>
  5571. </button>
  5572. </div>
  5573. <!-- BODY -->
  5574. <div class="modal-body">
  5575. </div>
  5576. </div>
  5577. </div>
  5578. </div>
  5579. <div class="modal fade monModal" id="contrat" tabindex="-1" role="dialog" aria-labelledby="infLabel" aria-hidden="true">
  5580. <div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable" role="document">
  5581. <div class="modal-content">
  5582. <!-- HEADER -->
  5583. <div class="modal-header">
  5584. <h5 class="modal-title" id="infLabel">Contrat cadre</h5>
  5585. <button type="button" class="close" data-dismiss="modal">
  5586. <span>&times;</span>
  5587. </button>
  5588. </div>
  5589. <!-- BODY -->
  5590. <div class="modal-body">
  5591. </div>
  5592. </div>
  5593. </div>
  5594. </div>
  5595. <div class="modal fade monModal" id="modbailleur" tabindex="-1" role="dialog" aria-labelledby="infLabel" aria-hidden="true">
  5596. <div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable" role="document">
  5597. <div class="modal-content">
  5598. <!-- HEADER -->
  5599. <div class="modal-header">
  5600. <h5 class="modal-title" id="infLabel">code Bailleur/Projet/DRL </h5>
  5601. <button type="button" class="close" data-dismiss="modal">
  5602. <span>&times;</span>
  5603. </button>
  5604. </div>
  5605. <!-- BODY -->
  5606. <div class="modal-body">
  5607. </div>
  5608. </div>
  5609. </div>
  5610. </div>
  5611. <div class="container">
  5612. <div class="modal fade" id="refubail">
  5613. <div class="modal-dialog">
  5614. <div class="modal-content">
  5615. <div class="modal-header">
  5616. </div>
  5617. <div class="modal-body">
  5618. </div>
  5619. </div>
  5620. </div>
  5621. </div>
  5622. </div>
  5623. <div class="container">
  5624. <div class="modal fade" id="modifprevu">
  5625. <div class="modal-dialog">
  5626. <div class="modal-content">
  5627. <div class="modal-header">
  5628. </div>
  5629. <div class="modal-body">
  5630. </div>
  5631. </div>
  5632. </div>
  5633. </div>
  5634. </div>
  5635. <div class="container">
  5636. <div class="modal fade" id="modifinfo">
  5637. <div class="modal-dialog">
  5638. <div class="modal-content">
  5639. <div class="modal-header">
  5640. </div>
  5641. <div class="modal-body">
  5642. </div>
  5643. </div>
  5644. </div>
  5645. </div>
  5646. </div>
  5647. <div class="modal fade monModal" id="modifies" tabindex="-1" role="dialog" aria-labelledby="infLabel" aria-hidden="true">
  5648. <div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable" role="document">
  5649. <div class="modal-content">
  5650. <!-- HEADER -->
  5651. <div class="modal-header">
  5652. <h5 class="modal-title" id="infLabel">Modifier DA</h5>
  5653. <button type="button" class="close" data-dismiss="modal">
  5654. <span>&times;</span>
  5655. </button>
  5656. </div>
  5657. <!-- BODY -->
  5658. <div class="modal-body">
  5659. </div>
  5660. </div>
  5661. </div>
  5662. </div>
  5663. <div class="modal fade monModal" id="supp" tabindex="-1" role="dialog" aria-labelledby="infLabel" aria-hidden="true">
  5664. <div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable" role="document">
  5665. <div class="modal-content">
  5666. <!-- HEADER -->
  5667. <div class="modal-header">
  5668. <h5 class="modal-title" id="infLabel">Confirmez la suppression</h5>
  5669. <button type="button" class="close" data-dismiss="modal">
  5670. <span>&times;</span>
  5671. </button>
  5672. </div>
  5673. <!-- BODY -->
  5674. <div class="modal-body">
  5675. </div>
  5676. </div>
  5677. </div>
  5678. </div>
  5679. <div class="container">
  5680. <div class="modal fade" id="raisrefu">
  5681. <div class="modal-dialog">
  5682. <div class="modal-content">
  5683. <div class="modal-header">
  5684. </div>
  5685. <div class="modal-body">
  5686. </div>
  5687. </div>
  5688. </div>
  5689. </div>
  5690. </div>
  5691. <div class="container">
  5692. <div class="modal fade" id="chefrefu">
  5693. <div class="modal-dialog">
  5694. <div class="modal-content">
  5695. <div class="modal-header">
  5696. </div>
  5697. <div class="modal-body">
  5698. </div>
  5699. </div>
  5700. </div>
  5701. </div>
  5702. </div>
  5703. <div class="container">
  5704. <div class="modal fade" id="chefpr">
  5705. <div class="modal-dialog">
  5706. <div class="modal-content">
  5707. <div class="modal-header">
  5708. </div>
  5709. <div class="modal-body">
  5710. </div>
  5711. </div>
  5712. </div>
  5713. </div>
  5714. </div>
  5715. <!-- Modal -->
  5716. <div class="modal fade" id="modalUpload" tabindex="-1" role="dialog">
  5717. <div class="modal-dialog" role="document">
  5718. <div class="modal-content">
  5719. <div class="modal-header">
  5720. <h5 class="modal-title">Ajouter une pièce jointe</h5>
  5721. <button type="button" class="close" data-dismiss="modal">
  5722. <span>&times;</span>
  5723. </button>
  5724. </div>
  5725. <div class="modal-body">
  5726. <!-- Fichier existant -->
  5727. <div id="fichierExistant" class="d-none alert alert-info mb-3">
  5728. <strong>Fichier actuel :</strong>
  5729. <span id="iconeFichierExistant"></span>
  5730. <a id="lienFichierExistant" href="#" target="_blank"></a>
  5731. <small class="d-block text-muted mt-1">
  5732. <i class="fas fa-info-circle"></i> Uploader un nouveau fichier remplacera celui-ci.
  5733. </small>
  5734. </div>
  5735. <!-- Input file -->
  5736. <div class="form-group">
  5737. <label>Fichier (PDF, Word, Excel) — max 5 Mo</label>
  5738. <input type="file" id="pieceJointeFile" class="form-control-file"
  5739. accept=".pdf,.doc,.docx,.xls,.xlsx">
  5740. </div>
  5741. <!-- Progression -->
  5742. <div id="uploadProgress" class="d-none">
  5743. <div class="progress">
  5744. <div class="progress-bar progress-bar-striped progress-bar-animated w-100"></div>
  5745. </div>
  5746. <small class="text-muted mt-1 d-block">Envoi en cours...</small>
  5747. </div>
  5748. <!-- Alerte résultat -->
  5749. <div id="uploadAlert" class="d-none mt-2"></div>
  5750. <!-- Lien téléchargement -->
  5751. <div id="downloadSection" class="d-none mt-3">
  5752. <a id="downloadLink" href="#" target="_blank" class="btn btn-success btn-sm">
  5753. <i class="fas fa-download"></i> Télécharger la pièce jointe
  5754. </a>
  5755. </div>
  5756. </div>
  5757. <div class="modal-footer">
  5758. <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
  5759. <button type="button" class="btn btn-primary" id="btnUpload">
  5760. <i class="fas fa-upload"></i> Envoyer
  5761. </button>
  5762. </div>
  5763. </div>
  5764. </div>
  5765. </div>
  5766. {% endif %}
  5767. {% if demachats[0].etat==0 %} <h2 >{{ " La Demande d'Achat est Annulée!"}} </h2>{% endif %}
  5768. <p>&nbsp;</p>
  5769. </body>
  5770. </html>