diff --git a/modules/causali/actions.php b/modules/causali/actions.php index 9ae2b2261..aef8b9c4d 100755 --- a/modules/causali/actions.php +++ b/modules/causali/actions.php @@ -22,27 +22,28 @@ include_once __DIR__.'/../../core.php'; switch (filter('op')) { case 'update': $descrizione = filter('descrizione'); + $predefined = post('predefined'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `dt_causalet` WHERE `deleted_at` IS NULL AND `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { - $predefined = post('predefined'); + if ($dbo->fetchNum('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 `deleted_at` IS NULL AND `name`='.prepare($descrizione).' AND `dt_causalet`.`id`!='.prepare($id_record)) == 0) { if (!empty($predefined)) { $dbo->query('UPDATE dt_causalet SET predefined = 0'); } $dbo->update('dt_causalet', [ - 'descrizione' => $descrizione, 'is_importabile' => filter('is_importabile'), 'reversed' => filter('reversed'), 'predefined' => $predefined, 'is_rientrabile' => filter('is_rientrabile'), ], ['id' => $id_record]); + $dbo->update('dt_causalet_lang', [ + 'name' => $descrizione, + ], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]); + flash()->info(tr('Salvataggio completato!')); } else { - flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa descrizione", [ - '_TYPE_' => 'causale', - ])); + flash()->error(tr("E' già presente una causale di trasporto con la stessa descrizione")); } } else { flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio')); @@ -54,24 +55,24 @@ switch (filter('op')) { $descrizione = filter('descrizione'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `dt_causalet` WHERE `deleted_at` IS NULL AND `descrizione`='.prepare($descrizione)) == 0) { + if ($dbo->fetchNum('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 `deleted_at` IS NULL AND `name`='.prepare($descrizione)) == 0) { $dbo->insert('dt_causalet', [ - 'descrizione' => $descrizione, 'is_importabile' => 1, ]); $id_record = $dbo->lastInsertedID(); + $dbo->insert('dt_causalet_lang', [ + 'name' => $descrizione, + 'id_record' => $id_record, + 'id_lang' => setting('Lingua'), + ]); if (isAjaxRequest()) { echo json_encode(['id' => $id_record, 'text' => $descrizione]); } - flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ - '_TYPE_' => 'causale', - ])); + flash()->info(tr('Aggiunta nuova causale di trasporto.')); } else { - flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa descrizione", [ - '_TYPE_' => 'causale', - ])); + flash()->error(tr("E' già presente una causale di trasporto con la stessa descrizione")); } } else { flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio')); @@ -80,8 +81,7 @@ switch (filter('op')) { break; case 'delete': - $documenti = $dbo->fetchNum('SELECT id FROM dt_ddt WHERE idcausalet='.prepare($id_record).' - UNION SELECT id FROM co_documenti WHERE idcausalet='.prepare($id_record)); + $documenti = $dbo->fetchNum('SELECT `id` FROM `dt_ddt` WHERE `idcausalet`='.prepare($id_record).' UNION SELECT `id` FROM `co_documenti` WHERE `idcausalet`='.prepare($id_record)); if (isset($id_record) && empty($documenti)) { $dbo->query('DELETE FROM `dt_causalet` WHERE `id`='.prepare($id_record)); @@ -91,9 +91,7 @@ switch (filter('op')) { ], ['id' => $id_record]); } - flash()->info(tr('Tipologia di _TYPE_ eliminata con successo.', [ - '_TYPE_' => 'causale', - ])); - + flash()->info(tr('Causale di trasporto eliminata.')); + break; } diff --git a/modules/causali/ajax/select.php b/modules/causali/ajax/select.php index 15fa93715..a365e7ca0 100755 --- a/modules/causali/ajax/select.php +++ b/modules/causali/ajax/select.php @@ -21,16 +21,16 @@ include_once __DIR__.'/../../../core.php'; switch ($resource) { case 'causali': - $query = 'SELECT id, descrizione FROM dt_causalet |where| ORDER BY descrizione ASC'; + $query = 'SELECT `dt_causalet`.`id`, `dt_causalet_lang`.`name` as descrizione 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| ORDER BY `name` ASC'; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`dt_causalet`.`id`='.prepare($element); } if (empty($filter)) { - $where[] = 'dt_causalet.deleted_at IS NULL'; + $where[] = '`dt_causalet`.`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`name` LIKE '.prepare('%'.$search.'%'); } break; diff --git a/modules/causali/edit.php b/modules/causali/edit.php index 86eec6185..94c599bdd 100755 --- a/modules/causali/edit.php +++ b/modules/causali/edit.php @@ -28,7 +28,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$", "charcounter": 1, "maxlength": "100" ]} + {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$name$", "charcounter": 1, "maxlength": "100" ]}
diff --git a/modules/causali/init.php b/modules/causali/init.php index b9c3286ea..1b972c03c 100755 --- a/modules/causali/init.php +++ b/modules/causali/init.php @@ -20,5 +20,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `dt_causalet` WHERE id='.prepare($id_record)); + $record = $dbo->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($id_record)); } diff --git a/modules/ddt/add.php b/modules/ddt/add.php index 728f3714b..26282d048 100755 --- a/modules/ddt/add.php +++ b/modules/ddt/add.php @@ -36,7 +36,7 @@ if ($module['name'] == 'Ddt di vendita') { $tipo_anagrafica = tr('Fornitore'); $label = tr('Mittente'); } -$id_causalet = $dbo->fetchOne('SELECT id FROM dt_causalet WHERE predefined=1')['id']; +$id_causalet = $dbo->fetchOne('SELECT `id` FROM `dt_causalet` WHERE `predefined`=1')['id']; $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : ''; ?>
diff --git a/modules/ddt/buttons.php b/modules/ddt/buttons.php index 34d7cb6aa..6ea8d4052 100755 --- a/modules/ddt/buttons.php +++ b/modules/ddt/buttons.php @@ -69,9 +69,9 @@ foreach ($stati as $stato) { $stati_importabili[] = $stato['descrizione']; } -$causali = $database->fetchArray('SELECT descrizione FROM `dt_causalet` WHERE `is_importabile` = 1'); +$causali = $database->fetchArray('SELECT `name` 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 `is_importabile` = 1'); foreach ($causali as $causale) { - $causali_importabili[] = $causale['descrizione']; + $causali_importabili[] = $causale['name']; } echo ' diff --git a/modules/ddt/init.php b/modules/ddt/init.php index ec4d64fbc..eb78cecca 100755 --- a/modules/ddt/init.php +++ b/modules/ddt/init.php @@ -47,7 +47,7 @@ if (isset($id_record)) { if (!empty($record)) { $record['idporto'] = $record['idporto'] ?: $dbo->fetchOne('SELECT id FROM dt_porto WHERE predefined = 1')['id']; - $record['idcausalet'] = $record['idcausalet'] ?: $dbo->fetchOne('SELECT id FROM dt_causalet WHERE predefined = 1')['id']; + $record['idcausalet'] = $record['idcausalet'] ?: $dbo->fetchOne('SELECT `id` FROM `dt_causalet` WHERE `predefined` = 1')['id']; $record['idspedizione'] = $record['idspedizione'] ?: $dbo->fetchOne('SELECT id FROM dt_spedizione WHERE predefined = 1')['id']; } diff --git a/modules/ddt/src/DDT.php b/modules/ddt/src/DDT.php index 3cdf5c324..8d6a8a6e0 100755 --- a/modules/ddt/src/DDT.php +++ b/modules/ddt/src/DDT.php @@ -131,12 +131,12 @@ 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 `descrizione` FROM `dt_statiddt` WHERE `is_fatturabile` = 1'); foreach ($stati as $stato) { $stati_importabili[] = $stato['descrizione']; } - $causale = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($this->idcausalet)); + $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); } @@ -144,7 +144,7 @@ class DDT extends Document public function getReversedAttribute() { $database = database(); - $causale = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($this->idcausalet)); + $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['reversed']; } diff --git a/modules/fatture/add_ddt.php b/modules/fatture/add_ddt.php index 31c907ae0..caaaf66b3 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\'), \' [\', (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" ]}
diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 3e77ff632..c67a69afb 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -792,15 +792,20 @@ if (!$block_edit) { } // Lettura ddt (entrata o uscita) - $ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt + $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` - WHERE idanagrafica='.prepare($record['idanagrafica']).' - AND `dt_statiddt`.`descrizione` IN (\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\') - AND `dt_tipiddt`.`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)'; + 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($dir).' + AND `dt_causalet`.`is_importabile` = 1 + AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0'; $ddt = $dbo->fetchArray($ddt_query)[0]['tot']; // Lettura ordini (cliente o fornitore) diff --git a/modules/fatture/init.php b/modules/fatture/init.php index e57c39498..c4e494cfd 100755 --- a/modules/fatture/init.php +++ b/modules/fatture/init.php @@ -50,7 +50,7 @@ if (isset($id_record)) { (SELECT `is_fiscale` FROM `zz_segments` WHERE `zz_segments`.`id` = `co_documenti`.`id_segment`) AS is_fiscale, (SELECT `descrizione` FROM `co_ritenutaacconto` WHERE `id`=`idritenutaacconto`) AS ritenutaacconto_desc, (SELECT `descrizione` FROM `co_rivalse` WHERE `id`=`idrivalsainps`) AS rivalsainps_desc, - (SELECT `descrizione` FROM `dt_causalet` WHERE `id`=`idcausalet`) AS causale_desc + `dt_causalet_lang`.`name` AS causale_desc FROM `co_documenti` LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') @@ -59,6 +59,8 @@ if (isset($id_record)) { LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento`=`co_pagamenti`.`id` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') + LEFT JOIN `dt_causalet` ON `co_documenti`.`idcausalet`=`dt_causalet`.`id` + LEFT JOIN `dt_causalet_lang` ON (`dt_causalet_lang`.`id_record` = `dt_causalet`.`id` AND `dt_causalet_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_tipidocumento`.`dir` = '.prepare($dir).' AND `co_documenti`.`id`='.prepare($id_record)); // Note di credito collegate diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index 437ff0a84..ece72274f 100755 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -219,7 +219,7 @@ class Fattura extends Document if ($tipo_documento->descrizione == 'Fattura accompagnatoria di vendita') { $model->idporto = database()->fetchOne('SELECT id FROM dt_porto WHERE predefined = 1')['id']; - $model->idcausalet = database()->fetchOne('SELECT id FROM dt_causalet WHERE predefined = 1')['id']; + $model->idcausalet = database()->fetchOne('SELECT `id` FROM `dt_causalet` WHERE `predefined` = 1')['id']; $model->idspedizione = database()->fetchOne('SELECT id FROM dt_spedizione WHERE predefined = 1')['id']; } diff --git a/modules/interventi/add_ddt.php b/modules/interventi/add_ddt.php index b7839200e..6d9be4209 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\'), \' [\', (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" ]}
diff --git a/modules/interventi/edit.php b/modules/interventi/edit.php index a609d2508..56afb188a 100755 --- a/modules/interventi/edit.php +++ b/modules/interventi/edit.php @@ -503,15 +503,20 @@ if (!$block_edit) { $contratti = $dbo->fetchArray($contr_query)[0]['tot']; // 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` - 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_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` + 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'; $ddt = $dbo->fetchArray($ddt_query)[0]['tot']; // Form di inserimento riga documento diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index d1364ab13..ffcf9076d 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -1074,7 +1074,7 @@ class FatturaElettronica $documento = $fattura->getDocumento(); $database = database(); - $causale = $database->fetchOne('SELECT descrizione FROM dt_causalet WHERE id = '.prepare($documento['idcausalet']))['descrizione']; + $causale = $database->fetchOne('SELECT `name` 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($documento['idcausalet']))['name']; $aspetto = $database->fetchOne('SELECT `name` FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `dt_aspettobeni`.`id` = '.prepare($documento['idaspettobeni']))['name']; $result = []; diff --git a/templates/ddt/init.php b/templates/ddt/init.php index b6831a2fb..5dc7ad9a6 100755 --- a/templates/ddt/init.php +++ b/templates/ddt/init.php @@ -33,7 +33,7 @@ $id_sede = $record['idsede_partenza']; $id_azienda = setting('Azienda predefinita'); $pagamento = Pagamento::find($documento['idpagamento']); -$causale = $dbo->fetchOne('SELECT * FROM dt_causalet WHERE id = '.prepare($documento['idcausalet'])); +$causale = $dbo->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($documento['idcausalet'])); $porto = $dbo->fetchOne('SELECT * FROM dt_porto WHERE id = '.prepare($documento['idporto'])); $aspetto_beni = $dbo->fetchOne('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `dt_aspettobeni`.`id` = '.prepare($documento['idaspettobeni'])); $spedizione = $dbo->fetchOne('SELECT * FROM dt_spedizione WHERE id = '.prepare($documento['idspedizione'])); diff --git a/templates/fatture/init.php b/templates/fatture/init.php index dd03e500d..790411fdc 100755 --- a/templates/fatture/init.php +++ b/templates/fatture/init.php @@ -34,7 +34,7 @@ $record = $dbo->fetchOne('SELECT *, `co_tipidocumento_lang`.`name` AS tipo_doc, `co_tipidocumento`.`dir` AS dir, `co_pagamenti_lang`.`name` AS pagamento, - `dt_causalet`.`descrizione` AS causalet, + `dt_causalet_lang`.`name` AS causalet, `dt_porto`.`descrizione` AS porto, `dt_aspettobeni_lang`.`name` AS aspettobeni, `dt_spedizione`.`descrizione` AS spedizione, @@ -45,7 +45,7 @@ $record = $dbo->fetchOne('SELECT *, FROM `co_documenti` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`co_documenti`.`idanagrafica` - LEFT JOIN `an_anagrafiche AS vettore ON vettore.idanagrafica = co_documenti.idvettore + LEFT JOIN `an_anagrafiche` AS vettore ON `vettore`.`idanagrafica` = `co_documenti`.`idvettore` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` @@ -55,6 +55,7 @@ FROM LEFT JOIN `co_banche` ON `co_banche`.`id` = `co_documenti`.`id_banca_azienda` INNER JOIN `zz_segments` ON `co_documenti`.`id_segment` = `zz_segments`.`id` LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `co_documenti`.`idcausalet` + LEFT JOIN `dt_causalet_lang` ON (`dt_causalet_lang`.`id_record` = `dt_causalet`.`id` AND `dt_causalet_lang`.`id_lang` = '.prepare(setting('Lingua')).') LEFT JOIN `dt_porto` ON `dt_porto`.`id` = `co_documenti`.`idporto` LEFT JOIN `dt_aspettobeni` ON `dt_aspettobeni`.`id` = `co_documenti`.`idaspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni_lang`.`id_record` = `dt_aspettobeni`.`id` AND `dt_aspettobeni_lang`.`id_lang` = '.prepare(setting('Lingua')).') diff --git a/update/2_4_55.sql b/update/2_4_55.sql index c10fd2f24..7ae35efc6 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -835,4 +835,95 @@ WHERE HAVING 2=2" WHERE `name` = 'Aspetto beni'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_aspettobeni_lang`.`name`' WHERE `zz_modules`.`name` = 'Aspetto beni' 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_aspettobeni`.`id`' WHERE `zz_modules`.`name` = 'Aspetto beni' AND `zz_views`.`name` = 'id'; \ 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_aspettobeni`.`id`' WHERE `zz_modules`.`name` = 'Aspetto beni' AND `zz_views`.`name` = 'id'; + +-- Aggiunta tabella dt_causalet_lang +CREATE TABLE IF NOT EXISTS `dt_causalet_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `dt_causalet_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `dt_causalet_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `dt_causalet_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `dt_causalet`; + +ALTER TABLE `dt_causalet` + DROP `descrizione`; + +ALTER TABLE `dt_causalet` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT; + +ALTER TABLE `dt_causalet_lang` ADD CONSTRAINT `dt_causalet_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `dt_causalet`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Causali trasporto +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `dt_causalet` + LEFT JOIN `dt_causalet_lang` ON (`dt_causalet_lang`.`id_record` = `dt_causalet`.`id` AND `dt_causalet_lang`.`id_lang` = |lang|) +WHERE + 1=1 AND `deleted_at` IS NULL +HAVING + 2=2" WHERE `name` = 'Causali'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`dt_causalet_lang`.`name`' WHERE `zz_modules`.`name` = 'Causali' 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_causalet`.`id`' WHERE `zz_modules`.`name` = 'Causali' AND `zz_views`.`name` = 'id'; + +-- Allineamento vista Ddt di vendita +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `dt_ddt` + LEFT JOIN `an_anagrafiche` ON `dt_ddt`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` + LEFT JOIN `dt_causalet` ON `dt_ddt`.`idcausalet` = `dt_causalet`.`id` + LEFT JOIN `dt_causalet_lang` ON (`dt_causalet_lang`.`id_record` = `dt_causalet`.`id` AND `dt_causalet_lang`.`id_lang` = |lang|) + LEFT JOIN `dt_spedizione` ON `dt_ddt`.`idspedizione` = `dt_spedizione`.`id` + LEFT JOIN `an_anagrafiche` `vettori` ON `dt_ddt`.`idvettore` = `vettori`.`idanagrafica` + 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 (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 + 1=1 |segment(`dt_ddt`.`id_segment`)| AND `dir` = 'entrata' |date_period(`data`)| +HAVING + 2=2 +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_causalet_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di vendita' AND `zz_views`.`name` = 'Causale'; + +-- Allineamento vista Ddt di acquisto +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `dt_ddt` + LEFT JOIN `an_anagrafiche` ON `dt_ddt`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` + LEFT JOIN `dt_causalet` ON `dt_ddt`.`idcausalet` = `dt_causalet`.`id` + LEFT JOIN `dt_causalet_lang` ON (`dt_causalet_lang`.`id_record` = `dt_causalet`.`id` AND `dt_causalet_lang`.`id_lang` = |lang|) + LEFT JOIN `dt_spedizione` ON `dt_ddt`.`idspedizione` = `dt_spedizione`.`id` + LEFT JOIN `an_anagrafiche` `vettori` ON `dt_ddt`.`idvettore` = `vettori`.`idanagrafica` + 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 (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`)| +HAVING + 2=2 +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_causalet_lang`.`name`' WHERE `zz_modules`.`name` = 'Ddt di acquisto' AND `zz_views`.`name` = 'Causale'; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index a52185845..1862dcc35 100755 --- a/update/tables.php +++ b/update/tables.php @@ -65,6 +65,7 @@ return [ 'dt_aspettobeni', 'dt_aspettobeni_lang', 'dt_causalet', + 'dt_causalet_lang', 'dt_ddt', 'dt_porto', 'dt_righe_ddt',