Merge branch 'master' into 2.4

This commit is contained in:
Thomas Zilio 2017-11-17 09:17:02 +01:00
commit 525b7e441d
25 changed files with 305 additions and 169 deletions

View File

@ -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 = '<i class="'.$r[$field].'"></i> <small>'.$r['icon_title_'.$m[1]].'</small>';
$value = '<span class=\'label text-black\' style=\'font-weight:normal;\' ><i class="'.$r[$field].'" title="'.$r['icon_title_'.$m[1]].'" ></i> <span>'.$r['icon_title_'.$m[1]].'</span></span>';
}
// Colore del testo

View File

@ -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)) {

View File

@ -26,7 +26,7 @@ th {
text-align: left;
padding: 4px;
}
ul.nav {
nav {
float: left;
}
ul {

View File

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

View File

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

View File

@ -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 '
<div class="col-md-12">';

View File

@ -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"]);
}

View File

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

View File

@ -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 = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'disable', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo modulo?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'disable', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
} else {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'enable', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\n";
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo modulo?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'enable', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\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 "
<a href=\"javascript:;\" data-toggle='tooltip' title=\"".tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'uninstall', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); } }\"><i class='fa fa-trash'></i></a>";
<a href=\"javascript:;\" data-toggle='tooltip' title=\"".tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'uninstall', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); } }\"><i class='fa fa-trash'></i></a>";
} else {
echo "
<a class='disabled text-muted'>
@ -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 = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'disable', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo modulo?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'disable', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
} else {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'enable', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\n";
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo modulo?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'enable', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\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 "
<a href=\"javascript:;\" data-toggle='tooltip' title=\"".tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'uninstall', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); } }\">
<a href=\"javascript:;\" data-toggle='tooltip' title=\"".tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'uninstall', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); } }\">
<i class='fa fa-trash'></i>
</a>";
} else {
@ -273,9 +273,9 @@ foreach ($widgets as $widget) {
// Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti
if ($widget['enabled']) {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'disable_widget', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo widget?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'disable_widget', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
} else {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'enable_widget', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\n";
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo widget?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'enable_widget', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\n";
}
// POSIZIONE
@ -287,10 +287,10 @@ foreach ($widgets as $widget) {
if ($widget['location'] == 'controller_right') {
$posizione = "<i class='fa fa-arrow-up text-warning' data-toggle='tooltip' title=\"".tr('Clicca per cambiare la posizione...')."\"></i>&nbsp;<i class='fa fa-arrow-right text-success' data-toggle='tooltip' title=\"\"></i>";
$posizione = "<a href='javascript:;' onclick=\"if( confirm('".tr('Cambiare la posizione di questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'change_position_widget_top', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$posizione."</a>\n";
$posizione = "<a href='javascript:;' onclick=\"if( confirm('".tr('Cambiare la posizione di questo widget?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'change_position_widget_top', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$posizione."</a>\n";
} elseif ($widget['location'] == 'controller_top') {
$posizione = "<i class='fa fa-arrow-up text-success' data-toggle='tooltip' title=\"\"></i>&nbsp;<i class='fa fa-arrow-right text-warning' data-toggle='tooltip' title=\"".tr('Clicca per cambiare la posizione...').'"></i></i>';
$posizione = "<a href='javascript:;' onclick=\"if( confirm('".tr('Cambiare la posizione di questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'change_position_widget_right', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$posizione."</a>\n";
$posizione = "<a href='javascript:;' onclick=\"if( confirm('".tr('Cambiare la posizione di questo widget?')."') ){ $.post( '".$rootdir.'/actions.php?id_module='.$id_module."', { op: 'change_position_widget_right', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$posizione."</a>\n";
}
echo '

View File

@ -29,7 +29,11 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
</div>
<div class="col-md-4">
{[ "type": "text", "label": "<?php echo tr('Codice'); ?>", "name": "codice", "required": 1, "value": "$codice$" ]}
<br>
{[ "type": "checkbox", "label": "<?php echo tr("Seleziona per rendere visibile l'articolo"); ?>", "name": "attivo", "value": "$attivo$", "help": "", "placeholder": "<?php echo tr('ATTIVO'); ?>" ]}
</div>
<div class="col-md-5">
@ -45,10 +49,10 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
</div>
<div class="row">
<div class="col-md-4">
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Quantità'); ?>", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta|undefined" ]}
</div>
<div class="col-md-4">
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Modifica manualmente quantità'); ?>", "name": "qta_manuale", "value": 0, "help": "<?php echo tr('Seleziona per modificare manualmente la quantità'); ?>", "placeholder": "<?php echo tr('Quantità manuale'); ?>" ]}
<script type="text/javascript">
@ -61,13 +65,39 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
</div>
<div class="col-md-4">
<div class="col-md-2">
{[ "type": "select", "label": "<?php echo tr('Unità di misura'); ?>", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|<?php echo Modules::get('Unità di misura')['id']; ?>" ]}
</div>
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Soglia minima quantità'); ?>", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta" ]}
</div>
<?php
if (empty($records[0]['abilita_serial'])) {
$plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'");
echo '<script>$("#link-tab_'.$plugin[0]['id'].'").addClass("disabled");</script>';
}
?>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial", "value": "$abilita_serial$", "help": "", "placeholder": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>" ]}
</div>
</div>
<div class="row">
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Prezzo di acquisto'); ?>", "name": "prezzo_acquisto", "value": "$prezzo_acquisto$", "icon-after": "&euro;" ]}
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Prezzo di vendita base'); ?>", "name": "prezzo_vendita", "value": "$prezzo_vendita$", "icon-after": "&euro;" ]}
</div>
@ -75,45 +105,22 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
{[ "type": "select", "label": "<?php echo tr('Iva di vendita'); ?>", "name": "idiva_vendita", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC", "value": "$idiva_vendita$", "valore_predefinito": "Iva predefinita" ]}
</div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr("Seleziona per rendere visibile l'articolo"); ?>", "name": "attivo", "value": "$attivo$", "help": "", "placeholder": "<?php echo tr('ATTIVO'); ?>" ]}
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Garanzia'); ?>", "name": "gg_garanzia", "decimals": 0, "value": "$gg_garanzia$", "icon-after": "GG" ]}
</div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial", "value": "$abilita_serial$", "help": "", "placeholder": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>" ]}
</div>
<?php
if (empty($records[0]['abilita_serial'])) {
$plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'");
echo '
<script>
$("#link-tab_'.$plugin[0]['id'].'").addClass("disabled");
</script>';
}
?>
</div>
<div class="row">
<div class="col-md-4">
{[ "type": "number", "label": "<?php echo tr('Prezzo di acquisto'); ?>", "name": "prezzo_acquisto", "value": "$prezzo_acquisto$", "icon-after": "&euro;" ]}
</div>
<div class="col-md-4">
{[ "type": "number", "label": "<?php echo tr('Soglia minima quantità'); ?>", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta" ]}
</div>
<div class="col-md-4">
{[ "type": "number", "label": "<?php echo tr('Giorni di garanzia'); ?>", "name": "gg_garanzia", "decimals": 0, "value": "$gg_garanzia$" ]}
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Peso lordo'); ?>", "name": "peso_lordo", "value": "$peso_lordo$", "icon-after": "KG" ]}
</div>
<div class="col-md-4">
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Volume'); ?>", "name": "volume", "value": "$volume$", "icon-after": "M<sup>3</sup>" ]}
</div>
</div>
@ -283,26 +290,55 @@ $("#categoria").change( function(){
});
</script>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
<?php
$count = $dbo->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 '
<div class="alert alert-danger">
'.tr('Ci sono _NUM_ righe di documenti collegate', [
'_NUM_' => $tot,
]).'.
'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($elementi),
'_I_' => (count($elementi)>1) ? tr('i') : tr('o')
]).':</p>
<ul>';
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 '
<li>'.Modules::link($modulo, $id, $descrizione).'</li>';
}
echo '
</ul>
<p>'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'</p>
</div>';
}
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>

View File

@ -367,19 +367,18 @@ if (!empty($records[0]['idcontratto_prev'])) {
});
</script>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
<?php
//fatture collegate a questo contratto
$fatture = $dbo->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 '
<div class="alert alert-danger">
<p>'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
]).'.</p>
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
]).':</p>
<ul>';
foreach ($fatture as $fattura) {
@ -398,6 +397,13 @@ if (!empty($fatture)) {
echo '
</ul>
<p>'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'</p>
<p>'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'</p>
</div>';
}
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>

View File

@ -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') {
$qta = $post['qta_da_evadere'][$i];
$um = post('um')[$i];
$abilita_serial = post('abilita_serial')[$i];
$idarticolo = post('idarticolo')[$idriga];
$descrizione = post('descrizione')[$idriga];
$subtot = $post['subtot'][$i] * $qta;
$sconto = $post['sconto'][$i];
$qta = $post['qta_da_evadere'][$idriga];
$um = post('um')[$idriga];
$abilita_serial = post('abilita_serial')[$idriga];
$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

View File

@ -184,6 +184,8 @@ include $docroot.'/modules/ddt/row-list.php';
</div>
</div>
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
<script>
$('#idanagrafica').change( function(){
session_set('superselect,idanagrafica', $(this).val(), 0);
@ -192,19 +194,18 @@ include $docroot.'/modules/ddt/row-list.php';
});
</script>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
<?php
//fatture collegate a questo ddt
$fatture = $dbo->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 '
<div class="alert alert-danger">
<p>'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
]).'.</p>
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
]).':</p>
<ul>';
foreach ($fatture as $fattura) {
@ -223,6 +224,12 @@ if (!empty($fatture)) {
echo '
</ul>
<p>'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'</p>
<p>'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'</p>
</div>';
}
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>

View File

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

View File

@ -77,7 +77,7 @@ $rs = $dbo->fetchArray('SELECT *, (qta - qta_evasa) AS qta_rimanente FROM '.$tab
if (!empty($rs)) {
echo '
<p>'.tr('Seleziona le righe che vuoi inserire nel documento e la quantità').'.</p>
<p>'.tr('Seleziona le righe e le relative quantità da inserire nel documento').'.</p>
<form action="'.$rootdir.'/editor.php?id_module='.Modules::get($module_name)['id'].(!empty($get['iddocumento']) ? '&id_record='.$get['iddocumento'] : '').'" method="post">
<input type="hidden" name="'.$id.'" value="'.$id_record.'">
@ -119,14 +119,14 @@ if (!empty($rs)) {
echo '
<tr>
<td>
<input type="hidden" name="idriga[]" value="'.$r['id'].'" />
<input type="hidden" name="abilita_serial[]" value="'.$r['abilita_serial'].'" />
<input type="hidden" id="idarticolo_'.$i.'" name="idarticolo[]" value="'.$r['idarticolo'].'" />
<input type="hidden" id="descrizione_'.$i.'" name="descrizione[]" value="'.$r['descrizione'].'" />';
<input type="hidden" name="abilita_serial['.$r['id'].']" value="'.$r['abilita_serial'].'" />
<input type="hidden" id="idarticolo_'.$i.'" name="idarticolo['.$r['id'].']" value="'.$r['idarticolo'].'" />
<input type="hidden" id="descrizione_'.$i.'" name="descrizione['.$r['id'].']" value="'.$r['descrizione'].'" />';
// Checkbox - da evadere?
echo '
<input type="checkbox" checked="checked" id="checked_'.$i.'" name="evadere[]" value="on" onclick="ricalcola_subtotale_riga('.$i.');" />';
<input type="checkbox" checked="checked" id="checked_'.$i.'" name="evadere['.$r['id'].']" value="on" onclick="ricalcola_subtotale_riga('.$i.');" />';
echo nl2br($r['descrizione']);
@ -137,14 +137,14 @@ if (!empty($rs)) {
echo '
<td>
<input type="hidden" id="qtamax_'.$i.'" value="'.($r['qta'] - $r['qta_evasa']).'" />
<input type="hidden" id="um_'.$i.'" name="um[]" value="'.$r['um'].'" />
<input type="hidden" id="um_'.$i.'" name="um['.$r['id'].']" value="'.$r['um'].'" />
<p class="text-center">'.Translator::numberToLocale($r['qta_rimanente']).'</p>
</td>';
// Q.tà da evadere
echo '
<td>
{[ "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" ]}
</td>';
// Subtotale
@ -154,10 +154,10 @@ if (!empty($rs)) {
echo '
<td>
<input type="hidden" id="subtot_'.$i.'" name="subtot[]" value="'.($r['subtotale'] / $r['qta']).'" />
<input type="hidden" id="sconto_'.$i.'" name="sconto[]" value="'.($r['sconto'] / $r['qta']).'" />
<input type="hidden" id="idiva_'.$i.'" name="idiva[]" value="'.$r['idiva'].'" />
<input type="hidden" id="iva_'.$i.'" name="iva[]" value="'.($r['iva'] / $r['qta']).'" />
<input type="hidden" id="subtot_'.$i.'" name="subtot['.$r['id'].']" value="'.($r['subtotale'] / $r['qta']).'" />
<input type="hidden" id="sconto_'.$i.'" name="sconto['.$r['id'].']" value="'.($r['sconto'] / $r['qta']).'" />
<input type="hidden" id="idiva_'.$i.'" name="idiva['.$r['id'].']" value="'.$r['idiva'].'" />
<input type="hidden" id="iva_'.$i.'" name="iva['.$r['id'].']" value="'.($r['iva'] / $r['qta']).'" />
<big id="subtotale_'.$i.'">'.Translator::numberToLocale($subtotale - $sconto + $iva).' &euro;</big><br/>
@ -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 '-';

View File

@ -154,7 +154,7 @@ if ($tipodoc == 'Fattura accompagnatoria di vendita') {
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Vettore'); ?>", "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": "<?php echo tr('Vettore'); ?>", "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$" ]}
</div>
</div>

View File

@ -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);
@ -51,11 +55,27 @@ if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
<td class="text-right">'.Translator::numberToLocale(-$costi['sconto_globale']).' &euro;</td>
</tr>
<tr class='.$hide.' >
<th>'.tr('Imponibile', [], ['upper' => true]).'</th>
<td class="text-right">'.Translator::numberToLocale($costi['totale_costo']).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale($costi['totale_addebito']).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale($costi['totale']).' &euro;</td>
</tr>
<tr class='.$hide.' >
<th>'.tr('IVA (_DESC_)', [ _DESC_ => $rs_iva[0]['descrizione']], ['upper' => true]).'</th>
<td class="text-right">'.Translator::numberToLocale(($costi['totale_costo']/100*$rs_iva[0]['percentuale'])).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale(($costi['totale_addebito']/100*$rs_iva[0]['percentuale'])).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale(($costi['totale']/100*$rs_iva[0]['percentuale'])).' &euro;</td>
</tr>
<tr>
<th>'.tr('Totale', [], ['upper' => true]).'</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale_costo']).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale_addebito']).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale']).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale_costo']+($costi['totale_costo']/100*$rs_iva[0]['percentuale'])).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale_addebito']+($costi['totale_addebito']/100*$rs_iva[0]['percentuale'])).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale']+($costi['totale']/100*$rs_iva[0]['percentuale'])).' &euro;</th>
</tr>
</table>';
}

View File

@ -111,12 +111,12 @@ if (!empty($rs2)) {
echo '
<tr>
<td class="tecn_'.$r['idtecnico'].'">';
<td class="tecn_'.$r['idtecnico'].'" style="min-width:200px;" >';
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 '

View File

@ -294,21 +294,21 @@ if (empty($records[0]['firma_file'])) {
});
</script>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina') ?>
</a>
<script src="<?php echo $rootdir ?>/modules/interventi/js/interventi_helperjs.js"></script>
<?php
//fatture collegate a questo intervento
$fatture = $dbo->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 '
<div class="alert alert-danger">
<p>'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
]).'.</p>
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
]).':</p>
<ul>';
foreach ($fatture as $fattura) {
@ -327,6 +327,12 @@ if (!empty($fatture)) {
echo '
</ul>
<p>'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'</p>
<p>'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'</p>
</div>';
}
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina') ?>
</a>

View File

@ -122,20 +122,19 @@ if ($module['name'] == 'Ordini cliente') {
</div>
</div>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
<?php
//fatture o ddt collegati a questo ordine
$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 `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 '
<div class="alert alert-danger">
<p>'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($elementi),
]).'.</p>
'_I_' => (count($elementi)>1) ? tr('i') : tr('o')
]).':</p>
<ul>';
foreach ($elementi as $elemento) {
@ -159,6 +158,12 @@ if (!empty($elementi)) {
echo '
</ul>
<p>'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'</p>
<p>'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'</p>
</div>';
}
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>

View File

@ -161,19 +161,18 @@ include $docroot.'/modules/preventivi/row-list.php';
</div>
</div>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
<?php
//fatture collegate a questo preventivo
$fatture = $dbo->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 '
<div class="alert alert-danger">
<p>'.tr('Ci sono _NUM_ documenti collegate a questo elemento', [
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
]).'.</p>
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
]).':</p>
<ul>';
foreach ($fatture as $fattura) {
@ -192,6 +191,13 @@ if (!empty($fatture)) {
echo '
</ul>
<p>'.tr('Eliminando questo elemento si potrebbero verificare problemi nelle altre sezioni del gestionale!').'</p>
<p>'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale.').'</p>
</div>';
}
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>

View File

@ -10,10 +10,10 @@ echo '
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="update">
<div class="pull-right">
<!--div class="pull-right">
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva modifiche').'</button>
</div>
<div class="clearfix"></div><br>
<div class="clearfix"></div><br-->
<!-- DATI -->
<div class="panel panel-primary">
@ -68,6 +68,7 @@ if ($options != '' && $options != 'menu' && $options != 'custom') {
<div class="row">
<div class="col-md-12 text-right">
<button type="button" class="btn btn-warning pull-righ" onclick="testQuery()"><i class="fa fa-file-text-o "></i> '.tr('Testa la query').'</button>
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva modifiche').'</button>
</div>
</div>
</div>
@ -94,12 +95,12 @@ if (!empty($options) && $options != 'custom') {
</div>
<div class="panel-body">
<div class="row">
<!--div class="row">
<div class="col-xs-12 text-right">
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva').'</button>
</div>
</div>
<hr>
<hr-->
<div class="data">';
@ -231,7 +232,7 @@ if (!empty($options) && $options != 'custom') {
<div class="row">
<div class="col-xs-12 text-right">
<button type="button" class="btn btn-info" id="add"><i class="fa fa-plus"></i> '.tr('Aggiungi').'</button>
<button type="button" class="btn btn-info" id="add"><i class="fa fa-plus"></i> '.tr('Aggiungi nuovo campo').'</button>
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva').'</button>
</div>
</div>
@ -340,12 +341,12 @@ if (!empty($options) && $options != 'custom') {
</div>
<div class="panel-body">
<div class="row">
<!--div class="row">
<div class="col-xs-12 text-right">
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva').'</button>
</div>
</div>
<hr>
<hr-->
<div class="data">';
@ -416,7 +417,7 @@ if (!empty($options) && $options != 'custom') {
<div class="row">
<div class="col-xs-12 text-right">
<button type="button" class="btn btn-info" id="add"><i class="fa fa-plus"></i> '.tr('Aggiungi').'</button>
<button type="button" class="btn btn-info" id="add"><i class="fa fa-plus"></i> '.tr('Aggiungi nuovo filtro').'</button>
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva').'</button>
</div>
</div>
@ -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);
}
})
}

View File

@ -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",

View File

@ -21,8 +21,16 @@ 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 = '';

View File

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