Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

AccountHandler.php 1.3KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Contracts;
  3. use App\DTO\AccountBalanceDTO;
  4. use App\DTO\AccountBalanceReportDTO;
  5. use App\Enums\Accounting\AccountCategory;
  6. use App\Models\Accounting\Account;
  7. use App\ValueObjects\Money;
  8. interface AccountHandler
  9. {
  10. public function getDebitBalance(Account $account, string $startDate, string $endDate): Money;
  11. public function getCreditBalance(Account $account, string $startDate, string $endDate): Money;
  12. public function getNetMovement(Account $account, string $startDate, string $endDate): Money;
  13. public function getStartingBalance(Account $account, string $startDate): ?Money;
  14. public function getEndingBalance(Account $account, string $startDate, string $endDate): ?Money;
  15. public function calculateNetMovementByCategory(AccountCategory $category, int $debitBalance, int $creditBalance): int;
  16. public function getBalances(Account $account, string $startDate, string $endDate): array;
  17. public function formatBalances(array $balances): AccountBalanceDTO;
  18. public function buildAccountBalanceReport(string $startDate, string $endDate): AccountBalanceReportDTO;
  19. public function getTotalBalanceForAllBankAccounts(string $startDate, string $endDate): Money;
  20. public function getAccountCategoryOrder(): array;
  21. public function getEarliestTransactionDate(): string;
  22. }