Files

72 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
namespace MonetaPhpShop\receipt;
/**
* Ïðèçíàê ïðåäìåòà ðàñ÷¸òà (`po` â `INVENTORY`, `paymentObject` â JSON Check URL): ïåðå÷åíü
* `kassaspecification.pdf` ïëþñ `composite`.
* Íàñòðîéêîé âûáèðàåòñÿ òîëüêî äëÿ òîâàðîâ; äîñòàâêà âñåãäà {@see self::SERVICE}.
* Çíà÷åíèÿ õðàíÿòñÿ â íàñòðîéêàõ ìîäóëÿ — íå ïåðåèìåíîâûâàòü.
*/
final class PaymentObject
{
public const COMMODITY = 'commodity';
public const SERVICE = 'service';
/** Çíà÷åíèå -> ïîäïèñü â íàñòðîéêàõ. */
public const LABELS = [
self::COMMODITY => 'Òîâàð',
'excise' => 'Ïîäàêöèçíûé òîâàð',
'job' => 'Ðàáîòà',
self::SERVICE => 'Óñëóãà',
'gambling_bet' => 'Ñòàâêà àçàðòíîé èãðû',
'gambling_prize' => 'Âûèãðûø àçàðòíîé èãðû',
'lottery' => 'Ëîòåðåéíûé áèëåò',
'lottery_prize' => 'Âûèãðûø ëîòåðåè',
'intellectual_activity' => 'Ïðåäîñòàâëåíèå ðåçóëüòàòîâ èíòåëëåêòóàëüíîé äåÿòåëüíîñòè',
'payment' => 'Ïëàò¸æ',
'agent_commission' => 'Àãåíòñêîå âîçíàãðàæäåíèå',
'award' => 'Âûïëàòà (âçíîñ, ïåíè, øòðàô, âîçíàãðàæäåíèå, áîíóñ)',
'composite' => 'Ñîñòàâíîé ïðåäìåò ðàñ÷¸òà',
'another' => 'Äðóãîå',
'property_right' => 'Èìóùåñòâåííîå ïðàâî',
'non_operating' => 'Âíåðåàëèçàöèîííûé äîõîä',
'insurance_premium' => 'Ñòðàõîâîé ñáîð',
'sales_tax' => 'Òîðãîâûé ñáîð',
'resort_fee' => 'Êóðîðòíûé ñáîð',
];
/** @var string */
private $value;
private function __construct(string $value)
{
$this->value = $value;
}
/**
* Çíà÷åíèå èç íàñòðîåê; íåèçâåñòíîå èëè ïóñòîå — òîâàð (äåôîëò êàññû).
*/
public static function fromSetting(?string $value): self
{
return new self(isset(self::LABELS[(string) $value]) ? (string) $value : self::COMMODITY);
}
public static function commodity(): self
{
return new self(self::COMMODITY);
}
public static function service(): self
{
return new self(self::SERVICE);
}
public function getValue(): string
{
return $this->value;
}
}