64 lines
2.0 KiB
PHP
64 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Exports\Banking;
|
|
|
|
use App\Abstracts\Export;
|
|
use App\Models\Banking\Transfer as Model;
|
|
use App\Utilities\Date;
|
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
|
|
|
class Transfers extends Export implements WithColumnFormatting
|
|
{
|
|
public function collection()
|
|
{
|
|
return Model::with(
|
|
'expense_transaction',
|
|
'expense_transaction.account',
|
|
'income_transaction',
|
|
'income_transaction.account'
|
|
)->collectForExport($this->ids);
|
|
}
|
|
|
|
public function map($model): array
|
|
{
|
|
$model->transferred_at = Date::parse($model->expense_transaction->paid_at)->format('Y-m-d');
|
|
$model->amount = $model->expense_transaction->amount;
|
|
$model->from_account_name = $model->expense_transaction->account->name;
|
|
$model->from_currency_code = $model->expense_transaction->currency_code;
|
|
$model->from_currency_rate = $model->expense_transaction->currency_rate;
|
|
$model->to_account_name = $model->income_transaction->account->name;
|
|
$model->to_currency_code = $model->income_transaction->currency_code;
|
|
$model->to_currency_rate = $model->income_transaction->currency_rate;
|
|
$model->description = $model->income_transaction->description;
|
|
$model->payment_method = $model->income_transaction->payment_method;
|
|
$model->reference = $model->income_transaction->reference;
|
|
|
|
return parent::map($model);
|
|
}
|
|
|
|
public function fields(): array
|
|
{
|
|
return [
|
|
'transferred_at',
|
|
'amount',
|
|
'from_currency_code',
|
|
'from_currency_rate',
|
|
'from_account_name',
|
|
'to_currency_code',
|
|
'to_currency_rate',
|
|
'to_account_name',
|
|
'description',
|
|
'payment_method',
|
|
'reference',
|
|
];
|
|
}
|
|
|
|
public function columnFormats(): array
|
|
{
|
|
return [
|
|
'A' => NumberFormat::FORMAT_DATE_YYYYMMDD,
|
|
];
|
|
}
|
|
}
|