dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Loading...
Searching...
No Matches
myLKW_dayshift.class.php
Go to the documentation of this file.
1<?php
2namespace dbx\myLKW;
3
4use function dbx\myLKW\dbx_get_datum;
5
7
8 private function isWorkday(string $date): bool {
9
10 $d = new \DateTime($date);
11 $w = (int)$d->format('N'); // 1..7
12
13 $maxWorkday = (int) dbx()->get_config('myLKW','workdays');
14
15 if (!$maxWorkday) {
16 $maxWorkday = 5;
17 }
18
19 if ($w > $maxWorkday) {
20 return false;
21 }
22
23 return true;
24 }
25
26
27 private function shiftDay(): int {
28
29 $dd = 'lkw';
30 $oDB = dbx()->get_system_obj('dbxDB');
31
32 $table = $oDB->get_dd_table($dd);
33 if (!$table) return 0;
34
35 $today = date('Y-m-d');
36
37 /* -----------------------------------------
38 Workday prüfen
39 ----------------------------------------- */
40
41 if (!$this->isWorkday($today)) {
42 dbx()->debug("kein Workday → kein Shift");
43 return 0;
44 }
45
46 $uid = dbx()->user();
47 $now = date('Y-m-d H:i:s');
48
49 try {
50
51 if (!$oDB->begin($dd)) return 0;
52
53 $sql = "UPDATE $table SET
54
55 /* ===== d0 ← d1 ===== */
56 d0_origen_region = d1_origen_region,
57 d0_origen_lugar = d1_origen_lugar,
58 d0_carga_region = d1_carga_region,
59 d0_carga_lugar = d1_carga_lugar,
60 d0_observaciones = d1_observaciones,
61
62 /* ===== d1 ← d2 ===== */
63 d1_origen_region = d2_origen_region,
64 d1_origen_lugar = d2_origen_lugar,
65 d1_carga_region = d2_carga_region,
66 d1_carga_lugar = d2_carga_lugar,
67 d1_observaciones = d2_observaciones,
68
69 /* ===== d2 ← d3 ===== */
70 d2_origen_region = d3_origen_region,
71 d2_origen_lugar = d3_origen_lugar,
72 d2_carga_region = d3_carga_region,
73 d2_carga_lugar = d3_carga_lugar,
74 d2_observaciones = d3_observaciones,
75
76 /* ===== d3 ← d4 ===== */
77 d3_origen_region = d4_origen_region,
78 d3_origen_lugar = d4_origen_lugar,
79 d3_carga_region = d4_carga_region,
80 d3_carga_lugar = d4_carga_lugar,
81 d3_observaciones = d4_observaciones,
82
83 /* ===== d4 ← d5 ===== */
84 d4_origen_region = d5_origen_region,
85 d4_origen_lugar = d5_origen_lugar,
86 d4_carga_region = d5_carga_region,
87 d4_carga_lugar = d5_carga_lugar,
88 d4_observaciones = d5_observaciones,
89
90 /* ===== d5 leer ===== */
91 d5_origen_region = '',
92 d5_origen_lugar = '',
93 d5_carga_region = '',
94 d5_carga_lugar = '',
95 d5_observaciones = '',
96
97 update_date = '$now',
98 update_uid = '$uid'";
99
100 if (!$oDB->rawQuery($oDB->get_dd_server($dd),$sql)) {
101
102 dbx()->debug("rawQuery rollback");
103 $oDB->rollback($dd);
104 return 0;
105 }
106
107 if (!$oDB->commit($dd)) {
108
109 dbx()->debug("commit rollback");
110 $oDB->rollback($dd);
111 return 0;
112 }
113
114 return 1;
115
116 }
117 catch (\Throwable $e) {
118
119 dbx()->debug("rollback");
120 $oDB->rollback($dd);
121 return 0;
122 }
123 }
124
125
126
127 public function run() {
128
129 dbx()->debug("start myLKW_dayshift");
130
131 $cfgDate = dbx()->get_config('myLKW','shiftdate');
132 $today = date('Y-m-d');
133
134 if ($cfgDate && $cfgDate !== 'undef' && $cfgDate !== '0000-00-00') {
135
136 if ($cfgDate >= $today) {
137
138 $content='
139 <div class="alert alert-warning">
140 <strong>Aviso:</strong> No se ha realizado el cambio de día.
141 La fecha configurada ('.$cfgDate.') ya es hoy o posterior.
142 </div>';
143
144 $content.="[modul=myLKW]dbx_run1=list_lkw[/modul]";
145 return $content;
146 }
147 }
148
149 $ok = $this->shiftDay();
150
151 dbx()->debug("myLKW_dayshift=($ok)");
152
153 if ($ok) {
154
155 $cfgDate = dbx()->get_config('myLKW','shiftdate');
156
157 if (
158 !$cfgDate ||
159 $cfgDate === 'undef' ||
160 $cfgDate === '0000-00-00'
161 ) {
162 $date = new \DateTime('today');
163 }
164 else {
165
166 $date = new \DateTime($cfgDate);
167
168 // ✅ NEU: nächster Workday statt +1 Tag
169 $next = dbx_get_datum('yyyy-mm-dd', 1, $date);
170 $date = new \DateTime($next);
171 }
172
173 $config = dbx()->get_config('myLKW');
174 $config['shiftdate'] = $date->format('Y-m-d');
175
176 dbx()->set_config('myLKW',$config);
177 }
178
179 $content='
180 <div class="alert alert-info">
181 <strong>Información:</strong> El cambio de día se ha realizado correctamente.
182 </div>';
183
184 $content.="[modul=myLKW]dbx_run1=list_lkw[/modul]";
185
186 return $content;
187 }
188
189}
$table['server']
Definition .dd.php:6
$config['version']
Definition config.php:2
dbx_get_datum(string $format='day, dd.mm.yyyy', int $offset=0, ?DateTime $base=null)
DBX schema administration.