# Работа со ставками НДС [Вернуться к содержанию](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(); ``` ## Массив объектов ставок НДС > Максимальное количество в массиве - 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)