invoice and bill currency issue some fix

This commit is contained in:
Batuhan Baş 2018-08-29 19:45:50 +03:00
parent fa6a5d7f47
commit 51503e688c
11 changed files with 140 additions and 62 deletions

View File

@ -280,8 +280,8 @@ class Items extends Controller
$item_tax_price = ($item->sale_price / 100) * $tax->rate;
}
$item->sale_price = $this->convertPrice($item->sale_price, $currency_code, $currency->rate);
$item->purchase_price = $this->convertPrice($item->purchase_price, $currency_code, $currency->rate);
//$item->sale_price = $this->convertPrice($item->sale_price, $currency_code, $currency->rate);
//$item->purchase_price = $this->convertPrice($item->purchase_price, $currency_code, $currency->rate);
switch ($type) {
case 'bill':

View File

@ -755,7 +755,7 @@ class Bills extends Controller
// it should be integer for amount mask
$currency->precision = (int) $currency->precision;
$html = view('expenses.bills.item', compact('item_row', 'taxes'))->render();
$html = view('expenses.bills.item', compact('item_row', 'taxes', 'currency'))->render();
return response()->json([
'success' => true,

View File

@ -76,7 +76,9 @@ class Invoices extends Controller
foreach ($invoice->payments as $item) {
$default_amount = $item->amount;
if ($invoice->currency_code != $item->currency_code) {
if ($invoice->currency_code == $item->currency_code) {
$amount = (double)$default_amount;
} else {
$default_amount_model = new InvoicePayment();
$default_amount_model->default_currency_code = $invoice->currency_code;
@ -85,7 +87,6 @@ class Invoices extends Controller
$default_amount_model->currency_rate = $_currencies[$item->currency_code];
$default_amount = (double) $default_amount_model->getDivideConvertedAmount();
}
$convert_amount = new InvoicePayment();
@ -95,6 +96,7 @@ class Invoices extends Controller
$convert_amount->currency_rate = $_currencies[$invoice->currency_code];
$amount = (double) $convert_amount->getDynamicConvertedAmount();
}
$paid += $amount;
}
@ -892,7 +894,7 @@ class Invoices extends Controller
// it should be integer for amount mask
$currency->precision = (int) $currency->precision;
$html = view('incomes.invoices.item', compact('item_row', 'taxes'))->render();
$html = view('incomes.invoices.item', compact('item_row', 'taxes', 'currency'))->render();
return response()->json([
'success' => true,

View File

@ -39,13 +39,13 @@ class InvoicePayments extends Controller
$currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray();
$currency = Currency::where('code', setting('general.default_currency'))->first();
$account_currency_code = Account::where('id', setting('general.default_account'))->pluck('currency_code')->first();
$currency = Currency::where('code', $account_currency_code)->first();
$payment_methods = Modules::getPaymentMethods();
$invoice->paid = $this->getPaid($invoice);
$paid = $this->getPaid($invoice);
// Get Invoice Totals
foreach ($invoice->totals as $invoice_total) {
@ -88,7 +88,9 @@ class InvoicePayments extends Controller
$default_amount = (double) $request['amount'];
if ($invoice->currency_code != $request['currency_code']) {
if ($invoice->currency_code == $request['currency_code']) {
$amount = $default_amount;
} else {
$default_amount_model = new InvoicePayment();
$default_amount_model->default_currency_code = $invoice->currency_code;
@ -97,7 +99,6 @@ class InvoicePayments extends Controller
$default_amount_model->currency_rate = $currencies[$request['currency_code']];
$default_amount = (double) $default_amount_model->getDivideConvertedAmount();
}
$convert_amount = new InvoicePayment();
@ -107,6 +108,7 @@ class InvoicePayments extends Controller
$convert_amount->currency_rate = $currencies[$invoice->currency_code];
$amount = (double) $convert_amount->getDynamicConvertedAmount();
}
if ($invoice->payments()->count()) {
$total_amount -= $this->getPaid($invoice);
@ -134,7 +136,6 @@ class InvoicePayments extends Controller
$error_amount_model->currency_rate = $currencies[$invoice->currency_code];
$error_amount = (double) $error_amount_model->getDivideConvertedAmount();
}
$convert_amount = new InvoicePayment();
@ -144,6 +145,7 @@ class InvoicePayments extends Controller
$convert_amount->currency_rate = $currencies[$request['currency_code']];
$error_amount = (double) $convert_amount->getDynamicConvertedAmount();
}
$message = trans('messages.error.over_payment', ['amount' => money($error_amount, $request['currency_code'],true)]);
@ -217,7 +219,9 @@ class InvoicePayments extends Controller
foreach ($invoice->payments as $item) {
$default_amount = $item->amount;
if ($invoice->currency_code != $item->currency_code) {
if ($invoice->currency_code == $item->currency_code) {
$amount = (double) $default_amount;
} else {
$default_amount_model = new InvoicePayment();
$default_amount_model->default_currency_code = $invoice->currency_code;
@ -226,7 +230,6 @@ class InvoicePayments extends Controller
$default_amount_model->currency_rate = $_currencies[$item->currency_code];
$default_amount = (double) $default_amount_model->getDivideConvertedAmount();
}
$convert_amount = new InvoicePayment();
@ -236,6 +239,7 @@ class InvoicePayments extends Controller
$convert_amount->currency_rate = $_currencies[$invoice->currency_code];
$amount = (double) $convert_amount->getDynamicConvertedAmount();
}
$paid += $amount;
}

View File

@ -38,8 +38,12 @@ class Money
if (isset($bill_number) || isset($invoice_number) || !empty($items)) {
if (!empty($items)) {
foreach ($items as $key => $item) {
if (isset($item['currency']) && $item['currency'] != $currency_code) {
$items[$key]['price'] = money($item['price'], $item['currency'])->getAmount();
} else {
$items[$key]['price'] = money($item['price'], $currency_code)->getAmount();
}
}
$request->request->set('item', $items);
}

View File

@ -161,11 +161,13 @@
var item_row = '{{ $item_row }}';
$(document).on('click', '#button-add-item', function (e) {
var currency_code = $('#currency_code').val();
$.ajax({
url: '{{ url("expenses/bills/addItem") }}',
type: 'GET',
dataType: 'JSON',
data: {item_row: item_row, currency_code : $('#currency_code').val()},
data: {item_row: item_row, currency_code : currency_code},
success: function(json) {
if (json['success']) {
$('#items tbody #addItem').before(json['html']);
@ -285,6 +287,7 @@
$('#item-tax-' + item_id).val(data.tax_id);
// This event Select2 Stylesheet
$('#item-price-' + item_id).trigger('focusout');
$('#item-tax-' + item_id).trigger('change');
$('#item-total-' + item_id).html(data.total);
@ -412,6 +415,28 @@
$('#discount-total').html(data.discount_total);
$('#tax-total').html(data.tax_total);
$('#grand-total').html(data.grand_total);
$('.input-price').each(function(){
input_price_id = $(this).attr('id');
input_currency_id = input_price_id.replace('price', 'currency');
$('#' + input_currency_id).val(data.currency_code);
amount = $(this).maskMoney('unmasked')[0];
$(this).maskMoney({
thousands : data.thousands_separator,
decimal : data.decimal_mark,
precision : data.precision,
allowZero : true,
prefix : (data.symbol_first) ? data.symbol : '',
suffix : (data.symbol_first) ? '' : data.symbol
});
$(this).val(amount);
$(this).trigger('focusout');
});
}
}
});

View File

@ -142,11 +142,13 @@
var item_row = '{{ $item_row }}';
$(document).on('click', '#button-add-item', function (e) {
var currency_code = $('#currency_code').val();
$.ajax({
url: '{{ url("expenses/bills/addItem") }}',
type: 'GET',
dataType: 'JSON',
data: {item_row: item_row},
data: {item_row: item_row, currency_code : currency_code},
success: function(json) {
if (json['success']) {
$('#items tbody #addItem').before(json['html']);
@ -293,6 +295,7 @@
$('#item-tax-' + item_id).val(data.tax_id);
// This event Select2 Stylesheet
$('#item-price-' + item_id).trigger('focusout');
$('#item-tax-' + item_id).trigger('change');
$('#item-total-' + item_id).html(data.total);
@ -420,6 +423,28 @@
$('#discount-total').html(data.discount_total);
$('#tax-total').html(data.tax_total);
$('#grand-total').html(data.grand_total);
$('.input-price').each(function(){
input_price_id = $(this).attr('id');
input_currency_id = input_price_id.replace('price', 'currency');
$('#' + input_currency_id).val(data.currency_code);
amount = $(this).maskMoney('unmasked')[0];
$(this).maskMoney({
thousands : data.thousands_separator,
decimal : data.decimal_mark,
precision : data.precision,
allowZero : true,
prefix : (data.symbol_first) ? data.symbol : '',
suffix : (data.symbol_first) ? '' : data.symbol
});
$(this).val(amount);
$(this).trigger('focusout');
});
}
}
});

View File

@ -25,6 +25,7 @@
<td>
@stack('price_input_start')
<input value="{{ empty($item) ? '' : $item->price }}" class="form-control text-right" required="required" name="item[{{ $item_row }}][price]" type="text" id="item-price-{{ $item_row }}">
<input value="{{ $currency->code }}" name="item[{{ $item_row }}][currency]" type="hidden" id="item-currency-{{ $item_row }}">
@stack('price_input_end')
</td>
@stack('price_td_end')

View File

@ -161,11 +161,13 @@
var item_row = '{{ $item_row }}';
$(document).on('click', '#button-add-item', function (e) {
var currency_code = $('#currency_code').val();
$.ajax({
url: '{{ url("incomes/invoices/addItem") }}',
type: 'GET',
dataType: 'JSON',
data: {item_row: item_row, currency_code : $('#currency_code').val()},
data: {item_row: item_row, currency_code : currency_code},
success: function(json) {
if (json['success']) {
$('#items tbody #addItem').before(json['html']);
@ -371,6 +373,11 @@
$('#currency_rate').val(data.currency_rate);
$('.input-price').each(function(){
input_price_id = $(this).attr('id');
input_currency_id = input_price_id.replace('price', 'currency');
$('#' + input_currency_id).val(data.currency_code);
amount = $(this).maskMoney('unmasked')[0];
$(this).maskMoney({
@ -401,13 +408,6 @@
dataType: 'JSON',
data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'],#items input[type=\'number\'],#items input[type=\'hidden\'], #items textarea, #items select'),
headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' },
before: function () {
$('.input-price').each(function(){
amount = $(this).maskMoney('unmasked')[0];
$(this).val(amount);
});
},
success: function(data) {
if (data) {
$.each( data.items, function( key, value ) {
@ -422,6 +422,11 @@
$('#grand-total').html(data.grand_total);
$('.input-price').each(function(){
input_price_id = $(this).attr('id');
input_currency_id = input_price_id.replace('price', 'currency');
$('#' + input_currency_id).val(data.currency_code);
amount = $(this).maskMoney('unmasked')[0];
$(this).maskMoney({

View File

@ -142,11 +142,13 @@
var item_row = '{{ $item_row }}';
$(document).on('click', '#button-add-item', function (e) {
var currency_code = $('#currency_code').val();
$.ajax({
url: '{{ url("incomes/invoices/addItem") }}',
type: 'GET',
dataType: 'JSON',
data: {item_row: item_row},
data: {item_row: item_row, currency_code : currency_code},
success: function(json) {
if (json['success']) {
$('#items tbody #addItem').before(json['html']);
@ -379,6 +381,11 @@
$('#currency_rate').val(data.currency_rate);
$('.input-price').each(function(){
input_price_id = $(this).attr('id');
input_currency_id = input_price_id.replace('price', 'currency');
$('#' + input_currency_id).val(data.currency_code);
amount = $(this).maskMoney('unmasked')[0];
$(this).maskMoney({
@ -403,7 +410,6 @@
});
function totalItem() {
$.ajax({
url: '{{ url("common/items/totalItem") }}',
type: 'POST',
@ -424,6 +430,11 @@
$('#grand-total').html(data.grand_total);
$('.input-price').each(function(){
input_price_id = $(this).attr('id');
input_currency_id = input_price_id.replace('price', 'currency');
$('#' + input_currency_id).val(data.currency_code);
amount = $(this).maskMoney('unmasked')[0];
$(this).maskMoney({

View File

@ -25,6 +25,7 @@
<td>
@stack('price_input_start')
<input value="{{ empty($item) ? '' : $item->price }}" class="form-control text-right input-price" required="required" name="item[{{ $item_row }}][price]" type="text" id="item-price-{{ $item_row }}">
<input value="{{ $currency->code }}" name="item[{{ $item_row }}][currency]" type="hidden" id="item-currency-{{ $item_row }}">
@stack('price_input_end')
</td>
@stack('price_td_end')