2020-01-11 06:30:25 +00:00
|
|
|
|
# Работа со ставками НДС
|
|
|
|
|
|
2020-01-11 10:08:49 +00:00
|
|
|
|
[Вернуться к содержанию](readme.md)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2020-01-11 06:30:25 +00:00
|
|
|
|
## Один объект
|
|
|
|
|
|
|
|
|
|
Объект ставки НДС инициализируется следующим образом:
|
|
|
|
|
|
|
|
|
|
```php
|
2021-11-28 04:01:28 +00:00
|
|
|
|
use AtolOnline\Entities\Vat;
|
|
|
|
|
use AtolOnline\Enums\VatTypes;
|
2020-01-11 06:30:25 +00:00
|
|
|
|
|
2021-11-28 04:01:28 +00:00
|
|
|
|
$vat = new Vat(
|
|
|
|
|
VatTypes::VAT10, // тип ставки
|
|
|
|
|
123.45 // сумма в рублях, от которой считать ставку
|
2020-01-11 06:30:25 +00:00
|
|
|
|
);
|
|
|
|
|
```
|
|
|
|
|
|
2021-11-28 04:01:28 +00:00
|
|
|
|
Для типа и суммы имеются отдельные сеттеры:
|
2020-01-11 06:30:25 +00:00
|
|
|
|
|
|
|
|
|
```php
|
2021-11-28 04:01:28 +00:00
|
|
|
|
$vat->setType(VatTypes::VAT20)
|
|
|
|
|
->setSum(100.15); // 123.45 заменится на 100.15
|
2020-01-11 06:30:25 +00:00
|
|
|
|
```
|
|
|
|
|
|
2021-11-28 04:01:28 +00:00
|
|
|
|
Общую сумму, из которой расчитывается размер налога, можно увеличить, используя метод `addSum()`. Указанная в рублях
|
|
|
|
|
сумма увеличится на указанные рубли. Для уменьшения суммы следует передать отрицательное число.
|
2020-01-11 06:30:25 +00:00
|
|
|
|
|
|
|
|
|
```php
|
2021-11-28 04:01:28 +00:00
|
|
|
|
$vat->addSum(40) // 100.15 + 40 = 140.15р
|
|
|
|
|
->addSum(-15); // 140.15 - 15 = 125.15р
|
2020-01-11 06:30:25 +00:00
|
|
|
|
```
|
|
|
|
|
|
2021-11-28 04:01:28 +00:00
|
|
|
|
Получить установленную сумму можно через геттер `getSum()`:
|
2020-01-11 06:30:25 +00:00
|
|
|
|
|
|
|
|
|
```php
|
2021-11-28 04:01:28 +00:00
|
|
|
|
$vat->getSum(); // 125.15р
|
2020-01-11 06:30:25 +00:00
|
|
|
|
```
|
|
|
|
|
|
2021-11-28 04:01:28 +00:00
|
|
|
|
Размер налога по ставке высчитывается из этой общей суммы. Не смотря на то, что геттер и сеттер работают с рублями, **
|
|
|
|
|
расчёты производятся в копейках**. Сделать это можно через `getCalculated()`:
|
2020-01-11 06:30:25 +00:00
|
|
|
|
|
|
|
|
|
```php
|
2021-11-28 04:01:28 +00:00
|
|
|
|
$vat->getCalculated();
|
|
|
|
|
// для примера выше это 20% от 125.15р = 25.03р
|
2020-01-11 06:30:25 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Разберём комплексный пример изменения типа ставки и расчётной суммы:
|
|
|
|
|
|
2021-11-28 04:01:28 +00:00
|
|
|
|
Объект класса приводится к JSON-строке автоматически или принудительно:
|
2020-01-11 06:30:25 +00:00
|
|
|
|
|
|
|
|
|
```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();
|
|
|
|
|
```
|
2020-01-11 10:08:49 +00:00
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2021-11-28 04:01:28 +00:00
|
|
|
|
[Вернуться к содержанию](readme.md)
|