Install the Marketplace Merchant B2B Contract Requests feature
Edit on GitHubThis document describes how to install Merchant Portal Merchant B2B Contract Requests feature.
Prerequisites
Install the required features:
NAME | VERSION | INSTALLATION GUIDE |
---|---|---|
Marketplace Merchant Portal Core | 202404.0 | Install the Merchant Portal Core feature |
Merchant B2B Contract Requests | 202404.0 | Install the Merchant B2B Contracts feature |
1) Install the required modules
composer require spryker-feature/marketplace-merchant-contract-requests: "202404.0" --update-with-dependencies
Make sure the following modules have been installed:
MODULE | EXPECTED DIRECTORY |
---|---|
MerchantRelationRequestMerchantPortalGui | vendor/spryker/merchant-relation-request-merchant-portal-gui |
2) Set up the configuration
Add the following configuration:
CONFIGURATION | SPECIFICATION | NAMESPACE |
---|---|---|
AclConfig::getInstallerRules() | The default ACL rules that are added to the respective database table after executing setup:init-db . |
Pyz\Zed\Acl |
src/Pyz/Zed/Acl/AclConfig.php
<?php
namespace Pyz\Zed\Acl;
use Spryker\Shared\Acl\AclConstants;
use Spryker\Zed\Acl\AclConfig as SprykerAclConfig;
class AclConfig extends SprykerAclConfig
{
/**
* @var string
*/
protected const RULE_TYPE_DENY = 'deny';
/**
* @return array<array<string, mixed>>
*/
public function getInstallerRules(): array
{
$installerRules = parent::getInstallerRules();
$installerRules = $this->addMerchantPortalInstallerRules($installerRules);
return $installerRules;
}
/**
* @param array<array<string, mixed>> $installerRules
*
* @return array<array<string, mixed>>
*/
protected function addMerchantPortalInstallerRules(array $installerRules): array
{
$bundleNames = [
'merchant-relation-request-merchant-portal-gui',
];
foreach ($bundleNames as $bundleName) {
$installerRules[] = [
'bundle' => $bundleName,
'controller' => AclConstants::VALIDATOR_WILDCARD,
'action' => AclConstants::VALIDATOR_WILDCARD,
'type' => static::RULE_TYPE_DENY,
'role' => AclConstants::ROOT_ROLE,
];
}
return $installerRules;
}
}
- Execute the registered installer plugins:
console setup:init-db
- The following page is available for Merchant Portal users:
https://mp.mysprykershop.com/merchant-relation-request-merchant-portal-gui/merchant-relation-requests
. - Back Office users don’t have access to
https://mp.mysprykershop.com/merchant-relation-request-merchant-portal-gui/merchant-relation-requests
.
3) Set up transfer objects
Generate transfer changes:
console transfer:generate
Make sure the following changes have been applied in transfer objects:
Transfer | Type | Event | Path |
---|---|---|---|
MerchantRelationRequestTableCriteria | class | created | src/Generated/Shared/Transfer/MerchantRelationRequestTableCriteriaTransfer |
MerchantRelationRequestFormActionConfiguration | class | created | src/Generated/Shared/Transfer/MerchantRelationRequestFormActionConfigurationTransfer |
4) Set up behavior
Enable the following behaviors by registering the plugins:
PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE |
---|---|---|---|
IsOpenForRelationRequestOnlineProfileMerchantProfileFormExpanderPlugin | Expands OnlineProfileMerchantProfileForm with the field that defines the merchant relation request allowance. |
Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\MerchantProfileMerchantPortalGui | |
MerchantNotificationOfMerchantRelationRequestCreationMailTypeBuilderPlugin | Builds MailTransfer with the data for the merchant notification mail. |
Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\Mail | |
MerchantNotificationMerchantRelationRequestPostCreatePlugin | After a merchant relation request is created, sends a notification to the merchant. | Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\MerchantRelationRequest | |
MerchantRelationRequestMerchantRelationshipMerchantDashboardCardExpanderPlugin | Expands the provided MerchantDashboardCardTransfer with merchant relation request data. |
Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\MerchantRelationshipMerchantPortalGui |
src/Pyz/Zed/MerchantProfileMerchantPortalGui/MerchantProfileMerchantPortalGuiDependencyProvider.php
<?php
namespace Pyz\Zed\MerchantProfileMerchantPortalGui;
use Spryker\Zed\MerchantProfileMerchantPortalGui\MerchantProfileMerchantPortalGuiDependencyProvider as SprykerMerchantProfileMerchantPortalGuiDependencyProvider;
use Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\MerchantProfileMerchantPortalGui\IsOpenForRelationRequestOnlineProfileMerchantProfileFormExpanderPlugin;
class MerchantProfileMerchantPortalGuiDependencyProvider extends SprykerMerchantProfileMerchantPortalGuiDependencyProvider
{
/**
* @return list<\Spryker\Zed\MerchantProfileMerchantPortalGuiExtension\Dependency\Plugin\OnlineProfileMerchantProfileFormExpanderPluginInterface>
*/
protected function getOnlineProfileMerchantProfileFormExpanderPlugins(): array
{
return [
new IsOpenForRelationRequestOnlineProfileMerchantProfileFormExpanderPlugin(),
];
}
}
- In the Merchant Portal, go to Merchant Profile.
- On the Profile page, click the Online Profile tab. Make sure the Allow merchant relation requests checkbox is displayed.
src/Pyz/Zed/MerchantRelationshipMerchantPortalGui/MerchantRelationshipMerchantPortalGuiDependencyProvider.php
<?php
namespace Pyz\Zed\MerchantRelationshipMerchantPortalGui;
use Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\MerchantRelationshipMerchantPortalGui\MerchantRelationRequestMerchantRelationshipMerchantDashboardCardExpanderPlugin;
use Spryker\Zed\MerchantRelationshipMerchantPortalGui\MerchantRelationshipMerchantPortalGuiDependencyProvider as SprykerMerchantRelationshipMerchantPortalGuiDependencyProvider;
class MerchantRelationshipMerchantPortalGuiDependencyProvider extends SprykerMerchantRelationshipMerchantPortalGuiDependencyProvider
{
/**
* @return list<\Spryker\Zed\MerchantRelationshipMerchantPortalGuiExtension\Dependency\Plugin\MerchantRelationshipMerchantDashboardCardExpanderPluginInterface>
*/
protected function getMerchantRelationshipMerchantDashboardCardExpanderPlugins(): array
{
return [
new MerchantRelationRequestMerchantRelationshipMerchantDashboardCardExpanderPlugin(),
];
}
}
In the Merchant Portal, go to Dashboard. On the Dashboard page, make sure that in the B2B Contracts pane, the Merchant Relation Requests section and the Manage Pending Requests button are displayed.
src/Pyz/Zed\Mail/MailDependencyProvider.php
<?php
namespace Pyz\Zed\Mail;
use Spryker\Zed\Mail\MailDependencyProvider as SprykerMailDependencyProvider;
use Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\Mail\MerchantNotificationOfMerchantRelationRequestCreationMailTypeBuilderPlugin;
class MailDependencyProvider extends SprykerMailDependencyProvider
{
/**
* @return list<\Spryker\Zed\MailExtension\Dependency\Plugin\MailTypeBuilderPluginInterface>
*/
protected function getMailTypeBuilderPlugins(): array
{
return [
new MerchantNotificationOfMerchantRelationRequestCreationMailTypeBuilderPlugin(),
];
}
}
src/Pyz/Zed/MerchantRelationRequest/MerchantRelationRequestDependencyProvider.php
<?php
namespace Pyz\Zed\MerchantRelationRequest;
use Spryker\Zed\MerchantRelationRequest\MerchantRelationRequestDependencyProvider as SprykerMerchantRelationRequestDependencyProvider;
use Spryker\Zed\MerchantRelationRequestMerchantPortalGui\Communication\Plugin\MerchantRelationRequest\MerchantNotificationMerchantRelationRequestPostCreatePlugin;
class MerchantRelationRequestDependencyProvider extends SprykerMerchantRelationRequestDependencyProvider
{
/**
* @return list<\Spryker\Zed\MerchantRelationRequestExtension\Dependency\Plugin\MerchantRelationRequestPostCreatePluginInterface>
*/
protected function getMerchantRelationRequestPostCreatePlugins(): array
{
return [
new MerchantNotificationMerchantRelationRequestPostCreatePlugin(),
];
}
}
Make sure that, when a merchant relation request is created, the merchant receives a notification email.
5) Configure navigation
- Add the
MerchantRelationRequestMerchantPortalGui
section tonavigation.xml
:
config/Zed/navigation.xml
<?xml version="1.0"?>
<config>
<b2b-contracts>
<label>B2B Contracts</label>
<title>B2B Contracts</title>
<icon>contracts</icon>
<pages>
<merchant-relation-request-merchant-portal-gui>
<label>Merchant Relation Requests</label>
<title>Merchant Relation Requests</title>
<bundle>merchant-relation-request-merchant-portal-gui</bundle>
<controller>merchant-relation-requests</controller>
<action>index</action>
</merchant-relation-request-merchant-portal-gui>
</pages>
</b2b-contracts>
</config>
- Build the navigation cache:
console navigation:build-cache
In the Merchant Portal, make sure the B2B Contracts and Merchant Relation Requests navigation menu items are displayed.
Thank you!
For submitting the form