v.uljanov
Постоялец
- Регистрация
- 5 Дек 2014
- Сообщения
- 91
- Реакции
- 50
- Автор темы
- #1
Помогите решить проблему. Сам я в PHP понимаю мало.
Есть модуль sms_sending_prestashop
Модуль рабочий, смс отправляет. Только этот модуль берет информацию о номере заказа из таблицы "cart", эта таблица включает в себя так же и брошенные корзины (т.е заказ оформлен не был, смс не отправлялась а id увеличился на 1).
И получается так что номер реального заказа и просто корзины (например брошенной) разный. id корзины постоянно будет увеличиваться в зависимости от брошенных корзин.
Это не правильно, логичнее что бы модуль брал id заказа из таблицы "orders" там содержатся уже совершенные, законченные заказы. Как реализовать данный функционал в модуле?
Вот код модуля:
Или посоветуйте нормальный модуль.
Есть модуль 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;
}
}
Или посоветуйте нормальный модуль.
Последнее редактирование модератором: