mirror of
https://github.com/anthonyaxenov/atol-online.git
synced 2024-11-25 22:14:06 +00:00
129 lines
4.1 KiB
Markdown
129 lines
4.1 KiB
Markdown
# Работа со ставками НДС
|
||
|
||
[Вернуться к содержанию](readme.md)
|
||
|
||
---
|
||
|
||
## Один объект
|
||
|
||
Объект ставки НДС инициализируется следующим образом:
|
||
|
||
```php
|
||
use AtolOnline\Entities\Vat;
|
||
use AtolOnline\Enums\VatTypes;
|
||
|
||
$vat = new Vat(
|
||
VatTypes::VAT10, // тип ставки
|
||
123.45 // сумма в рублях, от которой считать ставку
|
||
);
|
||
```
|
||
|
||
Для типа и суммы имеются отдельные сеттеры:
|
||
|
||
```php
|
||
$vat->setType(VatTypes::VAT20)
|
||
->setSum(100.15); // 123.45 заменится на 100.15
|
||
```
|
||
|
||
Общую сумму, из которой расчитывается размер налога, можно увеличить, используя метод `addSum()`. Указанная в рублях
|
||
сумма увеличится на указанные рубли. Для уменьшения суммы следует передать отрицательное число.
|
||
|
||
```php
|
||
$vat->addSum(40) // 100.15 + 40 = 140.15р
|
||
->addSum(-15); // 140.15 - 15 = 125.15р
|
||
```
|
||
|
||
Получить установленную сумму можно через геттер `getSum()`:
|
||
|
||
```php
|
||
$vat->getSum(); // 125.15р
|
||
```
|
||
|
||
Размер налога по ставке высчитывается из этой общей суммы. Не смотря на то, что геттер и сеттер работают с рублями, **
|
||
расчёты производятся в копейках**. Сделать это можно через `getCalculated()`:
|
||
|
||
```php
|
||
$vat->getCalculated();
|
||
// для примера выше это 20% от 125.15р = 25.03р
|
||
```
|
||
|
||
Разберём комплексный пример изменения типа ставки и расчётной суммы:
|
||
|
||
Объект класса приводится к JSON-строке автоматически или принудительно:
|
||
|
||
```php
|
||
echo $vat;
|
||
$json_string = (string)$vat;
|
||
```
|
||
|
||
Чтобы получить те же данные в виде массива, нужно вызвать метод `jsonSerialize()`:
|
||
|
||
```php
|
||
$json_array = $vat->jsonSerialize();
|
||
```
|
||
|
||
<a name="array"></a>
|
||
## Массив объектов ставок НДС
|
||
|
||
> Максимальное количество в массиве - 6.
|
||
|
||
Массив инициализируется следующим образом:
|
||
|
||
```php
|
||
$vat_array = new AtolOnline\Entities\VatArray();
|
||
```
|
||
|
||
Чтобы задать содержимое массива, используйте метод `set()`:
|
||
|
||
```php
|
||
use AtolOnline\{Constants\VatTypes, Entities\Vat};
|
||
|
||
$vat_array->set([
|
||
new Vat(VatTypes::VAT10, 123),
|
||
new Vat(VatTypes::VAT110, 53.2),
|
||
new Vat(VatTypes::VAT20, 23.99),
|
||
new Vat(VatTypes::VAT120, 11.43)
|
||
]);
|
||
```
|
||
|
||
Очистить его можно передачей в сеттер пустого массива:
|
||
|
||
```php
|
||
$vat_array->set([]);
|
||
```
|
||
|
||
Чтобы добавить объект к существующим элементам массива, используйте метод `add()`:
|
||
|
||
```php
|
||
use AtolOnline\{Constants\VatTypes, Entities\Vat};
|
||
|
||
$vat = new Vat(VatTypes::VAT20, 20);
|
||
$vat_array->add($vat);
|
||
```
|
||
|
||
Методы `set()` и `add()` проверяют количество элементов в массиве перед его обновлением.
|
||
Выбрасывают исключение `AtolTooManyVatsException` (если в массиве уже максимальное количество объектов).
|
||
|
||
Чтобы получить содержимое массива, используйте метод `get()`:
|
||
|
||
```php
|
||
$vat_array->get();
|
||
```
|
||
|
||
Объект класса приводится к JSON-строке автоматически или принудительным приведением к `string`:
|
||
|
||
```php
|
||
echo $vat_array;
|
||
$json_string = (string)$vat_array;
|
||
```
|
||
|
||
Чтобы получить те же данные в виде массива, нужно вызвать метод `jsonSerialize()`:
|
||
|
||
```php
|
||
$json_array = $vat_array->jsonSerialize();
|
||
```
|
||
|
||
---
|
||
|
||
[Вернуться к содержанию](readme.md)
|