15 <input id="form_artikel" name="artikel" type="hidden" />
16 <label for="form_datum">Rechnungsdatum</label><br>
17 <input id="form_datum" name="datum" size="8"> <img class="calendar" src="images/icons/calendar.gif" onclick="calendar(\\\'form_datum\\\',event)" />
19 <label for="form_steuer">Steuersatz</label><br>
20 <input id="form_steuer" name="steuer" size="10">
22 <label for="form_preis">Preis</label><br>
23 <input id="form_preis" name="preis" size="10">
24 <div class="buttons" style="margin-top: 15px;">
25 <button class="custom" onclick="return add_price(this);">Hinzufügen</button>
32 var price_popup = false;
33 function price_popup_open()
36 var options = { hideOnClick: false, canDragFunc: true };
37 var content = 'CONTENT_FORM';
39 price_popup = new Rico.Popup(options, false, false);
40 price_popup.createWindow('<strong>Verbinden</strong>',content,'auto','130px');
42 price_popup.openPopup(100,300);
44 price_popup.openPopup();
46 price_popup.titleDiv.childNodes[0].innerHTML = 'Preis hinzufügen';
48 var form_id = document.getElementById('edit_id');
49 var artikel = document.getElementById('form_artikel');
50 artikel.value = form_id.value;
52 var datum = document.getElementById('form_datum');
53 var preis = document.getElementById('form_preis');
54 if (datum.value.length)
62 var eid = document.getElementById('edit_id');
63 if (!eid || !eid.value.length) return false;
69 function add_price_callback(data)
71 info('Preis gespeichert');
75 function add_price(obj)
77 price_popup.closePopup();
79 var datum = document.getElementById('form_datum');
80 if (!datum.value.length) {
81 error('Kein Rechnungsdatum angegeben');
85 var steuer = document.getElementById('form_steuer');
86 if (!steuer.value.length) {
87 error('Kein Steuersatz angegeben');
91 var preis = document.getElementById('form_preis');
92 if (!preis.value.length) {
93 error('Kein Preis angegeben');
97 var source = document.getElementById('source');
98 if (!source) return false;
100 var parms = 'source=' + source.innerHTML + '&callback=price&';
101 ajax_request('function', parms+Form.serialize(obj.form), add_price_callback);
110 $jscode[] = str_replace('CONTENT_FORM', str_replace(array("\n"),
111 array("\\\n"), $form), $javascript);
115 <p style="margin-top: 5px; margin-bottom: 4px; text-align: center;">
116 <button class="custom" onclick="return open_popup()">Preis hinzufügen</button>
121 'table' => 'metro_artikel',
122 'title' => 'Artikelstammdaten',
123 'join' => array('metro_abteilung ON abteilung = metro_abteilung.id'),
128 'sql' => 'metro_artikel.id',
134 'specs' => "decPlaces: 0, thouSep: '', filterUI: 't='",
139 'specs' => "ClassName: 'alignrightpad', filterUI: 't3'",
141 'bezeichnung' => array(
142 'name' => 'Bezeichnung',
144 'specs' => "filterUI: 't'",
150 'specs' => "decPlaces: 2, ClassName: 'alignrightpad'",
151 'sql' => '(SELECT preis FROM metro_artikel_preis ' .
152 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
158 'specs' => "decPlaces: 2, ClassName: 'alignrightpad'",
159 'sql' => '(SELECT preis * ((100 + steuersatz)/100) FROM metro_artikel_preis ' .
160 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
166 'sql' => '(SELECT datum FROM metro_artikel_preis ' .
167 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
170 'hersteller' => array(
171 'name' => 'Hersteller',
173 'specs' => "filterUI: 't'",
175 'abteilung' => array(
176 'name' => 'Abteilung',
178 'specs' => "filterUI: 's'",
179 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','name').", 0, '')",
180 'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.name FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY name",
186 'specs' => "ClassName: 'aligncenter', filterUI: 's'",
192 'specs' => "ClassName: 'aligncenter', filterUI: 's'",
193 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_vpe','id','name').", 0, '')",
194 'distinct' => "SELECT DISTINCT vpe,metro_vpe.name FROM metro_artikel JOIN metro_vpe ON vpe = metro_vpe.id ORDER BY name",
199 'name' => 'Artikelnummer',
204 'abteilung' => array(
205 'name' => 'Abteilung',
207 'options' => 'SELECT id,name AS text FROM metro_abteilung ORDER BY name',
208 'option_empty' => '-- select --',
212 'name' => 'Verpackungseinheit',
214 'options' => 'SELECT id,name AS text FROM metro_vpe ORDER BY name',
215 'option_empty' => '-- select --',
224 'bezeichnung' => array(
225 'name' => 'Bezeichnung',
236 'hersteller' => array(
237 'name' => 'Hersteller',
243 'name' => 'Artikel nicht mehr im Programm',
253 'title' => 'Preisverlauf',
255 'table' => 'metro_artikel_preis',
256 'where' => 'artikel = {id} ORDER BY datum DESC',
266 'steuersatz' => array(
270 'specs' => "decPlaces: 2, ClassName: 'alignrightpad'",
276 'specs' => "decPlaces: 2, ClassName: 'alignrightpad'",
282 'specs' => "decPlaces: 2, ClassName: 'alignrightpad'",
283 'sql' => 'preis * ((100 + steuersatz)/100)',
292 'callbacks' => array(
301 if (empty($_POST['artikel']) || empty($_POST['datum']) || empty($_POST['preis']))
302 return array('error' => 'Nicht ausreichend Daten übermittelt');
304 $date = format_date($_POST['datum']);
305 $_POST['preis'] = str_replace(',','.',$_POST['preis']);
307 $sql = sprintf("INSERT INTO metro_artikel_preis (artikel,preis,steuersatz,datum,sys_user,sys_edit) " .
308 "VALUES (%d,%.3f,%d,'%s',%s,now())",
313 $db->quote($_SESSION['sys']['login']), $row['id']);
315 $sth = $db->query($sql);