Projekt

Allgemein

Profil

Herunterladen (33,1 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;
}
};

ns.save = function(action, warn_on_duplicates, warn_on_reqdate) {
0935b012 Bernd Bleßmann
if (!ns.check_cv()) return;
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
$.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);
};

3a35d09f Bernd Bleßmann
ns.show_print_options = function(warn_on_duplicates) {
0935b012 Bernd Bleßmann
if (!ns.check_cv()) return;
3a35d09f Bernd Bleßmann
if (warn_on_duplicates && !ns.check_duplicate_parts(kivi.t8("Do you really want to print?"))) 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');

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

ns.close_email_dialog = function() {
email_dialog.dialog("close");
};

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

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

759e7200 Bernd Bleßmann
ns.setup_multi_items_dialog = function() {
$('#multi_items_filter_table input, #multi_items_filter_table select').keydown(function(event) {
if (event.keyCode == 13) {
event.preventDefault();
ns.multi_items_dialog_update_result();
return false;
}
});

$('#multi_items_filter_all_substr_multi_ilike').focus();
};

0935b012 Bernd Bleßmann
ns.show_multi_items_dialog = function() {
if (!ns.check_cv()) return;

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

kivi.popup_dialog({
759e7200 Bernd Bleßmann
url: 'controller.pl?action=Order/show_multi_items_dialog',
data: { type: $('#type').val() },
id: 'jq_multi_items_dialog',
load: kivi.Order.setup_multi_items_dialog,
0935b012 Bernd Bleßmann
dialog: {
68da3b40 Bernd Bleßmann
title: kivi.t8('Add multiple items'),
0935b012 Bernd Bleßmann
width: 800,
height: 500
}
});
return true;
};

ns.close_multi_items_dialog = function() {
$('#jq_multi_items_dialog').dialog('close');
};

759e7200 Bernd Bleßmann
ns.multi_items_dialog_update_result = function() {
var data = $('#multi_items_form').serializeArray();
data.push({ name: 'type', value: $('#type').val() });
$.ajax({
url: 'controller.pl?action=Order/multi_items_update_result',
data: data,
method: 'post',
success: function(data) {
$('#multi_items_result').html(data);
ns.multi_items_dialog_enable_continue();
ns.multi_items_result_setup_events();
}
});
};

ns.multi_items_dialog_disable_continue = function() {
// disable keydown-event and continue button to prevent
// impatient users to add parts multiple times
59103201 Bernd Bleßmann
$('#multi_items_result input, #multi_items_position').off("keydown");
759e7200 Bernd Bleßmann
$('#multi_items_dialog_continue_button').prop('disabled', true);
};

ns.multi_items_dialog_enable_continue = function() {
59103201 Bernd Bleßmann
$('#multi_items_result input, #multi_items_position').keydown(function(event) {
759e7200 Bernd Bleßmann
if(event.keyCode == 13) {
event.preventDefault();
ns.add_multi_items();
return false;
}
});
$('#multi_items_dialog_continue_button').prop('disabled', false);
};

ns.multi_items_result_setup_events = function() {
$('#multi_items_all_qty').change(ns.reformat_number);
$('#multi_items_all_qty').change(function(event) {
$('.multi_items_qty').val($(event.target).val());
});
$('.multi_items_qty').change(ns.reformat_number);
}

ns.add_multi_items = function() {
// rows at all
var n_rows = $('.multi_items_qty').length;
if (n_rows == 0) return;

// filled rows
n_rows = $('.multi_items_qty').filter(function() {
return $(this).val().length > 0;
}).length;
if (n_rows == 0) return;

ns.multi_items_dialog_disable_continue();

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

759e7200 Bernd Bleßmann
var data = $('#order_form').serializeArray();
data = data.concat($('#multi_items_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);
};

ns.set_input_to_one = function(clicked) {
if ($(clicked).val() == '') {
$(clicked).val(kivi.format_amount(1.00, -2));
}
$(clicked).select();
};

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

ns.update_price_source = 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);
ns.recalc_amounts_and_taxes();
}

kivi.io.close_dialog();
};

ns.update_discount_source = 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);
ns.recalc_amounts_and_taxes();
}

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

9cb9a448 Bernd Bleßmann
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) {
$('<input type="hidden" name="use_shipto">').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 = '<div id="direct-delivery-dialog"><p>' + text1 + '</p><p>' + shipto + '</p><p>' + text2 + '</p>';
html = html + '<hr><p>';
html = html + '<input type="button" value="' + kivi.t8('Yes') + '" size="30" onclick="kivi.Order.direct_delivery_callback(true)">';
html = html + '&nbsp;';
html = html + '<input type="button" value="' + kivi.t8('No') + '" size="30" onclick="kivi.Order.direct_delivery_callback(false)">';
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 + ')' }

c372f6f8 Bernd Bleßmann
if (!$('#follow_up_rowcount').lenght) {
$('<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();
};

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
8e77bd29 Bernd Bleßmann
if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation' ) {
0935b012 Bernd Bleßmann
$('#add_item_parts_id').on('set_item:PartPicker', function(e,o) { $('#add_item_sellprice_as_number').val(kivi.format_amount(o.sellprice, -2)) });
} else {
$('#add_item_parts_id').on('set_item:PartPicker', function(e,o) { $('#add_item_sellprice_as_number').val(kivi.format_amount(o.lastcost, -2)) });
}
$('#add_item_parts_id').on('set_item:PartPicker', function(e,o) { $('#add_item_description').val(o.description) });
$('#add_item_parts_id').on('set_item:PartPicker', function(e,o) { $('#add_item_unit').val(o.unit) });

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