Skip to content

Commit 933f793

Browse files
committed
feat: implement Account Groups, Calendar Years, Business Years, Manual Entries, and VAT Periods resources
- Updated README to reflect the implementation status of Account Groups, Calendar Years, Business Years, Manual Entries, and VAT Periods as fully implemented. - Added resource classes for Account Groups, Calendar Years, Business Years, Manual Entries, and VAT Periods, including their respective request classes for API interactions. - Created tests for each resource to ensure functionality and data integrity.
1 parent 42f3e4e commit 933f793

24 files changed

+706
-6
lines changed

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -265,14 +265,14 @@ $client = new BexioClient($auth->getAccessToken());
265265
| Resource | Implemented |
266266
| -------------- | ----------- |
267267
| Accounts ||
268-
| Account Groups | |
269-
| Calendar Years | |
270-
| Business Years | |
268+
| Account Groups | |
269+
| Calendar Years | |
270+
| Business Years | |
271271
| Currencies ||
272-
| Manual Entries | |
273-
| Reports | |
272+
| Manual Entries | |
273+
| Reports | |
274274
| Taxes ||
275-
| Vat Periods | |
275+
| Vat Periods | |
276276

277277
### BANKING
278278

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\AccountGroups;
5+
6+
use Bexio\Resources\Accounting\AccountGroups\Requests\GetAccountGroupRequest;
7+
use Bexio\Resources\Accounting\AccountGroups\Requests\GetAccountGroupsRequest;
8+
use Bexio\Resources\Resource;
9+
10+
class AccountGroup extends Resource
11+
{
12+
public const INDEX_REQUEST = GetAccountGroupsRequest::class;
13+
public const SHOW_REQUEST = GetAccountGroupRequest::class;
14+
15+
public function __construct(
16+
public ?int $id = null,
17+
public ?string $uuid = null,
18+
public ?string $name = null,
19+
public ?int $parent_id = null,
20+
) {
21+
}
22+
}
23+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\AccountGroups\Requests;
5+
6+
use Bexio\Resources\Accounting\AccountGroups\AccountGroup;
7+
use Saloon\Enums\Method;
8+
use Saloon\Http\Request;
9+
use Saloon\Http\Response;
10+
11+
class GetAccountGroupRequest extends Request
12+
{
13+
protected Method $method = Method::GET;
14+
15+
public function __construct(protected readonly int $id)
16+
{
17+
}
18+
19+
public function resolveEndpoint(): string
20+
{
21+
return "/2.0/account_groups/{$this->id}";
22+
}
23+
24+
public function createDtoFromResponse(Response $response): AccountGroup
25+
{
26+
return AccountGroup::from($response->json());
27+
}
28+
}
29+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\AccountGroups\Requests;
5+
6+
use Bexio\Resources\Accounting\AccountGroups\AccountGroup;
7+
use Saloon\Enums\Method;
8+
use Saloon\Http\Request;
9+
use Saloon\Http\Response;
10+
11+
class GetAccountGroupsRequest extends Request
12+
{
13+
protected Method $method = Method::GET;
14+
15+
public function resolveEndpoint(): string
16+
{
17+
return '/2.0/account_groups';
18+
}
19+
20+
public function createDtoFromResponse(Response $response): array
21+
{
22+
return AccountGroup::collect($response->json());
23+
}
24+
}
25+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\BusinessYears;
5+
6+
use Bexio\Resources\Accounting\BusinessYears\Requests\GetBusinessYearRequest;
7+
use Bexio\Resources\Accounting\BusinessYears\Requests\GetBusinessYearsRequest;
8+
use Bexio\Resources\Resource;
9+
10+
class BusinessYear extends Resource
11+
{
12+
public const INDEX_REQUEST = GetBusinessYearsRequest::class;
13+
public const SHOW_REQUEST = GetBusinessYearRequest::class;
14+
15+
public function __construct(
16+
public ?int $id = null,
17+
public ?string $uuid = null,
18+
public ?string $date_start = null,
19+
public ?string $date_end = null,
20+
public ?bool $is_closed = null,
21+
) {
22+
}
23+
}
24+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\BusinessYears\Requests;
5+
6+
use Bexio\Resources\Accounting\BusinessYears\BusinessYear;
7+
use Saloon\Enums\Method;
8+
use Saloon\Http\Request;
9+
use Saloon\Http\Response;
10+
11+
class GetBusinessYearRequest extends Request
12+
{
13+
protected Method $method = Method::GET;
14+
15+
public function __construct(protected readonly string $uuid)
16+
{
17+
}
18+
19+
public function resolveEndpoint(): string
20+
{
21+
return "/3.0/accounting/business_years/{$this->uuid}";
22+
}
23+
24+
public function createDtoFromResponse(Response $response): BusinessYear
25+
{
26+
return BusinessYear::from($response->json());
27+
}
28+
}
29+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\BusinessYears\Requests;
5+
6+
use Bexio\Resources\Accounting\BusinessYears\BusinessYear;
7+
use Saloon\Enums\Method;
8+
use Saloon\Http\Request;
9+
use Saloon\Http\Response;
10+
11+
class GetBusinessYearsRequest extends Request
12+
{
13+
protected Method $method = Method::GET;
14+
15+
public function resolveEndpoint(): string
16+
{
17+
return '/3.0/accounting/business_years';
18+
}
19+
20+
public function createDtoFromResponse(Response $response): array
21+
{
22+
return BusinessYear::collect($response->json());
23+
}
24+
}
25+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\CalendarYears;
5+
6+
use Bexio\Resources\Accounting\CalendarYears\Requests\GetCalendarYearRequest;
7+
use Bexio\Resources\Accounting\CalendarYears\Requests\GetCalendarYearsRequest;
8+
use Bexio\Resources\Resource;
9+
10+
class CalendarYear extends Resource
11+
{
12+
public const INDEX_REQUEST = GetCalendarYearsRequest::class;
13+
public const SHOW_REQUEST = GetCalendarYearRequest::class;
14+
15+
public function __construct(
16+
public ?int $id = null,
17+
public ?string $uuid = null,
18+
public ?string $date_start = null,
19+
public ?string $date_end = null,
20+
) {
21+
}
22+
}
23+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\CalendarYears\Requests;
5+
6+
use Bexio\Resources\Accounting\CalendarYears\CalendarYear;
7+
use Saloon\Enums\Method;
8+
use Saloon\Http\Request;
9+
use Saloon\Http\Response;
10+
11+
class GetCalendarYearRequest extends Request
12+
{
13+
protected Method $method = Method::GET;
14+
15+
public function __construct(protected readonly string $uuid)
16+
{
17+
}
18+
19+
public function resolveEndpoint(): string
20+
{
21+
return "/3.0/accounting/calendar_years/{$this->uuid}";
22+
}
23+
24+
public function createDtoFromResponse(Response $response): CalendarYear
25+
{
26+
return CalendarYear::from($response->json());
27+
}
28+
}
29+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Bexio\Resources\Accounting\CalendarYears\Requests;
5+
6+
use Bexio\Resources\Accounting\CalendarYears\CalendarYear;
7+
use Saloon\Enums\Method;
8+
use Saloon\Http\Request;
9+
use Saloon\Http\Response;
10+
11+
class GetCalendarYearsRequest extends Request
12+
{
13+
protected Method $method = Method::GET;
14+
15+
public function resolveEndpoint(): string
16+
{
17+
return '/3.0/accounting/calendar_years';
18+
}
19+
20+
public function createDtoFromResponse(Response $response): array
21+
{
22+
return CalendarYear::collect($response->json());
23+
}
24+
}
25+

0 commit comments

Comments
 (0)