cms.proweb-dossiers.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. $dateData = get::jsonDateDataExcelProwebDossiers();
  3. $date = ($dateData != NULL) ? " (au " . core::convertDate($dateData, FALSE) . ")" : "";
  4. $jsonTarget = "/json.php?file=dossiers-proweb";
  5. if (debug::isFile("debug")) {
  6. debug::log(debug::getBadge($jsonTarget, "OUVRIR LE JSON : " . $jsonTarget), "JSON chargé en arrière plan");
  7. }
  8. ?>
  9. <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
  10. <h2 class="bd-title" id="content">
  11. <span>Proweb : Liste des dossiers<?php echo $date ?></span>
  12. </h2>
  13. <?php if (access::ifAccesss("proweb-dossiers-upload")) { ?>
  14. <div class="fix-container-button-nav">
  15. <a href="proweb-dossiers-upload.html"><button type="submit" class="btn btn-outline-success btn-sm"><?php icon::getFont(["icon" => "bi bi-file-earmark-plus"]) ?> Importer un fichier Excel</button></a>
  16. <a href="<?= prowebDossiers::getLinkProweb() ?>" target="_blank"><button type="submit" class="btn btn-outline-secondary btn-sm"><?php icon::getFont(["icon" => "bi bi-link-45deg"]) ?> Exporter tous les dossiers depuis Proweb</button></a>
  17. </div>
  18. <?php } ?>
  19. </header>
  20. <?php
  21. echo core::filAriane(array(
  22. "current" => "Liste des dossiers",
  23. "arbo" => array(
  24. "Proweb" => NULL,
  25. "Liste des dossiers" => "proweb-dossiers.html"
  26. ),
  27. "refresh-json" => "dossiers-proweb"
  28. ));
  29. ?>
  30. <div>
  31. <table
  32. id="ProWebSalary"
  33. class="table-striped table-hover table-sm"
  34. data-sort-name="hismo_date_crea"
  35. data-sort-order="desc"
  36. data-page-size="50"
  37. data-show-footer="true"
  38. data-toggle="table"
  39. data-buttons-align="left"
  40. data-pagination="true"
  41. data-filter-control="true"
  42. data-flat="true"
  43. data-show-export="true"
  44. data-show-columns-toggle-all="true"
  45. data-page-list="[50, 100, 250, 500, 750, 1000]"
  46. data-url="<?php echo $jsonTarget ?>">
  47. <thead>
  48. <tr>
  49. <th data-sortable="true" data-field="exe_ref" data-filter-control="select">Année</th>
  50. <th data-sortable="true" data-field="hismo_date_crea" data-filter-control="select">Création</th>
  51. <th data-sortable="true" data-field="prest_lib" data-filter-control="input">Prestation</th>
  52. <th data-sortable="true" data-field="prest_lib2" data-filter-control="select">Complément</th>
  53. <th data-sortable="true" data-field="catprest_lib" data-filter-control="select">Catégorie</th>
  54. <th data-sortable="true" data-field="comm_ref" data-filter-control="select">Commission</th>
  55. <th data-sortable="true" data-field="prest_closed" data-filter-control="select" data-formatter="clotureFormatter">Clôturé</th>
  56. <th data-sortable="true" data-field="etdoss_lib" data-filter-control="select">Etat</th>
  57. <th data-sortable="true" data-field="od_matricule" data-filter-control="input">Matricule</th>
  58. <th data-sortable="true" data-field="nomComplet" data-filter-control="input" data-formatter="concatNomPrenom">Prénom Nom</th>
  59. <th data-sortable="true" data-field="doss_nb_inscrit" data-filter-control="select" data-footer-formatter="totalInscrits">Nb. Inscrits</th>
  60. <th data-sortable="true" data-formatter="dataFormatter" data-field="doss_partce" data-filter-control="input" data-footer-formatter="prixCSE">Part CSE</th>
  61. <th data-sortable="true" data-formatter="dataFormatter" data-field="doss_partod" data-filter-control="input" data-footer-formatter="prixSalarie">Part Salarié</th>
  62. <th data-sortable="true" data-formatter="dataFormatter" data-field="doss_montant_total" data-filter-control="input" data-footer-formatter="prixTotal">Total</th>
  63. </tr>
  64. </thead>
  65. </table>
  66. </div>
  67. <script>
  68. let euro = Intl.NumberFormat('de-DE', {
  69. style: 'currency',
  70. currency: 'EUR',
  71. });
  72. function dataFormatter(value) {
  73. return euro.format(value);
  74. }
  75. function totalInscrits(data) {
  76. var total = 0;
  77. data.forEach(function(row) {
  78. var nb = parseFloat(row.doss_nb_inscrit);
  79. if (!isNaN(nb)) {
  80. total += nb;
  81. }
  82. });
  83. return total;
  84. }
  85. function prixCSE(data) {
  86. var total = 0;
  87. data.forEach(function(row) {
  88. total += parseFloat(row.doss_partce);
  89. });
  90. return parseFloat(total) === 0 ? euro.format(0.00) : euro.format(total.toFixed(2));
  91. }
  92. function prixSalarie(data) {
  93. var total = 0;
  94. data.forEach(function(row) {
  95. total += parseFloat(row.doss_partod);
  96. });
  97. return parseFloat(total) === 0 ? euro.format(0.00) : euro.format(total.toFixed(2));
  98. }
  99. function prixTotal(data) {
  100. var total = 0;
  101. data.forEach(function(row) {
  102. total += parseFloat(row.doss_montant_total);
  103. });
  104. return parseFloat(total) === 0 ? euro.format(0.00) : euro.format(total.toFixed(2));
  105. }
  106. function concatNomPrenom(value, row, index) {
  107. return row.od_prenom + ' ' + row.od_nom;
  108. }
  109. function clotureFormatter(value) {
  110. return value == 1 ? "Clôturé" : "Ouvert";
  111. }
  112. function subventionFormatter(value) {
  113. switch (value) {
  114. case "O":
  115. return "Subventionné"
  116. break;
  117. case "N":
  118. return "Non-subventionné"
  119. break;
  120. default:
  121. return "-"
  122. break;
  123. }
  124. }
  125. </script>