1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-03 17:27:29 +01:00

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) 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) public function setNameAttribute($value)
{ {

View File

@ -28,6 +28,19 @@ class Stato extends Model
protected $table = 'co_statipreventivi'; 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() public function preventivi()
{ {
return $this->hasMany(Preventivo::class, 'idstatopreventivo'); return $this->hasMany(Preventivo::class, 'idstatopreventivo');
@ -47,6 +60,30 @@ class Stato extends Model
->first()->name; ->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. * Ritorna l'id dello stato del preventivo a partire dal nome.
* *

View File

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

View File

@ -23,9 +23,9 @@ use Modules\Fatture\Stato;
switch (post('op')) { switch (post('op')) {
case 'update': case 'update':
$descrizione = post('descrizione'); $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.')); flash()->error(tr('Questo nome è già stato utilizzato per un altro stato.'));
} else { } else {
$stato->icona = post('icona'); $stato->icona = post('icona');

View File

@ -18,44 +18,47 @@
*/ */
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Preventivi\Stato;
switch (post('op')) { switch (post('op')) {
case 'update': case 'update':
$dbo->update('co_statipreventivi', [ $descrizione = post('descrizione');
'icona' => post('icona'), $stato_new = (new Stato())->getByName($descrizione)->id_record;
'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.'));
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; break;
case 'add': case 'add':
$descrizione = post('descrizione'); $descrizione = post('descrizione');
$icona = post('icona'); $icona = post('icona');
$colore = post('colore'); $colore = post('colore');
$is_completato = post('is_completato') ?: null; $is_completato = post('is_completato');
$is_fatturabile = post('is_fatturabile') ?: null; $is_fatturabile = post('is_fatturabile');
$is_pianificabile = post('is_pianificabile') ?: null; $is_pianificabile = post('is_pianificabile');
// controlla descrizione che non sia duplicata $stato_new = Stato::find((new Stato())->getByName($descrizione)->id_record);
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.')); if ($stato_new) {
flash()->error(tr('Questo nome è già stato utilizzato per un altro stato dei preventivi.'));
} else { } 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).' )'); $stato = Stato::build($icona, $colore, $is_completato, $is_fatturabile, $is_pianificabile);
$id_record = $dbo->lastInsertedID(); $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')).' )'); $stato->name = $descrizione;
flash()->info(tr('Nuovo stato dei preventivi aggiunto.')); $stato->save();
}
flash()->info(tr('Nuovo stato preventivi aggiunto.'));
}
break; break;
case 'delete': case 'delete':

View File

@ -18,7 +18,10 @@
*/ */
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Preventivi\Stato;
if (isset($id_record)) { 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)); $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);
} }