Allineamento add stati contratti

This commit is contained in:
Pek5892 2024-03-06 17:38:12 +01:00
parent 7a904d5450
commit 5f79a6ee71
3 changed files with 56 additions and 19 deletions

View File

@ -28,6 +28,19 @@ class Stato extends Model
protected $table = 'co_staticontratti';
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(Contratto::class, 'idstato');
@ -47,6 +60,29 @@ class Stato extends Model
->first()->name;
}
/**
* Imposta l'attributo name dell'articolo.
*/
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
]);
}
}
/**
* Ritorna l'id dello stato contratto a partire dal nome.
*

View File

@ -23,23 +23,19 @@ use Modules\Contratti\Stato;
switch (post('op')) {
case 'update':
$id_stato_old = (new Stato())->getByName($record['name'])->id_record;
$id_stato = (new Stato())->getByName(post('descrizione'))->id_record;
$descrizione = post('descrizione');
$stato_new = Stato::find((new Stato())->getByName($descrizione)->id_record);
if ($id_stato) {
if ($stato_new) {
flash()->error(tr('Questo nome è già stato utilizzato per un altro stato dei contratti.'));
} else {
$dbo->update('co_staticontratti', [
'icona' => post('icona'),
'colore' => post('colore'),
'is_completato' => post('is_completato') ?: null,
'is_fatturabile' => post('is_fatturabile') ?: null,
'is_pianificabile' => post('is_pianificabile') ?: null,
], ['id' => $id_stato_old]);
$dbo->update('co_staticontratti_lang', [
'name' => post('descrizione'),
], ['id_record' => $id_stato_old]);
$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->name = $descrizione;
$stato->save();
flash()->info(tr('Informazioni salvate correttamente.'));
}
@ -54,13 +50,15 @@ switch (post('op')) {
$is_fatturabile = post('is_fatturabile') ?: null;
$is_pianificabile = post('is_pianificabile') ?: null;
// controlla descrizione che non sia duplicata
if ((new Stato())->getByName($descrizione)->id_record) {
$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 contratti.'));
} else {
$dbo->query('INSERT INTO `co_staticontratti` (`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_staticontratti_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).' )');
$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 contratto aggiunto.'));
}

View File

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