diff --git a/include/common/importa.php b/include/common/importa.php
index 19ee94aed..470b0ca76 100755
--- a/include/common/importa.php
+++ b/include/common/importa.php
@@ -19,6 +19,7 @@
use Modules\Contratti\Stato as StatoContratto;
use Modules\Fatture\Stato as StatoFattura;
+use Modules\Ordini\Stato as StatoOrdine;
use Modules\DDT\Stato;
use Plugins\ListinoFornitori\DettaglioFornitore;
@@ -153,11 +154,11 @@ if (!empty($options['create_document'])) {
// Opzioni aggiuntive per gli Ordini
elseif (in_array($final_module['name'], ['Ordini cliente', 'Ordini fornitore'])) {
- $stato_predefinito = $database->fetchOne("SELECT * FROM or_statiordine WHERE descrizione = 'Bozza'");
+ $stato_predefinito = (new StatoOrdine())->getByName('Bozza')->id_record;
echo '
- {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM or_statiordine WHERE descrizione IN(\'Bozza\', \'Accettato\', \'In attesa di conferma\', \'Annullato\')", "value": "'.$stato_predefinito['id'].'" ]}
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id` = `or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name` IN(\'Bozza\', \'Accettato\', \'In attesa di conferma\', \'Annullato\')", "value": "'.$stato_predefinito['id'].'" ]}
';
}
diff --git a/include/riferimenti/riferimenti.php b/include/riferimenti/riferimenti.php
index bf411da49..53adad5a7 100644
--- a/include/riferimenti/riferimenti.php
+++ b/include/riferimenti/riferimenti.php
@@ -21,6 +21,8 @@ include_once __DIR__.'/../../core.php';
use Modules\DDT\DDT;
use Modules\Ordini\Ordine;
+use Modules\DDT\Stato as StatoDDT;
+use Modules\Ordini\Stato as StatoOrdine;
// Informazioni generali sulla riga
$source_type = filter('riga_type');
@@ -52,7 +54,8 @@ $direzione_richiesta = $source->getDocument()->direzione == 'entrata' ? 'uscita'
// Individuazione DDT disponibili
$ddt = DDT::whereHas('stato', function ($query) {
- $query->where('descrizione', '!=', 'Bozza');
+ $id_stato = (new StatoDDT())->getByName('Bozza')->id_record;
+ $query->where('id', '!=', $id_stato);
})->whereHas('tipo', function ($query) use ($direzione_richiesta) {
$query->where('dir', '=', $direzione_richiesta);
})->get();
@@ -67,7 +70,8 @@ foreach ($ddt as $elemento) {
// Individuazione ordini disponibili
$tipo_ordini = $direzione_richiesta == 'entrata' ? 'cliente' : 'fornitore';
$ordini = Ordine::whereHas('stato', function ($query) {
- $query->where('descrizione', '!=', 'Bozza');
+ $id_stato = (new StatoOrdine())->getByName('Bozza')->id_record;
+ $query->where('id', '!=', $id_stato);
})->whereHas('tipo', function ($query) use ($direzione_richiesta) {
$query->where('dir', '=', $direzione_richiesta);
})->get();
diff --git a/modules/anagrafiche/src/API/v1/Anagrafiche.php b/modules/anagrafiche/src/API/v1/Anagrafiche.php
index d60b77194..26efc7d94 100755
--- a/modules/anagrafiche/src/API/v1/Anagrafiche.php
+++ b/modules/anagrafiche/src/API/v1/Anagrafiche.php
@@ -63,10 +63,8 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface
];
$joins[] = [
- '`an_tipianagrafiche_lang`',
- '`an_tipianagrafiche_lang`.`id_record`',
- '`an_tipianagrafiche`.`id`',
- ];
+ 'an_tipianagrafiche_lang' => '`an_tipianagrafiche_lang`.`idrecord` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`idlang` = '.setting('Lingua'),
+ ];
$where[] = ['`an_tipianagrafiche_lang`.`name`', '=', $type];
}
diff --git a/modules/articoli/plugins/articoli.giacenze.php b/modules/articoli/plugins/articoli.giacenze.php
index adde4a0a7..aa70ae77d 100755
--- a/modules/articoli/plugins/articoli.giacenze.php
+++ b/modules/articoli/plugins/articoli.giacenze.php
@@ -23,23 +23,28 @@ $impegnato = 0;
$ordinato = 0;
$query = 'SELECT
- or_ordini.id AS id,
- or_ordini.numero,
- or_ordini.numero_esterno,
- data,
- SUM(or_righe_ordini.qta) AS qta_ordinata,
- SUM(or_righe_ordini.qta - or_righe_ordini.qta_evasa) AS qta_impegnata,
- or_righe_ordini.um
-FROM or_ordini
- INNER JOIN or_righe_ordini ON or_ordini.id = or_righe_ordini.idordine
- INNER JOIN or_statiordine ON or_ordini.idstatoordine=or_statiordine.id
-WHERE idarticolo = '.prepare($articolo->id)."
- AND (SELECT dir FROM or_tipiordine WHERE or_tipiordine.id=or_ordini.idtipoordine) = '|dir|'
- AND (or_righe_ordini.qta - or_righe_ordini.qta_evasa) > 0
- AND or_righe_ordini.confermato = 1
- AND or_statiordine.impegnato = 1
-GROUP BY or_ordini.id
-HAVING qta_ordinata > 0";
+ `or_ordini`.`id` AS id,
+ `or_ordini`.`numero`,
+ `or_ordini`.`numero_esterno`,
+ `data`,
+ SUM(`or_righe_ordini`.`qta`) AS qta_ordinata,
+ SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_impegnata,
+ `or_righe_ordini`.`um`
+ FROM
+ `or_ordini`
+ INNER JOIN `or_righe_ordini` ON `or_ordini`.`id` = `or_righe_ordini`.`idordine`
+ INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id`
+ INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipiordine`=`or_tipiordine`.`id`
+ WHERE
+ `idarticolo` = '.prepare($articolo->id)."
+ AND `or_tipiordine`.`dir`= '|dir|'
+ AND (`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) > 0
+ AND `or_righe_ordini`.`confermato` = 1
+ AND `or_statiordine`.`impegnato` = 1
+ GROUP BY
+ `or_ordini`.`id`
+ HAVING
+ `qta_ordinata` > 0";
echo '
diff --git a/modules/articoli/src/API/v1/Articoli.php b/modules/articoli/src/API/v1/Articoli.php
index f1f009b89..e6477a766 100755
--- a/modules/articoli/src/API/v1/Articoli.php
+++ b/modules/articoli/src/API/v1/Articoli.php
@@ -50,10 +50,8 @@ class Articoli extends Resource implements RetrieveInterface, UpdateInterface, C
];
$joins[] = [
- 'mg_categorie_lang AS categorie_lang',
- 'mg_categorie.id',
- 'categorie_lang.id_record',
- ];
+ 'mg_categorie_lang AS categorie_lang' => 'mg_categorie_lang.id_record = categorie.id AND mg_categorie_lang.id_lang = '.setting('Lingua'),
+ ];
$joins[] = [
'mg_categorie AS sottocategorie',
@@ -62,9 +60,7 @@ class Articoli extends Resource implements RetrieveInterface, UpdateInterface, C
];
$joins[] = [
- 'mg_categorie_lang AS sottocategorie_lang',
- 'mg_categorie.id',
- 'sottocategorie_lang.id_record',
+ 'mg_categorie_lang AS sottocategorie_lang' => 'mg_categorie_lang.id_record = sottocategorie.id AND mg_categorie_lang.id_lang = '.setting('Lingua'),
];
$where[] = ['mg_articoli.deleted_at', '=', null];
diff --git a/modules/contratti/bulk.php b/modules/contratti/bulk.php
index 2425dbb82..15f92e824 100755
--- a/modules/contratti/bulk.php
+++ b/modules/contratti/bulk.php
@@ -165,7 +165,7 @@ switch (post('op')) {
$new_contratto->data_conclusione = $new_contratto->data_accettazione->copy()->add($diff);
$new_contratto->data_bozza = Carbon::now();
- $stato = StatoContratto::where('descrizione', '=', 'Bozza')->first();
+ $stato = (new StatoContratto())->getByName('Bozza')->id_record;
$new_contratto->stato()->associate($stato);
$new_contratto->save();
diff --git a/modules/contratti/plugins/contratti.consuntivo.php b/modules/contratti/plugins/contratti.consuntivo.php
index b13969a85..51737ce83 100755
--- a/modules/contratti/plugins/contratti.consuntivo.php
+++ b/modules/contratti/plugins/contratti.consuntivo.php
@@ -127,10 +127,10 @@ if (!empty($interventi)) {
$tecnici[$sessione->anagrafica->ragione_sociale]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata;
// Raggruppamento per stato intervento
- $stati_intervento[$intervento->stato->descrizione]['colore'] = $intervento->stato->colore;
- $stati_intervento[$intervento->stato->descrizione]['ore'] += $sessione->ore;
- $stati_intervento[$intervento->stato->descrizione]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
- $stati_intervento[$intervento->stato->descrizione]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata;
+ $stati_intervento[$intervento->stato->name]['colore'] = $intervento->stato->colore;
+ $stati_intervento[$intervento->stato->name]['ore'] += $sessione->ore;
+ $stati_intervento[$intervento->stato->name]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $stati_intervento[$intervento->stato->name]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata;
}
echo '
diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php
index 1819fd349..e2e743bed 100755
--- a/modules/ddt/actions.php
+++ b/modules/ddt/actions.php
@@ -22,6 +22,7 @@ include_once __DIR__.'/../../core.php';
use Models\Module;
use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo as ArticoloOriginale;
+use Modules\Ordini\Stato as StatoOrdine;
use Modules\DDT\Components\Articolo;
use Modules\DDT\Components\Descrizione;
use Modules\DDT\Components\Riga;
@@ -472,7 +473,7 @@ switch (filter('op')) {
*/
case 'completa_trasporto':
$tipo = Tipo::where('dir', '!=', $ddt->direzione)->first();
- $stato = Stato::where('descrizione', '=', 'Evaso')->first();
+ $stato = (new Stato())->getByName('Evaso')->id_record;
// Duplicazione DDT
$id_segment = post('id_segment');
@@ -732,9 +733,10 @@ switch (filter('op')) {
// Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase
if (!empty($id_record) && setting('Cambia automaticamente stato ordini fatturati')) {
- $rs = $dbo->fetchArray('SELECT idordine FROM dt_righe_ddt WHERE idddt='.prepare($id_record).' AND idordine!=0');
+ $rs = $dbo->fetchArray('SELECT `idordine` FROM `dt_righe_ddt` WHERE `idddt`='.prepare($id_record).' AND `idordine`!=0');
for ($i = 0; $i < sizeof($rs); ++$i) {
- $dbo->query('UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[$i]['idordine']).'") WHERE id = '.prepare($rs[$i]['idordine']));
+ $stato = (new StatoOrdine())->getByName(get_stato_ordine($rs[$i]['idordine']))->id_record;
+ $dbo->query('UPDATE `or_ordini` SET `idstatoordine`='.prepare($stato).'") WHERE `id` = '.prepare($rs[$i]['idordine']));
}
}
diff --git a/modules/ddt/add_ordine.php b/modules/ddt/add_ordine.php
index 929189cca..32ff04b04 100755
--- a/modules/ddt/add_ordine.php
+++ b/modules/ddt/add_ordine.php
@@ -49,7 +49,7 @@ $id_anagrafica = $documento_finale->idanagrafica;
echo '
- {[ "type": "select", "label": "'.tr('Ordine').'", "name": "id_documento", "values": "query=SELECT or_ordini.id, CONCAT(IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione FROM or_ordini WHERE idanagrafica='.prepare($id_anagrafica).' AND idstatoordine IN (SELECT id FROM or_statiordine WHERE descrizione IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoordine=(SELECT id FROM or_tipiordine WHERE dir='.prepare($dir).' LIMIT 0,1) AND or_ordini.id IN (SELECT idordine FROM or_righe_ordini WHERE or_righe_ordini.idordine = or_ordini.id AND (qta - qta_evasa) > 0) ORDER BY data DESC, numero DESC" ]}
+ {[ "type": "select", "label": "'.tr('Ordine').'", "name": "id_documento", "values": "query=SELECT `or_ordini`.`id`, CONCAT(IF(`numero_esterno` != \'\', `numero_esterno`, `numero`), \' del \', DATE_FORMAT(`data`, \'%d-%m-%Y\')) AS descrizione FROM `or_ordini` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id` INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine`=`or_tipiordine`.`id` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id`=`or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `or_righe_ordini` ON `or_ordini`.`id` = `or_righe_ordini`.`idordine` WHERE `idanagrafica`='.prepare($id_anagrafica).' AND `or_statiordine_lang`.`name` IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\') AND `dir`='.prepare($dir).' AND (`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) > 0 ORDER BY `data` DESC, `numero` DESC" ]}
diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php
index 6893fdebf..62129b14e 100755
--- a/modules/ddt/edit.php
+++ b/modules/ddt/edit.php
@@ -530,7 +530,20 @@ if ($dir == 'entrata') {
if (!$block_edit) {
// Lettura ordini (cliente o fornitore)
- $ordini_query = 'SELECT COUNT(*) AS tot FROM or_ordini WHERE idanagrafica='.prepare($record['idanagrafica']).' AND idstatoordine IN (SELECT id FROM or_statiordine WHERE descrizione IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoordine=(SELECT id FROM or_tipiordine WHERE dir='.prepare($dir).') AND or_ordini.id IN (SELECT idordine FROM or_righe_ordini WHERE or_righe_ordini.idordine = or_ordini.id AND (qta - qta_evasa) > 0)';
+ $ordini_query = 'SELECT
+ COUNT(*) AS tot
+ FROM
+ `or_ordini`
+ INNER JOIN `or_righe_ordini` ON `or_ordini`.`id` = `or_righe_ordini`.`idordine`
+ INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id`
+ INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipiordine`=`or_tipiordine`.`id`
+ LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id` = `or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang` = "'.prepare(setting('Lingua')).'")
+ WHERE
+ `idanagrafica`='.prepare($record['idanagrafica']).'
+ AND `or_statiordine_lang`.`name` IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\'))
+ AND `dir`='.prepare($dir).')
+ AND (`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) > 0)
+ GROUP BY `or_ordini`.`id`';
$tot_ordini = $dbo->fetchArray($ordini_query)[0]['tot'];
$ddt_query = 'SELECT
@@ -544,7 +557,8 @@ if (!$block_edit) {
WHERE
`name` IN("Evaso", "Parzialmente evaso", "Parzialmente fatturato") AND
`dt_tipiddt`.`dir`="'.($dir == 'entrata' ? 'uscita' : 'entrata').'") AND
- (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0';
+ (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0
+ GROUP BY `dt_ddt`.`id`';
$tot_ddt = $dbo->fetchArray($ddt_query)[0]['tot'];
// Form di inserimento riga documento
diff --git a/modules/ddt/src/DDT.php b/modules/ddt/src/DDT.php
index 8de3ee0d4..404c026df 100755
--- a/modules/ddt/src/DDT.php
+++ b/modules/ddt/src/DDT.php
@@ -134,7 +134,7 @@ class DDT extends Document
$causale = $database->fetchOne('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(setting('Lingua')).') WHERE `dt_causalet`.`id` = '.prepare($this->idcausalet));
- return $causale['is_importabile'] && in_array($this->stato->descrizione, $stati_importabili);
+ return $causale['is_importabile'] && in_array($this->stato->name, $stati_importabili);
}
public function getReversedAttribute()
@@ -242,7 +242,7 @@ class DDT extends Document
$descrizione = $parziale_fatturato ? 'Parzialmente fatturato' : 'Fatturato';
}
- $stato = Stato::where('descrizione', $descrizione)->first();
+ $stato = (new Stato())->getByName($descrizione)->id_record;
$this->stato()->associate($stato);
$this->save();
}
diff --git a/modules/fatture/add_ordine.php b/modules/fatture/add_ordine.php
index 90b047e69..21aa320c1 100755
--- a/modules/fatture/add_ordine.php
+++ b/modules/fatture/add_ordine.php
@@ -50,7 +50,7 @@ $id_anagrafica = $documento_finale->idanagrafica;
echo '
- {[ "type": "select", "label": "'.tr('Ordine').'", "name": "id_documento", "values": "query=SELECT or_ordini.id, CONCAT(IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\'), \' [\', (SELECT descrizione FROM or_statiordine WHERE id = idstatoordine) , \']\') AS descrizione FROM or_ordini WHERE idanagrafica='.prepare($id_anagrafica).' AND idstatoordine IN (SELECT id FROM or_statiordine WHERE descrizione IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoordine=(SELECT id FROM or_tipiordine WHERE dir='.prepare($dir).' LIMIT 0,1) AND or_ordini.id IN (SELECT idordine FROM or_righe_ordini WHERE or_righe_ordini.idordine = or_ordini.id AND (qta - qta_evasa) > 0) ORDER BY data DESC, numero DESC" ]}
+ {[ "type": "select", "label": "'.tr('Ordine').'", "name": "id_documento", "values": "query=SELECT `or_ordini`.`id`, CONCAT(IF(`numero_esterno` != \'\', `numero_esterno`, `numero`), \' del \', DATE_FORMAT(`data`, \'%d-%m-%Y\'), \' [\', `or_statiordine_lang`.`name` , \']\') AS descrizione FROM `or_ordini` INNER JOIN `or_statiordine` ON `or_ordini.idstatoordine`=`or_statiordine.id` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine.id`=`or_statiordine_lang.id_record` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine`=`or_tipiordine`.`id` INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` WHERE `idanagrafica`='.prepare($id_anagrafica).' AND `name` IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND `dir`='.prepare($dir).' AND (`or_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) > 0 GROUP BY `or_ordini`.`id` ORDER BY `data` DESC, `numero` DESC" ]}
diff --git a/modules/fatture/ajax/select.php b/modules/fatture/ajax/select.php
index 15a53d95b..b33b5cef3 100644
--- a/modules/fatture/ajax/select.php
+++ b/modules/fatture/ajax/select.php
@@ -24,46 +24,52 @@ switch ($resource) {
$where = implode(' OR ', $search_fields);
$where = $where ? '('.$where.')' : '1=1';
- $query_ordini = "SELECT or_ordini.id,
- CONCAT('Ordine num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM or_statiordine WHERE id = idstatoordine) , ']') AS text,
- 'Ordini' AS optgroup,
- 'ordine' AS tipo,
- 'uscita' AS dir
- FROM or_ordini
- INNER JOIN or_righe_ordini ON or_righe_ordini.idordine = or_ordini.id
- WHERE idanagrafica = ".prepare($id_anagrafica)." AND
- idstatoordine IN (
- SELECT id FROM or_statiordine WHERE descrizione != 'Fatturato'
- ) AND
- idtipoordine IN (
- SELECT id FROM or_tipiordine WHERE dir = ".prepare($direzione).'
- ) AND |where|
- GROUP BY or_ordini.id
- HAVING SUM(or_righe_ordini.qta - or_righe_ordini.qta_evasa) > 0
- ORDER BY data DESC, numero DESC';
+ $query_ordini = "SELECT
+ `or_ordini`.`id`,
+ CONCAT('Ordine num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `or_statiordine_lang`.`name` , ']') AS text,
+ 'Ordini' AS optgroup,
+ 'ordine' AS tipo,
+ 'uscita' AS dir
+ FROM
+ `or_ordini`
+ INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id`
+ INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id`
+ LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id` = `or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang` = ".prepare(setting('Lingua')).")
+ INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`
+ WHERE
+ `idanagrafica` = ".prepare($id_anagrafica)."
+ AND `name` != 'Fatturato'
+ AND `dir` = ".prepare($direzione)."
+ AND |where|
+ GROUP BY
+ `or_ordini`.`id`
+ HAVING
+ SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) > 0
+ ORDER BY
+ `data` DESC, `numero` DESC";
$query_ddt = "SELECT
- `dt_ddt`.`id`,
- CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`name`, ']') AS text,
- 'DDT' AS optgroup,
- 'ddt' AS tipo,
- 'uscita' AS dir
- FROM `dt_ddt`
- INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
- INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstato` = `dt_statiddt`.`id`
- INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`
- LEFT JOIN dt_statiddt_lang ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(setting('Lingua')).")
- WHERE
- `idanagrafica` = ".prepare($id_anagrafica)." AND
- `dt_statiddt_lang`.`name` != 'Fatturato' AND
- `dt_tipiddt`.`dir`=".prepare($direzione).'AND
- |where|
- GROUP BY
- `dt_ddt`.`id`
- HAVING
- SUM(`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0
- ORDER BY
- `data` DESC, `numero` DESC';
+ `dt_ddt`.`id`,
+ CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`name`, ']') AS text,
+ 'DDT' AS optgroup,
+ 'ddt' AS tipo,
+ 'uscita' AS dir
+ FROM `dt_ddt`
+ INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
+ INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstato` = `dt_statiddt`.`id`
+ INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`
+ LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(setting('Lingua')).")
+ WHERE
+ `idanagrafica` = ".prepare($id_anagrafica)." AND
+ `dt_statiddt_lang`.`name` != 'Fatturato' AND
+ `dt_tipiddt`.`dir`=".prepare($direzione).'AND
+ |where|
+ GROUP BY
+ `dt_ddt`.`id`
+ HAVING
+ SUM(`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0
+ ORDER BY
+ `data` DESC, `numero` DESC';
// Sostituzione per la ricerca
$query_ordini = replace($query_ordini, [
@@ -97,45 +103,50 @@ switch ($resource) {
$where = implode(' OR ', $search_fields);
$where = $where ? '('.$where.')' : '1=1';
- $query_ordini = "SELECT or_ordini.id,
- CONCAT('Ordine num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM or_statiordine WHERE id = idstatoordine) , ']') AS text,
- 'Ordini' AS optgroup,
- 'ordine' AS tipo,
- 'entrata' AS dir
- FROM or_ordini
- INNER JOIN or_righe_ordini ON or_righe_ordini.idordine = or_ordini.id
- WHERE idarticolo = ".prepare($id_articolo)." AND
- idstatoordine IN (
- SELECT id FROM or_statiordine WHERE descrizione != 'Fatturato'
- ) AND
- idtipoordine IN (
- SELECT id FROM or_tipiordine WHERE dir = ".prepare($direzione).'
- ) AND |where|
- GROUP BY or_ordini.id
- ORDER BY data DESC, numero DESC';
+ $query_ordini = "SELECT
+ `or_ordini`.`id`,
+ CONCAT('Ordine num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', `or_statiordine_lang`.`name`, ']') AS text,
+ 'Ordini' AS optgroup,
+ 'ordine' AS tipo,
+ 'entrata' AS dir
+ FROM `or_ordini`
+ INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id`
+ INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id`
+ LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = ".prepare(setting('Lingua')).")
+ INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipiordine` = `or_tipiordine`.`id`
+ WHERE
+ `idarticolo` = ".prepare($id_articolo)."
+ AND `name` != 'Fatturato'
+ AND `dir` = ".prepare($direzione).'
+ AND |where|
+ GROUP BY
+ `or_ordini`.`id`
+ ORDER BY
+ `data` DESC, `numero` DESC';
$query_ddt = "SELECT
- `dt_ddt`.`id`,
- CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`name`, ']') AS text,
- 'DDT' AS optgroup,
- 'ddt' AS tipo,
- 'entrata' AS dir
- FROM `dt_ddt`
- INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
- INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstato` = `dt_statiddt`.`id`
- LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(setting('Lingua')).")
- INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`
- WHERE
- `idarticolo` = ".prepare($id_articolo)." AND
- `dt_stati_lang`.`name` != 'Fatturato' AND
- `dt_tipiddt`.`dir`=".prepare($direzione).'AND
- |where|
- GROUP BY
- `dt_ddt`.`id`
- HAVING
- SUM(`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0
- ORDER BY
- `data` DESC, `numero` DESC';
+ `dt_ddt`.`id`,
+ CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`name`, ']') AS text,
+ 'DDT' AS optgroup,
+ 'ddt' AS tipo,
+ 'entrata' AS dir
+ FROM
+ `dt_ddt`
+ INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
+ INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstato` = `dt_statiddt`.`id`
+ LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(setting('Lingua')).")
+ INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`
+ WHERE
+ `idarticolo` = ".prepare($id_articolo)." AND
+ `dt_stati_lang`.`name` != 'Fatturato' AND
+ `dt_tipiddt`.`dir`=".prepare($direzione).'AND
+ |where|
+ GROUP BY
+ `dt_ddt`.`id`
+ HAVING
+ SUM(`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0
+ ORDER BY
+ `data` DESC, `numero` DESC';
// Sostituzione per la ricerca
$query_ordini = replace($query_ordini, [
diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php
index 00ad1be83..0567e35f0 100755
--- a/modules/fatture/edit.php
+++ b/modules/fatture/edit.php
@@ -809,7 +809,19 @@ if (!$block_edit) {
$ddt = $dbo->fetchArray($ddt_query)[0]['tot'];
// Lettura ordini (cliente o fornitore)
- $ordini_query = 'SELECT COUNT(*) AS tot FROM or_ordini WHERE idanagrafica='.prepare($record['idanagrafica']).' AND idstatoordine IN (SELECT id FROM or_statiordine WHERE descrizione IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoordine=(SELECT id FROM or_tipiordine WHERE dir='.prepare($dir).') AND or_ordini.id IN (SELECT idordine FROM or_righe_ordini WHERE or_righe_ordini.idordine = or_ordini.id AND (qta - qta_evasa) > 0)';
+ $ordini_query = 'SELECT
+ COUNT(*) AS tot
+ FROM
+ `or_ordini`
+ INNER JOIN `or_righe_ordini` ON `or_ordini`.`id` = `or_righe_ordini`.`idordine`
+ INNER JOIN `or_statiordine` ON `or_statiordine`.`id` = `or_ordini`.`idstatoordine`
+ LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id` = `or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).')
+ INNER JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine`
+ WHERE
+ idanagrafica='.prepare($record['idanagrafica']).'
+ AND `name` IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\'))
+ AND `dir`='.prepare($dir).')
+ AND (`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) > 0';
$ordini = $dbo->fetchArray($ordini_query)[0]['tot'];
}
diff --git a/modules/interventi/ajax/complete.php b/modules/interventi/ajax/complete.php
index 4eff5d74c..caede2934 100644
--- a/modules/interventi/ajax/complete.php
+++ b/modules/interventi/ajax/complete.php
@@ -5,6 +5,7 @@ use Modules\Anagrafiche\Anagrafica;
use Modules\Contratti\Contratto;
use Modules\Fatture\Fattura;
use Modules\Preventivi\Preventivo;
+use Modules\Fatture\Stato;
include_once __DIR__.'/../../core.php';
@@ -57,7 +58,7 @@ switch ($op) {
if (!$preventivi->isEmpty()) {
foreach ($preventivi as $preventivo) {
echo '
-
'.$preventivo->getReference().' ['.$preventivo->stato->descrizione.']';
+
'.$preventivo->getReference().' ['.$preventivo->stato->name.']';
}
} else {
echo '
@@ -74,7 +75,9 @@ switch ($op) {
// Fatture attive
$fatture = Fattura::where('idanagrafica', '=', $id_anagrafica)
->whereHas('stato', function ($query) {
- $query->whereIn('descrizione', ['Emessa', 'Parzialmente pagato']);
+ $id_bozza = (new Stato())->getByName('Bozza')->id_record;
+ $id_parz_pagato = (new Stato())->getByName('Parziale pagato')->id_record;
+ $query->whereIn('id', [$id_bozza, $id_parz_pagato]);
})
->latest()->take($numero_documenti)->get();
echo '
diff --git a/modules/interventi/src/API/v1/Interventi.php b/modules/interventi/src/API/v1/Interventi.php
index 40eda1f14..01c011e2f 100755
--- a/modules/interventi/src/API/v1/Interventi.php
+++ b/modules/interventi/src/API/v1/Interventi.php
@@ -51,9 +51,7 @@ class Interventi extends Resource implements RetrieveInterface, CreateInterface,
];
$joins[] = [
- 'in_statiintervento_lang',
- 'in_statiintervento_lang.id_record',
- 'in_statiintervento.id',
+ 'in_statiintervento_lang' => 'in_statiintervento_lang.id_record = in_statiintervento.id AND in_statiintervento_lang.id_lang = '.setting('Lingua'),
];
$joins[] = [
diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php
index 3a9728cad..8b7a2ced6 100755
--- a/modules/ordini/actions.php
+++ b/modules/ordini/actions.php
@@ -140,16 +140,16 @@ switch (post('op')) {
$ordine->save();
if ($dbo->query($query)) {
- $query = 'SELECT `descrizione` FROM `or_statiordine` WHERE `id`='.prepare($idstatoordine);
+ $query = 'SELECT `name` FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `or_statiordine`.`id`='.prepare($idstatoordine);
$rs = $dbo->fetchArray($query);
// Ricalcolo inps, ritenuta e bollo (se l'ordine non è stato evaso)
if ($dir == 'entrata') {
- if ($rs[0]['descrizione'] != 'Evaso') {
+ if ($rs[0]['name'] != 'Evaso') {
ricalcola_costiagg_ordine($id_record);
}
} else {
- if ($rs[0]['descrizione'] != 'Evaso') {
+ if ($rs[0]['name'] != 'Evaso') {
ricalcola_costiagg_ordine($id_record, $idrivalsainps, $idritenutaacconto, $bollo);
}
}
diff --git a/modules/ordini/ajax/select.php b/modules/ordini/ajax/select.php
index ee6bb6b3c..27dbcc8bb 100644
--- a/modules/ordini/ajax/select.php
+++ b/modules/ordini/ajax/select.php
@@ -26,24 +26,29 @@ switch ($resource) {
*/
case 'ordini-cliente':
if (isset($superselect['idanagrafica'])) {
- $query = 'SELECT or_ordini.id AS id,
- CONCAT("Ordine ", numero_esterno, " del ", DATE_FORMAT(data, "%d/%m/%Y"), " [", (SELECT `descrizione` FROM `or_statiordine` WHERE `or_statiordine`.`id` = `idstatoordine`) , "]") AS descrizione
- FROM or_ordini
- INNER JOIN or_tipiordine ON or_ordini.idtipoordine = or_tipiordine.id
- INNER JOIN an_anagrafiche ON or_ordini.idanagrafica = an_anagrafiche.idanagrafica
+ $query = 'SELECT
+ `or_ordini`.`id` AS id,
+ CONCAT("Ordine ", `numero_esterno`, " del ", DATE_FORMAT(data, "%d/%m/%Y"), " [", `or_statiordine_lang`.`name` , "]") AS descrizione
+ FROM
+ `or_ordini`
+ INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`
+ INNER JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
+ INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id`
+ LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|where|
- ORDER BY or_ordini.id';
+ ORDER BY
+ `or_ordini`.`id`';
foreach ($elements as $element) {
- $filter[] = 'or_ordini.id='.prepare($element);
+ $filter[] = '`or_ordini`.`id`='.prepare($element);
}
- $where[] = 'or_tipiordine.dir='.prepare('entrata');
+ $where[] = '`or_tipiordine`.`dir`='.prepare('entrata');
if (empty($elements)) {
- $where[] = 'an_anagrafiche.idanagrafica='.prepare($superselect['idanagrafica']);
+ $where[] = '`an_anagrafiche`.`idanagrafica`='.prepare($superselect['idanagrafica']);
$stato = !empty($superselect['stato']) ? $superselect['stato'] : 'is_fatturabile';
- $where[] = 'idstatoordine IN (SELECT `id` FROM `or_statiordine` WHERE '.$stato.' = 1)';
+ $where[] = '`or_statiordine`.'.$stato.' = 1)';
}
}
diff --git a/modules/ordini/bulk.php b/modules/ordini/bulk.php
index 0103ef62e..e19653c7b 100644
--- a/modules/ordini/bulk.php
+++ b/modules/ordini/bulk.php
@@ -64,7 +64,7 @@ switch (post('op')) {
$id_anagrafica = $anagrafica->id;
// Proseguo solo se i documenti scelti sono fatturabili
- $ordine = $dbo->fetchOne('SELECT or_statiordine.descrizione AS stato FROM or_ordini LEFT JOIN or_statiordine ON or_ordini.idstatoordine=or_statiordine.id WHERE or_ordini.id='.prepare($id))['stato'];
+ $ordine = $dbo->fetchOne('SELECT `or_statiordine_lang`.`name` AS stato FROM `or_ordini` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id`=`or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang`= '.prepare(setting('Lingua')).') WHERE `or_ordini`.`id`='.prepare($id))['stato'];
if (!in_array($ordine, ['Fatturato', 'Evaso', 'Bozza', 'In attesa di conferma', 'Annullato'])) {
$righe = $documento_import->getRighe();
if (!empty($righe)) {
@@ -176,7 +176,7 @@ switch (post('op')) {
foreach ($id_records as $id) {
$ordine = Ordine::find($id);
- if (in_array($ordine->stato->descrizione, ['Bozza', 'In attesa di conferma', 'Accettato'])) {
+ if (in_array($ordine->stato->name, ['Bozza', 'In attesa di conferma', 'Accettato'])) {
// Controllo se è già stato creato un nuovo ordine per l'anagrafica
if (in_array($ordine->idanagrafica, array_keys($new_ordini))) {
$new_ordine = Ordine::find($new_ordini[$ordine->idanagrafica]);
@@ -235,7 +235,7 @@ if ($module['name'] == 'Ordini cliente') {
'title' => tr('Unire gli ordini selezionati?'),
'msg' => tr('Gli ordini saranno processati solo se in uno dei seguenti stati: Bozza, In attesa di conferma, Accettato.
Tutti gli ordini processati verranno eliminati e verrà creato un nuovo ordine unificato per fornitore.').'
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $id_module, 'is_sezionale' => 1]).', "value": "'.$id_segment_ordini.'", "select-options-escape": true ]}
- {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione FROM or_statiordine" ]}
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `or_statiordine`.`id`, `name` FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id` = `or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') ORDER BY `name` ASC" ]}
{[ "type": "date", "label": "'.tr('Data').'", "name": "data", "required": 1]}',
'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-warning',
@@ -250,7 +250,7 @@ $operations['cambia_stato'] = [
'data' => [
'title' => tr('Vuoi davvero cambiare lo stato per questi ordini?'),
'msg' => tr('Seleziona lo stato in cui spostare tutti gli ordini').'.
-
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione, colore as _bgcolor_ FROM or_statiordine" ]}',
+
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `or_statiordine`.`id`, `name`, `colore` as _bgcolor_ FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id` = `or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') ORDER BY `name` ASC" ]}',
'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-warning',
'blank' => false,
diff --git a/modules/ordini/buttons.php b/modules/ordini/buttons.php
index bba5e8e51..177983d74 100755
--- a/modules/ordini/buttons.php
+++ b/modules/ordini/buttons.php
@@ -31,9 +31,9 @@ function duplicaOrdine() {
}
';
-$stati = $dbo->fetchArray('SELECT descrizione FROM `or_statiordine` WHERE `is_fatturabile` = 1');
+$stati = $dbo->fetchArray('SELECT `name` FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id`=`or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang`= '.prepare(setting('Lingua')).') WHERE `is_fatturabile` = 1');
foreach ($stati as $stato) {
- $stati_importabili[] = $stato['descrizione'];
+ $stati_importabili[] = $stato['name'];
}
echo '
diff --git a/modules/ordini/edit.php b/modules/ordini/edit.php
index c64794591..742daa0b6 100755
--- a/modules/ordini/edit.php
+++ b/modules/ordini/edit.php
@@ -74,16 +74,16 @@ if ($righe_vuote) {
if (setting('Cambia automaticamente stato ordini fatturati')) {
if ($record['stato'] == 'Evaso' || $record['stato'] == 'Parzialmente evaso' || $record['stato'] == 'Fatturato' || $record['stato'] == 'Parzialmente fatturato') {
?>
- {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM or_statiordine ORDER BY descrizione", "value": "$idstatoordine$", "extra": "readonly", "class": "unblockable" ]}
+ {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, `or_statiordine_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = ) ORDER BY `name`", "value": "$idstatoordine$", "extra": "readonly", "class": "unblockable" ]}
- {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM or_statiordine WHERE (is_fatturabile = 0 AND descrizione != 'Fatturato' || descrizione = 'Accettato') ORDER BY descrizione", "value": "$idstatoordine$", "class": "unblockable" ]}
+ {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, `or_statiordine_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = ) WHERE (`is_fatturabile` = 0 AND `name` != 'Fatturato' || `name` = 'Accettato') ORDER BY `name`", "value": "$idstatoordine$", "class": "unblockable" ]}
- {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM or_statiordine ORDER BY descrizione", "value": "$idstatoordine$", "class": "unblockable" ]}
+ {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, `colore` AS _bgcolor_, `or_statiordine_lang`.`name` as descrizione FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = ) ORDER BY `name`", "value": "$idstatoordine$", "class": "unblockable" ]}
diff --git a/modules/ordini/init.php b/modules/ordini/init.php
index 71d944196..19634bf42 100755
--- a/modules/ordini/init.php
+++ b/modules/ordini/init.php
@@ -25,16 +25,20 @@ if (isset($id_record)) {
$ordine = Ordine::with('tipo', 'stato')->find($id_record);
$record = $dbo->fetchOne('SELECT *,
- or_ordini.note,
- or_ordini.idpagamento,
- or_ordini.id AS idordine,
- or_ordini.idagente AS idagente,
- or_statiordine.descrizione AS `stato`,
- or_tipiordine.descrizione AS `descrizione_tipodoc`,
- (SELECT tipo FROM an_anagrafiche WHERE idanagrafica = or_ordini.idanagrafica) AS tipo_anagrafica,
- (SELECT completato FROM or_statiordine WHERE or_statiordine.id=or_ordini.idstatoordine) AS flag_completato
- FROM or_ordini LEFT OUTER JOIN or_statiordine ON or_ordini.idstatoordine=or_statiordine.id
- INNER JOIN an_anagrafiche ON or_ordini.idanagrafica=an_anagrafiche.idanagrafica
- INNER JOIN or_tipiordine ON or_ordini.idtipoordine=or_tipiordine.id
- WHERE or_ordini.id='.prepare($id_record));
+ `or_ordini`.`note`,
+ `or_ordini`.`idpagamento`,
+ `or_ordini`.`id` AS idordine,
+ `or_ordini`.`idagente` AS idagente,
+ `or_statiordine_lang`.`name` AS `stato`,
+ `or_tipiordine`.`descrizione` AS `descrizione_tipodoc`,
+ `an_anagrafiche`.`tipo` AS tipo_anagrafica,
+ `or_statiordine`.`completato` AS flag_completato
+ FROM
+ `or_ordini`
+ INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id`
+ LEFT JOIN `or_statiordine_lang` ON `or_statiordine_lang`.`id_record`=`or_statiordine`.`id`
+ INNER JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
+ INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine`=`or_tipiordine`.`id`
+ WHERE
+ `or_ordini`.`id`='.prepare($id_record));
}
diff --git a/modules/ordini/modals/duplicazione.php b/modules/ordini/modals/duplicazione.php
index 8318f929d..09b848d5c 100644
--- a/modules/ordini/modals/duplicazione.php
+++ b/modules/ordini/modals/duplicazione.php
@@ -30,7 +30,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatoordine", "required": 1, "values": "query=SELECT * FROM or_statiordine WHERE descrizione IN(\'Bozza\', \'Accettato\', \'In attesa di conferma\')", "value": "1" ]}
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatoordine", "required": 1, "values": "query=SELECT * FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record`=`or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang`= '.prepare(setting('Lingua')).') WHERE `name` IN(\'Bozza\', \'Accettato\', \'In attesa di conferma\')", "value": "1" ]}