themes/BootstrapTheme/templates/bundles/SyliusShopBundle/Product/Show/_addToCart.html.twig line 27

Open in your IDE?
  1. {% import "@SyliusShop/Common/Macro/icons.html.twig" as icons %}
  2. {% set block = app_get_blocks('texteperso_article', sylius.channel.code ) %}
  3. {% import "@SyliusShop/Common/Macro/money.html.twig" as money %}
  4. {% set product = order_item.variant.product %}
  5. {% form_theme form '@SyliusShop/Form/theme.html.twig' %}
  6. {# INIT CONFIGURATOR #}
  7. {% set configurator = false %}
  8. {% set configuratorSimple = false %}
  9. {% if product.variants|length > 0 %}
  10.     {% for variant in product.variants %}
  11.         {% if variant.model %}
  12.             {% set configurator = true %}
  13.             {% if not variant.model.advanced %}
  14.                 {% set configuratorSimple = true %}
  15.             {% endif %}
  16.         {% endif %}
  17.     {% endfor %}
  18. {% endif %}
  19. <div id="availability-notifier" {% if sylius_inventory_is_available(order_item.variant) %} class="d-none" {% endif %} >
  20.     {{ render(path('app_shop_partial_availability_notifier_create', { 'productVariantId' : product.variants.first.id, 'template' : '@SyliusShop/Product/Show/_availability_notifier.html.twig' })) }}
  21. </div>
  22. {{ form_start(form, {'action': path('sylius_shop_ajax_cart_add_item', {'productId': product.id}), 'attr': {'id': 'sylius-product-adding-to-cart', 'data-product-id': product.id, 'data-js-add-to-cart': 'form', 'class': 'loadable', 'novalidate': 'novalidate', 'data-redirect': path(configuration.getRedirectRoute('summary'))}}) }}
  23.         {% include '@SyliusShop/Product/Show/_seeNumericalOrPhysicalVersion.html.twig' with {product: product} %}
  24.         {{ form_errors(form) }}
  25. <!-- error message -->
  26. <div class="alert alert-danger d-none" data-js-add-to-cart="error"
  27.      id="sylius-cart-validation-error" {{ sylius_test_html_attribute('cart-validation-error') }}></div>
  28. <!-- select variant -->
  29. <div id="sylius-product-selecting-variant" {{ sylius_test_html_attribute('product-selecting-variant') }}>
  30.     <div id="first_div"></div>
  31.     {% if not product.simple %}
  32.         <div class="caractistique-article pt-md-2 pt-3">
  33.             {% include '@SyliusShop/Product/Show/_options.html.twig' %}
  34.         </div>
  35.     {% endif %}
  36.     {{ sylius_template_event('sylius.shop.product.show.before_add_to_cart', {'product': product, 'order_item': order_item}) }}
  37. </div>
  38. <!-- end select variant -->
  39. <div class="etat-article d-none">
  40.     <div id="enStock"
  41.          class="etatbit-art color-vert  {% if not sylius_inventory_is_available(order_item.variant) %} d-none {% endif %}">{{ 'app.product.en_stock' | trans }}</div>
  42.     <div id="horsStock"
  43.          class="etatbit-art text-danger {% if sylius_inventory_is_available(order_item.variant) %} d-none {% endif %}">{{ 'app.product.en_rupture' | trans }}</div>
  44. </div>
  45. <!-- configurator -->
  46. {% if configurator %}
  47.     {% include '@SyliusShop/Product/Show/Configurator/_configurator.html.twig' %}
  48. {% endif %}
  49. <!-- end configurator -->
  50. <!-- quantity / price -->
  51. <div class="py-2 row no-gutters align-items-center mobile-column-reverse-save">
  52.     <!-- price -->
  53.     <div class="pl-3 pt-2 pt-sm-0 art-price">
  54.         <div class="prix-art-panier text-sm-right text-left pt-sm-0 pt-3">
  55.             {% include '@SyliusShop/Product/Show/_priceWidget.html.twig' %}
  56.         </div>
  57.     </div>
  58.     <!-- quantity -->
  59.     <div class="quantity-container">
  60.         <div class="d-block d-md-none font-seize col-12">{{ 'sylius.ui.quantity' |trans }} :</div>
  61.         <div class="col-sm-auto">
  62.             <div class="art-qte px-0 fiche-art-qty">
  63.                 <div class="contenu-qte-art qte-article-fiche">
  64.                     <div class="qte-panier sylius-quantity d-flex no-gutters align-items-center">
  65.                         <a role="button" class="qte-moins-art col-auto" title="{{'app.product.decrease_quantity'|trans}}"><img src="{{asset('images/moins.svg')}}" class="d-block" alt="-"></a>
  66.                         <div class="d-flex no-gutters col align-items-center px-2 bg-white">
  67.                             <div class="col-auto mb-0 label-qte">{{ 'sylius.ui.quantity' |trans }} :</div>
  68.                             <div class="col form-group-nomarg pl-1">{{ form_row(form.cartItem.quantity, sylius_test_form_attribute('quantity')) }}</div>
  69.                         </div>
  70.                         <a role="button" class="qte-plus-art  col-auto"  title="{{'app.product.increase_quantity'|trans}}"><img src="{{asset('images/plus.svg')}}" class="d-block" alt="+"></a>
  71.                         {{ sylius_template_event('sylius.shop.product.show.add_to_cart_form', {'product': product, 'order_item': order_item}) }}
  72.                     </div>
  73.                 </div>
  74.             </div>
  75.         </div>
  76.     </div>
  77.     <!-- end quantity -->
  78.     <!-- configurator -->
  79.     {% if configurator %}
  80.         {% include '@SyliusShop/Product/Show/Configurator/_wrap_configurator.html.twig' %}
  81.     {% endif %}
  82.     <!-- end configurator -->
  83.     <!-- messages infos -->
  84.     <div class="widgets-not-valid" style="visibility: hidden;">
  85.         {{ "app.configurator.error.widgets_not_valid"|trans }}
  86.     </div>
  87. </div>
  88. <!-- end quantity / price -->
  89. <!-- messages infos -->
  90. <div class="widgets-not-valid" style="visibility: hidden;">
  91.     {{ "app.configurator.error.widgets_not_valid"|trans }}
  92. </div>
  93. <div id="choose-your-option-info-msg" class="add-to-cart-error-msg d-none">
  94.     {{ "app.ui.choose_your_option_before_adding_to_cart"|trans }}
  95. </div>
  96. <div id="step-by-step-info-msg" class="color-pink-s font-weight-bold font-12" style="display: none;">{{ "app.product.fill_option_before_adding_to_cart"|trans }}</div>
  97. <!-- end messages infos -->
  98. {{ form_row(form._token) }}
  99. <!-- add to cart button -->
  100. {#        <div {% if configurator is defined and configurator == true %}class="btn-panier-content pt-2 pb-2 d-none"{% else %}class="btn-panier-content pt-2 pb-2"{% endif %}>#}
  101. <div {% if configurator is defined and configurator == true and not configuratorSimple and order_item.variant.model is not null %}class="btn-panier-content pt-2 pb-2 d-none"{% else %}class="btn-panier-content pt-2 pb-2"{% endif %}>
  102.     <button type="submit" id="add-to-cart-btn" class="btn-panier btn-add-panier transition-bgcolor" {{ sylius_test_html_attribute('add-to-cart-button') }}> <span>{{ 'sylius.ui.add_to_cart' |trans }}</span></button>
  103. </div>
  104. <!-- end add to cart button -->
  105. {{ form_end(form, {'render_rest': false}) }}
  106. {#{% endif %}#}
  107. <!-- shipping info -->
  108. <div class="etat-article text-left  pt-2 pb-1">
  109.     <div class="py-1">
  110.         {% set missingAmountFranco = app_get_missing_franco_port() %}
  111.         {% if missingAmountFranco %}
  112.             {{'app.cart.missing_x_for_franco'|trans}} <span class="color-pink-s">{{ money.convertAndFormat(missingAmountFranco) }}</span> {{'app.cart.before_free_shipping'|trans}}
  113.         {% endif %}
  114.     </div>
  115.     {% if sylius.channel.displayDeliveryDate %}
  116. {#        {% set date = date('2026-01-21 10:00:00') %}#}
  117.         {% set date = null %}
  118.         {% set deliveryDate = app_get_delivery_date(null, date)  %}  {# estimation date de livraison #}
  119.         {% set dispatchDateEstimated = app_get_dispatch_date(date)  %}  {# date d'envoi #}
  120.         {% set deliveryDateEstimated = app_get_delivery_date_with_margin(null, date)  %}  {# estimation fourchette date de livraison #}
  121.         {% if deliveryDate is not null %}
  122.             <div class="py-1">{{'app.product.by_ordering_today'|trans}}, {{'app.shipping.date_estimated'|trans|lower }}<span class="color-pink-s">{{ deliveryDate|date("d/m/Y") }} </span></div>
  123.         {% endif %}
  124.     {% endif %}
  125. </div>
  126. <!-- end shipping info -->
  127. <!-- steps of shipping -->
  128. {% if sylius.channel.displayDeliveryDate %}
  129.     <div class="step-shipping pt-2 pb-4">
  130.         <div class="row no-gutters">
  131.             <div class="col">
  132.                 <div class="text-center">
  133.                     <div class="position-relative has-after-step"><img src="{{asset('images/step_livr1.svg')}}" alt="" class="position-relative z_index_m2"/></div>
  134.                     <div class="font-italic px-2 font-step">
  135.                         {% if date is defined %}
  136.                             {{ date|date("m/d/Y")|format_datetime(locale='fr',pattern="dd MMMM") }}
  137.                         {% else %}
  138.                             {{ "now"|date("m/d/Y")|format_datetime(locale='fr',pattern="dd MMMM") }}
  139.                         {% endif %}
  140.                         <span class="d-block line-height-normal">{{'app.product.passed_order'|trans}}</span>
  141.                     </div>
  142.                 </div>
  143.             </div>
  144.             <div class="col">
  145.                 <div class="text-center">
  146.                     <div class="position-relative has-after-step"><img src="{{asset('images/step_livr2.svg')}}" alt="" class="position-relative z_index_m2"/></div>
  147.                     <div class="font-italic px-2 font-step">
  148.                         {{ dispatchDateEstimated|date("m/d/Y")|format_datetime(locale='fr',pattern="dd MMMM") }}
  149.                         <span class="d-block line-height-normal">{{'app.product.order_sent'|trans}}</span>
  150.                     </div>
  151.                 </div>
  152.             </div>
  153.             <div class="col">
  154.                 <div class="text-center">
  155.                     <div class="position-relative"><img src="{{asset('images/step_livr3.svg')}}" alt="" class="position-relative z_index_m2"/></div>
  156.                     <div class="font-italic px-2 font-step">
  157.                         {{ deliveryDateEstimated['before']|date("m/d/Y")|format_datetime(locale='fr',pattern="dd MMMM") }} -
  158.                         {{ deliveryDateEstimated['after']|date("m/d/Y")|format_datetime(locale='fr',pattern="dd MMMM") }}
  159.                         <span class="d-block line-height-normal">{{'app.product.delivered'|trans}} !</span>
  160.                     </div>
  161.                 </div>
  162.             </div>
  163.         </div>
  164.     </div>
  165. {% endif %}
  166. <!-- end steps of shipping -->
  167. <!-- add to cart modal -->
  168. <div class="modal fade" id="addToCartModal" tabindex="-1" role="dialog" aria-labelledby="addToCartModal" aria-hidden="true">
  169.     <div class="modal-dialog modal-dialog-centered" role="document">
  170.         <div class="modal-content">
  171.             <div class="modal-header">
  172.                 <p class="modal-title" id="exampleModalLongTitle">{{'app.product.addCart'|trans}}</p>
  173.                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  174.                     <span aria-hidden="true">&times;</span>
  175.                 </button>
  176.             </div>
  177.             <div class="modal-body">
  178.                 <div class="modal-product-name">{{ product.code }} <br> {{ product.name }}</div>
  179.             </div>
  180.             <div class="modal-footer row mx-n1">
  181.                 <div class="col-sm-6 col-12 mb-2 mx-0 px-1"><button type="button" class="btn-link bg-orange" data-dismiss="modal">{{'app.product.continue_my_purchases'|trans}}</button></div>
  182.                 <div class="col-sm-6 col-12 mb-2 mx-0 px-1"><a href="{{ path('sylius_shop_cart_summary') }}" type="button" class="btn-link opacity_hover" title="{{'app.product.proceed_to_payment'|trans}}">{{'app.product.proceed_to_payment'|trans}}</a></div>
  183.             </div>
  184.         </div>
  185.     </div>
  186. </div>
  187. <!-- end add to cart modal -->
  188. <!-- begin error modal -->
  189. {% include '@SyliusShop/Product/Show/_popupQuantityError.html.twig' with {'item': order_item} %}
  190. {% include '@SyliusShop/Product/Show/_popupAddToCartErrorModal.html.twig' with {'item': order_item} %}
  191. <!-- end error modal -->