Compare commits
5 Commits
8b58d1539c
...
2099217c22
Author | SHA1 | Date |
---|---|---|
valentina | 2099217c22 | |
valentina | 3a3e023e2c | |
MatteoPistorello | 7be9848408 | |
MatteoPistorello | 53eb644621 | |
valentina | 80edfb6f86 |
|
@ -103,7 +103,7 @@ if (!empty($options['create_document'])) {
|
||||||
if (in_array($final_module->id, [$id_module_fatt_vendita, $id_module_fatt_acquisto])) {
|
if (in_array($final_module->id, [$id_module_fatt_vendita, $id_module_fatt_acquisto])) {
|
||||||
$stato_predefinito = StatoFattura::where('name', 'Bozza')->first()->id;
|
$stato_predefinito = StatoFattura::where('name', 'Bozza')->first()->id;
|
||||||
$fatt_differita_acquisto = Tipofattura::where('name', 'Fattura differita di acquisto')->first()->id;
|
$fatt_differita_acquisto = Tipofattura::where('name', 'Fattura differita di acquisto')->first()->id;
|
||||||
$fatt_differita_vendita = Tipofattura::where('name', 'Fattura differita di vendita')->first()->id;;
|
$fatt_differita_vendita = Tipofattura::where('name', 'Fattura differita di vendita')->first()->id;
|
||||||
|
|
||||||
if (!empty($options['reversed'])) {
|
if (!empty($options['reversed'])) {
|
||||||
$idtipodocumento = database()->fetchOne('SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `title` = "Nota di credito" AND `dir` = \''.$dir.'\'')['id'];
|
$idtipodocumento = database()->fetchOne('SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `title` = "Nota di credito" AND `dir` = \''.$dir.'\'')['id'];
|
||||||
|
|
|
@ -167,7 +167,6 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||||
]));
|
]));
|
||||||
flash()->error(tr('Installazione completata!'));
|
flash()->error(tr('Installazione completata!'));
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
flash()->error(tr('Aggiornamento completato!'));
|
flash()->error(tr('Aggiornamento completato!'));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -194,7 +193,6 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||||
]));
|
]));
|
||||||
flash()->error(tr('Installazione completata!'));
|
flash()->error(tr('Installazione completata!'));
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
flash()->error(tr('Aggiornamento completato!'));
|
flash()->error(tr('Aggiornamento completato!'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,7 +228,7 @@ if (in_array($id_azienda, $tipi_anagrafica)) {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
{[ "type": "select", "label": "<?php echo tr('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, CONCAT_WS( ' - ', nome, descrizione) AS descrizione FROM an_zone ORDER BY descrizione ASC", "value": "$idzona$", "placeholder": "<?php echo tr('Nessuna zona'); ?>", "icon-after": "add|<?php echo Module::where('name', 'Zone')->first()->id ?>" ]}
|
{[ "type": "select", "label": "<?php echo tr('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, CONCAT_WS( ' - ', nome, descrizione) AS descrizione FROM an_zone ORDER BY descrizione ASC", "value": "$idzona$", "placeholder": "<?php echo tr('Nessuna zona'); ?>", "icon-after": "add|<?php echo Module::where('name', 'Zone')->first()->id; ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
|
|
|
@ -611,7 +611,7 @@ if (!empty($elementi)) {
|
||||||
]);
|
]);
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<li>'.Modules::link(($elemento['modulo'] == 'Interventi' ? 'Attività' : $elemento['modulo']), $elemento['id'], $descrizione).'</li>';
|
<li>'.Modules::link($elemento['modulo'] == 'Interventi' ? 'Attività' : $elemento['modulo'], $elemento['id'], $descrizione).'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -254,7 +254,6 @@ switch (post('op')) {
|
||||||
$impianti = post('idimpianti');
|
$impianti = post('idimpianti');
|
||||||
foreach ($impianti as $impianto) {
|
foreach ($impianti as $impianto) {
|
||||||
if (!empty($impianto)) {
|
if (!empty($impianto)) {
|
||||||
|
|
||||||
$dbo->insert('my_impianti_interventi', [
|
$dbo->insert('my_impianti_interventi', [
|
||||||
'idintervento' => $id_record,
|
'idintervento' => $id_record,
|
||||||
'idimpianto' => $impianto,
|
'idimpianto' => $impianto,
|
||||||
|
|
|
@ -42,11 +42,11 @@ switch ($resource) {
|
||||||
`an_anagrafiche`
|
`an_anagrafiche`
|
||||||
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_tipianagrafiche_anagrafiche`.`idanagrafica`
|
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_tipianagrafiche_anagrafiche`.`idanagrafica`
|
||||||
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
|
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
|
||||||
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).")
|
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).')
|
||||||
WHERE
|
WHERE
|
||||||
`an_anagrafiche`.`deleted_at` IS NULL AND `an_anagrafiche`.`enable_newsletter` = 1 AND 1=1
|
`an_anagrafiche`.`deleted_at` IS NULL AND `an_anagrafiche`.`enable_newsletter` = 1 AND 1=1
|
||||||
ORDER BY
|
ORDER BY
|
||||||
`optgroup` ASC, `ragione_sociale` ASC";
|
`optgroup` ASC, `ragione_sociale` ASC';
|
||||||
|
|
||||||
$query = str_replace('1=1', !empty($where) ? replace($where, [
|
$query = str_replace('1=1', !empty($where) ? replace($where, [
|
||||||
'|nome|' => 'ragione_sociale',
|
'|nome|' => 'ragione_sociale',
|
||||||
|
|
|
@ -167,7 +167,8 @@ echo '
|
||||||
'label' => tr('Condizioni generali di fornitura'),
|
'label' => tr('Condizioni generali di fornitura'),
|
||||||
'name' => 'condizioni_fornitura',
|
'name' => 'condizioni_fornitura',
|
||||||
'value' => $record['condizioni_fornitura'],
|
'value' => $record['condizioni_fornitura'],
|
||||||
]); echo'
|
]);
|
||||||
|
echo '
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
if ($user->gruppo != 'Clienti') {
|
if ($user->gruppo != 'Clienti') {
|
||||||
|
|
|
@ -167,4 +167,3 @@ echo '
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
|
|
|
@ -131,12 +131,11 @@ class Mastrino extends Model
|
||||||
$database = database();
|
$database = database();
|
||||||
|
|
||||||
if ($documenti) {
|
if ($documenti) {
|
||||||
|
|
||||||
|
|
||||||
foreach ($documenti as $id_documento) {
|
foreach ($documenti as $id_documento) {
|
||||||
if (empty($id_documento)) {
|
if (empty($id_documento)) {
|
||||||
continue;
|
continue;
|
||||||
} else {}
|
} else {
|
||||||
|
}
|
||||||
// Verifico se la fattura è stata pagata tutta, così imposto lo stato a "Pagato"
|
// Verifico se la fattura è stata pagata tutta, così imposto lo stato a "Pagato"
|
||||||
$totali = $database->fetchOne('SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario WHERE iddocumento='.prepare($id_documento));
|
$totali = $database->fetchOne('SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario WHERE iddocumento='.prepare($id_documento));
|
||||||
|
|
||||||
|
|
|
@ -21,11 +21,11 @@ namespace Modules\Scadenzario;
|
||||||
|
|
||||||
use Models\Module;
|
use Models\Module;
|
||||||
use Models\OperationLog;
|
use Models\OperationLog;
|
||||||
|
use Models\PrintTemplate;
|
||||||
use Models\User;
|
use Models\User;
|
||||||
use Modules\Emails\Mail;
|
use Modules\Emails\Mail;
|
||||||
use Modules\Emails\Template;
|
use Modules\Emails\Template;
|
||||||
use Tasks\Manager;
|
use Tasks\Manager;
|
||||||
use Models\PrintTemplate;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task dedicato alla gestione del backup giornaliero automatico, se abilitato da Impostazioni.
|
* Task dedicato alla gestione del backup giornaliero automatico, se abilitato da Impostazioni.
|
||||||
|
@ -35,36 +35,58 @@ class SollecitoTask extends Manager
|
||||||
public function needsExecution()
|
public function needsExecution()
|
||||||
{
|
{
|
||||||
if (setting('Invio solleciti in automatico') > 0) {
|
if (setting('Invio solleciti in automatico') > 0) {
|
||||||
$giorni_scadenza = setting('Ritardo in giorni della scadenza della fattura per invio sollecito pagamento');
|
|
||||||
|
|
||||||
$rs = database()->fetchArray("SELECT `co_scadenziario`.* FROM `co_scadenziario` INNER JOIN `co_documenti` ON `co_scadenziario`.`iddocumento`=`co_documenti`.`id` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id` WHERE `co_tipidocumento`.`dir`='entrata' AND `is_fiscale`=1 AND `zz_segments`.`autofatture`=0 AND ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`) AND `scadenza`<DATE_SUB(NOW(), INTERVAL ".prepare($giorni_scadenza).' DAY)');
|
|
||||||
|
|
||||||
if (sizeof($rs) > 0) {
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute()
|
public function execute()
|
||||||
{
|
{
|
||||||
if (setting('Invio solleciti in automatico') > 0) {
|
if (setting('Invio solleciti in automatico') > 0) {
|
||||||
$giorni_scadenza = setting('Ritardo in giorni della scadenza della fattura per invio sollecito pagamento');
|
$giorni_scadenza = setting('Ritardo in giorni della scadenza della fattura per invio sollecito pagamento');
|
||||||
$giorni_ultimo_sollecito = setting("Ritardo in giorni dall'ultima email per invio sollecito pagamento");
|
$giorni_prossimo_sollecito = setting("Ritardo in giorni dall'ultima email per invio sollecito pagamento");
|
||||||
$id_template = setting('Template email invio sollecito');
|
$template_1 = setting('Template email primo sollecito');
|
||||||
|
$template_2 = setting('Template email secondo sollecito');
|
||||||
|
$template_3 = setting('Template email terzo sollecito');
|
||||||
|
$template_notifica = setting('Template email mancato pagamento dopo i solleciti');
|
||||||
$id_user = database()->selectOne('zz_users', 'id', ['idgruppo' => 1, 'enabled' => 1])['id'];
|
$id_user = database()->selectOne('zz_users', 'id', ['idgruppo' => 1, 'enabled' => 1])['id'];
|
||||||
$user = User::find($id_user);
|
$user = User::find($id_user);
|
||||||
|
|
||||||
if ($id_template) {
|
|
||||||
$rs = database()->fetchArray("SELECT `co_scadenziario`.* FROM `co_scadenziario` INNER JOIN `co_documenti` ON `co_scadenziario`.`iddocumento`=`co_documenti`.`id` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id` WHERE `co_tipidocumento`.`dir`='entrata' AND `is_fiscale`=1 AND `zz_segments`.`autofatture`=0 AND ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`) AND `scadenza` < DATE_SUB(NOW(), INTERVAL ".prepare($giorni_scadenza).' DAY)');
|
$rs = database()->fetchArray("SELECT `co_scadenziario`.* FROM `co_scadenziario` INNER JOIN `co_documenti` ON `co_scadenziario`.`iddocumento`=`co_documenti`.`id` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id` WHERE `co_tipidocumento`.`dir`='entrata' AND `is_fiscale`=1 AND `zz_segments`.`autofatture`=0 AND ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`) AND `scadenza` < DATE_SUB(NOW(), INTERVAL ".prepare($giorni_scadenza).' DAY)');
|
||||||
|
|
||||||
foreach ($rs as $r) {
|
foreach ($rs as $r) {
|
||||||
$has_inviata = database()->fetchArray('SELECT * FROM em_emails WHERE id_template='.prepare($id_template).' AND id_record='.prepare($r['id']).' AND sent_at>DATE_SUB(NOW(), INTERVAL '.prepare($giorni_ultimo_sollecito).' DAY)');
|
$da_inviare = false;
|
||||||
|
$destinatario = '';
|
||||||
|
$has_inviata = database()->fetchOne('SELECT * FROM em_emails WHERE sent_at IS NOT NULL AND id_template='.prepare($template_1).' AND id_record='.prepare($r['id']));
|
||||||
|
$data_sollecito_1 = $has_inviata['sent_at'];
|
||||||
|
$id_template = $template_1;
|
||||||
if (!$has_inviata) {
|
if (!$has_inviata) {
|
||||||
|
$da_inviare = date('Y-m-d', strtotime($r['scadenza'].' + '.($giorni_scadenza).' days')) < date('Y-m-d') ? true : false;
|
||||||
|
} else {
|
||||||
|
$has_inviata = database()->fetchOne('SELECT * FROM em_emails WHERE sent_at IS NOT NULL AND id_template='.prepare($template_2).' AND id_record='.prepare($r['id']));
|
||||||
|
$data_sollecito_2 = $has_inviata['sent_at'];
|
||||||
|
$id_template = $template_2;
|
||||||
|
if (!$has_inviata) {
|
||||||
|
$da_inviare = date('Y-m-d', strtotime($data_sollecito_1.' + '.$giorni_prossimo_sollecito.' days')) < date('Y-m-d') ? true : false;
|
||||||
|
} else {
|
||||||
|
$has_inviata = database()->fetchOne('SELECT * FROM em_emails WHERE sent_at IS NOT NULL AND id_template='.prepare($template_3).' AND id_record='.prepare($r['id']));
|
||||||
|
$data_sollecito_3 = $has_inviata['sent_at'];
|
||||||
|
$id_template = $template_3;
|
||||||
|
if (!$has_inviata) {
|
||||||
|
$da_inviare = date('Y-m-d', strtotime($data_sollecito_2.' + '.$giorni_prossimo_sollecito.' days')) < date('Y-m-d') ? true : false;
|
||||||
|
} else {
|
||||||
|
$has_inviata = database()->fetchOne('SELECT * FROM em_emails WHERE sent_at IS NOT NULL AND id_template='.prepare($template_notifica).' AND id_record='.prepare($r['id']));
|
||||||
|
$id_template = $template_notifica;
|
||||||
|
if (!$has_inviata) {
|
||||||
|
$destinatario = setting('Indirizzo email mancato pagamento dopo i solleciti');
|
||||||
|
$da_inviare = date('Y-m-d', strtotime($data_sollecito_3.' + '.$giorni_prossimo_sollecito.' days')) < date('Y-m-d') && !empty($destinatario) ? true : false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($da_inviare && $id_template) {
|
||||||
$template = Template::find($id_template);
|
$template = Template::find($id_template);
|
||||||
$id = $r['id'];
|
$id = $r['id'];
|
||||||
|
|
||||||
|
@ -98,6 +120,12 @@ class SollecitoTask extends Manager
|
||||||
$creata_mail = false;
|
$creata_mail = false;
|
||||||
$emails = [];
|
$emails = [];
|
||||||
|
|
||||||
|
if ($destinatario) {
|
||||||
|
$emails[] = $destinatario;
|
||||||
|
$mail = Mail::build($user, $template, $id);
|
||||||
|
$mail->addReceiver($destinatario);
|
||||||
|
$creata_mail = true;
|
||||||
|
} else {
|
||||||
// Aggiungo email anagrafica
|
// Aggiungo email anagrafica
|
||||||
if (!empty($documento->anagrafica->email)) {
|
if (!empty($documento->anagrafica->email)) {
|
||||||
$emails[] = $documento->anagrafica->email;
|
$emails[] = $documento->anagrafica->email;
|
||||||
|
@ -122,6 +150,8 @@ class SollecitoTask extends Manager
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($emails)) {
|
if (!empty($emails)) {
|
||||||
if (!empty($fattura_allegata)) {
|
if (!empty($fattura_allegata)) {
|
||||||
$mail->addUpload($fattura_allegata);
|
$mail->addUpload($fattura_allegata);
|
||||||
|
@ -139,4 +169,3 @@ class SollecitoTask extends Manager
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Modules\Statistiche\Stats;
|
|
||||||
use Models\Module;
|
use Models\Module;
|
||||||
|
use Modules\Statistiche\Stats;
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
|
|
@ -367,7 +367,7 @@ switch (filter('op')) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'informazioni-fe':
|
case 'informazioni-fe':
|
||||||
$info = s;
|
$info = Cache::where('name', 'Informazioni su spazio FE')->first();
|
||||||
|
|
||||||
if (!$info->isValid()) {
|
if (!$info->isValid()) {
|
||||||
$response = Services::request('POST', 'informazioni_fe');
|
$response = Services::request('POST', 'informazioni_fe');
|
||||||
|
|
|
@ -63,7 +63,7 @@ echo '
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "textarea", "label": "'.tr('Query personalizzata').'", "name": "options2", "value": '.json_encode(str_replace(']}', '] }', ($record->options2 ?: ''))).', "class": "autosize", "help": "'.tr('La query in sostituzione a quella di default: custom, menu oppure SQL').'" ]}
|
{[ "type": "textarea", "label": "'.tr('Query personalizzata').'", "name": "options2", "value": '.json_encode(str_replace(']}', '] }', $record->options2 ?: '')).', "class": "autosize", "help": "'.tr('La query in sostituzione a quella di default: custom, menu oppure SQL').'" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
|
|
|
@ -84,14 +84,18 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||||
|
|
||||||
public function getRighe()
|
public function getRighe()
|
||||||
{
|
{
|
||||||
|
// Estraggo le linee
|
||||||
$linee = $this->getBody()['DatiBeniServizi']['DettaglioLinee'];
|
$linee = $this->getBody()['DatiBeniServizi']['DettaglioLinee'];
|
||||||
$linee = $this->forceArray($linee);
|
$linee = $this->forceArray($linee);
|
||||||
|
|
||||||
|
// Estraggo la cassa previdenziale
|
||||||
$cassa_previdenziale = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento']['DatiCassaPrevidenziale'];
|
$cassa_previdenziale = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento']['DatiCassaPrevidenziale'];
|
||||||
|
|
||||||
$imponibile = [];
|
$imponibile = [];
|
||||||
$totale_imposta = [];
|
$totale_imposta = [];
|
||||||
$importo = 0;
|
$importo = 0;
|
||||||
|
|
||||||
|
// Calcolo l'imponibile per aliquota al netto degli sconti
|
||||||
foreach ($linee as $linea) {
|
foreach ($linee as $linea) {
|
||||||
$importo = $linea['PrezzoUnitario'] * $linea['Quantita'];
|
$importo = $linea['PrezzoUnitario'] * $linea['Quantita'];
|
||||||
|
|
||||||
|
@ -122,22 +126,9 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||||
$imponibile[$linea['AliquotaIVA']] += round($importo, 2);
|
$imponibile[$linea['AliquotaIVA']] += round($importo, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aggiunta degli arrotondamenti IVA come righe indipendenti
|
// Estraggo i riepiloghi
|
||||||
$riepiloghi = $this->getBody()['DatiBeniServizi']['DatiRiepilogo'];
|
$riepiloghi = $this->getBody()['DatiBeniServizi']['DatiRiepilogo'];
|
||||||
$riepiloghi = $this->forceArray($riepiloghi);
|
$riepiloghi = $this->forceArray($riepiloghi);
|
||||||
|
|
||||||
foreach ($riepiloghi as $riepilogo) {
|
|
||||||
$aliquota_iva = $riepilogo['AliquotaIVA'];
|
|
||||||
$imponibile[$aliquota_iva] += (float) $riepilogo['Arrotondamento'];
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($imponibile as $aliquota_iva => $importo) {
|
|
||||||
$totale_imposta[$aliquota_iva] = $imponibile[$aliquota_iva] * $aliquota_iva / 100;
|
|
||||||
if ($cassa_previdenziale['AliquotaIVA'] == $aliquota_iva) {
|
|
||||||
$totale_imposta[$aliquota_iva] += $cassa_previdenziale['ImportoContributoCassa'] * $cassa_previdenziale['AliquotaIVA'] / 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$riepiloghi_raggruppati = [];
|
$riepiloghi_raggruppati = [];
|
||||||
|
|
||||||
foreach ($riepiloghi as $riepilogo) {
|
foreach ($riepiloghi as $riepilogo) {
|
||||||
|
@ -151,12 +142,20 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($imponibile as $aliquota_iva => $importo) {
|
||||||
|
$totale_imposta[$aliquota_iva] = $imponibile[$aliquota_iva] * $aliquota_iva / 100;
|
||||||
|
if ($cassa_previdenziale['AliquotaIVA'] == $aliquota_iva) {
|
||||||
|
$totale_imposta[$aliquota_iva] += $cassa_previdenziale['ImportoContributoCassa'] * $cassa_previdenziale['AliquotaIVA'] / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calcolo la differenza IVA per aliquota, per creare una riga relativa all'arrotondamento IVA
|
||||||
foreach ($riepiloghi_raggruppati as $riepilogo) {
|
foreach ($riepiloghi_raggruppati as $riepilogo) {
|
||||||
$valore = 0;
|
$valore = 0;
|
||||||
$diff_iva = round((float) $riepilogo['Imposta'] - $totale_imposta[$riepilogo['AliquotaIVA']], 2);
|
$differenza_iva = round((float) $riepilogo['Imposta'] - $totale_imposta[$riepilogo['AliquotaIVA']], 2);
|
||||||
|
|
||||||
if ($diff_iva) {
|
if ($differenza_iva) {
|
||||||
$valore = $diff_iva * 100 / $riepilogo['AliquotaIVA'];
|
$valore = $differenza_iva * 100 / $riepilogo['AliquotaIVA'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($valore != 0) {
|
if ($valore != 0) {
|
||||||
|
@ -191,10 +190,11 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||||
$ritenuta_contributi = !empty($fattura->id_ritenuta_contributi);
|
$ritenuta_contributi = !empty($fattura->id_ritenuta_contributi);
|
||||||
$conto_arrotondamenti = null;
|
$conto_arrotondamenti = null;
|
||||||
|
|
||||||
$tot_arr = 0;
|
// Estraggo l'eventuale arrotondamento IVA applicato
|
||||||
|
$arrotondamento_iva = 0;
|
||||||
foreach ($righe as $riga) {
|
foreach ($righe as $riga) {
|
||||||
if (str_contains((string) $riga['Descrizione'], 'Arrotondamento')) {
|
if (str_contains((string) $riga['Descrizione'], 'Arrotondamento')) {
|
||||||
$tot_arr += $riga['PrezzoUnitario'];
|
$arrotondamento_iva += round($riga['PrezzoUnitario'], 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,6 +203,54 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||||
|
|
||||||
\Settings::setValue('Permetti il superamento della soglia quantità dei documenti di origine', 1);
|
\Settings::setValue('Permetti il superamento della soglia quantità dei documenti di origine', 1);
|
||||||
|
|
||||||
|
// Estraggo i totali del documento
|
||||||
|
$totale_righe_riepilogo = 0;
|
||||||
|
$totale_arrotondamento_riepilogo = 0;
|
||||||
|
$totale_imponibile_riepilogo = 0;
|
||||||
|
|
||||||
|
$dati_riepilogo = $this->getBody()['DatiBeniServizi']['DatiRiepilogo'];
|
||||||
|
if (!empty($dati_riepilogo['ImponibileImporto'])) {
|
||||||
|
$totale_arrotondamento_riepilogo = $dati_riepilogo['Arrotondamento'];
|
||||||
|
$totale_imponibile_riepilogo = sum($dati_riepilogo['ImponibileImporto']);
|
||||||
|
} elseif (is_array($dati_riepilogo)) {
|
||||||
|
foreach ($dati_riepilogo as $dato) {
|
||||||
|
$totale_arrotondamento_riepilogo += $dato['Arrotondamento'];
|
||||||
|
$totale_imponibile_riepilogo += $dato['ImponibileImporto'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Estraggo il totale delle righe
|
||||||
|
foreach ($righe as $linea) {
|
||||||
|
$importo = $linea['PrezzoUnitario'] * $linea['Quantita'];
|
||||||
|
|
||||||
|
if ($linea['ScontoMaggiorazione']) {
|
||||||
|
$linea['ScontoMaggiorazione'] = $this->forceArray($linea['ScontoMaggiorazione']);
|
||||||
|
foreach ($linea['ScontoMaggiorazione'] as $sm) {
|
||||||
|
if (isset($sm['Percentuale'])) {
|
||||||
|
$sconto = ($importo * $sm['Percentuale'] / 100);
|
||||||
|
if ($sm['Tipo'] == 'SC') {
|
||||||
|
$importo -= $sconto;
|
||||||
|
} else {
|
||||||
|
$importo += $sconto;
|
||||||
|
}
|
||||||
|
} elseif (isset($sm['Importo'])) {
|
||||||
|
if ($sm['Tipo'] == 'SC') {
|
||||||
|
$importo -= $sm['Importo'] * $linea['Quantita'];
|
||||||
|
} else {
|
||||||
|
$importo += $sm['Importo'] * $linea['Quantita'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$linea['Quantita']) {
|
||||||
|
$importo = $linea['PrezzoUnitario'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$totale_righe_riepilogo += round($importo, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creazione righe
|
||||||
foreach ($righe as $key => $riga) {
|
foreach ($righe as $key => $riga) {
|
||||||
$articolo = ArticoloOriginale::find($articoli[$key]);
|
$articolo = ArticoloOriginale::find($articoli[$key]);
|
||||||
|
|
||||||
|
@ -302,32 +350,14 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||||
$obj->id_rivalsa_inps = $id_rivalsa;
|
$obj->id_rivalsa_inps = $id_rivalsa;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Totale documento
|
|
||||||
$totale_righe = 0;
|
|
||||||
$totale_arrotondamento = 0;
|
|
||||||
$totale_imp = 0;
|
|
||||||
$dati_riepilogo = $this->getBody()['DatiBeniServizi']['DatiRiepilogo'];
|
|
||||||
if (!empty($dati_riepilogo['ImponibileImporto'])) {
|
|
||||||
$totale_arrotondamento = $dati_riepilogo['Arrotondamento'];
|
|
||||||
$totale_imp = sum($dati_riepilogo['ImponibileImporto'], null, 2);
|
|
||||||
} elseif (is_array($dati_riepilogo)) {
|
|
||||||
foreach ($dati_riepilogo as $dato) {
|
|
||||||
$totale_arrotondamento += $dato['Arrotondamento'];
|
|
||||||
$totale_imp += $dato['ImponibileImporto'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$totali_righe = array_column($righe, 'PrezzoTotale');
|
|
||||||
$tot_righe = sum($totali_righe, null, 2);
|
|
||||||
$totale_righe = round($tot_righe + $tot_arr + $totale_arrotondamento, 2);
|
|
||||||
|
|
||||||
// Nel caso il prezzo sia negativo viene gestito attraverso l'inversione della quantità (come per le note di credito)
|
// 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.
|
// 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) {
|
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);
|
$qta = (($riga['Quantita'] ?: 1) / $articolo->fattore_um_secondaria);
|
||||||
$prezzo = $totale_righe > 0 ? $totale_righe / $qta : -($totale_righe / $qta);
|
$prezzo = $totale_righe_riepilogo > 0 ? $totale_righe_riepilogo / $qta : -($totale_righe_riepilogo / $qta);
|
||||||
} else {
|
} else {
|
||||||
$qta = ($riga['Quantita'] ?: 1);
|
$qta = ($riga['Quantita'] ?: 1);
|
||||||
$prezzo = $totale_righe > 0 ? $riga['PrezzoUnitario'] : -$riga['PrezzoUnitario'];
|
$prezzo = $totale_righe_riepilogo > 0 ? $riga['PrezzoUnitario'] : -$riga['PrezzoUnitario'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prezzo e quantità
|
// Prezzo e quantità
|
||||||
|
@ -444,29 +474,25 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||||
$fattura->refresh();
|
$fattura->refresh();
|
||||||
|
|
||||||
// Arrotondamenti differenti nella fattura XML
|
// Arrotondamenti differenti nella fattura XML
|
||||||
$riepiloghi = $this->getBody()['DatiBeniServizi']['DatiRiepilogo'];
|
$riepiloghi = $this->forceArray($dati_riepilogo);
|
||||||
$riepiloghi = $this->forceArray($riepiloghi);
|
$imposta_riepilogo = 0;
|
||||||
|
|
||||||
$riep_imp = 0;
|
|
||||||
foreach ($riepiloghi as $riepilogo) {
|
foreach ($riepiloghi as $riepilogo) {
|
||||||
$riep_imp += $riepilogo['Imposta'];
|
$imposta_riepilogo += $riepilogo['Imposta'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$diff_iva = round(abs($riep_imp) - abs($fattura->iva), 2);
|
$totale_documento = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento']['ImportoTotaleDocumento'];
|
||||||
$diff = round(abs($fattura->totale_imponibile) - abs($totale_righe + $tot_arr), 2);
|
$differenza_iva = round(abs($fattura->iva) - abs($imposta_riepilogo), 2);
|
||||||
$diff_tot = round($fattura->totale_imponibile + $fattura->rivalsa_inps - abs($totale_imp) + $tot_arr, 2);
|
$diff = round(abs($fattura->totale_imponibile + abs($imposta_riepilogo) + $fattura->rivalsa_inps) - abs($totale_documento), 2);
|
||||||
|
|
||||||
$iva_arrotondamento = database()->fetchOne('SELECT * FROM `co_iva` WHERE `percentuale`= 0 AND `deleted_at` IS NULL LIMIT 1');
|
$iva_arrotondamento = database()->fetchOne('SELECT * FROM `co_iva` WHERE `percentuale`= 0 AND `deleted_at` IS NULL LIMIT 1');
|
||||||
|
if ($diff || $differenza_iva) {
|
||||||
if (($diff != 0 && $diff != $diff_tot) || (($diff_tot != $diff) && !$diff_iva) || $diff_iva) {
|
if ($diff && $differenza_iva) {
|
||||||
if ($diff != 0 && $diff != $diff_tot) {
|
$diff = abs($diff + $differenza_iva);
|
||||||
$diff *= 100 / (100 + $iva_arrotondamento['percentuale']);
|
} elseif ($diff == 0 && $differenza_iva) {
|
||||||
} elseif (($diff == $diff_tot) && !$diff_iva) {
|
$diff = $differenza_iva;
|
||||||
$diff = $totale_righe - $fattura->totale_imponibile;
|
|
||||||
} elseif (($diff == $diff_tot) && $diff_iva) {
|
|
||||||
$diff = $diff_iva;
|
|
||||||
} else {
|
} else {
|
||||||
$diff = -($diff_tot * 100) / (100 + $iva_arrotondamento['percentuale']);
|
$diff = -$diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
$obj = Riga::build($fattura);
|
$obj = Riga::build($fattura);
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
|
|
||||||
use Modules\Anagrafiche\Anagrafica;
|
use Modules\Anagrafiche\Anagrafica;
|
||||||
use Modules\Articoli\Articolo;
|
use Modules\Articoli\Articolo;
|
||||||
use Plugins\ListinoFornitori\DettaglioFornitore;
|
|
||||||
use Plugins\ListinoClienti\DettaglioPrezzo;
|
use Plugins\ListinoClienti\DettaglioPrezzo;
|
||||||
|
use Plugins\ListinoFornitori\DettaglioFornitore;
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
|
|
@ -469,7 +469,7 @@ class Gestore
|
||||||
|
|
||||||
// Salvataggio del file
|
// Salvataggio del file
|
||||||
file_put_contents(base_dir().'/'.$file, $content);
|
file_put_contents(base_dir().'/'.$file, $content);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// File per il pagamento delle vendite Bonifico
|
// File per il pagamento delle vendite Bonifico
|
||||||
|
|
|
@ -20,11 +20,11 @@
|
||||||
namespace API\App\v1\Flash;
|
namespace API\App\v1\Flash;
|
||||||
|
|
||||||
use API\App\v1\AllegatiInterventi;
|
use API\App\v1\AllegatiInterventi;
|
||||||
|
use API\App\v1\CampiPersonalizzatiValori;
|
||||||
use API\App\v1\Clienti;
|
use API\App\v1\Clienti;
|
||||||
use API\App\v1\Interventi;
|
use API\App\v1\Interventi;
|
||||||
use API\App\v1\RigheInterventi;
|
use API\App\v1\RigheInterventi;
|
||||||
use API\App\v1\SessioniInterventi;
|
use API\App\v1\SessioniInterventi;
|
||||||
use API\App\v1\CampiPersonalizzatiValori;
|
|
||||||
use API\Interfaces\UpdateInterface;
|
use API\Interfaces\UpdateInterface;
|
||||||
use API\Resource;
|
use API\Resource;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
|
|
@ -42,5 +42,30 @@ UPDATE `zz_plugins` SET `options` = '{ \"main_query\": [ { \"type\": \"table\",
|
||||||
-- Fix vista sottocategorie in Articoli
|
-- Fix vista sottocategorie in Articoli
|
||||||
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`sottocategorie_lang`.`title`' WHERE `zz_modules`.`name` = 'Articoli' AND `zz_views`.`name` = 'Sottocategoria';
|
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`sottocategorie_lang`.`title`' WHERE `zz_modules`.`name` = 'Articoli' AND `zz_views`.`name` = 'Sottocategoria';
|
||||||
|
|
||||||
|
-- Gestione solleciti automatici
|
||||||
|
INSERT INTO `em_templates` (`id`, `id_module`, `name`, `icon`, `tipo_reply_to`, `reply_to`, `cc`, `bcc`, `read_notify`, `predefined`, `note_aggiuntive`, `deleted_at`, `id_account`, `created_at`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name`='Scadenzario'), 'Secondo sollecito di pagamento', 'fa fa-envelope', '', '', '', '', '0', '1', '', NULL, '1', NULL);
|
||||||
|
INSERT INTO `em_templates_lang` (`id`, `id_lang`, `id_record`, `title`, `subject`, `body`, `created_at`) VALUES (NULL, (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `em_templates` WHERE `name`='Secondo sollecito di pagamento'), 'Secondo sollecito di pagamento', 'Sollecito di pagamento fattura {numero}', '', NULL);
|
||||||
|
|
||||||
|
INSERT INTO `em_templates` (`id`, `id_module`, `name`, `icon`, `tipo_reply_to`, `reply_to`, `cc`, `bcc`, `read_notify`, `predefined`, `note_aggiuntive`, `deleted_at`, `id_account`, `created_at`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name`='Scadenzario'), 'Terzo sollecito di pagamento', 'fa fa-envelope', '', '', '', '', '0', '1', '', NULL, '1', NULL);
|
||||||
|
INSERT INTO `em_templates_lang` (`id`, `id_lang`, `id_record`, `title`, `subject`, `body`, `created_at`) VALUES (NULL, (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `em_templates` WHERE `name`='Terzo sollecito di pagamento'), 'Terzo sollecito di pagamento', 'Sollecito di pagamento fattura {numero}', '', NULL);
|
||||||
|
|
||||||
|
INSERT INTO `em_templates` (`id`, `id_module`, `name`, `icon`, `tipo_reply_to`, `reply_to`, `cc`, `bcc`, `read_notify`, `predefined`, `note_aggiuntive`, `deleted_at`, `id_account`, `created_at`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name`='Scadenzario'), 'Notifica interna sollecito di pagamento', 'fa fa-envelope', '', '', '', '', '0', '1', '', NULL, '1', NULL);
|
||||||
|
INSERT INTO `em_templates_lang` (`id`, `id_lang`, `id_record`, `title`, `subject`, `body`, `created_at`) VALUES (NULL, (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `em_templates` WHERE `name`='Notifica interna sollecito di pagamento'), 'Notifica interna sollecito di pagamento', 'Notifica interna sollecito di pagamento fattura {numero}', '', NULL);
|
||||||
|
|
||||||
|
UPDATE `zz_settings` SET `nome` = 'Template email primo sollecito' WHERE `zz_settings`.`nome` = 'Template email invio sollecito';
|
||||||
|
UPDATE `zz_settings_lang` SET `title` = 'Template email primo sollecito' WHERE `zz_settings_lang`.`id_record` = (SELECT `id` FROM `zz_settings` WHERE `nome`='Template email primo sollecito');
|
||||||
|
|
||||||
|
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `order`) VALUES (NULL, 'Template email secondo sollecito', (SELECT `id` FROM `em_templates` WHERE `name`='Secondo sollecito di pagamento'), 'query=SELECT `em_templates`.`id`, `name` AS descrizione FROM `em_templates` LEFT JOIN `em_templates_lang` ON (`em_templates_lang`.`id_record` = `em_templates`.`id` AND `em_templates_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = \"Lingua\"))', '1', 'Scadenzario', NULL, '3');
|
||||||
|
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`, `created_at`) VALUES (NULL, (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `zz_settings` WHERE `nome`='Template email secondo sollecito'), 'Template email secondo sollecito', '', NULL);
|
||||||
|
|
||||||
|
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `order`) VALUES (NULL, 'Template email terzo sollecito', (SELECT `id` FROM `em_templates` WHERE `name`='Terzo sollecito di pagamento'), 'query=SELECT `em_templates`.`id`, `name` AS descrizione FROM `em_templates` LEFT JOIN `em_templates_lang` ON (`em_templates_lang`.`id_record` = `em_templates`.`id` AND `em_templates_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = \"Lingua\"))', '1', 'Scadenzario', NULL, '4');
|
||||||
|
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`, `created_at`) VALUES (NULL, (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `zz_settings` WHERE `nome`='Template email terzo sollecito'), 'Template email terzo sollecito', '', NULL);
|
||||||
|
|
||||||
|
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `order`) VALUES (NULL, 'Template email mancato pagamento dopo i solleciti', (SELECT `id` FROM `em_templates` WHERE `name`='Notifica interna sollecito di pagamento'), 'query=SELECT `em_templates`.`id`, `name` AS descrizione FROM `em_templates` LEFT JOIN `em_templates_lang` ON (`em_templates_lang`.`id_record` = `em_templates`.`id` AND `em_templates_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = \"Lingua\"))', '1', 'Scadenzario', NULL, '4');
|
||||||
|
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`, `created_at`) VALUES (NULL, (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `zz_settings` WHERE `nome`='Template email mancato pagamento dopo i solleciti'), 'Template email mancato pagamento dopo i solleciti', '', NULL);
|
||||||
|
|
||||||
|
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `order`) VALUES (NULL, 'Indirizzo email mancato pagamento dopo i solleciti', '', 'string', '1', 'Scadenzario', NULL, '4');
|
||||||
|
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`, `created_at`) VALUES (NULL, (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `zz_settings` WHERE `nome`='Indirizzo email mancato pagamento dopo i solleciti'), 'Indirizzo email mancato pagamento dopo i solleciti', '', NULL);
|
||||||
|
|
||||||
-- Ripristino impostazione per limitare la visualizzazione degli impianti a quelli gestiti dal tecnico
|
-- Ripristino impostazione per limitare la visualizzazione degli impianti a quelli gestiti dal tecnico
|
||||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Limita la visualizzazione degli impianti a quelli gestiti dal tecnico', '0', 'boolean', '1', 'Applicazione', '9', '');
|
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Limita la visualizzazione degli impianti a quelli gestiti dal tecnico', '0', 'boolean', '1', 'Applicazione', '9');
|
||||||
|
|
Loading…
Reference in New Issue