Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bb05f0c752 | |||
| 1c76608468 | |||
| bd6e208216 | |||
| 7b4411ec01 | |||
| 23fa1f7eb9 | |||
| 929bf84c97 | |||
|
|
5c1c4dba12 | ||
|
|
4c40bebe14 | ||
| d321205ac9 | |||
| 387e6e445f |
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@@ -1,3 +1,3 @@
|
|||||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||||
patreon: # Replace with a single Patreon username
|
patreon: # Replace with a single Patreon username
|
||||||
custom: ['https://money.yandex.ru/to/41001685237530']
|
custom: ['https://yoomoney.ru/to/41001685237530']
|
||||||
|
|||||||
25
.github/workflows/dev.yml
vendored
Normal file
25
.github/workflows/dev.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Dev build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ dev ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ dev ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Validate composer.json and composer.lock
|
||||||
|
uses: php-actions/composer@40-env
|
||||||
|
with:
|
||||||
|
version: 2
|
||||||
|
php_version: 7.4
|
||||||
|
only_args: --prefer-dist --no-progress
|
||||||
|
|
||||||
|
- name: Run phpunit tests
|
||||||
|
uses: php-actions/phpunit@v8
|
||||||
|
with:
|
||||||
|
configuration: ./phpunit.xml
|
||||||
25
.github/workflows/master.yml
vendored
Normal file
25
.github/workflows/master.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Master build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Validate composer.json and composer.lock
|
||||||
|
uses: php-actions/composer@40-env
|
||||||
|
with:
|
||||||
|
version: 2
|
||||||
|
php_version: 7.4
|
||||||
|
only_args: --prefer-dist --no-progress
|
||||||
|
|
||||||
|
- name: Run phpunit tests
|
||||||
|
uses: php-actions/phpunit@v8
|
||||||
|
with:
|
||||||
|
configuration: ./phpunit.xml
|
||||||
26
.github/workflows/tests.yml
vendored
26
.github/workflows/tests.yml
vendored
@@ -1,26 +0,0 @@
|
|||||||
name: Build
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: Validate composer.json and composer.lock
|
|
||||||
run: composer validate
|
|
||||||
|
|
||||||
- name: Install composer dependencies
|
|
||||||
run: composer install --prefer-dist --no-progress --no-suggest
|
|
||||||
|
|
||||||
- name: Run phpunit tests
|
|
||||||
uses: php-actions/phpunit@v1.0.0
|
|
||||||
with:
|
|
||||||
# Configuration file location
|
|
||||||
config: ./phpunit.xml
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
## Системные требования
|
## Системные требования
|
||||||
|
|
||||||
* PHP 7.2+
|
* PHP 7.4+
|
||||||
* composer
|
* composer
|
||||||
* php-json
|
* php-json
|
||||||
|
|
||||||
@@ -103,8 +103,6 @@
|
|||||||
|
|
||||||
## Дополнительные ресурсы
|
## Дополнительные ресурсы
|
||||||
|
|
||||||
**Discord-сервер для обсуждения этой библиотеки: [discord.gg/mFYTQmp](https://discord.gg/mFYTQmp)**
|
|
||||||
|
|
||||||
Функционал, находящийся в разработке: [ROADMAP.md](ROADMAP.md)
|
Функционал, находящийся в разработке: [ROADMAP.md](ROADMAP.md)
|
||||||
|
|
||||||
Официальные ресурсы АТОЛ Онлайн:
|
Официальные ресурсы АТОЛ Онлайн:
|
||||||
|
|||||||
18
ROADMAP.md
18
ROADMAP.md
@@ -25,7 +25,8 @@
|
|||||||
- [ ] Тесты для регистрации документа расхода
|
- [ ] Тесты для регистрации документа расхода
|
||||||
- [ ] Тесты для регистрации документа возврата расхода
|
- [ ] Тесты для регистрации документа возврата расхода
|
||||||
- [ ] Тесты для регистрации документа коррекции расхода
|
- [ ] Тесты для регистрации документа коррекции расхода
|
||||||
- [ ] Вообще все расчёты вообще везде должны быть строго в копейках. Рубли (дроби) должны быть только в JSON-представлениях
|
- [ ] Вообще все расчёты вообще везде должны быть строго в копейках.
|
||||||
|
Рубли (дроби) должны быть только в JSON-представлениях
|
||||||
|
|
||||||
## Поддержка методов API (регистрация документов)
|
## Поддержка методов API (регистрация документов)
|
||||||
|
|
||||||
@@ -63,18 +64,3 @@
|
|||||||
- [x] Пoддержка `correction.vats` (обязательный)
|
- [x] Пoддержка `correction.vats` (обязательный)
|
||||||
- [x] Пoддержка `correction.correction_info` (обязательный)
|
- [x] Пoддержка `correction.correction_info` (обязательный)
|
||||||
- [x] Пoддержка `correction.cashier`
|
- [x] Пoддержка `correction.cashier`
|
||||||
|
|
||||||
## Не будут реализовываться
|
|
||||||
|
|
||||||
### Валидация генерируемых документов согласно актуальной схемы API
|
|
||||||
|
|
||||||
- Валидатор схемы для документов прихода, возврата прихода, расхода, возврата расхода
|
|
||||||
- Валидатор схемы для документов коррекции прихода, коррекции расхода
|
|
||||||
|
|
||||||
1. Отказ обусловлен скоростью выполнения.
|
|
||||||
Базовая реализация, которая была начата, подразумевала синглтон, который кешировал однажды полученную схему.
|
|
||||||
Практика показала, что этот единичный запрос может существенно тормозить работу сервера и в течение долгого времени
|
|
||||||
не отдавать ответ клиенту.
|
|
||||||
|
|
||||||
2. Такая валидация подходит в том случае, если бы при разработке использовалась концепция IoC.
|
|
||||||
До версии пакета 2.0.0 таких серьёзных имзенений не планируется.
|
|
||||||
|
|||||||
@@ -5,16 +5,21 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"54-fz",
|
"54-fz",
|
||||||
|
"54-фз",
|
||||||
"kkt",
|
"kkt",
|
||||||
|
"ккт",
|
||||||
"e-commerce",
|
"e-commerce",
|
||||||
"cash",
|
"cash",
|
||||||
"cash register",
|
"cash register",
|
||||||
"payment",
|
"payment",
|
||||||
"payment system",
|
"payment system",
|
||||||
"atol",
|
"atol",
|
||||||
"atol-online"
|
"атол",
|
||||||
|
"atol-online",
|
||||||
|
"атол онлайн"
|
||||||
],
|
],
|
||||||
"homepage": "https://github.com/anthonyaxenov/atol-online",
|
"homepage": "https://github.com/anthonyaxenov/atol-online",
|
||||||
|
"readme": "https://github.com/anthonyaxenov/atol-online/blob/master/README.md",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Anthony Axenov",
|
"name": "Anthony Axenov",
|
||||||
@@ -25,10 +30,16 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/anthonyaxenov/atol-online",
|
"source": "https://github.com/anthonyaxenov/atol-online",
|
||||||
"issues": "https://github.com/anthonyaxenov/atol-online/issues",
|
"issues": "https://github.com/anthonyaxenov/atol-online/issues",
|
||||||
"chat": "https://discord.gg/mFYTQmp"
|
"docs": "https://github.com/anthonyaxenov/atol-online/blob/master/docs/readme.md"
|
||||||
},
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "Yoomoney",
|
||||||
|
"url": "https://yoomoney.ru/to/41001685237530"
|
||||||
|
}
|
||||||
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.2",
|
"php": ">=7.4",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"guzzlehttp/guzzle": "^6.5",
|
"guzzlehttp/guzzle": "^6.5",
|
||||||
"psr/log": "^1.1",
|
"psr/log": "^1.1",
|
||||||
|
|||||||
927
composer.lock
generated
927
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -68,7 +68,7 @@ class CorrectionInfo extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getNumber(): ?string
|
public function getNumber(): ?string
|
||||||
{
|
{
|
||||||
return $this->base_name;
|
return $this->base_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,7 +165,7 @@ class CorrectionInfo extends Entity
|
|||||||
'type' => $this->getType() ?? '', // обязателен
|
'type' => $this->getType() ?? '', // обязателен
|
||||||
'base_date' => $this->getDate() ?? '', // обязателен
|
'base_date' => $this->getDate() ?? '', // обязателен
|
||||||
'base_number' => $this->getNumber() ?? '', // обязателен
|
'base_number' => $this->getNumber() ?? '', // обязателен
|
||||||
'base_name' => $this->getName() ?? '' // обязателен
|
'base_name' => $this->getName() ?? '' // не обязателен
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -362,6 +362,14 @@ class Document extends Entity
|
|||||||
$array['client']['inn'] ?? null
|
$array['client']['inn'] ?? null
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
if (isset($array['correction_info'])) {
|
||||||
|
$doc->setCorrectionInfo(new CorrectionInfo(
|
||||||
|
$array['correction_info']['type'] ?? null,
|
||||||
|
$array['correction_info']['base_date'] ?? null,
|
||||||
|
$array['correction_info']['base_number'] ?? null,
|
||||||
|
$array['correction_info']['base_name'] ?? null,
|
||||||
|
));
|
||||||
|
}
|
||||||
if (isset($array['items'])) {
|
if (isset($array['items'])) {
|
||||||
foreach ($array['items'] as $ar_item) {
|
foreach ($array['items'] as $ar_item) {
|
||||||
$item = new Item(
|
$item = new Item(
|
||||||
@@ -391,6 +399,18 @@ class Document extends Entity
|
|||||||
$doc->payments->add($payment);
|
$doc->payments->add($payment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (isset($array['vats'])) {
|
||||||
|
foreach ($array['vats'] as $vat_payment) {
|
||||||
|
$vat = new Vat();
|
||||||
|
if (isset($vat_payment['type'])) {
|
||||||
|
$vat->setType($vat_payment['type']);
|
||||||
|
}
|
||||||
|
if (isset($vat_payment['sum'])) {
|
||||||
|
$vat->setSum($vat_payment['sum']);
|
||||||
|
}
|
||||||
|
$doc->vats->add($vat);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (isset($array['total']) && $array['total'] != $doc->calcTotal()) {
|
if (isset($array['total']) && $array['total'] != $doc->calcTotal()) {
|
||||||
throw new AtolException('Real total sum not equals to provided in JSON one');
|
throw new AtolException('Real total sum not equals to provided in JSON one');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ class Vat extends Entity
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает размер НДС от суммы в копейках
|
* Устанавливает:
|
||||||
|
* размер НДС от суммы в копейках
|
||||||
*
|
*
|
||||||
* @param string $type Тип ставки НДС
|
* @param string $type Тип ставки НДС
|
||||||
* @param int $kopeks Копейки
|
* @param int $kopeks Копейки
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class AtolAuthFailedException extends Exception
|
|||||||
$message = $last_response->isValid()
|
$message = $last_response->isValid()
|
||||||
? $message
|
? $message
|
||||||
: '['.$last_response->error->code.'] '.$last_response->error->text.
|
: '['.$last_response->error->code.'] '.$last_response->error->text.
|
||||||
'. ERROR_ID: '.$last_response->error->error_ID.
|
'. ERROR_ID: '.$last_response->error->error_id.
|
||||||
'. TYPE: '.$last_response->error->type;
|
'. TYPE: '.$last_response->error->type;
|
||||||
$code = $last_response->isValid() ? $code : $last_response->error->code;
|
$code = $last_response->isValid() ? $code : $last_response->error->code;
|
||||||
parent::__construct($message, $code, $previous);
|
parent::__construct($message, $code, $previous);
|
||||||
|
|||||||
Reference in New Issue
Block a user