diff --git a/CHANGELOG.md b/CHANGELOG.md index ea556c4..fcbecd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.1.18] - 2021-08-26 +### Added +- Aggiunto Arrotondamento e TipoCessionePrestazione #90 by danielebuso + ## [1.1.17] - 2021-08-25 ### Added - Aggiunta impostazione decimali per linea #89 by danielebuso diff --git a/src/Codifiche/TipoCessionePrestazione.php b/src/Codifiche/TipoCessionePrestazione.php new file mode 100644 index 0000000..f2a7962 --- /dev/null +++ b/src/Codifiche/TipoCessionePrestazione.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + */ + +namespace Deved\FatturaElettronica\Codifiche; + +use Deved\FatturaElettronica\Traits\CodificaTrait; + +abstract class TipoCessionePrestazione +{ + use CodificaTrait; + + const Abbuono = 'AB'; + const SpesaAccessoria = 'AC'; + const Premio = 'PR'; + const Sconto = 'SC'; + + protected static $codifiche = array( + 'AB' => 'Abbuono', + 'AC' => 'Spesa accessoria', + 'PR' => 'Premio', + 'SC' => 'Sconto' + ); +} diff --git a/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo.php b/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo.php index 6a178e9..08bcd79 100644 --- a/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo.php +++ b/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo.php @@ -29,6 +29,10 @@ class DatiRiepilogo implements XmlSerializableInterface, \Countable, \Iterator protected $datiRiepilogoAggiuntivi = []; /** @var int */ protected $currentIndex = 0; + /** @var float */ + protected $arrotondamento; + /** @var float */ + protected $decimaliArrotondamento; /** * DatiRiepilogo constructor. @@ -37,7 +41,7 @@ class DatiRiepilogo implements XmlSerializableInterface, \Countable, \Iterator * @param string $esigibilitaIVA * @param bool $imposta */ - public function __construct($imponibileImporto, $aliquotaIVA, $esigibilitaIVA = "I", $imposta = false) + public function __construct($imponibileImporto, $aliquotaIVA, $esigibilitaIVA = "I", $imposta = false, $arrotondamento = null, $decimaliArrotondamento = 2) { if ($imposta === false) { $this->imposta = ($imponibileImporto / 100) * $aliquotaIVA; @@ -48,6 +52,8 @@ public function __construct($imponibileImporto, $aliquotaIVA, $esigibilitaIVA = $this->aliquotaIVA = $aliquotaIVA; $this->esigibilitaIVA = $esigibilitaIVA; $this->datiRiepilogoAggiuntivi[] = $this; + $this->arrotondamento = $arrotondamento; + $this->decimaliArrotondamento = $decimaliArrotondamento; } /** @@ -62,6 +68,9 @@ public function toXmlBlock(\XMLWriter $writer) $writer->startElement('DatiRiepilogo'); $writer->writeElement('AliquotaIVA', fe_number_format($block->aliquotaIVA, 2)); $block->writeXmlField('Natura', $writer); + if ($block->arrotondamento) { + $writer->writeElement('Arrotondamento', fe_number_format($block->arrotondamento, $block->decimaliArrotondamento)); + } $writer->writeElement('ImponibileImporto', fe_number_format($block->imponibileImporto, 2)); $writer->writeElement('Imposta', fe_number_format($block->imposta, 2)); if (!$natura) { diff --git a/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/Linea.php b/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/Linea.php index 296a0e8..179904f 100644 --- a/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/Linea.php +++ b/src/FatturaElettronica/FatturaElettronicaBody/DatiBeniServizi/Linea.php @@ -37,6 +37,8 @@ class Linea implements XmlSerializableInterface protected $scontoMaggiorazione = []; /** @var int */ protected $decimaliLinea; + /** @var string */ + protected $tipoCessionePrestazione; /** @@ -58,7 +60,8 @@ public function __construct( $unitaMisura = 'pz', $aliquotaIva = 22.00, $codiceTipo = 'FORN', - $decimaliLinea = 2 + $decimaliLinea = 2, + $tipoCessionePrestazione = null ) { $this->codiceArticolo = $codiceArticolo; $this->descrizione = $descrizione; @@ -68,6 +71,7 @@ public function __construct( $this->aliquotaIva = $aliquotaIva; $this->codiceTipo = $codiceTipo; $this->decimaliLinea = $decimaliLinea; + $this->tipoCessionePrestazione = $tipoCessionePrestazione; } @@ -79,6 +83,9 @@ public function toXmlBlock(\XMLWriter $writer) { $writer->startElement('DettaglioLinee'); $writer->writeElement('NumeroLinea', $this->numeroLinea); + if ($this->tipoCessionePrestazione) { + $writer->writeElement('TipoCessionePrestazione', $this->tipoCessionePrestazione); + } if ($this->codiceArticolo) { $writer->startElement('CodiceArticolo'); $writer->writeElement('CodiceTipo', $this->codiceTipo);