mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
working on payment currency
This commit is contained in:
parent
5fb49dd1f5
commit
1d2134e59f
@ -100,6 +100,7 @@ class ReportController extends BaseController
|
|||||||
'invoice_status' => request()->invoice_status,
|
'invoice_status' => request()->invoice_status,
|
||||||
'group_dates_by' => request()->group_dates_by,
|
'group_dates_by' => request()->group_dates_by,
|
||||||
'document_filter' => request()->document_filter,
|
'document_filter' => request()->document_filter,
|
||||||
|
'currency_type' => request()->currency_type,
|
||||||
'export_format' => $format,
|
'export_format' => $format,
|
||||||
];
|
];
|
||||||
$report = new $reportClass($startDate, $endDate, $isExport, $options);
|
$report = new $reportClass($startDate, $endDate, $isExport, $options);
|
||||||
|
@ -91,7 +91,13 @@ class PaymentDatatable extends EntityDatatable
|
|||||||
[
|
[
|
||||||
'amount',
|
'amount',
|
||||||
function ($model) {
|
function ($model) {
|
||||||
return Utils::formatMoney($model->amount, $model->currency_id, $model->country_id);
|
$amount = Utils::formatMoney($model->amount, $model->currency_id, $model->country_id);
|
||||||
|
|
||||||
|
if ($model->exchange_currency_id && $model->exchange_rate != 1) {
|
||||||
|
$amount .= ' | ' . Utils::formatMoney($model->amount * $model->exchange_rate, $model->exchange_currency_id, $model->country_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $amount;
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -4,6 +4,7 @@ namespace App\Ninja\Reports;
|
|||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Auth;
|
use Auth;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
class PaymentReport extends AbstractReport
|
class PaymentReport extends AbstractReport
|
||||||
{
|
{
|
||||||
@ -20,6 +21,7 @@ class PaymentReport extends AbstractReport
|
|||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
$account = Auth::user()->account;
|
$account = Auth::user()->account;
|
||||||
|
$currencyType = $this->options['currency_type'];
|
||||||
$invoiceMap = [];
|
$invoiceMap = [];
|
||||||
|
|
||||||
$payments = Payment::scope()
|
$payments = Payment::scope()
|
||||||
@ -39,22 +41,36 @@ class PaymentReport extends AbstractReport
|
|||||||
foreach ($payments->get() as $payment) {
|
foreach ($payments->get() as $payment) {
|
||||||
$invoice = $payment->invoice;
|
$invoice = $payment->invoice;
|
||||||
$client = $payment->client;
|
$client = $payment->client;
|
||||||
|
$amount = $payment->getCompletedAmount();
|
||||||
|
|
||||||
|
if ($currencyType == 'converted') {
|
||||||
|
$amount *= $payment->exchange_rate;
|
||||||
|
$this->addToTotals($payment->exchange_currency_id, 'paid', $amount);
|
||||||
|
$amount = Utils::formatMoney($amount, $payment->exchange_currency_id);
|
||||||
|
} else {
|
||||||
|
$this->addToTotals($client->currency_id, 'paid', $amount);
|
||||||
|
$amount = $account->formatMoney($amount, $client);
|
||||||
|
}
|
||||||
|
|
||||||
$this->data[] = [
|
$this->data[] = [
|
||||||
$this->isExport ? $client->getDisplayName() : $client->present()->link,
|
$this->isExport ? $client->getDisplayName() : $client->present()->link,
|
||||||
$this->isExport ? $invoice->invoice_number : $invoice->present()->link,
|
$this->isExport ? $invoice->invoice_number : $invoice->present()->link,
|
||||||
$invoice->present()->invoice_date,
|
$invoice->present()->invoice_date,
|
||||||
$account->formatMoney($invoice->amount, $client),
|
$account->formatMoney($invoice->amount, $client),
|
||||||
$payment->present()->payment_date,
|
$payment->present()->payment_date,
|
||||||
$account->formatMoney($payment->getCompletedAmount(), $client),
|
$amount,
|
||||||
$payment->present()->method,
|
$payment->present()->method,
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! isset($invoiceMap[$invoice->id])) {
|
if (! isset($invoiceMap[$invoice->id])) {
|
||||||
$this->addToTotals($client->currency_id, 'amount', $invoice->amount);
|
|
||||||
$invoiceMap[$invoice->id] = true;
|
$invoiceMap[$invoice->id] = true;
|
||||||
}
|
|
||||||
|
|
||||||
$this->addToTotals($client->currency_id, 'paid', $payment->getCompletedAmount());
|
if ($currencyType == 'converted') {
|
||||||
|
$this->addToTotals($payment->exchange_currency_id, 'amount', $invoice->amount * $payment->exchange_rate);
|
||||||
|
} else {
|
||||||
|
$this->addToTotals($client->currency_id, 'amount', $invoice->amount);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,8 @@ class PaymentRepository extends BaseRepository
|
|||||||
'payments.routing_number',
|
'payments.routing_number',
|
||||||
'payments.bank_name',
|
'payments.bank_name',
|
||||||
'payments.private_notes',
|
'payments.private_notes',
|
||||||
|
'payments.exchange_rate',
|
||||||
|
'payments.exchange_currency_id',
|
||||||
'invoices.is_deleted as invoice_is_deleted',
|
'invoices.is_deleted as invoice_is_deleted',
|
||||||
'gateways.name as gateway_name',
|
'gateways.name as gateway_name',
|
||||||
'gateways.id as gateway_id',
|
'gateways.id as gateway_id',
|
||||||
@ -187,7 +189,7 @@ class PaymentRepository extends BaseRepository
|
|||||||
$payment->payment_date = date('Y-m-d');
|
$payment->payment_date = date('Y-m-d');
|
||||||
}
|
}
|
||||||
|
|
||||||
$payment->fill(request()->all());
|
$payment->fill($input);
|
||||||
|
|
||||||
if (! $publicId) {
|
if (! $publicId) {
|
||||||
$clientId = $input['client_id'];
|
$clientId = $input['client_id'];
|
||||||
|
@ -60,6 +60,8 @@ class PaymentTransformer extends EntityTransformer
|
|||||||
'invoice_id' => (int) ($this->invoice ? $this->invoice->public_id : $payment->invoice->public_id),
|
'invoice_id' => (int) ($this->invoice ? $this->invoice->public_id : $payment->invoice->public_id),
|
||||||
'invoice_number' => $this->invoice ? $this->invoice->invoice_number : $payment->invoice->invoice_number,
|
'invoice_number' => $this->invoice ? $this->invoice->invoice_number : $payment->invoice->invoice_number,
|
||||||
'private_notes' => $payment->private_notes,
|
'private_notes' => $payment->private_notes,
|
||||||
|
'exchange_rate' => (float) $payment->exchange_rate,
|
||||||
|
'exchange_currency_id' => (int) $payment->exchange_currency_id,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2524,6 +2524,8 @@ $LANG = array(
|
|||||||
'your_password_reset_link' => 'Your Password Reset Link',
|
'your_password_reset_link' => 'Your Password Reset Link',
|
||||||
'subdomain_taken' => 'The subdomain is already in use',
|
'subdomain_taken' => 'The subdomain is already in use',
|
||||||
'client_login' => 'Client Login',
|
'client_login' => 'Client Login',
|
||||||
|
'converted_amount' => 'Converted Amount',
|
||||||
|
'default' => 'Default',
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
<td>{{ trans('texts.method') }}</td>
|
<td>{{ trans('texts.method') }}</td>
|
||||||
<td>{{ trans('texts.transaction_reference') }}</td>
|
<td>{{ trans('texts.transaction_reference') }}</td>
|
||||||
<td>{{ trans('texts.private_notes') }}</td>
|
<td>{{ trans('texts.private_notes') }}</td>
|
||||||
|
<td>{{ trans('texts.converted_amount') }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@foreach ($payments as $payment)
|
@foreach ($payments as $payment)
|
||||||
@ -24,6 +25,7 @@
|
|||||||
<td>{{ $payment->present()->method }}</td>
|
<td>{{ $payment->present()->method }}</td>
|
||||||
<td>{{ $payment->transaction_reference }}</td>
|
<td>{{ $payment->transaction_reference }}</td>
|
||||||
<td>{{ $payment->private_notes }}</td>
|
<td>{{ $payment->private_notes }}</td>
|
||||||
|
<td>{{ Utils::formatMoney($payment->amount * $payment->exchange_rate, $payment->exchange_currency_id) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
|
@ -90,7 +90,7 @@
|
|||||||
{!! Former::text('exchange_rate')
|
{!! Former::text('exchange_rate')
|
||||||
->data_bind("value: exchange_rate, enable: enableExchangeRate, valueUpdate: 'afterkeydown'") !!}
|
->data_bind("value: exchange_rate, enable: enableExchangeRate, valueUpdate: 'afterkeydown'") !!}
|
||||||
{!! Former::text('')
|
{!! Former::text('')
|
||||||
->label(trans('texts.amount'))
|
->label(trans('texts.converted_amount'))
|
||||||
->data_bind("value: convertedAmount, enable: enableExchangeRate")
|
->data_bind("value: convertedAmount, enable: enableExchangeRate")
|
||||||
->append('<span data-bind="html: exchangeCurrencyCode"></span>') !!}
|
->append('<span data-bind="html: exchangeCurrencyCode"></span>') !!}
|
||||||
</div>
|
</div>
|
||||||
|
@ -141,6 +141,12 @@
|
|||||||
->addOption(trans('texts.payment_date'), FILTER_PAYMENT_DATE) !!}
|
->addOption(trans('texts.payment_date'), FILTER_PAYMENT_DATE) !!}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="currencyType" style="display:none">
|
||||||
|
{!! Former::select('currency_type')->label(trans('texts.currency'))
|
||||||
|
->addOption(trans('texts.default'), 'default')
|
||||||
|
->addOption(trans('texts.converted'), 'converted') !!}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="invoiceOrExpenseField" style="display:none">
|
<div id="invoiceOrExpenseField" style="display:none">
|
||||||
{!! Former::select('document_filter')->label('filter')
|
{!! Former::select('document_filter')->label('filter')
|
||||||
->addOption(trans('texts.all'), '')
|
->addOption(trans('texts.all'), '')
|
||||||
@ -283,6 +289,7 @@
|
|||||||
$('#dateField').toggle(val == '{{ ENTITY_TAX_RATE }}');
|
$('#dateField').toggle(val == '{{ ENTITY_TAX_RATE }}');
|
||||||
$('#statusField').toggle(val == '{{ ENTITY_INVOICE }}' || val == '{{ ENTITY_PRODUCT }}');
|
$('#statusField').toggle(val == '{{ ENTITY_INVOICE }}' || val == '{{ ENTITY_PRODUCT }}');
|
||||||
$('#invoiceOrExpenseField').toggle(val == '{{ ENTITY_DOCUMENT }}');
|
$('#invoiceOrExpenseField').toggle(val == '{{ ENTITY_DOCUMENT }}');
|
||||||
|
$('#currencyType').toggle(val == '{{ ENTITY_PAYMENT }}');
|
||||||
}
|
}
|
||||||
|
|
||||||
function setDocumentZipShown() {
|
function setDocumentZipShown() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user