| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/app.ansachsongkhoe.net/public/js/ |
Upload File : |
$(document).ready(function() {
if ($('input#iraqi_selling_price_adjustment').length > 0) {
iraqi_selling_price_adjustment = true;
} else {
iraqi_selling_price_adjustment = false;
}
//Date picker
$('#transaction_date').datetimepicker({
format: moment_date_format + ' ' + moment_time_format,
ignoreReadonly: true,
});
//get suppliers
$('#supplier_id').select2({
ajax: {
url: '/purchases/get_suppliers',
dataType: 'json',
delay: 250,
data: function(params) {
return {
q: params.term, // search term
page: params.page,
};
},
processResults: function(data) {
return {
results: data,
};
},
},
minimumInputLength: 1,
escapeMarkup: function(m) {
return m;
},
templateResult: function(data) {
if (!data.id) {
return data.text;
}
var html = data.text + ' - ' + data.business_name + ' (' + data.contact_id + ')';
return html;
},
language: {
noResults: function() {
var name = $('#supplier_id')
.data('select2')
.dropdown.$search.val();
return (
'<button type="button" data-name="' +
name +
'" class="btn btn-link add_new_supplier"><i class="fa fa-plus-circle fa-lg" aria-hidden="true"></i> ' +
__translate('add_name_as_new_supplier', { name: name }) +
'</button>'
);
},
},
}).on('select2:select', function (e) {
var data = e.params.data;
$('#pay_term_number').val(data.pay_term_number);
$('#pay_term_type').val(data.pay_term_type);
$('#advance_balance_text').text(__currency_trans_from_en(data.balance), true);
$('#advance_balance').val(data.balance);
set_supplier_address(data);
});
//Quick add supplier
$(document).on('click', '.add_new_supplier', function() {
$('#supplier_id').select2('close');
var name = $(this).data('name');
$('.contact_modal')
.find('input#name')
.val(name);
$('.contact_modal')
.find('select#contact_type')
.val('supplier')
.closest('div.contact_type_div')
.addClass('hide');
$('.contact_modal').modal('show');
});
$('form#quick_add_contact')
.submit(function(e) {
e.preventDefault();
})
.validate({
rules: {
contact_id: {
remote: {
url: '/contacts/check-contacts-id',
type: 'post',
data: {
contact_id: function() {
return $('#contact_id').val();
},
hidden_id: function() {
if ($('#hidden_id').length) {
return $('#hidden_id').val();
} else {
return '';
}
},
},
},
},
},
messages: {
contact_id: {
remote: LANG.contact_id_already_exists,
},
},
submitHandler: function(form) {
var data = $(form).serialize();
$.ajax({
method: 'POST',
url: $(form).attr('action'),
dataType: 'json',
data: data,
beforeSend: function(xhr) {
__disable_submit_button($(form).find('button[type="submit"]'));
},
success: function(result) {
if (result.success == true) {
$('select#supplier_id').append(
$('<option>', { value: result.data.id, text: result.data.name })
);
$('select#supplier_id')
.val(result.data.id)
.trigger('change');
$('div.contact_modal').modal('hide');
set_supplier_address(result.data);
toastr.success(result.msg);
} else {
toastr.error(result.msg);
}
},
});
},
});
$('.contact_modal').on('hidden.bs.modal', function() {
$('form#quick_add_contact')
.find('button[type="submit"]')
.removeAttr('disabled');
$('form#quick_add_contact')[0].reset();
});
//Add products
if ($('#search_product').length > 0) {
$('#search_product')
.autocomplete({
source: function(request, response) {
$.getJSON(
'/purchases/get_products',
{ location_id: $('#location_id').val(), term: request.term },
response
);
},
minLength: 2,
response: function(event, ui) {
if (ui.content.length == 1) {
ui.item = ui.content[0];
$(this)
.data('ui-autocomplete')
._trigger('select', 'autocompleteselect', ui);
$(this).autocomplete('close');
} else if (ui.content.length == 0) {
var term = $(this).data('ui-autocomplete').term;
swal({
title: LANG.no_products_found,
text: __translate('add_name_as_new_product', { term: term }),
buttons: [LANG.cancel, LANG.ok],
}).then(value => {
if (value) {
var container = $('.quick_add_product_modal');
$.ajax({
url: '/products/quick_add?product_name=' + term,
dataType: 'html',
success: function(result) {
$(container)
.html(result)
.modal('show');
},
});
}
});
}
},
select: function(event, ui) {
$(this).val(null);
get_purchase_entry_row(ui.item.product_id, ui.item.variation_id);
},
})
.autocomplete('instance')._renderItem = function(ul, item) {
return $('<li>')
.append('<div>' + item.text + '</div>')
.appendTo(ul);
};
}
$(document).on('click', '.remove_purchase_entry_row', function() {
swal({
title: LANG.sure,
icon: 'warning',
buttons: true,
dangerMode: true,
}).then(value => {
if (value) {
$(this)
.closest('tr')
.remove();
update_table_total();
update_grand_total();
update_table_sr_number();
}
});
});
//On Change of quantity
$(document).on('change', '.purchase_quantity', function() {
var row = $(this).closest('tr');
var quantity = __read_number($(this), true);
var purchase_before_tax = __read_number(row.find('input.purchase_unit_cost'), true);
var purchase_after_tax = __read_number(
row.find('input.purchase_unit_cost_after_tax'),
true
);
//Calculate sub totals
var sub_total_before_tax = quantity * purchase_before_tax;
var sub_total_after_tax = quantity * purchase_after_tax;
row.find('.row_subtotal_before_tax').text(
__currency_trans_from_en(sub_total_before_tax, false, true)
);
__write_number(
row.find('input.row_subtotal_before_tax_hidden'),
sub_total_before_tax,
true
);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(sub_total_after_tax, false, true)
);
__write_number(row.find('input.row_subtotal_after_tax_hidden'), sub_total_after_tax, true);
update_table_total();
update_grand_total();
});
$(document).on('change', '.purchase_unit_cost_without_discount', function() {
var purchase_before_discount = __read_number($(this), true);
var row = $(this).closest('tr');
var discount_percent = __read_number(row.find('input.inline_discounts'), true);
var quantity = __read_number(row.find('input.purchase_quantity'), true);
//Calculations.
var purchase_before_tax =
parseFloat(purchase_before_discount) -
__calculate_amount('percentage', discount_percent, purchase_before_discount);
__write_number(row.find('input.purchase_unit_cost'), purchase_before_tax, true);
var sub_total_before_tax = quantity * purchase_before_tax;
//Tax
var tax_rate = parseFloat(
row
.find('select.purchase_line_tax_id')
.find(':selected')
.data('tax_amount')
);
var tax = __calculate_amount('percentage', tax_rate, purchase_before_tax);
var purchase_after_tax = purchase_before_tax + tax;
var sub_total_after_tax = quantity * purchase_after_tax;
row.find('.row_subtotal_before_tax').text(
__currency_trans_from_en(sub_total_before_tax, false, true)
);
__write_number(
row.find('input.row_subtotal_before_tax_hidden'),
sub_total_before_tax,
true
);
__write_number(row.find('input.purchase_unit_cost_after_tax'), purchase_after_tax, true);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(sub_total_after_tax, false, true)
);
__write_number(row.find('input.row_subtotal_after_tax_hidden'), sub_total_after_tax, true);
row.find('.purchase_product_unit_tax_text').text(
__currency_trans_from_en(tax, false, true)
);
__write_number(row.find('input.purchase_product_unit_tax'), tax, true);
update_inline_profit_percentage(row);
update_table_total();
update_grand_total();
});
$(document).on('change', '.inline_discounts', function() {
var row = $(this).closest('tr');
var discount_percent = __read_number($(this), true);
var quantity = __read_number(row.find('input.purchase_quantity'), true);
var purchase_before_discount = __read_number(
row.find('input.purchase_unit_cost_without_discount'),
true
);
//Calculations.
var purchase_before_tax =
parseFloat(purchase_before_discount) -
__calculate_amount('percentage', discount_percent, purchase_before_discount);
__write_number(row.find('input.purchase_unit_cost'), purchase_before_tax, true);
var sub_total_before_tax = quantity * purchase_before_tax;
//Tax
var tax_rate = parseFloat(
row
.find('select.purchase_line_tax_id')
.find(':selected')
.data('tax_amount')
);
var tax = __calculate_amount('percentage', tax_rate, purchase_before_tax);
var purchase_after_tax = purchase_before_tax + tax;
var sub_total_after_tax = quantity * purchase_after_tax;
row.find('.row_subtotal_before_tax').text(
__currency_trans_from_en(sub_total_before_tax, false, true)
);
__write_number(
row.find('input.row_subtotal_before_tax_hidden'),
sub_total_before_tax,
true
);
__write_number(row.find('input.purchase_unit_cost_after_tax'), purchase_after_tax, true);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(sub_total_after_tax, false, true)
);
__write_number(row.find('input.row_subtotal_after_tax_hidden'), sub_total_after_tax, true);
row.find('.purchase_product_unit_tax_text').text(
__currency_trans_from_en(tax, false, true)
);
__write_number(row.find('input.purchase_product_unit_tax'), tax, true);
update_inline_profit_percentage(row);
update_table_total();
update_grand_total();
});
$(document).on('change', '.purchase_unit_cost', function() {
var row = $(this).closest('tr');
var quantity = __read_number(row.find('input.purchase_quantity'), true);
var purchase_before_tax = __read_number($(this), true);
var sub_total_before_tax = quantity * purchase_before_tax;
//Update unit cost price before discount
var discount_percent = __read_number(row.find('input.inline_discounts'), true);
var purchase_before_discount = __get_principle(purchase_before_tax, discount_percent, true);
__write_number(
row.find('input.purchase_unit_cost_without_discount'),
purchase_before_discount,
true
);
//Tax
var tax_rate = parseFloat(
row
.find('select.purchase_line_tax_id')
.find(':selected')
.data('tax_amount')
);
var tax = __calculate_amount('percentage', tax_rate, purchase_before_tax);
var purchase_after_tax = purchase_before_tax + tax;
var sub_total_after_tax = quantity * purchase_after_tax;
row.find('.row_subtotal_before_tax').text(
__currency_trans_from_en(sub_total_before_tax, false, true)
);
__write_number(
row.find('input.row_subtotal_before_tax_hidden'),
sub_total_before_tax,
true
);
row.find('.purchase_product_unit_tax_text').text(
__currency_trans_from_en(tax, false, true)
);
__write_number(row.find('input.purchase_product_unit_tax'), tax, true);
//row.find('.purchase_product_unit_tax_text').text( tax );
__write_number(row.find('input.purchase_unit_cost_after_tax'), purchase_after_tax, true);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(sub_total_after_tax, false, true)
);
__write_number(row.find('input.row_subtotal_after_tax_hidden'), sub_total_after_tax, true);
update_inline_profit_percentage(row);
update_table_total();
update_grand_total();
});
$(document).on('change', 'select.purchase_line_tax_id', function() {
var row = $(this).closest('tr');
var purchase_before_tax = __read_number(row.find('.purchase_unit_cost'), true);
var quantity = __read_number(row.find('input.purchase_quantity'), true);
//Tax
var tax_rate = parseFloat(
$(this)
.find(':selected')
.data('tax_amount')
);
var tax = __calculate_amount('percentage', tax_rate, purchase_before_tax);
//Purchase price
var purchase_after_tax = purchase_before_tax + tax;
var sub_total_after_tax = quantity * purchase_after_tax;
row.find('.purchase_product_unit_tax_text').text(
__currency_trans_from_en(tax, false, true)
);
__write_number(row.find('input.purchase_product_unit_tax'), tax, true);
__write_number(row.find('input.purchase_unit_cost_after_tax'), purchase_after_tax, true);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(sub_total_after_tax, false, true)
);
__write_number(row.find('input.row_subtotal_after_tax_hidden'), sub_total_after_tax, true);
update_table_total();
update_grand_total();
});
$(document).on('change', '.purchase_unit_cost_after_tax', function() {
var row = $(this).closest('tr');
var purchase_after_tax = __read_number($(this), true);
var quantity = __read_number(row.find('input.purchase_quantity'), true);
var sub_total_after_tax = purchase_after_tax * quantity;
//Tax
var tax_rate = parseFloat(
row
.find('select.purchase_line_tax_id')
.find(':selected')
.data('tax_amount')
);
var purchase_before_tax = __get_principle(purchase_after_tax, tax_rate);
var sub_total_before_tax = quantity * purchase_before_tax;
var tax = __calculate_amount('percentage', tax_rate, purchase_before_tax);
//Update unit cost price before discount
var discount_percent = __read_number(row.find('input.inline_discounts'), true);
var purchase_before_discount = __get_principle(purchase_before_tax, discount_percent, true);
__write_number(
row.find('input.purchase_unit_cost_without_discount'),
purchase_before_discount,
true
);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(sub_total_after_tax, false, true)
);
__write_number(row.find('input.row_subtotal_after_tax_hidden'), sub_total_after_tax, true);
__write_number(row.find('.purchase_unit_cost'), purchase_before_tax, true);
row.find('.row_subtotal_before_tax').text(
__currency_trans_from_en(sub_total_before_tax, false, true)
);
__write_number(
row.find('input.row_subtotal_before_tax_hidden'),
sub_total_before_tax,
true
);
row.find('.purchase_product_unit_tax_text').text(__currency_trans_from_en(tax, true, true));
__write_number(row.find('input.purchase_product_unit_tax'), tax);
update_table_total();
update_grand_total();
});
$('#tax_id, #discount_type, #discount_amount, input#shipping_charges, \
#additional_expense_value_1, #additional_expense_value_2, \
#additional_expense_value_3, #additional_expense_value_4').change(function() {
update_grand_total();
});
//Purchase table
purchase_table = $('#purchase_table').DataTable({
processing: true,
serverSide: true,
scrollY: "75vh",
scrollX: true,
scrollCollapse: true,
ajax: {
url: '/purchases',
data: function(d) {
if ($('#purchase_list_filter_location_id').length) {
d.location_id = $('#purchase_list_filter_location_id').val();
}
if ($('#purchase_list_filter_supplier_id').length) {
d.supplier_id = $('#purchase_list_filter_supplier_id').val();
}
if ($('#purchase_list_filter_payment_status').length) {
d.payment_status = $('#purchase_list_filter_payment_status').val();
}
if ($('#purchase_list_filter_status').length) {
d.status = $('#purchase_list_filter_status').val();
}
var start = '';
var end = '';
if ($('#purchase_list_filter_date_range').val()) {
start = $('input#purchase_list_filter_date_range')
.data('daterangepicker')
.startDate.format('YYYY-MM-DD');
end = $('input#purchase_list_filter_date_range')
.data('daterangepicker')
.endDate.format('YYYY-MM-DD');
}
d.start_date = start;
d.end_date = end;
d = __datatable_ajax_callback(d);
},
},
aaSorting: [[1, 'desc']],
columns: [
{ data: 'action', name: 'action', orderable: false, searchable: false },
{ data: 'transaction_date', name: 'transaction_date' },
{ data: 'ref_no', name: 'ref_no' },
{ data: 'location_name', name: 'BS.name' },
{ data: 'name', name: 'contacts.name' },
{ data: 'status', name: 'status' },
{ data: 'payment_status', name: 'payment_status' },
{ data: 'final_total', name: 'final_total' },
{ data: 'payment_due', name: 'payment_due', orderable: false, searchable: false },
{ data: 'added_by', name: 'u.first_name' },
],
fnDrawCallback: function(oSettings) {
__currency_convert_recursively($('#purchase_table'));
},
"footerCallback": function ( row, data, start, end, display ) {
var total_purchase = 0;
var total_due = 0;
var total_purchase_return_due = 0;
for (var r in data){
total_purchase += $(data[r].final_total).data('orig-value') ?
parseFloat($(data[r].final_total).data('orig-value')) : 0;
var payment_due_obj = $('<div>' + data[r].payment_due + '</div>');
total_due += payment_due_obj.find('.payment_due').data('orig-value') ?
parseFloat(payment_due_obj.find('.payment_due').data('orig-value')) : 0;
total_purchase_return_due += payment_due_obj.find('.purchase_return').data('orig-value') ?
parseFloat(payment_due_obj.find('.purchase_return').data('orig-value')) : 0;
}
$('.footer_purchase_total').html(__currency_trans_from_en(total_purchase));
$('.footer_total_due').html(__currency_trans_from_en(total_due));
$('.footer_total_purchase_return_due').html(__currency_trans_from_en(total_purchase_return_due));
$('.footer_status_count').html(__count_status(data, 'status'));
$('.footer_payment_status_count').html(__count_status(data, 'payment_status'));
},
createdRow: function(row, data, dataIndex) {
$(row)
.find('td:eq(5)')
.attr('class', 'clickable_td');
},
});
$(document).on(
'change',
'#purchase_list_filter_location_id, \
#purchase_list_filter_supplier_id, #purchase_list_filter_payment_status,\
#purchase_list_filter_status',
function() {
purchase_table.ajax.reload();
}
);
update_table_sr_number();
$(document).on('change', '.mfg_date', function() {
var this_date = $(this).val();
var this_moment = moment(this_date, moment_date_format);
var expiry_period = parseFloat(
$(this)
.closest('td')
.find('.row_product_expiry')
.val()
);
var expiry_period_type = $(this)
.closest('td')
.find('.row_product_expiry_type')
.val();
if (this_date) {
if (expiry_period && expiry_period_type) {
exp_date = this_moment
.add(expiry_period, expiry_period_type)
.format(moment_date_format);
$(this)
.closest('td')
.find('.exp_date')
.datepicker('update', exp_date);
} else {
$(this)
.closest('td')
.find('.exp_date')
.datepicker('update', '');
}
} else {
$(this)
.closest('td')
.find('.exp_date')
.datepicker('update', '');
}
});
$('#purchase_entry_table tbody')
.find('.expiry_datepicker')
.each(function() {
$(this).datepicker({
autoclose: true,
format: datepicker_date_format,
});
});
$(document).on('change', '.profit_percent', function() {
var row = $(this).closest('tr');
var profit_percent = __read_number($(this), true);
var purchase_unit_cost = __read_number(row.find('input.purchase_unit_cost_after_tax'), true);
var default_sell_price =
parseFloat(purchase_unit_cost) +
__calculate_amount('percentage', profit_percent, purchase_unit_cost);
var exchange_rate = $('input#exchange_rate').val();
__write_number(
row.find('input.default_sell_price'),
default_sell_price * exchange_rate,
true
);
});
$(document).on('change', '.default_sell_price', function() {
var row = $(this).closest('tr');
update_inline_profit_percentage(row);
});
$(document).on('click', 'a.delete-purchase', function(e) {
e.preventDefault();
swal({
title: LANG.sure,
icon: 'warning',
buttons: true,
dangerMode: true,
}).then(willDelete => {
if (willDelete) {
var href = $(this).attr('href');
$.ajax({
method: 'DELETE',
url: href,
dataType: 'json',
success: function(result) {
if (result.success == true) {
toastr.success(result.msg);
purchase_table.ajax.reload();
} else {
toastr.error(result.msg);
}
},
});
}
});
});
$('table#purchase_entry_table').on('change', 'select.sub_unit', function() {
var tr = $(this).closest('tr');
var base_unit_cost = tr.find('input.base_unit_cost').val();
var base_unit_selling_price = tr.find('input.base_unit_selling_price').val();
var multiplier = parseFloat(
$(this)
.find(':selected')
.data('multiplier')
);
var unit_sp = base_unit_selling_price * multiplier;
var unit_cost = base_unit_cost * multiplier;
var sp_element = tr.find('input.default_sell_price');
__write_number(sp_element, unit_sp);
var cp_element = tr.find('input.purchase_unit_cost_without_discount');
__write_number(cp_element, unit_cost);
cp_element.change();
});
toggle_search();
$('#toggle_additional_expense').click( function() {
$('#additional_expenses_div').toggle();
});
});
function get_purchase_entry_row(product_id, variation_id) {
if (product_id) {
var row_count = $('#row_count').val();
var location_id = $('#location_id').val();
var data = {
product_id: product_id,
row_count: row_count,
variation_id: variation_id,
location_id: location_id
};
if ($('#is_purchase_order').length) {
data.is_purchase_order = true;
}
$.ajax({
method: 'POST',
url: '/purchases/get_purchase_entry_row',
dataType: 'html',
data: data,
success: function(result) {
append_purchase_lines(result, row_count);
},
});
}
}
function append_purchase_lines(data, row_count) {
$(data)
.find('.purchase_quantity')
.each(function() {
row = $(this).closest('tr');
$('#purchase_entry_table tbody').append(
update_purchase_entry_row_values(row)
);
update_row_price_for_exchange_rate(row);
update_inline_profit_percentage(row);
update_table_total();
update_grand_total();
update_table_sr_number();
//Check if multipler is present then multiply it when a new row is added.
if(__getUnitMultiplier(row) > 1){
row.find('select.sub_unit').trigger('change');
}
});
if ($(data).find('.purchase_quantity').length) {
$('#row_count').val(
$(data).find('.purchase_quantity').length + parseInt(row_count)
);
}
}
function update_purchase_entry_row_values(row) {
if (typeof row != 'undefined') {
var quantity = __read_number(row.find('.purchase_quantity'), true);
var unit_cost_price = __read_number(row.find('.purchase_unit_cost'), true);
var row_subtotal_before_tax = quantity * unit_cost_price;
var tax_rate = parseFloat(
$('option:selected', row.find('.purchase_line_tax_id')).attr('data-tax_amount')
);
var unit_product_tax = __calculate_amount('percentage', tax_rate, unit_cost_price);
var unit_cost_price_after_tax = unit_cost_price + unit_product_tax;
var row_subtotal_after_tax = quantity * unit_cost_price_after_tax;
row.find('.row_subtotal_before_tax').text(
__currency_trans_from_en(row_subtotal_before_tax, false, true)
);
__write_number(row.find('.row_subtotal_before_tax_hidden'), row_subtotal_before_tax, true);
__write_number(row.find('.purchase_product_unit_tax'), unit_product_tax, true);
row.find('.purchase_product_unit_tax_text').text(
__currency_trans_from_en(unit_product_tax, false, true)
);
row.find('.purchase_unit_cost_after_tax').text(
__currency_trans_from_en(unit_cost_price_after_tax, true)
);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(row_subtotal_after_tax, false, true)
);
__write_number(row.find('.row_subtotal_after_tax_hidden'), row_subtotal_after_tax, true);
row.find('.expiry_datepicker').each(function() {
$(this).datepicker({
autoclose: true,
format: datepicker_date_format,
});
});
return row;
}
}
function update_row_price_for_exchange_rate(row) {
var exchange_rate = $('input#exchange_rate').val();
if (exchange_rate == 1) {
return true;
}
var purchase_unit_cost_without_discount =
__read_number(row.find('.purchase_unit_cost_without_discount'), true) / exchange_rate;
__write_number(
row.find('.purchase_unit_cost_without_discount'),
purchase_unit_cost_without_discount,
true
);
var purchase_unit_cost = __read_number(row.find('.purchase_unit_cost'), true) / exchange_rate;
__write_number(row.find('.purchase_unit_cost'), purchase_unit_cost, true);
var row_subtotal_before_tax_hidden =
__read_number(row.find('.row_subtotal_before_tax_hidden'), true) / exchange_rate;
row.find('.row_subtotal_before_tax').text(
__currency_trans_from_en(row_subtotal_before_tax_hidden, false, true)
);
__write_number(
row.find('input.row_subtotal_before_tax_hidden'),
row_subtotal_before_tax_hidden,
true
);
var purchase_product_unit_tax =
__read_number(row.find('.purchase_product_unit_tax'), true) / exchange_rate;
__write_number(row.find('input.purchase_product_unit_tax'), purchase_product_unit_tax, true);
row.find('.purchase_product_unit_tax_text').text(
__currency_trans_from_en(purchase_product_unit_tax, false, true)
);
var purchase_unit_cost_after_tax =
__read_number(row.find('.purchase_unit_cost_after_tax'), true) / exchange_rate;
__write_number(
row.find('input.purchase_unit_cost_after_tax'),
purchase_unit_cost_after_tax,
true
);
var row_subtotal_after_tax_hidden =
__read_number(row.find('.row_subtotal_after_tax_hidden'), true) / exchange_rate;
__write_number(
row.find('input.row_subtotal_after_tax_hidden'),
row_subtotal_after_tax_hidden,
true
);
row.find('.row_subtotal_after_tax').text(
__currency_trans_from_en(row_subtotal_after_tax_hidden, false, true)
);
}
function iraqi_dinnar_selling_price_adjustment(row) {
var default_sell_price = __read_number(row.find('input.default_sell_price'), true);
//Adjsustment
var remaining = default_sell_price % 250;
if (remaining >= 125) {
default_sell_price += 250 - remaining;
} else {
default_sell_price -= remaining;
}
__write_number(row.find('input.default_sell_price'), default_sell_price, true);
update_inline_profit_percentage(row);
}
function update_inline_profit_percentage(row) {
//Update Profit percentage
var default_sell_price = __read_number(row.find('input.default_sell_price'), true);
var exchange_rate = $('input#exchange_rate').val();
default_sell_price_in_base_currency = default_sell_price / parseFloat(exchange_rate);
var purchase_after_tax = __read_number(row.find('input.purchase_unit_cost_after_tax'), true);
var profit_percent = __get_rate(purchase_after_tax, default_sell_price_in_base_currency);
__write_number(row.find('input.profit_percent'), profit_percent, true);
}
function update_table_total() {
var total_quantity = 0;
var total_st_before_tax = 0;
var total_subtotal = 0;
$('#purchase_entry_table tbody')
.find('tr')
.each(function() {
total_quantity += __read_number($(this).find('.purchase_quantity'), true);
total_st_before_tax += __read_number(
$(this).find('.row_subtotal_before_tax_hidden'),
true
);
total_subtotal += __read_number($(this).find('.row_subtotal_after_tax_hidden'), true);
});
$('#total_quantity').text(__number_f(total_quantity, false));
$('#total_st_before_tax').text(__currency_trans_from_en(total_st_before_tax, true, true));
__write_number($('input#st_before_tax_input'), total_st_before_tax, true);
$('#total_subtotal').text(__currency_trans_from_en(total_subtotal, true, true));
__write_number($('input#total_subtotal_input'), total_subtotal, true);
}
function update_grand_total() {
var st_before_tax = __read_number($('input#st_before_tax_input'), true);
var total_subtotal = __read_number($('input#total_subtotal_input'), true);
//Calculate Discount
var discount_type = $('select#discount_type').val();
var discount_amount = __read_number($('input#discount_amount'), true);
var discount = __calculate_amount(discount_type, discount_amount, total_subtotal);
$('#discount_calculated_amount').text(__currency_trans_from_en(discount, true, true));
//Calculate Tax
var tax_rate = parseFloat($('option:selected', $('#tax_id')).data('tax_amount'));
var tax = __calculate_amount('percentage', tax_rate, total_subtotal - discount);
__write_number($('input#tax_amount'), tax);
$('#tax_calculated_amount').text(__currency_trans_from_en(tax, true, true));
//Calculate shipping
var shipping_charges = __read_number($('input#shipping_charges'), true);
//calculate additional expenses
var additional_expense_1 = __read_number($('input#additional_expense_value_1'), true);
var additional_expense_2 = __read_number($('input#additional_expense_value_2'), true);
var additional_expense_3 = __read_number($('input#additional_expense_value_3'), true);
var additional_expense_4 = __read_number($('input#additional_expense_value_4'), true);
//Calculate Final total
grand_total = total_subtotal - discount + tax + shipping_charges +
additional_expense_1 + additional_expense_2 + additional_expense_3 + additional_expense_4;
__write_number($('input#grand_total_hidden'), grand_total, true);
var payment = __read_number($('input.payment-amount'), true);
var due = grand_total - payment;
// __write_number($('input.payment-amount'), grand_total, true);
$('#grand_total').text(__currency_trans_from_en(grand_total, true, true));
$('#payment_due').text(__currency_trans_from_en(due, true, true));
//__currency_convert_recursively($(document));
}
$(document).on('change', 'input.payment-amount', function() {
var payment = __read_number($(this), true);
var grand_total = __read_number($('input#grand_total_hidden'), true);
var bal = grand_total - payment;
$('#payment_due').text(__currency_trans_from_en(bal, true, true));
});
function update_table_sr_number() {
var sr_number = 1;
$('table#purchase_entry_table tbody')
.find('.sr_number')
.each(function() {
$(this).text(sr_number);
sr_number++;
});
}
$(document).on('click', 'button#submit_purchase_form', function(e) {
e.preventDefault();
//Check if product is present or not.
if ($('table#purchase_entry_table tbody tr').length <= 0) {
toastr.warning(LANG.no_products_added);
$('input#search_product').select();
return false;
}
$('form#add_purchase_form').validate({
rules: {
ref_no: {
remote: {
url: '/purchases/check_ref_number',
type: 'post',
data: {
ref_no: function() {
return $('#ref_no').val();
},
contact_id: function() {
return $('#supplier_id').val();
},
purchase_id: function() {
if ($('#purchase_id').length > 0) {
return $('#purchase_id').val();
} else {
return '';
}
},
},
},
},
},
messages: {
ref_no: {
remote: LANG.ref_no_already_exists,
},
},
});
var payment_types_dropdown = $('.payment_types_dropdown')
var payment_type = payment_types_dropdown.val();
var payment_row = payment_types_dropdown.closest('.payment_row');
amount_element = payment_row.find('.payment-amount');
account_dropdown = payment_row.find('.account-dropdown');
if (payment_type == 'advance') {
max_value = $('#advance_balance').val();
msg = $('#advance_balance').data('error-msg');
amount_element.rules('add', {
'max-value': max_value,
messages: {
'max-value': msg,
},
});
if (account_dropdown) {
account_dropdown.prop('disabled', true);
}
} else {
amount_element.rules("remove", "max-value");
if (account_dropdown) {
account_dropdown.prop('disabled', false);
}
}
if ($('form#add_purchase_form').valid()) {
$(this).attr('disabled', true);
$('form#add_purchase_form').submit();
}
});
function toggle_search() {
if ($('#location_id').val()) {
$('#search_product').removeAttr('disabled');
$('#search_product').focus();
} else {
$('#search_product').attr('disabled', true);
}
}
$(document).on('change', '#location_id', function() {
toggle_search();
$('#purchase_entry_table tbody').html('');
update_table_total();
update_grand_total();
update_table_sr_number();
});
$(document).on('shown.bs.modal', '.quick_add_product_modal', function(){
var selected_location = $('#location_id').val();
if (selected_location) {
$('.quick_add_product_modal').find('#product_locations').val([selected_location]).trigger("change");
}
});
function set_supplier_address(data) {
var address = [];
if (data.supplier_business_name) {
address.push(data.supplier_business_name);
}
if (data.business_name) {
address.push(data.business_name);
}
if (data.name) {
address.push('<br>' + data.name);
}
if (data.text) {
address.push('<br>' + data.text);
}
if (data.address_line_1) {
address.push('<br>' + data.address_line_1);
}
if (data.address_line_2) {
address.push('<br>' + data.address_line_2);
}
if (data.city) {
address.push('<br>' + data.city);
}
if (data.state) {
address.push(data.state);
}
if (data.country) {
address.push(data.country);
}
if (data.zip_code) {
address.push('<br>' + data.zip_code);
}
var supplier_address = address.join(', ');
$('#supplier_address_div').html(supplier_address);
}
$(document).on('change', '#supplier_id', function(){
if ($('#purchase_order_ids').length) {
contact_id = $(this).val();
$.ajax({
url: '/get-purchase-orders/' + contact_id,
dataType: 'json',
success: function(data) {
$('#purchase_order_ids').select2('destroy').empty().select2({data: data});
$('#purchase_entry_table tbody').find('tr').each( function(){
if (typeof($(this).data('purchase_order_id')) !== 'undefined') {
$(this).remove();
}
});
},
});
}
});
$("#purchase_order_ids").on("select2:select", function (e) {
var purchase_order_id = e.params.data.id;
var row_count = $('#row_count').val();
$.ajax({
url: '/get-purchase-order-lines/' + purchase_order_id + '?row_count=' + row_count,
dataType: 'json',
success: function(data) {
set_po_values(data.po);
append_purchase_lines(data.html, row_count);
},
});
});
$("#purchase_order_ids").on("select2:unselect", function (e) {
var purchase_order_id = e.params.data.id;
$('#purchase_entry_table tbody').find('tr').each( function(){
if (typeof($(this).data('purchase_order_id')) !== 'undefined'
&& $(this).data('purchase_order_id') == purchase_order_id) {
$(this).remove();
}
});
});
function set_po_values(po) {
$('#shipping_details').val(po.shipping_details);
$('#shipping_charges').val( __number_f(po.shipping_charges));
if ($('#shipping_custom_field_1').length) {
$('#shipping_custom_field_1').val(po.shipping_custom_field_1);
}
if ($('#shipping_custom_field_2').length) {
$('#shipping_custom_field_2').val(po.shipping_custom_field_2);
}
if ($('#shipping_custom_field_3').length) {
$('#shipping_custom_field_3').val(po.shipping_custom_field_3);
}
if ($('#shipping_custom_field_4').length) {
$('#shipping_custom_field_4').val(po.shipping_custom_field_4);
}
if ($('#shipping_custom_field_5').length) {
$('#shipping_custom_field_5').val(po.shipping_custom_field_5);
}
$('#additional_expense_key_1').val(po.additional_expense_key_1);
$('#additional_expense_key_2').val(po.additional_expense_key_2);
$('#additional_expense_key_3').val(po.additional_expense_key_3);
$('#additional_expense_key_4').val(po.additional_expense_key_4);
$('#additional_expense_value_1').val( __number_f(po.additional_expense_value_1));
$('#additional_expense_value_2').val( __number_f(po.additional_expense_value_2));
$('#additional_expense_value_3').val( __number_f(po.additional_expense_value_3));
$('#additional_expense_value_4').val( __number_f(po.additional_expense_value_4));
}