%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sale/lib/internals/ |
Current File : /home/bitrix/www/bitrix/modules/sale/lib/internals/poolquantity.php |
<?php namespace Bitrix\Sale\Internals; use Bitrix\Sale; /** * Class PoolQuantity * @package Bitrix\Sale\Internals */ class PoolQuantity { const POOL_RESERVE_TYPE = 'R'; const POOL_QUANTITY_TYPE = 'Q'; private static $poolList = array(); private $typeList = array(); /** * @param $key * * @return PoolQuantity */ public static function getInstance($key) { if (!isset(static::$poolList[$key])) { $pool = new static(); static::$poolList[$key] = $pool; } return static::$poolList[$key]; } /** * @param $type * @param $code * * @return float|null */ public function get($type, $code) { $pool = $this->getByType($type); return $pool->get($code); } /** * @internal * @param $type * * @return Pool */ public function getByType($type) { if (empty($this->typeList[$type])) { $this->typeList[$type] = new Pool(); } return $this->typeList[$type]; } /** * @param $type * * @return array */ public function getQuantities($type) { /** @var Pool $pool */ $pool = $this->getByType($type); return $pool->getQuantities(); } /** * @param $type * @param $code * @param $value */ public function add($type, $code, $value) { $pool = $this->getByType($type); $currentValue = floatval($pool->get($code)); $pool->set($code, $currentValue + $value); } /** * @param $type * @param $code * @param $value */ public function set($type, $code, $value) { $pool = $this->getByType($type); $pool->set($code, $value); } /** * @param $type * @param $code */ public function delete($type, $code) { $pool = $this->getByType($type); $pool->delete($code); } /** * @param $type */ public function reset($type) { $pool = $this->getByType($type); $list = $pool->getQuantities(); if (!empty($list)) { foreach($list as $itemKey => $itemValue) { $pool->delete($itemKey); } } } }