Come da PR inviata: #39 (grazie @KristianLentino99) l'idea è di introdurre la possibilità di inviare le fatture elettroniche tramite una libreria PHP ai vari intermediari.
In questa Issue vorremmo definire le modalità in cui tale feature potrebbe essere implementata.
A. Integrata direttamente nel pacchetto
Introdurre la soluzione come da PR #39 , con l'aggiunta di un'interfaccia generica al posto della classe astratta.
In questa soluzione, che risulterebbe la più facile da implementare, ci sarebbe la problematica di aggiunta di varie dipendenze possibilmente non necessarie e la necessità di rilasciare una nuova versione ad ogni nuovo driver pubblicato o ad ogni modifica di driver esistenti.
Inoltre risulterebbe impossibile inviare fatture non prodotte dal pacchetto stesso, a meno di non caricarle tramite la libreria stessa per poi inviarle.
B. Pacchetto separato, con vari driver
In questo scenario, si creerebbe un nuovo pacchetto sotto la stessa organizzazione (fatturaelettronicaphp/fatturaelettronica-sender
o una cosa così) che si occupa di inviare fatture elettroniche allo SDI. Tali fatture potranno essere inviate direttamente come file xml o passando attraverso la libreria "core".
Anche qui però i driver sarebbero tutti accorpati in un pacchetto unico.
C. Pacchetto separato, e pacchetti separati per vari driver.
Questa è la soluzione che preferisco, dove si creerebbe un pacchetto "base" per l'invio astratto, e poi un pacchetto per ogni driver, così ognuno può scegliere solo il suo driver e avere il minor numero di dipendenze possibile (ie: fatturaelettronicaphp-sender-aruba
, fatturaelettronicaphp-sender-shellrent
, etc)
Pingo @KristianLentino99 e @tobispace per ulteriori opinioni al riguardo
Esempio di Interfaccia:
<?php
namespace FatturaElettronicaPhp\Sender;
interface DigitalDocumentSender
{
/** @throws CannotSendDigitalDocumentException **/
public function send(\SimpleXmlElement $xml): void;
}