62 lines
1.7 KiB
PHP
62 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace MonetaPhpShop\receipt;
|
|
|
|
/**
|
|
* Система налогообложения — атрибут `SNO` ответа Pay URL (`kassaspecification.pdf`, необязательный).
|
|
* Передаётся только при фискализации и только если мерчант её выбрал; по умолчанию
|
|
* не передаётся — касса берёт систему налогообложения из своих настроек. В JSON Check URL поля нет
|
|
* (схема `cmsspecification.pdf`). Значения хранятся в настройках модуля — не переименовывать.
|
|
*/
|
|
final class TaxSystem
|
|
{
|
|
/** Не передавать: система налогообложения из настроек кассы. */
|
|
public const KASSA = '';
|
|
|
|
/** Значение -> подпись в настройках, коды — по `kassaspecification.pdf`. */
|
|
public const LABELS = [
|
|
self::KASSA => 'Не передавать (из настроек кассы)',
|
|
'1' => 'Общая (ОСНО)',
|
|
'2' => 'Упрощённая (УСН) доход',
|
|
'3' => 'Упрощённая (УСН) доход минус расход',
|
|
'4' => 'Единый налог на вменённый доход (ЕНВД)',
|
|
'5' => 'Единый сельскохозяйственный налог (ЕСХН)',
|
|
'6' => 'Патентная (ПСН)',
|
|
];
|
|
|
|
/** @var string */
|
|
private $value;
|
|
|
|
private function __construct(string $value)
|
|
{
|
|
$this->value = $value;
|
|
}
|
|
|
|
/**
|
|
* Значение из настроек; неизвестное или пустое — не передавать.
|
|
*/
|
|
public static function fromSetting(?string $value): self
|
|
{
|
|
$value = (string) $value;
|
|
|
|
return new self(isset(self::LABELS[$value]) ? $value : self::KASSA);
|
|
}
|
|
|
|
public static function kassa(): self
|
|
{
|
|
return new self(self::KASSA);
|
|
}
|
|
|
|
public function getValue(): string
|
|
{
|
|
return $this->value;
|
|
}
|
|
|
|
public function isPassed(): bool
|
|
{
|
|
return ($this->value !== self::KASSA);
|
|
}
|
|
}
|