1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-22 13:26:38 +01:00

Merge branch 'master' into 2.4.2

This commit is contained in:
Thomas Zilio 2018-07-25 12:34:54 +02:00
commit 119e21c8f6
30 changed files with 232 additions and 143 deletions

View File

@ -789,3 +789,7 @@ input.small-width {
.timeline-body>p+p {
margin-top: 5px;
}
.img-circle.square{
box-shadow: 0px 0px 1px 1px lightgray;
}

View File

@ -33,7 +33,12 @@ if (Auth::check()) {
<!-- Fix per le icone di debug -->
<style>div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard:before, div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-database:before, div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-duration:before, div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-memory:before, div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-row-count:before, div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-stmt-id:before {
font-family: FontAwesome;
}</style>';
}</style>
<!-- Rimozione del messaggio automatico riguardante la modifica di valori nella pagina -->
<script>
window.onbeforeunload = null;
</script>';
echo $debugbarRenderer->render();
}
@ -43,12 +48,6 @@ if (Auth::check()) {
echo '
<style>'.$custom_css.'</style>';
}
// Rimozione del messaggio automatico riguardante la modifica di valori nella pagina
echo '
<script>
window.onbeforeunload = null;
</script>';
}
echo '

View File

@ -172,11 +172,11 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
$data = is_array($value) ? $value['data'] : [];
$extra = [];
foreach ($data as $k => $v) {
$extra[] = 'data-'.$k.'="'.$v.'"';
$extra[] = 'data-'.$k.'="'.prepareToField(\HTMLBuilder\HTMLBuilder::replace($v)).'"';
}
echo '
<li role="presentation"><a class="bulk-action clickable" data-op="'.$key.'" data-backto="record-list" '.implode(' ', $extra).'>'.$text.'</a></li>';
<li role="presentation"><a class="bulk-action clickable" data-op="'.prepareToField($key).'" data-backto="record-list" '.implode(' ', $extra).'>'.$text.'</a></li>';
}
echo '

View File

@ -429,8 +429,8 @@ function start_widgets($widgets) {
// Modal
function launch_modal(title, href, init_modal, id) {
//Fix - Select2 does not function properly when I use it inside a Bootstrap modal.
$.fn.modal.Constructor.prototype.enforceFocus = function() {};
//Fix - Select2 does not function properly when I use it inside a Bootstrap modal.
$.fn.modal.Constructor.prototype.enforceFocus = function () {};
if (id == null) {
id = '#bs-popup';
@ -445,7 +445,7 @@ function launch_modal(title, href, init_modal, id) {
$(id).on('hidden.bs.modal', function () {
if ($('.modal-backdrop').length < 1 ) {
if ($('.modal-backdrop').length < 1) {
$('html').removeClass('modal-open');
$(this).html('');
$(this).data('modal', null);
@ -547,7 +547,7 @@ function start_datatables() {
var sum;
var tempo;
var tempo_attesa_ricerche = (globals.tempo_attesa_ricerche*1000);
var tempo_attesa_ricerche = (globals.tempo_attesa_ricerche * 1000);
var table = $this.DataTable({
language: {
@ -582,8 +582,7 @@ function start_datatables() {
style: 'multi',
selector: 'td:first-child'
},
buttons: [
{
buttons: [{
extend: 'csv',
fieldSeparator: ";",
exportOptions: {
@ -602,21 +601,21 @@ function start_datatables() {
},
{
extend: 'print',
autoPrint: true,
customize: function ( win ) {
$(win.document.body)
.css( 'font-size', '10pt' )
.append(
'<table class="main-records table table-condensed table-bordered dataTable" ><tfoot><tr><td></td><td class="pull-right" >'+$('#summable').text()+'</td><td></td></tr></tfoot></table>',
);
$(win.document.body).find( 'table' )
.addClass( 'compact' )
.css( 'font-size', 'inherit' );
$(win.document.body).find( 'td:first-child' )
.addClass( 'hide' );
$(win.document.body).find( 'th:first-child' )
.addClass( 'hide' );
},
autoPrint: true,
customize: function (win) {
$(win.document.body)
.css('font-size', '10pt')
.append(
'<table class="main-records table table-condensed table-bordered dataTable" ><tfoot><tr><td></td><td class="pull-right" >' + $('#summable').text() + '</td><td></td></tr></tfoot></table>',
);
$(win.document.body).find('table')
.addClass('compact')
.css('font-size', 'inherit');
$(win.document.body).find('td:first-child')
.addClass('hide');
$(win.document.body).find('th:first-child')
.addClass('hide');
},
exportOptions: {
modifier: {
selected: true
@ -678,15 +677,15 @@ function start_datatables() {
idx1 = 'module_' + $this.data('idmodule'); //+ "-" + $this.data('idplugin');
idx2 = 'search_' + $(this).parent().attr('id').replace('th_', '');
function start_search(search_value){
function start_search(search_value) {
session_set(idx1 + ',' + idx2, search_value, 0);
column.search(search_value).draw();
}
// Imposto delle sessioni per le ricerche del modulo e del campo specificatsi
if(e.keyCode == 13 || $(this).val()==''){
if (e.keyCode == 13 || $(this).val() == '') {
start_search($(this).val());
}else{
} else {
tempo = window.setTimeout(start_search, tempo_attesa_ricerche, $(this).val());
}
});
@ -776,7 +775,7 @@ function start_datatables() {
this.api().columns().every(function () {
if (sum.summable[i] != undefined) {
$(this.footer()).addClass("text-right");
$(this.footer()).attr("id", "summable");
$(this.footer()).attr("id", "summable");
$(this.footer()).html(sum.summable[i]);
} else $(this.footer()).html("&nbsp;");
i++;
@ -1035,7 +1034,7 @@ jQuery.fn.selectData = function () {
// Inputmask
function start_inputmask(element) {
if( element == undefined ){
if (element == undefined) {
element = '';
} else {
element = element + ' ';
@ -1043,24 +1042,24 @@ function start_inputmask(element) {
var date = moment.localeData().longDateFormat('L').toLowerCase();
$(element+".date-mask").inputmask(date, {
$(element + ".date-mask").inputmask(date, {
"placeholder": date
});
$(element+'.email-mask').inputmask('Regex', {
$(element + '.email-mask').inputmask('Regex', {
regex: "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+(?:\\.[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$",
});
$(element+'.alphanumeric-mask').inputmask('Regex', {
$(element + '.alphanumeric-mask').inputmask('Regex', {
regex: "[A-Za-z0-9#_|\/\\-.]*",
});
if (isMobile.any()) {
$(element+'.inputmask-decimal, '+element+'.date-mask, '+element+'.timestamp-mask').each(function () {
$(element + '.inputmask-decimal, ' + element + '.date-mask, ' + element + '.timestamp-mask').each(function () {
$(this).attr('type', 'tel');
});
} else {
$(element+'.inputmask-decimal').each(function () {
$(element + '.inputmask-decimal').each(function () {
var $this = $(this);
var min = $this.attr('min-value');
@ -1068,7 +1067,7 @@ function start_inputmask(element) {
min = false;
}
var max = $this.attr('max-value');
var max = $this.attr('max-value');
if (max == 'undefined') {
max = false;
}
@ -1076,8 +1075,8 @@ function start_inputmask(element) {
$this.inputmask("decimal", {
min: min ? min : undefined,
allowMinus: !min || min < 0 ? true : false,
max: max ? max : undefined,
allowPlus: !max || max < 0 ? true : false,
max: max ? max : undefined,
allowPlus: !max || max < 0 ? true : false,
digits: $this.attr('decimals') ? $this.attr('decimals') : globals.cifre_decimali,
digitsOptional: true, // Necessario per un problema di inputmask con i numeri negativi durante l'init
enforceDigitsOnBlur: true,
@ -1162,9 +1161,9 @@ function session_set(session_array, value, clear, reload) {
reload = 0;
}
return $.get(globals.rootdir + "/ajax.php?op=session_set&session=" + session_array + "&value=" + value + "&clear=" + clear, function(data, status){
return $.get(globals.rootdir + "/ajax.php?op=session_set&session=" + session_array + "&value=" + value + "&clear=" + clear, function (data, status) {
if (reload==1)
if (reload == 1)
location.reload();
});
@ -1261,7 +1260,7 @@ function message(element) {
if (data["title"] != undefined) title = data["title"];
var msg = globals.translations.deleteMessage;
if (data["msg"] != undefined) msg = data["msg"];
if (data["msg"] != undefined) msg = '<div id="swal-form">' + data["msg"] + '</div>';
var button = globals.translations.delete;
if (data["button"] != undefined) button = data["button"];
@ -1271,11 +1270,21 @@ function message(element) {
swal({
title: title,
text: msg,
html: msg,
type: "warning",
showCancelButton: true,
confirmButtonText: button,
confirmButtonClass: btn_class,
preConfirm: function () {
$('#swal-form').find(':input').each(function () {
data[$(this).attr('name')] = $(this).val();
console.log($(this).attr('name'));
});
return new Promise(function (resolve) {
resolve([]);
});
}
}).then(
function (result) {
if (data["op"] == undefined) data["op"] = "delete";
@ -1344,8 +1353,8 @@ function redirect(href, data, method, blank) {
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
@ -1353,7 +1362,7 @@ function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
@ -1366,13 +1375,12 @@ function getCookie(cname) {
}
/**
* Funzione per controllare se un file esiste
*/
* Funzione per controllare se un file esiste
*/
function UrlExists(url)
{
function UrlExists(url) {
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
return http.status != 404;
}

View File

@ -15,7 +15,8 @@ switch (post('op')) {
directory('../../files/'.$module);
$fp = fopen('../../files/'.$module.'/'.$module.'.csv', 'w');
fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
foreach ($list as $fields) {
fputcsv($fp, $fields, ';');
}

View File

@ -213,7 +213,7 @@ if (!empty($record['immagine'])) {
<div class="form-group">
<label for="componente_filename">'.tr('Seleziona un componente').':</label>';
echo "
<select class=\"form-control superselect\" id=\"componente_filename\" name=\"componente_filename\" onchange=\"$.post('".$rootdir."/modules/my_impianti/actions.php', {op: 'load_componente', idarticolo: '".$id_record."', filename: $(this).find('option:selected').val() }, function(response){ $('#info_componente').html( response ); } );\">\n";
<select class=\"form-control superselect\" id=\"componente_filename\" name=\"componente_filename\" onchange=\"$.post('".$rootdir."/modules/my_impianti/actions.php', {op: 'load_componente', idarticolo: '".$id_record."', filename: $(this).find('option:selected').val() }, function(response){ $('#info_componente').html( response ); start_superselect(); $('.datepicker').datetimepicker({ locale: globals.locale, format: 'L' } ); } );\">\n";
echo '
<option value="0">- Collega ad un componente -</option>';

View File

@ -39,7 +39,7 @@ switch (filter('op')) {
]));
}
} else {
flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio.'));
flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio'));
}
break;
@ -55,7 +55,7 @@ switch (filter('op')) {
'_TYPE_' => 'causale',
]));
} else {
flash()->error(tr('Sono presenti dei documenti collegati a questa causale.'));
flash()->error(tr('Sono presenti dei documenti collegati a questa causale'));
}
break;

View File

@ -14,7 +14,7 @@ $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : $user['idan
</div>
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "value": "<?php echo $id_anagrafica; ?>", "ajax-source": "clienti" ]}
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "value": "<?php echo $id_anagrafica; ?>", "ajax-source": "clienti", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=Cliente" ]}
</div>
</div>

View File

@ -10,4 +10,5 @@ return [
'numero' => $r['numero'],
'descrizione' => $r['descrizione'],
'data' => Translator::dateToLocale($r['data_bozza']),
'id_anagrafica' => $r['idanagrafica'],
];

View File

@ -18,13 +18,15 @@ $mesi = [
];
// Righe inserite
$qp = "SELECT *, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento, (SELECT idanagrafica FROM co_contratti WHERE id=idcontratto) AS idcliente, (SELECT ragione_sociale FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_contratti.id=idcontratto) AS ragione_sociale FROM co_contratti_promemoria WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL ORDER BY DATE_FORMAT( data_richiesta, '%m-%Y') ASC, ragione_sociale ASC";
$qp = "SELECT *, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento, (SELECT idanagrafica FROM co_contratti WHERE id=idcontratto) AS idcliente, (SELECT ragione_sociale FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_contratti.id=idcontratto) AS ragione_sociale, (SELECT CONCAT('Contratto ', numero, ' del ', DATE_FORMAT(data_bozza, '%d/%m/%Y'), ' - ', nome, ' [', (SELECT `descrizione` FROM `co_staticontratti` WHERE `co_staticontratti`.`id` = `idstato`) , ']') FROM co_contratti WHERE id = co_contratti_promemoria.idcontratto) contratto, (SELECT id FROM co_contratti WHERE id = co_contratti_promemoria.idcontratto) idcontratto FROM co_contratti_promemoria WHERE idcontratto IN ( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL ORDER BY DATE_FORMAT( data_richiesta, '%Y-%m') ASC, ragione_sociale ASC";
$rsp = $dbo->fetchArray($qp);
if (!empty($rsp)) {
// Elenco interventi da pianificare
foreach ($rsp as $i => $r) {
// Se cambia il mese ricreo l'intestazione della tabella
// Se cambia il mese ricreo l'intestazione della tabella
if (!isset($rsp[$i - 1]) || $r['mese'] != $rsp[$i - 1]['mese']) {
if ($i == 0) {
$attr = '';
@ -43,14 +45,14 @@ if (!empty($rsp)) {
echo '
<div id="t1_'.$i.'" '.$attr.'>
<table class="table table-hover table-striped">
<table class="table table-hover table-striped datatables">
<thead>
<tr>
<th width="120">'.tr('Cliente').'</th>
<th width="200">'.tr('Contratto').'</th>
<th width="70">'.tr('Entro il').'</th>
<th width="200">'.tr('Tipo intervento').'</th>
<th>'.tr('Descrizione').'</th>
<th width="200">'.tr('Intervento collegato').'</th>
<th width="100">'.tr('Sede').'</th>
<th width="18"></th>
</tr>
@ -61,25 +63,12 @@ if (!empty($rsp)) {
echo '
<tr id="int_'.$r['id'].'">
<td>'.$r['ragione_sociale'].'</td>
<td><a target="_blank" >'.Modules::link(Modules::get('Anagrafiche')['id'], $r['idcliente'], $r['ragione_sociale']).'</a></td>
<td><a target="_blank" >'.Modules::link(Modules::get('Contratti')['id'], $r['idcontratto'], $r['contratto']).'</a></td>
<td>'.Translator::dateToLocale($r['data_richiesta']).'</td>
<td>'.$r['tipointervento'].'</td>
<td>'.nl2br($r['richiesta']).'</td>
<td>';
// Intervento svolto
if (!empty($r['idintervento'])) {
$rsp2 = $dbo->fetchArray('SELECT id, codice, data FROM in_interventi WHERE id='.prepare($r['idintervento']));
echo Modules::link('Interventi', $rsp2[0]['id'], tr('Intervento num. _NUM_ del _DATE_', [
'_NUM_' => $rsp2[0]['codice'],
'_DATE_' => Translator::dateToLocale($rsp2[0]['data']),
]));
} else {
echo '- '.('Nessuno').' -';
}
echo '</td>';
<td>'.nl2br($r['richiesta']).'</td>';
echo '
<td>';
// Sede
@ -119,3 +108,15 @@ if (!empty($rsp)) {
echo '
<p>'.tr('Non ci sono interventi da pianificare').'.</p>';
}
?>
<script>
$(document).ready(function() {
$('.datatables').DataTable({
"oLanguage": { "sUrl": "<?php echo $rootdir ?>/assets/dist/js/i18n/datatables/<?php echo $lang ?>.min.json" },
"paging": false,
"info": false
});
} );
</script>

View File

@ -10,4 +10,5 @@ return [
'numero' => empty($r['numero_esterno']) ? $r['numero'] : $r['numero_esterno'],
'note' => $r['note'],
'data' => Translator::dateToLocale($r['data']),
'id_anagrafica' => $r['idanagrafica'],
];

View File

@ -525,7 +525,7 @@ switch (post('op')) {
// Calcolo iva
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
$rs = $dbo->fetchArray($query);
$iva = $prezzo / 100 * $rs[0]['percentuale'];
$iva = ($prezzo-$sconto) / 100 * $rs[0]['percentuale'];
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
$desc_iva = $rs[0]['descrizione'];
@ -653,7 +653,7 @@ switch (post('op')) {
// Calcolo iva
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
$rs = $dbo->fetchArray($query);
$iva = $prezzo / 100 * $rs[0]['percentuale'];
$iva = ($prezzo-$sconto) / 100 * $rs[0]['percentuale'];
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
$desc_iva = $rs[0]['descrizione'];
@ -703,6 +703,9 @@ switch (post('op')) {
$idiva = post('idiva');
$idconto = post('idconto');
$idum = post('um');
$idrivalsainps = post('idrivalsainps');
$idritenutaacconto = post('idritenutaacconto');
$calcolo_ritenutaacconto = post('calcolo_ritenutaacconto');
$qta = post('qta');
if (!empty($record['is_reversed'])) {
@ -721,7 +724,9 @@ switch (post('op')) {
'qta' => $qta,
]);
add_articolo_infattura($id_record, $idarticolo, $descrizione, $idiva, $qta, $prezzo * $qta, $sconto, $sconto_unitario, $tipo_sconto, '0', $idconto, $idum);
add_articolo_infattura($id_record, $idarticolo, $descrizione, $idiva, $qta, $prezzo * $qta, $sconto, $sconto_unitario, $tipo_sconto, '0', $idconto, $idum, $idrivalsainps, $idritenutaacconto, $calcolo_ritenutaacconto);
ricalcola_costiagg_fattura($id_record);
flash()->info(tr('Articolo aggiunto!'));
}
@ -1248,10 +1253,26 @@ switch (post('op')) {
$idriga = post('idriga');
// Lettura preventivi collegati
$query = 'SELECT iddocumento, idpreventivo FROM co_righe_documenti WHERE id='.prepare($idriga);
$query = 'SELECT iddocumento, idpreventivo, idarticolo FROM co_righe_documenti WHERE id='.prepare($idriga);
$rsp = $dbo->fetchArray($query);
$id_record = $rsp[0]['iddocumento'];
$idpreventivo = $rsp[0]['idpreventivo'];
$idarticolo = $rsp[0]['idarticolo'];
//preventivo su unica riga, perdo il riferimento dell'articolo quindi lo vado a leggere da co_righe_preventivi
if (empty($idarticolo)){
//rimetto a magazzino gli articoli collegati al preventivo
$rsa = $dbo->fetchArray('SELECT idarticolo, qta FROM co_righe_preventivi WHERE idpreventivo = '.prepare($idpreventivo));
for ($i = 0; $i < sizeof($rsa); ++$i) {
if (!empty($rsa[$i]['idarticolo']))
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_record]);
//rimuovi_articolo_dafattura($rsa[$i]['idarticolo'], $id_record, $idriga);
}
}else{
$rs5 = $dbo->fetchArray('SELECT idarticolo, id, qta FROM co_righe_documenti WHERE id = '.prepare($idriga).' AND idintervento IS NULL');
rimuovi_articolo_dafattura($rs5[0]['idarticolo'], $id_record, $idriga);
}
$query = 'DELETE FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND id='.prepare($idriga);
@ -1265,9 +1286,9 @@ switch (post('op')) {
}
/*
Rimuovo tutti gli articoli dalla fattura collegati agli interventi che sono collegati a questo preventivo
Rimuovo tutti gli articoli dalla fattura collegati agli interventi di questo preventivo
*/
$rs2 = $dbo->fetchArray('SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo='.prepare($idpreventivo)." AND NOT idpreventivo=''");
$rs2 = $dbo->fetchArray('SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo != 0 AND idpreventivo='.prepare($idpreventivo));
for ($i = 0; $i < sizeof($rs2); ++$i) {
// Leggo gli articoli usati in questo intervento
$rs3 = $dbo->fetchArray('SELECT idarticolo FROM mg_articoli_interventi WHERE idintervento='.prepare($rs2[$i]['idintervento']));

View File

@ -36,7 +36,7 @@ $_SESSION['superselect']['non_fatturato'] = 1;
echo '
<div class="row">
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Contratto').'", "name": "idcontratto", "required": 1, "ajax-source": "contratti", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.text); $(\'#prezzo\').val($data.subtot); $(\'#sconto\').val($data.sconto);\"" ]}
{[ "type": "select", "label": "'.tr('Contratto').'", "name": "idcontratto", "required": 1, "ajax-source": "contratti", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.text); $(\'#prezzo\').val($data.totale); $(\'#sconto\').val($data.sconto);\"" ]}
</div>
</div>';

View File

@ -644,7 +644,7 @@ function ricalcola_costiagg_fattura($iddocumento, $idrivalsainps = '', $idritenu
* $prezzo float prezzo totale dell'articolo (prezzounitario*qtà)
* $idintervento integer id dell'intervento da cui arriva l'articolo (per non creare casini quando si rimuoverà un articolo dalla fattura).
*/
function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT', $idintervento = 0, $idconto = 0, $idum = 0)
function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT', $idintervento = 0, $idconto = 0, $idum = 0, $idrivalsainps = '', $idritenutaacconto = '', $calcolo_ritenutaacconto = '')
{
global $dir;
global $idddt;
@ -673,6 +673,23 @@ function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva,
$rs2 = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
$iva = ($prezzo - $sconto) / 100 * $rs2[0]['percentuale'];
$desc_iva = $rs2[0]['descrizione'];
if (!empty($idrivalsainps)){
// Calcolo rivalsa inps
$rs = $dbo->fetchArray('SELECT * FROM co_rivalsainps WHERE id='.prepare($idrivalsainps));
$rivalsainps = ($prezzo - $sconto) / 100 * $rs[0]['percentuale'];
}
if (!empty($idritenutaacconto)){
// Calcolo ritenuta d'acconto
$query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare($idritenutaacconto);
$rs = $dbo->fetchArray($query);
if ($calcolo_ritenutaacconto == 'Imponibile') {
$ritenutaacconto = ($prezzo - $sconto) / 100 * $rs[0]['percentuale'];
} else if ( $calcolo_ritenutaacconto == 'Imponibile + rivalsa inps') {
$ritenutaacconto = ($prezzo - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
}
}
if ($qta != 0) {
$rsart = $dbo->fetchArray('SELECT abilita_serial, idconto_vendita, idconto_acquisto FROM mg_articoli WHERE id='.prepare($idarticolo));
@ -683,7 +700,7 @@ function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva,
}
$idconto = empty($idconto) ? $default_idconto : $idconto;
$dbo->query('INSERT INTO co_righe_documenti(iddocumento, idarticolo, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, qta, abilita_serial, idconto, um, `order`) VALUES ('.prepare($iddocumento).', '.prepare($idarticolo).', '.(!empty($idintervento) ? prepare($idintervento) : 'NULL').', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($prezzo).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($qta).', '.prepare($rsart[0]['abilita_serial']).', '.prepare($idconto).', '.prepare($um).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($iddocumento).'))');
$dbo->query('INSERT INTO co_righe_documenti(iddocumento, idarticolo, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, qta, abilita_serial, idconto, um, `order`, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, calcolo_ritenutaacconto) VALUES ('.prepare($iddocumento).', '.prepare($idarticolo).', '.(!empty($idintervento) ? prepare($idintervento) : 'NULL').', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($prezzo).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($qta).', '.prepare($rsart[0]['abilita_serial']).', '.prepare($idconto).', '.prepare($um).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($iddocumento).'), '.prepare($idritenutaacconto).', '.prepare($ritenutaacconto).', '.prepare($idrivalsainps).', '.prepare($rivalsainps).', '.prepare($calcolo_ritenutaacconto).')');
$idriga = $dbo->lastInsertedID();
/*

View File

@ -38,9 +38,22 @@ if (!empty($rs)) {
$ref_modulo = null;
$ref_id = null;
// Preventivi
if (!empty($r['idpreventivo'])) {
$delete = 'unlink_preventivo';
}
// Contratti
elseif (!empty($r['idcontratto'])) {
$delete = 'unlink_contratto';
}
// Intervento
elseif (!empty($r['idintervento'])) {
$delete = 'unlink_intervento';
}
// Articoli
if (!empty($r['idarticolo'])) {
$ref_modulo = Modules::get('Articoli')['id'];
elseif (!empty($r['idarticolo'])) {
$ref_modulo = Modules::get('Articoli')['id'];
$ref_id = $r['idarticolo'];
$r['descrizione'] = (!empty($r['codice']) ? $r['codice'].' - ' : '').$r['descrizione'];
@ -62,18 +75,6 @@ if (!empty($rs)) {
}
}
}
// Preventivi
elseif (!empty($r['idpreventivo'])) {
$delete = 'unlink_preventivo';
}
// Contratti
elseif (!empty($r['idcontratto'])) {
$delete = 'unlink_contratto';
}
// Intervento
elseif (!empty($r['idintervento'])) {
$delete = 'unlink_intervento';
}
// Righe generiche
else {
$delete = 'unlink_riga';

View File

@ -12,4 +12,5 @@ return [
'numero' => empty($r['numero_esterno']) ? $r['numero'] : $r['numero_esterno'],
'note' => $r['note'],
'data' => Translator::dateToLocale($r['data']),
'id_anagrafica' => $r['idanagrafica'],
];

View File

@ -276,9 +276,9 @@ if (empty($new_codice)) {
}
?>
}
//Quando modifico orario inizio, allineo anche l'orario fine
$("#orario_inizio").on("dp.change", function (e) {
$("#orario_fine").data("DateTimePicker").minDate(e.date);
$("#orario_fine").data("DateTimePicker").minDate(e.date).format('HH:mm');
});
// Refresh modulo dopo la chiusura di una pianificazione attività derivante dalle attività
@ -362,17 +362,14 @@ if (empty($new_codice)) {
$("#componenti").selectReset();
});
// tempo standard
$('#idtipointervento').change( function(){
if ( (($(this).selectData().tempo_standard)>0) && ('<?php echo filter('orario_fine'); ?>' == '')){
// data = moment('<?php echo $data.' '.$orario_inizio; ?>').format('YYYY-MM-DD HH:mm
data = moment( moment().format('YYYY-MM-DD') + '<?php echo ' '.$orario_inizio; ?>').format('YYYY-MM-DD HH:mm');
data = '' + moment().format('YYYY-MM-DD') +' '+ $('#orario_inizio').val();
tempo_standard = $(this).selectData().tempo_standard;
orario_fine = moment(data).add(tempo_standard, 'hours').format("HH:mm");
$('input[name=orario_fine]').val(orario_fine);
$('#orario_fine').val(orario_fine);
}
});
$('#idtecnico').change( function(){
@ -407,9 +404,10 @@ if (empty($new_codice)) {
// Se l'aggiunta intervento proviene dai contratti, faccio il submit via ajax e ricarico la tabella dei contratti
else if(ref == "interventi_contratti"){
//$('#elenco_interventi > tbody').load(globals.rootdir + '/modules/contratti/plugins/contratti.pianificazioneinterventi.php?op=get_interventi_pianificati&idcontratto=<?php echo $idcontratto; ?>');
//$("#bs-popup").modal('hide');
redirect(<?php echo $rootdir; ?>.'/editor.php?id_module='<?php echo Modules::get('Contratti')['id']; ?>'&id_record='<?php echo $id_record; ?>'#tab_'.<?php echo $id_plugin; ?>);
//$('#elenco_interventi > tbody').load(globals.rootdir + '/modules/contratti/plugins/contratti.pianificazioneinterventi.php?op=get_interventi_pianificati&idcontratto=<?php echo $idcontratto; ?>');
$("#bs-popup").modal('hide');
parent.window.location.reload();
//location.href = '<?php echo $rootdir ?>/editor.php?id_module=<?php echo Modules::get('Contratti')['id'] ?>&id_record=<?php echo $id_record ?>#tab_<?php echo $id_plugin ?>';
}
}
});

View File

@ -62,6 +62,7 @@ switch (post('op')) {
$data = date('Y-m-d');
$dir = 'entrata';
$idtipodocumento = '2';
$accodare = post('accodare');
if (empty($_SESSION['module_'.Modules::get('Fatture di vendita')['id']]['id_segment'])) {
$rs = $dbo->fetchArray('SELECT id FROM zz_segments WHERE predefined = 1 AND id_module = '.prepare(Modules::get('Fatture di vendita')['id']).'LIMIT 0,1');
@ -73,7 +74,12 @@ switch (post('op')) {
$numero = get_new_numerofattura($data);
$numero_esterno = get_new_numerosecondariofattura($data);
<<<<<<< HEAD
$idconto = setting('Conto predefinito fatture di vendita');
=======
$idconto = get_var('Conto predefinito fatture di vendita');
>>>>>>> master
$campo = ($dir == 'entrata') ? 'idpagamento_vendite' : 'idpagamento_acquisti';
@ -109,9 +115,16 @@ switch (post('op')) {
if (count($rs) > 0) {
//al primo ciclo preparo la fattura
if ($n_interventi == 0) {
//verifico se ho già fatture nello stato bozza per questo cliente
$iddocumento = $dbo->fetchArray('SELECT co_documenti.id AS iddocumento FROM co_documenti INNER JOIN co_statidocumento ON co_documenti.idstatodocumento = co_statidocumento.id WHERE co_statidocumento.descrizione = \'Bozza\' AND idanagrafica = '.prepare($idanagrafica))[0]['iddocumento'];
//preparo fattura
$dbo->query('INSERT INTO co_documenti (numero, numero_esterno, idanagrafica, idconto, idtipodocumento, idpagamento, data, idstatodocumento, idsede, id_segment) VALUES ('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($idanagrafica).', '.prepare($idconto).', '.prepare($idtipodocumento).', '.prepare($idpagamento).', '.prepare($data).", (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`='Bozza'), (SELECT idsede_fatturazione FROM an_anagrafiche WHERE idanagrafica=".prepare($idanagrafica).'), '.prepare($id_segment).')');
$iddocumento = $dbo->lastInsertedID();
if (empty($iddocumento) or empty($accodare)) {
$dbo->query('INSERT INTO co_documenti (numero, numero_esterno, idanagrafica, idconto, idtipodocumento, idpagamento, data, idstatodocumento, idsede, id_segment) VALUES ('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($idanagrafica).', '.prepare($idconto).', '.prepare($idtipodocumento).', '.prepare($idpagamento).', '.prepare($data).", (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`='Bozza'), (SELECT idsede_fatturazione FROM an_anagrafiche WHERE idanagrafica=".prepare($idanagrafica).'), '.prepare($id_segment).')');
$iddocumento = $dbo->lastInsertedID();
} else {
$numero_esterno = $dbo->fetchArray('SELECT numero_esterno FROM co_documenti WHERE id = '.prepare($iddocumento))[0]['numero_esterno'];
}
}
++$n_interventi;
@ -223,8 +236,9 @@ return [
'export-bulk' => [
'text' => tr('Esporta stampe'),
'data' => [
'msg' => tr('Vuoi davvero esportare queste stampe in un archivio?'),
'button' => tr('Procedi'),
'title' => tr('Vuoi davvero esportare queste stampe in un archivio?'),
'msg' => '',
'button' => tr('Crea archivio'),
'class' => 'btn btn-lg btn-warning',
'blank' => true,
],
@ -233,8 +247,9 @@ return [
'creafatturavendita' => [
'text' => tr('Crea fattura'),
'data' => [
'msg' => tr('Vuoi davvero generare le fatture per questi interventi?'),
'button' => tr('Procedi'),
'title' => tr('Vuoi davvero generare le fatture per questi interventi?'),
'msg' => '<br>{[ "type": "checkbox", "placeholder": "'.tr('Aggiungere alle fatture esistenti non ancora emesse?').'", "name": "accodare" ]}',
'button' => tr('Crea fatture'),
'class' => 'btn btn-lg btn-warning',
'blank' => false,
],

View File

@ -14,4 +14,5 @@ return [
'data' => Translator::dateToLocale($r['data_richiesta']),
'data richiesta' => Translator::dateToLocale($r['data_richiesta']),
'data fine intervento' => empty($r['data_fine']) ? Translator::dateToLocale($r['data_richiesta']) : Translator::dateToLocale($r['data_fine']),
'id_anagrafica' => $r['idanagrafica'],
];

View File

@ -18,7 +18,7 @@ $mesi = [
];
// Righe inserite
$qp = "SELECT *, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento = in_interventi.idtipointervento ) AS tipointervento, idanagrafica AS idcliente, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica) AS ragione_sociale FROM in_interventi WHERE id NOT IN (SELECT idintervento FROM in_interventi_tecnici) AND idstatointervento IN (SELECT idstatointervento FROM in_statiintervento WHERE completato = 0) ORDER BY DATE_FORMAT( data_richiesta, '%m-%Y') ASC, ragione_sociale ASC";
$qp = "SELECT *, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento = in_interventi.idtipointervento ) AS tipointervento, idanagrafica AS idcliente, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica) AS ragione_sociale FROM in_interventi WHERE id NOT IN (SELECT idintervento FROM in_interventi_tecnici) AND idstatointervento IN (SELECT idstatointervento FROM in_statiintervento WHERE completato = 0) ORDER BY DATE_FORMAT( data_richiesta, '%Y-%m') ASC, ragione_sociale ASC";
$rsp = $dbo->fetchArray($qp);
$n = $dbo->fetchNum($qp);

View File

@ -2,25 +2,32 @@
include_once __DIR__.'/../../core.php';
if (!in_array($record['stato'], ['Evaso', 'Fatturato', 'Parzialmente fatturato'])) {
if (!in_array($record['stato'], ['Evaso', 'Fatturato'])) {
echo '
<div class="dropdown">
<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<i class="fa fa-magic"></i>&nbsp;'.tr('Crea').'...
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<ul class="dropdown-menu dropdown-menu-right">';
if (in_array($records[0]['stato'], ['Parzialmente evaso'])){
echo '
<li>
<a data-href="'.$rootdir.'/modules/fatture/crea_documento.php?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ddt').'" data-target="#bs-popup"><i class="fa fa-file-o"></i>&nbsp;'.tr('ddt').'
</a>
</li>
</li>';
}
if (in_array($records[0]['stato'], ['Parzialmente fatturato'])){
echo '
<li>
<a data-href="'.$rootdir.'/modules/fatture/crea_documento.php?id_module='.$id_module.'&id_record='.$id_record.'&documento=fattura" data-toggle="modal" data-title="'.tr('Crea fattura').'" data-target="#bs-popup"><i class="fa fa-file"></i>&nbsp;'.tr('fattura').'
</a>
</li>
</li>';
}
echo '
</ul>
</div>';
}

View File

@ -179,8 +179,12 @@ $(document).ready(function(){
$(this).parentsUntil('.box').find('[id*=giorno]').prop('disabled', false);
}
});
$(document).on('change', '[id*=percentuale]', function(){
$('button[type=submit]').prop( 'disabled', false ).removeClass('disabled');
});
$('#edit-form').submit(function(event) {
$('#edit-form').submit( function(event) {
var tot = 0;
$(this).find('[id*=percentuale]').each(function(){
@ -190,9 +194,12 @@ $(document).ready(function(){
tot += prc;
});
if(tot != 100) {
if( tot != 100) {
$('#wait').removeClass("hide");
event.preventDefault();
} else {
$('#wait').addClass("hide");
$(this).unbind('submit').submit();
}
});
});

View File

@ -13,7 +13,7 @@ $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : $user['idan
{[ "type": "text", "label": "<?php echo tr('Nome preventivo'); ?>", "name": "nome", "required": 1 ]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "ajax-source": "clienti", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=Cliente" ]}
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "value": "<?php echo $id_anagrafica; ?>", "ajax-source": "clienti", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=Cliente" ]}
</div>
</div>

View File

@ -10,4 +10,5 @@ return [
'numero' => $r['numero'],
'descrizione' => $r['descrizione'],
'data' => Translator::dateToLocale($r['data_bozza']),
'id_anagrafica' => $r['idanagrafica'],
];

View File

@ -66,10 +66,14 @@ switch (post('op')) {
}
$mail = new Mail($id_record);
if ($mail->testSMTP()) {
flash()->info(tr('Connessione SMTP riuscita'));
if (!empty($mail)) {
if ($mail->testSMTP()) {
flash()->info(tr('Connessione SMTP riuscita'));
} else {
flash()->error(tr('Connessione SMTP non riuscita'));
}
} else {
flash()->error(tr('Connessione SMTP non riuscita'));
flash()->error(tr('Errore'));
}
break;

View File

@ -111,7 +111,7 @@ $(document).ready(function() {
</script>';
// Clienti top
$clienti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15');
$clienti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica AND co_documenti.data BETWEEN ".prepare($start)." AND ".prepare($end).") AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15');
$totale = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end));

View File

@ -323,13 +323,13 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
}
/**
* Effettua un test di connessione all'email SMTP.
* Testa la connessione al server SMTP.
*
* @return bool
*/
public function testSMTP()
{
if ($this->IsSMTP() && $this->smtpConnect()) {
if ($this->smtpConnect()) {
$this->smtpClose();
return true;

View File

@ -162,7 +162,7 @@ $totale = sum($totale, $records[0]['bollo']);
// Rivalsa INPS
if (!empty($records[0]['rivalsainps'])) {
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_rivalsainps WHERE id=(SELECT idrivalsainps FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND idrivalsainps!=0 LIMIT 0,1)');
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_rivalsainps WHERE id=(SELECT idrivalsainps FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idrivalsainps!=0 LIMIT 0,1)');
$first_colspan = 3;
$second_colspan = 2;

View File

@ -16,10 +16,10 @@ echo '
</tr>
<tr>
<td class="text-center" style="width:40%">'.tr('Intervento numero').': <b>'.$records[0]['codice'].'</b></td>
<td class="text-center" style="width:30%">'.tr('Intervento num.').': <b>'.$records[0]['codice'].'</b></td>
<td class="text-center" style="width:20%">'.tr('Data').': <b>'.Translator::dateToLocale($records[0]['data_richiesta']).'</b></td>
<td class="text-center" style="width:20%">'.tr('Preventivo num.').': <b>'.$records[0]['numero_preventivo'].'</b></td>
<td class="text-center" style="width:20%">'.tr('Contratto num.').': <b>'.$records[0]['numero_contratto'].'</b></td>
<td class="text-center" style="width:25%">'.tr('Preventivo num.').': <b>'.$records[0]['numero_preventivo'].'</b></td>
<td class="text-center" style="width:25%">'.tr('Contratto num.').': <b>'.$records[0]['numero_contratto'].'</b></td>
</tr>';
// Dati cliente
@ -49,9 +49,10 @@ echo '
echo '
<tr>
<td colspan="4">
'.tr('Via').': <b>'.$c_indirizzo.'</b> -
'.tr('CAP').': <b>'.$c_cap.'</b> -
'.tr('Comune').': <b>'.$c_citta.' ('.strtoupper($c_provincia).')</b>
'.((!empty($c_indirizzo)) ? tr('Via').': <b>'.$c_indirizzo.'</b>' : '').'
'.((!empty($c_cap)) ? tr('CAP').': <b>'.$c_cap.'</b>' : '').'
'.((!empty($c_citta)) ? tr('Città').': <b>'.$c_citta.'</b>' : '').'
'.((!empty($c_provincia)) ? tr('Provincia').': <b>'.strtoupper($c_provincia).'</b>' : '').'
</td>
</tr>';

View File

@ -851,7 +851,7 @@ UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM co_righe_contra
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM co_ordiniservizio WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1)) AND idintervento IS NULL' WHERE `zz_widgets`.`name` = 'Ordini di servizio da impostare';
-- Creazione del campo format per la tabella zz_views
ALTER TABLE `zz_views` ADD `format` boolean NOT NULL AFTER `slow`;
ALTER TABLE `zz_views` ADD `format` boolean NOT NULL DEFAULT 0 AFTER `slow`;
UPDATE `zz_views` SET `format` = 1 WHERE
(`id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario') AND `name` = 'Importo')
OR (`id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario') AND `name` = 'Pagato')