From 11e73ca2c5d9be44c841474141fbb4e6f01f948f Mon Sep 17 00:00:00 2001 From: Bacca97 Date: Tue, 22 May 2018 14:41:42 +0200 Subject: [PATCH] Miglioramento #216 --- ajax_dataload.php | 4 +- modules/ddt/actions.php | 4 +- modules/ddt/buttons.php | 2 +- modules/ddt/edit.php | 64 ++++++++++++++++++++++-------- modules/ddt/init.php | 2 +- modules/ddt/row-list.php | 2 +- modules/fatture/actions.php | 4 +- modules/fatture/add_ddt.php | 2 +- modules/fatture/crea_documento.php | 2 +- modules/fatture/edit.php | 2 +- modules/ordini/actions.php | 4 +- modules/ordini/buttons.php | 2 +- modules/ordini/edit.php | 52 +++++++++++++++++++----- modules/ordini/init.php | 5 ++- modules/ordini/modutil.php | 54 ++++++++++++++++++++----- modules/ordini/row-list.php | 2 +- update/2_4_1.sql | 34 ++++++++++++++++ 17 files changed, 189 insertions(+), 52 deletions(-) diff --git a/ajax_dataload.php b/ajax_dataload.php index 84799c3ae..de55cf6f5 100644 --- a/ajax_dataload.php +++ b/ajax_dataload.php @@ -102,6 +102,7 @@ if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom // Query effettiva $query = str_replace_once('SELECT', 'SELECT SQL_CALC_FOUND_ROWS', $result_query); + $rs = $dbo->fetchArray($query); // Conteggio dei record filtrati @@ -222,4 +223,5 @@ if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom } } -echo json_encode($results); +$rows = json_encode($results); +echo $rows; diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 8cda1f028..fdf445e4e 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -56,6 +56,7 @@ switch (post('op')) { $data = post('data'); $idanagrafica = post('idanagrafica'); $note = post('note'); + $note_aggiuntive = post('note_aggiuntive'); $idstatoddt = post('idstatoddt'); $idstatoddt = post('idstatoddt'); $idcausalet = post('idcausalet'); @@ -95,6 +96,7 @@ switch (post('op')) { ' idpagamento='.prepare($idpagamento).','. ' numero_esterno='.prepare($numero_esterno).','. ' note='.prepare($note).','. + ' note_aggiuntive='.prepare($note_aggiuntive).','. ' idconto='.prepare($idconto).','. ' idanagrafica='.prepare($idanagrafica).','. ' idsede='.prepare($idsede).','. @@ -490,7 +492,7 @@ switch (post('op')) { } // Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase -if (!empty($id_record)) { +if (!empty($id_record) && get_var('Cambia automaticamente stato ordini fatturati')) { $rs = $dbo->fetchArray('SELECT idordine FROM dt_righe_ddt WHERE idddt='.prepare($id_record)); for ($i = 0; $i < sizeof($rs); ++$i) { diff --git a/modules/ddt/buttons.php b/modules/ddt/buttons.php index 3d2350a20..c43aeb140 100644 --- a/modules/ddt/buttons.php +++ b/modules/ddt/buttons.php @@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php'; if (!in_array($records[0]['stato'], ['Bozza', 'Fatturato'])) { echo ' - + .'.tr('Crea fattura').' '; diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php index 3cd37278a..ac0092bcb 100644 --- a/modules/ddt/edit.php +++ b/modules/ddt/edit.php @@ -64,15 +64,31 @@ if ($module['name'] == 'Ddt di vendita') { ?>
- {[ "type": "text", "label": "", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$" ]} + {[ "type": "text", "label": "", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$", "readonly": "" ]}
- {[ "type": "date", "label": "", "maxlength": 10, "name": "data", "required": 1, "value": "$data$" ]} + {[ "type": "date", "label": "", "maxlength": 10, "name": "data", "required": 1, "value": "$data$", "readonly": "" ]}
- {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "$idstatoddt$" ]} + + {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "$idstatoddt$", "extra": "readonly" ]} + + {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT * FROM dt_statiddt WHERE descrizione IN('Bozza', 'Evaso', 'Parzialmente evaso')", "value": "$idstatoddt$" ]} + + {[ "type": "select", "label": "", "name": "idstatoddt", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "$idstatoddt$" ]} +
@@ -81,18 +97,18 @@ if ($module['name'] == 'Ddt di vendita') { - {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti" ]} + {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti", "readonly": "" ]} - {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "fornitori" ]} + {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "fornitori", "readonly": "" ]}
- {[ "type": "select", "label": "", "name": "idsede", "values": "query=SELECT id, CONCAT_WS(', ', nomesede, citta) AS descrizione FROM an_sedi WHERE (idanagrafica='$idanagrafica$' OR idanagrafica=(SELECT valore FROM zz_settings WHERE nome='Azienda predefinita')) UNION SELECT '0' AS id, 'Sede legale' AS descrizione ORDER BY descrizione", "value": "$idsede$" ]} + {[ "type": "select", "label": "", "name": "idsede", "values": "query=SELECT id, CONCAT_WS(', ', nomesede, citta) AS descrizione FROM an_sedi WHERE (idanagrafica='$idanagrafica$' OR idanagrafica=(SELECT valore FROM zz_settings WHERE nome='Azienda predefinita')) UNION SELECT '0' AS id, 'Sede legale' AS descrizione ORDER BY descrizione", "value": "$idsede$", "readonly": "" ]}
@@ -100,47 +116,53 @@ if ($module['name'] == 'Ddt di vendita') {
- {[ "type": "select", "label": "", "name": "idaspettobeni", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_aspettobeni ORDER BY descrizione ASC", "value": "$idaspettobeni$" ]} + {[ "type": "select", "label": "", "name": "idaspettobeni", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_aspettobeni ORDER BY descrizione ASC", "value": "$idaspettobeni$", "readonly": "" ]}
- {[ "type": "select", "label": "", "name": "idcausalet", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_causalet ORDER BY descrizione ASC", "value": "$idcausalet$" ]} + {[ "type": "select", "label": "", "name": "idcausalet", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_causalet ORDER BY descrizione ASC", "value": "$idcausalet$", "readonly": "" ]}
- {[ "type": "select", "label": "", "name": "idporto", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_porto ORDER BY descrizione ASC", "value": "$idporto$" ]} + {[ "type": "select", "label": "", "name": "idporto", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_porto ORDER BY descrizione ASC", "value": "$idporto$", "readonly": "" ]}
- {[ "type": "text", "label": "", "name": "n_colli", "value": "$n_colli$" ]} + {[ "type": "text", "label": "", "name": "n_colli", "value": "$n_colli$", "readonly": "" ]}
- {[ "type": "select", "label": "", "name": "idpagamento", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento$" ]} + {[ "type": "select", "label": "", "name": "idpagamento", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento$", "readonly": "" ]}
- {[ "type": "select", "label": "", "name": "idspedizione", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_spedizione ORDER BY descrizione ASC", "value": "$idspedizione$" ]} + {[ "type": "select", "label": "", "name": "idspedizione", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_spedizione ORDER BY descrizione ASC", "value": "$idspedizione$", "readonly": "" ]}
- {[ "type": "select", "label": "", "name": "idvettore", "values": "query=SELECT DISTINCT an_anagrafiche.idanagrafica AS id, an_anagrafiche.ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE an_tipianagrafiche_anagrafiche.idtipoanagrafica=(SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Vettore') ORDER BY descrizione ASC", "value": "$idvettore$" ]} + {[ "type": "select", "label": "", "name": "idvettore", "values": "query=SELECT DISTINCT an_anagrafiche.idanagrafica AS id, an_anagrafiche.ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE an_tipianagrafiche_anagrafiche.idtipoanagrafica=(SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Vettore') ORDER BY descrizione ASC", "value": "$idvettore$", "readonly": "" ]}
- {[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "icon-after": "choice|untprc|$tipo_sconto_globale$" ]} + {[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "icon-after": "choice|untprc|$tipo_sconto_globale$", "readonly": "" ]}
- {[ "type": "textarea", "label": "", "name": "note", "value": "$note$" ]} + {[ "type": "textarea", "label": "", "name": "note", "value": "$note$", "readonly": "" ]}
+ +
+
+ {[ "type": "textarea", "label": "", "name": "note_aggiuntive", "help": "", "value": "$note_aggiuntive$" ]} +
+
@@ -156,7 +178,7 @@ if ($module['name'] == 'Ddt di vendita') {
@@ -237,3 +259,13 @@ if (!empty($fatture)) { + + diff --git a/modules/ddt/init.php b/modules/ddt/init.php index 3a6905fa9..fb73ecbba 100644 --- a/modules/ddt/init.php +++ b/modules/ddt/init.php @@ -3,5 +3,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $records = $dbo->fetchArray('SELECT *, dt_ddt.note, dt_ddt.idpagamento, dt_ddt.id AS idddt, dt_statiddt.descrizione AS `stato`, dt_tipiddt.descrizione AS `descrizione_tipodoc` 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)); + $records = $dbo->fetchArray('SELECT *, dt_ddt.note, dt_ddt.idpagamento, dt_ddt.id AS idddt, dt_statiddt.descrizione AS `stato`, dt_tipiddt.descrizione AS `descrizione_tipodoc`, (SELECT completato FROM dt_statiddt WHERE dt_statiddt.id=dt_ddt.idstatoddt) AS flag_completato 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)); } diff --git a/modules/ddt/row-list.php b/modules/ddt/row-list.php index 05741cd9e..85fad83e3 100644 --- a/modules/ddt/row-list.php +++ b/modules/ddt/row-list.php @@ -152,7 +152,7 @@ if (!empty($rs)) { // Possibilità di rimuovere una riga solo se il ddt non è evaso echo ' '; - if ($records[0]['stato'] != 'Evaso' && empty($r['sconto_globale'])) { + if ($records[0]['flag_completato']==0 && empty($r['sconto_globale'])) { echo "
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index e092c25dd..fddebe162 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -1446,7 +1446,7 @@ switch (post('op')) { } // Aggiornamento stato dei ddt presenti in questa fattura in base alle quantità totali evase -if (!empty($id_record)) { +if (!empty($id_record) && get_var('Cambia automaticamente stato ddt fatturati')) { $rs = $dbo->fetchArray('SELECT idddt FROM co_righe_documenti WHERE iddocumento='.prepare($id_record)); for ($i = 0; $i < sizeof($rs); ++$i) { @@ -1455,7 +1455,7 @@ if (!empty($id_record)) { } // Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase -if (!empty($id_record)) { +if (!empty($id_record) && get_var('Cambia automaticamente stato ordini fatturati')) { $rs = $dbo->fetchArray('SELECT idordine FROM co_righe_documenti WHERE iddocumento='.prepare($id_record)); for ($i = 0; $i < sizeof($rs); ++$i) { diff --git a/modules/fatture/add_ddt.php b/modules/fatture/add_ddt.php index b8a8c0794..d4a36ea3b 100644 --- a/modules/fatture/add_ddt.php +++ b/modules/fatture/add_ddt.php @@ -19,7 +19,7 @@ $idanagrafica = $record[0]['idanagrafica']; echo '
- {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_ddt", "required": 1, "values": "query=SELECT dt_ddt.id, CONCAT(\'nr. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione FROM dt_ddt WHERE idanagrafica='.prepare($idanagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') 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_ddt", "required": 1, "values": "query=SELECT dt_ddt.id, CONCAT(\'nr. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione FROM dt_ddt WHERE idanagrafica='.prepare($idanagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') 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/crea_documento.php b/modules/fatture/crea_documento.php index 2f32ea1f7..8ad2234ac 100644 --- a/modules/fatture/crea_documento.php +++ b/modules/fatture/crea_documento.php @@ -101,7 +101,7 @@ if (!empty($rs)) { if ($module_name=='Fatture di vendita' || $module_name == 'Fatture di acquisto'){ echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.Modules::get($module_name)['id_segment'].'" ]} + {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.$_SESSION['m'.Modules::get($module_name)['id']]['id_segment'].'" ]}
'; } diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 80b6f4064..9c2ae032f 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -305,7 +305,7 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') { '; // Lettura ddt - $ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') 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 WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') 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 = $dbo->fetchArray($ddt_query)[0]['tot']; echo ' diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 8db4e8304..888515988 100644 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -43,7 +43,7 @@ switch (post('op')) { $idpagamento = get_var('Tipo di pagamento predefinito'); } - $query = 'INSERT INTO or_ordini( numero, numero_esterno, idanagrafica, idtipoordine, idpagamento, data, idstatoordine ) VALUES ( '.prepare($numero).', '.prepare($numero_esterno).', '.prepare($idanagrafica).', '.prepare($idtipoordine).', '.prepare($idpagamento).', '.prepare($data).", (SELECT `id` FROM `or_statiordine` WHERE `descrizione`='Non evaso') )"; + $query = 'INSERT INTO or_ordini( numero, numero_esterno, idanagrafica, idtipoordine, idpagamento, data, idstatoordine ) VALUES ( '.prepare($numero).', '.prepare($numero_esterno).', '.prepare($idanagrafica).', '.prepare($idtipoordine).', '.prepare($idpagamento).', '.prepare($data).", (SELECT `id` FROM `or_statiordine` WHERE `descrizione`='Bozza') )"; $dbo->query($query); $id_record = $dbo->lastInsertedID(); @@ -61,6 +61,7 @@ switch (post('op')) { $data = $post['data']; $idanagrafica = post('idanagrafica'); $note = post('note'); + $note_aggiuntive = post('note_aggiuntive'); $idstatoordine = post('idstatoordine'); $idpagamento = post('idpagamento'); $idsede = post('idsede'); @@ -97,6 +98,7 @@ switch (post('op')) { ' idsede='.prepare($idsede).','. ' numero_esterno='.prepare($numero_esterno).','. ' note='.prepare($note).','. + ' note_aggiuntive='.prepare($note_aggiuntive).','. ' idconto='.prepare($idconto).','. ' idrivalsainps='.prepare($idrivalsainps).','. ' idritenutaacconto='.prepare($idritenutaacconto).','. diff --git a/modules/ordini/buttons.php b/modules/ordini/buttons.php index 277094f00..ea504f462 100644 --- a/modules/ordini/buttons.php +++ b/modules/ordini/buttons.php @@ -2,7 +2,7 @@ include_once __DIR__.'/../../core.php'; -if (!in_array($records[0]['stato'], ['Evaso'])) { +if (!in_array($records[0]['stato'], ['Evaso', 'Fatturato', 'Parzialmente fatturato'])) { echo '
- {[ "type": "select", "label": "", "name": "idpagamento", "required": 1, "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento$" ]} + {[ "type": "select", "label": "", "name": "idpagamento", "required": 1, "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento$", "readonly": "" ]}
- {[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "icon-after": "choice|untprc|$tipo_sconto_globale$" ]} + {[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "icon-after": "choice|untprc|$tipo_sconto_globale$", "readonly": "" ]}
- {[ "type": "textarea", "label": "", "name": "note", "value": "$note$" ]} + {[ "type": "textarea", "label": "", "name": "note", "value": "$note$", "readonly": "" ]} +
+
+ +
+
+ {[ "type": "textarea", "label": "", "name": "note_aggiuntive", "help": "", "value": "$note_aggiuntive$" ]}
@@ -90,7 +112,7 @@ if ($module['name'] == 'Ordini cliente') {
@@ -161,3 +183,13 @@ if (!empty($elementi)) { + + diff --git a/modules/ordini/init.php b/modules/ordini/init.php index 317177138..cec7307e2 100644 --- a/modules/ordini/init.php +++ b/modules/ordini/init.php @@ -4,8 +4,9 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { // Aggiornamento stato di questo ordine (?) - if (!empty(get_stato_ordine($id_record))) + if (!empty(get_stato_ordine($id_record)) && get_var('Cambia automaticamente stato ordini fatturati')){ $dbo->query( 'UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($id_record).'") WHERE id='.prepare($id_record) ); + } - $records = $dbo->fetchArray('SELECT *, or_ordini.note, or_ordini.idpagamento, or_ordini.id AS idordine, or_statiordine.descrizione AS `stato`, or_tipiordine.descrizione AS `descrizione_tipodoc` FROM ((or_ordini LEFT OUTER JOIN or_statiordine ON or_ordini.idstatoordine=or_statiordine.id) INNER JOIN an_anagrafiche ON or_ordini.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN or_tipiordine ON or_ordini.idtipoordine=or_tipiordine.id WHERE or_ordini.id='.prepare($id_record)); + $records = $dbo->fetchArray('SELECT *, or_ordini.note, or_ordini.idpagamento, or_ordini.id AS idordine, or_statiordine.descrizione AS `stato`, or_tipiordine.descrizione AS `descrizione_tipodoc`, (SELECT completato FROM or_statiordine WHERE or_statiordine.id=or_ordini.idstatoordine) AS flag_completato FROM ((or_ordini LEFT OUTER JOIN or_statiordine ON or_ordini.idstatoordine=or_statiordine.id) INNER JOIN an_anagrafiche ON or_ordini.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN or_tipiordine ON or_ordini.idtipoordine=or_tipiordine.id WHERE or_ordini.id='.prepare($id_record)); } diff --git a/modules/ordini/modutil.php b/modules/ordini/modutil.php index 820c22a39..68a75d195 100644 --- a/modules/ordini/modutil.php +++ b/modules/ordini/modutil.php @@ -275,16 +275,48 @@ function ricalcola_costiagg_ordine($idordine, $idrivalsainps = '', $idritenutaac function get_stato_ordine($idordine) { global $dbo; - - $rs = $dbo->fetchArray('SELECT SUM(qta) AS qta, SUM(qta_evasa) AS qta_evasa FROM or_righe_ordini GROUP BY idordine HAVING idordine='.prepare($idordine)); - - if ($rs[0]['qta_evasa'] > 0) { - if ($rs[0]['qta'] > $rs[0]['qta_evasa']) { - return 'Parzialmente evaso'; - } elseif ($rs[0]['qta'] == $rs[0]['qta_evasa']) { - return 'Evaso'; - } - } else { - return 'Non evaso'; + + $rs_ordine = $dbo->fetchArray("SELECT IFNULL(SUM(qta), 0) AS qta FROM or_righe_ordini WHERE idordine='".$idordine."'"); + $qta_ordine = $rs_ordine[0]['qta']; + + //Righe dell'ordine in ddt + $rs_ddt = $dbo->fetchArray('SELECT IFNULL(SUM(qta), 0) AS qta FROM dt_righe_ddt WHERE idordine='.prepare($idordine)); + $qta_ddt = $rs_ddt[0]['qta']; + + //Righe dell'ordine in fattura + $rs_fattura = $dbo->fetchArray('SELECT IFNULL(SUM(qta), 0) AS qta FROM co_righe_documenti WHERE idordine='.prepare($idordine)); + $qta_fattura = $rs_fattura[0]['qta']; + + //Righe dell'ordine in fattura passando da ddt + $rs_ddt_fattura = $dbo->fetchArray("SELECT IFNULL(SUM(qta), 0) AS qta FROM co_righe_documenti WHERE idddt IN(SELECT DISTINCT idddt FROM dt_righe_ddt WHERE idordine='".$idordine."')"); + $qta_ddt_fattura = $rs_ddt_fattura[0]['qta']; + + + if($qta_ddt==0){ + $stato = 'Bozza'; } + if($qta_fattura==0){ + $stato = 'Bozza'; + } + if($qta_ddt>0 && $qta_ddt<$qta_ordine && $qta_ordine > 0 ){ + $stato = 'Parzialmente evaso'; + } + if($qta_ddt==$qta_ordine && $qta_ordine > 0 ){ + $stato = 'Evaso'; + } + if( $qta_fattura>0 && $qta_fattura<$qta_ordine && $qta_ordine > 0 ){ + $stato = 'Parzialmente fatturato'; + } + if( $qta_fattura == $qta_ordine && $qta_ordine > 0 ){ + $stato = 'Fatturato'; + } + if($qta_ddt_fattura>0 && $qta_ddt_fattura<$qta_ordine && $qta_ordine > 0){ + $stato = 'Parzialmente fatturato'; + } + if($qta_ddt_fattura==$qta_ordine && $qta_ordine > 0){ + $stato = 'Fatturato'; + } + + return $stato; + } diff --git a/modules/ordini/row-list.php b/modules/ordini/row-list.php index a32074d8d..79256b7bc 100644 --- a/modules/ordini/row-list.php +++ b/modules/ordini/row-list.php @@ -145,7 +145,7 @@ if (!empty($rs)) { echo ' '; - if ($records[0]['stato'] != 'Evaso' && empty($r['sconto_globale'])) { + if ( $records[0]['flag_completato'] == 0 && empty($r['sconto_globale']) ) { echo " diff --git a/update/2_4_1.sql b/update/2_4_1.sql index 0da382676..85263fdbd 100644 --- a/update/2_4_1.sql +++ b/update/2_4_1.sql @@ -177,5 +177,39 @@ UPDATE `zz_views` SET `query` = '(SELECT SUM(round(subtotale,2) - round(sconto,2 -- Fix arrotondamenti per fatture di acquisto UPDATE `zz_views` SET `query` = '(SELECT SUM(round(subtotale,2) - round(sconto,2) + round(iva,2) + round(rivalsainps,2) - round(ritenutaacconto,2)) FROM co_righe_documenti WHERE co_righe_documenti.iddocumento=co_documenti.id GROUP BY iddocumento ) + round(bollo,2) + round(iva_rivalsainps,2)' WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di acquisto') AND name = 'Totale'; +-- Aggiunta impostiazioni per cambio sato automatici +INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'Cambia automaticamente stato ddt fatturati', '1', 'boolean', '1', 'Ddt'); +INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'Cambia automaticamente stato ordini fatturati', '1', 'boolean', '1', 'Ordini'); +-- Aggiungo stato parzialmente evaso +INSERT INTO `dt_statiddt` (`id`, `descrizione`, `icona`, `completato`) VALUES (NULL, 'Parzialmente evaso', 'fa fa-clock-o text-info', '0'); + +-- Flag completato per disabilitare la modifica dei campi nei ddt +ALTER TABLE `dt_statiddt` ADD `completato` TINYINT(1) NOT NULL AFTER `icona`; +UPDATE `dt_statiddt` SET `completato` = '1' WHERE `dt_statiddt`.`descrizione` IN( 'Fatturato', 'Parzialmente fatturato', 'Evaso', 'Parzialmente evaso' ); + +-- Modifico le icone degli stati ddt +UPDATE `dt_statiddt` SET `icona` = 'fa fa-truck text-success' WHERE `dt_statiddt`.`descrizione` = 'Evaso'; +UPDATE `dt_statiddt` SET `icona` = 'fa fa-truck text-warning' WHERE `dt_statiddt`.`descrizione` = 'Parzialmente evaso'; +UPDATE `dt_statiddt` SET `icona` = 'fa fa-file-text-o text-success' WHERE `dt_statiddt`.`descrizione` = 'Fatturato'; +UPDATE `dt_statiddt` SET `icona` = 'fa fa-file-text-o text-warning' WHERE `dt_statiddt`.`descrizione` = 'Parzialmente fatturato'; + +-- Modifico gli stati dell'ordine +UPDATE `or_statiordine` SET `descrizione` = 'Bozza' WHERE `or_statiordine`.`descizione` = 'Non evaso'; + +-- Modifico le icone degli stati ordini +UPDATE `or_statiordine` SET `icona` = 'fa fa-truck text-success' WHERE `or_statiordine`.`descrizione` = 'Evaso'; + +-- Inserisco due nuovi stati ordine +INSERT INTO `or_statiordine` (`id`, `descrizione`, `annullato`, `icona`) VALUES +(NULL, 'Parzialmente fatturato', 0, 'fa fa-file-text-o text-warning'), +(NULL, 'Fatturato', 0, 'fa fa-file-text-o text-success'); + +-- Flag completato per disabilitare la modifica dei campi negli ordini +ALTER TABLE `or_statiordine` ADD `completato` TINYINT(1) NOT NULL AFTER `icona`; +UPDATE `or_statiordine` SET `completato` = '1' WHERE `or_statiordine`.`id` IN( 2, 3, 4, 5 ); + +-- Campi per note aggiuntive in ddt e ordini +ALTER TABLE `or_ordini` ADD `note_aggiuntive` TEXT NOT NULL AFTER `note`; +ALTER TABLE `dt_ddt` ADD `note_aggiuntive` TEXT NOT NULL AFTER `note`;