1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
<?php
/**
* Archivliste im Reiter „Archiv“ (wird beim Anklicken nachgeladen)
*/
?>
<?php $arLegacy = $this->view['arLegacy']; if ($arLegacy['files'] > 0) { ?>
<?php
$legacy_url = function($do) {
return wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_rechnungen&noheader=1&do='.$do, 'wpsg-mod_rechnungen-archive');
};
$legacy_path = 'uploads/wpsg_rechnungen/';
// Zustand nach den Dateien, nicht nach dem Übernahme-Vermerk: siehe doc/code-kommentar.md#alte-rechnungsablage
$nTodo = sizeof($arLegacy['scan']['todo']);
$nDone = $arLegacy['scan']['done'];
$nUnknown = sizeof($arLegacy['scan']['unknown']) + sizeof($arLegacy['scan']['conflict']);
$arConfirm = [];
if ($nTodo > 0) $arConfirm[] = wpsg_translate(_n('Achtung: #1# Rechnung fehlt noch in der aktuellen Ablage und geht mit dem Löschen verloren.', 'Achtung: #1# Rechnungen fehlen noch in der aktuellen Ablage und gehen mit dem Löschen verloren.', $nTodo, 'wpsg'), $nTodo);
if ($nUnknown > 0) $arConfirm[] = wpsg_translate(_n('Achtung: #1# Datei lässt sich keiner Rechnung zuordnen und geht mit dem Löschen verloren.', 'Achtung: #1# Dateien lassen sich keiner Rechnung zuordnen und gehen mit dem Löschen verloren.', $nUnknown, 'wpsg'), $nUnknown);
$arConfirm[] = wpsg_translate(_n('Den Ordner #1# mit #2# Datei endgültig löschen? Vorher sichern!', 'Den Ordner #1# mit #2# Dateien endgültig löschen? Vorher sichern!', $arLegacy['files'], 'wpsg'), $legacy_path, $arLegacy['files']);
$legacy_delete = '<p><a href="'.esc_url($legacy_url('legacyDelete')).'" class="button" onclick="return confirm(\''.esc_js(implode("\n\n", $arConfirm)).'\');">'.__('Alte Ablage löschen', 'wpsg').'</a></p>';
?>
<div class="wpsg_archive_legacy">
<h3><?php echo __('Altbestand', 'wpsg'); ?></h3>
<?php if ($nTodo > 0) { ?>
<p><?php echo __('Die Übernahme der Rechnungen aus wpShopGermany 3 ist nicht sauber durchgelaufen.', 'wpsg').' '.wpsg_translate(_n('Unter #1# liegt #2# Rechnung, die in der aktuellen Ablage fehlt und sich im Shop nicht herunterladen lässt.', 'Unter #1# liegen #2# Rechnungen, die in der aktuellen Ablage fehlen und sich im Shop nicht herunterladen lassen.', $nTodo, 'wpsg'), '<code>'.$legacy_path.'</code>', $nTodo); ?></p>
<?php if ($nUnknown > 0) { ?>
<p><?php echo wpsg_translate(_n('#1# Datei lässt sich keiner Rechnung zuordnen und bleibt dort liegen.', '#1# Dateien lassen sich keiner Rechnung zuordnen und bleiben dort liegen.', $nUnknown, 'wpsg'), $nUnknown); ?></p>
<?php } ?>
<p><a href="<?php echo esc_url($legacy_url('legacyMigrate')); ?>" class="button button-primary"><?php echo wpsg_translate(_n('Alte Ablage übernehmen (#1# Datei)', 'Alte Ablage übernehmen (#1# Dateien)', $nTodo, 'wpsg'), $nTodo); ?></a></p>
<?php echo $legacy_delete; ?>
<?php } else { ?>
<?php if ($arLegacy['result'] !== null) { ?>
<p><?php echo wpsg_translate(__('Alte Ablage übernommen am #1#: #2#, #3#.', 'wpsg'), wpsg_formatTimestamp(strtotime($arLegacy['result']['date']), true),
wpsg_translate(_n('#1# Datei kopiert', '#1# Dateien kopiert', $arLegacy['result']['copied'], 'wpsg'), $arLegacy['result']['copied']),
wpsg_translate(_n('#1# war schon vorhanden', '#1# waren schon vorhanden', $arLegacy['result']['done'], 'wpsg'), $arLegacy['result']['done'])); ?></p>
<?php } else { ?>
<p><?php echo wpsg_translate(_n('Die Rechnungen aus wpShopGermany 3 wurden vollständig übernommen: #1# Datei liegt auch in der aktuellen Ablage.', 'Die Rechnungen aus wpShopGermany 3 wurden vollständig übernommen: #1# Dateien liegen auch in der aktuellen Ablage.', $nDone, 'wpsg'), $nDone); ?></p>
<?php } ?>
<?php if ($nUnknown > 0) { ?>
<p><?php echo wpsg_translate(_n('#1# Datei lässt sich keiner Rechnung zuordnen und liegt nur in der alten Ablage.', '#1# Dateien lassen sich keiner Rechnung zuordnen und liegen nur in der alten Ablage.', $nUnknown, 'wpsg'), $nUnknown); ?></p>
<?php } ?>
<p><?php echo wpsg_translate(__('Datenaltbestand aus wpShopGermany 3: Bitte den Ordner #1# sichern und anschließend löschen.', 'wpsg'), '<code>'.$legacy_path.'</code>'); ?></p>
<?php echo $legacy_delete; ?>
<?php } ?>
</div>
<?php } ?>
<?php if (sizeof($this->view['arArchive']) === 0) { ?>
<p><?php echo __('Es sind noch keine Rechnungen vorhanden.', 'wpsg'); ?></p>
<?php } else { ?>
<?php
$archive_url = function($do, $period) {
return wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_rechnungen&noheader=1&do='.$do.'&period='.rawurlencode($period), 'wpsg-mod_rechnungen-archive');
};
$archive_actions = function($period, $year, $files) use ($archive_url) {
if ($files <= 0) return '';
$keep_until = $this->callMod('wpsg_mod_rechnungen', 'getArchiveKeepUntil', [$year]);
$confirm = wpsg_translate(__('Alle Rechnungsdateien aus #1# endgültig löschen? Die Einträge in den Bestellungen bleiben, die PDFs lassen sich danach nicht mehr herunterladen. Vorher das ZIP sichern!', 'wpsg'), $period);
if (date('Y-m-d') <= $keep_until) $confirm = wpsg_translate(__('Achtung: Die Aufbewahrungsfrist für #1# läuft noch bis #2#.', 'wpsg'), $period, wpsg_formatTimestamp(strtotime($keep_until), true))."\n\n".$confirm;
return '<span style="white-space:nowrap;"><a href="'.esc_url($archive_url('archiveZip', $period)).'" class="button">'.__('ZIP', 'wpsg').'</a> '.
'<a href="'.esc_url($archive_url('archiveDelete', $period)).'" class="button" onclick="return confirm(\''.esc_js($confirm).'\');">'.__('Löschen', 'wpsg').'</a></span> ';
};
?>
<style>.wpsg_mod_rechnungen_archive td { white-space:nowrap; } .wpsg_mod_rechnungen_archive th, .wpsg_mod_rechnungen_archive .wpsg_archive_deleted { white-space:normal; } .wpsg_archive_toggle { text-decoration:none; color:inherit; } .wpsg_archive_toggle .dashicons { vertical-align:text-bottom; }</style>
<?php
// Jahre ohne verbliebene Dateien, aber mit Löschvermerk: Ansicht „Gelöscht“
$arArchiveView = ['present' => [], 'deleted' => []];
foreach ($this->view['arArchive'] as $year => $arMonth) {
$bDeleted = (array_sum(array_column($arMonth, 'files')) === 0 && sizeof(array_filter(array_column($arMonth, 'deleted'))) > 0);
$arArchiveView[($bDeleted)?'deleted':'present'][$year] = $arMonth;
}
?>
<p class="wpsg_archive_views">
<a href="#" class="button button-primary" data-view="present"><?php echo wpsg_translate(__('Vorhanden (#1#)', 'wpsg'), sizeof($arArchiveView['present'])); ?></a>
<?php if (sizeof($arArchiveView['deleted']) > 0) { ?>
<a href="#" class="button" data-view="deleted"><?php echo wpsg_translate(__('Gelöscht (#1#)', 'wpsg'), sizeof($arArchiveView['deleted'])); ?></a>
<?php } ?>
</p>
<?php foreach ($arArchiveView as $view => $arYear) { if (sizeof($arYear) === 0) continue; ?>
<table class="table wpsg_mod_rechnungen_archive" data-view="<?php echo $view; ?>" <?php echo ($view === 'deleted')?'style="display:none;"':''; ?>>
<thead>
<tr>
<th><?php echo __('Zeitraum', 'wpsg'); ?></th>
<th class="col_number"><?php echo __('Rechnungen', 'wpsg'); ?></th>
<th class="col_number"><?php echo str_replace('skorrektur', 's­korrektur', esc_html(__('Rechnungskorrekturen', 'wpsg'))); ?></th>
<th class="col_number"><?php echo __('Dateien', 'wpsg'); ?></th>
<th class="col_number"><?php echo __('Größe', 'wpsg'); ?></th>
<th><?php echo __('Aufbewahrung bis', 'wpsg'); ?></th>
<th></th>
</tr>
</thead>
<tbody>
<?php $bOpen = ($view === 'present'); ?>
<?php foreach ($arYear as $year => $arMonth) { ?>
<?php $files = array_sum(array_column($arMonth, 'files')); ?>
<tr class="wpsg_archive_year" data-year="<?php echo $year; ?>">
<td><a href="#" class="wpsg_archive_toggle"><span class="dashicons dashicons-arrow-<?php echo ($bOpen)?'down':'right'; ?>"></span><strong><?php echo $year; ?></strong></a></td>
<td class="col_number"><strong><?php echo array_sum(array_column($arMonth, 'rnr')); ?></strong></td>
<td class="col_number"><strong><?php echo array_sum(array_column($arMonth, 'gnr')); ?></strong></td>
<td class="col_number"><strong><?php echo $files; ?></strong></td>
<td class="col_number"><strong><?php echo ($files > 0)?size_format(array_sum(array_column($arMonth, 'size')), 1):''; ?></strong></td>
<td><?php echo wpsg_formatTimestamp(strtotime($this->callMod('wpsg_mod_rechnungen', 'getArchiveKeepUntil', [$year])), true); ?></td>
<td class="col_actions"><?php echo $archive_actions(strval($year), $year, $files); ?></td>
</tr>
<?php foreach ($arMonth as $month => $m) { ?>
<tr class="wpsg_archive_month" data-year="<?php echo $year; ?>" <?php echo ($bOpen)?'':'style="display:none;"'; ?>>
<td> <?php echo $year.'/'.$month; ?></td>
<td class="col_number"><?php echo $m['rnr']; ?></td>
<td class="col_number"><?php echo $m['gnr']; ?></td>
<td class="col_number"><?php echo $m['files']; ?></td>
<td class="col_number"><?php echo ($m['files'] > 0)?size_format($m['size'], 1):''; ?></td>
<td></td>
<td class="col_actions" style="white-space:normal;">
<?php if ($m['files'] > 0) echo $archive_actions($year.'/'.$month, $year, $m['files']); ?>
<?php if ($m['deleted'] !== false) echo '<span class="wpsg_archive_deleted">'.wpsg_translate(__('Dateien gelöscht am #1#', 'wpsg'), wpsg_formatTimestamp(strtotime($m['deleted']), true)).'</span>'; ?>
</td>
</tr>
<?php } ?>
<?php $bOpen = false; ?>
<?php } ?>
</tbody>
</table>
<?php } ?>
<?php } ?>
|