I would like to reorder the "Apply Discount Code" to the top of the payment step. I had a customer who complained that the order of these elements indicated it was to be entered after payment, and so she accidentally paid before adding her coupon.
Here is what I've tried so far.
// File: <theme>/Magento_Checkout/layout/checkout_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="billing-step" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="children" xsi:type="array">
<item name="afterMethods" xsi:type="array">
<item name="children" xsi:type="array">
<item name="discount" xsi:type="array">
<item name="sortOrder" xsi:type="string">1</item>
<item name="config" xsi:type="array">
<!-- <item name="componentDisabled" xsi:type="boolean">true</item> -->
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page>
I left the componentDisabled
item in my example so I could mention that if I uncomment it, the "Apply Discount Code" field disappears. This tells me I'm doing something right.
Besides the above example, I've also tried nesting <item name="sortOrder" xsi:type="string">1</item>
inside <item name="config" xsi:type="array">
, to no avail. Lastly, I've tried a range of numbers including 500, 99999, 0 and -99999.
My guess is there is no way to surpass the sortOrder given to the payment methods group and so they need to be change but I don't know how. Can anyone help?
afterMethods
which I'm guessing is payment methods, that's probably the part I want to target... going to try looking into that.