-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbasic-usage.php
More file actions
151 lines (116 loc) · 4.53 KB
/
Copy pathbasic-usage.php
File metadata and controls
151 lines (116 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?php
declare(strict_types=1);
/**
* Basic usage example for EU VAT SDK
*
* This example demonstrates the simplest way to retrieve VAT rates
* for one or more EU member states.
*
* @package Netresearch\EuVatSdk\Examples
* @author Netresearch DTT GmbH
* @license https://opensource.org/licenses/MIT MIT License
*/
require_once __DIR__ . '/../vendor/autoload.php';
use Netresearch\EuVatSdk\Factory\VatRetrievalClientFactory;
use Netresearch\EuVatSdk\DTO\Request\VatRatesRequest;
use Netresearch\EuVatSdk\Exception\VatServiceException;
use Netresearch\EuVatSdk\Exception\InvalidRequestException;
// Create a basic client with default configuration
$client = VatRetrievalClientFactory::create();
echo "=== EU VAT SDK - Basic Usage Example ===\n\n";
try {
// Example 1: Single country VAT rate
echo "1. Retrieving VAT rate for Germany:\n";
$request = new VatRatesRequest(
memberStates: ['DE'],
situationOn: new DateTime('2024-01-01')
);
$response = $client->retrieveVatRates($request);
foreach ($response->getResults() as $result) {
printf(
" %s: %s%% (%s rate)\n",
$result->getMemberState(),
$result->getVatRate()->getValue()->__toString(),
$result->getVatRate()->getType()
);
}
echo "\n";
// Example 2: Multiple countries
echo "2. Retrieving VAT rates for multiple countries:\n";
$request = new VatRatesRequest(
memberStates: ['DE', 'FR', 'IT', 'ES', 'NL'],
situationOn: new DateTime('2024-01-01')
);
$response = $client->retrieveVatRates($request);
foreach ($response->getResults() as $result) {
printf(
" %s: %s%% (%s)\n",
$result->getMemberState(),
$result->getVatRate()->getValue()->__toString(),
$result->getVatRate()->getType()
);
}
echo "\n";
// Example 3: Historical rates (Brexit example)
echo "3. Historical VAT rates (UK before Brexit):\n";
// First, show successful request for GB before Brexit
$request = new VatRatesRequest(
memberStates: ['GB'],
situationOn: new DateTime('2020-01-01') // Before Brexit
);
$response = $client->retrieveVatRates($request);
foreach ($response->getResults() as $result) {
printf(
" %s (2020): %s%% (%s)\n",
$result->getMemberState(),
$result->getVatRate()->getValue()->__toString(),
$result->getVatRate()->getType()
);
}
echo "\n Now trying GB after Brexit (this will fail):\n";
// Second, show expected error for GB after Brexit
$postBrexitRequest = new VatRatesRequest(
memberStates: ['GB'],
situationOn: new DateTime('2022-01-01') // After Brexit
);
try {
$response = $client->retrieveVatRates($postBrexitRequest);
echo " Unexpected: GB request succeeded after Brexit\n";
} catch (InvalidRequestException $e) {
echo " ✓ Expected error for GB after Brexit: " . $e->getMessage() . "\n";
}
echo "\n";
// Example 4: Using the response data
echo "4. Working with response data:\n";
$request = new VatRatesRequest(
memberStates: ['DE', 'FR'],
situationOn: new DateTime('2024-01-01')
);
$response = $client->retrieveVatRates($request);
// Access specific country results
$results = $response->getResults();
echo " Total results: " . count($results) . "\n";
// Find specific country
foreach ($results as $result) {
if ($result->getMemberState() === 'DE') {
$vatRate = $result->getVatRate();
echo " Germany details:\n";
echo " - Country: " . $result->getMemberState() . "\n";
echo " - Rate: " . $vatRate->getValue()->__toString() . "%\n";
echo " - Type: " . $vatRate->getType() . "\n";
echo " - Date: " . $result->getSituationOn()->format('Y-m-d') . "\n";
// Get precise decimal value for calculations
$decimalRate = $vatRate->getValue();
echo " - Decimal rate: " . $decimalRate->__toString() . "\n";
break;
}
}
echo "\nSuccess! Retrieved VAT rates from EU service.\n";
} catch (VatServiceException $e) {
echo "Error retrieving VAT rates: " . $e->getMessage() . "\n";
echo "Error type: " . get_class($e) . "\n";
if ($e->getPrevious()) {
echo "Original error: " . $e->getPrevious()->getMessage() . "\n";
}
exit(1);
}