aboutsummaryrefslogtreecommitdiffstats
path: root/public/admin/model/extension/openbay/amazonus_listing.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/admin/model/extension/openbay/amazonus_listing.php')
-rw-r--r--public/admin/model/extension/openbay/amazonus_listing.php197
1 files changed, 197 insertions, 0 deletions
diff --git a/public/admin/model/extension/openbay/amazonus_listing.php b/public/admin/model/extension/openbay/amazonus_listing.php
new file mode 100644
index 0000000..beaea33
--- /dev/null
+++ b/public/admin/model/extension/openbay/amazonus_listing.php
@@ -0,0 +1,197 @@
+<?php
+class ModelExtensionOpenBayAmazonusListing extends Model {
+ private $tabs = array();
+
+ public function search($search_string) {
+
+ $search_params = array(
+ 'search_string' => $search_string,
+ );
+
+ $results = json_decode($this->openbay->amazonus->call('productv3/search', $search_params), 1);
+
+ $products = array();
+
+ if (!empty($results)) {
+ foreach ($results['Products'] as $result) {
+ if ($result['price']['amount'] && $result['price']['currency']) {
+ $price = $result['price']['amount'] . ' ' . $result['price']['currency'];
+ } else {
+ $price = '-';
+ }
+
+ $link = 'http://www.amazon.com/gp/product/' . $result['asin'] . '/';
+
+ $products[] = array(
+ 'name' => $result['name'],
+ 'asin' => $result['asin'],
+ 'image' => $result['image'],
+ 'price' => $price,
+ 'link' => $link,
+ );
+ }
+ }
+
+ return $products;
+ }
+
+ public function getProductByAsin($asin) {
+ $data = array(
+ 'asin' => $asin,
+ );
+
+ $results = json_decode($this->openbay->amazonus->call('productv3/getProduct', $data), 1);
+
+ return $results;
+ }
+
+ public function getBestPrice($asin, $condition) {
+ $search_params = array(
+ 'asin' => $asin,
+ 'condition' => $condition,
+ );
+
+ $best_price = '';
+
+ $result = json_decode($this->openbay->amazonus->call('productv3/getPrice', $search_params), 1);
+
+ if (isset($result['Price']['Amount']) && $result['Price']['Currency'] && $this->currency->has($result['Price']['Currency'])) {
+ $best_price['amount'] = number_format($this->currency->convert($result['Price']['Amount'], $result['Price']['Currency'], $this->config->get('config_currency')), 2, '.', '');
+ $best_price['shipping'] = number_format($this->currency->convert($result['Price']['Shipping'], $result['Price']['Currency'], $this->config->get('config_currency')), 2, '.', '');
+ $best_price['currency'] = $result['Price']['Currency'];
+ }
+
+ return $best_price;
+ }
+
+ public function simpleListing($data) {
+ $request = array(
+ 'asin' => $data['asin'],
+ 'sku' => $data['sku'],
+ 'quantity' => $data['quantity'],
+ 'price' => $data['price'],
+ 'sale' => array(
+ 'price' => $data['sale_price'],
+ 'from' => $data['sale_from'],
+ 'to' => $data['sale_to'],
+ ),
+ 'condition' => $data['condition'],
+ 'condition_note' => $data['condition_note'],
+ 'start_selling' => $data['start_selling'],
+ 'restock_date' => $data['restock_date'],
+ 'response_url' => HTTPS_CATALOG . 'index.php?route=extension/openbay/amazonus/listing',
+ 'product_id' => $data['product_id'],
+ );
+
+ $response = $this->openbay->amazonus->call('productv3/simpleListing', $request);
+ $response = json_decode($response);
+ if (empty($response)) {
+ return array(
+ 'status' => 0,
+ 'message' => 'Problem connecting OpenBay: API'
+ );
+ }
+ $response = (array)$response;
+
+ if ($response['status'] === 1) {
+ $this->db->query("
+ REPLACE INTO `" . DB_PREFIX . "amazonus_product`
+ SET `product_id` = " . (int)$data['product_id'] . ",
+ `status` = 'uploaded',
+ `version` = 3,
+ `var` = ''
+ ");
+ }
+
+ return $response;
+ }
+
+ public function getBrowseNodes($request) {
+ return $this->openbay->amazonus->call('productv3/getBrowseNodes', $request);
+ }
+
+ public function deleteSearchResults($product_ids) {
+ $imploded_ids = array();
+
+ foreach ($product_ids as $product_id) {
+ $imploded_ids[] = (int)$product_id;
+ }
+
+ $imploded_ids = implode(',', $imploded_ids);
+
+ $this->db->query("
+ DELETE FROM " . DB_PREFIX . "amazonus_product_search
+ WHERE product_id IN ($imploded_ids)
+ ");
+ }
+
+ public function doBulkListing($data) {
+ $this->load->model('catalog/product');
+ $request = array();
+
+ foreach($data['products'] as $product_id => $asin) {
+ $product = $this->model_catalog_product->getProduct($product_id);
+
+ if ($product) {
+ $price = $product['price'];
+
+ if ($this->config->get('openbay_amazonus_listing_tax_added') && $this->config->get('openbay_amazonus_listing_tax_added') > 0) {
+ $price += $price * ($this->config->get('openbay_amazonus_listing_tax_added') / 100);
+ }
+
+ $request[] = array(
+ 'asin' => $asin,
+ 'sku' => $product['sku'],
+ 'quantity' => $product['quantity'],
+ 'price' => number_format($price, 2, '.', ''),
+ 'sale' => array(),
+ 'condition' => (isset($data['condition']) ? $data['condition'] : ''),
+ 'condition_note' => (isset($data['condition_note']) ? $data['condition_note'] : ''),
+ 'start_selling' => (isset($data['start_selling']) ? $data['start_selling'] : ''),
+ 'restock_date' => '',
+ 'response_url' => HTTPS_CATALOG . 'index.php?route=extension/openbay/amazonus/listing',
+ 'product_id' => $product['product_id'],
+ );
+ }
+ }
+
+ if ($request) {
+ $response = $this->openbay->amazonus->call('productv3/bulkListing', $request);
+
+ $response = json_decode($response, 1);
+
+ if ($response['status'] == 1) {
+ foreach ($request as $product) {
+ $this->db->query("
+ REPLACE INTO `" . DB_PREFIX . "amazonus_product`
+ SET `product_id` = " . (int)$product['product_id'] . ",
+ `status` = 'uploaded',
+ `var` = '',
+ `version` = 3
+ ");
+ }
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public function doBulkSearch($search_data) {
+ foreach ($search_data as $products) {
+ foreach ($products as $product) {
+ $this->db->query("
+ REPLACE INTO " . DB_PREFIX . "amazonus_product_search (product_id, `status`)
+ VALUES (" . (int)$product['product_id'] . ", 'searching')");
+ }
+ }
+
+ $request_data = array(
+ 'search' => $search_data,
+ 'response_url' => HTTPS_CATALOG . 'index.php?route=extension/openbay/amazonus/search'
+ );
+
+ $response = $this->openbay->amazonus->call('productv3/bulkSearch', $request_data);
+ }
+} \ No newline at end of file