Files

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