Jump to content

zava

Пользователи
  • Content Count

    250
  • Joined

  • Last visited

Community Reputation

4 Обычный

About zava

  • Rank
    Продвинутый пользователь
  • Birthday 12/01/1975

Информация

  • Пол
    Мужчина

Recent Profile Visitors

1,963 profile views
  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 если сайт не новый что бы не выпал из индекса советую писать тех. поддержку сбера!! Спасибо автору модуля за помощь!
    Сначала не работал модуль, но автор помог разобраться как оказалось 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. Добрый день. Добавил свои поля в форме код с визитки для акции заполняется , отправляется но как вывести в заказе или письме заказа ? Спасибо
×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.