Кучад доработок, главным образом вокруг Item

- `Item` почти готов и весь покрыт тестами. Пока остались нереализованными `nomenclature_code` и `excise`
- `Client::setPhone()` теперь выбрасывает InvalidPhoneException
- доработка и создание новых исключений (не буду все перечислять, смотри диффы)
- мелочи по phpdoc и всяким текстовкам
This commit is contained in:
2021-12-01 20:11:08 +08:00
parent bce21f9658
commit 5ccb0e9db4
22 changed files with 1232 additions and 360 deletions

View File

@@ -15,14 +15,15 @@ use AtolOnline\{
Constants\Constraints,
Exceptions\InvalidEmailException,
Exceptions\InvalidInnLengthException,
Exceptions\InvalidPhoneException,
Exceptions\TooLongClientContactException,
Exceptions\TooLongClientNameException,
Exceptions\TooLongEmailException};
/**
* Класс Client, описывающий сущность покупателя
* Класс, описывающий покупателя
*
* @package AtolOnline\Entities
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 17
*/
class Client extends Entity
{
@@ -84,7 +85,6 @@ class Client extends Entity
/**
* Устанавливает наименование покупателя
*
* @todo улучшить валидацию по Constraints::PATTERN_PHONE
* @param string|null $name
* @return $this
* @throws TooLongClientNameException
@@ -148,14 +148,14 @@ class Client extends Entity
*
* @param string|null $phone Номер телефона
* @return $this
* @throws TooLongClientContactException
* @throws InvalidPhoneException
*/
public function setPhone(?string $phone): self
{
if (is_string($phone)) {
$phone = preg_replace('/[^\d]/', '', trim($phone));
if (mb_strlen($phone) > Constraints::MAX_LENGTH_CLIENT_CONTACT) {
throw new TooLongClientContactException($phone);
if (preg_match(Constraints::PATTERN_PHONE, $phone) != 1) {
throw new InvalidPhoneException($phone);
}
}
$this->phone = empty($phone) ? null : "+$phone";