diff --git a/CHANGELOG.md b/CHANGELOG.md
index 61a706097..384084354 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -45,6 +45,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- Aggiunta possibilità di creare una nota di credito da un ddt di acquisto
- Aggiunta stampa del bilancio
- Aggiunta possibilità di notificare al cliente/tecnico in modo automatico quando viene cambiato lo stato dell'intervento
+ - Aggiunta flag per escludere la generazione scadenza di una ritenuta d'acconto se viene versata dal fornitore
### Modificato (Changed)
- Impostazione CAP automatico a 99999 nella FE per clienti esteri
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php
index 83699f7b9..b4e8ef839 100755
--- a/modules/fatture/actions.php
+++ b/modules/fatture/actions.php
@@ -139,6 +139,9 @@ switch (post('op')) {
$dichiarazione_precedente = $fattura->dichiarazione;
$fattura->id_dichiarazione_intento = post('id_dichiarazione_intento') ?: null;
+ // Flag pagamento ritenuta
+ $fattura->is_ritenuta_pagata = post('is_ritenuta_pagata') ?: 0;
+
$fattura->save();
// Operazioni automatiche per le Fatture Elettroniche
diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php
index fa91f69df..e75b03de0 100755
--- a/modules/fatture/edit.php
+++ b/modules/fatture/edit.php
@@ -350,6 +350,12 @@ elseif ($record['stato'] == 'Bozza') {
+ {[ "type": "checkbox", "label": "'.tr("Ritenuta pagata dal fornitore").'", "name": "is_ritenuta_pagata", "value": "$is_ritenuta_pagata$" ]}
+ ';
+ }
if ($dir == 'entrata') {
echo '
diff --git a/modules/fatture/src/Gestori/Scadenze.php b/modules/fatture/src/Gestori/Scadenze.php
index 3c52d586b..d64c41fcd 100644
--- a/modules/fatture/src/Gestori/Scadenze.php
+++ b/modules/fatture/src/Gestori/Scadenze.php
@@ -59,9 +59,10 @@ class Scadenze
$direzione = $this->fattura->tipo->dir;
$ritenuta_acconto = $this->fattura->ritenuta_acconto;
+ $is_ritenuta_pagata = $this->fattura->is_ritenuta_pagata;
// Se c'è una ritenuta d'acconto, la aggiungo allo scadenzario al 15 del mese dopo l'ultima scadenza di pagamento
- if ($direzione == 'uscita' && $ritenuta_acconto > 0) {
+ if ($direzione == 'uscita' && $ritenuta_acconto > 0 && empty($is_ritenuta_pagata)) {
$ultima_scadenza = $this->fattura->scadenze->last();
$scadenza = $ultima_scadenza->scadenza->copy()->startOfMonth()->addMonth();
$scadenza->setDate($scadenza->year, $scadenza->month, 15);
diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php
index e80b2d459..92fe9ad11 100755
--- a/plugins/importFE/actions.php
+++ b/plugins/importFE/actions.php
@@ -129,6 +129,7 @@ switch (filter('op')) {
'id_riga_riferimento' => post('id_riga_riferimento'),
'movimentazione' => post('movimentazione'),
'crea_articoli' => post('crea_articoli'),
+ 'is_ritenuta_pagata' => post('is_ritenuta_pagata'),
];
$fattura_pa = FatturaElettronica::manage($filename);
diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php
index 7cfb5adef..648f697fc 100755
--- a/plugins/importFE/generate.php
+++ b/plugins/importFE/generate.php
@@ -252,7 +252,7 @@ if (!empty($anagrafica)) {
echo '
{[ "type": "checkbox", "label": "'.tr('Creazione automatica articoli').'", "name": "crea_articoli", "value": 0, "help": "'.tr("Nel caso di righe con tag CodiceArticolo, il gestionale procede alla creazione dell'articolo se la riga non risulta assegnata manualmente").'" ]}
-
+ {[ "type": "checkbox", "label": "'.tr('Ritenuta pagata dal fornitore').'", "name": "is_ritenuta_pagata", "value": 0, "help": "'.tr("Attivare se la ritenuta è stata pagata dal fornitore").'" ]}
+
';
+ }
+ echo '
';
// Righe
diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php
index 991a1f492..a14ddfcae 100755
--- a/plugins/importFE/src/FatturaElettronica.php
+++ b/plugins/importFE/src/FatturaElettronica.php
@@ -310,7 +310,7 @@ class FatturaElettronica
*
* @return Fattura
*/
- public function saveFattura($id_pagamento, $id_sezionale, $id_tipo, $data_registrazione, $ref_fattura)
+ public function saveFattura($id_pagamento, $id_sezionale, $id_tipo, $data_registrazione, $ref_fattura, $is_ritenuta_pagata = false)
{
$dati_generali = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento'];
$data = self::parseDate($dati_generali['Data']);
@@ -324,6 +324,7 @@ class FatturaElettronica
$fattura->progressivo_invio = $progressivo_invio;
$fattura->numero_esterno = $numero_esterno;
$fattura->idpagamento = $id_pagamento;
+ $fattura->is_ritenuta_pagata = $is_ritenuta_pagata;
// Riferimento per nota di credito e debito
$fattura->ref_documento = $ref_fattura ?: null;
@@ -361,7 +362,7 @@ class FatturaElettronica
public function save($info = [])
{
- $this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura']);
+ $this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura'], $info['is_ritenuta_pagata']);
$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli'], $info['tipo_riga_riferimento'], $info['id_riga_riferimento']);
diff --git a/update/2_4_22.sql b/update/2_4_22.sql
index b7e9bdf54..30003c5b3 100644
--- a/update/2_4_22.sql
+++ b/update/2_4_22.sql
@@ -85,4 +85,7 @@ INSERT INTO `zz_prints` (`id`, `id_module`, `is_record`, `name`, `title`, `filen
ALTER TABLE `in_statiintervento` ADD `notifica_cliente` TINYINT NOT NULL AFTER `notifica`, ADD `notifica_tecnici` TINYINT NOT NULL AFTER `notifica_cliente`;
-- Api creazione anagrafica da app
-INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `enabled`) VALUES (NULL, 'app-v1', 'create', 'cliente', 'API\\App\\v1\\Clienti', '1'), (NULL, 'app-v1', 'update', 'cliente', 'API\\App\\v1\\Clienti', '1'), (NULL, 'app-v1', 'delete', 'cliente', 'API\\App\\v1\\Clienti', '1');
\ No newline at end of file
+INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `enabled`) VALUES (NULL, 'app-v1', 'create', 'cliente', 'API\\App\\v1\\Clienti', '1'), (NULL, 'app-v1', 'update', 'cliente', 'API\\App\\v1\\Clienti', '1'), (NULL, 'app-v1', 'delete', 'cliente', 'API\\App\\v1\\Clienti', '1');
+
+-- Aggiunto flag per il pagamento della ritenuta nelle fatture passive
+ALTER TABLE `co_documenti` ADD `is_ritenuta_pagata` BOOLEAN NOT NULL AFTER `id_ricevuta_principale`;
\ No newline at end of file