OpenCart 🇺🇦

Схема

public mixed editLoad ( )

Аргументы

Аргумент Возможный тип Описание
У метода нет аргументов

Описание

Метод пока еще не документирован.

Исходный код

$this->load->model('catalog/product');
$this->load->model('openbay/ebay_product');
$this->load->model('tool/image');

$item_id        = $this->openbay->ebay->getEbayItemId($this->request->get['product_id']);

if (!empty($item_id)) {
	$listings   = $this->openbay->ebay->getEbayListing($item_id);
	$stock      = $this->openbay->ebay->getProductStockLevel($this->request->get['product_id']);
	$reserve    = $this->openbay->ebay->getReserve($this->request->get['product_id'], $item_id);
	$options    = array();

	$product_info = $this->model_catalog_product->getProduct($this->request->get['product_id']);

	if ($this->openbay->addonLoad('openstock') && $product_info['has_option'] == 1) {
		$this->load->model('openstock/openstock');
		$this->data['addon']['openstock'] = true;
		$product_info['options'] = $this->model_openstock_openstock->getProductOptionStocks($this->request->get['product_id']);
		$product_info['option_grp'] = $this->model_openbay_ebay_product->getProductOptions($this->request->get['product_id']);

		$t = array();
		$t_rel = array();

		foreach($product_info['option_grp'] as $grp) {
			$t_tmp = array();

			foreach($grp['product_option_value'] as $grp_node) {
				$t_tmp[$grp_node['option_value_id']] = $grp_node['name'];
				$t_rel[$grp_node['product_option_value_id']] = $grp['name'];
			}

			$t[] = array('name' => $grp['name'], 'child' => $t_tmp);
		}

		if(!isset($listings['variations']['Variation'][1])) {
			$listings['variations']['Variation'] = array($listings['variations']['Variation']);
		}

		foreach($product_info['options'] as $option) {
			$option['base64']   = base64_encode(serialize($option['opts']));
			$optionReserve      = $this->openbay->ebay->getReserve($this->request->get['product_id'], $item_id, $option['var']);
			if($optionReserve == false) {
				$option['reserve'] = 0;
			}else{
				$option['reserve']  = $this->openbay->ebay->getReserve($this->request->get['product_id'], $item_id, $option['var']);
			}

			$ebay_listing = '';

			foreach($listings['variations']['Variation'] as $listing) {

				$sku = (isset($listing['SKU']) ? $listing['SKU'] : '');

				if($sku != '' && $sku == $option['var']) {
					$listing['StartPrice'] = number_format($listing['StartPrice'], 2);
					$listing['Quantity'] = $listing['Quantity'] - $listing['SellingStatus']['QuantitySold'];

					$ebay_listing = $listing;
				}
			}

			$options[] = array('ebay' => $ebay_listing, 'local' => $option, 'var' => $option['var']);
		}


		//unset variants that dont appear on eBay
		$notlive = array();
		foreach($options as $k => $option) {
			if(empty($option['ebay'])) {
				$notlive[] = $options[$k];
				unset($options[$k]);
			}
		}

		$variant = array(
			'variant' => 1,
			'data' => array(
				'grp_info' => array(
					'optGroupArray' => base64_encode(serialize($t)),
					'optGroupRelArray' => base64_encode(serialize($t_rel)),
				),
				'options' => $options,
				'optionsinactive' => $notlive
			)
		);

	}else{
		$variant = array('variant' => 0, 'data' => '');
	}

	$this->data['product'] = $product_info;

	if($reserve == false) { $reserve = 0; }

	$data = array(
		'listing'   => $listings,
		'stock'     => $stock,
		'reserve'   => $reserve,
		'variant'   => $variant
	);

	if (!empty($listings)) {
		$this->response->setOutput(json_encode(array('error' => false, 'data' => $data)));
	} else {
		$this->response->setOutput(json_encode(array('error' => true)));
	}
} else {
	$this->response->setOutput(json_encode(array('error' => true)));
}