Herzlich willkommen

Développeur

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;
}

Les deux interfaces se trouvent dans l'espace de noms Geissweb\ElectronicInvoicing\Api. getPriority() pilote l'ordre d'exécution – valeurs plus petites = priorité plus élevée (par défaut 100).

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.

Via isEnabled(), l'adaptateur peut vérifier si le module cible est installé/actif et activé dans la configuration. L'intégration reste ainsi inactive tant qu'elle n'est pas nécessaire.