mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Fix #4774
This commit is contained in:
parent
a7f74522bd
commit
8a8aa7ca71
app
Http/Controllers/Recurring
Jobs
Repositories/Recurring
Services/Internal
@ -162,7 +162,6 @@ class EditController extends Controller
|
||||
public function update(RecurrenceFormRequest $request, Recurrence $recurrence)
|
||||
{
|
||||
$data = $request->getAll();
|
||||
|
||||
$this->recurring->update($recurrence, $data);
|
||||
|
||||
$request->session()->flash('success', (string)trans('firefly.updated_recurrence', ['title' => $recurrence->title]));
|
||||
|
@ -384,6 +384,7 @@ class CreateRecurringTransactions implements ShouldQueue
|
||||
'group_title' => $groupTitle,
|
||||
'transactions' => $this->getTransactionData($recurrence, $repetition, $date),
|
||||
];
|
||||
|
||||
/** @var TransactionGroup $group */
|
||||
$group = $this->groupRepository->store($array);
|
||||
$this->created++;
|
||||
@ -428,8 +429,8 @@ class CreateRecurringTransactions implements ShouldQueue
|
||||
'amount' => $transaction->amount,
|
||||
'budget_id' => $this->repository->getBudget($transaction),
|
||||
'budget_name' => null,
|
||||
'category_id' => null,
|
||||
'category_name' => $this->repository->getCategory($transaction),
|
||||
'category_id' => $this->repository->getCategoryId($transaction),
|
||||
'category_name' => $this->repository->getCategoryName($transaction),
|
||||
'source_id' => $transaction->source_id,
|
||||
'source_name' => null,
|
||||
'destination_id' => $transaction->destination_id,
|
||||
|
@ -133,7 +133,7 @@ class RecurringRepository implements RecurringRepositoryInterface
|
||||
*
|
||||
* @return null|string
|
||||
*/
|
||||
public function getCategory(RecurrenceTransaction $recTransaction): ?string
|
||||
public function getCategoryName(RecurrenceTransaction $recTransaction): ?string
|
||||
{
|
||||
$return = '';
|
||||
/** @var RecurrenceTransactionMeta $meta */
|
||||
@ -146,6 +146,26 @@ class RecurringRepository implements RecurringRepositoryInterface
|
||||
return '' === $return ? null : $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the category from a recurring transaction transaction.
|
||||
*
|
||||
* @param RecurrenceTransaction $recTransaction
|
||||
*
|
||||
* @return null|int
|
||||
*/
|
||||
public function getCategoryId(RecurrenceTransaction $recTransaction): ?int
|
||||
{
|
||||
$return = '';
|
||||
/** @var RecurrenceTransactionMeta $meta */
|
||||
foreach ($recTransaction->recurrenceTransactionMeta as $meta) {
|
||||
if ('category_id' === $meta->name) {
|
||||
$return = (int)$meta->value;
|
||||
}
|
||||
}
|
||||
|
||||
return '' === $return ? null : $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the journals created for this recurrence, possibly limited by time.
|
||||
*
|
||||
|
@ -79,7 +79,16 @@ interface RecurringRepositoryInterface
|
||||
*
|
||||
* @return null|string
|
||||
*/
|
||||
public function getCategory(RecurrenceTransaction $recTransaction): ?string;
|
||||
public function getCategoryName(RecurrenceTransaction $recTransaction): ?string;
|
||||
|
||||
/**
|
||||
* Get the category from a recurring transaction transaction.
|
||||
*
|
||||
* @param RecurrenceTransaction $recTransaction
|
||||
*
|
||||
* @return null|int
|
||||
*/
|
||||
public function getCategoryId(RecurrenceTransaction $recTransaction): ?int;
|
||||
|
||||
/**
|
||||
* Returns the count of journals created for this recurrence, possibly limited by time.
|
||||
|
@ -264,6 +264,9 @@ trait RecurringTransactionTrait
|
||||
$categoryFactory->setUser($transaction->recurrence->user);
|
||||
$category = $categoryFactory->findOrCreate($categoryId, null);
|
||||
if (null === $category) {
|
||||
// remove category:
|
||||
$transaction->recurrenceTransactionMeta()->where('name', 'category_id')->delete();
|
||||
$transaction->recurrenceTransactionMeta()->where('name', 'category_name')->delete();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -286,9 +286,17 @@ class RecurrenceUpdateService
|
||||
if (array_key_exists('budget_id', $current)) {
|
||||
$this->setBudget($match, (int)$current['budget_id']);
|
||||
}
|
||||
// reset category if name is set but empty:
|
||||
// can be removed when v1 is retired.
|
||||
if (array_key_exists('category_name', $current) && '' === (string)$current['category_name']) {
|
||||
$current['category_name'] = null;
|
||||
$current['category_id'] = 0;
|
||||
}
|
||||
|
||||
if (array_key_exists('category_id', $current)) {
|
||||
$this->setCategory($match, (int)$current['category_id']);
|
||||
}
|
||||
|
||||
if (array_key_exists('tags', $current)) {
|
||||
$this->updateTags($match, $current['tags']);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user