mirror of
https://github.com/anthonyaxenov/atol-online.git
synced 2024-11-25 05:54:09 +00:00
Удалены бесполезные ItemArray
, VatArray
и PaymentArray
, будут заменены коллекциями
This commit is contained in:
parent
9d2617858d
commit
c9670a1321
@ -1,115 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
|
||||||
*
|
|
||||||
* This code is licensed under MIT.
|
|
||||||
* Этот код распространяется по лицензии MIT.
|
|
||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types = 1);
|
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
|
||||||
|
|
||||||
use AtolOnline\Exceptions\TooManyItemsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Класс, описывающий массив предметов расчёта
|
|
||||||
*
|
|
||||||
* @package AtolOnline\Entities
|
|
||||||
*/
|
|
||||||
class ItemArray extends Entity
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Максимальное количество элементов в массиве
|
|
||||||
* По документации ограничение по количеству предметов расчёта = от 1 до 100,
|
|
||||||
* однако в схеме sell не указан receipt.properties.items.maxItems
|
|
||||||
*/
|
|
||||||
public const MAX_COUNT = 100;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Item[] Массив предметов расчёта
|
|
||||||
*/
|
|
||||||
private array $items = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ItemArray constructor.
|
|
||||||
*
|
|
||||||
* @param Item[]|null $items Массив предметов расчёта
|
|
||||||
* @throws TooManyItemsException Слишком много предметов расчёта
|
|
||||||
*/
|
|
||||||
public function __construct(?array $items = null)
|
|
||||||
{
|
|
||||||
if ($items) {
|
|
||||||
$this->set($items);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Устанавливает массив предметов расчёта
|
|
||||||
*
|
|
||||||
* @param Item[] $items Массив предметов расчёта
|
|
||||||
* @return $this
|
|
||||||
* @throws TooManyItemsException Слишком много предметов расчёта
|
|
||||||
*/
|
|
||||||
public function set(array $items): ItemArray
|
|
||||||
{
|
|
||||||
if ($this->validateCount($items)) {
|
|
||||||
$this->items = $items;
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Добавляет предмет расчёта в массив
|
|
||||||
*
|
|
||||||
* @param Item $item Объект предмета расчёта
|
|
||||||
* @return $this
|
|
||||||
* @throws TooManyItemsException Слишком много предметов расчёта
|
|
||||||
*/
|
|
||||||
public function add(Item $item): ItemArray
|
|
||||||
{
|
|
||||||
if ($this->validateCount()) {
|
|
||||||
$this->items[] = $item;
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Возвращает массив предметов расчёта
|
|
||||||
*
|
|
||||||
* @return Item[]
|
|
||||||
*/
|
|
||||||
public function get(): array
|
|
||||||
{
|
|
||||||
return $this->items;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function jsonSerialize()
|
|
||||||
{
|
|
||||||
$result = [];
|
|
||||||
foreach ($this->get() as $item) {
|
|
||||||
$result[] = $item->jsonSerialize();
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Проверяет количество предметов расчёта
|
|
||||||
*
|
|
||||||
* @param Item[]|null $items Если передать массив, то проверит количество его элементов.
|
|
||||||
* Иначе проверит количество уже присвоенных элементов.
|
|
||||||
* @return bool true если всё хорошо, иначе выбрасывает исключение
|
|
||||||
* @throws TooManyItemsException Слишком много предметов расчёта
|
|
||||||
*/
|
|
||||||
protected function validateCount(?array $items = null): bool
|
|
||||||
{
|
|
||||||
if ((!empty($items) && count($items) >= self::MAX_COUNT) || count($this->items) >= self::MAX_COUNT) {
|
|
||||||
throw new TooManyItemsException(count($items), self::MAX_COUNT);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,113 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
|
||||||
*
|
|
||||||
* This code is licensed under MIT.
|
|
||||||
* Этот код распространяется по лицензии MIT.
|
|
||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types = 1);
|
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
|
||||||
|
|
||||||
use AtolOnline\Exceptions\TooManyPaymentsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Класс, описывающий массив оплат
|
|
||||||
*
|
|
||||||
* @package AtolOnline\Entities
|
|
||||||
*/
|
|
||||||
class PaymentArray extends Entity
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Максимальное количество элементов массива
|
|
||||||
*/
|
|
||||||
public const MAX_COUNT = 10;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Payment[] Массив оплат
|
|
||||||
*/
|
|
||||||
private array $payments = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ItemArray constructor.
|
|
||||||
*
|
|
||||||
* @param Payment[]|null $payments Массив оплат
|
|
||||||
* @throws TooManyPaymentsException Слишком много оплат
|
|
||||||
*/
|
|
||||||
public function __construct(?array $payments = null)
|
|
||||||
{
|
|
||||||
if ($payments) {
|
|
||||||
$this->set($payments);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Устанавливает массив оплат
|
|
||||||
*
|
|
||||||
* @param Payment[] $payments
|
|
||||||
* @return $this
|
|
||||||
* @throws TooManyPaymentsException Слишком много оплат
|
|
||||||
*/
|
|
||||||
public function set(array $payments): PaymentArray
|
|
||||||
{
|
|
||||||
if ($this->validateCount($payments)) {
|
|
||||||
$this->payments = $payments;
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Добавляет новую оплату к заданным
|
|
||||||
*
|
|
||||||
* @param Payment $payment Объект оплаты
|
|
||||||
* @return $this
|
|
||||||
* @throws TooManyPaymentsException Слишком много оплат
|
|
||||||
*/
|
|
||||||
public function add(Payment $payment): PaymentArray
|
|
||||||
{
|
|
||||||
if ($this->validateCount()) {
|
|
||||||
$this->payments[] = $payment;
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Возвращает массив оплат
|
|
||||||
*
|
|
||||||
* @return Payment[]
|
|
||||||
*/
|
|
||||||
public function get(): array
|
|
||||||
{
|
|
||||||
return $this->payments;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function jsonSerialize()
|
|
||||||
{
|
|
||||||
$result = [];
|
|
||||||
foreach ($this->get() as $payment) {
|
|
||||||
$result[] = $payment->jsonSerialize();
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Проверяет количество налоговых ставок
|
|
||||||
*
|
|
||||||
* @param Payment[]|null $payments Если передать массив, то проверит количество его элементов.
|
|
||||||
* Иначе проверит количество уже присвоенных элементов.
|
|
||||||
* @return bool true если всё хорошо, иначе выбрасывает исключение
|
|
||||||
* @throws TooManyPaymentsException Слишком много оплат
|
|
||||||
*/
|
|
||||||
protected function validateCount(?array $payments = null): bool
|
|
||||||
{
|
|
||||||
if ((!empty($payments) && count($payments) >= self::MAX_COUNT) || count($this->payments) >= self::MAX_COUNT) {
|
|
||||||
throw new TooManyPaymentsException(count($payments), self::MAX_COUNT);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,117 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
|
||||||
*
|
|
||||||
* This code is licensed under MIT.
|
|
||||||
* Этот код распространяется по лицензии MIT.
|
|
||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types = 1);
|
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
|
||||||
|
|
||||||
use AtolOnline\Exceptions\TooManyVatsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Класс, описывающий массив ставок НДС
|
|
||||||
*
|
|
||||||
* @package AtolOnline\Entities
|
|
||||||
*/
|
|
||||||
class VatArray extends Entity
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Максимальное количество элементов массива
|
|
||||||
*/
|
|
||||||
public const MAX_COUNT = 6;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Vat[] Массив ставок НДС
|
|
||||||
*/
|
|
||||||
private array $vats = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* VatArray constructor.
|
|
||||||
*
|
|
||||||
* @param Vat[]|null $vats Массив ставок НДС
|
|
||||||
* @throws TooManyVatsException Слишком много ставок НДС
|
|
||||||
*/
|
|
||||||
public function __construct(?array $vats = null)
|
|
||||||
{
|
|
||||||
if ($vats) {
|
|
||||||
$this->set($vats);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Устанавливает массив ставок НДС
|
|
||||||
*
|
|
||||||
* @param Vat[] $vats Массив ставок НДС
|
|
||||||
* @return $this
|
|
||||||
* @throws TooManyVatsException Слишком много ставок НДС
|
|
||||||
*/
|
|
||||||
public function set(array $vats): VatArray
|
|
||||||
{
|
|
||||||
if ($this->validateCount($vats)) {
|
|
||||||
$this->vats = $vats;
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Добавляет новую ставку НДС в массив
|
|
||||||
*
|
|
||||||
* @param Vat $vat Объект ставки НДС
|
|
||||||
* @return $this
|
|
||||||
* @throws TooManyVatsException Слишком много ставок НДС
|
|
||||||
*/
|
|
||||||
public function add(Vat $vat): VatArray
|
|
||||||
{
|
|
||||||
if ($this->validateCount()) {
|
|
||||||
if (isset($this->vats[$vat->getType()])) {
|
|
||||||
$this->vats[$vat->getType()]->addSum($vat->getSum());
|
|
||||||
} else {
|
|
||||||
$this->vats[$vat->getType()] = $vat;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Возвращает массив ставок НДС
|
|
||||||
*
|
|
||||||
* @return Vat[]
|
|
||||||
*/
|
|
||||||
public function get(): array
|
|
||||||
{
|
|
||||||
return $this->vats;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function jsonSerialize()
|
|
||||||
{
|
|
||||||
$result = [];
|
|
||||||
foreach ($this->get() as $vat) {
|
|
||||||
$result[] = $vat->jsonSerialize();
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Проверяет количество налоговых ставок
|
|
||||||
*
|
|
||||||
* @param Vat[]|null $vats Если передать массив, то проверит количество его элементов.
|
|
||||||
* Иначе проверит количество уже присвоенных элементов.
|
|
||||||
* @return bool true если всё хорошо, иначе выбрасывает исключение
|
|
||||||
* @throws TooManyVatsException Слишком много ставок НДС
|
|
||||||
*/
|
|
||||||
protected function validateCount(?array $vats = null): bool
|
|
||||||
{
|
|
||||||
if ((!empty($vats) && count($vats) >= self::MAX_COUNT) || count($this->vats) >= self::MAX_COUNT) {
|
|
||||||
throw new TooManyVatsException(count($vats), self::MAX_COUNT);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user