Aggiornamento da branch master

This commit is contained in:
Thomas Zilio 2017-12-16 15:54:55 +01:00
commit 268b28196b
32 changed files with 338 additions and 146 deletions

View File

@ -52,12 +52,11 @@ 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];
}
// 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'].'%'));
}
}
@ -68,7 +67,9 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom
}
// Filtri derivanti dai permessi (eventuali)
$module_query = Modules::replaceAdditionals($id_module, $module_query);
if (empty($id_plugin)) {
$module_query = Modules::replaceAdditionals($id_module, $module_query);
}
// Ordinamento dei risultati
if (isset($order['dir']) && isset($order['column'])) {

View File

@ -57,10 +57,9 @@ if (!function_exists('completeResults')) {
switch ($op) {
case 'clienti':
if (Modules::get('Anagrafiche')['permessi'] != '-') {
//$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";
//$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);
@ -222,10 +221,14 @@ switch ($op) {
break;
case 'articoli':
$query = 'SELECT * FROM mg_articoli |where| ORDER BY id_categoria ASC, id_sottocategoria ASC';
$query = 'SELECT mg_articoli.*, co_iva.descrizione AS iva_vendita FROM mg_articoli LEFT OUTER JOIN co_iva ON mg_articoli.idiva_vendita=co_iva.id |where| ORDER BY mg_articoli.id_categoria ASC, mg_articoli.id_sottocategoria ASC';
$idiva_predefinita = get_var('Iva predefinita');
$rs = $dbo->fetchArray("SELECT descrizione FROM co_iva WHERE id='".$idiva_predefinita."'");
$iva_predefinita = $rs[0]['descrizione'];
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = 'mg_articoli.id='.prepare($element);
}
$where[] = 'attivo=1';
@ -242,6 +245,11 @@ switch ($op) {
if (!empty($search_fields)) {
$where[] = '('.implode(' OR ', $search_fields).')';
}
if (!empty($filter)) {
$where[] = '('.implode(' OR ', $filter).')';
}
if (count($where) != 0) {
$wh = 'WHERE '.implode(' AND ', $where);
}
@ -255,11 +263,21 @@ switch ($op) {
$results[] = ['text' => $dbo->fetchArray('SELECT `nome` FROM `mg_categorie` WHERE `id`='.prepare($r['id_categoria']))[0]['nome'], 'children' => []];
}
if (empty($r['idiva_vendita'])) {
$idiva = $idiva_predefinita;
$iva = $iva_predefinita;
} else {
$idiva = $r['idiva_vendita'];
$iva = $r['iva_vendita'];
}
$results[count($results) - 1]['children'][] = [
'id' => $r['id'],
'text' => $r['codice'].' - '.$r['descrizione'],
'descrizione' => $r['descrizione'],
'um' => $r['um'],
'idiva_vendita' => $idiva,
'iva_vendita' => $iva,
'prezzo_acquisto' => Translator::numberToLocale($r['prezzo_acquisto']),
'prezzo_vendita' => Translator::numberToLocale($r['prezzo_vendita']),
];

View File

@ -206,6 +206,14 @@ gulp.task('chartjs', function () {
.pipe(gulp.dest(config.production + '/' + config.paths.js + '/chartjs'));
});
gulp.task('viewerjs', function () {
gulp.src([
config.main.bowerDirectory + '/viewerjs/ViewerJS/**/*',
'!' + config.main.bowerDirectory + '/viewerjs/ViewerJS/example.local.css',
])
.pipe(gulp.dest(config.production + '/viewerjs'));
});
// Elaborazione e minificazione delle informazioni sull'internazionalizzazione
gulp.task('i18n', function () {
gulp.src([
@ -308,9 +316,13 @@ gulp.task('bower', ['clean'], function () {
gulp.task('other', ['clean'], function () {
gulp.start('ckeditor');
gulp.start('colorpicker');
gulp.start('chartjs');
gulp.start('i18n');
gulp.start('viewerjs');
gulp.start('chartjs');
gulp.start('php-debugbar');
});
gulp.task('default', ['clean', 'bower']);

View File

@ -16,8 +16,8 @@ if (Auth::check()) {
'.tr('OpenSTAManager').'
</footer>
<div class="modal fade" id="bs-popup" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false"></div>
<div class="modal fade" id="bs-popup2" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false"></div>';
<div class="modal fade" id="bs-popup" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="true"></div>
<div class="modal fade" id="bs-popup2" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="true"></div>';
}
echo '
</div><!-- ./wrapper -->';

View File

@ -21,6 +21,8 @@ var isMobile = {
};
// Aggiunta dell'ingranaggio all'unload della pagina
$(window).on("beforeunload", function () {
$("#main_loading").show();
@ -412,10 +414,15 @@ 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() {};
if (id == null) {
id = '#bs-popup';
}
if (init_modal == null) {
init_modal = 1;
}
@ -423,9 +430,13 @@ function launch_modal(title, href, init_modal, id) {
$('html').addClass('modal-open');
$(id).on('hidden.bs.modal', function () {
$('html').removeClass('modal-open');
$(this).html('');
$(this).data('modal', null);
if ($('.modal-backdrop').length < 1 ) {
$('html').removeClass('modal-open');
$(this).html('');
$(this).data('modal', null);
}
});
// Lettura contenuto div
@ -913,7 +924,8 @@ jQuery.fn.selectReset = function () {
};
/**
* Aggiorna un <select> creato con select2 impostando un valore di default
* Aggiorna un <select> creato con select2 impostando un valore di default.
* Da utilizzare per l'impostazione dei select basati su richieste AJAX.
*/
jQuery.fn.selectSetNew = function (value, label) {
this.selectReset();
@ -929,7 +941,8 @@ jQuery.fn.selectSetNew = function (value, label) {
};
/**
* Aggiorna un <select> creato con select2 impostando un valore di default
* Aggiorna un <select> creato con select2 impostando un valore di default.
* Da utilizzare per l'impostazione dei select statici.
*/
jQuery.fn.selectSet = function (value) {
this.val(value).trigger("change");

View File

@ -163,6 +163,29 @@ switch (post('op')) {
$dbo->query('UPDATE zz_settings SET valore='.prepare($new_id)." WHERE nome='Azienda predefinita'");
$_SESSION['infos'][] = tr('Anagrafica Azienda impostata come predefinita. Per ulteriori informazionioni, visitare "Strumenti -> Impostazioni -> Generali".');
}
//se sto inserendo un tecnico, mi copio già le tariffe per le varie attività
if (in_array($id_tecnico, $post['idtipoanagrafica'])) {
//per ogni tipo di attività
$rs_tipiintervento = $dbo->fetchArray('SELECT * FROM in_tipiintervento');
for ($i = 0; $i < count($rs_tipiintervento); $i++) {
if ($dbo->query('INSERT INTO in_tariffe( idtecnico, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico ) VALUES( '.prepare($new_id).', '.prepare($rs_tipiintervento[$i]['idtipointervento']).', (SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento='.prepare($rs_tipiintervento[$i]['idtipointervento']).'), (SELECT costo_km FROM in_tipiintervento WHERE idtipointervento='.prepare($rs_tipiintervento[$i]['idtipointervento']).'), (SELECT costo_diritto_chiamata FROM in_tipiintervento WHERE idtipointervento='.prepare($rs_tipiintervento[$i]['idtipointervento']).'), (SELECT costo_orario_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare($rs_tipiintervento[$i]['idtipointervento']).'), (SELECT costo_km_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare($rs_tipiintervento[$i]['idtipointervento']).'), (SELECT costo_diritto_chiamata_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare($rs_tipiintervento[$i]['idtipointervento']).') )')) {
$_SESSION['infos'][] = tr('Informazioni salvate correttamente!');
} else {
$_SESSION['errors'][] = tr("Errore durante l'importazione tariffe!");
}
}
}
// Creo il relativo conto nel partitario (cliente)
if (in_array($id_cliente, $post['idtipoanagrafica'])) {

View File

@ -12,3 +12,4 @@ if (isset($id_record)) {
$id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_cliente = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Cliente'")[0]['idtipoanagrafica'];
$id_fornitore = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Fornitore'")[0]['idtipoanagrafica'];
$id_tecnico = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Tecnico'")[0]['idtipoanagrafica'];

View File

@ -70,7 +70,7 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
</div>
<div class="col-md-2">
{[ "type": "number", "label": "<?php echo tr('Soglia minima quantità'); ?>", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta" ]}
{[ "type": "number", "label": "<?php echo tr('Soglia minima quantità'); ?>", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta|undefined" ]}
</div>
<?php

View File

@ -119,6 +119,7 @@ echo '
$data = $(this).selectData();
$("#prezzo").val($data.prezzo_'.($dir == 'entrata' ? 'vendita' : 'acquisto').');
$("#descrizione").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita);
$("#um").selectSetNew($data.um, $data.um);
}else{
$("#prezzi_articolo button").addClass("disabled");

View File

@ -246,7 +246,7 @@ switch (post('op')) {
$id_record = $dbo->lastInsertedID();
// TODO: sistemare la duplicazione delle righe generiche e degli articoli, ingorando interventi, ddt, ordini, preventivi
foreach( $righe as $riga ){
foreach ($righe as $riga) {
$dbo->query('INSERT INTO co_righe_documenti(iddocumento, idordine, idddt, idintervento, idarticolo, idpreventivo, idcontratto, idtecnico, idagente, idautomezzo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, um, qta, `order`) VALUES('.prepare($id_record).', 0, 0, 0, '.prepare($riga['idarticolo']).', '.prepare($riga['idpreventivo']).', '.prepare($riga['idcontratto']).', '.prepare($riga['idtecnico']).', '.prepare($riga['idagente']).', '.prepare($riga['idautomezzo']).', '.prepare($riga['idiva']).', '.prepare($riga['desc_iva']).', '.prepare($riga['iva']).', '.prepare($riga['iva_indetraibile']).', '.prepare($riga['descrizione']).', '.prepare($riga['subtotale']).', '.prepare($riga['sconto']).', '.prepare($riga['idritenutaacconto']).', '.prepare($riga['ritenutaacconto']).', '.prepare($riga['idrivalsainps']).', '.prepare($riga['rivalsainps']).', '.prepare($riga['um']).', '.prepare($riga['qta']).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))');
// Scarico/carico nuovamente l'articolo da magazzino
@ -313,19 +313,19 @@ switch (post('op')) {
$query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto"));
$rs = $dbo->fetchArray($query);
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
// Aggiunta diritto di chiamata (se presente) come riga a parte
$query = 'SELECT SUM(prezzo_dirittochiamata) AS diritto_chiamata FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento);
$rs = $dbo->fetchArray($query);
$diritto_chiamata = $rs[0]['diritto_chiamata'];
// Aggiunta riga intervento sul documento
$ore = get_ore_intervento( $idintervento );
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot-$diritto_chiamata).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).", ".prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
$ore = get_ore_intervento($idintervento);
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot - $diritto_chiamata).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
$dbo->query($query);
if( $diritto_chiamata > 0 ){
//Aggiunta diritto di chiamata se >0
if ($diritto_chiamata > 0) {
// Calcolo iva
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
$rs = $dbo->fetchArray($query);
@ -343,7 +343,7 @@ switch (post('op')) {
$query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto"));
$rs = $dbo->fetchArray($query);
$ritenutaacconto = $diritto_chiamata / 100 * $rs[0]['percentuale'];
$query = 'INSERT INTO co_righe_documenti(
iddocumento,
idintervento,
@ -378,7 +378,7 @@ switch (post('op')) {
'.prepare($sconto).",
'UNT',
'-',
".prepare($rs[0]['diritto_chiamata']).",
'1',
".prepare(get_var('Percentuale rivalsa INPS')).',
'.prepare($rivalsainps).',
'.prepare(get_var("Percentuale ritenuta d'acconto")).',
@ -422,7 +422,7 @@ switch (post('op')) {
$rs = $dbo->fetchArray($query);
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).', '.prepare($rsr[$i]['sconto']).', '.prepare($rsr[$i]['sconto_unitario']).', '.prepare($rsr[$i]['tipo_sconto']).", ".prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).', '.prepare($rsr[$i]['sconto']).', '.prepare($rsr[$i]['sconto_unitario']).', '.prepare($rsr[$i]['tipo_sconto']).', '.prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
$dbo->query($query);
}
}
@ -449,7 +449,7 @@ switch (post('op')) {
$dati = $dbo->fetchArray($query);
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $dati[0]['percentuale'];
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).", ".prepare($sconto).', '.prepare($sconto).", 'UNT', '', 1, ".prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', '', 1, ".prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
$dbo->query($query);
}
@ -492,11 +492,11 @@ switch (post('op')) {
$_SESSION['infos'][] = tr('Intervento _NUM_ aggiunto!', [
'_NUM_' => $idintervento,
]);
/*
/*
else {
$_SESSION['errors'][] = tr("Errore durante l'inserimento dell'intervento _NUM_ in fattura!", [
'_NUM_' => $idintervento,
]);
$_SESSION['errors'][] = tr("Errore durante l'inserimento dell'intervento _NUM_ in fattura!", [
'_NUM_' => $idintervento,
]);
}*/
}
break;
@ -837,7 +837,7 @@ switch (post('op')) {
$numero_esterno = '';
}
if( $dir == 'entrata' ){
if ($dir == 'entrata') {
$tipo_documento = 'Fattura differita di vendita';
$idconto = get_var('Conto predefinito fatture di vendita');
} else {
@ -850,10 +850,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') {
$idrigaddt = post('idriga')[$i];
$idrigaddt = $i;
$idarticolo = post('idarticolo')[$i];
$descrizione = post('descrizione')[$i];
$qta = $post['qta_da_evadere'][$i];
@ -931,10 +931,10 @@ switch (post('op')) {
$id_record = $dbo->lastInsertedID();
// Lettura di tutte le righe della tabella in arrivo
foreach ($post['qta_da_evadere'] AS $i => $value) {
foreach ($post['qta_da_evadere'] as $i => $value) {
// Processo solo le righe da evadere
if ($post['evadere'][$i] == 'on') {
$idrigaordine = $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='.$i;
$qprc = 'SELECT tipo_sconto, sconto_unitario FROM or_righe_ordini WHERE id='.prepare($idrigaordine);
$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($i));
$dbo->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa+'.$qta.' WHERE id='.prepare($idrigaordine));
}
}
@ -1001,10 +1001,10 @@ switch (post('op')) {
$idconto = $rs[0]['idconto'];
// 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') {
$idrigaddt = post('idriga')[$i];
$idrigaddt = $i;
$idarticolo = post('idarticolo')[$i];
$descrizione = post('descrizione')[$i];

View File

@ -140,6 +140,7 @@ echo '
$data = $(this).selectData();
$("#prezzo").val($data.prezzo_'.($dir == 'entrata' ? 'vendita' : 'acquisto').');
$("#descrizione").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita);
$("#um").selectSetNew($data.um, $data.um);
}else{
$("#prezzi_articolo button").addClass("disabled");

View File

@ -255,7 +255,7 @@ $totale = sum([
$netto_a_pagare = sum([
$totale,
$marca_da_bollo,
$records[0]['bollo'],
-$records[0]['ritenutaacconto'],
]);

View File

@ -133,7 +133,7 @@ switch (post('op')) {
$scontokm_unitario = post('scontokm')[$idriga];
$tipo_scontokm = post('tipo_scontokm')[$idriga];
$scontokm = ($tipo_scontokm == 'PRC') ? ($prezzo_km_consuntivo * $sconto_unitario) / 100 : $scontokm_unitario;
$scontokm = ($tipo_scontokm == 'PRC') ? ($prezzo_km_consuntivo * $scontokm_unitario) / 100 : $scontokm_unitario;
$dbo->update('in_interventi_tecnici', [
'idintervento' => $id_record,

View File

@ -34,7 +34,7 @@ if (empty($idriga)) {
$listino = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id = (SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).')');
if (!empty($listino[0]['prc_guadagno'])) {
$sconto = $listino[0]['prc_guadagno'];
$sconto_unitario = $listino[0]['prc_guadagno'];
$tipo_sconto = 'PRC';
}
} else {
@ -70,7 +70,7 @@ echo '
<input type="hidden" id="idautomezzo" name="idautomezzo" value="'.$idautomezzo.'">
<input type="hidden" name="idriga" value="'.$idriga.'">';
if ($idarticolo != '') {
if (!empty($idarticolo)) {
echo '
<input type="hidden" id="idarticolo_originale" name="idarticolo_originale" value="'.$idarticolo.'">';
}
@ -78,7 +78,7 @@ if ($idarticolo != '') {
// Articolo
echo '
<div class="row">
<div class="col-md-6">
<div class="col-md-12">
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "idarticolo", "required": 1, "value": "'.$idarticolo.'", "ajax-source": "articoli" ]}
</div>
</div>';

View File

@ -32,14 +32,20 @@ if (get('anteprima') !== null) {
<button type="button" class="btn btn-success btn-block btn-lg" id="firma" onclick="$(\'.canvas\').removeClass(\'hide\'); $(this).addClass(\'hide\'); $(\'#pdf\').addClass(\'hide\');">
<i class="fa fa-pencil"></i> '.tr('Firma').'
</button>
<div class="clearfix"></div>
<div class="clearfix"></div>';
<div class="hide" id="pdf">
<object data="'.$rootdir.'/files/interventi/'.$rapportino_nome.'#view=fitH&scrollbar=0&toolbar=0&navpanes=0" id ="rapportino_pdf" type="application/pdf" width="100%">
echo '<div class="hide" id="pdf">';
if (isMobile()) {
echo '<iframe src="'.$rootdir.'/assets/dist/viewerjs/#'.$rootdir.'/files/interventi/'.$rapportino_nome.'" allowfullscreen="" webkitallowfullscreen="" width="100%" height="550" ></iframe>';
} else {
echo '<object data="'.$rootdir.'/files/interventi/'.$rapportino_nome.'#view=fitH&scrollbar=0&toolbar=0&navpanes=0" id ="rapportino_pdf" type="application/pdf" width="100%">
alt : <a href="'.$rootdir.'/files/interventi/'.$rapportino_nome.'" target="_blank">'.$rapportino_nome.'</a>
<span>'.tr('Plugin PDF mancante').'</span>
</object>
</div>';
</object>';
}
echo '</div>';
}
?>

View File

@ -21,7 +21,7 @@ if (empty($idriga)) {
$prezzo_acquisto = '0';
if (!empty($rs[0]['prc_guadagno'])) {
$sconto = $rs[0]['prc_guadagno'];
$sconto_unitario = $rs[0]['prc_guadagno'];
$tipo_sconto = 'PRC';
}
} else {

View File

@ -49,7 +49,7 @@ if (!empty($rs)) {
<tr '.$extra.'>
<td>
<input type="hidden" name="id" value="'.$r['id'].'">
'.Modules::link('Articoli', $r['idarticolo'], $r['descrizione']);
'.Modules::link('Articoli', $r['idarticolo'], (!empty($r['codice']) ? $r['codice'].' - ' : '').$r['descrizione']);
// Info extra (lotto, serial, altro)
if (!empty($r['abilita_serial'])) {

View File

@ -206,7 +206,7 @@ if (!empty($rs2)) {
} else {
echo '
<input type="hidden" name="sconto['.$id.']" value="'.Translator::numberToLocale($sconto_unitario).'" />
<input type="hidden" name="sconto['.$id.']" value="'.Translator::numberToLocale($tipo_sconto).'" />';
<input type="hidden" name="tipo_sconto['.$id.']" value="'.Translator::numberToLocale($tipo_sconto).'" />';
}
echo '

View File

@ -38,7 +38,7 @@ if (empty($records[0]['firma_file'])) {
echo Prints::getDropdown($id_module, $id_record);
?>
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <?php echo tr('Salva modifiche'); ?></button>
<br>
<div class="clearfix" >&nbsp;</div>
</div>
<div class="clearfix"></div>

View File

@ -81,7 +81,7 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto)
// Calcolo il totale delle ore lavorate
$diff = date_diff(date_create($inizio), date_create($fine));
$ore = $diff->h + $diff->m / 60;
$ore = ($diff->h + ($diff->i/60) );
// Leggo i costi unitari dalle tariffe se almeno un valore è stato impostato
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare($idtecnico).' AND idtipointervento='.prepare($idtipointervento));

View File

@ -10,7 +10,7 @@ echo '
</div>
<div class="box-body">';
$results = $dbo->fetchArray('SELECT in_interventi.codice, descrizione, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=my_impianti_interventi.idintervento) AS data FROM my_impianti_interventi INNER JOIN in_interventi ON my_impianti_interventi.idintervento=in_interventi.id WHERE idimpianto='.prepare($id_record).' ORDER BY data DESC');
$results = $dbo->fetchArray('SELECT in_interventi.id, in_interventi.codice, descrizione, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=my_impianti_interventi.idintervento) AS data FROM my_impianti_interventi INNER JOIN in_interventi ON my_impianti_interventi.idintervento=in_interventi.id WHERE idimpianto='.prepare($id_record).' ORDER BY data DESC');
if (!empty($results)) {
echo '
@ -24,7 +24,7 @@ if (!empty($results)) {
echo '
<tr>
<td>
'.Modules::link('Interventi', $result['codice'], tr('Intervento num. _NUM_ del _DATE_', [
'.Modules::link('Interventi', $result['id'], tr('Intervento num. _NUM_ del _DATE_', [
'_NUM_' => $result['codice'],
'_DATE_' => Translator::dateToLocale($result['data']),
])).'

View File

@ -128,6 +128,7 @@ echo '
$data = $(this).selectData();
$("#prezzo").val($data.prezzo_'.($dir == 'entrata' ? 'vendita' : 'acquisto').');
$("#descrizione").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita);
$("#um").selectSetNew($data.um, $data.um);
}else{
$("#prezzi_articolo button").addClass("disabled");

View File

@ -255,9 +255,10 @@ switch (post('op')) {
$rs2 = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva));
$iva = ($subtot - $sconto) / 100 * $rs2[0]['percentuale'];
$iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile'];
$desc_iva = $rs2[0]['descrizione'];
// Modifica riga generica sul documento
$query = 'UPDATE co_righe_preventivi SET idiva='.prepare($idiva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga);
$query = 'UPDATE co_righe_preventivi SET idiva='.prepare($idiva).', desc_iva='.prepare($desc_iva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga);
$dbo->query($query);
$_SESSION['infos'][] = 'Riga modificata!';

View File

@ -65,7 +65,7 @@ echo '
echo '
<div class="row">
<div class="col-md-12">
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "idarticolo", "value": "'.$idarticolo.'", "ajax-source": "articoli", "extra": "onchange=\"session_set(\'superselect,idarticolo\', $(this).val(), 0); $data = $(this).selectData(); $(\'#prezzo\').val($data.prezzo_vendita); $(\'#desc\').val($data.descrizione); $(\'#um\').selectSetNew($data.um, $data.um);\"" ]}
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "idarticolo", "value": "'.$idarticolo.'", "ajax-source": "articoli", "extra": "onchange=\"session_set(\'superselect,idarticolo\', $(this).val(), 0); $data = $(this).selectData(); $(\'#prezzo\').val($data.prezzo_vendita); $(\'#desc\').val($data.descrizione); $(\'#um\').selectSetNew($data.um, $data.um); $(\'#idiva\').selectSet($data.iva_vendita, $data.iva_vendita);\"" ]}
</div>
</div>';

View File

@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
/*
ARTICOLI + RIGHE GENERICHE
*/
$q_art = "SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice, IFNULL((SELECT descrizione FROM co_iva WHERE id=idiva),'') AS desc_iva FROM co_righe_preventivi WHERE idpreventivo=".prepare($id_record).' ORDER BY `order`';
$q_art = "SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo), '') AS codice FROM co_righe_preventivi WHERE idpreventivo=".prepare($id_record).' ORDER BY `order`';
$rs = $dbo->fetchArray($q_art);
echo '

View File

@ -39,10 +39,7 @@ $d2 = new DateTime($end);
$count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1;
$fatturato = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month 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_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
$entrate = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month 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 co_movimenti ON co_movimenti.iddocumento=co_documenti.id AND primanota=1 WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
$uscite = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month 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 co_movimenti ON co_movimenti.iddocumento=co_documenti.id AND primanota=1 WHERE co_tipidocumento.dir='uscita' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
$acquisti = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month 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='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
$month = intval($d1->format('m')) - 1;
for ($i = 0; $i < $count; ++$i) {
@ -54,14 +51,8 @@ for ($i = 0; $i < $count; ++$i) {
]]);
}
if (intval($entrate[$i]['month']) != $month + 1) {
array_splice($entrate, $i, 0, [[
'totale' => 0,
]]);
}
if (intval($uscite[$i]['month']) != $month + 1) {
array_splice($uscite, $i, 0, [[
if (intval($acquisti[$i]['month']) != $month + 1) {
array_splice($acquisti, $i, 0, [[
'totale' => 0,
]]);
}
@ -73,7 +64,7 @@ for ($i = 0; $i < $count; ++$i) {
echo '
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Fatturato').'</h3>
<h3 class="box-title">'.tr('Vendite e acquisti').'</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
@ -81,7 +72,7 @@ echo '
</button>
</div>
</div>
<canvas class="box-body collapse in" id="fatturato"></canvas>
<canvas class="box-body collapse in" id="fatturato" height="100"></canvas>
</div>';
// Script per il grafico del fatturato
@ -95,23 +86,16 @@ $(document).ready(function() {
datasets: [
{
label: "'.tr('Fatturato').'",
backgroundColor: "yellow",
backgroundColor: "#63E360",
data: [
'.implode(',', array_column($fatturato, 'totale')).'
]
},
{
label: "'.tr('Entrate').'",
backgroundColor: "green",
label: "'.tr('Acquisti').'",
backgroundColor: "#EE4B4B",
data: [
'.implode(',', array_column($entrate, 'totale')).'
]
},
{
label: "'.tr('Uscite').'",
backgroundColor: "red",
data: [
'.implode(',', array_column($uscite, 'totale')).'
'.implode(',', array_column($acquisti, 'totale')).'
]
}
]
@ -220,12 +204,12 @@ echo '
</div>
</div>';
// Interventi per stato
$stati = $dbo->fetchArray('SELECT * FROM `in_statiintervento`');
// Interventi per tipologia
$tipi = $dbo->fetchArray('SELECT * FROM `in_tipiintervento`');
$dataset = '';
foreach ($stati as $stato) {
$interventi = $dbo->fetchArray('SELECT COUNT(*) AS totale, YEAR(in_interventi.data_richiesta) AS year, MONTH(in_interventi.data_richiesta) AS month FROM in_interventi WHERE in_interventi.idstatointervento = '.prepare($stato['idstatointervento']).' AND in_interventi.data_richiesta BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(in_interventi.data_richiesta), MONTH(in_interventi.data_richiesta) ORDER BY YEAR(in_interventi.data_richiesta) ASC, MONTH(in_interventi.data_richiesta) ASC');
foreach ($tipi as $tipo) {
$interventi = $dbo->fetchArray('SELECT COUNT(*) AS totale, YEAR(in_interventi.data_richiesta) AS year, MONTH(in_interventi.data_richiesta) AS month FROM in_interventi WHERE in_interventi.idtipointervento = '.prepare($tipo['idtipointervento']).' AND in_interventi.data_richiesta BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(in_interventi.data_richiesta), MONTH(in_interventi.data_richiesta) ORDER BY YEAR(in_interventi.data_richiesta) ASC, MONTH(in_interventi.data_richiesta) ASC');
$month = intval($d1->format('m')) - 1;
for ($i = 0; $i < $count; ++$i) {
@ -240,9 +224,12 @@ foreach ($stati as $stato) {
++$month;
}
//Random color
$background = '#' . dechex(rand(256,16777215));
$dataset .= '{
label: "'.$stato['descrizione'].'",
backgroundColor: "'.$stato['colore'].'",
label: "'.$tipo['descrizione'].'",
backgroundColor: "'.$background.'",
data: [
'.implode(',', array_column($interventi, 'totale')).'
]
@ -252,7 +239,7 @@ foreach ($stati as $stato) {
echo '
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Interventi per stato').'</h3>
<h3 class="box-title">'.tr('Interventi per tipologia').'</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
@ -260,7 +247,7 @@ echo '
</button>
</div>
</div>
<canvas class="box-body collapse in" id="interventi"></canvas>
<canvas class="box-body collapse in" id="interventi" height="100"></canvas>
</div>';
// Script per il grafico del fatturato

View File

@ -24,7 +24,7 @@ echo '
<div class="row">
<div class="col-xs-12 col-md-6">
{[ "type": "text", "label": "'.tr('Indirizzo').'", "name": "indirizzo", "required": 1, "value": "$indirizzo$" ]}
{[ "type": "text", "label": "'.tr('Indirizzo').'", "name": "indirizzo", "id": "indirizzo_", "required": 1, "value": "$indirizzo$" ]}
</div>
<div class="col-xs-12 col-md-6">
@ -44,7 +44,7 @@ echo '
<div class="row">
<div class="col-xs-12 col-md-3">
{[ "type": "text", "label": "'.tr('Città').'", "name": "citta", "value": "$citta$" ]}
{[ "type": "text", "label": "'.tr('Città').'", "name": "citta", "id": "citta_", "value": "$citta$" ]}
</div>
<div class="col-xs-12 col-md-3">
@ -91,39 +91,40 @@ echo '
</div>';
if (!empty($google)) {
echo '
<div class="row">
<div class="col-md-9">
<div class="row">
<div class="col-md-4" id="geocomplete">
{[ "type": "text", "label": "'.tr('Indirizzo Google').'", "name": "gaddress", "value": "$gaddress$", "extra": "data-geo=\'formatted_address\'" ]}
</div>
echo '
<div class="row">
<div class="col-md-6" id="geocomplete">
{[ "type": "text", "label": "'.tr('Indirizzo Google').'", "name": "gaddress", "value": "$gaddress$", "extra": "data-geo=\'formatted_address\'" ]}
</div>
<div class="col-md-4">
{[ "type": "text", "label": "'.tr('Latitudine').'", "name": "lat", "value": "$lat$", "extra": "data-geo=\'lat\'", "class": "text-right" ]}
</div>
<div class="col-md-2">
{[ "type": "text", "label": "'.tr('Latitudine').'", "name": "lat", "id": "lat_", "value": "$lat$", "extra": "data-geo=\'lat\'", "class": "text-right" ]}
</div>
<div class="col-md-4">
{[ "type": "text", "label": "'.tr('Longitudine').'", "name": "lng", "value": "$lng$", "extra": "data-geo=\'lng\'", "class": "text-right" ]}
</div>
</div>
</div>';
<div class="col-md-2">
{[ "type": "text", "label": "'.tr('Longitudine').'", "name": "lng", "id": "lng_", "value": "$lng$", "extra": "data-geo=\'lng\'", "class": "text-right" ]}
</div>';
// Calcola percorso
if (empty($records[0]['gaddress']) || (empty($records[0]['lat']) && empty($records[0]['lng']))) {
// Vedi su google maps
if (!empty($records[0]['indirizzo']) || (empty($records[0]['citta'])) ) {
echo '
<div class="col-md-3">
<label>&nbsp;</label><br>
<a class="btn btn-info" onclick="window.open(\'https://maps.google.com/maps/search/\'+encodeURI( $(\'#indirizzo\').val() )+\', \'+encodeURI( $(\'#citta\').val() ) );"><i class="fa fa-map-marker"></i> Cerca su Google Maps...</a>
</div>';
<div class="btn-group col-md-2" >
<label>&nbsp;</label><br>
<a class="btn btn-info" title="'.tr('Mostra la sede su Google Maps').'" onclick="window.open(\'https://maps.google.com/maps/search/\'+encodeURI( $(\'#indirizzo_\').val() )+\', \'+encodeURI( $(\'#citta_\').val() ) );">&nbsp;<i class="fa fa-map-marker">&nbsp;</i></a>
';
echo '
<a title="'.tr('Calcola percoso da sede legale a questa sede').'" class="btn btn-primary btn-secondary" onclick="window.open(\'https://maps.google.com/maps/dir/\'+encodeURI( $(\'#indirizzo_\').val() )+\', \'+encodeURI( $(\'#citta_\').val() )+\'/\'+encodeURI( $(\'#indirizzo\').val() )+\',\'+encodeURI( $(\'#citta\').val() )+\',8z\');"><i class="fa fa-car"></i></a>
</div>';
}
echo '
</div>';
if (!empty($records[0]['gaddress']) || (!empty($records[0]['lat']) && !empty($records[0]['lng']))) {
echo '
<div id="map" style="height:400px; width:100%"></div>';
echo '
<div id="map" style="height:400px; width:100%"></div><br>';
}
} else {
echo '
@ -153,12 +154,12 @@ echo '
$(document).ready( function(){
$("#form_sedi #geocomplete input").geocomplete({
map: $("#form_sedi #map").length ? "#form_sedi #map" : false,
location: $("#form_sedi #gaddress").val() ? $("#form_sedi #gaddress").val() : [$("#form_sedi #lat").val(), $("#form_sedi #lng").val()],
location: $("#form_sedi #gaddress").val() ? $("#form_sedi #gaddress").val() : [$("#form_sedi #lat_").val(), $("#form_sedi #lng_").val()],
details: "#form_sedi .details",
detailsAttribute: "data-geo"
}).bind("geocode:result", function (event, result) {
$("#form_sedi #lat").val(result.geometry.location.lat());
$("#form_sedi #lng").val(result.geometry.location.lng());
$("#form_sedi #lat_").val(result.geometry.location.lat());
$("#form_sedi #lng_").val(result.geometry.location.lng());
});
});
</script>';

View File

@ -11,13 +11,15 @@ $module_name = ($records[0]['dir'] == 'entrata') ? 'Ddt di vendita' : 'Ddt di ac
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];
$numero = !empty($records[0]['numero_esterno']) ? $records[0]['numero_esterno'] : $records[0]['numero'];
$tipo_doc = $records[0]['tipo_doc'];
if (empty($records[0]['numero_esterno'])) {
$numero = 'pro-forma '.$numero;
$tipo_doc = tr('Ddt pro-forma', [], ['upper' => true]);
} else {
$numero = !empty($records[0]['numero_esterno']) ? $records[0]['numero_esterno'] : $records[0]['numero'];
}
// Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi)
$destinazione = '';
if (!empty($records[0]['idsede'])) {

View File

@ -192,9 +192,22 @@ if (!empty($records[0]['note'])) {
<p>'.nl2br($records[0]['note']).'</p>';
}
if (abs($records[0]['bollo']) > 0) {
echo '
<br>
<table style="width: 20mm; font-size: 50%; text-align: center" class="table-bordered">
<tr>
<td style="height: 20mm;">
<br><br>
'.tr('Spazio per applicazione marca da bollo', [], ['upper' => true]).'
</td>
</tr>
</table>';
}
// Info per il footer
$imponibile = sum($imponibile);
$iva = sum($iva);
$iva = sum($iva) + $records[0]['iva_rivalsainps'];
$sconto = sum($sconto);
$totale = $imponibile + $iva - $sconto;
$totale = $imponibile + $iva - $sconto + $records[0]['rivalsainps'];

View File

@ -147,7 +147,7 @@ if (!empty($sconto)) {
</td>';
}
echo "
echo "
<td class='cell-padded text-center'>
".Translator::numberToLocale($iva)." &euro;
</td>
@ -157,29 +157,119 @@ if (!empty($sconto)) {
</td>
</tr>';
// Ritenuta d'acconto
if ($records[0]['ritenutaacconto'] != 0) {
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenutaacconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idritenutaacconto!=0 LIMIT 0,1)');
// Aggiunta della marca da bollo al totale
$totale = sum($totale, $records[0]['bollo']);
echo "
// 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)');
$first_colspan = 3;
$second_colspan = 2;
if (abs($records[0]['bollo']) > 0) {
--$first_colspan;
}
if (empty($sconto)) {
--$first_colspan;
--$second_colspan;
}
echo '
<tr>
<th class='text-center small' colspan=".(!empty($sconto) ? 3 : 2).'>
'.tr("Ritenuta d'acconto _PRC_%", [
<th class="text-center small" colspan="'.$first_colspan.'">
'.tr('Rivalsa INPS _PRC_%', [
'_PRC_' => Translator::numberToLocale($rs2[0]['percentuale'], 0),
], ['upper' => true])."
</th>
], ['upper' => true]).'
</th>';
<th class='text-center small' colspan=".(!empty($sconto) ? 2 : 1).'>
'.tr('Netto a pagare', [], ['upper' => true])."
if (abs($records[0]['bollo']) > 0) {
echo '
<th class="text-center small" colspan="1">
'.tr('Marca da bollo', [], ['upper' => true]).'
</th>';
}
echo '
<th class="text-center small" colspan="'.$second_colspan.'">
'.tr('Totale documento', [], ['upper' => true]).'
</th>
</tr>
<tr>
<td class='cell-padded text-center' colspan=".(!empty($sconto) ? 3 : 2).'>
'.Translator::numberToLocale($records[0]['ritenutaacconto'])." &euro;
</td>
<td class="cell-padded text-center" colspan="'.$first_colspan.'">
'.Translator::numberToLocale($records[0]['rivalsainps']).' &euro;
</td>';
<td class='cell-padded text-center' colspan=".(!empty($sconto) ? 2 : 1).'>
if (abs($records[0]['bollo']) > 0) {
echo '
<td class="cell-padded text-center" colspan="1">
'.Translator::numberToLocale($records[0]['bollo']).' &euro;
</td>';
}
echo '
<td class="cell-padded text-center" colspan="'.$second_colspan.'">
'.Translator::numberToLocale($totale).' &euro;
</td>
</tr>';
}
// Ritenuta d'acconto
if ($records[0]['ritenutaacconto'] != 0) {
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenutaacconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idritenutaacconto!=0 LIMIT 0,1)');
$first_colspan = 3;
$second_colspan = 2;
if (empty($records[0]['rivalsainps']) && abs($records[0]['bollo']) > 0) {
--$first_colspan;
}
if (empty($sconto)) {
--$first_colspan;
--$second_colspan;
}
echo '
<tr>
<th class="text-center small" colspan="'.$first_colspan.'">
'.tr("Ritenuta d'acconto _PRC_%", [
'_PRC_' => Translator::numberToLocale($rs2[0]['percentuale'], 0),
], ['upper' => true]).'
</th>';
if (empty($records[0]['rivalsainps']) && abs($records[0]['bollo']) > 0) {
echo '
<th class="text-center small" colspan="1">
'.tr('Marca da bollo', [], ['upper' => true]).'
</th>';
}
echo '
<th class="text-center small" colspan="'.$second_colspan.'">
'.tr('Netto a pagare', [], ['upper' => true]).'
</th>
</tr>
<tr>
<td class="cell-padded text-center" colspan="'.$first_colspan.'">
'.Translator::numberToLocale($records[0]['ritenutaacconto']).' &euro;
</td>';
if (empty($records[0]['rivalsainps']) && abs($records[0]['bollo']) > 0) {
echo '
<td class="cell-padded text-center" colspan="1">
'.Translator::numberToLocale($records[0]['bollo']).' &euro;
</td>';
}
echo '
<td class="cell-padded text-center" colspan="'.$second_colspan.'">
'.Translator::numberToLocale($totale - $records[0]['ritenutaacconto']).' &euro;
</td>
</tr>';

View File

@ -15,6 +15,10 @@ $records = $dbo->fetchArray('SELECT *,
(SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idvettore) AS vettore
FROM co_documenti WHERE id='.prepare($id_record));
$records[0]['rivalsainps'] = floatval($records[0]['rivalsainps']);
$records[0]['ritenutaacconto'] = floatval($records[0]['ritenutaacconto']);
$records[0]['bollo'] = floatval($records[0]['bollo']);
$module_name = ($records[0]['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';
$id_cliente = $records[0]['idanagrafica'];

View File

@ -0,0 +1,17 @@
<table>
<tr>
<td style="vertical-align:bottom;" width="50%">
, ___________________________
</td>
<td align="center" style="vertical-align:bottom;" width="50%">
FIRMA PER ACCETTAZIONE<br><br>
_____________________________________
</td>
</tr>
</table>
<br>
<?php
echo '$default_footer$';
?>