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

1422 lines
37 KiB
PHP
Raw Normal View History

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