Skip to content
This repository was archived by the owner on May 3, 2024. It is now read-only.

Commit daba1d5

Browse files
authored
4.0.0
4.0.0
2 parents ac67612 + 213858c commit daba1d5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1704
-2398
lines changed

.docs/README.md

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# Client for electronic records of sale
2+
3+
## Usage
4+
5+
```php
6+
<?php
7+
use FilipSedivy\EET\Certificate;
8+
use FilipSedivy\EET\Dispatcher;
9+
use FilipSedivy\EET\Receipt;
10+
use Ramsey\Uuid\Uuid;
11+
12+
$receipt = new Receipt;
13+
$receipt->uuid_zpravy = Uuid::uuid4();
14+
$receipt->id_provoz = '141';
15+
$receipt->id_pokl = '1patro-vpravo';
16+
$receipt->porad_cis = '141-18543-05';
17+
$receipt->dic_popl = 'CZ00000019';
18+
$receipt->dat_trzby = new DateTime;
19+
$receipt->celk_trzba = 500;
20+
21+
$certificate = new Certificate('EET_CA1_Playground-CZ00000019.p12', 'eet');
22+
$dispatcher = new Dispatcher($certificate, Dispatcher::PLAYGROUND_SERVICE);
23+
24+
try {
25+
$dispatcher->send($receipt);
26+
27+
echo 'FIK: ' . $dispatcher->getFik();
28+
echo 'BKP: ' . $dispatcher->getBkp();
29+
} catch (FilipSedivy\EET\Exceptions\EET\ClientException $exception) {
30+
echo 'BKP: ' . $exception->getBkp();
31+
echo 'PKP:' . $exception->getPkp();
32+
} catch (FilipSedivy\EET\Exceptions\EET\ErrorException $exception) {
33+
echo '(' . $exception->getCode() . ') ' . $exception->getMessage();
34+
} catch (FilipSedivy\EET\Exceptions\Receipt\ConstraintViolationException $violationException) {
35+
echo implode('<br>', $violationException->getErrors());
36+
}
37+
```
38+
39+
## Certificate
40+
41+
These are classes that allow the certificate to be exported without further processing.
42+
43+
Received file in p12 format, the one that etrzby.cz will export.
44+
45+
```php
46+
$certificate = FilipSedivy\EET\Certificate(string $file, string $password);
47+
```
48+
49+
**Parameters:**
50+
- `string $file`: File path
51+
- `string $password`: Certificate password
52+
53+
## Dispatcher
54+
55+
Dispatcher is a class that takes care of recipe validation and communication with SoapClient.
56+
57+
```php
58+
$dispatcher = FilipSedivy\EET\Dispatcher(Certificate $certificate, ?string $service = self::PRODUCTION_SERVICE, bool $validate = true);
59+
```
60+
61+
**Parameters:**
62+
- `Certificate $certificate`: Certificate class instance
63+
- `?string $service`: Setting services (`self::PLAYGROUND_SERVICE` OR `self::PRODUCTION_SERVICE`)
64+
- `bool $validate`: Enable offline Receipt validation
65+
66+
**Methods:**
67+
- `check(Receipt $receipt): bool`: Receipt verification without registering EET
68+
- `send(Receipt $receipt, bool $check = false): ?string`: Send EET to the server. If everything is OK, the string with FIK is returned. If `$check = true` is enabled, FIK is not returned
69+
70+
## Exceptions
71+
72+
All exceptions have a common namespace `FilipSedivy\EET\Exceptions`
73+
74+
### EET\ClientException
75+
76+
This is an exception that is thrown when there is a problem communicating with the target server.
77+
78+
**This exception allows you to get the latest BKP, PKP and receipt.**
79+
80+
```php
81+
try {
82+
$dispatcher->send($receipt);
83+
} catch (FilipSedivy\EET\Exceptions\EET\ClientException $exception) {
84+
echo 'BKP: ' . $exception->getBkp();
85+
echo 'PKP:' . $exception->getPkp();
86+
print_r($exception->getReceipt());
87+
}
88+
```
89+
90+
### EET\ErrorException
91+
92+
This error occurs when an error is returned directly from the EET server. In this case, the entire message is invalid and not recorded. For this reason it is not possible to get PKP and BKP code from the exception.
93+
94+
`getCode()` returns the error code from the target server. `getMessage()` returns the translated error according to etrzby.cz documentation.
95+
96+
```php
97+
try {
98+
$dispatcher->send($receipt);
99+
} catch (FilipSedivy\EET\Exceptions\EET\ErrorException $exception) {
100+
echo '(' . $exception->getCode() . ') ' . $exception->getMessage();
101+
}
102+
```
103+
104+
### Receipt\ConstraintViolationException
105+
106+
If validation is enabled, this exception is thrown in case of invalid value according to the scheme.
107+
108+
In this case, the EET is not sent to the destination server and the Receipt is invalid and it is not possible to obtain BKP and PKP codes.
109+
110+
```php
111+
try {
112+
$dispatcher->send($receipt);
113+
} catch (FilipSedivy\EET\Exceptions\Receipt\ConstraintViolationException $violationException) {
114+
echo implode('<br>', $violationException->getErrors());
115+
}
116+
```

.github/FUNDING.yml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
patreon: filipsedivy
2+
custom: https://filipsedivy.cz/donation?to=PHP-EET

.gitignore

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
.idea/
2-
composer.lock
3-
vendor/
1+
# IDE
2+
/.idea
3+
4+
# Composer
5+
/vendor
6+
/composer.lock

.travis.yml

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
language: php
22
php:
3-
- 7.0
3+
- 7.1
4+
- 7.2
5+
- 7.3
46

57
cache:
68
directories:
@@ -13,5 +15,4 @@ install:
1315
- travis_retry composer install --no-interaction --prefer-source
1416

1517
script:
16-
- vendor/bin/phpstan analyse -c phpstan.neon -l 7 src/
17-
- vendor/bin/tester tests/
18+
- travis_retry composer tests

CHANGELOG.md

-32
This file was deleted.

README.md

+18-136
Original file line numberDiff line numberDiff line change
@@ -1,147 +1,29 @@
1-
# PHP knihovna pro EET
1+
# Client for electronic records of sale
22

33
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/07f653430c254d0bbf3f40c8595f0c89)](https://www.codacy.com/app/mail_72/PHP-EET?utm_source=github.com&utm_medium=referral&utm_content=filipsedivy/PHP-EET&utm_campaign=badger)
44
[![Build Status](https://travis-ci.org/filipsedivy/PHP-EET.svg?branch=master)](https://travis-ci.org/filipsedivy/PHP-EET) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://packagist.org/packages/filipsedivy/php-eet)
55
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/58a3ede2-9585-4e37-95ed-ca7726617ea8/mini.png)](https://insight.sensiolabs.com/projects/58a3ede2-9585-4e37-95ed-ca7726617ea8)
66

7-
ℹ️➡️ Možnost implementace EET přímo od autora knihovny + možnost odečtení slevy 5 000 Kč! [více informací](https://filipsedivy.github.io/PHP-EET/) ⬅️ℹ️
7+
If the library is useful, **[please make a donation now](https://filipsedivy.cz/donation?to=PHP-EET)**. Thank you!
88

9-
⚠️ Je třeba si aktualizovat EET knihovnu na verzi **v3.0.1**, jelikož předchozí verze neumožňuje odesílat opakované platby. **Aktualizace nemá vliv na kompatibilitu.** [Příručka jak opakovaně zasílat platby](https://github.com/filipsedivy/PHP-EET/wiki/Opakované-zas%C3%ADlán%C3%AD).
10-
⚠️
11-
12-
**Koukněte se na [přispěvatelé](#př%C3%ADspěvek), a příspějte taktéž na vývoj.** Díky těmto lidem je knihovna dále udržována a šířena zdarma jako open source.
13-
[Příspějte](https://github.com/filipsedivy/PHP-EET/wiki/Zaslán%C3%AD-př%C3%ADspěvku) a buďte na seznamu přispěvatelů
14-
15-
V případě že podáváte **issue** a nenastavíte label - šítek, pro lepší přehlednost, tak je issue automaticky uzavřen bez řešení.
16-
Před podáním issue, prosím věnujte čas k pročtení [příručky](https://github.com/filipsedivy/PHP-EET/wiki/Issue-aneb-zaslán%C3%AD-chyby-nebo-nápadu).
17-
18-
## Instalace
19-
20-
### Composer
21-
22-
Pro instalaci balíčku je nutné jej instalovat skrze [composer](https://getcomposer.org/).
9+
## Installation
2310

2411
```bash
2512
composer require filipsedivy/php-eet
2613
```
2714

28-
### Instalace bez composeru
29-
30-
O tom jak nainstalovat závislosti bez composeru navštivte wiki - [instace bez composeru](https://github.com/filipsedivy/PHP-EET/wiki/Instalace-bez-composeru-pomoc%C3%AD-souboru)
31-
32-
## Dokumentace
33-
34-
Dokumentaci k použítí naleznete ve [wiki systému](https://github.com/filipsedivy/PHP-EET/wiki)
35-
36-
Než se zeptáte, zkuste se do něj podívat, zda-li již problém není zdokumentován
37-
38-
39-
### Nejvíce zasílaných otázek
40-
* [Získání povinných kódů FIK, PKP a BKP](https://github.com/filipsedivy/PHP-EET/wiki/Z%C3%ADskán%C3%AD-BKP,-PKP-a-FIK-kódu)
41-
* [Popis prostředí playground a production a jejich nastavení](https://github.com/filipsedivy/PHP-EET/wiki/Práce-a-popis-prostřed%C3%AD)
42-
43-
## Ukázka užití
44-
45-
Ukázky naleznete ve složce **examples/**.
46-
47-
Certifikát **EET_CA1_Playground-CZ00000019.p12** byl vydán pro účel testování Daňovou správou. Tento certifikát nepoužívejte pro ostrou verzi. Svůj certifikát si vygenerujete skrze rozhraní Daňové správy.
48-
49-
```php
50-
<?php
51-
require_once __DIR__.'/vendor/autoload.php';
52-
53-
use FilipSedivy\EET\Certificate;
54-
use FilipSedivy\EET\Dispatcher;
55-
use FilipSedivy\EET\Receipt;
56-
use FilipSedivy\EET\Utils\UUID;
57-
58-
$certificate = new Certificate(__DIR__.'/EET_CA1_Playground-CZ00000019.p12', 'eet');
59-
$dispatcher = new Dispatcher($certificate);
60-
$dispatcher->setPlaygroundService();
61-
62-
$uuid = UUID::v4();
63-
64-
$r = new Receipt;
65-
$r->uuid_zpravy = $uuid;
66-
$r->id_provoz = '11';
67-
$r->id_pokl = 'IP105';
68-
$r->dic_popl = 'CZ1212121218';
69-
$r->porad_cis = '1';
70-
$r->dat_trzby = new \DateTime();
71-
$r->celk_trzba = 500;
72-
73-
echo '<h2>---REQUEST---</h2>';
74-
echo '<pre>';
75-
76-
try {
77-
// Odeslání tržby
78-
$dispatcher->send($r);
79-
80-
// Tržba byla úspěšně odeslána
81-
echo sprintf('FIK: %s <br>', $dispatcher->getFik());
82-
echo sprintf('BKP: %s <br>', $dispatcher->getBkp());
83-
}catch(\FilipSedivy\EET\Exceptions\EetException $ex){
84-
// Tržba nebyla odeslána
85-
echo sprintf('BKP: %s <br>', $dispatcher->getBkp());
86-
echo sprintf('PKP: %s <br>', $dispatcher->getPkp());
87-
}catch(Exception $ex){
88-
// Obecná chyba
89-
var_dump($ex);
90-
}
91-
```
92-
93-
# Nette rozšíření
94-
95-
Od verze **3.1.0** je k dispozici do Nette rozšíření pro implementaci EET knihovny.
96-
97-
Pro registraci je třeba do konfiguračního souboru přidat následujcí řádky
98-
99-
```yaml
100-
eet:
101-
certificate:
102-
file: Cesta k certifikátu
103-
password: Heslo certifikátu
104-
service: playgroud, production nebo cesta k wsdl souboru
105-
106-
extensions:
107-
eet: FilipSedivy\EET\Bridges\Nette\EetExtension
108-
```
109-
110-
111-
112-
## Pomoc a řešní chyb
113-
114-
V případě že potřebujete poradit, nebo při implementaci Vám třída zobrazuje chybu můžete využít následujících kontaktů.
115-
Základní pomoc je poskytována zcela zdarma. V ostatních případech se řídí dle aktuální ceny, kterou naleznete ve [wiki](https://github.com/filipsedivy/PHP-EET/wiki/Zasl%C3%A1n%C3%AD-p%C5%99%C3%ADsp%C4%9Bvku#co-z-toho-nebudu-m%C3%ADt).
116-
117-
### Issues
118-
Issues je systém veřejných hlášení chyb. V rámci veřejné podpory jsou k dispozici štítky **otázka** a **potřebuji pomoc**.
119-
Před tím než vytvoříte issue, zkuste se podívat zda není problém již řešen nebo již vyřešen někým jiným. [Seznam problémů řešených i vyřešených](https://github.com/filipsedivy/PHP-EET/issues?q=label%3Aot%C3%A1zka+label%3A%22pot%C5%99ebuji+pomoc%22).
120-
121-
### Email
122-
V případě že veřejné řešení problémů nepřipadá v úvahu, tak je možné mě kontaktovat na emailové adrese, kterou naleznete na mé osobní stránce https://filipsedivy.cz.
123-
124-
## Příspěvek
125-
V případě že se vám knihovna líbí a je vám užitečná, můžete mi zaslat příspěvěk. Jak zaslat příspěvek a co z toho budete mít můžete nalést [ve wiki](https://github.com/filipsedivy/PHP-EET/wiki/Zasl%C3%A1n%C3%AD-p%C5%99%C3%ADsp%C4%9Bvku).
126-
127-
### Přispěvatelé
128-
| Přispěvatel | Částka |
129-
|-------------|--------|
130-
| https://www.drento.cz | 1 000 Kč |
131-
| http://www.elektrahk.cz | 1 000 Kč |
132-
| http://www.nerosty.cz |500 Kč |
133-
| https://www.manvel.cz | 500 Kč |
134-
| https://www.skoda-dily.cz | 1 000 Kč |
135-
136-
## Screencasty
137-
138-
- Generování certifikátu pro EET - https://youtu.be/N5Cb9SqeP6g
139-
140-
## Odkazy
141-
- etržby.cz - http://www.etrzby.cz/
142-
- Finanční správa - http://www.financnisprava.cz/cs/financni-sprava/eet
143-
- Daňový portál - https://adisspr.mfcr.cz/adistc/adis/idpr_pub/eet/eet_sluzby.faces
144-
- Informace o EET z pohledu podnikání - http://www.jakpodnikat.cz/eet-elektronicka-evidence-trzeb.php
145-
146-
## Licence
147-
MIT - https://opensource.org/licenses/MIT
15+
## Documentation
16+
17+
- [Usage](.docs/README.md#usage)
18+
- [Certificate](.docs/README.md#certificate)
19+
- [Dispatcher](.docs/README.md#dispatcher)
20+
- [Explanation of exceptions](.docs/README.md#exceptions)
21+
- [EET\ClientException](.docs/README.md#eetclientexception)
22+
- [EET\ErrorException](.docs/README.md#eeterrorexception)
23+
- [Receipt\ConstraintViolationException](.docs/README.md#receiptconstraintviolationexception)
24+
25+
## Links
26+
- http://www.etrzby.cz/
27+
- http://www.financnisprava.cz/cs/financni-sprava/eet
28+
- https://adisspr.mfcr.cz/adistc/adis/idpr_pub/eet/eet_sluzby.faces
29+
- http://www.jakpodnikat.cz/eet-elektronicka-evidence-trzeb.php

0 commit comments

Comments
 (0)