X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=js%2Fkivi.Order.js;h=5d891d56eaa767aede739681bea79c89e99bf2bc;hb=4a79f4849940c1654d6d2cd60d4847106529d2b0;hp=ad84d98e0ff3586f0ceb2b75473264cd023344bb;hpb=7ede2933981323a1619a3b5ece3cc1f60a532a40;p=kivitendo-erp.git diff --git a/js/kivi.Order.js b/js/kivi.Order.js index ad84d98e0..5d891d56e 100644 --- a/js/kivi.Order.js +++ b/js/kivi.Order.js @@ -138,7 +138,7 @@ namespace('kivi.Order', function(ns) { email_dialog.dialog("close"); }; - ns.reload_cv_dependend_selections = function() { + ns.reload_cv_dependant_selections = function() { var data = $('#order_form').serializeArray(); data.push({ name: 'action', value: 'Order/customer_vendor_changed' }); @@ -182,6 +182,67 @@ namespace('kivi.Order', function(ns) { html_elt.html(price_str); }; + ns.load_second_row = function(row) { + var item_id_dom = $(row).find('[name="orderitem_ids[+]"]'); + var div_elt = $(row).find('[name="second_row"]'); + + if ($(div_elt).data('loaded') == 1) { + return; + } + var data = $('#order_form').serializeArray(); + data.push({ name: 'action', value: 'Order/load_second_rows' }); + data.push({ name: 'item_ids[]', value: item_id_dom.val() }); + + $.post("controller.pl", data, kivi.eval_json_result); + }; + + ns.load_all_second_rows = function() { + var rows = $('.row_entry').filter(function(idx, elt) { + return $(elt).find('[name="second_row"]').data('loaded') != 1; + }); + + var item_ids = $.map(rows, function(elt) { + var item_id = $(elt).find('[name="orderitem_ids[+]"]').val(); + return { name: 'item_ids[]', value: item_id }; + }); + + if (item_ids.length == 0) { + return; + } + + var data = $('#order_form').serializeArray(); + data.push({ name: 'action', value: 'Order/load_second_rows' }); + data = data.concat(item_ids); + + $.post("controller.pl", data, kivi.eval_json_result); + }; + + ns.hide_second_row = function(row) { + $(row).children().not(':first').hide(); + $(row).data('expanded', 0); + var elt = $(row).find('.expand'); + elt.attr('src', "image/expand.svg"); + elt.attr('alt', kivi.t8('Show details')); + elt.attr('title', kivi.t8('Show details')); + }; + + ns.show_second_row = function(row) { + $(row).children().not(':first').show(); + $(row).data('expanded', 1); + var elt = $(row).find('.expand'); + elt.attr('src', "image/collapse.svg"); + elt.attr('alt', kivi.t8('Hide details')); + elt.attr('title', kivi.t8('Hide details')); + }; + + ns.toggle_second_row = function(row) { + if ($(row).data('expanded') == 1) { + ns.hide_second_row(row); + } else { + ns.show_second_row(row); + } + }; + ns.init_row_handlers = function() { kivi.run_once_for('.recalc', 'on_change_recalc', function(elt) { $(elt).change(ns.recalc_amounts_and_taxes); @@ -198,34 +259,48 @@ namespace('kivi.Order', function(ns) { kivi.run_once_for('.row_entry', 'on_kbd_click_show_hide', function(elt) { $(elt).keydown(function(event) { - var row; if(event.keyCode == 40 && event.shiftKey === true) { // shift arrow down event.preventDefault(); - row = $(event.target).parents(".row_entry").first(); - $(row).children().not(':first').show(); + var row = $(event.target).parents(".row_entry").first(); + ns.load_second_row(row); + ns.show_second_row(row); return false; } if(event.keyCode == 38 && event.shiftKey === true) { // shift arrow up event.preventDefault(); - row = $(event.target).parents(".row_entry").first(); - $(row).children().not(':first').hide(); + var row = $(event.target).parents(".row_entry").first(); + ns.hide_second_row(row); return false; } }); - $(elt).dblclick(function(event) { + }); + + kivi.run_once_for('.expand', 'expand_second_row', function(elt) { + $(elt).click(function(event) { event.preventDefault(); var row = $(event.target).parents(".row_entry").first(); - $(row).children().not(':first').toggle(); + ns.load_second_row(row); + ns.toggle_second_row(row); return false; - }); + }) }); + }; - ns.redisplay_linetotals = function(data) { - $('.row_entry [name="linetotal"]').each(function(idx, elt) { - $(elt).html(data[idx]); + ns.redisplay_line_values = function(is_sales, data) { + $('.row_entry').each(function(idx, elt) { + $(elt).find('[name="linetotal"]').html(data[idx][0]); + if (is_sales && $(elt).find('[name="second_row"]').data('loaded') == 1) { + var mt = data[idx][1]; + var mp = data[idx][2]; + var h = '