Entwickler
Die Erweiterung stellt drei Erweiterungspunkte bereit, über die eigene oder fremde Module angebunden werden – für Nachlässe, für bereits gezahlte Beträge und für SEPA-Lastschriftdaten. Die beiden Adapter-Interfaces werden per Dependency Injection in einen Pool registriert, der Lastschrift-Erweiterungspunkt über eine Preference.
Integrationsarten im Überblick
| Bereich | Erweiterungspunkt | Behandlung |
|---|---|---|
| Gutscheine, Guthaben, Bonuspunkte | PrepaidAdapterInterface |
BT-113 (Vorauszahlung) |
| Zusätzliche Nachlässe | AllowanceAdapterInterface |
Nachlass auf Belegebene (BG-20) |
| SEPA-Lastschrift | DirectDebitDataProviderInterface |
BG-19 (BT-89/90/91) |
| PDF-Erweiterungen für Rechnungsdokumente | Plugin (ohne eigenes Interface) | 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;
}
DirectDebitDataProviderInterface
Für die SEPA-Lastschriftangaben (BG-19). Magento kennt keine eigene Lastschriftzahlung, daher kann die Erweiterung Mandatsreferenz, Gläubiger-Identifikationsnummer und die zu belastende IBAN nicht selbst ermitteln. Betreiben Sie eine eigene Lastschriftlösung, liefern Sie die Werte über diesen Erweiterungspunkt.
namespace Geissweb\ElectronicInvoicing\Api;
use Geissweb\ElectronicInvoicing\Model\Payment\DirectDebitData;
use Magento\Sales\Api\Data\CreditmemoInterface;
use Magento\Sales\Api\Data\InvoiceInterface;
interface DirectDebitDataProviderInterface
{
public function getDirectDebitData(InvoiceInterface|CreditmemoInterface $document): ?DirectDebitData;
}
Das zurückgegebene DirectDebitData wird über die generierte DirectDebitDataFactory erzeugt:
| Argument | Geschäftsbegriff | Pflicht |
|---|---|---|
debtorIban |
BT-91 – zu belastendes Konto, muss eine gültige IBAN sein (BR-DE-20) | ja |
creditorReferenceId |
BT-90 – Gläubiger-Identifikationsnummer | ja |
mandateReference |
BT-89 – Mandatsreferenz | nein |
Anders als die beiden Adapter wird dieser Erweiterungspunkt als Preference registriert:
<preference for="Geissweb\ElectronicInvoicing\Api\DirectDebitDataProviderInterface"
type="Vendor\Module\Model\MyDirectDebitDataProvider"/>
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.