Skip to content

Commit b1636ce

Browse files
committed
fix: gestione seriali in note di credito collegate a fatture
1 parent 4bfb84f commit b1636ce

1 file changed

Lines changed: 39 additions & 1 deletion

File tree

modules/fatture/add_serial.php

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
use Models\Module;
2424
use Modules\DDT\DDT;
25+
use Modules\Fatture\Fattura;
2526

2627
$module = Module::find($id_module);
2728
$id_module_articoli = Module::where('name', 'Articoli')->first()->id;
@@ -39,6 +40,13 @@
3940
$dir = 'entrata';
4041
}
4142

43+
// Controllo se il documento è una nota di credito/debito (per gestione inversa seriali)
44+
$is_nota = false;
45+
if (in_array($module->name, ['Fatture di vendita', 'Fatture di acquisto'])) {
46+
$fattura_corrente = Fattura::find($id_record);
47+
$is_nota = $fattura_corrente ? $fattura_corrente->isNota() : false;
48+
}
49+
4250
$data = [
4351
'fat' => [
4452
'table' => 'co_righe_documenti',
@@ -111,12 +119,42 @@
111119
$serials = $info ? array_column($info, 'serial') : [];
112120

113121
if ($dir == 'entrata') {
114-
echo '
122+
// Per le note di credito di vendita, mostra i seriali dalla fattura originale
123+
if ($is_nota && !empty($fattura_corrente->ref_documento)) {
124+
// Recupera la riga originale collegata a questa riga della nota di credito
125+
$riga_corrente = $dbo->fetchOne('SELECT ref_riga_documento FROM co_righe_documenti WHERE id = '.prepare($idriga));
126+
$id_riga_originale = $riga_corrente['ref_riga_documento'];
127+
128+
// Recupera i seriali dalla riga della fattura originale
129+
$serials_originali = [];
130+
if (!empty($id_riga_originale)) {
131+
$serials_originali = $dbo->fetchArray('SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND id_riga_documento = '.prepare($id_riga_originale));
132+
$serials_originali = array_column($serials_originali, 'serial');
133+
}
134+
135+
// Costruisci le opzioni per il select
136+
$options = [];
137+
foreach ($serials_originali as $serial) {
138+
$options[] = [
139+
'id' => $serial,
140+
'text' => $serial,
141+
];
142+
}
143+
144+
echo '
145+
<div class="row">
146+
<div class="col-md-12">
147+
{[ "type": "select", "label": "'.tr('Serial').'", "name": "serial[]", "multiple": 1, "value": "'.implode(',', $serials).'", "values": '.json_encode($options).', "extra": "data-maximum=\"'.intval($rs[0]['qta']).'\"" ]}
148+
</div>
149+
</div>';
150+
} else {
151+
echo '
115152
<div class="row">
116153
<div class="col-md-12">
117154
{[ "type": "select", "label": "'.tr('Serial').'", "name": "serial[]", "multiple": 1, "value": "'.implode(',', $serials).'", "ajax-source": "serial-articolo", "select-options": '.json_encode(['idarticolo' => $rs[0]['idarticolo']]).', "extra": "data-maximum=\"'.intval($rs[0]['qta']).'\"" ]}
118155
</div>
119156
</div>';
157+
}
120158
} else {
121159
echo '
122160
<div class="row">

0 commit comments

Comments
 (0)