1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-10 00:20:51 +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'; 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() public function fatture()
{ {
return $this->hasMany(Fattura::class, 'idtipodocumento'); return $this->hasMany(Fattura::class, 'idtipodocumento');
@ -47,6 +57,30 @@ class Tipo extends Model
->first()->name; ->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. * Ritorna l'id del tipo documento a partire dal nome.
* *

View File

@ -18,41 +18,34 @@
*/ */
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Fatture\Tipo;
switch (filter('op')) { switch (filter('op')) {
case 'update': case 'update':
$descrizione = filter('descrizione'); $descrizione = filter('descrizione');
$dir = filter('dir'); $dir = filter('dir');
$codice_tipo_documento_fe = filter('codice_tipo_documento_fe'); $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 (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) { if (!empty($tipo_new) && $tipo_new->id != $id_record){
$predefined = post('predefined'); flash()->error(tr('Questa combinazione di nome, codice e direzione è già stata utilizzata per un altro tipo di documento.'));
} else {
if (!empty($predefined)) { if (!empty($predefined)) {
$dbo->query('UPDATE `co_tipidocumento` SET `predefined` = 0 WHERE `dir` = '.prepare($dir)); $dbo->query('UPDATE `co_tipidocumento` SET `predefined` = 0 WHERE `dir` = '.prepare($dir));
} }
$tipo->dir = $dir;
$dbo->update('co_tipidocumento', [ $tipo->codice_tipo_documento_fe = $codice_tipo_documento_fe;
'dir' => $dir, $tipo->help = filter('help');
'codice_tipo_documento_fe' => $codice_tipo_documento_fe, $tipo->predefined = $predefined;
'help' => filter('help'), $tipo->enabled = post('enabled');
'predefined' => $predefined, $tipo->id_segment = post('id_segment');
'enabled' => post('enabled'), $tipo->name = $descrizione;
'id_segment' => post('id_segment'), $tipo->save();
], ['id' => $id_record]);
$dbo->update('co_tipidocumento_lang', [
'name' => $descrizione,
], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]);
flash()->info(tr('Salvataggio completato!')); 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; break;
@ -61,20 +54,16 @@ switch (filter('op')) {
$descrizione = filter('descrizione'); $descrizione = filter('descrizione');
$dir = filter('dir'); $dir = filter('dir');
$codice_tipo_documento_fe = filter('codice_tipo_documento_fe'); $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 (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) { if (!empty($tipo_new) && $tipo_new->id != $id_record){
$dbo->insert('co_tipidocumento', [ flash()->error(tr('Questa combinazione di nome, codice e direzione è già stata utilizzata per un altro tipo di documento.'));
'dir' => $dir, } else {
'codice_tipo_documento_fe' => $codice_tipo_documento_fe, $tipo = Tipo::build($dir, $codice_tipo_documento_fe);
]);
$id_record = $dbo->lastInsertedID(); $id_record = $dbo->lastInsertedID();
$tipo->name = $descrizione;
$dbo->insert('co_tipidocumento_lang', [ $tipo->save();
'name' => $descrizione,
'id_record' => $id_record,
'id_lang' => setting('Lingua'),
]);
if (isAjaxRequest()) { if (isAjaxRequest()) {
echo json_encode(['id' => $id_record, 'text' => $descrizione]); echo json_encode(['id' => $id_record, 'text' => $descrizione]);
@ -83,13 +72,7 @@ switch (filter('op')) {
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
'_TYPE_' => 'tipo documento', '_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; break;

View File

@ -27,7 +27,7 @@ use Models\Module;
<div class="row"> <div class="row">
<div class="col-md-6"> <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>
<div class="col-md-3"> <div class="col-md-3">

View File

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