X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=js%2Fkivi.Order.js;h=e524406917054e70d1c79f3e8b4a61358b26e378;hb=6e8c0011e9724aa7e06cd04e62fb95dcc97cdf10;hp=e7815d497d652275d2b9736c43fa2685738425f1;hpb=452e195fa7d3ecf6cb625938d8016dd04bcc33ce;p=kivitendo-erp.git diff --git a/js/kivi.Order.js b/js/kivi.Order.js index e7815d497..e52440691 100644 --- a/js/kivi.Order.js +++ b/js/kivi.Order.js @@ -28,7 +28,7 @@ namespace('kivi.Order', function(ns) { } if (pos.length > 0) { - question = question || kivi.t8("Do you really want to save?"); + question = question || kivi.t8("Do you really want to continue?"); return confirm(kivi.t8("There are duplicate parts at positions") + "\n" + pos.join(', ') + "\n" + question); @@ -51,6 +51,7 @@ namespace('kivi.Order', function(ns) { if (warn_on_reqdate && !ns.check_valid_reqdate()) 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/' + action }); $.post("controller.pl", data, kivi.eval_json_result); @@ -82,29 +83,12 @@ namespace('kivi.Order', function(ns) { var data = $('#order_form').serializeArray(); data = data.concat($('#print_options_form').serializeArray()); + data.push({ name: 'order.language_id', value: $('#language_id').val() }); // language from print options data.push({ name: 'action', value: 'Order/print' }); $.post("controller.pl", data, kivi.eval_json_result); }; - ns.download_pdf = function(pdf_filename, key) { - var data = [{ name: 'action', value: 'Order/download_pdf' }, - { name: 'type', value: $('#type').val() }, - { name: 'pdf_filename', value: pdf_filename }, - { name: 'key', value: key }]; - $.download("controller.pl", data); - }; - - ns.email = function(warn_on_duplicates) { - if (warn_on_duplicates && !ns.check_duplicate_parts(kivi.t8("Do you really want to send by mail?"))) return; - if (!ns.check_cv()) return; - - var data = $('#order_form').serializeArray(); - data.push({ name: 'action', value: 'Order/show_email_dialog' }); - - $.post("controller.pl", data, kivi.eval_json_result); - }; - var email_dialog; ns.setup_send_email_dialog = function() { @@ -155,6 +139,7 @@ namespace('kivi.Order', function(ns) { var data = $('#order_form').serializeArray(); data = data.concat($('[name^="email_form."]').serializeArray()); data = data.concat($('[name^="print_options."]').serializeArray()); + data.push({ name: 'order.language_id', value: $('#language_id').val() }); // language from print options data.push({ name: 'action', value: 'Order/send_email' }); $.post("controller.pl", data, kivi.eval_json_result); }; @@ -167,7 +152,8 @@ namespace('kivi.Order', function(ns) { $('#nr_in_title').html($(elt).val()); }; - ns.reload_cv_dependant_selections = function() { + ns.reload_cv_dependent_selections = function() { + $('#order_shipto_id').val(''); var data = $('#order_form').serializeArray(); data.push({ name: 'action', value: 'Order/customer_vendor_changed' }); @@ -178,6 +164,68 @@ namespace('kivi.Order', function(ns) { $(event.target).val(kivi.format_amount(kivi.parse_amount($(event.target).val()), -2)); }; + ns.reformat_number_as_null_number = function(event) { + if ($(event.target).val() === '') { + return; + } + ns.reformat_number(event); + }; + + ns.update_exchangerate = function(event) { + if (!ns.check_cv()) { + $('#order_currency_id').val($('#old_currency_id').val()); + return; + } + + var rate_input = $('#order_exchangerate_as_null_number'); + // unset exchangerate if currency changed + if ($('#order_currency_id').val() !== $('#old_currency_id').val()) { + rate_input.val(''); + } + + // only set exchangerate if unset + if (rate_input.val() !== '') { + return; + } + + 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); + if (data.exchangerate) { + rate_input.val(data.exchangerate); + } else { + rate_input.val(''); + } + $('#exchangerate_settings').show(); + } else { + rate_input.val(''); + $('#exchangerate_settings').hide(); + } + 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 check 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 check 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' }); @@ -334,10 +382,19 @@ namespace('kivi.Order', function(ns) { }); }; + ns.redisplay_cvpartnumbers = function(data) { + $('.row_entry').each(function(idx, elt) { + $(elt).find('[name="cvpartnumber"]').html(data[idx][0]); + }); + }; + ns.renumber_positions = function() { $('.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) { @@ -373,14 +430,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); }; @@ -438,12 +514,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(); @@ -474,9 +550,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); }; @@ -719,6 +798,34 @@ namespace('kivi.Order', function(ns) { return true; }; + ns.update_row_from_master_data = function(clicked) { + var row = $(clicked).parents("tbody").first(); + var item_id_dom = $(row).find('[name="orderitem_ids[+]"]'); + + var data = $('#order_form').serializeArray(); + data.push({ name: 'action', value: 'Order/update_row_from_master_data' }); + data.push({ name: 'item_ids[]', value: item_id_dom.val() }); + + $.post("controller.pl", data, kivi.eval_json_result); + }; + + ns.update_all_rows_from_master_data = function() { + var item_ids = $.map($('.row_entry'), 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/update_row_from_master_data' }); + data = data.concat(item_ids); + + $.post("controller.pl", data, kivi.eval_json_result); + }; + ns.show_calculate_qty_dialog = function(clicked) { var row = $(clicked).parents("tbody").first(); var input_id = $(row).find('[name="order.orderitems[].qty_as_number"]').attr('id'); @@ -728,15 +835,120 @@ namespace('kivi.Order', function(ns) { return true; }; + ns.edit_custom_shipto = function() { + if (!ns.check_cv()) return; + + kivi.SalesPurchase.edit_custom_shipto(); + }; + + ns.purchase_order_check_for_direct_delivery = function() { + if ($('#type').val() != 'sales_order') { + kivi.submit_form_with_action($('#order_form'), 'Order/purchase_order'); + } + + var empty = true; + var shipto; + if ($('#order_shipto_id').val() !== '') { + empty = false; + shipto = $('#order_shipto_id option:selected').text(); + } else { + $('#shipto_inputs [id^="shipto"]').each(function(idx, elt) { + if (!empty) return true; + if (/^shipto_to_copy/.test($(elt).prop('id'))) return true; + if (/^shiptocp_gender/.test($(elt).prop('id'))) return true; + if (/^shiptocvar_/.test($(elt).prop('id'))) return true; + if ($(elt).val() !== '') { + empty = false; + return false; + } + }); + var shipto_elements = []; + $([$('#shiptoname').val(), $('#shiptostreet').val(), $('#shiptozipcode').val(), $('#shiptocity').val()]).each(function(idx, elt) { + if (elt !== '') shipto_elements.push(elt); + }); + shipto = shipto_elements.join('; '); + } + + var use_it = false; + if (!empty) { + ns.direct_delivery_dialog(shipto); + } else { + kivi.submit_form_with_action($('#order_form'), 'Order/purchase_order'); + } + }; + + ns.direct_delivery_callback = function(accepted) { + $('#direct-delivery-dialog').dialog('close'); + + if (accepted) { + $('').appendTo('#order_form').val('1'); + } + + kivi.submit_form_with_action($('#order_form'), 'Order/purchase_order'); + }; + + ns.direct_delivery_dialog = function(shipto) { + $('#direct-delivery-dialog').remove(); + + var text1 = kivi.t8('You have entered or selected the following shipping address for this customer:'); + var text2 = kivi.t8('Do you want to carry this shipping address over to the new purchase order so that the vendor can deliver the goods directly to your customer?'); + var html = '

' + text1 + '

' + shipto + '

' + text2 + '

'; + html = html + '

'; + html = html + ''; + html = html + ' '; + html = html + ''; + html = html + '

'; + $(html).hide().appendTo('#order_form'); + + kivi.popup_dialog({id: 'direct-delivery-dialog', + dialog: {title: kivi.t8('Carry over shipping address'), + height: 300, + width: 500 }}); + }; + + ns.follow_up_window = function() { + var id = $('#id').val(); + var type = $('#type').val(); + + var number_info = ''; + if ($('#type').val() == 'sales_order' || $('#type').val() == 'purchase_order') { + number_info = $('#order_ordnumber').val(); + } else if ($('#type').val() == 'sales_quotation' || $('#type').val() == 'request_quotation') { + number_info = $('#order_quonumber').val(); + } + + var name_info = ''; + if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation') { + name_info = $('#order_customer_id_name').val(); + } else if ($('#type').val() == 'purchase_order' || $('#type').val() == 'request_quotation') { + name_info = $('#order_vendor_id_name').val(); + } + + var info = ''; + if (number_info !== '') { info += ' (' + number_info + ')' } + if (name_info !== '') { info += ' (' + name_info + ')' } + + $('').appendTo('#order_form').val(1); + $('').appendTo('#order_form').val(id); + $('').appendTo('#order_form').val(type); + $('').appendTo('#order_form').val(info); + + follow_up_window(); + }; + }); $(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 { @@ -783,4 +995,6 @@ $(function() { return false; }); + $('.reformat_number_as_null_number').change(kivi.Order.reformat_number_as_null_number); + });