I am trying to add the MassAction in listing of Credit Events but get an error as “This tab contains invalid data. Please resolve this before saving.“
This error comes when I am trying to create a New Company but when I edit the company this error doesn’t come.
Screenshot for the reference : https://prnt.sc/xrQ2YxiE5zY5
My amcompany_company_credit_event_listing.xml looks like following :
<?xml version="1.0"?>
<!--
/**
* @author Amasty Team
* @copyright Copyright (c) Amasty (https://www.amasty.com)
* @package B2B Company Account for Magento 2
*/-->
<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">amcompany_company_credit_event_listing.amcompany_company_credit_event_listing_data_source</item>
<item name="deps" xsi:type="string">amcompany_company_credit_event_listing.amcompany_company_credit_event_listing_data_source</item>
</item>
<item name="spinner" xsi:type="string">credit_event_listing_columns</item>
</argument>
<dataSource name="amcompany_company_credit_event_listing_data_source">
<argument name="dataProvider" xsi:type="configurableObject">
<argument name="class" xsi:type="string">AmastyCompanyAccountUiDataProviderCreditEventDataProvider</argument>
<argument name="name" xsi:type="string">amcompany_company_credit_event_listing_data_source</argument>
<argument name="primaryFieldName" xsi:type="string">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">id</item>
</item>
<item name="imports" xsi:type="array">
<item name="params.credit_id" xsi:type="string">amcompany_company_form.amcompany_company_form_data_source:data.store_credit.id</item>
</item>
</item>
</argument>
</argument>
</dataSource>
<listingToolbar name="listing_top">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="sticky" xsi:type="boolean">true</item>
</item>
</argument>
<bookmark name="bookmarks"/>
<columnsControls name="columns_controls"/>
<filters name="listing_filters">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="templates" xsi:type="array">
<item name="filters" xsi:type="array">
<item name="select" xsi:type="array">
<item name="component" xsi:type="string">Magento_Ui/js/form/element/ui-select</item>
<item name="template" xsi:type="string">ui/grid/filters/elements/ui-select</item>
</item>
</item>
</item>
</item>
</argument>
</filters>
<paging name="listing_paging"/>
<massaction name="listing_massaction">
<!-- Delete Action -->
<action name="delete_credit_event">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="type" xsi:type="string">delete</item>
<item name="label" xsi:type="string" translate="true">Delete</item>
<item name="url" xsi:type="url" path="test/creditevent/massDelete"/>
<item name="confirm" xsi:type="array">
<item name="title" xsi:type="string" translate="true">Delete Credit Events</item>
<item name="message" xsi:type="string" translate="true">
Are you sure you want to delete the selected credit events?
</item>
</item>
</item>
</argument>
</action>
</massaction>
</listingToolbar>
<columns name="credit_event_listing_columns" class="MagentoUiComponentListingColumns">
<selectionsColumn name="ids">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="indexField" xsi:type="string">id</item>
</item>
</argument>
</selectionsColumn>
<column name="id">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">ID</item>
<item name="filter" xsi:type="string">textRange</item>
<item name="sortOrder" xsi:type="number">10</item>
<item name="visible" xsi:type="boolean">false</item>
</item>
</argument>
</column>
<column name="datetime">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Date</item>
<item name="filter" xsi:type="string">dateRange</item>
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
<item name="dataType" xsi:type="string">date</item>
<item name="sorting" xsi:type="string">desc</item>
<item name="sortOrder" xsi:type="number">20</item>
</item>
</argument>
</column>
<column name="type">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">AmastyCompanyAccountModelSourceCreditOperation</item>
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Operation</item>
<item name="filter" xsi:type="string">select</item>
<item name="dataType" xsi:type="string">select</item>
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item>
<item name="sortOrder" xsi:type="number">30</item>
</item>
</argument>
</column>
<column name="comment" class="AmastyCompanyAccountUiComponentCreditEventListingColumnEventComment">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Comment</item>
<item name="bodyTmpl" xsi:type="string">ui/grid/cells/html</item>
<item name="filter" xsi:type="string">text</item>
<item name="sortOrder" xsi:type="number">40</item>
</item>
</argument>
</column>
<column name="amount" class="AmastyCompanyAccountUiComponentCreditEventListingColumnEventAmount">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Amount</item>
<item name="filter" xsi:type="string">textRange</item>
<item name="sortOrder" xsi:type="number">50</item>
</item>
</argument>
</column>
<column name="balance" class="AmastyCompanyAccountUiComponentCreditEventListingColumnEventBalance">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Balance</item>
<item name="filter" xsi:type="string">textRange</item>
<item name="sortOrder" xsi:type="number">60</item>
</item>
</argument>
</column>
</columns>
</listing>
My Controller looks like following :
<?php
namespace TestCompanyControllerAdminhtmlCreditEvent;
use MagentoBackendAppAction;
use MagentoBackendAppActionContext;
use MagentoFrameworkControllerResultFactory;
use MagentoUiComponentMassActionFilter;
use AmastyCompanyAccountModelResourceModelCreditEventCollectionFactory;
class MassDelete extends Action
{
protected $filter;
protected $collectionFactory;
public function __construct(
Context $context,
Filter $filter,
CollectionFactory $collectionFactory
) {
$this->filter = $filter;
$this->collectionFactory = $collectionFactory;
parent::__construct($context);
}
public function execute()
{
try {
$collection = $this->filter->getCollection($this->collectionFactory->create());
$collectionSize = $collection->getSize();
if ($collectionSize > 0) {
foreach ($collection as $item) {
$item->delete();
}
$this->messageManager->addSuccessMessage(__('A total of %1 record(s) have been deleted.', $collectionSize));
} else {
$this->messageManager->addNoticeMessage(__('No records were selected for deletion.'));
}
} catch (Exception $e) {
$this->messageManager->addErrorMessage(__('An error occurred while deleting records: %1', $e->getMessage()));
}
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
return $resultRedirect->setRefererUrl();
}
}
My routes.xml looks like following :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="test" frontName="test">
<module name="Test_Company" before="Magento_Backend"/>
</route>
</router>
</config>
My module.xml looks like following :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Test_Company" setup_version="1.0.0">
<sequence>
<module name="Amasty_CompanyAccount"/>
</sequence>
</module>
</config>
my di.xml looks like following :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework/ObjectManager/etc/config.xsd">
<type name="TestCompanyControllerAdminhtmlCreditEventMassDelete">
<arguments>
<argument name="filter" xsi:type="object">MagentoUiComponentMassActionFilter</argument>
<argument name="collectionFactory" xsi:type="object">AmastyCompanyAccountModelResourceModelCreditEventCollectionFactory</argument>
</arguments>
</type>
</config>