$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)));
}