feat: moneta 2.0, MONETA.Assistant payment module for PHPShop 6.7+
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user