diff --git a/config/namespaces.php b/config/namespaces.php index 651fa03dd..b70f22330 100644 --- a/config/namespaces.php +++ b/config/namespaces.php @@ -5,6 +5,6 @@ return [ 'modules/articoli' => 'Modules\\Articoli\\', 'modules/fatture' => 'Modules\\Fatture\\', 'modules/interventi' => 'Modules\\Interventi\\', - 'plugins/exportPA' => 'Modules\\ExportPA\\', - 'plugins/importPA' => 'Modules\\ImportPA\\', + 'plugins/exportPA' => 'Plugins\\ExportPA\\', + 'plugins/importPA' => 'Plugins\\ImportPA\\', ]; diff --git a/core.php b/core.php index 1b5e37441..5e8bddf38 100644 --- a/core.php +++ b/core.php @@ -26,8 +26,8 @@ $loader = require_once __DIR__.'/vendor/autoload.php'; $namespaces = require_once __DIR__.'/config/namespaces.php'; foreach ($namespaces as $path => $namespace) { - $loader->addPsr4($namespace, $path.'/src'); $loader->addPsr4($namespace, $path.'/custom/src'); + $loader->addPsr4($namespace, $path.'/src'); } // Individuazione dei percorsi di base diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index 7f5b663c8..58766c081 100644 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -55,10 +55,10 @@ switch (post('op')) { $anagrafica->colore = post('colore'); $anagrafica->idtipointervento_default = post('idtipointervento_default'); - $anagrafica->save(); - $anagrafica->updateTipologie((array) post('idtipoanagrafica')); + $anagrafica->save(); + // Informazioni sulla sede $sede = $anagrafica->sedeLegale(); $sede->partita_iva = post('piva'); @@ -78,6 +78,7 @@ switch (post('op')) { $sede->fax = post('fax'); $sede->idzona = post('idzona'); $sede->email = post('email'); + $sede->save(); flash()->info(str_replace('_NAME_', '"'.post('ragione_sociale').'"', "Informazioni per l'anagrafica _NAME_ salvate correttamente!")); diff --git a/modules/fatture/init.php b/modules/fatture/init.php index ef047f720..8b7666047 100644 --- a/modules/fatture/init.php +++ b/modules/fatture/init.php @@ -10,7 +10,6 @@ if ($module['name'] == 'Fatture di vendita') { if (isset($id_record)) { $fattura = Modules\Fatture\Fattura::with('tipo', 'stato')->find($id_record); - //$fattura->articoli(); $record = $dbo->fetchOne('SELECT *, co_tipidocumento.reversed AS is_reversed, co_documenti.idagente AS idagente_fattura, co_documenti.note, co_documenti.note_aggiuntive, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc`, (SELECT descrizione FROM co_ritenutaacconto WHERE id=idritenutaacconto) AS ritenutaacconto_desc, (SELECT descrizione FROM co_rivalsainps WHERE id=idrivalsainps) AS rivalsainps_desc FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_tipidocumento.dir = '.prepare($dir).' AND co_documenti.id='.prepare($id_record)); diff --git a/modules/fatture/src/Articolo.php b/modules/fatture/src/Articolo.php index 5a2d6549d..ec6576982 100644 --- a/modules/fatture/src/Articolo.php +++ b/modules/fatture/src/Articolo.php @@ -57,11 +57,6 @@ class Articolo extends Article ]); } - protected function serialID() - { - return 'documento'; - } - public function fattura() { return $this->belongsTo(Fattura::class, 'iddocumento'); diff --git a/modules/interventi/src/Articolo.php b/modules/interventi/src/Articolo.php index 57a4d1295..8c5d3ed09 100644 --- a/modules/interventi/src/Articolo.php +++ b/modules/interventi/src/Articolo.php @@ -8,7 +8,17 @@ use Base\Article; class Articolo extends Article { protected $table = 'mg_articoli_interventi'; + protected $serialRowID = 'intervento'; + /** + * Crea una nuova riga collegata ad un intervento. + * + * @param Intervento $intervento + * @param Original $articolo + * @param int $id_automezzo + * + * @return self + */ public static function new(Intervento $intervento, Original $articolo, $id_automezzo = null) { $model = parent::new($articolo); @@ -67,11 +77,6 @@ class Articolo extends Article } } - protected function serialID() - { - return 'intervento'; - } - public function getSubtotaleAttribute() { return $this->prezzo_vendita * $this->qta; diff --git a/modules/interventi/src/Riga.php b/modules/interventi/src/Riga.php index cac3cf7c6..dfab5963b 100644 --- a/modules/interventi/src/Riga.php +++ b/modules/interventi/src/Riga.php @@ -2,9 +2,30 @@ namespace Modules\Interventi; -use Base\Model; +use Base\Row; -class Riga extends Model +class Riga extends Row { protected $table = 'in_righe_interventi'; + + /** + * Crea una nuova riga collegata ad un intervento. + * + * @param Intervento $intervento + * + * @return self + */ + public static function new(Intervento $intervento) + { + $model = parent::new(); + + $model->intervento()->associate($intervento); + + return $model; + } + + public function intervento() + { + return $this->belongsTo(Intervento::class, 'idintervento'); + } } diff --git a/src/Base/Description.php b/src/Base/Description.php index 97a4d068a..ff9e61d9a 100644 --- a/src/Base/Description.php +++ b/src/Base/Description.php @@ -2,6 +2,8 @@ namespace Base; +use Illuminate\Database\Eloquent\Builder; + abstract class Description extends Model { protected static function boot() diff --git a/src/base/Article.php b/src/base/Article.php index 9e9903f51..69de1194a 100644 --- a/src/base/Article.php +++ b/src/base/Article.php @@ -3,10 +3,11 @@ namespace Base; use Modules\Articoli\Articolo as Original; +use Illuminate\Database\Eloquent\Builder; abstract class Article extends Row { - abstract protected function serialID(); + protected $serialRowID = 'documento'; abstract public function movimenta($qta); @@ -35,7 +36,7 @@ abstract class Article extends Row public function setSerials($serials) { database()->sync('mg_prodotti', [ - 'id_riga_'.$this->serialID() => $this->id, + 'id_riga_'.$this->serialRowID => $this->id, 'dir' => 'entrata', 'id_articolo' => $this->idarticolo, ], [ @@ -43,6 +44,17 @@ abstract class Article extends Row ]); } + public function getSerialsAttribute() + { + if (empty($this->abilita_serial)) { + return []; + } + + // Individuazione dei seriali + $list = database()->fetchArray('SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND id_riga_'.$this->serialRowID.' = '.prepare($this->id)); + return array_column($list, 'serial'); + } + public function setQtaAttribute($value) { $previous = $this->qta; diff --git a/src/base/Row.php b/src/base/Row.php index c49d23ee8..01cc03b17 100644 --- a/src/base/Row.php +++ b/src/base/Row.php @@ -2,6 +2,8 @@ namespace Base; +use Illuminate\Database\Eloquent\Builder; + abstract class Row extends Model { protected static function boot() @@ -45,7 +47,7 @@ abstract class Row extends Model $this->attributes['idrivalsainps'] = $value; // Calcolo rivalsa inps - $rivalsa = database()->fetchOne('SELECT * FROM co_rivalsainps WHERE id='.prepare($value)); + $rivalsa = database()->fetchOne('SELECT * FROM co_rivalsainps WHERE id = '.prepare($value)); $this->rivalsainps = ($this->subtotale - $this->sconto) / 100 * $rivalsa['percentuale']; } @@ -64,7 +66,7 @@ abstract class Row extends Model $this->attributes['idritenutaacconto'] = $value; // Calcolo ritenuta d'acconto - $ritenuta = database()->fetchOne('SELECT * FROM co_ritenutaacconto WHERE id='.prepare($value)); + $ritenuta = database()->fetchOne('SELECT * FROM co_ritenutaacconto WHERE id = '.prepare($value)); $conto = ($this->subtotale - $this->sconto); if ($this->calcolo_ritenutaacconto == 'Imponibile + rivalsa inps') {