diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 5ceb6c828..566d71f76 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -2,8 +2,8 @@ include_once __DIR__.'/../../core.php'; -use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Anagrafiche\Anagrafica; +use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\DDT\Components\Articolo; use Modules\DDT\Components\Descrizione; use Modules\DDT\Components\Riga; @@ -116,7 +116,6 @@ switch (post('op')) { } break; - case 'manage_articolo': if (post('idriga') != null) { $articolo = Articolo::find(post('idriga')); diff --git a/modules/ddt/crea_documento.php b/modules/ddt/crea_documento.php index 2c54c8b8b..07929a0a3 100644 --- a/modules/ddt/crea_documento.php +++ b/modules/ddt/crea_documento.php @@ -15,7 +15,7 @@ $options = [ 'op' => 'add_documento', 'type' => 'ddt', 'module' => $final_module, - 'serials'=>true, + 'serials' => true, 'button' => tr('Aggiungi'), 'dir' => $dir, 'create_document' => true, diff --git a/modules/ddt/row-edit.php b/modules/ddt/row-edit.php index 30c3a7681..fdbfd72b6 100644 --- a/modules/ddt/row-edit.php +++ b/modules/ddt/row-edit.php @@ -39,5 +39,4 @@ if ($riga->isDescrizione()) { $options['op'] = 'manage_sconto'; } - echo App::load($file.'.php', $result, $options); diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 136dd21cb..09f3fd353 100644 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -2,8 +2,8 @@ include_once __DIR__.'/../../core.php'; -use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Anagrafiche\Anagrafica; +use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Ordini\Components\Articolo; use Modules\Ordini\Components\Descrizione; use Modules\Ordini\Components\Riga; diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 9e96db6d7..9e2511bc4 100644 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -318,21 +318,13 @@ class FatturaElettronica $stato_documento = StatoFattura::where('descrizione', 'Emessa')->first(); $fattura->stato()->associate($stato_documento); - // Ritenuta d'Acconto - $ritenuta = $dati_generali['DatiRitenuta']; - if (!empty($ritenuta)) { - $percentuale = $ritenuta['AliquotaRitenuta']; - $importo = $ritenuta['ImportoRitenuta']; - - // TODO: salvare in fattura - } - $causali = $dati_generali['Causale']; if (!empty($causali)) { $note = ''; foreach ($causali as $causale) { $note .= $causale; } + $fattura->note = $note; } diff --git a/plugins/importFE/src/FatturaOrdinaria.php b/plugins/importFE/src/FatturaOrdinaria.php index f4d7cb8c6..2e48c1bc4 100644 --- a/plugins/importFE/src/FatturaOrdinaria.php +++ b/plugins/importFE/src/FatturaOrdinaria.php @@ -87,6 +87,8 @@ class FatturaOrdinaria extends FatturaElettronica public function saveRighe($articoli, $iva, $conto, $movimentazione = true) { + $id_ritenuta_acconto = $this->getRitenutaAcconto(); + $righe = $this->getRighe(); $fattura = $this->getFattura(); @@ -108,6 +110,10 @@ class FatturaOrdinaria extends FatturaElettronica $obj->id_iva = $iva[$key]; $obj->idconto = $conto[$key]; + if (!empty($riga['Ritenuta'])) { + $obj->id_ritenuta_acconto = $id_ritenuta_acconto; + } + // Nel caso il prezzo sia negativo viene gestito attraverso l'inversione della quantità (come per le note di credito) // TODO: per migliorare la visualizzazione, sarebbe da lasciare negativo il prezzo e invertire gli sconti. $prezzo = $riga['PrezzoUnitario']; @@ -193,4 +199,47 @@ class FatturaOrdinaria extends FatturaElettronica $obj->save(); } } + + protected function getRitenutaAcconto() + { + $database = database(); + $dati_generali = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento']; + + // Ritenuta d'Acconto + $ritenuta = $dati_generali['DatiRitenuta']; + if (empty($ritenuta)) { + return null; + } + + $percentuale = floatval($ritenuta['AliquotaRitenuta']); + $importo = floatval($ritenuta['ImportoRitenuta']); + + $righe = $this->getRighe(); + $totali = []; + foreach ($righe as $riga) { + if (!empty($riga['Ritenuta'])) { + $totali[] = $riga['PrezzoTotale']; + } + } + $totale = sum($totali); + + $totale_previsto = $importo / $percentuale * 100; + $percentuale_importo = $totale_previsto / $totale * 100; + + $ritenuta_acconto = $database->fetchOne('SELECT * FROM`co_ritenutaacconto` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo)); + if (empty($ritenuta_acconto)) { + $descrizione = tr('Ritenuta _PRC_% sul _TOT_%', [ + '_PRC_' => numberFormat($percentuale), + '_TOT_' => numberFormat($percentuale_importo), + ]); + + $database->query('INSERT INTO `co_ritenutaacconto` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_importo).')'); + } + + $ritenuta_acconto = $database->fetchOne('SELECT * FROM`co_ritenutaacconto` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo)); + + $id_ritenuta_acconto = $ritenuta_acconto['id']; + + return $id_ritenuta_acconto; + } }