atol-online/docs/vats.md

4.1 KiB
Raw Blame History

Работа со ставками НДС

Вернуться к содержанию


Один объект

Объект ставки НДС инициализируется следующим образом:

use AtolOnline\Entities\Vat;
use AtolOnline\Enums\VatTypes;

$vat = new Vat(
    VatTypes::VAT10, // тип ставки
    123.45 // сумма в рублях, от которой считать ставку
);

Для типа и суммы имеются отдельные сеттеры:

$vat->setType(VatTypes::VAT20)
    ->setSum(100.15); // 123.45 заменится на 100.15

Общую сумму, из которой расчитывается размер налога, можно увеличить, используя метод addSum(). Указанная в рублях сумма увеличится на указанные рубли. Для уменьшения суммы следует передать отрицательное число.

$vat->addSum(40)   // 100.15 + 40 = 140.15р
    ->addSum(-15); // 140.15 - 15 = 125.15р

Получить установленную сумму можно через геттер getSum():

$vat->getSum(); // 125.15р

Размер налога по ставке высчитывается из этой общей суммы. Не смотря на то, что геттер и сеттер работают с рублями, ** расчёты производятся в копейках**. Сделать это можно через getCalculated():

$vat->getCalculated();
// для примера выше это 20% от 125.15р = 25.03р

Разберём комплексный пример изменения типа ставки и расчётной суммы:

Объект класса приводится к JSON-строке автоматически или принудительно:

echo $vat;
$json_string = (string)$vat;

Чтобы получить те же данные в виде массива, нужно вызвать метод jsonSerialize():

$json_array = $vat->jsonSerialize();

Массив объектов ставок НДС

Максимальное количество в массиве - 6.

Массив инициализируется следующим образом:

$vat_array = new AtolOnline\Entities\VatArray();

Чтобы задать содержимое массива, используйте метод set():

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)
]);

Очистить его можно передачей в сеттер пустого массива:

$vat_array->set([]);

Чтобы добавить объект к существующим элементам массива, используйте метод add():

use AtolOnline\{Constants\VatTypes, Entities\Vat};

$vat = new Vat(VatTypes::VAT20, 20);
$vat_array->add($vat);

Методы set() и add() проверяют количество элементов в массиве перед его обновлением. Выбрасывают исключение AtolTooManyVatsException (если в массиве уже максимальное количество объектов).

Чтобы получить содержимое массива, используйте метод get():

$vat_array->get();

Объект класса приводится к JSON-строке автоматически или принудительным приведением к string:

echo $vat_array;
$json_string = (string)$vat_array;

Чтобы получить те же данные в виде массива, нужно вызвать метод jsonSerialize():

$json_array = $vat_array->jsonSerialize();

Вернуться к содержанию