X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/684bfa98815dc55f7ef7ff48547667673f1aae32..0956f2d427fe43c70fca245bc55ce85423b76ce8:/js/kivi.Order.js diff --git a/js/kivi.Order.js b/js/kivi.Order.js index 6c739b5d5..5f83a79fd 100644 --- a/js/kivi.Order.js +++ b/js/kivi.Order.js @@ -94,6 +94,7 @@ namespace('kivi.Order', function(ns) { if (!ns.check_cv()) return; var data = $('#order_form').serializeArray(); + data.push({ name: 'order.language_id', value: $('#language_id').val() }); // language from print options data.push({ name: 'action', value: 'Order/show_email_dialog' }); $.post("controller.pl", data, kivi.eval_json_result); @@ -162,7 +163,7 @@ namespace('kivi.Order', function(ns) { $('#nr_in_title').html($(elt).val()); }; - ns.reload_cv_dependant_selections = function() { + ns.reload_cv_dependent_selections = function() { var data = $('#order_form').serializeArray(); data.push({ name: 'action', value: 'Order/customer_vendor_changed' }); @@ -173,6 +174,54 @@ namespace('kivi.Order', function(ns) { $(event.target).val(kivi.format_amount(kivi.parse_amount($(event.target).val()), -2)); }; + ns.update_exchangerate = function(event) { + var rate_input = $('#order_exchangerate_as_null_number'); + rate_input.prop('disabled', true); + + var data = $('#order_form').serializeArray(); + data.push({ name: 'action', value: 'Order/update_exchangerate' }); + + $.ajax({ + url: 'controller.pl', + data: data, + method: 'POST', + dataType: 'json', + success: function(data){ + if (!data.is_standard) { + $('#currency_name').text(data.currency_name); + var rate_text = $('#exchangerate_text'); + if (data.exchangerate) { + rate_text.text(data.exchangerate); + rate_input.hide(); + } else { + rate_text.text(''); + rate_input.prop('disabled', false); + rate_input.show().val(0); + } + $('#exchangerate_settings').show(); + } else { + $('#exchangerate_settings').hide(); + } + console.log(data.is_standard); + console.log(data.exchangerate); + console.log($('#old_exchangerate').val()); + if ($('#order_currency_id').val() != $('#old_currency_id').val() || + !data.is_standard && data.exchangerate != $('#old_exchangerate').val()) { + kivi.display_flash('warning', kivi.t8('You have changed the currency or exchange rate. Please update prices.')); + } + $('#old_currency_id').val($('#order_currency_id').val()); + $('#old_exchangerate').val(data.exchangerate); + } + }); + }; + + ns.exchangerate_changed = function(event) { + if (kivi.parse_amount($('#order_exchangerate_as_null_number').val()) != kivi.parse_amount($('#old_exchangerate').val())) { + kivi.display_flash('warning', kivi.t8('You have changed the currency or exchange rate. Please update prices.')); + $('#old_exchangerate').val($('#order_exchangerate_as_null_number').val()); + } + }; + ns.recalc_amounts_and_taxes = function() { var data = $('#order_form').serializeArray(); data.push({ name: 'action', value: 'Order/recalc_amounts_and_taxes' }); @@ -339,6 +388,9 @@ namespace('kivi.Order', function(ns) { $('.row_entry [name="position"]').each(function(idx, elt) { $(elt).html(idx+1); }); + $('.row_entry').each(function(idx, elt) { + $(elt).data("position", idx+1); + }); }; ns.reorder_items = function(order_by) { @@ -374,14 +426,33 @@ namespace('kivi.Order', function(ns) { ns.renumber_positions(); }; + ns.get_insert_before_item_id = function(wanted_pos) { + if (wanted_pos === '') return; + + var insert_before_item_id; + // selection by data does not seem to work if data is changed at runtime + // var elt = $('.row_entry [data-position="' + wanted_pos + '"]'); + $('.row_entry').each(function(idx, elt) { + if ($(elt).data("position") == wanted_pos) { + insert_before_item_id = $(elt).find('[name="orderitem_ids[+]"]').val(); + return false; + } + }); + + return insert_before_item_id; + }; + ns.add_item = function() { if ($('#add_item_parts_id').val() === '') return; if (!ns.check_cv()) return; $('#row_table_id thead a img').remove(); + var insert_before_item_id = ns.get_insert_before_item_id($('#add_item_position').val()); + var data = $('#order_form').serializeArray(); - data.push({ name: 'action', value: 'Order/add_item' }); + data.push({ name: 'action', value: 'Order/add_item' }, + { name: 'insert_before_item_id', value: insert_before_item_id }); $.post("controller.pl", data, kivi.eval_json_result); }; @@ -439,12 +510,12 @@ namespace('kivi.Order', function(ns) { ns.multi_items_dialog_disable_continue = function() { // disable keydown-event and continue button to prevent // impatient users to add parts multiple times - $('#multi_items_result input').off("keydown"); + $('#multi_items_result input, #multi_items_position').off("keydown"); $('#multi_items_dialog_continue_button').prop('disabled', true); }; ns.multi_items_dialog_enable_continue = function() { - $('#multi_items_result input').keydown(function(event) { + $('#multi_items_result input, #multi_items_position').keydown(function(event) { if(event.keyCode == 13) { event.preventDefault(); ns.add_multi_items(); @@ -475,9 +546,12 @@ namespace('kivi.Order', function(ns) { ns.multi_items_dialog_disable_continue(); + var insert_before_item_id = ns.get_insert_before_item_id($('#multi_items_position').val()); + var data = $('#order_form').serializeArray(); data = data.concat($('#multi_items_form').serializeArray()); - data.push({ name: 'action', value: 'Order/add_multi_items' }); + data.push({ name: 'action', value: 'Order/add_multi_items' }, + { name: 'insert_before_item_id', value: insert_before_item_id }); $.post("controller.pl", data, kivi.eval_json_result); }; @@ -761,11 +835,15 @@ namespace('kivi.Order', function(ns) { $(function() { if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation' ) { - $('#order_customer_id').change(kivi.Order.reload_cv_dependant_selections); + $('#order_customer_id').change(kivi.Order.reload_cv_dependent_selections); } else { - $('#order_vendor_id').change(kivi.Order.reload_cv_dependant_selections); + $('#order_vendor_id').change(kivi.Order.reload_cv_dependent_selections); } + $('#order_currency_id').change(kivi.Order.update_exchangerate); + $('#order_transdate_as_date').change(kivi.Order.update_exchangerate); + $('#order_exchangerate_as_null_number').change(kivi.Order.exchangerate_changed); + if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation' ) { $('#add_item_parts_id').on('set_item:PartPicker', function(e,o) { $('#add_item_sellprice_as_number').val(kivi.format_amount(o.sellprice, -2)) }); } else {