Aggiunta tabella `dt_statiddt_lang`

This commit is contained in:
Pek5892 2024-02-27 12:55:27 +01:00
parent 7fdf81dafa
commit c39cc5412d
17 changed files with 209 additions and 109 deletions

View File

@ -19,7 +19,7 @@
use Modules\Contratti\Stato as StatoContratto; use Modules\Contratti\Stato as StatoContratto;
use Modules\Fatture\Stato as StatoFattura; use Modules\Fatture\Stato as StatoFattura;
use Modules\Fatture\Tipo; use Modules\DDT\Stato;
use Plugins\ListinoFornitori\DettaglioFornitore; use Plugins\ListinoFornitori\DettaglioFornitore;
// Inizializzazione // Inizializzazione
@ -139,11 +139,11 @@ if (!empty($options['create_document'])) {
// Opzioni aggiuntive per i DDT // Opzioni aggiuntive per i DDT
elseif (in_array($final_module['name'], ['Ddt di vendita', 'Ddt di acquisto'])) { 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 ' echo '
<div class="col-md-6"> <div class="col-md-6">
{[ "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.'" ]}
</div> </div>
<div class="col-md-6"> <div class="col-md-6">

View File

@ -123,7 +123,7 @@ switch (filter('op')) {
$ddt->save(); $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); $rs = $dbo->fetchArray($query);
// Ricalcolo inps, ritenuta e bollo (se l'ddt non è stato evaso) // Ricalcolo inps, ritenuta e bollo (se l'ddt non è stato evaso)

View File

@ -48,7 +48,7 @@ $id_anagrafica = $documento_finale->idanagrafica;
echo ' echo '
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
{[ "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" ]}
</div> </div>
</div> </div>

View File

@ -211,7 +211,7 @@ $operations['cambia_stato'] = [
'data' => [ 'data' => [
'title' => tr('Vuoi davvero cambiare lo stato per questi DDT?'), 'title' => tr('Vuoi davvero cambiare lo stato per questi DDT?'),
'msg' => tr('Seleziona lo stato in cui spostare tutti i DDT').'.<br> 'msg' => tr('Seleziona lo stato in cui spostare tutti i DDT').'.<br>
<br>{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione, colore as _bgcolor_ FROM dt_statiddt" ]}', <br>{[ "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'), 'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-warning', 'class' => 'btn btn-lg btn-warning',
'blank' => false, 'blank' => false,

View File

@ -64,7 +64,7 @@ function completaTrasporto() {
} }
// Informazioni sull'importabilità del DDT // 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) { foreach ($stati as $stato) {
$stati_importabili[] = $stato['descrizione']; $stati_importabili[] = $stato['descrizione'];
} }

View File

@ -121,16 +121,16 @@ if ($righe_vuote) {
if (setting('Cambia automaticamente stato ddt fatturati')) { if (setting('Cambia automaticamente stato ddt fatturati')) {
if ($record['stato'] == 'Fatturato' || $record['stato'] == 'Parzialmente fatturato') { if ($record['stato'] == 'Fatturato' || $record['stato'] == 'Parzialmente fatturato') {
?> ?>
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "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": "<?php echo tr('Stato'); ?>", "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`= <?php echo prepare(setting('Lingua')); ?>) ORDER BY `name`", "value": "$idstatoddt$", "extra": "readonly", "class": "unblockable" ]}
<?php <?php
} else { } else {
?> ?>
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "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": "<?php echo tr('Stato'); ?>", "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`= <?php echo prepare(setting('Lingua')); ?>) WHERE `name` IN('Bozza', 'Evaso', 'Parzialmente evaso') ORDER BY `name`", "value": "$idstatoddt$", "class": "unblockable" ]}
<?php <?php
} }
} else { } else {
?> ?>
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM dt_statiddt ORDER BY descrizione", "value": "$idstatoddt$", "class": "unblockable" ]} {[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "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`= <?php echo prepare(setting('Lingua')); ?>) ORDER BY `name`", "value": "$idstatoddt$", "class": "unblockable" ]}
<?php <?php
} }
?> ?>
@ -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)'; $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']; $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']; $tot_ddt = $dbo->fetchArray($ddt_query)[0]['tot'];
// Form di inserimento riga documento // Form di inserimento riga documento

View File

@ -33,17 +33,19 @@ if ($module['name'] == 'Ddt di vendita') {
if (isset($id_record)) { if (isset($id_record)) {
$ddt = DDT::with('tipo', 'stato')->find($id_record); $ddt = DDT::with('tipo', 'stato')->find($id_record);
$record = $dbo->fetchOne('SELECT dt_ddt.*, $record = $dbo->fetchOne('SELECT `dt_ddt`.*,
dt_ddt.id AS idddt, `dt_ddt`.`id` AS idddt,
dt_statiddt.descrizione AS `stato`, `dt_statiddt_lang`.`name` AS `stato`,
dt_statiddt.completato AS `flag_completato`, `dt_statiddt`.`completato` AS `flag_completato`,
dt_tipiddt.descrizione AS `descrizione_tipodoc`, `dt_tipiddt`.`descrizione` AS `descrizione_tipodoc`,
an_anagrafiche.tipo AS tipo_anagrafica `an_anagrafiche`.`tipo` AS tipo_anagrafica
FROM dt_ddt FROM `dt_ddt`
LEFT OUTER JOIN dt_statiddt ON dt_ddt.idstatoddt=dt_statiddt.id INNER JOIN `dt_statiddt` ON dt_ddt.idstatoddt=dt_statiddt.id
INNER JOIN an_anagrafiche ON dt_ddt.idanagrafica=an_anagrafiche.idanagrafica 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 `an_anagrafiche` ON `dt_ddt`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
WHERE dt_ddt.id='.prepare($id_record)); INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt`=`dt_tipiddt`.`id`
WHERE
`dt_ddt`.`id`='.prepare($id_record));
if (!empty($record)) { if (!empty($record)) {
$record['idporto'] = $record['idporto'] ?: $dbo->fetchOne('SELECT `id` FROM `dt_porto` WHERE `predefined` = 1')['id']; $record['idporto'] = $record['idporto'] ?: $dbo->fetchOne('SELECT `id` FROM `dt_porto` WHERE `predefined` = 1')['id'];

View File

@ -58,17 +58,13 @@ class DDT extends Document
public static function build(Anagrafica $anagrafica, Tipo $tipo_documento, $data, $id_segment = null) public static function build(Anagrafica $anagrafica, Tipo $tipo_documento, $data, $id_segment = null)
{ {
$model = new static(); $model = new static();
$user = \Auth::user(); $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; $direzione = $tipo_documento->dir;
$id_segment = $id_segment ?: getSegmentPredefined($model->getModule()->id); $id_segment = $id_segment ?: getSegmentPredefined($model->getModule()->id);
$database = database();
if ($direzione == 'entrata') { if ($direzione == 'entrata') {
$conto = 'vendite'; $conto = 'vendite';
} else { } else {
@ -131,7 +127,7 @@ class DDT extends Document
public function isImportabile() public function isImportabile()
{ {
$database = database(); $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) { foreach ($stati as $stato) {
$stati_importabili[] = $stato['descrizione']; $stati_importabili[] = $stato['descrizione'];
} }

View File

@ -32,4 +32,34 @@ class Stato extends Model
{ {
return $this->hasMany(DDT::class, 'idstatoddt'); 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();
}
} }

View File

@ -50,7 +50,7 @@ $id_anagrafica = $documento_finale->idanagrafica;
echo ' echo '
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
{[ "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" ]}
</div> </div>
</div> </div>

View File

@ -42,23 +42,28 @@ switch ($resource) {
HAVING SUM(or_righe_ordini.qta - or_righe_ordini.qta_evasa) > 0 HAVING SUM(or_righe_ordini.qta - or_righe_ordini.qta_evasa) > 0
ORDER BY data DESC, numero DESC'; ORDER BY data DESC, numero DESC';
$query_ddt = "SELECT dt_ddt.id, $query_ddt = "SELECT
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, `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 optgroup,
'ddt' AS tipo, 'ddt' AS tipo,
'uscita' AS dir 'uscita' AS dir
FROM dt_ddt FROM `dt_ddt`
INNER JOIN dt_righe_ddt ON dt_righe_ddt.idddt = dt_ddt.id INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
WHERE idanagrafica = ".prepare($id_anagrafica)." AND INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstato` = `dt_statiddt`.`id`
idstatoddt IN ( INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`
SELECT id FROM dt_statiddt WHERE descrizione != 'Fatturato' LEFT JOIN dt_statiddt_lang ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(setting('Lingua')).")
) AND WHERE
idtipoddt IN ( `idanagrafica` = ".prepare($id_anagrafica)." AND
SELECT id FROM dt_tipiddt WHERE dir=".prepare($direzione).' `dt_statiddt_lang`.`name` != 'Fatturato' AND
) AND |where| `dt_tipiddt`.`dir`=".prepare($direzione).'AND
GROUP BY dt_ddt.id |where|
HAVING SUM(dt_righe_ddt.qta - dt_righe_ddt.qta_evasa) > 0 GROUP BY
ORDER BY data DESC, numero DESC'; `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 // Sostituzione per la ricerca
$query_ordini = replace($query_ordini, [ $query_ordini = replace($query_ordini, [
@ -109,23 +114,28 @@ switch ($resource) {
GROUP BY or_ordini.id GROUP BY or_ordini.id
ORDER BY data DESC, numero DESC'; ORDER BY data DESC, numero DESC';
$query_ddt = "SELECT dt_ddt.id, $query_ddt = "SELECT
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, `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 optgroup,
'ddt' AS tipo, 'ddt' AS tipo,
'entrata' AS dir 'entrata' AS dir
FROM dt_ddt FROM `dt_ddt`
INNER JOIN dt_righe_ddt ON dt_righe_ddt.idddt = dt_ddt.id INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
WHERE idarticolo = ".prepare($id_articolo)." AND INNER JOIN `dt_statiddt` ON `dt_ddt`.`idstato` = `dt_statiddt`.`id`
idstatoddt IN ( LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(setting('Lingua')).")
SELECT id FROM dt_statiddt WHERE descrizione != 'Fatturato' INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`
) AND WHERE
idtipoddt IN ( `idarticolo` = ".prepare($id_articolo)." AND
SELECT id FROM dt_tipiddt WHERE dir=".prepare($direzione).' `dt_stati_lang`.`name` != 'Fatturato' AND
) AND |where| `dt_tipiddt`.`dir`=".prepare($direzione).'AND
GROUP BY dt_ddt.id |where|
HAVING SUM(dt_righe_ddt.qta - dt_righe_ddt.qta_evasa) > 0 GROUP BY
ORDER BY data DESC, numero DESC'; `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 // Sostituzione per la ricerca
$query_ordini = replace($query_ordini, [ $query_ordini = replace($query_ordini, [

View File

@ -795,13 +795,14 @@ if (!$block_edit) {
COUNT(*) AS tot COUNT(*) AS tot
FROM FROM
`dt_ddt` `dt_ddt`
LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` INNER JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet`
LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` 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` LEFT JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt`
INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
WHERE WHERE
`idanagrafica`='.prepare($record['idanagrafica']).' `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_tipiddt`.`dir` = '.prepare($dir).'
AND `dt_causalet`.`is_importabile` = 1 AND `dt_causalet`.`is_importabile` = 1
AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0'; AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0';

View File

@ -50,7 +50,7 @@ $id_anagrafica = $documento_finale->idanagrafica;
echo ' echo '
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
{[ "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" ]}
</div> </div>
</div> </div>

View File

@ -504,19 +504,20 @@ if (!$block_edit) {
// Lettura ddt (entrata o uscita) // Lettura ddt (entrata o uscita)
$ddt_query = 'SELECT $ddt_query = 'SELECT
COUNT(*) AS tot COUNT(*) AS tot
FROM FROM
`dt_ddt` `dt_ddt`
LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` 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_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt`
LEFT JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` 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_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` LEFT JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt`
WHERE INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
`idanagrafica`='.prepare($record['idanagrafica']).' WHERE
AND `dt_statiddt`.`descrizione` IN (\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\') `idanagrafica`='.prepare($record['idanagrafica']).'
AND `dt_tipiddt`.`dir` = '.prepare($intervento->direzione).' AND `dt_statiddt_lang`.`name` IN ("Evaso", "Parzialmente evaso", "Parzialmente fatturato")
AND `dt_causalet`.`is_importabile` = 1 AND `dt_tipiddt`.`dir` = '.prepare($intervento->direzione).'
AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0'; AND `dt_causalet`.`is_importabile` = 1
AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0';
$ddt = $dbo->fetchArray($ddt_query)[0]['tot']; $ddt = $dbo->fetchArray($ddt_query)[0]['tot'];
// Form di inserimento riga documento // Form di inserimento riga documento

View File

@ -454,25 +454,29 @@ switch (filter('op')) {
// Se nella fattura elettronica è indicato un DDT cerco quel documento specifico // Se nella fattura elettronica è indicato un DDT cerco quel documento specifico
$ddt = $dati_ddt[$numero_linea]; $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, $query = "SELECT
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 `dt_righe_ddt`.`id`,
FROM dt_righe_ddt `dt_righe_ddt`.`idddt` AS id_documento,
INNER JOIN dt_ddt ON dt_ddt.id = dt_righe_ddt.idddt `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 WHERE
dt_ddt.numero_esterno = ".prepare($ddt['numero']).' `dt_ddt`.`numero_esterno` = ".prepare($ddt['numero']).' AND
AND YEAR(`dt_ddt`.`data`) = '.prepare($ddt['anno']).' AND
YEAR(dt_ddt.data) = '.prepare($ddt['anno']).' `dt_ddt`.`idanagrafica` = '.prepare($anagrafica->id).' AND
AND `dt_righe_ddt`.`qta` > `dt_righe_ddt`.`qta_evasa` AND
dt_ddt.idanagrafica = '.prepare($anagrafica->id).'
AND
dt_righe_ddt.qta > dt_righe_ddt.qta_evasa
AND
|where|'; |where|';
// Ricerca di righe DDT con stesso Articolo // Ricerca di righe DDT con stesso Articolo
if (!empty($id_articolo)) { if (!empty($id_articolo)) {
$query_articolo = replace($query, [ $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); $collegamento = $database->fetchOne($query_articolo);
@ -481,7 +485,7 @@ switch (filter('op')) {
// Ricerca di righe DDT per stessa descrizione // Ricerca di righe DDT per stessa descrizione
if (empty($collegamento)) { if (empty($collegamento)) {
$query_descrizione = replace($query, [ $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); $collegamento = $database->fetchOne($query_descrizione);
@ -532,23 +536,50 @@ switch (filter('op')) {
// Se non ci sono Ordini o DDT cerco per contenuto // Se non ci sono Ordini o DDT cerco per contenuto
if (empty($collegamento)) { if (empty($collegamento)) {
$match_documento_da_fe = false; $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, $query = "SELECT
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 `dt_righe_ddt`.`id`,
FROM dt_righe_ddt `dt_righe_ddt`.`idddt` AS id_documento,
INNER JOIN dt_ddt ON dt_ddt.id = dt_righe_ddt.idddt `dt_righe_ddt`.`is_descrizione`,
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') `dt_righe_ddt`.`idarticolo`,
`dt_righe_ddt`.`is_sconto`,
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, 'ddt' 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 CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`name`, ']') AS opzione
FROM or_righe_ordini FROM
INNER JOIN or_ordini ON or_ordini.id = or_righe_ordini.idordine `dt_righe_ddt`
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')"; 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 // Ricerca di righe DDT/Ordine con stesso Articolo
if (!empty($id_articolo)) { if (!empty($id_articolo)) {
$query_articolo = replace($query, [ $query_articolo = replace($query, [
'|where_ddt|' => 'dt_righe_ddt.idarticolo = '.prepare($id_articolo), '|where_ddt|' => '`dt_righe_ddt`.`idarticolo` = '.prepare($id_articolo),
'|where_ordini|' => 'or_righe_ordini.idarticolo = '.prepare($id_articolo), '|where_ordini|' => '`or_righe_ordini`.`idarticolo` = '.prepare($id_articolo),
]); ]);
$collegamento = $database->fetchOne($query_articolo); $collegamento = $database->fetchOne($query_articolo);
@ -557,8 +588,8 @@ switch (filter('op')) {
// Ricerca di righe DDT/Ordine per stessa descrizione // Ricerca di righe DDT/Ordine per stessa descrizione
if (empty($collegamento)) { if (empty($collegamento)) {
$query_descrizione = replace($query, [ $query_descrizione = replace($query, [
'|where_ddt|' => 'dt_righe_ddt.descrizione = '.prepare($riga['Descrizione']), '|where_ddt|' => '`dt_righe_ddt`.`descrizione` = '.prepare($riga['Descrizione']),
'|where_ordini|' => 'or_righe_ordini.descrizione = '.prepare($riga['Descrizione']), '|where_ordini|' => '`or_righe_ordini`.`descrizione` = '.prepare($riga['Descrizione']),
]); ]);
$collegamento = $database->fetchOne($query_descrizione); $collegamento = $database->fetchOne($query_descrizione);
@ -567,8 +598,8 @@ switch (filter('op')) {
// Ricerca di righe DDT/Ordine per stesso importo // Ricerca di righe DDT/Ordine per stesso importo
if (empty($collegamento)) { if (empty($collegamento)) {
$query_descrizione = replace($query, [ $query_descrizione = replace($query, [
'|where_ddt|' => 'dt_righe_ddt.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']), '|where_ordini|' => '`or_righe_ordini`.`prezzo_unitario` = '.prepare($riga['PrezzoUnitario']),
]); ]);
$collegamento = $database->fetchOne($query_descrizione); $collegamento = $database->fetchOne($query_descrizione);

View File

@ -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_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`.`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 -- Allineamento vista Ddt di vendita
UPDATE `zz_modules` SET `options` = " UPDATE `zz_modules` SET `options` = "
SELECT 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 ON `dt_ddt`.`idsede_partenza` = sedi.`id`
LEFT JOIN `an_sedi` AS `sedi_destinazione`ON `dt_ddt`.`idsede_destinazione` = `sedi_destinazione`.`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 (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 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` 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 WHERE
@ -976,7 +1003,7 @@ ORDER BY
`data` DESC, `data` DESC,
CAST(`numero_esterno` AS UNSIGNED) DESC, CAST(`numero_esterno` AS UNSIGNED) DESC,
`dt_ddt`.`created_at` DESC" WHERE `name` = 'Ddt di vendita'; `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 -- Allineamento vista Ddt di acquisto
UPDATE `zz_modules` SET `options` = " 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 ON `dt_ddt`.`idsede_partenza` = sedi.`id`
LEFT JOIN `an_sedi` AS `sedi_destinazione`ON `dt_ddt`.`idsede_destinazione` = `sedi_destinazione`.`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(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` 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 WHERE
1=1 |segment(`dt_ddt`.`id_segment`)| AND `dir` = 'uscita' |date_period(`data`)| 1=1 |segment(`dt_ddt`.`id_segment`)| AND `dir` = 'uscita' |date_period(`data`)|
@ -1004,4 +1032,4 @@ ORDER BY
`data` DESC, `data` DESC,
CAST(`numero_esterno` AS UNSIGNED) DESC, CAST(`numero_esterno` AS UNSIGNED) DESC,
`dt_ddt`.`created_at` DESC" WHERE `name` = 'Ddt di acquisto'; `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'; 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';

View File

@ -73,6 +73,7 @@ return [
'dt_spedizione', 'dt_spedizione',
'dt_spedizione_lang', 'dt_spedizione_lang',
'dt_statiddt', 'dt_statiddt',
'dt_statiddt_lang',
'dt_tipiddt', 'dt_tipiddt',
'em_print_template', 'em_print_template',
'em_accounts', 'em_accounts',