Помогите решить проблему. Сам я в PHP понимаю мало. Есть модуль sms_sending_prestashop Модуль рабочий, смс отправляет. Только этот модуль берет информацию о номере заказа из таблицы "cart", эта таблица включает в себя так же и брошенные корзины (т.е заказ оформлен не был, смс не отправлялась а id увеличился на 1). И получается так что номер реального заказа и просто корзины (например брошенной) разный. id корзины постоянно будет увеличиваться в зависимости от брошенных корзин. Это не правильно, логичнее что бы модуль брал id заказа из таблицы "orders" там содержатся уже совершенные, законченные заказы. Как реализовать данный функционал в модуле? Вот код модуля: <?php if (!defined('_CAN_LOAD_FILES_')) { exit; } class sms_sending_prestashop extends Module { private $_html = ''; public function __construct() { $this->name = 'sms_sending_prestashop'; $this->tab = 'others'; $this->version = '1.0'; $this->author = 'SMS-sending.ru'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('SMS-sending.ru'); $this->description = $this->l('SMS оповещение с помощью SMS-sending.ru'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); } public function install() { if (!parent::install() || !$this->registerHook('actionValidateOrder') || !Configuration::updateValue('sms_sending_login', '') || !Configuration::updateValue('sms_sending_password', '') || !Configuration::updateValue('sms_sending_phone', '') || !Configuration::updateValue('sms_sending_zag', '') || !Configuration::updateValue('sms_sending_ToAdmin', 0) || !Configuration::updateValue('sms_sending_ToUser', 0) || !Configuration::updateValue('sms_sending_AdminTpl', "Поступил новый заказ №{NUM}, на сумму - {SUM}, от {FIRSTNAME} {LASTNAME}. Город - {CITY}") || !Configuration::updateValue('sms_sending_UserTpl', "Уважаемый, {FIRSTNAME}. Ваш заказ №{NUM} принят. Сумма заказа - {SUM}.")) { return false; } return true; } public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('sms_sending_login') || !Configuration::deleteByName('sms_sending_password') || !Configuration::deleteByName('sms_sending_phone') || !Configuration::deleteByName('sms_sending_zag') || !Configuration::deleteByName('sms_sending_ToUser') || !Configuration::deleteByName('sms_sending_ToAdmin') || !Configuration::deleteByName('sms_sending_AdminTpl') || !Configuration::deleteByName('sms_sending_UserTpl')) { return false; } return true; } public function hookActionValidateOrder($params) { $settings = Configuration::getMultiple(array('sms_sending_login', 'sms_sending_password', 'sms_sending_phone', 'sms_sending_zag', 'PS_SHOP_NAME', 'sms_sending_ToAdmin', 'sms_sending_ToUser', 'sms_sending_AdminTpl', 'sms_sending_UserTpl')); if(strlen($settings['sms_sending_login']) > 0 && strlen($settings['sms_sending_password']) > 0) { $address = new Address(intval($params['cart']->id_address_delivery)); $currency = new Currency(intval($params['cart']->id_currency)); $orderCurrency = $currency->sign; $phone = $address->phone_mobile; $theCart = new Cart($params['cart']->id); $total = $theCart->getOrderTotal(true, Cart::BOTH); $total.=" ".$orderCurrency; if($settings['sms_sending_ToAdmin'] == 1) { $tpl = $settings['sms_sending_AdminTpl']; $tpl = str_replace('{FIRSTNAME}', $address->firstname, $tpl); $tpl = str_replace('{LASTNAME}', $address->lastname, $tpl); $tpl = str_replace('{CITY}', $address->city, $tpl); $tpl = str_replace('{NUM}', $params['cart']->id, $tpl); $tpl = str_replace('{SUM}', $total, $tpl); $tpl = str_replace('{SHOP_NAME}', $settings['PS_SHOP_NAME'], $tpl); file_get_contents("http://lcab.sms-sending.ru/lcabApi/sendSms.php?login=".$settings['sms_sending_login']."&password=".$settings['sms_sending_password']."&to=".$settings["sms_sending_phone"]."&source=".$settings['sms_sending_zag']."&txt=".urlencode($tpl)); } if($settings['sms_sending_ToUser'] == 1) { $tpl = $settings['sms_sending_UserTpl']; $tpl = str_replace('{FIRSTNAME}', $address->firstname, $tpl); $tpl = str_replace('{LASTNAME}', $address->lastname, $tpl); $tpl = str_replace('{CITY}', $address->city, $tpl); $tpl = str_replace('{NUM}', $params['cart']->id, $tpl); $tpl = str_replace('{SUM}', $total, $tpl); $tpl = str_replace('{SHOP_NAME}', $settings['PS_SHOP_NAME'], $tpl); file_get_contents("http://lcab.sms-sending.ru/lcabApi/sendSms.php?login=".$settings['sms_sending_login']."&password=".$settings['sms_sending_password']."&to=".$phone."&source=".$settings['sms_sending_zag']."&txt=".urlencode($tpl)); } } } public function getContent() { $output = null; if (Tools::isSubmit('submitLogin')) { $sms_sending_login = strval(Tools::getValue('sms_sending_login')); $sms_sending_password = strval(Tools::getValue('sms_sending_password')); $sms_sending_phone = Tools::getValue('sms_sending_phone'); $sms_sending_zag = Tools::getValue('sms_sending_zag'); $sms_sending_ToAdmin = Tools::getValue('sms_sending_ToAdmin') == "on"?1:0; $sms_sending_ToUser = Tools::getValue('sms_sending_ToUser') == "on"?1:0; $sms_sending_AdminTpl = Tools::getValue('sms_sending_AdminTpl'); $sms_sending_UserTpl = Tools::getValue('sms_sending_UserTpl'); if (!$sms_sending_login || empty($sms_sending_login)) $output .= $this->displayError( $this->l('Неверный формат логина') ); else if (!$sms_sending_password || empty($sms_sending_password)) { $output .= $this->displayError( $this->l('Неверный формат пароля') ); }else if (!$sms_sending_phone || empty($sms_sending_phone)) { $output .= $this->displayError( $this->l('Неверный формат телефона') ); }else { Configuration::updateValue('sms_sending_login', $sms_sending_login); Configuration::updateValue('sms_sending_password', $sms_sending_password); Configuration::updateValue('sms_sending_ToAdmin', $sms_sending_ToAdmin); Configuration::updateValue('sms_sending_ToUser', $sms_sending_ToUser); Configuration::updateValue('sms_sending_phone', $sms_sending_phone); Configuration::updateValue('sms_sending_zag', $sms_sending_zag); Configuration::updateValue('sms_sending_AdminTpl', $sms_sending_AdminTpl); Configuration::updateValue('sms_sending_UserTpl', $sms_sending_UserTpl); $output .= $this->displayConfirmation($this->l('Настройки обновлены')); } } return $output.$this->_displayForm(); } public function _displayForm() { $html = ""; $html.="<h2>".$this->l('Настройки')."</h2> <form style='background:#ffbc16;border-radius:5px;width:800px;padding:5px;' method='post' action='".Tools::safeOutput($_SERVER["REQUEST_URI"])."'> <table> <tr> <td>".$this->l("Логин от sms-sending.ru")."</td> <td><input type='text' value='".Configuration::get("sms_sending_login")."' name='sms_sending_login'></td> </tr> <tr> <td>".$this->l("Пароль от sms-sending.ru")."</td> <td><input type='password' value='".Configuration::get("sms_sending_password")."' name='sms_sending_password'></td> </tr> <tr> <td>".$this->l("Имя отправителя")."</td> <td><input type='text' value='".Configuration::get("sms_sending_zag")."' name='sms_sending_zag'></td> </tr> <tr> <td>".$this->l("Телефон администратора")."</td> <td><input type='text' value='".Configuration::get("sms_sending_phone")."' name='sms_sending_phone'></td> </tr> </table> <table> <tr> <td>Сообщение администратору</td> <td>Сообщение покупателю</td> </tr> <tr> <td><textarea name='sms_sending_AdminTpl' cols='40' rows='5'>".Configuration::get("sms_sending_AdminTpl")."</textarea></td> <td><textarea name='sms_sending_UserTpl' cols='40' rows='5'>".Configuration::get("sms_sending_UserTpl")."</textarea></td> <td valign='top'>Макросы: <br>{NUM} - номер заказа <br>{SUM} - сумма заказа <br>{FIRSTNAME} - Имя покупателя <br>{LASTNAME} - Фамилия покупателя <br>{CITY} - Город покупателя <br>{SHOP_NAME} - Название магазина </td> </tr> <tr> <td colspan='2'><input type='checkbox' name='sms_sending_ToAdmin'"; if (Configuration::get("sms_sending_ToAdmin") == 1) $html.=" checked='checked'"; $html.="> - Отправлять администратору</td> </tr> <tr> <td colspan='2'><input type='checkbox' name='sms_sending_ToUser'"; if (Configuration::get("sms_sending_ToUser") == 1) $html.=" checked='checked'"; $html.="> - Отправлять покупателю</td> </tr> <tr> <td colspan='2'><input type='submit' class='button' name='submitLogin' value='Сохранить'></td> </tr> </table> </form> "; return $html; } } Или посоветуйте нормальный модуль.
Presta CMC Модуль, версия 3.14 Только с ним тоже фигня. Работал прекрасно, а недавно стал отсылать смс от имени ABshop// Настройки все ок. Где рыть?
Там смс отправляется по ValidateOrder - это просто подтверждение заказа, возможно вам подойдёт по ConfirmationPayment (подтверждение оплаты) просто поменять ValidateOrder на ConfirmationPayment в вашем коде
Katerpiller, А где взять модуль sms_sending_prestashop подскажите ))) он платный или безплатный ? )) может есть ссылка где почитать))
создать папку sms_sending_prestashop и файл в ней sms_sending_prestashop.php эту папку с файлом закинуть в архив zip и установить через админку. я лично пользуюсь presta-sms но там нет рассылки по брошенным корзинам.
Насколько я вижу, вот в таких строках $tpl = str_replace('{NUM}', $params['cart']->id, $tpl);он и подтягивает инфу не оттуда. Попробовать сменить источник 'cart' на 'order'