axiostudio/fattura-elettronica

PHP 中的电子发票管理包。

1.0.7 2024-02-01 14:23 UTC

This package is auto-updated.

Last update: 2024-09-30 15:54:36 UTC


README

Latest Version on Packagist Tests Total Downloads

简介

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)