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:
commit
119e21c8f6
@ -789,3 +789,7 @@ input.small-width {
|
||||
.timeline-body>p+p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.img-circle.square{
|
||||
box-shadow: 0px 0px 1px 1px lightgray;
|
||||
}
|
||||
|
@ -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 '
|
||||
|
@ -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 '
|
||||
|
100
lib/functions.js
100
lib/functions.js
@ -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(" ");
|
||||
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;
|
||||
}
|
||||
|
@ -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, ';');
|
||||
}
|
||||
|
@ -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>';
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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>
|
||||
|
||||
|
@ -10,4 +10,5 @@ return [
|
||||
'numero' => $r['numero'],
|
||||
'descrizione' => $r['descrizione'],
|
||||
'data' => Translator::dateToLocale($r['data_bozza']),
|
||||
'id_anagrafica' => $r['idanagrafica'],
|
||||
];
|
||||
|
@ -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>
|
||||
|
@ -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'],
|
||||
];
|
||||
|
@ -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']));
|
||||
|
@ -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>';
|
||||
|
||||
|
@ -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();
|
||||
|
||||
/*
|
||||
|
@ -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';
|
||||
|
@ -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'],
|
||||
];
|
||||
|
@ -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 ?>';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -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,
|
||||
],
|
||||
|
@ -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'],
|
||||
];
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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> '.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> '.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> '.tr('fattura').'
|
||||
</a>
|
||||
</li>
|
||||
</li>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</ul>
|
||||
</div>';
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -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>
|
||||
|
@ -10,4 +10,5 @@ return [
|
||||
'numero' => $r['numero'],
|
||||
'descrizione' => $r['descrizione'],
|
||||
'data' => Translator::dateToLocale($r['data_bozza']),
|
||||
'id_anagrafica' => $r['idanagrafica'],
|
||||
];
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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>';
|
||||
|
||||
|
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user