From 7a904d5450024170308918a939a146a8aae75a70 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Wed, 6 Mar 2024 17:26:58 +0100 Subject: [PATCH] Allineamento add tipi anagrafiche e pagamenti --- modules/anagrafiche/src/Tipo.php | 30 ++++++++++++++ modules/ddt/modutil.php | 2 +- modules/fatture/modutil.php | 2 +- modules/interventi/modutil.php | 2 +- modules/iva/actions.php | 62 +++++++++++----------------- modules/iva/init.php | 3 ++ modules/iva/src/Aliquota.php | 38 +++++++++++++++++ modules/ordini/modutil.php | 2 +- modules/pagamenti/actions.php | 51 ++++++++++++----------- modules/pagamenti/add.php | 2 +- modules/pagamenti/edit.php | 2 +- modules/pagamenti/init.php | 3 ++ modules/pagamenti/src/Pagamento.php | 32 ++++++++++++++ modules/tipi_anagrafiche/actions.php | 14 ++++--- modules/tipi_anagrafiche/init.php | 3 ++ 15 files changed, 176 insertions(+), 72 deletions(-) diff --git a/modules/anagrafiche/src/Tipo.php b/modules/anagrafiche/src/Tipo.php index 0be3f2839..8d74735a9 100755 --- a/modules/anagrafiche/src/Tipo.php +++ b/modules/anagrafiche/src/Tipo.php @@ -28,6 +28,14 @@ class Tipo extends Model protected $table = 'an_tipianagrafiche'; + public static function build($descrizione) + { + $model = new static(); + $model->save(); + + return $model; + } + public function anagrafiche() { return $this->hasMany(Anagrafica::class, 'idtipoanagrafica'); @@ -62,4 +70,26 @@ class Tipo extends Model ->where('id_lang', '=', setting('Lingua')) ->first(); } + + /** + * Imposta l'attributo name del tipo di anagrafica. + */ + public function setNameAttribute($value) + { + $translated = database()->table($this->table.'_lang') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')); + + if ($translated->count() > 0) { + $translated->update([ + 'name' => $value + ]); + } else { + $translated->insert([ + 'id_record' => $this->id, + 'id_lang' => setting('Lingua'), + 'name' => $value + ]); + } + } } diff --git a/modules/ddt/modutil.php b/modules/ddt/modutil.php index 5c2ccba5e..5c3a614d0 100644 --- a/modules/ddt/modutil.php +++ b/modules/ddt/modutil.php @@ -20,7 +20,7 @@ include_once __DIR__.'/../../core.php'; use Modules\DDT\DDT; -use Modules\IVA\Aliquota; +use Modules\Iva\Aliquota; use Util\Generator; /* diff --git a/modules/fatture/modutil.php b/modules/fatture/modutil.php index d03d95298..02749c688 100755 --- a/modules/fatture/modutil.php +++ b/modules/fatture/modutil.php @@ -18,7 +18,7 @@ */ use Modules\Fatture\Fattura; -use Modules\IVA\Aliquota; +use Modules\Iva\Aliquota; use Util\Generator; /* diff --git a/modules/interventi/modutil.php b/modules/interventi/modutil.php index 8d480b8b3..827c61ef5 100755 --- a/modules/interventi/modutil.php +++ b/modules/interventi/modutil.php @@ -29,7 +29,7 @@ use Modules\Fatture\Fattura; use Modules\Interventi\Components\Riga as RigaIntervento; use Modules\Interventi\Components\Sessione; use Modules\Interventi\Intervento; -use Modules\IVA\Aliquota; +use Modules\Iva\Aliquota; use Util\Generator; use Util\Ini; diff --git a/modules/iva/actions.php b/modules/iva/actions.php index fadf61a10..0afb6ac3f 100755 --- a/modules/iva/actions.php +++ b/modules/iva/actions.php @@ -18,32 +18,30 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Iva\Aliquota; switch (filter('op')) { case 'update': - $descrizione = post('descrizione'); - $codice = post('codice'); - $esente = post('esente'); $percentuale = empty($esente) ? post('percentuale') : 0; + $indetraibile = post('indetraibile'); + $dicitura = post('dicitura'); + $codice = post('codice'); + $codice_natura_fe = post('codice_natura_fe'); + $esigibilita = post('esigibilita'); + $descrizione = post('descrizione'); - if ($dbo->fetchNum('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE (`name` = '.prepare($descrizione).' AND `codice` = '.prepare($codice).') AND `co_iva`.`id` != '.prepare($id_record)) == 0) { - $codice_natura = post('codice_natura_fe') ?: null; - $esigibilita = post('esigibilita'); - - $dbo->update('co_iva', [ - 'esente' => $esente, - 'percentuale' => $percentuale, - 'indetraibile' => post('indetraibile'), - 'dicitura' => post('dicitura'), - 'codice' => $codice, - 'codice_natura_fe' => $codice_natura, - 'esigibilita' => $esigibilita, - ], ['id' => $id_record]); - - $dbo->update('co_iva_lang', [ - 'name' => $descrizione, - ], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]); + $aliquota = Aliquota::where('id', '=', (new Aliquota())->getByName($descrizione)->id_record)->where('codice', '=', $codice)->where('id', '!=', $iva->id)->first(); + if (!$aliquota) { + $iva->esente = $esente; + $iva->percentuale = $percentuale; + $iva->indetraibile = $indetraibile; + $iva->dicitura = $dicitura; + $iva->codice = $codice; + $iva->codice_natura_fe = $codice_natura_fe; + $iva->esigibilita = $esigibilita; + $iva->name = $descrizione; + $iva->save(); // Messaggio di avvertenza if ((stripos('N6', (string) $codice_natura) === 0) && $esigibilita == 'S') { @@ -69,23 +67,13 @@ switch (filter('op')) { $esigibilita = post('esigibilita'); $indetraibile = post('indetraibile'); - if ($dbo->fetchNum('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name` = '.prepare($descrizione).' AND `codice` = '.prepare($codice)) == 0) { - $dbo->insert('co_iva', [ - 'esente' => $esente, - 'codice' => $codice, - 'codice_natura_fe' => $codice_natura, - 'percentuale' => $percentuale, - 'indetraibile' => $indetraibile, - 'esigibilita' => $esigibilita, - ]); - $id_record = $dbo->lastInsertedID(); - - $dbo->insert('co_iva_lang', [ - 'id_record' => $id_record, - 'name' => $descrizione, - 'id_lang' => setting('Lingua'), - ]); - + $aliquota = Aliquota::where('id', '=', (new Aliquota())->getByName($descrizione)->id_record)->where('codice', '=', $codice)->first(); + if (!$aliquota) { + $iva = Aliquota::build($esente, $percentuale, $indetraibile, $dicitura, $codice, $codice_natura_fe, $esigibilita); + $id_record= $dbo->lastInsertedID(); + $iva->name = $descrizione; + $iva->save(); + flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ '_TYPE_' => 'IVA', ])); diff --git a/modules/iva/init.php b/modules/iva/init.php index eb71ae76c..90e328726 100755 --- a/modules/iva/init.php +++ b/modules/iva/init.php @@ -18,7 +18,10 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Iva\Aliquota; if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_iva`.`id`='.prepare($id_record)); + + $iva = Aliquota::find($id_record); } diff --git a/modules/iva/src/Aliquota.php b/modules/iva/src/Aliquota.php index 962ae5034..452c38752 100755 --- a/modules/iva/src/Aliquota.php +++ b/modules/iva/src/Aliquota.php @@ -28,6 +28,22 @@ class Aliquota extends Model protected $table = 'co_iva'; + + public static function build($esente, $percentuale, $indetraibile, $dicitura, $codice, $codice_natura_fe, $esigibilita) + { + $model = new static(); + $model->esente = $esente; + $model->percentuale = $percentuale; + $model->indetraibile = $indetraibile; + $model->dicitura = $dicitura; + $model->codice = $codice; + $model->codice_natura_fe = $codice_natura_fe; + $model->esigibilita = $esigibilita; + $model->save(); + + return $model; + } + /** * Ritorna l'attributo name dell'aliquota IVA. * @@ -57,4 +73,26 @@ class Aliquota extends Model ->where('id_lang', '=', setting('Lingua')) ->first(); } + + /** + * Imposta l'attributo name dell'aliquota. + */ + public function setNameAttribute($value) + { + $translated = database()->table($this->table.'_lang') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')); + + if ($translated->count() > 0) { + $translated->update([ + 'name' => $value + ]); + } else { + $translated->insert([ + 'id_record' => $this->id, + 'id_lang' => setting('Lingua'), + 'name' => $value + ]); + } + } } diff --git a/modules/ordini/modutil.php b/modules/ordini/modutil.php index cb41590cb..f961955f4 100755 --- a/modules/ordini/modutil.php +++ b/modules/ordini/modutil.php @@ -20,7 +20,7 @@ include_once __DIR__.'/../../core.php'; use Modules\Interventi\Intervento; -use Modules\IVA\Aliquota; +use Modules\Iva\Aliquota; use Modules\Ordini\Ordine; /* diff --git a/modules/pagamenti/actions.php b/modules/pagamenti/actions.php index c57ccec42..05333c92d 100755 --- a/modules/pagamenti/actions.php +++ b/modules/pagamenti/actions.php @@ -24,13 +24,13 @@ use Modules\Pagamenti\Pagamento; switch (filter('op')) { case 'update': $descrizione = filter('descrizione'); - $id_pagamento = (new Pagamento())->getByName($descrizione)->id_record; if (isset($descrizione)) { foreach (post('id') as $key => $id) { // Data fatturazione $giorno = 0; + $pagamento = Pagamento::find($id); // Data fatturazione fine mese if (post('scadenza')[$key] == 2) { $giorno = -1; @@ -46,28 +46,27 @@ switch (filter('op')) { $giorno = -post('giorno')[$key] - 1; } - $array = [ - 'num_giorni' => post('distanza')[$key], - 'giorno' => $giorno, - 'prc' => post('percentuale')[$key], - 'idconto_vendite' => post('idconto_vendite') ?: null, - 'idconto_acquisti' => post('idconto_acquisti') ?: null, - 'codice_modalita_pagamento_fe' => post('codice_modalita_pagamento_fe'), - ]; - - if ($id_pagamento) { - flash()->error(tr('Esiste più un metodo di pagamento con questo nome!')); - break; + if (!empty($id)) { + $pagamento->name = $descrizione; + $pagamento->num_giorni = post('distanza')[$key]; + $pagamento->giorno = $giorno; + $pagamento->prc = post('percentuale')[$key]; + $pagamento->idconto_vendite = post('idconto_vendite') ?: null; + $pagamento->idconto_acquisti = post('idconto_acquisti') ?: null; + $pagamento->codice_modalita_pagamento_fe = post('codice_modalita_pagamento_fe'); + $pagamento->save(); } else { - if (!empty($id)) { - $dbo->update('co_pagamenti_lang', ['name' => $descrizione], ['id' => $id, 'id_lang' => setting('Lingua')]); - $dbo->update('co_pagamenti', $array, ['id' => $id_record]); - } else { - $dbo->INSERT('co_pagamenti', $array); - $dbo->INSERT('co_pagamenti_lang', ['name' => $descrizione, 'id_record' => $id, 'id_lang' => setting('Lingua')]); - } + $pagamento = Pagamento::build(post('codice_modalita_pagamento_fe')); + $pagamento->num_giorni = post('distanza')[$key]; + $pagamento->giorno = $giorno; + $pagamento->prc = post('percentuale')[$key]; + $pagamento->idconto_vendite = post('idconto_vendite') ?: null; + $pagamento->idconto_acquisti = post('idconto_acquisti') ?: null; + $pagamento->name = $descrizione; + $pagamento->save(); } } + flash()->info(tr('Salvataggio completato!')); } else { flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio!')); @@ -85,9 +84,10 @@ switch (filter('op')) { if ($id_pagamento) { flash()->error(tr('Esiste già un metodo di pagamento con questo nome!')); } else { - $dbo->query('INSERT INTO `co_pagamenti` (`codice_modalita_pagamento_fe`, `prc` ) VALUES ('.prepare($codice_modalita_pagamento_fe).', 100 )'); - $id_record = $dbo->lastInsertedID(); - $dbo->query('INSERT INTO `co_pagamenti_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).')'); + $pagamento = Pagamento::build($codice_modalita_pagamento_fe); + $id_record= $dbo->lastInsertedID(); + $pagamento->name = $descrizione; + $pagamento->save(); flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ '_TYPE_' => 'pagamento', @@ -99,6 +99,11 @@ switch (filter('op')) { case 'delete': if (!empty($id_record)) { + $descrizione = filter('descrizione'); + + $dbo->query('DELETE FROM `co_pagamenti` WHERE `id` IN (SELECT `id_record` FROM `co_pagamenti_lang` WHERE `name` = "'.prepare($descrizione).'")'); + $dbo->query('DELETE FROM `co_pagamenti_lang` WHERE `name` = "'.prepare($descrizione).'"'); + $dbo->query('DELETE FROM `co_pagamenti` WHERE `id`='.prepare($id_record)); flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [ diff --git a/modules/pagamenti/add.php b/modules/pagamenti/add.php index ab6bb58d4..2e211fad8 100755 --- a/modules/pagamenti/add.php +++ b/modules/pagamenti/add.php @@ -29,7 +29,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "select", "label": "", "name": "codice_modalita_pagamento_fe", "value": "", "values": "query=SELECT `codice` as id, CONCAT(`codice`, ' - ', `name`) AS descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record`=`fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang`=)", "required": 1 ]} + {[ "type": "select", "label": "", "name": "codice_modalita_pagamento_fe", "value": "", "values": "query=SELECT `fe_modalita_pagamento`.`codice` as id, CONCAT(`fe_modalita_pagamento`.`codice`, ' - ', `name`) AS descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record`=`fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang`= )", "required": 1 ]}
diff --git a/modules/pagamenti/edit.php b/modules/pagamenti/edit.php index 28e2a91e8..9728db769 100755 --- a/modules/pagamenti/edit.php +++ b/modules/pagamenti/edit.php @@ -87,7 +87,7 @@ $tipi_scadenza_pagamento = [ ], ]; -$results = $dbo->fetchArray('SELECT * FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($record['name']).' ORDER BY `num_giorni` ASC'); +$results = $dbo->fetchArray('SELECT *, `co_pagamenti`.`id` as id FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($record['name']).' ORDER BY `num_giorni` ASC'); $numero_rata = 1; foreach ($results as $result) { $tipo_scadenza_pagamento = 3; diff --git a/modules/pagamenti/init.php b/modules/pagamenti/init.php index ede465df4..df30e780f 100755 --- a/modules/pagamenti/init.php +++ b/modules/pagamenti/init.php @@ -18,7 +18,10 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Pagamenti\Pagamento; if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_pagamenti`.`id`='.prepare($id_record)); + + $pagamento = Pagamento::find($id_record); } diff --git a/modules/pagamenti/src/Pagamento.php b/modules/pagamenti/src/Pagamento.php index 04a5b2aae..2fa0ea327 100755 --- a/modules/pagamenti/src/Pagamento.php +++ b/modules/pagamenti/src/Pagamento.php @@ -22,6 +22,7 @@ namespace Modules\Pagamenti; use Carbon\Carbon; use Common\SimpleModelTrait; use Illuminate\Database\Eloquent\Model; +use Modules\Fatture\Fattura; class Pagamento extends Model { @@ -29,6 +30,15 @@ class Pagamento extends Model protected $table = 'co_pagamenti'; + public static function build($codice) + { + $model = new static(); + $model->codice_modalita_pagamento_fe = $codice; + $model->save(); + + return $model; + } + public function fatture() { return $this->hasMany(Fattura::class, 'idpagamento'); @@ -169,4 +179,26 @@ class Pagamento extends Model ->where('id_lang', '=', setting('Lingua')) ->first(); } + + /** + * Imposta l'attributo name del pagamento. + */ + public function setNameAttribute($value) + { + $translated = database()->table($this->table.'_lang') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')); + + if ($translated->count() > 0) { + $translated->update([ + 'name' => $value + ]); + } else { + $translated->insert([ + 'id_record' => $this->id, + 'id_lang' => setting('Lingua'), + 'name' => $value + ]); + } + } } diff --git a/modules/tipi_anagrafiche/actions.php b/modules/tipi_anagrafiche/actions.php index 2060defc6..b961b84b5 100755 --- a/modules/tipi_anagrafiche/actions.php +++ b/modules/tipi_anagrafiche/actions.php @@ -18,6 +18,7 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Tipo; switch (post('op')) { case 'update': @@ -28,7 +29,8 @@ switch (post('op')) { // Nome accettato if (!in_array($descrizione, $block)) { - $dbo->query('UPDATE `an_tipianagrafiche_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($id_tipo)); + $tipo->name = $descrizione; + $tipo->save(); flash()->info(tr('Informazioni salvate correttamente!')); } else { // Nome non consentito @@ -42,15 +44,15 @@ switch (post('op')) { if (!empty($descrizione)) { // Verifico che il nome non sia duplicato - $rs = $dbo->fetchArray('SELECT `name` FROM `an_tipianagrafiche_lang` WHERE `name`='.prepare($descrizione)); + $tipo = Tipo::find((new Tipo())->getByName($descrizione)->id_record); - if (count($rs) > 0) { + if ($tipo) { flash()->error(tr('Nome già esistente!')); } else { - $dbo->query('INSERT INTO `an_tipianagrafiche` (`id`) VALUES (NULL)'); + $tipo = Tipo::build($descrizione); $id_record = $dbo->lastInsertedID(); - $dbo->query('INSERT INTO `an_tipianagrafiche_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).')'); - + $tipo->name = $descrizione; + $tipo->save(); flash()->info(tr('Nuovo tipo di anagrafica aggiunto!')); } } diff --git a/modules/tipi_anagrafiche/init.php b/modules/tipi_anagrafiche/init.php index c9c4a6334..668685e05 100755 --- a/modules/tipi_anagrafiche/init.php +++ b/modules/tipi_anagrafiche/init.php @@ -18,7 +18,10 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Tipo; if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `an_tipianagrafiche`.`id`='.prepare($id_record)); + + $tipo = Tipo::find($id_record); }