dbXapp
2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Toggle main menu visibility
Loading...
Searching...
No Matches
myLKW_dayshift.class.php
Go to the documentation of this file.
1
<?php
2
namespace
dbx\myLKW;
3
4
use
function
dbx\myLKW\dbx_get_datum;
5
6
class
myLKW_dayshift
{
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
$table['server']
Definition
.dd.php:6
dbx\myLKW\myLKW_dayshift
Definition
myLKW_dayshift.class.php:6
dbx\myLKW\myLKW_dayshift\run
run()
Definition
myLKW_dayshift.class.php:127
$config
$config['version']
Definition
config.php:2
dbx\myLKW\dbx_get_datum
dbx_get_datum(string $format='day, dd.mm.yyyy', int $offset=0, ?DateTime $base=null)
Definition
myLKW.class.php:7
dbx
DBX schema administration.
dbx
modules
myLKW
include
myLKW_dayshift.class.php
Generated by
1.17.0