Search by

abeta-io / shopware6

abeta-io

Abeta OCI & cXML PunchOut

Package info

github.com/abeta-io/shopware6

Type:shopware-platform-plugin

pkg:composer/abeta-io/shopware6

Statistics

Installs: 77

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

6.2.0 2026-10-14 08:08 UTC

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

  1. Go to your Shopware 6 root folder

  2. Enter the following command to install the plugin:

    composer require abeta-io/shopware6
    
  3. Enter the following commands to install and activate the plugin:

    bin/console plugin:refresh
    bin/console plugin:install --activate AbetaPunchOut
    bin/console cache:clear
    
  4. Compile the storefront theme so the plugin's storefront assets are loaded:

    bin/console theme:compile
    

Install from GitHub

  1. Download the zip package from https://github.com/abeta-io/shopware6 by clicking "Code" and selecting "Download ZIP" from the dropdown.

  2. Create a custom/plugins/AbetaPunchOut directory in your Shopware 6 root folder.

  3. Extract the contents from the "shopware6" zip and copy or upload everything to custom/plugins/AbetaPunchOut

  4. 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".