function stOrderPriceModifiers() { } stOrderPriceModifiers.params = {}; function stOrderProductPriceManagment(fields, updateCallback) { function updateTotalAmount() { stOrderProductPriceManagment.updateTotalAmount(fields); if (updateCallback) { updateCallback(fields); } } jQuery(fields.discount).on('change', function() { var input = jQuery(this); if (input.next('select').val() == '%') { this.value = stPrice.fixNumberFormat(this.value, 1); if (this.value > 99) { this.value = 99; } } else { this.value = stPrice.fixNumberFormat(this.value, 0); } updateTotalAmount(); }); jQuery(fields.quantity).on('change', function() { this.value = stPrice.fixNumberFormat(this.value); updateTotalAmount(); }); jQuery(fields.discount_type).on('change', function() { var select = jQuery(this); select.prev('input').change(); updateTotalAmount(); }); return new stPriceTaxManagment({ taxValues: stOrderProductPriceManagment.params.taxValues, taxField: jQuery(fields.tax).attr('id'), onChange: updateTotalAmount, priceFields: [{ price: jQuery(fields.price_netto).attr('id'), priceWithTax: jQuery(fields.price_brutto).attr('id') }] }); } jQuery(function($) { stOrderProductPriceManagment.updateProductForm = function updateProductForm(value, data) { $('#code').val(data.c); $('#name').val(data.n); $('#price_netto').val(stPrice.round(data.pn)); $('#tax option').each(function() { if (this.value == data.t) { this.selected = true } }); $('#price_brutto').val(stPrice.round(data.pb)); // $('hidden_data').value = Object.toJSON(data.hd); stOrderProductPriceManagment.updateTotalAmount({ price_brutto: '#price_brutto', discount: '#discount', quantity: '#quantity', total_amount: '#total_amount', discount_type: '#discount_type', tax: '#tax', price_brutto_discount: '#price_brutto_discount' }); } stOrderProductPriceManagment.updateTotalAmount = function(fields) { var tax_index = $(fields.tax).get(0).selectedIndex; var tax_value = stOrderProductPriceManagment.params.taxValues[tax_index]; var discount_type_field = $(fields.discount_type).get(0); if (discount_type_field.options[discount_type_field.selectedIndex].value == '%') { var price_value = stPrice.applyDiscount($(fields.price_brutto).val(), $(fields.discount).val()); } else { var price_value = $(fields.price_brutto).val() - $(fields.discount).val(); if (price_value < 0) { price_value = 0; $(fields.discount).val(Math.round($(fields.price_brutto).val())); } } $(fields.price_brutto_discount).val(price_value); $(fields.total_amount).val(stPrice.round(price_value * $(fields.quantity).val())); } stOrderProductPriceManagment.fnFormatResult = function(value, data, currentValue) { var pattern = '(' + currentValue.replace($.fn.autocomplete.escapePattern, '\\$1') + ')'; var name = data.c+': '+data.n; // if (data.hd.pm.length) // { // var option_label = ''; // // $.each(data.hd.pm, function() // { // option_label += ', '+this.label; // }); // // name += ' ['+option_label.substr(2)+']'; // } name = name.replace(new RegExp(pattern, 'gi'), '$1<\/strong>'); var template = $('#st_order-autocomplete-template'); template.find('h2').html(name); template.find('.price_netto').html(stPrice.round(data.pn)); template.find('.price_brutto').html(stPrice.round(data.pb)); template.find('img').attr('src', data.ip); return template.html(); } stOrderProductPriceManagment.getPriceModifiersLabel = function(price_modifiers) { var option_label = ''; $.each(price_modifiers, function() { option_label += ', '+this.label; }); return option_label.substr(2); } stOrderPriceModifiers.show = function(target) { var hidden_data = target.parents('tr').find('.hidden_data').val().evalJSON(true); var url = stOrderPriceModifiers.params.url+'?id='+hidden_data.id+'&ids='+hidden_data.pm.map(function(data) { return data.custom.id }).join('-'); var container = target.data('container'); if (container == undefined) { $.getJSON(url, function(data) { container = stOrderPriceModifiers.createContainer(data.data); container.appendTo(target.parent('div')); target.data('container', container); }); } else { container.show(); } } stOrderPriceModifiers.update = function() { var container = $(this).parent('div'); var values = container.find('select').serializeArray(); var hidden_data_field = $(this).parents('tr').find('.hidden_data'); var hidden_data = hidden_data_field.val().evalJSON(true); var ids = $.map(values, function(data) {return data.value}); var url = stOrderPriceModifiers.params.url+'?id='+hidden_data.id+'&ids='+ids.join('-'); $.getJSON(url, function(data) { var parent = container.parent('div'); container.remove(); container = stOrderPriceModifiers.createContainer(data.data); container.appendTo(parent); parent.find('a').data('container', container); }); } stOrderPriceModifiers.hide = function(target) { var container = target.data('container'); if (container) { container.hide(); } } stOrderPriceModifiers.createContainer = function(data) { container = $('
'); $.each(data, function(index) { var current = this; container.append($('

'+this.field+'

')); var select = $(''); $.each(current.data, function(index){ var option = $(''); if (current.selected == index) { option.attr('selected', 'selected'); } select.append(option) }); select.change(stOrderPriceModifiers.update); container.append(select); }); return container; } }); stOrderProductPriceManagment.setParams = function(params) { stOrderProductPriceManagment.params = params; }