93 lines
3.8 KiB
PHP
93 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Banking;
|
|
|
|
use App\Models\Expense\Bill;
|
|
use App\Models\Expense\Payment;
|
|
use App\Models\Income\Invoice;
|
|
use App\Models\Income\Revenue;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class Transaction extends Model
|
|
{
|
|
public static function getUserTransactions($user_id, $type)
|
|
{
|
|
$transactions = array();
|
|
|
|
switch ($type) {
|
|
case 'payments':
|
|
$bills = Bill::where('vendor_id', $user_id)->get();
|
|
|
|
foreach ($bills as $bill) {
|
|
$bill_payments = $bill->payments;
|
|
|
|
if ($bill_payments) {
|
|
foreach ($bill_payments as $bill_payment) {
|
|
$transactions[] = (object) [
|
|
'date' => $bill_payment->paid_at,
|
|
'account' => $bill_payment->account->name,
|
|
'type' => trans('invoices.status.partial'),
|
|
'category' => trans_choice('general.invoices', 1),
|
|
'description' => $bill_payment->description,
|
|
'amount' => $bill_payment->amount,
|
|
'currency_code' => $bill_payment->currency_code,
|
|
];
|
|
}
|
|
}
|
|
}
|
|
|
|
$payments = Payment::where('vendor_id', $user_id)->get();
|
|
|
|
foreach ($payments as $payment) {
|
|
$transactions[] = (object) [
|
|
'date' => $payment->paid_at,
|
|
'account' => $payment->account->name,
|
|
'type' => 'Expense',
|
|
'category' => $payment->category->name,
|
|
'description' => $payment->description,
|
|
'amount' => $payment->amount,
|
|
'currency_code' => $payment->currency_code,
|
|
];
|
|
}
|
|
break;
|
|
case 'revenues':
|
|
$invoices = Invoice::where('customer_id', $user_id)->get();
|
|
|
|
foreach ($invoices as $invoice) {
|
|
$invoice_payments = $invoice->payments;
|
|
|
|
if ($invoice_payments) {
|
|
foreach ($invoice_payments as $invoice_payment) {
|
|
$transactions[] = (object) [
|
|
'date' => $invoice_payment->paid_at,
|
|
'account' => $invoice_payment->account->name,
|
|
'type' => trans('invoices.status.partial'),
|
|
'category' => trans_choice('general.invoices', 1),
|
|
'description' => $invoice_payment->description,
|
|
'amount' => $invoice_payment->amount,
|
|
'currency_code' => $invoice_payment->currency_code,
|
|
];
|
|
}
|
|
}
|
|
}
|
|
|
|
$revenues = Revenue::where('customer_id', $user_id)->get();
|
|
|
|
foreach ($revenues as $revenue) {
|
|
$transactions[] = (object) [
|
|
'date' => $revenue->paid_at,
|
|
'account' => $revenue->account->name,
|
|
'type' => trans_choice('general.payments', 1),
|
|
'category' => $revenue->category->name,
|
|
'description' => $revenue->description,
|
|
'amount' => $revenue->amount,
|
|
'currency_code' => $revenue->currency_code,
|
|
];
|
|
}
|
|
break;
|
|
}
|
|
|
|
return $transactions;
|
|
}
|
|
}
|