amazon.php (49824B)
1 <?php 2 class ControllerExtensionOpenbayAmazon extends Controller { 3 public function install() { 4 $this->load->model('extension/openbay/amazon'); 5 $this->load->model('setting/setting'); 6 $this->load->model('setting/extension'); 7 $this->load->model('user/user_group'); 8 9 $this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'extension/openbay/amazon_listing'); 10 $this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'extension/openbay/amazon_listing'); 11 $this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'extension/openbay/amazon_product'); 12 $this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'extension/openbay/amazon_product'); 13 14 $this->model_extension_openbay_amazon->install(); 15 } 16 17 public function uninstall() { 18 $this->load->model('extension/openbay/amazon'); 19 $this->load->model('setting/setting'); 20 $this->load->model('setting/extension'); 21 22 $this->model_extension_openbay_amazon->uninstall(); 23 $this->model_setting_extension->uninstall('openbay', $this->request->get['extension']); 24 $this->model_setting_setting->deleteSetting($this->request->get['extension']); 25 } 26 27 public function index() { 28 $this->load->model('setting/setting'); 29 $this->load->model('localisation/order_status'); 30 $this->load->model('extension/openbay/amazon'); 31 32 $data = $this->load->language('extension/openbay/amazon'); 33 34 $this->document->setTitle($this->language->get('text_dashboard')); 35 $this->document->addScript('view/javascript/openbay/js/faq.js'); 36 37 $data['breadcrumbs'] = array(); 38 $data['breadcrumbs'][] = array( 39 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 40 'text' => $this->language->get('text_home'), 41 ); 42 $data['breadcrumbs'][] = array( 43 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 44 'text' => $this->language->get('text_openbay'), 45 ); 46 $data['breadcrumbs'][] = array( 47 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 48 'text' => $this->language->get('text_dashboard'), 49 ); 50 51 $data['success'] = ''; 52 if (isset($this->session->data['success'])) { 53 $data['success'] = $this->session->data['success']; 54 unset($this->session->data['success']); 55 } else { 56 $data['success'] = ''; 57 } 58 59 $data['validation'] = $this->openbay->amazon->validate(); 60 $data['link_settings'] = $this->url->link('extension/openbay/amazon/settings', 'user_token=' . $this->session->data['user_token'], true); 61 $data['link_subscription'] = $this->url->link('extension/openbay/amazon/subscription', 'user_token=' . $this->session->data['user_token'], true); 62 $data['link_item_link'] = $this->url->link('extension/openbay/amazon/itemLinks', 'user_token=' . $this->session->data['user_token'], true); 63 $data['link_stock_updates'] = $this->url->link('extension/openbay/amazon/stockUpdates', 'user_token=' . $this->session->data['user_token'], true); 64 $data['link_saved_listings'] = $this->url->link('extension/openbay/amazon/savedListings', 'user_token=' . $this->session->data['user_token'], true); 65 $data['link_bulk_listing'] = $this->url->link('extension/openbay/amazon/bulkListProducts', 'user_token=' . $this->session->data['user_token'], true); 66 $data['link_bulk_linking'] = $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'], true); 67 $data['link_signup'] = 'https://account.openbaypro.com/amazon/apiRegister/?endpoint=2&utm_source=opencart_install&utm_medium=dashboard&utm_campaign=amazon'; 68 69 $data['header'] = $this->load->controller('common/header'); 70 $data['column_left'] = $this->load->controller('common/column_left'); 71 $data['footer'] = $this->load->controller('common/footer'); 72 73 $this->response->setOutput($this->load->view('extension/openbay/amazon', $data)); 74 } 75 76 public function stockUpdates() { 77 $data = $this->load->language('extension/openbay/amazon_stockupdates'); 78 79 $this->document->setTitle($this->language->get('heading_title')); 80 $this->document->addScript('view/javascript/openbay/js/faq.js'); 81 82 $data['breadcrumbs'] = array(); 83 84 $data['breadcrumbs'][] = array( 85 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 86 'text' => $this->language->get('text_home'), 87 ); 88 89 $data['breadcrumbs'][] = array( 90 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 91 'text' => $this->language->get('text_openbay'), 92 ); 93 94 $data['breadcrumbs'][] = array( 95 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 96 'text' => $this->language->get('text_amazon'), 97 ); 98 99 $data['breadcrumbs'][] = array( 100 'href' => $this->url->link('extension/openbay/amazon/stockUpdates', 'user_token=' . $this->session->data['user_token'], true), 101 'text' => $this->language->get('heading_title'), 102 ); 103 104 $data['link_overview'] = $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true); 105 106 $request_arg = array(); 107 108 if (isset($this->request->get['filter_date_start'])) { 109 $request_arg['date_start'] = date("Y-m-d", strtotime($this->request->get['filter_date_start'])); 110 } else { 111 $request_arg['date_start'] = date("Y-m-d"); 112 } 113 114 if (isset($this->request->get['filter_date_end'])) { 115 $request_arg['date_end'] = date("Y-m-d", strtotime($this->request->get['filter_date_end'])); 116 } else { 117 $request_arg['date_end'] = date("Y-m-d"); 118 } 119 120 $data['date_start'] = $request_arg['date_start']; 121 $data['date_end'] = $request_arg['date_end']; 122 123 $xml = $this->openbay->amazon->getStockUpdatesStatus($request_arg); 124 $xml_object = simplexml_load_string($xml); 125 126 $data['table_data'] = array(); 127 128 if ($xml_object !== false) { 129 $table_data = array(); 130 131 foreach($xml_object->update as $update_node) { 132 $row = array( 133 'date_requested' => (string)$update_node->date_requested, 134 'date_updated' => (string)$update_node->date_updated, 135 'status' => (string)$update_node->status, 136 ); 137 138 $data_items = array(); 139 140 foreach($update_node->data->product as $product_node) { 141 $data_items[] = array( 142 'sku' => (string)$product_node->sku, 143 'stock' => (int)$product_node->stock 144 ); 145 } 146 147 $row['data'] = $data_items; 148 $table_data[(int)$update_node->ref] = $row; 149 } 150 151 $data['table_data'] = $table_data; 152 } else { 153 $data['error'] = $data['error_api_connection']; 154 } 155 156 $data['user_token'] = $this->session->data['user_token']; 157 158 $data['header'] = $this->load->controller('common/header'); 159 $data['column_left'] = $this->load->controller('common/column_left'); 160 $data['footer'] = $this->load->controller('common/footer'); 161 162 $this->response->setOutput($this->load->view('extension/openbay/amazon_stock_updates', $data)); 163 164 } 165 166 public function subscription() { 167 $data = $this->load->language('extension/openbay/amazon_subscription'); 168 169 $this->document->setTitle($this->language->get('heading_title')); 170 $this->document->addScript('view/javascript/openbay/js/faq.js'); 171 172 $data['breadcrumbs'] = array(); 173 $data['breadcrumbs'][] = array( 174 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 175 'text' => $this->language->get('text_home'), 176 ); 177 $data['breadcrumbs'][] = array( 178 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 179 'text' => $this->language->get('text_openbay'), 180 ); 181 $data['breadcrumbs'][] = array( 182 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 183 'text' => $this->language->get('text_amazon'), 184 ); 185 $data['breadcrumbs'][] = array( 186 'href' => $this->url->link('extension/openbay/amazon/subscription', 'user_token=' . $this->session->data['user_token'], true), 187 'text' => $this->language->get('heading_title'), 188 ); 189 190 $data['link_overview'] = $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true); 191 192 $response = simplexml_load_string($this->openbay->amazon->call('plans/getPlans')); 193 194 $data['plans'] = array(); 195 196 if ($response) { 197 foreach ($response->Plan as $plan) { 198 $data['plans'][] = array( 199 'title' => (string)$plan->Title, 200 'description' => (string)$plan->Description, 201 'order_frequency' => (string)$plan->OrderFrequency, 202 'product_listings' => (string)$plan->ProductListings, 203 'bulk_listing' => (string)$plan->BulkListing, 204 'price' => (string)$plan->Price, 205 ); 206 } 207 } 208 209 $response = simplexml_load_string($this->openbay->amazon->call('plans/getUsersPlans')); 210 211 $plan = false; 212 213 if ($response) { 214 $plan = array( 215 'merchant_id' => (string)$response->MerchantId, 216 'user_status' => (string)$response->UserStatus, 217 'title' => (string)$response->Title, 218 'description' => (string)$response->Description, 219 'price' => (string)$response->Price, 220 'order_frequency' => (string)$response->OrderFrequency, 221 'product_listings' => (string)$response->ProductListings, 222 'listings_remain' => (string)$response->ListingsRemain, 223 'listings_reserved' => (string)$response->ListingsReserved, 224 'bulk_listing' => (string)$response->BulkListing, 225 ); 226 } 227 228 $data['user_plan'] = $plan; 229 $data['link_change_plan'] = $this->openbay->amazon->getServer() . 'account/changePlan/?token=' . $this->config->get('openbay_amazon_token'); 230 $data['link_change_seller'] = $this->openbay->amazon->getServer() . 'account/changeSellerId/?token=' . $this->config->get('openbay_amazon_token'); 231 $data['link_register'] = 'https://account.openbaypro.com/amazon/apiRegister/?endpoint=2&utm_source=opencart_install&utm_medium=subscription&utm_campaign=amazon'; 232 233 $data['header'] = $this->load->controller('common/header'); 234 $data['column_left'] = $this->load->controller('common/column_left'); 235 $data['footer'] = $this->load->controller('common/footer'); 236 237 $this->response->setOutput($this->load->view('extension/openbay/amazon_subscription', $data)); 238 } 239 240 public function settings() { 241 $data = $this->load->language('extension/openbay/amazon_settings'); 242 243 $this->document->setTitle($this->language->get('heading_title')); 244 $this->document->addScript('view/javascript/openbay/js/faq.js'); 245 246 $this->load->model('setting/setting'); 247 $this->load->model('localisation/order_status'); 248 $this->load->model('extension/openbay/amazon'); 249 250 $this->load->model('customer/customer_group'); 251 252 $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups(); 253 254 $settings = $this->model_setting_setting->getSetting('openbay_amazon'); 255 256 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 257 if (!isset($this->request->post['openbay_amazon_orders_marketplace_ids'])) { 258 $this->request->post['openbay_amazon_orders_marketplace_ids'] = array(); 259 } 260 261 $settings = array_merge($settings, $this->request->post); 262 $this->model_setting_setting->editSetting('openbay_amazon', $settings); 263 264 $this->config->set('openbay_amazon_token', $this->request->post['openbay_amazon_token']); 265 $this->config->set('openbay_amazon_encryption_key', $this->request->post['openbay_amazon_encryption_key']); 266 $this->config->set('openbay_amazon_encryption_iv', $this->request->post['openbay_amazon_encryption_iv']); 267 268 $this->openbay->amazon->setEncryptionKey($this->request->post['openbay_amazon_encryption_key']); 269 $this->openbay->amazon->setEncryptionIv($this->request->post['openbay_amazon_encryption_iv']); 270 271 if (!empty($this->request->post['openbay_amazon_token']) && !empty($this->request->post['openbay_amazon_encryption_key']) && !empty($this->request->post['openbay_amazon_encryption_iv'])) { 272 $this->model_extension_openbay_amazon->verifyConfig($settings); 273 } 274 275 $this->session->data['success'] = $this->language->get('text_settings_updated'); 276 $this->response->redirect($this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true)); 277 return; 278 } 279 280 $data['cancel'] = $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true); 281 282 $data['breadcrumbs'] = array(); 283 $data['breadcrumbs'][] = array( 284 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 285 'text' => $this->language->get('text_home'), 286 ); 287 $data['breadcrumbs'][] = array( 288 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 289 'text' => $this->language->get('text_openbay'), 290 ); 291 $data['breadcrumbs'][] = array( 292 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 293 'text' => $this->language->get('text_amazon'), 294 ); 295 296 $data['breadcrumbs'][] = array( 297 'href' => $this->url->link('extension/openbay/amazon/settings', 'user_token=' . $this->session->data['user_token'], true), 298 'text' => $this->language->get('heading_title'), 299 ); 300 301 $data['marketplace_ids'] = (isset($settings['openbay_amazon_orders_marketplace_ids'])) ? (array)$settings['openbay_amazon_orders_marketplace_ids'] : array(); 302 $data['default_listing_marketplace_ids'] = (isset($settings['openbay_amazon_default_listing_marketplace_ids'])) ? (array)$settings['openbay_amazon_default_listing_marketplace_ids'] : array(); 303 304 $data['marketplaces'] = array( 305 array('name' => $this->language->get('text_de'), 'id' => 'A1PA6795UKMFR9', 'code' => 'de'), 306 array('name' => $this->language->get('text_fr'), 'id' => 'A13V1IB3VIYZZH', 'code' => 'fr'), 307 array('name' => $this->language->get('text_it'), 'id' => 'APJ6JRA9NG5V4', 'code' => 'it'), 308 array('name' => $this->language->get('text_es'), 'id' => 'A1RKKUPIHCS9HS', 'code' => 'es'), 309 array('name' => $this->language->get('text_uk'), 'id' => 'A1F83G8C2ARO7P', 'code' => 'uk'), 310 ); 311 312 $data['conditions'] = array( 313 'New' => $this->language->get('text_new'), 314 'UsedLikeNew' => $this->language->get('text_used_like_new'), 315 'UsedVeryGood' => $this->language->get('text_used_very_good'), 316 'UsedGood' => $this->language->get('text_used_good'), 317 'UsedAcceptable' => $this->language->get('text_used_acceptable'), 318 'CollectibleLikeNew' => $this->language->get('text_collectible_like_new'), 319 'CollectibleVeryGood' => $this->language->get('text_collectible_very_good'), 320 'CollectibleGood' => $this->language->get('text_collectible_good'), 321 'CollectibleAcceptable' => $this->language->get('text_collectible_acceptable'), 322 'Refurbished' => $this->language->get('text_refurbished'), 323 ); 324 325 $data['openbay_amazon_status'] = isset($settings['openbay_amazon_status']) ? $settings['openbay_amazon_status'] : ''; 326 $data['openbay_amazon_token'] = isset($settings['openbay_amazon_token']) ? $settings['openbay_amazon_token'] : ''; 327 $data['openbay_amazon_encryption_key'] = isset($settings['openbay_amazon_encryption_key']) ? $settings['openbay_amazon_encryption_key'] : ''; 328 $data['openbay_amazon_encryption_iv'] = isset($settings['openbay_amazon_encryption_iv']) ? $settings['openbay_amazon_encryption_iv'] : ''; 329 $data['openbay_amazon_listing_tax_added'] = isset($settings['openbay_amazon_listing_tax_added']) ? $settings['openbay_amazon_listing_tax_added'] : '0.00'; 330 $data['openbay_amazon_order_tax'] = isset($settings['openbay_amazon_order_tax']) ? $settings['openbay_amazon_order_tax'] : '00'; 331 $data['openbay_amazon_default_listing_marketplace'] = isset($settings['openbay_amazon_default_listing_marketplace']) ? $settings['openbay_amazon_default_listing_marketplace'] : ''; 332 $data['openbay_amazon_listing_default_condition'] = isset($settings['openbay_amazon_listing_default_condition']) ? $settings['openbay_amazon_listing_default_condition'] : ''; 333 334 $data['carriers'] = $this->openbay->amazon->getCarriers(); 335 $data['openbay_amazon_default_carrier'] = isset($settings['openbay_amazon_default_carrier']) ? $settings['openbay_amazon_default_carrier'] : ''; 336 337 $unshipped_status_id = isset($settings['openbay_amazon_order_status_unshipped']) ? $settings['openbay_amazon_order_status_unshipped'] : ''; 338 $partially_shipped_status_id = isset($settings['openbay_amazon_order_status_partially_shipped']) ? $settings['openbay_amazon_order_status_partially_shipped'] : ''; 339 $shipped_status_id = isset($settings['openbay_amazon_order_status_shipped']) ? $settings['openbay_amazon_order_status_shipped'] : ''; 340 $canceled_status_id = isset($settings['openbay_amazon_order_status_canceled']) ? $settings['openbay_amazon_order_status_canceled'] : ''; 341 342 $amazon_order_statuses = array( 343 'unshipped' => array('name' => $this->language->get('text_unshipped'), 'order_status_id' => $unshipped_status_id), 344 'partially_shipped' => array('name' => $this->language->get('text_partially_shipped'), 'order_status_id' => $partially_shipped_status_id), 345 'shipped' => array('name' => $this->language->get('text_shipped'), 'order_status_id' => $shipped_status_id), 346 'canceled' => array('name' => $this->language->get('text_canceled'), 'order_status_id' => $canceled_status_id), 347 ); 348 349 $data['openbay_amazon_order_customer_group'] = isset($settings['openbay_amazon_order_customer_group']) ? $settings['openbay_amazon_order_customer_group'] : ''; 350 351 $data['amazon_order_statuses'] = $amazon_order_statuses; 352 $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); 353 354 $data['subscription_url'] = $this->url->link('extension/openbay/amazon/subscription', 'user_token=' . $this->session->data['user_token'], true); 355 $data['itemLinks_url'] = $this->url->link('extension/openbay/amazon_product/linkItems', 'user_token=' . $this->session->data['user_token'], true); 356 $data['openbay_amazon_notify_admin'] = isset($settings['openbay_amazon_notify_admin']) ? $settings['openbay_amazon_notify_admin'] : ''; 357 $data['link_signup'] = 'https://account.openbaypro.com/amazon/apiRegister/?endpoint=2&utm_source=opencart_install&utm_medium=settings&utm_campaign=amazon'; 358 359 $api_checked = false; 360 $api_status = false; 361 $api_auth = false; 362 363 if (!empty($data['openbay_amazon_token']) && !empty($data['openbay_amazon_encryption_key']) && !empty($data['openbay_amazon_encryption_iv'])) { 364 $response = $this->openbay->amazon->call('ping/info', array('say hello')); 365 366 if (!empty($response)) { 367 $ping_info = simplexml_load_string($response); 368 } 369 370 $api_checked = true; 371 372 if ($ping_info) { 373 $api_status = ((string)$ping_info->Api_status == 'ok') ? true : false; 374 $api_auth = ((string)$ping_info->Auth == 'true') ? true : false; 375 } 376 } 377 378 $data['api_status'] = $api_status; 379 $data['api_auth'] = $api_auth; 380 $data['api_checked'] = $api_checked; 381 382 $data['header'] = $this->load->controller('common/header'); 383 $data['column_left'] = $this->load->controller('common/column_left'); 384 $data['footer'] = $this->load->controller('common/footer'); 385 386 $this->response->setOutput($this->load->view('extension/openbay/amazon_settings', $data)); 387 } 388 389 public function itemLinks() { 390 $data = $this->load->language('extension/openbay/amazon_links'); 391 392 $this->document->setTitle($this->language->get('heading_title')); 393 $this->document->addScript('view/javascript/openbay/js/faq.js'); 394 395 $data['breadcrumbs'] = array(); 396 397 $data['breadcrumbs'][] = array( 398 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 399 'text' => $this->language->get('text_home'), 400 ); 401 $data['breadcrumbs'][] = array( 402 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 403 'text' => $this->language->get('text_openbay'), 404 ); 405 $data['breadcrumbs'][] = array( 406 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 407 'text' => $this->language->get('text_amazon'), 408 ); 409 410 $data['breadcrumbs'][] = array( 411 'href' => $this->url->link('extension/openbay/amazon/itemLinks', 'user_token=' . $this->session->data['user_token'], true), 412 'text' => $this->language->get('heading_title'), 413 ); 414 415 $data['user_token'] = $this->session->data['user_token']; 416 417 $data['cancel'] = $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true); 418 419 $data['link_add_item'] = $this->url->link('extension/openbay/amazon/addLink', 'user_token=' . $this->session->data['user_token'], true); 420 $data['link_remove_item'] = $this->url->link('extension/openbay/amazon/deleteLink', 'user_token=' . $this->session->data['user_token'], true); 421 $data['link_get_items'] = $this->url->link('extension/openbay/amazon/getLinks', 'user_token=' . $this->session->data['user_token'], true); 422 $data['link_get_unlinked_items'] = $this->url->link('extension/openbay/amazon/getUnlinked', 'user_token=' . $this->session->data['user_token'], true); 423 $data['link_get_variants'] = $this->url->link('extension/openbay/amazon/getVariants', 'user_token=' . $this->session->data['user_token'], true); 424 425 $data['header'] = $this->load->controller('common/header'); 426 $data['column_left'] = $this->load->controller('common/column_left'); 427 $data['footer'] = $this->load->controller('common/footer'); 428 429 $this->response->setOutput($this->load->view('extension/openbay/amazon_item_links', $data)); 430 } 431 432 public function savedListings() { 433 $data = $this->load->language('extension/openbay/amazon_listingsaved'); 434 435 $this->document->setTitle($this->language->get('heading_title')); 436 $this->document->addScript('view/javascript/openbay/js/faq.js'); 437 438 $data['link_overview'] = $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true); 439 440 $data['breadcrumbs'] = array(); 441 $data['breadcrumbs'][] = array( 442 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 443 'text' => $this->language->get('text_home'), 444 ); 445 $data['breadcrumbs'][] = array( 446 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 447 'text' => $this->language->get('text_openbay'), 448 ); 449 $data['breadcrumbs'][] = array( 450 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 451 'text' => $this->language->get('text_amazon'), 452 ); 453 454 $data['breadcrumbs'][] = array( 455 'href' => $this->url->link('extension/openbay/amazon/savedListings', 'user_token=' . $this->session->data['user_token'], true), 456 'text' => $this->language->get('heading_title'), 457 ); 458 459 $data['user_token'] = $this->session->data['user_token']; 460 $this->load->model('extension/openbay/amazon'); 461 $saved_products = $this->model_extension_openbay_amazon->getSavedProducts(); 462 463 $data['saved_products'] = array(); 464 465 foreach($saved_products as $saved_product) { 466 $data['saved_products'][] = array( 467 'product_id' => $saved_product['product_id'], 468 'product_name' => $saved_product['product_name'], 469 'product_model' => $saved_product['product_model'], 470 'product_sku' => $saved_product['product_sku'], 471 'amazon_sku' => $saved_product['amazon_sku'], 472 'var' => $saved_product['var'], 473 'edit_link' => $this->url->link('extension/openbay/amazon_product', 'user_token=' . $this->session->data['user_token'] . '&product_id=' . $saved_product['product_id'] . '&sku=' . $saved_product['var'], true), 474 ); 475 } 476 477 $data['delete_saved'] = $this->url->link('extension/openbay/amazon_product/deleteSaved', 'user_token=' . $this->session->data['user_token'], true); 478 $data['upload_saved'] = $this->url->link('extension/openbay/amazon_product/uploadSaved', 'user_token=' . $this->session->data['user_token'], true); 479 480 $data['header'] = $this->load->controller('common/header'); 481 $data['column_left'] = $this->load->controller('common/column_left'); 482 $data['footer'] = $this->load->controller('common/footer'); 483 484 $this->response->setOutput($this->load->view('extension/openbay/amazon_saved_listings', $data)); 485 } 486 487 protected function validate() { 488 if (!$this->user->hasPermission('modify', 'extension/openbay/amazon')) { 489 $this->error = $this->language->get('error_permission'); 490 } 491 492 if (empty($this->error)) { 493 return true; 494 } 495 496 return false; 497 } 498 499 public function getVariants() { 500 $variants = array(); 501 502 if ($this->openbay->addonLoad('openstock') && isset($this->request->get['product_id'])) { 503 $this->load->model('extension/module/openstock'); 504 $this->load->model('tool/image'); 505 $variants = $this->model_setting_module_openstock->getVariants($this->request->get['product_id']); 506 } 507 508 if (empty($variants)) { 509 $variants = false; 510 } else { 511 foreach ($variants as $key => $variant) { 512 if ($variant['sku'] == '') { 513 unset($variants[$key]); 514 } 515 } 516 } 517 518 $this->response->addHeader('Content-Type: application/json'); 519 $this->response->setOutput(json_encode($variants)); 520 } 521 522 public function addLink() { 523 if (isset($this->request->get['product_id']) && isset($this->request->get['amazon_sku'])) { 524 $this->load->model('extension/openbay/amazon'); 525 526 $amazon_sku = $this->request->get['amazon_sku']; 527 $product_id = $this->request->get['product_id']; 528 $var = isset($this->request->get['var']) ? $this->request->get['var'] : ''; 529 530 $this->model_extension_openbay_amazon->linkProduct($amazon_sku, $product_id, $var); 531 532 $logger = new Log('amazon_stocks.log'); 533 $logger->write('addItemLink() called for product id: ' . $product_id . ', amazon sku: ' . $amazon_sku . ', var: ' . $var); 534 535 if ($var != '' && $this->openbay->addonLoad('openstock')) { 536 $logger->write('Using openStock'); 537 $this->load->model('tool/image'); 538 $this->load->model('extension/module/openstock'); 539 $option_stocks = $this->model_setting_module_openstock->getVariants($product_id); 540 541 $quantity_data = array(); 542 543 foreach($option_stocks as $option_stock) { 544 if (isset($option_stock['sku']) && $option_stock['sku'] == $var) { 545 $quantity_data[$amazon_sku] = $option_stock['stock']; 546 break; 547 } 548 } 549 550 if (!empty($quantity_data)) { 551 $logger->write('Updating quantities with data: ' . print_r($quantity_data, true)); 552 $this->openbay->amazon->updateQuantities($quantity_data); 553 } else { 554 $logger->write('No quantity data will be posted . '); 555 } 556 } else { 557 $this->openbay->amazon->putStockUpdateBulk(array($product_id)); 558 } 559 560 $json = json_encode('ok'); 561 } else { 562 $json = json_encode('error'); 563 } 564 565 $this->response->addHeader('Content-Type: application/json'); 566 $this->response->setOutput($json); 567 } 568 569 public function deleteLink() { 570 if (isset($this->request->get['amazon_sku'])) { 571 $this->load->model('extension/openbay/amazon'); 572 573 $amazon_sku = $this->request->get['amazon_sku']; 574 575 $this->model_extension_openbay_amazon->removeProductLink($amazon_sku); 576 577 $json = json_encode('ok'); 578 } else { 579 $json = json_encode('error'); 580 } 581 582 $this->response->addHeader('Content-Type: application/json'); 583 $this->response->setOutput($json); 584 } 585 586 public function getLinks() { 587 $this->load->model('extension/openbay/amazon'); 588 $this->load->model('catalog/product'); 589 590 $json = json_encode($this->model_extension_openbay_amazon->getProductLinks()); 591 592 $this->response->addHeader('Content-Type: application/json'); 593 $this->response->setOutput($json); 594 } 595 596 public function getUnlinked() { 597 $this->load->model('extension/openbay/amazon'); 598 $this->load->model('catalog/product'); 599 600 $json = json_encode($this->model_extension_openbay_amazon->getUnlinkedProducts()); 601 602 $this->response->addHeader('Content-Type: application/json'); 603 $this->response->setOutput($json); 604 } 605 606 public function doBulkList() { 607 $this->load->language('amazon/listing'); 608 609 if (empty($this->request->post['products'])) { 610 $json = array( 611 'message' => $this->language->get('error_not_searched'), 612 ); 613 } else { 614 $this->load->model('extension/openbay/amazon_listing'); 615 616 $delete_search_results = array(); 617 618 $bulk_list_products = array(); 619 620 foreach ($this->request->post['products'] as $product_id => $asin) { 621 $delete_search_results[] = $product_id; 622 623 if (!empty($asin) && in_array($product_id, $this->request->post['product_ids'])) { 624 $bulk_list_products[$product_id] = $asin; 625 } 626 } 627 628 $status = false; 629 630 if ($bulk_list_products) { 631 $data = array(); 632 633 $data['products'] = $bulk_list_products; 634 $data['marketplace'] = $this->request->post['marketplace']; 635 636 if (!empty($this->request->post['start_selling'])) { 637 $data['start_selling'] = $this->request->post['start_selling']; 638 } 639 640 if (!empty($this->request->post['condition']) && !empty($this->request->post['condition_note'])) { 641 $data['condition'] = $this->request->post['condition']; 642 $data['condition_note'] = $this->request->post['condition_note']; 643 } 644 645 $status = $this->model_extension_openbay_amazon_listing->doBulkListing($data); 646 647 if ($status) { 648 $message = $this->language->get('text_products_sent'); 649 650 if ($delete_search_results) { 651 $this->model_extension_openbay_amazon_listing->deleteSearchResults($this->request->post['marketplace'], $delete_search_results); 652 } 653 } else { 654 $message = $this->language->get('error_sending_products'); 655 } 656 } else { 657 $message = $this->language->get('error_no_products_selected'); 658 } 659 660 $json = array( 661 'status' => $status, 662 'message' => $message, 663 ); 664 } 665 666 $this->response->addHeader('Content-Type: application/json'); 667 $this->response->setOutput(json_encode($json)); 668 } 669 670 public function doBulkSearch() { 671 $this->load->model('catalog/product'); 672 $this->load->model('extension/openbay/amazon_listing'); 673 $this->load->language('extension/openbay/amazon_bulk_listing'); 674 675 $json = array(); 676 $search_data = array(); 677 678 if (!empty($this->request->post['product_ids'])) { 679 foreach ($this->request->post['product_ids'] as $product_id) { 680 $product = $this->model_catalog_product->getProduct($product_id); 681 682 if (empty($product['sku'])) { 683 $json[$product_id] = array( 684 'error' => $this->language->get('error_product_sku') 685 ); 686 } 687 688 $key = ''; 689 690 $id_types = array('isbn', 'upc', 'ean', 'jan', 'sku'); 691 692 foreach ($id_types as $id_type) { 693 if (!empty($product[$id_type])) { 694 $key = $id_type; 695 break; 696 } 697 } 698 699 if (!$key) { 700 $json[$product_id] = array( 701 'error' => $this->language->get('error_searchable_fields') 702 ); 703 } 704 705 if (!isset($json[$product_id])) { 706 $search_data[$key][] = array( 707 'product_id' => $product['product_id'], 708 'value' => trim($product[$id_type]), 709 'marketplace' => $this->request->post['marketplace'], 710 ); 711 712 $json[$product_id] = array( 713 'success' => $this->language->get('text_searching') 714 ); 715 } 716 } 717 } 718 719 if ($search_data) { 720 $this->model_extension_openbay_amazon_listing->doBulkSearch($search_data); 721 } 722 723 $this->response->addHeader('Content-Type: application/json'); 724 $this->response->setOutput(json_encode($json)); 725 } 726 727 public function bulkListProducts() { 728 $this->load->model('extension/openbay/amazon'); 729 $this->load->model('catalog/product'); 730 $this->load->model('tool/image'); 731 732 $data = $this->load->language('extension/openbay/amazon_bulk_listing'); 733 734 $this->document->setTitle($this->language->get('heading_title')); 735 $this->document->addScript('view/javascript/openbay/js/faq.js'); 736 737 $data['breadcrumbs'] = array(); 738 $data['breadcrumbs'][] = array( 739 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 740 'text' => $this->language->get('text_home'), 741 ); 742 $data['breadcrumbs'][] = array( 743 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 744 'text' => $this->language->get('text_openbay'), 745 ); 746 $data['breadcrumbs'][] = array( 747 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 748 'text' => $this->language->get('text_amazon'), 749 ); 750 751 $data['breadcrumbs'][] = array( 752 'href' => $this->url->link('extension/openbay/amazon/bulkListProducts', 'user_token=' . $this->session->data['user_token'], true), 753 'text' => $this->language->get('heading_title'), 754 ); 755 756 $ping_info = simplexml_load_string($this->openbay->amazon->call('ping/info')); 757 758 $bulk_listing_status = false; 759 if ($ping_info) { 760 $bulk_listing_status = ((string)$ping_info->BulkListing == 'true') ? true : false; 761 } 762 763 if (!empty($this->request->get['filter_marketplace'])) { 764 $filter_marketplace = $this->request->get['filter_marketplace']; 765 } else { 766 $filter_marketplace = $this->config->get('openbay_amazon_default_listing_marketplace'); 767 } 768 769 $data['filter_marketplace'] = $filter_marketplace; 770 771 $data['bulk_listing_status'] = $bulk_listing_status; 772 773 $data['link_overview'] = $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true); 774 $data['user_token'] = $this->session->data['user_token']; 775 776 if ($bulk_listing_status) { 777 $data['link_search'] = $this->url->link('extension/openbay/amazon/doBulkSearch', 'user_token=' . $this->session->data['user_token'], true); 778 779 $data['default_condition'] = $this->config->get('openbay_amazon_listing_default_condition'); 780 $data['conditions'] = array( 781 'New' => $this->language->get('text_new'), 782 'UsedLikeNew' => $this->language->get('text_used_like_new'), 783 'UsedVeryGood' => $this->language->get('text_used_very_good'), 784 'UsedGood' => $this->language->get('text_used_good'), 785 'UsedAcceptable' => $this->language->get('text_used_acceptable'), 786 'CollectibleLikeNew' => $this->language->get('text_collectible_like_new'), 787 'CollectibleVeryGood' => $this->language->get('text_collectible_very_good'), 788 'CollectibleGood' => $this->language->get('text_collectible_good'), 789 'CollectibleAcceptable' => $this->language->get('text_collectible_acceptable'), 790 'Refurbished' => $this->language->get('text_refurbished'), 791 ); 792 793 $data['marketplaces'] = array( 794 array('name' => $this->language->get('text_de'), 'code' => 'de'), 795 array('name' => $this->language->get('text_fr'), 'code' => 'fr'), 796 array('name' => $this->language->get('text_it'), 'code' => 'it'), 797 array('name' => $this->language->get('text_es'), 'code' => 'es'), 798 array('name' => $this->language->get('text_uk'), 'code' => 'uk'), 799 ); 800 801 if (!empty($this->request->get['page'])) { 802 $page = $this->request->get['page']; 803 } else { 804 $page = 1; 805 } 806 807 $filter = array(); 808 809 $filter['filter_marketplace'] = $filter_marketplace; 810 $filter['start'] = ($page - 1) * $this->config->get('config_limit_admin'); 811 $filter['limit'] = $this->config->get('config_limit_admin'); 812 813 $results = $this->model_extension_openbay_amazon->getProductSearch($filter); 814 $product_total = $this->model_extension_openbay_amazon->getProductSearchTotal($filter); 815 816 $data['products'] = array(); 817 818 foreach ($results as $result) { 819 $product = $this->model_catalog_product->getProduct($result['product_id']); 820 821 if ($product['image'] && file_exists(DIR_IMAGE . $product['image'])) { 822 $image = $this->model_tool_image->resize($product['image'], 40, 40); 823 } else { 824 $image = $this->model_tool_image->resize('no_image.png', 40, 40); 825 } 826 827 if ($result['status'] == 'searching') { 828 $search_status = $this->language->get('text_searching'); 829 } else if ($result['status'] == 'finished') { 830 $search_status = $this->language->get('text_finished'); 831 } else { 832 $search_status = '-'; 833 } 834 835 $href = $this->url->link('catalog/product/edit', 'user_token=' . $this->session->data['user_token'] . '&product_id=' . $product['product_id'], true); 836 837 $search_results = array(); 838 839 if ($result['data']) { 840 foreach ($result['data'] as $search_result) { 841 $link = $this->model_extension_openbay_amazon->getAsinLink($search_result['asin'], $result['marketplace']); 842 843 $search_results[] = array( 844 'title' => $search_result['title'], 845 'asin' => $search_result['asin'], 846 'href' => $link, 847 ); 848 } 849 } 850 851 $data['products'][] = array( 852 'product_id' => $product['product_id'], 853 'href' => $href, 854 'name' => $product['name'], 855 'model' => $product['model'], 856 'image' => $image, 857 'matches' => $result['matches'], 858 'search_status' => $search_status, 859 'search_results' => $search_results, 860 ); 861 } 862 863 $pagination = new Pagination(); 864 $pagination->total = $product_total; 865 $pagination->page = $page; 866 $pagination->limit = $this->config->get('config_limit_admin'); 867 $pagination->text = $this->language->get('text_pagination'); 868 $pagination->url = $this->url->link('extension/openbay/amazon/bulkListProducts', 'user_token=' . $this->session->data['user_token'] . '&page={page}&filter_marketplace=' . $filter_marketplace, true); 869 870 $data['pagination'] = $pagination->render(); 871 $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($product_total - $this->config->get('config_limit_admin'))) ? $product_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $product_total, ceil($product_total / $this->config->get('config_limit_admin'))); 872 } 873 874 $data['header'] = $this->load->controller('common/header'); 875 $data['column_left'] = $this->load->controller('common/column_left'); 876 $data['footer'] = $this->load->controller('common/footer'); 877 878 $this->response->setOutput($this->load->view('extension/openbay/amazon_bulk_listing', $data)); 879 } 880 881 public function bulkLinking() { 882 $this->load->model('extension/openbay/amazon'); 883 884 $data = $this->load->language('extension/openbay/amazon_bulk_linking'); 885 886 $this->document->setTitle($this->language->get('heading_title')); 887 $this->document->addScript('view/javascript/openbay/js/faq.js'); 888 889 $data['breadcrumbs'] = array(); 890 $data['breadcrumbs'][] = array( 891 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 892 'text' => $this->language->get('text_home'), 893 ); 894 $data['breadcrumbs'][] = array( 895 'href' => $this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true), 896 'text' => $this->language->get('text_openbay'), 897 ); 898 $data['breadcrumbs'][] = array( 899 'href' => $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true), 900 'text' => $this->language->get('text_amazon'), 901 ); 902 903 $data['breadcrumbs'][] = array( 904 'href' => $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'], true), 905 'text' => $this->language->get('heading_title'), 906 ); 907 908 $ping_info = simplexml_load_string($this->openbay->amazon->call('ping/info')); 909 910 $bulk_linking_status = false; 911 if ($ping_info) { 912 $bulk_linking_status = ((string)$ping_info->BulkLinking == 'true') ? true : false; 913 } 914 915 $data['bulk_linking_status'] = $bulk_linking_status; 916 917 if (!isset($this->request->get['marketplace'])) { 918 $marketplace_code = 'uk'; 919 } else { 920 $marketplace_code = $this->request->get['marketplace']; 921 } 922 923 $total_linked = $this->model_extension_openbay_amazon->getTotalUnlinkedItemsFromReport($marketplace_code); 924 925 if (isset($this->request->get['linked_item_page'])) { 926 $linked_item_page = (int)$this->request->get['linked_item_page']; 927 } else { 928 $linked_item_page = 1; 929 } 930 931 if (isset($this->request->get['linked_item_limit'])){ 932 $linked_item_limit = (int)$this->request->get['linked_item_limit']; 933 } else { 934 $linked_item_limit = 25; 935 } 936 937 $data['cancel_report_link'] = ''; 938 939 if (isset($this->request->get['cancel_report']) && $this->request->get['cancel_report'] == 1) { 940 $this->load->model('setting/setting'); 941 942 $settings = $this->model_setting_setting->getSetting('openbay_amazon'); 943 $settings['openbay_amazon_processing_listing_reports'] = ''; 944 945 $this->model_setting_setting->editSetting('openbay_amazon', $settings); 946 947 $this->response->redirect($this->url->link('extension/openbay/amazon/bulklinking', 'marketplace=' . $marketplace_code . '&token=' . $this->session->data['token'], true)); 948 } else { 949 $data['cancel_report_link'] = $this->url->link('extension/openbay/amazon/bulklinking', 'cancel_report=1&marketplace=uk&token=' . $this->session->data['token'], true); 950 } 951 952 $marketplaces = array( 953 'uk' => array( 954 'name' => $this->language->get('text_uk'), 955 'code' => 'uk', 956 'href_load_listings' => $this->url->link('extension/openbay/amazon/loadListingReport', 'user_token=' . $this->session->data['user_token'] . '&marketplace=uk', true), 957 'link' => $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'] . '&marketplace=uk', true), 958 ), 959 'de' => array( 960 'name' => $this->language->get('text_de'), 961 'code' => 'de', 962 'href_load_listings' => $this->url->link('extension/openbay/amazon/loadListingReport', 'user_token=' . $this->session->data['user_token'] . '&marketplace=de', true), 963 'link' => $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'] . '&marketplace=de', true), 964 ), 965 'fr' => array( 966 'name' => $this->language->get('text_fr'), 967 'code' => 'fr', 968 'href_load_listings' => $this->url->link('extension/openbay/amazon/loadListingReport', 'user_token=' . $this->session->data['user_token'] . '&marketplace=fr', true), 969 'link' => $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'] . '&marketplace=fr', true), 970 ), 971 'it' => array( 972 'name' => $this->language->get('text_it'), 973 'code' => 'it', 974 'href_load_listings' => $this->url->link('extension/openbay/amazon/loadListingReport', 'user_token=' . $this->session->data['user_token'] . '&marketplace=it', true), 975 'link' => $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'] . '&marketplace=it', true), 976 ), 977 'es' => array( 978 'name' => $this->language->get('text_es'), 979 'code' => 'es', 980 'href_load_listings' => $this->url->link('extension/openbay/amazon/loadListingReport', 'user_token=' . $this->session->data['user_token'] . '&marketplace=es', true), 981 'link' => $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'] . '&marketplace=es', true), 982 ), 983 ); 984 985 $pagination = new Pagination(); 986 $pagination->total = $total_linked; 987 $pagination->page = $linked_item_page; 988 $pagination->limit = $linked_item_limit; 989 $pagination->text = $this->language->get('text_pagination'); 990 $pagination->url = $this->url->link('extension/openbay/amazon/bulklinking', 'user_token=' . $this->session->data['user_token'] . '&linked_item_page={page}&marketplace=' . $marketplace_code, true); 991 992 $data['pagination'] = $pagination->render(); 993 $data['results'] = sprintf($this->language->get('text_pagination'), ($total_linked) ? (($linked_item_page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($linked_item_page - 1) * $this->config->get('config_limit_admin')) > ($total_linked - $this->config->get('config_limit_admin'))) ? $total_linked : ((($linked_item_page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $total_linked, ceil($total_linked / $this->config->get('config_limit_admin'))); 994 995 $results = $this->model_extension_openbay_amazon->getUnlinkedItemsFromReport($marketplace_code, $linked_item_limit, $linked_item_page); 996 997 $products = array(); 998 999 foreach ($results as $result) { 1000 $products[] = array( 1001 'asin' => $result['asin'], 1002 'href_amazon' => $this->model_extension_openbay_amazon->getAsinLink($result['asin'], $marketplace_code), 1003 'amazon_sku' => $result['amazon_sku'], 1004 'amazon_quantity' => $result['amazon_quantity'], 1005 'amazon_price' => $result['amazon_price'], 1006 'name' => $result['name'], 1007 'sku' => $result['sku'], 1008 'quantity' => $result['quantity'], 1009 'combination' => $result['combination'], 1010 'product_id' => $result['product_id'], 1011 'var' => $result['var'], 1012 'href_product' => $this->url->link('catalog/product/edit', 'user_token=' . $this->session->data['user_token'] . '&product_id=' . $result['product_id'], true), 1013 ); 1014 } 1015 1016 $data['unlinked_products'] = $products; 1017 $data['marketplaces'] = $marketplaces; 1018 $data['marketplace_code'] = $marketplace_code; 1019 1020 $data['marketplaces_processing'] = array(); 1021 if (is_array($this->config->get('openbay_amazon_processing_listing_reports'))) { 1022 $data['marketplaces_processing'] = $this->config->get('openbay_amazon_processing_listing_reports'); 1023 } 1024 1025 $data['cancel'] = $this->url->link('extension/openbay/amazon', 'user_token=' . $this->session->data['user_token'], true); 1026 $data['link_do_listings'] = $this->url->link('extension/openbay/amazon/doBulkLinking', 'user_token=' . $this->session->data['user_token'], true); 1027 $data['user_token'] = $this->session->data['user_token']; 1028 1029 $data['header'] = $this->load->controller('common/header'); 1030 $data['column_left'] = $this->load->controller('common/column_left'); 1031 $data['footer'] = $this->load->controller('common/footer'); 1032 1033 $this->response->setOutput($this->load->view('extension/openbay/amazon_bulk_linking', $data)); 1034 } 1035 1036 public function loadListingReport() { 1037 $this->load->model('extension/openbay/amazon'); 1038 $this->load->model('setting/setting'); 1039 $this->load->language('extension/openbay/amazon_bulk_linking'); 1040 1041 $marketplace = $this->request->get['marketplace']; 1042 1043 $this->model_extension_openbay_amazon->deleteListingReports($marketplace); 1044 1045 $request_data = array( 1046 'marketplace' => $marketplace, 1047 'response_url' => HTTPS_CATALOG . 'index.php?route=extension/openbay/amazon/listingreport', 1048 ); 1049 1050 $response = $this->openbay->amazon->call('report/listing', $request_data); 1051 $response = json_decode($response, 1); 1052 1053 $json = array(); 1054 $json['status'] = $response['status']; 1055 1056 if ($json['status']) { 1057 $json['message'] = $this->language->get('text_report_requested'); 1058 1059 $settings = $this->model_setting_setting->getSetting('openbay_amazon'); 1060 $settings['openbay_amazon_processing_listing_reports'][] = $marketplace; 1061 1062 $this->model_setting_setting->editSetting('openbay_amazon', $settings); 1063 } else { 1064 $json['message'] = $this->language->get('text_report_request_failed'); 1065 } 1066 1067 $this->response->addHeader('Content-Type: application/json'); 1068 $this->response->setOutput(json_encode($json)); 1069 } 1070 1071 public function doBulkLinking() { 1072 $this->load->model('extension/openbay/amazon'); 1073 1074 $links = array(); 1075 $skus = array(); 1076 1077 if (!empty($this->request->post['link'])) { 1078 foreach ($this->request->post['link'] as $link) { 1079 if (!empty($link['product_id'])) { 1080 $links[] = $link; 1081 $skus[] = $link['amazon_sku']; 1082 } 1083 } 1084 } 1085 1086 if (!empty($links)) { 1087 foreach ($links as $link) { 1088 $this->model_extension_openbay_amazon->linkProduct($link['amazon_sku'], $link['product_id'], $link['sku']); 1089 } 1090 1091 $this->model_extension_openbay_amazon->updateAmazonSkusQuantities($skus); 1092 } 1093 1094 $this->response->addHeader('Content-Type: application/json'); 1095 $this->response->setOutput(json_encode(array('ok'))); 1096 } 1097 1098 public function doFullStockSync() { 1099 /** 1100 * This is used if you ever need to force a complete update of your stock levels to Amazon. 1101 * It will get ALL products in your store then lookup any linked ones before sending to the API. 1102 * 1103 * This call can put serious load on your server if you have a lot of products. 1104 * It will make a lot of database queries so ensure your php memory limit is set high enough. 1105 */ 1106 set_time_limit(0); 1107 1108 $product_array = $this->db->query("SELECT `product_id` FROM `" . DB_PREFIX . "product`")->rows; 1109 1110 $bulk_array = array(); 1111 1112 foreach ($product_array as $product) { 1113 $bulk_array[] = $product['product_id']; 1114 } 1115 1116 $this->openbay->amazon->putStockUpdateBulk($bulk_array); 1117 } 1118 }