Files
firefly-iii/app/Helpers/Collector/GroupCollectorInterface.php

728 lines
19 KiB
PHP
Raw Normal View History

<?php
/**
* GroupCollectorInterface.php
2020-01-28 08:46:01 +01:00
* Copyright (c) 2019 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collector;
use Carbon\Carbon;
2019-03-25 15:14:09 +01:00
use FireflyIII\Models\Bill;
use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\Tag;
use FireflyIII\Models\TransactionCurrency;
2019-03-30 07:09:52 +01:00
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\UserGroup;
use FireflyIII\User;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
/**
* Interface GroupCollectorInterface
*/
interface GroupCollectorInterface
{
2019-03-30 07:09:52 +01:00
/**
2019-09-03 22:35:41 +02:00
* Get transactions with a specific amount.
2019-03-30 07:09:52 +01:00
*/
2023-11-04 14:18:49 +01:00
public function amountIs(string $amount): self;
2019-03-30 07:09:52 +01:00
2023-11-04 14:18:49 +01:00
public function amountIsNot(string $amount): self;
2019-08-14 19:06:05 +02:00
/**
2019-09-03 22:35:41 +02:00
* Get transactions where the amount is less than.
2019-08-14 19:06:05 +02:00
*/
2023-11-04 14:18:49 +01:00
public function amountLess(string $amount): self;
2019-08-14 19:06:05 +02:00
/**
2022-03-27 16:03:50 +02:00
* Get transactions where the foreign amount is more than.
2019-08-14 19:06:05 +02:00
*/
2023-11-04 14:18:49 +01:00
public function amountMore(string $amount): self;
2019-08-14 19:06:05 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNameContains(string $name): self;
2023-11-04 14:18:49 +01:00
public function attachmentNameDoesNotContain(string $name): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNameDoesNotEnd(string $name): self;
2023-11-04 14:18:49 +01:00
public function attachmentNameDoesNotStart(string $name): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNameEnds(string $name): self;
2023-11-04 14:18:49 +01:00
public function attachmentNameIs(string $name): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNameIsNot(string $name): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNameStarts(string $name): self;
2023-11-04 14:18:49 +01:00
public function attachmentNotesAre(string $value): self;
2023-11-04 14:18:49 +01:00
public function attachmentNotesAreNot(string $value): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNotesContains(string $value): self;
2023-11-04 14:18:49 +01:00
public function attachmentNotesDoNotContain(string $value): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNotesDoNotEnd(string $value): self;
2023-11-04 14:18:49 +01:00
public function attachmentNotesDoNotStart(string $value): self;
2023-11-04 14:18:49 +01:00
public function attachmentNotesEnds(string $value): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function attachmentNotesStarts(string $value): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function dayAfter(string $day): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function dayBefore(string $day): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function dayIs(string $day): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function dayIsNot(string $day): self;
2021-03-21 09:15:40 +01:00
/**
2022-09-25 15:31:58 +02:00
* End of the description must not match:
2021-03-21 09:15:40 +01:00
*/
2023-11-04 14:18:49 +01:00
public function descriptionDoesNotEnd(array $array): self;
2021-03-21 09:15:40 +01:00
/**
2022-09-25 15:31:58 +02:00
* Beginning of the description must not start with:
*/
2023-11-04 14:18:49 +01:00
public function descriptionDoesNotStart(array $array): self;
2022-09-25 15:31:58 +02:00
/**
* End of the description must match:
*/
2023-11-04 14:18:49 +01:00
public function descriptionEnds(array $array): self;
2021-03-21 09:15:40 +01:00
/**
* Description must be:
*/
2023-11-04 14:18:49 +01:00
public function descriptionIs(string $value): self;
2021-03-21 09:15:40 +01:00
/**
* Description must not be:
*/
2023-11-04 14:18:49 +01:00
public function descriptionIsNot(string $value): self;
2021-03-21 09:15:40 +01:00
/**
* Beginning of the description must match:
*/
2023-11-04 14:18:49 +01:00
public function descriptionStarts(array $array): self;
2021-03-21 09:15:40 +01:00
/**
2022-09-25 15:31:58 +02:00
* These accounts must not be accounts.
*/
2023-11-04 14:18:49 +01:00
public function excludeAccounts(Collection $accounts): self;
2022-09-25 15:31:58 +02:00
/**
* Exclude a specific set of bills
*/
2023-11-04 14:18:49 +01:00
public function excludeBills(Collection $bills): self;
2022-09-25 15:31:58 +02:00
/**
* Exclude a budget
*/
2023-11-04 14:18:49 +01:00
public function excludeBudget(Budget $budget): self;
2022-09-25 15:31:58 +02:00
/**
* Exclude a budget.
*/
2023-11-04 14:18:49 +01:00
public function excludeBudgets(Collection $budgets): self;
2022-09-25 15:31:58 +02:00
/**
* Exclude a set of categories.
*/
2023-11-04 14:18:49 +01:00
public function excludeCategories(Collection $categories): self;
2022-09-25 15:31:58 +02:00
/**
* Exclude a specific category
*/
2023-11-04 14:18:49 +01:00
public function excludeCategory(Category $category): self;
2022-09-25 15:31:58 +02:00
/**
* Limit results to NOT a specific currency, either foreign or normal one.
*/
2023-11-04 14:18:49 +01:00
public function excludeCurrency(TransactionCurrency $currency): self;
2019-08-14 19:06:05 +02:00
/**
* Exclude destination accounts.
*/
2023-11-04 14:18:49 +01:00
public function excludeDestinationAccounts(Collection $accounts): self;
2019-08-14 19:06:05 +02:00
2022-12-29 19:41:57 +01:00
/**
* Look for specific external ID's.
*/
2023-11-04 14:18:49 +01:00
public function excludeExternalId(string $externalId): self;
2022-12-29 19:41:57 +01:00
2023-11-04 14:18:49 +01:00
public function excludeExternalUrl(string $url): self;
2022-12-29 19:41:57 +01:00
2022-09-25 15:31:58 +02:00
/**
* Limit results to exclude a specific foreign currency.
*/
2023-11-04 14:18:49 +01:00
public function excludeForeignCurrency(TransactionCurrency $currency): self;
2022-09-25 15:31:58 +02:00
/**
* Limit the result to NOT a set of specific transaction groups.
*/
2023-11-04 14:18:49 +01:00
public function excludeIds(array $groupIds): self;
2022-09-25 15:31:58 +02:00
2022-12-29 19:41:57 +01:00
/**
* Look for specific external ID's.
*/
2023-11-04 14:18:49 +01:00
public function excludeInternalReference(string $internalReference): self;
2022-12-29 19:41:57 +01:00
2022-09-25 15:31:58 +02:00
/**
* Limit the result to NOT a set of specific transaction journals.
*/
2023-11-04 14:18:49 +01:00
public function excludeJournalIds(array $journalIds): self;
2022-09-25 15:31:58 +02:00
2023-11-04 14:18:49 +01:00
public function excludeMetaDateRange(Carbon $start, Carbon $end, string $field): self;
2022-09-25 15:31:58 +02:00
2023-11-04 14:18:49 +01:00
public function excludeObjectRange(Carbon $start, Carbon $end, string $field): self;
2022-09-25 15:31:58 +02:00
2023-11-04 14:18:49 +01:00
public function excludeRange(Carbon $start, Carbon $end): self;
2022-09-25 15:31:58 +02:00
2023-11-04 14:18:49 +01:00
public function excludeRecurrenceId(string $recurringId): self;
2022-12-29 19:41:57 +01:00
2022-09-25 15:31:58 +02:00
/**
* Exclude words in descriptions.
*/
2023-11-04 14:18:49 +01:00
public function excludeSearchWords(array $array): self;
2022-09-25 15:31:58 +02:00
2019-08-14 19:06:05 +02:00
/**
2019-09-03 22:35:41 +02:00
* These accounts must not be source accounts.
2019-08-14 19:06:05 +02:00
*/
2023-11-04 14:18:49 +01:00
public function excludeSourceAccounts(Collection $accounts): self;
/**
2022-09-25 15:31:58 +02:00
* Limit the included transaction types.
*/
2023-11-04 14:18:49 +01:00
public function excludeTypes(array $types): self;
2022-09-25 15:31:58 +02:00
2023-11-04 14:18:49 +01:00
public function exists(): self;
2023-11-04 14:18:49 +01:00
public function externalIdContains(string $externalId): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function externalIdDoesNotContain(string $externalId): self;
2022-12-29 19:41:57 +01:00
2023-11-04 14:18:49 +01:00
public function externalIdDoesNotEnd(string $externalId): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function externalIdDoesNotStart(string $externalId): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function externalIdEnds(string $externalId): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function externalIdStarts(string $externalId): self;
2022-12-29 19:41:57 +01:00
2023-11-04 14:18:49 +01:00
public function externalUrlContains(string $url): self;
2022-03-24 19:34:32 +01:00
2023-11-04 14:18:49 +01:00
public function externalUrlDoesNotContain(string $url): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function externalUrlDoesNotEnd(string $url): self;
2022-03-24 19:34:32 +01:00
2023-11-04 14:18:49 +01:00
public function externalUrlDoesNotStart(string $url): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function externalUrlEnds(string $url): self;
2022-03-24 19:34:32 +01:00
2023-11-04 14:18:49 +01:00
public function externalUrlStarts(string $url): self;
2022-09-28 07:35:57 +02:00
/**
* Ensure the search will find nothing at all, zero results.
*/
2023-11-04 14:18:49 +01:00
public function findNothing(): self;
2022-03-27 16:03:50 +02:00
/**
* Get transactions with a specific foreign amount.
*/
2023-11-04 14:18:49 +01:00
public function foreignAmountIs(string $amount): self;
2022-03-27 16:03:50 +02:00
/**
* Get transactions with a specific foreign amount.
*/
2023-11-04 14:18:49 +01:00
public function foreignAmountIsNot(string $amount): self;
2022-03-27 16:03:50 +02:00
/**
* Get transactions where the amount is less than.
*/
2023-11-04 14:18:49 +01:00
public function foreignAmountLess(string $amount): self;
2022-03-27 16:03:50 +02:00
/**
* Get transactions where the foreign amount is more than.
*/
2023-11-04 14:18:49 +01:00
public function foreignAmountMore(string $amount): self;
2022-03-27 16:03:50 +02:00
public function getExpandGroupSearch(): bool;
2019-07-04 17:31:47 +02:00
/**
2019-09-03 22:35:41 +02:00
* Return the transaction journals without group information. Is useful in some instances.
2019-07-04 17:31:47 +02:00
*/
2019-09-03 22:35:41 +02:00
public function getExtractedJournals(): array;
2019-07-04 17:31:47 +02:00
/**
* Return the groups.
*/
public function getGroups(): Collection;
/**
* Same as getGroups but everything is in a paginator.
*/
public function getPaginatedGroups(): LengthAwarePaginator;
2023-11-04 14:18:49 +01:00
public function hasAnyTag(): self;
2021-03-21 09:15:40 +01:00
/**
* Has attachments
*/
2023-11-04 14:18:49 +01:00
public function hasAttachments(): self;
2021-03-21 09:15:40 +01:00
/**
* Has no attachments
*/
2023-11-04 14:18:49 +01:00
public function hasNoAttachments(): self;
2023-11-04 14:18:49 +01:00
public function internalReferenceContains(string $internalReference): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function internalReferenceDoesNotContain(string $internalReference): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function internalReferenceDoesNotEnd(string $internalReference): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function internalReferenceDoesNotStart(string $internalReference): self;
2022-09-28 07:35:57 +02:00
2023-11-04 14:18:49 +01:00
public function internalReferenceEnds(string $internalReference): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function internalReferenceStarts(string $internalReference): self;
2022-09-28 07:35:57 +02:00
2022-09-25 15:31:58 +02:00
/**
* Only journals that are reconciled.
*/
2023-11-04 14:18:49 +01:00
public function isNotReconciled(): self;
2022-09-25 15:31:58 +02:00
/**
* Only journals that are reconciled.
*/
2023-11-04 14:18:49 +01:00
public function isReconciled(): self;
2022-09-25 15:31:58 +02:00
2023-11-04 14:18:49 +01:00
public function metaDayAfter(string $day, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaDayBefore(string $day, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaDayIs(string $day, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaDayIsNot(string $day, string $field): self;
2023-11-04 14:18:49 +01:00
public function metaMonthAfter(string $month, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaMonthBefore(string $month, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaMonthIs(string $month, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaMonthIsNot(string $month, string $field): self;
2023-11-04 14:18:49 +01:00
public function metaYearAfter(string $year, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaYearBefore(string $year, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaYearIs(string $year, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function metaYearIsNot(string $year, string $field): self;
2023-11-04 14:18:49 +01:00
public function monthAfter(string $month): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function monthBefore(string $month): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function monthIs(string $month): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function monthIsNot(string $month): self;
2023-11-04 14:18:49 +01:00
public function notesContain(string $value): self;
2021-03-21 09:15:40 +01:00
2023-11-04 14:18:49 +01:00
public function notesDoNotContain(string $value): self;
2023-11-04 14:18:49 +01:00
public function notesDontEndWith(string $value): self;
2021-03-21 09:15:40 +01:00
2023-11-04 14:18:49 +01:00
public function notesDontStartWith(string $value): self;
2023-11-04 14:18:49 +01:00
public function notesEndWith(string $value): self;
2021-03-21 09:15:40 +01:00
2023-11-04 14:18:49 +01:00
public function notesExactly(string $value): self;
2023-11-04 14:18:49 +01:00
public function notesExactlyNot(string $value): self;
2021-03-21 09:15:40 +01:00
2023-11-04 14:18:49 +01:00
public function notesStartWith(string $value): self;
2023-11-04 14:18:49 +01:00
public function objectDayAfter(string $day, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectDayBefore(string $day, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectDayIs(string $day, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectDayIsNot(string $day, string $field): self;
2023-11-04 14:18:49 +01:00
public function objectMonthAfter(string $month, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectMonthBefore(string $month, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectMonthIs(string $month, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectMonthIsNot(string $month, string $field): self;
2023-11-04 14:18:49 +01:00
public function objectYearAfter(string $year, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectYearBefore(string $year, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectYearIs(string $year, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function objectYearIsNot(string $year, string $field): self;
/**
* Define which accounts can be part of the source and destination transactions.
*/
2023-11-04 14:18:49 +01:00
public function setAccounts(Collection $accounts): self;
2019-03-25 15:14:09 +01:00
/**
2019-09-03 22:35:41 +02:00
* Collect transactions after a specific date.
2019-03-25 15:14:09 +01:00
*/
2023-11-04 14:18:49 +01:00
public function setAfter(Carbon $date): self;
2019-03-25 15:14:09 +01:00
/**
* Limit results to a SPECIFIC set of tags.
*/
public function setAllTags(Collection $tags): self;
2019-05-31 13:35:33 +02:00
/**
2019-09-03 22:35:41 +02:00
* Collect transactions before a specific date.
2019-05-31 13:35:33 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setBefore(Carbon $date): self;
2019-05-31 13:35:33 +02:00
/**
2019-09-03 22:35:41 +02:00
* Limit the search to a specific bill.
2019-05-31 13:35:33 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setBill(Bill $bill): self;
2019-05-31 13:35:33 +02:00
/**
2019-09-03 22:35:41 +02:00
* Limit the search to a specific set of bills.
2019-05-31 13:35:33 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setBills(Collection $bills): self;
2019-05-31 13:35:33 +02:00
/**
2019-09-03 22:35:41 +02:00
* Both source AND destination must be in this list of accounts.
2019-05-31 13:35:33 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setBothAccounts(Collection $accounts): self;
2019-05-31 13:35:33 +02:00
2019-03-25 15:14:09 +01:00
/**
* Limit the search to a specific budget.
*/
2023-11-04 14:18:49 +01:00
public function setBudget(Budget $budget): self;
2019-03-25 15:14:09 +01:00
/**
* Limit the search to a specific set of budgets.
*/
2023-11-04 14:18:49 +01:00
public function setBudgets(Collection $budgets): self;
2019-03-25 15:14:09 +01:00
2019-09-03 22:35:41 +02:00
/**
* Limit the search to a specific bunch of categories.
*/
2023-11-04 14:18:49 +01:00
public function setCategories(Collection $categories): self;
2019-09-03 22:35:41 +02:00
2019-03-25 15:14:09 +01:00
/**
* Limit the search to a specific category.
*/
2023-11-04 14:18:49 +01:00
public function setCategory(Category $category): self;
2019-03-25 15:14:09 +01:00
/**
* Collect transactions created on a specific date.
*/
2023-11-04 14:18:49 +01:00
public function setCreatedAt(Carbon $date): self;
2019-03-25 15:14:09 +01:00
/**
* Limit results to a specific currency, either foreign or normal one.
*/
2023-11-04 14:18:49 +01:00
public function setCurrency(TransactionCurrency $currency): self;
2019-03-25 15:14:09 +01:00
2020-08-22 12:24:01 +02:00
/**
2021-03-21 09:15:40 +01:00
* Set destination accounts.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setDestinationAccounts(Collection $accounts): self;
2020-08-22 12:24:01 +02:00
/**
* Set the end time of the results to return.
*/
2023-11-04 14:18:49 +01:00
public function setEnd(Carbon $end): self;
/**
* Set the page to get.
*/
public function setEndRow(int $endRow): self;
2023-11-04 14:18:49 +01:00
public function setExpandGroupSearch(bool $expandGroupSearch): self;
/**
2021-03-21 09:15:40 +01:00
* Look for specific external ID's.
*/
2023-11-04 14:18:49 +01:00
public function setExternalId(string $externalId): self;
2023-11-04 14:18:49 +01:00
public function setExternalUrl(string $url): self;
2019-05-31 13:35:33 +02:00
/**
2021-03-21 09:15:40 +01:00
* Limit results to a specific foreign currency.
2019-05-31 13:35:33 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setForeignCurrency(TransactionCurrency $currency): self;
2019-05-31 13:35:33 +02:00
2021-01-20 18:41:31 +01:00
/**
* Limit the result to a set of specific transaction groups.
*/
2023-11-04 14:18:49 +01:00
public function setIds(array $groupIds): self;
2021-01-20 18:41:31 +01:00
/**
2021-03-21 09:15:40 +01:00
* Look for specific external ID's.
*/
2023-11-04 14:18:49 +01:00
public function setInternalReference(string $internalReference): self;
2019-03-25 15:14:09 +01:00
/**
2021-03-21 09:15:40 +01:00
* Limit the result to a set of specific transaction journals.
2019-03-25 15:14:09 +01:00
*/
2023-11-04 14:18:49 +01:00
public function setJournalIds(array $journalIds): self;
2019-03-25 15:14:09 +01:00
/**
2021-03-21 09:15:40 +01:00
* Limit the number of returned entries.
*/
2023-11-04 14:18:49 +01:00
public function setLimit(int $limit): self;
2022-03-27 16:03:50 +02:00
/**
* Collect transactions after a specific date.
*/
2023-11-04 14:18:49 +01:00
public function setMetaAfter(Carbon $date, string $field): self;
2022-03-27 16:03:50 +02:00
/**
* Collect transactions before a specific date.
*/
2023-11-04 14:18:49 +01:00
public function setMetaBefore(Carbon $date, string $field): self;
2022-03-27 16:03:50 +02:00
/**
* Set the start and end time of the results to return, based on meta data.
*/
2023-11-04 14:18:49 +01:00
public function setMetaDateRange(Carbon $start, Carbon $end, string $field): self;
2022-03-27 16:03:50 +02:00
/**
2022-09-25 15:31:58 +02:00
* Define which accounts can NOT be part of the source and destination transactions.
*/
2023-11-04 14:18:49 +01:00
public function setNotAccounts(Collection $accounts): self;
2023-11-04 14:18:49 +01:00
public function setObjectAfter(Carbon $date, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function setObjectBefore(Carbon $date, string $field): self;
2022-03-27 16:03:50 +02:00
2023-11-04 14:18:49 +01:00
public function setObjectRange(Carbon $start, Carbon $end, string $field): self;
2022-03-27 16:03:50 +02:00
2019-03-25 15:14:09 +01:00
/**
2021-03-21 09:15:40 +01:00
* Set the page to get.
2019-03-25 15:14:09 +01:00
*/
2023-11-04 14:18:49 +01:00
public function setPage(int $page): self;
2019-03-25 15:14:09 +01:00
2020-08-22 12:24:01 +02:00
/**
2021-03-21 09:15:40 +01:00
* Set the start and end time of the results to return.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setRange(Carbon $start, Carbon $end): self;
2020-08-22 12:24:01 +02:00
/**
2022-03-27 16:03:50 +02:00
* Look for specific recurring ID's.
*/
2023-11-04 14:18:49 +01:00
public function setRecurrenceId(string $recurringId): self;
2020-08-22 12:24:01 +02:00
/**
2021-03-21 09:15:40 +01:00
* Search for words in descriptions.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function setSearchWords(array $array): self;
2020-08-22 12:24:01 +02:00
2023-11-04 14:18:49 +01:00
public function setSepaCT(string $sepaCT): self;
2022-12-31 13:32:42 +01:00
/**
2019-09-03 22:35:41 +02:00
* Set source accounts.
*/
2023-11-04 14:18:49 +01:00
public function setSourceAccounts(Collection $accounts): self;
/**
* Set the start time of the results to return.
*/
2023-11-04 14:18:49 +01:00
public function setStart(Carbon $start): self;
/**
* Set the page to get.
*/
public function setStartRow(int $startRow): self;
/**
2019-09-03 22:35:41 +02:00
* Limit results to a specific tag.
*/
2023-11-04 14:18:49 +01:00
public function setTag(Tag $tag): self;
/**
* Limit results to any of the specified tags.
*/
2023-11-04 14:18:49 +01:00
public function setTags(Collection $tags): self;
2019-03-30 07:09:52 +01:00
/**
* Limit the search to one specific transaction group.
*/
2023-11-04 14:18:49 +01:00
public function setTransactionGroup(TransactionGroup $transactionGroup): self;
2019-03-30 07:09:52 +01:00
/**
* Limit the included transaction types.
*/
2023-11-04 14:18:49 +01:00
public function setTypes(array $types): self;
/**
* Collect transactions updated on a specific date.
*/
2023-11-04 14:18:49 +01:00
public function setUpdatedAt(Carbon $date): self;
/**
* Set the user object and start the query.
*/
2023-11-04 14:18:49 +01:00
public function setUser(User $user): self;
/**
* Set the user group object and start the query.
*/
2023-11-04 14:18:49 +01:00
public function setUserGroup(UserGroup $userGroup): self;
2022-03-21 06:31:38 +01:00
/**
* Only when does not have these tags
*/
2023-11-04 14:18:49 +01:00
public function setWithoutSpecificTags(Collection $tags): self;
2022-03-21 06:31:38 +01:00
/**
* Either account can be set, but NOT both. This effectively excludes internal transfers.
*/
2023-11-04 14:18:49 +01:00
public function setXorAccounts(Collection $accounts): self;
2019-03-25 15:14:09 +01:00
/**
* Automatically include all stuff required to make API calls work.
*/
2023-11-04 14:18:49 +01:00
public function withAPIInformation(): self;
2019-03-25 15:14:09 +01:00
/**
* Will include the source and destination account names and types.
*/
2023-11-04 14:18:49 +01:00
public function withAccountInformation(): self;
/**
2021-03-21 09:15:40 +01:00
* Any notes, no matter what.
*/
2023-11-04 14:18:49 +01:00
public function withAnyNotes(): self;
2020-08-22 12:24:01 +02:00
/**
2021-03-21 09:15:40 +01:00
* Add basic info on attachments of transactions.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withAttachmentInformation(): self;
2020-08-22 12:24:01 +02:00
/**
* Limit results to transactions without a bill..
*/
2023-11-04 14:18:49 +01:00
public function withBill(): self;
/**
2019-09-03 22:35:41 +02:00
* Include bill name + ID.
*/
2023-11-04 14:18:49 +01:00
public function withBillInformation(): self;
2019-05-31 13:35:33 +02:00
/**
2021-03-21 09:15:40 +01:00
* Limit results to a transactions with a budget.
2019-05-31 13:35:33 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withBudget(): self;
2019-05-31 13:35:33 +02:00
/**
2021-03-21 09:15:40 +01:00
* Will include budget ID + name, if any.
2019-05-31 13:35:33 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withBudgetInformation(): self;
2019-05-31 13:35:33 +02:00
2020-06-09 17:40:09 +02:00
/**
2021-03-21 09:15:40 +01:00
* Limit results to a transactions with a category.
2020-06-09 17:40:09 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withCategory(): self;
2020-06-09 17:40:09 +02:00
2020-08-22 12:24:01 +02:00
/**
2021-03-21 09:15:40 +01:00
* Will include category ID + name, if any.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withCategoryInformation(): self;
2020-08-22 12:24:01 +02:00
2022-03-21 06:31:38 +01:00
/**
2022-12-29 19:41:57 +01:00
* Transactions with any external ID
2022-03-21 06:31:38 +01:00
*/
2023-11-04 14:18:49 +01:00
public function withExternalId(): self;
2022-03-21 06:31:38 +01:00
/**
2022-12-29 19:41:57 +01:00
* Transactions with any external URL
*/
2023-11-04 14:18:49 +01:00
public function withExternalUrl(): self;
/**
* Transaction must have meta date field X.
*/
2023-11-04 14:18:49 +01:00
public function withMetaDate(string $field): self;
2020-08-22 12:24:01 +02:00
/**
2021-03-21 09:15:40 +01:00
* Will include notes.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withNotes(): self;
2020-08-22 12:24:01 +02:00
/**
2019-09-03 22:35:41 +02:00
* Add tag info.
*/
2023-11-04 14:18:49 +01:00
public function withTagInformation(): self;
2021-03-05 20:17:39 +01:00
/**
* Limit results to a transactions without a bill.
*/
2023-11-04 14:18:49 +01:00
public function withoutBill(): self;
/**
2021-03-21 09:15:40 +01:00
* Limit results to a transactions without a budget.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withoutBudget(): self;
2020-08-22 12:24:01 +02:00
/**
2021-03-21 09:15:40 +01:00
* Limit results to a transactions without a category.
2020-08-22 12:24:01 +02:00
*/
2023-11-04 14:18:49 +01:00
public function withoutCategory(): self;
2020-08-22 12:24:01 +02:00
2022-03-21 06:31:38 +01:00
/**
2022-12-29 19:41:57 +01:00
* Transactions without an external ID
2022-03-21 06:31:38 +01:00
*/
2023-11-04 14:18:49 +01:00
public function withoutExternalId(): self;
2022-03-21 06:31:38 +01:00
/**
2022-12-29 19:41:57 +01:00
* Transactions without an external URL
*/
2023-11-04 14:18:49 +01:00
public function withoutExternalUrl(): self;
2023-11-04 14:18:49 +01:00
public function withoutNotes(): self;
2020-06-23 20:18:59 +02:00
2023-11-04 14:18:49 +01:00
public function withoutTags(): self;
2020-06-23 20:18:59 +02:00
2023-11-04 14:18:49 +01:00
public function yearAfter(string $year): self;
2022-03-21 06:31:38 +01:00
2023-11-04 14:18:49 +01:00
public function yearBefore(string $year): self;
2023-11-04 14:18:49 +01:00
public function yearIs(string $year): self;
2023-11-04 14:18:49 +01:00
public function yearIsNot(string $year): self;
2019-08-17 12:09:03 +02:00
}