Projekt

Allgemein

Profil

Herunterladen (34,6 KB) Statistiken
| Zweig: | Markierung: | Revision:
0935b012 Bernd Bleßmann
namespace('kivi.Order', function(ns) {
ns.check_cv = function() {
68da3b40 Bernd Bleßmann
if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation') {
7ede2933 Sven Schöling
if ($('#order_customer_id').val() === '') {
0935b012 Bernd Bleßmann
alert(kivi.t8('Please select a customer.'));
return false;
}
} else {
7ede2933 Sven Schöling
if ($('#order_vendor_id').val() === '') {
0935b012 Bernd Bleßmann
alert(kivi.t8('Please select a vendor.'));
return false;
}
}
return true;
};

3a35d09f Bernd Bleßmann
ns.check_duplicate_parts = function(question) {
68da3b40 Bernd Bleßmann
var id_arr = $('[name="order.orderitems[].parts_id"]').map(function() { return this.value; }).get();
e09f2da3 Bernd Bleßmann
var i, obj = {}, pos = [];

for (i = 0; i < id_arr.length; i++) {
var id = id_arr[i];
if (obj.hasOwnProperty(id)) {
pos.push(i + 1);
}
obj[id] = 0;
}

if (pos.length > 0) {
d6b56cbd Bernd Bleßmann
question = question || kivi.t8("Do you really want to continue?");
e09f2da3 Bernd Bleßmann
return confirm(kivi.t8("There are duplicate parts at positions") + "\n"
+ pos.join(', ') + "\n"
3a35d09f Bernd Bleßmann
+ question);
e09f2da3 Bernd Bleßmann
}
return true;
};

1d1f3140 Jan Büren
ns.check_valid_reqdate = function() {
452e195f Bernd Bleßmann
if ($('#order_reqdate_as_date').val() === '') {
1d1f3140 Jan Büren
alert(kivi.t8('Please select a delivery date.'));
return false;
} else {
return true;
}
};

6f01c56f Bernd Bleßmann
ns.save = function(params) {
0935b012 Bernd Bleßmann
if (!ns.check_cv()) return;
6f01c56f Bernd Bleßmann
const action = params.action;
const warn_on_duplicates = params.warn_on_duplicates;
const warn_on_reqdate = params.warn_on_reqdate;
const back_to_caller = params.back_to_caller;

3a35d09f Bernd Bleßmann
if (warn_on_duplicates && !ns.check_duplicate_parts()) return;
if (warn_on_reqdate && !ns.check_valid_reqdate()) return;
0935b012 Bernd Bleßmann
var data = $('#order_form').serializeArray();
06806380 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/' + action });
07dd84c0 Bernd Bleßmann
abafb475 Bernd Bleßmann
if (back_to_caller) data.push({ name: 'back_to_caller', value: '1' });

07dd84c0 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

0935b012 Bernd Bleßmann
ns.delete_order = function() {
var data = $('#order_form').serializeArray();
data.push({ name: 'action', value: 'Order/delete' });

$.post("controller.pl", data, kivi.eval_json_result);
};

6f01c56f Bernd Bleßmann
ns.show_print_options = function(params) {
0935b012 Bernd Bleßmann
if (!ns.check_cv()) return;
6f01c56f Bernd Bleßmann
const warn_on_duplicates = params.warn_on_duplicates;
const warn_on_reqdate = params.warn_on_reqdate;

3a35d09f Bernd Bleßmann
if (warn_on_duplicates && !ns.check_duplicate_parts(kivi.t8("Do you really want to print?"))) return;
12f1d5b5 Jan Büren
if (warn_on_reqdate && !ns.check_valid_reqdate()) return;
0935b012 Bernd Bleßmann
kivi.popup_dialog({
id: 'print_options',
dialog: {
title: kivi.t8('Print options'),
width: 800,
height: 300
}
});
};

ns.print = function() {
$('#print_options').dialog('close');

var data = $('#order_form').serializeArray();
data = data.concat($('#print_options_form').serializeArray());
data.push({ name: 'action', value: 'Order/print' });

$.post("controller.pl", data, kivi.eval_json_result);
};

var email_dialog;

d83928f0 Bernd Bleßmann
ns.setup_send_email_dialog = function() {
kivi.SalesPurchase.show_all_print_options_elements();
kivi.SalesPurchase.show_print_options_elements([ 'sendmode', 'media', 'copies', 'remove_draft' ], false);

$('#print_options_form table').first().remove().appendTo('#email_form_print_options');

30b8dc10 Moritz Bunkus
$('select#format').change(kivi.Order.adjust_email_attachment_name_for_template_format);
kivi.Order.adjust_email_attachment_name_for_template_format();

d83928f0 Bernd Bleßmann
var to_focus = $('#email_form_to').val() === '' ? 'to' : 'subject';
$('#email_form_' + to_focus).focus();
};

ns.finish_send_email_dialog = function() {
kivi.SalesPurchase.show_all_print_options_elements();

$('#email_form_print_options table').first().remove().prependTo('#print_options_form');
return true;
};

0935b012 Bernd Bleßmann
ns.show_email_dialog = function(html) {
d83928f0 Bernd Bleßmann
var id = 'send_email_dialog';
0935b012 Bernd Bleßmann
var dialog_params = {
id: id,
width: 800,
d83928f0 Bernd Bleßmann
height: 600,
title: kivi.t8('Send email'),
0935b012 Bernd Bleßmann
modal: true,
d83928f0 Bernd Bleßmann
beforeClose: kivi.Order.finish_send_email_dialog,
0935b012 Bernd Bleßmann
close: function(event, ui) {
email_dialog.remove();
d83928f0 Bernd Bleßmann
}
0935b012 Bernd Bleßmann
};

$('#' + id).remove();

email_dialog = $('<div style="display:none" id="' + id + '"></div>').appendTo('body');
email_dialog.html(html);
email_dialog.dialog(dialog_params);

d83928f0 Bernd Bleßmann
kivi.Order.setup_send_email_dialog();

0935b012 Bernd Bleßmann
$('.cancel').click(ns.close_email_dialog);

return true;
};

ns.send_email = function() {
10fe2228 Jan Büren
// push button only once -> slow response from mail server
ns.email_dialog_disable_send();

0935b012 Bernd Bleßmann
var data = $('#order_form').serializeArray();
d83928f0 Bernd Bleßmann
data = data.concat($('[name^="email_form."]').serializeArray());
data = data.concat($('[name^="print_options."]').serializeArray());
0935b012 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/send_email' });
$.post("controller.pl", data, kivi.eval_json_result);
};

a65dfe51 Bernd Bleßmann
ns.email_dialog_disable_send = function() {
// disable mail send event to prevent
// impatient users to send multiple times
$('#send_email').prop('disabled', true);
};

0935b012 Bernd Bleßmann
ns.close_email_dialog = function() {
email_dialog.dialog("close");
};

30b8dc10 Moritz Bunkus
ns.adjust_email_attachment_name_for_template_format = function() {
var $filename_elt = $('#email_form_attachment_filename');
var $format_elt = $('select#format');

if (!$filename_elt || !$format_elt)
return;

var format = $format_elt.val().toLowerCase();
var new_ext = format == 'html' ? 'html' : format == 'opendocument' ? 'odt' : 'pdf';
var filename = $filename_elt.val();

$filename_elt.val(filename.replace(/[^.]+$/, new_ext));
};

faf31da3 Bernd Bleßmann
ns.set_number_in_title = function(elt) {
$('#nr_in_title').html($(elt).val());
};

299dba8f Steven Schubiger
ns.reload_cv_dependent_selections = function() {
199bd497 Bernd Bleßmann
$('#order_shipto_id').val('');
0935b012 Bernd Bleßmann
var data = $('#order_form').serializeArray();
data.push({ name: 'action', value: 'Order/customer_vendor_changed' });

$.post("controller.pl", data, kivi.eval_json_result);
};

ns.reformat_number = function(event) {
$(event.target).val(kivi.format_amount(kivi.parse_amount($(event.target).val()), -2));
};

598383b3 Bernd Bleßmann
ns.reformat_number_as_null_number = function(event) {
if ($(event.target).val() === '') {
return;
}
ns.reformat_number(event);
};

4b1666b7 Felix Eichler
ns.update_exchangerate = function(event) {
f8b23396 Bernd Bleßmann
if (!ns.check_cv()) {
$('#order_currency_id').val($('#old_currency_id').val());
return;
}

0956f2d4 Felix Eichler
var rate_input = $('#order_exchangerate_as_null_number');
598383b3 Bernd Bleßmann
// 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;
}
4b1666b7 Felix Eichler
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){
0956f2d4 Felix Eichler
if (!data.is_standard) {
4b1666b7 Felix Eichler
$('#currency_name').text(data.currency_name);
if (data.exchangerate) {
598383b3 Bernd Bleßmann
rate_input.val(data.exchangerate);
4b1666b7 Felix Eichler
} else {
598383b3 Bernd Bleßmann
rate_input.val('');
4b1666b7 Felix Eichler
}
$('#exchangerate_settings').show();
} else {
598383b3 Bernd Bleßmann
rate_input.val('');
4b1666b7 Felix Eichler
$('#exchangerate_settings').hide();
}
0956f2d4 Felix Eichler
if ($('#order_currency_id').val() != $('#old_currency_id').val() ||
!data.is_standard && data.exchangerate != $('#old_exchangerate').val()) {
31fe31f4 Bernd Bleßmann
kivi.display_flash('warning', kivi.t8('You have changed the currency or exchange rate. Please check prices.'));
4b1666b7 Felix Eichler
}
$('#old_currency_id').val($('#order_currency_id').val());
$('#old_exchangerate').val(data.exchangerate);
}
});
};

e8a62150 Felix Eichler
ns.exchangerate_changed = function(event) {
0956f2d4 Felix Eichler
if (kivi.parse_amount($('#order_exchangerate_as_null_number').val()) != kivi.parse_amount($('#old_exchangerate').val())) {
31fe31f4 Bernd Bleßmann
kivi.display_flash('warning', kivi.t8('You have changed the currency or exchange rate. Please check prices.'));
0956f2d4 Felix Eichler
$('#old_exchangerate').val($('#order_exchangerate_as_null_number').val());
e8a62150 Felix Eichler
}
};

0935b012 Bernd Bleßmann
ns.recalc_amounts_and_taxes = function() {
2d586b8b Bernd Bleßmann
if (!kivi.validate_form('#order_form')) return;

0935b012 Bernd Bleßmann
var data = $('#order_form').serializeArray();
data.push({ name: 'action', value: 'Order/recalc_amounts_and_taxes' });

$.post("controller.pl", data, kivi.eval_json_result);
};

ns.unit_change = function(event) {
68da3b40 Bernd Bleßmann
var row = $(event.target).parents("tbody").first();
var item_id_dom = $(row).find('[name="orderitem_ids[+]"]');
0935b012 Bernd Bleßmann
var sellprice_dom = $(row).find('[name="order.orderitems[].sellprice_as_number"]');
68da3b40 Bernd Bleßmann
var select_elt = $(row).find('[name="order.orderitems[].unit"]');
0935b012 Bernd Bleßmann
var oldval = $(select_elt).data('oldval');
$(select_elt).data('oldval', $(select_elt).val());

var data = $('#order_form').serializeArray();
68da3b40 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/unit_changed' },
{ name: 'item_id', value: item_id_dom.val() },
{ name: 'old_unit', value: oldval },
{ name: 'sellprice_dom_id', value: sellprice_dom.attr('id') });
0935b012 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

ns.update_sellprice = function(item_id, price_str) {
68da3b40 Bernd Bleßmann
var row = $('#item_' + item_id).parents("tbody").first();
0935b012 Bernd Bleßmann
var price_elt = $(row).find('[name="order.orderitems[].sellprice_as_number"]');
var html_elt = $(row).find('[name="sellprice_text"]');
price_elt.val(price_str);
html_elt.html(price_str);
};

28a7a539 Bernd Bleßmann
ns.load_second_row = function(row) {
var item_id_dom = $(row).find('[name="orderitem_ids[+]"]');
68da3b40 Bernd Bleßmann
var div_elt = $(row).find('[name="second_row"]');
28a7a539 Bernd Bleßmann
if ($(div_elt).data('loaded') == 1) {
return;
}
var data = $('#order_form').serializeArray();
68da3b40 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/load_second_rows' },
{ name: 'item_ids[]', value: item_id_dom.val() });
28a7a539 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

9eb765a5 Bernd Bleßmann
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();
2659735b Bernd Bleßmann
$(row).data('expanded', 0);
9eb765a5 Bernd Bleßmann
var elt = $(row).find('.expand');
91d46243 Bernd Bleßmann
elt.attr('src', "image/expand.svg");
9eb765a5 Bernd Bleßmann
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();
2659735b Bernd Bleßmann
$(row).data('expanded', 1);
9eb765a5 Bernd Bleßmann
var elt = $(row).find('.expand');
91d46243 Bernd Bleßmann
elt.attr('src', "image/collapse.svg");
9eb765a5 Bernd Bleßmann
elt.attr('alt', kivi.t8('Hide details'));
elt.attr('title', kivi.t8('Hide details'));
};

ns.toggle_second_row = function(row) {
2659735b Bernd Bleßmann
if ($(row).data('expanded') == 1) {
9eb765a5 Bernd Bleßmann
ns.hide_second_row(row);
} else {
ns.show_second_row(row);
}
};
28a7a539 Bernd Bleßmann
0935b012 Bernd Bleßmann
ns.init_row_handlers = function() {
kivi.run_once_for('.recalc', 'on_change_recalc', function(elt) {
$(elt).change(ns.recalc_amounts_and_taxes);
});

kivi.run_once_for('.reformat_number', 'on_change_reformat', function(elt) {
$(elt).change(ns.reformat_number);
});

kivi.run_once_for('.unitselect', 'on_change_unit_with_oldval', function(elt) {
$(elt).data('oldval', $(elt).val());
$(elt).change(ns.unit_change);
});

kivi.run_once_for('.row_entry', 'on_kbd_click_show_hide', function(elt) {
$(elt).keydown(function(event) {
37acd860 Bernd Bleßmann
var row;
68da3b40 Bernd Bleßmann
if (event.keyCode == 40 && event.shiftKey === true) {
0935b012 Bernd Bleßmann
// shift arrow down
event.preventDefault();
37acd860 Bernd Bleßmann
row = $(event.target).parents(".row_entry").first();
28a7a539 Bernd Bleßmann
ns.load_second_row(row);
9eb765a5 Bernd Bleßmann
ns.show_second_row(row);
0935b012 Bernd Bleßmann
return false;
}
68da3b40 Bernd Bleßmann
if (event.keyCode == 38 && event.shiftKey === true) {
0935b012 Bernd Bleßmann
// shift arrow up
event.preventDefault();
37acd860 Bernd Bleßmann
row = $(event.target).parents(".row_entry").first();
9eb765a5 Bernd Bleßmann
ns.hide_second_row(row);
0935b012 Bernd Bleßmann
return false;
}
});
});
9eb765a5 Bernd Bleßmann
kivi.run_once_for('.expand', 'expand_second_row', function(elt) {
$(elt).click(function(event) {
event.preventDefault();
var row = $(event.target).parents(".row_entry").first();
ns.load_second_row(row);
ns.toggle_second_row(row);
return false;
})
});

0935b012 Bernd Bleßmann
};

5737ce39 Bernd Bleßmann
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 = '<span';
if (mt[0] === '-') h += ' class="plus0"';
h += '>' + mt + '&nbsp;&nbsp;' + mp + '%';
h += '</span>';
$(elt).find('[name="linemargin"]').html(h);
}
0935b012 Bernd Bleßmann
});
};

a66591cc Bernd Bleßmann
ns.redisplay_cvpartnumbers = function(data) {
$('.row_entry').each(function(idx, elt) {
$(elt).find('[name="cvpartnumber"]').html(data[idx][0]);
});
};

0935b012 Bernd Bleßmann
ns.renumber_positions = function() {
$('.row_entry [name="position"]').each(function(idx, elt) {
$(elt).html(idx+1);
});
59103201 Bernd Bleßmann
$('.row_entry').each(function(idx, elt) {
$(elt).data("position", idx+1);
});
0935b012 Bernd Bleßmann
};

ns.reorder_items = function(order_by) {
var dir = $('#' + order_by + '_header_id a img').attr("data-sort-dir");
$('#row_table_id thead a img').remove();

var src;
if (dir == "1") {
dir = "0";
src = "image/up.png";
} else {
dir = "1";
src = "image/down.png";
7ede2933 Sven Schöling
}
0935b012 Bernd Bleßmann
$('#' + order_by + '_header_id a').append('<img border=0 data-sort-dir=' + dir + ' src=' + src + ' alt="' + kivi.t8('sort items') + '">');

var data = $('#order_form').serializeArray();
68da3b40 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/reorder_items' },
{ name: 'order_by', value: order_by },
{ name: 'sort_dir', value: dir });
0935b012 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

ns.redisplay_items = function(data) {
var old_rows = $('.row_entry').detach();
var new_rows = [];
$(data).each(function(idx, elt) {
new_rows.push(old_rows[elt.old_pos - 1]);
});
$(new_rows).appendTo($('#row_table_id'));
ns.renumber_positions();
};

59103201 Bernd Bleßmann
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;
};

958b82d6 Bernd Bleßmann
ns.update_item_input_row = function() {
if (!ns.check_cv()) return;

var data = $('#order_form').serializeArray();
data.push({ name: 'action', value: 'Order/update_item_input_row' });

$.post("controller.pl", data, kivi.eval_json_result);
};

0935b012 Bernd Bleßmann
ns.add_item = function() {
7ede2933 Sven Schöling
if ($('#add_item_parts_id').val() === '') return;
0935b012 Bernd Bleßmann
if (!ns.check_cv()) return;

$('#row_table_id thead a img').remove();

59103201 Bernd Bleßmann
var insert_before_item_id = ns.get_insert_before_item_id($('#add_item_position').val());

0935b012 Bernd Bleßmann
var data = $('#order_form').serializeArray();
59103201 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/add_item' },
{ name: 'insert_before_item_id', value: insert_before_item_id });
0935b012 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

594ec6f3 Bernd Bleßmann
ns.open_multi_items_dialog = function() {
af4dfe1e Bernd Bleßmann
if (!ns.check_cv()) return;

594ec6f3 Bernd Bleßmann
var pp = $("#add_item_parts_id").data("part_picker");
pp.o.multiple=1;
pp.open_dialog();
};

8ad661b7 Bernd Bleßmann
ns.add_multi_items = function(data) {
59103201 Bernd Bleßmann
var insert_before_item_id = ns.get_insert_before_item_id($('#multi_items_position').val());
8ad661b7 Bernd Bleßmann
data = data.concat($('#order_form').serializeArray());
59103201 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/add_multi_items' },
{ name: 'insert_before_item_id', value: insert_before_item_id });
759e7200 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

0935b012 Bernd Bleßmann
ns.delete_order_item_row = function(clicked) {
var row = $(clicked).parents("tbody").first();
$(row).remove();

ns.renumber_positions();
ns.recalc_amounts_and_taxes();
};

ns.row_table_scroll_down = function() {
$('#row_table_scroll_id').scrollTop($('#row_table_scroll_id')[0].scrollHeight);
};

ns.show_longdescription_dialog = function(clicked) {
68da3b40 Bernd Bleßmann
var row = $(clicked).parents("tbody").first();
var position = $(row).find('[name="position"]').html();
var partnumber = $(row).find('[name="partnumber"]').html();
var description_elt = $(row).find('[name="order.orderitems[].description"]');
0935b012 Bernd Bleßmann
var longdescription_elt = $(row).find('[name="order.orderitems[].longdescription"]');

68da3b40 Bernd Bleßmann
var params = {
runningnumber: position,
partnumber: partnumber,
aa60c549 Moritz Bunkus
description: description_elt.val(),
default_longdescription: longdescription_elt.val(),
68da3b40 Bernd Bleßmann
set_function: function(val) {
aa60c549 Moritz Bunkus
longdescription_elt.val(val);
68da3b40 Bernd Bleßmann
}
};
0935b012 Bernd Bleßmann
kivi.SalesPurchase.edit_longdescription_with_params(params);
};

ns.price_chooser_item_row = function(clicked) {
69966b4c Bernd Bleßmann
if (!ns.check_cv()) return;
68da3b40 Bernd Bleßmann
var row = $(clicked).parents("tbody").first();
0935b012 Bernd Bleßmann
var item_id_dom = $(row).find('[name="orderitem_ids[+]"]');

var data = $('#order_form').serializeArray();
68da3b40 Bernd Bleßmann
data.push({ name: 'action', value: 'Order/price_popup' },
{ name: 'item_id', value: item_id_dom.val() });
0935b012 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

d6fed9b5 Bernd Bleßmann
ns.set_price_and_source_text = function(item_id, source, descr, price_str, price_editable) {
68da3b40 Bernd Bleßmann
var row = $('#item_' + item_id).parents("tbody").first();
0935b012 Bernd Bleßmann
var source_elt = $(row).find('[name="order.orderitems[].active_price_source"]');
var button_elt = $(row).find('[name="price_chooser_button"]');

button_elt.val(button_elt.val().replace(/.*\|/, descr + " |"));
source_elt.val(source);

68da3b40 Bernd Bleßmann
var editable_div_elt = $(row).find('[name="editable_price"]');
0935b012 Bernd Bleßmann
var not_editable_div_elt = $(row).find('[name="not_editable_price"]');
7ede2933 Sven Schöling
if (price_editable == 1 && source === '') {
0935b012 Bernd Bleßmann
// editable
$(editable_div_elt).show();
$(not_editable_div_elt).hide();
$(editable_div_elt).find(':input').prop("disabled", false);
$(not_editable_div_elt).find(':input').prop("disabled", true);
} else {
// not editable
$(editable_div_elt).hide();
$(not_editable_div_elt).show();
$(editable_div_elt).find(':input').prop("disabled", true);
$(not_editable_div_elt).find(':input').prop("disabled", false);
}

if (price_str) {
var price_elt = $(row).find('[name="order.orderitems[].sellprice_as_number"]');
var html_elt = $(row).find('[name="sellprice_text"]');
price_elt.val(price_str);
html_elt.html(price_str);
}
d6fed9b5 Bernd Bleßmann
};

ns.update_price_source = function(item_id, source, descr, price_str, price_editable) {
1b58f5da Bernd Bleßmann
ns.set_price_and_source_text(item_id, source, descr, price_str, price_editable);
0935b012 Bernd Bleßmann
d6fed9b5 Bernd Bleßmann
if (price_str) ns.recalc_amounts_and_taxes();
0935b012 Bernd Bleßmann
kivi.io.close_dialog();
};

d6fed9b5 Bernd Bleßmann
ns.set_discount_and_source_text = function(item_id, source, descr, discount_str, price_editable) {
68da3b40 Bernd Bleßmann
var row = $('#item_' + item_id).parents("tbody").first();
0935b012 Bernd Bleßmann
var source_elt = $(row).find('[name="order.orderitems[].active_discount_source"]');
var button_elt = $(row).find('[name="price_chooser_button"]');

button_elt.val(button_elt.val().replace(/\|.*/, "| " + descr));
source_elt.val(source);

68da3b40 Bernd Bleßmann
var editable_div_elt = $(row).find('[name="editable_discount"]');
0935b012 Bernd Bleßmann
var not_editable_div_elt = $(row).find('[name="not_editable_discount"]');
7ede2933 Sven Schöling
if (price_editable == 1 && source === '') {
0935b012 Bernd Bleßmann
// editable
$(editable_div_elt).show();
$(not_editable_div_elt).hide();
$(editable_div_elt).find(':input').prop("disabled", false);
$(not_editable_div_elt).find(':input').prop("disabled", true);
} else {
// not editable
$(editable_div_elt).hide();
$(not_editable_div_elt).show();
$(editable_div_elt).find(':input').prop("disabled", true);
$(not_editable_div_elt).find(':input').prop("disabled", false);
}

if (discount_str) {
var discount_elt = $(row).find('[name="order.orderitems[].discount_as_percent"]');
var html_elt = $(row).find('[name="discount_text"]');
discount_elt.val(discount_str);
html_elt.html(discount_str);
}
d6fed9b5 Bernd Bleßmann
};
0935b012 Bernd Bleßmann
d6fed9b5 Bernd Bleßmann
ns.update_discount_source = function(item_id, source, descr, discount_str, price_editable) {
1b58f5da Bernd Bleßmann
ns.set_discount_and_source_text(item_id, source, descr, discount_str, price_editable);

d6fed9b5 Bernd Bleßmann
if (discount_str) ns.recalc_amounts_and_taxes();
0935b012 Bernd Bleßmann
kivi.io.close_dialog();
};

5c859d64 Bernd Bleßmann
ns.show_periodic_invoices_config_dialog = function() {
if ($('#type').val() !== 'sales_order') return;

kivi.popup_dialog({
68da3b40 Bernd Bleßmann
url: 'controller.pl?action=Order/show_periodic_invoices_config_dialog',
452e195f Bernd Bleßmann
data: { type: $('#type').val(),
id: $('#id').val(),
config: $('#order_periodic_invoices_config').val(),
customer_id: $('#order_customer_id').val(),
transdate_as_date: $('#order_transdate_as_date').val(),
language_id: $('#language_id').val()
68da3b40 Bernd Bleßmann
},
id: 'jq_periodic_invoices_config_dialog',
load: kivi.reinit_widgets,
5c859d64 Bernd Bleßmann
dialog: {
68da3b40 Bernd Bleßmann
title: kivi.t8('Edit the configuration for periodic invoices'),
5c859d64 Bernd Bleßmann
width: 800,
height: 650
}
});
return true;
};

ns.close_periodic_invoices_config_dialog = function() {
$('#jq_periodic_invoices_config_dialog').dialog('close');
};

ns.assign_periodic_invoices_config = function() {
var data = $('[name="Form"]').serializeArray();
68da3b40 Bernd Bleßmann
data.push({ name: 'type', value: $('#type').val() },
{ name: 'action', value: 'Order/assign_periodic_invoices_config' });
5c859d64 Bernd Bleßmann
$.post("controller.pl", data, kivi.eval_json_result);
};

ns.check_save_active_periodic_invoices = function() {
var type = $('#type').val();
if (type !== 'sales_order') return true;

var active = false;
$.ajax({
68da3b40 Bernd Bleßmann
url: 'controller.pl',
data: { action: 'Order/get_has_active_periodic_invoices',
type : type,
id : $('#id').val(),
config: $('#order_periodic_invoices_config').val(),
},
method: "GET",
async: false,
5c859d64 Bernd Bleßmann
dataType: 'text',
68da3b40 Bernd Bleßmann
success: function(val) {
5c859d64 Bernd Bleßmann
active = val;
}
});

if (active == 1) {
return confirm(kivi.t8('This sales order has an active configuration for periodic invoices. If you save then all subsequently created invoices will contain those changes as well, but not those that have already been created. Do you want to continue?'));
}

return true;
};

aacd6696 Bernd Bleßmann
ns.show_vc_details_dialog = function() {
if (!ns.check_cv()) return;
var vc;
var vc_id;
var title;
if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation' ) {
vc = 'customer';
vc_id = $('#order_customer_id').val();
title = kivi.t8('Customer details');
} else {
vc = 'vendor';
vc_id = $('#order_vendor_id').val();
title = kivi.t8('Vendor details');
}

kivi.popup_dialog({
68da3b40 Bernd Bleßmann
url: 'controller.pl',
data: { action: 'Order/show_customer_vendor_details_dialog',
type : $('#type').val(),
vc : vc,
vc_id : vc_id
},
id: 'jq_customer_vendor_details_dialog',
aacd6696 Bernd Bleßmann
dialog: {
68da3b40 Bernd Bleßmann
title: title,
aacd6696 Bernd Bleßmann
width: 800,
height: 650
}
});
return true;
};

ff5279ed Bernd Bleßmann
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);
};

00402ae6 Bernd Bleßmann
ns.show_calculate_qty_dialog = function(clicked) {
68da3b40 Bernd Bleßmann
var row = $(clicked).parents("tbody").first();
var input_id = $(row).find('[name="order.orderitems[].qty_as_number"]').attr('id');
6770b19a Bernd Bleßmann
var formula_id = $(row).find('[name="formula[+]"]').attr('id');
00402ae6 Bernd Bleßmann
6770b19a Bernd Bleßmann
calculate_qty_selection_dialog("", input_id, "", formula_id);
00402ae6 Bernd Bleßmann
return true;
68da3b40 Bernd Bleßmann
};
00402ae6 Bernd Bleßmann
199bd497 Bernd Bleßmann
ns.edit_custom_shipto = function() {
if (!ns.check_cv()) return;

kivi.SalesPurchase.edit_custom_shipto();
};

fb5bcaea Bernd Bleßmann
ns.purchase_check_for_direct_delivery = function(params) {
9619d8be Bernd Bleßmann
const to_type = params.to_type;

fb5bcaea Bernd Bleßmann
if ($('#type').val() != 'sales_quotation' && $('#type').val() != 'sales_order') {
9619d8be Bernd Bleßmann
kivi.submit_ajax_form("controller.pl", '#order_form', {action: 'Order/save_and_order_workflow', to_type: to_type});
2fd4736b Bernd Bleßmann
return;
9cb9a448 Bernd Bleßmann
}

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('; ');
}

if (!empty) {
9619d8be Bernd Bleßmann
ns.direct_delivery_dialog(shipto, to_type);
9cb9a448 Bernd Bleßmann
} else {
9619d8be Bernd Bleßmann
kivi.submit_ajax_form("controller.pl", '#order_form', {action: 'Order/save_and_order_workflow', to_type: to_type});
9cb9a448 Bernd Bleßmann
}
};

9619d8be Bernd Bleßmann
ns.direct_delivery_callback = function(accepted, to_type) {
9cb9a448 Bernd Bleßmann
$('#direct-delivery-dialog').dialog('close');

if (accepted) {
$('<input type="hidden" name="use_shipto">').appendTo('#order_form').val('1');
}

9619d8be Bernd Bleßmann
kivi.submit_ajax_form("controller.pl", '#order_form', {action: 'Order/save_and_order_workflow', to_type: to_type});
9cb9a448 Bernd Bleßmann
};

9619d8be Bernd Bleßmann
ns.direct_delivery_dialog = function(shipto, to_type) {
9cb9a448 Bernd Bleßmann
$('#direct-delivery-dialog').remove();

var text1 = kivi.t8('You have entered or selected the following shipping address for this customer:');
54e099ac Bernd Bleßmann
var text2 = kivi.t8('Do you want to carry this shipping address over to the new purchase document so that the vendor can deliver the goods directly to your customer?');
9cb9a448 Bernd Bleßmann
var html = '<div id="direct-delivery-dialog"><p>' + text1 + '</p><p>' + shipto + '</p><p>' + text2 + '</p>';
html = html + '<hr><p>';
9619d8be Bernd Bleßmann
html = html + '<input type="button" value="' + kivi.t8('Yes') + '" size="30" onclick="kivi.Order.direct_delivery_callback(true, \'' + to_type + '\')">';
9cb9a448 Bernd Bleßmann
html = html + '&nbsp;';
9619d8be Bernd Bleßmann
html = html + '<input type="button" value="' + kivi.t8('No') + '" size="30" onclick="kivi.Order.direct_delivery_callback(false, \'' + to_type + '\')">';
9cb9a448 Bernd Bleßmann
html = html + '</p></div>';
$(html).hide().appendTo('#order_form');

kivi.popup_dialog({id: 'direct-delivery-dialog',
dialog: {title: kivi.t8('Carry over shipping address'),
height: 300,
width: 500 }});
};

6e8c0011 Bernd Bleßmann
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 + ')' }

036d7ce5 Jan Büren
if (!$('#follow_up_rowcount').length) {
c372f6f8 Bernd Bleßmann
$('<input type="hidden" name="follow_up_rowcount" id="follow_up_rowcount">').appendTo('#order_form');
$('<input type="hidden" name="follow_up_trans_id_1" id="follow_up_trans_id_1">').appendTo('#order_form');
$('<input type="hidden" name="follow_up_trans_type_1" id="follow_up_trans_type_1">').appendTo('#order_form');
$('<input type="hidden" name="follow_up_trans_info_1" id="follow_up_trans_info_1">').appendTo('#order_form');
$('<input type="hidden" name="follow_up_trans_subject_1" id="follow_up_trans_subject_1">').appendTo('#order_form');
}
$('#follow_up_rowcount').val(1);
$('#follow_up_trans_id_1').val(id);
$('#follow_up_trans_type_1').val(type);
$('#follow_up_trans_info_1').val(info);
$('#follow_up_trans_subject_1').val($('#order_transaction_description').val());
6e8c0011 Bernd Bleßmann
follow_up_window();
};

d1809c22 Bernd Bleßmann
ns.create_part = function() {
var data = $('#order_form').serializeArray();
data.push({ name: 'action', value: 'Order/create_part' });
$.post("controller.pl", data, kivi.eval_json_result);
};

9ce44b6f Bernd Bleßmann
ns.check_transport_cost_article_presence = function() {
var $form = $('#order_form');
var wanted_part_id = $form.data('transport-cost-reminder-article-id');

if (!wanted_part_id) return true

var id_arr = $('[name="order.orderitems[].parts_id"]').map(function() { return this.value; }).get();
id_arr = $.grep(id_arr, function(elt) {
return ((elt*1) === wanted_part_id);
});

if (id_arr.length) return true;

var description = $form.data('transport-cost-reminder-article-description');
return confirm(kivi.t8("The transport cost article '#1' is missing. Do you want to continue anyway?", [ description ]));
};

5efe1390 Bernd Bleßmann
ns.check_cusordnumber_presence = function() {
if ($('#order_cusordnumber').val() === '') {
return confirm(kivi.t8('The customer order number is missing. Do you want to continue anyway?'));
}
return true;
};

332b5ec7 Bernd Bleßmann
ns.load_phone_note = function(id, subject, body) {
$('#phone_note_edit_text').html(kivi.t8('Edit note'));
$('#phone_note_id').val(id);
$('#phone_note_subject').val(subject);
$('#phone_note_body').val(body);
$('#phone_note_delete_button').show();
};

ns.cancel_phone_note = function() {
$('#phone_note_edit_text').html(kivi.t8('Add note'));
$('#phone_note_id').val('');
$('#phone_note_subject').val('');
$('#phone_note_body').val('');
$('#phone_note_delete_button').hide();
};

ns.save_phone_note = function() {
var data = $('#order_form').serializeArray();
data.push({ name: 'action', value: 'Order/save_phone_note' });

$.post("controller.pl", data, kivi.eval_json_result);
};

ns.delete_phone_note = function() {
if ($('#phone_note_id').val() === '') return;

var data = $('#order_form').serializeArray();
data.push({ name: 'action', value: 'Order/delete_phone_note' });

$.post("controller.pl", data, kivi.eval_json_result);
};

6587b90e Bernd Bleßmann
ns.open_customervendor_tab = function(id_selector, db) {
if (!ns.check_cv()) return;
window.open("controller.pl?action=CustomerVendor/edit&db=" + encodeURIComponent(db) + "&id=" + encodeURIComponent($(id_selector).val()), '_blank');
};

0935b012 Bernd Bleßmann
});

68da3b40 Bernd Bleßmann
$(function() {
8e77bd29 Bernd Bleßmann
if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation' ) {
299dba8f Steven Schubiger
$('#order_customer_id').change(kivi.Order.reload_cv_dependent_selections);
0935b012 Bernd Bleßmann
} else {
299dba8f Steven Schubiger
$('#order_vendor_id').change(kivi.Order.reload_cv_dependent_selections);
0935b012 Bernd Bleßmann
}

4b1666b7 Felix Eichler
$('#order_currency_id').change(kivi.Order.update_exchangerate);
0ed20721 Bernd Bleßmann
$('#order_transdate_as_date').change(kivi.Order.update_exchangerate);
0956f2d4 Felix Eichler
$('#order_exchangerate_as_null_number').change(kivi.Order.exchangerate_changed);
4b1666b7 Felix Eichler
958b82d6 Bernd Bleßmann
$('#add_item_parts_id').on('set_item:PartPicker', function() {
kivi.Order.update_item_input_row();
});
0935b012 Bernd Bleßmann
$('.add_item_input').keydown(function(event) {
68da3b40 Bernd Bleßmann
if (event.keyCode == 13) {
0935b012 Bernd Bleßmann
event.preventDefault();
kivi.Order.add_item();
return false;
}
});

kivi.Order.init_row_handlers();

$('#row_table_id').on('sortstop', function(event, ui) {
$('#row_table_id thead a img').remove();
kivi.Order.renumber_positions();
});
9eb765a5 Bernd Bleßmann
$('#expand_all').on('click', function(event) {
event.preventDefault();
2659735b Bernd Bleßmann
if ($('#expand_all').data('expanded') == 1) {
$('#expand_all').data('expanded', 0);
91d46243 Bernd Bleßmann
$('#expand_all').attr('src', 'image/expand.svg');
9eb765a5 Bernd Bleßmann
$('#expand_all').attr('alt', kivi.t8('Show all details'));
$('#expand_all').attr('title', kivi.t8('Show all details'));
$('.row_entry').each(function(idx, elt) {
kivi.Order.hide_second_row(elt);
});
} else {
2659735b Bernd Bleßmann
$('#expand_all').data('expanded', 1);
91d46243 Bernd Bleßmann
$('#expand_all').attr('src', "image/collapse.svg");
9eb765a5 Bernd Bleßmann
$('#expand_all').attr('alt', kivi.t8('Hide all details'));
$('#expand_all').attr('title', kivi.t8('Hide all details'));
kivi.Order.load_all_second_rows();
$('.row_entry').each(function(idx, elt) {
kivi.Order.show_second_row(elt);
});
}
return false;
});
2659735b Bernd Bleßmann
598383b3 Bernd Bleßmann
$('.reformat_number_as_null_number').change(kivi.Order.reformat_number_as_null_number);

0935b012 Bernd Bleßmann
});