axiostudio / fattura-elettronica
PHP 中的电子发票管理包。
1.0.7
2024-02-01 14:23 UTC
Requires
- php: ^8.1|^8.2|^8.3
- spatie/array-to-xml: ^3.2
- symfony/validator: ^6.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.48
- phpunit/phpunit: ^9.0
README
简介
Fattura Elettronica 是一个 PHP 包,允许在应用程序内部生成与以下规范兼容的 XML 电子发票:[链接](https://www.agenziaentrate.gov.it/portale/web/guest/fatturazione-elettronica-e-dati-fatture-transfrontaliere-new)
要求
- Composer 2
- PHP (从版本 8.1 开始)
安装
要安装此包,请执行
composer require axiostudio/fattura-elettronica
使用
安装完成后,要使用此包,需要初始化类
$fattura = new \Axiostudio\FatturaElettronica\FatturaElettronica();
之后,需要将必要的数据传递给 "compose" 方法,这将返回一个包含参数 fileName
(声明生成的 XML 文件名)和参数 fileContent
(包含生成的 XML 字符串)的数组。
要生成发票,需要调用 compose()
方法,并传递发票所需的必要数据,这些数据将被解析、计算并转换为符合规范的 XML 格式。
"compose" 函数需要以下对象,按以下顺序组成发票
- $datiTrasmissione,
- $anagraficaPrestatore,
- $sedePrestatore,
- $anagraficaCommittente,
- $sedeCommittente,
- $datiGenerali,
- $datiDatiPagamento,
- $dettaglioLinee,
- $datiRiepilogo
每个对象都有特定的结构,包含必填数据和可选数据。以下是它们的描述
数据身份信息
public Id $IdFiscaleIVA;
public Anagrafica $Anagrafica;
public ?string $CodiceFiscale;
public ?string $RegimeFiscale;
Id
public string $IdCodice;
public ?string $IdPaese;
身份信息
public ?string $Denominazione;
public ?string $Nome;
public ?string $Cognome;
地点
public string $Indirizzo;
public string $CAP;
public string $Comune;
public ?string $Provincia;
public ?string $Nazione;
文件一般数据
public string $Numero;
public string $Data;
public float $ImportoTotaleDocumento;
public ?string $Causale;
public ?string $TipoDocumento;
public ?string $Divisa;
支付数据
public DettaglioPagamento $DettaglioPagamento;
public ?string $CondizioniPagamento;
支付详情
public float $ImportoPagamento;
public ?string $DataScadenzaPagamento;
public ?string $DataRiferimentoTerminiPagamento;
public ?string $GiorniTerminiPagamento;
public ?string $Beneficiario;
public ?string $IstitutoFinanziario;
public ?string $IBAN;
public ?string $ABI;
public ?string $CAB;
public ?string $BIC;
public ?string $ModalitaPagamento;
摘要数据
public float $ImponibileImporto;
public float $AliquotaIVA;
public ?string $Natura;
public ?string $EsigibilitaIVA;
public float $Imposta;
传输数据
public Id $IdTrasmittente;
public string $ProgressivoInvio;
public ?string $CodiceDestinatario;
public ?string $PECDestinatario;
public ?string $FormatoTrasmissione;
行详情
public string $Descrizione;
public float $PrezzoUnitario;
public ?float $Quantita;
public ?string $UnitaMisura;
public ?float $AliquotaIVA;
public ?string $Natura;
public ?float $PrezzoTotale;
支付详情
public float $ImportoPagamento;
public ?string $DataScadenzaPagamento;
public ?string $DataRiferimentoTerminiPagamento;
public ?string $GiorniTerminiPagamento;
public ?string $Beneficiario;
public ?string $IstitutoFinanziario;
public ?string $IBAN;
public ?string $ABI;
public ?string $CAB;
public ?string $BIC;
public ?string $ModalitaPagamento;
初始化新的发票
因此,初始化发票将有一个这样的结构
$datiXml = $fattura->compose( $datiTrasmissione, // DatiTrasmissione $anagraficaPrestatore, // DatiAnagrafici $sedePrestatore, // Sede $anagraficaCommittente, // DatiAnagrafici $sedeCommittente, // Sede $datiGenerali, // DatiGeneraliDocumento $datiDatiPagamento, // DatiPagamento $dettaglioLinee, // [] DettaglioLinee $datiRiepilogo // [] DatiRiepilogo );
完整示例
以下是一个简单的使用示例
$fattura = new FatturaElettronica(); $datiTrasmissione = [ '12345678910', '123' ]; $anagraficaPrestatore = [ '12345678910', 'Fornitore srl' ]; $sedePrestatore = [ 'Via Verdi', '00100', 'Roma', 'RM' ]; $anagraficaCommittente = [ '12345678911', 'Cliente srl' ]; $sedeCommittente = [ 'Via Puccini', '20100', 'Milano', 'MI' ]; $datiGeneraliDocumento = [ '123', '2021-01-01', '345.22' ]; $datiGenerali = [$datiGeneraliDocumento]; $dettaglioPagamento = ['345.22']; $datiDatiPagamento = [$dettaglioPagamento]; $dettaglioLinee = [ ['Articolo di riga 1', '100.50'], ['Articolo di riga 2', '100.50'], ['Articolo di riga 3', '100.00', '1', 'pz', '0.00', 'N2.1'], ]; $datiRiepilogo = [ ['201.00', '22.00'], ['100.00', '0.00', 'N2.1'], ]; $datiXml = $fattura->compose( $datiTrasmissione, $anagraficaPrestatore, $sedePrestatore, $anagraficaCommittente, $sedeCommittente, $datiGenerali, $datiDatiPagamento, $dettaglioLinee, $datiRiepilogo ); var_dump($datiXml);
注意
对于支持或错误,请使用 Github 的问题,对于合作,只需打开一个包含执行整合特定说明的 PR 即可。
致谢
此包由 Axio Studio 创建和维护,更多信息请参阅:[链接](https://axio.studio)