Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

nash

Користувачі
  
  • Публікації

    421
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем nash

  1. Добрый день! При оформлении заказа создаю EXCEL файл с сохранением в папке Upload через PHPExcel. Файл создается успешно, но при этом не приходит уведомление на почту администратору с вложением. Ошибок в логах нет никаких

     

    // Admin Alert Mail
    				if (in_array('order', (array)$this->config->get('config_mail_alert'))) {
    					
    					require_once(DIR_SYSTEM . '/PHPExcel/Classes/PHPExcel.php');
    					require_once(DIR_SYSTEM . '/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php');
    		
    					$phpexcel = new PHPExcel();
    					
    					$phpexcel->setActiveSheetIndex(0);
    					$page = $phpexcel->getActiveSheet();
    					$page->setTitle('Заказ №'. $order_id);
    					
    					$page->getColumnDimensionByColumn("1")->setAutoSize(true);
    					$page->getColumnDimensionByColumn("2")->setAutoSize(true);
    					$page->getColumnDimensionByColumn("3")->setAutoSize(true);
    					$page->getColumnDimensionByColumn("4")->setAutoSize(true);
    					$page->getColumnDimensionByColumn("5")->setAutoSize(true);
    					$page->getColumnDimensionByColumn("6")->setAutoSize(true);
    					$page->getColumnDimensionByColumn("7")->setAutoSize(true);
    					$page->getColumnDimensionByColumn("8")->setAutoSize(true);		
    					$page->getColumnDimensionByColumn("9")->setAutoSize(true);
    				   
    					$page->getStyle("A1")->getFont()->setBold(true);
    					$page->getStyle("B1")->getFont()->setBold(true);        
    					$page->getStyle("C1")->getFont()->setBold(true);
    					$page->getStyle("D1")->getFont()->setBold(true);        
    					$page->getStyle("E1")->getFont()->setBold(true);
    					$page->getStyle("F1")->getFont()->setBold(true);        
    					$page->getStyle("G1")->getFont()->setBold(true);
    					$page->getStyle("H1")->getFont()->setBold(true);        
    					$page->getStyle("I1")->getFont()->setBold(true);
    					
    					$page->setCellValue("A1", "Товар");
    					$page->setCellValue("B1", "Высота мдф");
    					$page->setCellValue("C1", "Ширина мдф");
    					$page->setCellValue("D1", "Толщина мдф");
    					$page->setCellValue("E1", "Цвет пленки");
    					$page->setCellValue("F1", "Артикул пленки");
    					$page->setCellValue("G1", "Декор");
    					$page->setCellValue("H1", "Патина");
    					$page->setCellValue("I1", "Количество");
    
    					
    					$subject = sprintf($language->get('text_new_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'), $order_id);
    
    					// HTML Mail
    					$data['text_greeting'] = $language->get('text_new_received');
    
    					if ($comment) {
    						if ($order_info['comment']) {
    							$data['comment'] = nl2br($comment) . '<br/><br/>' . $order_info['comment'];
    						} else {
    							$data['comment'] = nl2br($comment);
    						}
    					} else {
    						if ($order_info['comment']) {
    							$data['comment'] = $order_info['comment'];
    						} else {
    							$data['comment'] = '';
    						}
    					}
    
    					$data['text_download'] = '';
    					$data['text_footer'] = '';
    					$data['text_link'] = '';
    										
    					$data['link'] = $order_info['store_url'] . 'admin/index.php?route=sale/order/info&order_id=' . $order_id;
    					//$data['link'] = '';
    					$data['download'] = '';
    
    					// Text
    					$text  = $language->get('text_new_received') . "\n\n";
    					$text .= $language->get('text_new_order_id') . ' ' . $order_id . "\n";
    					$text .= $language->get('text_new_date_added') . ' ' . date($language->get('date_format_short'), strtotime($order_info['date_added'])) . "\n";
    					$text .= $language->get('text_new_order_status') . ' ' . $order_status . "\n\n";
    					$text .= $language->get('text_new_products') . "\n";
    
    
    					$i=2;/////////////
    					foreach ($order_product_query->rows as $product) {
    						$text .= $product['quantity'] . 'x ' . $product['name'] . ' (' . $product['model'] . ') ' . html_entity_decode($this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8') . "\n";
    
    						$order_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . $product['order_product_id'] . "'");
    
    						foreach ($order_option_query->rows as $option) {
    							if ($option['type'] != 'file') {
    								$value = $option['value'];
    							} else {
    								$value = utf8_substr($option['value'], 0, utf8_strrpos($option['value'], '.'));
    							}
    
    							$text .= chr(9) . '-' . $option['name'] . ' ' . (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value) . "\n";
    						}
    
    						$page->setCellValue("A".$i, $product['name']);
    						$page->setCellValue("B".$i, '0');
    						$page->setCellValue("C".$i, '0');
    						$page->setCellValue("D".$i, '0');
    						$page->setCellValue("E".$i, '0');
    						$page->setCellValue("F".$i, '0');            
    						$page->setCellValue("G".$i, '0');
    						$page->setCellValue("H".$i, '0');
    						$page->setCellValue("I".$i, $product['quantity']);
    						
    						$i++;	
    					}
    					
    					header("Expires: Mon, 1 Apr 1974 05:00:00 GMT");
    					header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
    					header("Cache-Control: no-cache, must-revalidate");
    					header("Pragma: no-cache");
    					header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    					header("Content-Disposition: attachment; filename=" . "file.xlsx");
    			 
    					$objWriter = new PHPExcel_Writer_Excel2007($phpexcel);
    					$objWriter->save(DIR_UPLOAD.'/file.xlsx'); 
    					exit();				
    
    					foreach ($order_voucher_query->rows as $voucher) {
    						$text .= '1x ' . $voucher['description'] . ' ' . $this->currency->format($voucher['amount'], $order_info['currency_code'], $order_info['currency_value']);
    					}
    
    					$text .= "\n";
    
    					$text .= $language->get('text_new_order_total') . "\n";
    
    					foreach ($order_total_query->rows as $total) {
    						$text .= $total['title'] . ': ' . html_entity_decode($this->currency->format($total['value'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8') . "\n";
    					}
    
    					$text .= "\n";
    
    					if ($order_info['comment']) {
    						$text .= $language->get('text_new_comment') . "\n\n";
    						$text .= $order_info['comment'] . "\n\n";
    					}
    
    					$mail = new Mail();
    					$mail->protocol = $this->config->get('config_mail_protocol');
    					$mail->parameter = $this->config->get('config_mail_parameter');
    					$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
    					$mail->smtp_username = $this->config->get('config_mail_smtp_username');
    					$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
    					$mail->smtp_port = $this->config->get('config_mail_smtp_port');
    					$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');
    
    					$mail->setTo($this->config->get('config_email'));
    					$mail->setFrom($this->config->get('config_email'));
    					$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
    					$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
    					$mail->setHtml($this->load->view('mail/order', $data));
    					$mail->setText($text);
    					$mail->AddAttachment(DIR_UPLOAD.'/file.xlsx', "Заказ.xls");
    					$mail->send();
    
    					// Send to additional alert emails
    					$emails = explode(',', $this->config->get('config_alert_email'));
    
    					foreach ($emails as $email) {
    						if ($email && preg_match($this->config->get('config_mail_regexp'), $email)) {
    							$mail->setTo($email);
    							$mail->send();
    						}
    					}
    				}

    В чем может быть проблема?

     

  2. 			$data['categories'] = array();
    
    			$results = $this->model_catalog_category->getCategories($category_id);
    
    			foreach ($results as $result) {
    				$filter_data = array(
    					'filter_category_id'  => $result['category_id'],
    					'filter_sub_category' => true
    				);
    			
    				if ($result['image']) {
    					$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height'));
    					$image_coll = 'image/'.$result['image'];
    				} else {
    					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height'));
    					$image_coll = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height'));
    				}
    			
    				
    				$children_data = array();
    				$children = $this->model_catalog_category->getCategories($result['category_id']);
    				
    				foreach ($children as $child) {
    					$filter_data = array(
    						'filter_category_id'  => $child['category_id'],
    						'filter_sub_category' => true
    					);
    
    					$children_data[] = array(
    						'name'  => $child['name'],
    						'href'  => $this->url->link('product/category', 'path=' . $result['category_id'] . '_' . $child['category_id'])
    					);
    				}
    				
    				$data['categories'][] = array(
    					'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
    					'thumb' => $image,		
    					'children' => $children_data,
    					'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
    				);
    
    			}

     

  3. Добрый день!

     

    Для опции type=TEXT сделал autocomplete, при клике по полю - отображает пустые значения. В товаре сделал отдельное поле "patina", по которому и происходит поиск.

    image.png.57942c258e8157b2598403c92919cf0c.pngimage.png.46d7238c8528b50ab9ce7cf2b3cd2b7a.png

     

    Если ввожу нужное значение, то подбор работает нормально:

    image.png.368d2214a0c8bbed9d04a2a1840da3e8.png

     

    Как сделать так, чтобы выводились значения товаров, где заполнено только данное поле (patina)? 

     

    category.tpl

    				<?php if ($option['option_id'] == '18') { ?>
                    <script type="text/javascript">
                    <!--
                    $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').autocomplete({
                      'source': function(request, response) {
                        $.ajax({
                          url: 'index.php?route=product/product/autocomplete_patina&filter_patina=' + encodeURIComponent(request),
                          dataType: 'json',
                          success: function(json) {
                            response($.map(json, function(item) {
                              return {
                                label: item['name'],
                                value: item['product_id']
                              }
                            }));
                          }
                        });
                      },
                      'select': function(item) {
                        $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').val(item['label']);
                      }
                    });
                    //-->
                    </script>
                    <?php } ?>
    /*controller product.php */
    
    public function autocomplete_patina() {
    		$json = array();
    
    		if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_patina'])) {
    			$this->load->model('catalog/product');
    
    			if (isset($this->request->get['filter_patina'])) {
    				$filter_patina = $this->request->get['filter_patina'];
    			} else {
    				$filter_patina = '';
    			}
    
    			if (isset($this->request->get['limit'])) {
    				$limit = $this->request->get['limit'];
    			} else {
    				$limit = 10;
    			}
    
    			$filter_data = array(
    				'filter_patina' => $filter_patina,
    				'start'        => 0,
    				'limit'        => $limit
    			);
    
    			$results = $this->model_catalog_product->getProducts($filter_data);
    
    			foreach ($results as $result) {
    
    				$json[] = array(
    					'product_id' => $result['product_id'],
    					'name'       => strip_tags(html_entity_decode($result['patina'], ENT_QUOTES, 'UTF-8')),
    					'price'      => $result['price']
    				);
    			}
    		}
    
    		$this->response->addHeader('Content-Type: application/json');
    		$this->response->setOutput(json_encode($json));
    	}

    в модель product.php, в getProducts добавил следующее

    		if (!empty($data['filter_model'])) {
    			$sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'";
    		}		
    		
    		if (!empty($data['filter_patina'])) {
    			$sql .= " AND p.patina LIKE '%" . $this->db->escape($data['filter_patina']) . "%'";
    		}	

     

  4. 11 минут назад, deeman сказал:

    Не понял сообщение.

    непонятен смысл тогда наборов полей у доставок? Зачем мне заполненные допполя из другого способа доставки?

    image.thumb.png.26625e84e52a0c1efdaaf73aa2e716cc.png

  5. У доставки, способа - "Транспортная компания", сделан набор полей:

    image.png.029b168d3ac0bac81a2191a7e9da05f8.png

     

    При выборе другого способа доставки (в нашем случае "По Златоусту") и оформлении заказа в админке в кастомных полях отображается, что выбран "Луч"

     

    image.png.5376d8fa1bdec034cac6f88f4a21ba07.png      image.png.265dfdf82b6c82bfbdc7ad5303fd2a19.png

     

    1. как мне можно отключить/убрать автовыбор транспортной компании, если не выбран данный способ? Такая же ситуация с самовывозом (автоматически проставляет точки выдачи).

    image.thumb.png.4f2552e3b6e24adcd4189d43838140f3.png

     

    2. И, следовательно из предыдущего вопроса, как мне грамотно вывести и в админке и в письме эти поля? чтобы, если выбрана ТК, то рядом было написано какая компания и т.д.

     

     

  6. В 10.08.2020 в 15:50, Leingard сказал:

     

    Ну смотрите, там таблица, значит колонок должно быть одинаковое количество. Посему лучше на каждый товар создать свою табличку ибо кол-во выбранных опций может быть разное + внизу общую для total

     

    1. Берем массив $product

    2. Создаем таблицу и выводим td по кол-ву цикла задавая названия. Типо такого:

    
    <table>
    <tr>
    <td><?php echo $column_product; ?></td>
    <td><?php echo $column_price; ?></td>
    <?php foreach ($product['option'] as $product_option) { 
    echo '<td class="text-left">'.$product_option['name']</td>';
    } ?>
    </tr>
    <tr>
    <td><?php echo $product['name']; ?></td>
    <td><?php echo $product['price']; ?></td>
    <?php foreach ($product['option'] as $product_option) { 
    echo '<td class="text-left">'.$product_option['value']</td>';
    } ?>
    </tr>
    </table>

    3. Добавляем остальные элементы (я 2 добавил, цена и название) и остальные по вкусу :)  + проверки на пустоту)

     

    Как-то так) Набросал без теста, чисто по памяти блоков, но суть думаю понята :) 

     

    Опции не сортируются. Если хотите задать свою сортировку, добавьте ее в getOrderOptions

     

    а как сделать, чтобы незаполненная опция (не обязательная для заполнения) тоже записывалась в базу?

  7. появилась следующая проблема. Импортировал товары с атрибутами, картинками. Но забыл создать производителей. Теперь мне надо обновить товары, создать производителей. Создаю производителей - ничего не происходит, в логах ничего нет, производители не создаются.

  8. 2 часа назад, ambalocha69 сказал:

    Добрый день!

    ни о чем не говорит? :-)

    откройте ссылку в браузере и все станет сразу ясно

    Сейчас взял у поставщика нормальный файл...

     

    Цитата

    Файл: http://elektrostandard.ru/images/catalog/1a049748_0004.jpg Недопустимый тип: ["HTTP\/1.1 301 Moved Permanently","Date: Fri, 18 Sep 2020 11:13:13 GMT","Server: Apache\/2.4.18 (Ubuntu)","Location: https:\/\/elektrostandard.ru\/images\/catalog\/1a049748_0004.jpg","Content-Length: 351","Connection: close","Content-Type: text\/html; charset=iso-8859-1","HTTP\/1.1 200 OK","Date: Fri, 18 Sep 2020 11:13:13 GMT","Server: Apache\/2.4.18 (Ubuntu)","Last-Modified: Mon, 07 Sep 2020 13:33:04 GMT","ETag: \"44006-5aeb94210e7c8\"","Accept-Ranges: bytes","Content-Length: 278534","Connection: close","Content-Type: image\/jpeg"]

     

    проблема решена.

  9. 12 минут назад, ambalocha69 сказал:

    Добрый день!

    ни о чем не говорит? :-)

    откройте ссылку в браузере и все станет сразу ясно

    дык в том то и дело, что в YML файле-то все нормально...

     

    похоже я увидел проблему...)

  10. Добрый день! 

    Подскажите, пожалуйста, почему вот такая ошибка вылезает и соотв. не импортируются изображения:

     

    Цитата

    Файл: https://elektrostandard.ru/images/catalog/1a048710_0001.jpgimages/catalog/ulichnyy-svetilnik-na-stolbe-apus-f-shokolad-ip44-gl-1009f-a043116_0002.jpg Недопустимый тип: ["HTTP\/1.0 404 Not Found","Date: Wed, 16 Sep 2020 12:46:07 GMT","Server: Apache\/2.4.18 (Ubuntu)","Cache-Control: no-cache, private","Connection: close","Content-Type: text\/html; charset=UTF-8"]

     

    файл yml в приложении

    prices-elektrostandard-rur.zip

  11. Добрый день! Делаю autocomplete для опций. Для одной опции работает, делаю для других - выдает пустые значения (второй скрин). Поля patina и dekor - сделаны, работают правильно.

    image.png   image.png.d10e8d988f3f85062840a07b281989b5.png

     

    controller/product

    public function autocomplete() {
    		$json = array();
    
    		if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_model']) || isset($this->request->get['filter_patina']) || isset($this->request->get['filter_dekor'])) {
    			$this->load->model('catalog/product');
    
    			if (isset($this->request->get['filter_name'])) {
    				$filter_model = $this->request->get['filter_name'];
    			} else {
    				$filter_model = '';
    			}
    			
    			if (isset($this->request->get['filter_patina'])) {
    				$filter_patina = $this->request->get['filter_patina'];
    			} else {
    				$filter_patina = '';
    			}
    
    			if (isset($this->request->get['filter_dekor'])) {
    				$filter_dekor = $this->request->get['filter_dekor'];
    			} else {
    				$filter_dekor = '';
    			}
    
    			if (isset($this->request->get['limit'])) {
    				$limit = $this->request->get['limit'];
    			} else {
    				$limit = 10;
    			}
    
    			$filter_data = array(
    				'filter_model' => $filter_model,
    				'filter_patina' => $filter_patina,
    				'filter_dekor' => $filter_dekor,
    				'start'        => 0,
    				'limit'        => $limit
    			);
    
    			$results = $this->model_catalog_product->getProducts($filter_data);
    
    			foreach ($results as $result) {
    
    				$json[] = array(
    					'product_id' => $result['product_id'],
    					'name'       => strip_tags(html_entity_decode($result['model'], ENT_QUOTES, 'UTF-8')),
    					'patina'	 => strip_tags(html_entity_decode($result['patina'], ENT_QUOTES, 'UTF-8')),
    					'dekor'	 => strip_tags(html_entity_decode($result['dekor'], ENT_QUOTES, 'UTF-8')),
    					'price'      => $result['price']
    				);
    			}
    		}
    
    		$this->response->addHeader('Content-Type: application/json');
    		$this->response->setOutput(json_encode($json));
    	}

     

    model/product

    getProducts()

    public function getProducts($data = array()) {
    		$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special";
    
    		if (!empty($data['filter_category_id'])) {
    			if (!empty($data['filter_sub_category'])) {
    				$sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)";
    			} else {
    				$sql .= " FROM " . DB_PREFIX . "product_to_category p2c";
    			}
    
    			if (!empty($data['filter_filter'])) {
    				$sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)";
    			} else {
    				$sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)";
    			}
    		} else {
    			$sql .= " FROM " . DB_PREFIX . "product p";
    		}
    
    		$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
    
    		if (!empty($data['filter_category_id'])) {
    			if (!empty($data['filter_sub_category'])) {
    				$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
    			} else {
    				$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
    			}
    
    			if (!empty($data['filter_filter'])) {
    				$implode = array();
    
    				$filters = explode(',', $data['filter_filter']);
    
    				foreach ($filters as $filter_id) {
    					$implode[] = (int)$filter_id;
    				}
    
    				$sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")";
    			}
    		}
    		
    		if (!empty($data['filter_model'])) {
    			$sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'";
    		}		
    		
    		if (!empty($data['filter_patina'])) {
    			$sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_patina']) . "%'";
    		}	
    		
    		if (!empty($data['filter_dekor'])) {
    			$sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_dekor']) . "%'";
    		}
    
    		if (!empty($data['filter_name']) || !empty($data['filter_tag'])) {
    			$sql .= " AND (";
    
    			if (!empty($data['filter_name'])) {
    				$implode = array();
    
    				$words = explode(' ', trim(preg_replace('/\s+/', ' ', $data['filter_name'])));
    
    				foreach ($words as $word) {
    					$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";
    				}
    
    				if ($implode) {
    					$sql .= " " . implode(" AND ", $implode) . "";
    				}
    
    				if (!empty($data['filter_description'])) {
    					$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
    				}
    			}
    
    			if (!empty($data['filter_name']) && !empty($data['filter_tag'])) {
    				$sql .= " OR ";
    			}
    
    			if (!empty($data['filter_tag'])) {
    				$implode = array();
    
    				$words = explode(' ', trim(preg_replace('/\s+/', ' ', $data['filter_tag'])));
    
    				foreach ($words as $word) {
    					$implode[] = "pd.tag LIKE '%" . $this->db->escape($word) . "%'";
    				}
    
    				if ($implode) {
    					$sql .= " " . implode(" AND ", $implode) . "";
    				}
    			}
    
    			if (!empty($data['filter_name'])) {
    				$sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
    				$sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
    				$sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
    				$sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
    				$sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
    				$sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
    				$sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
    			}
    
    			$sql .= ")";
    		}
    
    		if (!empty($data['filter_manufacturer_id'])) {
    			$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'";
    		}
    
    		$sql .= " GROUP BY p.product_id";
    
    		$sort_data = array(
    			'pd.name',
    			'p.model',
    			'p.quantity',
    			'p.price',
    			'rating',
    			'p.sort_order',
    			'p.date_added'
    		);
    
    		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
    			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
    				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
    			} elseif ($data['sort'] == 'p.price') {
    				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
    			} else {
    				$sql .= " ORDER BY " . $data['sort'];
    			}
    		} else {
    			$sql .= " ORDER BY p.sort_order";
    		}
    
    		if (isset($data['order']) && ($data['order'] == 'DESC')) {
    			$sql .= " DESC, LCASE(pd.name) DESC";
    		} else {
    			$sql .= " ASC, LCASE(pd.name) ASC";
    		}
    
    		if (isset($data['start']) || isset($data['limit'])) {
    			if ($data['start'] < 0) {
    				$data['start'] = 0;
    			}
    
    			if ($data['limit'] < 1) {
    				$data['limit'] = 20;
    			}
    
    			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
    		}
    
    		$product_data = array();
    
    		$query = $this->db->query($sql);
    
    		foreach ($query->rows as $result) {
    			$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
    		}
    
    		return $product_data;
    	}

    template 

    <?php if ($option['type'] == 'text') { ?>
                    <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>" <?php if ($option['option_id']=='17' ) { ?>id="plenka"
                      <?php } ?>>
                      <label class="control-label" for="<?php echo $module_name; ?>input-option<?php echo $option['product_option_id']; ?>">
                        <?php echo $option['name']; ?></label>
                      <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['value']; ?>" placeholder="<?php echo $option['name']; ?>" id="<?php echo $module_name; ?>input-option<?php echo $option['product_option_id']; ?>" class="form-control" />
                    </div>
                    <?php if ($option['option_id'] == '17') { ?>
                    <script type="text/javascript">
                    <!--
                    $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').autocomplete({
                      'source': function(request, response) {
                        $.ajax({
                          url: 'index.php?route=product/product/autocomplete&filter_name=' + encodeURIComponent(request),
                          dataType: 'json',
                          success: function(json) {
                            response($.map(json, function(item) {
                              return {
                                label: item['name'],
                                value: item['product_id']
                              }
                            }));
                          }
                        });
                      },
                      'select': function(item) {
                        $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').val(item['label']);
                      }
                    });
                    //-->
                    </script>
                    <?php } ?>
    				<?php if ($option['option_id'] == '18') { ?>
                    <script type="text/javascript">
                    <!--
                    $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').autocomplete({
                      'source': function(request, response) {
                        $.ajax({
                          url: 'index.php?route=product/product/autocomplete&filter_patina=' + encodeURIComponent(request),
                          dataType: 'json',
                          success: function(json) {
                            response($.map(json, function(item) {
                              return {
                                label: item['patina'],
                                value: item['product_id']
                              }
                            }));
                          }
                        });
                      },
                      'select': function(item) {
                        $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').val(item['label']);
                      }
                    });
                    //-->
                    </script>
                    <?php } ?>
    				
    				<?php if ($option['option_id'] == '19') { ?>
                    <script type="text/javascript">
                    <!--
                    $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').autocomplete({
                      'source': function(request, response) {
                        $.ajax({
                          url: 'index.php?route=product/product/autocomplete&filter_dekor=' + encodeURIComponent(request),
                          dataType: 'json',
                          success: function(json) {
                            response($.map(json, function(item) {
                              return {
                                label: item['dekor'],
                                value: item['product_id']
                              }
                            }));
                          }
                        });
                      },
                      'select': function(item) {
                        $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').val(item['label']);
                      }
                    });
                    //-->
                    </script>
                    <?php } ?>
                    <?php } ?>

     

  12. Добрый день! Подскажите, пожалуйста, как добавить несколько стран к карте России? Казахстан с Белоруссией выдернул и добавил, а вот Молдова и Румыния добавляются не туда. Координаты взял с карты мира. Что не так делаю?

     

    image.thumb.png.9e716cdd9462c4182a5959ac2582400c.png

     

     

    jquery.vmap.rus.js

  13. 7 минут назад, Fuf сказал:

     

    В любом случае для диагностики нужны подробности ошибки.

    Посмотрите самостоятельно в логе модуля или запросите информацию у техподдержки Яндекс.Кассы ([email protected]).

    2020-08-11 16:14:13 - [info] [1] [9ca927da7c043a5c455b492eed5e098f] - extension/payment/yandex_money/kassa_form_b2b
    2020-08-11 16:14:15 - [info] [1] [9ca927da7c043a5c455b492eed5e098f] - Создание платежа для заказа №79
    2020-08-11 16:14:15 - [info] [1] [9ca927da7c043a5c455b492eed5e098f] - Send request: POST /payments
    2020-08-11 16:14:15 - [info] [1] [9ca927da7c043a5c455b492eed5e098f] - Response with code 400 received.
    2020-08-11 16:14:15 - [error] [1] [9ca927da7c043a5c455b492eed5e098f] - Failed to create payment: Payment method is not available. Error code: invalid_request.
    2020-08-11 16:14:15 - [warning] [1] [9ca927da7c043a5c455b492eed5e098f] - None empty buffer: 
    2020-08-11 16:14:15 - [info] [1] [9ca927da7c043a5c455b492eed5e098f] - Платеж не прошел. Попробуйте еще или выберите другой способ оплаты

    image.thumb.png.c621558aac6dc0557520344ccf3bf1fa.png

     

  14. 4 часа назад, Fuf сказал:

    Замените вызов номера версии на значение string.

    Информация о проблеме передана разработчикам модуля, в самом коде модуля будет поправлено в следующих версиях.

    спасибо! Но теперь выдает ошибку, что платеж не прошел:

    image.thumb.png.4a91221f94b25f85c307994fa1b39572.png

    в логах ошибок нет, модуль кассы работает 

     

    image.png.0ebf916e5843cf6e779dfecf0f2844e5.png

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.