jonny008
-
Публикаций
143 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные jonny008
-
-
Новые заявки прогружаются, но не обновляются в случае изменения статуса.
-
Проверяйте точно все детали. Похоже, Вы, в поле типа int пытаетесь пихнуть значение вроде '618c5c27-17b2-11e9-8066-002590597037' - отсюда и результат...
Спасибо. Изменил на varchar
-
$_SESSION['last_1c_imported_product_num'] - переменная, которая УЖЕ используется и ее в новом функционале использовать нельзя.
Заменяйте на что-то типа $_SESSION['last_1c_imported_zakazs_num'].
Дело было не в этом. Странно почему не встаёт в поле id поле из XML - Документ->Ид
-
Здравствуйте. Сделал сервис по проверки статуса заказ наряда (добавил поля в БД, интерфейс в админке, импорт через csv, клиентская часть - здесь всё отлично). Не совсем правильно прогружаются поля в БД через 1С. Делал по подобию импорта товаров. Иногда парсится нормально, иногда только 4-5 позиций. Никак не хочет в id заказ наряда встать внешний id из 1С. Если полностью очистить таблицу, то первая выгрузка проходит отлично. Дальше через раз. Вот код:
if($simpla->request->get('type') == 'usc' && $simpla->request->get('mode') == 'checkauth') { print "success\n"; print session_name()."\n"; print session_id(); } if($simpla->request->get('type') == 'usc' && $simpla->request->get('mode') == 'init') { $tmp_files = glob($dir.'*.*'); if(is_array($tmp_files)) foreach($tmp_files as $z) { unlink($z); } unset($_SESSION['last_1c_imported_product_num']); print "zip=no\n"; print "file_limit=1000000\n"; } if($simpla->request->get('type') == 'usc' && $simpla->request->get('mode') == 'file') { $filename = basename($simpla->request->get('filename')); $f = fopen($dir.$filename, 'ab'); fwrite($f, file_get_contents('php://input')); fclose($f); print "success\n"; } if($simpla->request->get('type') == 'usc' && $simpla->request->get('mode') == 'import') { print "success\n"; $filename = basename($simpla->request->get('filename')); echo $filename; if($filename === 'usc_exchange.xml') { // Заказ наряды $z = new XMLReader; $z->open($dir.$filename); while ($z->read() && $z->name !== 'Документ'); // Последний заказ-наряд, на котором остановились $last_product_num = 0; if(isset($_SESSION['last_1c_imported_product_num'])) $last_product_num = $_SESSION['last_1c_imported_product_num']; // Номер текущего товара $current_product_num = 0; while($z->name === 'Документ') { if($current_product_num >= $last_product_num) { $xml = new SimpleXMLElement($z->readOuterXML()); // Товары import_zakaz($xml); $exec_time = microtime(true) - $start_time; if($exec_time+1>=$max_exec_time) { header ( "Content-type: text/xml; charset=utf-8" ); print "\xEF\xBB\xBF"; print "progress\r\n"; print "Выгружено заказ-нарядов: $current_product_num\r\n"; $_SESSION['last_1c_imported_product_num'] = $current_product_num; exit(); } } $z->next('Документ'); $current_product_num ++; } $z->close(); print "success"; print "Выгружено заказ-нарядов: $current_product_num\r\n"; //unlink($dir.$filename); unset($_SESSION['last_1c_imported_product_num']); } } function import_zakaz($xml) { global $simpla; global $dir; global $full_update; // Товары0 // Id товара и варианта (если есть) по 1С @list($usc_1c_id) = explode('#', $xml->Ид); if(empty($usc_1c_id)) $usc_1c_id = ''; // Подгатавливаем вариант $zakaz_id = null; $zakaz = new stdClass; $zakaz->sku = (string)$xml->Номер; $zakaz->id = $usc_1c_id; // Ищем заказанаряд $simpla->db->query('SELECT id FROM __zakazs WHERE id=?', $usc_1c_id); $id = $simpla->db->result('id'); if(empty($id)) { $id = $simpla->zakazs->add_zakaz( array( 'id'=>$usc_1c_id, 'name'=>$xml->name, 'sku'=>$xml->Номер, 'equipment'=>$xml->equipment, 'status'=>$xml->status ) ); } else { if($full_update) { $z = new stdClass(); $z->id = $usc_1c_id; $z->sku = $xml->Номер; $z->name = $xml->name; $z->equipment = $xml->equipment; $z->status = $xml->status; $id = $simpla->zakazs->update_zakaz($id, $z); } } }
и содержимое xml (блок Документ)
<Документ> <ТипДокумента>ЗаказНаряд</ТипДокумента> <Ид>618c5c27-17b2-11e9-8066-002590597037</Ид> <Номер>Ц0000528790</Номер> <sku>0528790</sku> <Дата>2019-01-14</Дата> <ХозОперация>Ремонт</ХозОперация> <Роль>Продавец</Роль> <Контрагенты> <Контрагент> <Ид>618c5c18-17b2-11e9-8066-002590597037</Ид> <Наименование>Мавлеева Наиля Исламгалеевна</Наименование> <ПолноеНаименование>Мавлеева Наиля Исламгалеевна</ПолноеНаименование> <Роль>Покупатель</Роль> </Контрагент> </Контрагенты> <name>Мавлеева Наиля Исламгалеевна</name> <equipment>СТИРАЛЬНАЯ МАШИНА BOSCH </equipment> <publish_date>2019-01-14</publish_date> <Время>09:34:44</Время> <Комментарий>Позвонить за 1 час!!!! Модель не знают</Комментарий> <status>Утверждено</status> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>НомерПо1С</Наименование> <Значение>Ц0000528790</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>ДатаПо1С</Наименование> <Значение>2019-01-14</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>ПометкаУдаления</Наименование> <Значение>false</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>Проведен</Наименование> <Значение>true</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Документ>
-
Здравствуйте, подскажите как правильно добавить доп параметры согласно ФФД 1.05 Нужно передать paymentMethod и paymentObject
$orderBundle['cartItems']['items'][$key]['itemAttributes'] = [ "attributes" => [ "name" => 'paymentMethod', "value" => $this->payment_settings['sbr_paymentMethod'], "name" => 'paymentObject', "value" => $this->payment_settings['sbr_paymentObject'] ] ];
Данный код выводит только последнее значение массива. Наверно из за дублирующихся ключей.
На сайте https://habr.com/post/434066/
Приведён пример:
{ "orderCreationDate": 1544553466000, "customerDetails": { "email": "test@222.ru", "phone": "42", "contact": "Max" }, "cartItems": { "items": [ { "positionId": 1, "name": "FFD 1.05", "quantity": { "value": 1, "measure": "ed" }, "itemCode": "item_1", "tax": { "taxType": 0, "taxSum": 0 }, "itemPrice": 100000, "itemAttributes": { "attributes" : [ { "name": "paymentMethod", "value": "1" }, { "name": "paymentObject", "value": "4" } ] } } ] } }
-
Немного другое решение для вывода переменной в шаблон.
Скачиваем SxGeo.php и SxGeoCity.dat с сайта http://sypexgeo.net/ru/download/
В файле IndexView.php после строки:
$this->design->assign('module', $module);
Пишем:
$client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; //echo $ip; include("SxGeo.php"); $SxGeo = new SxGeo('SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; $this->design->assign('city', $city);
В шаблоне выводим переменной {$city}
Определяет город с точностью 99%.
-
На сколько я понял это поддержка на стороне кассы, и именно там нужно подкручивать что-то.
Если онлайн касса, то спрашивать у сервиса как с этим работать.
В моем модуле все необходимые данные о товарах, ндс и системе налогоображения уже передаются.
Все остальное на стороне кассы.
К вам вообще никаких вопросов, вы молодец. Модуль у вас великолепный. В данном случае Сбер ведёт себя не совсем честно.
-
Сбербанк работает по устаревшей версии ФФД 1.0
Обещают на конец декабря сделать поддержку ФФД 1.05
Самое интересное, узнал об этом, только после подключения и подписания договора с СБ. Версия 1.0 уже не актуальна. Т.к отсутствует некоторые фискальные признаки - за их отсутствие полагается штраф с 2019г. При этом, не понятно, где нужны изменения под новую версию ФФД - или появятся доп. поля в админке Сбера или нужно через callback передавать данные.
-
У вас хостинг или VPS?
-
Спасибо автору. Всё работает. Только проблема, если нажали кнопку "перейти к оплате" и не оплатили (закрыли страницу браузера и т.д), то после нажатия на кнопку, будет выводить - Заказ с таким номером уже обработан
Такая проблема не только у Симплы. Может добавлять текущее время в номер заказа?
-
Доброго дня!
В очередной раз понадобилась доработка по увеличению скорость для гугла т.к. после всех модулей упала до 50, и нужен был поиск по товару в заказах , обратился к Виталий Лис скайп (vitas_159_). Перевел предоплату 1500руб. 19 июля 2018 сказал 2-3 дня и до сих пор нет результата. В конце написал что все сделал и залил. Но как поиска не было так и нет и скорость на том же месте. прилагаю скрин переписки и ссылку на гугл https://developers.google.com/speed/pagespeed/insights/?hl=ru&url=https%3A%2F%2Fyarnstore.by%2F&tab=desktop
Добавьте в .htaccess
# сжатие text, html, javascript, css, xml: <ifModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript </ifModule> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access 7 days" ExpiresByType application/javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" ExpiresByType text/css "access plus 1 year" ExpiresByType text/html "access plus 7 day" ExpiresByType text/x-javascript "access 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/x-icon "access 1 year" ExpiresByType application/x-shockwave-flash "access 1 year" </IfModule> # Google PageSpeed Insights модуль PageSpeed,есть не на всех хостингах и не везде может работать, нужно уточнять у хостеров <IfModule pagespeed_module> ModPagespeed on ModPagespeedRewriteLevel CoreFilters ModPagespeedEnableFilters make_google_analytics_async ModPagespeedEnableFilters prioritize_critical_css ModPagespeedEnableFilters defer_javascript ModPagespeedEnableFilters sprite_images ModPagespeedEnableFilters convert_png_to_jpeg,convert_jpeg_to_webp ModPagespeedEnableFilters collapse_whitespace,remove_comments </IfModule> # Cache-Control <ifModule mod_headers.c> # 30 дней <filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 30 дней <filesMatch "\.(css|js)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 30 дней <filesMatch "\.(eot|ttf|otf|woff)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 2 дня <filesMatch "\.(xml|txt)$"> Header set Cache-Control "max-age=172800, public, must-revalidate" </filesMatch> # 1 день <filesMatch "\.(html|htm|php)$"> Header set Cache-Control "max-age=172800, private, must-revalidate" </filesMatch> </ifModule>
И пересохраните картинки в более сжатом формате.
-
Без соответствия 54 ФЗ - это попадалово на штраф
Симпла из коробки вообще не соответствует ФЗ 54, наверное потому что клиенты (покупатели симплы) из Украины.
-
100% вирусня. Дайте ссылку пожалуйста
-
Все не так...
Смарти работает на сервере при генерации страницы, а джаваскрипт - в браузере юзера.
Получилось вот так вывести в переменную:
$client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; echo $ip; include("SxGeo.php"); $SxGeo = new SxGeo('SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; $this->design->assign('city', $city);
-
Здравствуйте. Подскажите пожалуйста как сделать так, чтобы при выборе способа доставки "Самовывоз" делалась скидка на заказ в размере 10%. Выбор способа доставки реализован на radio
<div id="deliveries"> <div class="deline"> <div class="chk"> <input type="radio" name="delivery_id" value="1" checked="" id="deliveries_1"> <label for="deliveries_1"> Курьерская доставка по Москве </label> </div> </div> <div class="deline"> <div class="chk"> <input type="radio" name="delivery_id" value="2" id="deliveries_2"> <label for="deliveries_2"> Самовывоз </label> </div> </div> <div class="clear"></div> </div>
Заранее благодарен за помощь.
Самое простое, это условие в CartView.php
После:
// Скидка $cart = $this->cart->get_cart();
Добавить:
if($order->delivery_id == 2) { $order->discount = 10; }
Сам id можно посмотреть в админке
-
Не подскажите в чём ошибка :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL' : failed to load external entity "http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL" in /var/www/html/123.ru/cron.php:14
-
Здравствуйте.
Пытаюсь назначить город в переменную smarty.
<script type="text/javascript"> window.onload = function () { var gorod; gorod = ymaps.geolocation.city; {assign var=user_region value = 'gorod'}; } </script> {$user_region}
Вообще никак не работает. Вопрос конечно глупый, но с javascript вообще никак. Подскажите пожалуйста, что не так.
-
Автора забанили, подобные реализации есть у меня (отдам без установки в виде файлов) и корса и еще у кого-то тут на форуме.
Цену напишите пожалуйста.
-
В htaccess
# Cache-Control <ifModule mod_headers.c> # 30 дней <filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 30 дней <filesMatch "\.(css|js)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 30 дней <filesMatch "\.(eot|ttf|otf|woff)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 2 дня <filesMatch "\.(xml|txt)$"> Header set Cache-Control "max-age=172800, public, must-revalidate" </filesMatch> # 1 день <filesMatch "\.(html|htm|php)$"> Header set Cache-Control "max-age=172800, private, must-revalidate" </filesMatch> </ifModule>
-
Надо вместоINNER JOIN __categories cчто-то типаLEFT JOIN __categories c ON c.id=pc.category_idИ, скорее всего, в другом месте запроса...
Спасибо большое. Заработало так:
// Товары $simpla->db->query("SET SQL_BIG_SELECTS=1"); // Товары $simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, c.efind, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id , i.filename as image FROM __variants v LEFT JOIN __products p ON v.product_id=p.id LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1) LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1) LEFT JOIN __categories c ON c.id=pc.category_id WHERE p.visible AND c.efind >0 AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");
-
Здравствуйте.
Есть необходимость выгрузить товары некоторых категории в XML
Для этого создал в таблице s_categories столбец efind
Далее в Categories.php в запросе добавил c.efind
// Выбираем все категории $query = $this->db->placehold("SELECT c.id, c.parent_id, c.name, c.description, c.url, c.efind, c.meta_title, c.meta_keywords, c.meta_description, c.image, c.visible, c.position FROM __categories c ORDER BY c.parent_id, c.name");
Далее в шаблоне админки и в контроллерах.
и в самом файле efind.php
// Товары $simpla->db->query("SET SQL_BIG_SELECTS=1"); // Товары $simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, c.efind, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id , i.filename as image FROM __variants v INNER JOIN __categories c LEFT JOIN __products p ON v.product_id=p.id LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1) LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1) WHERE p.visible AND c.efind >0 AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");
Всё на подобии выгрузки в ЯМ.
По такому запросы выводятся все товары. Я в запросах полный ноль.
-
Была такая ерунда.
В файле config.php
smarty_compile_check = true;
smarty_caching = false;smarty_cache_lifetime = 0;smarty_debugging = false;smarty_html_minify = true;Выключите кэширование и почистите папку compiled.
-
Подскажите пожалуйста, в Orders.php что нужно удалить, чтобы убрать проверку остатков товара.
-
В ProductView.php добавляем:
$product->min_price = min(array_map(function($v){return $v->price;}, $product->variants);
Добавлять после того, как уже определены варианты, но $product еще не назначено в шаблон.
Ну а далее спокойно используем в шаблоне {$product->min_price|convert}.
Актуально для php >= 5.3
В противном случае откажитесь от использования анонимной функции и напишите функцию для callback'а.
Всё супер, только скобку пропустили.
Прошу подсказки.
в Общие вопросы по функционалу и дизайну
Опубликовано
Попробуйте в файле Robokassa.php после строки
Добавить:
Далее ниже, измените $price на $new_price