diff --git a/ajax.php b/ajax.php index 0ea57078a..0701c2623 100644 --- a/ajax.php +++ b/ajax.php @@ -43,6 +43,13 @@ switch (get('op')) { unset($_SESSION[$array[0]][$array[1]]); } else { $_SESSION[$array[0]][$array[1]] = $value; + + echo $array[0]; + echo $array[1]; + + echo $_SESSION[$array[0]][$array[1]]; + print_r($_SESSION); + } break; diff --git a/core.php b/core.php index 736507645..631db4b05 100644 --- a/core.php +++ b/core.php @@ -174,12 +174,7 @@ if (!API::isAPIRequest()) { } elseif (!isset($_SESSION['period_start'])) { $_SESSION['period_start'] = date('Y').'-01-01'; $_SESSION['period_end'] = date('Y').'-12-31'; - } - - // Impostazione automatica dei segments - (empty($_SESSION[14]['id_segment'])) ? $_SESSION[14]['id_segment'] = get_var('Sezionale predefinito fatture di vendita') : ''; - (empty($_SESSION[15]['id_segment'])) ? $_SESSION[15]['id_segment'] = get_var('Sezionale predefinito fatture di acquisto'): ''; - + } // Impostazione del tema grafico di default $theme = !empty($theme) ? $theme : 'default'; diff --git a/lib/functions.js b/lib/functions.js index 0943f5f3c..384a2c106 100644 --- a/lib/functions.js +++ b/lib/functions.js @@ -1116,6 +1116,8 @@ function session_set(session_array, value, clear, reload) { return $.get(globals.rootdir + "/ajax.php?op=session_set&session=" + session_array + "&value=" + value + "&clear=" + clear, function(data, status){ + //alert (session_array); + //alert (value); if (reload==1) location.reload(); diff --git a/modules/fatture/add.php b/modules/fatture/add.php index 727c63b38..5bc653dbc 100644 --- a/modules/fatture/add.php +++ b/modules/fatture/add.php @@ -33,9 +33,8 @@ if ($module['name'] == 'Fatture di vendita') {
{[ "type": "select", "label": "", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir=''", "value": "" ]}
-
- {[ "type": "select", "label": "", "name": "id_segment", "required": 1, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='' ORDER BY name", "value": "", "extra": "" ]} + {[ "type": "select", "label": "", "name": "id_segment", "required": 1, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='' ORDER BY name", "value": "", "extra": "" ]}
diff --git a/modules/fatture/controller_before.php b/modules/fatture/controller_before.php index d4a32b55b..987e9c467 100644 --- a/modules/fatture/controller_before.php +++ b/modules/fatture/controller_before.php @@ -1,32 +1,14 @@ fetchArray("SELECT id FROM zz_segments WHERE predefined = 1 AND id_module = ".prepare($id_module)."LIMIT 0,1"); + $_SESSION['m'.$id_module]['id_segment'] = $rs[0]['id']; } - else{ - - if ($id_module=='14') - (!empty($_SESSION[$id_module]['id_segment'])) ? $id_segment = $_SESSION[$id_module]['id_segment'] :$id_segment = get_var("Sezionale predefinito fatture di vendita"); - - if ($id_module=='15') - $id_segment = get_var('Sezionale predefinito fatture di acquisto'); - - - $_SESSION[$id_module]['id_segment'] = $id_segment; - } - */ - - ?> -
- {[ "type": "select", "label": "Sezionale", "name": "idsezionale_", "required": 0, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module = ''", "value": "", "extra": "" ]} + {[ "type": "select", "label": "", "name": "idsezionale_", "required": 0, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module = ''", "value": "", "extra": "" ]}
@@ -37,9 +19,9 @@ $(document).ready(function () { $("#idsezionale_").on("change", function(){ if ($(this).val()<1){ - session_set(',id_segment', '', 1, 1); + session_set(',id_segment', '', 1, 1); }else{ - session_set(',id_segment', $(this).val(), 0, 1); + session_set(',id_segment', $(this).val(), 0, 1); } }); diff --git a/modules/segmenti/actions.php b/modules/segmenti/actions.php index 110520e5b..339b67cfa 100644 --- a/modules/segmenti/actions.php +++ b/modules/segmenti/actions.php @@ -10,8 +10,15 @@ switch (post('op')) { (strpos(post('pattern'), '#') !== false) ? $pattern = post('pattern') : $maschera = '####'; $id_module_ = post('id_module_'); $note = post('note'); - - $query = "UPDATE zz_segments SET name=\"$name\", category=\"$category\", pattern=\"$pattern\", id_module=\"$id_module_\", note=\"$note\" WHERE id=\"$id_record\""; + $predefined = $post['predefined']; + + if (count($dbo->query("SELECT id FROM zz_segments WHERE id_module = \"$id_module_\"")==0)) + $predefined = 1; + + if ($predefined) + $dbo->query("UPDATE zz_segments SET predefined = 0 WHERE id_module = \"$id_module_\""); + + $query = "UPDATE zz_segments SET name=\"$name\", pattern=\"$pattern\", id_module=\"$id_module_\", note=\"$note\", predefined=\"$predefined\" WHERE id=\"$id_record\""; $rs = $dbo->query($query); @@ -26,8 +33,15 @@ switch (post('op')) { (strpos(post('pattern'), '#') !== false) ? $pattern = post('pattern') : $pattern = '####'; $id_module_ = post('id_module_'); $note = post('note'); - - $dbo->query("INSERT INTO zz_segments( name, category, pattern, id_module, note ) VALUES ( \"$name\", \"$category\", \"$pattern\", \"$id_module_\", \"$note\" )"); + $predefined = $post['predefined']; + + if (count($dbo->query("SELECT id FROM zz_segments WHERE id_module = \"$id_module_\"")==0)) + $predefined = 1; + + if ($predefined) + $dbo->query("UPDATE zz_segments SET predefined = 0 WHERE id_module = \"$id_module_\""); + + $dbo->query("INSERT INTO zz_segments( name, pattern, id_module, note, predefined ) VALUES ( \"$name\", \"$pattern\", \"$id_module_\", \"$note\", \"$predefined\" )"); $id_record = $dbo->last_inserted_id(); $_SESSION['infos'][] = tr('Nuovo segmento aggiunto.'); diff --git a/modules/segmenti/add.php b/modules/segmenti/add.php index 1d87bd5ac..cd2066ed7 100644 --- a/modules/segmenti/add.php +++ b/modules/segmenti/add.php @@ -4,21 +4,26 @@
-
+
{[ "type": "text", "label": "", "name": "name", "required": 1, "class": "", "value": "$name$", "extra": "" ]}
-
- {[ "type": "text", "label": "", "name": "category", "required": 1, "class": "", "value": "$category$", "extra": "" ]} -
- -
+
{[ "type": "text", "label": "", "name": "pattern", "required": 1, "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YY", "extra": "" ]}
-
+ +
+ +
+ +
{[ "type": "select", "label": "", "name": "id_module_", "required": 1, "class": "", "values": "list=\"14\": \"Fatture di vendita\", \"15\": \"Fatture di acquisto\"", "value": "$id_module$", "extra": "" ]}
+ +
+ {[ "type": "checkbox", "label": "", "name": "predefined", "value": "0", "help": "", "placeholder": "" ]} +
diff --git a/modules/segmenti/edit.php b/modules/segmenti/edit.php index 7e8ce496c..f47c8dc80 100644 --- a/modules/segmenti/edit.php +++ b/modules/segmenti/edit.php @@ -16,11 +16,6 @@ {[ "type": "text", "label": "", "name": "name", "required": 1, "class": "", "value": "$name$", "extra": "" ]}
-
- {[ "type": "text", "label": "", "name": "category", "required": 1, "class": "", "value": "$category$", "extra": "" ]} -
- -
{[ "type": "text", "label": "", "name": "pattern", "required": 1, "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YY", "extra": "" ]}
@@ -29,6 +24,13 @@ {[ "type": "select", "label": "", "name": "id_module_", "required": 1, "class": "", "values": "list=\"14\": \"Fatture di vendita\", \"15\": \"Fatture di acquisto\"", "value": "$id_module$", "extra": "" ]}
+
+ + {[ "type": "checkbox", "label": "", "name": "predefined", "value": "$predefined$", "help": "", "placeholder": "", "extra": "" ]} +
+
@@ -69,21 +71,23 @@ fetchArray('SELECT COUNT(*) AS tot_fatture FROM co_documenti WHERE id_segment='.prepare($id_record)); - $tot_fatture = $fatture[0]['tot_fatture']; - if ($tot_fatture > 0) { + + $array = preg_match('/(?<=FROM)\s([^\s]+)\s/', $records[0]['options'], $table); + + $righe = $dbo->fetchArray("SELECT COUNT(*) AS tot FROM ".$table[0]." WHERE id_segment = ".prepare($id_record)); + $tot = $righe[0]['tot']; + + if ($tot > 0) { echo "
"; - echo tr("Ci sono _TOT_ fatture collegate a questo segmento del modulo '_MODULO_'. Il comando elimina è stato disattivato, eliminare le fatture per attivare il comando 'Elimina segmento'.", [ - '_TOT_' => $tot_fatture, + echo tr("Ci sono _TOT_ righe collegate al segmento per il modulo '_MODULO_'. Il comando elimina è stato disattivato, eliminare le righe per attivare il comando 'Elimina segmento'.", [ + '_TOT_' => $tot, '_MODULO_' => $records[0]['modulo'], ]); echo "
"; - - } else if ($records[0]['n_sezionali']<2) { echo "
"; @@ -94,7 +98,21 @@ echo "
"; - }else{ + }else if ($records[0]['predefined']) { + + echo "
"; + + echo tr("Questo è il segmento predefinito per il modulo '_MODULO_'. Il comando elimina è stato disattivato.", [ + '_MODULO_' => $records[0]['modulo'], + ]); + + echo "
"; + + } + + + + else{ ?>
diff --git a/modules/segmenti/init.php b/modules/segmenti/init.php index c47303cca..b73f01b3b 100644 --- a/modules/segmenti/init.php +++ b/modules/segmenti/init.php @@ -2,4 +2,4 @@ if ($docroot == '') { die(_('Accesso negato!')); } - $records = $dbo->fetchArray("SELECT *, (SELECT name FROM zz_modules WHERE id = zz_segments.id_module) AS modulo, (SELECT COUNT(t.id) FROM zz_segments t WHERE t.id_module = zz_segments.id_module) AS n_sezionali FROM zz_segments WHERE id='$id_record'"); \ No newline at end of file + $records = $dbo->fetchArray("SELECT *, (SELECT options FROM zz_modules WHERE id = zz_segments.id_module) options, (SELECT name FROM zz_modules WHERE id = zz_segments.id_module) AS modulo, (SELECT COUNT(t.id) FROM zz_segments t WHERE t.id_module = zz_segments.id_module) AS n_sezionali FROM zz_segments WHERE id='$id_record'"); \ No newline at end of file diff --git a/src/App.php b/src/App.php index b2e01b705..580bd8b1d 100644 --- a/src/App.php +++ b/src/App.php @@ -326,6 +326,7 @@ class App public static function replacePlaceholder($query, $custom = null) { + $id_module = filter('id_module'); $user = Auth::user(); // Sostituzione degli identificatori @@ -335,15 +336,9 @@ class App // Sostituzione delle date $query = str_replace(['|period_start|', '|period_end|'], [$_SESSION['period_start'], $_SESSION['period_end']], $query); - // Sostituzione dei sezionali - $sezionali = [ - '|sezionale_entrata|' => $_SESSION[14]['id_segment'], - '|sezionale_uscita|' => $_SESSION[15]['id_segment'], - ]; - foreach ($sezionali as $key => $value) { - $query = str_replace($key, !empty($value) ? ' AND id_segment = '.prepare($value) : '', $query); - } - + // Sostituzione dei segmenti + $query = str_replace('|segment|', !empty($_SESSION['m'.$id_module]['id_segment']) ? ' AND id_segment = '.prepare($_SESSION['m'.$id_module]['id_segment']) : '', $query); + return $query; } diff --git a/update/2_4.sql b/update/2_4.sql index b079e4d9c..9ff6318d7 100644 --- a/update/2_4.sql +++ b/update/2_4.sql @@ -165,17 +165,17 @@ ALTER TABLE `co_documenti` ADD `id_segment` int(11) NOT NULL ; CREATE TABLE IF NOT EXISTS `zz_segments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_module` int(11) NOT NULL, - `category` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `pattern` varchar(255) NOT NULL, `note` text NOT NULL, + `predefined` BOOLEAN NOT NULL, PRIMARY KEY (`id`) ); -- Popolo con i segmenti di default -INSERT INTO `zz_segments` (`id`, `id_module`, `category`, `name`, `pattern`,`note`) VALUES -(1, 14, 'Fatture', 'Standard vendite', '####/YY', ''), -(2, 15, 'Fatture', 'Standard acquisti', '####', ''); +INSERT INTO `zz_segments` (`id`, `id_module`, `name`, `pattern`,`note`, `predefined`) VALUES +(1, 14, 'Standard vendite', '####/YY', '', 1), +(2, 15, 'Standard acquisti', '####', '', 1); -- Collego le fatture esistenti al segmento di default UPDATE `co_documenti` SET `id_segment`='1' WHERE `idtipodocumento` IN (SELECT `id` FROM `co_tipidocumento` WHERE `co_tipidocumento`.`dir`='entrata'); @@ -183,25 +183,20 @@ UPDATE `co_documenti` SET `id_segment`='2' WHERE `idtipodocumento` IN (SELECT `i -- Innesto modulo segmenti sotto "Strumenti" INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES -(NULL, 'Segmenti', 'Segmenti', 'segmenti', '{ "main_query": [ { "type": "table", "fields": "Modulo, Categoria, Nome, Maschera, Note", "query": "SELECT `id`, `category` AS `Categoria`, `name` AS `Nome`, (SELECT name FROM zz_modules WHERE id = zz_segments.id_module) AS Modulo, `pattern` AS `Maschera`, `note` AS `Note` FROM `zz_segments` HAVING 2=2 ORDER BY name, id_module"} ]}', '', 'fa fa-database', '2.4', '2.4', 1, 36, 1, 1); - --- Aggiungo impostazione predefinita -INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES -(NULL, 'Sezionale predefinito fatture di vendita', '1', 'query=SELECT id, CONCAT(name, '': '', pattern) AS descrizione FROM zz_segments WHERE id_module = 14 ORDER BY name', 1, 'Fatturazione'), -(NULL, 'Sezionale predefinito fatture di acquisto', '2', 'query=SELECT id, CONCAT(name, '': '', pattern) AS descrizione FROM zz_segments WHERE id_module = 15 ORDER BY name', 1, 'Fatturazione'); +(NULL, 'Segmenti', 'Segmenti', 'segmenti', '{ "main_query": [ { "type": "table", "fields": "Modulo, Nome, Maschera, Note", "query": "SELECT `id`, `name` AS `Nome`, (SELECT name FROM zz_modules WHERE id = zz_segments.id_module) AS Modulo, `pattern` AS `Maschera`, `note` AS `Note` FROM `zz_segments` HAVING 2=2 ORDER BY name, id_module"} ]}', '', 'fa fa-database', '2.4', '2.4', 1, 36, 1, 1); -- Aggiorno widget Fatturato con i sezionali -UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM((SELECT SUM(subtotale+iva-sconto) FROM co_righe_documenti WHERE iddocumento=co_documenti.id)+iva_rivalsainps+rivalsainps+bollo-ritenutaacconto), 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM co_documenti WHERE idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir="entrata") |sezionale_entrata| AND data >= "|period_start|" AND data <= "|period_end|" AND 1=1' WHERE `zz_widgets`.`name` = 'Fatturato'; +UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM((SELECT SUM(subtotale+iva-sconto) FROM co_righe_documenti WHERE iddocumento=co_documenti.id)+iva_rivalsainps+rivalsainps+bollo-ritenutaacconto), 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM co_documenti WHERE idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir="entrata") |segment| AND data >= "|period_start|" AND data <= "|period_end|" AND 1=1' WHERE `zz_widgets`.`name` = 'Fatturato'; -- Aggiorno widget Acquisti con i sezionali -UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT((SELECT ABS(SUM(da_pagare))), 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM (co_scadenziario INNER JOIN co_documenti ON co_scadenziario.iddocumento=co_documenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE dir=''uscita'' |sezionale_uscita| AND data_emissione >= "|period_start|" AND data_emissione <= "|period_end|"' WHERE `zz_widgets`.`name` = 'Acquisti'; +UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT((SELECT ABS(SUM(da_pagare))), 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM (co_scadenziario INNER JOIN co_documenti ON co_scadenziario.iddocumento=co_documenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE dir=''uscita'' |segment| AND data_emissione >= "|period_start|" AND data_emissione <= "|period_end|"' WHERE `zz_widgets`.`name` = 'Acquisti'; -- Aggiorno widget Crediti da clienti con i sezionali -UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM((SELECT SUM(subtotale+iva-sconto) FROM co_righe_documenti WHERE iddocumento=co_documenti.id)+iva_rivalsainps+rivalsainps+bollo-ritenutaacconto), 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM co_documenti WHERE idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir="entrata") AND idstatodocumento = (SELECT id FROM co_statidocumento WHERE descrizione="Emessa") |sezionale_entrata| AND data >= "|period_start|" AND data <= "|period_end|" AND 1=1' WHERE `zz_widgets`.`name` = 'Crediti da clienti' ; +UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM((SELECT SUM(subtotale+iva-sconto) FROM co_righe_documenti WHERE iddocumento=co_documenti.id)+iva_rivalsainps+rivalsainps+bollo-ritenutaacconto), 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM co_documenti WHERE idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir="entrata") AND idstatodocumento = (SELECT id FROM co_statidocumento WHERE descrizione="Emessa") |segment| AND data >= "|period_start|" AND data <= "|period_end|" AND 1=1' WHERE `zz_widgets`.`name` = 'Crediti da clienti' ; -- Aggiorno i moduli Fattura con i sezionali -UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` WHERE 1=1 AND `dir` = ''uscita'' |sezionale_uscita| AND `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 2=2 ORDER BY `data` DESC, CAST(IF(numero_esterno='''', numero, numero_esterno) AS UNSIGNED) DESC' WHERE `name` = 'Fatture di acquisto'; -UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` WHERE 1=1 AND `dir` = ''entrata'' |sezionale_entrata| AND `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 2=2 ORDER BY `data` DESC, CAST(numero_esterno AS UNSIGNED) DESC' WHERE `name` = 'Fatture di vendita'; +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` WHERE 1=1 AND `dir` = ''uscita'' |segment| AND `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 2=2 ORDER BY `data` DESC, CAST(IF(numero_esterno='''', numero, numero_esterno) AS UNSIGNED) DESC' WHERE `name` = 'Fatture di acquisto'; +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` WHERE 1=1 AND `dir` = ''entrata'' |segment| AND `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 2=2 ORDER BY `data` DESC, CAST(numero_esterno AS UNSIGNED) DESC' WHERE `name` = 'Fatture di vendita'; -- Help text per widget Fatturato UPDATE `zz_widgets` SET `help` = 'Fatturato IVA inclusa.' WHERE `zz_widgets`.`name` = 'Fatturato';