Compare commits

...

6 Commits

Author SHA1 Message Date
Pek5892 c9f007db16 Fix per php8.1 2024-04-12 10:54:05 +02:00
Pek5892 9858c371c6 Fix minore 2024-04-12 10:22:56 +02:00
Pek5892 ec940b82f2 Fix stampa con php8.1 2024-04-12 10:17:30 +02:00
Pek5892 c8c5f59abf Formattazione codice 2024-04-12 09:53:02 +02:00
Pek5892 2ebb059b3e Fix stampa pdf per php8.1 2024-04-12 09:35:30 +02:00
Pek5892 f98ae71340 Fix per emissione fatture con php8.1 2024-04-12 09:12:45 +02:00
30 changed files with 77 additions and 71 deletions

View File

@ -52,7 +52,7 @@
"owasp/csrf-protector-php": "^1.0",
"phpmailer/phpmailer": "^6.0",
"respect/validation": "^2.0",
"servo/fluidxml": "^1.21",
"servo/fluidxml": "^2.0",
"slim/flash": "^0.4.0",
"spipu/html2pdf": "^5.0.0",
"symfony/filesystem": "^5.0",

View File

@ -236,7 +236,7 @@ function translateTemplate()
];
$template = replace($template, $replaces);
$template = HTMLBuilder::replace($template);
$template = $template ? HTMLBuilder::replace($template) : '';
$template = replace($template, $replaces);
// Informazioni estese sulle azioni dell'utente

View File

@ -112,7 +112,7 @@ switch (post('op')) {
$dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record));
$matricola = post('matricolaimpianto');
if ($matricola) {
foreach (array($matricola) as $matricolaimpianto) {
foreach ([$matricola] as $matricolaimpianto) {
$dbo->query('INSERT INTO my_impianti_contratti(idcontratto,idimpianto) VALUES('.prepare($id_record).', '.prepare($matricolaimpianto).')');
}
}
@ -320,7 +320,7 @@ switch (post('op')) {
// Scollegamento intervento da contratto
case 'unlink':
if (get('idcontratto') !== null && get('idintervento') !== null) {
if (!empty(get('idcontratto')) && !empty(get('idintervento'))) {
$idcontratto = get('idcontratto');
$idintervento = get('idintervento');

View File

@ -405,11 +405,11 @@ echo '
<script type="text/javascript">
function gestioneSconto(button) {
gestioneRiga(button, "is_sconto");
gestioneRiga(button, "is_sconto=1");
}
function gestioneDescrizione(button) {
gestioneRiga(button, "is_descrizione");
gestioneRiga(button, "is_descrizione=1");
}
async function gestioneRiga(button, options) {
@ -420,7 +420,7 @@ async function gestioneRiga(button, options) {
let title = $(button).attr("data-title");
// Apertura modal
options = options ? options : "is_riga";
options = options ? options : "is_riga=1";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}

View File

@ -64,11 +64,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
// Importazione della gestione dedicata
$file = 'riga';
if (get('is_descrizione') !== null) {
if (!empty(get('is_descrizione'))) {
$file = 'descrizione';
$options['op'] = 'manage_descrizione';
} elseif (get('is_sconto') !== null) {
} elseif (!empty(get('is_sconto'))) {
$file = 'sconto';
$options['op'] = 'manage_sconto';

View File

@ -460,8 +460,8 @@ switch (filter('op')) {
FROM
`in_interventi`
INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento` = `in_tipiintervento`.`id`
LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).")
INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`";
LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).')
INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`';
// Visualizzo solo promemoria del tecnico loggato
if (!empty($id_tecnico) && !empty($solo_promemoria_assegnati)) {

View File

@ -648,11 +648,11 @@ async function saveForm() {
}
function gestioneSconto(button) {
gestioneRiga(button, "is_sconto");
gestioneRiga(button, "is_sconto=1");
}
function gestioneDescrizione(button) {
gestioneRiga(button, "is_descrizione");
gestioneRiga(button, "is_descrizione=1");
}
async function gestioneRiga(button, options) {
@ -663,7 +663,7 @@ async function gestioneRiga(button, options) {
let title = $(button).attr("data-title");
// Apertura modal
options = options ? options : "is_riga";
options = options ? options : "is_riga=1";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}

View File

@ -67,11 +67,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
// Importazione della gestione dedicata
$file = 'riga';
if (get('is_descrizione') !== null) {
if (!empty(get('is_descrizione'))) {
$file = 'descrizione';
$options['op'] = 'manage_descrizione';
} elseif (get('is_sconto') !== null) {
} elseif (!empty(get('is_sconto'))) {
$file = 'sconto';
$options['op'] = 'manage_sconto';

View File

@ -1085,11 +1085,11 @@ async function saveForm() {
}
function gestioneSconto(button) {
gestioneRiga(button, "is_sconto");
gestioneRiga(button, "is_sconto=1");
}
function gestioneDescrizione(button) {
gestioneRiga(button, "is_descrizione");
gestioneRiga(button, "is_descrizione=1");
}
async function gestioneRiga(button, options) {
@ -1100,7 +1100,7 @@ async function gestioneRiga(button, options) {
let title = $(button).attr("data-title");
// Apertura modal
options = options ? options : "is_riga";
options = options ? options : "is_riga=1";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}

View File

@ -71,7 +71,7 @@ if (isset($id_record)) {
$note_accredito = $dbo->fetchArray("SELECT `co_documenti`.`id`, IF(`numero_esterno` != '', `numero_esterno`, `numero`) AS numero, data FROM `co_documenti` JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` WHERE `reversed` = 1 AND `ref_documento`=".prepare($id_record));
// Blocco gestito dallo stato della Fattura Elettronica
$stato_fe = StatoFE::find($fattura->codice_stato_fe)->id_record;
$stato_fe = StatoFE::find($fattura->codice_stato_fe);
$abilita_genera = empty($fattura->codice_stato_fe) || intval($stato_fe['is_generabile']);
// Controllo autofattura e gestione avvisi
@ -81,7 +81,9 @@ if (isset($id_record)) {
$fattura_acquisto_originale = null;
if (!empty($fattura)) {
$reverse_charge = $fattura->getRighe()->first(fn ($item, $key) => $item->aliquota != null && substr($item->aliquota->codice_natura_fe, 0, 2) == 'N6')->id;
$reverse_charge = $fattura->getRighe()->first(function ($item, $key) {
return $item->aliquota != null && $item->aliquota->codice_natura_fe !== null && substr($item->aliquota->codice_natura_fe, 0, 2) == 'N6';
})->id;
$autofattura_vendita = Fattura::find($fattura->id_autofattura);
$abilita_autofattura = (($fattura->anagrafica->nazione->iso2 != 'IT' && !empty($fattura->anagrafica->nazione->iso2)) || $reverse_charge) && $dir == 'uscita' && $fattura->id_autofattura == null;

View File

@ -93,11 +93,11 @@ $options['id_ritenuta_acconto_predefined'] = $id_ritenuta_acconto;
// Importazione della gestione dedicata
$file = 'riga';
if (get('is_descrizione') !== null) {
if (!empty(get('is_descrizione'))) {
$file = 'descrizione';
$options['op'] = 'manage_descrizione';
} elseif (get('is_articolo') !== null) {
} elseif (!empty(get('is_articolo'))) {
$file = 'articolo';
// Aggiunta sconto di default da listino per le vendite
@ -110,7 +110,7 @@ if (get('is_descrizione') !== null) {
}
$options['op'] = 'manage_articolo';
} elseif (get('is_sconto') !== null) {
} elseif (!empty(get('is_sconto'))) {
$file = 'sconto';
$options['op'] = 'manage_sconto';

View File

@ -48,7 +48,7 @@ trait RelationTrait
*/
public function getDatiAggiuntiviFEAttribute()
{
$result = json_decode($this->attributes['dati_aggiuntivi_fe'], true);
$result = $this->attributes['dati_aggiuntivi_fe'] ? json_decode($this->attributes['dati_aggiuntivi_fe'], true) : '';
return (array) $result;
}

View File

@ -362,7 +362,7 @@ class Fattura extends Document
*/
public function getDatiAggiuntiviFEAttribute()
{
$result = json_decode($this->attributes['dati_aggiuntivi_fe'], true);
$result = ($this->attributes['dati_aggiuntivi_fe'] ? json_decode($this->attributes['dati_aggiuntivi_fe'], true) : '');
return (array) $result;
}
@ -535,7 +535,7 @@ class Fattura extends Document
{
$file = $this->getFatturaElettronica();
return !empty($this->progressivo_invio) and file_exists($file->filepath);
return !empty($this->progressivo_invio) && $file->filepath && file_exists($file->filepath);
}
/**

View File

@ -217,8 +217,8 @@ class Movimenti
$mastrino = $this->generateMastrino();
foreach ($movimenti as $element) {
$dare = round($element['dare'], 8);
$avere = round($element['avere'], 8);
$dare = $element['dare'] ? round($element['dare'], 8) : 0;
$avere = $element['avere'] ? round($element['avere'], 8) : 0;
$totale_dare += $dare;
$totale_avere += $avere;

View File

@ -46,7 +46,7 @@ $plugin_impianti = (new Plugin())->getByField('name', 'Impianti', Models\Locale:
switch (post('op')) {
case 'update':
$idcontratto = post('idcontratto')?: null;
$idcontratto = post('idcontratto') ?: null;
$id_promemoria = post('idcontratto_riga');
// Rimozione del collegamento al promemoria
@ -73,7 +73,7 @@ switch (post('op')) {
$intervento->idsede_destinazione = post('idsede_destinazione');
$intervento->id_preventivo = post('idpreventivo') ?: null;
$intervento->id_contratto = $idcontratto;
$intervento->id_ordine = post('idordine')?: null;
$intervento->id_ordine = post('idordine') ?: null;
$intervento->idpagamento = post('idpagamento');
$intervento->id_documento_fe = post('id_documento_fe');
@ -82,8 +82,6 @@ switch (post('op')) {
$intervento->codice_cig = post('codice_cig');
$intervento->save();
$tecnici_assegnati = (array) post('tecnici_assegnati');
$tecnici_presenti_array = $dbo->select('in_interventi_tecnici_assegnati', 'id_tecnico', [], ['id_intervento' => $intervento->id]);
$tecnici_presenti = [];
@ -107,7 +105,11 @@ switch (post('op')) {
}
}
$tecnici_assegnati_array = post('tecnici_assegnati');
$tecnici_assegnati = [];
foreach ($tecnici_assegnati as $tecnico_assegnato) {
$tecnici_assegnati[] = $tecnico_assegnato;
// Notifica aggiunta tecnico assegnato
if (setting('Notifica al tecnico l\'assegnazione all\'attività')) {
if (!in_array($tecnico_assegnato, $tecnici_presenti)) {
@ -211,7 +213,7 @@ switch (post('op')) {
}
$intervento->id_preventivo = $idpreventivo ?: null;
$intervento->id_contratto = $idcontratto?: null;
$intervento->id_contratto = $idcontratto ?: null;
$intervento->id_ordine = post('idordine') ?: null;
$intervento->idreferente = post('idreferente') ?: null;
$intervento->richiesta = post('richiesta');
@ -230,7 +232,7 @@ switch (post('op')) {
// Collegamenti intervento/impianti
$impianti = post('idimpianti');
if (!empty($impianti)) {
$impianti = array_unique(array($impianti));
$impianti = array_unique([$impianti]);
foreach ($impianti as $impianto) {
$dbo->insert('my_impianti_interventi', [
'idintervento' => $id_record,
@ -292,7 +294,6 @@ switch (post('op')) {
'id_tecnico' => $tecnici_assegnati,
]);
}
foreach ($tecnici_assegnati as $tecnico_assegnato) {
$tecnico = Anagrafica::find($tecnico_assegnato);

View File

@ -646,11 +646,11 @@ async function saveForm() {
}
function gestioneSconto(button) {
gestioneRiga(button, "is_sconto");
gestioneRiga(button, "is_sconto=1");
}
function gestioneDescrizione(button) {
gestioneRiga(button, "is_descrizione");
gestioneRiga(button, "is_descrizione=1");
}
async function gestioneRiga(button, options) {
@ -661,7 +661,7 @@ async function gestioneRiga(button, options) {
let title = $(button).attr("data-title");
// Apertura modal
options = options ? options : "is_riga";
options = options ? options : "is_riga=1";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}

View File

@ -19,7 +19,7 @@
include_once __DIR__.'/../../../core.php';
if (get('anteprima') !== null) {
if (!empty(get('anteprima'))) {
// Lettura dati intervento
$query = 'SELECT codice FROM in_interventi WHERE id='.prepare($id_record);
$rs = $dbo->fetchArray($query);

View File

@ -73,11 +73,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
// Importazione della gestione dedicata
$file = 'riga';
if (get('is_descrizione') !== null) {
if (!empty(get('is_descrizione'))) {
$file = 'descrizione';
$options['op'] = 'manage_descrizione';
} elseif (get('is_sconto') !== null) {
} elseif (!empty(get('is_sconto'))) {
$file = 'sconto';
$options['op'] = 'manage_sconto';

View File

@ -345,11 +345,11 @@ async function saveForm() {
}
function gestioneSconto(button) {
gestioneRiga(button, "is_sconto");
gestioneRiga(button, "is_sconto=1");
}
function gestioneDescrizione(button) {
gestioneRiga(button, "is_descrizione");
gestioneRiga(button, "is_descrizione=1");
}
async function gestioneRiga(button, options) {
@ -360,7 +360,7 @@ async function gestioneRiga(button, options) {
let title = $(button).attr("data-title");
// Apertura modal
options = options ? options : "is_riga";
options = options ? options : "is_riga=1";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}

View File

@ -65,11 +65,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
// Importazione della gestione dedicata
$file = 'riga';
if (get('is_descrizione') !== null) {
if (!empty(get('is_descrizione'))) {
$file = 'descrizione';
$options['op'] = 'manage_descrizione';
} elseif (get('is_sconto') !== null) {
} elseif (!empty(get('is_sconto'))) {
$file = 'sconto';
$options['op'] = 'manage_sconto';

View File

@ -314,11 +314,11 @@ echo '
<script type="text/javascript">
function gestioneSconto(button) {
gestioneRiga(button, "is_sconto");
gestioneRiga(button, "is_sconto=1");
}
function gestioneDescrizione(button) {
gestioneRiga(button, "is_descrizione");
gestioneRiga(button, "is_descrizione=1");
}
async function gestioneRiga(button, options) {
@ -329,7 +329,7 @@ async function gestioneRiga(button, options) {
let title = $(button).attr("data-title");
// Apertura modal
options = options ? options : "is_riga";
options = options ? options : "is_riga=1";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}

View File

@ -64,11 +64,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
// Importazione della gestione dedicata
$file = 'riga';
if (get('is_descrizione') !== null) {
if (!empty(get('is_descrizione'))) {
$file = 'descrizione';
$options['op'] = 'manage_descrizione';
} elseif (get('is_sconto') !== null) {
} elseif (!empty(get('is_sconto'))) {
$file = 'sconto';
$options['op'] = 'manage_sconto';

View File

@ -514,7 +514,7 @@ ORDER BY
$dataset = '';
if ($_SESSION['superselect']['idtipiintervento']) {
$where = '`in_interventi_tecnici`.`idtipointervento` IN('.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).')';
$where = '`in_interventi_tecnici`.`idtipointervento` IN('.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).')';
} else {
$where = '1=1';
}
@ -548,11 +548,11 @@ echo '
<div class="row">
<div class="col-md-3 pull-right">';
if ($_SESSION['superselect']['idtipiintervento']) {
echo'
if ($_SESSION['superselect']['idtipiintervento']) {
echo '
{["type": "select", "multiple": "1", "label": "'.tr('Tipi attività').'", "name": "idtipiintervento[]", "ajax-source": "tipiintervento", "value": "'.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).'", "placeholder": "Tutti" ]}';
}
echo'
}
echo '
</div>
</div>

View File

@ -30,7 +30,6 @@ use Modules\Fatture\Fattura;
use Modules\Fatture\Gestori\Bollo;
use Modules\Iva\Aliquota;
use Modules\Pagamenti\Pagamento;
use Uploads;
/**
* Classe per la gestione della fatturazione elettronica in XML.

View File

@ -53,11 +53,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
// Importazione della gestione dedicata
$file = 'riga';
if (get('is_descrizione') !== null) {
if (!empty(get('is_descrizione'))) {
$file = 'descrizione';
$options['op'] = 'manage_descrizione';
} elseif (get('is_articolo') !== null) {
} elseif (!empty(get('is_articolo'))) {
$file = 'articolo';
// Aggiunta sconto di default da listino per le vendite
@ -69,7 +69,7 @@ if (get('is_descrizione') !== null) {
}
$options['op'] = 'manage_articolo';
} elseif (get('is_sconto') !== null) {
} elseif (!empty(get('is_sconto'))) {
$file = 'sconto';
$options['op'] = 'manage_sconto';

View File

@ -180,7 +180,7 @@ class Response
$flags = JSON_FORCE_OBJECT;
// Beautify forzato dei risultati
if (get('beautify') !== null) {
if (!empty(get('beautify'))) {
$flags |= JSON_PRETTY_PRINT;
}

View File

@ -431,7 +431,7 @@ class HTMLBuilder
}
// Valori particolari
$values['name'] = str_replace(' ', '_', $values['name']);
$values['name'] = $values['name'] ? str_replace(' ', '_', $values['name']) : '';
$values['id'] = empty($values['id']) ? $values['name'] : $values['id'];
$values['id'] = str_replace(['[', ']', ' '], ['', '', '_'], $values['id']);
$values['value'] ??= '';

View File

@ -207,7 +207,11 @@ class Prints
*/
public static function getHref($print, $id_record, $get = '')
{
$infos = PrintTemplate::find((new PrintTemplate())->getByField('name', $print));
$infos = PrintTemplate::find((new PrintTemplate())->getByField('title', $print));
if (empty($infos)) {
$infos = PrintTemplate::find($print);
}
if (empty($infos)) {
return false;

View File

@ -27,7 +27,7 @@ $data_carico = strtotime(str_replace('/', '-', $dt_carico));
$startTM = date('Y-m-d', $data_carico).' 00:00:00';
$endTM = date('Y-m-d', $data_carico).' 23:59:59';
$query = "
$query = '
SELECT
`mg_movimenti`.`data`,
`an_sedi`.`targa`,
@ -46,9 +46,9 @@ $query = "
`mg_movimenti`
INNER JOIN `mg_articoli` ON `mg_movimenti`.`idarticolo`=`mg_articoli`.`id`
INNER JOIN `co_iva` ON `mg_articoli`.`idiva_vendita` = `co_iva`.`id`
INNER JOIN `zz_users` ON `mg_movimenti`.'idutente'=`zz_users`.'id'
INNER JOIN `zz_groups` ON 'zz_users'.`idgruppo`=`zz_groups`.`id`
LEFT JOIN `zz_groups_lang` ON (`zz_groups`.`id` = `zz_groups_lang`.`id_record` AND `zz_groups_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).')
INNER JOIN `zz_users` ON `mg_movimenti`.`idutente`=`zz_users`.`id`
INNER JOIN `zz_groups` ON `zz_users`.`idgruppo`=`zz_groups`.`id`
LEFT JOIN `zz_groups_lang` ON (`zz_groups`.`id` = `zz_groups_lang`.`id_record` AND `zz_groups_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
INNER JOIN `an_sedi` ON `mg_movimenti`.`idsede`=`an_sedi`.`id`
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
LEFT JOIN `mg_categorie` ON `mg_categorie`.`id`=`mg_articoli`.`id_sottocategoria`
@ -59,8 +59,8 @@ $query = "
((`mg_movimenti`.`data` BETWEEN '.prepare($startTM).' AND '.prepare($endTM).") AND (`zz_groups_lang`.`name` = 'Amministratori'))";
$query .= ' AND (`an_sedi`.`targa` LIKE '.prepare('%'.$search_targa.'%').') AND (`an_sedi`.`nome` LIKE '.prepare('%'.$search_nome.'%').') ';
$query .= ' ORDER BY `an_sedi`.`targa`, `mg_articoli`.`descrizione`';
$query .= ' ORDER BY `an_sedi`.`targa`, `mg_articoli_lang`.`name`';
$rs = $dbo->fetchArray($query);
$totrows = sizeof($rs);
$azienda = Anagrafica::where('id', setting('Azienda predefinita'))->first();
$azienda = Anagrafica::where('idanagrafica', '=', setting('Azienda predefinita'))->first();

View File

@ -67,7 +67,7 @@ echo '
<tr>
<td colspan="2" style="height:10mm;padding-top:2mm;">
<p class="small-bold">'.tr('Pagamento', [], ['upper' => true]).'</p>
<p>$pagamento$</p>
<p>'.$record['pagamento'].'</p>
</td>
<td colspan="2" style="height:10mm;padding-top:2mm;">
<p class="small-bold">'.tr('Banca di appoggio', [], ['upper' => true]).'</p>