abeta-io / shopware6
Abeta OCI & cXML PunchOut
Package info
Type:shopware-platform-plugin
pkg:composer/abeta-io/shopware6
Requires
- shopware/core: ~6.6.0
- shopware/storefront: ~6.6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.40.0
- nunomaduro/phpinsights: ^2.10
- phpcompatibility/php-compatibility: ^9.3
- phpstan/phpstan: ^0.12.82
- phpunit/phpunit: ^10
- squizlabs/php_codesniffer: ^3.6
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-14 08:11:17 UTC
README
The official Shopware 6 plugin for Abeta. Offer OCI and cXML PunchOut quickly and easily with Abeta. Connect with procurement systems / ERPs such as Coupa, Oracle and Sap Ariba. Increase the turnover of existing customers or acquire new customers with the help of B2B connections.
Requirements
- Shopware 6.6
Installation
Install via Composer
-
Go to your Shopware 6 root folder
-
Enter the following command to install the plugin:
composer require abeta-io/shopware6 -
Enter the following commands to install and activate the plugin:
bin/console plugin:refresh bin/console plugin:install --activate AbetaPunchOut bin/console cache:clear -
Compile the storefront theme so the plugin's storefront assets are loaded:
bin/console theme:compile
Install from GitHub
-
Download the zip package from https://github.com/abeta-io/shopware6 by clicking "Code" and selecting "Download ZIP" from the dropdown.
-
Create a custom/plugins/AbetaPunchOut directory in your Shopware 6 root folder.
-
Extract the contents from the "shopware6" zip and copy or upload everything to custom/plugins/AbetaPunchOut
-
Run the following commands from the Shopware 6 root folder to install and activate the plugin:
bin/console plugin:refresh bin/console plugin:install --activate AbetaPunchOut bin/console cache:clear bin/console theme:compile
Extending
Modify the exported cart
Available since 6.1.0. After the cart export data is assembled, the plugin dispatches Abeta\PunchOut\Event\AbetaCartExportEvent. Subscribe to it in your own plugin to add or change data before it is sent to Abeta, for example extra line item fields:
public static function getSubscribedEvents(): array { return [AbetaCartExportEvent::class => 'onCartExport']; } public function onCartExport(AbetaCartExportEvent $event): void { $data = $event->getData(); // modify $data, using $event->getCart() and $event->getSalesChannelContext() where needed $event->setData($data); }
The event is only dispatched for the punch-out cart export, not for the /v1/abeta/itemdata endpoint.
Custom customer login
The punch-out login validates the username and password with Shopware's core customer lookup (e-mail address and the password stored on the customer). A shop needs its own resolver when its storefront login works differently, for example when users log in with a username or are stored outside the customer table.
Available since 6.2.0. Implement Abeta\PunchOut\Service\AbetaCustomerResolverInterface in your own plugin and decorate the service:
<service id="MyPlugin\Service\MyCustomerResolver" decorates="Abeta\PunchOut\Service\AbetaCustomerResolverInterface"> <argument type="service" id="MyPlugin\Service\MyCustomerResolver.inner"/> </service>
The .inner argument is only needed if your resolver falls back to the default lookup. resolve() returns the customer and throws an exception when the credentials do not match. The reason is written to the Shopware log (channel abeta); the response to the middleware stays a generic "Customer does not exist".