diff --git a/include/common/importa.php b/include/common/importa.php index 2ae3be282..be2fb605f 100755 --- a/include/common/importa.php +++ b/include/common/importa.php @@ -19,7 +19,7 @@ use Modules\Contratti\Stato as StatoContratto; use Modules\Fatture\Stato as StatoFattura; -use Modules\Fatture\Tipo; +use Modules\DDT\Stato; use Plugins\ListinoFornitori\DettaglioFornitore; // Inizializzazione @@ -139,11 +139,11 @@ if (!empty($options['create_document'])) { // Opzioni aggiuntive per i DDT elseif (in_array($final_module['name'], ['Ddt di vendita', 'Ddt di acquisto'])) { - $stato_predefinito = $database->fetchOne("SELECT * FROM dt_statiddt WHERE descrizione = 'Bozza'"); + $stato_predefinito = (new Stato())->getByName('Bozza')->id_record; echo '
- {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "'.$stato_predefinito['id'].'" ]} + {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).')", "value": "'.$stato_predefinito.'" ]}
diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index b9bf6b3d4..1cf192dec 100755 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -123,7 +123,7 @@ switch (filter('op')) { $ddt->save(); - $query = 'SELECT descrizione FROM dt_statiddt WHERE id='.prepare($idstatoddt); + $query = 'SELECT `name` FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`idstatoddt` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `dt_statiddt`.`id`='.prepare($idstatoddt); $rs = $dbo->fetchArray($query); // Ricalcolo inps, ritenuta e bollo (se l'ddt non è stato evaso) diff --git a/modules/ddt/add_ddt.php b/modules/ddt/add_ddt.php index ccd0888b6..0b5edc943 100644 --- a/modules/ddt/add_ddt.php +++ b/modules/ddt/add_ddt.php @@ -48,7 +48,7 @@ $id_anagrafica = $documento_finale->idanagrafica; echo '
- {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=SELECT dt_ddt.id, CONCAT(IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione FROM dt_ddt WHERE idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir=\''.($dir == 'entrata' ? 'uscita' : 'entrata').'\' LIMIT 0,1) AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0) ORDER BY data DESC, numero DESC" ]} + {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=SELECT `dt_ddt`.`id`, CONCAT(IF(`numero_esterno` != \'\', `numero_esterno`, `numero`), \' del \', DATE_FORMAT(`data`, \'%d-%m-%Y\')) AS descrizione FROM `dt_ddt` INNER JOIN `dt_statiddt` ON `ddt`.`idstato` = `dt_statiddt`.`id` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` INNER JOIN `dt_righe_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt` WHERE `dt_statiddt_lang`.`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 ORDER BY `data` DESC, `numero` DESC" ]}
diff --git a/modules/ddt/bulk.php b/modules/ddt/bulk.php index 5fe62581f..44fecf4d0 100755 --- a/modules/ddt/bulk.php +++ b/modules/ddt/bulk.php @@ -211,7 +211,7 @@ $operations['cambia_stato'] = [ 'data' => [ 'title' => tr('Vuoi davvero cambiare lo stato per questi DDT?'), 'msg' => tr('Seleziona lo stato in cui spostare tutti i DDT').'.
-
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione, colore as _bgcolor_ FROM dt_statiddt" ]}', +
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `dt_statiddt`.`id`, `dt_statiddt`.`name` as descrizione, `colore` as _bgcolor_ FROM dt_statiddt LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).')" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', 'blank' => false, diff --git a/modules/ddt/buttons.php b/modules/ddt/buttons.php index 6ea8d4052..ce73fe9f1 100755 --- a/modules/ddt/buttons.php +++ b/modules/ddt/buttons.php @@ -64,7 +64,7 @@ function completaTrasporto() { } // Informazioni sull'importabilità del DDT -$stati = $database->fetchArray('SELECT descrizione FROM `dt_statiddt` WHERE `is_fatturabile` = 1'); +$stati = $database->fetchArray('SELECT `name` as descrizione FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` ='.prepare(setting('Lingua')).') WHERE `is_fatturabile` = 1'); foreach ($stati as $stato) { $stati_importabili[] = $stato['descrizione']; } diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php index ca465211d..96948d0b2 100755 --- a/modules/ddt/edit.php +++ b/modules/ddt/edit.php @@ -121,16 +121,16 @@ if ($righe_vuote) { if (setting('Cambia automaticamente stato ddt fatturati')) { if ($record['stato'] == 'Fatturato' || $record['stato'] == 'Parzialmente fatturato') { ?> - {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM dt_statiddt ORDER BY descrizione", "value": "$idstatoddt$", "extra": "readonly", "class": "unblockable" ]} + {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, `dt_statiddt_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= ) ORDER BY `name`", "value": "$idstatoddt$", "extra": "readonly", "class": "unblockable" ]} - {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM dt_statiddt WHERE descrizione IN('Bozza', 'Evaso', 'Parzialmente evaso') ORDER BY descrizione", "value": "$idstatoddt$", "class": "unblockable" ]} + {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, `dt_statiddt_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= ) WHERE `name` IN('Bozza', 'Evaso', 'Parzialmente evaso') ORDER BY `name`", "value": "$idstatoddt$", "class": "unblockable" ]} - {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM dt_statiddt ORDER BY descrizione", "value": "$idstatoddt$", "class": "unblockable" ]} + {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, `colore` AS _bgcolor_, `dt_statiddt_lang`.`name` as descrizione FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= ) ORDER BY `name`", "value": "$idstatoddt$", "class": "unblockable" ]} @@ -533,7 +533,7 @@ if (!$block_edit) { $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)'; $tot_ordini = $dbo->fetchArray($ordini_query)[0]['tot']; - $ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM or_tipiordine WHERE dir="'.($dir == 'entrata' ? 'uscita' : 'entrata').'") AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)'; + $ddt_query = 'SELECT COUNT(*) AS tot FROM `dt_ddt` INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstatoddt` = `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` INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` 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'; $tot_ddt = $dbo->fetchArray($ddt_query)[0]['tot']; // Form di inserimento riga documento diff --git a/modules/ddt/init.php b/modules/ddt/init.php index 87ed497c7..1c01b2a16 100755 --- a/modules/ddt/init.php +++ b/modules/ddt/init.php @@ -33,17 +33,19 @@ if ($module['name'] == 'Ddt di vendita') { if (isset($id_record)) { $ddt = DDT::with('tipo', 'stato')->find($id_record); - $record = $dbo->fetchOne('SELECT dt_ddt.*, - dt_ddt.id AS idddt, - dt_statiddt.descrizione AS `stato`, - dt_statiddt.completato AS `flag_completato`, - dt_tipiddt.descrizione AS `descrizione_tipodoc`, - an_anagrafiche.tipo AS tipo_anagrafica - FROM dt_ddt - LEFT OUTER JOIN dt_statiddt ON dt_ddt.idstatoddt=dt_statiddt.id - INNER JOIN an_anagrafiche ON dt_ddt.idanagrafica=an_anagrafiche.idanagrafica - INNER JOIN dt_tipiddt ON dt_ddt.idtipoddt=dt_tipiddt.id - WHERE dt_ddt.id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT `dt_ddt`.*, + `dt_ddt`.`id` AS idddt, + `dt_statiddt_lang`.`name` AS `stato`, + `dt_statiddt`.`completato` AS `flag_completato`, + `dt_tipiddt`.`descrizione` AS `descrizione_tipodoc`, + `an_anagrafiche`.`tipo` AS tipo_anagrafica + FROM `dt_ddt` + INNER JOIN `dt_statiddt` ON dt_ddt.idstatoddt=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 `an_anagrafiche` ON `dt_ddt`.`idanagrafica`=`an_anagrafiche`.`idanagrafica` + INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt`=`dt_tipiddt`.`id` + WHERE + `dt_ddt`.`id`='.prepare($id_record)); if (!empty($record)) { $record['idporto'] = $record['idporto'] ?: $dbo->fetchOne('SELECT `id` FROM `dt_porto` WHERE `predefined` = 1')['id']; diff --git a/modules/ddt/src/DDT.php b/modules/ddt/src/DDT.php index 8d6a8a6e0..8de3ee0d4 100755 --- a/modules/ddt/src/DDT.php +++ b/modules/ddt/src/DDT.php @@ -58,17 +58,13 @@ class DDT extends Document public static function build(Anagrafica $anagrafica, Tipo $tipo_documento, $data, $id_segment = null) { $model = new static(); - $user = \Auth::user(); - $stato_documento = Stato::where('descrizione', 'Bozza')->first(); + $stato_documento = (new Stato())->getByName('Bozza')->id_record; - $id_anagrafica = $anagrafica->id; $direzione = $tipo_documento->dir; $id_segment = $id_segment ?: getSegmentPredefined($model->getModule()->id); - $database = database(); - if ($direzione == 'entrata') { $conto = 'vendite'; } else { @@ -131,7 +127,7 @@ class DDT extends Document public function isImportabile() { $database = database(); - $stati = $database->fetchArray('SELECT `descrizione` FROM `dt_statiddt` WHERE `is_fatturabile` = 1'); + $stati = $database->fetchArray('SELECT `name` FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `is_fatturabile` = 1'); foreach ($stati as $stato) { $stati_importabili[] = $stato['descrizione']; } diff --git a/modules/ddt/src/Stato.php b/modules/ddt/src/Stato.php index 67a735329..4dd251ff2 100755 --- a/modules/ddt/src/Stato.php +++ b/modules/ddt/src/Stato.php @@ -32,4 +32,34 @@ class Stato extends Model { return $this->hasMany(DDT::class, 'idstatoddt'); } + + /** + * Ritorna l'attributo name dello stato del ddt. + * + * @return string + */ + public function getNameAttribute() + { + return database()->table($this->table.'_lang') + ->select('name') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')) + ->first()->name; + } + + /** + * Ritorna l'id dello stato a partire dal nome. + * + * @param string $name il nome da ricercare + * + * @return \Illuminate\Support\Collection + */ + public function getByName($name) + { + return database()->table($this->table.'_lang') + ->select('id_record') + ->where('name', '=', $name) + ->where('id_lang', '=', setting('Lingua')) + ->first(); + } } diff --git a/modules/fatture/add_ddt.php b/modules/fatture/add_ddt.php index caaaf66b3..607f5212c 100755 --- a/modules/fatture/add_ddt.php +++ b/modules/fatture/add_ddt.php @@ -50,7 +50,7 @@ $id_anagrafica = $documento_finale->idanagrafica; echo '
- {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=SELECT `dt_ddt`.`id`, CONCAT(\'DDT num. \', IF(`numero_esterno` != \'\', `numero_esterno`, `numero`), \' del \', DATE_FORMAT(`data`, \'%d-%m-%Y\'), \' [\', (SELECT `descrizione` FROM `dt_statiddt` WHERE `id` = `idstatoddt`) , \']\') AS descrizione FROM `dt_ddt` LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` WHERE `idanagrafica`='.prepare($id_anagrafica).' AND `idstatoddt` IN (SELECT `id` FROM `dt_statiddt` WHERE `descrizione` IN(\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND `idtipoddt`=(SELECT `id` FROM `dt_tipiddt` WHERE `dir`='.prepare($dir).') AND `dt_causalet`.`is_importabile` = 1 AND `dt_ddt`.`id` IN (SELECT `idddt` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` AND (`qta` - `qta_evasa`) > 0) ORDER BY `data` DESC, `numero` DESC" ]} + {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=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 descrizione FROM `dt_ddt` LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstato` = `dt_statiddt`.`id` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` INNER JOIN `dt_righe_ddt ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt` WHERE `idanagrafica`='.prepare($id_anagrafica).' AND `dt_statiddt_lang`.`name` IN("Evaso", "Parzialmente evaso", "Parzialmente fatturato") AND `dt_tipiddt`.`dir`=\''.prepare($dir).'\' AND `dt_causalet`.`is_importabile` = 1 AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0 ORDER BY `data` DESC, `numero` DESC" ]}
diff --git a/modules/fatture/ajax/select.php b/modules/fatture/ajax/select.php index aa4cbbef8..15a53d95b 100644 --- a/modules/fatture/ajax/select.php +++ b/modules/fatture/ajax/select.php @@ -42,23 +42,28 @@ switch ($resource) { 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'), ' [', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , ']') AS text, + $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 - WHERE idanagrafica = ".prepare($id_anagrafica)." AND - idstatoddt IN ( - SELECT id FROM dt_statiddt WHERE descrizione != 'Fatturato' - ) AND - idtipoddt IN ( - SELECT id FROM dt_tipiddt WHERE 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'; + 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, [ @@ -109,23 +114,28 @@ switch ($resource) { 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'), ' [', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , ']') AS text, + $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 - WHERE idarticolo = ".prepare($id_articolo)." AND - idstatoddt IN ( - SELECT id FROM dt_statiddt WHERE descrizione != 'Fatturato' - ) AND - idtipoddt IN ( - SELECT id FROM dt_tipiddt WHERE 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'; + 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 61db2c9c1..dd1e27523 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -795,13 +795,14 @@ if (!$block_edit) { COUNT(*) AS tot FROM `dt_ddt` - LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` - LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + INNER JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` + INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') LEFT JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` WHERE `idanagrafica`='.prepare($record['idanagrafica']).' - AND `dt_statiddt`.`descrizione` IN (\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\') + AND `dt_statiddt_lang`.`name` IN ("Evaso", "Parzialmente evaso", "Parzialmente fatturato") AND `dt_tipiddt`.`dir` = '.prepare($dir).' AND `dt_causalet`.`is_importabile` = 1 AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0'; diff --git a/modules/interventi/add_ddt.php b/modules/interventi/add_ddt.php index 6d9be4209..d4defd50a 100644 --- a/modules/interventi/add_ddt.php +++ b/modules/interventi/add_ddt.php @@ -50,7 +50,7 @@ $id_anagrafica = $documento_finale->idanagrafica; echo '
- {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=SELECT `dt_ddt`.`id`, CONCAT(\'DDT num. \', IF(`numero_esterno` != \'\', `numero_esterno`, `numero`), \' del \', DATE_FORMAT(`data`, \'%d-%m-%Y\'), \' [\', (SELECT `descrizione` FROM `dt_statiddt` WHERE `id` = `idstatoddt`) , \']\') AS descrizione FROM `dt_ddt` LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` WHERE `idanagrafica`='.prepare($id_anagrafica).' AND `idstatoddt` IN (SELECT `id` FROM `dt_statiddt` WHERE `descrizione` IN(\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND `idtipoddt`=(SELECT `id` FROM `dt_tipiddt` WHERE `dir`='.prepare($dir).') AND `dt_causalet`.`is_importabile` = 1 AND `dt_ddt`.`id` IN (SELECT `idddt` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` AND (`qta` - `qta_evasa`) > 0) ORDER BY `data` DESC, `numero` DESC" ]} + {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=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 descrizione FROM `dt_ddt` LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id`=`dt_ddt`.`idstatoddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` INNER JOIN `dt_righe_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt` WHERE `idanagrafica`='.prepare($id_anagrafica).' AND `dt_statiddt_lang`.`name` IN("Evaso", "Parzialmente evaso", "Parzialmente fatturato") AND `dt_tipiddt`.`dir`=\''.prepare($dir).'\' AND `dt_causalet`.`is_importabile` = 1 AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0 ORDER BY `data` DESC, `numero` DESC" ]}
diff --git a/modules/interventi/edit.php b/modules/interventi/edit.php index 56afb188a..3b6344a38 100755 --- a/modules/interventi/edit.php +++ b/modules/interventi/edit.php @@ -504,19 +504,20 @@ if (!$block_edit) { // Lettura ddt (entrata o uscita) $ddt_query = 'SELECT - COUNT(*) AS tot - FROM - `dt_ddt` - LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` - LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` - LEFT JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` - INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` - WHERE - `idanagrafica`='.prepare($record['idanagrafica']).' - AND `dt_statiddt`.`descrizione` IN (\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\') - AND `dt_tipiddt`.`dir` = '.prepare($intervento->direzione).' - AND `dt_causalet`.`is_importabile` = 1 - AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0'; + COUNT(*) AS tot + FROM + `dt_ddt` + LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` + INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') + LEFT JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` + INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` + WHERE + `idanagrafica`='.prepare($record['idanagrafica']).' + AND `dt_statiddt_lang`.`name` IN ("Evaso", "Parzialmente evaso", "Parzialmente fatturato") + AND `dt_tipiddt`.`dir` = '.prepare($intervento->direzione).' + AND `dt_causalet`.`is_importabile` = 1 + AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0'; $ddt = $dbo->fetchArray($ddt_query)[0]['tot']; // Form di inserimento riga documento diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php index 94bbca60a..d3431e454 100755 --- a/plugins/importFE/actions.php +++ b/plugins/importFE/actions.php @@ -454,25 +454,29 @@ switch (filter('op')) { // Se nella fattura elettronica è indicato un DDT cerco quel documento specifico $ddt = $dati_ddt[$numero_linea]; - $query = "SELECT dt_righe_ddt.id, dt_righe_ddt.idddt AS id_documento, dt_righe_ddt.is_descrizione, dt_righe_ddt.idarticolo, dt_righe_ddt.is_sconto, 'ddt' AS ref, - CONCAT('DDT num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , ']') AS opzione - FROM dt_righe_ddt - INNER JOIN dt_ddt ON dt_ddt.id = dt_righe_ddt.idddt + $query = "SELECT + `dt_righe_ddt`.`id`, + `dt_righe_ddt`.`idddt` AS id_documento, + `dt_righe_ddt`.`is_descrizione`, + `dt_righe_ddt`.`idarticolo`, + `dt_righe_ddt`.`is_sconto`, 'ddt' AS ref, + CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`name`, ']') AS opzione + FROM + `dt_righe_ddt` + INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt` + INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + LEFT JOIN `dt_statiddt_lang` ON `dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(setting('Lingua'))." WHERE - dt_ddt.numero_esterno = ".prepare($ddt['numero']).' - AND - YEAR(dt_ddt.data) = '.prepare($ddt['anno']).' - AND - dt_ddt.idanagrafica = '.prepare($anagrafica->id).' - AND - dt_righe_ddt.qta > dt_righe_ddt.qta_evasa - AND + `dt_ddt`.`numero_esterno` = ".prepare($ddt['numero']).' AND + YEAR(`dt_ddt`.`data`) = '.prepare($ddt['anno']).' AND + `dt_ddt`.`idanagrafica` = '.prepare($anagrafica->id).' AND + `dt_righe_ddt`.`qta` > `dt_righe_ddt`.`qta_evasa` AND |where|'; // Ricerca di righe DDT con stesso Articolo if (!empty($id_articolo)) { $query_articolo = replace($query, [ - '|where|' => 'dt_righe_ddt.idarticolo = '.prepare($id_articolo), + '|where|' => '`dt_righe_ddt`.`idarticolo` = '.prepare($id_articolo), ]); $collegamento = $database->fetchOne($query_articolo); @@ -481,7 +485,7 @@ switch (filter('op')) { // Ricerca di righe DDT per stessa descrizione if (empty($collegamento)) { $query_descrizione = replace($query, [ - '|where|' => 'dt_righe_ddt.descrizione = '.prepare($riga['Descrizione']), + '|where|' => '`dt_righe_ddt`.`descrizione` = '.prepare($riga['Descrizione']), ]); $collegamento = $database->fetchOne($query_descrizione); @@ -532,23 +536,50 @@ switch (filter('op')) { // Se non ci sono Ordini o DDT cerco per contenuto if (empty($collegamento)) { $match_documento_da_fe = false; - $query = "SELECT dt_righe_ddt.id, dt_righe_ddt.idddt AS id_documento, dt_righe_ddt.is_descrizione, dt_righe_ddt.idarticolo, dt_righe_ddt.is_sconto, 'ddt' AS ref, - CONCAT('DDT num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , ']') AS opzione - FROM dt_righe_ddt - INNER JOIN dt_ddt ON dt_ddt.id = dt_righe_ddt.idddt - WHERE dt_ddt.idanagrafica = ".prepare($anagrafica->id)." AND |where_ddt| AND dt_righe_ddt.qta > dt_righe_ddt.qta_evasa AND dt_ddt.idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione != 'Fatturato') AND idtipoddt IN (SELECT id FROM dt_tipiddt WHERE dir='uscita') - - UNION SELECT or_righe_ordini.id, or_righe_ordini.idordine AS id_documento, or_righe_ordini.is_descrizione, or_righe_ordini.idarticolo, or_righe_ordini.is_sconto, 'ordine' AS ref, - 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 opzione - FROM or_righe_ordini - INNER JOIN or_ordini ON or_ordini.id = or_righe_ordini.idordine - WHERE or_ordini.idanagrafica = ".prepare($anagrafica->id)." AND |where_ordini| AND or_righe_ordini.qta > or_righe_ordini.qta_evasa AND or_ordini.idstatoordine IN (SELECT id FROM or_statiordine WHERE descrizione != 'Fatturato') AND idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir ='uscita')"; + $query = "SELECT + `dt_righe_ddt`.`id`, + `dt_righe_ddt`.`idddt` AS id_documento, + `dt_righe_ddt`.`is_descrizione`, + `dt_righe_ddt`.`idarticolo`, + `dt_righe_ddt`.`is_sconto`, + 'ddt' AS ref, + CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`name`, ']') AS opzione + FROM + `dt_righe_ddt` + INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt` + INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + 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 + `dt_ddt`.`idanagrafica` = ".prepare($anagrafica->id)." AND + |where_ddt| AND + `dt_righe_ddt`.`qta` > `dt_righe_ddt`.`qta_evasa` AND + `dt_statiddt_lang`.`name` != 'Fatturato' AND + `dt_tipiddt`.`dir` = 'uscita' + UNION + SELECT + `or_righe_ordini`.`id`, + `or_righe_ordini`.`idordine` AS id_documento, + `or_righe_ordini`.`is_descrizione`, + `or_righe_ordini`.`idarticolo`, + `or_righe_ordini`.`is_sconto`, + 'ordine' AS ref, + CONCAT('Ordine num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', (SELECT `descrizione` FROM or_stati`ordine WHERE `id` = `idstatoordine`) , ']') AS opzione + FROM + `or_righe_ordini` + INNER JOIN `or_ordini` ON `or_ordini`.`id` = `or_righe_ordini`.`idordine` + WHERE + `or_ordini`.`idanagrafica` = ".prepare($anagrafica->id)." AND + |where_ordini| AND + `or_righe_ordini`.`qta` > `or_righe_ordini`.`qta_evasa` AND + `or_ordini`.`idstatoordine` IN (SELECT `id` FROM `or_statiordine` WHERE `descrizione` != 'Fatturato') AND + `idtipoordine` IN (SELECT `id` FROM `or_tipiordine` WHERE `dir` ='uscita')"; // Ricerca di righe DDT/Ordine con stesso Articolo if (!empty($id_articolo)) { $query_articolo = replace($query, [ - '|where_ddt|' => 'dt_righe_ddt.idarticolo = '.prepare($id_articolo), - '|where_ordini|' => 'or_righe_ordini.idarticolo = '.prepare($id_articolo), + '|where_ddt|' => '`dt_righe_ddt`.`idarticolo` = '.prepare($id_articolo), + '|where_ordini|' => '`or_righe_ordini`.`idarticolo` = '.prepare($id_articolo), ]); $collegamento = $database->fetchOne($query_articolo); @@ -557,8 +588,8 @@ switch (filter('op')) { // Ricerca di righe DDT/Ordine per stessa descrizione if (empty($collegamento)) { $query_descrizione = replace($query, [ - '|where_ddt|' => 'dt_righe_ddt.descrizione = '.prepare($riga['Descrizione']), - '|where_ordini|' => 'or_righe_ordini.descrizione = '.prepare($riga['Descrizione']), + '|where_ddt|' => '`dt_righe_ddt`.`descrizione` = '.prepare($riga['Descrizione']), + '|where_ordini|' => '`or_righe_ordini`.`descrizione` = '.prepare($riga['Descrizione']), ]); $collegamento = $database->fetchOne($query_descrizione); @@ -567,8 +598,8 @@ switch (filter('op')) { // Ricerca di righe DDT/Ordine per stesso importo if (empty($collegamento)) { $query_descrizione = replace($query, [ - '|where_ddt|' => 'dt_righe_ddt.prezzo_unitario = '.prepare($riga['PrezzoUnitario']), - '|where_ordini|' => 'or_righe_ordini.prezzo_unitario = '.prepare($riga['PrezzoUnitario']), + '|where_ddt|' => '`dt_righe_ddt`.`prezzo_unitario` = '.prepare($riga['PrezzoUnitario']), + '|where_ordini|' => '`or_righe_ordini`.`prezzo_unitario` = '.prepare($riga['PrezzoUnitario']), ]); $collegamento = $database->fetchOne($query_descrizione); diff --git a/update/2_4_55.sql b/update/2_4_55.sql index c46dfa718..aba6ec16a 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -949,6 +949,32 @@ HAVING UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_spedizione_lang`.`name`' WHERE `zz_modules`.`name` = 'Tipi di spedizione' AND `zz_views`.`name` = 'Descrizione'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_spedizione`.`id`' WHERE `zz_modules`.`name` = 'Tipi di spedizione' AND `zz_views`.`name` = 'id'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_spedizione_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di vendita' AND `zz_views`.`name` = 'Tipo spedizione'; + +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_spedizione_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di acquisto' AND `zz_views`.`name` = 'Tipo spedizione'; + +-- Aggiunta tabella dt_statiddt_lang +CREATE TABLE IF NOT EXISTS `dt_statiddt_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `dt_statiddt_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `dt_statiddt_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `dt_statiddt_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `dt_statiddt`; + +ALTER TABLE `dt_statiddt` + DROP `descrizione`; + +ALTER TABLE `dt_statiddt` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT; + +ALTER TABLE `dt_statiddt_lang` ADD CONSTRAINT `dt_statiddt_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `dt_statiddt`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + -- Allineamento vista Ddt di vendita UPDATE `zz_modules` SET `options` = " SELECT @@ -965,7 +991,8 @@ FROM LEFT JOIN `an_sedi` AS sedi ON `dt_ddt`.`idsede_partenza` = sedi.`id` LEFT JOIN `an_sedi` AS `sedi_destinazione`ON `dt_ddt`.`idsede_destinazione` = `sedi_destinazione`.`id` LEFT JOIN (SELECT `idddt`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`subtotale` - `sconto` + `iva`) AS `totale` FROM `dt_righe_ddt` GROUP BY `idddt`) AS righe ON `dt_ddt`.`id` = `righe`.`idddt` - LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.|lang|) LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT 'Fattura ',`co_documenti`.`numero_esterno` SEPARATOR ', ') AS `info`, `co_righe_documenti`.`original_document_id` AS `idddt` FROM `co_documenti` INNER JOIN `co_righe_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE `original_document_type`='Modules\\DDT\\DDT' GROUP BY `original_document_id`) AS `fattura` ON `fattura`.`idddt` = `dt_ddt`.`id` LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Ddt di vendita') AND `zz_operations`.`op` = 'send-email' GROUP BY id_record) AS `email` ON `email`.`id_record` = `dt_ddt`.`id` WHERE @@ -976,7 +1003,7 @@ ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC, `dt_ddt`.`created_at` DESC" WHERE `name` = 'Ddt di vendita'; -UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_spedizione_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di vendita' AND `zz_views`.`name` = 'Tipo spedizione'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_statiddt_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di vendita' AND `zz_views`.`name` = 'icon_title_Stato'; -- Allineamento vista Ddt di acquisto UPDATE `zz_modules` SET `options` = " @@ -994,7 +1021,8 @@ FROM LEFT JOIN `an_sedi` AS sedi ON `dt_ddt`.`idsede_partenza` = sedi.`id` LEFT JOIN `an_sedi` AS `sedi_destinazione`ON `dt_ddt`.`idsede_destinazione` = `sedi_destinazione`.`id` LEFT JOIN(SELECT `idddt`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`subtotale` - `sconto` + `iva`) AS `totale` FROM `dt_righe_ddt` GROUP BY `idddt`) AS righe ON `dt_ddt`.`id` = `righe`.`idddt` - LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` + LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.|lang|) LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT 'Fattura ',`co_documenti`.`numero` SEPARATOR ', ') AS `info`, `co_righe_documenti`.`original_document_id` AS `idddt` FROM `co_documenti` INNER JOIN `co_righe_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE `original_document_type`='Modules\\DDT\\DDT' GROUP BY `original_document_id`) AS `fattura` ON `fattura`.`idddt` = `dt_ddt`.`id` WHERE 1=1 |segment(`dt_ddt`.`id_segment`)| AND `dir` = 'uscita' |date_period(`data`)| @@ -1004,4 +1032,4 @@ ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC, `dt_ddt`.`created_at` DESC" WHERE `name` = 'Ddt di acquisto'; -UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_spedizione_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di acquisto' AND `zz_views`.`name` = 'Tipo spedizione'; \ No newline at end of file +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_statiddt_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di acquisto' AND `zz_views`.`name` = 'icon_title_Stato'; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index 9c7c83c29..b06a510d2 100755 --- a/update/tables.php +++ b/update/tables.php @@ -73,6 +73,7 @@ return [ 'dt_spedizione', 'dt_spedizione_lang', 'dt_statiddt', + 'dt_statiddt_lang', 'dt_tipiddt', 'em_print_template', 'em_accounts',