53 lines
1.3 KiB
PHP
53 lines
1.3 KiB
PHP
<?php
|
||
/**
|
||
* Copyright (c) Антон Аксенов (aka Anthony Axenov)
|
||
*
|
||
* This code is licensed under MIT.
|
||
* Этот код распространяется по лицензии MIT.
|
||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||
*/
|
||
|
||
namespace AtolOnline\Traits;
|
||
|
||
use AtolOnline\Exceptions\AtolInnWrongLengthException;
|
||
|
||
/**
|
||
* Добавляет объекту функционал для работы с ИНН
|
||
*
|
||
* @package AtolOnline\Traits
|
||
*/
|
||
trait HasInn
|
||
{
|
||
/**
|
||
* @var string ИНН
|
||
*/
|
||
protected $inn;
|
||
|
||
/**
|
||
* Возвращает установленный ИНН. Тег ФФД: 1228, 1018.
|
||
*
|
||
* @return string
|
||
*/
|
||
public function getInn()
|
||
{
|
||
return $this->inn ?? '';
|
||
}
|
||
|
||
/**
|
||
* Устанавливает ИНН. Тег ФФД: 1228, 1018.
|
||
* Входная строка лишается всех знаков, кроме цифр.
|
||
*
|
||
* @param string $inn
|
||
* @return $this
|
||
* @throws AtolInnWrongLengthException
|
||
*/
|
||
public function setInn(string $inn)
|
||
{
|
||
$inn = preg_replace("/[^0-9]/", '', $inn);
|
||
if (preg_match_all("/(^[0-9]{10}$)|(^[0-9]{12}$)/", $inn) == 0) {
|
||
throw new AtolInnWrongLengthException($inn);
|
||
}
|
||
$this->inn = $inn;
|
||
return $this;
|
||
}
|
||
} |