4 E-Mail-Adresse für Kopie
5 Telefonnr für Rückfragen:
9 - Ordersatz auswählen || neuen Ordersatz erstellen || Ordersatz kopieren
10 - Ordersatz abschließen = PDF-Datei erzeugen, archivieren, per Mail, per Fax
13 include_once($_SESSION['sys']['basedir'].'masks/metro/utils.php');
14 include_once($_SESSION['sys']['basedir'].'lib/mail.php');
16 if (substr($_SERVER["SCRIPT_FILENAME"],-10) == '/index.php' &&
17 !empty($_GET['id'])) {
18 $_SESSION['ordersatz'] = $_GET['id'];
19 $done = is_done($_GET['id']);
24 grid_column_edit[1] = {
29 ['1 mal bestellen', '1', 1],
30 ['2 mal bestellen', '2', 2],
31 ['3 mal bestellen', '3', 3],
32 ['4 mal bestellen', '4', 4],
33 ['5 mal bestellen', '5', 5],
34 ['6 mal bestellen', '6', 6],
35 ['7 mal bestellen', '7', 7],
36 ['8 mal bestellen', '8', 8],
37 ['10 mal bestellen', '10', 10],
38 ['12 mal bestellen', '12', 12],
39 ['Wert eingeben', 'Bitte geben Sie die gewünschte Menge ein', 'prompt']
43 function build_pdf_callback(data)
46 window.open('ajax/ajax.php?tmpdir='+data.tmpdir+'&source=metro__ordersatz_pos&func=file&name=download','_blank');
51 var source = document.getElementById('source');
52 if (!source) return false;
54 var parms = 'source=' + source.innerHTML + '&callback=pdf';
55 ajax_request('function', parms, build_pdf_callback);
59 function finish_callback(data)
61 if (data.status == true) {
62 info('Ordersatz verschickt');
64 confirm("Der Ordersatz wurde verschickt.");
65 window.location.href = './?mask=metro__ordersatz';
71 var source = document.getElementById('source');
72 if (!source) return false;
74 var parms = 'source=' + source.innerHTML + '&callback=send';
75 ajax_request('function', parms, finish_callback);
79 function import_articles_callback(data)
81 if (data.status == true) {
82 info('Ordersatz aktualisiert');
87 confirm(data.count + ' Artikel zum Ordersatz hinzugefügt.');
91 function import_articles()
93 var source = document.getElementById('source');
94 if (!source) return false;
96 var parms = 'source=' + source.innerHTML + '&callback=import';
97 ajax_request('function', parms, import_articles_callback);
102 $javascript->add($jscode);
106 <p style="margin-top: 0px; margin-bottom: 4px; text-align: center;">
107 <button class="custom" onclick="return import_articles()">Artikel importieren</button>
109 <button class="custom" onclick="return build_pdf()">PDF erstellen</button>
111 <button class="custom" onclick="return finish()">Abschließen</button>
112 <br>Bei Abschluß wird ein Fax zu Metro und eine Kopie per Mail an den Koch geschickt.
116 function get_title($id)
120 $query = sprintf('SELECT name FROM metro_ordersatz WHERE id = %d', $id);
121 $sth = $db->query($query);
122 $row = $sth->fetch();
123 if ($row) return 'Ordersatz für ' . $row['name'];
124 else return 'Unbekannter Ordersatz';
127 # INSERT INTO metro_ordersatz_pos (ordersatz,artikel,sys_user,sys_edit) SELECT ORDERID,id,'joey',now() FROM metro_artikel;
128 # DELETE FROM metro_ordersatz_pos WHERE ordersatz = ORDERID AND anzahl IS NULL
130 'table' => 'metro_ordersatz',
131 'join' => array('metro_ordersatz_pos ON ordersatz = metro_ordersatz.id',
132 'metro_artikel ON artikel = metro_artikel.id AND removed = 0'),
133 'title' => get_title($_SESSION['ordersatz']),
134 'edit_title' => 'Ordersatz',
135 'where' => sprintf('ordersatz = %d AND owner = %d', $_SESSION['ordersatz'], $_SESSION['sys']['uid']),
139 'sql' => 'metro_artikel.id',
145 'specs' => "ClassName: 'alignrightpad'",
155 'specs' => "ClassName: 'alignrightpad', filterUI: 't2'",
157 'bezeichnung' => array(
158 'name' => 'Bezeichnung',
160 'specs' => "filterUI: 't'",
166 'specs' => "decPlaces: 2, ClassName: 'alignrightpad'",
167 'sql' => '(SELECT preis * ((100 + steuersatz)/100) FROM metro_artikel_preis ' .
168 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
174 'sql' => '(SELECT datum FROM metro_artikel_preis ' .
175 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
178 'hersteller' => array(
179 'name' => 'Hersteller',
181 'specs' => "filterUI: 't5'",
186 'specs' => "ClassName: 'aligncenter', filterUI: 's'",
187 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_vpe','id','name').", 0, '')",
188 'distinct' => "SELECT DISTINCT vpe,metro_vpe.name FROM metro_artikel JOIN metro_vpe ON vpe = metro_vpe.id ORDER BY name",
190 'abteilung' => array(
191 'name' => 'Abteilung',
193 'specs' => "ClassName: 'aligncenter', filterUI: 's'",
194 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','name').", 0, '')",
195 'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.name FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY name",
201 'sql' => 'abteilung',
202 'specs' => "ClassName: 'aligncenter', filterUI: 's'",
203 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','gang').", 0, '')",
204 'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.gang FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY gang",
215 'callbacks' => array(
216 'cellsave' => cb_cellsave,
219 'import' => cb_import,
222 'download' => process_download,
233 unset($mask['edit']);
234 $mask['join'] = str_replace(' AND removed = 0','',$mask['join']);
237 function cb_cellsave()
241 if ($_POST['value'] == 0)
242 $sql = sprintf("UPDATE metro_ordersatz_pos SET anzahl = NULL, sys_user = %s, sys_edit = now() WHERE ordersatz = %d AND artikel = %d",
243 $db->quote($_SESSION['sys']['login']),
244 $_SESSION['ordersatz'], $_POST['id']);
246 $sql = sprintf("UPDATE metro_ordersatz_pos SET anzahl = %d, sys_user = %s, sys_edit = now() WHERE ordersatz = %d AND artikel = %d",
247 $_POST['value'], $db->quote($_SESSION['sys']['login']),
248 $_SESSION['ordersatz'], $_POST['id']);
250 $sth = $db->query($sql);
256 $tmpdir = mk_tempdir();
257 $result = ordersatz_write($_SESSION['ordersatz'], $tmpdir, false);
259 if ($result !== true) {
262 return array('error' => $result);
265 return array('tmpdir' => substr($tmpdir,strlen($_SESSION['sys']['basedir'])));
268 function process_download()
270 if (strpos($_GET['tmpdir'], '..') !== false)
273 $fname = $_SESSION['sys']['basedir'] . $_GET['tmpdir'] . '/ordersatz.pdf';
275 if (!file_exists($fname) || !is_file($fname))
276 return 'File not found';
279 rm_tempdir($_SESSION['sys']['basedir'] . $_GET['tmpdir']);
284 $tmpdir = mk_tempdir();
285 $result = ordersatz_write($_SESSION['ordersatz'], $tmpdir, true);
287 if ($result !== true)
288 return array('error' => $result);
292 return array('status' => true);
299 $sql = sprintf("SELECT count(*) AS count FROM metro_ordersatz_pos WHERE ordersatz = %d",
300 $_SESSION['ordersatz']);
301 $sth = $db->query($sql);
302 $row = $sth->fetch();
303 $old = $row['count'];
305 $sql = sprintf("INSERT INTO metro_ordersatz_pos (ordersatz,artikel,sys_user,sys_edit) " .
306 "SELECT %d,metro_artikel.id,%s,now() FROM metro_artikel " .
307 "LEFT JOIN metro_ordersatz_pos ON artikel = metro_artikel.id AND ordersatz = %d " .
308 "WHERE metro_ordersatz_pos.id IS NULL",
309 $_SESSION['ordersatz'],
310 $db->quote($_SESSION['sys']['login']),
311 $_SESSION['ordersatz']);
314 $sql = sprintf("SELECT count(*) AS count FROM metro_ordersatz_pos WHERE ordersatz = %d",
315 $_SESSION['ordersatz']);
316 $sth = $db->query($sql);
317 $row = $sth->fetch();
318 $new = $row['count'];
320 return array('status' => true, 'count' => $new - $old);