To display Custom price fee on checkout/cart page or in summary cart you can follow following process :
Now, create js file which allow to display the amount on checkout cart total, file path is:
app\code\Webkul\Test\view\frontend\web\js\view\checkout\cart\totals\customfee.js
define( [ 'Webkul_Test/js/view/checkout/summary/customfee' ], function (Component) { 'use strict'; return Component.extend({ /** * @override * use to define amount is display setting */ isDisplayed: function () { return true; } }); } );
and define js file for checkout summary, create file at path:
app\code\Webkul\Test\view\frontend\web\js\view\checkout\summary\customfee.js
/*global alert*/ define( [ 'Magento_Checkout/js/view/summary/abstract-total', 'Magento_Checkout/js/model/quote', 'Magento_Catalog/js/price-utils', 'Magento_Checkout/js/model/totals' ], function (Component, quote, priceUtils, totals) { "use strict"; return Component.extend({ defaults: { isFullTaxSummaryDisplayed: window.checkoutConfig.isFullTaxSummaryDisplayed || false, template: 'Webkul_Test/checkout/summary/customfee' }, totals: quote.getTotals(), isTaxDisplayedInGrandTotal: window.checkoutConfig.includeTaxInGrandTotal || false, isDisplayed: function() { return this.isFullMode(); }, getValue: function() { var price = 0; if (this.totals()) { price = totals.getSegment('customfee').value; } return this.getFormattedPrice(price); }, getBaseValue: function() { var price = 0; if (this.totals()) { price = this.totals().base_customfee; } return priceUtils.formatPrice(price, quote.getBasePriceFormat()); } }); } );
Now, define template file to display it on page, file path:
app\code\Webkul\Test\view\frontend\web\template\checkout\summary\customfee.html
<!-- ko --> <tr class="totals customfee excl"> <th class="mark" scope="row"> <span class="label" data-bind="text: title"></span> <span class="value" data-bind="text: getValue()"></span> </th> <td class="amount"> <span class="price" data-bind="text: getValue(), attr: {'data-th': title}"></span> </td> </tr> <!-- /ko -->
Now, define template file for checkout cart total, file path is:
app\code\Webkul\Test\view\frontend\web\template\checkout\cart\totals\customfee.html
<!-- ko --> <tr class="totals customfee excl"> <th class="mark" colspan="1" scope="row" data-bind="text: title"></th> <td class="amount"> <span class="price" data-bind="text: getValue()"></span> </td> </tr> <!-- /ko -->
And , now define these js files in xml file, on checkout_cart_index.xml.
File path is: app\code\Webkul\Test\view\frontend\layout\checkout_cart_index.xml
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="checkout.cart.totals"> <arguments> <argument name="jsLayout" xsi:type="array"> <item name="components" xsi:type="array"> <item name="block-totals" xsi:type="array"> <item name="children" xsi:type="array"> <item name="customfee" xsi:type="array"> <item name="component" xsi:type="string">Webkul_Test/js/view/checkout/cart/totals/customfee</item> <item name="sortOrder" xsi:type="string">20</item> <item name="config" xsi:type="array"> <item name="template" xsi:type="string">Webkul_Test/checkout/cart/totals/customfee</item> <item name="title" xsi:type="string" translate="true">Custom Fee</item> </item> </item> </item> </item> </item> </argument> </arguments> </referenceBlock> </body> </page>
Now, add file for checkout_index_index page, file path is:
app\code\Webkul\Test\view\frontend\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="sidebar" xsi:type="array"> <item name="children" xsi:type="array"> <item name="summary" xsi:type="array"> <item name="children" xsi:type="array"> <item name="totals" xsi:type="array"> <item name="children" xsi:type="array"> <item name="customfee" xsi:type="array"> <item name="component" xsi:type="string">Webkul_Test/js/view/checkout/cart/totals/customfee</item> <item name="sortOrder" xsi:type="string">20</item> <item name="config" xsi:type="array"> <item name="template" xsi:type="string">Webkul_Test/checkout/cart/totals/customfee</item> <item name="title" xsi:type="string" translate="true">Custom Fee</item> </item> </item> </item> </item> <item name="cart_items" xsi:type="array"> <item name="children" xsi:type="array"> <item name="details" xsi:type="array"> <item name="children" xsi:type="array"> <item name="subtotal" xsi:type="array"> <item name="component" xsi:type="string">Magento_Tax/js/view/checkout/summary/item/details/subtotal</item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </argument> </arguments> </referenceBlock> </body> </page>
Now, execute bin\magento setup:static-content:deploy command from ssh terminal.
And your custom fee amount will displayed on checkout cart total and checkout summary page.
Thank you. 🙂
To display custom price/fee amount in sales order view , then refer blog:
http://webkul.com/blog/display-custom-pricefee-sales-order-view-page/
I hope this blog will help you with Display Custom Price fee on Checkout Cart and Summary Total in Magento 2. You may also check our wide range of best Magento 2 Extensions.
Please reach out to our team via a support ticket if you have any queries.
Try this and if you have any queries then just comment below 🙂
customfee.js:25 Uncaught TypeError: Cannot read property ‘value’ of null
on line price = totals.getSegment(‘customfee’).value; of file checkoutcarttotalscustomfee.html
Can you please reply ?