$this->load->language('openbay/amazonus_listing');
$this->load->library('amazonus');
$this->load->model('openbay/amazonus');
$logger = new Log('amazonus_product.log');
$logger->write('Uploading process started.');
$savedProducts = $this->model_openbay_amazonus->getSavedProductsData();
if(empty($savedProducts)) {
$logger->write('No saved listings found. Uploading canceled.');
$result['status'] = 'error';
$result['error_message'] = 'No saved listings. Nothing to upload. Aborting.';
return $result;
}
foreach($savedProducts as $savedProduct) {
$productDataDecoded = (array)json_decode($savedProduct['data']);
$catalog = defined(HTTPS_CATALOG) ? HTTPS_CATALOG : HTTP_CATALOG;
$response_data = array("response_url" => $catalog . 'index.php?route=amazonus/product/inbound');
$category_data = array('category' => (string)$savedProduct['category']);
$fields_data = array('fields' => (array)$productDataDecoded['fields']);
$mpArray = array(); //Amazon US does not have marketplace selection
$marketplaces_data = array('marketplaces' => $mpArray);
$productData = array_merge($category_data, $fields_data, $response_data, $marketplaces_data);
$insertion_response = $this->openbay->amazonus->insertProduct($productData);
$logger->write("Uploading product with data:" . print_r($productData, true) . "
Got response:" . print_r($insertion_response, true));
if(!isset($insertion_response['status']) || $insertion_response['status'] == 'error') {
$details = isset($insertion_response['info']) ? $insertion_response['info'] : 'Unknown';
$result['error_message'] = sprintf($this->language->get('upload_failed'), $savedProduct['sku'], $details);
$result['status'] = 'error';
break;
}
$logger->write('Product upload success');
$this->model_openbay_amazonus->setProductUploaded($savedProduct['product_id'], $insertion_response['insertion_id'], $savedProduct['var']);
}
if(!isset($result['status'])) {
$result['status'] = 'ok';
$logger->write('Uploading process completed successfully.');
} else {
$logger->write('Uploading process failed with message: ' . $result['error_message']);
}
return $result;