Fix segmenti

This commit is contained in:
Luca 2018-03-21 19:33:33 +01:00
parent 15c9a0ca3a
commit 732ff78c90
11 changed files with 94 additions and 82 deletions

View File

@ -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;

View File

@ -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';

View File

@ -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();

View File

@ -33,9 +33,8 @@ if ($module['name'] == 'Fatture di vendita') {
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Tipo fattura'); ?>", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir='<?php echo $dir; ?>'", "value": "" ]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Sezionale'); ?>", "name": "id_segment", "required": 1, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='<?php echo $id_module; ?>' ORDER BY name", "value": "<?php echo $_SESSION[$id_module]['id_segment']; ?>", "extra": "" ]}
{[ "type": "select", "label": "<?php echo tr('Sezionale'); ?>", "name": "id_segment", "required": 1, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='<?php echo $id_module; ?>' ORDER BY name", "value": "<?php echo $_SESSION['m'.$id_module]['id_segment']; ?>", "extra": "" ]}
</div>
</div>

View File

@ -1,32 +1,14 @@
<?php
/*deve sempre essere impostato almeno un sezionale
if (isset($_SESSION[$id_module]['id_segment'])){
$id_segment = $_SESSION[$id_module]['id_segment'];
/*deve sempre essere impostato almeno un sezionale*/
if (empty($_SESSION['m'.$id_module]['id_segment'])){
$rs = $dbo->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;
}
*/
?>
<div class="row">
<div class="col-md-4 pull-right">
{[ "type": "select", "label": "Sezionale", "name": "idsezionale_", "required": 0, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module = '<?php echo $id_module; ?>'", "value": "<?php echo $_SESSION[$id_module]['id_segment']; ?>", "extra": "" ]}
{[ "type": "select", "label": "", "name": "idsezionale_", "required": 0, "class": "", "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module = '<?php echo $id_module; ?>'", "value": "<?php echo $_SESSION['m'.$id_module]['id_segment']; ?>", "extra": "" ]}
</div>
</div>
@ -37,9 +19,9 @@ $(document).ready(function () {
$("#idsezionale_").on("change", function(){
if ($(this).val()<1){
session_set('<?php echo $id_module; ?>,id_segment', '', 1, 1);
session_set('<?php echo 'm'.$id_module; ?>,id_segment', '', 1, 1);
}else{
session_set('<?php echo $id_module; ?>,id_segment', $(this).val(), 0, 1);
session_set('<?php echo 'm'.$id_module; ?>,id_segment', $(this).val(), 0, 1);
}
});

View File

@ -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.');

View File

@ -4,21 +4,26 @@
<div class="row">
<div class="col-md-3">
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "name", "required": 1, "class": "", "value": "$name$", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "<?php echo tr('Categoria'); ?>", "name": "category", "required": 1, "class": "", "value": "$category$", "extra": "" ]}
</div>
<div class="col-md-3">
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "required": 1, "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YY", "extra": "" ]}
</div>
<div class="col-md-3">
</div>
<div class="row">
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Modulo'); ?>", "name": "id_module_", "required": 1, "class": "", "values": "list=\"14\": \"Fatture di vendita\", \"15\": \"Fatture di acquisto\"", "value": "$id_module$", "extra": "" ]}
</div>
<div class="col-md-6">
{[ "type": "checkbox", "label": "<?php echo tr('Predefinito'); ?>", "name": "predefined", "value": "0", "help": "<?php echo tr('Seleziona per rendere il segmento predefinito.'); ?>", "placeholder": "<?php echo tr('Segmento predefinito'); ?>" ]}
</div>
</div>

View File

@ -16,11 +16,6 @@
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "name", "required": 1, "class": "", "value": "$name$", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "<?php echo tr('Categoria'); ?>", "name": "category", "required": 1, "class": "", "value": "$category$", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "required": 1, "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YY", "extra": "" ]}
</div>
@ -29,6 +24,13 @@
{[ "type": "select", "label": "<?php echo tr('Modulo'); ?>", "name": "id_module_", "required": 1, "class": "", "values": "list=\"14\": \"Fatture di vendita\", \"15\": \"Fatture di acquisto\"", "value": "$id_module$", "extra": "<?php echo ($records[0]['n_sezionali']<2) ? 'readonly' : ''; ?>" ]}
</div>
<div class="col-md-3">
<?php
($records[0]['n_sezionali']<2) ? $records[0]['predefined']=1 : '';
?>
{[ "type": "checkbox", "label": "<?php echo tr('Predefinito'); ?>", "name": "predefined", "value": "$predefined$", "help": "<?php echo tr('Seleziona per rendere il segmento predefinito.'); ?>", "placeholder": "<?php echo tr('Segmento predefinito'); ?>", "extra": "<?php echo ($records[0]['n_sezionali']<2) ? 'readonly' : ''; ?>" ]}
</div>
</div>
<div class="row">
@ -69,21 +71,23 @@
<?php
$fatture = $dbo->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 "<div class='alert alert-danger' style='margin:0px;'>";
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 "</div>";
} else if ($records[0]['n_sezionali']<2) {
echo "<div class='alert alert-danger' style='margin:0px;'>";
@ -94,7 +98,21 @@
echo "</div>";
}else{
}else if ($records[0]['predefined']) {
echo "<div class='alert alert-danger' style='margin:0px;'>";
echo tr("Questo è il segmento predefinito per il modulo '_MODULO_'. Il comando elimina è stato disattivato.", [
'_MODULO_' => $records[0]['modulo'],
]);
echo "</div>";
}
else{
?>
<form action="" method="post" role="form" id="form-delete">
<input type="hidden" name="backto" value="record-list">

View File

@ -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'");
$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'");

View File

@ -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;
}

View File

@ -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), ",", "#"), ".", ","), "#", "."), "&euro;") 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), ",", "#"), ".", ","), "#", "."), "&euro;") 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), ",", "#"), ".", ","), "#", "."), "&euro;") 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), ",", "#"), ".", ","), "#", "."), "&euro;") 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';