Изменение Времени И Даты Доставки
#1
Отправлено 29 Сентябрь 2014 - 10:41
Подскажите, как я могу решить следующую задачу:
Интернет-магазин осуществляет доставку продуктов только в субботу и воскресенье. Заказчик может осуществить заказ на субботу не позднее четверга 16-00, на воскресенье не позднее пятницы 16-00.
Отсюда вопрос, как реализовать данные условия.
1. В календаре выбора даты доставки клиент мог выбрать только сб и вс, будни должны быть серого цвета неактивны.
2. Если клиент осуществляет заказ до 16-00 четверга, то для него активны все последующие дни субботы и воскресенья.
3. Если клиент осуществляет заказ в промежуток между 16-00 четверга и 16-00 пятницы, для него активно только воскресенье текущей недели и сб и вс следующих недель.
4. Если клиент осуществляет заказ после 16-00 пятницы, для него неактивны сб и вс текущей недели.
5. Для выбора времени доставки было только два варианта "до 14-00" и "после 14-00"
Заранее премного благодарен за помощь!
#3
Отправлено 11 Октябрь 2014 - 05:58
#4
Отправлено 18 Ноябрь 2014 - 11:50
Пробовал пробовал по той ссылке - запутался конкретно, ничего не получается. Буду благодарен, если поможете.
Дни доставки: только среда и суббота.
По средам - можно выбрать из двух диапазонов времени: "с 20 до 22" и "с 22 до 24"
На среду заказы принимаются до 18ч вторника, на субботу - до 18ч пятницы (ну понятно, что во вторник в 13ч дня например можно заказать не на среду, а сразу на субботу и т.д.).
PS: представляю сколько должно быть терпения у модераторов, чтобы перекраивать похожие ответы и вникать в суть каждой проблемы
PPS: немного упростил - блок время доставки вообще скрыть, то есть можно выбрать только день доставки (с условием до 18ч, о котором я писал выше..)
Очень надеюсь на вашу помощь, чтоб наконец закончить с сайтом
#5
Отправлено 19 Ноябрь 2014 - 09:38
#6
Отправлено 20 Ноябрь 2014 - 04:32
$("#deliveryConvenientDate").datepicker({ dayNames : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'], dayNamesMin : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ], closeText : 'Готово', currentText : 'Сегодня' , duration : '', monthNames : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'], yearRange : "-6:+6", dateFormat : 'dd.mm.yy', minDate : new Date(), firstDay : 1 });замените на:
var date = new Date(); if(date.getHours() > 18 || date.getHours() == 0) { date.setDate(date.getDate() + 1); } $("#deliveryConvenientDate").datepicker({ dayNames : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'], dayNamesMin : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ], closeText : 'Готово', currentText : 'Сегодня' , duration : '', monthNames : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'], yearRange : "-6:+6", dateFormat : 'dd.mm.yy', minDate : new Date(), firstDay : 1, beforeShowDay: function(date) { var diff = new Date(); return [date.getDay() == 3 || date.getDay() == 6]; } });
#7
Отправлено 20 Ноябрь 2014 - 09:24
Так же попробовал вставить этот код в Быстрый заказ и далее из прошлой темы:
Цитата
<script type="text/javascript" src="{ASSETS_JS_PATH}forall.js"></script>
и замените её на
<script type="text/javascript" src="{ASSETS_JS_PATH}forall.js"></script>
<link rel="stylesheet" href="{ASSETS_STYLES_PATH}datepicker.css" type="text/css" />
<script type="text/javascript" src="{ASSETS_JS_PATH}datepicker.js"></script>
Перед проверкой не забудьте очистить кэш в вашем браузере.
#8
Отправлено 22 Ноябрь 2014 - 07:08
http://forum.storela...120#entry167585
Только вместо:
<script> $(function() { var minDate = new Date(); if ((minDate.getHours() >= 16 &amp;&amp; minDate.getDay() == 4) || (minDate.getHours() <= 16 &amp;&amp; minDate.getDay() == 5)) { minDate.setDate(minDate.getDate() + (minDate.getDay() == 4 ? 3 : 2)); } $("#quickDeliveryConvenientDate").datepicker({ dayNames: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'], dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ], closeText: 'Готово', currentText: 'Сегодня' , duration: '', monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'], yearRange: "-6:+6", dateFormat: 'dd.mm.yy', minDate: minDate, firstDay: 1, beforeShowDay: function(date) {return([date.getDay() == 0 || date.getDay() == 6, ''])} }); }); </script>вставьте:
<script> $(function() { var date = new Date(); if(date.getHours() > 18 || date.getHours() == 0) { date.setDate(date.getDate() + 1); } $("#deliveryConvenientDate").datepicker({ dayNames : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'], dayNamesMin : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ], closeText : 'Готово', currentText : 'Сегодня' , duration : '', monthNames : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'], yearRange : "-6:+6", dateFormat : 'dd.mm.yy', minDate : new Date(), firstDay : 1, beforeShowDay: function(date) { var diff = new Date(); return [date.getDay() == 3 || date.getDay() == 6]; } }); }); </script>
#9
Отправлено 23 Ноябрь 2014 - 22:18
#10
Отправлено 26 Ноябрь 2014 - 00:09
$("#deliveryConvenientDate").datepicker
на строку
$("#quickDeliveryConvenientDate").datepicker
#11
Отправлено 26 Ноябрь 2014 - 09:47
Vaccina (26 Ноябрь 2014 - 00:09) писал:
$("#deliveryConvenientDate").datepicker
на строку
$("#quickDeliveryConvenientDate").datepicker
ничего. кеш чистил. мистика какая-то..
PS: и по возможности, как сразу заодно убрать
Цитата
#12
Отправлено 28 Ноябрь 2014 - 09:40
#13
Отправлено 04 Декабрь 2014 - 06:23
minDate : new Date(),на:
minDate : date,
#14
Отправлено 19 Декабрь 2014 - 16:52
2. На данный момент у меня на сайте заказы можно формировать только на субботу и воскресенье. В преддверии нового года я хотел бы сделать возможность заказывать на 29.12.2014 и на 30.12.2014. Чтобы клиенты могли заказать на 29.12 до 16-00 27.12.2014, а на 30.12 до 16-00 28.12. Как это можно осуществить?
Заранее примногоблагодарен за ответ!
#15
Отправлено 20 Декабрь 2014 - 02:49
#17
Отправлено 24 Декабрь 2014 - 04:21
<script> $(function() { $('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function() { var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]'); var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]'); if (!timeFrom.length && !timeTo.length) { timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">'); timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">'); } timeFrom.val($(this).val() == '13' ? 8 : 14); timeTo.val($(this).val() == '13' ? 14 : 23); $(this).closest('form').append(timeFrom, timeTo); }).trigger('change'); }); </script>
на счет второго пункта советую просто отключить код на время данных дней
#18
Отправлено 26 Декабрь 2014 - 08:57
Vaccina (24 Декабрь 2014 - 04:21) писал:
<script> $(function() { $('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function() { var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]'); var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]'); if (!timeFrom.length && !timeTo.length) { timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">'); timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">'); } timeFrom.val($(this).val() == '13' ? 8 : 14); timeTo.val($(this).val() == '13' ? 14 : 23); $(this).closest('form').append(timeFrom, timeTo); }).trigger('change'); }); </script>
на счет второго пункта советую просто отключить код на время данных дней
Вставил в быстрый заказ. Но ничего не изменилось.
#19
Отправлено 27 Декабрь 2014 - 03:01
<script> $(function () { setTimeout(function () { $('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function () { var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]'); var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]'); if (!timeFrom.length && !timeTo.length) { timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">'); timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">'); } timeFrom.val($(this).val() == '13' ? 8 : 14); timeTo.val($(this).val() == '13' ? 14 : 23); $(this).closest('form').append(timeFrom, timeTo); }).trigger('change'); }, 600); }); </script>
#20
Отправлено 30 Декабрь 2014 - 21:12
Vaccina (27 Декабрь 2014 - 03:01) писал:
<script> $(function () { setTimeout(function () { $('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function () { var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]'); var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]'); if (!timeFrom.length && !timeTo.length) { timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">'); timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">'); } timeFrom.val($(this).val() == '13' ? 8 : 14); timeTo.val($(this).val() == '13' ? 14 : 23); $(this).closest('form').append(timeFrom, timeTo); }).trigger('change'); }, 600); }); </script>
Не помогло. Все осталось так же.
Может быть, что-то поменять вот в этом коде в быстром заказе?
<li class="fields">
<div class="field">
<label for="quickDeliveryConvenientDate" {% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}class="required"{% ENDIF %}>Удобное время доставки{% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}<em>*</em>{% ENDIF %}</label>
<div class="input-box">
<select name="form[delivery][convenient_time_from]">
<option value="13">До 14:00</option>
<option value="15">После 14:00</option>
</select>
<select name="form[delivery][convenient_time_to]" style="display: none;">
<option value="1"></option>
</select>
</div>
</div>
</li>
{% ENDIF %}
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных