This commit is contained in:
James Cole 2021-05-15 12:58:19 +02:00
parent a7f74522bd
commit 8a8aa7ca71
No known key found for this signature in database
GPG Key ID: B5669F9493CDE38D
6 changed files with 45 additions and 5 deletions

View File

@ -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]));

View File

@ -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,

View File

@ -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.
*

View File

@ -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.

View File

@ -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;
}

View File

@ -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']);
}