Migliorie listini cliente e impostazione listino predefinito

This commit is contained in:
MatteoPistorello 2023-12-28 16:18:02 +01:00
parent 513e17e33d
commit 2d2bf85710
5 changed files with 47 additions and 33 deletions

View File

@ -79,6 +79,11 @@ class Anagrafica extends Model
$model->tipologie = $tipologie;
$model->save();
if ($model->isTipo('Cliente') && setting('Listino cliente predefinito')) {
$model->id_listino = setting('Listino cliente predefinito');
$model->save();
}
return $model;
}

View File

@ -3,6 +3,7 @@
include_once __DIR__.'/../../../core.php';
$id_listino = filter('id_listino');
$listino = $dbo->selectOne('mg_listini', '*', ['id' => $id_listino]);
$search = filter('search') ? filter('search')['value'] : null;
$start = filter('start');
$length = filter('length');
@ -23,17 +24,19 @@ foreach ($articoli as $articolo) {
'<input class="check" type="checkbox" id="'.$articolo['id'].'"/>',
Modules::link('Articoli', $articolo['id_articolo'], $articolo['codice'], null, ''),
$articolo['descrizione'],
'<p class="text-center">'.dateFormat($articolo['data_scadenza']).'</div>',
'<p class="text-right">'.($articolo['minimo_vendita'] != 0 ? moneyFormat($articolo['minimo_vendita']) : '-').'</div>',
'<p class="text-right">'.moneyFormat($articolo['prezzo_unitario']).'</div>',
'<p class="text-right">'.moneyFormat($articolo['prezzo_unitario_ivato']).'</div>',
'<p class="text-right">'.($articolo['sconto_percentuale'] != 0 ? numberFormat($articolo['sconto_percentuale']).' %' : '-').'</div>',
'<div class="text-center"><a class="btn btn-xs btn-warning" title="'.tr('Modifica articolo').'" onclick="modificaArticolo($(this), '.$articolo['id'].')">
$articolo['data_scadenza'] ? '<p class="text-center">'.dateFormat($articolo['data_scadenza']).'</p>' : '<p class="text-muted text-center">'.dateFormat($listino['data_scadenza_predefinita']).'</p>',
'<p class="text-right">'.($articolo['minimo_vendita'] != 0 ? moneyFormat($articolo['minimo_vendita']) : '-').'</p>',
'<p class="text-right">'.moneyFormat($articolo['prezzo_unitario']).'</p>',
'<p class="text-right">'.moneyFormat($articolo['prezzo_unitario_ivato']).'</p>',
'<p class="text-right">'.($articolo['sconto_percentuale'] != 0 ? numberFormat($articolo['sconto_percentuale']).' %' : '-').'</p>',
'<div class="text-center">
<a class="btn btn-xs btn-warning" title="'.tr('Modifica articolo').'" onclick="modificaArticolo($(this), '.$articolo['id'].')">
<i class="fa fa-edit"></i>
</a>
<a class="btn btn-xs btn-danger" title="'.tr('Rimuovi articolo').'" onclick="rimuoviArticolo('.$articolo['id'].')">
<i class="fa fa-trash"></i>
</a></div>',
</a>
</div>',
];
$righe[] = $riga;

View File

@ -42,7 +42,7 @@ echo '
</div>
<div class="col-md-3">
{[ "type":"date", "label":"'.tr('Data scadenza default').'", "name":"data_scadenza_predefinita", "value":"$data_scadenza_predefinita$" ]}
{[ "type":"date", "label":"'.tr('Data scadenza predefinita').'", "name":"data_scadenza_predefinita", "value":"$data_scadenza_predefinita$", "required":"1" ]}
</div>
</div>

View File

@ -17,21 +17,25 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
use Modules\Articoli\Articolo;
use Modules\ListiniCliente\Articolo as ArticoloListino;
include_once __DIR__.'/../../../core.php';
include_once __DIR__.'/../../../../core.php';
if (empty(get('id'))) {
$listino = $dbo->selectOne('mg_listini', '*', ['id' => get('id_record')]);
$data_scadenza = $listino['data_scadenza_predefinita'];
$id_articolo = get('id_articolo');
} else {
$articolo = $dbo->selectOne('mg_listini_articoli', '*', ['id' => get('id')]);
$data_scadenza = $articolo['data_scadenza'];
$id_articolo = $articolo['id_articolo'];
}
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$prezzo_unitario = $prezzi_ivati ? $articolo['prezzo_unitario_ivato'] : $articolo['prezzo_unitario'];
if (empty(get('id'))) {
$articolo = Articolo::find(get('id_articolo'));
$data_scadenza = null;
$id_articolo = get('id_articolo');
$prezzo_unitario = $prezzi_ivati ? $articolo->prezzo_vendita_ivato : $articolo->prezzo_vendita;
} else {
$articolo_listino = ArticoloListino::find(get('id'));
$data_scadenza = $articolo_listino->data_scadenza;
$id_articolo = $articolo_listino->id_articolo;
$prezzo_unitario = $prezzi_ivati ? $articolo_listino->prezzo_unitario_ivato : $articolo_listino->prezzo_unitario;
}
echo '
<form id="add_form" action="'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.get('id_record').'" method="post">
@ -48,7 +52,7 @@ echo '
<div class="row">
<div class="col-md-4">
{[ "type":"date", "label":"'.tr('Data scadenza').'", "name":"data_scadenza", "value":"'.$data_scadenza.'", "required": "1" ]}
{[ "type":"date", "label":"'.tr('Data scadenza').'", "name":"data_scadenza", "value":"'.$data_scadenza.'", "help": "'.tr('Se non valorizzata viene utilizzata la data di scadenza predefinita').'" ]}
</div>
<div class="col-md-4">
@ -56,7 +60,7 @@ echo '
</div>
<div class="col-md-4">
{[ "type":"number", "label":"'.tr('Sconto percentuale').'", "name":"sconto_percentuale", "icon-after": "%", "value":"'.$articolo['sconto_percentuale'].'" ]}
{[ "type":"number", "label":"'.tr('Sconto percentuale').'", "name":"sconto_percentuale", "icon-after": "%", "value":"'.$articolo_listino->sconto_percentuale.'" ]}
</div>
</div>
@ -72,15 +76,8 @@ echo '
?>
<script>
var is_add = <?php echo empty(get('id')) ? '1' : '0'; ?>;
$(document).ready(function(){
init();
// Inizializzazione prezzo di vendita articolo
if (is_add) {
$('#prezzo_unitario').val( $('#id_articolo').selectData().prezzo_vendita );
}
});
content_was_modified = false;
</script>

View File

@ -12,3 +12,12 @@ INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `
-- Modifica valore di default di Cifre decimali per quantità in stampa
UPDATE `zz_settings` SET `valore` = '2' WHERE `zz_settings`.`nome` = 'Cifre decimali per quantità in stampa';
-- Fix campo data in listini
ALTER TABLE `mg_listini_articoli` CHANGE `data_scadenza` `data_scadenza` DATE NULL;
-- Aggiunta importazione listini cliente
INSERT INTO `zz_imports` (`name`, `class`) VALUES ('Listini cliente', 'Modules\\ListiniCliente\\Import\\CSV');
-- Aggiunta impostazione per definire il listino cliente predefinito
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `order`, `help`) VALUES (NULL, 'Listino cliente predefinito', '', 'query=SELECT id, nome AS descrizione FROM `mg_listini` ORDER BY descrizione ASC', '1', 'Generali', NULL, NULL, 'In fase di creazione anagrafica cliente collega il listino all\'anagrafica stessa');