You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

210 lines
10 KiB

  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * Multishipping checkout billing information
  8. *
  9. * @var $block \Magento\Multishipping\Block\Checkout\Billing
  10. * @var $escaper \Magento\Framework\Escaper
  11. * @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer
  12. */
  13. ?>
  14. <div id="checkout-loader" data-role="checkout-loader" class="loading-mask" data-mage-init='{"billingLoader": {}}'>
  15. <div class="loader">
  16. <img src="<?= $escaper->escapeUrl($block->getViewFileUrl('images/loader-1.gif')); ?>"
  17. alt="<?= $escaper->escapeHtml(__('Loading...')); ?>">
  18. </div>
  19. </div>
  20. <?= /* @noEscape */ $secureRenderer->renderStyleAsTag('position: absolute;', 'div#checkout-loader .loader img') ?>
  21. <?php $checkoutConfig = /* @noEscape */ $block->getCheckoutData()->getSerializedCheckoutConfigs();
  22. $scriptString = <<<script
  23. window.checkoutConfig = {$checkoutConfig};
  24. window.isCustomerLoggedIn = window.checkoutConfig.isCustomerLoggedIn;
  25. window.customerData = window.checkoutConfig.customerData;
  26. script;
  27. ?>
  28. <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>
  29. <div id="checkout" data-bind="scope:'checkoutMessages'">
  30. <!-- ko template: getTemplate() --><!-- /ko -->
  31. <script type="text/x-magento-init">
  32. {
  33. "#checkout": {
  34. "Magento_Ui/js/core/app": {
  35. "components": {
  36. "checkoutMessages": {
  37. "component": "Magento_Ui/js/view/messages",
  38. "displayArea": "messages"
  39. }
  40. }
  41. }
  42. }
  43. }
  44. </script>
  45. </div>
  46. <form action="<?= $escaper->escapeUrl($block->getPostActionUrl()); ?>"
  47. method="post"
  48. id="multishipping-billing-form"
  49. class="form multicheckout billing">
  50. <div class="block block-billing">
  51. <div class="block-content">
  52. <div class="box box-billing-address">
  53. <strong class="box-title">
  54. <span><?= $escaper->escapeHtml(__('Billing Address')); ?></span>
  55. <a href="<?= $escaper->escapeUrl($block->getSelectAddressUrl()); ?>" class="action">
  56. <span><?= $escaper->escapeHtml(__('Change')); ?></span>
  57. </a>
  58. </strong>
  59. <div class="box-content">
  60. <address>
  61. <?= /* @noEscape */ $block->getCheckoutData()->getAddressHtml($block->getAddress()); ?>
  62. </address>
  63. </div>
  64. </div>
  65. <div class="box box-billing-method">
  66. <fieldset class="fieldset">
  67. <legend class="legend box-title">
  68. <span><?= $escaper->escapeHtml(__('Payment Method')); ?></span>
  69. </legend><br>
  70. <div class="box-content">
  71. <?= $block->getChildHtml('payment_methods_before') ?>
  72. <?php /* Payment methods forms list */ ?>
  73. <dl class="checkout-payment-method" id="payment-methods">
  74. <?php
  75. $methods = $block->getMethods();
  76. $methodsCount = count($methods);
  77. $methodsForms = $block->hasFormTemplates() ? $block->getFormTemplates(): [];
  78. foreach ($methods as $_method):
  79. $code = $_method->getCode();
  80. $checked = $block->getSelectedMethodCode() === $code;
  81. if (isset($methodsForms[$code])) {
  82. $block->setMethodFormTemplate($code, $methodsForms[$code]);
  83. }
  84. ?>
  85. <div data-bind="scope: 'payment_method_<?= $escaper->escapeHtml($code);?>'">
  86. <dt class="item-title">
  87. <?php if ($methodsCount > 1): ?>
  88. <input type="radio"
  89. id="p_method_<?= $escaper->escapeHtml($code); ?>"
  90. value="<?= $escaper->escapeHtml($code); ?>"
  91. name="payment[method]"
  92. title="<?= $escaper->escapeHtml($_method->getTitle()) ?>"
  93. data-bind="
  94. value: getCode(),
  95. checked: isChecked,
  96. click: selectPaymentMethod,
  97. visible: isRadioButtonVisible()"
  98. <?php if ($checked): ?>
  99. checked="checked"
  100. <?php endif; ?>
  101. class="radio"/>
  102. <?php else: ?>
  103. <input type="radio"
  104. id="p_method_<?= $escaper->escapeHtml($code); ?>"
  105. value="<?= $escaper->escapeHtml($code); ?>"
  106. name="payment[method]"
  107. data-bind="
  108. value: getCode(),
  109. afterRender: selectPaymentMethod"
  110. checked="checked"
  111. class="radio solo method" />
  112. <?php endif; ?>
  113. <label for="p_method_<?= $escaper->escapeHtml($code); ?>">
  114. <?= $escaper->escapeHtml($_method->getTitle()) ?>
  115. </label>
  116. </dt>
  117. <?php if ($html = $block->getChildHtml('payment.method.' . $code)): ?>
  118. <dd class="item-content <?= $checked ? '' : 'no-display'; ?>">
  119. <?= /* @noEscape */ $html; ?>
  120. </dd>
  121. <?php endif; ?>
  122. </div>
  123. <?php endforeach; ?>
  124. </dl>
  125. <?= $block->getChildHtml('payment_methods_after') ?>
  126. <?= $block->getChildHtml('checkout_billing_items') ?>
  127. </div>
  128. </fieldset>
  129. </div>
  130. </div>
  131. </div>
  132. <div class="actions-toolbar">
  133. <div class="primary" id="parent-payment-continue">
  134. <button id="payment-continue"
  135. type="button"
  136. class="action primary continue">
  137. <span><?= $escaper->escapeHtml(__('Go to Review Your Order')); ?></span>
  138. </button>
  139. </div>
  140. <div class="secondary">
  141. <a href="<?= $escaper->escapeUrl($block->getBackUrl()); ?>" class="action back">
  142. <span><?= $escaper->escapeHtml(__('Back to Shipping Information')); ?></span>
  143. </a>
  144. </div>
  145. </div>
  146. </form>
  147. <?php $quoteBaseGrandTotal = (float)$block->getQuoteBaseGrandTotal();
  148. $scriptString = <<<script
  149. require(['jquery', 'mage/mage'], function(jQuery) {
  150. var addtocartForm = jQuery('#multishipping-billing-form');
  151. addtocartForm.mage('payment', {
  152. checkoutPrice: {$quoteBaseGrandTotal}
  153. });
  154. addtocartForm.mage('validation', {
  155. errorPlacement: function(error, element) {
  156. if (element.attr('data-validate') && element.attr('data-validate').indexOf('validate-cc-ukss') >= 0) {
  157. element.parents('form').find('[data-validation-msg="validate-cc-ukss"]').html(error);
  158. } else {
  159. element.after(error);
  160. }
  161. }
  162. });
  163. });
  164. script;
  165. ?>
  166. <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>
  167. <?php $scriptString = <<<script
  168. //<![CDATA[
  169. require(
  170. [
  171. 'Magento_Checkout/js/model/quote',
  172. 'jquery',
  173. 'domReady!'
  174. ], function(quote, $) {
  175. quote.billingAddress({
  176. script;
  177. $scriptString .= "city: '" . $escaper->escapeJs($block->getAddress()->getCity()) . "'," . PHP_EOL;
  178. $scriptString .= "company: '" . $escaper->escapeJs($block->getAddress()->getCompany()) . "'," . PHP_EOL;
  179. $scriptString .= "countryId: '" . $escaper->escapeJs($block->getAddress()->getCountryId()) . "'," . PHP_EOL;
  180. $scriptString .= "customerAddressId: '" . $escaper->escapeJs($block->getAddress()->getCustomerAddressId()) . "',"
  181. . PHP_EOL;
  182. $scriptString .= "customerId: '" . $escaper->escapeJs($block->getAddress()->getCustomerId()) . "'," . PHP_EOL;
  183. $scriptString .= "fax: '" . $escaper->escapeJs($block->getAddress()->getFax()) . "'," . PHP_EOL;
  184. $scriptString .= "firstname: '" . $escaper->escapeJs($block->getAddress()->getFirstname()) . "'," . PHP_EOL;
  185. $scriptString .= "lastname: '" . $escaper->escapeJs($block->getAddress()->getLastname()) . "'," . PHP_EOL;
  186. $scriptString .= "postcode: '" . $escaper->escapeJs($block->getAddress()->getPostcode()) . "'," . PHP_EOL;
  187. $scriptString .= "regionId: '" . $escaper->escapeJs($block->getAddress()->getRegionId()) . "'," . PHP_EOL;
  188. $scriptString .= "regionCode: '" . $escaper->escapeJs($block->getAddress()->getRegionCode()) . "'," . PHP_EOL;
  189. $scriptString .= "region: '" . $escaper->escapeJs($block->getAddress()->getRegion()) . "'," . PHP_EOL;
  190. $scriptString .= "street: " . /* @noEscape */ json_encode($block->getAddress()->getStreet()) . "," . PHP_EOL;
  191. $scriptString .= "telephone: '" . $escaper->escapeJs($block->getAddress()->getTelephone()) . "'" . PHP_EOL;
  192. $scriptString .= <<<script
  193. });
  194. });
  195. //]]>
  196. script;
  197. ?>
  198. <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>