Skip to content

Commit f9674a9

Browse files
committed
feat: uniformati Marca e modello fra articoli e impianti
1 parent ccee57c commit f9674a9

30 files changed

Lines changed: 587 additions & 621 deletions

File tree

modules/articoli/actions.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@
8080
$articolo->um = post('um');
8181
$articolo->um_secondaria = post('um_secondaria');
8282
$articolo->fattore_um_secondaria = post('fattore_um_secondaria');
83+
$articolo->id_marca = post('id_marca');
84+
$articolo->id_modello = post('id_modello');
8385
$articolo->setTranslation('title', post('descrizione'));
8486
$articolo->save();
8587

@@ -153,8 +155,8 @@
153155
$articolo->servizio = post('servizio');
154156
$articolo->volume = post('volume');
155157
$articolo->peso_lordo = post('peso_lordo');
156-
$articolo->id_marchio = post('id_marchio');
157-
$articolo->modello = post('modello');
158+
$articolo->id_marca = post('id_marca');
159+
$articolo->id_modello = post('id_modello');
158160

159161
$articolo->um_secondaria = post('um_secondaria');
160162
$articolo->fattore_um_secondaria = post('fattore_um_secondaria');

modules/articoli/add.php

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,21 @@
4646
{[ "type": "textarea", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "<?php echo htmlentities(filter('descrizione')) ?: ''; ?>", "charcounter": 1 ]}
4747
</div>
4848

49-
<div class="col-md-6">
49+
<div class="col-md-3">
5050
{[ "type": "select", "label": "<?php echo tr('Categoria'); ?>", "name": "categoria", "required": 0, "ajax-source": "categorie", "icon-after": "add|<?php echo Module::where('name', 'Categorie')->first()->id; ?>" ]}
5151
</div>
5252

53-
<div class="col-md-6">
53+
<div class="col-md-3">
5454
{[ "type": "select", "label": "<?php echo tr('Sottocategoria'); ?>", "name": "subcategoria", "id": "subcategoria_add", "ajax-source": "sottocategorie", "icon-after": "add|<?php echo Module::where('name', 'Categorie')->first()->id; ?>||hide" ]}
5555
</div>
56+
57+
<div class="col-md-3">
58+
{[ "type": "select", "label": "<?php echo tr('Marca'); ?>", "name": "id_marca", "ajax-source": "marche", "icon-after": "add|<?php echo Module::where('name', 'Marche')->first()->id; ?>" ]}
59+
</div>
60+
61+
<div class="col-md-3">
62+
{[ "type": "select", "label": "<?php echo tr('Modello'); ?>", "name": "id_modello", "id": "id_modello_add", "ajax-source": "modelli", "icon-after": "add|<?php echo Module::where('name', 'Marche')->first()->id; ?>||hide" ]}
63+
</div>
5664
</div>
5765

5866
<div class="card card-info collapsed-card">
@@ -84,7 +92,7 @@
8492

8593
{[ "type": "number", "label": "<?php echo tr('Prezzo di vendita'); ?>", "name": "prezzo_vendita", "icon-after": "<?php echo currency(); ?>", "help": "<?php echo setting('Utilizza prezzi di vendita comprensivi di IVA') ? tr('Importo IVA inclusa') : ''; ?>" ]}
8694
</div>
87-
95+
8896
</div>
8997

9098
<div class="row">
@@ -145,6 +153,7 @@
145153
percentuale = 0;
146154

147155
$(document).ready(function () {
156+
// Gestione sottocategorie
148157
var sub = $('#add-form').find('#subcategoria_add');
149158
var original = sub.parent().find(".input-group-append button").attr("onclick");
150159

@@ -163,6 +172,25 @@
163172
}
164173
});
165174

175+
// Gestione modelli
176+
var modello = $('#add-form').find('#id_modello_add');
177+
var originalModello = modello.parent().find(".input-group-append button").attr("onclick");
178+
179+
$('#add-form').find('#id_marca').change(function() {
180+
updateSelectOption("id_marca", $(this).val());
181+
session_set('superselect,id_marca', $(this).val(), 0);
182+
183+
modello.selectReset();
184+
185+
if($(this).val()){
186+
modello.parent().find(".input-group-append button").removeClass("hide");
187+
modello.parent().find(".input-group-append button").attr("onclick", originalModello ? originalModello.replace(/id_original=\d*/, "id_original=" + $(this).val()) : "openModal('<?php echo tr('Aggiungi modello'); ?>', '<?php echo base_path(); ?>/add.php?id_module=<?php echo Module::where('name', 'Marche')->first()->id; ?>&id_original=" + $(this).val() + "')");
188+
}
189+
else {
190+
modello.parent().find(".input-group-append button").addClass("hide");
191+
}
192+
});
193+
166194
input("coefficiente").on('keyup', function(){
167195
if (iva_vendita.val()) {
168196
percentuale = parseFloat(iva_vendita.selectData().percentuale);
@@ -225,7 +253,7 @@ function scorpora_iva_add() {
225253
input.val(scorporato);
226254
}
227255

228-
$("#genera_barcode").click(function(){
256+
$("#genera_barcode").click(function(){
229257
$(".modal #barcode").attr("disabled", $(this).is(":checked")).val("");
230258
});
231259
</script>

modules/articoli/edit.php

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,12 @@
7474
</div>
7575

7676
<div class="col-md-3">
77-
<?php echo !empty($record['id_marchio']) ? Modules::link('Marchi', $record['id_marchio'], null, null, 'class="pull-right"') : ''; ?>
78-
{[ "type": "select", "label": "<?php echo tr('Marchio'); ?>", "name": "id_marchio", "value":"$id_marchio$", "values": "query=SELECT id, name AS descrizione FROM mg_marchi ORDER BY descrizione ASC" ]}
77+
<?php echo !empty($record['id_marca']) ? Modules::link('Marche', $record['id_marca'], null, null, 'class="pull-right"') : ''; ?>
78+
{[ "type": "select", "label": "<?php echo tr('Marca'); ?>", "name": "id_marca", "value":"$id_marca$", "ajax-source": "marche", "icon-after": "add|<?php echo Module::where('name', 'Marche')->first()->id; ?>" ]}
7979
</div>
8080
<div class="col-md-3">
81-
{[ "type": "text", "label": "<?php echo tr('Modello'); ?>", "name": "modello", "value": "$modello$" ]}
81+
<?php echo !empty($record['id_modello']) ? Modules::link('Marche', $record['id_modello'], null, null, 'class="pull-right"') : ''; ?>
82+
{[ "type": "select", "label": "<?php echo tr('Modello'); ?>", "name": "id_modello", "value":"$id_modello$", "ajax-source": "modelli", "select-options": <?php echo json_encode(['id_marca' => $record['id_marca']]); ?>, "icon-after": "add|<?php echo Module::where('name', 'Marche')->first()->id; ?>|id_original=<?php echo $record['id_marca']; ?>" ]}
8283
</div>
8384
</div>
8485
<div class="row">
@@ -186,7 +187,7 @@
186187
</div>
187188
</div>
188189

189-
<div class="row">
190+
<div class="row">
190191
<div class="col-md-12">
191192
<?php echo (!empty($record['id_fornitore'])) ?
192193
Plugins::link('Listino Fornitori', $id_record, null, null, 'class="pull-right" onclick="modificaFornitore('.$id_record.','.$record['id_fornitore'].')"') : ''; ?>
@@ -215,7 +216,7 @@
215216
<div class="clearfix"></div>
216217

217218
<div class="row">
218-
219+
219220
<div class="col-md-6">
220221
{[ "type": "number", "label": "<?php echo tr('Coefficiente di vendita'); ?>", "name": "coefficiente", "value": "$coefficiente$", "help": "<?php echo tr('Imposta un coefficiente per calcolare automaticamente il prezzo di vendita quando cambia il prezzo di acquisto'); ?>." ]}
221222
</div>
@@ -239,7 +240,7 @@
239240
<div class="col-md-6">
240241
{[ "type": "number", "label": "<?php echo tr('Minimo di vendita'); ?>", "name": "minimo_vendita", "value": "<?php echo $prezzi_ivati ? $articolo->minimo_vendita_ivato : $articolo->minimo_vendita; ?>", "icon-after": "<?php echo currency(); ?>", "help": "<?php echo $prezzi_ivati ? tr('Importo IVA inclusa') : ''; ?>" ]}
241242
</div>
242-
243+
243244
<div class="col-md-6">
244245
{[ "type": "select", "label": "<?php echo tr('Iva di vendita'); ?>", "name": "idiva_vendita", "ajax-source": "iva", "value": "$idiva_vendita$", "help": "<?php echo tr('Se non specificata, verrà utilizzata l\'iva di default delle impostazioni'); ?>" ]}
245246
<input type="hidden" name="prezzi_ivati" value="<?php echo $prezzi_ivati; ?>">
@@ -348,9 +349,30 @@
348349
$("#subcategoria").val(null).trigger("change");
349350
});
350351

352+
// Gestione del cambio marca per aggiornare i modelli
353+
$("#id_marca").change(function() {
354+
updateSelectOption("id_marca", $(this).val());
355+
356+
// Reset del modello
357+
$("#id_modello").val(null).trigger("change");
358+
359+
// Aggiornamento dell'icona "aggiungi" per il modello
360+
if($(this).val()) {
361+
var button = $("#id_modello").parent().find(".input-group-append button");
362+
var original = button.attr("onclick");
363+
if(original) {
364+
var newOnclick = original.replace(/id_original=\d+/, "id_original=" + $(this).val());
365+
button.attr("onclick", newOnclick);
366+
button.removeClass("hide");
367+
}
368+
} else {
369+
$("#id_modello").parent().find(".input-group-append button").addClass("hide");
370+
}
371+
});
372+
351373
function scorporaIva() {
352374
if(!percentuale) return;
353-
375+
354376
let input = $("#prezzo_vendita");
355377
let prezzo = input.val().toEnglish();
356378
let scorporato = prezzo * 100 / (100 + percentuale);

modules/articoli/header.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020

2121
include_once __DIR__.'/../../core.php';
22+
use Modules\Articoli\Marca;
2223

2324
$immagine_articolo = $articolo->immagine ? base_path().'/files/articoli/'.$articolo->immagine : App::getPaths()['img'].'/logo_header.png';
2425

@@ -38,11 +39,11 @@
3839
3940
<div class="col-md-9">';
4041
// Articolo
41-
if ($articolo->marchio || $articolo->modello) {
42+
if ($articolo->marca) {
4243
echo '
4344
<p class="float-right"><i class="fa fa-tag"></i>
44-
'.($articolo->marchio ? ($articolo->marchio->link ? '<a href="'.$articolo->marchio->link.'" target="_blank" rel="noopener noreferrer"> '.$articolo->marchio->name.'</a>' : $articolo->marchio->name.' ') : '').
45-
($articolo->modello ? ' <small><i class="fa fa-chevron-right"></i></small> '.$articolo->modello.' ' : '')
45+
'.($articolo->marca ? ($articolo->marca->link ? '<a href="'.$articolo->marca->link.'" target="_blank" rel="noopener noreferrer"> '.$articolo->marca->name.'</a>' : $articolo->marca->name.' ') : '').
46+
($articolo->id_modello ? ' <small><i class="fa fa-chevron-right"></i></small> '.Marca::where('parent', $articolo->id_marca)->where('id', $articolo->id_modello)->first()->name.' ' : '')
4647
.'</p>';
4748
}
4849
if ($articolo->id_categoria) {

modules/articoli/src/Articolo.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,9 +372,9 @@ public function sottocategoria()
372372
return $this->belongsTo(Categoria::class, 'id_sottocategoria');
373373
}
374374

375-
public function marchio()
375+
public function marca()
376376
{
377-
return $this->belongsTo(Marchio::class, 'id_marchio');
377+
return $this->belongsTo(Marca::class, 'id_marca');
378378
}
379379

380380
public function dettaglioFornitori()

modules/articoli/src/Import/CSV.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
use Modules\Anagrafiche\Tipo;
3030
use Modules\Articoli\Articolo;
3131
use Modules\Articoli\Categoria;
32-
use Modules\Articoli\Marchio;
32+
use Modules\Articoli\Marca;
3333
use Modules\Iva\Aliquota;
3434
use Plugins\ListinoClienti\DettaglioPrezzo;
3535
use Plugins\ListinoFornitori\DettaglioFornitore;
@@ -129,11 +129,11 @@ public function getAvailableFields()
129129
],
130130
],
131131
[
132-
'field' => 'marchio',
133-
'label' => 'Marchio',
132+
'field' => 'marca',
133+
'label' => 'marca',
134134
'names' => [
135-
'Marchio',
136-
'marchio',
135+
'marca',
136+
'marca',
137137
'Marca',
138138
'marca',
139139
],
@@ -333,14 +333,14 @@ public function import($record, $update_record = true, $add_record = true)
333333
}
334334
}
335335

336-
// Gestione marchio
337-
$marchio = null;
338-
if (!empty($record['marchio'])) {
339-
$marchio = Marchio::where('name', $record['marchio'])->first();
336+
// Gestione marca
337+
$marca = null;
338+
if (!empty($record['marca'])) {
339+
$marca = Marca::where('name', $record['marca'])->first();
340340

341-
if (empty($marchio)) {
342-
$marchio = Marchio::build($record['marchio']);
343-
$marchio->save();
341+
if (empty($marca)) {
342+
$marca = Marca::build($record['marca']);
343+
$marca->save();
344344
}
345345
}
346346

@@ -462,9 +462,9 @@ public function import($record, $update_record = true, $add_record = true)
462462
'sottocategoria' => $sottocategoria->id ?: $articolo['sottocategoria'],
463463
]);
464464

465-
// Associazione marchio
466-
if (!empty($marchio)) {
467-
$articolo->marchio()->associate($marchio);
465+
// Associazione marca
466+
if (!empty($marca)) {
467+
$articolo->marca()->associate($marca);
468468
}
469469

470470
// Associazione modello
@@ -502,7 +502,7 @@ public function import($record, $update_record = true, $add_record = true)
502502
public static function getExample()
503503
{
504504
return [
505-
['Codice', 'Immagine', 'Import immagine', 'Descrizione', 'Quantità', 'Data inventario', 'Unità misura', 'Prezzo acquisto', 'Prezzo vendita', 'Peso', 'Volume', 'Categoria', 'Sottocategoria', 'Marchio', 'Modello', 'Barcode', 'Fornitore predefinito', 'Partita IVA', 'Codice IVA vendita', 'Ubicazione', 'Note', 'Anagrafica listino', 'Codice fornitore', 'Barcode fornitore', 'Descrizione fornitore', 'Qta minima', 'Qta massima', 'Prezzo listino', 'Sconto listino', 'Cliente/Fornitore listino', 'Sede'],
505+
['Codice', 'Immagine', 'Import immagine', 'Descrizione', 'Quantità', 'Data inventario', 'Unità misura', 'Prezzo acquisto', 'Prezzo vendita', 'Peso', 'Volume', 'Categoria', 'Sottocategoria', 'marca', 'Modello', 'Barcode', 'Fornitore predefinito', 'Partita IVA', 'Codice IVA vendita', 'Ubicazione', 'Note', 'Anagrafica listino', 'Codice fornitore', 'Barcode fornitore', 'Descrizione fornitore', 'Qta minima', 'Qta massima', 'Prezzo listino', 'Sconto listino', 'Cliente/Fornitore listino', 'Sede'],
506506
['OSM-BUDGET', 'https://openstamanager.com/moduli/budget/budget.webp', '2', 'Modulo Budget per OpenSTAManager', '1', '28/11/2023', 'PZ', '90.00', '180.00', '', '', 'Software gestionali', 'Moduli aggiuntivi', 'DevCode', 'Budget', '4006381333931', 'DevCode s.r.l.', '05024030289', '', '', 'Nota ad uso interno', '', 'DEV-BUDGET', '0123456789012', 'Strumento gestionale utilizzato per pianificare e monitorare le entrate e uscite aziendali', '', '', '180', '20', 'Fornitore', 'Sede'],
507507
];
508508
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
use Traits\HierarchyTrait;
2626
use Traits\RecordTrait;
2727

28-
class Marchio extends Model
28+
class Marca extends Model
2929
{
3030
use SimpleModelTrait;
3131
use HierarchyTrait;
3232
use RecordTrait;
3333

34-
protected $table = 'mg_marchi';
34+
protected $table = 'zz_marche';
3535

3636
public static function build($nome = null)
3737
{
@@ -44,11 +44,11 @@ public static function build($nome = null)
4444

4545
public function articoli()
4646
{
47-
return $this->hasMany(Articolo::class, 'id_marchio');
47+
return $this->hasMany(Articolo::class, 'id_marca');
4848
}
4949

5050
public function getModuleAttribute()
5151
{
52-
return 'Marchi';
52+
return 'marche';
5353
}
5454
}

modules/impianti/actions.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@
107107
$idsede = post('idsede');
108108
$id_categoria = post('id_categoria');
109109
$id_sottocategoria = post('id_sottocategoria');
110+
$id_marca = post('id_marca');
111+
$id_modello = post('id_modello');
110112

111113
if (!empty($matricola)) {
112114
$dbo->insert('my_impianti', [
@@ -118,6 +120,8 @@
118120
'idsede' => $idsede ?: 0,
119121
'id_categoria' => $id_categoria ?: null,
120122
'id_sottocategoria' => $id_sottocategoria ?: null,
123+
'id_marca' => $id_marca ?: null,
124+
'id_modello' => $id_modello ?: null,
121125
]);
122126

123127
$id_record = $dbo->lastInsertedID();

modules/impianti/add.php

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
$id_anagrafica = filter('id_anagrafica');
2424
$id_modulo_anagrafiche = Module::where('name', 'Anagrafiche')->first()->id;
2525
$id_modulo_categorie_impianti = Module::where('name', 'Categorie')->first()->id;
26+
$id_modulo_marca_impianti = Module::where('name', 'Marche')->first()->id;
2627
?><form action="" method="post" id="add-form">
2728
<input type="hidden" name="op" value="add">
2829
<input type="hidden" name="backto" value="record-edit">
@@ -51,13 +52,21 @@
5152
</div>
5253

5354
<div class="row">
54-
<div class="col-md-6">
55+
<div class="col-md-3">
5556
{[ "type": "select", "label": "<?php echo tr('Categoria'); ?>", "name": "id_categoria", "required": 0, "ajax-source": "categorie_imp", "icon-after": "add|<?php echo $id_modulo_categorie_impianti; ?>" ]}
5657
</div>
5758

58-
<div class="col-md-6">
59+
<div class="col-md-3">
5960
{[ "type": "select", "label": "<?php echo tr('Sottocategoria'); ?>", "name": "id_sottocategoria", "id": "sottocategoria_add", "ajax-source": "sottocategorie_imp", "select-options": <?php echo json_encode(['id_categoria' => $record['id_categoria']]); ?>,"icon-after": "add|<?php echo $id_modulo_categorie_impianti; ?>||hide" ]}
6061
</div>
62+
63+
<div class="col-md-3">
64+
{[ "type": "select", "label": "<?php echo tr('Marca'); ?>", "name": "id_marca", "id": "id_marca_add", "ajax-source": "marca", "icon-after": "add|<?php echo $id_modulo_marca_impianti; ?>" ]}
65+
</div>
66+
67+
<div class="col-md-3">
68+
{[ "type": "select", "label": "<?php echo tr('Modello'); ?>", "name": "id_modello", "id": "id_modello_add", "ajax-source": "modello", "select-options": <?php echo json_encode(['id_marca' => $record['id_marca']]); ?>, "icon-after": "add|<?php echo $id_modulo_marca_impianti; ?>||hide" ]}
69+
</div>
6170
</div>
6271

6372
<!-- PULSANTI -->
@@ -70,6 +79,7 @@
7079

7180
<script type="text/javascript">
7281
$(document).ready(function () {
82+
// Gestione sottocategorie
7383
var sub = $('#sottocategoria_add');
7484
var original = sub.parent().find(".input-group-append button").attr("onclick");
7585

@@ -88,6 +98,25 @@
8898
}
8999
});
90100

101+
// Gestione modelli
102+
var modello = $('#id_modello_add');
103+
var originalModello = modello.parent().find(".input-group-append button").attr("onclick");
104+
105+
$('#id_marca_add').change(function() {
106+
updateSelectOption("id_marca", $(this).val());
107+
session_set('superselect,id_marca', $(this).val(), 0);
108+
109+
modello.selectReset();
110+
111+
if($(this).val()){
112+
modello.parent().find(".input-group-append button").removeClass("hide");
113+
modello.parent().find(".input-group-append button").attr("onclick", originalModello ? originalModello.replace(/id_original=\d*/, "id_original=" + $(this).val()) : "openModal('<?php echo tr('Aggiungi modello'); ?>', '<?php echo base_path(); ?>/add.php?id_module=<?php echo $id_modulo_marca_impianti; ?>&id_original=" + $(this).val() + "')");
114+
}
115+
else {
116+
modello.parent().find(".input-group-append button").addClass("hide");
117+
}
118+
});
119+
91120
input('idanagrafica').change(function() {
92121
updateSelectOption("idanagrafica", $(this).val());
93122
session_set('superselect,idanagrafica', $(this).val(), 0);

0 commit comments

Comments
 (0)