{% sw_extends '@Storefront/storefront/component/delivery-information.html.twig' %} {# -------------------- Kontext / Quellen -------------------- #} {% if page is defined and page.product is defined %} {% set product = page.product %} {% endif %} {% set p = product is defined ? product : (page is defined and page.product is defined ? page.product : null) %} {# dl von Page, LineItem oder Product #} {% set dl = null %} {% if page is defined and page.extensions is defined and page.extensions.dlDelivery is defined %} {% set dl = page.extensions.dlDelivery %} {% elseif lineItem is defined and lineItem.extensions is defined and lineItem.extensions.dlDelivery is defined %} {% set dl = lineItem.extensions.dlDelivery %} {% elseif p is not null and p.extensions is defined and p.extensions.dlDelivery is defined %} {% set dl = p.extensions.dlDelivery %} {% endif %} {# Fallbacks aus Produkt (falls keine Extension) #} {% set fbInfo = p and p.customFields is defined ? (p.customFields.dl_delivery_days ?? null) : null %} {% set fbStock = p and p.stock is defined ? p.stock : 0 %} {% set fbMin = p and p.minPurchase is defined ? p.minPurchase : 1 %} {% set fbAvail = p and p.availableStock is defined ? p.availableStock : fbStock %} {% set fbClose = p and p.isCloseout is defined ? p.isCloseout : false %} {% set fbDtName = p and p.deliveryTime is defined ? p.deliveryTime.translation('name') : null %} {# -------------------- Effektiver Bestand (serverseitig wie in PHP) -------------------- #} {% set myIsCloseout = dl and dl.isCloseout is defined ? dl.isCloseout : fbClose %} {% set dlAvail = dl and dl.availableStock is defined ? dl.availableStock : fbAvail %} {% set dlStock = dl and dl.instock is defined ? dl.instock : fbStock %} {# effective stock: - Closeout: negativen Bestand ignorieren (clamp to 0) - sonst: falls availableStock < 0, den verwenden; sonst stock #} {% set myinstock = myIsCloseout ? (dlStock > 0 ? dlStock : 0) : (dlAvail is not null and dlAvail < 0 ? dlAvail : dlStock) %} {# Text, wenn on-hand > 0 und DeliveryTime vorhanden #} {% set deliveryTimeName = (p and p.deliveryTime is defined and myinstock > 0) ? p.deliveryTime.translation('name') : null %} {# -------------------- Macro: Wrapper + initialer Text -------------------- #} {% macro render(info, instock, min, state, days, availableStock, isCloseout, deliveryTimeName) %}
{% if state == 'available' %} {% sw_icon "checkmark" %} {{ "dl.delivery.available"|trans }} {% if deliveryTimeName %} {{ "detail.deliveryTimeAvailable"|trans({'%name%': deliveryTimeName})|sw_sanitize }} {% endif %} {% elseif state == 'partially' %} {% sw_icon "alert" %} {{ "dl.delivery.partlyAvailable"|trans|replace({"[delivery_days]": days}) }} {% elseif state == 'notDeliverable' %} {% sw_icon "x-circle" %} {{ "dl.delivery.notDeliverable"|trans }} {% else %} {% sw_icon "x-circle" %} {{ "dl.delivery.notAvailable"|trans }} {% endif %}