- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_sezionale", "required": "1", "values": "query=SELECT id AS id, name AS descrizione FROM zz_segments WHERE id_module = (SELECT id FROM zz_modules WHERE name = \''.(($dir == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto').'\') AND is_fiscale = 1 UNION SELECT 0 AS id, \'Tutti i sezionali\' AS descrizione" ]}
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_sezionale", "required": "1", "values": "query=SELECT id AS id, name AS descrizione FROM co_sezionali WHERE id_module = (SELECT id FROM zz_modules WHERE name = \''.(($dir == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto').'\') AND is_fiscale = 1 UNION SELECT 0 AS id, \'Tutti i sezionali\' AS descrizione" ]}
';
}
echo'
diff --git a/modules/statistiche/actions.php b/modules/statistiche/actions.php
index 15d6442c6..7a02e2d6d 100755
--- a/modules/statistiche/actions.php
+++ b/modules/statistiche/actions.php
@@ -27,7 +27,7 @@ $end = filter('end');
switch (filter('op')) {
case 'fatturato':
- $results = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS result, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN zz_segments ON co_documenti.id_segment=zz_segments.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND is_fiscale=1 GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
+ $results = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS result, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN co_sezionali ON co_documenti.id_segment=co_sezionali.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND is_fiscale=1 GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
$results = Stats::monthly($results, $start, $end);
@@ -40,7 +40,7 @@ switch (filter('op')) {
break;
case 'acquisti':
- $results = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS result, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN zz_segments ON co_documenti.id_segment=zz_segments.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND is_fiscale=1 GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
+ $results = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS result, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN co_sezionali ON co_documenti.id_segment=co_sezionali.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND is_fiscale=1 GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
$results = Stats::monthly($results, $start, $end);
diff --git a/modules/tipi_scadenze/actions.php b/modules/tipi_scadenze/actions.php
index 8a5f938ca..74fc6a540 100755
--- a/modules/tipi_scadenze/actions.php
+++ b/modules/tipi_scadenze/actions.php
@@ -36,7 +36,7 @@ switch (filter('op')) {
], ['id' => $id_record]);
//aggiorno anche il segmento
- $dbo->update('zz_segments', [
+ $dbo->update('co_sezionali', [
'clause' => 'co_scadenziario.tipo="'.$nome.'"',
'name' => 'Scadenzario '.$nome,
], [
@@ -72,7 +72,7 @@ switch (filter('op')) {
$id_record = $dbo->lastInsertedID();
//Aggiungo anche il segmento
- $dbo->insert('zz_segments', [
+ $dbo->insert('co_sezionali', [
'id_module' => Modules::get('Scadenzario')['id'],
'name' => 'Scadenzario '.$nome,
'clause' => 'co_scadenziario.tipo="'.$nome.'"',
diff --git a/modules/viste/edit.php b/modules/viste/edit.php
index 2c179e2e3..70256782c 100755
--- a/modules/viste/edit.php
+++ b/modules/viste/edit.php
@@ -101,28 +101,47 @@ if (!empty($options) && $options != 'custom' && $options != 'menu') {
echo '
-
';
+
';
include $module->filepath('fields.php');
echo '
-
-
';
+
+
';
include $module->filepath('filters.php');
echo '
+
+
';
+
+ include $module->filepath('filters.php');
+
+ echo '
+
';
diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php
index 75c7bf114..9f873936e 100755
--- a/plugins/importFE/generate.php
+++ b/plugins/importFE/generate.php
@@ -205,7 +205,7 @@ echo '
// Sezionale
echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE is_fiscale = 1 AND id_module='.$id_module.' ORDER BY name", "value": "'.$_SESSION['module_'.$id_module]['id_segment'].'" ]}
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM co_sezionali WHERE is_fiscale = 1 AND id_module='.$id_module.' ORDER BY name", "value": "'.$_SESSION['module_'.$id_module]['id_segment'].'" ]}
';
// Data di registrazione
@@ -235,7 +235,7 @@ if (!empty($anagrafica)) {
{[ "type": "select", "label": "'.tr('Fattura collegata').'", "name": "ref_fattura", "required": 1, "values": "query='.$query.'" ]}
';
} elseif ($dati_generali['TipoDocumento'] == 'TD06') {
- $query .= "AND co_documenti.id_segment = (SELECT id FROM zz_segments WHERE name = 'Fatture pro-forma' AND id_module = ".prepare($id_module).')';
+ $query .= "AND co_documenti.id_segment = (SELECT id FROM co_sezionali WHERE name = 'Fatture pro-forma' AND id_module = ".prepare($id_module).')';
echo '
diff --git a/plugins/pianificazione_fatturazione/crea_fattura.php b/plugins/pianificazione_fatturazione/crea_fattura.php
index 106045ede..d4ffba996 100755
--- a/plugins/pianificazione_fatturazione/crea_fattura.php
+++ b/plugins/pianificazione_fatturazione/crea_fattura.php
@@ -57,7 +57,7 @@ echo '
// Sezionale
echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.$module_fattura['id'].' ORDER BY name", "value":"'.$_SESSION['module_'.$module_fattura['id']]['id_segment'].'" ]}
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM co_sezionali WHERE id_module='.$module_fattura['id'].' ORDER BY name", "value":"'.$_SESSION['module_'.$module_fattura['id']]['id_segment'].'" ]}
';
diff --git a/src/Modules.php b/src/Modules.php
index 13056ef79..699c9897d 100755
--- a/src/Modules.php
+++ b/src/Modules.php
@@ -183,7 +183,7 @@ class Modules
if (!isset(self::$segments[$module])) {
$database = database();
- self::$segments[$module] = $database->fetchArray('SELECT * FROM `zz_segments` WHERE `id_module` = '.prepare($module).' ORDER BY `predefined` DESC, `id` ASC');
+ self::$segments[$module] = $database->fetchArray('SELECT * FROM `co_sezionali` WHERE `id_module` = '.prepare($module).' ORDER BY `predefined` DESC, `id` ASC');
}
return (array) self::$segments[$module];
diff --git a/src/Util/Generator.php b/src/Util/Generator.php
index d8280eb59..8f6b075a4 100755
--- a/src/Util/Generator.php
+++ b/src/Util/Generator.php
@@ -187,7 +187,7 @@ class Generator
{
$database = database();
- $maschera = $database->fetchOne('SELECT pattern FROM zz_segments WHERE id = :id_segment', [
+ $maschera = $database->fetchOne('SELECT pattern FROM co_sezionali WHERE id = :id_segment', [
':id_segment' => $id_segment,
]);
diff --git a/templates/fatture/init.php b/templates/fatture/init.php
index c2bd8ccba..ba61f033b 100755
--- a/templates/fatture/init.php
+++ b/templates/fatture/init.php
@@ -36,7 +36,7 @@ $record = $dbo->fetchOne('SELECT *,
(SELECT descrizione FROM dt_spedizione WHERE id=idspedizione) AS spedizione,
(SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idvettore) AS vettore,
(SELECT id FROM co_banche WHERE id = id_banca_azienda) AS id_banca,
- (SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale
+ (SELECT is_fiscale FROM co_sezionali WHERE id = id_segment) AS is_fiscale
FROM co_documenti WHERE id='.prepare($id_record));
$record['rivalsainps'] = floatval($record['rivalsainps']);
diff --git a/templates/registro_iva/init.php b/templates/registro_iva/init.php
index f7724dfe3..774d8d533 100755
--- a/templates/registro_iva/init.php
+++ b/templates/registro_iva/init.php
@@ -22,7 +22,7 @@ include_once __DIR__.'/../../core.php';
$dir = $_GET['dir'];
$id_sezionale = filter('id_sezionale');
-$sezionale = $dbo->fetchOne('SELECT name FROM zz_segments WHERE id = '.$id_sezionale)['name'];
+$sezionale = $dbo->fetchOne('SELECT name FROM co_sezionali WHERE id = '.$id_sezionale)['name'];
$date_start = filter('date_start');
$date_end = filter('date_end');
diff --git a/update/2_4_19.sql b/update/2_4_19.sql
index 6289bdeed..64247cde1 100644
--- a/update/2_4_19.sql
+++ b/update/2_4_19.sql
@@ -36,3 +36,30 @@ UPDATE `co_righe_documenti` INNER JOIN `in_righe_interventi` ON `co_righe_docume
-- Collegamento Righe
UPDATE `co_righe_documenti` INNER JOIN `in_righe_interventi` ON `co_righe_documenti`.`idintervento` = `in_righe_interventi`.`idintervento` AND `co_righe_documenti`.`descrizione` = `in_righe_interventi`.`descrizione` AND `co_righe_documenti`.`idarticolo` = `in_righe_interventi`.`idarticolo` SET `co_righe_documenti`.`original_id` = `in_righe_interventi`.`id`, `co_righe_documenti`.`original_type` = 'Modules\\Interventi\\Components\\Riga' WHERE `co_righe_documenti`.`original_id` IS NULL AND `co_righe_documenti`.`original_type` IS NULL;
+
+-- Gestione della separazione tra segmenti (filtri dinamici) e sezionali (caratteristiche delle Fatture)
+CREATE TABLE `zz_filters` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `id_module` int(11) NOT NULL,
+ `name` varchar(255) NOT NULL,
+ `clause` TEXT NOT NULL,
+ `position` enum('WHR','HVN') NOT NULL DEFAULT 'WHR',
+ `note` TEXT,
+ PRIMARY KEY (`id`),
+ FOREIGN KEY (`id_module`) REFERENCES `zz_modules`(`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+INSERT INTO `zz_filters` (`id_module`, `name`, `clause`, `position`) VALUES
+(18, 'Scadenzario totale', 'ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`)', 'WHR'),
+(18, 'Scadenzario clienti', '((SELECT dir FROM co_tipidocumento WHERE co_tipidocumento.id=co_documenti.idtipodocumento)=''entrata'') AND ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`)', 'WHR'),
+(18, 'Scadenzario fornitori', '((SELECT dir FROM co_tipidocumento WHERE co_tipidocumento.id=co_documenti.idtipodocumento)=''uscita'') AND ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`)', 'WHR'),
+(18, 'Scadenzario Ri.Ba.', 'co_pagamenti.riba=1', 'WHR'),
+(18, 'Scadenzario generico', 'co_scadenziario.tipo=\"generico\"', 'WHR'),
+(18, 'Scadenzario F24', 'co_scadenziario.tipo=\"f24\"', 'WHR'),
+(18, 'Scadenziaro completo', '(`co_scadenziario`.`scadenza` BETWEEN ''|period_start|'' AND ''|period_end|'' )', 'WHR'),
+(3, 'Tutti', '1=1', 'WHR'),
+(3, 'Attività ', 'orario_inizio BETWEEN ''|period_start|'' AND ''|period_end|'' OR orario_fine BETWEEN ''|period_start|'' AND ''|period_end|''', 'WHR'),
+(3, 'Promemoria', '((in_interventi_tecnici.orario_inizio=''0000-00-00 00:00:00'' AND in_interventi_tecnici.orario_fine=''0000-00-00 00:00:00'') OR in_interventi_tecnici.id IS NULL)', 'WHR');
+
+DELETE FROM `zz_segments` WHERE `id` IN (4, 5, 6, 7, 8, 9, 11, 12, 13, 14);
+ALTER TABLE `zz_segments` RENAME `co_sezionali`;
diff --git a/update/tables.php b/update/tables.php
index cb1812712..39a871ff4 100755
--- a/update/tables.php
+++ b/update/tables.php
@@ -119,7 +119,8 @@ return [
'zz_permissions',
'zz_plugins',
'zz_prints',
- 'zz_segments',
+ 'co_sezionali',
+ 'zz_filters',
'zz_semaphores',
'zz_settings',
'zz_tasks',