diff --git a/__manifest__.py b/__manifest__.py index b5d5f55977d0319b04b39fd800a700eeebf6f53f..f846dcefd6cc09ef6d78b7562e39a010e11e847b 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -9,7 +9,7 @@ "application": False, "installable": True, "depends": [ - "website", "website_sale", "website_sale_delivery" + "website", "website_sale", "website_sale_delivery", "product_pack" ], "data": [ 'security/ir.model.access.csv', diff --git a/models/vracoop_point_retrait.py b/models/vracoop_point_retrait.py index e59b79ea7f13287194cf6afae09a7b89f8de4833..57b6fd8019a10f029b247da6579ea46a55306c3c 100644 --- a/models/vracoop_point_retrait.py +++ b/models/vracoop_point_retrait.py @@ -78,7 +78,7 @@ class VracoopPointRetrait(models.Model): ('dimanche', 6, 0, 'dim.'), ] for rec in self: - my_datetime = datetime.today() + today_datetime = datetime.today() return_slot_list = [] vals = [] exclure_days_nb = rec.vracoop_retrait_time_ids.search_count([ @@ -112,83 +112,53 @@ class VracoopPointRetrait(models.Model): hour = time_available_week.strftime("%H") minute = time_available_week.strftime("%M") interval = int(hour)*60 + int(minute) - - if week.day == my_datetime.day: - first_morning_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.first_morning_heure) - last_morning_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.last_morning_heure) - first_noon_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.first_noon_heure) - last_noon_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.last_noon_heure) - today_hour_available = my_datetime + timedelta( - hours=corresponding_line.preparation_time) - if (today_hour_available > first_morning_hour_week) and (today_hour_available < last_morning_hour_week): - dtstart_morning = today_hour_available - dtstart_noon = first_noon_hour_week - elif (today_hour_available > first_noon_hour_week) and (today_hour_available < last_noon_hour_week): - dtstart_morning = today_hour_available - dtstart_noon = today_hour_available - elif (today_hour_available > last_morning_hour_week) and (today_hour_available < first_noon_hour_week): - dtstart_morning = today_hour_available - dtstart_noon = first_noon_hour_week - else: - dtstart_morning = today_hour_available - dtstart_noon = today_hour_available - - list_slot_per_day_morning = list( - rrule( - MINUTELY, - interval=interval, - byweekday=byweekday, - dtstart=dtstart_morning, - until=last_morning_hour_week)) - list_slot_per_day_noon = list( - rrule( - MINUTELY, - interval=interval, - byweekday=byweekday, - dtstart=dtstart_noon, - until=last_noon_hour_week)) - else: - first_morning_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.first_morning_heure) - last_morning_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.last_morning_heure) - first_noon_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.first_noon_heure) - last_noon_hour_week = datetime( - week.year, week.month, week.day) + timedelta( - hours=corresponding_line.last_noon_heure) - list_slot_per_day_morning = list( - rrule( - MINUTELY, - interval=interval, - byweekday=byweekday, - dtstart=first_morning_hour_week, - until=last_morning_hour_week)) - list_slot_per_day_noon = list( - rrule( - MINUTELY, interval=interval, - byweekday=byweekday, - dtstart=first_noon_hour_week, - until=last_noon_hour_week)) + + first_morning_hour_week = datetime( + week.year, week.month, week.day) + timedelta( + hours=corresponding_line.first_morning_heure) + last_morning_hour_week = datetime( + week.year, week.month, week.day) + timedelta( + hours=corresponding_line.last_morning_heure) + first_noon_hour_week = datetime( + week.year, week.month, week.day) + timedelta( + hours=corresponding_line.first_noon_heure) + last_noon_hour_week = datetime( + week.year, week.month, week.day) + timedelta( + hours=corresponding_line.last_noon_heure) + + list_slot_per_day_morning = list( + rrule( + MINUTELY, + interval=interval, + byweekday=byweekday, + dtstart=first_morning_hour_week, + until=last_morning_hour_week)) + list_slot_per_day_noon = list( + rrule( + MINUTELY, interval=interval, + byweekday=byweekday, + dtstart=first_noon_hour_week, + until=last_noon_hour_week)) slots = [] nb_sale_slot = 0 - for slot_per_day_morning in list_slot_per_day_morning: - first_slot = slot_per_day_morning.strftime("%H:%M") - slot_per_day_morning = slot_per_day_morning + timedelta( + + today_hour_available = today_datetime + timedelta( + hours=corresponding_line.preparation_time) + + for slot_elem in list_slot_per_day_morning: + first_slot = slot_elem.strftime("%H:%M") + slot_elem_last = slot_elem + timedelta( hours=corresponding_line.availability_time) - last_slot = slot_per_day_morning.strftime("%H:%M") - + last_slot = slot_elem_last.strftime("%H:%M") + if slot_elem.date() == today_datetime.date(): + if (today_hour_available > slot_elem_last): + continue + if slot_elem_last >= last_morning_hour_week: + slot_elem_last = last_morning_hour_week + last_slot = slot_elem_last.strftime("%H:%M") + if slot_elem >= last_morning_hour_week: + continue + # Check number of maximum withdrawal not reached first_slot_hour = first_slot.split(":") first_slot_float = float( '%s.%s' % (first_slot_hour[0], first_slot_hour[1])) @@ -199,13 +169,20 @@ class VracoopPointRetrait(models.Model): if nb_sale_slot < rec.nb_max_retrait: slots.append((first_slot, last_slot)) - nb_sale_slot = 0 - for slot_per_day_noon in list_slot_per_day_noon: - first_slot = slot_per_day_noon.strftime("%H:%M") - slot_per_day_noon = slot_per_day_noon + timedelta( + for slot_elem in list_slot_per_day_noon: + first_slot = slot_elem.strftime("%H:%M") + slot_elem_last = slot_elem + timedelta( hours=corresponding_line.availability_time) - last_slot = slot_per_day_noon.strftime("%H:%M") - + last_slot = slot_elem_last.strftime("%H:%M") + if week.date() == today_datetime.date(): + if (today_hour_available > slot_elem_last): + continue + if slot_elem_last >= last_noon_hour_week: + slot_elem_last = last_noon_hour_week + last_slot = slot_elem_last.strftime("%H:%M") + if slot_elem >= last_noon_hour_week: + continue + # Check number of maximum withdrawal not reached first_slot_hour = first_slot.split(":") first_slot_float = float( '%s.%s' % (first_slot_hour[0], first_slot_hour[1])) diff --git a/static/src/js/vracoop_retrait.js b/static/src/js/vracoop_retrait.js index 80dce0bd7c522ebe4bf46fab737011fa897484b0..82103d1f4cc5441df349aa27cbfb9ae0f7beed5a 100644 --- a/static/src/js/vracoop_retrait.js +++ b/static/src/js/vracoop_retrait.js @@ -54,7 +54,6 @@ odoo.define('vracoop_click_and_collect.vracoop_retrait', function (require) { var _onDayClick = function(ev) { var day_retrait = $(ev.currentTarget).val(); - console.log(day_retrait); var values = {'day_retrait': day_retrait}; dp.add(ajax.jsonRpc('/shop/update_retrait', 'call', values)) .then(_onDayUpdateAnswer); @@ -80,7 +79,6 @@ odoo.define('vracoop_click_and_collect.vracoop_retrait', function (require) { var _onHourClick = function(ev) { var hour_retrait = $(ev.currentTarget).val(); var values = {'hour_retrait': hour_retrait}; - console.log(values); dp.add(ajax.jsonRpc('/shop/update_retrait', 'call', values)) .then(_onHourUpdateAnswer); }; @@ -117,5 +115,9 @@ odoo.define('vracoop_click_and_collect.vracoop_retrait', function (require) { var $carriers = $("#delivery_carrier input[name='delivery_type']"); $carriers.click(_onCarrierClick2); + + if ($carriers.length > 0) { + $carriers.filter(':checked').click(); + } }); diff --git a/views/vracoop_templates.xml b/views/vracoop_templates.xml index 18a055faca4aa28a99ab821e17da343619c4aa9a..e4b25109264eac81647b7fe1e4ce862586bbebca 100644 --- a/views/vracoop_templates.xml +++ b/views/vracoop_templates.xml @@ -28,7 +28,7 @@ <t t-foreach="list_slots" t-as="slot"> <t t-if="slot_first"> <li class="nav-item carousel-item col-12 col-sm-6 col-md-4 col-lg-3 active"> - <a data-toggle="tab" class="nav-link active btn btn-primary" t-attf-href='##{slot[1].strftime("%A")}#{point_retrait.id}'> + <a data-toggle="tab" class="nav-link active btn btn-primary" t-attf-href='##{slot[1].strftime("%A")}-#{slot[1].day}-#{point_retrait.id}'> <label class=" label_radio_button" role="radio"> <input t-attf-id='#{slot[1].day}-#{slot[1].month}-#{point_retrait.id}' name="day_select d-none" type="radio" class="radio_hide" t-attf-value='#{slot[1].day}-#{slot[1].month}-#{point_retrait.id}'/> <span class="span_radio_button"> @@ -42,7 +42,7 @@ </t> <t t-else=""> <li class="nav-item carousel-item col-12 col-sm-6 col-md-4 col-lg-3"> - <a data-toggle="tab" class="nav-link btn btn-primary" t-attf-href='##{slot[1].strftime("%A")}#{point_retrait.id}'> + <a data-toggle="tab" class="nav-link btn btn-primary" t-attf-href='##{slot[1].strftime("%A")}-#{slot[1].day}-#{point_retrait.id}'> <label class=" label_radio_button" role="radio"> <input t-attf-id='#{slot[1].day}-#{slot[1].month}-#{point_retrait.id}' name="day_select" type="radio" class="radio_hide d-none" t-attf-value='#{slot[1].day}-#{slot[1].month}-#{point_retrait.id}' /> <span class="span_radio_button"> @@ -71,7 +71,7 @@ <div class="tab-content"> <t t-foreach="list_slots" t-as="slot"> <t t-if="slot_first"> - <div class="container tab-pane active" t-attf-id='#{slot[1].strftime("%A")}#{point_retrait.id}'> + <div class="container tab-pane active" t-attf-id='#{slot[1].strftime("%A")}-#{slot[1].day}-#{point_retrait.id}'> <t t-foreach="slot[3]" t-as="slot_by_day"> <label class="label_radio_button" role="radio"> <input name="hour_select" type="radio" class="radio_hide" t-attf-value="#{slot[1].day}-#{slot[1].month}-#{slot_by_day[0]}-#{point_retrait.id}" t-attf-id="#{slot_by_day_index}"/> @@ -84,7 +84,7 @@ </div> </t> <t t-else=""> - <div class="container tab-pane fade" t-attf-id='#{slot[1].strftime("%A")}#{point_retrait.id}'> + <div class="container tab-pane fade" t-attf-id='#{slot[1].strftime("%A")}-#{slot[1].day}-#{point_retrait.id}'> <t t-foreach="slot[3]" t-as="slot_by_day"> <label class=" label_radio_button" role="radio"> <input t-attf-id="#{slot_by_day_index}" name="hour_select" type="radio" class="radio_hide" t-attf-value="#{slot[1].day}-#{slot[1].month}-#{slot_by_day[0]}-#{point_retrait.id}"/>