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');
17 if (substr($_SERVER["SCRIPT_FILENAME"],-10) == '/index.php' &&
18 !empty($_GET['id'])) {
19 $_SESSION['ordersatz'] = $_GET['id'];
20 $done = is_done($_GET['id']);
24 Actions::instance()->addLink(new Link(array('id' => 'btn_import',
25 'icon' => 'masks/metro/import.png',
26 'title' => 'Neue Artikel importieren',
27 'function' => 'import_articles')));
30 Actions::instance()->addLink(new Link(array('id' => 'btn_pdf',
31 'icon' => 'masks/metro/pdf_document.png',
32 'title' => 'PDF Vorschau',
33 'function' => 'build_pdf')));
36 Actions::instance()->addLink(new Link(array('id' => 'btn_finish',
37 'icon' => 'masks/metro/hp_folder_finished.png',
38 'title' => 'Ordersatz Abschließen und Versenden',
39 'function' => 'confirm_finish')));
45 Hallinta.registerGridMenu('main', 1, {
50 ['1 mal bestellen', '1', 1],
51 ['2 mal bestellen', '2', 2],
52 ['3 mal bestellen', '3', 3],
53 ['4 mal bestellen', '4', 4],
54 ['5 mal bestellen', '5', 5],
55 ['6 mal bestellen', '6', 6],
56 ['7 mal bestellen', '7', 7],
57 ['8 mal bestellen', '8', 8],
58 ['10 mal bestellen', '10', 10],
59 ['12 mal bestellen', '12', 12],
60 ['Wert eingeben', 'Bitte geben Sie die gewünschte Menge ein', 'prompt']
68 function build_pdf_callback(data)
71 window.open('ajax/ajax.php?tmpdir='+data.tmpdir+'&source='+Hallinta.pageSource+'&func=file&name=download','_blank');
76 ajax_request('function', 'callback=pdf', build_pdf_callback);
80 function finish_callback(data)
82 if (data.status == true) {
83 info('Ordersatz verschickt');
85 confirm("Der Ordersatz wurde verschickt.");
86 window.location.href = './?mask=metro__ordersatz';
90 function confirm_finish()
92 if (confirm("Bei Abschluß wird ein Fax zu Metro und eine Kopie per Mail an den Koch geschickt."))
93 ajax_request('function', 'callback=send', finish_callback);
97 function import_articles_callback(data)
99 if (data.status == true) {
100 info('Ordersatz aktualisiert');
103 grid_update(Hallinta.grid);
105 confirm(data.count + ' Artikel zum Ordersatz hinzugefügt.');
109 function import_articles()
111 ajax_request('function', 'callback=import', import_articles_callback);
117 JavaScript::instance()->add($jscode);
119 function get_title($id)
123 $query = sprintf('SELECT name FROM metro_ordersatz WHERE id = %d', $id);
124 $sth = $db->query($query);
125 $row = $sth->fetch();
126 if ($row) return 'Ordersatz für ' . $row['name'];
127 else return 'Unbekannter Ordersatz';
130 # INSERT INTO metro_ordersatz_pos (ordersatz,artikel,sys_user,sys_edit) SELECT ORDERID,id,'joey',now() FROM metro_artikel;
131 # DELETE FROM metro_ordersatz_pos WHERE ordersatz = ORDERID AND anzahl IS NULL
133 'table' => 'metro_ordersatz',
134 'join' => array('metro_ordersatz_pos ON ordersatz = metro_ordersatz.id',
135 'metro_artikel ON artikel = metro_artikel.id AND removed = 0'),
136 'title' => get_title($_SESSION['ordersatz']),
137 'edit_title' => 'Ordersatz',
138 'where' => sprintf('ordersatz = %d AND owner = %d', $_SESSION['ordersatz'], $_SESSION['sys']['uid']),
142 'sql' => 'metro_artikel.id',
148 'specs' => array('ClassName' => 'alignrightpad'),
156 'specs' => array('decPlaces' => 0, 'thouSep' => ''),
163 'specs' => array('ClassName' => 'alignrightpad'),
165 'bezeichnung' => array(
166 'name' => 'Bezeichnung',
174 'specs' => array('decPlaces' => 2, 'ClassName' => 'alignrightpad'),
175 'sql' => '(SELECT preis * ((100 + steuersatz)/100) FROM metro_artikel_preis ' .
176 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
182 'sql' => '(SELECT datum FROM metro_artikel_preis ' .
183 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
186 'hersteller' => array(
187 'name' => 'Hersteller',
196 'specs' => array('ClassName' => 'aligncenter'),
197 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_vpe','id','name').", 0, '')",
198 'distinct' => "SELECT DISTINCT vpe,metro_vpe.name FROM metro_artikel JOIN metro_vpe ON vpe = metro_vpe.id ORDER BY name",
200 'abteilung' => array(
201 'name' => 'Abteilung',
205 'specs' => array('ClassName' => 'aligncenter'),
206 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','name').", 0, '')",
207 'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.name FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY name",
213 'sql' => 'abteilung',
215 'specs' => array('ClassName' => 'aligncenter'),
216 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','gang').", 0, '')",
217 'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.gang FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY gang",
221 'callbacks' => array(
222 'cellsave' => cb_cellsave,
225 'import' => cb_import,
228 'download' => process_download,
239 unset($mask['edit']);
240 $mask['join'] = str_replace(' AND removed = 0','',$mask['join']);
243 function cb_cellsave()
247 if ($_POST['value'] == 0)
248 $sql = sprintf("UPDATE metro_ordersatz_pos SET anzahl = NULL, sys_user = %s, sys_edit = now() WHERE ordersatz = %d AND artikel = %d",
249 $db->quote($_SESSION['sys']['login']),
250 $_SESSION['ordersatz'], $_POST['id']);
252 $sql = sprintf("UPDATE metro_ordersatz_pos SET anzahl = %d, sys_user = %s, sys_edit = now() WHERE ordersatz = %d AND artikel = %d",
253 $_POST['value'], $db->quote($_SESSION['sys']['login']),
254 $_SESSION['ordersatz'], $_POST['id']);
256 $sth = $db->query($sql);
262 $tmpdir = mk_tempdir();
263 $result = ordersatz_write($_SESSION['ordersatz'], $tmpdir, false);
265 if ($result !== true) {
268 return array('error' => $result);
271 return array('tmpdir' => substr($tmpdir,strlen($_SESSION['sys']['basedir'])));
274 function process_download()
276 if (strpos($_GET['tmpdir'], '..') !== false)
279 $fname = $_SESSION['sys']['basedir'] . $_GET['tmpdir'] . '/ordersatz.pdf';
281 if (!file_exists($fname) || !is_file($fname))
282 return 'File not found';
285 rm_tempdir($_SESSION['sys']['basedir'] . $_GET['tmpdir']);
290 $tmpdir = mk_tempdir();
291 $result = ordersatz_write($_SESSION['ordersatz'], $tmpdir, true);
293 if ($result !== true)
294 return array('error' => $result);
298 return array('status' => true);
305 $sql = sprintf("SELECT count(*) AS count FROM metro_ordersatz_pos WHERE ordersatz = %d",
306 $_SESSION['ordersatz']);
307 $sth = $db->query($sql);
308 $row = $sth->fetch();
309 $old = $row['count'];
311 $sql = sprintf("INSERT INTO metro_ordersatz_pos (ordersatz,artikel,sys_user,sys_edit) " .
312 "SELECT %d,metro_artikel.id,%s,now() FROM metro_artikel " .
313 "LEFT JOIN metro_ordersatz_pos ON artikel = metro_artikel.id AND ordersatz = %d " .
314 "WHERE metro_ordersatz_pos.id IS NULL",
315 $_SESSION['ordersatz'],
316 $db->quote($_SESSION['sys']['login']),
317 $_SESSION['ordersatz']);
320 $sql = sprintf("SELECT count(*) AS count FROM metro_ordersatz_pos WHERE ordersatz = %d",
321 $_SESSION['ordersatz']);
322 $sth = $db->query($sql);
323 $row = $sth->fetch();
324 $new = $row['count'];
326 return array('status' => true, 'count' => $new - $old);