|
46 | 46 |
|
47 | 47 | // Controllo se la fattura è già stata inviata allo SDI |
48 | 48 | if ($fattura) { |
49 | | - $stato_fe = $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id); |
| 49 | + $stato_fe = ['codice_stato_fe' => $fattura->codice_stato_fe]; |
50 | 50 | } |
51 | 51 |
|
52 | 52 | $ops = ['update', 'add_intervento', 'manage_documento_fe', 'manage_riga_fe', 'manage_articolo', 'manage_sconto', 'manage_riga', 'manage_descrizione', 'unlink_intervento', 'delete_riga', 'copy_riga', 'add_serial', 'add_articolo', 'edit-price']; |
|
104 | 104 | $tipo = Tipo::find(post('idtipodocumento')); |
105 | 105 | $fattura->tipo()->associate($tipo); |
106 | 106 |
|
107 | | - $data_fattura_precedente = $dbo->fetchOne(' |
108 | | - SELECT |
109 | | - MAX(`data`) AS datamax |
110 | | - FROM |
111 | | - `co_documenti` |
112 | | - INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento` |
113 | | - LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') |
114 | | - INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` |
115 | | - INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_documenti`.`id_segment` |
116 | | - WHERE |
117 | | - `co_statidocumento_lang`.`title` = "Emessa" AND `co_tipidocumento`.`dir` = "entrata" AND `co_documenti`.`id_segment`='.$fattura->id_segment); |
| 107 | + $data_fattura_precedente = Fattura::whereHas('stato', function ($query) { |
| 108 | + $query->where('name', 'Emessa'); |
| 109 | + }) |
| 110 | + ->whereHas('tipo', function ($query) { |
| 111 | + $query->where('dir', 'entrata'); |
| 112 | + }) |
| 113 | + ->where('id_segment', $fattura->id_segment) |
| 114 | + ->max('data'); |
118 | 115 |
|
119 | 116 | if ((setting('Data emissione fattura automatica') == 1) && ($dir == 'entrata') && ($stato->id == Stato::where('name', 'Emessa')->first()->id) && Carbon::parse($data)->lessThan(Carbon::parse($data_fattura_precedente['datamax'])) && (!empty($data_fattura_precedente['datamax']))) { |
120 | 117 | $fattura->data = $data_fattura_precedente['datamax']; |
|
429 | 426 |
|
430 | 427 | if (!empty($id_record) && $id_intervento !== null) { |
431 | 428 | $copia_descrizione = post('copia_descrizione'); |
432 | | - $intervento = $dbo->fetchOne('SELECT descrizione FROM in_interventi WHERE id = '.prepare($id_intervento)); |
433 | | - if (!empty($copia_descrizione) && !empty($intervento['descrizione'])) { |
| 429 | + $intervento = Modules\Interventi\Intervento::find($id_intervento); |
| 430 | + if (!empty($copia_descrizione) && !empty($intervento->descrizione)) { |
434 | 431 | $riga = Descrizione::build($fattura); |
435 | 432 | $riga->descrizione = $intervento['descrizione']; |
436 | 433 | $riga->idintervento = $id_intervento; |
|
861 | 858 | $order = explode(',', post('order', true)); |
862 | 859 |
|
863 | 860 | foreach ($order as $i => $id_riga) { |
864 | | - $dbo->query('UPDATE `co_righe_documenti` SET `order` = '.prepare($i + 1).' WHERE id='.prepare($id_riga)); |
| 861 | + Modules\Fatture\Components\Articolo::where('id', $id_riga)->update(['order' => $i + 1]) |
| 862 | + ?: Modules\Fatture\Components\Riga::where('id', $id_riga)->update(['order' => $i + 1]) |
| 863 | + ?: Modules\Fatture\Components\Descrizione::where('id', $id_riga)->update(['order' => $i + 1]) |
| 864 | + ?: Modules\Fatture\Components\Sconto::where('id', $id_riga)->update(['order' => $i + 1]); |
865 | 865 | } |
866 | 866 |
|
867 | 867 | break; |
|
873 | 873 |
|
874 | 874 | // Metto l'intervento in stato "Fatturato" |
875 | 875 | if (setting('Cambia automaticamente stato attività fatturate')) { |
876 | | - $dbo->query("UPDATE `in_interventi` SET `idstatointervento`=(SELECT `id` FROM `in_statiintervento` WHERE `codice`='FAT') WHERE `id`=".prepare($id_documento)); |
| 876 | + $stato_fatturato = Modules\Interventi\Stato::where('codice', 'FAT')->first()->id; |
| 877 | + Modules\Interventi\Intervento::where('id', $id_documento)->update(['idstatointervento' => $stato_fatturato]); |
877 | 878 | } |
878 | 879 |
|
879 | 880 | // Individuazione del documento originale |
|
1019 | 1020 | $data = post('data'); |
1020 | 1021 |
|
1021 | 1022 | $anagrafica = $fattura->anagrafica; |
1022 | | - $id_tipo = database()->fetchOne('SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` WHERE `name` = "Nota di credito" AND `dir` = "entrata"')['id']; |
1023 | | - $tipo = Tipo::find($id_tipo); |
| 1023 | + $tipo = Tipo::where('name', 'Nota di credito')->where('dir', 'entrata')->first(); |
1024 | 1024 | $nota = Fattura::build($anagrafica, $tipo, $data, $id_segment); |
1025 | 1025 | $nota->ref_documento = $fattura->id; |
1026 | 1026 | $nota->idconto = $fattura->idconto; |
|
1174 | 1174 | case 'controlla_serial': |
1175 | 1175 | if (post('is_rientrabile')) { |
1176 | 1176 | // Controllo che i serial entrati e usciti siano uguali in modo da poterli registrare nuovamente. |
1177 | | - $serial_uscita = $dbo->fetchOne('SELECT COUNT(id) AS `tot` FROM mg_prodotti WHERE serial='.prepare(post('serial')).' AND dir="uscita" AND id_articolo='.prepare(post('id_articolo')))['tot']; |
1178 | | - $serial_entrata = $dbo->fetchOne('SELECT COUNT(id) AS `tot` FROM mg_prodotti WHERE serial='.prepare(post('serial')).' AND dir="entrata" AND id_articolo='.prepare(post('id_articolo')))['tot']; |
| 1177 | + $serial_uscita = $dbo->table('mg_prodotti') |
| 1178 | + ->where('serial', post('serial')) |
| 1179 | + ->where('dir', 'uscita') |
| 1180 | + ->where('id_articolo', post('id_articolo')) |
| 1181 | + ->count(); |
| 1182 | + $serial_entrata = $dbo->table('mg_prodotti') |
| 1183 | + ->where('serial', post('serial')) |
| 1184 | + ->where('dir', 'entrata') |
| 1185 | + ->where('id_articolo', post('id_articolo')) |
| 1186 | + ->count(); |
1179 | 1187 | $has_serial = $serial_entrata != $serial_uscita; |
1180 | 1188 | } else { |
1181 | | - $has_serial = $dbo->fetchOne('SELECT id FROM mg_prodotti WHERE serial='.prepare(post('serial')).' AND dir="uscita" AND id_articolo='.prepare(post('id_articolo')).' AND (id_riga_documento IS NOT NULL OR id_riga_ordine IS NOT NULL OR id_riga_ddt IS NOT NULL)')['id']; |
| 1189 | + $has_serial = $dbo->table('mg_prodotti') |
| 1190 | + ->where('serial', post('serial')) |
| 1191 | + ->where('dir', 'uscita') |
| 1192 | + ->where('id_articolo', post('id_articolo')) |
| 1193 | + ->where(function ($query) { |
| 1194 | + $query->whereNotNull('id_riga_documento') |
| 1195 | + ->orWhereNotNull('id_riga_ordine') |
| 1196 | + ->orWhereNotNull('id_riga_ddt'); |
| 1197 | + }) |
| 1198 | + ->value('id'); |
1182 | 1199 | } |
1183 | 1200 |
|
1184 | 1201 | echo json_encode($has_serial); |
|
1191 | 1208 | $save_inline_barcode = true; |
1192 | 1209 |
|
1193 | 1210 | if (!empty($barcode)) { |
1194 | | - $id_articolo = $dbo->selectOne('mg_articoli_barcode', 'idarticolo', ['barcode' => $barcode])['idarticolo']; |
| 1211 | + $id_articolo = $dbo->table('mg_articoli_barcode')->where('barcode', $barcode)->value('idarticolo'); |
1195 | 1212 | if (empty($id_articolo)) { |
1196 | | - $id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id']; |
| 1213 | + $id_articolo = $dbo->table('mg_articoli') |
| 1214 | + ->where('deleted_at', null) |
| 1215 | + ->where('attivo', 1) |
| 1216 | + ->where('barcode', '') |
| 1217 | + ->where('codice', $barcode) |
| 1218 | + ->value('id'); |
1197 | 1219 | $save_inline_barcode = false; |
1198 | 1220 | } |
1199 | 1221 | } |
1200 | 1222 |
|
1201 | 1223 | if (!empty($id_articolo)) { |
1202 | 1224 | $permetti_movimenti_sotto_zero = setting('Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita'); |
1203 | | - $qta_articolo = $dbo->selectOne('mg_articoli', 'qta', ['id' => $id_articolo])['qta']; |
| 1225 | + $qta_articolo = $dbo->table('mg_articoli')->where('id', $id_articolo)->value('qta'); |
1204 | 1226 |
|
1205 | 1227 | $originale = ArticoloOriginale::find($id_articolo); |
1206 | 1228 |
|
|
1256 | 1278 |
|
1257 | 1279 | // Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica |
1258 | 1280 | $join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti'); |
1259 | | - $piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.'.$join.'=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica)); |
| 1281 | + $piano_sconto = Modules\Anagrafiche\Anagrafica::find($id_anagrafica)->pianoSconto($dir); |
1260 | 1282 | if (!empty($piano_sconto)) { |
1261 | | - $sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto); |
| 1283 | + $sconto = parseScontoCombinato($piano_sconto->prc_guadagno.'+'.$sconto); |
1262 | 1284 | } |
1263 | 1285 |
|
1264 | | - $provvigione = $dbo->selectOne('an_anagrafiche', 'provvigione_default', ['idanagrafica' => $fattura->idagente])['provvigione_default']; |
| 1286 | + $provvigione = Modules\Anagrafiche\Anagrafica::find($fattura->idagente)->provvigione_default; |
1265 | 1287 |
|
1266 | 1288 | $articolo->id_rivalsa_inps = setting('Cassa previdenziale predefinita') ?: null; |
1267 | 1289 | $articolo->id_ritenuta_acconto = setting('Ritenuta d\'acconto predefinita') ?: null; |
|
1386 | 1408 |
|
1387 | 1409 | // Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica |
1388 | 1410 | $join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti'); |
1389 | | - $piano_sconto = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.'.$join.'=mg_piani_sconto.id WHERE idanagrafica='.prepare($id_anagrafica)); |
| 1411 | + $piano_sconto = Modules\Anagrafiche\Anagrafica::find($id_anagrafica)->pianoSconto($dir); |
1390 | 1412 | if (!empty($piano_sconto)) { |
1391 | | - $sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto); |
| 1413 | + $sconto = parseScontoCombinato($piano_sconto->prc_guadagno.'+'.$sconto); |
1392 | 1414 | } |
1393 | 1415 |
|
1394 | 1416 | $riga->setSconto($sconto, 'PRC'); |
|
1517 | 1539 |
|
1518 | 1540 | // Nota di debito |
1519 | 1541 | if (get('op') == 'nota_addebito') { |
1520 | | - $rs_segment = $dbo->fetchArray('SELECT `zz_segments`.* FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).") WHERE `predefined_addebito`='1'"); |
| 1542 | + $rs_segment = Models\Segment::whereHas('translations', function ($query) { |
| 1543 | + $query->where('id_lang', Models\Locale::getDefault()->id); |
| 1544 | + })->where('predefined_addebito', '1')->first(); |
1521 | 1545 | if (!empty($rs_segment)) { |
1522 | | - $id_segment = $rs_segment[0]['id']; |
| 1546 | + $id_segment = $rs_segment->id; |
1523 | 1547 | } else { |
1524 | 1548 | $id_segment = $record['id_segment']; |
1525 | 1549 | } |
|
0 commit comments