-namespace('kivi.Order', function(ns) {
+namespace('kivi.DeliveryOrder', function(ns) {
ns.check_cv = function() {
- if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation') {
+ if ($('#type').val() == 'sales_delivery_order') {
if ($('#order_customer_id').val() === '') {
alert(kivi.t8('Please select a customer.'));
return false;
if (warn_on_reqdate && !ns.check_valid_reqdate()) return;
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/' + action });
+ data.push({ name: 'action', value: 'DeliveryOrder/' + action });
$.post("controller.pl", data, kivi.eval_json_result);
};
ns.delete_order = function() {
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/delete' });
+ data.push({ name: 'action', value: 'DeliveryOrder/delete' });
$.post("controller.pl", data, kivi.eval_json_result);
};
});
};
+ ns.open_stock_in_out_dialog = function(clicked, in_out) {
+ var $row = $(clicked).parents("tbody").first();
+ var id = $row.find('[name="orderitem_ids[+]"]').val();
+ $row.uniqueId();
+
+ kivi.popup_dialog({
+ id: "stock_in_out_dialog",
+ url: "controller.pl?action=DeliveryOrder/stock_in_out_dialog",
+ data: {
+ id: $("#id").val(),
+ type: $("#type").val(),
+ parts_id: $row.find("[name$=parts_id]").val(),
+ unit: $row.find("[name$=unit]").val(),
+ qty_as_number: $row.find("[name$=qty_as_number]").val(),
+ stock: $row.find("[name$=stock_info]").val(),
+ item_id: id,
+ row: $row.attr("id"),
+ },
+ dialog: { title: kivi.t8('Transfer stock') }
+ });
+ };
+
+ ns.save_updated_stock = function() {
+ // stock information is saved in DOM as a yaml dump.
+ // we don't want to do this in javascript so we do a tiny roundtrip to the backend
+
+ let data = [];
+ $("#stock-in-out-table tr.listrow").each((i,row) => {
+ let qty = kivi.parse_amount($(row).find(".data-qty").val());
+
+ if (qty === 0) return;
+
+ data.push({
+ qty: qty,
+ warehouse_id: $(row).find(".data-warehouse-id").val(),
+ bin_id: $(row).find(".data-bin-id").val(),
+ chargenumber: $(row).find(".data-chargenumber").val(),
+ bestbefore: $(row).find(".data-bestbefore").val(),
+ unit: $(row).find(".data-unit").val(),
+ delivery_order_items_stock_id: $(row).find(".data-stock-id").val(),
+ });
+ });
+
+ let row = $(".data-row").val();
+
+ $.post("controller.pl",
+ kivi.serialize({
+ action: "DeliveryOrder/update_stock_information",
+ unit: $("#" + row).find("[name$=unit]").val(),
+ stock_info: data,
+ row: row
+ }),
+ (data) => {
+ $("#" + row + " .data-stock-info").val(data.stock_info);
+ $("#" + row + " .data-stock-qty").text(data.stock_qty)
+ $("#stock_in_out_dialog").dialog("close");
+ }
+ );
+ };
+
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' });
+ data.push({ name: 'action', value: 'DeliveryOrder/print' });
$.post("controller.pl", data, kivi.eval_json_result);
};
height: 600,
title: kivi.t8('Send email'),
modal: true,
- beforeClose: kivi.Order.finish_send_email_dialog,
+ beforeClose: kivi.DeliveryOrder.finish_send_email_dialog,
close: function(event, ui) {
email_dialog.remove();
}
email_dialog.html(html);
email_dialog.dialog(dialog_params);
- kivi.Order.setup_send_email_dialog();
+ kivi.DeliveryOrder.setup_send_email_dialog();
$('.cancel').click(ns.close_email_dialog);
var data = $('#order_form').serializeArray();
data = data.concat($('[name^="email_form."]').serializeArray());
data = data.concat($('[name^="print_options."]').serializeArray());
- data.push({ name: 'action', value: 'Order/send_email' });
+ data.push({ name: 'action', value: 'DeliveryOrder/send_email' });
$.post("controller.pl", data, kivi.eval_json_result);
};
ns.reload_cv_dependent_selections = function() {
$('#order_shipto_id').val('');
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/customer_vendor_changed' });
+ data.push({ name: 'action', value: 'DeliveryOrder/customer_vendor_changed' });
$.post("controller.pl", data, kivi.eval_json_result);
};
}
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/update_exchangerate' });
+ data.push({ name: 'action', value: 'DeliveryOrder/update_exchangerate' });
$.ajax({
url: 'controller.pl',
}
};
- 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) {
var row = $(event.target).parents("tbody").first();
var item_id_dom = $(row).find('[name="orderitem_ids[+]"]');
$(select_elt).data('oldval', $(select_elt).val());
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/unit_changed' },
+ data.push({ name: 'action', value: 'DeliveryOrder/unit_changed' },
{ name: 'item_id', value: item_id_dom.val() },
{ name: 'old_unit', value: oldval },
{ name: 'sellprice_dom_id', value: sellprice_dom.attr('id') });
return;
}
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/load_second_rows' },
+ data.push({ name: 'action', value: 'DeliveryOrder/load_second_rows' },
{ name: 'item_ids[]', value: item_id_dom.val() });
$.post("controller.pl", data, kivi.eval_json_result);
}
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/load_second_rows' });
+ data.push({ name: 'action', value: 'DeliveryOrder/load_second_rows' });
data = data.concat(item_ids);
$.post("controller.pl", data, kivi.eval_json_result);
};
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);
});
$('#' + 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();
- data.push({ name: 'action', value: 'Order/reorder_items' },
+ data.push({ name: 'action', value: 'DeliveryOrder/reorder_items' },
{ name: 'order_by', value: order_by },
{ name: 'sort_dir', value: dir });
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: 'DeliveryOrder/add_item' },
{ name: 'insert_before_item_id', value: insert_before_item_id });
$.post("controller.pl", data, kivi.eval_json_result);
ns.add_multi_items = function(data) {
var insert_before_item_id = ns.get_insert_before_item_id($('#multi_items_position').val());
data = data.concat($('#order_form').serializeArray());
- data.push({ name: 'action', value: 'Order/add_multi_items' },
+ data.push({ name: 'action', value: 'DeliveryOrder/add_multi_items' },
{ name: 'insert_before_item_id', value: insert_before_item_id });
$.post("controller.pl", data, kivi.eval_json_result);
};
$(row).remove();
ns.renumber_positions();
- ns.recalc_amounts_and_taxes();
};
ns.row_table_scroll_down = function() {
var item_id_dom = $(row).find('[name="orderitem_ids[+]"]');
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/price_popup' },
+ data.push({ name: 'action', value: 'DeliveryOrder/price_popup' },
{ name: 'item_id', value: item_id_dom.val() });
$.post("controller.pl", data, kivi.eval_json_result);
};
- ns.update_price_source = function(item_id, source, descr, price_str, price_editable) {
- var row = $('#item_' + item_id).parents("tbody").first();
- 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);
-
- var editable_div_elt = $(row).find('[name="editable_price"]');
- var not_editable_div_elt = $(row).find('[name="not_editable_price"]');
- if (price_editable == 1 && source === '') {
- // 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) {
- var row = $('#item_' + item_id).parents("tbody").first();
- 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);
-
- var editable_div_elt = $(row).find('[name="editable_discount"]');
- var not_editable_div_elt = $(row).find('[name="not_editable_discount"]');
- if (price_editable == 1 && source === '') {
- // 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();
- };
-
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' ) {
+ if ($('#order_customer_id').val()) {
vc = 'customer';
vc_id = $('#order_customer_id').val();
title = kivi.t8('Customer details');
kivi.popup_dialog({
url: 'controller.pl',
- data: { action: 'Order/show_customer_vendor_details_dialog',
+ data: { action: 'DeliveryOrder/show_customer_vendor_details_dialog',
type : $('#type').val(),
vc : vc,
vc_id : vc_id
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: 'action', value: 'DeliveryOrder/update_row_from_master_data' });
data.push({ name: 'item_ids[]', value: item_id_dom.val() });
$.post("controller.pl", data, kivi.eval_json_result);
}
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/update_row_from_master_data' });
+ data.push({ name: 'action', value: 'DeliveryOrder/update_row_from_master_data' });
data = data.concat(item_ids);
$.post("controller.pl", data, kivi.eval_json_result);
ns.purchase_order_check_for_direct_delivery = function() {
if ($('#type').val() != 'sales_order') {
- kivi.submit_form_with_action($('#order_form'), 'Order/purchase_order');
+ kivi.submit_form_with_action($('#order_form'), 'DeliveryOrder/purchase_order');
}
var empty = true;
if (!empty) {
ns.direct_delivery_dialog(shipto);
} else {
- kivi.submit_form_with_action($('#order_form'), 'Order/purchase_order');
+ kivi.submit_form_with_action($('#order_form'), 'DeliveryOrder/purchase_order');
}
};
$('<input type="hidden" name="use_shipto">').appendTo('#order_form').val('1');
}
- kivi.submit_form_with_action($('#order_form'), 'Order/purchase_order');
+ kivi.submit_form_with_action($('#order_form'), 'DeliveryOrder/purchase_order');
};
ns.direct_delivery_dialog = function(shipto) {
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 + '<input type="button" value="' + kivi.t8('Yes') + '" size="30" onclick="kivi.DeliveryOrder.direct_delivery_callback(true)">';
html = html + ' ';
- html = html + '<input type="button" value="' + kivi.t8('No') + '" size="30" onclick="kivi.Order.direct_delivery_callback(false)">';
+ html = html + '<input type="button" value="' + kivi.t8('No') + '" size="30" onclick="kivi.DeliveryOrder.direct_delivery_callback(false)">';
html = html + '</p></div>';
$(html).hide().appendTo('#order_form');
ns.create_part = function() {
var data = $('#order_form').serializeArray();
- data.push({ name: 'action', value: 'Order/create_part' });
+ data.push({ name: 'action', value: 'DeliveryOrder/create_part' });
$.post("controller.pl", data, kivi.eval_json_result);
};
});
$(function() {
- if ($('#type').val() == 'sales_order' || $('#type').val() == 'sales_quotation' ) {
- $('#order_customer_id').change(kivi.Order.reload_cv_dependent_selections);
- } else {
- $('#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 {
- $('#add_item_parts_id').on('set_item:PartPicker', function(e,o) { $('#add_item_sellprice_as_number').val(kivi.format_amount(o.lastcost, -2)) });
- }
+ $('#order_customer_id').change(kivi.DeliveryOrder.reload_cv_dependent_selections);
+ $('#order_vendor_id').change(kivi.DeliveryOrder.reload_cv_dependent_selections);
+
+ $('#order_currency_id').change(kivi.DeliveryOrder.update_exchangerate);
+ $('#order_transdate_as_date').change(kivi.DeliveryOrder.update_exchangerate);
+ $('#order_exchangerate_as_null_number').change(kivi.DeliveryOrder.exchangerate_changed);
+
$('#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) {
if (event.keyCode == 13) {
event.preventDefault();
- kivi.Order.add_item();
+ kivi.DeliveryOrder.add_item();
return false;
}
});
- kivi.Order.init_row_handlers();
+ kivi.DeliveryOrder.init_row_handlers();
$('#row_table_id').on('sortstop', function(event, ui) {
$('#row_table_id thead a img').remove();
- kivi.Order.renumber_positions();
+ kivi.DeliveryOrder.renumber_positions();
});
$('#expand_all').on('click', function(event) {
$('#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);
+ kivi.DeliveryOrder.hide_second_row(elt);
});
} else {
$('#expand_all').data('expanded', 1);
$('#expand_all').attr('src', "image/collapse.svg");
$('#expand_all').attr('alt', kivi.t8('Hide all details'));
$('#expand_all').attr('title', kivi.t8('Hide all details'));
- kivi.Order.load_all_second_rows();
+ kivi.DeliveryOrder.load_all_second_rows();
$('.row_entry').each(function(idx, elt) {
- kivi.Order.show_second_row(elt);
+ kivi.DeliveryOrder.show_second_row(elt);
});
}
return false;
});
- $('.reformat_number_as_null_number').change(kivi.Order.reformat_number_as_null_number);
+ $('.reformat_number_as_null_number').change(kivi.DeliveryOrder.reformat_number_as_null_number);
});