Développeur
L'extension propose trois points d'extension permettant de raccorder vos propres modules ou des modules tiers – pour les remises, pour les montants déjà réglés et pour les données de prélèvement SEPA. Les deux interfaces d'adaptateur sont enregistrées dans un pool par injection de dépendances, le point d'extension de prélèvement via une preference.
Types d'intégration
| Domaine | Point d'extension | Traitement |
|---|---|---|
| Bons, avoirs, points de fidélité | PrepaidAdapterInterface |
BT-113 (acompte) |
| Remises supplémentaires | AllowanceAdapterInterface |
Remise au niveau du document (BG-20) |
| Prélèvement SEPA | DirectDebitDataProviderInterface |
BG-19 (BT-89/90/91) |
| Extensions PDF pour les documents de facture | Plugin (sans interface dédiée) | PDF ZUGFeRD hybride avec XML intégré |
AllowanceAdapterInterface
Pour les montants qui doivent être représentés comme une remise au niveau du document.
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() fournit, pour chaque remise, un tableau avec les clés amount (float, hors TVA), vat_category (catégorie EN 16931, par ex. S), vat_rate (float, par ex. 19.0), reason (texte) et reason_code (par ex. DISCOUNT).
PrepaidAdapterInterface
Pour les montants déjà payés (BT-113) tels que bons, avoirs ou points de fidélité.
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
Pour les données de prélèvement SEPA (BG-19). Magento ne connaît pas de paiement par prélèvement natif ; l'extension ne peut donc pas déterminer elle-même la référence de mandat, l'identifiant du créancier ni le compte à débiter. Si vous exploitez votre propre solution de prélèvement, fournissez les valeurs via ce point d'extension.
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;
}
L'objet DirectDebitData retourné est créé via la fabrique générée DirectDebitDataFactory :
| Argument | Terme métier | Obligatoire |
|---|---|---|
debtorIban |
BT-91 – compte à débiter, doit être un IBAN valide (BR-DE-20) | oui |
creditorReferenceId |
BT-90 – identifiant du créancier | oui |
mandateReference |
BT-89 – référence de mandat | non |
Contrairement aux deux adaptateurs, ce point d'extension s'enregistre comme preference :
<preference for="Geissweb\ElectronicInvoicing\Api\DirectDebitDataProviderInterface"
type="Vendor\Module\Model\MyDirectDebitDataProvider"/>
Enregistrer son propre adaptateur
Implémentez l'interface adaptée et enregistrez la classe dans le pool correspondant dans le fichier etc/di.xml de votre module :
<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>
Pour les adaptateurs d'acompte, utilisez de manière analogue Geissweb\ElectronicInvoicing\Model\Adapter\PrepaidAdapterPool.