magento2 – Is there an EPOS solution out there that integrates with a magento 2 website and supports omnichannel gift card integration

The fashion retailer I work for is looking for a more suitable EPOS system to integrate with our Magento 2 website.

The biggest issue we are facing when trying to find the best solution is that no one seems to be able to offer an omnichannel gift card integration.

When I say “omnichannel gift card integration” I mean we would like to sell gift cards in-store and online and redeem the vouchers in-store and online regardless of if its an online gift card or in-store gift card.

Any experience or advise with this would be a great help.

Thanks

magento2 – Where in the code is validation being requested for customAttributes when placing order

Setup: Customer has an account and is logged in, but there are no default billing and shipping addresses assigned. A custom attribute has been added and isrequired when defining in setup module. The Customer is presented with an address form. This form presents and validates the custom attribute. Customer clicks next, place order screen appears showing address form with all fields, including custom attribute. Customer clicks place order, error appears stating naming the custom attribute and informing that it is a required field.

The error is created in the magento eav/model within the validateValue function of text.php Ive tried to trace starting from the Magento_Checkout js/model and action place.order modules and ending in the service urls pointing to fuction getPaymentInformation in checkout/model/PaymentInformationManagement.php but cant seem to find the line of code that is responsible for requesting this validation. The attribute is validated upon entry in all the address forms, so I dont really need it to be validated at place order. This custom attribute works fine in other cases such as guest user, or logged in user that has entered default addresses. Its just this one case. It seems to be a Magento problem, during my troubleshooting I have been able to print out the class and my coustom attribute with its values are present.

I would like this line of code where I can just ignore the validation in this particular case.

magento2 – Magento 2 how to redirect backend controller to previous page?

I’m trying to redirect a controller that is executed in Order Detail.

If I end the controller returning redirect like this, it throws an error:

return $resultRedirect;

If I end the controller with exit; it does not throws error but a blank page is displayed.

exit;

Here is my code:

<?php


use MagentoBackendAppAction;
use MagentoFrameworkAppRequestInterface;
use VendorModuleLoggerLogger;
use MagentoSalesApiOrderRepositoryInterface;

class Pdf extends Action
{
    /**
     * @var PageFactory
     */
    protected $request;
    protected $logger;
    protected $orderRepository;
    protected $resultRedirectFactory;
 
    /**
     * @param Context $context
     * @param PageFactory $resultPageFactory
     */

    public function __construct(
        RequestInterface $request,
        Logger $logger,
        OrderRepositoryInterface $orderRepository,
        MagentoFrameworkControllerResultFactory $resultRedirectFactory,
        MagentoBackendAppAction $context
    ) {
        parent::__construct($context);
        $this->request = $request;
        $this->logger = $logger;
        $this->orderRepository = $orderRepository;
        $this->resultRedirectFactory = $resultRedirectFactory;
        $this->execute();
    }
 
    /**
     * Index action
     *
     * @return MagentoBackendModelViewResultPage
     */
    public function execute()
    { 
        $completeState = MagentoSalesModelOrder::STATE_COMPLETE;

        $order_id = $this->request->getParam('order_id');
        
            $order = $this->orderRepository->get($order_id);
            $order->setStatus($completeState)->setState($completeState);
            $this->orderRepository->save($order); 
        

            $resultRedirect = $this->resultRedirectFactory->create(MagentoFrameworkControllerResultFactory::TYPE_REDIRECT);
            $resultRedirect->setPath('/sales/order/view/order_id/'.$order_id.'/');
            return $resultRedirect;
            exit;
          
    }
 
}

magento2 – Magento 2 – remove .html from URL by using .htaccess

We have some wrong URLs in our store ending with .html. If the user opens such a URL, then the .html should get removed, otherwise the site cant get found.

So I added this rule to my .htaccess file in pub/.htaccess, i also tried the normal .htaccess in the magento root.

<IfModule mod_rewrite.c>

...

############################################
## Remove .html from end of URL

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*).html$ /$1 (L,R=302)

</IfModule>

But if I enter a URL with .html at the end, then it is still not getting removed.

I want to make it work by using the .htaccess, otherwise I will have to create plenty of URL rewrites by hand.

magento2 – Magento 2 – Automatic currency and manual currency

A client has a multistore. For convenience he has store A and store B. Store A uses the euro, which is also the base currency, and store B (UK) uses the British pounds.
(They are differentiated on website scope)

The store is currently setup so it automatically converts the euro’s to british pounds. Now the customer wants to be able to set different prices for store B, based on the British pound, for only a handful of products.

Now to to that I switched the price scope to website (Config -> Catalog -> Catalog Price Scope). But after a reindex it now takes the value filled in on the default scope and sets it as the price value for store B. (So a product that was 10 euros, converted to 8 pounds for example, is now 10 euros and 10 pounds).

My question is:
Is there a way (or custom module you know of) to get the best of both worlds?
So

  1. Per default it converts and sets the price for Store from Euro’s to British pounds.
  2. Only if the customer wants a different price for that UK store, it can adjust it and it will use that price instead of the price based on currency rates. He can do this within a product on the correct scope.

magento2 – Fatal error: Uncaught Error: Call to a member function setCurrentPage() on null on vendor/magento/module-ui/Model/Export/ConvertToCsv.php:

I am trying to export from a custom grid.

I am getting this error.

Fatal error: Uncaught Error: Call to a member function setCurrentPage() on null in /Users/aftabaslam/www/arb-marketplace/vendor/magento/module-ui/Model/Export/ConvertToCsv.php:83 Stack trace: #0 /Users/aftabaslam/www/arb-marketplace/vendor/magento/module-ui/Controller/Adminhtml/Export/GridToCsv.php(70): MagentoUiModelExportConvertToCsv->getCsvFile() #1 /Users/aftabaslam/www/arb-marketplace/generated/code/Magento/Ui/Controller/Adminhtml/Export/GridToCsv/Interceptor.php(24): MagentoUiControllerAdminhtmlExportGridToCsv->execute() #2 /Users/aftabaslam/www/arb-marketplace/vendor/magento/framework/App/Action/Action.php(108): MagentoUiControllerAdminhtmlExportGridToCsvInterceptor->execute() #3 /Users/aftabaslam/www/arb-marketplace/vendor/magento/module-backend/App/AbstractAction.php(231): MagentoFrameworkAppActionAction->dispatch(Object(MagentoFrameworkAppRequestHttp)) #4 /Users/aftabaslam/www/arb-marketplace/vendor/magento/framework/Interception/Interceptor.php(58): MagentoBackendAppAbstractAction->dis in /Users/aftabaslam/www/arb-marketplace/vendor/magento/module-ui/Model/Export/ConvertToCsv.php on line 83

this is the code for the custom grid.

<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports_data_source</item>
        </item>
    </argument>

    <settings>
        <spinner>arb_customreports_customreports_columns</spinner>
        <deps>
            <dep>arb_customreports_customreports.arb_customreports_customreports_data_source</dep>
        </deps>
    </settings>

    <dataSource name="arb_customreports_customreports_data_source">
 
        <argument name="dataProvider" xsi:type="configurableObject">
            <argument name="class" xsi:type="string">ArbCustomReportsUiComponentListingDataProvidersArbCustomreportsCustomreports</argument>
            <argument name="name" xsi:type="string">arb_customreports_customreports_data_source</argument>
            <argument name="primaryFieldName" xsi:type="string">order_id</argument>
            <argument name="requestFieldName" xsi:type="string">id</argument>
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
                    <item name="update_url" xsi:type="url" path="mui/index/render"/>
                    <item name="storageConfig" xsi:type="array">
                        <item name="indexField" xsi:type="string">order_id</item>
                    </item>
                </item>
            </argument>
        </argument>


        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
            </item>
        </argument>
    </dataSource>


    <container name="listing_top">


        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="template" xsi:type="string">ui/grid/toolbar</item>
            </item>
        </argument>
        <!--<bookmark name="bookmarks" />-->
        <columnsControls name="columns_controls" />

        <filters name="listing_filters" displayArea="dataGridFilters">

            <settings>
                <dataScope>filters</dataScope>
                <childDefaults>
                    <param name="imports" xsi:type="array">
                        <item name="visible" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.listing_top.bookmarks:current.columns.${ $.index }.visible</item>
                    </param>
                    <param name="provider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.listing_top.listing_filters</param>
                </childDefaults>
                <storageConfig>
                    <namespace>current.filters</namespace>
                    <provider>arb_customreports_customreports.arb_customreports_customreports.listing_top.bookmarks</provider>
                </storageConfig>
            </settings>

            <filterInput name="order_id" provider="${ $.parentName }">
                <settings>
                    <label translate="true">Order Id</label>
                    <dataScope>order_id</dataScope>
                </settings>
            </filterInput>

            <filterInput name="from" provider="${ $.parentName }">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="dataScope" xsi:type="string">from</item>
                        <item name="label" xsi:type="string" translate="true">from</item>
                        <item name="placeholder" xsi:type="string" translate="true">From</item>
                    </item>
                </argument>
            </filterInput>
            <filterInput name="to" provider="${ $.parentName }">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="dataScope" xsi:type="string">to</item>
                        <item name="label" xsi:type="string" translate="true">to</item>
                        <item name="placeholder" xsi:type="string" translate="true">To</item>
                    </item>
                </argument>
            </filterInput>

            <filterInput name="customer_name" provider="${ $.parentName }">
                <settings>
                    <label translate="true">Customer Name</label>
                    <dataScope>customer_name</dataScope>
                </settings>
            </filterInput>

            <filterInput name="merchant_name" provider="${ $.parentName }">
                <settings>
                    <label translate="true">Merchant Name</label>
                    <dataScope>merchant_name</dataScope>
                </settings>
            </filterInput>

            <filterInput name="merchant_id" provider="${ $.parentName }">
                <settings>
                    <label translate="true">Merchant ID</label>
                    <dataScope>merchant_id</dataScope>
                </settings>
            </filterInput>

            <filterInput name="product_name" provider="${ $.parentName }">
                <settings>
                    <label translate="true">Product Name</label>
                    <dataScope>product_name</dataScope>
                </settings>
            </filterInput>

            <filterInput name="sku" provider="${ $.parentName }">
                <settings>
                    <label translate="true">SKU</label>
                    <dataScope>SKU</dataScope>
                </settings>
            </filterInput>

            <filterInput name="transaction_reference_number" provider="${ $.parentName }">
                <settings>
                    <label translate="true">PG Transaction Reference Number</label>
                    <dataScope>PG Transaction Reference Number</dataScope>
                </settings>
            </filterInput>

        </filters>

        <paging name="listing_paging">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="selectProvider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.arb_customreports_customreports_columns.ids</item>
                    <item name="storageConfig" xsi:type="array">
                        <item name="provider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.listing_top.bookmarks</item>
                        <item name="namespace" xsi:type="string">current.paging</item>
                    </item>
                </item>
            </argument>
        </paging>


        <exportButton name="export_button">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="selectProvider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.arb_customreports_customreports_columns.ids</item>
                </item>
            </argument>
        </exportButton>

       
    </container>
    <columns name="arb_customreports_customreports_columns">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="storageConfig" xsi:type="array">
                    <item name="provider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.listing_top.bookmarks</item>
                    <item name="namespace" xsi:type="string">current</item>
                </item>
                <item name="childDefaults" xsi:type="array">
                    <item name="fieldAction" xsi:type="array">
                        <item name="provider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.arb_customreports_customreports_columns.actions</item>
                        <item name="target" xsi:type="string">applyAction</item>
                        <item name="params" xsi:type="array">
                            <item name="0" xsi:type="string">edit</item>
                            <item name="1" xsi:type="string">${ $.$data.rowIndex }</item>
                        </item>
                    </item>
                    <item name="controlVisibility" xsi:type="boolean">true</item>
                    <item name="appendTo" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.listing_top.columns_controls</item>
                    <item name="storageConfig" xsi:type="array">
                        <item name="provider" xsi:type="string">arb_customreports_customreports.arb_customreports_customreports.listing_top.bookmarks</item>
                        <item name="root" xsi:type="string">columns.${ $.index }</item>
                        <item name="namespace" xsi:type="string">current.${ $.storageConfig.root}</item>
                    </item>
                </item>
            </item>
        </argument>
        <selectionsColumn name="ids">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="indexField" xsi:type="string">order_id</item>
                    <item name="sortOrder" xsi:type="number">0</item>
                </item>
            </argument>
        </selectionsColumn>
        <column name="order_id">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Order ID</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="transaction_date">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Transaction Date</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="transaction_time">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Transaction Time</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>


        <column name="customer_name">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Customer Name</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>


        <column name="customer_id">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Customer ID</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="merchant_name">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Merchant Name</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="merchant_id">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Merchant ID</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="product_name">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Product Name</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="product_price">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Product Price</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="vat">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">VAT</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="price+tax">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Price + Tax</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="comission">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Commission</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="seller_revenue">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Seller Revenue</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="currency">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Currency</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="authorization_number">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Authorization Number</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="cortex_terminal_id">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Cortex Terminal ID </item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="loyality_usage">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Loyalty Usage</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="transaction_reference_number">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">PG Transaction Reference Number</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="order_status">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Order Status</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="sku">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">SKU</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>

        <column name="product_id">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/column</item>
                </item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="align" xsi:type="string">left</item>
                    <item name="label" xsi:type="string" translate="true">Product ID</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </column>


    </columns>
</listing>

magento2 – Updrading Magento 2.2.6 to Magento 2.4

I am using Magento 2.2.6 Enterprise version and the site is live now.

I want to upgrade my store to the latest version of Magento which is 2.4.1. My store has many customization in code and theme aspects. Some of the customization are checkout, login, sales, product and pricing, finance.

Except the order placement, product and pricing, financial managements, order processing etc are handled by different systems like ERP and CRM. Now I want to know will all these affect my up-gradation to Magento 2.4.1? Should I have to make any code changes according to magento 2.4.1?

Please clarify my question.

Thanks in advance.

magento2 – For email template {{if }} function use

I want to edit South Korea to Republic of Korea and i found:

Store > Congiguration > Customers >Customer Configuration > Address Templates

have a function {{if}}.
Is it possible to set like this {{if country=="KR"}}Republic of Korea{{else}}{{var country}}{{/if}} but it doesn’t work.

Is there any correct method?

magento2 – M2.4.1 Unable to resolve source file jqueryfileUploaderfileupload-fp.js

I’m getting issue with the file uploader in the backend admin of M2.4.1 It is missing file below and can see a 404 for the file in the browser console. I have cleared static content, generated folder and varview_preprocessed folders. Run setup:upgrade, compile commands and forced rebuild of static content. Not sure what else to try … Any suggestions.?? Everything else seems to be working fine… just this..

adminhtmlMagentobackenden_GBjqueryfileUploaderfileupload-fp.js

magento2 – how can i add to cart group and bundle products in magento 2 programmatically

for a single product, I am using

$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$quote = $objectManager->create('MagentoCheckoutModelCart');
$params('qty') = 2;
$quote->addProduct($_product, $params)->save();

now, how can I add group and bundle products to the cart?