feat: moneta 2.0, MONETA.Assistant payment module for PHPShop 6.7+
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MonetaPhpShop\receipt;
|
||||
|
||||
/**
|
||||
* Íàñòðîéêè «ÍÄÑ íà òîâàðû» è «ÍÄÑ íà äîñòàâêó»: ñòàâêà èç PHPShop
|
||||
* (ïî óìîë÷àíèþ) èëè îäíà ôèêñèðîâàííàÿ ñòàâêà íà âñå ïîçèöèè, âêëþ÷àÿ ðàñ÷¸òíûå —
|
||||
* èõ ïðè àâàíñå è ïðåäîïëàòå âûáèðàåò ìåð÷àíò, ìîäóëü ñàì íå ïîäñòàâëÿåò.
|
||||
* Çíà÷åíèÿ õðàíÿòñÿ â íàñòðîéêàõ ìîäóëÿ — íå ïåðåèìåíîâûâàòü.
|
||||
*/
|
||||
final class VatSetting
|
||||
{
|
||||
/** Ñòàâêà èç PHPShop: ñèñòåìíàÿ ó òîâàðîâ, ñïîñîáà äîñòàâêè ó äîñòàâêè. */
|
||||
public const PLATFORM = 'platform';
|
||||
|
||||
/** Ôèêñèðîâàííûå ñòàâêè: êîä `vat` -> ïîäïèñü â íàñòðîéêàõ. */
|
||||
public const FIXED_LABELS = [
|
||||
Vat::NONE => 'Áåç ÍÄÑ',
|
||||
'vat0' => 'ÍÄÑ 0%',
|
||||
'vat5' => 'ÍÄÑ 5%',
|
||||
'vat7' => 'ÍÄÑ 7%',
|
||||
'vat10' => 'ÍÄÑ 10%',
|
||||
'vat20' => 'ÍÄÑ 20%',
|
||||
'vat22' => 'ÍÄÑ 22%',
|
||||
'vat105' => 'ÍÄÑ 5% (ðàñ÷¸òíàÿ ñòàâêà 5/105)',
|
||||
'vat107' => 'ÍÄÑ 7% (ðàñ÷¸òíàÿ ñòàâêà 7/107)',
|
||||
'vat110' => 'ÍÄÑ 10% (ðàñ÷¸òíàÿ ñòàâêà 10/110)',
|
||||
'vat120' => 'ÍÄÑ 20% (ðàñ÷¸òíàÿ ñòàâêà 20/120)',
|
||||
'vat122' => 'ÍÄÑ 22% (ðàñ÷¸òíàÿ ñòàâêà 22/122)',
|
||||
];
|
||||
|
||||
/** @var Vat|null */
|
||||
private $fixed;
|
||||
|
||||
private function __construct(?Vat $fixed)
|
||||
{
|
||||
$this->fixed = $fixed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Çíà÷åíèå èç íàñòðîåê; ïóñòîå, {@see self::PLATFORM} èëè íåèçâåñòíîå — ñòàâêà èç PHPShop.
|
||||
*/
|
||||
public static function fromSetting(?string $value): self
|
||||
{
|
||||
$value = (string) $value;
|
||||
|
||||
return new self(isset(self::FIXED_LABELS[$value]) ? Vat::fromCode($value) : null);
|
||||
}
|
||||
|
||||
public static function platform(): self
|
||||
{
|
||||
return new self(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ôèêñèðîâàííàÿ ñòàâêà èëè null — áðàòü èç PHPShop.
|
||||
*/
|
||||
public function getFixed(): ?Vat
|
||||
{
|
||||
return $this->fixed;
|
||||
}
|
||||
|
||||
public function getValue(): string
|
||||
{
|
||||
return ($this->fixed !== null) ? $this->fixed->getCode() : self::PLATFORM;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ïîäïèñè äëÿ âûïàäàþùåãî ñïèñêà: ïåðâûì — ñòàâêà èç PHPShop ñ ïîäïèñüþ `$platformLabel`.
|
||||
*
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public static function labels(string $platformLabel): array
|
||||
{
|
||||
return [self::PLATFORM => $platformLabel] + self::FIXED_LABELS;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user