Allineamento add tipi anagrafiche e pagamenti

This commit is contained in:
Pek5892 2024-03-06 17:26:58 +01:00
parent 3c190fdcb9
commit 7a904d5450
15 changed files with 176 additions and 72 deletions

View File

@ -28,6 +28,14 @@ class Tipo extends Model
protected $table = 'an_tipianagrafiche';
public static function build($descrizione)
{
$model = new static();
$model->save();
return $model;
}
public function anagrafiche()
{
return $this->hasMany(Anagrafica::class, 'idtipoanagrafica');
@ -62,4 +70,26 @@ class Tipo extends Model
->where('id_lang', '=', setting('Lingua'))
->first();
}
/**
* Imposta l'attributo name del tipo di anagrafica.
*/
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
]);
}
}
}

View File

@ -20,7 +20,7 @@
include_once __DIR__.'/../../core.php';
use Modules\DDT\DDT;
use Modules\IVA\Aliquota;
use Modules\Iva\Aliquota;
use Util\Generator;
/*

View File

@ -18,7 +18,7 @@
*/
use Modules\Fatture\Fattura;
use Modules\IVA\Aliquota;
use Modules\Iva\Aliquota;
use Util\Generator;
/*

View File

@ -29,7 +29,7 @@ use Modules\Fatture\Fattura;
use Modules\Interventi\Components\Riga as RigaIntervento;
use Modules\Interventi\Components\Sessione;
use Modules\Interventi\Intervento;
use Modules\IVA\Aliquota;
use Modules\Iva\Aliquota;
use Util\Generator;
use Util\Ini;

View File

@ -18,32 +18,30 @@
*/
include_once __DIR__.'/../../core.php';
use Modules\Iva\Aliquota;
switch (filter('op')) {
case 'update':
$descrizione = post('descrizione');
$codice = post('codice');
$esente = post('esente');
$percentuale = empty($esente) ? post('percentuale') : 0;
$indetraibile = post('indetraibile');
$dicitura = post('dicitura');
$codice = post('codice');
$codice_natura_fe = post('codice_natura_fe');
$esigibilita = post('esigibilita');
$descrizione = post('descrizione');
if ($dbo->fetchNum('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE (`name` = '.prepare($descrizione).' AND `codice` = '.prepare($codice).') AND `co_iva`.`id` != '.prepare($id_record)) == 0) {
$codice_natura = post('codice_natura_fe') ?: null;
$esigibilita = post('esigibilita');
$dbo->update('co_iva', [
'esente' => $esente,
'percentuale' => $percentuale,
'indetraibile' => post('indetraibile'),
'dicitura' => post('dicitura'),
'codice' => $codice,
'codice_natura_fe' => $codice_natura,
'esigibilita' => $esigibilita,
], ['id' => $id_record]);
$dbo->update('co_iva_lang', [
'name' => $descrizione,
], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]);
$aliquota = Aliquota::where('id', '=', (new Aliquota())->getByName($descrizione)->id_record)->where('codice', '=', $codice)->where('id', '!=', $iva->id)->first();
if (!$aliquota) {
$iva->esente = $esente;
$iva->percentuale = $percentuale;
$iva->indetraibile = $indetraibile;
$iva->dicitura = $dicitura;
$iva->codice = $codice;
$iva->codice_natura_fe = $codice_natura_fe;
$iva->esigibilita = $esigibilita;
$iva->name = $descrizione;
$iva->save();
// Messaggio di avvertenza
if ((stripos('N6', (string) $codice_natura) === 0) && $esigibilita == 'S') {
@ -69,23 +67,13 @@ switch (filter('op')) {
$esigibilita = post('esigibilita');
$indetraibile = post('indetraibile');
if ($dbo->fetchNum('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name` = '.prepare($descrizione).' AND `codice` = '.prepare($codice)) == 0) {
$dbo->insert('co_iva', [
'esente' => $esente,
'codice' => $codice,
'codice_natura_fe' => $codice_natura,
'percentuale' => $percentuale,
'indetraibile' => $indetraibile,
'esigibilita' => $esigibilita,
]);
$id_record = $dbo->lastInsertedID();
$dbo->insert('co_iva_lang', [
'id_record' => $id_record,
'name' => $descrizione,
'id_lang' => setting('Lingua'),
]);
$aliquota = Aliquota::where('id', '=', (new Aliquota())->getByName($descrizione)->id_record)->where('codice', '=', $codice)->first();
if (!$aliquota) {
$iva = Aliquota::build($esente, $percentuale, $indetraibile, $dicitura, $codice, $codice_natura_fe, $esigibilita);
$id_record= $dbo->lastInsertedID();
$iva->name = $descrizione;
$iva->save();
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
'_TYPE_' => 'IVA',
]));

View File

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

View File

@ -28,6 +28,22 @@ class Aliquota extends Model
protected $table = 'co_iva';
public static function build($esente, $percentuale, $indetraibile, $dicitura, $codice, $codice_natura_fe, $esigibilita)
{
$model = new static();
$model->esente = $esente;
$model->percentuale = $percentuale;
$model->indetraibile = $indetraibile;
$model->dicitura = $dicitura;
$model->codice = $codice;
$model->codice_natura_fe = $codice_natura_fe;
$model->esigibilita = $esigibilita;
$model->save();
return $model;
}
/**
* Ritorna l'attributo name dell'aliquota IVA.
*
@ -57,4 +73,26 @@ class Aliquota extends Model
->where('id_lang', '=', setting('Lingua'))
->first();
}
/**
* Imposta l'attributo name dell'aliquota.
*/
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
]);
}
}
}

View File

@ -20,7 +20,7 @@
include_once __DIR__.'/../../core.php';
use Modules\Interventi\Intervento;
use Modules\IVA\Aliquota;
use Modules\Iva\Aliquota;
use Modules\Ordini\Ordine;
/*

View File

@ -24,13 +24,13 @@ use Modules\Pagamenti\Pagamento;
switch (filter('op')) {
case 'update':
$descrizione = filter('descrizione');
$id_pagamento = (new Pagamento())->getByName($descrizione)->id_record;
if (isset($descrizione)) {
foreach (post('id') as $key => $id) {
// Data fatturazione
$giorno = 0;
$pagamento = Pagamento::find($id);
// Data fatturazione fine mese
if (post('scadenza')[$key] == 2) {
$giorno = -1;
@ -46,28 +46,27 @@ switch (filter('op')) {
$giorno = -post('giorno')[$key] - 1;
}
$array = [
'num_giorni' => post('distanza')[$key],
'giorno' => $giorno,
'prc' => post('percentuale')[$key],
'idconto_vendite' => post('idconto_vendite') ?: null,
'idconto_acquisti' => post('idconto_acquisti') ?: null,
'codice_modalita_pagamento_fe' => post('codice_modalita_pagamento_fe'),
];
if ($id_pagamento) {
flash()->error(tr('Esiste più un metodo di pagamento con questo nome!'));
break;
if (!empty($id)) {
$pagamento->name = $descrizione;
$pagamento->num_giorni = post('distanza')[$key];
$pagamento->giorno = $giorno;
$pagamento->prc = post('percentuale')[$key];
$pagamento->idconto_vendite = post('idconto_vendite') ?: null;
$pagamento->idconto_acquisti = post('idconto_acquisti') ?: null;
$pagamento->codice_modalita_pagamento_fe = post('codice_modalita_pagamento_fe');
$pagamento->save();
} else {
if (!empty($id)) {
$dbo->update('co_pagamenti_lang', ['name' => $descrizione], ['id' => $id, 'id_lang' => setting('Lingua')]);
$dbo->update('co_pagamenti', $array, ['id' => $id_record]);
} else {
$dbo->INSERT('co_pagamenti', $array);
$dbo->INSERT('co_pagamenti_lang', ['name' => $descrizione, 'id_record' => $id, 'id_lang' => setting('Lingua')]);
}
$pagamento = Pagamento::build(post('codice_modalita_pagamento_fe'));
$pagamento->num_giorni = post('distanza')[$key];
$pagamento->giorno = $giorno;
$pagamento->prc = post('percentuale')[$key];
$pagamento->idconto_vendite = post('idconto_vendite') ?: null;
$pagamento->idconto_acquisti = post('idconto_acquisti') ?: null;
$pagamento->name = $descrizione;
$pagamento->save();
}
}
flash()->info(tr('Salvataggio completato!'));
} else {
flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio!'));
@ -85,9 +84,10 @@ switch (filter('op')) {
if ($id_pagamento) {
flash()->error(tr('Esiste già un metodo di pagamento con questo nome!'));
} else {
$dbo->query('INSERT INTO `co_pagamenti` (`codice_modalita_pagamento_fe`, `prc` ) VALUES ('.prepare($codice_modalita_pagamento_fe).', 100 )');
$id_record = $dbo->lastInsertedID();
$dbo->query('INSERT INTO `co_pagamenti_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).')');
$pagamento = Pagamento::build($codice_modalita_pagamento_fe);
$id_record= $dbo->lastInsertedID();
$pagamento->name = $descrizione;
$pagamento->save();
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
'_TYPE_' => 'pagamento',
@ -99,6 +99,11 @@ switch (filter('op')) {
case 'delete':
if (!empty($id_record)) {
$descrizione = filter('descrizione');
$dbo->query('DELETE FROM `co_pagamenti` WHERE `id` IN (SELECT `id_record` FROM `co_pagamenti_lang` WHERE `name` = "'.prepare($descrizione).'")');
$dbo->query('DELETE FROM `co_pagamenti_lang` WHERE `name` = "'.prepare($descrizione).'"');
$dbo->query('DELETE FROM `co_pagamenti` WHERE `id`='.prepare($id_record));
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [

View File

@ -29,7 +29,7 @@ include_once __DIR__.'/../../core.php';
</div>
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Codice Modalità (Fatturazione Elettronica)'); ?>", "name": "codice_modalita_pagamento_fe", "value": "", "values": "query=SELECT `codice` as id, CONCAT(`codice`, ' - ', `name`) AS descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record`=`fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang`=<?php prepare(setting('Lingua')); ?>)", "required": 1 ]}
{[ "type": "select", "label": "<?php echo tr('Codice Modalità (Fatturazione Elettronica)'); ?>", "name": "codice_modalita_pagamento_fe", "value": "", "values": "query=SELECT `fe_modalita_pagamento`.`codice` as id, CONCAT(`fe_modalita_pagamento`.`codice`, ' - ', `name`) AS descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record`=`fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang`= <?php echo setting('Lingua'); ?>)", "required": 1 ]}
</div>
</div>

View File

@ -87,7 +87,7 @@ $tipi_scadenza_pagamento = [
],
];
$results = $dbo->fetchArray('SELECT * FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($record['name']).' ORDER BY `num_giorni` ASC');
$results = $dbo->fetchArray('SELECT *, `co_pagamenti`.`id` as id FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($record['name']).' ORDER BY `num_giorni` ASC');
$numero_rata = 1;
foreach ($results as $result) {
$tipo_scadenza_pagamento = 3;

View File

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

View File

@ -22,6 +22,7 @@ namespace Modules\Pagamenti;
use Carbon\Carbon;
use Common\SimpleModelTrait;
use Illuminate\Database\Eloquent\Model;
use Modules\Fatture\Fattura;
class Pagamento extends Model
{
@ -29,6 +30,15 @@ class Pagamento extends Model
protected $table = 'co_pagamenti';
public static function build($codice)
{
$model = new static();
$model->codice_modalita_pagamento_fe = $codice;
$model->save();
return $model;
}
public function fatture()
{
return $this->hasMany(Fattura::class, 'idpagamento');
@ -169,4 +179,26 @@ class Pagamento extends Model
->where('id_lang', '=', setting('Lingua'))
->first();
}
/**
* Imposta l'attributo name del pagamento.
*/
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
]);
}
}
}

View File

@ -18,6 +18,7 @@
*/
include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Tipo;
switch (post('op')) {
case 'update':
@ -28,7 +29,8 @@ switch (post('op')) {
// Nome accettato
if (!in_array($descrizione, $block)) {
$dbo->query('UPDATE `an_tipianagrafiche_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($id_tipo));
$tipo->name = $descrizione;
$tipo->save();
flash()->info(tr('Informazioni salvate correttamente!'));
} else {
// Nome non consentito
@ -42,15 +44,15 @@ switch (post('op')) {
if (!empty($descrizione)) {
// Verifico che il nome non sia duplicato
$rs = $dbo->fetchArray('SELECT `name` FROM `an_tipianagrafiche_lang` WHERE `name`='.prepare($descrizione));
$tipo = Tipo::find((new Tipo())->getByName($descrizione)->id_record);
if (count($rs) > 0) {
if ($tipo) {
flash()->error(tr('Nome già esistente!'));
} else {
$dbo->query('INSERT INTO `an_tipianagrafiche` (`id`) VALUES (NULL)');
$tipo = Tipo::build($descrizione);
$id_record = $dbo->lastInsertedID();
$dbo->query('INSERT INTO `an_tipianagrafiche_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).')');
$tipo->name = $descrizione;
$tipo->save();
flash()->info(tr('Nuovo tipo di anagrafica aggiunto!'));
}
}

View File

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