|
22 | 22 |
|
23 | 23 | use Models\Module; |
24 | 24 | use Modules\DDT\DDT; |
| 25 | +use Modules\Fatture\Fattura; |
25 | 26 |
|
26 | 27 | $module = Module::find($id_module); |
27 | 28 | $id_module_articoli = Module::where('name', 'Articoli')->first()->id; |
|
39 | 40 | $dir = 'entrata'; |
40 | 41 | } |
41 | 42 |
|
| 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 | + |
42 | 50 | $data = [ |
43 | 51 | 'fat' => [ |
44 | 52 | 'table' => 'co_righe_documenti', |
|
111 | 119 | $serials = $info ? array_column($info, 'serial') : []; |
112 | 120 |
|
113 | 121 | 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 ' |
115 | 152 | <div class="row"> |
116 | 153 | <div class="col-md-12"> |
117 | 154 | {[ "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']).'\"" ]} |
118 | 155 | </div> |
119 | 156 | </div>'; |
| 157 | + } |
120 | 158 | } else { |
121 | 159 | echo ' |
122 | 160 | <div class="row"> |
|
0 commit comments