akaunting/app/BulkActions/Banking/Reconciliations.php

97 lines
3.2 KiB
PHP
Raw Normal View History

2019-11-16 10:21:14 +03:00
<?php
namespace App\BulkActions\Banking;
use App\Abstracts\BulkAction;
use App\Models\Banking\Reconciliation;
use App\Models\Banking\Transaction;
class Reconciliations extends BulkAction
{
public $model = Reconciliation::class;
2022-06-01 10:15:55 +03:00
public $text = 'general.reconciliations';
public $path = [
'group' => 'banking',
'type' => 'reconciliations',
];
2019-11-16 10:21:14 +03:00
public $actions = [
2022-06-01 10:15:55 +03:00
'reconcile' => [
'icon' => 'published_with_changes',
'name' => 'reconciliations.reconcile',
'message' => 'bulk_actions.message.reconcile',
'permission' => 'update-banking-reconciliations',
2019-11-16 10:21:14 +03:00
],
2022-06-01 10:15:55 +03:00
'unreconcile' => [
'icon' => 'layers_clear',
'name' => 'reconciliations.unreconcile',
'message' => 'bulk_actions.message.unreconcile',
'permission' => 'update-banking-reconciliations',
2019-11-16 10:21:14 +03:00
],
2022-06-01 10:15:55 +03:00
'delete' => [
'icon' => 'delete',
'name' => 'general.delete',
'message' => 'bulk_actions.message.delete',
'permission' => 'delete-banking-reconciliations',
2019-12-27 15:42:22 +03:00
],
2019-11-16 10:21:14 +03:00
];
2020-08-20 12:55:59 +03:00
public function reconcile($request)
2019-11-16 10:21:14 +03:00
{
2019-12-23 12:46:00 +03:00
$reconciliations = $this->getSelectedRecords($request);
2019-11-16 10:21:14 +03:00
foreach ($reconciliations as $reconciliation) {
2020-08-20 12:55:59 +03:00
\DB::transaction(function () use ($reconciliation) {
$reconciliation->reconciled = 1;
$reconciliation->save();
2019-11-16 10:21:14 +03:00
2020-08-20 12:55:59 +03:00
Transaction::where('account_id', $reconciliation->account_id)
->isNotReconciled()
->whereBetween('paid_at', [$reconciliation->started_at, $reconciliation->ended_at])->each(function ($item) {
$item->reconciled = 1;
$item->save();
});
});
2019-11-16 10:21:14 +03:00
}
}
2020-08-20 12:55:59 +03:00
public function unreconcile($request)
2019-11-16 10:21:14 +03:00
{
2019-12-23 12:46:00 +03:00
$reconciliations = $this->getSelectedRecords($request);
2019-11-16 10:21:14 +03:00
foreach ($reconciliations as $reconciliation) {
2020-08-20 12:55:59 +03:00
\DB::transaction(function () use ($reconciliation) {
$reconciliation->reconciled = 0;
$reconciliation->save();
2019-11-16 10:21:14 +03:00
2020-08-20 12:55:59 +03:00
Transaction::where('account_id', $reconciliation->account_id)
->isReconciled()
->whereBetween('paid_at', [$reconciliation->started_at, $reconciliation->ended_at])->each(function ($item) {
$item->reconciled = 0;
$item->save();
});
});
2019-11-16 10:21:14 +03:00
}
}
public function destroy($request)
{
2019-12-23 12:46:00 +03:00
$reconciliations = $this->getSelectedRecords($request);
2019-11-16 10:21:14 +03:00
foreach ($reconciliations as $reconciliation) {
2020-08-20 12:55:59 +03:00
\DB::transaction(function () use ($reconciliation) {
$reconciliation->delete();
2019-11-16 10:21:14 +03:00
2020-08-20 12:55:59 +03:00
Transaction::where('account_id', $reconciliation->account_id)
->isReconciled()
->whereBetween('paid_at', [$reconciliation->started_at, $reconciliation->ended_at])->each(function ($item) {
$item->reconciled = 0;
$item->save();
});
});
2019-11-16 10:21:14 +03:00
}
}
}