4.1 KiB
Работа со ставками НДС
Один объект
Объект ставки НДС инициализируется следующим образом:
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();