Browse Source

Import des dossiers

stany.ferer 4 months ago
parent
commit
a28345ec12

+ 2 - 0
conf.inc.php

@@ -38,6 +38,8 @@ define("DB_T_EVENTS", "evenement");
 define("DB_T_EVENTS_INSCRITS", "evenement_salaries");
 define("DB_T_SALARIES_PROWEB", "salariesProweb");
 define("DB_T_EXCEL_PROWEB", "excelProweb");
+define("DB_T_DOSSIERS_PROWEB", "dossiersProweb");
+define("DB_T_EXCEL_PROWEB_DOSSIERS", "dossiersProwebExcel");
 define("DB_T_FILES", "files");
 define("DB_T_LOTTERY", "lottery");
 define("DB_T_LOTTERY_INSCRITS", "lottery_salaries");

+ 7 - 0
core/class/get.class.php

@@ -124,6 +124,13 @@ class get
         return (isset($data["dateData"])) ? $data["dateData"] : NULL;
     }
 
+    public static function jsonDateDataExcelProwebDossiers()
+    {
+        db::query("SELECT dateData FROM " . DB_T_EXCEL_PROWEB_DOSSIERS . " ORDER BY id DESC LIMIT 0, 1");
+        $data = db::single();
+        return (isset($data["dateData"])) ? $data["dateData"] : NULL;
+    }
+
     public static function splitIdPage($_page = NULL)
     {
         $return = array(

+ 43 - 3
core/class/json.class.php

@@ -24,6 +24,9 @@ class json extends db
                 case "excel-proweb":
                     return self::create_excelProweb();
                     break;
+                case "excel-proweb-dossiers":
+                    return self::create_excelProwebDossiers();
+                    break;
                 case "events":
                     return self::create_events();
                     break;
@@ -33,6 +36,9 @@ class json extends db
                 case "salaries-proweb":
                     return self::create_salariesProweb();
                     break;
+                case "dossiers-proweb":
+                    return self::create_dossiersProweb();
+                    break;
                 case "lotterys":
                     return self::create_lotterys();
                     break;
@@ -58,16 +64,18 @@ class json extends db
         }
     }
 
-    private static function create_salaries()
+    private static function create_dossiersProweb()
     {
-        $row = salaries::getSalaries();
-        if (file_put_contents(DIR_DATAS_JSON . "salaries.json", json_encode($row))) {
+        $row = prowebDossiers::all();
+        if (file_put_contents(DIR_DATAS_JSON . "dossiers-proweb.json", json_encode($row))) {
             return 1;
         } else {
             return 0;
         }
     }
 
+
+
     private static function create_salariesProweb()
     {
         $row = proweb::getBase();
@@ -78,6 +86,16 @@ class json extends db
         }
     }
 
+    private static function create_salaries()
+    {
+        $row = salaries::getSalaries();
+        if (file_put_contents(DIR_DATAS_JSON . "salaries.json", json_encode($row))) {
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+
     private static function create_excel()
     {
         db::query("SELECT 
@@ -127,6 +145,28 @@ class json extends db
         }
     }
 
+    private static function create_excelProwebDossiers(){
+        db::query("SELECT 
+        " . DB_T_EXCEL_PROWEB_DOSSIERS . ".id, 
+        " . DB_T_FILES . ".name, 
+        " . DB_T_EXCEL_PROWEB_DOSSIERS . ".nbDossiers, 
+        CONCAT(ROUND((" . DB_T_FILES . ".size / 1024 / 1024), 2), ' Mo') AS size, 
+        " . DB_T_EXCEL_PROWEB_DOSSIERS . ".md5, 
+        " . DB_T_EXCEL_PROWEB_DOSSIERS . ".cree, 
+        CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user', 
+        dateData 
+        FROM " . DB_T_EXCEL_PROWEB_DOSSIERS . " 
+        INNER JOIN " . DB_T_USER . " ON " . DB_T_EXCEL_PROWEB_DOSSIERS . ".id_user = " . DB_T_USER . ".id 
+        LEFT JOIN " . DB_T_FILES . " ON " . DB_T_EXCEL_PROWEB_DOSSIERS . ".md5 = " . DB_T_FILES . ".id");
+        $row = db::resultset();
+
+        if (file_put_contents(DIR_DATAS_JSON . "excel-proweb-dossiers.json", json_encode($row))) {
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+
     private static function create_events()
     {
         $row = event::getEvents();

+ 186 - 0
core/class/prowebDossiers.class.php

@@ -0,0 +1,186 @@
+<?php
+
+class prowebDossiers
+{
+
+    public static function getExcelById(int $_id)
+    {
+        db::query("SELECT * FROM " . DB_T_EXCEL_PROWEB_DOSSIERS . " WHERE id = :id");
+        db::bind(':id', $_id);
+        return db::single();
+    }
+
+    public static function all()
+    {
+        db::query("SELECT * FROM " . DB_T_DOSSIERS_PROWEB);
+        return db::resultset();
+    }
+
+    public static function deleteExcel(int $_id)
+    {
+
+        $tmp = self::getExcelById($_id);
+        file::delete($tmp["md5"]);
+
+        db::query("DELETE FROM " . DB_T_EXCEL_PROWEB_DOSSIERS . " WHERE id = :id");
+        db::bind(':id', $_id);
+        try {
+            db::execute();
+            return TRUE;
+        } catch (Exception $ex) {
+            return FALSE;
+        }
+    }
+
+    public static function checkExcel(array $_array)
+    {
+
+        $expectedValues = [
+            'exe_ref',
+            'prest_id',
+            'prest_lib',
+            'prest_lib2',
+            'catprest_id',
+            'catprest_lib',
+            'prest_period',
+            'prest_closed',
+            'doss_id',
+            'doss_lib',
+            'etdoss_id',
+            'etdoss_lib',
+            'doss_nb_inscrit',
+            'od_meyclub_subv',
+            'doss_partce',
+            'doss_partod',
+            'doss_montant_total',
+            'comm_ref'
+        ];
+
+        $firstEntry = $_array[0] ?? [];
+
+        $missingValues = array_diff($expectedValues, $firstEntry);
+        $extraValues = array_diff($firstEntry, $expectedValues);
+
+
+        if (empty($missingValues) && empty($extraValues)) {
+            return TRUE;
+        } else {
+            alert::recError("Les données présentes dans ce fichier ne correspondent pas avec l'attendu");
+            if (!empty($missingValues)) {
+                alert::recError("Clés manquantes : " . implode(', ', $missingValues) . "\n");
+            }
+            if (!empty($extraValues)) {
+                alert::recError("Clés supplémentaires : " . implode(', ', $extraValues) . "\n");
+            }
+            return FALSE;
+        }
+    }
+
+
+    public static function add(array $_array)
+    {
+        if (empty($_array)) {
+            return false;
+        }
+
+        $placeholders = [];
+        $params = [];
+
+        foreach ($_array as $index => $entry) {
+
+            if ($index > 0) {
+                $placeholders[] = "(
+                :id_$index, :exe_ref_$index, :prest_id_$index, :prest_lib_$index, :prest_lib2_$index,
+                :catprest_id_$index, :catprest_lib_$index, :prest_period_$index, :prest_closed_$index,
+                :doss_id_$index, :doss_lib_$index, :etdoss_id_$index, :etdoss_lib_$index,
+                :doss_nb_inscrit_$index, :od_meyclub_subv_$index, :doss_partce_$index, :doss_partod_$index, :doss_montant_total_$index, :comm_ref_$index)";
+
+                $params[":id_$index"] = $entry[1] . $entry[8];
+
+                if (preg_match('/\b(\d{4})\b/', $entry[0], $match)) {
+                    $params[":exe_ref_$index"] = (int)$match[1];
+                } else {
+                    $params[":exe_ref_$index"] = null;
+                }
+
+                $params[":prest_id_$index"] = !empty($entry[1]) ? (int)$entry[1] : null;
+                $params[":prest_lib_$index"] = $entry[2];
+                $params[":prest_lib2_$index"] = $entry[3];
+                $params[":catprest_id_$index"] = !empty($entry[4]) ? (int)$entry[4] : null;
+                $params[":catprest_lib_$index"] = $entry[5];
+                $params[":prest_period_$index"] = $entry[6];
+                $params[":prest_closed_$index"] = $entry[7];
+                $params[":doss_id_$index"] = $entry[8];
+                $params[":doss_lib_$index"] = $entry[9];
+                $params[":etdoss_id_$index"] = $entry[10];
+                $params[":etdoss_lib_$index"] = $entry[11];
+                $params[":doss_nb_inscrit_$index"] = is_numeric($entry[12]) ? (int)$entry[12] : null;
+                $params[":od_meyclub_subv_$index"] = $entry[13];
+                $params[":doss_partce_$index"] = $entry[14];
+                $params[":doss_partod_$index"] = $entry[15];
+                $params[":doss_montant_total_$index"] = $entry[16];
+                $params[":comm_ref_$index"] = $entry[17];
+            }
+        }
+
+
+        $sql = "INSERT INTO " . DB_T_DOSSIERS_PROWEB . " (
+            id, exe_ref, prest_id, prest_lib, prest_lib2,
+            catprest_id, catprest_lib, prest_period, prest_closed,
+            doss_id, doss_lib, etdoss_id, etdoss_lib,
+            doss_nb_inscrit, od_meyclub_subv, doss_partce, doss_partod, doss_montant_total, comm_ref
+        ) VALUES " . implode(", ", $placeholders) . "
+        ON DUPLICATE KEY UPDATE
+            exe_ref = VALUES(exe_ref),
+            prest_id = VALUES(prest_id),
+            prest_lib = VALUES(prest_lib),
+            prest_lib2 = VALUES(prest_lib2),
+            catprest_id = VALUES(catprest_id),
+            catprest_lib = VALUES(catprest_lib),
+            prest_period = VALUES(prest_period),
+            prest_closed = VALUES(prest_closed),
+            doss_id = VALUES(doss_id),
+            doss_lib = VALUES(doss_lib),
+            etdoss_id = VALUES(etdoss_id),
+            etdoss_lib = VALUES(etdoss_lib),
+            doss_nb_inscrit = VALUES(doss_nb_inscrit),
+            od_meyclub_subv = VALUES(od_meyclub_subv),
+            doss_partce = VALUES(doss_partce),
+            doss_partod = VALUES(doss_partod),
+            doss_montant_total = VALUES(doss_montant_total),
+            comm_ref = VALUES(comm_ref)";
+
+        db::query($sql);
+
+        foreach ($params as $key => $value) {
+            db::bind($key, $value);
+        }
+
+        try {
+            db::execute();
+            return TRUE;
+        } catch (Exception $ex) {
+            alert::recError("Erreur lors de l'importation des données : " . $ex->getMessage());
+            if (debug::isFile("debug")) {
+                alert::recError("Stack : " . $ex);
+            }
+            return FALSE;
+        }
+    }
+
+
+    public static function getExcel()
+    {
+        db::query("SELECT * FROM " . DB_T_EXCEL . " ORDER BY id DESC LIMIT 0, 1");
+        return db::single();
+    }
+
+    public static function downloadExcel(int $_id, string $_file)
+    {
+        $data = base64_decode(self::getExcelById($_id)["file"]);
+        $fileTemp = fopen(DIR_TEMP . $_file, "w");
+        file_put_contents(DIR_TEMP . $_file, $data);
+        fclose($fileTemp);
+        return DIR_TEMP . $_file;
+    }
+}

+ 23 - 0
core/submit/cms.proweb-delete-dossiers-excel.php

@@ -0,0 +1,23 @@
+<?php
+
+if(core::ifPost("from")){
+    if(prowebDossiers::deleteExcel(core::getPost("id"))){
+        json::create("excel-proweb-dossiers");
+
+        historique::recRef("/proweb-dossiers-historique-excel.html");
+        historique::add(array(
+            "idType" => historique::getIdRef("ACTION"),
+            "idUser" => session::getId(),
+            "idPage" => historique::getIdRef("/proweb-dossiers-historique-excel.html"),
+            "log" => "Suppression de ". core::getPost("file")
+        ));
+
+        alert::recSuccess("Suppression de ". core::getPost("file"));
+    } else {
+        alert::recError("Erreur lors de la suppression de ". core::getPost("file"));
+    }
+}
+
+header("Location: proweb-dossiers-historique-excel.html");
+exit();
+

+ 96 - 0
core/submit/cms.proweb-import-dossiers.php

@@ -0,0 +1,96 @@
+<?php
+
+$name["json"] = "dossiers-proweb";
+$name["files"] = "proweb-import-dossiers";
+$name["returnKo"] = "proweb-dossiers-upload";
+$name["returnOk"] = "proweb-dossiers";
+
+if (core::ifPost("from") AND core::getPost("from") == $name["files"]) {
+    
+    if (isset($_FILES[$name["files"]]['error']) AND $_FILES[$name["files"]]['error'] > 0) {
+
+        switch ($_FILES[$name["files"]]['error']) {
+            case 1: // UPLOAD_ERR_INI_SIZE
+                alert::recError("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
+                break;
+            case 2: // UPLOAD_ERR_FORM_SIZE
+                alert::recError("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
+                break;
+            case 3: // UPLOAD_ERR_PARTIAL
+                alert::recError("L'envoi du fichier a été interrompu pendant le transfert !");
+                break;
+            case 4: // UPLOAD_ERR_NO_FILE
+                alert::recError("Vous n'avez pas chargé de fichier");
+                break;
+        }
+    } elseif ($_FILES[$name["files"]]['type'] != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") {
+        alert::recError("Seuls les fichiers Excel au format xlsx sont acceptés");
+        header("Location: /".$name["returnKo"] . ".html");
+        exit();
+    } else {
+
+        if (file_exists($_FILES[$name["files"]]['tmp_name'])) {
+            
+            $fileType = ($_FILES[$name["files"]]['type'] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ? "xlsx" : "csv";
+
+            $simpleXLSX = new simpleXLSX();
+            $dataExcel = $simpleXLSX->parse($_FILES[$name["files"]]['tmp_name']);
+            $returnData = $dataExcel->rows();
+
+            if(prowebDossiers::checkExcel($returnData) == FALSE){
+                header("Location: /".$name["returnKo"] . ".html");
+                exit();
+            } 
+
+            $md5File = file::record($_FILES[$name["files"]]);
+            if($md5File == FALSE){
+                header("Location: /proweb-dossiers-historique-excel.html");
+                exit();
+            }
+
+            if(prowebDossiers::add($returnData)){
+
+                alert::recSuccess("L'importation a été réalisé avec succès");
+                json::create($name["json"]);
+
+                $nbDossiers = count($returnData) - 1;
+                $json = json_encode($returnData);
+                
+                db::query("INSERT INTO " . DB_T_EXCEL_PROWEB_DOSSIERS . " (json, nbDossiers, md5, dateData, id_user) VALUES (:json, :nbDossiers, :md5, :dateData, :id_user)");
+                db::bind(':nbDossiers', $nbDossiers);
+                db::bind(':dateData', $_POST["date"]);
+                db::bind(':md5', $md5File);
+                db::bind(':json', base64_encode($json)); 
+                db::bind(':id_user', session::getId());
+                
+                try {
+                    db::execute();
+                    json::create("excel-proweb-dossiers");
+                } catch (Exception $ex) {
+                    alert::recError("Erreur sur l'archivage du fichier Excel " . $_FILES[$name["files"]]['name']);
+                    header("Location: /proweb-dossiers-historique-excel.html");
+                    exit();
+                }
+                
+                historique::recRef("/dossiers-proweb.html");
+                historique::add(array(
+                    "idType" => historique::getIdRef("ACTION"),
+                    "idUser" => session::getId(),
+                    "idPage" => historique::getIdRef("/dossiers-proweb.html"),
+                    "log" => "Import du fichier " . $_FILES[$name["files"]]['name']
+                ));
+
+                alert::recSuccess("Le fichier " . $_FILES[$name["files"]]['name'] . " a été importé avec succès");
+                header("Location: /".$name["returnOk"] . ".html");
+
+            } else {
+                header("Location: /".$name["returnKo"] . ".html");
+                exit();
+            }
+        }
+    }
+            
+} else {
+    header('HTTP/1.0 401 Unauthorized');
+    exit();
+}

+ 9 - 1
core/views/_cms.menu.php

@@ -14,13 +14,21 @@
 
             $temp_accordion = array("proweb-salaries", "proweb-historique-excel", "proweb-export-csv", "proweb-salaries-upload");
             (in_array(core::getGet("p"), $temp_accordion) or get::isDefautMenu($temp_accordion)) ? $_show = "show" : $_show = NULL;
-            core::elementMenuH6("proweb", "ProWeb", NULL, "col-proweb");
+            core::elementMenuH6("proweb", "ProWeb - Salariés", NULL, "col-proweb");
             echo '<ul class="collapse ' . $_show . ' list-unstyled" id="col-proweb" data-parent="#accordion">';
                 core::elementMenu("proweb-salaries", "/proweb-salaries.html", "Proweb : Liste des salariés");
                 core::elementMenu("proweb-historique-excel", "/proweb-historique-excel.html", "Proweb : Historique des Excels");
                 core::elementMenu("proweb-export-csv", "/proweb-export-csv.html", "Proweb : Transfert des données");
             echo '</ul>';
 
+            $temp_accordion = array("proweb-dossiers", "proweb-dossiers-historique-excel", "proweb-dossiers-export-csv", "proweb-dossiers-upload");
+            (in_array(core::getGet("p"), $temp_accordion) or get::isDefautMenu($temp_accordion)) ? $_show = "show" : $_show = NULL;
+            core::elementMenuH6("proweb-dossiers", "ProWeb - Dossiers", NULL, "col-proweb-dossiers");
+            echo '<ul class="collapse ' . $_show . ' list-unstyled" id="col-proweb-dossiers" data-parent="#accordion">';
+                core::elementMenu("proweb-dossiers", "/proweb-dossiers.html", "Proweb : Liste des dossiers");
+                core::elementMenu("proweb-dossiers-historique-excel", "/proweb-dossiers-historique-excel.html", "Proweb : Historique des Excels");
+            echo '</ul>';
+
             $temp_accordion = array("compte", "compte-historique-csv", "compte-upload");
             (in_array(core::getGet("p"), $temp_accordion) or get::isDefautMenu($temp_accordion)) ? $_show = "show" : $_show = NULL;
             core::elementMenuH6("compte", "Comptes bancaires", NULL, "col-banque");

+ 74 - 0
core/views/pages/cms.proweb-dossiers-historique-excel.php

@@ -0,0 +1,74 @@
+<?php
+    $jsonTarget = "/json.php?file=excel-proweb-dossiers";
+    if(debug::isFile("debug")){
+        debug::log(debug::getBadge($jsonTarget, "OUVRIR LE JSON : ".$jsonTarget), "JSON chargé en arrière plan");
+    } 
+?>
+<header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
+    <h2 class="bd-title" id="content">
+        <span>Proweb - Dossiers : Historique des Excels</span>
+    </h2>
+    <?php if(access::ifAccesss("proweb-dossiers-upload")){ ?>
+    <div class="fix-container-button-nav">
+        <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>
+        <a href="https://www.cse-invent.com/gestion" 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>
+    </div>
+    <?php } ?>
+</header>
+<?php   
+        echo core::filAriane(array(
+            "current" => "Historique des dossiers Excels", 
+            "arbo" => array( 
+                "Proweb" => NULL,
+                "Historique des dossiers Excels" => "/proweb-dossiers-historique-excel.html")
+        )); 
+?>
+<div>
+    <table
+        id="table"
+        class="table-striped table-hover table-sm" 
+        data-page-size="25"
+        data-toggle="table"
+        data-show-columns="true"
+        data-search="true"
+        data-buttons-align="left"
+        data-pagination="true"
+        data-filter-control="true"
+        data-flat="true"
+        data-sort-name="cree"
+        data-sort-order="desc"
+        data-url="<?php echo $jsonTarget ?>">
+        <thead>
+            <tr>
+                <th data-sortable="true" data-field="cree" data-filter-control="input" data-width="160">Charger le</th>
+                <th data-sortable="true" data-field="dateData" data-filter-control="input">Datation des données</th>
+                <th data-formatter="downloadFileLocal" data-sortable="true" data-field="name" data-filter-control="input">Fichier</th>
+                <th data-sortable="true" data-field="nbSalaries" data-filter-control="input" data-width="60">Nb. Dossiers</th>
+                <th data-sortable="true" data-field="size" data-width-unit="Ko" data-width="40">Poids</th>
+                <th data-sortable="true" data-field="md5" data-filter-control="input" data-width="60">Md5</th>
+                <th data-sortable="true" data-field="user" data-filter-control="select" data-width="180">Chargé par</th>
+                <th data-field="id" data-formatter="deleteFile"></th>
+            </tr>
+        </thead>
+    </table> 
+</div>
+
+<script>
+    function downloadFileLocal(value, row) { 
+        return '<form method="post" action="/submit.php">\n\
+        <input type="hidden" name="from" value="file-download">\n\
+        <input type="hidden" name="file" value="' + row.name + '">\n\
+        <input type="hidden" name="md5" value="' + row.md5 + '">\n\
+        <button type="submit" style="border:none; background:none;" title="Télécharger le fichier : ' + row.name + '">' + row.name + '</button>\n\
+        </form>'; 
+    }
+    
+    function deleteFile(value, row) { 
+        return '<form onSubmit="return confirm(\'Voulez-vous supprimer le fichier ' + row.name + ' ?\')" method="post" action="/submit.php">\n\
+        <input type="hidden" name="from" value="proweb-delete-dossiers-excel">\n\
+        <input type="hidden" name="file" value="' + row.name + '">\n\
+        <input type="hidden" name="id" value="' + row.id + '">\n\
+        <button type="submit" class="btn btn-outline-danger btn-sm">Supprimer</button>\n\
+        </form>'; 
+    }
+</script>

+ 46 - 0
core/views/pages/cms.proweb-dossiers-upload.php

@@ -0,0 +1,46 @@
+<link rel="stylesheet" href="css/dragAndDrop.css">
+
+<header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
+    <h2 class="bd-title" id="content">
+        <span>ProWeb - Dossiers : Importer un fichier Excel</span>
+    </h2>
+</header>
+<?php   
+        echo core::filAriane(array(
+            "current" => "Importer un fichier Excel", 
+            "arbo" => array( 
+                "Proweb" => NULL,
+                "Liste des dossiers" => "/proweb-dossiers.html",
+                "Importer un fichier Excel" => "/proweb-dossiers-upload.html")
+        )); 
+?>
+<br />
+<form action="/submit.php" method="post" enctype="multipart/form-data" onsubmit="loading()">
+    <input type="hidden" name="from" value="proweb-import-dossiers">
+    <div class="form-group">
+        <label>Datation des données</label>
+        <input type="date" class="form-control" value="<?php echo date("Y-m-d") ?>" name="date" placeholder="" required>
+    </div>
+    <br /> 
+    <div class="file-drop-area">
+        <span class="choose-file-button">Choisissez votre fichier Excel (XLSX)</span>
+        <span class="file-message">ou déposez le dans cette zone</span>
+        <input id="proweb-import-dossiers" class="import-excel" name="proweb-import-dossiers" type="file" onchange="dargAndDrop()" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
+    </div>
+    <br />
+    <input class="btn btn-primary btn-lg" style="width: 100%" type="submit" value="Charger le fichier de la base ProWeb">
+</form>
+
+<script>
+    function dargAndDrop(){    
+        var fileName = $("#proweb-import-dossiers").val().split('\\').pop();
+        var ext = fileName.split('.').pop();
+        if(ext!=="xlsx"){
+            $("#printToastErrorTxt").html("Seuls les fichiers XLSX sont acceptés");
+            $("#printToastError").toast('show');
+            $('#attachement-document').val("");
+        } else {
+            $(".file-message").text($(".file-message").text().replace("ou déposez le dans cette zone", "Fichier prêt à être chargé : "+fileName));
+        }
+    }
+</script>

+ 53 - 0
core/views/pages/cms.proweb-dossiers.php

@@ -0,0 +1,53 @@
+<?php
+$dateData = get::jsonDateDataExcelProwebDossiers();
+$date = ($dateData != NULL) ? " (au " . core::convertDate($dateData, FALSE) . ")" : "";
+
+json::create("dossiers-proweb");
+
+    $jsonTarget = "/json.php?file=dossiers-proweb";
+    if(debug::isFile("debug")){
+        debug::log(debug::getBadge($jsonTarget, "OUVRIR LE JSON : ".$jsonTarget), "JSON chargé en arrière plan");
+    } 
+?>
+<header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
+    <h2 class="bd-title" id="content">
+        <span>Proweb : Liste des dossiers<?php echo $date ?></span>
+    </h2>
+    <?php if(access::ifAccesss("proweb-dossiers-upload")){ ?>
+    <div class="fix-container-button-nav">
+        <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>
+        <a href="https://www.cse-invent.com/gestion" 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>
+    </div>
+    <?php } ?>
+</header>
+
+<?php
+echo core::filAriane(array(
+    "current" => "Liste des dossiers",
+    "arbo" => array(
+        "Proweb" => NULL,
+        "Liste des dossiers" => "proweb-dossiers.html"
+    )
+));
+?>
+<div>
+    <table id="ProWebSalary" class="table-striped table-hover table-sm" data-page-size="25" data-toggle="table" data-buttons-align="left" data-pagination="true" data-filter-control="true" data-flat="true" data-show-columns-toggle-all="true" data-url="<?php echo $jsonTarget ?>">
+        <thead>
+            <tr>
+                <th data-sortable="true" data-field="exe_ref" data-filter-control="select">Année</th>
+                <th data-sortable="true" data-field="prest_lib" data-filter-control="select">Prestation</th>
+                <th data-sortable="true" data-field="prest_lib2" data-filter-control="select">Complément</th>
+                <th data-sortable="true" data-field="catprest_lib" data-filter-control="select">Catégorie</th>
+                <th data-sortable="true" data-field="comm_ref" data-filter-control="select">Commission</th>
+                <th data-sortable="true" data-field="prest_closed" data-filter-control="select">Clôturé</th>
+                <th data-sortable="true" data-field="etdoss_lib" data-filter-control="select">Etat</th>
+                <th data-sortable="true" data-field="doss_nb_inscrit" data-filter-control="select">Nb. Inscrits</th>
+                <th data-sortable="true" data-field="od_meyclub_subv" data-filter-control="select">Subventionné</th>
+                <th data-sortable="true" data-field="doss_partce" data-filter-control="input">Part CSE</th>
+                <th data-sortable="true" data-field="doss_partod" data-filter-control="input">Part Salarié</th>
+                <th data-sortable="true" data-field="doss_montant_total" data-filter-control="input">Total</th>
+            </tr>
+        </thead>
+    </table>
+</div>
+

+ 1 - 1
core/views/pages/cms.proweb-salaries-upload.php

@@ -2,7 +2,7 @@
 
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
     <h2 class="bd-title" id="content">
-        <span>ProWeb : Importer un fichier Excel</span>
+        <span>ProWeb - Salariés : Importer un fichier Excel</span>
     </h2>
 </header>
 <?php   

+ 43 - 0
maj/sql/maj.sql

@@ -1 +1,44 @@
+CREATE TABLE `dossiersProweb` (
+  `id` int NOT NULL,
+  `exe_ref` year DEFAULT NULL,
+  `prest_id` int DEFAULT NULL,
+  `prest_lib` varchar(250) NOT NULL,
+  `prest_lib2` varchar(250) NOT NULL,
+  `catprest_id` int DEFAULT NULL,
+  `catprest_lib` varchar(250) NOT NULL,
+  `prest_period` varchar(1) NOT NULL,
+  `prest_closed` tinyint(1) NOT NULL,
+  `doss_id` int NOT NULL,
+  `doss_lib` varchar(250) NOT NULL,
+  `etdoss_id` int NOT NULL,
+  `etdoss_lib` varchar(250) NOT NULL,
+  `doss_nb_inscrit` int DEFAULT NULL,
+  `od_meyclub_subv` varchar(1) NOT NULL,
+  `doss_partce` float DEFAULT NULL,
+  `doss_partod` float DEFAULT NULL,
+  `doss_montant_total` float DEFAULT NULL,
+  `comm_ref` varchar(250) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
 
+ALTER TABLE `dossiersProweb`
+  ADD PRIMARY KEY (`id`);
+COMMIT;
+
+CREATE TABLE `dossiersProwebExcel` (
+  `id` int NOT NULL,
+  `json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+  `nbDossiers` int NOT NULL,
+  `md5` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `dateData` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `cree` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `id_user` int NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+ALTER TABLE `dossiersProwebExcel`
+  ADD PRIMARY KEY (`id`),
+  ADD UNIQUE KEY `md5` (`md5`),
+  ADD KEY `id_user` (`id_user`);
+
+ALTER TABLE `dossiersProwebExcel`
+  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
+COMMIT;