diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php
index 54ca06eef..878b81052 100755
--- a/modules/fatture/actions.php
+++ b/modules/fatture/actions.php
@@ -144,6 +144,8 @@ switch (post('op')) {
// Flag pagamento ritenuta
$fattura->is_ritenuta_pagata = post('is_ritenuta_pagata') ?: 0;
+ $fattura->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
+
$fattura->save();
// Operazioni automatiche per le Fatture Elettroniche
diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php
index a7853e887..8143e7cec 100755
--- a/modules/fatture/edit.php
+++ b/modules/fatture/edit.php
@@ -390,6 +390,7 @@ elseif ($record['stato'] == 'Bozza') {
}
echo '
';
+
if ($dir == 'entrata') {
echo '
@@ -406,7 +407,12 @@ elseif ($record['stato'] == 'Bozza') {
{[ "type": "number", "label": "'.tr('Importo marca da bollo').'", "name": "bollo", "value": "$bollo$"]}
+
+
+ {[ "type": "number", "label": "'.tr('Sconto finale').'", "name": "sconto_finale", "value": "'.($fattura->sconto_finale_percentuale ?: $fattura->sconto_finale).'", "icon-after": "choice|untprc|'.(empty($fattura->sconto_finale) ? 'PRC' : 'UNT').'", "help": "'.tr('Sconto finale in fattura, utilizzabile per applicare sconti sul Netto a pagare del documento e le relative scadenze').'. '.tr('Per utilizzarlo in relazione a una riga della Fattura Elettronica, inserire il testo di descrizione in \'\'Attributi avanzati\'\' -> \'\'Altri Dati Gestionali\'\' -> \'\'Riferimento Testo\'\' della specifica riga').'." ]}
+
';
+
$bollo = new Bollo($fattura);
}
?>
diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php
index 6f70dc049..f9630beea 100755
--- a/modules/fatture/row-list.php
+++ b/modules/fatture/row-list.php
@@ -234,6 +234,7 @@ $sconto = $fattura->sconto;
$totale_imponibile = $fattura->totale_imponibile;
$iva = $fattura->iva;
$totale = $fattura->totale;
+$sconto_finale = $fattura->getScontoFinale();
$netto_a_pagare = $fattura->netto;
$rivalsa_inps = $fattura->rivalsa_inps;
$ritenuta_acconto = $fattura->ritenuta_acconto;
@@ -361,6 +362,20 @@ if (!empty($ritenuta_contributi)) {
';
}
+// SCONTO FINALE
+if (!empty($sconto_finale)) {
+ echo '
+
+
+ '.tr('Sconto finale', [], ['upper' => true]).':
+ |
+
+ '.moneyFormat($sconto_finale, 2).'
+ |
+ |
+
';
+}
+
// NETTO A PAGARE
if ($totale != $netto_a_pagare) {
echo '
diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php
index 254a0682a..a330b0285 100755
--- a/modules/fatture/src/Fattura.php
+++ b/modules/fatture/src/Fattura.php
@@ -51,6 +51,9 @@ class Fattura extends Document
'bollo' => 'float',
'peso' => 'float',
'volume' => 'float',
+
+ 'sconto_finale' => 'float',
+ 'sconto_finale_percentuale' => 'float',
];
protected $with = [
@@ -280,14 +283,53 @@ class Fattura extends Document
// Calcoli
+ /**
+ * Imposta lo sconto finale sulla Fattura.
+ * Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
+ *
+ * @param $sconto
+ * @param $tipo
+ */
+ public function setScontoFinale($sconto, $tipo)
+ {
+ if ($tipo == 'PRC') {
+ $this->sconto_finale_percentuale = $sconto;
+ $this->sconto_finale = 0;
+ } else {
+ $this->sconto_finale = $sconto;
+ $this->sconto_finale_percentuale = 0;
+ }
+ }
+
+ /**
+ * Restituisce lo sconto finale sulla Fattura.
+ * Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
+ */
+ public function getScontoFinale()
+ {
+ $netto = $this->calcola('netto');
+
+ if (!empty($this->sconto_finale_percentuale)) {
+ $sconto = $netto * ($this->sconto_finale_percentuale / 100);
+ } else {
+ $sconto = $this->sconto_finale;
+ }
+
+ return $sconto;
+ }
+
/**
* Calcola il netto a pagare della fattura.
+ * Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
*
* @return float
*/
public function getNettoAttribute()
{
- return $this->calcola('netto');
+ $netto = $this->calcola('netto');
+ $sconto_finale = $this->getScontoFinale();
+
+ return $netto - $sconto_finale;
}
/**
diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php
index a6ba972d0..b8a3c079f 100755
--- a/plugins/exportFE/src/FatturaElettronica.php
+++ b/plugins/exportFE/src/FatturaElettronica.php
@@ -945,16 +945,40 @@ class FatturaElettronica
}
// Sconto / Maggiorazione (2.1.1.8)
+ $sconti_maggiorazioni = [];
+ $sconto_finale = $documento->getScontoFinale();
+ if (!empty($sconto_finale)) {
+ $sconto = [
+ 'Tipo' => 'SC',
+ ];
+
+ if (!empty($documento->sconto_finale_percentuale)) {
+ $sconto['Percentuale'] = $documento->sconto_finale_percentuale;
+ } else {
+ $sconto['Importo'] = $documento->sconto_finale;
+ }
+
+ $sconti_maggiorazioni[] = $result;
+ }
+
if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_tipo'])) {
- $result['ScontoMaggiorazione']['Tipo'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_tipo'];
+ $sconto = [
+ 'Tipo' => $documento->dati_aggiuntivi_fe['sconto_maggiorazione_tipo'],
+ ];
+
+ if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_percentuale'])) {
+ $sconto['Percentuale'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_percentuale'];
+ }
+
+ if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_importo'])) {
+ $sconto['Importo'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_importo'];
+ }
+
+ $sconti_maggiorazioni[] = $result;
}
- if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_percentuale'])) {
- $result['ScontoMaggiorazione']['Percentuale'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_percentuale'];
- }
-
- if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_importo'])) {
- $result['ScontoMaggiorazione']['Importo'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_importo'];
+ if (!empty($sconti_maggiorazioni)) {
+ $result['ScontoMaggiorazione'] = $sconti_maggiorazioni;
}
// Importo Totale Documento (2.1.1.9)
diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php
index 139b9a1d0..ab7e09194 100755
--- a/plugins/importFE/generate.php
+++ b/plugins/importFE/generate.php
@@ -359,8 +359,10 @@ if (!empty($righe)) {
echo '
+ '.(empty($id_articolo) ? ''.tr('Creazione articolo non disponibile').'' : '').'
+
'.$riga['Descrizione'].'
'.(!empty($codici_articoli) ? ''.implode(', ', $codici_articoli).' ' : '').'
@@ -500,6 +502,14 @@ echo '
';
diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php
index 58a407ba6..4f53650fc 100755
--- a/plugins/importFE/src/FatturaElettronica.php
+++ b/plugins/importFE/src/FatturaElettronica.php
@@ -347,6 +347,7 @@ class FatturaElettronica
$fattura->note = $note;
}
+ // Sconto finale da ScontoMaggiorazione: non importato
$fattura->save();
// Fix generazione idsede
diff --git a/src/AJAX.php b/src/AJAX.php
index a4bef617d..c92ebe43d 100755
--- a/src/AJAX.php
+++ b/src/AJAX.php
@@ -71,6 +71,8 @@ class AJAX
}
}
+ $results = isset($results) ? $results : [];
+
$total = array_key_exists('recordsFiltered', $results) ? $results['recordsFiltered'] : count($results);
$list = array_key_exists('results', $results) ? $results['results'] : $results;
diff --git a/templates/fatture/footer.php b/templates/fatture/footer.php
index e8273ee99..a521e3b62 100755
--- a/templates/fatture/footer.php
+++ b/templates/fatture/footer.php
@@ -188,7 +188,7 @@ echo "
|
- ".moneyFormat($totale, 2).'
+ ".moneyFormat($netto_a_pagare, 2).'
|
';
diff --git a/update/2_4_22.sql b/update/2_4_22.sql
index 7680d8bbe..ccff28a14 100644
--- a/update/2_4_22.sql
+++ b/update/2_4_22.sql
@@ -258,3 +258,8 @@ HAVING 2=2
ORDER BY `mg_articoli`.`descrizione`' WHERE `zz_modules`.`name`='Articoli';
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Articoli'), 'Q.tà ordinata', 'ordini_fornitore.qta_ordinata', '10', '1', '0', '1', '', '', '1', '0', '1');
+
+-- Aggiunta sconto finale in Fatture
+-- Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti
+ALTER TABLE `co_documenti` ADD `sconto_finale` DECIMAL(17,8) NOT NULL,
+ ADD `sconto_finale_percentuale` DECIMAL(17,8) NOT NULL;