Время доставки

Автор markopolo, 19 октября 2012, 00:16:58

« назад - далее »

markopolo

Уважаемые знатоки, а есть ли какое то решение для того что-бы покупатель при выборе доставки курьером мог сразу выбрать день доставки и время?

Единственное что нашел модуль Date of delivery, но он задает лишь сообщает клиенту примерную дату доставки. Не хочется звонить каждому клиенту и  договариваться о времени.

Спасибо.

petros

Есть модуль Date Picker (with hours) for Prestashop. Можно выбирать дату и время.

markopolo

Да хорошая штука. только платная.

Андрей

а где можно купить подскажите и сколько стоит?

petros

Цитата: Андрей от 28 ноября 2012, 12:08:28
а где можно купить подскажите и сколько стоит?
Если нужен, пиши в личку.

Андрей


mAgency

Цитата: petros от 19 октября 2012, 01:00:12
Есть модуль Date Picker (with hours) for Prestashop. Можно выбирать дату и время.
Только для версии 1.4
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

Андрей

Цитата: mAgency от 28 ноября 2012, 13:04:08
Цитата: petros от 19 октября 2012, 01:00:12
Есть модуль Date Picker (with hours) for Prestashop. Можно выбирать дату и время.
Только для версии 1.4

у меня 1.4.4.0

earoff

Ребята, поделитесь плиз

Руслан Л

А для престашопа в1.5 есть?

LiTiNuM

Я тоже решения не нашёл, поэтому сам создаю обходной путь.

Есть поля под выбор даты рождения. Так вот, добавляем туда два поля под выбор часов, переименовываем название с "Дата рождения" на "Желаемая дата доставки" и записываем в БД Год-месяц-день часы-часы. Изменения должны быть минимальны. Изменить также формирование 'birthday' в Customer.php.

Теперь реализация, в форму добавил новый <select>:
<select id="months" name="months">
<option value="">-</option>
{foreach from=$hours item=hour}
<option value="{$hours|escape:'htmlall':'UTF-8'}" {if isset($guestInformations) && ($guestInformations.sl_hour == $hour)} selected="selected"{/if}>{$hour|escape:'htmlall':'UTF-8'}&nbsp;</option>
{/foreach}
</selec


В TOOLS.php добавил:
public static function dateHours()
{
$tab = array();
for ($i = 1; $i != 25; $i++)
$tab[] = $i;
return $tab;
}


В контроллер AuthController.php добавил:
if (isset($_POST['hours']) && is_numeric($_POST['hours']))
$selectedHours = (int)($_POST['hours']);
$hours = Tools::dateHours();
...
'hours' = $hours,
'sl_hour' => (isset($selectedHours) ? $selectedHours : 0)


Но в select'е пусто, не подтягиваются значения.

Подскажите, пожалуйста, где ещё вносятся изменения???

LiTiNuM

Нашёл: OrderOpcController.php

Теперь нужно это в правильном формате писать в БД. Там поле с типом DATE... поменяю на VARCHAR (64)... нужно SELECT'ы к базе переписывать, где возраст собирается...

mAgency

Не только в бд тип поля изменить, еще и к классе Customer.php нужно поменять. а то проверку не пройдет.
'birthday' => array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'),
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

Adik

Проще добавить поле. Не нужно переделывать и можно и обновлять prestashop не боясь потерять данные.

LiTiNuM

Цитата: Adik от 06 октября 2014, 18:30:31
Проще добавить поле. Не нужно переделывать и можно и обновлять prestashop не боясь потерять данные.

Текстовое? Там уже есть поле для комментариев, проще в него ручками писать. Но мы не ищем лёгких путей. Я дату рождения трогать не стал, пришёл к тому, что проще добавить два select'a на форму и писать их в новое поле в БД.

В общем, там много, на самом деле мест, где вносятся обновления. Направьте меня, пожалуйста, если ошибаюсь:
1. Добавил в БД новое поле (ps_customer) - dtime, type=timestamp.
2. Tools.php, добавил генерацию часов на примере $DAYS, (от 10 до 22), появились две переменные: $hours и $hours2. В шаблоне OPC получаю их, есть возможность выбора через <select>.
3. Customer.php: шёл от примера birthday, копировал строку и переделывал под dtime. Вот пример (и для add и для update функций):

public function add($autodate = true, $null_values = true) {
***
$this->birthday = (empty($this->years) ? $this->birthday : (int)$this->years.'-'.(int)$this->months.'-'.(int)$this->days);
$this->dtime = ($this->dtime ? $this->dtime : (int)$this->hours.'-'.(int)$this->hours2);


4. Validate.php... ну, в общем, сделал следующее (первый раз делаю проверку, если что... и да-да, понимаю, что можно короче записать, потом пооптимизирую):

public static function isDTime($dtime) {
if (empty($date) || $date == '00-00')
return true;
if (preg_match('/^(([1][0])-(([1][0-9])|([2][0-2]))|([1][1])-(([1][1-9])|([2][0-2]))|([1][2])-(([1][2-9])|([2][0-2]))|([1][3])-(([1][3-9])|([2][0-2]))|([1][4])-(([1][4-9])|([2][0-2]))|([1][5])-(([1][5-9])|([2][0-2]))|([1][6])-(([1][6-9])|([2][0-2]))|([1][7])-(([1][7-9])|([2][0-2]))|([1][8])-(([1][8-9])|([2][0-2]))|([1][9])-(([1][9])|([2][0-2]))|([2][0])-([2][0-2])|([2][1])-([2][1-2])|([2][2])-([2][2]))?$/', $dtime))
return preg_match('/^([1-2][0-9])-([1-2][0-9])?$/', $dtime);
}


5. Вот тут начинаются танцы с бубнами! Контроллеры... О них никто не писал, но их много...
- AuthController.php - добавление в БД через POST... написал такое:
$customer->dtime = (empty($_POST['hours']) ? '' : (int)$_POST['hours'].'-'.(int)$_POST['hours2']);

- OrderOpcController.php, добавил условие + внёс в array переменные sl_hour и sl_hour2:

if ($customer->dtime)
$dtime = explode('-', $customer->dtime);
else
$dtime = array('0', '0');

***
'sl_hour' => $dtime[0],
'sl_hour2' => $dtime[1],
***


- IdentityController.php, залез в postProcess:

if (Tools::getValue('hours') != '' && Tools::getValue('hours2') != '')
  $this->customer->dtime = (int)(Tools::getValue('hours')).'-'.(int)(Tools::getValue('hours2'));
elseif (Tools::getValue('hours') == '' && Tools::getValue('hours2') == '')
  $this->customer->dtime = null;

В initContent я тоже залез. В общем, где был birthday - везде добавлял dtime.
На текущий момент при выборе времени доставки, к примеру, с 13 до 10 - выдаёт сообщение: dtime неверный.
Если время правильное - то CHROME - Technical Error, не может сохранить adresses (Гостевая покупка, завожу пользователя и адрес, выбираю время доставки и жму СОХРАНИТЬ).

Вопрос: что-то лишнее или где-то ещё нужно добавлять?