Compare commits
6 Commits
2750b34dad
...
1cf3dfea34
Author | SHA1 | Date |
---|---|---|
valentina | 1cf3dfea34 | |
valentina | 499e60f525 | |
valentina | 87cbcab687 | |
valentina | e26ded65b0 | |
valentina | 27786fe6d4 | |
valentina | c2fe1ee872 |
18
CHANGELOG.md
18
CHANGELOG.md
|
@ -4,7 +4,7 @@ Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo fi
|
|||
|
||||
Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://keepachangelog.com/), e il progetto segue il [Semantic Versioning](http://semver.org/) per definire le versioni delle release.
|
||||
|
||||
- [2.5.4 ())](#254-)
|
||||
- [2.5.4 (2024-08-28))](#254-2024-08-28)
|
||||
- [2.5.3 (2024-08-07)](#253-2024-08-07)
|
||||
- [2.5.2 (2024-05-31)](#252-2024-05-31)
|
||||
- [2.5.1 (2024-04-24)](#251-2024-04-24)
|
||||
|
@ -72,11 +72,27 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
|||
|
||||
## 2.5.4
|
||||
### Aggiunto (Added)
|
||||
- Aggiunta l'unità di misura nel campo Peso nei DDT
|
||||
- Aggiunte le API dei DDT
|
||||
- Aggiunta colonna Agente in Ordini cliente
|
||||
|
||||
### Modificato (Changed)
|
||||
- Migliorata la gestione delle stampe contabili vuote
|
||||
- Rimossa la restrizione allo storico degli ultimi 3 anni
|
||||
- Migliorate le API degli interventi
|
||||
- Migliorata la mappa degli interventi
|
||||
|
||||
### Fixed
|
||||
- Corretti i controlli sul gestionale
|
||||
- Corretto il filtro stato interventi in mappa
|
||||
- Corretta la registrazione contabile della fattura al cambio di anagrafica
|
||||
- Corretto il widget Contratti in scadenza
|
||||
- Corretta l'eliminazione della sede in Anagrafiche
|
||||
- Corretta la modifica della descrizione di una riga articolo inserita in un contratto, ddt, attività, ordine e preventivo.
|
||||
- Corretto il riferimento normativo in fattura
|
||||
- Corretta la ricerca globale
|
||||
- Corretta la gestione dei widgets
|
||||
- Corretto il caricamento dell'immagine utente
|
||||
|
||||
## 2.5.3 (2024-08-07)
|
||||
### Aggiunto (Added)
|
||||
|
|
|
@ -4,12 +4,19 @@ Le problematiche saranno raggruppate per release e le relative correzioni (se ap
|
|||
#### 2.5.3 - 07/08/2024
|
||||
|
||||
##### Problemi noti
|
||||
Non è possibile modificare la descrizione di una riga articolo inserita in un contratto, ddt, attività, ordine e preventivo.
|
||||
- Non è possibile modificare la descrizione di una riga articolo inserita in un contratto, ddt, attività, ordine e preventivo.
|
||||
|
||||
##### Soluzione
|
||||
https://github.com/devcode-it/openstamanager/commit/b82efb339f8df5da4f2279e25d72904778d2a8d3
|
||||
|
||||
|
||||
- La ricerca globale non funziona.
|
||||
|
||||
##### Soluzione
|
||||
https://github.com/devcode-it/openstamanager/commit/5c86d3b7489431b2e8001841b07769cd26e4c24c
|
||||
|
||||
Per applicare le modifiche è necessario ricompilare gli assets
|
||||
|
||||
#### 2.4.54 - 03/02/2024
|
||||
|
||||
##### Problemi noti
|
||||
|
|
|
@ -534,7 +534,7 @@ if (Auth::check()) {
|
|||
}
|
||||
|
||||
if (!empty($opt)) {
|
||||
$q = str_replace('|id_parent|', ($id_record?:$id_parent), $opt['main_query'][0]['query']);
|
||||
$q = str_replace('|id_parent|', $id_record ?: $id_parent, $opt['main_query'][0]['query']);
|
||||
$count = $dbo->fetchNum($q);
|
||||
}
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ class PianoConti extends Controllo
|
|||
$fornitore = in_array('Fornitore', $tipi);
|
||||
$is_esistente = 0;
|
||||
$descrizione = 0;
|
||||
|
||||
|
||||
if ($cliente || $fornitore) {
|
||||
$is_esistente = $database->fetchOne('SELECT id FROM co_pianodeiconti3 WHERE id = '.$anagrafica['idconto_cliente'].' OR id = '.$anagrafica['idconto_fornitore']);
|
||||
$descrizione = null;
|
||||
|
@ -85,7 +85,7 @@ class PianoConti extends Controllo
|
|||
$descrizione = tr("L'anagrafica corrente non ha impostati il conto Cliente relativo al Piano dei Conti");
|
||||
} elseif ($fornitore && (empty($anagrafica['idconto_fornitore'])) || !$is_esistente) {
|
||||
$descrizione = tr("L'anagrafica corrente non ha impostati il conto Fornitore relativo al Piano dei Conti");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($descrizione)) {
|
||||
|
|
|
@ -36,7 +36,7 @@ switch (post('op')) {
|
|||
// Se l'anagrafica non è di tipo Azienda
|
||||
if (!in_array($id_tipo_azienda, $tipi)) {
|
||||
$dbo->query('UPDATE `an_anagrafiche` SET `deleted_at` = NOW() WHERE `idanagrafica` = '.prepare($id).Modules::getAdditionalsQuery($id_module));
|
||||
++ $eliminate;
|
||||
++$eliminate;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,7 @@ switch (post('op')) {
|
|||
if (!function_exists('curl_init')) {
|
||||
// cURL non è attivo
|
||||
flash()->error(tr('cURL non attivo, impossibile continuare l\'operazione.'));
|
||||
|
||||
return false;
|
||||
} else {
|
||||
$ch = curl_init();
|
||||
|
|
|
@ -749,7 +749,7 @@ UNION
|
|||
SELECT `dt_ddt`.`id`, `dt_ddt`.`data`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_tipiddt_lang`.`title` AS tipo_documento, `dt_tipiddt`.`dir`, NULL AS `deleted_at` FROM `dt_ddt` INNER JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` LEFT JOIN `dt_tipiddt_lang` ON (`dt_tipiddt`.`id` = `dt_tipiddt_lang`.`id_record` AND `dt_tipiddt_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `dt_ddt`.`idanagrafica` = '.prepare($id_record).'
|
||||
|
||||
UNION
|
||||
SELECT `in_interventi`.`id`, `in_interventi`.`data_richiesta`, `in_interventi`.`codice` AS numero, 0 AS numero_esterno, "Intervento" AS tipo_documento, 0 AS dir, in_interventi.deleted_at AS `deleted_at` FROM `in_interventi` LEFT JOIN `in_interventi_tecnici` ON `in_interventi`.`id` = `in_interventi_tecnici`.`idintervento` WHERE `in_interventi`.`id` IN (SELECT `idintervento` FROM `in_interventi_tecnici` WHERE `idtecnico` = '.prepare($id_record).') OR `in_interventi`.`idanagrafica` = '.prepare($id_record).'
|
||||
SELECT `in_interventi`.`id`, `in_interventi`.`data_richiesta`, `in_interventi`.`codice` AS numero, 0 AS numero_esterno, "Attività" AS tipo_documento, 0 AS dir, in_interventi.deleted_at AS `deleted_at` FROM `in_interventi` LEFT JOIN `in_interventi_tecnici` ON `in_interventi`.`id` = `in_interventi_tecnici`.`idintervento` WHERE `in_interventi`.`id` IN (SELECT `idintervento` FROM `in_interventi_tecnici` WHERE `idtecnico` = '.prepare($id_record).') OR `in_interventi`.`idanagrafica` = '.prepare($id_record).'
|
||||
|
||||
UNION
|
||||
SELECT `co_contratti`.`id`, `co_contratti`.`data_bozza`, `co_contratti`.`numero`, 0 AS numero_esterno , "Contratto" AS tipo_documento, 0 AS dir, NULL AS `deleted_at` FROM `co_contratti` WHERE `co_contratti`.`idanagrafica` = '.prepare($id_record).'
|
||||
|
|
|
@ -78,7 +78,7 @@ switch (post('op')) {
|
|||
$new_prezzo_vendita = $new_prezzo_vendita + ($new_prezzo_vendita * $aliquota_iva / 100);
|
||||
}
|
||||
|
||||
$new_prezzo_vendita = ceil($new_prezzo_vendita / ($arrotondamento?:1)) * $arrotondamento;
|
||||
$new_prezzo_vendita = ceil($new_prezzo_vendita / ($arrotondamento ?: 1)) * $arrotondamento;
|
||||
}
|
||||
|
||||
if (in_array($tipologia, ['ivato', '']) && !$prezzi_ivati) {
|
||||
|
|
|
@ -120,9 +120,9 @@ if (!empty($movimenti)) {
|
|||
} else {
|
||||
$movimento['progressivo_finale'] = $movimenti[$i - 1]['progressivo_iniziale'];
|
||||
}
|
||||
|
||||
|
||||
$movimento['progressivo_iniziale'] = $movimento['progressivo_finale'] - $movimento->qta;
|
||||
|
||||
|
||||
$movimenti[$i]['progressivo_iniziale'] = $movimento['progressivo_iniziale'];
|
||||
$movimenti[$i]['progressivo_finale'] = $movimento['progressivo_finale'];
|
||||
|
||||
|
@ -130,9 +130,9 @@ if (!empty($movimenti)) {
|
|||
echo '
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
'.count($movimenti)-($i). '
|
||||
'.count($movimenti) - $i.'
|
||||
</td>
|
||||
<td class="text-center" style="color: ' . ($movimento->qta < 0 ? 'red' : 'green') . ';">
|
||||
<td class="text-center" style="color: '.($movimento->qta < 0 ? 'red' : 'green').';">
|
||||
'.numberFormat($movimento->qta, 'qta').' '.$record['um'].'
|
||||
</td>
|
||||
|
||||
|
|
|
@ -42,12 +42,12 @@ echo '
|
|||
</div>
|
||||
|
||||
<!-- DATI INTESTAZIONE -->
|
||||
<div class="card card-primary collapsable '.(empty($espandi_dettagli) ? 'collapsed-card' : '').'">
|
||||
<div class="card card-primary collapsable">
|
||||
<div class="card-header with-border">
|
||||
<h3 class="card-title">'.tr('Dati cliente').'</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-'.(empty($espandi_dettagli) ? 'plus' : 'minus').'"></i>
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -149,7 +149,7 @@ foreach ($righe as $riga) {
|
|||
foreach ($evasione_bar as $table => $color) {
|
||||
$righe_ev = $dbo->table($table)->where('original_id', $riga->id)->where('original_type', $riga::class)->get();
|
||||
if ($righe_ev->count() > 0) {
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta?:1);
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta ?: 1);
|
||||
echo '
|
||||
<div class="progress-bar progress-bar-'.$color.'" style="width:'.$perc_ev.'%"></div>';
|
||||
}
|
||||
|
|
|
@ -30,7 +30,6 @@ use Modules\DDT\DDT;
|
|||
use Modules\DDT\Stato;
|
||||
use Modules\DDT\Tipo;
|
||||
use Modules\Iva\Aliquota;
|
||||
use Modules\Ordini\Stato as StatoOrdine;
|
||||
|
||||
$module = Module::find($id_module);
|
||||
|
||||
|
|
|
@ -124,12 +124,12 @@ echo '
|
|||
</div>
|
||||
|
||||
<!-- DATI INTESTAZIONE -->
|
||||
<div class="card card-primary collapsable '.(empty($espandi_dettagli) ? 'collapsed-card' : '').'">
|
||||
<div class="card card-primary collapsable">
|
||||
<div class="card-header with-border">
|
||||
<h3 class="card-title">'.tr('Dati cliente').'</h3>
|
||||
<h3 class="card-title">'.($dir == 'entrata' ? tr('Dati cliente') : tr('Dati fornitore')).'</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-'.(empty($espandi_dettagli) ? 'plus' : 'minus').'"></i>
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -170,7 +170,7 @@ foreach ($righe as $riga) {
|
|||
foreach ($evasione_bar as $table => $color) {
|
||||
$righe_ev = $dbo->table($table)->where('original_id', $riga->id)->where('original_type', $riga::class)->get();
|
||||
if ($righe_ev->count() > 0) {
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta?:1);
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta ?: 1);
|
||||
if ($perc_ev > 0) {
|
||||
echo '
|
||||
<div class="progress-bar progress-bar-'.$color.'" style="width:'.$perc_ev.'%"></div>';
|
||||
|
|
|
@ -48,7 +48,7 @@ class DDTS extends Resource implements RetrieveInterface, UpdateInterface, Creat
|
|||
$joins[] = [
|
||||
'dt_statiddt_lang',
|
||||
'dt_statiddt_lang.id_record',
|
||||
'dt_statiddt.id',
|
||||
'dt_statiddt.id',
|
||||
];
|
||||
|
||||
$where = [];
|
||||
|
|
|
@ -55,35 +55,35 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
|
|||
public function create($request)
|
||||
{
|
||||
$data = $request['data'];
|
||||
$data['qta'] = ($data['qta']>0 ? $data['qta'] : 1);
|
||||
$data['qta'] = ($data['qta'] > 0 ? $data['qta'] : 1);
|
||||
|
||||
$originale = ArticoloOriginale::find($data['id_articolo']);
|
||||
$ddt = DDT::find($data['id_ddt']);
|
||||
|
||||
if( !empty($data['is_descrizione']) ){
|
||||
if (!empty($data['is_descrizione'])) {
|
||||
$riga = Descrizione::build($ddt);
|
||||
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-');
|
||||
$riga->descrizione = ($data['descrizione'] ?: '-');
|
||||
$riga->qta = 0;
|
||||
}elseif(!empty($data['id_articolo']) && !empty($originale)){
|
||||
} elseif (!empty($data['id_articolo']) && !empty($originale)) {
|
||||
$riga = Articolo::build($ddt, $originale);
|
||||
|
||||
if( $originale->prezzo_vendita>0 ){
|
||||
$idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita'));
|
||||
if ($originale->prezzo_vendita > 0) {
|
||||
$idiva = ($originale->idiva_vendita ?: setting('Iva predefinita'));
|
||||
$riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
|
||||
}else{
|
||||
} else {
|
||||
$riga->prezzo_unitario = 0;
|
||||
}
|
||||
$riga->costo_unitario = $originale->prezzo_acquisto;
|
||||
$riga->qta = $data['qta'];
|
||||
$riga->descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione);
|
||||
}else{
|
||||
} else {
|
||||
$riga = Riga::build($ddt);
|
||||
$riga->qta = $data['qta'];
|
||||
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-');
|
||||
$riga->descrizione = ($data['descrizione'] ?: '-');
|
||||
$riga->costo_unitario = 0;
|
||||
$riga->setPrezzoUnitario(0, setting('Iva predefinita'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$riga->um = $data['um'] ?: null;
|
||||
$riga->save();
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
|
|||
public function update($request)
|
||||
{
|
||||
$data = $request['data'];
|
||||
$data['qta'] = ($data['qta']>0 ? $data['qta'] : 1);
|
||||
$data['qta'] = ($data['qta'] > 0 ? $data['qta'] : 1);
|
||||
|
||||
$originale = ArticoloOriginale::find($data['id_articolo']);
|
||||
|
||||
|
@ -100,25 +100,25 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
|
|||
|
||||
$riga->is_descrizione = 0;
|
||||
$riga->qta = $data['qta'];
|
||||
if( !empty($data['is_descrizione']) ){
|
||||
if (!empty($data['is_descrizione'])) {
|
||||
$riga->qta = 0;
|
||||
$riga->is_descrizione = 1;
|
||||
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-');
|
||||
}elseif(!empty($data['id_articolo']) && !empty($originale)){
|
||||
$riga->descrizione = ($data['descrizione'] ?: '-');
|
||||
} elseif (!empty($data['id_articolo']) && !empty($originale)) {
|
||||
$descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione);
|
||||
$descrizione = ($descrizione ? $descrizione : '-');
|
||||
$descrizione = ($descrizione ?: '-');
|
||||
|
||||
$riga->descrizione = ($descrizione ? $descrizione : '-');
|
||||
$riga->descrizione = ($descrizione ?: '-');
|
||||
$riga->costo_unitario = $originale->prezzo_acquisto;
|
||||
$riga->idarticolo = $originale->id;
|
||||
$idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita'));
|
||||
$idiva = ($originale->idiva_vendita ?: setting('Iva predefinita'));
|
||||
$riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
|
||||
}else{
|
||||
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-');
|
||||
} else {
|
||||
$riga->descrizione = ($data['descrizione'] ?: '-');
|
||||
$riga->costo_unitario = 0;
|
||||
$riga->setPrezzoUnitario(0, setting('Iva predefinita'));
|
||||
}
|
||||
|
||||
|
||||
$riga->um = $data['um'] ?: null;
|
||||
$riga->save();
|
||||
}
|
||||
|
|
|
@ -295,12 +295,12 @@ $query .= ' ORDER BY `title`';
|
|||
</div>
|
||||
|
||||
<!-- DATI INTESTAZIONE -->
|
||||
<div class="card card-primary collapsable '.(empty($espandi_dettagli) ? 'collapsed-card' : '').'">
|
||||
<div class="card card-primary collapsable">
|
||||
<div class="card-header with-border">
|
||||
<h3 class="card-title">'.($dir == 'entrata' ? tr('Dati cliente') : tr('Dati fornitore')).'</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-'.(empty($espandi_dettagli) ? 'plus' : 'minus').'"></i>
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -631,20 +631,20 @@ function rimuoviRiga(id) {
|
|||
success: function (response) {
|
||||
renderMessages();
|
||||
caricaRighe(null);';
|
||||
if(!in_array($fattura->codice_stato_fe, ['RC', 'MC', 'EC01', 'WAIT'])){
|
||||
echo '
|
||||
if (!in_array($fattura->codice_stato_fe, ['RC', 'MC', 'EC01', 'WAIT'])) {
|
||||
echo '
|
||||
$("#elimina").removeClass("disabled");';
|
||||
}
|
||||
echo '
|
||||
}
|
||||
echo '
|
||||
},
|
||||
error: function() {
|
||||
renderMessages();
|
||||
caricaRighe(null);';
|
||||
if(!in_array($fattura->codice_stato_fe, ['RC', 'MC', 'EC01', 'WAIT'])){
|
||||
echo '
|
||||
if (!in_array($fattura->codice_stato_fe, ['RC', 'MC', 'EC01', 'WAIT'])) {
|
||||
echo '
|
||||
$("#elimina").removeClass("disabled");';
|
||||
}
|
||||
echo '
|
||||
}
|
||||
echo '
|
||||
}
|
||||
});
|
||||
}).catch(swal.noop);
|
||||
|
|
|
@ -131,7 +131,7 @@ class Fattura extends Document
|
|||
} else {
|
||||
$model->idsede_partenza = $id_sede;
|
||||
}
|
||||
|
||||
|
||||
// Ritenuta contributi predefinita
|
||||
$id_ritenuta_contributi = ($tipo_documento->dir == 'entrata') ? setting('Ritenuta previdenziale predefinita') : null;
|
||||
$model->id_ritenuta_contributi = $id_ritenuta_contributi ?: null;
|
||||
|
|
|
@ -143,7 +143,7 @@ if (!empty($record['immagine'])) {
|
|||
{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )}
|
||||
|
||||
<?php
|
||||
$elementi = $dbo->fetchArray('SELECT `in_interventi`.`id`, `codice` AS numero, `data_richiesta` AS data, "Intervento" AS tipo_documento FROM `in_interventi` INNER JOIN `my_impianti_interventi` ON `in_interventi`.`id`=`my_impianti_interventi`.`idintervento` WHERE `my_impianti_interventi`.`idimpianto` = '.prepare($id_record).'
|
||||
$elementi = $dbo->fetchArray('SELECT `in_interventi`.`id`, `codice` AS numero, `data_richiesta` AS data, "Attività" AS tipo_documento FROM `in_interventi` INNER JOIN `my_impianti_interventi` ON `in_interventi`.`id`=`my_impianti_interventi`.`idintervento` WHERE `my_impianti_interventi`.`idimpianto` = '.prepare($id_record).'
|
||||
UNION
|
||||
SELECT `co_contratti`.`id`, `numero` AS numero, `data_bozza` AS data, "Contratto" AS tipo_documento FROM `co_contratti` INNER JOIN `my_impianti_contratti` ON `co_contratti`.`id`=`my_impianti_contratti`.`idcontratto` WHERE `my_impianti_contratti`.`idimpianto` = '.prepare($id_record));
|
||||
$class = '';
|
||||
|
|
|
@ -785,18 +785,14 @@ switch (post('op')) {
|
|||
foreach ($tecnici as $tecnico) {
|
||||
$mail_tecnico = $dbo->selectOne('an_anagrafiche', '*', ['idanagrafica' => $tecnico]);
|
||||
if (!empty($mail_tecnico['email'])) {
|
||||
|
||||
if (!empty($template)) {
|
||||
$mail = Mail::build(auth()->getUser(), $template, $id_record);
|
||||
$mail->addReceiver($mail_tecnico['email']);
|
||||
$mail->save();
|
||||
flash()->info(tr('Notifica al tecnico aggiunta correttamente.'));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -56,7 +56,7 @@ if ($intervento->id_contratto) {
|
|||
$contratto = Contratto::find($intervento->id_contratto);
|
||||
$ore_erogate = $contratto->interventi->sum('ore_totali');
|
||||
$ore_previste = $contratto->getRighe()->where('um', 'ore')->sum('qta');
|
||||
$perc_ore = $ore_previste != 0 ? ($ore_erogate * 100) / ($ore_previste?:1) : 0;
|
||||
$perc_ore = $ore_previste != 0 ? ($ore_erogate * 100) / ($ore_previste ?: 1) : 0;
|
||||
if ($perc_ore < 75) {
|
||||
$color = 'success';
|
||||
} elseif ($perc_ore <= 100) {
|
||||
|
|
|
@ -195,7 +195,7 @@ if (!function_exists('aggiungi_intervento_in_fattura')) {
|
|||
$sessione = $gruppo->first();
|
||||
$riga = Riga::build($fattura);
|
||||
|
||||
foreach ($gruppo as $sessione){
|
||||
foreach ($gruppo as $sessione) {
|
||||
$dateValue = date('d/m/Y', strtotime($sessione->orario_fine));
|
||||
if (!in_array($dateValue, $date)) {
|
||||
$date[] = $dateValue;
|
||||
|
@ -245,7 +245,7 @@ if (!function_exists('aggiungi_intervento_in_fattura')) {
|
|||
$diritto_chiamata = $gruppo->first();
|
||||
$riga = Riga::build($fattura);
|
||||
|
||||
foreach ($gruppo as $sessione){
|
||||
foreach ($gruppo as $sessione) {
|
||||
$dateValue = date('d/m/Y', strtotime($sessione->orario_fine));
|
||||
if (!in_array($dateValue, $date)) {
|
||||
$date[] = $dateValue;
|
||||
|
@ -285,8 +285,8 @@ if (!function_exists('aggiungi_intervento_in_fattura')) {
|
|||
if ($qta_trasferta == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($gruppo as $sessione){
|
||||
|
||||
foreach ($gruppo as $sessione) {
|
||||
$dateValue = date('d/m/Y', strtotime($sessione->orario_fine));
|
||||
if (!in_array($dateValue, $date)) {
|
||||
$date[] = $dateValue;
|
||||
|
|
|
@ -19,92 +19,88 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if(get('op')=='getmappa'){
|
||||
$nome = 'Ricarica mappa';
|
||||
if (get('op') == 'getmappa') {
|
||||
$nome = 'Ricarica mappa';
|
||||
} else {
|
||||
$nome = 'Visualizza mappa';
|
||||
}
|
||||
|
||||
echo "<center><a onclick=\"location.href='".$rootdir.'/controller.php?id_module='.$id_module."&op=getmappa&r='+Math.random()+'#tab_".Plugins::get('Mostra su mappa')['id']."';\" id='button' class='btn btn-primary btn-lg btn-large'>".$nome.'</a></center>';
|
||||
echo '<br>';
|
||||
|
||||
if (get('op') == 'getmappa') {
|
||||
$current_module = Modules::get($id_module);
|
||||
$total = Util\Query::readQuery($current_module);
|
||||
$module_query = Modules::replaceAdditionals($id_module, $total['query']);
|
||||
|
||||
$search_filters = [];
|
||||
|
||||
if (is_array($_SESSION['module_'.$id_module])) {
|
||||
foreach ($_SESSION['module_'.$id_module] as $field_name => $field_value) {
|
||||
if ($field_value != '' && $field_name != 'selected' && $field_name != 'id_segment') {
|
||||
$field_name = str_replace('search_', '', $field_name);
|
||||
$field_name = str_replace('__', ' ', $field_name);
|
||||
$field_name = str_replace('-', ' ', $field_name);
|
||||
array_push($search_filters, '`'.$field_name.'` LIKE "%'.$field_value.'%"');
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
$nome = 'Visualizza mappa';
|
||||
if (sizeof($search_filters) > 0) {
|
||||
$module_query = str_replace('2=2', '2=2 AND ('.implode(' AND ', $search_filters).') ', $module_query);
|
||||
}
|
||||
|
||||
echo "<center><a onclick=\"location.href='".$rootdir."/controller.php?id_module=".$id_module."&op=getmappa&r='+Math.random()+'#tab_".Plugins::get('Mostra su mappa')['id']."';\" id='button' class='btn btn-primary btn-lg btn-large'>".$nome."</a></center>";
|
||||
echo "<br>";
|
||||
$rs1 = $dbo->fetchArray($module_query);
|
||||
|
||||
// marker svg
|
||||
if (!file_exists($docroot.'/assets/dist/img/leaflet/place-marker.svg')) {
|
||||
throw new Exception('File not found: '.$docroot.'/assets/dist/img/leaflet/place-marker.svg');
|
||||
}
|
||||
|
||||
if(get('op')=='getmappa'){
|
||||
$current_module = Modules::get($id_module);
|
||||
$total = Util\Query::readQuery($current_module);
|
||||
$module_query = Modules::replaceAdditionals($id_module, $total['query']);
|
||||
|
||||
$search_filters = array();
|
||||
|
||||
if( is_array( $_SESSION['module_'.$id_module] ) ){
|
||||
foreach( $_SESSION['module_'.$id_module] as $field_name => $field_value ){
|
||||
if( $field_value != '' && $field_name != 'selected' && $field_name != 'id_segment'){
|
||||
$field_name = str_replace( "search_", "", $field_name );
|
||||
$field_name = str_replace( "__", " ", $field_name );
|
||||
$field_name = str_replace( "-", " ", $field_name );
|
||||
array_push( $search_filters, "`".$field_name."` LIKE \"%".$field_value."%\"" );
|
||||
}
|
||||
}
|
||||
}
|
||||
if( sizeof($search_filters) > 0 ){
|
||||
$module_query = str_replace( "2=2", "2=2 AND (".implode( " AND ", $search_filters ).") ", $module_query);
|
||||
$svgContent = file_get_contents($docroot.'/assets/dist/img/leaflet/place-marker.svg');
|
||||
if ($svgContent === false) {
|
||||
throw new Exception('Error reading file: '.$docroot.'/assets/dist/img/leaflet/place-marker.svg');
|
||||
}
|
||||
$stringa_descrizioni = '';
|
||||
$stringa_content = '';
|
||||
$color = '';
|
||||
$lat = '';
|
||||
$lng = '';
|
||||
for ($i = 0; $i < sizeof($rs1); ++$i) {// elenco delle righe
|
||||
$val = html_entity_decode((string) $rs1[$i]['idanagrafica']);
|
||||
$id_sede = $dbo->selectOne('in_interventi', '*', ['id' => $rs1[$i]['id']])['idsede_destinazione'];
|
||||
if ($id_sede) {
|
||||
$query = "SELECT *, nomesede AS ragione_sociale FROM an_sedi WHERE id='".$id_sede."'";
|
||||
$rs = $dbo->fetchArray($query);
|
||||
} else {
|
||||
$query = "SELECT *, ragione_sociale FROM an_anagrafiche WHERE idanagrafica='".$val."'";
|
||||
$rs = $dbo->fetchArray($query);
|
||||
}
|
||||
|
||||
$rs1 = $dbo->fetchArray( $module_query );
|
||||
if ($rs[0]['lat'] && $rs[0]['lng']) {
|
||||
$color .= "'".$rs1[$i]['_bg_']."',";
|
||||
$lat .= "'".$rs[0]['lat']."',";
|
||||
$lng .= "'".$rs[0]['lng']."',";
|
||||
$stringa_descrizioni .= "'".str_replace("'", ' ', $rs[0]['ragione_sociale'])."',";
|
||||
|
||||
//marker svg
|
||||
if (!file_exists($docroot.'/assets/dist/img/leaflet/place-marker.svg')) {
|
||||
throw new Exception("File not found: " . $docroot.'/assets/dist/img/leaflet/place-marker.svg');
|
||||
}
|
||||
|
||||
$svgContent = file_get_contents($docroot.'/assets/dist/img/leaflet/place-marker.svg');
|
||||
if ($svgContent === false) {
|
||||
throw new Exception("Error reading file: " . $docroot.'/assets/dist/img/leaflet/place-marker.svg');
|
||||
}
|
||||
$stringa_descrizioni = "";
|
||||
$stringa_content = "";
|
||||
$color = "";
|
||||
$lat = "";
|
||||
$lng = "";
|
||||
for( $i=0; $i<sizeof($rs1); $i++ ){//elenco delle righe
|
||||
$val = html_entity_decode( $rs1[$i]['idanagrafica'] );
|
||||
$id_sede = $dbo->selectOne('in_interventi', '*', ['id' => $rs1[$i]['id']])['idsede_destinazione'];
|
||||
if($id_sede){
|
||||
$query = "SELECT *, nomesede AS ragione_sociale FROM an_sedi WHERE id='".$id_sede."'";
|
||||
$rs=$dbo->fetchArray($query);
|
||||
}else{
|
||||
$query="SELECT *, ragione_sociale FROM an_anagrafiche WHERE idanagrafica='".$val."'";
|
||||
$rs=$dbo->fetchArray($query);
|
||||
}
|
||||
|
||||
if($rs[0]['lat'] && $rs[0]['lng']){
|
||||
$color .= "'".$rs1[$i]['_bg_']."',";
|
||||
$lat .= "'".$rs[0]['lat']."',";
|
||||
$lng .= "'".$rs[0]['lng']."',";
|
||||
$stringa_descrizioni .= "'".str_replace("'", " ", $rs[0]['ragione_sociale'])."',";
|
||||
|
||||
$stringa_content .= "'";
|
||||
|
||||
$stringa_content .= str_replace("'", "", "<big><b>".$rs[0]['ragione_sociale']."</b></big><br>".$rs[0]['indirizzo'].", ".$rs[0]['cap'].", ".$rs[0]['citta']." (".$rs[0]['provincia'].")".($rs[0]['telefono']!=''? "<br><i class=\"fa fa-phone\"></i> ".$rs[0]['telefono'] : "").($rs[0]['email']!=''? "<br><i class=\"fa fa-envelope\"></i> ".$rs[0]['email'] : "")."<br>");
|
||||
|
||||
|
||||
$altri_interventi = $dbo->fetchArray('SELECT * FROM in_interventi WHERE idsede_destinazione='.prepare($id_sede).' AND idanagrafica='.prepare($val).' AND id IN ('.implode(',', array_column($rs1, 'id')).')');
|
||||
for($j=0;$j<sizeof($altri_interventi);$j++){
|
||||
$stringa_content .= str_replace("'", "", "<br> <a href=\"".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$altri_interventi[$j]['id']."\">Intervento numero: ".$altri_interventi[$j]['codice']." del ".date('d/m/Y', strtotime($altri_interventi[$j]['data_richiesta']))."</a>");
|
||||
}
|
||||
|
||||
$stringa_content .= "',";
|
||||
$stringa_content .= "'";
|
||||
|
||||
$stringa_content .= str_replace("'", '', '<big><b>'.$rs[0]['ragione_sociale'].'</b></big><br>'.$rs[0]['indirizzo'].', '.$rs[0]['cap'].', '.$rs[0]['citta'].' ('.$rs[0]['provincia'].')'.($rs[0]['telefono'] != '' ? '<br><i class="fa fa-phone"></i> '.$rs[0]['telefono'] : '').($rs[0]['email'] != '' ? '<br><i class="fa fa-envelope"></i> '.$rs[0]['email'] : '').'<br>');
|
||||
|
||||
$altri_interventi = $dbo->fetchArray('SELECT * FROM in_interventi WHERE idsede_destinazione='.prepare($id_sede).' AND idanagrafica='.prepare($val).' AND id IN ('.implode(',', array_column($rs1, 'id')).')');
|
||||
for ($j = 0; $j < sizeof($altri_interventi); ++$j) {
|
||||
$stringa_content .= str_replace("'", '', '<br> <a href="'.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$altri_interventi[$j]['id'].'">Intervento numero: '.$altri_interventi[$j]['codice'].' del '.date('d/m/Y', strtotime((string) $altri_interventi[$j]['data_richiesta'])).'</a>');
|
||||
}
|
||||
|
||||
$stringa_content .= "',";
|
||||
}
|
||||
}
|
||||
|
||||
echo "<div id='mappa'></div>";
|
||||
$stringa_descrizioni = substr($stringa_descrizioni,0,-1);
|
||||
$stringa_content = substr($stringa_content,0,-1);
|
||||
$lat = substr($lat,0,-1);
|
||||
$lng = substr($lng,0,-1);
|
||||
?>
|
||||
echo "<div id='mappa'></div>";
|
||||
$stringa_descrizioni = substr($stringa_descrizioni, 0, -1);
|
||||
$stringa_content = substr($stringa_content, 0, -1);
|
||||
$lat = substr($lat, 0, -1);
|
||||
$lng = substr($lng, 0, -1);
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="<?php echo $rootdir; ?>/modules/mappa/css/app.css">
|
||||
|
||||
|
@ -122,7 +118,7 @@ include_once __DIR__.'/../../core.php';
|
|||
var color = [<?php echo $color; ?>];
|
||||
var descrizioni = [<?php echo $stringa_descrizioni; ?>];
|
||||
var content = [<?php echo $stringa_content; ?>];
|
||||
var svgContent = `<?php echo $svgContent;?>`;
|
||||
var svgContent = `<?php echo $svgContent; ?>`;
|
||||
const lt = "41.706";
|
||||
const ln = "13.228";
|
||||
var container = L.DomUtil.get("mappa");
|
||||
|
@ -182,4 +178,4 @@ include_once __DIR__.'/../../core.php';
|
|||
</script>
|
||||
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,8 +24,8 @@ use API\Interfaces\RetrieveInterface;
|
|||
use API\Resource;
|
||||
use Modules\Articoli\Articolo as ArticoloOriginale;
|
||||
use Modules\Interventi\Components\Articolo;
|
||||
use Modules\Interventi\Components\Riga;
|
||||
use Modules\Interventi\Components\Descrizione;
|
||||
use Modules\Interventi\Components\Riga;
|
||||
use Modules\Interventi\Intervento;
|
||||
|
||||
class Righe extends Resource implements RetrieveInterface, CreateInterface
|
||||
|
@ -55,7 +55,7 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
|
|||
public function create($request)
|
||||
{
|
||||
$data = $request['data'];
|
||||
$data['qta'] = ($data['qta'] ? $data['qta'] : 1);
|
||||
$data['qta'] = ($data['qta'] ?: 1);
|
||||
|
||||
$intervento = Intervento::find($data['id_intervento']);
|
||||
$originale = ArticoloOriginale::find($data['id_articolo']);
|
||||
|
@ -66,23 +66,23 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
|
|||
$riga->qta = $data['qta'];
|
||||
$riga->um = $data['um'];
|
||||
$riga->costo_unitario = $originale->prezzo_acquisto;
|
||||
if( $originale->prezzo_vendita>0 ){
|
||||
$idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita'));
|
||||
if ($originale->prezzo_vendita > 0) {
|
||||
$idiva = ($originale->idiva_vendita ?: setting('Iva predefinita'));
|
||||
$riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
|
||||
}else{
|
||||
} else {
|
||||
$riga->prezzo_unitario = 0;
|
||||
}
|
||||
} elseif ($data['is_descrizione']) {
|
||||
$riga = Descrizione::build($intervento);
|
||||
|
||||
$riga->qta = 0;
|
||||
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-');
|
||||
$riga->descrizione = ($data['descrizione'] ?: '-');
|
||||
} else {
|
||||
$riga = Riga::build($intervento);
|
||||
|
||||
$riga->qta = $data['qta'];
|
||||
$riga->um = $data['um'];
|
||||
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-');
|
||||
$riga->descrizione = ($data['descrizione'] ?: '-');
|
||||
$riga->costo_unitario = 0;
|
||||
$riga->setPrezzoUnitario(0, setting('Iva predefinita'));
|
||||
}
|
||||
|
@ -100,29 +100,28 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
|
|||
public function update($request)
|
||||
{
|
||||
$data = $request['data'];
|
||||
$data['qta'] = ($data['qta'] ? $data['qta'] : 1);
|
||||
$data['qta'] = ($data['qta'] ?: 1);
|
||||
|
||||
$originale = ArticoloOriginale::find($data['id_articolo']);
|
||||
$riga = Articolo::find($data['id_riga']) ?: Riga::find($data['id_riga']);
|
||||
|
||||
$riga->qta = $data['qta'];
|
||||
if(!empty($data['id_articolo']) && !empty($originale)){
|
||||
if (!empty($data['id_articolo']) && !empty($originale)) {
|
||||
$descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione);
|
||||
$descrizione = ($descrizione ? $descrizione : '-');
|
||||
$descrizione = ($descrizione ?: '-');
|
||||
|
||||
$riga->descrizione = $descrizione;
|
||||
$riga->descrizione = $descrizione;
|
||||
$riga->idarticolo = $originale->id;
|
||||
$riga->costo_unitario = $originale->prezzo_acquisto;
|
||||
$idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita'));
|
||||
$idiva = ($originale->idiva_vendita ?: setting('Iva predefinita'));
|
||||
$riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
|
||||
}else{
|
||||
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-');
|
||||
} else {
|
||||
$riga->descrizione = ($data['descrizione'] ?: '-');
|
||||
$riga->costo_unitario = 0;
|
||||
$riga->setPrezzoUnitario(0, setting('Iva predefinita'));
|
||||
}
|
||||
|
||||
|
||||
$riga->um = $data['um'] ?: null;
|
||||
$riga->save();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -403,7 +403,7 @@ class Sessione extends Model
|
|||
*/
|
||||
public function getMarginePercentualeAttribute()
|
||||
{
|
||||
return (1 - ($this->spesa / ($this->totale_imponibile?:1))) * 100;
|
||||
return (1 - ($this->spesa / ($this->totale_imponibile ?: 1))) * 100;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -413,7 +413,7 @@ class Sessione extends Model
|
|||
*/
|
||||
public function getRicaricoPercentualeAttribute()
|
||||
{
|
||||
return $this->imponibile ? (($this->imponibile / ($this->spesa?:1)) - 1) * 100 : 0;
|
||||
return $this->imponibile ? (($this->imponibile / ($this->spesa ?: 1)) - 1) * 100 : 0;
|
||||
}
|
||||
|
||||
public function getIvaIndetraibileAttribute()
|
||||
|
|
|
@ -30,7 +30,7 @@ include_once __DIR__.'/../../core.php';
|
|||
<div id="menu-filtri" class="open-menu">
|
||||
<div style='width:100%;height:50px;background-color:#4d4d4d;padding:8px;font-size:25px;color:white;' class='text-center'>
|
||||
<div class="pull-left"><i class='fa fa-forward clickable' id="menu-filtri-toggle"></i></div>
|
||||
<b><?php echo tr('Filtri');?></b>
|
||||
<b><?php echo tr('Filtri'); ?></b>
|
||||
</div>
|
||||
|
||||
<div id="lista-filtri" style="padding:20px 40px;height:637px;overflow:auto;">
|
||||
|
@ -39,19 +39,19 @@ include_once __DIR__.'/../../core.php';
|
|||
<div class="col-md-12" id="geocomplete">
|
||||
<input type="hidden" name="lat" id="lat" value="">
|
||||
<input type="hidden" name="lng" id="lng" value="">
|
||||
{[ "type": "text", "label": "<?php echo tr('Indirizzo');?>", "name": "gaddress", "value": "", "extra": "data-geo='formatted_address'", "icon-after":"<button type=\"button\" class=\"btn btn-info\" onclick=\"initGeocomplete();\"><i class=\"fa fa-search\"></i></button>", "icon-before":"<button type=\"button\" class=\"btn btn-info\" onclick=\"getLocation();\"><i class=\"fa fa-map-marker\"></i></button>" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('Indirizzo'); ?>", "name": "gaddress", "value": "", "extra": "data-geo='formatted_address'", "icon-after":"<button type=\"button\" class=\"btn btn-info\" onclick=\"initGeocomplete();\"><i class=\"fa fa-search\"></i></button>", "icon-before":"<button type=\"button\" class=\"btn btn-info\" onclick=\"getLocation();\"><i class=\"fa fa-map-marker\"></i></button>" ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12" id="geocomplete">
|
||||
<input type="hidden" name="lat" id="lat" value="">
|
||||
<input type="hidden" name="lng" id="lng" value="">
|
||||
{[ "type": "number", "label": "<?php echo tr('Nel raggio di');?>", "name": "range", "value": "", "decimals": 0, "icon-after":"m" ]}
|
||||
{[ "type": "number", "label": "<?php echo tr('Nel raggio di'); ?>", "name": "range", "value": "", "decimals": 0, "icon-after":"m" ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<label style='font-size:12pt;'><?php echo tr('Geolocalizzazione attività per anagrafica');?></label>
|
||||
<label style='font-size:12pt;'><?php echo tr('Geolocalizzazione attività per anagrafica'); ?></label>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -64,7 +64,7 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<label style='font-size:12pt;'><?php echo tr('Geolocalizzazione attività per stato');?></label>
|
||||
<label style='font-size:12pt;'><?php echo tr('Geolocalizzazione attività per stato'); ?></label>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -79,12 +79,12 @@ echo '
|
|||
</div>
|
||||
|
||||
<!-- DATI INTESTAZIONE -->
|
||||
<div class="card card-primary collapsable '.(empty($espandi_dettagli) ? 'collapsed-card' : '').'">
|
||||
<div class="card card-primary collapsable">
|
||||
<div class="card-header with-border">
|
||||
<h3 class="card-title">'.tr('Dati cliente').'</h3>
|
||||
<h3 class="card-title">'.($dir == 'entrata' ? tr('Dati cliente') : tr('Dati fornitore')).'</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-'.(empty($espandi_dettagli) ? 'plus' : 'minus').'"></i>
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -223,7 +223,7 @@ foreach ($righe as $riga) {
|
|||
foreach ($evasione_bar as $table => $color) {
|
||||
$righe_ev = $dbo->table($table)->where('original_id', $riga->id)->where('original_type', $riga::class)->get();
|
||||
if ($righe_ev->count() > 0) {
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta?:1);
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta ?: 1);
|
||||
if ($perc_ev > 0) {
|
||||
echo '
|
||||
<div class="progress-bar progress-bar-'.$color.'" style="width:'.$perc_ev.'%"></div>';
|
||||
|
|
|
@ -47,12 +47,12 @@ if (count($preventivo->revisioni) > 1) {
|
|||
</div>
|
||||
<?php echo '
|
||||
<!-- DATI INTESTAZIONE -->
|
||||
<div class="card card-primary collapsable '.(empty($espandi_dettagli) ? 'collapsed-card' : '').'">
|
||||
<div class="card card-primary collapsable">
|
||||
<div class="card-header with-border">
|
||||
<h3 class="card-title">'.tr('Dati cliente').'</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-'.(empty($espandi_dettagli) ? 'plus' : 'minus').'"></i>
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -179,7 +179,7 @@ foreach ($righe as $key => $riga) {
|
|||
foreach ($evasione_bar as $table => $color) {
|
||||
$righe_ev = $dbo->table($table)->where('original_id', $riga->id)->where('original_type', $riga::class)->get();
|
||||
if ($righe_ev->count() > 0) {
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta?:1);
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta ?: 1);
|
||||
if ($perc_ev > 0) {
|
||||
echo '
|
||||
<div class="progress-bar progress-bar-'.$color.'" style="width:'.$perc_ev.'%"></div>';
|
||||
|
|
|
@ -41,7 +41,7 @@ if (sizeof($rs_doc) > 0) {
|
|||
<div class="col-md-2">
|
||||
<br>
|
||||
<div class="btn-group">
|
||||
<a href="<?php echo base_path(); ?>/editor.php?id_module=<?php echo Module::where('name', 'Fatture di vendita')->first()->id; ?>&id_record=<?php echo $rs_doc[0]['iddocumento']; ?>" class="btn btn-info"><i class="fa fa-chevron-left"></i> <?php echo tr('Vai alla fattura'); ?></a>
|
||||
<a href="<?php echo base_path(); ?>/editor.php?id_module=<?php echo $rs[0]['dir'] == 'uscita' ? Module::where('name', 'Fatture di acquisto')->first()->id : Module::where('name', 'Fatture di vendita')->first()->id; ?>&id_record=<?php echo $rs_doc[0]['iddocumento']; ?>" class="btn btn-info"><i class="fa fa-chevron-left"></i> <?php echo tr('Vai alla fattura'); ?></a>
|
||||
<a type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="caret"></span>
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
|
|
|
@ -32,7 +32,7 @@ $scadenza_in_chiusura = 0;
|
|||
foreach ($scadenze as $scadenza) {
|
||||
$scadenza = (array) $scadenza;
|
||||
foreach ($mesi_chiusura as $mese) {
|
||||
if (date('m', strtotime(($scadenza['data_concordata'] && $scadenza['data_concordata'] != '0000-00-00') ? $scadenza['data_concordata'] : $scadenza['scadenza'])) == str_pad($mese['mese'], 2, '0', STR_PAD_LEFT)) {
|
||||
if (date('m', strtotime(($scadenza['data_concordata'] && $scadenza['data_concordata'] != '0000-00-00') ? $scadenza['data_concordata'] : $scadenza['scadenza'])) == str_pad((string) $mese['mese'], 2, '0', STR_PAD_LEFT)) {
|
||||
$scadenza_in_chiusura = 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -384,11 +384,10 @@ switch (filter('op')) {
|
|||
$spazio_totale = floatval($informazioni['maxSize']) * (1024 ** 2);
|
||||
$avviso_spazio = !empty($spazio_totale) && floatval($informazioni['size']) > 0.9 * $spazio_totale;
|
||||
|
||||
|
||||
$history = (array) $informazioni['history'];
|
||||
|
||||
// Restrizione storico agli ultimi 3 anni
|
||||
//$history = array_slice($history, 0, 3);
|
||||
// $history = array_slice($history, 0, 3);
|
||||
|
||||
$max_number = $informazioni['maxNumber'];
|
||||
$avviso_numero = !empty($max_number) && floatval($history[0]['number']) > 0.9 * $max_number;
|
||||
|
|
|
@ -127,7 +127,7 @@ include_once __DIR__.'/../../core.php';
|
|||
// Permetto eliminazione tipo intervento solo se questo non è utilizzado da nessun'altra parte nel gestionale
|
||||
// UNION SELECT `in_tariffe`.`idtipointervento` FROM `in_tariffe` WHERE `in_tariffe`.`idtipointervento` = '.prepare($id_record).'
|
||||
// UNION SELECT `co_contratti_tipiintervento`.`idtipointervento` FROM `co_contratti_tipiintervento` WHERE `co_contratti_tipiintervento`.`idtipointervento` = '.prepare($id_record).'
|
||||
$elementi = $dbo->fetchArray('SELECT `in_interventi`.`idtipointervento`, id, codice AS numero, data_richiesta AS data, "Intervento" AS tipo_documento FROM `in_interventi` WHERE `in_interventi`.`idtipointervento` = '.prepare($id_record).'
|
||||
$elementi = $dbo->fetchArray('SELECT `in_interventi`.`idtipointervento`, id, codice AS numero, data_richiesta AS data, "Attività" AS tipo_documento FROM `in_interventi` WHERE `in_interventi`.`idtipointervento` = '.prepare($id_record).'
|
||||
UNION
|
||||
SELECT `in_interventi_tecnici`.`idtipointervento`, idintervento AS id, codice AS numero, orario_inizio AS data, "Sessione intervento" AS tipo_documento FROM `in_interventi_tecnici` LEFT JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE `in_interventi_tecnici`.`idtipointervento` = '.prepare($id_record).'
|
||||
UNION
|
||||
|
|
|
@ -60,7 +60,7 @@ echo '
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "'.tr('Sede').'", "name": "idsede[]", "ajax-source": "sedi_azienda", "multiple": "1", "value":"'.$sedi .'", "help": "'.tr('Sede Azienda abilitata per la movimentazione degli articoli. L\'impostazione non viene considerata per gli utenti del gruppo \'Amministratori\'.').'" ]}
|
||||
{[ "type": "select", "label": "'.tr('Sede').'", "name": "idsede[]", "ajax-source": "sedi_azienda", "multiple": "1", "value":"'.$sedi.'", "help": "'.tr('Sede Azienda abilitata per la movimentazione degli articoli. L\'impostazione non viene considerata per gli utenti del gruppo \'Amministratori\'.').'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ echo '
|
|||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-3 pull-right">
|
||||
{["type":"select", "label":"'.tr('Modulo iniziale').'", "name":"id_module_start", "ajax-source":"moduli_gruppo", "select-options": '.json_encode(['idgruppo' => $group->id]).', "placeholder":"'.tr('Modulo iniziale').'", "value":"'.($group->id_module_start ?:0).'" ]}
|
||||
{["type":"select", "label":"'.tr('Modulo iniziale').'", "name":"id_module_start", "ajax-source":"moduli_gruppo", "select-options": '.json_encode(['idgruppo' => $group->id]).', "placeholder":"'.tr('Modulo iniziale').'", "value":"'.($group->id_module_start ?: 0).'" ]}
|
||||
</div>
|
||||
<div class="col-md-3 pull-right">
|
||||
{["type":"select", "label":"'.tr('Tema').'", "name":"theme", "values":"list=\"\": \"'.tr('Predefinito').'\",\"black-light\": \"'.tr('Bianco').'\",\"black\": \"'.tr('Nero').'\",\"red-light\": \"'.tr('Rosso chiaro').'\",\"red\": \"'.tr('Rosso').'\",\"blue-light\": \"'.tr('Blu chiaro').'\",\"blue\": \"'.tr('Blu').'\",\"info-light\": \"'.tr('Azzurro chiaro').'\",\"info\": \"'.tr('Azzurro').'\",\"green-light\": \"'.tr('Verde chiaro').'\",\"green\": \"'.tr('Verde').'\",\"yellow-light\": \"'.tr('Giallo chiaro').'\",\"yellow\": \"'.tr('Giallo').'\",\"purple-light\": \"'.tr('Viola chiaro').'\",\"purple\": \"'.tr('Viola').'\" ", "value":"'.$group->theme.'" ]}
|
||||
|
@ -185,8 +185,8 @@ echo '
|
|||
<div class="card card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">'.tr('Permessi del gruppo: _GROUP_', [
|
||||
'_GROUP_' => $record['nome'],
|
||||
]).'</h3>'.((empty($record['editable']) && ($record['nome'] != 'Amministratori')) ? '
|
||||
'_GROUP_' => $record['nome'],
|
||||
]).'</h3>'.((empty($record['editable']) && ($record['nome'] != 'Amministratori')) ? '
|
||||
<div class="card-tools">
|
||||
<btn type="button" class="btn clickable btn-xs btn-warning float-right ask" data-msg="<small>'.tr('Verranno reimpostati i permessi di default per il gruppo '.$record['nome']).'.</small>" data-class="btn btn-warning" data-button="'.tr('Reimposta permessi').'" data-op="restore_permission">'.tr('Reimposta permessi').'</btn>
|
||||
</div>' : '').'
|
||||
|
|
|
@ -106,6 +106,7 @@ switch (filter('op')) {
|
|||
|
||||
if (check_query($query)) {
|
||||
$array = [
|
||||
'name' => post('name')[$c],
|
||||
'idgruppo' => post('gruppo')[$c],
|
||||
'idmodule' => $id_record,
|
||||
'clause' => $query,
|
||||
|
@ -114,22 +115,15 @@ switch (filter('op')) {
|
|||
|
||||
if (!empty(post('id')[$c]) && !empty($query)) {
|
||||
$id = post('id')[$c];
|
||||
$clause = Clause::find($id);
|
||||
$clause->idgruppo = post('gruppo')[$c];
|
||||
$clause->idmodulo = $id_record;
|
||||
$clause->clause = $query;
|
||||
$clause->position = !empty(post('position')[$c]) ? 'HVN' : 'WHR';
|
||||
$clause->setTranslation('title', post('name')[$c]);
|
||||
$clause->save();
|
||||
|
||||
$dbo->update('zz_group_module', $array, ['id' => $id]);
|
||||
$dbo->update('zz_group_module_lang', ['title' => $array['name']], ['id_record' => $id, 'id_lang' => Models\Locale::getDefault()->id]);
|
||||
|
||||
} elseif (!empty($query)) {
|
||||
$clause = Clause::build();
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
$clause->idgruppo = post('gruppo')[$c];
|
||||
$clause->idmodulo = $id_record;
|
||||
$clause->clause = $query;
|
||||
$clause->position = !empty(post('position')[$c]) ? 'HVN' : 'WHR';
|
||||
$clause->setTranslation('title', post('name')[$c]);
|
||||
$clause->save();
|
||||
$dbo->insert('zz_group_module', $array);
|
||||
$dbo->insert('zz_group_module_lang', ['id_record' => $dbo->lastInsertedID(), 'id_lang' => Models\Locale::getDefault()->id, 'title' => $array['name']]);
|
||||
|
||||
$id = $dbo->lastInsertedID();
|
||||
}
|
||||
} else {
|
||||
$rs = false;
|
||||
|
|
|
@ -42,7 +42,7 @@ if (!empty($additionals)) {
|
|||
]).'
|
||||
</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-widget="collapse">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>';
|
||||
|
|
|
@ -57,26 +57,26 @@ foreach ($impianti_collegati as $impianto) {
|
|||
}
|
||||
}
|
||||
|
||||
$percentuale_completati = $n_impianti ? round(($impianti_completati * 100) / ($n_impianti?:1)) : 0;
|
||||
$percentuale_non_completati = $n_impianti ? round(($impianti_non_completati * 100) / ($n_impianti?:1)) : 0;
|
||||
$percentuale_non_previsti = $n_impianti ? round(($impianti_non_previsti * 100) / ($n_impianti?:1)) : 0;
|
||||
$percentuale_completati = $n_impianti ? round(($impianti_completati * 100) / ($n_impianti ?: 1)) : 0;
|
||||
$percentuale_non_completati = $n_impianti ? round(($impianti_non_completati * 100) / ($n_impianti ?: 1)) : 0;
|
||||
$percentuale_non_previsti = $n_impianti ? round(($impianti_non_previsti * 100) / ($n_impianti ?: 1)) : 0;
|
||||
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="offset-md-4 col-md-4 text-center">
|
||||
<h4>'.strtoupper(tr('Impianti')).': '.$n_impianti. '</h4>
|
||||
<h4>'.strtoupper(tr('Impianti')).': '.$n_impianti.'</h4>
|
||||
<div class="progress" style="height:2rem;">
|
||||
<div class="progress-bar progress-bar-striped progress-bar-success" role="progressbar" style="width:'.$percentuale_completati.'%"><i class="fa fa-check"></i> <b>'.$impianti_completati.'</b></div>
|
||||
|
||||
<div class="progress-bar progress-bar-striped progress-bar-danger" role="progressbar" style="width:'.$percentuale_non_completati.'%"><i class="fa fa-clock-o"></i> <b>'.$impianti_non_completati.'</b></div>
|
||||
|
||||
<div class="progress-bar progress-bar-striped progress-bar-warning" role="progressbar" style="width:'.$percentuale_non_previsti.'%"><i class="fa fa-times"></i> <b>'.$impianti_non_previsti. '</b></div>
|
||||
<div class="progress-bar progress-bar-striped progress-bar-warning" role="progressbar" style="width:'.$percentuale_non_previsti.'%"><i class="fa fa-times"></i> <b>'.$impianti_non_previsti.'</b></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-1">
|
||||
<button type="button" class="btn btn-default" onclick="caricaImpianti()" style="margin-top: 25px;">
|
||||
<i class="fa fa-refresh"></i> '.tr('Aggiorna'). '
|
||||
<i class="fa fa-refresh"></i> '.tr('Aggiorna').'
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -484,7 +484,7 @@ if (!empty($righe)) {
|
|||
if ($tipo_sconto == '%') {
|
||||
$sconto_calcolato = calcola_sconto([
|
||||
'sconto' => $sconto_riga,
|
||||
'prezzo' => $sconto_unitario ? $prezzo_unitario - ($tot_sconto_calcolato / ($qta?:1)) : $prezzo_unitario,
|
||||
'prezzo' => $sconto_unitario ? $prezzo_unitario - ($tot_sconto_calcolato / ($qta ?: 1)) : $prezzo_unitario,
|
||||
'tipo' => 'PRC',
|
||||
'qta' => $qta,
|
||||
]);
|
||||
|
|
|
@ -155,7 +155,7 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
$differenza_iva = round((float) $riepilogo['Imposta'] - $totale_imposta[$riepilogo['AliquotaIVA']], 2);
|
||||
|
||||
if ($differenza_iva) {
|
||||
$valore = $differenza_iva * 100 / ($riepilogo['AliquotaIVA']?:1);
|
||||
$valore = $differenza_iva * 100 / ($riepilogo['AliquotaIVA'] ?: 1);
|
||||
}
|
||||
|
||||
if ($valore != 0) {
|
||||
|
@ -353,8 +353,8 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
// Nel caso il prezzo sia negativo viene gestito attraverso l'inversione della quantità (come per le note di credito)
|
||||
// TODO: per migliorare la visualizzazione, sarebbe da lasciare negativo il prezzo e invertire gli sconti.
|
||||
if (!empty($articolo->um) && !empty($articolo->um_secondaria) && !empty((float) $articolo->fattore_um_secondaria) && $riga['UnitaMisura'] == $articolo->um_secondaria) {
|
||||
$qta = (($riga['Quantita'] ?: 1) / ($articolo->fattore_um_secondaria?:1));
|
||||
$prezzo = $totale_righe_riepilogo > 0 ? $totale_righe_riepilogo / ($qta?:1) : -($totale_righe_riepilogo / ($qta?:1));
|
||||
$qta = (($riga['Quantita'] ?: 1) / ($articolo->fattore_um_secondaria ?: 1));
|
||||
$prezzo = $totale_righe_riepilogo > 0 ? $totale_righe_riepilogo / ($qta ?: 1) : -($totale_righe_riepilogo / ($qta ?: 1));
|
||||
} else {
|
||||
$qta = ($riga['Quantita'] ?: 1);
|
||||
$prezzo = $totale_righe_riepilogo > 0 ? $riga['PrezzoUnitario'] : -$riga['PrezzoUnitario'];
|
||||
|
@ -399,13 +399,13 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
if ($tipo_sconto == 'PRC') {
|
||||
$sconto_calcolato = calcola_sconto([
|
||||
'sconto' => $sconto_riga,
|
||||
'prezzo' => $sconto_unitario ? $obj->prezzo_unitario - ($tot_sconto_calcolato / ($obj->qta?:1)) : $obj->prezzo_unitario,
|
||||
'prezzo' => $sconto_unitario ? $obj->prezzo_unitario - ($tot_sconto_calcolato / ($obj->qta ?: 1)) : $obj->prezzo_unitario,
|
||||
'tipo' => 'PRC',
|
||||
'qta' => $obj->qta,
|
||||
]);
|
||||
|
||||
if ($tipo == 'PRC') {
|
||||
$tot_sconto = $sconto_calcolato * 100 / ($obj->imponibile?:1);
|
||||
$tot_sconto = $sconto_calcolato * 100 / ($obj->imponibile ?: 1);
|
||||
} else {
|
||||
$tot_sconto = $sconto_calcolato;
|
||||
}
|
||||
|
@ -532,7 +532,7 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
$nome = ucwords(strtolower($m[2]));
|
||||
$percentuale = $m[3];
|
||||
|
||||
$totale_previsto = round($importo / ($percentuale?:1) * 100, 2);
|
||||
$totale_previsto = round($importo / ($percentuale ?: 1) * 100, 2);
|
||||
$percentuale_importo = round($totale_previsto / ($totale ?: 1) * 100, 2);
|
||||
|
||||
$ritenuta_contributi = $database->fetchOne('SELECT * FROM`co_ritenuta_contributi` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
|
||||
|
@ -633,7 +633,7 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
$totale = sum($totali);
|
||||
}
|
||||
|
||||
$totale_previsto = round($importo * 100 / ($percentuale?:1), 2);
|
||||
$totale_previsto = round($importo * 100 / ($percentuale ?: 1), 2);
|
||||
$percentuale_importo = round($totale_previsto / ($totale ?: 1) * 100, 2);
|
||||
$percentuale_importo = min($percentuale_importo, 100); // Nota: Fix per la percentuale che superava il 100% nel caso di importi con Rivalsa compresa
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ class FatturaSemplificata extends FatturaElettronica
|
|||
|
||||
$prezzo = $importo - $imposta;
|
||||
|
||||
$aliquota = !empty($prezzo) ? $imposta / ($prezzo?:1) * 100 : 0;
|
||||
$aliquota = !empty($prezzo) ? $imposta / ($prezzo ?: 1) * 100 : 0;
|
||||
$result[$index]['AliquotaIVA'] = $aliquota;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$directory = Plugins\ImportFE\FatturaElettronica::getImportDirectory();
|
||||
$directory = FatturaElettronica::getImportDirectory();
|
||||
$filename = get('filename');
|
||||
|
||||
$content = file_get_contents($directory.'/'.$filename);
|
||||
|
|
|
@ -118,7 +118,7 @@ switch ($operazione) {
|
|||
if ($cadenza_fatturazione == 'Fine') {
|
||||
$fine = Carbon\Carbon::parse($fine)->endOfMonth()->format('Y-m-d');
|
||||
}
|
||||
$prezzo_unitario = setting('Utilizza prezzi di vendita comprensivi di IVA') ? ((($r->subtotale - $r->sconto) + $r->iva) / ($r->qta?:1)) : (($r->subtotale - $r->sconto) / ($r->qta?:1));
|
||||
$prezzo_unitario = setting('Utilizza prezzi di vendita comprensivi di IVA') ? ((($r->subtotale - $r->sconto) + $r->iva) / ($r->qta ?: 1)) : (($r->subtotale - $r->sconto) / ($r->qta ?: 1));
|
||||
|
||||
if (!empty($r->idarticolo)) {
|
||||
$articolo = ArticoloOriginale::find($r->idarticolo);
|
||||
|
|
|
@ -93,7 +93,7 @@ class Pianificazione extends Document
|
|||
{
|
||||
$righe = $this->contratto->getRighe();
|
||||
$pianificazioni = $this->contratto->pianificazioni;
|
||||
$numero_righe = $righe->count() / ($pianificazioni->count()?:1);
|
||||
$numero_righe = $righe->count() / ($pianificazioni->count() ?: 1);
|
||||
|
||||
$p = $this;
|
||||
$index = $pianificazioni->search(fn ($item) => $item->id == $p->id);
|
||||
|
|
|
@ -32,7 +32,7 @@ $prezzo_max = $prezzi['max'];
|
|||
$prezzo_medio = $prezzi['media'];
|
||||
|
||||
$oscillazione = $prezzo_max['prezzo'] - $prezzo_min['prezzo'];
|
||||
$oscillazione_percentuale = $prezzo_medio ? $oscillazione * 100 / ($prezzo_medio?:1) : 0;
|
||||
$oscillazione_percentuale = $prezzo_medio ? $oscillazione * 100 / ($prezzo_medio ?: 1) : 0;
|
||||
|
||||
$data_min = $prezzo_min['data'] ? strtotime((string) $prezzo_min['data']) : '';
|
||||
$data_max = $prezzo_max['data'] ? strtotime((string) $prezzo_max['data']) : '';
|
||||
|
|
|
@ -338,7 +338,7 @@ abstract class Accounting extends Component
|
|||
*/
|
||||
public function getMarginePercentualeAttribute()
|
||||
{
|
||||
return (1 - (($this->spesa + $this->provvigione) / ($this->totale_imponibile?:1))) * 100;
|
||||
return (1 - (($this->spesa + $this->provvigione) / ($this->totale_imponibile ?: 1))) * 100;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -221,7 +221,7 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
|
|||
*/
|
||||
public function getMarginePercentualeAttribute()
|
||||
{
|
||||
return ($this->totale_imponibile && $this->spesa) ? (1 - ($this->spesa / ($this->totale_imponibile?:1))) * 100 : 100;
|
||||
return ($this->totale_imponibile && $this->spesa) ? (1 - ($this->spesa / ($this->totale_imponibile ?: 1))) * 100 : 100;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -22,7 +22,6 @@ namespace HTMLBuilder\Manager;
|
|||
use Models\Upload;
|
||||
use Util\FileSystem;
|
||||
|
||||
|
||||
/**
|
||||
* Gestione allegati.
|
||||
*
|
||||
|
|
|
@ -179,7 +179,7 @@ class User extends Model
|
|||
$img->save(slashes($file));
|
||||
|
||||
// Aggiunta nuova foto
|
||||
$upload = Upload::build(file_get_contents($file), $data, basename($value['name']));
|
||||
$upload = Upload::build(file_get_contents($file), $data, basename((string) $value['name']));
|
||||
|
||||
// Rimozione foto precedenti
|
||||
delete($file);
|
||||
|
|
|
@ -99,7 +99,6 @@ echo '
|
|||
</tr>
|
||||
</table>';
|
||||
|
||||
|
||||
// Dati attività
|
||||
echo '
|
||||
<table class="table border-bottom">
|
||||
|
@ -152,8 +151,6 @@ if (!empty($preventivo) or !empty($contratto)) {
|
|||
</tr>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
// riga 3
|
||||
// Elenco impianti su cui è stato fatto l'intervento
|
||||
$rs2 = $dbo->fetchArray('SELECT *, (SELECT nome FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS nome, (SELECT matricola FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS matricola FROM my_impianti_interventi WHERE idintervento='.prepare($id_record));
|
||||
|
@ -406,7 +403,6 @@ if (count($sessioni) > 0) {
|
|||
'.$orario.'
|
||||
</td>';
|
||||
|
||||
|
||||
// Testo lavori eseguiti 1/2
|
||||
if ($i == 0) {
|
||||
echo '
|
||||
|
@ -418,10 +414,9 @@ if (count($sessioni) > 0) {
|
|||
// Firma 1/3
|
||||
if ($i == 1) {
|
||||
echo '
|
||||
<td rowspan="'.(count($sessioni)+1).'" class="text-center" style="font-size:6pt; vertical-align:bottom; border-left:1px solid #aaa;">
|
||||
<td rowspan="'.(count($sessioni) + 1).'" class="text-center" style="font-size:6pt; vertical-align:bottom; border-left:1px solid #aaa;">
|
||||
'.$firma.'<br>';
|
||||
|
||||
|
||||
if (empty($documento['firma_file'])) {
|
||||
echo ' <i>('.tr('Timbro e firma leggibile').')</i>';
|
||||
} else {
|
||||
|
@ -435,7 +430,7 @@ if (count($sessioni) > 0) {
|
|||
echo '
|
||||
</tr>';
|
||||
|
||||
$i++;
|
||||
++$i;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -463,7 +458,6 @@ if ($options['pricing']) {
|
|||
<td colspan="3" class="text-center">-</td>';
|
||||
}
|
||||
|
||||
|
||||
// Testo lavori eseguiti 2/2
|
||||
if (count($sessioni) == 0) {
|
||||
echo '
|
||||
|
@ -477,7 +471,6 @@ if (count($sessioni) == 1) {
|
|||
echo '<td rowspan="2" class="text-center" style="font-size:6pt; vertical-align:bottom; border-left:1px solid #aaa;">
|
||||
'.$firma.'<br>';
|
||||
|
||||
|
||||
if (empty($documento['firma_file'])) {
|
||||
echo ' <br><br><br><i>('.tr('Timbro e firma leggibile').')</i>';
|
||||
} else {
|
||||
|
@ -491,7 +484,6 @@ if (count($sessioni) == 1) {
|
|||
echo '
|
||||
</tr>';
|
||||
|
||||
|
||||
// Totale km
|
||||
echo '
|
||||
<tr>
|
||||
|
@ -526,7 +518,6 @@ if (count($sessioni) == 0) {
|
|||
echo '<td class="text-center" style="font-size:6pt; vertical-align:bottom; border-left:1px solid #aaa;">
|
||||
'.$firma.'<br>';
|
||||
|
||||
|
||||
if (empty($documento['firma_file'])) {
|
||||
echo ' <br><br><br><i>('.tr('Timbro e firma leggibile').')</i>';
|
||||
} else {
|
||||
|
@ -537,7 +528,6 @@ if (count($sessioni) == 0) {
|
|||
</td>';
|
||||
}
|
||||
|
||||
|
||||
// Calcoli
|
||||
$imponibile = abs($documento->imponibile);
|
||||
$sconto = $documento->sconto;
|
||||
|
|
|
@ -329,7 +329,7 @@ echo ' <td class=text-right>'.moneyFormat(abs($totale_iva_periodo_precedente), 2
|
|||
</tr>
|
||||
<tr>
|
||||
<td>VARIAZIONE DI IMPOSTA RELATIVE A PERIODI PRECEDENTI</td>
|
||||
<td class=text-right>'.($totale_iva_periodo_precedente > 0 ? moneyFormat(abs($totale_iva_periodo_precedente), 2):'').'</td>
|
||||
<td class=text-right>'.($totale_iva_periodo_precedente > 0 ? moneyFormat(abs($totale_iva_periodo_precedente), 2) : '').'</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
@ -346,7 +346,7 @@ echo ' <td class=text-right>'.moneyFormat(abs($totale_iva_periodo_precedente), 2
|
|||
<td class=text-right></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>'.($totale_iva >= 0 ? 'IVA A DEBITO' : 'IVA A CREDITO') .'</td>
|
||||
<td>'.($totale_iva >= 0 ? 'IVA A DEBITO' : 'IVA A CREDITO').'</td>
|
||||
<td class=text-right>'.moneyFormat(abs($totale_iva), 2).'</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -359,13 +359,13 @@ echo ' <td class=text-right>'.moneyFormat(abs($totale_iva_periodo_precedente), 2
|
|||
</tr>
|
||||
<tr>
|
||||
<td>IVA A DEBITO CON MAGGIORAZIONE</td>
|
||||
<td class=text-right>'.($periodo == 'Trimestrale' ?moneyFormat($totale_iva_maggiorata, 2): '').'</td>
|
||||
<td class=text-right>'.($periodo == 'Trimestrale' ? moneyFormat($totale_iva_maggiorata, 2) : '').'</td>
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IMPORTO DA VERSARE</td>
|
||||
<td class=text-right>'.($periodo == 'Mensile' ?moneyFormat($totale_iva, 2) : moneyFormat($totale_iva_maggiorata, 2)).'</td>
|
||||
<td class=text-right>'.($periodo == 'Mensile' ? moneyFormat($totale_iva, 2) : moneyFormat($totale_iva_maggiorata, 2)).'</td>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,4 +8,4 @@ $has_name = database()->columnExists('zz_groups', 'name');
|
|||
|
||||
if ($has_name && $has_nome) {
|
||||
$database->query('ALTER TABLE `zz_groups` DROP `name`');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,4 +11,4 @@ foreach ($files as $key => $value) {
|
|||
$files[$key] = realpath(base_dir().'/'.$value);
|
||||
}
|
||||
|
||||
delete($files);
|
||||
delete($files);
|
||||
|
|
Loading…
Reference in New Issue