diff --git a/api/index.php b/api/index.php
index fffa92e1f..ce90d7abf 100644
--- a/api/index.php
+++ b/api/index.php
@@ -21,7 +21,7 @@ session_write_close();
// Permesso di accesso all'API da ogni dispositivo
header('Access-Control-Allow-Origin: *');
-// Attenzione: al momento l'API permette la lettura di tutte le tabelle rpesenti nel database (non limitate a quelle del progetto).
+// Attenzione: al momento l'API permette la lettura di tutte le tabelle presenti nel database (non limitate a quelle del progetto)
try {
// Controlli sulla chiave di accesso
@@ -30,21 +30,33 @@ try {
// Lettura delle informazioni
$request = API::getRequest();
+ // Gestione della richiesta
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
+ // Richiesta PUT (modifica elementi)
case 'PUT':
$result = $api->update($request);
break;
+
+ // Richiesta POST (creazione elementi)
case 'POST':
$result = $api->create($request);
break;
+
+ // Richiesta GET (ottenimento elementi)
case 'GET':
+ // Risorsa specificata
if (!empty($request)) {
$result = $api->retrieve($request);
- } else {
+ }
+
+ // Risorsa non specificata (lista delle risorse disponibili)
+ else {
$result = API::response(API::getResources()['retrieve']);
}
break;
+
+ // Richiesta DELETE (eliminazione elementi)
case 'DELETE':
$result = $api->delete($request);
break;
@@ -55,4 +67,5 @@ try {
$result = API::error('serverError');
}
+// Stampa dei risultati
echo $result;
diff --git a/controller.php b/controller.php
index 0d3adde8a..ca26a5299 100644
--- a/controller.php
+++ b/controller.php
@@ -2,6 +2,12 @@
include_once __DIR__.'/core.php';
+if (!empty($id_record) && !empty($id_module)) {
+ redirect(ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$id_record);
+} elseif (empty($id_module)) {
+ redirect(ROOTDIR.'/index.php');
+}
+
if (file_exists($docroot.'/include/custom/top.php')) {
include $docroot.'/include/custom/top.php';
} else {
@@ -22,10 +28,10 @@ include $docroot.'/actions.php';
/*
* Widget top
*/
-
+
//se non sono mobile nascondo i widget controller_top
-if (!isMobile()){
- echo Widgets::addModuleWidgets($id_module, 'controller_top');
+if (!isMobile()) {
+ echo Widgets::addModuleWidgets($id_module, 'controller_top');
}
// Lettura eventuali plugins modulo da inserire come tab
@@ -87,20 +93,19 @@ echo '
redirectOperation($id_module, $id_record);
-/**
+/*
* Widget laterali.
*/
// Controllo se ho widget per il lato destro dello schermo, altrimenti non creo la colonna di destra
//se sono mobile pesco anche i widget di controller_top
-if (isMobile()){
- $extra_where = " OR location = 'controller_top'";
-}else{
- $extra_where = "";
+if (isMobile()) {
+ $extra_where = " OR location = 'controller_top'";
+} else {
+ $extra_where = '';
}
-
-$result_widgets = $dbo->fetchArray('SELECT `id`, `location`, `class` FROM `zz_widgets` WHERE `id_module`='.prepare($id_module)." AND (`location`='controller_right' ".$extra_where." ) AND `enabled`=1 ORDER BY `order` ASC");
+$result_widgets = $dbo->fetchArray('SELECT `id`, `location`, `class` FROM `zz_widgets` WHERE `id_module`='.prepare($id_module)." AND (`location`='controller_right' ".$extra_where.' ) AND `enabled`=1 ORDER BY `order` ASC');
if (count($result_widgets) > 0) {
echo '
';
diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php
index 4e937477c..15e9e5008 100644
--- a/modules/articoli/edit.php
+++ b/modules/articoli/edit.php
@@ -29,11 +29,11 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
-
+
{[ "type": "text", "label": "", "name": "codice", "required": 1, "value": "$codice$" ]}
{[ "type": "checkbox", "label": "", "name": "attivo", "value": "$attivo$", "help": "", "placeholder": "" ]}
-
+
@@ -50,7 +50,7 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
- {[ "type": "number", "label": "", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta|undefined" ]}
+ {[ "type": "number", "label": "", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta", "min-value": "undefined" ]}
{[ "type": "checkbox", "label": "", "name": "qta_manuale", "value": 0, "help": "", "placeholder": "" ]}
@@ -68,34 +68,34 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
{[ "type": "select", "label": "", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|" ]}
-
+
- {[ "type": "number", "label": "", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta|undefined" ]}
+ {[ "type": "number", "label": "", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta", "min-value": "undefined" ]}
-
+
fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'");
- echo '';
- }
- ?>
-
+ if (empty($records[0]['abilita_serial'])) {
+ $plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'");
+ echo '';
+ }
+ ?>
+
{[ "type": "checkbox", "label": "", "name": "abilita_serial", "value": "$abilita_serial$", "help": "", "placeholder": "" ]}
-
-
+
+
-
+
{[ "type": "number", "label": "", "name": "prezzo_acquisto", "value": "$prezzo_acquisto$", "icon-after": "€" ]}
-
-
+
+
{[ "type": "number", "label": "", "name": "prezzo_vendita", "value": "$prezzo_vendita$", "icon-after": "€" ]}
@@ -104,18 +104,18 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
{[ "type": "select", "label": "", "name": "idiva_vendita", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC", "value": "$idiva_vendita$", "valore_predefinito": "Iva predefinita" ]}
-
+
{[ "type": "number", "label": "", "name": "gg_garanzia", "decimals": 0, "value": "$gg_garanzia$", "icon-after": "GG" ]}
-
+
-
-
+
+
-
+
{[ "type": "number", "label": "", "name": "peso_lordo", "value": "$peso_lordo$", "icon-after": "KG" ]}
@@ -298,13 +298,12 @@ $elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`,
SELECT `dt_ddt`.`id`, `dt_ddt`.`data`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_tipiddt`.`descrizione` AS tipo_documento, `dt_tipiddt`.`dir` FROM `dt_ddt` JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` WHERE `dt_ddt`.`id` IN (SELECT `idddt` FROM `dt_righe_ddt` WHERE `idarticolo` = '.prepare($id_record).') UNION
SELECT `co_preventivi`.`id`, `co_preventivi`.`data_bozza`, `co_preventivi`.`numero`, 0 AS numero_esterno , "Preventivo" AS tipo_documento, 0 AS dir FROM `co_preventivi` WHERE `co_preventivi`.`id` IN (SELECT `idpreventivo` FROM `co_righe_preventivi` WHERE `idarticolo` = '.prepare($id_record).') ORDER BY `data`');
-
if (!empty($elementi)) {
echo '
'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($elementi),
- '_I_' => (count($elementi)>1) ? tr('i') : tr('o')
+ '_I_' => (count($elementi) > 1) ? tr('i') : tr('o'),
]).':
';
@@ -314,17 +313,17 @@ if (!empty($elementi)) {
'_NUM_' => !empty($elemento['numero_esterno']) ? $elemento['numero_esterno'] : $elemento['numero'],
'_DATE_' => Translator::dateToLocale($elemento['data']),
]);
-
- //se non è un preventivo è un ddt o una fattura
- //se non è un ddt è una fattura.
- if (in_array($elemento['tipo_documento'], ['Preventivo'])) {
- $modulo ='Preventivi';
- } else if (!in_array($elemento['tipo_documento'], ['Ddt di vendita', 'Ddt di acquisto'])) {
- $modulo = ($elemento['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';
- } else {
- $modulo = ($elemento['dir'] == 'entrata') ? 'Ddt di vendita' : 'Ddt di acquisto';
- }
-
+
+ //se non è un preventivo è un ddt o una fattura
+ //se non è un ddt è una fattura.
+ if (in_array($elemento['tipo_documento'], ['Preventivo'])) {
+ $modulo = 'Preventivi';
+ } elseif (!in_array($elemento['tipo_documento'], ['Ddt di vendita', 'Ddt di acquisto'])) {
+ $modulo = ($elemento['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';
+ } else {
+ $modulo = ($elemento['dir'] == 'entrata') ? 'Ddt di vendita' : 'Ddt di acquisto';
+ }
+
$id = $elemento['id'];
echo '
@@ -341,4 +340,4 @@ if (!empty($elementi)) {
-
\ No newline at end of file
+
diff --git a/modules/fatture/add_intervento.php b/modules/fatture/add_intervento.php
index 3aebd0f0d..5c8947225 100644
--- a/modules/fatture/add_intervento.php
+++ b/modules/fatture/add_intervento.php
@@ -41,7 +41,7 @@ foreach ($rs as $key => $value) {
echo '
- {[ "type": "select", "label": "'.tr('Intervento').'", "name": "idintervento", "required": 1, "values": "json='.substr(str_replace('"', '\"', json_encode($rs)), 2, -2).'", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.descrizione); $(\'#prezzo\').val($data.prezzo);\"" ]}
+ {[ "type": "select", "label": "'.tr('Intervento').'", "name": "idintervento", "required": 1, "values": '.json_encode($rs).', "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.descrizione); $(\'#prezzo\').val($data.prezzo);\"" ]}
';
diff --git a/modules/fatture/crea_documento.php b/modules/fatture/crea_documento.php
index bc3d69724..fd5b002f3 100644
--- a/modules/fatture/crea_documento.php
+++ b/modules/fatture/crea_documento.php
@@ -119,7 +119,7 @@ if (!empty($rs)) {
echo '
-
+
';
@@ -144,7 +144,7 @@ if (!empty($rs)) {
// Q.tà da evadere
echo '
- {[ "type": "number", "name": "qta_da_evadere['.$r['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$r['qta_rimanente'].'", "extra" : "onkeyup=\"ricalcola_subtotale_riga('.$i.');\"", "decimals": "qta|0" ]}
+ {[ "type": "number", "name": "qta_da_evadere['.$r['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$r['qta_rimanente'].'", "extra" : "onkeyup=\"ricalcola_subtotale_riga('.$i.');\"", "decimals": "qta", "min-value": "0" ]}
';
// Subtotale
diff --git a/src/HTMLBuilder/HTMLBuilder.php b/src/HTMLBuilder/HTMLBuilder.php
index ae0ba9882..2575879ae 100644
--- a/src/HTMLBuilder/HTMLBuilder.php
+++ b/src/HTMLBuilder/HTMLBuilder.php
@@ -88,6 +88,7 @@ class HTMLBuilder
*/
public static function replace($html)
{
+ // Gestione dei manager generici
preg_match_all('/'.preg_quote(self::$open['manager']).'(.+?)'.preg_quote(self::$close['manager']).'/is', $html, $managers);
foreach ($managers[0] as $value) {
@@ -99,6 +100,7 @@ class HTMLBuilder
$html = str_replace($value, !empty($result) ? $result : $value, $html);
}
+ // Gestione del formato di input HTML semplificato
preg_match_all('/'.preg_quote(self::$open['handler']).'(.+?)'.preg_quote(self::$close['handler']).'/is', $html, $handlers);
foreach ($handlers[0] as $value) {
@@ -155,10 +157,10 @@ class HTMLBuilder
{
$string = '{'.substr($string, strlen(self::$open[$type]), -strlen(self::$close[$type])).'}';
- // Fix per contenuti con newline integrate
+ // Fix per contenuti con newline integrati
$string = str_replace(["\n", "\r"], ['\\n', '\\r'], $string);
- $json = (array) json_decode($string, true, 2);
+ $json = (array) json_decode($string, true);
return $json;
}
@@ -212,7 +214,7 @@ class HTMLBuilder
// Attributi normali
foreach ($json as $key => $value) {
- $values[trim($key)] = trim($value);
+ $values[trim($key)] = is_string($value) ? trim($value) : $value;
}
// Valori particolari
diff --git a/src/HTMLBuilder/Handler/ChoicesHandler.php b/src/HTMLBuilder/Handler/ChoicesHandler.php
index 4fd008887..25649b2d8 100644
--- a/src/HTMLBuilder/Handler/ChoicesHandler.php
+++ b/src/HTMLBuilder/Handler/ChoicesHandler.php
@@ -3,33 +3,50 @@
namespace HTMLBuilder\Handler;
/**
+ * Gestione dell'input di tipo "checkbox".
+ *
* @since 2.3
*/
class ChoicesHandler implements HandlerInterface
{
public function handle(&$values, &$extras)
{
+ // Delega della gestione al metodo specifico per il tipo di input richiesto
$result = $this->{$values['type']}($values, $extras);
return $result;
}
+ /**
+ * Gestione dell'input di tipo "checkbox".
+ * Esempio: {[ "type": "checkbox", "label": "Checkbox di test", "placeholder": "Test", "name": "checkbox", "value": "1" ]}.
+ *
+ * @param array $values
+ * @param array $extras
+ *
+ * @return string
+ */
protected function checkbox(&$values, &$extras)
{
unset($values['class'][0]);
+ // Restrizione dei valori permessi
$values['value'] = (empty($values['value']) || $values['value'] == 'off') ? false : true;
+ // Gestione della proprietà "checked"
if (!empty($values['value']) && !in_array('checked', $extras)) {
$extras[] = 'checked';
}
+ // Gestione della proprietà "readonly"
if (in_array('readonly', $extras)) {
$extras[] = 'disabled';
}
- $values['placeholder'] = (isset($values['placeholder'])) ? $values['placeholder'] : $values['label'];
+ // Gestione dei placeholder
+ $values['placeholder'] = isset($values['placeholder']) ? $values['placeholder'] : $values['label'];
+ // Generazione del codice HTML
$result .= '