Allineamento add stati preventivo

This commit is contained in:
Pek5892 2024-03-07 09:50:47 +01:00
parent 49083abc6a
commit 5d2d4ca620
7 changed files with 75 additions and 32 deletions

View File

@ -62,7 +62,7 @@ class Stato extends Model
/**
* Imposta l'attributo name dell'articolo.
* Imposta l'attributo name dello stato contratto.
*/
public function setNameAttribute($value)
{

View File

@ -48,7 +48,7 @@ class Stato extends Model
}
/**
* Imposta l'attributo name dell'articolo.
* Imposta l'attributo name dello stato fattura.
*/
public function setNameAttribute($value)
{

View File

@ -28,6 +28,19 @@ class Stato extends Model
protected $table = 'co_statipreventivi';
public static function build($icona, $colore, $is_completato, $is_fatturabile, $is_pianificabile)
{
$model = new static();
$model->icona = $icona;
$model->colore = $colore;
$model->is_completato = $is_completato;
$model->is_fatturabile = $is_fatturabile;
$model->is_pianificabile = $is_pianificabile;
$model->save();
return $model;
}
public function preventivi()
{
return $this->hasMany(Preventivo::class, 'idstatopreventivo');
@ -47,6 +60,30 @@ class Stato extends Model
->first()->name;
}
/**
* Imposta l'attributo name dello stato del preventivo.
*/
public function setNameAttribute($value)
{
$table = database()->table($this->table.'_lang');
$translated = $table
->where('id_record', '=', $this->id)
->where('id_lang', '=', setting('Lingua'));
if ($translated->count() > 0) {
$translated->update([
'name' => $value
]);
} else {
$table->insert([
'id_record' => $this->id,
'id_lang' => setting('Lingua'),
'name' => $value
]);
}
}
/**
* Ritorna l'id dello stato del preventivo a partire dal nome.
*

View File

@ -46,9 +46,9 @@ switch (post('op')) {
$descrizione = post('descrizione');
$icona = post('icona');
$colore = post('colore');
$is_completato = post('is_completato') ?: null;
$is_fatturabile = post('is_fatturabile') ?: null;
$is_pianificabile = post('is_pianificabile') ?: null;
$is_completato = post('is_completato');
$is_fatturabile = post('is_fatturabile');
$is_pianificabile = post('is_pianificabile');
$stato_new = Stato::find((new Stato())->getByName($descrizione)->id_record);

View File

@ -23,9 +23,9 @@ use Modules\Fatture\Stato;
switch (post('op')) {
case 'update':
$descrizione = post('descrizione');
$stato_new = Stato::find((new Stato())->getByName($descrizione)->id_record);
$stato_new = (new Stato())->getByName($descrizione)->id_record;
if ($stato_new) {
if (!empty($stato_new) && $stato_new != $id_record){
flash()->error(tr('Questo nome è già stato utilizzato per un altro stato.'));
} else {
$stato->icona = post('icona');

View File

@ -18,44 +18,47 @@
*/
include_once __DIR__.'/../../core.php';
use Modules\Preventivi\Stato;
switch (post('op')) {
case 'update':
$dbo->update('co_statipreventivi', [
'icona' => post('icona'),
'colore' => post('colore'),
'is_completato' => post('is_completato') ?: null,
'is_fatturabile' => post('is_fatturabile') ?: null,
'is_pianificabile' => post('is_pianificabile') ?: null,
'is_revisionabile' => post('is_revisionabile') ?: null,
], ['id' => $id_record]);
$dbo->update('co_statipreventivi_lang', [
'name' => post('descrizione'),
], ['id_record' => $id_record]);
flash()->info(tr('Informazioni salvate correttamente.'));
$descrizione = post('descrizione');
$stato_new = (new Stato())->getByName($descrizione)->id_record;
if (!empty($stato_new) && $stato_new != $id_record){
flash()->error(tr('Questo nome è già stato utilizzato per un altro stato dei preventivi.'));
} else {
$stato->icona = post('icona');
$stato->colore = post('colore');
$stato->is_completato = post('is_completato');
$stato->is_fatturabile = post('is_fatturabile');
$stato->is_pianificabile = post('is_pianificabile');
$stato->is_revisionabile = post('is_revisionabile');
$stato->name = $descrizione;
$stato->save();
}
break;
case 'add':
$descrizione = post('descrizione');
$icona = post('icona');
$colore = post('colore');
$is_completato = post('is_completato') ?: null;
$is_fatturabile = post('is_fatturabile') ?: null;
$is_pianificabile = post('is_pianificabile') ?: null;
$is_completato = post('is_completato');
$is_fatturabile = post('is_fatturabile');
$is_pianificabile = post('is_pianificabile');
// controlla descrizione che non sia duplicata
if (count($dbo->fetchArray('SELECT `name` FROM `co_statipreventivi_lang` WHERE `name`='.prepare($descrizione))) > 0) {
flash()->error(tr('Esiste già uno stato dei preventivi con questo nome.'));
$stato_new = Stato::find((new Stato())->getByName($descrizione)->id_record);
if ($stato_new) {
flash()->error(tr('Questo nome è già stato utilizzato per un altro stato dei preventivi.'));
} else {
$dbo->query('INSERT INTO `co_statipreventivi` (icona, colore, is_completato, is_fatturabile, is_pianificabile) VALUES ('.prepare($icona).', '.prepare($colore).', '.prepare($is_completato).', '.prepare($is_fatturabile).', '.prepare($is_pianificabile).' )');
$id_record = $dbo->lastInsertedID();
$dbo->query('INSERT INTO `co_statipreventivi_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).' )');
flash()->info(tr('Nuovo stato dei preventivi aggiunto.'));
}
$stato = Stato::build($icona, $colore, $is_completato, $is_fatturabile, $is_pianificabile);
$id_record= $dbo->lastInsertedID();
$stato->name = $descrizione;
$stato->save();
flash()->info(tr('Nuovo stato preventivi aggiunto.'));
}
break;
case 'delete':

View File

@ -18,7 +18,10 @@
*/
include_once __DIR__.'/../../core.php';
use Modules\Preventivi\Stato;
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id`=`co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `co_statipreventivi`.`id`='.prepare($id_record));
$stato = Stato::find($id_record);
}