ultimatepos/Modules/Manufacturing/Resources/views/production/production_script.blade.php

194 lines
8.5 KiB
PHP

<script type="text/javascript">
$(document).ready( function() {
jQuery.validator.addMethod("notEmpty", function(value, element, param) {
return __number_uf(value) > 0
}, "{{__('manufacturing::lang.quantity_greater_than_zero')}}");
jQuery.validator.addMethod("notEqualToWastedQuantity", function(value, element, param) {
var waste_qty = __read_number($('#mfg_wasted_units'));
var qty = __number_uf(value);
return qty > waste_qty;
}, "{{__('manufacturing::lang.waste_qty_less_than_qty')}}");
__init_datetime_field('#transaction_date');
__init_date_field('#exp_date');
production_form_validator = $('#production_form').validate();
});
$(document).on('change', '#production_form #variation_id, #production_form #location_id', function () {
var variation_id = $("#variation_id").val();
var location_id = $("#location_id").val();
if(variation_id && location_id) {
$.ajax({
url: "/manufacturing/get-recipe-details?variation_id=" + variation_id + "&location_id=" + location_id,
dataType: 'json',
success: function(result) {
$('#enter_ingredients_table').html(result.ingredient_table);
if (result.is_sub_unit) {
$('#recipe_quantity_input').removeClass('input-group');
$('#recipe_quantity_input').addClass('input_inline');
$('#unit_html').removeClass('input-group-addon');
} else {
$('#recipe_quantity_input').addClass('input-group');
$('#recipe_quantity_input').removeClass('input_inline');
$('#unit_html').addClass('input-group-addon');
}
__write_number($('#recipe_quantity'), result.recipe.total_quantity);
$('#unit_html').html(result.unit_html);
$('#wasted_units_text').text(result.unit_name);
var mfg_wasted_units = __calculate_amount('percentage', $('#waste_percent').val(), result.recipe.total_quantity);
__write_number($('#mfg_wasted_units'), mfg_wasted_units);
__write_number($('#production_cost'), result.recipe.extra_cost);
$('#mfg_production_cost_type').val(result.recipe.production_cost_type);
__currency_convert_recursively($('#enter_ingredients_table'));
calculateRecipeTotal();
},
});
} else {
$('#enter_ingredients_table').html('');
calculateRecipeTotal();
}
});
$(document).on('change', '#production_cost, select.sub_unit, input.mfg_waste_percent, #mfg_production_cost_type', function(){
calculateRecipeTotal();
});
$(document).on('change', '#recipe_quantity, #sub_unit_id', function(){
var recipe_quantity = __read_number($('#recipe_quantity'));
var mfg_wasted_units = __calculate_amount('percentage', $('#waste_percent').val(), recipe_quantity);
__write_number($('#mfg_wasted_units'), mfg_wasted_units);
var multiplier = 1;
if ($('#sub_unit_id').length) {
multiplier = parseFloat(
$('#sub_unit_id')
.find(':selected')
.data('multiplier')
);
recipe_quantity = recipe_quantity * multiplier;
}
$('#ingredients_for_unit_recipe_table tbody tr').each( function() {
var line_unit_quantity = parseFloat($(this).find('.unit_quantity').val());
var line_multiplier = __getUnitMultiplier($(this));
var line_total_quantity = (recipe_quantity * line_unit_quantity) / line_multiplier;
__write_number($(this).find('.total_quantities'), line_total_quantity);
$(this).find('.total_quantities').change();
});
});
$(document).on('change', '#sub_unit_id', function(){
var unit_name = $(this)
.find(':selected')
.data('unit_name');
$('#wasted_units_text').text(unit_name);
});
$(document).on('change', '.total_quantities', function(){
if (production_form_validator) {
production_form_validator.element($(this));
}
calculateRecipeTotal();
});
function calculateRecipeTotal() {
var recipe_quantity = __read_number($('#recipe_quantity'));
var multiplier = 1;
if ($('#sub_unit_id').length) {
multiplier = parseFloat(
$('#sub_unit_id')
.find(':selected')
.data('multiplier')
);
recipe_quantity = recipe_quantity * multiplier;
}
var total_ingredients_cost = 0;
$('#ingredients_for_unit_recipe_table tbody tr').each( function() {
if ($(this).find('.ingredient_price').length > 0) {
var line_unit_price = parseFloat($(this).find('.ingredient_price').val());
var line_unit_quantity = parseFloat($(this).find('.unit_quantity').val());
var line_unit_total = line_unit_price * line_unit_quantity;
var line_total_quantity = __read_number($(this).find('.total_quantities'));
var line_multiplier = __getUnitMultiplier($(this));
var line_waste_percent = __read_number($(this).find('.mfg_waste_percent'));
var line_final_quantity = __substract_percent(line_total_quantity, line_waste_percent);
var line_total = line_unit_price * line_total_quantity * line_multiplier;
$(this).find('span.ingredient_total_price').text(__currency_trans_from_en(line_total, true));
$(this).find('span.row_final_quantity').text(__currency_trans_from_en(line_final_quantity, false));
var line_unit_name = '';
if ($(this).find('.sub_unit').length) {
line_unit_name = $(this).find('.sub_unit')
.find('option:selected')
.text();
} else {
line_unit_name = $(this).find('.line_unit_span').text();
}
$(this).find('.row_unit_text').text(line_unit_name);
total_ingredients_cost += line_total;
}
});
$('#total_ingredient_price').text(__currency_trans_from_en(total_ingredients_cost, true));
var production_cost = __read_number($('#production_cost'));
var production_cost_type = $('#mfg_production_cost_type').val();
if (production_cost_type == 'percentage') {
production_cost = __calculate_amount('percentage', production_cost, total_ingredients_cost);
} else if(production_cost_type == 'per_unit') {
production_cost = production_cost * __read_number($('#recipe_quantity'));
}
$('span#total_production_cost').text(__currency_trans_from_en(production_cost, true));
var final_price = total_ingredients_cost + production_cost;
__write_number($('#final_total'), final_price);
$('span#final_total_text').text(__currency_trans_from_en(final_price, true));
__write_number($('#total'), total_ingredients_cost);
}
$(document).on('change', 'select.sub_unit', function() {
var tr = $(this).closest('tr');
var selected_option = $(this).find(':selected');
var multiplier = parseFloat(selected_option.data('multiplier'));
var allow_decimal = parseInt(selected_option.data('allow_decimal'));
var qty_element = tr.find('input.total_quantities');
var base_max_avlbl = qty_element.data('qty_available');
var error_msg_line = 'pos_max_qty_error';
qty_element.attr('data-decimal', allow_decimal);
var abs_digit = true;
if (allow_decimal) {
abs_digit = false;
}
qty_element.rules('add', {
abs_digit: abs_digit,
});
if (base_max_avlbl) {
var max_avlbl = parseFloat(base_max_avlbl) / multiplier;
var formated_max_avlbl = __number_f(max_avlbl);
var unit_name = selected_option.data('unit_name');
var max_err_msg = __translate(error_msg_line, {
max_val: formated_max_avlbl,
unit_name: unit_name,
});
qty_element.attr('data-rule-max-value', max_avlbl);
qty_element.attr('data-msg-max-value', max_err_msg);
qty_element.rules('add', {
'max-value': max_avlbl,
messages: {
'max-value': max_err_msg,
},
});
qty_element.trigger('change');
}
});
</script>