diff --git a/actions.php b/actions.php index fff1d8993..cca727e2a 100755 --- a/actions.php +++ b/actions.php @@ -318,7 +318,10 @@ elseif (post('op') == 'send-email') { // Inclusione di eventuale plugin personalizzato if (!empty($structure['script'])) { - include $structure->getEditFile(); + $path = $structure->getEditFile(); + if (!empty($path)) { + include $path; + } $database->commitTransaction(); diff --git a/assets/src/js/functions/input.js b/assets/src/js/functions/input.js index e54444529..a45a555f4 100644 --- a/assets/src/js/functions/input.js +++ b/assets/src/js/functions/input.js @@ -136,7 +136,7 @@ Input.prototype.getElement = function () { /** * Gestisce l'abilitazione e la disibilitazione dell'input sulla base del valore indicato. * - * @param {bool} value + * @param {boolean} value * @returns {Input} */ Input.prototype.setDisabled = function (value) { @@ -215,6 +215,15 @@ Input.prototype.enable = function () { return this; } +/** + * Controlla se l'input è disabilitato. + * + * @returns {boolean} + */ +Input.prototype.isDisabled = function () { + return this.element.hasClass("disabled") +} + /** * Restituisce un oggetto cotentente le caratteristiche dell'input. * diff --git a/editor.php b/editor.php index c6808bbc8..bb2708334 100755 --- a/editor.php +++ b/editor.php @@ -273,7 +273,10 @@ if (empty($record) || !$has_access) {
'; - include $structure->getEditFile(); + $path = $structure->getEditFile(); + if (!empty($path)) { + include $path; + } echo '
diff --git a/include/manager.php b/include/manager.php index b44fd87eb..39f49d551 100755 --- a/include/manager.php +++ b/include/manager.php @@ -31,7 +31,10 @@ if (!empty($id_plugin)) { if (!empty($id_plugin)) { // Inclusione di eventuale plugin personalizzato if (!empty($structure['script'])) { - include $structure->getEditFile(); + $path = $structure->getEditFile(); + if (!empty($path)) { + include $path; + } return; } @@ -234,7 +237,10 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') { * Inclusione modulo personalizzato */ elseif ($type == 'custom') { - include $structure->getEditFile(); + $path = $structure->getEditFile(); + if (!empty($path)) { + include $path; + } } // Caricamento file aggiuntivo su elenco record diff --git a/mail.php b/mail.php index 1864d94cb..3e6d3fe54 100755 --- a/mail.php +++ b/mail.php @@ -82,7 +82,7 @@ echo ' '.tr('Destinatari').'
- {[ "type": "email", "name": "destinatari[0]", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungi_destinatario();\'", "class": "destinatari", "required": 1 ]} + {[ "type": "email", "name": "destinatari[0]", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 1 ]}
@@ -136,7 +136,7 @@ echo '
- +
'; @@ -144,7 +144,7 @@ echo ' echo ' '; @@ -161,18 +161,10 @@ echo ' emails = JSON.parse(response); $(".destinatari").each(function(){ - $(this).autocomplete({ - source: emails, - minLength: 0, - close: function(){ - aggiungi_destinatario(); - } - }).focus(function() { - $(this).autocomplete("search", $(this).val()); - }); + addAutoComplete(this); }); - aggiungi_destinatario(); + aggiungiDestinatario(); });'; } @@ -180,13 +172,25 @@ echo ' }); - function send() { + function inviaEmail() { if($("#email-form").parsley().validate() && confirm("Inviare e-mail?")) { $("#email-form").submit(); } } - function aggiungi_destinatario() { + function addAutoComplete(input){ + $(input).autocomplete({ + source: emails, + minLength: 0, + close: function() { + aggiungiDestinatario(); + }, + }).focus(function() { + $(this).autocomplete("search", $(this).val()); + }); + } + + function aggiungiDestinatario() { var last = $("#lista-destinatari input").last(); if (last.val()) { @@ -195,7 +199,7 @@ echo ' aggiungiContenuto("#lista-destinatari", "#template-destinatario", {"-id-": $("#lista-destinatari > div").length}); $(".destinatari").each(function(){ - $(this).autocomplete({source: emails}); + addAutoComplete(this); }); restart_inputs(); diff --git a/modules/articoli/src/Import/CSV.php b/modules/articoli/src/Import/CSV.php index a07591193..333408b7a 100644 --- a/modules/articoli/src/Import/CSV.php +++ b/modules/articoli/src/Import/CSV.php @@ -218,7 +218,7 @@ class CSV extends CSVImporter // Gestione categoria e sottocategoria $categoria = null; - $sotto_categoria = null; + $sottocategoria = null; if (!empty($record['id_categoria'])) { // Categoria $categoria = Categoria::where('nome', strtolower($record['id_categoria']))->first(); @@ -229,14 +229,14 @@ class CSV extends CSVImporter // Sotto-categoria if (!empty($record['id_sottocategoria'])) { - $sotto_categoria = Categoria::where('nome', $record['id_sottocategoria']) + $sottocategoria = Categoria::where('nome', $record['id_sottocategoria']) ->where('parent', $categoria->id) ->first(); if (empty($sottocategoria)) { - $sotto_categoria = Categoria::build($record['id_categoria']); - $sotto_categoria->parent()->associate($categoria); - $sotto_categoria->save(); + $sottocategoria = Categoria::build($record['id_sottocategoria']); + $sottocategoria->parent()->associate($categoria); + $sottocategoria->save(); } } } @@ -254,7 +254,7 @@ class CSV extends CSVImporter $articolo = Articolo::where($primary_key, $record[$primary_key])->first(); } if (empty($articolo)) { - $articolo = Articolo::build($record['codice'], $record['descrizione'], $categoria, $sotto_categoria); + $articolo = Articolo::build($record['codice'], $record['descrizione'], $categoria, $sottocategoria); } $articolo->idiva_vendita = $aliquota->id; diff --git a/modules/banche/actions.php b/modules/banche/actions.php index c3f3ffd54..4fb8fcfa2 100755 --- a/modules/banche/actions.php +++ b/modules/banche/actions.php @@ -18,7 +18,9 @@ */ use Modules\Anagrafiche\Anagrafica; +use Modules\Anagrafiche\Nazione; use Modules\Banche\Banca; +use Modules\Banche\IBAN; include_once __DIR__.'/../../core.php'; @@ -28,10 +30,8 @@ switch (filter('op')) { $anagrafica = Anagrafica::find($id_anagrafica); $nome = filter('nome'); - $iban = filter('iban'); - $bic = filter('bic'); - $banca = Banca::build($anagrafica, $nome, $iban, $bic); + $banca = Banca::build($anagrafica, $nome, filter('iban'), filter('bic')); $id_record = $banca->id; if (isAjaxRequest()) { @@ -75,5 +75,41 @@ switch (filter('op')) { '_TYPE_' => 'Banca', ])); + break; + + case 'compose': + $nazione = Nazione::find(filter('id_nazione')); + + $iban = IBAN::generate([ + 'nation' => $nazione->iso2, + 'bank_code' => filter('bank_code'), + 'branch_code' => filter('branch_code'), + 'account_number' => filter('account_number'), + 'check_digits' => filter('check_digits'), + 'national_check_digits' => filter('national_check_digits'), + ]); + + echo json_encode([ + 'iban' => $iban->getIban(), + ]); + + break; + + case 'decompose': + $iban = new IBAN(filter('iban')); + $nazione = Nazione::where('iso2', '=', $iban->getNation())->first(); + + echo json_encode([ + 'id_nazione' => [ + 'id' => $nazione->id, + 'text' => $nazione->nome, + ], + 'bank_code' => $iban->getBankCode(), + 'branch_code' => $iban->getBranchCode(), + 'account_number' => $iban->getAccountNumber(), + 'check_digits' => $iban->getCheckDigits(), + 'national_check_digits' => $iban->getNationalCheckDigits(), + ]); + break; } diff --git a/modules/banche/add.php b/modules/banche/add.php index 48167d343..a589e6311 100755 --- a/modules/banche/add.php +++ b/modules/banche/add.php @@ -21,8 +21,6 @@ include_once __DIR__.'/../../core.php'; $id_anagrafica = filter('id_anagrafica'); -$help_codice_bic = tr('Il codice BIC (o SWIFT) è composto da 8 a 11 caratteri (lettere e numeri) ed è suddiviso in:').'

'; - echo '
@@ -42,6 +40,7 @@ echo '
{[ "type": "text", "label": "'.tr('IBAN').'", "name": "iban", "required": "1", "class": "alphanumeric-mask", "maxlength": 32, "value": "$iban$" ]}
+
{[ "type": "text", "label": "'.tr('BIC').'", "name": "bic", "required": "1", "class": "alphanumeric-mask", "minlength": 8, "maxlength": 11, "value": "$bic$", "help": "'.$help_codice_bic.'" ]}
diff --git a/modules/banche/edit.php b/modules/banche/edit.php index 930d59230..751bbbbe6 100644 --- a/modules/banche/edit.php +++ b/modules/banche/edit.php @@ -59,10 +59,12 @@ include_once __DIR__.'/../../core.php'; {[ "type": "text", "label": "", "name": "iban", "required": "1", "class": "alphanumeric-mask", "maxlength": 32, "value": "$iban$" ]} -
- {[ "type": "text", "label": "", "name": "bic", "required": "1", "class": "alphanumeric-mask", "maxlength": 11, "value": "$bic$" ]} +
+ {[ "type": "text", "label": "", "name": "bic", "required": "1", "class": "alphanumeric-mask", "minlength": 8, "maxlength": 11, "value": "$bic$", "help": "" ]}
+
+
{[ "type": "text", "label": "", "name": "creditor_id", "class": "alphanumeric-mask", "value": "$creditor_id$", "help": "" ]}
@@ -79,9 +81,45 @@ include_once __DIR__.'/../../core.php';
-
+ +
+
+

+
+ +
+
+
+ {[ "type": "select", "label": "", "name": "id_nazione", "value": "$id_nazione$", "ajax-source": "nazioni" ]} +
+ +
+ {[ "type": "text", "label": "", "name": "branch_code", "class": "alphanumeric-mask", "value": "$branch_code$" ]} +
+ +
+ {[ "type": "text", "label": "", "name": "bank_code", "class": "alphanumeric-mask", "value": "$bank_code$" ]} +
+
+ +
+
+ {[ "type": "text", "label": "", "name": "account_number", "class": "alphanumeric-mask", "value": "$account_number$"]} +
+ +
+ {[ "type": "text", "label": "", "name": "check_digits", "class": "alphanumeric-mask", "value": "$check_digits$" ]} +
+ +
+ {[ "type": "text", "label": "", "name": "national_check_digits", "class": "alphanumeric-mask", "value": "$national_check_digits$" ]} +
+
+
+
+ fetchNum('SELECT idanagrafica FROM an_anagrafiche WHERE idbanca_vendite='.prepare($id_record).' @@ -101,3 +139,105 @@ if (!empty($numero_documenti)) { + + diff --git a/modules/banche/init.php b/modules/banche/init.php index 24ca85a98..01cc200ab 100755 --- a/modules/banche/init.php +++ b/modules/banche/init.php @@ -28,3 +28,5 @@ if (isset($id_record)) { $record = $banca->toArray(); } } + +$help_codice_bic = tr('Il codice BIC (o SWIFT) è composto da 8 a 11 caratteri (lettere e numeri) ed è suddiviso in:').'

'; diff --git a/modules/banche/src/Banca.php b/modules/banche/src/Banca.php index c57816402..4fefc238e 100644 --- a/modules/banche/src/Banca.php +++ b/modules/banche/src/Banca.php @@ -23,6 +23,7 @@ use Common\SimpleModelTrait; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Modules\Anagrafiche\Anagrafica; +use Modules\Anagrafiche\Nazione; class Banca extends Model { @@ -65,6 +66,17 @@ class Banca extends Model { $this->fixPredefined(); + // Camponenti IBAN + $iban = new IBAN($this->iban); + $nazione = Nazione::where('iso2', '=', $iban->getNation())->first(); + $this->id_nazione = $nazione->id; + $this->iban = $iban->getIban(); + $this->bank_code = $iban->getBankCode(); + $this->branch_code = $iban->getBranchCode(); + $this->account_number = $iban->getAccountNumber(); + $this->check_digits = $iban->getCheckDigits(); + $this->national_check_digits = $iban->getNationalCheckDigits(); + return parent::save($options); } diff --git a/modules/banche/src/IBAN.php b/modules/banche/src/IBAN.php index 9035c8fd4..501d76c21 100644 --- a/modules/banche/src/IBAN.php +++ b/modules/banche/src/IBAN.php @@ -11,8 +11,8 @@ use UnexpectedValueException; * c = Account number * d = Account type * i = National identification number - * k = IBAN check digits - * x = National check digits (CIN). + * k = IBAN check digits (CIN europeo) + * x = National check digits (CIN nazionale). */ class IBAN { @@ -417,7 +417,7 @@ class IBAN preg_match_all('/^'.$regex.'/', $iban, $matches); $matches = array_filter($matches, 'is_string', ARRAY_FILTER_USE_KEY); foreach ($matches as $key => $value) { - if (empty($value[0])) { + if (!isset($value[0])) { throw new UnexpectedValueException('Invalid '.$key.' for format '.$regex); } @@ -442,7 +442,9 @@ class IBAN $char = $structure[$current]; if (in_array($char, $keys)) { $count = substr_count($structure, $char); - $result .= str_pad($contents[self::$parsers[$char]], $count, STR_PAD_LEFT); + $result .= str_pad( + substr($contents[self::$parsers[$char]], 0, $count), + $count, STR_PAD_LEFT); $current += $count; } else { $result .= $char; diff --git a/modules/emails/buttons.php b/modules/emails/buttons.php index 578483a8b..e8acb1891 100644 --- a/modules/emails/buttons.php +++ b/modules/emails/buttons.php @@ -19,7 +19,7 @@ include_once __DIR__.'/../../core.php'; -echo' +echo ' '; // Duplica template @@ -28,4 +28,3 @@ echo ' '; - diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 13b474e9d..91993e5a0 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -327,7 +327,7 @@ elseif ($record['stato'] == 'Bozza') { '; } - echo (empty($scadenza->da_pagare) ? '' : '').moneyFormat($scadenza->da_pagare); + echo(empty($scadenza->da_pagare) ? '' : '').moneyFormat($scadenza->da_pagare); if ($pagamento_iniziato) { echo ' diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index 38773c688..36dc3c42a 100755 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -551,7 +551,6 @@ class Fattura extends Document $this->attributes['iva_rivalsainps'] = $this->iva_rivalsa_inps; $this->attributes['rivalsainps'] = $this->rivalsa_inps; $this->attributes['ritenutaacconto'] = $this->ritenuta_acconto; - // Generazione numero fattura se non presente (Bozza -> Emessa) if ((($stato_precedente->descrizione == 'Bozza' && $this->stato['descrizione'] == 'Emessa') or (!$is_fiscale)) && empty($this->numero_esterno)) { diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index cbedc9173..137784d65 100755 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -236,7 +236,7 @@ switch (post('op')) { } catch (InvalidArgumentException $e) { } } - + flash()->info(tr('Interventi eliminati!')); break; } @@ -247,7 +247,6 @@ if (App::debug()) { ]; } - $operations['export-bulk'] = [ 'text' => ' '.tr('Esporta stampe'), 'data' => [ diff --git a/plugins/pianificazione_fatturazione/actions.php b/plugins/pianificazione_fatturazione/actions.php index a7d3efde3..46ba6d83f 100755 --- a/plugins/pianificazione_fatturazione/actions.php +++ b/plugins/pianificazione_fatturazione/actions.php @@ -165,7 +165,7 @@ switch ($operazione) { // Creazione fattura if (empty($id_documento)) { $fattura = Fattura::build($contratto->anagrafica, $tipo, $data, $id_segment); - }else{ + } else { $fattura = Fattura::find($id_documento); } $fattura->note = post('note'); diff --git a/plugins/pianificazione_fatturazione/crea_fattura.php b/plugins/pianificazione_fatturazione/crea_fattura.php index 07ad5c0ac..3e3a9974f 100755 --- a/plugins/pianificazione_fatturazione/crea_fattura.php +++ b/plugins/pianificazione_fatturazione/crea_fattura.php @@ -80,11 +80,15 @@ echo ' '; -// Descrizione fattura -$descrizione = tr('Rata _N_ del contratto numero _NUM_', [ - '_N_' => $numero_rata, - '_NUM_' => $contratto->numero, -]); +//gestione replace +$descrizione = get_var('Descrizione fattura pianificata'); +$modules = MODULES::get('Contratti')['id']; +$variables = include Modules::filepath($modules, 'variables.php'); +foreach ($variables as $variable => $value) { + $descrizione = str_replace('{'.$variable.'}', $value, $descrizione); +} +$descrizione = str_replace('{rata}', $numero_rata, $descrizione); +$descrizione = str_replace('{zona}', $zona, $descrizione); echo '
diff --git a/src/HTMLBuilder/Handler/DefaultHandler.php b/src/HTMLBuilder/Handler/DefaultHandler.php index 1fcadf65f..4151535d4 100755 --- a/src/HTMLBuilder/Handler/DefaultHandler.php +++ b/src/HTMLBuilder/Handler/DefaultHandler.php @@ -72,7 +72,7 @@ class DefaultHandler implements HandlerInterface { // Generazione del codice HTML return ' - '; + '; } /** diff --git a/templates/anagrafiche/body.php b/templates/anagrafiche/body.php index 763e57067..4ce1241ac 100755 --- a/templates/anagrafiche/body.php +++ b/templates/anagrafiche/body.php @@ -18,7 +18,6 @@ */ use Modules\Interventi\Intervento; -use Carbon\Carbon; include_once __DIR__.'/../../core.php'; @@ -59,21 +58,20 @@ echo ' '; - /* Sedi */ -$sedi = $dbo->fetchArray("SELECT * FROM an_sedi WHERE idanagrafica=".prepare($anagrafica->idanagrafica)); -if( !empty($sedi) ){ +$sedi = $dbo->fetchArray('SELECT * FROM an_sedi WHERE idanagrafica='.prepare($anagrafica->idanagrafica)); +if (!empty($sedi)) { echo ' '; - for($i=0; count($sedi)>$i; $i++){ - echo ' + for ($i = 0; count($sedi) > $i; ++$i) { + echo ' @@ -90,11 +88,11 @@ if( !empty($sedi) ){ '; - if( !empty($sedi[$i+1]) ){ - echo ' + if (!empty($sedi[$i + 1])) { + echo ' '; - } } + } echo '
'.tr('Sedi', [], ['upper' => true]).'
'.tr('Nome sede').': '.$sedi[$i]['nomesede'].'
'.tr('cellulare').': '.$sedi[$i]['cellulare'].'
'; @@ -104,17 +102,17 @@ if( !empty($sedi) ){ Impianti */ -$impianti = $dbo->fetchArray("SELECT * FROM my_impianti WHERE idanagrafica=".prepare($anagrafica->idanagrafica)); +$impianti = $dbo->fetchArray('SELECT * FROM my_impianti WHERE idanagrafica='.prepare($anagrafica->idanagrafica)); -if( !empty($impianti) ){ +if (!empty($impianti)) { echo ' '; - for($i=0; count($impianti)>$i; $i++){ - echo ' + for ($i = 0; count($impianti) > $i; ++$i) { + echo ' @@ -126,11 +124,11 @@ if( !empty($impianti) ){ '; - if( !empty($impianti[$i+1]) ){ - echo ' + if (!empty($impianti[$i + 1])) { + echo ' '; - } } + } echo '
'.tr('Impianti', [], ['upper' => true]).'
'.tr('Matricola').': '.$impianti[$i]['matricola'].' '.tr('Data').': '.Translator::dataToLocale($impianti[$i]['data']).''.tr('descrizione').': '.$impianti[$i]['descrizione'].'
'; @@ -140,18 +138,18 @@ if( !empty($impianti) ){ Attività */ -$interventi = $dbo->fetchArray("SELECT id, sessione.inizio FROM in_interventi LEFT JOIN (SELECT MIN(orario_inizio) AS inizio, in_interventi_tecnici.idintervento FROM in_interventi_tecnici GROUP BY in_interventi_tecnici.idintervento) AS sessione ON sessione.idintervento=in_interventi.id WHERE idanagrafica=".prepare($anagrafica->idanagrafica)); +$interventi = $dbo->fetchArray('SELECT id, sessione.inizio FROM in_interventi LEFT JOIN (SELECT MIN(orario_inizio) AS inizio, in_interventi_tecnici.idintervento FROM in_interventi_tecnici GROUP BY in_interventi_tecnici.idintervento) AS sessione ON sessione.idintervento=in_interventi.id WHERE idanagrafica='.prepare($anagrafica->idanagrafica)); -if( !empty($interventi) ){ +if (!empty($interventi)) { echo ' '; - for($i=0; count($interventi)>$i; $i++){ - $intervento = Intervento::find($interventi[$i]['id']); - echo ' + for ($i = 0; count($interventi) > $i; ++$i) { + $intervento = Intervento::find($interventi[$i]['id']); + echo ' @@ -165,12 +163,12 @@ if( !empty($interventi) ){ '; - if( !empty($interventi[$i+1]) ){ - echo ' + if (!empty($interventi[$i + 1])) { + echo ' '; - } } + } echo '
'.tr('Attività', [], ['upper' => true]).'
'.tr('Data richiesta').': '.Translator::dateToLocale($intervento->data_richiesta).' '.tr('Data scadenza').': '.Translator::dateToLocale($intervento->data_scadenza).''.tr('richiesta').': '.$intervento->richiesta.'
'; -} \ No newline at end of file +} diff --git a/templates/anagrafiche/init.php b/templates/anagrafiche/init.php index cc0cf9e41..8c3a3b06a 100755 --- a/templates/anagrafiche/init.php +++ b/templates/anagrafiche/init.php @@ -22,4 +22,4 @@ include_once __DIR__.'/../../core.php'; use Modules\Anagrafiche\Anagrafica; $anagrafica = Anagrafica::find($id_record); -$agente = Anagrafica::find($anagrafica->idagente); \ No newline at end of file +$agente = Anagrafica::find($anagrafica->idagente); diff --git a/templates/azienda/body.php b/templates/azienda/body.php index d2c520c12..051093c58 100755 --- a/templates/azienda/body.php +++ b/templates/azienda/body.php @@ -17,13 +17,11 @@ * along with this program. If not, see . */ -use Modules\Interventi\Intervento; use Modules\Banche\Banca; -use Carbon\Carbon; include_once __DIR__.'/../../core.php'; -$banca = Banca::where('id_anagrafica',$anagrafica->idanagrafica) +$banca = Banca::where('id_anagrafica', $anagrafica->idanagrafica) ->where('predefined', 1) ->first(); @@ -64,4 +62,4 @@ echo ' '.tr('cellulare').': '.$anagrafica['cellulare'].' '.tr('fax').': '.$anagrafica['fax'].' -'; \ No newline at end of file +'; diff --git a/templates/azienda/init.php b/templates/azienda/init.php index a660bf551..aa1d65294 100755 --- a/templates/azienda/init.php +++ b/templates/azienda/init.php @@ -21,4 +21,4 @@ include_once __DIR__.'/../../core.php'; use Modules\Anagrafiche\Anagrafica; -$anagrafica = Anagrafica::find(setting('Azienda predefinita')); \ No newline at end of file +$anagrafica = Anagrafica::find(setting('Azienda predefinita')); diff --git a/update/2_4_23.php b/update/2_4_23.php index cbafec978..c9cb14f57 100644 --- a/update/2_4_23.php +++ b/update/2_4_23.php @@ -1,5 +1,6 @@ registra(); } + +// Completamento automatico informazioni IBAN per banche +$banche = Banca::all(); +foreach ($banche as $banca) { + $banca->save(); +} diff --git a/update/2_4_23.sql b/update/2_4_23.sql index 474df488d..c201c14be 100644 --- a/update/2_4_23.sql +++ b/update/2_4_23.sql @@ -171,4 +171,13 @@ UPDATE `zz_widgets` SET `query` = 'SELECT \n CONCAT_WS(\' \', REPLACE(REPLACE(RE -- Aggiunto campo descrizione revisione in preventivi ALTER TABLE `co_preventivi` ADD `descrizione_revision` VARCHAR(255) NOT NULL AFTER `default_revision`; -UPDATE `zz_prints` SET `filename` = 'Preventivo num. {numero} del {data} rev {revisione}' WHERE `zz_prints`.`name` = 'Preventivo'; \ No newline at end of file +UPDATE `zz_prints` SET `filename` = 'Preventivo num. {numero} del {data} rev {revisione}' WHERE `zz_prints`.`name` = 'Preventivo'; + +-- Aggiunti campi per componenti IBAN +ALTER TABLE `co_banche` ADD `branch_code` VARCHAR(20) NULL, + ADD `bank_code` VARCHAR(20) NULL, + ADD `account_number` VARCHAR(20) NULL, + ADD `check_digits` VARCHAR(20) NULL, + ADD `national_check_digits` VARCHAR(20) NULL, + ADD `id_nazione` INT(11) NULL, + ADD FOREIGN KEY (`id_nazione`) REFERENCES `an_nazioni`(`id`);