From 8eccff451bfb35a311d08192ee5bad9359cd8bd0 Mon Sep 17 00:00:00 2001 From: Beppe Date: Thu, 18 Feb 2021 09:57:35 +0100 Subject: [PATCH 1/2] Modifiche a pianificazione contratti --- modules/contratti/actions.php | 15 +- modules/contratti/edit.php | 29 +-- .../pianificazione_fatturazione/actions.php | 107 ++++++--- .../add_pianificazione.php | 207 ++++++++++++++---- .../ajax_cadenza.php | 93 ++++++++ .../crea_fattura.php | 5 +- plugins/pianificazione_fatturazione/edit.php | 2 +- .../pianificazione_fatturazione/modutil.php | 37 ++++ .../src/Pianificazione.php | 2 +- .../widgets/rate_contrattuali.php | 5 +- plugins/rinnovi_contratti/edit.php | 43 +++- update/2_4_22.sql | 5 + 12 files changed, 437 insertions(+), 113 deletions(-) create mode 100644 plugins/pianificazione_fatturazione/ajax_cadenza.php create mode 100644 plugins/pianificazione_fatturazione/modutil.php diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index ffeb0bcf0..69a908c73 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -76,10 +76,6 @@ switch (post('op')) { $contratto->data_accettazione = post('data_accettazione'); $contratto->data_conclusione = post('data_conclusione'); - $contratto->rinnovabile = post('rinnovabile'); - $contratto->rinnovo_automatico = post('rinnovo_automatico'); - $contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo'); - $contratto->ore_preavviso_rinnovo = post('ore_preavviso_rinnovo'); $contratto->esclusioni = post('esclusioni'); $contratto->descrizione = post('descrizione'); $contratto->id_documento_fe = post('id_documento_fe'); @@ -111,6 +107,17 @@ switch (post('op')) { break; + case 'update_rinnovo': + + $contratto->rinnovabile = post('rinnovabile'); + $contratto->rinnovo_automatico = post('rinnovo_automatico'); + $contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo'); + $contratto->ore_preavviso_rinnovo = post('ore_preavviso_rinnovo'); + $contratto->save(); + flash()->info(tr('Contratto modificato correttamente!')); + + break; + // Duplica contratto case 'copy': $new = $contratto->replicate(); diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 3a28a569c..b07635e35 100755 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -108,37 +108,10 @@ $block_edit = $record['is_completato']; {[ "type": "number", "label": "", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|", "help": "" ]} -
- {[ "type": "checkbox", "label": "", "name": "rinnovabile", "help": "", "value": "$rinnovabile$" ]} -
- -
- {[ "type": "checkbox", "label": "", "name": "rinnovo_automatico", "help": "", "value": "$rinnovo_automatico$", "disabled": ]} -
- -
- {[ "type": "number", "label": "", "name": "giorni_preavviso_rinnovo", "decimals": "2", "value": "$giorni_preavviso_rinnovo$", "icon-after": "giorni", "disabled": ]} -
- - - -
- -
- -
- - -
- {[ "type": "number", "label": "", "name": "ore_preavviso_rinnovo", "decimals": "2", "value": "$ore_preavviso_rinnovo$", "icon-after": "ore", "disabled": , "help": "" ]} -
- -
+
{[ "type": "select", "multiple": "1", "label": "", "name": "matricolaimpianto[]", "values": "query=SELECT idanagrafica, id AS id, IF(nome = '', matricola, CONCAT(matricola, ' - ', nome)) AS descrizione FROM my_impianti WHERE idanagrafica='$idanagrafica$' ORDER BY descrizione", "value": "$idimpianti$", "icon-after": "add||||" ]}
- -
diff --git a/plugins/pianificazione_fatturazione/actions.php b/plugins/pianificazione_fatturazione/actions.php index c7194ecec..95f5fc6d9 100755 --- a/plugins/pianificazione_fatturazione/actions.php +++ b/plugins/pianificazione_fatturazione/actions.php @@ -1,7 +1,7 @@ $selezione) { - $data_scadenza = $periodi[$key]; + if( $numero_fatture==0 && !empty(post('data_inizio')) ){ + $date = new DateTime(post('data_inizio')); + }else{ + $date = new DateTime($periodi[$key]); + + if(post('cadenza_fatturazione')=='Inizio'){ + $date->modify('first day of this month'); + }elseif( post('cadenza_fatturazione')=='Giorno' && !empty(post('giorno_fisso')) ){ + $date->modify('last day of this month'); + $last_day = $date->format('d'); + $day = post('giorno_fisso') > $last_day ? $last_day : post('giorno_fisso'); + + // Correzione data + $date->setDate($date->format('Y'), $date->format('m'), $day); + } + } + + // Comversione della data in stringa standard + $data_scadenza = $date->format('Y-m-d'); + ++$numero_fatture; // Creazione pianificazione - Pianificazione::build($contratto, $data_scadenza); + $pianificazione = Pianificazione::build($contratto, $data_scadenza); + $date_pianificazioni[] = $data_scadenza; + $pianificazioni[$numero_fatture] = $pianificazione->id; } if ($numero_fatture > 0) { - // Rimozione righe precedenti del contratto $righe_contratto = $contratto->getRighe(); - $iva_righe = collect($righe_contratto->toArray())->groupBy('idiva'); - foreach ($righe_contratto as $riga) { - $riga->delete(); - } + $subtotale = []; // Creazione nuove righe - $descrizioni = post('descrizione'); $qta = post('qta'); - foreach ($iva_righe as $id_iva => $righe) { - $iva = $righe->first()->aliquota; - $righe = $righe->toArray(); - - $totale = sum(array_column($righe, setting('Utilizza prezzi di vendita comprensivi di IVA') ? 'totale' : 'totale_imponibile')); - - $qta_riga = $qta[$id_iva]; - $descrizione_riga = $descrizioni[$id_iva]; - - $prezzo_unitario = $totale / $qta_riga / $numero_fatture; - + foreach($righe_contratto as $r){ + $qta_evasa = $r->qta_evasa; + $data_scadenza = ''; + $inizio = $date_pianificazioni[0]; + $fine = date("Y-m-d", strtotime($inizio.' -1 days')); + $fine = date("Y-m-d", strtotime($fine." ".$timeing)); for ($rata = 1; $rata <= $numero_fatture; ++$rata) { - $riga = Riga::build($contratto); + if( $qta_evasa<$r->qta ){ + $qta_riga = ($qta[$r->id]<=($r->qta-$qta_evasa) ? $qta[$r->id] : ($r->qta-$qta_evasa) ); + $descrizione = post('descrizione')[$r->id]; - $riga->descrizione = $descrizione_riga; - $riga->setPrezzoUnitario($prezzo_unitario, $id_iva); - $riga->qta = $qta_riga; + $descrizione = variables($descrizione, $inizio, $fine)['descrizione']; - $riga->save(); + $inizio = $fine; + $fine = date("Y-m-d", strtotime($timeing, strtotime($inizio))); + $inizio = date("Y-m-d", strtotime($inizio.' +1 days')); + + $prezzo_unitario = ($r->subtotale / $r->qta); + + if( !empty($r->idarticolo) ){ + $articolo = ArticoloOriginale::find($r->idarticolo); + $riga = Articolo::build($contratto, $articolo); + }else{ + $riga = Riga::build($contratto); + } + + $riga->descrizione = $descrizione; + $riga->setPrezzoUnitario($prezzo_unitario, $r->idiva); + $riga->qta = $qta_riga; + $riga->idpianificazione = $pianificazioni[$rata]; + + $riga->save(); + + $qta_evasa += $qta_riga; + } } + $r->delete(); } } diff --git a/plugins/pianificazione_fatturazione/add_pianificazione.php b/plugins/pianificazione_fatturazione/add_pianificazione.php index a1c6155bc..b909efd77 100755 --- a/plugins/pianificazione_fatturazione/add_pianificazione.php +++ b/plugins/pianificazione_fatturazione/add_pianificazione.php @@ -1,7 +1,7 @@ $i, + 'text' => $i, + ]; +} + echo '
@@ -35,33 +44,34 @@ echo '
-
'; - -$data_corrente = $contratto->data_accettazione->startOfMonth(); -$data_conclusione = $contratto->data_conclusione; -$count = 0; -while ($data_corrente->lessThanOrEqualTo($data_conclusione)) { - $data = $data_corrente->endOfMonth()->format('Y-m-d'); - - echo ' +
+
- - -
'; - - $data_corrente = $data_corrente->addDay(); - ++$count; -} - -echo ' + {[ "type": "select", "label": "'.tr('Ricorrenza fatturazione').'", "name": "scadenza", "values": "list=\"\":\"Seleziona un\'opzione\", \"Mensile\":\"Mensile\", \"Bimestrale\":\"Bimestrale\", \"Trimestrale\":\"Trimestrale\", \"Quadrimestrale\":\"Quadrimestrale\", \"Semestrale\":\"Semestrale\", \"Annuale\":\"Annuale\"", "value": "Mensile", "help":"'.tr('Specificare la cadenza con cui creare la pianificazione fatturazione').'" ]} +
+
+ {[ "type": "select", "label": "'.tr('Giorno di fatturazione').'", "name": "cadenza_fatturazione", "values": "list=\"\":\"Seleziona un\'opzione\", \"Inizio\":\"Inizio mese\", \"Fine\":\"Fine mese\", \"Giorno\":\"Giorno fisso\" ", "value": "Inizio", "help":"'.tr('Specificare per la pianificazione fatturazione se si desidera creare le fatture a inizio mese o alla fine. Se non specificata alcuna opzione saranno create di default a fine mese.').'" ]} +
+ +
+ {[ "type": "date", "label": "'.tr('Data inizio fatturazione').'", "name": "data_inizio", "value": "'.$contratto->data_accettazione.'", "help":"'.tr('Data da cui far partire la prima fattura del contratto.').'" ]} +
+
+
+
+

Rate: 0

+
+
+
+
+

@@ -84,33 +94,59 @@ echo '
'; $iva_righe = $contratto->getRighe()->groupBy('idiva'); + +/* foreach ($iva_righe as $id_iva => $righe) { $iva = $righe->first()->aliquota; + $descrizione = $righe->first()->descrizione; $righe = $righe->toArray(); +*/ + +$righe = $contratto->getRighe(); + +echo ' +
+

'.tr("Puoi utilizzare le seguenti variabili nella descrizione delle righe").':

'.variables()['list'].' +
'; + +foreach ($righe as $riga) { + $id_iva = $riga->id_iva; + $descrizione = $riga->descrizione."\n{periodo}"; + + $options = [ + 'id' => $riga->id, + 'totale_imponibile' => $riga->totale_imponibile, + 'iva' => $riga->iva, + 'totale' => $riga->totale, + 'qta' => $riga->qta, + ]; + $options = json_encode($options); echo ' -
'.tr('Informazioni generali sulle righe con IVA: _IVA_', [ - '_IVA_' => $iva->descrizione, - ]).'
+
- {[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione['.$id_iva.']", "value": "'.tr('Canone contratto numero _NUM__IVA_', [ - '_IVA_' => (count($iva_righe) > 1) ? ': '.$iva->descrizione : '', - '_NUM_' => $contratto->numero, - ]).'" ]} + {[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione['.$riga->id.']", "value": "'.$descrizione.'" ]} - {[ "type": "number", "label": "'.tr('Q.tà per fattura').'", "name": "qta['.$id_iva.']", "required": 1, "value": "1", "decimals": "qta", "min-value": "1" ]} + {[ "type": "number", "label": "'.tr('Q.tà per fattura').'", "class":"qta_fattura", "name": "qta['.$riga->id.']", "required": 1, "value": "1", "decimals": "qta", "min-value": "1", "icon-after":"'.tr('Su _TOT_',[ + '_TOT_' => Translator::numberToLocale( ($riga->qta-$riga->qta_evasa) ), + ]).'", "options":"'.str_replace('"','\"',$options).'" ]}
-
-

'.tr('Imponibile').': '.moneyFormat(sum(array_column($righe, 'totale_imponibile'))).'

-

'.tr('IVA').': '.moneyFormat(sum(array_column($righe, 'iva'))).'

-

'.tr('Totale').': '.moneyFormat(sum(array_column($righe, 'totale'))).'

+

'; } +echo ' +
+
+
+
'; + echo '
@@ -127,15 +163,98 @@ echo ' '; diff --git a/plugins/pianificazione_fatturazione/ajax_cadenza.php b/plugins/pianificazione_fatturazione/ajax_cadenza.php new file mode 100644 index 000000000..b37cab03b --- /dev/null +++ b/plugins/pianificazione_fatturazione/ajax_cadenza.php @@ -0,0 +1,93 @@ +. + */ + +use Carbon\Carbon; +use Modules\Contratti\Contratto; + +include_once __DIR__.'/../../core.php'; + +$contratto = Contratto::find($id_record); + +if(get('scadenza')=='Mensile'){ + $timeing = '+1 month'; +} +if(get('scadenza')=='Bimestrale'){ + $timeing = '+2 month'; +} +if(get('scadenza')=='Trimestrale'){ + $timeing = '+3 month'; +} +if(get('scadenza')=='Quadrimestrale'){ + $timeing = '+4 month'; +} +if(get('scadenza')=='Semestrale'){ + $timeing = '+6 month'; +} +if(get('scadenza')=='Annuale'){ + $timeing = '+12 month'; +} + +$data_inizio = new Carbon(get('data_inizio')); + +echo ' +
'; + + $data_corrente = $data_inizio->startOfMonth(); + $data_conclusione = $contratto->data_conclusione; + $count = 0; + + while ($data_corrente->lessThanOrEqualTo($data_conclusione)) { + $data = $data_corrente->endOfMonth()->format('Y-m-d'); + $data_fatturazione = ($data_fatturazione ?: date("Y-m", strtotime($data)) ); + unset($checked); + + if( $id_module==Modules::get('Contratti')['id'] ){ + if( $data==date("Y-m-t", strtotime($timeing, strtotime($data_fatturazione)) ) ){ + $checked = 'checked'; + $data_fatturazione = date("Y-m", strtotime($data)); + } + } + + echo ' +
+ + +
'; + + $data_corrente = $data_corrente->addDay(); + ++$count; + } + + echo ' +
+ +'; \ No newline at end of file diff --git a/plugins/pianificazione_fatturazione/crea_fattura.php b/plugins/pianificazione_fatturazione/crea_fattura.php index 79775519b..8bf7c81f2 100755 --- a/plugins/pianificazione_fatturazione/crea_fattura.php +++ b/plugins/pianificazione_fatturazione/crea_fattura.php @@ -1,7 +1,7 @@ pianificazioni->search(function ($item) use ($id_pian $module_fattura = Modules::get('Fatture di vendita'); $id_conto = setting('Conto predefinito fatture di vendita'); +$data = date("Y-m",strtotime($pianificazione->data_scadenza))."-".date("d",strtotime($contratto->data_accettazione)); echo ' @@ -47,7 +48,7 @@ echo ' echo '
- {[ "type": "date", "label": "'.tr('Data').'", "name": "data", "required": 1, "class": "text-center", "value": "-now-" ]} + {[ "type": "date", "label": "'.tr('Data').'", "name": "data", "required": 1, "class": "text-center", "value": "'.$pianificazione->data_scadenza.'" ]}
'; // Tipo di documento diff --git a/plugins/pianificazione_fatturazione/edit.php b/plugins/pianificazione_fatturazione/edit.php index 0a235a9e7..2bbc1b4ea 100755 --- a/plugins/pianificazione_fatturazione/edit.php +++ b/plugins/pianificazione_fatturazione/edit.php @@ -1,7 +1,7 @@ 'Gennaio', + '02' => 'Febbraio', + '03' => 'Marzo', + '04' => 'Aprile', + '05' => 'Maggio', + '06' => 'Giugno', + '07' => 'Luglio', + '08' => 'Agosto', + '09' => 'Settembre', + '11' => 'Ottobre', + '11' => 'Novembre', + '12' => 'Dicembre', + ]; + + $result['list'] = "
    +
  • {periodo}
  • +
  • {data_inizio}
  • +
  • {data_fine}
  • +
  • {mese_fatturazione}
  • +
"; + + if( !empty($descrizione) ){ + $result['descrizione'] = str_replace("{periodo}","durata dal ".Translator::dateToLocale($inizio)." al ".Translator::dateToLocale($fine),$descrizione); + $result['descrizione'] = str_replace("{data_inizio}",Translator::dateToLocale($inizio), $result['descrizione']); + $result['descrizione'] = str_replace("{data_fine}",Translator::dateToLocale($fine), $result['descrizione']); + $result['descrizione'] = str_replace("{mese_fatturazione}", $mese[date('m',strtotime($inizio))], $result['descrizione']); + } + + return $result; + } \ No newline at end of file diff --git a/plugins/pianificazione_fatturazione/src/Pianificazione.php b/plugins/pianificazione_fatturazione/src/Pianificazione.php index 42ee2b691..0bdca3812 100755 --- a/plugins/pianificazione_fatturazione/src/Pianificazione.php +++ b/plugins/pianificazione_fatturazione/src/Pianificazione.php @@ -1,7 +1,7 @@ leftjoin('co_contratti', 'co_contratti.id', '=', 'co_fatturazione_contratti.idcontratto') - ->leftjoin('an_anagrafiche', 'an_anagrafiche.idanagrafica', '=', 'co_contratti.idanagrafica') ->orderBy('data_scadenza', 'asc') - ->orderBy('ragione_sociale', 'asc') ->whereHas('contratto', function($q){ $q->whereHas('stato', function($q){ $q->where('is_fatturabile', 1); diff --git a/plugins/rinnovi_contratti/edit.php b/plugins/rinnovi_contratti/edit.php index dec0375e9..e35970a17 100755 --- a/plugins/rinnovi_contratti/edit.php +++ b/plugins/rinnovi_contratti/edit.php @@ -18,13 +18,48 @@ */ include_once __DIR__.'/../../core.php'; +include_once __DIR__.'/../init.php'; $id_contratto_precedente = $record['idcontratto_prev']; -if (empty($id_contratto_precedente)) { - echo ' - '; -} +echo ' + + + + + +
+
+

'.tr('Informazioni per rinnovo').'

+
+ +
+ +
+
+ {[ "type": "checkbox", "label": "'.tr('Rinnovabile').'", "name": "rinnovabile", "help": "'.tr('Il contratto è rinnovabile?').'", "value": "$rinnovabile$" ]} +
+ +
+ {[ "type": "checkbox", "label": "'.tr('Rinnovo automatico').'", "name": "rinnovo_automatico", "help": "'.tr('Il contratto è da rinnovare automaticamente alla scadenza').'", "value": "$rinnovo_automatico$", "disabled": '.($record['rinnovabile'] ? 0 : 1).' ]} +
+ + +
+ {[ "type": "number", "label": "'.tr('Preavviso per rinnovo').'", "name": "giorni_preavviso_rinnovo", "decimals": "2", "value": "$giorni_preavviso_rinnovo$", "icon-after": "giorni", "disabled": '.($record['rinnovabile'] ? 0 : 1).' ]} +
+ +
+ {[ "type": "number", "label": "'.tr('Ore rimanenti rinnovo').'", "name": "ore_preavviso_rinnovo", "decimals": "2", "value": "$ore_preavviso_rinnovo$", "icon-after": "ore", "disabled": '.($record['rinnovabile'] ? 0 : 1).', "help": "'.tr('Ore residue nel contratto prima di visualizzare una avviso per un eventuale rinnovo anticipato.').'" ]} +
+
+ +
+ +
+
+
+'; echo ' diff --git a/update/2_4_22.sql b/update/2_4_22.sql index 14be1addd..ef6ceffcd 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -136,3 +136,8 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti`\r\n LEF INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Fatture di acquisto'), '_bg_', 'IF(`d`.`conteggio`>1, \'red\', \'\')', '1', '0', '0', '0', '', '', '0', '0', '0'); INSERT INTO `zz_group_view` (`id_gruppo`, `id_vista`) (SELECT `zz_groups`.`id`, `zz_views`.`id` FROM `zz_groups`, `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = '_bg_'); + + +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'Descrizione fattura pianificata', 'Canone {rata} del contratto numero {numero}', 'text', '1', 'Fatturazione'); + +ALTER TABLE `co_righe_contratti` ADD `idpianificazione` INT NULL DEFAULT NULL AFTER `idarticolo`; \ No newline at end of file From 00566db5861a5d9d0b7018324a9d1c2da4cd40c0 Mon Sep 17 00:00:00 2001 From: Matteo Date: Thu, 18 Feb 2021 10:42:52 +0100 Subject: [PATCH 2/2] Impostazione per numero massimo tentativi di invio hook mail --- modules/emails/src/EmailHook.php | 8 ++++---- update/2_4_22.sql | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/emails/src/EmailHook.php b/modules/emails/src/EmailHook.php index 003614cca..e0c0cc03f 100755 --- a/modules/emails/src/EmailHook.php +++ b/modules/emails/src/EmailHook.php @@ -42,7 +42,7 @@ class EmailHook extends Manager $accounts = Account::all(); $remaining = Mail::whereNull('sent_at') ->where($failed) - ->where('attempt', '<', 10) + ->where('attempt', '<', setting('Numero massimo di tentativi')) ->whereIn('id_account', $accounts->pluck('id')) ->count(); @@ -74,7 +74,7 @@ class EmailHook extends Manager $mail = Mail::whereNull('sent_at') ->where('id_account', $account->id) ->where($failed) - ->where('attempt', '<', 10) + ->where('attempt', '<', setting('Numero massimo di tentativi')) ->orderBy('created_at') ->first(); @@ -103,14 +103,14 @@ class EmailHook extends Manager $user = auth()->getUser(); $current = Mail::whereDate('sent_at', '>', $yesterday) - ->where('attempt', '<', 10) + ->where('attempt', '<', setting('Numero massimo di tentativi')) ->where('created_by', $user->id) ->count(); $total = Mail::where(function ($query) use ($yesterday) { $query->whereDate('sent_at', '>', $yesterday) ->orWhereNull('sent_at'); }) - ->where('attempt', '<', 10) + ->where('attempt', '<', setting('Numero massimo di tentativi')) ->where('created_by', $user->id) ->count(); diff --git a/update/2_4_22.sql b/update/2_4_22.sql index 3e3f8ad62..b4ca30acd 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -144,3 +144,6 @@ ALTER TABLE `co_righe_contratti` ADD `idpianificazione` INT NULL DEFAULT NULL AF INSERT INTO `zz_prints` (`id`, `id_module`, `is_record`, `name`, `title`, `filename`, `directory`, `previous`, `options`, `icon`, `version`, `compatibility`, `order`, `predefined`, `default`, `enabled`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name`='Fatture di vendita'), '1', 'Fattura elettronica di vendita', 'Fattura elettronica di vendita', 'Fattura elettronica {numero} del {data}', 'fatture_elettroniche', 'iddocumento', '{\"hide-header\": true, \"hide-footer\": true}', 'fa fa-print', '', '', '0', '1', '1', '1'); INSERT INTO `zz_prints` (`id`, `id_module`, `is_record`, `name`, `title`, `filename`, `directory`, `previous`, `options`, `icon`, `version`, `compatibility`, `order`, `predefined`, `default`, `enabled`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name`='Fatture di acquisto'), '1', 'Fattura elettronica di acquisto', 'Fattura elettronica di acquisto', 'Fattura elettronica {numero} del {data}', 'fatture_elettroniche', 'iddocumento', '{\"hide-header\": true, \"hide-footer\": true}', 'fa fa-print', '', '', '0', '1', '1', '1'); + +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES +(NULL, 'Numero massimo di tentativi', '10', 'integer', 1, 'Newsletter', 1, 'Numero massimo di tentativi da effettuare per cercare di inviare una mail');