🤖 Auto commit for release 'v6.3.1' on 2025-08-18

This commit is contained in:
JC5
2025-08-18 20:08:18 +02:00
parent 6f6e1a4ff4
commit 134aeb3a46
8 changed files with 48 additions and 55 deletions

View File

@@ -115,7 +115,7 @@ class StandardMessageGenerator implements MessageGeneratorInterface
*/ */
private function generateMessage(Webhook $webhook, Model $model): void private function generateMessage(Webhook $webhook, Model $model): void
{ {
$class = $model::class; $class = $model::class;
// Line is ignored because all of Firefly III's Models have an id property. // Line is ignored because all of Firefly III's Models have an id property.
Log::debug(sprintf('Now in generateMessage(#%d, %s#%d)', $webhook->id, $class, $model->id)); Log::debug(sprintf('Now in generateMessage(#%d, %s#%d)', $webhook->id, $class, $model->id));
$uuid = Uuid::uuid4(); $uuid = Uuid::uuid4();
@@ -137,15 +137,20 @@ class StandardMessageGenerator implements MessageGeneratorInterface
Log::error(sprintf('Webhook #%d was given %s#%d to deal with but can\'t extract user ID from it.', $webhook->id, $class, $model->id)); Log::error(sprintf('Webhook #%d was given %s#%d to deal with but can\'t extract user ID from it.', $webhook->id, $class, $model->id));
return; return;
case Budget::class: case Budget::class:
/** @var Budget $model */ /** @var Budget $model */
$basicMessage['user_id'] = $model->user_id; $basicMessage['user_id'] = $model->user_id;
$basicMessage['user_group_id'] = $model->user_group_id; $basicMessage['user_group_id'] = $model->user_group_id;
break; break;
case BudgetLimit::class: case BudgetLimit::class:
$basicMessage['user_id'] = $model->budget->user_id; $basicMessage['user_id'] = $model->budget->user_id;
$basicMessage['user_group_id'] = $model->budget->user_group_id; $basicMessage['user_group_id'] = $model->budget->user_group_id;
break; break;
case TransactionGroup::class: case TransactionGroup::class:
/** @var TransactionGroup $model */ /** @var TransactionGroup $model */
$basicMessage['user_id'] = $model->user_id; $basicMessage['user_id'] = $model->user_id;
@@ -160,27 +165,28 @@ class StandardMessageGenerator implements MessageGeneratorInterface
Log::error(sprintf('The response code for webhook #%d is "%d" and the message generator cant handle it. Soft fail.', $webhook->id, $webhook->response)); Log::error(sprintf('The response code for webhook #%d is "%d" and the message generator cant handle it. Soft fail.', $webhook->id, $webhook->response));
return; return;
case WebhookResponse::BUDGET->value;
case WebhookResponse::BUDGET->value:
$basicMessage['content'] = []; $basicMessage['content'] = [];
if($model instanceof Budget) { if ($model instanceof Budget) {
$enrichment = new BudgetEnrichment(); $enrichment = new BudgetEnrichment();
$enrichment->setUser($model->user); $enrichment->setUser($model->user);
$model = $enrichment->enrichSingle($model); $model = $enrichment->enrichSingle($model);
$transformer = new BudgetTransformer(); $transformer = new BudgetTransformer();
$basicMessage['content'] = $transformer->transform($model); $basicMessage['content'] = $transformer->transform($model);
} }
if($model instanceof BudgetLimit) { if ($model instanceof BudgetLimit) {
$user = $model->budget->user; $user = $model->budget->user;
$enrichment = new BudgetEnrichment(); $enrichment = new BudgetEnrichment();
$enrichment->setUser($user); $enrichment->setUser($user);
$enrichment->setStart($model->start_date); $enrichment->setStart($model->start_date);
$enrichment->setEnd($model->end_date); $enrichment->setEnd($model->end_date);
$budget = $enrichment->enrichSingle($model->budget); $budget = $enrichment->enrichSingle($model->budget);
$enrichment = new BudgetLimitEnrichment(); $enrichment = new BudgetLimitEnrichment();
$enrichment->setUser($user); $enrichment->setUser($user);
$parameters = new ParameterBag(); $parameters = new ParameterBag();
$parameters->set('start', $model->start_date); $parameters->set('start', $model->start_date);
$parameters->set('end', $model->end_date); $parameters->set('end', $model->end_date);
@@ -189,6 +195,7 @@ class StandardMessageGenerator implements MessageGeneratorInterface
$transformer->setParameters($parameters); $transformer->setParameters($parameters);
$basicMessage['content'] = $transformer->transform($model); $basicMessage['content'] = $transformer->transform($model);
} }
break; break;
case WebhookResponse::NONE->value: case WebhookResponse::NONE->value:
@@ -198,7 +205,7 @@ class StandardMessageGenerator implements MessageGeneratorInterface
case WebhookResponse::TRANSACTIONS->value: case WebhookResponse::TRANSACTIONS->value:
/** @var TransactionGroup $model */ /** @var TransactionGroup $model */
$transformer = new TransactionGroupTransformer(); $transformer = new TransactionGroupTransformer();
try { try {
$basicMessage['content'] = $transformer->transformObject($model); $basicMessage['content'] = $transformer->transformObject($model);
@@ -215,13 +222,13 @@ class StandardMessageGenerator implements MessageGeneratorInterface
case WebhookResponse::ACCOUNTS->value: case WebhookResponse::ACCOUNTS->value:
/** @var TransactionGroup $model */ /** @var TransactionGroup $model */
$accounts = $this->collectAccounts($model); $accounts = $this->collectAccounts($model);
$enrichment = new AccountEnrichment(); $enrichment = new AccountEnrichment();
$enrichment->setDate(null); $enrichment->setDate(null);
$enrichment->setUser($model->user); $enrichment->setUser($model->user);
$accounts = $enrichment->enrich($accounts); $accounts = $enrichment->enrich($accounts);
foreach ($accounts as $account) { foreach ($accounts as $account) {
$transformer = new AccountTransformer(); $transformer = new AccountTransformer();
$transformer->setParameters(new ParameterBag()); $transformer->setParameters(new ParameterBag());
$basicMessage['content'][] = $transformer->transform($account); $basicMessage['content'][] = $transformer->transform($account);
} }
@@ -251,7 +258,7 @@ class StandardMessageGenerator implements MessageGeneratorInterface
private function storeMessage(Webhook $webhook, array $message): void private function storeMessage(Webhook $webhook, array $message): void
{ {
$webhookMessage = new WebhookMessage(); $webhookMessage = new WebhookMessage();
$webhookMessage->webhook()->associate($webhook); $webhookMessage->webhook()->associate($webhook);
$webhookMessage->sent = false; $webhookMessage->sent = false;
$webhookMessage->errored = false; $webhookMessage->errored = false;

View File

@@ -27,37 +27,19 @@ namespace FireflyIII\Handlers\Events\Model;
use FireflyIII\Events\Model\BudgetLimit\Created; use FireflyIII\Events\Model\BudgetLimit\Created;
use FireflyIII\Events\Model\BudgetLimit\Deleted; use FireflyIII\Events\Model\BudgetLimit\Deleted;
use FireflyIII\Events\Model\BudgetLimit\Updated; use FireflyIII\Events\Model\BudgetLimit\Updated;
use FireflyIII\Models\AvailableBudget;
use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
use FireflyIII\Support\Observers\RecalculatesAvailableBudgetsTrait;
use FireflyIII\User;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Spatie\Period\Boundaries;
use Spatie\Period\Period;
use Spatie\Period\Precision;
/** /**
* Class BudgetLimitHandler * Class BudgetLimitHandler
*/ */
class BudgetLimitHandler class BudgetLimitHandler
{ {
public function created(Created $event): void public function created(Created $event): void
{ {
Log::debug(sprintf('BudgetLimitHandler::created(#%s)', $event->budgetLimit->id)); Log::debug(sprintf('BudgetLimitHandler::created(#%s)', $event->budgetLimit->id));
} }
public function deleted(Deleted $event): void public function deleted(Deleted $event): void {}
{
} public function updated(Updated $event): void {}
public function updated(Updated $event): void
{
}
} }

View File

@@ -37,6 +37,7 @@ use Illuminate\Support\Facades\Log;
class BudgetLimitObserver class BudgetLimitObserver
{ {
use RecalculatesAvailableBudgetsTrait; use RecalculatesAvailableBudgetsTrait;
public function created(BudgetLimit $budgetLimit): void public function created(BudgetLimit $budgetLimit): void
{ {
Log::debug('Observe "created" of a budget limit.'); Log::debug('Observe "created" of a budget limit.');

View File

@@ -46,7 +46,8 @@ class BudgetObserver
Log::debug(sprintf('Observe "created" of budget #%d ("%s").', $budget->id, $budget->name)); Log::debug(sprintf('Observe "created" of budget #%d ("%s").', $budget->id, $budget->name));
// fire event. // fire event.
$user = $budget->user; $user = $budget->user;
/** @var MessageGeneratorInterface $engine */ /** @var MessageGeneratorInterface $engine */
$engine = app(MessageGeneratorInterface::class); $engine = app(MessageGeneratorInterface::class);
$engine->setUser($user); $engine->setUser($user);
@@ -60,7 +61,7 @@ class BudgetObserver
public function updated(Budget $budget): void public function updated(Budget $budget): void
{ {
Log::debug(sprintf('Observe "updated" of budget #%d ("%s").', $budget->id, $budget->name)); Log::debug(sprintf('Observe "updated" of budget #%d ("%s").', $budget->id, $budget->name));
$user = $budget->user; $user = $budget->user;
/** @var MessageGeneratorInterface $engine */ /** @var MessageGeneratorInterface $engine */
$engine = app(MessageGeneratorInterface::class); $engine = app(MessageGeneratorInterface::class);
@@ -76,10 +77,10 @@ class BudgetObserver
{ {
Log::debug('Observe "deleting" of a budget.'); Log::debug('Observe "deleting" of a budget.');
$user = $budget->user; $user = $budget->user;
/** @var MessageGeneratorInterface $engine */ /** @var MessageGeneratorInterface $engine */
$engine = app(MessageGeneratorInterface::class); $engine = app(MessageGeneratorInterface::class);
$engine->setUser($user); $engine->setUser($user);
$engine->setObjects(new Collection()->push($budget)); $engine->setObjects(new Collection()->push($budget));
$engine->setTrigger(WebhookTrigger::DESTROY_BUDGET); $engine->setTrigger(WebhookTrigger::DESTROY_BUDGET);
@@ -87,7 +88,7 @@ class BudgetObserver
event(new RequestedSendWebhookMessages()); event(new RequestedSendWebhookMessages());
$repository = app(AttachmentRepositoryInterface::class); $repository = app(AttachmentRepositoryInterface::class);
$repository->setUser($budget->user); $repository->setUser($budget->user);
/** @var Attachment $attachment */ /** @var Attachment $attachment */

View File

@@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace FireflyIII\Support\Observers; namespace FireflyIII\Support\Observers;
use FireflyIII\Models\AvailableBudget; use FireflyIII\Models\AvailableBudget;
@@ -152,8 +154,8 @@ trait RecalculatesAvailableBudgetsTrait
); );
// overlap in days: // overlap in days:
$limitPeriod = Period::make( $limitPeriod = Period::make(
$budgetLimit->start_date, $budgetLimit->start_date,
$budgetLimit->end_date, $budgetLimit->end_date,
precision : Precision::DAY(), precision : Precision::DAY(),
boundaries: Boundaries::EXCLUDE_NONE() boundaries: Boundaries::EXCLUDE_NONE()
); );
@@ -194,8 +196,8 @@ trait RecalculatesAvailableBudgetsTrait
return '0'; return '0';
} }
$limitPeriod = Period::make( $limitPeriod = Period::make(
$budgetLimit->start_date, $budgetLimit->start_date,
$budgetLimit->end_date, $budgetLimit->end_date,
precision : Precision::DAY(), precision : Precision::DAY(),
boundaries: Boundaries::EXCLUDE_NONE() boundaries: Boundaries::EXCLUDE_NONE()
); );

View File

@@ -78,8 +78,8 @@ return [
'running_balance_column' => env('USE_RUNNING_BALANCE', false), 'running_balance_column' => env('USE_RUNNING_BALANCE', false),
// see cer.php for exchange rates feature flag. // see cer.php for exchange rates feature flag.
], ],
'version' => 'develop/2025-08-18', 'version' => '6.3.1',
'build_time' => 1755530171, 'build_time' => 1755540382,
'api_version' => '2.1.0', // field is no longer used. 'api_version' => '2.1.0', // field is no longer used.
'db_version' => 26, 'db_version' => 26,

6
package-lock.json generated
View File

@@ -5700,9 +5700,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.203", "version": "1.5.204",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.203.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.204.tgz",
"integrity": "sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g==", "integrity": "sha512-s9VbBXWxfDrl67PlO4avwh0/GU2vcwx8Fph3wlR8LJl7ySGYId59EFE17VWVcuC3sLWNPENm6Z/uGqKbkPCcXA==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },

0
public/v1/js/.gitkeep Executable file → Normal file
View File