if (($cmd == 'getAffStoreCells' || $cmd == 'getAvailableAffStoreCells') && !empty($_REQUEST['aff_store_id'])) { $data = $entity->getGroupedBy('aff_store_id', intval($_REQUEST['aff_store_id'])); } else { $data = EntityFactory::processRequest($cmd); } if ($cmd == 'getGrid' || $cmd == 'getAffStoreCells' || $cmd == 'getAvailableAffStoreCells') { if ($data['total'] > 0) { $entity = EntityFactory::loadEntity('MeasureRates'); foreach ($data['data'] as $key => $cell) { $data['data'][$key]['free_area'] = $cell['area']; $entity = EntityFactory::loadEntity('Cells'); $cellProducts = $entity->getCellProducts($cell['id']); if ($cellProducts['total'] > 0) { $entity = EntityFactory::loadEntity('MeasureRates'); foreach ($cellProducts['data'] as $product) { if ($product['remainder'] > EntityFactory::getSetting('min_reminder')) { // Получаем кол-во поддонов на основании остатков. Остаток всегда в кг $panNum = ceil($entity->getRatedValue(KG_MEASURE, P_MEASURE, $product['product_id'], $product['remainder'])); // Получаем текущую занимаемую площадь $usedArea = ceil($entity->getRatedValue(P_MEASURE, M2_MEASURE, 0, $panNum)); $data['data'][$key]['free_area'] -= $usedArea; } } } } // Убираем полностью занятые камеры из выпадающего списка. if ($cmd == 'getAvailableAffStoreCells') { $info = $data['data']; $data = array(); foreach ($info as $key => $row) { if ($row['free_area'] > 0) {
public function getRatedValue($originM, $rateM, $product = 0, $value) { $sql = 'SELECT rate FROM ' . $this->getTable() . ' WHERE measure1_id=' . intval($originM) . ' AND measure2_id=' . intval($rateM); if ($product > 0) { $sql .= ' AND product_id=' . intval($product); } $rate = $this->getDb()->getOne($sql); if (!empty($rate)) { return round($value * $rate, EntityFactory::getSetting('decimal_digits_num')); } else { $sql = 'SELECT rate FROM ' . $this->getTable() . ' WHERE measure2_id=' . intval($originM) . ' AND measure1_id=' . intval($rateM); if ($product > 0) { $sql .= ' AND product_id=' . intval($product); } $rate = $this->getDb()->getOne($sql); if (!empty($rate)) { return round($value / $rate, EntityFactory::getSetting('decimal_digits_num')); } } }