Files

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);
}
}