L'extension peut être raccordée à des modules tiers via deux interfaces d'adaptateur – par exemple pour les bons, les avoirs, les points de fidélité ou des remises supplémentaires. Les adaptateurs sont enregistrés dans un pool par injection de dépendances et pris en compte automatiquement.
Modules tiers pris en charge
| Module | Intégration | Traitement |
|---|---|---|
| Aheadworks Gift Cards | PrepaidAdapter | BT-113 (acompte) |
| PDF standard (Magento Core), Magetrend, Mageplaza | Intégration PDF | 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;
}
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.