Merge branch 'master' into 2.4
This commit is contained in:
commit
21f65192c1
|
@ -288,8 +288,8 @@ if (empty($creation) && (!file_exists('config.inc.php') || !$valid_config)) {
|
|||
<div id="steps">
|
||||
|
||||
<div id="step-1">
|
||||
<p>'.tr('Un benvenuto da OpenSTAManager!').'</p>
|
||||
<p>'.tr("Prima di procedere alla configurazione e all'installazione del software, sono necessari alcuni accorgimenti per garantire il corretto funzionamento del gestionale").'.</p>
|
||||
<p>'.tr('Benvenuto in <strong>OpenSTAManager</strong>!').'</p>
|
||||
<p>'.tr("Prima di procedere alla configurazione e all'installazione del software, sono necessari alcuni accorgimenti per garantire il corretto funzionamento del gestionale. Stai utilizzando la versione PHP ".phpversion()."").'.</p>
|
||||
<hr>';
|
||||
|
||||
// Estensioni di PHP
|
||||
|
@ -483,7 +483,7 @@ if (empty($creation) && (!file_exists('config.inc.php') || !$valid_config)) {
|
|||
// db_host
|
||||
echo '
|
||||
<div class="col-xs-12">
|
||||
{[ "type": "text", "label": "'.tr('Host del database').'", "name": "db_host", "placeholder": "'.tr("Indirizzo dell'host del database").'", "value": "'.$host.'", "help": "'.tr('Esempio').': <i>localhost</i>", "show-help": 1, "required": 1 ]}
|
||||
{[ "type": "text", "label": "'.tr('Host del database').'", "name": "db_host", "placeholder": "'.tr("Indirizzo dell'host del database").'", "value": "'.$host.'", "help": "'.tr('Esempio').': localhost", "show-help": 1, "required": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -492,19 +492,19 @@ if (empty($creation) && (!file_exists('config.inc.php') || !$valid_config)) {
|
|||
// db_username
|
||||
echo '
|
||||
<div class="col-xs-12 col-md-4">
|
||||
{[ "type": "text", "label": "'.tr("Username dell'utente MySQL").'", "name": "db_username", "placeholder": "'.tr("Username dell'utente MySQL").'", "value": "'.$username.'", "help": "'.tr('Esempio').': <i>root</i>", "show-help": 1, "required": 1 ]}
|
||||
{[ "type": "text", "label": "'.tr("Username dell'utente MySQL").'", "name": "db_username", "placeholder": "'.tr("Username dell'utente MySQL").'", "value": "'.$username.'", "help": "'.tr('Esempio').': root", "show-help": 1, "required": 1 ]}
|
||||
</div>';
|
||||
|
||||
// db_password
|
||||
echo '
|
||||
<div class="col-xs-12 col-md-4">
|
||||
{[ "type": "password", "label": "'.tr("Password dell'utente MySQL").'", "name": "db_password", "placeholder": "'.tr("Password dell'utente MySQL").'", "value": "'.$password.'", "help": "'.tr('Esempio').': <i>mysql</i>", "show-help": 1 ]}
|
||||
{[ "type": "password", "label": "'.tr("Password dell'utente MySQL").'", "name": "db_password", "placeholder": "'.tr("Password dell'utente MySQL").'", "value": "'.$password.'", "help": "'.tr('Esempio').': mysql", "show-help": 1 ]}
|
||||
</div>';
|
||||
|
||||
// db_name
|
||||
echo '
|
||||
<div class="col-xs-12 col-md-4">
|
||||
{[ "type": "text", "label": "'.tr('Nome del database').'", "name": "db_name", "placeholder": "'.tr('Nome del database').'", "value": "'.$name.'", "help": "'.tr('Esempio').': <i>openstamanager</i>", "show-help": 1, "required": 1 ]}
|
||||
{[ "type": "text", "label": "'.tr('Nome del database').'", "name": "db_name", "placeholder": "'.tr('Nome del database').'", "value": "'.$name.'", "help": "'.tr('Esempio').': openstamanager", "show-help": 1, "required": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -513,7 +513,7 @@ if (empty($creation) && (!file_exists('config.inc.php') || !$valid_config)) {
|
|||
// Password utente admin
|
||||
echo '
|
||||
<div class="col-xs-12 col-md-6">
|
||||
{[ "type": "password", "label": "'.tr("Password dell'amministratore").'", "name": "osm_password", "placeholder": "'.tr('Scegli la password di amministratore').'", "value": "'.$osm_password.'", "help": "'.tr('Valore di default').': <i>admin</i>", "show-help": 1 ]}
|
||||
{[ "type": "password", "label": "'.tr("Password dell'amministratore").'", "name": "osm_password", "placeholder": "'.tr('Scegli la password di amministratore').'", "value": "'.$osm_password.'", "help": "'.tr('Valore di default').': admin", "show-help": 1 ]}
|
||||
</div>';
|
||||
|
||||
// Email utente admin
|
||||
|
|
|
@ -113,14 +113,6 @@ if (!empty($module_options) && $module_options != 'menu' && $module_options != '
|
|||
</tfoot>
|
||||
</table>';
|
||||
|
||||
$bulk = null;
|
||||
if (file_exists($docroot.$directory.'/custom/bulk.php')) {
|
||||
$bulk = include $docroot.$directory.'/custom/bulk.php';
|
||||
} elseif (file_exists($docroot.$directory.'/bulk.php')) {
|
||||
$bulk = include $docroot.$directory.'/bulk.php';
|
||||
}
|
||||
$bulk = (array) $bulk;
|
||||
|
||||
echo '
|
||||
<div class="row" data-target="'.$table_id.'">
|
||||
<div class="col-xs-12 col-md-5">
|
||||
|
|
|
@ -46,7 +46,7 @@ if (filter('action') == 'do_update') {
|
|||
$rate = $scriptValue;
|
||||
}
|
||||
|
||||
// Aumento della percentuale di completameno totale
|
||||
// Aumento della percentuale di completamento totale
|
||||
if (!empty($rate)) {
|
||||
echo '
|
||||
<script>
|
||||
|
@ -171,7 +171,7 @@ if (filter('action') == 'do_update') {
|
|||
<p>'.tr("E' necessario aggiornare il database a una nuova versione").'.</p>';
|
||||
}
|
||||
echo '
|
||||
<p>'.tr("Premi il tasto _BUTTON_ per procedere con l'aggiornamento!", [
|
||||
<p>'.tr("Premi il tasto _BUTTON_ per procedere con l'".(!$dbo->isInstalled() ? tr('installazione') : tr('aggiornamento'))."!", [
|
||||
'_BUTTON_' => '<b>"'.$button.'"</b>',
|
||||
]).'</p>
|
||||
<input type="button" class="btn btn-primary" value="'.$button.'" onclick="continue_update()" id="contine_button">
|
||||
|
@ -179,8 +179,8 @@ if (filter('action') == 'do_update') {
|
|||
<script>
|
||||
function continue_update(){
|
||||
swal({
|
||||
title: "'.tr('Sei sicuro?').'",
|
||||
text: "'.tr("Continuare con l'aggiornamento?").'",
|
||||
title: "'.(!$dbo->isInstalled() ? tr('Procedere con l\'installazione?') : tr('Procedere l\'aggiornamento?')).'",
|
||||
text: "",
|
||||
type: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonClass: "btn btn-lg btn-success",
|
||||
|
|
1447
locale/catalog.pot
1447
locale/catalog.pot
File diff suppressed because it is too large
Load Diff
BIN
locale/en/en.mo
BIN
locale/en/en.mo
Binary file not shown.
2768
locale/en/en.po
2768
locale/en/en.po
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
BIN
locale/it/it.mo
BIN
locale/it/it.mo
Binary file not shown.
5530
locale/it/it.po
5530
locale/it/it.po
File diff suppressed because it is too large
Load Diff
|
@ -57,7 +57,7 @@ echo '
|
|||
?>
|
||||
|
||||
<div class="col-xs-12 col-md-7">
|
||||
{[ "type": "select", "label": "<?php echo tr('Inizio pianificazione') ?>", "name": "parti_da_oggi", "values": "list= \"0\":\"<?php echo tr('Pianificare dal ').$data_richiesta ?>\", \"1\":\"<?php echo tr('Pianificare a partire da oggi ').date('d/m/Y') ?>\"", "value": "" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Inizio pianificazione') ?>", "name": "parti_da_oggi", "values": "list= \"0\":\"<?php echo tr('Pianificare a partire da questo promemoria ').$data_richiesta ?>\", \"1\":\"<?php echo tr('Pianificare a partire da oggi ').date('d/m/Y') ?>\"", "value": "" ]}
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
@ -75,7 +75,7 @@ echo '
|
|||
<div class="row">
|
||||
|
||||
<div class="col-xs-12 col-md-4">
|
||||
{[ "type": "checkbox", "label": "'.tr('Pianifica intervento').'", "name": "pianifica_intervento", "value": "0", "help": "", "placeholder": "'.tr('Pianificare anche gli interventi ').'" ]}
|
||||
{[ "type": "checkbox", "label": "'.tr('Pianifica anche l\'intervento').'", "name": "pianifica_intervento", "value": "0", "help": "", "placeholder": "'.tr('Pianificare già l\'intervento ').'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-4">
|
||||
|
|
|
@ -21,7 +21,7 @@ switch (filter('op')) {
|
|||
}
|
||||
break;
|
||||
|
||||
// Eliminazione intervento
|
||||
// Eliminazione pianificazione
|
||||
case 'depianifica':
|
||||
$id = filter('id');
|
||||
|
||||
|
@ -30,6 +30,16 @@ switch (filter('op')) {
|
|||
|
||||
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin);
|
||||
|
||||
break;
|
||||
|
||||
//Eliminazione tutti i promemoria di questo contratto con non hanno l'intervento associato
|
||||
case 'delete-promemoria':
|
||||
|
||||
$dbo->query('DELETE FROM `co_righe_contratti` WHERE idcontratto = '.$id_record.' AND idintervento IS NULL');
|
||||
$_SESSION['errors'][] = tr('Tutti i promemoria non associati sono stati eliminati!');
|
||||
|
||||
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin);
|
||||
|
||||
break;
|
||||
|
||||
//pianificazione
|
||||
|
@ -39,7 +49,7 @@ switch (filter('op')) {
|
|||
$intervallo = filter('intervallo');
|
||||
$parti_da_oggi = post('parti_da_oggi');
|
||||
|
||||
if (!empty($idcontratto_riga) && !empty($intervallo)) {
|
||||
if (!empty($idcontratto_riga) and !empty($intervallo)) {
|
||||
$qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_record.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_record.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento FROM co_righe_contratti WHERE id = '.$idcontratto_riga;
|
||||
$rsp = $dbo->fetchArray($qp);
|
||||
|
||||
|
@ -62,14 +72,14 @@ switch (filter('op')) {
|
|||
}
|
||||
|
||||
//inizio controllo data_conclusione, data valida e maggiore della $min_date
|
||||
if ((date('Y', strtotime($data_conclusione)) > 1970) && (date('Y-m-d', strtotime($min_date)) < date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
if ((date('Y', strtotime($data_conclusione)) > 1970) and (date('Y-m-d', strtotime($min_date)) < date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
//Ciclo partendo dalla data_richiesta fino all data conclusione del contratto
|
||||
while (date('Y-m-d', strtotime($data_richiesta)) < date('Y-m-d', strtotime($data_conclusione))) {
|
||||
//calcolo nuova data richiesta
|
||||
$data_richiesta = date('Y-m-d', strtotime($data_richiesta.' + '.intval($intervallo).' days'));
|
||||
|
||||
//controllo nuova data richiesta --> solo date maggiori o uguali di [oggi o data richiesta iniziale] ma che non superano la data di fine del contratto
|
||||
if ((date('Y-m-d', strtotime($data_richiesta)) >= $min_date) && (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
if ((date('Y-m-d', strtotime($data_richiesta)) >= $min_date) and (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
//Controllo che non esista già un promemoria idcontratto, idtipointervento e data_richiesta.
|
||||
if (count($dbo->fetchArray("SELECT id FROM co_righe_contratti WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_record."' ")) == 0) {
|
||||
$query = 'INSERT INTO `co_righe_contratti`(`idcontratto`, `idtipointervento`, `data_richiesta`, `richiesta`, `idsede`) VALUES('.prepare($id_record).', '.prepare($idtipointervento).', '.prepare($data_richiesta).', '.prepare($richiesta).', '.prepare($idsede).')';
|
||||
|
@ -164,13 +174,14 @@ $pianificabile = $dbo->fetchNum('SELECT id FROM co_staticontratti WHERE pianific
|
|||
echo '
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">'.tr('Pianificazione interventi').'</h3>
|
||||
<h3 class="box-title"><span class="tip" title="'.tr('I promemoria verranno visualizzati sulla \'Dashboard\' e serviranno per semplificare la pianificazione del giorno dell\'intervento, ad esempio nel caso di interventi con cadenza mensile.').'"" >'.tr('Pianificazione interventi').' <i class="fa fa-question-circle-o"></i></span> </h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<p>'.tr('Puoi <b>pianificare dei "promemoria"</b> degli interventi da effettuare entro determinate scadenze').'</p>
|
||||
<p>'.tr('Questi promemoria serviranno per semplificare la pianificazione del giorno esatto di intervento nel caso, ad esempio, di interventi mensili e verranno visualizzati nella dashboard').'.</p>';
|
||||
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria il contratto deve essere attivo e la data di conclusione definita').'.</p>';
|
||||
|
||||
// Nessun intervento pianificato
|
||||
if (count($rsp) != 0) {
|
||||
echo '<br><h5>'.tr('Lista promemoria ed eventuali interventi associati').':</h5>';
|
||||
echo '
|
||||
<table class="table table-condensed table-striped table-hover">
|
||||
<thead>
|
||||
|
@ -185,7 +196,7 @@ if (count($rsp) != 0) {
|
|||
</thead>
|
||||
<tbody>';
|
||||
|
||||
// Elenco interventi
|
||||
// Elenco promemoria
|
||||
for ($i = 0; $i < sizeof($rsp); ++$i) {
|
||||
// Sede
|
||||
if ($rsp[$i]['idsede'] == '-1') {
|
||||
|
@ -226,7 +237,7 @@ if (count($rsp) != 0) {
|
|||
<td align="right">';
|
||||
|
||||
echo '
|
||||
<button type="button" class="btn btn-warning btn-sm" title="Pianifica altri promemoria..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica altri promemoria\', \''.$rootdir.'/modules/contratti/plugins/addpianficazione.php?id_module='.Modules::get('Contratti')['id'].'&id_plugin='.Plugins::get('Pianificazione interventi')['id'].'&ref=interventi_contratti&id_record='.$id_record.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.((!empty($pianificabile) && strtotime($records[0]['data_conclusione'])) ? '' : ' disabled').'><i class="fa fa-clock-o"></i></button>';
|
||||
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$rootdir.'/modules/contratti/plugins/addpianficazione.php?id_module='.Modules::get('Contratti')['id'].'&id_plugin='.Plugins::get('Pianificazione interventi')['id'].'&ref=interventi_contratti&id_record='.$id_record.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.((!empty($pianificabile) and strtotime($records[0]['data_conclusione'])) ? '' : ' disabled').'><i class="fa fa-clock-o"></i></button>';
|
||||
|
||||
echo '
|
||||
<button type="button" '.$disabled.' class="btn btn-primary btn-sm '.$disabled.' " title="Pianifica intervento ora..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica intervento\', \''.$rootdir.'/add.php?id_module='.Modules::get('Interventi')['id'].'&ref=interventi_contratti&idcontratto='.$id_record.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.(!empty($pianificabile) ? '' : ' disabled').'><i class="fa fa-calendar"></i></button>';
|
||||
|
@ -243,13 +254,19 @@ if (count($rsp) != 0) {
|
|||
echo '
|
||||
</tbody>
|
||||
</table>';
|
||||
|
||||
if (count($rsp) > 0) {
|
||||
echo '<br><div class="pull-right"><button type="button" title="Elimina tutti i promemoria per questo contratto che non sono associati ad intervento." class="btn btn-danger ask tip" data-op="delete-promemoria" >
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina promemoria').'
|
||||
</button></div>';
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Nuovo intervento
|
||||
*/
|
||||
echo '
|
||||
<p>'.tr('Pianifica promemoria per un nuovo intervento').':</p>
|
||||
<br><h5>'.tr('Pianifica un nuovo promemoria per un intervento').':</h5>
|
||||
<form action="" method="post">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="pianifica">
|
||||
|
|
|
@ -17,7 +17,7 @@ switch (get('op')) {
|
|||
|
||||
$tipi = (array) $_SESSION['dashboard']['idtipiintervento'];
|
||||
|
||||
$query = 'SELECT in_interventi_tecnici.idintervento, colore, in_interventi_tecnici.id, idtecnico, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, (SELECT colore FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS colore_tecnico, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS cliente FROM in_interventi_tecnici INNER JOIN (in_interventi LEFT OUTER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento) ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi_tecnici.orario_inizio >= '.prepare($start).' AND in_interventi_tecnici.orario_fine <= '.prepare($end).' AND idtecnico IN('.implode(',', $_SESSION['dashboard']['idtecnici']).') AND in_interventi.idstatointervento IN('.implode(',', $stati).') AND in_interventi_tecnici.idtipointervento IN('.implode(',', $tipi).') '.Modules::getAdditionalsQuery('Interventi');
|
||||
$query = 'SELECT in_interventi_tecnici.idintervento, colore, in_interventi_tecnici.id, idtecnico, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, (SELECT colore FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS colore_tecnico, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS cliente, (SELECT idzona FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS idzona FROM in_interventi_tecnici INNER JOIN (in_interventi LEFT OUTER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento) ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi_tecnici.orario_inizio >= '.prepare($start).' AND in_interventi_tecnici.orario_fine <= '.prepare($end).' AND idtecnico IN('.implode(',', $_SESSION['dashboard']['idtecnici']).') AND in_interventi.idstatointervento IN('.implode(',', $stati).') AND in_interventi_tecnici.idtipointervento IN('.implode(',', $tipi).') '.Modules::getAdditionalsQuery('Interventi').' HAVING idzona IN ('.implode(',', $_SESSION['dashboard']['idzone']).')';
|
||||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
$results = [];
|
||||
|
|
|
@ -155,7 +155,9 @@ $count = 0;
|
|||
$total = 0;
|
||||
$totale_tecnici = 0; // conteggia tecnici eliminati e non
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale 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 deleted=0 AND descrizione='Tecnico' ORDER BY ragione_sociale ASC");
|
||||
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale 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
|
||||
LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id
|
||||
WHERE an_anagrafiche.deleted=0 AND an_tipianagrafiche.descrizione='Tecnico' ".Modules::getAdditionalsQuery('Interventi')." GROUP BY an_anagrafiche.idanagrafica ORDER BY ragione_sociale ASC");
|
||||
$total = count($rs);
|
||||
|
||||
$totale_tecnici += $total;
|
||||
|
|
|
@ -296,64 +296,66 @@ switch (post('op')) {
|
|||
|
||||
//Fatturo le ore di lavoro raggruppate per costo orario
|
||||
$rst = $dbo->fetchArray('SELECT SUM( ROUND( TIMESTAMPDIFF( MINUTE, orario_inizio, orario_fine ) / 60, '.get_var('Cifre decimali per quantità').' ) ) AS tot_ore, SUM(prezzo_ore_consuntivo) AS tot_prezzo_ore_consuntivo, prezzo_ore_unitario FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento).' GROUP BY prezzo_ore_unitario');
|
||||
|
||||
|
||||
//Aggiunta riga intervento sul documento
|
||||
for ($i = 0; $i < sizeof($rst); ++$i) {
|
||||
$ore = $rst[$i]['tot_ore'];
|
||||
if( sizeof($rst) == 0 ){
|
||||
$_SESSION['warnings'][] = tr('L\'intervento _NUM_ non ha sessioni di lavoro!', [
|
||||
'_NUM_' => $idintervento,
|
||||
]);
|
||||
} else {
|
||||
for( $i=0; $i<sizeof($rst); $i++ ){
|
||||
$ore = $rst[$i]['tot_ore'];
|
||||
|
||||
// Calcolo iva
|
||||
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
// Calcolo iva
|
||||
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$sconto = $rst[$i]['sconto'];
|
||||
$subtot = $rst[$i]['tot_prezzo_ore_consuntivo'];
|
||||
$iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||
$desc_iva = $rs[0]['descrizione'];
|
||||
|
||||
$sconto = $rst[$i]['sconto'];
|
||||
$subtot = $rst[$i]['tot_prezzo_ore_consuntivo'];
|
||||
$iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||
$desc_iva = $rs[0]['descrizione'];
|
||||
// Calcolo rivalsa inps
|
||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS'));
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
||||
|
||||
// Calcolo rivalsa inps
|
||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS'));
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
||||
|
||||
// Calcolo ritenuta d'acconto
|
||||
$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'];
|
||||
|
||||
$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).', '.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);
|
||||
// Calcolo ritenuta d'acconto
|
||||
$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'];
|
||||
|
||||
$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).', '.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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$costi_intervento = get_costi_intervento($idintervento);
|
||||
|
||||
// Aggiunta diritto di chiamata (se presente) come riga a parte
|
||||
$diritto_chiamata = $costi_intervento['dirittochiamata_addebito'];
|
||||
//Fatturo i diritti di chiamata raggruppati per costo
|
||||
$rst = $dbo->fetchArray('SELECT COUNT(id) AS qta, SUM(prezzo_dirittochiamata) AS tot_prezzo_dirittochiamata FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento).' AND prezzo_dirittochiamata > 0 GROUP BY prezzo_dirittochiamata');
|
||||
|
||||
// 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).', '.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);
|
||||
|
||||
// Aggiunta diritto di chiamata se >0
|
||||
if ($diritto_chiamata > 0) {
|
||||
// Aggiunta diritto di chiamata se esiste
|
||||
for( $i=0; $i<sizeof($rst); $i++ ){
|
||||
// Calcolo iva
|
||||
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
$iva = $diritto_chiamata / 100 * $rs[0]['percentuale'];
|
||||
$iva = $rst[$i]['tot_prezzo_dirittochiamata'] / 100 * $rs[0]['percentuale'];
|
||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||
$desc_iva = $rs[0]['descrizione'];
|
||||
|
||||
// Calcolo rivalsa inps
|
||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS'));
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$rivalsainps = $diritto_chiamata / 100 * $rs[0]['percentuale'];
|
||||
$rivalsainps = $rst[$i]['tot_prezzo_dirittochiamata'] / 100 * $rs[0]['percentuale'];
|
||||
|
||||
// Calcolo ritenuta d'acconto
|
||||
$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'];
|
||||
$ritenutaacconto = $rst[$i]['tot_prezzo_dirittochiamata'] / 100 * $rs[0]['percentuale'];
|
||||
|
||||
$query = 'INSERT INTO co_righe_documenti(
|
||||
iddocumento,
|
||||
|
@ -384,12 +386,12 @@ switch (post('op')) {
|
|||
'.prepare($iva).',
|
||||
'.prepare($iva_indetraibile).',
|
||||
"Diritto di chiamata",
|
||||
'.prepare($diritto_chiamata).',
|
||||
'.prepare($rst[$i]['tot_prezzo_dirittochiamata']).',
|
||||
0,
|
||||
0,
|
||||
"UNT",
|
||||
"-",
|
||||
1,
|
||||
'.$rst[$i]['qta'].',
|
||||
'.prepare(get_var('Percentuale rivalsa INPS')).',
|
||||
'.prepare($rivalsainps).',
|
||||
'.prepare(get_var("Percentuale ritenuta d'acconto")).',
|
||||
|
|
|
@ -68,103 +68,104 @@ switch (post('op')) {
|
|||
// Aggiorna tutte le sessioni di lavoro
|
||||
$lista = (array) post('id_');
|
||||
|
||||
// Limitazione delle azioni dei tecnici
|
||||
if ($user['gruppo'] == 'Tecnici') {
|
||||
$lista = get_var('Mostra i prezzi al tecnico') && !empty($user['idanagrafica']) ? [$user['idanagrafica']] : [];
|
||||
}
|
||||
|
||||
foreach ($lista as $idriga) {
|
||||
// Lettura delle date di inizio e fine intervento
|
||||
$orario_inizio = post('orario_inizio')[$idriga];
|
||||
$orario_fine = post('orario_fine')[$idriga];
|
||||
//Lettura del tecnico proprietario della riga
|
||||
$rst = $dbo->fetchArray('SELECT idtecnico FROM in_interventi_tecnici WHERE id='.prepare($idriga));
|
||||
|
||||
// Limitazione delle azioni dei tecnici
|
||||
if ( ($user['gruppo'] == 'Tecnici' && $user['idanagrafica'] == $rst[0]['idtecnico'] ) || $user['gruppo'] == 'Amministratori') {
|
||||
// Lettura delle date di inizio e fine intervento
|
||||
$orario_inizio = post('orario_inizio')[$idriga];
|
||||
$orario_fine = post('orario_fine')[$idriga];
|
||||
|
||||
$km = post('km')[$idriga];
|
||||
$ore = post('ore')[$idriga];
|
||||
$km = post('km')[$idriga];
|
||||
$ore = post('ore')[$idriga];
|
||||
|
||||
// Lettura tariffe in base al tipo di intervento ed al tecnico
|
||||
$idtipointervento_tecnico = $post['idtipointerventot'][$idriga];
|
||||
$rs = $dbo->fetchArray('SELECT * FROM in_interventi_tecnici WHERE idtecnico='.prepare($post['idtecnico'][$idriga]).' AND idintervento='.prepare($id_record));
|
||||
// Lettura tariffe in base al tipo di intervento ed al tecnico
|
||||
$idtipointervento_tecnico = $post['idtipointerventot'][$idriga];
|
||||
$rs = $dbo->fetchArray('SELECT * FROM in_interventi_tecnici WHERE idtecnico='.prepare($post['idtecnico'][$idriga]).' AND idintervento='.prepare($id_record));
|
||||
|
||||
if ($idtipointervento_tecnico != $rs[0]['idtipointervento']) {
|
||||
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare($post['idtecnico'][$idriga]).' AND idtipointervento='.prepare($idtipointervento_tecnico));
|
||||
if ($idtipointervento_tecnico != $rs[0]['idtipointervento']) {
|
||||
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare($post['idtecnico'][$idriga]).' AND idtipointervento='.prepare($idtipointervento_tecnico));
|
||||
|
||||
if ($rsc[0]['costo_ore'] != 0 || $rsc[0]['costo_km'] != 0 || $rsc[0]['costo_dirittochiamata'] != 0 || $rsc[0]['costo_ore_tecnico'] != 0 || $rsc[0]['costo_km_tecnico'] != 0 || $rsc[0]['costo_dirittochiamata_tecnico'] != 0) {
|
||||
$prezzo_ore_unitario = $rsc[0]['costo_ore'];
|
||||
$prezzo_km_unitario = $rsc[0]['costo_km'];
|
||||
$prezzo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
|
||||
if ($rsc[0]['costo_ore'] != 0 || $rsc[0]['costo_km'] != 0 || $rsc[0]['costo_dirittochiamata'] != 0 || $rsc[0]['costo_ore_tecnico'] != 0 || $rsc[0]['costo_km_tecnico'] != 0 || $rsc[0]['costo_dirittochiamata_tecnico'] != 0) {
|
||||
$prezzo_ore_unitario = $rsc[0]['costo_ore'];
|
||||
$prezzo_km_unitario = $rsc[0]['costo_km'];
|
||||
$prezzo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
|
||||
|
||||
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_ore_tecnico'];
|
||||
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
|
||||
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
|
||||
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_ore_tecnico'];
|
||||
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
|
||||
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
|
||||
}
|
||||
|
||||
// ...altrimenti se non c'è una tariffa per il tecnico leggo i costi globali
|
||||
else {
|
||||
$rsc = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento_tecnico));
|
||||
|
||||
$prezzo_ore_unitario = $rsc[0]['costo_orario'];
|
||||
$prezzo_km_unitario = $rsc[0]['costo_km'];
|
||||
$prezzo_dirittochiamata = $rsc[0]['costo_diritto_chiamata'];
|
||||
|
||||
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_orario_tecnico'];
|
||||
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
|
||||
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_diritto_chiamata_tecnico'];
|
||||
}
|
||||
} else {
|
||||
$prezzo_ore_unitario = $rs[0]['prezzo_ore_unitario'];
|
||||
$prezzo_km_unitario = $rs[0]['prezzo_km_unitario'];
|
||||
$prezzo_dirittochiamata = $rs[0]['prezzo_dirittochiamata'];
|
||||
$prezzo_ore_unitario_tecnico = $rs[0]['prezzo_ore_unitario_tecnico'];
|
||||
$prezzo_km_unitario_tecnico = $rs[0]['prezzo_km_unitario_tecnico'];
|
||||
$prezzo_dirittochiamata_tecnico = $rs[0]['prezzo_dirittochiamata_tecnico'];
|
||||
}
|
||||
|
||||
// ...altrimenti se non c'è una tariffa per il tecnico leggo i costi globali
|
||||
else {
|
||||
$rsc = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento_tecnico));
|
||||
// Totali
|
||||
$prezzo_ore_consuntivo = $prezzo_ore_unitario * $ore;
|
||||
$prezzo_km_consuntivo = $prezzo_km_unitario * $km;
|
||||
|
||||
$prezzo_ore_unitario = $rsc[0]['costo_orario'];
|
||||
$prezzo_km_unitario = $rsc[0]['costo_km'];
|
||||
$prezzo_dirittochiamata = $rsc[0]['costo_diritto_chiamata'];
|
||||
$prezzo_ore_consuntivo_tecnico = $prezzo_ore_unitario_tecnico * $ore;
|
||||
$prezzo_km_consuntivo_tecnico = $prezzo_km_unitario_tecnico * $km;
|
||||
|
||||
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_orario_tecnico'];
|
||||
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
|
||||
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_diritto_chiamata_tecnico'];
|
||||
}
|
||||
} else {
|
||||
$prezzo_ore_unitario = $rs[0]['prezzo_ore_unitario'];
|
||||
$prezzo_km_unitario = $rs[0]['prezzo_km_unitario'];
|
||||
$prezzo_dirittochiamata = $rs[0]['prezzo_dirittochiamata'];
|
||||
$prezzo_ore_unitario_tecnico = $rs[0]['prezzo_ore_unitario_tecnico'];
|
||||
$prezzo_km_unitario_tecnico = $rs[0]['prezzo_km_unitario_tecnico'];
|
||||
$prezzo_dirittochiamata_tecnico = $rs[0]['prezzo_dirittochiamata_tecnico'];
|
||||
// Sconti
|
||||
$sconto_unitario = post('sconto')[$idriga];
|
||||
$tipo_sconto = post('tipo_sconto')[$idriga];
|
||||
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_ore_consuntivo * $sconto_unitario) / 100 : $sconto_unitario;
|
||||
|
||||
$scontokm_unitario = post('scontokm')[$idriga];
|
||||
$tipo_scontokm = post('tipo_scontokm')[$idriga];
|
||||
$scontokm = ($tipo_scontokm == 'PRC') ? ($prezzo_km_consuntivo * $scontokm_unitario) / 100 : $scontokm_unitario;
|
||||
|
||||
$dbo->update('in_interventi_tecnici', [
|
||||
'idintervento' => $id_record,
|
||||
'idtipointervento' => $idtipointervento_tecnico,
|
||||
'idtecnico' => post('idtecnico')[$idriga],
|
||||
|
||||
'orario_inizio' => $orario_inizio,
|
||||
'orario_fine' => $orario_fine,
|
||||
'ore' => $ore,
|
||||
'km' => $km,
|
||||
|
||||
'prezzo_ore_unitario' => $prezzo_ore_unitario,
|
||||
'prezzo_km_unitario' => $prezzo_km_unitario,
|
||||
'prezzo_dirittochiamata' => $prezzo_dirittochiamata,
|
||||
'prezzo_ore_unitario_tecnico' => $prezzo_ore_unitario_tecnico,
|
||||
'prezzo_km_unitario_tecnico' => $prezzo_km_unitario_tecnico,
|
||||
'prezzo_dirittochiamata_tecnico' => $prezzo_dirittochiamata_tecnico,
|
||||
|
||||
'prezzo_ore_consuntivo' => $prezzo_ore_consuntivo,
|
||||
'prezzo_km_consuntivo' => $prezzo_km_consuntivo,
|
||||
'prezzo_ore_consuntivo_tecnico' => $prezzo_ore_consuntivo_tecnico,
|
||||
'prezzo_km_consuntivo_tecnico' => $prezzo_km_consuntivo_tecnico,
|
||||
|
||||
'sconto' => $sconto,
|
||||
'sconto_unitario' => $sconto_unitario,
|
||||
'tipo_sconto' => $tipo_sconto,
|
||||
|
||||
'scontokm' => $scontokm,
|
||||
'scontokm_unitario' => $scontokm_unitario,
|
||||
'tipo_scontokm' => $tipo_scontokm,
|
||||
], ['id' => $idriga]);
|
||||
}
|
||||
|
||||
// Totali
|
||||
$prezzo_ore_consuntivo = $prezzo_ore_unitario * $ore;
|
||||
$prezzo_km_consuntivo = $prezzo_km_unitario * $km;
|
||||
|
||||
$prezzo_ore_consuntivo_tecnico = $prezzo_ore_unitario_tecnico * $ore;
|
||||
$prezzo_km_consuntivo_tecnico = $prezzo_km_unitario_tecnico * $km;
|
||||
|
||||
// Sconti
|
||||
$sconto_unitario = post('sconto')[$idriga];
|
||||
$tipo_sconto = post('tipo_sconto')[$idriga];
|
||||
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_ore_consuntivo * $sconto_unitario) / 100 : $sconto_unitario;
|
||||
|
||||
$scontokm_unitario = post('scontokm')[$idriga];
|
||||
$tipo_scontokm = post('tipo_scontokm')[$idriga];
|
||||
$scontokm = ($tipo_scontokm == 'PRC') ? ($prezzo_km_consuntivo * $scontokm_unitario) / 100 : $scontokm_unitario;
|
||||
|
||||
$dbo->update('in_interventi_tecnici', [
|
||||
'idintervento' => $id_record,
|
||||
'idtipointervento' => $idtipointervento_tecnico,
|
||||
'idtecnico' => post('idtecnico')[$idriga],
|
||||
|
||||
'orario_inizio' => $orario_inizio,
|
||||
'orario_fine' => $orario_fine,
|
||||
'ore' => $ore,
|
||||
'km' => $km,
|
||||
|
||||
'prezzo_ore_unitario' => $prezzo_ore_unitario,
|
||||
'prezzo_km_unitario' => $prezzo_km_unitario,
|
||||
'prezzo_dirittochiamata' => $prezzo_dirittochiamata,
|
||||
'prezzo_ore_unitario_tecnico' => $prezzo_ore_unitario_tecnico,
|
||||
'prezzo_km_unitario_tecnico' => $prezzo_km_unitario_tecnico,
|
||||
'prezzo_dirittochiamata_tecnico' => $prezzo_dirittochiamata_tecnico,
|
||||
|
||||
'prezzo_ore_consuntivo' => $prezzo_ore_consuntivo,
|
||||
'prezzo_km_consuntivo' => $prezzo_km_consuntivo,
|
||||
'prezzo_ore_consuntivo_tecnico' => $prezzo_ore_consuntivo_tecnico,
|
||||
'prezzo_km_consuntivo_tecnico' => $prezzo_km_consuntivo_tecnico,
|
||||
|
||||
'sconto' => $sconto,
|
||||
'sconto_unitario' => $sconto_unitario,
|
||||
'tipo_sconto' => $tipo_sconto,
|
||||
|
||||
'scontokm' => $scontokm,
|
||||
'scontokm_unitario' => $scontokm_unitario,
|
||||
'tipo_scontokm' => $tipo_scontokm,
|
||||
], ['id' => $idriga]);
|
||||
}
|
||||
|
||||
$tipo_sconto = $post['tipo_sconto_globale'];
|
||||
|
|
|
@ -173,7 +173,7 @@ if (empty($new_codice)) {
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, nome AS descrizione FROM an_zone ORDER BY nome", "value": "<?php echo $idzona; ?>" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, CONCAT_WS( ' - ', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome", "value": "<?php echo $idzona; ?>", "extra": "readonly" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -270,11 +270,34 @@ if (empty($new_codice)) {
|
|||
|
||||
$("#idimpianti").prop("disabled", value);
|
||||
$("#idimpianti").selectReset();
|
||||
|
||||
if (($(this).val())) {
|
||||
if (($(this).selectData().idzona)){
|
||||
$('#idzona').val($(this).selectData().idzona).change();
|
||||
|
||||
}else{
|
||||
$('#idzona').val('').change();
|
||||
}
|
||||
//session_set('superselect,idzona', $(this).selectData().idzona, 0);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
$('#idsede').change( function(){
|
||||
session_set('superselect,idsede', $(this).val(), 0);
|
||||
$("#idimpianti").selectReset();
|
||||
|
||||
|
||||
if (($(this).val())) {
|
||||
if (($(this).selectData().idzona)){
|
||||
$('#idzona').val($(this).selectData().idzona).change();
|
||||
}else{
|
||||
$('#idzona').val('').change();
|
||||
}
|
||||
//session_set('superselect,idzona', $(this).selectData().idzona, 0);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$('#idpreventivo').change( function(){
|
||||
|
|
|
@ -129,6 +129,13 @@ if (empty($records[0]['firma_file'])) {
|
|||
<div class="col-md-3">
|
||||
{[ "type": "date", "label": "<?php echo tr('Data richiesta'); ?>", "name": "data_richiesta", "required": 1, "value": "$data_richiesta$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, CONCAT_WS( ' - ', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome", "value": "$idzona$" ,"extra": "readonly" ]}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -276,6 +283,17 @@ if (empty($records[0]['firma_file'])) {
|
|||
$("#idsede").selectReset();
|
||||
$("#idpreventivo").selectReset();
|
||||
$("#idcontratto").selectReset();
|
||||
|
||||
if (($(this).val())) {
|
||||
if (($(this).selectData().idzona)){
|
||||
$('#idzona').val($(this).selectData().idzona).change();
|
||||
|
||||
}else{
|
||||
$('#idzona').val('').change();
|
||||
}
|
||||
//session_set('superselect,idzona', $(this).selectData().idzona, 0);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$('#idpreventivo').change( function(){
|
||||
|
@ -294,6 +312,19 @@ if (empty($records[0]['firma_file'])) {
|
|||
$('#matricola').change( function(){
|
||||
session_set('superselect,marticola', $(this).val(), 0);
|
||||
});
|
||||
|
||||
$('#idsede').change( function(){
|
||||
if (($(this).val())) {
|
||||
if (($(this).selectData().idzona)){
|
||||
$('#idzona').val($(this).selectData().idzona).change();
|
||||
}else{
|
||||
$('#idzona').val('').change();
|
||||
}
|
||||
//session_set('superselect,idzona', $(this).selectData().idzona, 0);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
$records = $dbo->fetchArray('SELECT *, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore, (SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id LIMIT 0,1) AS idpreventivo FROM in_interventi WHERE id='.prepare($id_record).Modules::getAdditionalsQuery($id_module));
|
||||
$records = $dbo->fetchArray('SELECT *, IF((in_interventi.idsede = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede)) AS idzona, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore, (SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id LIMIT 0,1) AS idpreventivo FROM in_interventi WHERE id='.prepare($id_record).Modules::getAdditionalsQuery($id_module));
|
||||
}
|
||||
|
||||
$jscript_modules[] = $rootdir.'/modules/interventi/js/interventi_helperjs.js';
|
||||
|
|
|
@ -193,7 +193,13 @@ switch (post('op')) {
|
|||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
// Aggiorno lo stato della fattura
|
||||
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Pagato') WHERE id=".prepare($iddocumento));
|
||||
if( $rs[0]['tot_pagato'] == $rs[0]['tot_da_pagare'] ){
|
||||
$stato = 'Pagato';
|
||||
} else {
|
||||
$stato = 'Parzialmente pagato';
|
||||
}
|
||||
|
||||
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione=".prepare($stato).") WHERE id=".prepare($iddocumento));
|
||||
|
||||
// Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono
|
||||
$query2 = 'SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';
|
||||
|
|
|
@ -38,7 +38,13 @@ if ($options['pricing']) {
|
|||
<tbody>';
|
||||
|
||||
// Righe
|
||||
$rs_gen = $dbo->fetchArray('SELECT *, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva, IFNULL((SELECT peso_lordo FROM mg_articoli WHERE id=idarticolo),0) * qta AS peso_lordo, IFNULL((SELECT volume FROM mg_articoli WHERE id=idarticolo),0) * qta AS volume FROM `dt_righe_ddt` WHERE idddt='.prepare($id_record));
|
||||
$rs_gen = $dbo->fetchArray("SELECT *,
|
||||
IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `dt_righe_ddt`.`idarticolo`), '') AS codice_articolo,
|
||||
(SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_ddt` = `dt_righe_ddt`.`id`) AS seriali,
|
||||
(SELECT `percentuale` FROM `co_iva` WHERE `id` = `dt_righe_ddt`.`idiva`) AS perc_iva,
|
||||
IFNULL((SELECT peso_lordo FROM mg_articoli WHERE id=idarticolo),0) * qta AS peso_lordo,
|
||||
IFNULL((SELECT volume FROM mg_articoli WHERE id=idarticolo),0) * qta AS volume
|
||||
FROM `dt_righe_ddt` WHERE idddt=".prepare($id_record));
|
||||
foreach ($rs_gen as $r) {
|
||||
$count = 0;
|
||||
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
|
||||
|
@ -49,6 +55,28 @@ foreach ($rs_gen as $r) {
|
|||
<td>
|
||||
'.nl2br($r['descrizione']);
|
||||
|
||||
// Codice articolo
|
||||
if (!empty($r['codice_articolo'])) {
|
||||
echo '
|
||||
<br><small>'.tr('COD. _COD_', [
|
||||
'_COD_' => $r['codice_articolo'],
|
||||
]).'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
// Seriali
|
||||
if (!empty($r['seriali'])) {
|
||||
echo '
|
||||
<br><small>'.tr('SN').': '.$r['seriali'].'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta riferimento a ordine
|
||||
if (!empty($r['idordine'])) {
|
||||
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM or_ordini WHERE id='.prepare($r['idordine']));
|
||||
|
@ -71,8 +99,8 @@ foreach ($rs_gen as $r) {
|
|||
echo '
|
||||
<td class="text-center">';
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo
|
||||
Translator::numberToLocale($r['qta']).' '.$r['um'];
|
||||
echo '
|
||||
'.Translator::numberToLocale($r['qta']).' '.$r['um'];
|
||||
}
|
||||
echo '
|
||||
</td>';
|
||||
|
@ -92,18 +120,18 @@ foreach ($rs_gen as $r) {
|
|||
echo "
|
||||
<td class='text-right'>";
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo
|
||||
Translator::numberToLocale($r['subtotale']).' €';
|
||||
echo '
|
||||
'.Translator::numberToLocale($r['subtotale']).' €';
|
||||
|
||||
if ($r['sconto'] > 0) {
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
}
|
||||
echo '
|
||||
<br><small class="help-block">- '.tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'</small>';
|
||||
<br><small class="help-block">- '.tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'</small>';
|
||||
}
|
||||
}
|
||||
echo '
|
||||
|
@ -113,8 +141,8 @@ foreach ($rs_gen as $r) {
|
|||
echo "
|
||||
<td class='text-center'>";
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo
|
||||
Translator::numberToLocale($r['perc_iva']);
|
||||
echo '
|
||||
'.Translator::numberToLocale($r['perc_iva']);
|
||||
}
|
||||
echo '
|
||||
</td>';
|
||||
|
|
|
@ -35,7 +35,11 @@ echo "
|
|||
<tbody>';
|
||||
|
||||
// RIGHE FATTURA CON ORDINAMENTO UNICO
|
||||
$righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice_articolo, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `co_righe_documenti` WHERE iddocumento=".prepare($id_record).' ORDER BY `order`');
|
||||
$righe = $dbo->fetchArray("SELECT *,
|
||||
IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `co_righe_documenti`.`idarticolo`), '') AS codice_articolo,
|
||||
(SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_documento` = `co_righe_documenti`.`id`) AS seriali,
|
||||
(SELECT `percentuale` FROM `co_iva` WHERE `id` = `co_righe_documenti`.`idiva`) AS perc_iva
|
||||
FROM `co_righe_documenti` WHERE `iddocumento` = ".prepare($id_record).' ORDER BY `order`');
|
||||
foreach ($righe as $r) {
|
||||
$count = 0;
|
||||
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
|
||||
|
@ -46,6 +50,7 @@ foreach ($righe as $r) {
|
|||
<td>
|
||||
'.nl2br($r['descrizione']);
|
||||
|
||||
// Codice articolo
|
||||
if (!empty($r['codice_articolo'])) {
|
||||
echo '
|
||||
<br><small>'.tr('COD. _COD_', [
|
||||
|
@ -57,6 +62,16 @@ foreach ($righe as $r) {
|
|||
}
|
||||
}
|
||||
|
||||
// Seriali
|
||||
if (!empty($r['seriali'])) {
|
||||
echo '
|
||||
<br><small>'.tr('SN').': '.$r['seriali'].'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta dei riferimenti ai documenti
|
||||
$ref_modulo = null;
|
||||
$ref_id = null;
|
||||
|
@ -124,45 +139,7 @@ foreach ($righe as $r) {
|
|||
}
|
||||
}
|
||||
|
||||
// Aggiunta riferimento a ordine
|
||||
if (!empty($r['idordine'])) {
|
||||
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM or_ordini WHERE id='.prepare($r['idordine']));
|
||||
$numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero'];
|
||||
|
||||
if (!empty($rso)) {
|
||||
$descrizione = tr('Rif. ordine num. _NUM_ del _DATE_', [
|
||||
'_NUM_' => $numero,
|
||||
'_DATE_' => Translator::dateToLocale($rso[0]['data']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta riferimento a ddt
|
||||
elseif (!empty($r['idddt'])) {
|
||||
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM dt_ddt WHERE id='.prepare($r['idddt']));
|
||||
$numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero'];
|
||||
|
||||
if (!empty($rso)) {
|
||||
$descrizione = tr('Rif. ddt num. _NUM_ del _DATE_', [
|
||||
'_NUM_' => $numero,
|
||||
'_DATE_' => Translator::dateToLocale($rso[0]['data']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta riferimento al preventivo
|
||||
elseif (!empty($r['idpreventivo'])) {
|
||||
$rso = $dbo->fetchArray('SELECT numero, data_bozza FROM co_preventivi WHERE id='.prepare($r['idpreventivo']));
|
||||
|
||||
if (!empty($rso)) {
|
||||
$descrizione = tr('Rif. preventivo num. _NUM_ del _DATE_', [
|
||||
'_NUM_' => $rso[0]['numero'],
|
||||
'_DATE_' => Translator::dateToLocale($rso[0]['data_bozza']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Aumento del conteggio
|
||||
// Stampa dei riferimenti
|
||||
if (!empty($descrizione)) {
|
||||
echo '
|
||||
<br><small>'.$descrizione.'</small>';
|
||||
|
@ -177,8 +154,8 @@ foreach ($righe as $r) {
|
|||
echo '
|
||||
<td class="text-center">';
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo
|
||||
Translator::numberToLocale($r['qta']).' '.$r['um'];
|
||||
echo '
|
||||
'.Translator::numberToLocale($r['qta']).' '.$r['um'];
|
||||
}
|
||||
echo '
|
||||
</td>';
|
||||
|
@ -187,14 +164,15 @@ foreach ($righe as $r) {
|
|||
echo "
|
||||
<td class='text-right'>";
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €';
|
||||
echo '
|
||||
'.(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €';
|
||||
|
||||
if ($r['sconto'] > 0) {
|
||||
echo "
|
||||
<br><small class='text-muted'>- ".tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'</small>';
|
||||
<br><small class='text-muted'>- ".tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
|
@ -209,14 +187,15 @@ foreach ($righe as $r) {
|
|||
echo "
|
||||
<td class='text-right'>";
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] - $r['sconto'])).' €';
|
||||
echo '
|
||||
'.(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] - $r['sconto'])).' €';
|
||||
|
||||
if ($r['sconto'] > 0) {
|
||||
echo "
|
||||
<br><small class='text-muted'>".tr('sconto di _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto']),
|
||||
'_TYPE_' => '€',
|
||||
]).'</small>';
|
||||
<br><small class='text-muted'>".tr('sconto di _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto']),
|
||||
'_TYPE_' => '€',
|
||||
]).'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
|
@ -230,8 +209,8 @@ foreach ($righe as $r) {
|
|||
echo '
|
||||
<td class="text-center">';
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo
|
||||
Translator::numberToLocale($r['perc_iva']);
|
||||
echo '
|
||||
'.Translator::numberToLocale($r['perc_iva']);
|
||||
}
|
||||
echo '
|
||||
</td>
|
||||
|
|
|
@ -32,7 +32,11 @@ echo "
|
|||
<tbody>';
|
||||
|
||||
// RIGHE PREVENTIVO CON ORDINAMENTO UNICO
|
||||
$righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice_articolo, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `or_righe_ordini` WHERE idordine=".prepare($id_record).' ORDER BY `order`');
|
||||
$righe = $dbo->fetchArray("SELECT *,
|
||||
IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `or_righe_ordini`.`idarticolo`), '') AS codice_articolo,
|
||||
(SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_ordine` = `or_righe_ordini`.`id`) AS seriali,
|
||||
(SELECT `percentuale` FROM `co_iva` WHERE `id` = `or_righe_ordini`.`idiva`) AS perc_iva
|
||||
FROM `or_righe_ordini` WHERE idordine=".prepare($id_record).' ORDER BY `order`');
|
||||
foreach ($righe as $r) {
|
||||
$count = 0;
|
||||
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
|
||||
|
@ -43,6 +47,7 @@ foreach ($righe as $r) {
|
|||
<td>
|
||||
'.nl2br($r['descrizione']);
|
||||
|
||||
// Codice articolo
|
||||
if (!empty($r['codice_articolo'])) {
|
||||
echo '
|
||||
<br><small>'.tr('COD. _COD_', [
|
||||
|
@ -54,14 +59,24 @@ foreach ($righe as $r) {
|
|||
}
|
||||
}
|
||||
|
||||
// Seriali
|
||||
if (!empty($r['seriali'])) {
|
||||
echo '
|
||||
<br><small>'.tr('SN').': '.$r['seriali'].'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
echo "
|
||||
<td class='text-center'>";
|
||||
if($r['is_descrizione']==0){
|
||||
echo
|
||||
(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'])).' '.$r['um'];
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo '
|
||||
'.(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'])).' '.$r['um'];
|
||||
}
|
||||
echo '
|
||||
</td>';
|
||||
|
@ -70,16 +85,16 @@ foreach ($righe as $r) {
|
|||
// Prezzo unitario
|
||||
echo "
|
||||
<td class='text-right'>";
|
||||
if($r['is_descrizione']==0){
|
||||
echo
|
||||
(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €';
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo '
|
||||
'.(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €';
|
||||
|
||||
if ($r['sconto'] > 0) {
|
||||
echo "
|
||||
<br><small class='text-muted'>- ".tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'</small>';
|
||||
<br><small class='text-muted'>- ".tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
|
@ -92,16 +107,16 @@ foreach ($righe as $r) {
|
|||
// Imponibile
|
||||
echo "
|
||||
<td class='text-right'>";
|
||||
if($r['is_descrizione']==0){
|
||||
echo
|
||||
(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'])).' €';
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo '
|
||||
'.(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'])).' €';
|
||||
|
||||
if ($r['sconto'] > 0) {
|
||||
echo "
|
||||
<br><small class='text-muted'>- ".tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto']),
|
||||
'_TYPE_' => '€',
|
||||
]).'</small>';
|
||||
<br><small class='text-muted'>- ".tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto']),
|
||||
'_TYPE_' => '€',
|
||||
]).'</small>';
|
||||
|
||||
if ($count <= 1) {
|
||||
$count += 0.4;
|
||||
|
@ -119,9 +134,9 @@ foreach ($righe as $r) {
|
|||
// Iva
|
||||
echo '
|
||||
<td class="text-center">';
|
||||
if($r['is_descrizione']==0){
|
||||
echo
|
||||
Translator::numberToLocale($r['perc_iva']);
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo '
|
||||
'.Translator::numberToLocale($r['perc_iva']);
|
||||
}
|
||||
echo '
|
||||
</td>
|
||||
|
@ -210,7 +225,7 @@ if ($options['pricing']) {
|
|||
</tr>';
|
||||
}
|
||||
|
||||
echo'
|
||||
echo '
|
||||
</table>';
|
||||
|
||||
if (!empty($records[0]['note'])) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
if (file_exists($docroot.'/lib/jscripts/fullcalendar.min.js')) {
|
||||
delete($docroot.'/lib/jscripts/fullcalendar.min.js');
|
||||
if (file_exists(DOCROOT.'/lib/jscripts/fullcalendar.min.js')) {
|
||||
delete(DOCROOT.'/lib/jscripts/fullcalendar.min.js');
|
||||
}
|
||||
|
||||
// Riporto su ogni riga della fattura la relativa rivalsa inps e ritenuta d'acconto se impostate
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Verifico se serve creare un conto per eventuali nuovi clienti o fornitori.
|
||||
*/
|
||||
* Verifico se serve creare un conto per eventuali nuovi clienti o fornitori.
|
||||
*/
|
||||
$rs = $dbo->fetchArray('SELECT idanagrafica, ragione_sociale, (SELECT GROUP_CONCAT(an_tipianagrafiche.descrizione) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idtipianagrafica FROM an_anagrafiche WHERE idconto_cliente=0 OR idconto_fornitore=0');
|
||||
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
|
@ -88,8 +88,8 @@ for ($i = 0; $i < sizeof($rs); ++$i) {
|
|||
|
||||
// Eliminazione vecchi file
|
||||
$files = [
|
||||
$docroot.'/share/themes/default/css/font-awesome.css',
|
||||
$docroot.'/modules/preventivi/js/'
|
||||
DOCROOT.'/share/themes/default/css/font-awesome.css',
|
||||
DOCROOT.'/modules/preventivi/js/',
|
||||
];
|
||||
delete($files);
|
||||
|
||||
|
|
111
update/2_3.php
111
update/2_3.php
|
@ -56,114 +56,5 @@ $database->query('UPDATE `zz_files` SET `created_at` = `data`');
|
|||
$database->query('ALTER TABLE `zz_files` DROP `data`');
|
||||
|
||||
/*
|
||||
* Rimozione file e cartelle deprecati
|
||||
* Rimozione file e cartelle deprecati [in 2.3.1 per risolvere un problema sui percorsi]
|
||||
*/
|
||||
|
||||
// File e cartelle deprecate
|
||||
$files = [
|
||||
'lib/jscripts',
|
||||
'lib/html2pdf',
|
||||
'widgets',
|
||||
'share',
|
||||
'lib/class.phpmailer.php',
|
||||
'lib/class.pop3.php',
|
||||
'lib/class.smtp.php',
|
||||
'lib/PHPMailerAutoload.php',
|
||||
'lib/dbo.class.php',
|
||||
'lib/html-helpers.class.php',
|
||||
'lib/photo.class.php',
|
||||
'lib/widgets.class.php',
|
||||
'modules/anagrafiche/plugins/sedi.php',
|
||||
'modules/anagrafiche/plugins/referenti.php',
|
||||
'modules/ddt/plugins/ddt.anagrafiche.php',
|
||||
'modules/my_impianti/plugins/my_impianti.anagrafiche.php',
|
||||
'templates/pdfgen.php',
|
||||
'templates/interventi/intervento_body.html',
|
||||
'templates/interventi/intervento.html',
|
||||
'templates/interventi/pdfgen.interventiphp',
|
||||
'templates/ddt/ddt_body.html',
|
||||
'templates/ddt/ddt.html',
|
||||
'templates/ddt/pdfgen.ddt',
|
||||
'templates/ordini/ordini_body.html',
|
||||
'templates/ordini/ordini.html',
|
||||
'templates/ordini/pdfgen.ordini',
|
||||
'templates/fatture/fatture_body.html',
|
||||
'templates/fatture/fatture.html',
|
||||
'templates/fatture/pdfgen.fatture.php',
|
||||
'templates/contratti/contratti_body.html',
|
||||
'templates/contratti/contratti.html',
|
||||
'templates/contratti/pdfgen.contratti.php',
|
||||
'templates/preventivi/preventivi_body.html',
|
||||
'templates/preventivi/preventivi.html',
|
||||
'templates/preventivi/pdfgen.preventivi.php',
|
||||
'templates/preventivi_cons/preventivo_body.html',
|
||||
'templates/preventivi_cons/preventivo.html',
|
||||
'templates/preventivi_cons/pdfgen.preventivi_cons.php',
|
||||
'templates/contratti_cons/contratto_body.html',
|
||||
'templates/contratti_cons/contratto.html',
|
||||
'templates/contratti_cons/pdfgen.contratti_cons.php',
|
||||
'update/install_2.0.sql',
|
||||
'update/update_2.1.sql',
|
||||
'update/update_2.1.php',
|
||||
'update/update_2.2.sql',
|
||||
'update/update_2.2.php',
|
||||
'update/update_checker.php',
|
||||
'permissions.php',
|
||||
'settings.php',
|
||||
'addgroup.php',
|
||||
'adduser.php',
|
||||
'change_pwd.php',
|
||||
'README',
|
||||
];
|
||||
|
||||
foreach ($files as $key => $value) {
|
||||
$files[$key] = realpath($docroot.'/'.$value);
|
||||
}
|
||||
|
||||
delete($files);
|
||||
|
||||
// File .html dei moduli di default
|
||||
// Per un problema sulla lunghezza massima del path su glob è necessario dividere le cartelle dei moduli di default da pulire
|
||||
$dirs = [
|
||||
'aggiornamenti',
|
||||
'anagrafiche',
|
||||
'articoli',
|
||||
'automezzi',
|
||||
'backup',
|
||||
'beni',
|
||||
'categorie',
|
||||
'causali',
|
||||
'contratti',
|
||||
'dashboard',
|
||||
'ddt',
|
||||
'fatture',
|
||||
'gestione_componenti',
|
||||
'interventi',
|
||||
'iva',
|
||||
'listini',
|
||||
'misure',
|
||||
'my_impianti',
|
||||
'opzioni',
|
||||
'ordini',
|
||||
'pagamenti',
|
||||
'partitario',
|
||||
'porti',
|
||||
'preventivi',
|
||||
'primanota',
|
||||
'scadenzario',
|
||||
'stati_intervento',
|
||||
'tecnici_tariffe',
|
||||
'tipi_anagrafiche',
|
||||
'tipi_intervento',
|
||||
'utenti',
|
||||
'viste',
|
||||
'voci_servizio',
|
||||
'zone',
|
||||
];
|
||||
|
||||
$pieces = array_chunk($dirs, 5);
|
||||
|
||||
foreach ($pieces as $piece) {
|
||||
$files = glob($docroot.'/modules/{'.implode(',', $piece).'}/*.html', GLOB_BRACE);
|
||||
delete($files);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Rimozione file e cartelle deprecati [da 2.3]
|
||||
*/
|
||||
|
||||
// File e cartelle deprecate
|
||||
$files = [
|
||||
'permissions.php',
|
||||
'settings.php',
|
||||
'addgroup.php',
|
||||
'adduser.php',
|
||||
'change_pwd.php',
|
||||
'README',
|
||||
'widgets',
|
||||
'share',
|
||||
'lib/jscripts',
|
||||
'lib/html2pdf',
|
||||
'lib/class.phpmailer.php',
|
||||
'lib/class.pop3.php',
|
||||
'lib/class.smtp.php',
|
||||
'lib/PHPMailerAutoload.php',
|
||||
'lib/dbo.class.php',
|
||||
'lib/html-helpers.class.php',
|
||||
'lib/photo.class.php',
|
||||
'lib/widgets.class.php',
|
||||
'modules/anagrafiche/plugins/sedi.php',
|
||||
'modules/anagrafiche/plugins/referenti.php',
|
||||
'modules/ddt/plugins/ddt.anagrafiche.php',
|
||||
'modules/my_impianti/plugins/my_impianti.anagrafiche.php',
|
||||
'templates/pdfgen.php',
|
||||
'templates/interventi/intervento_body.html',
|
||||
'templates/interventi/intervento.html',
|
||||
'templates/ddt/ddt_body.html',
|
||||
'templates/ddt/ddt.html',
|
||||
'templates/ordini/ordini_body.html',
|
||||
'templates/ordini/ordini.html',
|
||||
'templates/fatture/pdfgen.fatture.php',
|
||||
'templates/contratti/pdfgen.contratti.php',
|
||||
'templates/preventivi/pdfgen.preventivi.php',
|
||||
'templates/preventivi_cons/preventivo_body.html',
|
||||
'templates/preventivi_cons/preventivo.html',
|
||||
'templates/preventivi_cons/pdfgen.preventivi_cons.php',
|
||||
'templates/contratti_cons/contratto_body.html',
|
||||
'templates/contratti_cons/contratto.html',
|
||||
'templates/contratti_cons/pdfgen.contratti_cons.php',
|
||||
'update/install_2.0.sql',
|
||||
'update/update_2.1.sql',
|
||||
'update/update_2.1.php',
|
||||
'update/update_2.2.sql',
|
||||
'update/update_2.2.php',
|
||||
'update/update_checker.php',
|
||||
];
|
||||
|
||||
foreach ($files as $key => $value) {
|
||||
$files[$key] = realpath(DOCROOT.'/'.$value);
|
||||
}
|
||||
|
||||
delete($files);
|
||||
|
||||
// File .html dei moduli di default
|
||||
// Per un problema sulla lunghezza massima del path su glob è necessario dividere le cartelle dei moduli di default da pulire
|
||||
$dirs = [
|
||||
'aggiornamenti',
|
||||
'anagrafiche',
|
||||
'articoli',
|
||||
'automezzi',
|
||||
'backup',
|
||||
'beni',
|
||||
'categorie',
|
||||
'causali',
|
||||
'contratti',
|
||||
'dashboard',
|
||||
'ddt',
|
||||
'fatture',
|
||||
'gestione_componenti',
|
||||
'interventi',
|
||||
'iva',
|
||||
'listini',
|
||||
'misure',
|
||||
'my_impianti',
|
||||
'opzioni',
|
||||
'ordini',
|
||||
'pagamenti',
|
||||
'partitario',
|
||||
'porti',
|
||||
'preventivi',
|
||||
'primanota',
|
||||
'scadenzario',
|
||||
'stati_intervento',
|
||||
'tecnici_tariffe',
|
||||
'tipi_anagrafiche',
|
||||
'tipi_intervento',
|
||||
'utenti',
|
||||
'viste',
|
||||
'voci_servizio',
|
||||
'zone',
|
||||
];
|
||||
|
||||
$pieces = array_chunk($dirs, 5);
|
||||
|
||||
foreach ($pieces as $piece) {
|
||||
$files = glob(DOCROOT.'/modules/{'.implode(',', $piece).'}/*.html', GLOB_BRACE);
|
||||
delete($files);
|
||||
}
|
||||
|
||||
/*
|
||||
* Rimozione file e cartelle deprecati [2.3.1]
|
||||
*/
|
||||
|
||||
// File e cartelle deprecate
|
||||
$files = [
|
||||
'templates/interventi/pdfgen.interventi.php',
|
||||
'templates/ddt/pdfgen.ddt.php',
|
||||
'templates/ordini/pdfgen.ordini.php',
|
||||
'templates/fatture/fattura_body.html',
|
||||
'templates/fatture/fattura.html',
|
||||
'templates/contratti/contratto_body.html',
|
||||
'templates/contratti/contratto.html',
|
||||
'templates/preventivo/preventivo_body.html',
|
||||
'templates/preventivo/preventivo.html',
|
||||
'locale/it/it.po',
|
||||
'locale/it/it.mo',
|
||||
];
|
||||
|
||||
foreach ($files as $key => $value) {
|
||||
$files[$key] = realpath(DOCROOT.'/'.$value);
|
||||
}
|
||||
|
||||
delete($files);
|
|
@ -17,3 +17,13 @@ UPDATE `zz_views` SET `order_by` = 'CAST(numero AS UNSIGNED)' WHERE `name` = 'Nu
|
|||
|
||||
-- Query per ignorare i punti nella ricerca in Ragione sociale
|
||||
-- UPDATE `zz_views` SET `search_inside` = CONCAT('REPLACE(', `query`, ', ''.'', '''') LIKE |search|') WHERE `name` = 'Ragione sociale';
|
||||
|
||||
-- Aggiornate le viste standard, separando i simboli < e > per non dare errore nell'aggiornamento
|
||||
UPDATE `zz_views` SET `query` = 'IF(scadenza < NOW(), \'#ff7777\', \'\')' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario') AND `name` = '_bg_';
|
||||
UPDATE `zz_views` SET `query` = 'CONCAT(co_tipidocumento.descrizione, CONCAT(\' numero \', IF(numero_esterno <> \'\', numero_esterno, numero)))' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario') AND `name` = 'Data emissione';
|
||||
UPDATE `zz_views` SET `query` = 'GROUP_CONCAT(CASE WHEN totale > 0 THEN co_pianodeiconti3.descrizione ELSE NULL END)' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Prima nota') AND `name` = 'Conto avere';
|
||||
UPDATE `zz_views` SET `query` = 'GROUP_CONCAT(CASE WHEN totale < 0 THEN co_pianodeiconti3.descrizione ELSE NULL END)' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Prima nota') AND `name` = 'Conto dare';
|
||||
|
||||
|
||||
-- Aggiungo 1=1 nel WHERE per il widget clienti in anagrafica
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(an_anagrafiche.idanagrafica) AS dato 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 1=1 AND descrizione="Cliente" AND deleted=0' WHERE `zz_widgets`.`name` = 'Numero di clienti';
|
Loading…
Reference in New Issue