From: Joey Schulze Date: Fri, 24 Jan 2014 12:11:54 +0000 (+0100) Subject: Support pre-checking of duplicate item numbers before saving X-Git-Url: https://git.infodrom.org/?p=misc%2Fhallinta-metro;a=commitdiff_plain;h=a7c7cd8a381fbeade1d10f12a2ef49a02cb564a2;hp=16e5a2b1e6e711c9d8315d4594e328a1e07f765f Support pre-checking of duplicate item numbers before saving --- diff --git a/artikel.php b/artikel.php index aa135b0..577eae3 100644 --- a/artikel.php +++ b/artikel.php @@ -29,6 +29,59 @@ $form = ' '; $javascript = << 0) { + var text = "Diese Artikelnummer ist bereits " + data.count + " mal vorhanden.\\nSoll der Artikel trotzdem gespeichert werden?"; + if (confirm(text)) + form_save(custom_this); + } else { + form_save(custom_this); + } +} + +function custom_save(obj) +{ + custom_this = obj; + var id = document.getElementById('edit_id'); + + if (!id.value.length) + return custom_insert(obj); + + var artnr = document.getElementById('edit_artnr'); + + var parms = 'source=' + source.innerHTML + '&callback=artnr'; + parms += '&artnr=' + artnr.value; + parms += '&artikel=' + id.value; + ajax_request('function', parms, custom_save_callback); + + return false; +} + +function custom_insert_callback(data) +{ + if (data.count > 0) { + var text = "Diese Artikelnummer ist bereits " + data.count + " mal vorhanden.\\nSoll der Artikel trotzdem hinzugefügt werden?"; + if (confirm(text)) + form_insert(custom_this); + } else { + form_insert(custom_this); + } +} + +function custom_insert(obj) +{ + custom_this = obj; + var artnr = document.getElementById('edit_artnr'); + + var parms = 'source=' + source.innerHTML + '&callback=artnr'; + parms += '&artnr=' + artnr.value; + ajax_request('function', parms, custom_insert_callback); + + return false; +} + var price_popup = false; function price_popup_open() { @@ -105,6 +158,12 @@ function add_price(obj) return false; } +Rico.onLoad(function(){ + var btn = document.getElementById('button_save'); + btn.onclick = function () {return custom_save(this);}; + var btn = document.getElementById('button_insert'); + btn.onclick = function () {return custom_insert(this);}; +}); EOC; $jscode[] = str_replace('CONTENT_FORM', str_replace(array("\n"), @@ -287,6 +346,7 @@ $mask = array( ), 'callbacks' => array( 'price' => cb_price, + 'artnr' => cb_artnr, ), ); @@ -313,4 +373,21 @@ function cb_price() return true; } +function cb_artnr() +{ + global $db; + + if (empty($_POST['artnr'])) + return array('error' => 'Nicht ausreichend Daten übermittelt'); + + $sql = sprintf("SELECT count(*) AS count FROM metro_artikel WHERE artnr = %d", $_POST['artnr']); + if (!empty($_POST['artikel'])) + $sql .= sprintf(" AND id <> %d", $_POST['artikel']); + + $sth = $db->query($sql); + $row = $sth->fetch(); + + return array('count' => $row['count']); +} + ?>