. */ namespace Modules\Aggiornamenti\Controlli; use Modules\Anagrafiche\Anagrafica; class PianoConti extends Controllo { public function getName() { return tr('Piano dei Conti collegato alle anagrafiche'); } 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`.`idconto_cliente`, `an_anagrafiche`.`idconto_fornitore`, `an_anagrafiche`.`ragione_sociale`, GROUP_CONCAT(`an_tipianagrafiche_lang`.`title`) AS tipi_anagrafica FROM `an_anagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`id` = `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).') WHERE (`idconto_cliente` = 0 OR `idconto_cliente` IS NULL OR `idconto_fornitore` = 0 OR `idconto_fornitore` IS NULL) AND `deleted_at` IS NULL GROUP BY `an_anagrafiche`.`idanagrafica`'); foreach ($anagrafiche_interessate as $anagrafica) { $tipi = explode(',', $anagrafica['tipi_anagrafica']); $cliente = in_array('Cliente', $tipi) && empty($anagrafica['idconto_cliente']); $fornitore = in_array('Fornitore', $tipi) && empty($anagrafica['idconto_fornitore']); $descrizione = null; if ($cliente && $fornitore) { $descrizione = tr("L'anagrafica corrente non ha impostati i conti relativi al Piano dei Conti"); } elseif ($cliente) { $descrizione = tr("L'anagrafica corrente non ha impostati il conto Cliente relativo al Piano dei Conti"); } elseif ($fornitore) { $descrizione = tr("L'anagrafica corrente non ha impostati il conto Fornitore relativo al Piano dei Conti"); } if (!empty($descrizione)) { $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']); if ($anagrafica->isTipo('Cliente')) { Anagrafica::fixCliente($anagrafica); } if ($anagrafica->isTipo('Fornitore')) { Anagrafica::fixFornitore($anagrafica); } return true; } }