60 lines
1.8 KiB
PHP
60 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace MonetaPhpShop\receipt;
|
|
|
|
/**
|
|
* Ïðèçíàê ñïîñîáà ðàñ÷¸òà (`pm` â `INVENTORY`, `paymentMethod` â JSON Check URL): âåñü ïåðå÷åíü
|
|
* `kassaspecification.pdf`. Äåéñòâóåò íà âñå ïîçèöèè ÷åêà, âêëþ÷àÿ äîñòàâêó.
|
|
* Ðàñ÷¸òíûå ñòàâêè ÍÄÑ ïðè àâàíñå è ïðåäîïëàòå ìîäóëü ñàì íå âûáèðàåò.
|
|
* Çíà÷åíèÿ õðàíÿòñÿ â íàñòðîéêàõ ìîäóëÿ — íå ïåðåèìåíîâûâàòü.
|
|
*/
|
|
final class PaymentMethod
|
|
{
|
|
public const FULL_PREPAYMENT = 'full_prepayment';
|
|
public const PREPAYMENT = 'prepayment';
|
|
public const ADVANCE = 'advance';
|
|
public const FULL_PAYMENT = 'full_payment';
|
|
public const PARTIAL_PAYMENT = 'partial_payment';
|
|
public const CREDIT = 'credit';
|
|
public const CREDIT_PAYMENT = 'credit_payment';
|
|
|
|
/** Çíà÷åíèå -> ïîäïèñü â íàñòðîéêàõ, ïîðÿäîê — êàê â `kassaspecification.pdf`. */
|
|
public const LABELS = [
|
|
self::FULL_PREPAYMENT => 'Ïîëíàÿ ïðåäîïëàòà',
|
|
self::PREPAYMENT => '×àñòè÷íàÿ ïðåäîïëàòà',
|
|
self::ADVANCE => 'Àâàíñ',
|
|
self::FULL_PAYMENT => 'Ïîëíûé ðàñ÷¸ò',
|
|
self::PARTIAL_PAYMENT => '×àñòè÷íûé ðàñ÷¸ò è êðåäèò',
|
|
self::CREDIT => 'Êðåäèò',
|
|
self::CREDIT_PAYMENT => 'Âûïëàòà ïî êðåäèòó',
|
|
];
|
|
|
|
/** @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::FULL_PAYMENT);
|
|
}
|
|
|
|
public static function fullPayment(): self
|
|
{
|
|
return new self(self::FULL_PAYMENT);
|
|
}
|
|
|
|
public function getValue(): string
|
|
{
|
|
return $this->value;
|
|
}
|
|
}
|