1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-17 12:00:46 +01:00

Compare commits

...

6 Commits

Author SHA1 Message Date
valentina
1cf3dfea34 Fix Dati cliente/fornitore in documenti 2024-08-27 14:12:30 +02:00
valentina
499e60f525 Fix riferimenti documenti ad Attività 2024-08-27 12:36:50 +02:00
valentina
87cbcab687 Fix aggiunta filtri modulo in Viste 2024-08-27 11:08:11 +02:00
valentina
e26ded65b0 Aggiornamento CHANGELOG 2024-08-27 09:32:44 +02:00
valentina
27786fe6d4 Fix per php8.3 2024-08-27 09:23:08 +02:00
valentina
c2fe1ee872 Formattazione stile codice 2024-08-27 09:20:20 +02:00
54 changed files with 231 additions and 235 deletions

View File

@ -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. 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.3 (2024-08-07)](#253-2024-08-07)
- [2.5.2 (2024-05-31)](#252-2024-05-31) - [2.5.2 (2024-05-31)](#252-2024-05-31)
- [2.5.1 (2024-04-24)](#251-2024-04-24) - [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 ## 2.5.4
### Aggiunto (Added) ### 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) ### 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 ### 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. - 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) ## 2.5.3 (2024-08-07)
### Aggiunto (Added) ### Aggiunto (Added)

View File

@ -4,12 +4,19 @@ Le problematiche saranno raggruppate per release e le relative correzioni (se ap
#### 2.5.3 - 07/08/2024 #### 2.5.3 - 07/08/2024
##### Problemi noti ##### 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 ##### Soluzione
https://github.com/devcode-it/openstamanager/commit/b82efb339f8df5da4f2279e25d72904778d2a8d3 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 #### 2.4.54 - 03/02/2024
##### Problemi noti ##### Problemi noti

View File

@ -534,7 +534,7 @@ if (Auth::check()) {
} }
if (!empty($opt)) { 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); $count = $dbo->fetchNum($q);
} }

View File

@ -60,6 +60,7 @@ switch (post('op')) {
if (!function_exists('curl_init')) { if (!function_exists('curl_init')) {
// cURL non è attivo // cURL non è attivo
flash()->error(tr('cURL non attivo, impossibile continuare l\'operazione.')); flash()->error(tr('cURL non attivo, impossibile continuare l\'operazione.'));
return false; return false;
} else { } else {
$ch = curl_init(); $ch = curl_init();

View File

@ -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).' 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 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 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).' 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).'

View File

@ -130,7 +130,7 @@ if (!empty($movimenti)) {
echo ' echo '
<tr> <tr>
<td class="text-center"> <td class="text-center">
'.count($movimenti)-($i). ' '.count($movimenti) - $i.'
</td> </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'].' '.numberFormat($movimento->qta, 'qta').' '.$record['um'].'

View File

@ -42,12 +42,12 @@ echo '
</div> </div>
<!-- DATI INTESTAZIONE --> <!-- 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"> <div class="card-header with-border">
<h3 class="card-title">'.tr('Dati cliente').'</h3> <h3 class="card-title">'.tr('Dati cliente').'</h3>
<div class="card-tools pull-right"> <div class="card-tools pull-right">
<button type="button" class="btn btn-tool" data-card-widget="collapse"> <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> </button>
</div> </div>
</div> </div>

View File

@ -30,7 +30,6 @@ use Modules\DDT\DDT;
use Modules\DDT\Stato; use Modules\DDT\Stato;
use Modules\DDT\Tipo; use Modules\DDT\Tipo;
use Modules\Iva\Aliquota; use Modules\Iva\Aliquota;
use Modules\Ordini\Stato as StatoOrdine;
$module = Module::find($id_module); $module = Module::find($id_module);

View File

@ -124,12 +124,12 @@ echo '
</div> </div>
<!-- DATI INTESTAZIONE --> <!-- 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"> <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"> <div class="card-tools pull-right">
<button type="button" class="btn btn-tool" data-card-widget="collapse"> <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> </button>
</div> </div>
</div> </div>

View File

@ -62,13 +62,13 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
if (!empty($data['is_descrizione'])) { if (!empty($data['is_descrizione'])) {
$riga = Descrizione::build($ddt); $riga = Descrizione::build($ddt);
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); $riga->descrizione = ($data['descrizione'] ?: '-');
$riga->qta = 0; $riga->qta = 0;
} elseif (!empty($data['id_articolo']) && !empty($originale)) { } elseif (!empty($data['id_articolo']) && !empty($originale)) {
$riga = Articolo::build($ddt, $originale); $riga = Articolo::build($ddt, $originale);
if ($originale->prezzo_vendita > 0) { if ($originale->prezzo_vendita > 0) {
$idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita')); $idiva = ($originale->idiva_vendita ?: setting('Iva predefinita'));
$riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva); $riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
} else { } else {
$riga->prezzo_unitario = 0; $riga->prezzo_unitario = 0;
@ -79,7 +79,7 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
} else { } else {
$riga = Riga::build($ddt); $riga = Riga::build($ddt);
$riga->qta = $data['qta']; $riga->qta = $data['qta'];
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); $riga->descrizione = ($data['descrizione'] ?: '-');
$riga->costo_unitario = 0; $riga->costo_unitario = 0;
$riga->setPrezzoUnitario(0, setting('Iva predefinita')); $riga->setPrezzoUnitario(0, setting('Iva predefinita'));
} }
@ -103,18 +103,18 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
if (!empty($data['is_descrizione'])) { if (!empty($data['is_descrizione'])) {
$riga->qta = 0; $riga->qta = 0;
$riga->is_descrizione = 1; $riga->is_descrizione = 1;
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); $riga->descrizione = ($data['descrizione'] ?: '-');
} elseif (!empty($data['id_articolo']) && !empty($originale)) { } elseif (!empty($data['id_articolo']) && !empty($originale)) {
$descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione); $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->costo_unitario = $originale->prezzo_acquisto;
$riga->idarticolo = $originale->id; $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); $riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
} else { } else {
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); $riga->descrizione = ($data['descrizione'] ?: '-');
$riga->costo_unitario = 0; $riga->costo_unitario = 0;
$riga->setPrezzoUnitario(0, setting('Iva predefinita')); $riga->setPrezzoUnitario(0, setting('Iva predefinita'));
} }

View File

@ -295,12 +295,12 @@ $query .= ' ORDER BY `title`';
</div> </div>
<!-- DATI INTESTAZIONE --> <!-- 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"> <div class="card-header with-border">
<h3 class="card-title">'.($dir == 'entrata' ? tr('Dati cliente') : tr('Dati fornitore')).'</h3> <h3 class="card-title">'.($dir == 'entrata' ? tr('Dati cliente') : tr('Dati fornitore')).'</h3>
<div class="card-tools pull-right"> <div class="card-tools pull-right">
<button type="button" class="btn btn-tool" data-card-widget="collapse"> <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> </button>
</div> </div>
</div> </div>

View File

@ -143,7 +143,7 @@ if (!empty($record['immagine'])) {
{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} {( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )}
<?php <?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 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)); 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 = ''; $class = '';

View File

@ -785,18 +785,14 @@ switch (post('op')) {
foreach ($tecnici as $tecnico) { foreach ($tecnici as $tecnico) {
$mail_tecnico = $dbo->selectOne('an_anagrafiche', '*', ['idanagrafica' => $tecnico]); $mail_tecnico = $dbo->selectOne('an_anagrafiche', '*', ['idanagrafica' => $tecnico]);
if (!empty($mail_tecnico['email'])) { if (!empty($mail_tecnico['email'])) {
if (!empty($template)) { if (!empty($template)) {
$mail = Mail::build(auth()->getUser(), $template, $id_record); $mail = Mail::build(auth()->getUser(), $template, $id_record);
$mail->addReceiver($mail_tecnico['email']); $mail->addReceiver($mail_tecnico['email']);
$mail->save(); $mail->save();
flash()->info(tr('Notifica al tecnico aggiunta correttamente.')); flash()->info(tr('Notifica al tecnico aggiunta correttamente.'));
} }
} }
} }
} }
} }
} else { } else {

View File

@ -21,54 +21,52 @@ include_once __DIR__.'/../../core.php';
if (get('op') == 'getmappa') { if (get('op') == 'getmappa') {
$nome = 'Ricarica mappa'; $nome = 'Ricarica mappa';
} } else {
else{
$nome = 'Visualizza mappa'; $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 "<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>"; echo '<br>';
if (get('op') == 'getmappa') { if (get('op') == 'getmappa') {
$current_module = Modules::get($id_module); $current_module = Modules::get($id_module);
$total = Util\Query::readQuery($current_module); $total = Util\Query::readQuery($current_module);
$module_query = Modules::replaceAdditionals($id_module, $total['query']); $module_query = Modules::replaceAdditionals($id_module, $total['query']);
$search_filters = array(); $search_filters = [];
if (is_array($_SESSION['module_'.$id_module])) { if (is_array($_SESSION['module_'.$id_module])) {
foreach ($_SESSION['module_'.$id_module] as $field_name => $field_value) { foreach ($_SESSION['module_'.$id_module] as $field_name => $field_value) {
if ($field_value != '' && $field_name != 'selected' && $field_name != 'id_segment') { if ($field_value != '' && $field_name != 'selected' && $field_name != 'id_segment') {
$field_name = str_replace( "search_", "", $field_name ); $field_name = str_replace('search_', '', $field_name);
$field_name = str_replace( "__", " ", $field_name ); $field_name = str_replace('__', ' ', $field_name);
$field_name = str_replace( "-", " ", $field_name ); $field_name = str_replace('-', ' ', $field_name);
array_push( $search_filters, "`".$field_name."` LIKE \"%".$field_value."%\"" ); array_push($search_filters, '`'.$field_name.'` LIKE "%'.$field_value.'%"');
} }
} }
} }
if (sizeof($search_filters) > 0) { if (sizeof($search_filters) > 0) {
$module_query = str_replace( "2=2", "2=2 AND (".implode( " AND ", $search_filters ).") ", $module_query); $module_query = str_replace('2=2', '2=2 AND ('.implode(' AND ', $search_filters).') ', $module_query);
} }
$rs1 = $dbo->fetchArray($module_query); $rs1 = $dbo->fetchArray($module_query);
// marker svg // marker svg
if (!file_exists($docroot.'/assets/dist/img/leaflet/place-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'); 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'); $svgContent = file_get_contents($docroot.'/assets/dist/img/leaflet/place-marker.svg');
if ($svgContent === false) { if ($svgContent === false) {
throw new Exception("Error reading file: " . $docroot.'/assets/dist/img/leaflet/place-marker.svg'); throw new Exception('Error reading file: '.$docroot.'/assets/dist/img/leaflet/place-marker.svg');
} }
$stringa_descrizioni = ""; $stringa_descrizioni = '';
$stringa_content = ""; $stringa_content = '';
$color = ""; $color = '';
$lat = ""; $lat = '';
$lng = ""; $lng = '';
for( $i=0; $i<sizeof($rs1); $i++ ){//elenco delle righe for ($i = 0; $i < sizeof($rs1); ++$i) {// elenco delle righe
$val = html_entity_decode( $rs1[$i]['idanagrafica'] ); $val = html_entity_decode((string) $rs1[$i]['idanagrafica']);
$id_sede = $dbo->selectOne('in_interventi', '*', ['id' => $rs1[$i]['id']])['idsede_destinazione']; $id_sede = $dbo->selectOne('in_interventi', '*', ['id' => $rs1[$i]['id']])['idsede_destinazione'];
if ($id_sede) { if ($id_sede) {
$query = "SELECT *, nomesede AS ragione_sociale FROM an_sedi WHERE id='".$id_sede."'"; $query = "SELECT *, nomesede AS ragione_sociale FROM an_sedi WHERE id='".$id_sede."'";
@ -82,21 +80,19 @@ include_once __DIR__.'/../../core.php';
$color .= "'".$rs1[$i]['_bg_']."',"; $color .= "'".$rs1[$i]['_bg_']."',";
$lat .= "'".$rs[0]['lat']."',"; $lat .= "'".$rs[0]['lat']."',";
$lng .= "'".$rs[0]['lng']."',"; $lng .= "'".$rs[0]['lng']."',";
$stringa_descrizioni .= "'".str_replace("'", " ", $rs[0]['ragione_sociale'])."',"; $stringa_descrizioni .= "'".str_replace("'", ' ', $rs[0]['ragione_sociale'])."',";
$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> &nbsp;".$rs[0]['telefono'] : "").($rs[0]['email']!=''? "<br><i class=\"fa fa-envelope\"></i> &nbsp;".$rs[0]['email'] : "")."<br>"); $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> &nbsp;'.$rs[0]['telefono'] : '').($rs[0]['email'] != '' ? '<br><i class="fa fa-envelope"></i> &nbsp;'.$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')).')'); $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++){ 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 .= 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 .= "',"; $stringa_content .= "',";
} }
} }
echo "<div id='mappa'></div>"; echo "<div id='mappa'></div>";

View File

@ -24,8 +24,8 @@ use API\Interfaces\RetrieveInterface;
use API\Resource; use API\Resource;
use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Interventi\Components\Articolo; use Modules\Interventi\Components\Articolo;
use Modules\Interventi\Components\Riga;
use Modules\Interventi\Components\Descrizione; use Modules\Interventi\Components\Descrizione;
use Modules\Interventi\Components\Riga;
use Modules\Interventi\Intervento; use Modules\Interventi\Intervento;
class Righe extends Resource implements RetrieveInterface, CreateInterface class Righe extends Resource implements RetrieveInterface, CreateInterface
@ -55,7 +55,7 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
public function create($request) public function create($request)
{ {
$data = $request['data']; $data = $request['data'];
$data['qta'] = ($data['qta'] ? $data['qta'] : 1); $data['qta'] = ($data['qta'] ?: 1);
$intervento = Intervento::find($data['id_intervento']); $intervento = Intervento::find($data['id_intervento']);
$originale = ArticoloOriginale::find($data['id_articolo']); $originale = ArticoloOriginale::find($data['id_articolo']);
@ -67,7 +67,7 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
$riga->um = $data['um']; $riga->um = $data['um'];
$riga->costo_unitario = $originale->prezzo_acquisto; $riga->costo_unitario = $originale->prezzo_acquisto;
if ($originale->prezzo_vendita > 0) { if ($originale->prezzo_vendita > 0) {
$idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita')); $idiva = ($originale->idiva_vendita ?: setting('Iva predefinita'));
$riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva); $riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
} else { } else {
$riga->prezzo_unitario = 0; $riga->prezzo_unitario = 0;
@ -76,13 +76,13 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
$riga = Descrizione::build($intervento); $riga = Descrizione::build($intervento);
$riga->qta = 0; $riga->qta = 0;
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); $riga->descrizione = ($data['descrizione'] ?: '-');
} else { } else {
$riga = Riga::build($intervento); $riga = Riga::build($intervento);
$riga->qta = $data['qta']; $riga->qta = $data['qta'];
$riga->um = $data['um']; $riga->um = $data['um'];
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); $riga->descrizione = ($data['descrizione'] ?: '-');
$riga->costo_unitario = 0; $riga->costo_unitario = 0;
$riga->setPrezzoUnitario(0, setting('Iva predefinita')); $riga->setPrezzoUnitario(0, setting('Iva predefinita'));
} }
@ -100,7 +100,7 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
public function update($request) public function update($request)
{ {
$data = $request['data']; $data = $request['data'];
$data['qta'] = ($data['qta'] ? $data['qta'] : 1); $data['qta'] = ($data['qta'] ?: 1);
$originale = ArticoloOriginale::find($data['id_articolo']); $originale = ArticoloOriginale::find($data['id_articolo']);
$riga = Articolo::find($data['id_riga']) ?: Riga::find($data['id_riga']); $riga = Articolo::find($data['id_riga']) ?: Riga::find($data['id_riga']);
@ -108,15 +108,15 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
$riga->qta = $data['qta']; $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 = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione);
$descrizione = ($descrizione ? $descrizione : '-'); $descrizione = ($descrizione ?: '-');
$riga->descrizione = $descrizione; $riga->descrizione = $descrizione;
$riga->idarticolo = $originale->id; $riga->idarticolo = $originale->id;
$riga->costo_unitario = $originale->prezzo_acquisto; $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); $riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva);
} else { } else {
$riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); $riga->descrizione = ($data['descrizione'] ?: '-');
$riga->costo_unitario = 0; $riga->costo_unitario = 0;
$riga->setPrezzoUnitario(0, setting('Iva predefinita')); $riga->setPrezzoUnitario(0, setting('Iva predefinita'));
} }
@ -124,5 +124,4 @@ class Righe extends Resource implements RetrieveInterface, CreateInterface
$riga->um = $data['um'] ?: null; $riga->um = $data['um'] ?: null;
$riga->save(); $riga->save();
} }
} }

View File

@ -79,12 +79,12 @@ echo '
</div> </div>
<!-- DATI INTESTAZIONE --> <!-- 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"> <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"> <div class="card-tools pull-right">
<button type="button" class="btn btn-tool" data-card-widget="collapse"> <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> </button>
</div> </div>
</div> </div>

View File

@ -47,12 +47,12 @@ if (count($preventivo->revisioni) > 1) {
</div> </div>
<?php echo ' <?php echo '
<!-- DATI INTESTAZIONE --> <!-- 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"> <div class="card-header with-border">
<h3 class="card-title">'.tr('Dati cliente').'</h3> <h3 class="card-title">'.tr('Dati cliente').'</h3>
<div class="card-tools pull-right"> <div class="card-tools pull-right">
<button type="button" class="btn btn-tool" data-card-widget="collapse"> <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> </button>
</div> </div>
</div> </div>

View File

@ -41,7 +41,7 @@ if (sizeof($rs_doc) > 0) {
<div class="col-md-2"> <div class="col-md-2">
<br> <br>
<div class="btn-group"> <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"> <a type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span> <span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span> <span class="sr-only">Toggle Dropdown</span>

View File

@ -32,7 +32,7 @@ $scadenza_in_chiusura = 0;
foreach ($scadenze as $scadenza) { foreach ($scadenze as $scadenza) {
$scadenza = (array) $scadenza; $scadenza = (array) $scadenza;
foreach ($mesi_chiusura as $mese) { 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; $scadenza_in_chiusura = 1;
} }
} }

View File

@ -384,7 +384,6 @@ switch (filter('op')) {
$spazio_totale = floatval($informazioni['maxSize']) * (1024 ** 2); $spazio_totale = floatval($informazioni['maxSize']) * (1024 ** 2);
$avviso_spazio = !empty($spazio_totale) && floatval($informazioni['size']) > 0.9 * $spazio_totale; $avviso_spazio = !empty($spazio_totale) && floatval($informazioni['size']) > 0.9 * $spazio_totale;
$history = (array) $informazioni['history']; $history = (array) $informazioni['history'];
// Restrizione storico agli ultimi 3 anni // Restrizione storico agli ultimi 3 anni

View File

@ -127,7 +127,7 @@ include_once __DIR__.'/../../core.php';
// Permetto eliminazione tipo intervento solo se questo non è utilizzado da nessun'altra parte nel gestionale // 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 `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).' // 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 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).' 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 UNION

View File

@ -106,6 +106,7 @@ switch (filter('op')) {
if (check_query($query)) { if (check_query($query)) {
$array = [ $array = [
'name' => post('name')[$c],
'idgruppo' => post('gruppo')[$c], 'idgruppo' => post('gruppo')[$c],
'idmodule' => $id_record, 'idmodule' => $id_record,
'clause' => $query, 'clause' => $query,
@ -114,22 +115,15 @@ switch (filter('op')) {
if (!empty(post('id')[$c]) && !empty($query)) { if (!empty(post('id')[$c]) && !empty($query)) {
$id = post('id')[$c]; $id = post('id')[$c];
$clause = Clause::find($id);
$clause->idgruppo = post('gruppo')[$c]; $dbo->update('zz_group_module', $array, ['id' => $id]);
$clause->idmodulo = $id_record; $dbo->update('zz_group_module_lang', ['title' => $array['name']], ['id_record' => $id, 'id_lang' => Models\Locale::getDefault()->id]);
$clause->clause = $query;
$clause->position = !empty(post('position')[$c]) ? 'HVN' : 'WHR';
$clause->setTranslation('title', post('name')[$c]);
$clause->save();
} elseif (!empty($query)) { } elseif (!empty($query)) {
$clause = Clause::build(); $dbo->insert('zz_group_module', $array);
$id_record = $dbo->lastInsertedID(); $dbo->insert('zz_group_module_lang', ['id_record' => $dbo->lastInsertedID(), 'id_lang' => Models\Locale::getDefault()->id, 'title' => $array['name']]);
$clause->idgruppo = post('gruppo')[$c];
$clause->idmodulo = $id_record; $id = $dbo->lastInsertedID();
$clause->clause = $query;
$clause->position = !empty(post('position')[$c]) ? 'HVN' : 'WHR';
$clause->setTranslation('title', post('name')[$c]);
$clause->save();
} }
} else { } else {
$rs = false; $rs = false;

View File

@ -42,7 +42,7 @@ if (!empty($additionals)) {
]).' ]).'
</h3> </h3>
<div class="card-tools pull-right"> <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> <i class="fa fa-plus"></i>
</button> </button>
</div>'; </div>';

View File

@ -19,7 +19,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
$directory = Plugins\ImportFE\FatturaElettronica::getImportDirectory(); $directory = FatturaElettronica::getImportDirectory();
$filename = get('filename'); $filename = get('filename');
$content = file_get_contents($directory.'/'.$filename); $content = file_get_contents($directory.'/'.$filename);

View File

@ -22,7 +22,6 @@ namespace HTMLBuilder\Manager;
use Models\Upload; use Models\Upload;
use Util\FileSystem; use Util\FileSystem;
/** /**
* Gestione allegati. * Gestione allegati.
* *

View File

@ -179,7 +179,7 @@ class User extends Model
$img->save(slashes($file)); $img->save(slashes($file));
// Aggiunta nuova foto // 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 // Rimozione foto precedenti
delete($file); delete($file);

View File

@ -99,7 +99,6 @@ echo '
</tr> </tr>
</table>'; </table>';
// Dati attività // Dati attività
echo ' echo '
<table class="table border-bottom"> <table class="table border-bottom">
@ -152,8 +151,6 @@ if (!empty($preventivo) or !empty($contratto)) {
</tr>'; </tr>';
} }
// riga 3 // riga 3
// Elenco impianti su cui è stato fatto l'intervento // 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)); $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.' '.$orario.'
</td>'; </td>';
// Testo lavori eseguiti 1/2 // Testo lavori eseguiti 1/2
if ($i == 0) { if ($i == 0) {
echo ' echo '
@ -421,7 +417,6 @@ if (count($sessioni) > 0) {
<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>'; '.$firma.'<br>';
if (empty($documento['firma_file'])) { if (empty($documento['firma_file'])) {
echo ' <i>('.tr('Timbro e firma leggibile').')</i>'; echo ' <i>('.tr('Timbro e firma leggibile').')</i>';
} else { } else {
@ -435,7 +430,7 @@ if (count($sessioni) > 0) {
echo ' echo '
</tr>'; </tr>';
$i++; ++$i;
} }
} }
@ -463,7 +458,6 @@ if ($options['pricing']) {
<td colspan="3" class="text-center">-</td>'; <td colspan="3" class="text-center">-</td>';
} }
// Testo lavori eseguiti 2/2 // Testo lavori eseguiti 2/2
if (count($sessioni) == 0) { if (count($sessioni) == 0) {
echo ' 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;"> echo '<td rowspan="2" class="text-center" style="font-size:6pt; vertical-align:bottom; border-left:1px solid #aaa;">
'.$firma.'<br>'; '.$firma.'<br>';
if (empty($documento['firma_file'])) { if (empty($documento['firma_file'])) {
echo ' <br><br><br><i>('.tr('Timbro e firma leggibile').')</i>'; echo ' <br><br><br><i>('.tr('Timbro e firma leggibile').')</i>';
} else { } else {
@ -491,7 +484,6 @@ if (count($sessioni) == 1) {
echo ' echo '
</tr>'; </tr>';
// Totale km // Totale km
echo ' echo '
<tr> <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;"> echo '<td class="text-center" style="font-size:6pt; vertical-align:bottom; border-left:1px solid #aaa;">
'.$firma.'<br>'; '.$firma.'<br>';
if (empty($documento['firma_file'])) { if (empty($documento['firma_file'])) {
echo ' <br><br><br><i>('.tr('Timbro e firma leggibile').')</i>'; echo ' <br><br><br><i>('.tr('Timbro e firma leggibile').')</i>';
} else { } else {
@ -537,7 +528,6 @@ if (count($sessioni) == 0) {
</td>'; </td>';
} }
// Calcoli // Calcoli
$imponibile = abs($documento->imponibile); $imponibile = abs($documento->imponibile);
$sconto = $documento->sconto; $sconto = $documento->sconto;