72 lines
2.2 KiB
PHP
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;
|
|
}
|
|
}
|