Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

zava

Пользователи
  
  • Публикаций

    250
  • Зарегистрирован

  • Посещение

О zava

  • День рождения 01.12.1975

Информация

  • Пол
    Мужчина

Посетители профиля

2 525 просмотров профиля

Достижения zava

Community Regular

Community Regular (8/14)

  • First Post
  • Collaborator
  • Conversation Starter
  • Week One Done
  • One Month Later

Последние медали

4

Репутация

  1. Добрый день покупали модуль на 1.5 и 2 скажите как можно прописать что бы модуль работал в автоматическом режиме ,у нас выгрузка товаров автоматическая и нужно заходить в модуль что бы продукты и категории обновить ? через крон можно сделать ?
  2. Для работы модуля сначала нужно удалить лицензию admin\controller\extension\module\ms.php <?php class ControllerExtensionModuleMS extends Controller { private $error = array(); public function index() { $this->load->language('extension/module/ms'); //подключаем любой языковой файл $request_data = [ 'host' => $_SERVER['HTTP_HOST'], 'secret' => 'zerrnoco' ]; if (true) { $this->document->addScript('view/javascript/ms/ms.js'); $this->document->addStyle('view/stylesheet/ms/ms.css'); $this->document->setTitle($this->language->get('heading_title')); // регистрируем модуль $this->load->model('setting/setting'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $this->model_setting_setting->editSetting('ms', $this->request->post); $this->session->data['success'] = $this->language->get('text_success'); $data['success'] = $this->session->data['success'] ; //создаем таблицы в БД $this->load->model('extension/module/ms'); $this->model_extension_module_ms->createTable(); $this->response->redirect($this->url->link('extension/module/ms', 'token=' . $this->session->data['token'] . '&type=module', true)); } if (!empty($this->config->get('ms_name')) && !empty($this->config->get('ms_password'))) { $sklad = new Sklad ($this->config->get('ms_name'), $this->config->get('ms_password')); $ms_organizations = $sklad->getOrganizations(); if (isset($ms_organizations['errors'])) { foreach ($ms_organizations['errors'] as $error) { $data['errors'][] = $error['error']; } } else { foreach ($ms_organizations['rows'] as $row) { $data['organizations'][] = [ 'id' => $row['id'], 'name' => $row['name'], ]; } } } $data['ms_name'] = $this->config->get('ms_name'); $data['ms_pasword'] = $this->config->get('ms_password'); $data['heading_title'] = $this->language->get('heading_title'); //объявляем переменную heading_title с данными из языкового файла $data['entry_status'] = $this->language->get('entry_status'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_password'] = $this->language->get('entry_password'); $data['entry_organization'] = $this->language->get('entry_organization'); $data['entry_category'] = $this->language->get('entry_category'); $data['entry_stock'] = $this->language->get('entry_stock'); $data['entry_sms'] = $this->language->get('entry_sms'); $data['entry_order'] = $this->language->get('entry_order'); $data['entry_opt'] = $this->language->get('entry_opt'); $data['entry_sms_template'] = $this->language->get('entry_sms_template'); $data['entry_name_sms'] = $this->language->get('entry_name_sms'); $data['entry_password_sms'] = $this->language->get('entry_password_sms'); $data['entry_values'] = $this->language->get('entry_values'); $data['help_ms_sms'] = $this->language->get('help_ms_sms'); $data['help_sms_tpl'] = $this->language->get('help_sms_tpl'); $data['help_sms_tpl_30'] = $this->language->get('help_sms_tpl_30'); $data['button_save'] = $this->language->get('button_save'); $data['button_cancel'] = $this->language->get('button_cancel'); $data['text_enabled'] = $this->language->get('text_enabled'); $data['text_disabled'] = $this->language->get('text_disabled'); $data['text_edit'] = $this->language->get('text_edit'); $data['text_sync'] = $this->language->get('text_sync'); $data['text_yes'] = $this->language->get('text_yes'); $data['text_no'] = $this->language->get('text_no'); $data['token'] = $this->session->data['token']; $data['loader'] = HTTPS_SERVER . 'view/image/ms/loader.gif'; if (isset($this->error['warning'])) { $data['error_warning'] = $this->error['warning']; } else { $data['error_warning'] = ''; } $data['breadcrumbs'] = array(); // Добавляем по одной крошке, сначала ссылка на главную страницу $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), // text_home по всей видимости доступен отовсюду 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL') ); // добавляем ссылку на список с модулями, прописано в своем языковом файле $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_module'), 'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL') ); // кнопки $data['action'] = $this->url->link('extension/module/ms', 'token=' . $this->session->data['token'], 'SSL'); $data['cancel'] = $this->url->link('extension/extension', 'token=' . $this->session->data['token'], 'SSL'); if (!empty($this->config->get('ms_name')) && !empty($this->config->get('ms_password'))) { $data['sync'] = $this->url->link('extension/module/ms/sync', 'token=' . $this->session->data['token'], 'SSL'); } else { $data['sync'] =''; } if (isset($this->request->post['ms_status'])) {//статус модуля $data['ms_status'] = $this->request->post['ms_status']; } else { $data['ms_status'] = $this->config->get('ms_status'); } if ($data['ms_status'] != 1) {//если модуль отключен удалить все данные из него $this->model_setting_setting->deleteSetting('ms'); } if (isset($this->request->post['ms_name'])) { $data['ms_name'] = $this->request->post['ms_name']; } else { $data['ms_name'] = $this->config->get('ms_name'); } if (isset($this->request->post['ms_password'])) { $data['ms_password'] = $this->request->post['ms_password']; } else { $data['ms_password'] = $this->config->get('ms_password'); } if (isset($this->request->post['ms_category'])) { $data['ms_category'] = $this->request->post['ms_category']; } else { $data['ms_category'] = $this->config->get('ms_category'); } if (isset($this->request->post['ms_stock'])) { $data['ms_stock'] = $this->request->post['ms_stock']; } else { $data['ms_stock'] = $this->config->get('ms_stock'); } if (isset($this->request->post['ms_org'])) { $data['ms_org'] = $this->request->post['ms_org']; } else { $data['ms_org'] = $this->config->get('ms_org'); } if (isset($this->request->post['ms_sms'])) { $data['ms_sms'] = $this->request->post['ms_sms']; } else { $data['ms_sms'] = $this->config->get('ms_sms'); } if (isset($this->request->post['ms_order'])) { $data['ms_order'] = $this->request->post['ms_order']; } else { $data['ms_order'] = $this->config->get('ms_order'); } if (isset($this->request->post['ms_opt'])) { $data['ms_opt'] = $this->request->post['ms_opt']; } else { $data['ms_opt'] = $this->config->get('ms_opt'); } if (isset($this->request->post['ms_sms_tpl'])) { $data['ms_sms_tpl'] = $this->request->post['ms_sms_tpl']; } else { $data['ms_sms_tpl'] = $this->config->get('ms_sms_tpl'); } if (isset($this->request->post['ms_sms_login'])) { $data['ms_sms_login'] = $this->request->post['ms_sms_login']; } else { $data['ms_sms_login'] = $this->config->get('ms_sms_login'); } if (isset($this->request->post['ms_sms_password'])) { $data['ms_sms_password'] = $this->request->post['ms_sms_password']; } else { $data['ms_sms_password'] = $this->config->get('ms_sms_password'); } if (isset($this->request->post['ms_sms_tpl_30'])) { $data['ms_sms_tpl_30'] = $this->request->post['ms_sms_tpl_30']; } else { $data['ms_sms_tpl_30'] = $this->config->get('ms_sms_tpl_30'); } $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); // передаем данные на отрисовку $this->response->setOutput($this->load->view('extension/module/ms.tpl', $data)); } else { // $this->response->setOutput($this->load->view('extension/extension', $data)); // $this->session->data['license_error'] = $this->language->get('license_error'); // $data['license_error'] = $this->session->data['license_error']; $this->response->redirect($this->url->link('extension/extension', '&token=' . $this->session->data['token'], 'SSL')); } } protected function validate() { if (!$this->user->hasPermission('modify', 'extension/module/ms')) { $this->error['warning'] = $this->language->get('error_permission'); } return !$this->error; } // protected function license($request_data) { // $url = 'http://www.api.zerrno.com/?apiLicense.validateLicense={"host":"'.$request_data['host'].'","secret":"'.$request_data['secret'].'"}'; // $process = curl_init($url); // curl_setopt($process, CURLOPT_HEADER, false); // curl_setopt($process, CURLOPT_TIMEOUT, 30); // curl_setopt($process, CURLOPT_RETURNTRANSFER, true); // $return = curl_exec($process) or die(curl_error($process)); // $return = (array)(json_decode($return)); // // curl_close($process); // // return $return['response']->license; // } public function sync() { $this->load->language('extension/module/ms'); set_time_limit(900); $request_data = [ 'host' => $_SERVER['HTTP_HOST'] ]; if (true) { $this->load->model('extension/module/ms'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('catalog/option'); $json = []; if (!empty($this->config->get('ms_name')) && !empty($this->config->get('ms_password'))) { $login = $this->config->get('ms_name'); $password = $this->config->get('ms_password'); } else { return false; } $sklad = new Sklad($login, $password); $products = $sklad->getAllProducts(); $sklad->response = []; $stocks = $sklad->getAllStocks();//остаток $sklad->response = []; $ms_product_ids = $this->model_extension_module_ms->getMSProductIds(); $ms_category_ids = $this->model_extension_module_ms->getMSCategoryIds(); foreach ($products as $product) { if (isset($ms_product_ids) && !empty($ms_product_ids)) { for ($i = 0; $i < count((array)$ms_product_ids); $i++) {//находим id товаров которые нужно удалить из опенкарт if ($ms_product_ids[$i]['ms_product_id'] == $product['id']) { unset($ms_product_ids[$i]); sort($ms_product_ids); } } } $product_oc = $this->model_catalog_product->getProduct($this->model_extension_module_ms->getProductIdByMSId($product['id'])); if (!empty($product_oc)) {// если продукт уже существует в опенкарт, нужно обновить его if (isset($product['name'])) { $name = $product['name']; } else { $name = ''; } // $name = $product['name'] ?? ''; if (isset($product['code'])) { $model = $product['code']; } else { $model = ''; } // $model = $product['code'] ?? ''; if (isset($product['description'])) { $description = $product['description']; } else { $description = ''; } // $description = $product['description'] ?? ''; if (isset($product['article'])) { $sku = $product['article']; } else { $sku = ''; } // $sku = $product['article'] ?? ''; if (isset($product['image'])) { $image = $sklad->getProductImage($product['image']['meta']['href']); } else { $image = ''; } // $image = isset($product['image']) ? $sklad->getProductImage($product['image']['meta']['href']) : ''; // if (isset($product['attributes'])) { // foreach ($product['attributes'] as $field) { // switch ($field['name']) { // case 'SEO URL': // $keyword = $field['value']; // break; // case 'Мета-тег Description': // $meta_desc = $field['value']; // break; // default: // $value = ''; // break; // } // } // } if (isset($product['salePrices'])) { foreach ($product['salePrices'] as $prices) { if ($prices['priceType'] == 'Цена продажи') { $price = $prices['value']/100; } } } if ($this->config->get('ms_category')) { if (isset($product['productFolder']) && $product['pathName'] != '') {//добавляем категорию в опенкарт $categories = []; $path = explode('/', $product['pathName']); $i = 0; for ($i = 0; $i < count($path); $i++) { $category_info = $this->model_extension_module_ms->getSyncCategory($path[$i]); $j = 0; if (isset($ms_category_ids)) { for ($j = 0; $j < count((array)$ms_category_ids); $j++) { $ms_category_name = $this->model_extension_module_ms->getSyncCategoryById($ms_category_ids[$j]['category_id']); if ($ms_category_name[0]['category_name'] == $path[$i]) { unset($ms_category_ids[$j]); sort($ms_category_ids); } } } if (empty($category_info)) { $data_category = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => '', ]; if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $data_category['parent_id'] = $parent_category_id[0]['category_id']; } $category_id = $this->model_catalog_category->addCategory($data_category); $this->model_extension_module_ms->setSyncCategory($category_id, $path[$i]); $categories[] = $category_id; } else { if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $edit_category_data = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => $parent_category_id[0]['category_id'], ]; $this->model_catalog_category->editCategory($category_info[0]['category_id'], $edit_category_data); } $categories[] = $category_info[0]['category_id']; } } // echo '<pre>'; // print_r($data_category); // echo '</pre>'; $main_category_id = $this->model_extension_module_ms->getSyncCategory(array_pop($path)); } } $quantity = 0; if ($this->config->get('ms_stock')) { if (!empty($stocks) && isset($product['code'])) {//синхронизация остатков foreach ($stocks as $stock) { if (isset($product['code'])) { if ($stock['code'] == $product['code']) { $quantity += $stock['quantity']; } } } } } if ($this->config->get('ms_opt')) { if ($product['modificationsCount'] > 0) {//добавить модификации в опенкарт $variants = $sklad->getVariantsById($product['id']); $product_options = []; $product_option_values = []; if (isset($variants['errors'])) { $this->error += $variants['errors']; } else { foreach ($variants as $variant) { foreach ($variant['characteristics'] as $options => $option) { $option_oc = $this->model_extension_module_ms->getOptionByName($option['name']); $product_options[] = $option['name'];//////////////////////////////////array_unique()собираем в массив опции данного товара $product_option_values[] = $option['value'];//////////////////////////////////array_unique() -=- значения опций if (empty($option_oc)) { $data_option = [ 'option_description' => [ '1' => [ 'name' => $option['name'], ], ], 'type' => 'select', 'sort_order' => '', 'option_value' => [ '0' => [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ], ], ]; $option_id_oc = $this->model_catalog_option->addOption($data_option); $this->model_extension_module_ms->setSyncOption($option_id_oc, $option['name']); } else { $option_values_oc = $this->model_catalog_option->getOptionValues($option_oc[0]['option_id']); $option_value = []; $find = false; foreach ($option_values_oc as $option_values) { $option_value[] = [ 'option_value_id' => $option_values['option_value_id'], 'option_value_description' => [ '1' => [ 'name' => $option_values['name'], ], ], 'image' => '', 'sort_order' => '', ]; if ($option_values['name'] == $option['value']) { $find = true; } } if (!$find) { $option_value[] = [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ]; } $edit_option_data = [ 'option_description' => [ '1' => [ 'name' => $option['name'] ] ], 'type' => 'select', 'sort_order' => '', 'option_value' => isset($option_value) ? $option_value : [], ]; $this->model_catalog_option->editOption($option_oc[0]['option_id'], $edit_option_data); } } } // // echo "<pre>"; // print_r(array_unique($product_option_values)); // echo "</pre>"; // die(); if (!empty($product_options)) {//добавляем опции к товарам $product_options = array_unique($product_options);//удаляем повторяющиеся эллементы массива с опциями foreach ($product_options as $key => $option_name) { $oc_option_id = $this->model_extension_module_ms->getOptionByName($option_name); if (!empty($oc_option_id)) { $oc_option = $this->model_catalog_option->getOption($oc_option_id[0]['option_id']); $product_option = [ 'product_option_id' => '', 'name' => $oc_option['name'], 'option_id' => $oc_option['option_id'], 'type' => $oc_option['type'], 'required' => '1', ]; } //по аналогии с опциями нужно собрать массив значений опций данного товара if (!empty($product_option_values)) { $product_option_values = array_unique($product_option_values);//удаляем повторяющиеся эллементы массива foreach ($product_option_values as $value) {//перебираем значения модификации данного товара $product_option_values_oc = $this->model_catalog_option->getOptionValues($oc_option_id[0]['option_id']);//получаем значения данной опции из опенкарт foreach ($product_option_values_oc as $values) {//перебираем значения опций опенкарт if ($values['name'] == $value) {//если значение опции опенкарт == значению модификации мойсклад -> добавляем значение этой опции к товару $product_option['product_option_value'][] = [ 'option_value_id' => $values['option_value_id'], 'product_option_value_id' => '', 'quantity' => '', 'subtract' => 0, 'price_prefix' => '+', 'price' => '', 'points_prefix' => '+', 'points' => '', 'weight_prefix' => '+', 'weight' => '', ]; } } } } $product_option_arr[] = $product_option; } } } // echo "<pre>"; // print_r($product_option_arr); // echo "</pre>"; // print_r("END------------------"); } } // $product_data = [ 'product_description' => [ '1' => [ 'name' => $name, 'description' => $description, 'meta_title' => $name, 'meta_h1' => $name, 'meta_description' => $name, 'meta_keyword' => $name, 'tag' => $name ] ], 'model' => $model, 'sku' => $sku, 'upc' => '', 'ean' => '', 'jan' => '', 'isbn' => '', 'mpn' => '', 'location' => '', 'image' => $image, 'keyword' => '', 'length' => '', 'width'=> '', 'height' => '', 'status' => 1, 'price' => isset($price) ? $price : 1, 'tax_class_id' => 0, 'minimum' => 1, 'shipping' => 1, 'product_store' => [ '0' => 0 ], 'quantity' => $quantity, 'subtract' => 1, 'manufacturer_id' => 0, 'sort_order' => 1, 'weight_class_id' => 1, 'weight' => '', 'length_class_id' => 1, 'location' => '', 'product_category' => isset($categories) ? $categories : [], 'stock_status_id' => ($quantity == 0) ? 5 : 7, 'date_available' => date('Y-m-d', time()), 'points' => '', 'main_category_id' => isset($main_category_id) ? $main_category_id[0]['category_id'] : '', ]; if (isset($product_option_arr)) { $product_data['product_option'] = $product_option_arr; } $product_data['main_category_id'] = isset($main_category_id) ? $main_category_id[0]['category_id'] : ''; $this->model_catalog_product->editProduct($product_oc['product_id'], $product_data); unset($data_category); unset($categories); unset($main_category_id); unset($product_option_arr); } else {//иначе добавить новый товар в опенкарт if (isset($product['name'])) {//название товара $name = $product['name']; } else { $name = ''; } // $name = $product['name'] ?? ''; if (isset($product['code'])) {//код(модель товара) $model = $product['code']; } else { $model = ''; } // $model = $product['code'] ?? ''; if (isset($product['description'])) {//описание товара $description = $product['description']; } else { $description = ''; } // $description = $product['description'] ?? ''; if (isset($product['article'])) {//артикул товара $sku = $product['article']; } else { $sku = ''; } // $sku = $product['article'] ?? ''; if (isset($product['image'])) { //изображение товара $image = $sklad->getProductImage($product['image']['meta']['href']); } else { $image = ''; } // $image = isset($product['image']) ? $sklad->getProductImage($product['image']['meta']['href']) : ''; // if (isset($product['attributes'])) {//дополнительные поля // foreach ($product['attributes'] as $field) { // switch ($field['name']) { // case 'SEO URL': // $keyword = $field['value']; // break; // case 'Мета-тег Description': // $meta_desc = $field['value']; // break; // default: // $value = ''; // break; // } // } // } if (isset($product['salePrices'])) {//цена продажи foreach ($product['salePrices'] as $prices) { if ($prices['priceType'] == 'Цена продажи') { $price = $prices['value']/100; } } } if ($this->config->get('ms_category')) { if (isset($product['productFolder']) && $product['pathName'] != '') {//добавляем категорию в опенкарт $categories = []; $path = explode('/', $product['pathName']); $i = 0; for ($i = 0; $i < count($path); $i++) { $category_info = $this->model_extension_module_ms->getSyncCategory($path[$i]); $j = 0; if (isset($ms_category_ids)) { for ($j = 0; $j < count((array)$ms_category_ids); $j++) { $ms_category_name = $this->model_extension_module_ms->getSyncCategoryById($ms_category_ids[$j]['category_id']); if ($ms_category_name[0]['category_name'] == $path[$i]) { unset($ms_category_ids[$j]); sort($ms_category_ids); } } } if (empty($category_info)) { $data_category = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => '', ]; if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $data_category['parent_id'] = $parent_category_id[0]['category_id']; } $category_id = $this->model_catalog_category->addCategory($data_category); $this->model_extension_module_ms->setSyncCategory($category_id, $path[$i]); $categories[] = $category_id; } else { if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $edit_category_data = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => $parent_category_id[0]['category_id'], ]; $this->model_catalog_category->editCategory($category_info[0]['category_id'], $edit_category_data); } $categories[] = $category_info[0]['category_id']; } } // echo '<pre>'; // print_r($data_category); // echo '</pre>'; $main_category_id = $this->model_extension_module_ms->getSyncCategory(array_pop($path)); } } $quantity = 0; if ($this->config->get('ms_stock')) { if (!empty($stocks) && isset($product['code'])) {//синхронизация остатков foreach ($stocks as $stock) { if (isset($product['code'])) { if ($stock['code'] == $product['code']) { $quantity += $stock['quantity']; } } } } } // if ($this->config->get('ms_opt')) { if ($product['modificationsCount'] > 0) {//добавить модификации в опенкарт $variants = $sklad->getVariantsById($product['id']); $product_options = []; $product_option_values = []; if (isset($variants['errors'])) { $this->error += $variants['errors']; } else { foreach ($variants as $variant) { foreach ($variant['characteristics'] as $options => $option) { $option_oc = $this->model_extension_module_ms->getOptionByName($option['name']); $product_options[] = $option['name'];//////////////////////////////////array_unique()собираем в массив опции данного товара $product_option_values[] = $option['value'];//////////////////////////////////array_unique() -=- значения опций if (empty($option_oc)) { $data_option = [ 'option_description' => [ '1' => [ 'name' => $option['name'], ], ], 'type' => 'select', 'sort_order' => '', 'option_value' => [ '0' => [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ], ], ]; $option_id_oc = $this->model_catalog_option->addOption($data_option); $this->model_extension_module_ms->setSyncOption($option_id_oc, $option['name']); } else { $option_values_oc = $this->model_catalog_option->getOptionValues($option_oc[0]['option_id']); $option_value = []; $find = false; foreach ($option_values_oc as $option_values) { $option_value[] = [ 'option_value_id' => $option_values['option_value_id'], 'option_value_description' => [ '1' => [ 'name' => $option_values['name'], ], ], 'image' => '', 'sort_order' => '', ]; if ($option_values['name'] == $option['value']) { $find = true; } } if (!$find) { $option_value[] = [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ]; } $edit_option_data = [ 'option_description' => [ '1' => [ 'name' => $option['name'] ] ], 'type' => 'select', 'sort_order' => '', 'option_value' => isset($option_value) ? $option_value : [], ]; $this->model_catalog_option->editOption($option_oc[0]['option_id'], $edit_option_data); } } } // // echo "<pre>"; // print_r(array_unique($product_option_values)); // echo "</pre>"; // die(); if (!empty($product_options)) {//добавляем опции к товарам $product_options = array_unique($product_options);//удаляем повторяющиеся эллементы массива с опциями foreach ($product_options as $key => $option_name) { $oc_option_id = $this->model_extension_module_ms->getOptionByName($option_name); $oc_option = $this->model_catalog_option->getOption($oc_option_id[0]['option_id']); $product_option = [ 'product_option_id' => '', 'name' => $oc_option['name'], 'option_id' => $oc_option['option_id'], 'type' => $oc_option['type'], 'required' => '1', ]; //по аналогии с опциями нужно собрать массив значений опций данного товара if (!empty($product_option_values)) { $product_option_values = array_unique($product_option_values);//удаляем повторяющиеся эллементы массива foreach ($product_option_values as $value) {//перебираем значения модификации данного товара $product_option_values_oc = $this->model_catalog_option->getOptionValues($oc_option_id[0]['option_id']);//получаем значения данной опции из опенкарт foreach ($product_option_values_oc as $values) {//перебираем значения опций опенкарт if ($values['name'] == $value) {//если значение опции опенкарт == значению модификации мойсклад -> добавляем значение этой опции к товару $product_option['product_option_value'][] = [ 'option_value_id' => $values['option_value_id'], 'product_option_value_id' => '', 'quantity' => '', 'subtract' => 0, 'price_prefix' => '+', 'price' => '', 'points_prefix' => '+', 'points' => '', 'weight_prefix' => '+', 'weight' => '', ]; } } } } $product_option_arr[] = $product_option; } } } // echo "<pre>"; // print_r($product_option_arr); // echo "</pre>"; // print_r("END------------------"); } } // $product_data = [ 'product_description' => [ '1' => [ 'name' => $name, 'description' => $description, 'meta_title' => $name, 'meta_h1' => $name, 'meta_description' => $name, 'meta_keyword' => $name, 'tag' => $name ] ], 'model' => $model, 'sku' => $sku, 'upc' => '', 'ean' => '', 'jan' => '', 'isbn' => '', 'mpn' => '', 'image' => $image, 'keyword' => '', 'length' => '', 'width'=> '', 'height' => '', 'status' => 1, 'price' => isset($price) ? $price : 1, 'tax_class_id' => 0, 'minimum' => 1, 'shipping' => 1, 'product_store' => [ '0' => 0 ], 'quantity' => $quantity, 'subtract' => 1, 'manufacturer_id' => 0, 'sort_order' => 1, 'weight_class_id' => 1, 'weight' => '', 'length_class_id' => 1, 'location' => '', 'product_category' => isset($categories) ? $categories : [], 'stock_status_id' => ($quantity == 0) ? 5 : 7, 'date_available' => date('Y-m-d', time()), 'points' => '', 'main_category_id' => isset($main_category_id) ? $main_category_id[0]['category_id'] : '', ]; if (isset($product_option_arr)) { $product_data['product_option'] = $product_option_arr; } $product_id = $this->model_catalog_product->addProduct($product_data); unset($data_category); unset($categories); unset($main_category_id); unset($product_option_arr); $this->model_extension_module_ms->syncProducts($product_id, $product['id']); } } //удалить товары if (!empty($ms_product_ids)) { foreach ($ms_product_ids as $id) { $product_oc_id = $this->model_extension_module_ms->getProductIdByMSId($id['ms_product_id']); $this->model_catalog_product->deleteProduct($product_oc_id); // $this->model_extension_module_ms->deleteProductId($product_oc_id); } } //удалить категории if (!empty($ms_category_ids)) { foreach ($ms_category_ids as $cat_id) { $this->model_catalog_category->deleteCategory($cat_id['category_id']); // $this->model_extension_module_ms->deleteCategoryId($cat_id['category_id']); } } if ($this->error) {//return json errors $json['errors'] = $this->error; } // sleep(10); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); // $this->response->redirect($this->url->link('catalog/product','&token=' . $this->session->data['token'], 'SSL')); } else { // $this->session->data['license_error'] = $this->language->get('license_error'); // $data['license_error'] = $this->session->data['license_error']; $this->response->redirect($this->url->link('extension/extension', '&token=' . $this->session->data['token'], 'SSL')); } } //function for send SMS customers who didn`t have orders last 30 days public function sendSMS() { $this->load->language('extension/module/ms'); $request_data = [ 'host' => $_SERVER['HTTP_HOST'], 'secret' => 'zerrnoco' ]; if (true) { $this->load->model('extension/module/ms'); $this->load->model('customer/customer'); $customers_id = $this->model_extension_module_ms->getCustomerIds(); if (!empty($customers_id)) { //send msg SMSint $sms_login = $this->config->get('ms_sms_login'); $sms_password = $this->config->get('ms_sms_password'); $smsint = new Transport($sms_login, $sms_password); foreach ($customers_id as $customer) { $customer_info = $this->model_customer_customer->getCustomer($customer['customer_id']); // echo '<pre>'; // print_r($customer_info); // echo '</pre>'; // die(); if (!empty($customer_info)) { if ($customer_info['sms_status'] == 0) { $sms_text = $this->config->get('ms_sms_tpl_30'); $customer_telephone = str_replace(array('+', ' ', '(' , ')', '-'), '', $customer_info['telephone']); $customer_email = $customer_info['email']; //replace values $replace = [ '{$name}' => isset($customer_name) ? $customer_name : '', '{$email}' => isset($customer_email) ? $customer_email : '', ]; // $sms_text = strtr($sms_text, $replace); $params = [ 'text' => $sms_text, 'source' => 'PikFormy', 'action' => 'check' ]; $phones = [strval($customer_telephone)]; $send = $smsint->send($params, $phones); echo "<pre>"; print_r($send); echo "</pre>"; if ($send['code'] == 1) { $status = 1; $this->model_extension_module_ms->changeSmsStatus($customer['customer_id'], $status); } } elseif ($customer_info['sms_status'] == 1) { $diff = (time() - strtotime($customer_info['date_update_status'], time()))/(60 * 60 * 24);//(*24) if ($diff >= 30) { $this->model_extension_module_ms->changeSmsStatus($customer['customer_id'], 0); } } } } } } else { // $this->session->data['license_error'] = $this->language->get('license_error'); // $data['license_error'] = $this->session->data['license_error']; $this->response->redirect($this->url->link('extension/extension', '&token=' . $this->session->data['token'], 'SSL')); } } }
    После покупки не работал был редирект заказ принят, купил другой модуль таже проблема((( Автор модуля помог разобраться , проблема была в блокировке ip сайта сбер банком. Помогает смена ip если сайт не новый что бы не выпал из индекса советую писать тех. поддержку сбера!! Спасибо автору модуля за помощь!
  3. Огромное спасибо автору за помощь в настройках модуля!!!
  4. Добрый день. купил модуль установил но он не работает режим тестовый после нажатия на кнопку оформить заказ ни чего не происходит кнопка нажата ! Что делать ?
  5. Добрый день купил все настроил не работает! Ошибок нет после выбора редиректит на страницу заявка принята ??? Поддержка подключила и сервер дала https://3dsec.sberbank.ru/payment/rest/
  6. Решение удаляем все что есть /catalog/view/theme/default/wallcategory/jquery.scrollpanel-0.5.0.min.js и стилями прописываем скрол wall-category-box .item-sub-category { overflow-y: auto; } можно его украсить .item-sub-category::-webkit-scrollbar { -webkit-appearance: none; width: 7px; background-color: #ffffff6e; } .item-sub-category::-webkit-scrollbar-thumb { border-radius: 2px; background-color: rgba(126, 126, 126, 0.5); -webkit-box-shadow: 0 0 1px rgba(255,255,255,0.5); }
  7. КАК ДОБАВИТЬ МЕТОДЫ ОПЛАТЫ В OPENCART. Начнем мы с тяжелого пути. Чтобы склонировать банковский перевод нам надо найти все файлы которые за нег отвечают и сменить одни строки в самом файле на другие, а также переименовать сами файлы. Вроде все просто, но довольно кропотливая работа. Для этого, для части администратора скачайте файлы по путям: admin/controller/payment/bank_transfer.php admin/view/template/payment/bank_transfer.tpl А для клиентской части качаем следующие файлы: catalog/controller/payment/bank_transfer.php catalog/model/payment/bank_transfer.php catalog/view/theme/ВАША ТЕМА/template/payment/bank_transfer.php Теперь нам нужно в этих файлах все упоминания bank_transfer изменить на свои, к примеру для Webmoney пусть так и будет Webmoney. Также, как я писал выше, необходимо переименовать и названия самих файлов. После чего загрузите то что получилось на сервер, по тем же самым маршрутам. После этого в языковых файлах, которые находятся по пути admin/language/russian/payment/bank_transfer.php catalog/language/russian/payment/bank_transfer.php вам надо поменять значение переменной text_title. Чтобы вышло примерно так: $_['text_title'] = 'YandexДеньги перевод на кошелек'; После чего эти два файлы загрузить назад.
  8. Добрый день. Скажите как включить авто заполнение города, таблицы импортировал но вот при выборе региона не находит городов ? что может быть. Спасибо за модуль использую не на одном сайте пока не подводил !!!
  9. Добрый день, поясните как выгружать опции, в ютуб не предлагать там видео 4 летней давности! всего 1 опция и не могу выгрузить SOS!! Глюк за глюком , не пойму то мину суется цена, то 0 количество поседел - за что такие муки))) 1 опция беру цену и количество в первых колонок указаны в товаре или нужно новые создавать ? артикул обязательно ставить ?
  10. Добрый день. Добавил свои поля в форме код с визитки для акции заполняется , отправляется но как вывести в заказе или письме заказа ? Спасибо
  11. Добрый день, скажите можно в код товара (модель) предать свои значения из sku либо с прайса только потом перед номером поставщика? Покупали ваш модуль на сайт корейской косметики.? Еще такой момент есть младшие категории с одинаковыми названием входят в главные категории с разными названиями как правильно прописать а то выгружаются в одну ? например младшая крема в главных категориях для лица, рук, ног и тд? у нас все крема попадают в одну крема все остальные пустые хотя в райсе указали две категории правильно ?
  12. Спасибо за ответ. Скажите еще пожалуйста можно будет прикреплять как то трекер номер в личном кабинете ?
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.