diff --git a/ajax_dataload.php b/ajax_dataload.php index c19837b3f..6f1c3bd4b 100644 --- a/ajax_dataload.php +++ b/ajax_dataload.php @@ -52,6 +52,12 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom $search_filters[] = str_replace('|search|', prepare('%'.$piece.'%'), $total['search_inside'][$i]); } } else { + + //per le icone cerco per il campo icon_title + if (preg_match('/^icon_(.+?)$/', $total['search_inside'][$i], $m)) { + $total['search_inside'][$i] = "icon_title_".$m[1]; + } + $search_filters[] = '`'.$total['search_inside'][$i].'` LIKE '.prepare('%'.trim($columns[$i]['search']['value'].'%')); } } @@ -177,7 +183,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom // Icona elseif (preg_match('/^icon_(.+?)$/', trim($field), $m)) { - $value = ' '.$r['icon_title_'.$m[1]].''; + $value = ' '.$r['icon_title_'.$m[1]].''; } // Colore del testo diff --git a/ajax_select.php b/ajax_select.php index 96004551e..031fce3f4 100644 --- a/ajax_select.php +++ b/ajax_select.php @@ -57,7 +57,10 @@ if (!function_exists('completeResults')) { switch ($op) { case 'clienti': if (Modules::get('Anagrafiche')['permessi'] != '-') { - $query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale"; + + //$citta_cliente = ", IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))"; + + $query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale $citta_cliente) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale"; foreach ($elements as $element) { $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); @@ -227,7 +230,7 @@ switch ($op) { $where[] = 'attivo=1'; if (!empty($superselect['dir']) && $superselect['dir'] == 'entrata') { - $where[] = 'qta>0'; + //$where[] = 'qta>0'; } if (!empty($search)) { diff --git a/assets/src/css/print/print.css b/assets/src/css/print/print.css index 06f4d4410..45414fd7a 100644 --- a/assets/src/css/print/print.css +++ b/assets/src/css/print/print.css @@ -26,7 +26,7 @@ th { text-align: left; padding: 4px; } -ul.nav { +nav { float: left; } ul { diff --git a/assets/src/css/style.css b/assets/src/css/style.css index 4281e6ebc..1b5f7805b 100644 --- a/assets/src/css/style.css +++ b/assets/src/css/style.css @@ -67,7 +67,7 @@ a.disabled { } #right-menu .fa-info { - padding: 0px 5px + padding: 0 5px } .ui-menu { @@ -566,3 +566,7 @@ input.small-width { .pac-container { z-index: 1100 !important; } + +.form-control#blob{ + height: auto; +} \ No newline at end of file diff --git a/assets/src/js/custom.js b/assets/src/js/custom.js index 07f31fb2f..1c5d32ade 100644 --- a/assets/src/js/custom.js +++ b/assets/src/js/custom.js @@ -35,7 +35,7 @@ $(document).ready(function () { }); } //if this isn't a link, prevent the page from being redirected - if (checkElement.is('.treeview-menu') && $(event.target).is('.pull-right-container')) { + if (checkElement.is('.treeview-menu') && $(e.target).is('.pull-right-container')) { e.preventDefault(); } }); diff --git a/controller.php b/controller.php index 1d9855f74..0d3adde8a 100644 --- a/controller.php +++ b/controller.php @@ -22,7 +22,11 @@ include $docroot.'/actions.php'; /* * Widget top */ -echo Widgets::addModuleWidgets($id_module, 'controller_top'); + + //se non sono mobile nascondo i widget controller_top +if (!isMobile()){ + echo Widgets::addModuleWidgets($id_module, 'controller_top'); +} // Lettura eventuali plugins modulo da inserire come tab echo ' @@ -87,7 +91,16 @@ redirectOperation($id_module, $id_record); * Widget laterali. */ // Controllo se ho widget per il lato destro dello schermo, altrimenti non creo la colonna di destra -$result_widgets = $dbo->fetchArray('SELECT `id`, `location`, `class` FROM `zz_widgets` WHERE `id_module`='.prepare($id_module)." AND `location`='controller_right' AND `enabled`=1 ORDER BY `order` ASC"); + +//se sono mobile pesco anche i widget di controller_top +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"); if (count($result_widgets) > 0) { echo '
'; diff --git a/lib/functions.php b/lib/functions.php index 3e965acf3..a2a3c55ec 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -869,3 +869,12 @@ function getConfig() return get_defined_vars(); } + +/** + * Restituisce se l'user-agent (browser web) è una versione mobile + * + * @return bool + */ +function isMobile() { + return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); +} diff --git a/modules/aggiornamenti/actions.php b/modules/aggiornamenti/actions.php index 59e61d3fa..779301e9e 100644 --- a/modules/aggiornamenti/actions.php +++ b/modules/aggiornamenti/actions.php @@ -58,50 +58,50 @@ switch (post('op')) { break; case 'disable_widget': - if (Modules::getPermission($module_name) == 'rw') { + //if (Modules::getPermission($module_name) == 'rw') { $dbo->query('UPDATE zz_widgets SET enabled=0 WHERE id='.prepare($id)); $rs = $dbo->fetchArray('SELECT id, name FROM zz_widgets WHERE id='.prepare($id)); $widget = $rs[0]['name']; $_SESSION['infos'][] = tr('Widget _WIDGET_ disabilitato!', [ '_WIDGET_' => '"'.$widget.'"', ]); - } + //} break; case 'enable_widget': - if (Modules::getPermission($module_name) == 'rw') { + //if (Modules::getPermission($module_name) == 'rw') { $dbo->query('UPDATE zz_widgets SET enabled=1 WHERE id='.prepare($id)); $rs = $dbo->fetchArray('SELECT id, name FROM zz_widgets WHERE id='.prepare($id)); $widget = $rs[0]['name']; $_SESSION['infos'][] = tr('Widget _WIDGET_ abilitato!', [ '_WIDGET_' => '"'.$widget.'"', ]); - } + //} break; case 'change_position_widget_top': - if (Modules::getPermission($module_name) == 'rw') { + //if (Modules::getPermission($module_name) == 'rw') { $dbo->query("UPDATE zz_widgets SET location='controller_top' WHERE id=".prepare($id)); $rs = $dbo->fetchArray('SELECT id, name FROM zz_widgets WHERE id='.prepare($id)); $widget = $rs[0]['name']; $_SESSION['infos'][] = tr('Posizione del widget _WIDGET_ aggiornata!', [ '_WIDGET_' => '"'.$widget.'"', ]); - } + //} break; case 'change_position_widget_right': - if (Modules::getPermission($module_name) == 'rw') { + //if (Modules::getPermission($module_name) == 'rw') { $dbo->query("UPDATE zz_widgets SET location='controller_right' WHERE id=".prepare($id)); $rs = $dbo->fetchArray('SELECT id, name FROM zz_widgets WHERE id='.prepare($id)); $widget = $rs[0]['name']; $_SESSION['infos'][] = tr('Posizione del widget _WIDGET_ aggiornata!', [ '_WIDGET_' => '"'.$widget.'"', ]); - } + //} break; diff --git a/modules/aggiornamenti/edit.php b/modules/aggiornamenti/edit.php index 59cebe853..8c84d6046 100644 --- a/modules/aggiornamenti/edit.php +++ b/modules/aggiornamenti/edit.php @@ -118,9 +118,9 @@ foreach ($modules as $module) { // Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti if ($module['id'] != $id_module) { if ($module['enabled']) { - $stato = "".$stato."\n"; + $stato = "".$stato."\n"; } else { - $stato = "".$stato."\n"; + $stato = "".$stato."\n"; } } @@ -153,7 +153,7 @@ foreach ($modules as $module) { // Possibilità di disinstallare solo se il modulo non è tra quelli predefiniti if (empty($module['default'])) { echo " - "; + "; } else { echo " @@ -181,9 +181,9 @@ foreach ($modules as $module) { // Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti if ($sub['id'] != $id_module) { if ($sub['enabled']) { - $stato = "".$stato."\n"; + $stato = "".$stato."\n"; } else { - $stato = "".$stato."\n"; + $stato = "".$stato."\n"; } } @@ -217,7 +217,7 @@ foreach ($modules as $module) { // Possibilità di disinstallare solo se il modulo non è tra quelli predefiniti if (empty($sub['default'])) { echo " - + "; } else { @@ -273,9 +273,9 @@ foreach ($widgets as $widget) { // Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti if ($widget['enabled']) { - $stato = "".$stato."\n"; + $stato = "".$stato."\n"; } else { - $stato = "".$stato."\n"; + $stato = "".$stato."\n"; } // POSIZIONE @@ -287,10 +287,10 @@ foreach ($widgets as $widget) { if ($widget['location'] == 'controller_right') { $posizione = " "; - $posizione = "".$posizione."\n"; + $posizione = "".$posizione."\n"; } elseif ($widget['location'] == 'controller_top') { $posizione = " '; - $posizione = "".$posizione."\n"; + $posizione = "".$posizione."\n"; } echo ' diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php index be75afaa1..e2b8880cb 100644 --- a/modules/articoli/edit.php +++ b/modules/articoli/edit.php @@ -29,7 +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": "" ]} +
@@ -45,10 +49,10 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
-
+
{[ "type": "number", "label": "", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta|undefined" ]}
-
+
{[ "type": "checkbox", "label": "", "name": "qta_manuale", "value": 0, "help": "", "placeholder": "" ]} '; + } + ?> + +
+ {[ "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": "€" ]}
{[ "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": "checkbox", "label": "", "name": "attivo", "value": "$attivo$", "help": "", "placeholder": "" ]} -
- -
- {[ "type": "checkbox", "label": "", "name": "abilita_serial", "value": "$abilita_serial$", "help": "", "placeholder": "" ]} -
-fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'"); - - echo ' - '; - } -?> -
- -
-
- {[ "type": "number", "label": "", "name": "prezzo_acquisto", "value": "$prezzo_acquisto$", "icon-after": "€" ]} -
- -
- {[ "type": "number", "label": "", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta" ]} -
- -
- {[ "type": "number", "label": "", "name": "gg_garanzia", "decimals": 0, "value": "$gg_garanzia$" ]} -
+
+ +
-
+ +
{[ "type": "number", "label": "", "name": "peso_lordo", "value": "$peso_lordo$", "icon-after": "KG" ]}
-
+
{[ "type": "number", "label": "", "name": "volume", "value": "$volume$", "icon-after": "M3" ]}
@@ -283,26 +290,55 @@ $("#categoria").change( function(){ }); - - - fetchArray('SELECT COUNT(*) AS tot FROM ( - SELECT `idarticolo` FROM `co_righe_documenti` WHERE `idarticolo` = '.prepare($id_record).' UNION - SELECT `idarticolo` FROM `dt_righe_ddt` WHERE `idarticolo` = '.prepare($id_record).' UNION - SELECT `idarticolo` FROM `or_righe_ordini` WHERE `idarticolo` = '.prepare($id_record).' UNION - SELECT `idarticolo` FROM `mg_articoli_interventi` WHERE `idarticolo` = '.prepare($id_record).' -) AS count'); +//fatture, ddt, preventivi collegati a questo articolo +$elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idarticolo` = '.prepare($id_record).') UNION +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`'); -$tot = $count[0]['tot']; -if ($tot > 0) { + +if (!empty($elementi)) { echo ' -
- '.tr('Ci sono _NUM_ righe di documenti collegate', [ - '_NUM_' => $tot, - ]).'. - '.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').' +
+

'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [ + '_NUM_' => count($elementi), + '_I_' => (count($elementi)>1) ? tr('i') : tr('o') + ]).':

+
    '; + + foreach ($elementi as $elemento) { + $descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [ + '_DOC_' => $elemento['tipo_documento'], + '_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'; + } + + $id = $elemento['id']; + + echo ' +
  • '.Modules::link($modulo, $id, $descrizione).'
  • '; + } + + echo ' +
+

'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'

'; } + +?> + + + + \ No newline at end of file diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index f1eaec05f..57f27c488 100644 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -367,19 +367,18 @@ if (!empty($records[0]['idcontratto_prev'])) { }); - - - + fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idcontratto` = '.prepare($id_record).') ORDER BY `data`'); if (!empty($fatture)) { echo ' -
-

'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [ +

+

'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [ '_NUM_' => count($fatture), - ]).'.

+ '_I_' => (count($fatture)>1) ? tr('i') : tr('o') + ]).':

    '; foreach ($fatture as $fattura) { @@ -398,6 +397,13 @@ if (!empty($fatture)) { echo '
-

'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'

+

'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'

'; } + +?> + + + + + \ No newline at end of file diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index f51692fa9..eb12f6dfd 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -220,23 +220,23 @@ switch (post('op')) { $id_record = $dbo->lastInsertedID(); // Lettura di tutte le righe della tabella in arrivo - for ($i = 0; $i < sizeof($post['qta_da_evadere']); ++$i) { + foreach ($post['qta_da_evadere'] AS $idriga=>$value) { // Processo solo le righe da evadere - if ($post['evadere'][$i] == 'on') { - $idrigaordine = post('idriga')[$i]; - $idarticolo = post('idarticolo')[$i]; - $descrizione = post('descrizione')[$i]; + if ($post['evadere'][$idriga] == 'on') { + + $idarticolo = post('idarticolo')[$idriga]; + $descrizione = post('descrizione')[$idriga]; - $qta = $post['qta_da_evadere'][$i]; - $um = post('um')[$i]; - $abilita_serial = post('abilita_serial')[$i]; + $qta = $post['qta_da_evadere'][$idriga]; + $um = post('um')[$idriga]; + $abilita_serial = post('abilita_serial')[$idriga]; - $subtot = $post['subtot'][$i] * $qta; - $sconto = $post['sconto'][$i]; + $subtot = $post['subtot'][$idriga] * $qta; + $sconto = $post['sconto'][$idriga]; $sconto = $sconto * $qta; - $idiva = post('idiva')[$i]; - $iva = $post['iva'][$i] * $qta; + $idiva = post('idiva')[$idriga]; + $iva = $post['iva'][$idriga] * $qta; // Calcolo l'iva indetraibile $q = 'SELECT descrizione, indetraibile FROM co_iva WHERE id='.prepare($idiva); @@ -248,13 +248,13 @@ switch (post('op')) { $riga = $dbo->lastInsertedID(); // Aggiornamento seriali dalla riga dell'ordine - $serials = is_array($post['serial'][$i]) ? $post['serial'][$i] : []; + $serials = is_array($post['serial'][$idriga]) ? $post['serial'][$idriga] : []; $serials = array_filter($serials, function ($value) { return !empty($value); }); $dbo->sync('mg_prodotti', ['id_riga_ddt' => $riga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]); // Scalo la quantità dall'ordine - $dbo->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa+'.$qta.' WHERE id='.prepare($idrigaordine)); + $dbo->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa+'.$qta.' WHERE id='.prepare($idriga)); // Movimento il magazzino // vendita diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php index 3be0f5a61..c13395d88 100644 --- a/modules/ddt/edit.php +++ b/modules/ddt/edit.php @@ -184,6 +184,8 @@ include $docroot.'/modules/ddt/row-list.php';
+{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} + - - - + fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idddt` = '.prepare($id_record).') ORDER BY `data`'); if (!empty($fatture)) { echo ' -
-

'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [ - '_NUM_' => count($fatture), - ]).'.

-
    '; +
    +

    '.tr('_NUM_ altr_I_ document_I_ collegat_I_', [ + '_NUM_' => count($fatture), + '_I_' => (count($fatture)>1) ? tr('i') : tr('o') + ]).':

    +
      '; foreach ($fatture as $fattura) { $descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [ @@ -223,6 +224,12 @@ if (!empty($fatture)) { echo '
    -

    '.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'

    +

    '.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'

    '; } + +?> + + + + diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 6128aa512..94115c62d 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -931,10 +931,10 @@ switch (post('op')) { $id_record = $dbo->lastInsertedID(); // Lettura di tutte le righe della tabella in arrivo - for ($i = 0; $i < sizeof($post['qta_da_evadere']); ++$i) { + foreach ($post['qta_da_evadere'] AS $i => $value) { // Processo solo le righe da evadere if ($post['evadere'][$i] == 'on') { - $idrigaordine = post('idriga')[$i]; + $idarticolo = post('idarticolo')[$i]; $descrizione = post('descrizione')[$i]; $qta = post('qta_da_evadere')[$i]; @@ -945,7 +945,7 @@ switch (post('op')) { $sconto = post('sconto')[$i]; $sconto = $sconto * $qta; - $qprc = 'SELECT tipo_sconto, sconto_unitario FROM or_righe_ordini WHERE id='.$idrigaordine; + $qprc = 'SELECT tipo_sconto, sconto_unitario FROM or_righe_ordini WHERE id='.$i; $rsprc = $dbo->fetchArray($qprc); $sconto_unitario = $rsprc[0]['sconto_unitario']; @@ -984,7 +984,7 @@ switch (post('op')) { } // Scalo la quantità dall'ordine - $dbo->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa+'.$qta.' WHERE id='.prepare($idrigaordine)); + $dbo->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa+'.$qta.' WHERE id='.prepare($i)); } } diff --git a/modules/fatture/crea_documento.php b/modules/fatture/crea_documento.php index 5c75670a2..bc3d69724 100644 --- a/modules/fatture/crea_documento.php +++ b/modules/fatture/crea_documento.php @@ -77,7 +77,7 @@ $rs = $dbo->fetchArray('SELECT *, (qta - qta_evasa) AS qta_rimanente FROM '.$tab if (!empty($rs)) { echo ' -

    '.tr('Seleziona le righe che vuoi inserire nel documento e la quantità').'.

    +

    '.tr('Seleziona le righe e le relative quantità da inserire nel documento').'.

    @@ -119,14 +119,14 @@ if (!empty($rs)) { echo ' - - - - '; + + + + '; // Checkbox - da evadere? echo ' - '; + '; echo nl2br($r['descrizione']); @@ -137,14 +137,14 @@ if (!empty($rs)) { echo ' - +

    '.Translator::numberToLocale($r['qta_rimanente']).'

    '; // Q.tà da evadere echo ' - {[ "type": "number", "name": "qta_da_evadere[]", "id": "qta_'.$i.'", "required": 1, "value": "'.$r['qta_rimanente'].'", "extra" : "onchange=\"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|0" ]} '; // Subtotale @@ -154,10 +154,10 @@ if (!empty($rs)) { echo ' - - - - + + + + '.Translator::numberToLocale($subtotale - $sconto + $iva).' €
    @@ -171,7 +171,7 @@ if (!empty($rs)) { $values = $dbo->fetchArray('SELECT DISTINCT serial FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND dir=\''.$dir.'\' AND '.$data[$pos]['condition'].')'); echo ' - {[ "type": "select", "name": "serial['.$i.'][]", "id": "serial_'.$i.'", "multiple": 1, "values": "query=SELECT DISTINCT serial AS id, serial AS descrizione FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND dir=\''.$dir.'\' AND '.$data[$pos]['condition'].')", "value": "'.implode(',', array_column($values, 'serial')).'", "extra": "data-maximum=\"'.intval($r['qta_rimanente']).'\"" ]} + {[ "type": "select", "name": "serial['.$i.']['.$r['id'].']", "id": "serial_'.$i.'", "multiple": 1, "values": "query=SELECT DISTINCT serial AS id, serial AS descrizione FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND dir=\''.$dir.'\' AND '.$data[$pos]['condition'].')", "value": "'.implode(',', array_column($values, 'serial')).'", "extra": "data-maximum=\"'.intval($r['qta_rimanente']).'\"" ]} '; } else { echo '-'; diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 17b64601e..aebb7955a 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -154,7 +154,7 @@ if ($tipodoc == 'Fattura accompagnatoria di vendita') {
- {[ "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$" ]}
diff --git a/modules/interventi/ajax_costi.php b/modules/interventi/ajax_costi.php index ff46fe6a5..3978722ec 100644 --- a/modules/interventi/ajax_costi.php +++ b/modules/interventi/ajax_costi.php @@ -3,6 +3,10 @@ include_once __DIR__.'/../../core.php'; include_once __DIR__.'/modutil.php'; +$idiva = get_var('Iva predefinita'); +$rs_iva = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva)); +($rs_iva[0]['percentuale']>0) ? $hide = '' : $hide = 'hide'; + if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') { $costi = get_costi_intervento($id_record); @@ -50,12 +54,28 @@ if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') { - '.Translator::numberToLocale(-$costi['sconto_globale']).' € + + + + '.tr('Imponibile', [], ['upper' => true]).' + '.Translator::numberToLocale($costi['totale_costo']).' € + '.Translator::numberToLocale($costi['totale_addebito']).' € + '.Translator::numberToLocale($costi['totale']).' € + + + + + '.tr('IVA (_DESC_)', [ _DESC_ => $rs_iva[0]['descrizione']], ['upper' => true]).' + '.Translator::numberToLocale(($costi['totale_costo']/100*$rs_iva[0]['percentuale'])).' € + '.Translator::numberToLocale(($costi['totale_addebito']/100*$rs_iva[0]['percentuale'])).' € + '.Translator::numberToLocale(($costi['totale']/100*$rs_iva[0]['percentuale'])).' € + '.tr('Totale', [], ['upper' => true]).' - '.Translator::numberToLocale($costi['totale_costo']).' € - '.Translator::numberToLocale($costi['totale_addebito']).' € - '.Translator::numberToLocale($costi['totale']).' € + '.Translator::numberToLocale($costi['totale_costo']+($costi['totale_costo']/100*$rs_iva[0]['percentuale'])).' € + '.Translator::numberToLocale($costi['totale_addebito']+($costi['totale_addebito']/100*$rs_iva[0]['percentuale'])).' € + '.Translator::numberToLocale($costi['totale']+($costi['totale']/100*$rs_iva[0]['percentuale'])).' € '; } diff --git a/modules/interventi/ajax_tecnici.php b/modules/interventi/ajax_tecnici.php index 93db8f2c5..a61f39d52 100644 --- a/modules/interventi/ajax_tecnici.php +++ b/modules/interventi/ajax_tecnici.php @@ -111,12 +111,12 @@ if (!empty($rs2)) { echo ' - '; + '; if ($rs[0]['stato'] != 'Fatturato') { // Elenco tipologie di interventi echo ' - {[ "type": "select", "name": "idtipointerventot['.$id.']", "value": "'.$r['idtipointervento'].'", "values": "query=SELECT idtipointervento AS id, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipointervento=in_tipiintervento.idtipointervento AND idtecnico='.prepare($r['idtecnico']).'), 0) AS costo_orario FROM in_tipiintervento ORDER BY descrizione" ]}'; + {[ "type": "select", "name": "idtipointerventot['.$id.']", "value": "'.$r['idtipointervento'].'", "values": "query=SELECT idtipointervento AS id, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipointervento=in_tipiintervento.idtipointervento AND idtecnico='.prepare($r['idtecnico']).'), 0) AS costo_orario FROM in_tipiintervento ORDER BY descrizione", "class": "", "extra": "" ]}'; } echo ' diff --git a/modules/interventi/edit.php b/modules/interventi/edit.php index 3decedced..07c48e92f 100644 --- a/modules/interventi/edit.php +++ b/modules/interventi/edit.php @@ -294,21 +294,21 @@ if (empty($records[0]['firma_file'])) { }); - - - fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idintervento` = '.prepare($id_record).') ORDER BY `data`'); if (!empty($fatture)) { echo ' -
-

'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [ +

+

'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [ '_NUM_' => count($fatture), - ]).'.

+ '_I_' => (count($fatture)>1) ? tr('i') : tr('o') + ]).':

    '; foreach ($fatture as $fattura) { @@ -327,6 +327,12 @@ if (!empty($fatture)) { echo '
-

'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'

+

'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'

'; } + +?> + + + + \ No newline at end of file diff --git a/modules/ordini/edit.php b/modules/ordini/edit.php index a84cc9fc0..d0b017d29 100644 --- a/modules/ordini/edit.php +++ b/modules/ordini/edit.php @@ -122,20 +122,19 @@ if ($module['name'] == 'Ordini cliente') {
- - - +{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idordine` = '.prepare($id_record).') UNION 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 `idordine` = '.prepare($id_record).') ORDER BY `data`'); if (!empty($elementi)) { echo ' -
-

'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [ +

+

'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [ '_NUM_' => count($elementi), - ]).'.

+ '_I_' => (count($elementi)>1) ? tr('i') : tr('o') + ]).':

    '; foreach ($elementi as $elemento) { @@ -159,6 +158,12 @@ if (!empty($elementi)) { echo '
-

'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'

+

'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'

'; } + +?> + + + + diff --git a/modules/preventivi/edit.php b/modules/preventivi/edit.php index b1d6ef8d9..2dfdb53a8 100644 --- a/modules/preventivi/edit.php +++ b/modules/preventivi/edit.php @@ -161,19 +161,18 @@ include $docroot.'/modules/preventivi/row-list.php';
- - - + fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idpreventivo` = '.prepare($id_record).') ORDER BY `data`'); if (!empty($fatture)) { echo ' -
-

'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [ +

+

'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [ '_NUM_' => count($fatture), - ]).'.

+ '_I_' => (count($fatture)>1) ? tr('i') : tr('o') + ]).':

    '; foreach ($fatture as $fattura) { @@ -192,6 +191,13 @@ if (!empty($fatture)) { echo '
-

'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'

+

'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'

'; } + +?> + + + + + \ No newline at end of file diff --git a/modules/viste/edit.php b/modules/viste/edit.php index 3937652af..2b973129e 100644 --- a/modules/viste/edit.php +++ b/modules/viste/edit.php @@ -10,10 +10,10 @@ echo ' -
+
@@ -68,6 +68,7 @@ if ($options != '' && $options != 'menu' && $options != 'custom') {
+
@@ -94,12 +95,12 @@ if (!empty($options) && $options != 'custom') {
-
+
'; @@ -231,7 +232,7 @@ if (!empty($options) && $options != 'custom') {
- +
@@ -340,12 +341,12 @@ if (!empty($options) && $options != 'custom') {
-
+
'; @@ -416,7 +417,7 @@ if (!empty($options) && $options != 'custom') {
- +
@@ -471,6 +472,7 @@ function testQuery(){ $("#main_loading").fadeOut(); swal("'.tr('Errore').'", "'.tr('Errore durante il test della query!').'", "error"); + session_set ("errors,0", 0, 1); } }) } diff --git a/package.json b/package.json index 6465b8008..feeb3bd5c 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "moment": "^2.18.1", "numeral": "^2.0.6", "parsleyjs": "^2.7.2", - "select2": "^4.0.3", + "select2": "4.0.3", "select2-bootstrap-theme": "^0.1.0-beta.10", "signature_pad": "^2.1.1", "smartwizard": "^4.2.2", diff --git a/src/Widgets.php b/src/Widgets.php index cbf8cc812..c394e6caf 100644 --- a/src/Widgets.php +++ b/src/Widgets.php @@ -20,9 +20,17 @@ class Widgets { if (empty(self::$widgets[$id_module][$location])) { $dbo = Database::getConnection(); - + + //se sono mobile mostro su controller_right anche quello che è su controller_top + if ((isMobile())and($location=='controller_right')){ + $extra_where = " OR location = 'controller_top' "; + }else{ + $extra_where = ""; + } + + // ottengo da db gli id dei widget associati al modulo - $results = $dbo->fetchArray('SELECT id, location, class FROM zz_widgets WHERE id_module='.prepare($id_module).' AND location='.prepare($location).' AND enabled=1 ORDER BY `order` ASC'); + $results = $dbo->fetchArray('SELECT id, location, class FROM zz_widgets WHERE id_module='.prepare($id_module).' AND ( location='.prepare($location).' '.$extra_where.' ) AND enabled=1 ORDER BY `order` ASC'); $result = ''; diff --git a/update/2_3.sql b/update/2_3.sql index 5eb9495f5..378b18b82 100644 --- a/update/2_3.sql +++ b/update/2_3.sql @@ -972,6 +972,11 @@ ALTER TABLE `in_interventi` ADD `deleted` TINYINT NOT NULL DEFAULT '0' AFTER `da -- Fix nella conversione dei listini precedenti UPDATE `mg_listini` SET `prc_guadagno` = - `prc_guadagno`; - -- Aggiunta pagamento di default "Bonifico bancario" INSERT INTO `co_pagamenti` (`id`, `descrizione`, `giorno`, `num_giorni`, `prc`, `created_at`, `idconto_vendite`, `idconto_acquisti`) VALUES (NULL, 'Bonifico bancario', '0', '10', '100', CURRENT_TIMESTAMP, NULL, NULL); + +-- Per Dashboard e Articoli i widgets vanno in alto +UPDATE `zz_widgets` SET `location` = 'controller_top' WHERE `zz_widgets`.`id_module` = (SELECT id FROM zz_modules WHERE name = 'Dashboard' ) OR `zz_widgets`.`id_module` = (SELECT id FROM zz_modules WHERE name = 'Articoli' ); + +-- Disabilito widgets 'Ordini di servizio da impostare' e 'Rate contrattuali' +UPDATE `zz_widgets` SET `enabled` = '0' WHERE `zz_widgets`.`name` = 'Ordini di servizio da impostare' OR `zz_widgets`.`name` = 'Rate contrattuali'; \ No newline at end of file