blob: 93e326832cc7f51eb3d73e40d5dee8d79ac074b4 [file] [log] [blame]
Copybara botbe50d492023-11-30 00:16:42 +01001<?php
Adrià Vilanova Martínez5af86512023-12-02 20:44:16 +01002/*
3 * hores
4 * Copyright (c) 2023 Adrià Vilanova Martínez
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, either version 3 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
15 *
16 * You should have received a copy of the GNU Affero General Public
17 * License along with this program.
18 * If not, see http://www.gnu.org/licenses/.
19 */
20
Copybara botbe50d492023-11-30 00:16:42 +010021require_once("core.php");
22security::checkType(security::HYPERADMIN);
23
24$companies = companies::getAll();
25
26$advancedMode = (isset($_GET["advanced"]) && $_GET["advanced"] == "1");
27if ($advancedMode) $conf["backgroundColor"] = "red-200";
28
29$mdHeaderRowBefore = visual::backBtn("powertools.php");
30?>
31<!DOCTYPE html>
32<html>
33<head>
34 <title><?php echo $conf["appName"]; ?></title>
35 <?php visual::includeHead(); ?>
36 <link rel="stylesheet" href="css/dashboard.css">
37 <style>
38 .advanced-mode {
39 border: dotted 3px red;
40 padding: 13px 13px 29px 13px;
41 }
42 </style>
43</head>
44<?php visual::printBodyTag(); ?>
45 <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--fixed-drawer">
46 <?php visual::includeNav(); ?>
47 <main class="mdl-layout__content">
48 <div class="page-content">
49 <div class="main mdl-shadow--4dp<?=($advancedMode ? " advanced-mode" : "")?>">
50 <div class="actions">
51 <?php
52 if ($advancedMode) {
53 ?>
54 <a href="manuallygenerateregistry.php" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect">Desactivar modo avanzado</a>
55 <?php
56 } else {
57 ?>
58 <a href="manuallygenerateregistry.php?advanced=1" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect">Activar modo avanzado</a>
59 <?php
60 }
61 ?>
62 </div>
63
64 <h2>Generar registros manualmente</h2>
65 <form action="domanuallygenerateregistry.php" method="POST">
66 <?php
67 if ($advancedMode) {
68 ?>
69 <input type="hidden" name="advanced" value="1">
70 <p><span style="font-weight: bold; color: red;">ATENCIÓN:</span> al generar los registros en un intervalo de días, hay que hacer los siguientes pasos adicionales para asegurarse que estos se generan correctamente:</p>
71 <ol>
72 <li>Antes de hacer clic en el botón <b>Generar</b>, hay que asegurarse que <b>las fechas de inicio y fin sean correctas</b>. Si no, se podrían generar registros en muchos días no deseados, y el resultado puede ser muy costoso de revertir.</li>
73 <li>Al acabarse de generar los registros, hay que ir al apartado <b>Logs</b> de la configuración y asegurarse que los logs correspondientes a los días generados <b>no tengan ningún icono de error al lado en el listado</b>. Si ha habido un error, cabe la posibilidad de que los registros no se hayan generado correctamente y hace falta comprobar si se han generado o no todos. (Para más información, léase <a href="https://avm99963.github.io/hores-external/administradores/registros/#ver-logs" target="_blank" rel="noopener noreferrer">este artículo de ayuda</a>)</li>
74 </ol>
75 <p>Teniendo en cuenta esto, selecciona los trabajadores y el periodo de días para el cual quieres generar los registros:</p>
76 <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
77 <input class="mdl-textfield__input" type="date" name="begins" id="begins" autocomplete="off" data-required>
78 <label class="mdl-textfield__label always-focused" for="begins">Día inicio</label>
79 </div>
80 <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
81 <input class="mdl-textfield__input" type="date" name="ends" id="ends" autocomplete="off" data-required>
82 <label class="mdl-textfield__label always-focused" for="ends">Día fin</label>
83 </div>
84 <?php
85 } else {
86 ?>
87 <p>Selecciona los trabajadores y el día para el cual quieres generar los registros:</p>
88 <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
89 <input class="mdl-textfield__input" type="date" name="day" id="day" autocomplete="off" data-required>
90 <label class="mdl-textfield__label always-focused" for="day">Día</label>
91 </div>
92 <?php
93 }
94 ?>
95
96 <div class="overflow-wrapper overflow-wrapper--for-table">
97 <table class="mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp">
98 <thead>
99 <tr>
100 <?php
101 if ($conf["debug"]) {
102 ?>
103 <th class="extra">ID</th>
104 <?php
105 }
106 ?>
107 <th class="mdl-data-table__cell--non-numeric">Nombre</th>
108 <th class="mdl-data-table__cell--non-numeric">Empresa</th>
109 <th class="mdl-data-table__cell--non-numeric extra">Categoría</th>
110 </tr>
111 </thead>
112 <tbody>
113 <?php
114 $workers = people::getAll(false, true);
115 foreach ($workers as $w) {
116 ?>
117 <tr data-worker-id="<?=(int)$w["workerid"]?>">
118 <?php
119 if ($conf["debug"]) {
120 ?>
121 <td class="extra"><?=(int)$w["workerid"]?></td>
122 <?php
123 }
124 ?>
125 <td class="mdl-data-table__cell--non-numeric"><?=security::htmlsafe($w["name"])?></td>
126 <td class="mdl-data-table__cell--non-numeric"><?=security::htmlsafe($companies[$w["companyid"]])?></td>
127 <td class="mdl-data-table__cell--non-numeric extra"><?=security::htmlsafe($w["category"])?></td>
128 </tr>
129 <?php
130 }
131 ?>
132 </tbody>
133 </table>
134 </div>
135 <br>
136 <button class="mdl-button mdl-js-button mdl-button--raised mdl-button--accent mdl-js-ripple-effect">Generar</button>
137 </form>
138 </div>
139 </div>
140 </main>
141 </div>
142
143 <?php
144 visual::smartSnackbar([
145 ["empty", "Faltan datos por introducir en el formulario."],
146 ["unexpected", "Ha ocurrido un error inesperado. Inténtelo de nuevo en unos segundos."],
147 ["done", "Se ha ejecutado la acción. Accede al apartado de logs para ver si se han generado los registros correctamente o no."],
148 ["generatederr", "Ha ocurrido un error y no se ha podido guardar el log con la información de lo que ha hecho el programa."]
149 ]);
150
151 $logId = (int)($_GET["logId"] ?? 0);
152 if ($logId > 0) {
153 echo "<script>dynDialog.load('dynamic/log.php?id=".$logId."')</script>";
154 }
155 ?>
156 <script src="js/invalidatebulkrecords.js"></script>
157</body>
158</html>