Files
esun3d/app/code/Esun/FreeGift/Model/Config/Backend/TierItems.php
T
2026-09-15 10:35:56 +08:00

44 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace Esun\FreeGift\Model\Config\Backend;
use Magento\Config\Model\Config\Backend\Serialized\ArraySerialized;
use Magento\Config\Model\ResourceModel\Config\Data as ConfigResource;
use Magento\Config\Model\ResourceModel\Config\Data\Collection as ConfigCollection;
class TierItems extends ArraySerialized
{
protected function _construct(): void
{
$this->_setResourceModel(ConfigResource::class, ConfigCollection::class);
}
public function beforeSave()
{
$items = [];
$value = $this->getValue();
if (is_array($value)) {
unset($value['__empty']);
foreach ($value as $row) {
if (!is_array($row)) {
continue;
}
$amount = max(0.0, (float)($row['amount'] ?? 0));
$quantity = max(0, (int)($row['qty'] ?? 0));
if ($quantity <= 0) {
continue;
}
$items[] = ['amount' => $amount, 'qty' => $quantity];
}
}
usort($items, static fn (array $left, array $right): int => $left['amount'] <=> $right['amount']);
$this->setValue($items);
return parent::beforeSave();
}
}