Die Erweiterung lässt sich über zwei Adapter-Interfaces an Drittmodule anbinden – etwa für Gutscheine, Guthaben, Bonuspunkte oder zusätzliche Rabatte. Adapter werden per Dependency Injection in einen Pool registriert und automatisch berücksichtigt.
Unterstützte Drittmodule
| Modul | Integration | Behandlung |
|---|---|---|
| Aheadworks Gift Cards | PrepaidAdapter | BT-113 (Vorauszahlung) |
| Standard-PDF (Magento Core), Magetrend, Mageplaza | PDF-Einbettung | Hybrides ZUGFeRD-PDF mit eingebettetem XML |
AllowanceAdapterInterface
Für Beträge, die als Nachlass auf Belegebene abgebildet werden sollen.
namespace Geissweb\ElectronicInvoicing\Api;
use Magento\Sales\Api\Data\InvoiceInterface;
use Magento\Sales\Api\Data\CreditmemoInterface;
interface AllowanceAdapterInterface
{
public function isEnabled(): bool;
/**
* @return array<int, array<string, mixed>>
*/
public function extractAllowances(InvoiceInterface|CreditmemoInterface $document): array;
public function getModuleName(): string;
public function getPriority(): int;
}
extractAllowances() liefert je Nachlass ein Array mit den Schlüsseln amount (float, ohne USt.), vat_category (EN-16931-Kategorie, z. B. S), vat_rate (float, z. B. 19.0), reason (Text) und reason_code (z. B. DISCOUNT).
PrepaidAdapterInterface
Für bereits gezahlte Beträge (BT-113) wie Gutscheine, Guthaben oder Bonuspunkte.
namespace Geissweb\ElectronicInvoicing\Api;
use Magento\Sales\Api\Data\CreditmemoInterface;
use Magento\Sales\Api\Data\InvoiceInterface;
interface PrepaidAdapterInterface
{
public function isEnabled(): bool;
/**
* @return array{amount: float, reference: string}
*/
public function extractPrepaidAmount(InvoiceInterface|CreditmemoInterface $document): array;
public function getModuleName(): string;
public function getPriority(): int;
}
Eigenen Adapter registrieren
Implementieren Sie das passende Interface und registrieren Sie die Klasse im jeweiligen Pool in der etc/di.xml Ihres Moduls:
<type name="Geissweb\ElectronicInvoicing\Model\Adapter\AllowanceAdapterPool">
<arguments>
<argument name="adapters" xsi:type="array">
<item name="custom" xsi:type="object">Vendor\Module\Model\Adapter\CustomAllowanceAdapter</item>
</argument>
</arguments>
</type>
Für Vorauszahlungs-Adapter verwenden Sie analog Geissweb\ElectronicInvoicing\Model\Adapter\PrepaidAdapterPool.