From 98299e895ad46313939e452279482d3da4bbdab0 Mon Sep 17 00:00:00 2001 From: valentina Date: Wed, 27 Nov 2024 11:00:07 +0100 Subject: [PATCH] feat: #1514 aggiunta controllo descrizione piano dei conti collegato alle anagrafiche --- modules/aggiornamenti/actions.php | 2 + .../Controlli/PianoContiRagioneSociale.php | 104 ++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 modules/aggiornamenti/src/Controlli/PianoContiRagioneSociale.php diff --git a/modules/aggiornamenti/actions.php b/modules/aggiornamenti/actions.php index 11ac080f5..a51ddefd6 100755 --- a/modules/aggiornamenti/actions.php +++ b/modules/aggiornamenti/actions.php @@ -24,6 +24,7 @@ use Modules\Aggiornamenti\Controlli\ColonneDuplicateViste; use Modules\Aggiornamenti\Controlli\Controllo; use Modules\Aggiornamenti\Controlli\DatiFattureElettroniche; use Modules\Aggiornamenti\Controlli\PianoConti; +use Modules\Aggiornamenti\Controlli\PianoContiRagioneSociale; use Modules\Aggiornamenti\Controlli\PluginDuplicati; use Modules\Aggiornamenti\Controlli\ReaValidi; use Modules\Aggiornamenti\UpdateHook; @@ -56,6 +57,7 @@ switch (filter('op')) { case 'controlli-disponibili': $controlli = [ PianoConti::class, + PianoContiRagioneSociale::class, DatiFattureElettroniche::class, ColonneDuplicateViste::class, PluginDuplicati::class, diff --git a/modules/aggiornamenti/src/Controlli/PianoContiRagioneSociale.php b/modules/aggiornamenti/src/Controlli/PianoContiRagioneSociale.php new file mode 100644 index 000000000..409645765 --- /dev/null +++ b/modules/aggiornamenti/src/Controlli/PianoContiRagioneSociale.php @@ -0,0 +1,104 @@ +. + */ + +namespace Modules\Aggiornamenti\Controlli; + +use Modules\Anagrafiche\Anagrafica; + +class PianoContiRagioneSociale extends Controllo +{ + public function getName() + { + return tr('Conti collegati alle anagrafiche non corrispondenti alle ragioni sociali'); + } + + public function getType($record) + { + return 'warning'; + } + + public function getOptions($record) + { + return [ + [ + 'name' => tr('Risolvi'), + 'icon' => 'fa fa-check', + 'color' => 'success', + 'params' => [], + ], + ]; + } + + public function check() + { + $database = database(); + + /** + * Verifico se serve creare un conto per eventuali nuovi clienti o fornitori. + */ + $anagrafiche_interessate = $database->fetchArray(' + SELECT + `an_anagrafiche`.`idanagrafica` AS id, + `an_anagrafiche`.`ragione_sociale`, + `co_pianodeiconti3`.`descrizione` as nome_conto, + `idconto_cliente`, + `idconto_fornitore` + FROM + `an_anagrafiche` + INNER JOIN `co_pianodeiconti3` ON (`an_anagrafiche`.`idconto_cliente` = `co_pianodeiconti3`.`id` OR `an_anagrafiche`.`idconto_fornitore` = `co_pianodeiconti3`.`id`) + WHERE + `deleted_at` IS NULL + GROUP BY `idanagrafica`, `co_pianodeiconti3`.`descrizione`'); + + foreach ($anagrafiche_interessate as $anagrafica) { + if ($anagrafica['nome_conto'] != $anagrafica['ragione_sociale']) { + $descrizione = tr("Il conto collegato all'anagrafica corrente (_NOME_) non corrisponde alla ragione sociale dell'anagrafica", [ + '_NOME_' => $anagrafica['nome_conto'] + ]); + + $this->addResult([ + 'id' => $anagrafica['id'], + 'nome' => \Modules::link('Anagrafiche', $anagrafica['id'], $anagrafica['ragione_sociale']), + 'descrizione' => $descrizione, + ]); + } + } + } + + public function execute($record, $params = []) + { + $anagrafica = Anagrafica::find($record['id']); + + $anagrafica = Anagrafica::find($record['id']); + + database()->update('co_pianodeiconti3', [ + 'descrizione' => $anagrafica->ragione_sociale + ], [ + 'id' => $anagrafica->idconto_cliente + ]); + + database()->update('co_pianodeiconti3', [ + 'descrizione' => $anagrafica->ragione_sociale + ], [ + 'id' => $anagrafica->idconto_fornitore + ]); + + return true; + } +}