From 883b5e3c1c62abeebe6a6cbbdfd996aac8d621c1 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Thu, 1 Jun 2023 16:15:14 +0200 Subject: [PATCH] Presale: respect order-min-quantity --- .../templates/pretixpresale/event/fragment_addon_choice.html | 2 ++ .../templates/pretixpresale/event/fragment_product_list.html | 2 ++ src/pretix/presale/templates/pretixpresale/event/voucher.html | 2 ++ src/pretix/static/pretixpresale/js/ui/main.js | 3 ++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html b/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html index 775730955f..233b3223f7 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html @@ -193,6 +193,7 @@
1 %}data-min="{{ item.min_per_order }}"{% endif %} {% if var.initial %}value="{{ var.initial }}"{% endif %} {% if item.free_price %} data-checked-onchange="price-variation-{{form.pos.pk}}-{{ item.pk }}-{{ var.pk }}" @@ -326,6 +327,7 @@
1 %}data-min="{{ item.min_per_order }}"{% endif %} {% if item.free_price %} data-checked-onchange="price-item-{{ form.pos.pk }}-{{ item.pk }}" {% endif %} diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_product_list.html b/src/pretix/presale/templates/pretixpresale/event/fragment_product_list.html index 1502b68e1e..34f1d57b7b 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_product_list.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_product_list.html @@ -201,6 +201,7 @@ 1 %}data-min="{{ item.min_per_order }}"{% endif %} {% if not ev.presale_is_running %}disabled{% endif %} {% if item.free_price %} data-checked-onchange="price-variation-{{ item.pk }}-{{ var.pk }}" @@ -344,6 +345,7 @@ 1 %}data-min="{{ item.min_per_order }}"{% endif %} {% if not ev.presale_is_running %}disabled{% endif %} {% if itemnum == 1 %}value="1"{% endif %} {% if item.free_price %} diff --git a/src/pretix/presale/templates/pretixpresale/event/voucher.html b/src/pretix/presale/templates/pretixpresale/event/voucher.html index 0d13a64488..b811213219 100644 --- a/src/pretix/presale/templates/pretixpresale/event/voucher.html +++ b/src/pretix/presale/templates/pretixpresale/event/voucher.html @@ -257,6 +257,7 @@
1 %}data-min="{{ item.min_per_order }}"{% endif %} max="{{ var.order_max }}" id="variation_{{ item.id }}_{{ var.id }}" name="variation_{{ item.id }}_{{ var.id }}" @@ -400,6 +401,7 @@ 1 %}data-min="{{ item.min_per_order }}"{% endif %} max="{{ item.order_max }}" id="item_{{ item.id }}" name="item_{{ item.id }}" diff --git a/src/pretix/static/pretixpresale/js/ui/main.js b/src/pretix/static/pretixpresale/js/ui/main.js index 11b488e0e6..be3772149e 100644 --- a/src/pretix/static/pretixpresale/js/ui/main.js +++ b/src/pretix/static/pretixpresale/js/ui/main.js @@ -122,7 +122,8 @@ var form_handlers = function (el) { var step = parseFloat(this.getAttribute("data-step")); var controls = document.getElementById(this.getAttribute("data-controls")); var currentValue = parseFloat(controls.value); - controls.value = Math.max(controls.min, Math.min(controls.max || Number.MAX_SAFE_INTEGER, (currentValue || 0) + step)); + var itemOrderMin = parseFloat(controls.getAttribute("data-min")) + controls.value = currentValue <= itemOrderMin && step < 0 ? 0 : Math.max(itemOrderMin || controls.min, Math.min(controls.max || Number.MAX_SAFE_INTEGER, (currentValue || 0) + step)); controls.dispatchEvent(new Event("change")); });