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

Allineamento add tipi documento

This commit is contained in:
Pek5892 2024-03-07 10:10:42 +01:00
parent 5d2d4ca620
commit 00e8fb9be1
4 changed files with 60 additions and 40 deletions

View File

@ -28,6 +28,16 @@ class Tipo extends Model
protected $table = 'co_tipidocumento';
public static function build($dir, $codice_tipo_documento_fe)
{
$model = new static();
$model->dir = $dir;
$model->codice_tipo_documento_fe = $codice_tipo_documento_fe;
$model->save();
return $model;
}
public function fatture()
{
return $this->hasMany(Fattura::class, 'idtipodocumento');
@ -47,6 +57,30 @@ class Tipo extends Model
->first()->name;
}
/**
* Imposta l'attributo name del tipo di documento.
*/
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 del tipo documento a partire dal nome.
*

View File

@ -18,63 +18,52 @@
*/
include_once __DIR__.'/../../core.php';
use Modules\Fatture\Tipo;
switch (filter('op')) {
case 'update':
$descrizione = filter('descrizione');
$dir = filter('dir');
$codice_tipo_documento_fe = filter('codice_tipo_documento_fe');
$predefined = post('predefined');
$tipo_new = Tipo::where('id', '=', (new Tipo())->getByName($descrizione)->id_record)->where('dir', '=', $dir)->where('codice_tipo_documento_fe', '=', $codice_tipo_documento_fe)->first();
if (isset($descrizione) && isset($dir) && isset($codice_tipo_documento_fe)) {
if ($dbo->fetchNum('SELECT * FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `dir`='.prepare($dir).' AND `name`='.prepare($descrizione).' AND `codice_tipo_documento_fe`='.prepare($codice_tipo_documento_fe).' AND `id`!='.prepare($id_record)) == 0) {
$predefined = post('predefined');
if (!empty($tipo_new) && $tipo_new->id != $id_record){
flash()->error(tr('Questa combinazione di nome, codice e direzione è già stata utilizzata per un altro tipo di documento.'));
} else {
if (!empty($predefined)) {
$dbo->query('UPDATE `co_tipidocumento` SET `predefined` = 0 WHERE `dir` = '.prepare($dir));
}
$dbo->update('co_tipidocumento', [
'dir' => $dir,
'codice_tipo_documento_fe' => $codice_tipo_documento_fe,
'help' => filter('help'),
'predefined' => $predefined,
'enabled' => post('enabled'),
'id_segment' => post('id_segment'),
], ['id' => $id_record]);
$dbo->update('co_tipidocumento_lang', [
'name' => $descrizione,
], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]);
$tipo->dir = $dir;
$tipo->codice_tipo_documento_fe = $codice_tipo_documento_fe;
$tipo->help = filter('help');
$tipo->predefined = $predefined;
$tipo->enabled = post('enabled');
$tipo->id_segment = post('id_segment');
$tipo->name = $descrizione;
$tipo->save();
flash()->info(tr('Salvataggio completato!'));
} else {
flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa combinazione di direzione, descrizione e tipo documento FE", [
'_TYPE_' => 'tipo documento',
]));
}
} else {
flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio'));
}
break;
case 'add':
$descrizione = filter('descrizione');
$dir = filter('dir');
$codice_tipo_documento_fe = filter('codice_tipo_documento_fe');
$tipo_new = Tipo::where('id', '=', (new Tipo())->getByName($descrizione)->id_record)->where('dir', '=', $dir)->where('codice_tipo_documento_fe', '=', $codice_tipo_documento_fe)->first();
if (isset($descrizione) && isset($dir) && isset($codice_tipo_documento_fe)) {
if ($dbo->fetchNum('SELECT * FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `dir`='.prepare($dir).' AND `name`='.prepare($descrizione).' AND `codice_tipo_documento_fe`='.prepare($codice_tipo_documento_fe)) == 0) {
$dbo->insert('co_tipidocumento', [
'dir' => $dir,
'codice_tipo_documento_fe' => $codice_tipo_documento_fe,
]);
if (!empty($tipo_new) && $tipo_new->id != $id_record){
flash()->error(tr('Questa combinazione di nome, codice e direzione è già stata utilizzata per un altro tipo di documento.'));
} else {
$tipo = Tipo::build($dir, $codice_tipo_documento_fe);
$id_record = $dbo->lastInsertedID();
$dbo->insert('co_tipidocumento_lang', [
'name' => $descrizione,
'id_record' => $id_record,
'id_lang' => setting('Lingua'),
]);
$tipo->name = $descrizione;
$tipo->save();
if (isAjaxRequest()) {
echo json_encode(['id' => $id_record, 'text' => $descrizione]);
@ -83,13 +72,7 @@ switch (filter('op')) {
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
'_TYPE_' => 'tipo documento',
]));
} else {
flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa combinazione di direzione, descrizione e tipo documento FE", [
'_TYPE_' => 'tipo documento',
]));
}
} else {
flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio'));
}
break;

View File

@ -27,7 +27,7 @@ use Models\Module;
<div class="row">
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$name$" ]}
</div>
<div class="col-md-3">

View File

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