File "AccountResource.php"
Full Path: /var/www/html/back/app/Http/Resources/Permissions/AccountResource.php
File size: 3.67 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Resources;
use App\Domain\Payment\Enums\PaymentStatusEnum;
use App\Domain\Payment\Enums\PaymentTypeEnum;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class AccountResource extends JsonResource
{
public function toArray(Request $request): array
{
$credit = 0;
$debit = 0;
$payments = 0;
$currentBalanceIfNotCash = 0;
//$balanceOfTheDate = 0;
//$addedDate = Carbon::parse($this->added);
foreach ($this->payments as $payment) {
$paymentDate = Carbon::parse($payment->payment_date);
if ($this->is_cash) {
if ($payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_RECEPTION->value &&
$payment->status == PaymentStatusEnum::STATUS_RECEIVED->value
) {
$credit += $payment->amount;
} elseif($payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_MOVING->value &&
$payment->status == PaymentStatusEnum::STATUS_RECEIVED->value) {
foreach ($payment->distributions as $distribution) {
$credit += $distribution->cashbox;
}
} elseif ($payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_ISSUEANCE->value) {
if ($payment->status == PaymentStatusEnum::STATUS_ISSUED->value) {
$debit += $payment->amount;
}
elseif (in_array($payment->status, [
PaymentStatusEnum::STATUS_APPROVE->value,
PaymentStatusEnum::STATUS_AGREE_ONE_TWO->value,
PaymentStatusEnum::STATUS_AGREE_TWO_TWO->value,
PaymentStatusEnum::STATUS_ISSUE->value,
])) {
$payments += $payment->amount;
}
}
} else {
if ($payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_RECEPTION_FROM_1C->value) {
$credit += $payment->amount;
$currentBalanceIfNotCash += $payment->amount;
} elseif ($payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_MOVING->value ||
$payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_PAYMENT->value
) {
$debit += $payment->amount;
$currentBalanceIfNotCash -= $payment->amount;
}
}
/*if ($addedDate->gt($paymentDate)) {
if ($payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_RECEPTION->value) {
$balanceOfTheDate += $payment->amount;
}
}*/
}
$currentBalance = ($this->is_cash) ? $this->balance_of_the_date + $credit - $debit : $this->current_balance;
$remainingBalance = ($this->is_cash) ? $currentBalance - $payments : null;
return [
'id' => $this->id,
'name' => $this->name,
'number' => $this->number,
'organization' => $this->organization_name,
'date_added' => $this->added,
'balance_of_the_date' => $this->balance_of_the_date,
'credit' => $credit,
'debit' => $debit,
'payments' => $payments, // Новое поле которое надо обработать
'current_balance' => $currentBalance,
'remaining_balance' => $remainingBalance, // Новое поле которое надо обработать
'archived' => $this->archived,
'is_cash' => $this->is_cash,
];
}
}