Skip to content

Commit 0eb5146

Browse files
committed
refactor: ottimizzate query con eloquent
1 parent 8738d1d commit 0eb5146

2 files changed

Lines changed: 71 additions & 29 deletions

File tree

modules/ddt/actions.php

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
use Models\Module;
2424
use Modules\Anagrafiche\Anagrafica;
2525
use Modules\Articoli\Articolo as ArticoloOriginale;
26+
use Modules\Articoli\Barcode;
2627
use Modules\DDT\Components\Articolo;
2728
use Modules\DDT\Components\Descrizione;
2829
use Modules\DDT\Components\Riga;
@@ -548,7 +549,12 @@
548549
$order = explode(',', post('order', true));
549550

550551
foreach ($order as $i => $id_riga) {
551-
$dbo->query('UPDATE `dt_righe_ddt` SET `order` = '.prepare($i + 1).' WHERE id='.prepare($id_riga));
552+
$query = 'UPDATE `dt_righe_ddt` SET `order` = :order_value WHERE id = :id_riga';
553+
$params = [
554+
':order_value' => $i + 1,
555+
':id_riga' => $id_riga,
556+
];
557+
$dbo->query($query, $params);
552558
}
553559

554560
break;
@@ -695,18 +701,23 @@
695701
$save_inline_barcode = true;
696702

697703
if (!empty($barcode)) {
698-
$id_articolo = $dbo->selectOne('mg_articoli_barcode', 'idarticolo', ['barcode' => $barcode])['idarticolo'];
704+
$barcode_articolo = Barcode::where('barcode', $barcode)->first();
705+
$id_articolo = $barcode_articolo ? $barcode_articolo->idarticolo : null;
706+
699707
if (empty($id_articolo)) {
700-
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
708+
$id_articolo = ArticoloOriginale::where('deleted_at', null)
709+
->where('attivo', 1)
710+
->where('barcode', '')
711+
->where('codice', $barcode)
712+
->value('id');
701713
$save_inline_barcode = false;
702714
}
703715
}
704716

705717
if (!empty($id_articolo)) {
706718
$permetti_movimenti_sotto_zero = setting('Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita');
707-
$qta_articolo = $dbo->selectOne('mg_articoli', 'qta', ['id' => $id_articolo])['qta'];
708-
709719
$originale = ArticoloOriginale::find($id_articolo);
720+
$qta_articolo = $originale ? $originale->qta : 0;
710721

711722
if ($qta_articolo <= 0 && !$permetti_movimenti_sotto_zero && !$originale->servizio && $dir == 'entrata') {
712723
$response['error'] = tr('Quantità a magazzino non sufficiente');
@@ -760,9 +771,13 @@
760771

761772
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
762773
$join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti');
763-
$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));
774+
$anagrafica_model = Anagrafica::find($id_anagrafica);
775+
$piano_sconto = $anagrafica_model ? database()->table('mg_piani_sconto')
776+
->select('prc_guadagno')
777+
->where('id', $anagrafica_model->$join)
778+
->first() : null;
764779
if (!empty($piano_sconto)) {
765-
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
780+
$sconto = parseScontoCombinato($piano_sconto->prc_guadagno.'+'.$sconto);
766781
}
767782

768783
$articolo->setPrezzoUnitario($prezzo_unitario, $id_iva);
@@ -875,9 +890,13 @@
875890

876891
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
877892
$join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti');
878-
$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));
893+
$anagrafica_model = Anagrafica::find($id_anagrafica);
894+
$piano_sconto = $anagrafica_model ? database()->table('mg_piani_sconto')
895+
->select('prc_guadagno')
896+
->where('id', $anagrafica_model->$join)
897+
->first() : null;
879898
if (!empty($piano_sconto)) {
880-
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
899+
$sconto = parseScontoCombinato($piano_sconto->prc_guadagno.'+'.$sconto);
881900
}
882901

883902
$riga->setSconto($sconto, 'PRC');

modules/ordini/actions.php

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
use Models\Module;
2525
use Modules\Anagrafiche\Anagrafica;
2626
use Modules\Articoli\Articolo as ArticoloOriginale;
27+
use Modules\Articoli\Barcode;
2728
use Modules\Iva\Aliquota;
2829
use Modules\Ordini\Components\Articolo;
2930
use Modules\Ordini\Components\Descrizione;
@@ -78,10 +79,6 @@
7879
$bollo = 0;
7980
}
8081

81-
// Leggo la descrizione del pagamento
82-
$query = 'SELECT `title` AS descrizione FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `co_pagamenti`.`id`='.prepare($idpagamento);
83-
$rs = $dbo->fetchArray($query);
84-
$pagamento = $rs[0]['descrizione'];
8582

8683
$ordine->nome = post('nome');
8784
$ordine->idanagrafica = post('idanagrafica');
@@ -119,7 +116,14 @@
119116
$ordine->condizioni_fornitura = post('condizioni_fornitura');
120117

121118
// Verifica la presenza di ordini con lo stesso numero
122-
$ordini = $dbo->fetchArray('SELECT * FROM `or_ordini` WHERE `numero_cliente`='.prepare(post('numero_cliente'))."AND `numero_cliente` IS NOT NULL AND `numero_cliente` != '' AND `id`!=".prepare($id_record).' AND `idanagrafica`='.prepare(post('idanagrafica'))." AND DATE_FORMAT(`or_ordini`.`data`, '%Y')=".prepare(Carbon::parse(post('data'))->copy()->format('Y')));
119+
$query = 'SELECT * FROM `or_ordini` WHERE `numero_cliente` = :numero_cliente AND `numero_cliente` IS NOT NULL AND `numero_cliente` != \'\' AND `id` != :id_record AND `idanagrafica` = :idanagrafica AND DATE_FORMAT(`or_ordini`.`data`, \'%Y\') = :anno';
120+
$params = [
121+
':numero_cliente' => post('numero_cliente'),
122+
':id_record' => $id_record,
123+
':idanagrafica' => post('idanagrafica'),
124+
':anno' => Carbon::parse(post('data'))->copy()->format('Y'),
125+
];
126+
$ordini = $dbo->fetchArray($query, $params);
123127

124128
if (!empty($ordini)) {
125129
$documento = '';
@@ -144,18 +148,16 @@
144148
$ordine->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
145149

146150
$ordine->save();
147-
148-
if ($dbo->query($query)) {
149-
$query = 'SELECT `title` FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `or_statiordine`.`id`='.prepare($idstatoordine);
150-
$rs = $dbo->fetchArray($query);
151+
if ($ordine) {
152+
$stato = \Modules\Ordini\Stato::find($idstatoordine);
151153

152154
// Ricalcolo inps, ritenuta e bollo (se l'ordine non è stato evaso)
153155
if ($dir == 'entrata') {
154-
if ($rs[0]['name'] != 'Evaso') {
156+
if ($stato->name != 'Evaso') {
155157
ricalcola_costiagg_ordine($id_record);
156158
}
157159
} else {
158-
if ($rs[0]['name'] != 'Evaso') {
160+
if ($stato->name != 'Evaso') {
159161
ricalcola_costiagg_ordine($id_record, $idrivalsainps, $idritenutaacconto, $bollo);
160162
}
161163
}
@@ -511,7 +513,12 @@
511513
$order = explode(',', post('order', true));
512514

513515
foreach ($order as $i => $id_riga) {
514-
$dbo->query('UPDATE `or_righe_ordini` SET `order` = '.prepare($i + 1).' WHERE id='.prepare($id_riga));
516+
$query = 'UPDATE `or_righe_ordini` SET `order` = :order_value WHERE id = :id_riga';
517+
$params = [
518+
':order_value' => $i + 1,
519+
':id_riga' => $id_riga,
520+
];
521+
$dbo->query($query, $params);
515522
}
516523

517524
break;
@@ -766,16 +773,23 @@
766773
$save_inline_barcode = true;
767774

768775
if (!empty($barcode)) {
769-
$id_articolo = $dbo->selectOne('mg_articoli_barcode', 'idarticolo', ['barcode' => $barcode])['idarticolo'];
776+
$barcode_articolo = Barcode::where('barcode', $barcode)->first();
777+
$id_articolo = $barcode_articolo ? $barcode_articolo->idarticolo : null;
778+
770779
if (empty($id_articolo)) {
771-
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
780+
$id_articolo = ArticoloOriginale::where('deleted_at', null)
781+
->where('attivo', 1)
782+
->where('barcode', '')
783+
->where('codice', $barcode)
784+
->value('id');
772785
$save_inline_barcode = false;
773786
}
774787
}
775788

776789
if (!empty($id_articolo)) {
777790
$permetti_movimenti_sotto_zero = setting('Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita');
778-
$qta_articolo = $dbo->selectOne('mg_articoli', 'qta', ['id' => $id_articolo])['qta'];
791+
$articolo = ArticoloOriginale::find($id_articolo);
792+
$qta_articolo = $articolo ? $articolo->qta : 0;
779793

780794
$originale = ArticoloOriginale::find($id_articolo);
781795

@@ -817,13 +831,18 @@
817831
} else {
818832
$prezzo_unitario = $prezzo_unitario ?: $originale->prezzo_acquisto;
819833
}
820-
$provvigione = $dbo->selectOne('an_anagrafiche', 'provvigione_default', ['idanagrafica' => $ordine->idagente])['provvigione_default'];
834+
$agente = Anagrafica::find($ordine->idagente);
835+
$provvigione = $agente ? $agente->provvigione_default : 0;
821836

822837
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
823838
$join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti');
824-
$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));
839+
$anagrafica_model = Anagrafica::find($id_anagrafica);
840+
$piano_sconto = $anagrafica_model ? database()->table('mg_piani_sconto')
841+
->select('prc_guadagno')
842+
->where('id', $anagrafica_model->$join)
843+
->first() : null;
825844
if (!empty($piano_sconto)) {
826-
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
845+
$sconto = parseScontoCombinato($piano_sconto->prc_guadagno.'+'.$sconto);
827846
}
828847

829848
$articolo->setPrezzoUnitario($prezzo_unitario, $id_iva);
@@ -936,9 +955,13 @@
936955

937956
// Aggiunta sconto combinato se è presente un piano di sconto nell'anagrafica
938957
$join = ($dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti');
939-
$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));
958+
$anagrafica_model = Anagrafica::find($id_anagrafica);
959+
$piano_sconto = $anagrafica_model ? database()->table('mg_piani_sconto')
960+
->select('prc_guadagno')
961+
->where('id', $anagrafica_model->$join)
962+
->first() : null;
940963
if (!empty($piano_sconto)) {
941-
$sconto = parseScontoCombinato($piano_sconto['prc_guadagno'].'+'.$sconto);
964+
$sconto = parseScontoCombinato($piano_sconto->prc_guadagno.'+'.$sconto);
942965
}
943966

944967
$riga->setSconto($sconto, 'PRC');

0 commit comments

Comments
 (0)