+ ns.show_periodic_invoices_config_dialog = function() {
+ if ($('#type').val() !== 'sales_order') return;
+
+ kivi.popup_dialog({
+ url: 'controller.pl?action=Order/show_periodic_invoices_config_dialog',
+ 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()
+ },
+ id: 'jq_periodic_invoices_config_dialog',
+ load: kivi.reinit_widgets,
+ dialog: {
+ title: kivi.t8('Edit the configuration for periodic invoices'),
+ 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();
+ data.push({ name: 'type', value: $('#type').val() },
+ { name: 'action', value: 'Order/assign_periodic_invoices_config' });
+ $.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({
+ 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,
+ dataType: 'text',
+ success: function(val) {
+ 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;
+ };
+
+ 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({
+ 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',
+ dialog: {
+ title: title,
+ width: 800,
+ height: 650
+ }
+ });
+ 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');
+ var formula_id = $(row).find('[name="formula[+]"]').attr('id');
+
+ calculate_qty_selection_dialog("", input_id, "", formula_id);
+ 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) {
+ $('<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 + ' ';
+ 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 }});
+ };
+
+ 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 + ')' }
+
+ if (!$('#follow_up_rowcount').length) {
+ $('<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());
+
+ follow_up_window();
+ };
+
+ 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);
+ };
+
+ 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 ]));
+ };
+
+ 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;
+ };
+