feat: moneta 2.0, MONETA.Assistant payment module for PHPShop 6.7+
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MonetaPhpShop\receipt;
|
||||
|
||||
/**
|
||||
* Ñòàâêè ÍÄÑ èç íàñòðîåê PHPShop, êîòîðûõ íåò â ïåðå÷íå êàññû: ïîçèöèè ñ íèìè óõîäÿò â ÷åê
|
||||
* «áåç ÍÄÑ» ({@see Vat::fromPercent()}) — ìîäóëü ñòàâêó íå óãàäûâàåò, íî ìåð÷àíò äîëæåí îá ýòîì
|
||||
* çíàòü. Èñòî÷íèê ïðåäóïðåæäåíèÿ â íàñòðîéêàõ ìîäóëÿ.
|
||||
*
|
||||
* Ïðîâåðÿåòñÿ òîëüêî òî, ÷òî ìîäóëü äåéñòâèòåëüíî áåð¸ò èç PHPShop: ïðè ôèñêàëèçàöèè,
|
||||
* âêëþ÷¸ííîì ÍÄÑ ìàãàçèíà è íàñòðîéêå «èç PHPShop» ó òîâàðîâ èëè äîñòàâêè.
|
||||
*/
|
||||
final class VatRateWarnings
|
||||
{
|
||||
private function __construct() {}
|
||||
|
||||
/**
|
||||
* @param string $systemPercent ñèñòåìíàÿ ñòàâêà PHPShop (`nds`)
|
||||
* @param array<int, array{0: string, 1: string}> $deliveries ñïîñîáû äîñòàâêè: [íàçâàíèå, «Çíà÷åíèå ÍÄÑ»
|
||||
* (`ofd_nds`, ïóñòî — ñèñòåìíàÿ ñòàâêà)]
|
||||
*
|
||||
* @return array<int, string> íåðàñïîçíàííûå ñòàâêè: `ñèñòåìíàÿ ñòàâêà PHPShop (òîâàðû): 23`
|
||||
*/
|
||||
public static function find(
|
||||
bool $fiscalization,
|
||||
bool $vatEnabled,
|
||||
VatSetting $goodsVat,
|
||||
VatSetting $deliveryVat,
|
||||
string $systemPercent,
|
||||
array $deliveries
|
||||
): array {
|
||||
if (!$fiscalization || !$vatEnabled) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$warnings = [];
|
||||
if ($goodsVat->getFixed() === null && Vat::tryFromPercent($systemPercent) === null) {
|
||||
$warnings[] = 'ñèñòåìíàÿ ñòàâêà PHPShop (òîâàðû): ' . self::shown($systemPercent);
|
||||
}
|
||||
if ($deliveryVat->getFixed() === null) {
|
||||
foreach ($deliveries as [$name, $percent]) {
|
||||
$percent = (trim($percent) !== '') ? $percent : $systemPercent;
|
||||
if (Vat::tryFromPercent($percent) === null) {
|
||||
$warnings[] = 'äîñòàâêà «' . $name . '»: ' . self::shown($percent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $warnings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Çíà÷åíèå äëÿ ñîîáùåíèÿ: ïóñòîå — ñëîâîì, èíà÷å êàê ââ¸ë ìåð÷àíò.
|
||||
*/
|
||||
public static function shown(string $percent): string
|
||||
{
|
||||
$percent = trim($percent);
|
||||
|
||||
return ($percent === '') ? 'íå çàäàíà' : $percent . '%';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user