From c2f2aa99fa002e743409575b35155df256a9725e Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Wed, 9 Sep 2020 16:55:45 +0200 Subject: [PATCH 1/8] Revisione modulo Banche Revisione del modulo Banche per aggiungere il supporto alle Anagrafiche, in modo da unificare le informazioni relative. --- config/namespaces.php | 1 + editor.php | 5 +- locale/catalog.pot | 2 +- locale/en_GB/en_GB.po | 2 +- modules/anagrafiche/ajax/select.php | 2 +- modules/anagrafiche/edit.php | 13 ++-- modules/banche/actions.php | 71 +++++++++++---------- modules/banche/add.php | 23 +++++-- modules/banche/ajax/select.php | 47 ++++++++++++++ modules/banche/edit.php | 20 ++++-- modules/banche/init.php | 6 +- modules/banche/src/Banca.php | 61 ++++++++++++++++++ modules/fatture/edit.php | 5 +- modules/fatture/src/Fattura.php | 11 ++-- plugins/exportFE/src/FatturaElettronica.php | 12 ++-- templates/fatture/init.php | 6 +- update/2_4_18.sql | 30 +++++++++ 17 files changed, 245 insertions(+), 72 deletions(-) create mode 100644 modules/banche/ajax/select.php create mode 100644 modules/banche/src/Banca.php diff --git a/config/namespaces.php b/config/namespaces.php index 4730efc04..719996745 100755 --- a/config/namespaces.php +++ b/config/namespaces.php @@ -22,6 +22,7 @@ return [ 'modules/aggiornamenti' => 'Modules\Aggiornamenti', 'modules/anagrafiche' => 'Modules\Anagrafiche', 'modules/backups' => 'Modules\Backups', + 'modules/banche' => 'Modules\Banche', 'modules/emails' => 'Modules\Emails', 'modules/articoli' => 'Modules\Articoli', 'modules/checklists' => 'Modules\Checklists', diff --git a/editor.php b/editor.php index 4e5ad9c6e..f1a76c808 100755 --- a/editor.php +++ b/editor.php @@ -39,7 +39,10 @@ if (!empty($id_record)) { ]); Util\Query::setSegments(true); } -$query = str_replace(['AND `deleted_at` IS NULL', '`deleted_at` IS NULL AND', '`deleted_at` IS NULL', 'AND deleted_at IS NULL', 'deleted_at IS NULL AND', 'deleted_at IS NULL'], '', $query); +// Replace automatico del campo deleted_at se non specifico a una tabella +if (!str_contains($query, '.`deleted_at`') && !str_contains($query, '.deleted_at')) { + $query = str_replace(['AND `deleted_at` IS NULL', '`deleted_at` IS NULL AND', '`deleted_at` IS NULL', 'AND deleted_at IS NULL', 'deleted_at IS NULL AND', 'deleted_at IS NULL'], '', $query); +} $has_access = !empty($query) ? $dbo->fetchNum($query) !== 0 : true; diff --git a/locale/catalog.pot b/locale/catalog.pot index 1cbe5d709..ee6b08704 100755 --- a/locale/catalog.pot +++ b/locale/catalog.pot @@ -3404,7 +3404,7 @@ msgid "Ci sono stati alcuni errori durante il salvataggio!" msgstr "" #: modules/banche/actions.php:43 -msgid "Aggiunta nuova _TYPE_" +msgid "Aggiunta nuova _TYPE_" msgstr "" #: modules/banche/actions.php:57 diff --git a/locale/en_GB/en_GB.po b/locale/en_GB/en_GB.po index 116a8142e..943aa6885 100755 --- a/locale/en_GB/en_GB.po +++ b/locale/en_GB/en_GB.po @@ -3985,7 +3985,7 @@ msgid "Ci sono stati alcuni errori durante il salvataggio!" msgstr "There were some errors during the saving!" #: modules/banche/actions.php:43 -msgid "Aggiunta nuova _TYPE_" +msgid "Aggiunta nuova _TYPE_" msgstr "Added new _TYPE_" #: modules/banche/actions.php:57 diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php index d2b88a04c..5b25599af 100755 --- a/modules/anagrafiche/ajax/select.php +++ b/modules/anagrafiche/ajax/select.php @@ -334,7 +334,7 @@ switch ($resource) { * - idanagrafica */ case 'dichiarazioni_intento': - $query = "SELECT id, CONCAT_WS(' - ', numero_protocollo, numero_progressivo) as descrizione FROM co_dichiarazioni_intento |where| ORDER BY data"; + $query = "SELECT id, CONCAT_WS(' - ', numero_protocollo, numero_progressivo) AS descrizione FROM co_dichiarazioni_intento |where| ORDER BY data"; foreach ($elements as $element) { $filter[] = 'id='.prepare($element); diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index e0f3faac7..21514d1c1 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -378,7 +378,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
-
+
@@ -426,7 +427,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Banca predefinita').'", "name": "idbanca_vendite", "values": "query=SELECT id, nome AS descrizione FROM co_banche WHERE deleted_at IS NULL ORDER BY nome ASC", "value": "$idbanca_vendite$", "icon-after": "add|'.Modules::get('Banche')['id'].'", "help": "'.tr('Banca predefinita su cui accreditare i pagamenti.').'" ]} + {[ "type": "select", "label": "'.tr('Banca predefinita').'", "name": "idbanca_vendite", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica->id]).', "value": "$idbanca_vendite$", "icon-after": "add|'.Modules::get('Banche')['id'].'|id_anagrafica='.$anagrafica->id.'", "help": "'.tr('Banca predefinita su cui accreditare i pagamenti').'" ]}
@@ -461,7 +462,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
'; // Collegamento con il conto - $conto = $dbo->fetchOne('SELECT co_pianodeiconti3.id, co_pianodeiconti2.numero as numero, co_pianodeiconti3.numero as numero_conto, co_pianodeiconti3.descrizione as descrizione FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti3.id = '.prepare($record['idconto_cliente'])); + $conto = $dbo->fetchOne('SELECT co_pianodeiconti3.id, co_pianodeiconti2.numero as numero, co_pianodeiconti3.numero as numero_conto, co_pianodeiconti3.descrizione AS descrizione FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti3.id = '.prepare($record['idconto_cliente'])); echo '
@@ -488,7 +489,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Banca predefinita').'", "name": "idbanca_acquisti", "values": "query=SELECT id, nome AS descrizione FROM co_banche ORDER BY nome ASC", "value": "$idbanca_acquisti$", "icon-after": "add|'.Modules::get('Banche')['id'].'" ]} + {[ "type": "select", "label": "'.tr('Banca predefinita').'", "name": "idbanca_acquisti", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica->id]).', "value": "$idbanca_acquisti$", "icon-after": "add|'.Modules::get('Banche')['id'].'|id_anagrafica='.$anagrafica->id.'" ]}
@@ -508,7 +509,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
'; // Collegamento con il conto - $conto = $dbo->fetchOne('SELECT co_pianodeiconti3.id, co_pianodeiconti2.numero as numero, co_pianodeiconti3.numero as numero_conto, co_pianodeiconti3.descrizione as descrizione FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti3.id = '.prepare($record['idconto_fornitore'])); + $conto = $dbo->fetchOne('SELECT co_pianodeiconti3.id, co_pianodeiconti2.numero as numero, co_pianodeiconti3.numero as numero_conto, co_pianodeiconti3.descrizione AS descrizione FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti3.id = '.prepare($record['idconto_fornitore'])); echo '
diff --git a/modules/banche/actions.php b/modules/banche/actions.php index 0b5b4c39d..f3e8ac039 100755 --- a/modules/banche/actions.php +++ b/modules/banche/actions.php @@ -17,59 +17,60 @@ * along with this program. If not, see . */ +use Modules\Anagrafiche\Anagrafica; +use Modules\Banche\Banca; + include_once __DIR__.'/../../core.php'; switch (filter('op')) { - case 'update': + case 'add': + $id_anagrafica = filter('id_anagrafica'); + $anagrafica = Anagrafica::find($id_anagrafica); + $nome = filter('nome'); + $iban = filter('iban'); + $bic = filter('bic'); - if (isset($nome)) { - $array = [ - 'nome' => $nome, - 'filiale' => post('filiale'), - 'iban' => post('iban'), - 'bic' => post('bic'), - 'id_pianodeiconti3' => post('id_pianodeiconti3'), - 'note' => post('note'), - ]; + $banca = Banca::build($anagrafica, $nome, $iban, $bic); + $id_record = $banca->id; - if (!empty($id_record)) { - $dbo->update('co_banche', $array, ['id' => $id_record]); - } - - flash()->info(tr('Salvataggio completato.')); - } else { - flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio!')); + if (isAjaxRequest()) { + echo json_encode([ + 'id' => $id_record, + 'text' => $nome, + ]); } + // Imposizione della banca come predefinita per l'Anagrafica se non impostato altrimenti + $anagrafica->idbanca_vendite = $anagrafica->idbanca_vendite ?: $id_record; + $anagrafica->idbanca_acquisti = $anagrafica->idbanca_acquisti ?: $id_record; + $anagrafica->save(); + + flash()->info(tr('Aggiunta nuova _TYPE_', [ + '_TYPE_' => 'banca', + ])); + break; - case 'add': + case 'update': $nome = filter('nome'); - $bic = filter('bic'); - $iban = filter('iban'); - if (isset($nome)) { - $dbo->query('INSERT INTO `co_banche` (`nome`, `bic`, `iban`) VALUES ('.prepare($nome).', '.prepare($bic).', '.prepare($iban).')'); - $id_record = $dbo->lastInsertedID(); + $banca->nome = post('nome'); + $banca->iban = post('iban'); + $banca->bic = post('bic'); - if (isAjaxRequest()) { - echo json_encode(['id' => $id_record, 'text' => $nome]); - } + $banca->note = post('note'); + $banca->id_pianodeiconti3 = post('id_pianodeiconti3'); + $banca->filiale = post('filiale'); - flash()->info(tr('Aggiunta nuova _TYPE_', [ - '_TYPE_' => 'banca', - ])); - } else { - flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio!')); - } + $banca->save(); + + flash()->info(tr('Salvataggio completato')); break; case 'delete': - $dbo->update('co_banche', [ - 'deleted_at' => date('Y-m-d H:i:s'), - ], ['id' => $id_record]); + $banca->delete(); flash()->info(tr('_TYPE_ eliminata con successo!', [ '_TYPE_' => 'Banca', diff --git a/modules/banche/add.php b/modules/banche/add.php index bba54d91a..c2486ab31 100755 --- a/modules/banche/add.php +++ b/modules/banche/add.php @@ -19,29 +19,38 @@ include_once __DIR__.'/../../core.php'; -?>
+$id_anagrafica = filter('id_anagrafica'); + +echo ' +
-
- {[ "type": "text", "label": "", "name": "nome", "required": "1" ]} +
+ {[ "type": "select", "label": "'.tr('Anagrafica').'", "name": "id_anagrafica", "required": "1", "value": "$id_anagrafica$", "ajax-source": "anagrafiche", "value": "'.$id_anagrafica.'", "disabled": "'.intval(!empty($id_anagrafica)).'" ]} +
+ +
+ {[ "type": "text", "label": "'.tr('Nome').'", "name": "nome", "required": "1" ]}
- {[ "type": "text", "label": "", "name": "iban", "required": "1", "class": "alphanumeric-mask", "maxlength": 32, "value": "$iban$" ]} + {[ "type": "text", "label": "'.tr('IBAN').'", "name": "iban", "required": "1", "class": "alphanumeric-mask", "maxlength": 32, "value": "$iban$" ]}
- {[ "type": "text", "label": "", "name": "bic", "class": "alphanumeric-mask", "maxlength": 11, "value": "$bic$" ]} + {[ "type": "text", "label": "'.tr('BIC').'", "name": "bic", "required": "1", "class": "alphanumeric-mask", "maxlength": 11, "value": "$bic$" ]}
- +
- +'; diff --git a/modules/banche/ajax/select.php b/modules/banche/ajax/select.php new file mode 100644 index 000000000..162bf5582 --- /dev/null +++ b/modules/banche/ajax/select.php @@ -0,0 +1,47 @@ +. + */ + +include_once __DIR__.'/../../../core.php'; + +switch ($resource) { + /* + * Opzioni utilizzate: + * - id_anagrafica + */ + case 'banche': + $query = "SELECT id, CONCAT (nome, ' - ' , iban) AS descrizione FROM co_banche |where| ORDER BY nome"; + + foreach ($elements as $element) { + $filter[] = 'id = '.prepare($element); + } + + if (empty($filter)) { + $where[] = 'deleted_at IS NULL'; + } + + $where[] = 'id_anagrafica='.prepare($superselect['id_anagrafica']); + + if (!empty($search)) { + $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'filiale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'iban LIKE '.prepare('%'.$search.'%'); + } + + break; +} diff --git a/modules/banche/edit.php b/modules/banche/edit.php index 817b26bd1..47e4a2f53 100755 --- a/modules/banche/edit.php +++ b/modules/banche/edit.php @@ -20,7 +20,6 @@ include_once __DIR__.'/../../core.php'; ?>
- @@ -32,24 +31,35 @@ include_once __DIR__.'/../../core.php';
-
- {[ "type": "text", "label": "", "name": "nome", "required": "1", "value": "$nome$" ]} +
+ {[ "type": "select", "label": "", "name": "id_anagrafica", "required": "1", "value": "$id_anagrafica$", "ajax-source": "anagrafiche", "disabled": 1 ]}
-
+ +
+ {[ "type": "text", "label": "", "name": "nome", "required": "1", "value": "$nome$" ]} +
+
+ +
+
{[ "type": "text", "label": "", "name": "filiale", "value": "$filiale$" ]}
-
+ +
{[ "type": "select", "label": "", "name": "id_pianodeiconti3", "value": "$id_pianodeiconti3$", "values": "query=SELECT id, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2 = 1" ]}
+
{[ "type": "text", "label": "", "name": "iban", "required": "1", "class": "alphanumeric-mask", "maxlength": 32, "value": "$iban$" ]}
+
{[ "type": "text", "label": "", "name": "bic", "class": "alphanumeric-mask", "maxlength": 11, "value": "$bic$" ]}
+
{[ "type": "textarea", "label": "", "name": "note", "value": "$note$" ]} diff --git a/modules/banche/init.php b/modules/banche/init.php index 4ce12505a..d08beb423 100755 --- a/modules/banche/init.php +++ b/modules/banche/init.php @@ -17,8 +17,12 @@ * along with this program. If not, see . */ +use Modules\Banche\Banca; + include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `co_banche` WHERE id='.prepare($id_record)); + $banca = Banca::find($id_record); + + $record = $banca->toArray(); } diff --git a/modules/banche/src/Banca.php b/modules/banche/src/Banca.php new file mode 100644 index 000000000..7b59c3606 --- /dev/null +++ b/modules/banche/src/Banca.php @@ -0,0 +1,61 @@ +. + */ + +namespace Modules\Banche; + +use Common\Model; +use Illuminate\Database\Eloquent\SoftDeletes; +use Modules\Anagrafiche\Anagrafica; + +class Banca extends Model +{ + use SoftDeletes; + + protected $table = 'co_banche'; + + /** + * Crea una nuovo banca. + * + * @param string $nome + * @param string $iban + * @param string $bic + * + * @return self + */ + public static function build(Anagrafica $anagrafica, $nome, $iban, $bic) + { + $model = parent::build(); + + // Informazioni di base + $model->anagrafica()->associate($anagrafica); + $model->nome = $nome; + $model->iban = $iban; + $model->bic = $bic; + + // Salvataggio delle informazioni + $model->save(); + + return $model; + } + + public function anagrafica() + { + return $this->belongsTo(Anagrafica::class, 'id_anagrafica'); + } +} diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 557fe4ee3..0e2eade7f 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -17,10 +17,13 @@ * along with this program. If not, see . */ +use Modules\Anagrafiche\Anagrafica; use Modules\Iva\Aliquota; include_once __DIR__.'/../../core.php'; +$anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita')); + $block_edit = !empty($note_accredito) || $record['stato'] == 'Emessa' || $record['stato'] == 'Pagato' || $record['stato'] == 'Parzialmente pagato'; $rs = $dbo->fetchArray('SELECT co_tipidocumento.descrizione, dir FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($id_record)); @@ -269,7 +272,7 @@ elseif ($record['stato'] == 'Bozza') {
- {[ "type": "select", "label": "", "name": "idbanca", "values": "query=SELECT id, CONCAT (nome, ' - ' , iban) AS descrizione FROM co_banche WHERE deleted_at IS NULL ORDER BY nome ASC", "value": "$idbanca$", "icon-after": "add|||", "extra": " " ]} + {[ "type": "select", "label": "", "name": "idbanca", "ajax-source": "banche", "select-options": $anagrafica_azienda->id]); ?>, "value": "$idbanca$", "icon-after": "add|||", "extra": " " ]}
fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [ - ':id_pagamento' => $anagrafica['idpagamento_'.$conto], + ':id_pagamento' => $anagrafica->{'idpagamento_'.$conto}, ])['id']; - $id_banca = $anagrafica['idbanca_'.$conto]; + $id_banca = $anagrafica->{'idbanca_'.$conto}; // Se la fattura è di vendita e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni if ($direzione == 'entrata' && empty($id_pagamento)) { @@ -641,11 +642,13 @@ class Fattura extends Document $riba = database()->fetchOne('SELECT riba FROM co_pagamenti WHERE id ='.prepare($this->idpagamento)); if ($riba['riba'] == 1) { - $result = database()->fetchOne('SELECT codiceiban, appoggiobancario, bic FROM an_anagrafiche WHERE idanagrafica ='.prepare($this->idanagrafica)); + $id_banca = $this->anagrafica->idbanca_vendite; } else { - $result = database()->fetchOne('SELECT iban AS codiceiban, nome AS appoggiobancario, bic FROM co_banche WHERE id='.prepare($this->idbanca)); + $id_banca = $this->idbanca; } + $result = Banca::find($id_banca); + return $result; } diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 86de15ae5..115bba7a9 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -1414,14 +1414,14 @@ class FatturaElettronica 'ImportoPagamento' => abs($scadenza['da_pagare']), ]; - if (!empty($banca['appoggiobancario'])) { - $pagamento['IstitutoFinanziario'] = $banca['appoggiobancario']; + if (!empty($banca->nome)) { + $pagamento['IstitutoFinanziario'] = $banca->nome; } - if (!empty($banca['codiceiban'])) { - $pagamento['IBAN'] = clean($banca['codiceiban']); + if (!empty($banca->iban)) { + $pagamento['IBAN'] = clean($banca->iban); } - if (!empty($banca['bic'])) { - $pagamento['BIC'] = $banca['bic']; + if (!empty($banca->bic)) { + $pagamento['BIC'] = $banca->bic; } $result[]['DettaglioPagamento'] = $pagamento; diff --git a/templates/fatture/init.php b/templates/fatture/init.php index ce64b1619..ba71b5885 100755 --- a/templates/fatture/init.php +++ b/templates/fatture/init.php @@ -43,9 +43,9 @@ $record['rivalsainps'] = floatval($record['rivalsainps']); $record['ritenutaacconto'] = floatval($record['ritenutaacconto']); $record['bollo'] = floatval($record['bollo']); -$nome_banca = $banca['appoggiobancario']; -$iban_banca = $banca['codiceiban']; -$bic_banca = $banca['bic']; +$nome_banca = $banca->nome; +$iban_banca = $banca->iban; +$bic_banca = $banca->bic; $module_name = ($record['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto'; diff --git a/update/2_4_18.sql b/update/2_4_18.sql index 858a30170..8d8ed8dbb 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -88,3 +88,33 @@ UPDATE `zz_views` SET `query` = 'CONCAT(UCASE(LEFT(tipo_movimento, 1)), SUBSTRIN -- Aggiornamento versione API services UPDATE `zz_settings` SET `valore` = 'v3' WHERE `nome` = 'OSMCloud Services API Version'; +-- Aggiornamento del modulo Banche per il supporto completo alle Anagrafiche +ALTER TABLE `co_banche` ADD `id_anagrafica` INT(11) NOT NULL, CHANGE `note` `note` TEXT, CHANGE `filiale` `filiale` varchar(255); +UPDATE `co_banche` SET `id_anagrafica` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Azienda predefinita'); +ALTER TABLE `co_banche` ADD FOREIGN KEY (`id_anagrafica`) REFERENCES `an_anagrafiche`(`idanagrafica`) ON DELETE CASCADE; + +-- Collegamento sulla base dei campi aggiuntivi per le Anagrafiche +UPDATE `co_banche` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idbanca_acquisti` = `co_banche`.`id` +SET `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` +WHERE `an_anagrafiche`.`idbanca_acquisti` != 0; +UPDATE `co_banche` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idbanca_vendite` = `co_banche`.`id` +SET `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` +WHERE `an_anagrafiche`.`idbanca_vendite` != 0; + +-- Aggiornamento ID relativo sulle Anagrafiche +ALTER TABLE `an_anagrafiche` CHANGE `idbanca_acquisti` `idbanca_acquisti` INT(11), + CHANGE `idbanca_vendite` `idbanca_vendite` INT(11); +UPDATE `an_anagrafiche` SET `idbanca_acquisti` = NULL WHERE `idbanca_vendite` = 0; +UPDATE `an_anagrafiche` SET `idbanca_vendite` = NULL WHERE `idbanca_vendite` = 0; + +INSERT INTO `co_banche` (`id_anagrafica`, `nome`, `iban`, `bic`, `filiale`) SELECT idanagrafica, IF(appoggiobancario != '', appoggiobancario, CONCAT('Banca predefinita di ', ragione_sociale)), codiceiban, bic, filiale FROM an_anagrafiche WHERE codiceiban IS NOT NULL AND codiceiban != ''; + +UPDATE `an_anagrafiche` SET `idbanca_acquisti` = (SELECT `id` FROM `co_banche` WHERE `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` LIMIT 1) WHERE `idbanca_acquisti` IS NULL; +UPDATE `an_anagrafiche` SET `idbanca_vendite` = (SELECT `id` FROM `co_banche` WHERE `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` LIMIT 1) WHERE `idbanca_vendite` IS NULL; + +-- Aggiornamento tabella principale per Banche +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_banche` INNER JOIN an_anagrafiche ON `an_anagrafiche`.`idanagrafica` = `co_banche`.`id_anagrafica` WHERE 1=1 AND `co_banche`.`deleted_at` IS NULL AND `an_anagrafiche`.`deleted_at` IS NULL HAVING 2=2' WHERE `name` = 'Banche'; +INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `visible`, `summable`, `default`) VALUES +(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Banche'), 'Anagrafica', 'an_anagrafiche.ragione_sociale', 0, 1, 0, 0, 1, 0, 1); From d21066a1d878dc57017a95d57c66598dfc764661 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 17 Sep 2020 10:17:39 +0200 Subject: [PATCH 2/8] Aggiunta banca controparte nei documenti --- modules/fatture/actions.php | 9 ++++-- modules/fatture/edit.php | 6 ++-- modules/fatture/src/Fattura.php | 57 +++++++++++++++++++-------------- templates/fatture/init.php | 2 +- update/2_4_18.sql | 15 +++++++++ 5 files changed, 58 insertions(+), 31 deletions(-) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index f8e557d9e..0cd85c649 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -89,7 +89,8 @@ switch (post('op')) { $fattura->idanagrafica = post('idanagrafica'); $fattura->idagente = post('idagente'); $fattura->idpagamento = post('idpagamento'); - $fattura->idbanca = post('idbanca'); + $fattura->id_banca_azienda = post('id_banca_azienda'); + $fattura->id_banca_controparte = post('id_banca_controparte'); $fattura->idcausalet = post('idcausalet'); $fattura->idspedizione = post('idspedizione'); $fattura->idporto = post('idporto'); @@ -753,7 +754,8 @@ switch (post('op')) { $nota->ref_documento = $fattura->id; $nota->idconto = $fattura->idconto; $nota->idpagamento = $fattura->idpagamento; - $nota->idbanca = $fattura->idbanca; + $nota->id_banca_azienda = $fattura->id_banca_azienda; + $nota->id_banca_controparte = $fattura->id_banca_controparte; $nota->idsede_partenza = $fattura->idsede_partenza; $nota->idsede_destinazione = $fattura->idsede_destinazione; $nota->split_payment = $fattura->split_payment; @@ -809,7 +811,8 @@ if (get('op') == 'nota_addebito') { $nota->ref_documento = $fattura->id; $nota->idconto = $fattura->idconto; $nota->idpagamento = $fattura->idpagamento; - $nota->idbanca = $fattura->idbanca; + $nota->id_banca_azienda = $fattura->id_banca_azienda; + $nota->id_banca_controparte = $fattura->id_banca_controparte; $nota->idsede_partenza = $fattura->idsede_partenza; $nota->idsede_destinazione = $fattura->idsede_destinazione; $nota->save(); diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 0c690cd50..6b7e5c878 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -268,11 +268,11 @@ elseif ($record['stato'] == 'Bozza') {
- {[ "type": "select", "label": "", "name": "idpagamento", "required": 1, "ajax-source": "pagamenti", "value": "$idpagamento$", "extra": "onchange=\"$('#idbanca').val($(this).selectData().id_banca_).change(); \" " ]} + {[ "type": "select", "label": "", "name": "idpagamento", "required": 1, "ajax-source": "pagamenti", "value": "$idpagamento$", "extra": "onchange=\"$('#id_banca_azienda').val($(this).selectData().id_banca_).change(); \" " ]}
- {[ "type": "select", "label": "", "name": "idbanca", "ajax-source": "banche", "select-options": $anagrafica_azienda->id]); ?>, "value": "$idbanca$", "icon-after": "add|||", "extra": " " ]} + {[ "type": "select", "label": "", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|||", "extra": " " ]}
diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index c21318877..e470cdde9 100755 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -88,14 +88,14 @@ class Fattura extends Document public static function build(Anagrafica $anagrafica, Tipo $tipo_documento, $data, $id_segment, $numero_esterno = null) { $model = parent::build(); - $user = Auth::user(); + $database = database(); + // Individuazione dello stato predefinito per il documento $stato_documento = Stato::where('descrizione', 'Bozza')->first(); $direzione = $tipo_documento->dir; - $database = database(); - + // Conto predefinito sulla base del flusso di denaro if ($direzione == 'entrata') { $id_conto = setting('Conto predefinito fatture di vendita'); $conto = 'vendite'; @@ -104,6 +104,7 @@ class Fattura extends Document $conto = 'acquisti'; } + // Informazioni di base $model->anagrafica()->associate($anagrafica); $model->tipo()->associate($tipo_documento); $model->stato()->associate($stato_documento); @@ -115,55 +116,62 @@ class Fattura extends Document $model->data_registrazione = $data; $model->data_competenza = $data; $model->id_segment = $id_segment; + $model->idconto = $id_conto; if ($numero_esterno) { $model->numero_esterno = $numero_esterno; } - $model->idconto = $id_conto; - - // Imposto, come sede aziendale, la prima sede disponibile come utente + // Sede aziendale scelta tra le sedi disponibili per l'utente + $id_sede = $user->sedi[0]; if ($direzione == 'entrata') { - $model->idsede_destinazione = $user->sedi[0]; + $model->idsede_destinazione = $id_sede; } else { - $model->idsede_partenza = $user->sedi[0]; + $model->idsede_partenza = $id_sede; } + + // Gestione della marca da bollo predefinita $model->addebita_bollo = setting('Addebita marca da bollo al cliente'); + // Ritenuta contributi predefinita $id_ritenuta_contributi = ($tipo_documento->dir == 'entrata') ? setting('Ritenuta contributi') : null; $model->id_ritenuta_contributi = $id_ritenuta_contributi ?: null; - // Tipo di pagamento e banca predefinite dall'anagrafica + // Banca predefinita per l'anagrafica controparte + $model->id_banca_controparte = $anagrafica->{'idbanca_'.$conto}; + + // Tipo di pagamento dall'anagrafica controparte $id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [ ':id_pagamento' => $anagrafica->{'idpagamento_'.$conto}, ])['id']; - $id_banca = $anagrafica->{'idbanca_'.$conto}; - // Se la fattura è di vendita e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni + // Per Fatture di Vendita senza pagamento predefinito per il Cliente, si utilizza il pagamento predefinito dalle Impostazioni if ($direzione == 'entrata' && empty($id_pagamento)) { $id_pagamento = setting('Tipo di pagamento predefinito'); } - // Se non è impostata la banca dell'anagrafica, uso quella del pagamento. - if (empty($id_banca)) { - $id_banca = $database->fetchOne('SELECT id FROM co_banche WHERE id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento)', [ - ':id_pagamento' => $id_pagamento, - ])['id']; - } - + // Salvataggio del pagamento if (!empty($id_pagamento)) { $model->idpagamento = $id_pagamento; } - if (!empty($id_banca)) { - $model->idbanca = $id_banca; - } - // Split Payment + // Banca predefinita per l'azienda, con ricerca della banca impostata per il pagamento + $azienda = Anagrafica::find(setting('Azienda predefinita')); + $id_banca_azienda = $database->fetchOne('SELECT id FROM co_banche WHERE id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento) AND id_anagrafica = :id_anagrafica', [ + ':id_pagamento' => $id_pagamento, + ':id_anagrafica' => $azienda->id, + ])['id']; + if (empty($id_banca_azienda)) { + $id_banca_azienda = $azienda->{'idbanca_'.$conto}; + } + $model->id_banca_azienda = $id_banca_azienda; + + // Gestione dello Split Payment sulla base dell'anagrafica Controparte $split_payment = $anagrafica->split_payment; if (!empty($split_payment)) { $model->split_payment = $split_payment; } - // Dichiarazione d'Intento + // Gestione della Dichiarazione d'Intento associata all'anargafica Controparte $now = new Carbon(); $dichiarazione = $anagrafica->dichiarazioni() ->where('massimale', '>', 'totale') @@ -173,6 +181,7 @@ class Fattura extends Document if (!empty($dichiarazione)) { $model->dichiarazione()->associate($dichiarazione); + // Registrazione dell'operazione nelle note $model->note = tr("Operazione non imponibile come da vostra dichiarazione d'intento nr _PROT_ del _PROT_DATE_ emessa in data _RELEASE_DATE_, da noi registrata al nr _ID_ del _DATE_", [ '_PROT_' => $dichiarazione->numero_protocollo, '_PROT_DATE_' => $dichiarazione->data_protocollo, @@ -644,7 +653,7 @@ class Fattura extends Document if ($riba['riba'] == 1) { $id_banca = $this->anagrafica->idbanca_vendite; } else { - $id_banca = $this->idbanca; + $id_banca = $this->id_banca_azienda; } $result = Banca::find($id_banca); diff --git a/templates/fatture/init.php b/templates/fatture/init.php index ba71b5885..36d7297c4 100755 --- a/templates/fatture/init.php +++ b/templates/fatture/init.php @@ -35,7 +35,7 @@ $record = $dbo->fetchOne('SELECT *, (SELECT descrizione FROM dt_aspettobeni WHERE id=idaspettobeni) AS aspettobeni, (SELECT descrizione FROM dt_spedizione WHERE id=idspedizione) AS spedizione, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idvettore) AS vettore, - (SELECT id FROM co_banche WHERE id=idbanca) AS id_banca, + (SELECT id FROM co_banche WHERE id = id_banca_azienda) AS id_banca, (SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale FROM co_documenti WHERE id='.prepare($id_record)); diff --git a/update/2_4_18.sql b/update/2_4_18.sql index d04283a69..3d476fc78 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -201,3 +201,18 @@ UPDATE `an_anagrafiche` SET `idbanca_vendite` = (SELECT `id` FROM `co_banche` WH UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_banche` INNER JOIN an_anagrafiche ON `an_anagrafiche`.`idanagrafica` = `co_banche`.`id_anagrafica` WHERE 1=1 AND `co_banche`.`deleted_at` IS NULL AND `an_anagrafiche`.`deleted_at` IS NULL HAVING 2=2' WHERE `name` = 'Banche'; INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Banche'), 'Anagrafica', 'an_anagrafiche.ragione_sociale', 0, 1, 0, 0, 1, 0, 1); + +-- Campo id_banca_controparte e id_banca_azienda per i Documenti +ALTER TABLE `co_documenti` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`; +ALTER TABLE `co_preventivi` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`; +ALTER TABLE `co_contratti` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`; +ALTER TABLE `dt_ddt` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`; +ALTER TABLE `or_ordini` ADD `id_banca_controparte` INT(11) NOT NULL AFTER `idpagamento`; + +ALTER TABLE `co_documenti` CHANGE `idbanca` `id_banca_azienda` INT(11) AFTER `idpagamento`; +ALTER TABLE `co_preventivi` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`; +ALTER TABLE `co_contratti` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`; +ALTER TABLE `dt_ddt` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`; +ALTER TABLE `or_ordini` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`; + +UPDATE `co_documenti` SET `id_banca_azienda` = NULL WHERE `id_banca_azienda` = 0; From 6109f9c9e65eb4fada2d9a33bf7b67438e15d34b Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 24 Sep 2020 15:34:19 +0200 Subject: [PATCH 3/8] Aggiornamento modifiche Banche da master --- config/namespaces.php | 83 ++++++++++--------- modules/banche/edit.php | 8 +- modules/banche/src/Banca.php | 6 +- modules/beni/edit.php | 6 +- modules/causali/edit.php | 6 +- modules/ddt/src/Components/Articolo.php | 2 - modules/ddt/src/Components/Descrizione.php | 1 - modules/ddt/src/Components/Riga.php | 1 - modules/ddt/src/Components/Sconto.php | 1 - .../interventi/src/Components/Articolo.php | 2 - modules/interventi/src/Components/Riga.php | 1 - modules/interventi/src/Components/Sconto.php | 1 - modules/ordini/src/Components/Articolo.php | 2 - modules/ordini/src/Components/Descrizione.php | 1 - modules/ordini/src/Components/Riga.php | 1 - modules/ordini/src/Components/Sconto.php | 1 - modules/porti/edit.php | 6 +- .../preventivi/src/Components/Articolo.php | 2 - .../preventivi/src/Components/Descrizione.php | 1 - modules/preventivi/src/Components/Riga.php | 1 - modules/preventivi/src/Components/Sconto.php | 1 - modules/spedizioni/edit.php | 6 +- src/Common/Document.php | 2 +- update/2_4_18.sql | 13 +-- 24 files changed, 71 insertions(+), 84 deletions(-) diff --git a/config/namespaces.php b/config/namespaces.php index ec98acb08..f928d285a 100755 --- a/config/namespaces.php +++ b/config/namespaces.php @@ -18,46 +18,47 @@ */ return [ - /* - 'modules/aggiornamenti' => 'Modules\Aggiornamenti', - 'modules/anagrafiche' => 'Modules\Anagrafiche', - 'modules/backups' => 'Modules\Backups', 'modules/banche' => 'Modules\Banche', - 'modules/emails' => 'Modules\Emails', - 'modules/articoli' => 'Modules\Articoli', - 'modules/checklists' => 'Modules\Checklists', - 'modules/ritenute' => 'Modules\Ritenute', - 'modules/ritenute_contributi' => 'Modules\RitenuteContributi', - 'modules/rivalse' => 'Modules\Rivalse', - 'modules/newsletter' => 'Modules\Newsletter', - 'modules/iva' => 'Modules\Iva', - 'modules/ddt' => 'Modules\DDT', - 'modules/fatture' => 'Modules\Fatture', - 'modules/ordini' => 'Modules\Ordini', - 'modules/preventivi' => 'Modules\Preventivi', - 'modules/contratti' => 'Modules\Contratti', - 'modules/interventi' => 'Modules\Interventi', - 'modules/pagamenti' => 'Modules\Pagamenti', - 'modules/statistiche' => 'Modules\Statistiche', - 'modules/scadenzario' => 'Modules\Scadenzario', - 'modules/primanota' => 'Modules\PrimaNota', - 'modules/utenti' => 'Modules\Utenti', - 'modules/stato_servizi' => 'Modules\StatoServizi', - 'modules/stati_intervento' => 'Modules\StatiIntervento', - 'modules/stati_preventivo' => 'Modules\StatiPreventivo', - 'modules/stati_contratto' => 'Modules\StatiContratto', - 'modules/tipi_intervento' => 'Modules\TipiIntervento', - 'modules/categorie_documenti' => 'Modules\CategorieDocumentali', - 'modules/listini' => 'Modules\Listini', - 'modules/impianti' => 'Modules\Impianti', - 'modules/impostazioni' => 'Modules\Impostazioni', - 'plugins/exportFE' => 'Plugins\ExportFE', - 'plugins/importFE' => 'Plugins\ImportFE', - 'plugins/receiptFE' => 'Plugins\ReceiptFE', - 'plugins/dichiarazioni_intento' => 'Plugins\DichiarazioniIntento', - 'plugins/pianificazione_interventi' => 'Plugins\PianificazioneInterventi', - 'plugins/pianificazione_fatturazione' => 'Plugins\PianificazioneFatturazione', - 'plugins/statistiche_articoli' => 'Plugins\StatisticheArticoli', - 'plugins/dettagli_articolo' => 'Plugins\DettagliArticolo', - */ ]; + +/* +'modules/aggiornamenti' => 'Modules\Aggiornamenti', +'modules/anagrafiche' => 'Modules\Anagrafiche', +'modules/backups' => 'Modules\Backups', +'modules/emails' => 'Modules\Emails', +'modules/articoli' => 'Modules\Articoli', +'modules/checklists' => 'Modules\Checklists', +'modules/ritenute' => 'Modules\Ritenute', +'modules/ritenute_contributi' => 'Modules\RitenuteContributi', +'modules/rivalse' => 'Modules\Rivalse', +'modules/newsletter' => 'Modules\Newsletter', +'modules/iva' => 'Modules\Iva', +'modules/ddt' => 'Modules\DDT', +'modules/fatture' => 'Modules\Fatture', +'modules/ordini' => 'Modules\Ordini', +'modules/preventivi' => 'Modules\Preventivi', +'modules/contratti' => 'Modules\Contratti', +'modules/interventi' => 'Modules\Interventi', +'modules/pagamenti' => 'Modules\Pagamenti', +'modules/statistiche' => 'Modules\Statistiche', +'modules/scadenzario' => 'Modules\Scadenzario', +'modules/primanota' => 'Modules\PrimaNota', +'modules/utenti' => 'Modules\Utenti', +'modules/stato_servizi' => 'Modules\StatoServizi', +'modules/stati_intervento' => 'Modules\StatiIntervento', +'modules/stati_preventivo' => 'Modules\StatiPreventivo', +'modules/stati_contratto' => 'Modules\StatiContratto', +'modules/tipi_intervento' => 'Modules\TipiIntervento', +'modules/categorie_documenti' => 'Modules\CategorieDocumentali', +'modules/listini' => 'Modules\Listini', +'modules/impianti' => 'Modules\Impianti', +'modules/impostazioni' => 'Modules\Impostazioni', +'plugins/exportFE' => 'Plugins\ExportFE', +'plugins/importFE' => 'Plugins\ImportFE', +'plugins/receiptFE' => 'Plugins\ReceiptFE', +'plugins/dichiarazioni_intento' => 'Plugins\DichiarazioniIntento', +'plugins/pianificazione_interventi' => 'Plugins\PianificazioneInterventi', +'plugins/pianificazione_fatturazione' => 'Plugins\PianificazioneFatturazione', +'plugins/statistiche_articoli' => 'Plugins\StatisticheArticoli', +'plugins/dettagli_articolo' => 'Plugins\DettagliArticolo', +*/ diff --git a/modules/banche/edit.php b/modules/banche/edit.php index 47e4a2f53..b5fdbf773 100755 --- a/modules/banche/edit.php +++ b/modules/banche/edit.php @@ -56,7 +56,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "bic", "class": "alphanumeric-mask", "maxlength": 11, "value": "$bic$" ]} + {[ "type": "text", "label": "", "name": "bic", "required": "1", "class": "alphanumeric-mask", "maxlength": 11, "value": "$bic$" ]}
@@ -72,15 +72,15 @@ include_once __DIR__.'/../../core.php'; fetchNum('SELECT idanagrafica FROM an_anagrafiche WHERE idbanca_vendite='.prepare($id_record).' +$numero_documenti = $dbo->fetchNum('SELECT idanagrafica FROM an_anagrafiche WHERE idbanca_vendite='.prepare($id_record).' UNION SELECT idanagrafica FROM an_anagrafiche WHERE idbanca_acquisti='.prepare($id_record).' UNION SELECT idanagrafica FROM co_documenti WHERE idbanca='.prepare($id_record)); -if (!empty($documenti)) { +if (!empty($numero_documenti)) { echo '
'.tr('Ci sono _NUM_ documenti collegati', [ - '_NUM_' => count($documenti), + '_NUM_' => $numero_documenti, ]).'.
'; } diff --git a/modules/banche/src/Banca.php b/modules/banche/src/Banca.php index 7b59c3606..780894afa 100644 --- a/modules/banche/src/Banca.php +++ b/modules/banche/src/Banca.php @@ -19,12 +19,14 @@ namespace Modules\Banche; -use Common\Model; +use Common\SimpleModelTrait; +use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Modules\Anagrafiche\Anagrafica; class Banca extends Model { + use SimpleModelTrait; use SoftDeletes; protected $table = 'co_banche'; @@ -40,7 +42,7 @@ class Banca extends Model */ public static function build(Anagrafica $anagrafica, $nome, $iban, $bic) { - $model = parent::build(); + $model = new static(); // Informazioni di base $model->anagrafica()->associate($anagrafica); diff --git a/modules/beni/edit.php b/modules/beni/edit.php index 091c38949..10b4112a6 100755 --- a/modules/beni/edit.php +++ b/modules/beni/edit.php @@ -43,15 +43,15 @@ include_once __DIR__.'/../../core.php'; fetchNum('SELECT id FROM dt_ddt WHERE idaspettobeni='.prepare($id_record).' +$numero_documenti = $dbo->fetchNum('SELECT id FROM dt_ddt WHERE idaspettobeni='.prepare($id_record).' UNION SELECT id FROM co_documenti WHERE idaspettobeni='.prepare($id_record)); -if (!empty($documenti)) { +if (!empty($numero_documenti)) { echo '
'.tr('Ci sono _NUM_ documenti collegati', [ - '_NUM_' => count($documenti), + '_NUM_' => $numero_documenti, ]).'.
'; } diff --git a/modules/causali/edit.php b/modules/causali/edit.php index 9bdb8cb1e..a4929d068 100755 --- a/modules/causali/edit.php +++ b/modules/causali/edit.php @@ -54,14 +54,14 @@ include_once __DIR__.'/../../core.php'; fetchNum('SELECT id FROM dt_ddt WHERE idcausalet='.prepare($id_record).' +$numero_documenti = $dbo->fetchNum('SELECT id FROM dt_ddt WHERE idcausalet='.prepare($id_record).' UNION SELECT id FROM co_documenti WHERE idcausalet='.prepare($id_record)); -if (!empty($documenti)) { +if (!empty($numero_documenti)) { echo '
'.tr('Ci sono _NUM_ documenti collegati', [ - '_NUM_' => count($documenti), + '_NUM_' => $numero_documenti, ]).'.
'; } diff --git a/modules/ddt/src/Components/Articolo.php b/modules/ddt/src/Components/Articolo.php index e3ddb82b6..7b46c3849 100755 --- a/modules/ddt/src/Components/Articolo.php +++ b/modules/ddt/src/Components/Articolo.php @@ -20,8 +20,6 @@ namespace Modules\DDT\Components; use Common\Components\Article; -use Modules\Articoli\Articolo as Original; -use Modules\DDT\DDT; class Articolo extends Article { diff --git a/modules/ddt/src/Components/Descrizione.php b/modules/ddt/src/Components/Descrizione.php index 8e363fd7a..fb5274769 100755 --- a/modules/ddt/src/Components/Descrizione.php +++ b/modules/ddt/src/Components/Descrizione.php @@ -20,7 +20,6 @@ namespace Modules\DDT\Components; use Common\Components\Description; -use Modules\DDT\DDT; class Descrizione extends Description { diff --git a/modules/ddt/src/Components/Riga.php b/modules/ddt/src/Components/Riga.php index f96f85b77..7642160f1 100755 --- a/modules/ddt/src/Components/Riga.php +++ b/modules/ddt/src/Components/Riga.php @@ -20,7 +20,6 @@ namespace Modules\DDT\Components; use Common\Components\Row; -use Modules\DDT\DDT; class Riga extends Row { diff --git a/modules/ddt/src/Components/Sconto.php b/modules/ddt/src/Components/Sconto.php index 454986066..5ddce3ccc 100755 --- a/modules/ddt/src/Components/Sconto.php +++ b/modules/ddt/src/Components/Sconto.php @@ -20,7 +20,6 @@ namespace Modules\DDT\Components; use Common\Components\Discount; -use Modules\DDT\DDT; class Sconto extends Discount { diff --git a/modules/interventi/src/Components/Articolo.php b/modules/interventi/src/Components/Articolo.php index 4d280297d..bb0d68cf4 100755 --- a/modules/interventi/src/Components/Articolo.php +++ b/modules/interventi/src/Components/Articolo.php @@ -20,8 +20,6 @@ namespace Modules\Interventi\Components; use Common\Components\Article; -use Modules\Articoli\Articolo as Original; -use Modules\Interventi\Intervento; class Articolo extends Article { diff --git a/modules/interventi/src/Components/Riga.php b/modules/interventi/src/Components/Riga.php index ed16e9093..1f71b20bf 100755 --- a/modules/interventi/src/Components/Riga.php +++ b/modules/interventi/src/Components/Riga.php @@ -20,7 +20,6 @@ namespace Modules\Interventi\Components; use Common\Components\Row; -use Modules\Interventi\Intervento; class Riga extends Row { diff --git a/modules/interventi/src/Components/Sconto.php b/modules/interventi/src/Components/Sconto.php index 42a0a7c6d..557d606b6 100755 --- a/modules/interventi/src/Components/Sconto.php +++ b/modules/interventi/src/Components/Sconto.php @@ -20,7 +20,6 @@ namespace Modules\Interventi\Components; use Common\Components\Discount; -use Modules\Interventi\Intervento; class Sconto extends Discount { diff --git a/modules/ordini/src/Components/Articolo.php b/modules/ordini/src/Components/Articolo.php index c84489e24..3da829ada 100755 --- a/modules/ordini/src/Components/Articolo.php +++ b/modules/ordini/src/Components/Articolo.php @@ -20,8 +20,6 @@ namespace Modules\Ordini\Components; use Common\Components\Article; -use Modules\Articoli\Articolo as Original; -use Modules\Ordini\Ordine; class Articolo extends Article { diff --git a/modules/ordini/src/Components/Descrizione.php b/modules/ordini/src/Components/Descrizione.php index a96348410..6ca22e024 100755 --- a/modules/ordini/src/Components/Descrizione.php +++ b/modules/ordini/src/Components/Descrizione.php @@ -20,7 +20,6 @@ namespace Modules\Ordini\Components; use Common\Components\Description; -use Modules\Ordini\Ordine; class Descrizione extends Description { diff --git a/modules/ordini/src/Components/Riga.php b/modules/ordini/src/Components/Riga.php index 04323e0a5..d831a4822 100755 --- a/modules/ordini/src/Components/Riga.php +++ b/modules/ordini/src/Components/Riga.php @@ -20,7 +20,6 @@ namespace Modules\Ordini\Components; use Common\Components\Row; -use Modules\Ordini\Ordine; class Riga extends Row { diff --git a/modules/ordini/src/Components/Sconto.php b/modules/ordini/src/Components/Sconto.php index 21affb2ba..dc0af60ef 100755 --- a/modules/ordini/src/Components/Sconto.php +++ b/modules/ordini/src/Components/Sconto.php @@ -20,7 +20,6 @@ namespace Modules\Ordini\Components; use Common\Components\Discount; -use Modules\Ordini\Ordine; class Sconto extends Discount { diff --git a/modules/porti/edit.php b/modules/porti/edit.php index ec86aad1b..f2cdbd423 100755 --- a/modules/porti/edit.php +++ b/modules/porti/edit.php @@ -46,15 +46,15 @@ include_once __DIR__.'/../../core.php'; fetchNum('SELECT id FROM dt_ddt WHERE idporto='.prepare($id_record).' +$numero_documenti = $dbo->fetchNum('SELECT id FROM dt_ddt WHERE idporto='.prepare($id_record).' UNION SELECT id FROM co_documenti WHERE idporto='.prepare($id_record).' UNION SELECT id FROM co_preventivi WHERE idporto='.prepare($id_record)); -if (!empty($documenti)) { +if (!empty($numero_documenti)) { echo '
'.tr('Ci sono _NUM_ documenti collegati', [ - '_NUM_' => count($documenti), + '_NUM_' => $numero_documenti, ]).'.
'; } diff --git a/modules/preventivi/src/Components/Articolo.php b/modules/preventivi/src/Components/Articolo.php index ad20262ca..c9eab6171 100755 --- a/modules/preventivi/src/Components/Articolo.php +++ b/modules/preventivi/src/Components/Articolo.php @@ -20,8 +20,6 @@ namespace Modules\Preventivi\Components; use Common\Components\Article; -use Modules\Articoli\Articolo as Original; -use Modules\Preventivi\Preventivo; class Articolo extends Article { diff --git a/modules/preventivi/src/Components/Descrizione.php b/modules/preventivi/src/Components/Descrizione.php index 615bfca7f..0ac8cdb34 100755 --- a/modules/preventivi/src/Components/Descrizione.php +++ b/modules/preventivi/src/Components/Descrizione.php @@ -20,7 +20,6 @@ namespace Modules\Preventivi\Components; use Common\Components\Description; -use Modules\Preventivi\Preventivo; class Descrizione extends Description { diff --git a/modules/preventivi/src/Components/Riga.php b/modules/preventivi/src/Components/Riga.php index 46e5b46a9..c5b20d66f 100755 --- a/modules/preventivi/src/Components/Riga.php +++ b/modules/preventivi/src/Components/Riga.php @@ -20,7 +20,6 @@ namespace Modules\Preventivi\Components; use Common\Components\Row; -use Modules\Preventivi\Preventivo; class Riga extends Row { diff --git a/modules/preventivi/src/Components/Sconto.php b/modules/preventivi/src/Components/Sconto.php index ca7ecce87..1a3433318 100755 --- a/modules/preventivi/src/Components/Sconto.php +++ b/modules/preventivi/src/Components/Sconto.php @@ -20,7 +20,6 @@ namespace Modules\Preventivi\Components; use Common\Components\Discount; -use Modules\Preventivi\Preventivo; class Sconto extends Discount { diff --git a/modules/spedizioni/edit.php b/modules/spedizioni/edit.php index 6e6f349bd..b861468fd 100755 --- a/modules/spedizioni/edit.php +++ b/modules/spedizioni/edit.php @@ -46,14 +46,14 @@ include_once __DIR__.'/../../core.php'; fetchNum('SELECT id FROM dt_ddt WHERE idspedizione='.prepare($id_record).' +$numero_documenti = $dbo->fetchNum('SELECT id FROM dt_ddt WHERE idspedizione='.prepare($id_record).' UNION SELECT id FROM co_documenti WHERE idspedizione='.prepare($id_record)); -if (!empty($documenti)) { +if (!empty($numero_documenti)) { echo '
'.tr('Ci sono _NUM_ documenti collegati', [ - '_NUM_' => count($documenti), + '_NUM_' => $numero_documenti, ]).'.
'; } diff --git a/src/Common/Document.php b/src/Common/Document.php index 45b2d704a..6aee1f520 100755 --- a/src/Common/Document.php +++ b/src/Common/Document.php @@ -40,7 +40,7 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt { return static::$movimenta_magazzino; } - + public function getRighe() { $results = $this->mergeCollections($this->descrizioni, $this->righe, $this->articoli, $this->sconti); diff --git a/update/2_4_18.sql b/update/2_4_18.sql index 4e6e83fa8..12c1a0ae6 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -90,10 +90,6 @@ UPDATE `zz_settings` SET `valore` = 'v3' WHERE `nome` = 'OSMCloud Services API V -- Aggiornamento margini stampa barbcode UPDATE `zz_prints` SET `options` = '{"width": 54, "height": 20, "format": [64, 55], "margins": {"top": 5,"bottom": 0,"left": 0,"right": 0}}' WHERE `zz_prints`.`name` = 'Barcode'; --- Aggiornamento del modulo Banche per il supporto completo alle Anagrafiche -ALTER TABLE `co_banche` ADD `id_anagrafica` INT(11) NOT NULL, CHANGE `note` `note` TEXT, CHANGE `filiale` `filiale` varchar(255); -UPDATE `co_banche` SET `id_anagrafica` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Azienda predefinita'); -ALTER TABLE `co_banche` ADD FOREIGN KEY (`id_anagrafica`) REFERENCES `an_anagrafiche`(`idanagrafica`) ON DELETE CASCADE; -- Aggiunta riferimenti testuali su descrizione righe per Fatture UPDATE `co_righe_documenti` @@ -180,7 +176,12 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_articoli` LEFT JOI UPDATE `zz_plugins` SET `options` = ' { "main_query": [ { "type": "table", "fields": "Matricola, Nome, Data, Descrizione", "query": "SELECT id, (SELECT `id` FROM `zz_modules` WHERE `name` = ''Impianti'') AS _link_module_, id AS _link_record_, matricola AS Matricola, nome AS Nome, DATE_FORMAT(data, ''%d/%m/%Y'') AS Data, descrizione AS Descrizione FROM my_impianti WHERE idanagrafica=|id_parent| HAVING 2=2 ORDER BY id DESC"} ]}' WHERE `zz_plugins`.`name` = 'Impianti del cliente'; -- Fix per plugin Storico attività -UPDATE `zz_plugins` SET `options` = '{"main_query": [{"type": "table", "fields": "Numero, Data inizio, Data fine, Tipo", "query": "SELECT in_interventi.id, in_interventi.codice AS Numero, DATE_FORMAT(MAX(orario_inizio),''%d/%m/%Y'') AS ''Data inizio'', DATE_FORMAT(MAX(orario_fine),''%d/%m/%Y'') AS ''Data fine'', (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS ''Tipo'', (SELECT `id` FROM `zz_modules` WHERE `name` = ''Interventi'') AS _link_module_, in_interventi.id AS _link_record_ FROM in_interventi LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE 1=1 AND in_interventi.deleted_at IS NULL AND idanagrafica = |id_parent| GROUP BY `in_interventi`.`id` HAVING 2=2 ORDER BY in_interventi.id DESC"}]}' +UPDATE `zz_plugins` SET `options` = '{"main_query": [{"type": "table", "fields": "Numero, Data inizio, Data fine, Tipo", "query": "SELECT in_interventi.id, in_interventi.codice AS Numero, DATE_FORMAT(MAX(orario_inizio),''%d/%m/%Y'') AS ''Data inizio'', DATE_FORMAT(MAX(orario_fine),''%d/%m/%Y'') AS ''Data fine'', (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS ''Tipo'', (SELECT `id` FROM `zz_modules` WHERE `name` = ''Interventi'') AS _link_module_, in_interventi.id AS _link_record_ FROM in_interventi LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE 1=1 AND in_interventi.deleted_at IS NULL AND idanagrafica = |id_parent| GROUP BY `in_interventi`.`id` HAVING 2=2 ORDER BY in_interventi.id DESC"}]}'; + +-- Aggiornamento del modulo Banche per il supporto completo alle Anagrafiche +ALTER TABLE `co_banche` ADD `id_anagrafica` INT(11) NOT NULL, CHANGE `note` `note` TEXT, CHANGE `filiale` `filiale` varchar(255); +UPDATE `co_banche` SET `id_anagrafica` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Azienda predefinita'); +ALTER TABLE `co_banche` ADD FOREIGN KEY (`id_anagrafica`) REFERENCES `an_anagrafiche`(`idanagrafica`) ON DELETE CASCADE; -- Collegamento sulla base dei campi aggiuntivi per le Anagrafiche UPDATE `co_banche` @@ -198,6 +199,8 @@ ALTER TABLE `an_anagrafiche` CHANGE `idbanca_acquisti` `idbanca_acquisti` INT(11 UPDATE `an_anagrafiche` SET `idbanca_acquisti` = NULL WHERE `idbanca_vendite` = 0; UPDATE `an_anagrafiche` SET `idbanca_vendite` = NULL WHERE `idbanca_vendite` = 0; +ALTER TABLE `co_banche` CHANGE `filiale` `filiale` varchar(255), CHANGE `note` `note` TEXT; + INSERT INTO `co_banche` (`id_anagrafica`, `nome`, `iban`, `bic`, `filiale`) SELECT idanagrafica, IF(appoggiobancario != '', appoggiobancario, CONCAT('Banca predefinita di ', ragione_sociale)), codiceiban, bic, filiale FROM an_anagrafiche WHERE codiceiban IS NOT NULL AND codiceiban != ''; UPDATE `an_anagrafiche` SET `idbanca_acquisti` = (SELECT `id` FROM `co_banche` WHERE `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` LIMIT 1) WHERE `idbanca_acquisti` IS NULL; From 1c760c9b5412a5e5c7776b3006a126b3c6790996 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 24 Sep 2020 15:44:02 +0200 Subject: [PATCH 4/8] Correzioni su ID documenti per collegamento banche --- modules/banche/edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/banche/edit.php b/modules/banche/edit.php index b5fdbf773..385fdbbc2 100755 --- a/modules/banche/edit.php +++ b/modules/banche/edit.php @@ -74,7 +74,7 @@ include_once __DIR__.'/../../core.php'; // Collegamenti diretti (numerici) $numero_documenti = $dbo->fetchNum('SELECT idanagrafica FROM an_anagrafiche WHERE idbanca_vendite='.prepare($id_record).' UNION SELECT idanagrafica FROM an_anagrafiche WHERE idbanca_acquisti='.prepare($id_record).' -UNION SELECT idanagrafica FROM co_documenti WHERE idbanca='.prepare($id_record)); +UNION SELECT idanagrafica FROM co_documenti WHERE id_banca_azienda = '.prepare($id_record).' OR id_banca_controparte = '.prepare($id_record)); if (!empty($numero_documenti)) { echo ' From 3ab069668227252d325cfa7ad81d42eeff6d95ab Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 24 Sep 2020 16:41:43 +0200 Subject: [PATCH 5/8] Correzioni per gestire una banca predefinita per Anagrafica --- modules/anagrafiche/edit.php | 38 +++++++++++++++++++++++++++------ modules/banche/actions.php | 7 ++---- modules/banche/edit.php | 6 +++++- modules/banche/src/Banca.php | 30 ++++++++++++++++++++++++++ modules/fatture/edit.php | 2 +- modules/fatture/src/Fattura.php | 19 ++++++++++------- update/2_4_18.sql | 13 ++--------- 7 files changed, 83 insertions(+), 32 deletions(-) diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 5a88d0425..f02d52780 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -18,6 +18,7 @@ */ use Modules\Anagrafiche\Anagrafica; +use Modules\Banche\Banca; include_once __DIR__.'/../../core.php'; @@ -407,10 +408,36 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
{[ "type": "text", "label": "'.tr('Dicitura fissa in fattura').'", "name": "diciturafissafattura", "value": "$diciturafissafattura$" ]}
-
-
'; +
'; + + $banche = Banca::where('id_anagrafica', $anagrafica->id)->get(); + $banca_predefinita = $banche->first(function ($item) { + return !empty($item['predefined']); + }); + $modulo_banche = Modules::get('Banche'); + if (!$banche->isEmpty()) { + echo ' + '; + } else { + echo ' +

'.tr("Nessuna banca disponibile per l'Anagrafica").'

'; + } echo ' +
+
@@ -428,7 +455,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Banca predefinita').'", "name": "idbanca_vendite", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica->id]).', "value": "$idbanca_vendite$", "icon-after": "add|'.Modules::get('Banche')['id'].'|id_anagrafica='.$anagrafica->id.'", "help": "'.tr('Banca predefinita su cui accreditare i pagamenti').'" ]} + {[ "type": "select", "label": "'.tr('Banca predefinita per accrediti').'", "name": "idbanca_vendite", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "$idbanca_vendite$", "help": "'.tr("Banca predefinita dell'Azienda su cui accreditare i pagamenti").'" ]}
@@ -490,7 +517,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Banca predefinita').'", "name": "idbanca_acquisti", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica->id]).', "value": "$idbanca_acquisti$", "icon-after": "add|'.Modules::get('Banche')['id'].'|id_anagrafica='.$anagrafica->id.'" ]} + {[ "type": "select", "label": "'.tr('Banca predefinita per addebiti').'", "name": "idbanca_acquisti", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "$idbanca_acquisti$", "help": "'.tr("Banca predefinita dell'Azienda da cui addebitare i pagamenti").'" ]}
@@ -563,7 +590,6 @@ if ($is_cliente or $is_fornitore or $is_tecnico) { ]); ?>" ]} - - +
{[ "type": "text", "label": "", "name": "iscrizione_tribunale", "value": "$iscrizione_tribunale$" ]} diff --git a/modules/banche/actions.php b/modules/banche/actions.php index f3e8ac039..ec0fee2b6 100755 --- a/modules/banche/actions.php +++ b/modules/banche/actions.php @@ -41,11 +41,6 @@ switch (filter('op')) { ]); } - // Imposizione della banca come predefinita per l'Anagrafica se non impostato altrimenti - $anagrafica->idbanca_vendite = $anagrafica->idbanca_vendite ?: $id_record; - $anagrafica->idbanca_acquisti = $anagrafica->idbanca_acquisti ?: $id_record; - $anagrafica->save(); - flash()->info(tr('Aggiunta nuova _TYPE_', [ '_TYPE_' => 'banca', ])); @@ -63,6 +58,8 @@ switch (filter('op')) { $banca->id_pianodeiconti3 = post('id_pianodeiconti3'); $banca->filiale = post('filiale'); + $banca->predefined = post('predefined'); + $banca->save(); flash()->info(tr('Salvataggio completato')); diff --git a/modules/banche/edit.php b/modules/banche/edit.php index 385fdbbc2..7ff407254 100755 --- a/modules/banche/edit.php +++ b/modules/banche/edit.php @@ -31,10 +31,14 @@ include_once __DIR__.'/../../core.php';
-
+
{[ "type": "select", "label": "", "name": "id_anagrafica", "required": "1", "value": "$id_anagrafica$", "ajax-source": "anagrafiche", "disabled": 1 ]}
+
+ {[ "type": "checkbox", "label": "", "name": "predefined", "value": "$predefined$", "disabled": "" ]} +
+
{[ "type": "text", "label": "", "name": "nome", "required": "1", "value": "$nome$" ]}
diff --git a/modules/banche/src/Banca.php b/modules/banche/src/Banca.php index 780894afa..d041e9c08 100644 --- a/modules/banche/src/Banca.php +++ b/modules/banche/src/Banca.php @@ -60,4 +60,34 @@ class Banca extends Model { return $this->belongsTo(Anagrafica::class, 'id_anagrafica'); } + + public function save(array $options = []) + { + $this->fixPredefined(); + + return parent::save($options); + } + + protected function fixPredefined() + { + $predefined = $this->predefined; + + // Selezione automatica per primo record + $count = self::where('id_anagrafica', $this->id_anagrafica) + ->where('id', '!=', $this->id) + ->count(); + if (empty($predefined) && empty($count)) { + $predefined = true; + } + + if (!empty($predefined)) { + self::where('id_anagrafica', $this->id_anagrafica) + ->where('id', '!=', $this->id) + ->update([ + 'predefined' => 0, + ]); + + $this->attributes['predefined'] = $predefined; + } + } } diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 2bc13453a..bdbf86684 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -270,7 +270,7 @@ elseif ($record['stato'] == 'Bozza') {
- {[ "type": "select", "label": "", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|||", "extra": " " ]} + {[ "type": "select", "label": "", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|||", "extra": " " ]}
id_ritenuta_contributi = $id_ritenuta_contributi ?: null; // Banca predefinita per l'anagrafica controparte - $model->id_banca_controparte = $anagrafica->{'idbanca_'.$conto}; + //$model->id_banca_controparte = ; // Tipo di pagamento dall'anagrafica controparte $id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [ @@ -156,15 +156,18 @@ class Fattura extends Document } // Banca predefinita per l'azienda, con ricerca della banca impostata per il pagamento - $azienda = Anagrafica::find(setting('Azienda predefinita')); - $id_banca_azienda = $database->fetchOne('SELECT id FROM co_banche WHERE id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento) AND id_anagrafica = :id_anagrafica', [ - ':id_pagamento' => $id_pagamento, - ':id_anagrafica' => $azienda->id, - ])['id']; + $id_banca_azienda = $anagrafica->{'idbanca_'.$conto}; if (empty($id_banca_azienda)) { - $id_banca_azienda = $azienda->{'idbanca_'.$conto}; + $azienda = Anagrafica::find(setting('Azienda predefinita')); + $id_banca_azienda = $database->fetchOne('SELECT id FROM co_banche WHERE id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento) AND id_anagrafica = :id_anagrafica', [ + ':id_pagamento' => $id_pagamento, + ':id_anagrafica' => $azienda->id, + ])['id']; + if (empty($id_banca_azienda)) { + $id_banca_azienda = $azienda->{'idbanca_'.$conto}; + } + $model->id_banca_azienda = $id_banca_azienda; } - $model->id_banca_azienda = $id_banca_azienda; // Gestione dello Split Payment sulla base dell'anagrafica Controparte $split_payment = $anagrafica->split_payment; diff --git a/update/2_4_18.sql b/update/2_4_18.sql index 12c1a0ae6..e769a4b9f 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -179,19 +179,12 @@ UPDATE `zz_plugins` SET `options` = ' { "main_query": [ { "type": "table", "fiel UPDATE `zz_plugins` SET `options` = '{"main_query": [{"type": "table", "fields": "Numero, Data inizio, Data fine, Tipo", "query": "SELECT in_interventi.id, in_interventi.codice AS Numero, DATE_FORMAT(MAX(orario_inizio),''%d/%m/%Y'') AS ''Data inizio'', DATE_FORMAT(MAX(orario_fine),''%d/%m/%Y'') AS ''Data fine'', (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS ''Tipo'', (SELECT `id` FROM `zz_modules` WHERE `name` = ''Interventi'') AS _link_module_, in_interventi.id AS _link_record_ FROM in_interventi LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE 1=1 AND in_interventi.deleted_at IS NULL AND idanagrafica = |id_parent| GROUP BY `in_interventi`.`id` HAVING 2=2 ORDER BY in_interventi.id DESC"}]}'; -- Aggiornamento del modulo Banche per il supporto completo alle Anagrafiche -ALTER TABLE `co_banche` ADD `id_anagrafica` INT(11) NOT NULL, CHANGE `note` `note` TEXT, CHANGE `filiale` `filiale` varchar(255); +ALTER TABLE `co_banche` ADD `id_anagrafica` INT(11) NOT NULL, CHANGE `note` `note` TEXT, CHANGE `filiale` `filiale` varchar(255), ADD `predefined` BOOLEAN NOT NULL DEFAULT FALSE; UPDATE `co_banche` SET `id_anagrafica` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Azienda predefinita'); ALTER TABLE `co_banche` ADD FOREIGN KEY (`id_anagrafica`) REFERENCES `an_anagrafiche`(`idanagrafica`) ON DELETE CASCADE; -- Collegamento sulla base dei campi aggiuntivi per le Anagrafiche -UPDATE `co_banche` - INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idbanca_acquisti` = `co_banche`.`id` -SET `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` -WHERE `an_anagrafiche`.`idbanca_acquisti` != 0; -UPDATE `co_banche` - INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idbanca_vendite` = `co_banche`.`id` -SET `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` -WHERE `an_anagrafiche`.`idbanca_vendite` != 0; +UPDATE `co_banche` SET `co_banche`.`id_anagrafica` = (SELECT valore FROM zz_settings WHERE nome = 'Azienda predefinita'); -- Aggiornamento ID relativo sulle Anagrafiche ALTER TABLE `an_anagrafiche` CHANGE `idbanca_acquisti` `idbanca_acquisti` INT(11), @@ -199,8 +192,6 @@ ALTER TABLE `an_anagrafiche` CHANGE `idbanca_acquisti` `idbanca_acquisti` INT(11 UPDATE `an_anagrafiche` SET `idbanca_acquisti` = NULL WHERE `idbanca_vendite` = 0; UPDATE `an_anagrafiche` SET `idbanca_vendite` = NULL WHERE `idbanca_vendite` = 0; -ALTER TABLE `co_banche` CHANGE `filiale` `filiale` varchar(255), CHANGE `note` `note` TEXT; - INSERT INTO `co_banche` (`id_anagrafica`, `nome`, `iban`, `bic`, `filiale`) SELECT idanagrafica, IF(appoggiobancario != '', appoggiobancario, CONCAT('Banca predefinita di ', ragione_sociale)), codiceiban, bic, filiale FROM an_anagrafiche WHERE codiceiban IS NOT NULL AND codiceiban != ''; UPDATE `an_anagrafiche` SET `idbanca_acquisti` = (SELECT `id` FROM `co_banche` WHERE `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` LIMIT 1) WHERE `idbanca_acquisti` IS NULL; From 557f1593aa670b0c5de6ede429881c319b9030ab Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 24 Sep 2020 16:51:41 +0200 Subject: [PATCH 6/8] Correzione per banca in caso di RiBa --- modules/fatture/src/Fattura.php | 10 +++++----- templates/info.php | 11 ++++++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index 42fafd772..d5a3d73bd 100755 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -655,14 +655,14 @@ class Fattura extends Document $riba = database()->fetchOne('SELECT riba FROM co_pagamenti WHERE id ='.prepare($this->idpagamento)); if ($riba['riba'] == 1) { - $id_banca = $this->anagrafica->idbanca_vendite; + $banca = Banca::where('id_anagrafica', $this->idanagrafica) + ->where('predefined', 1) + ->first(); } else { - $id_banca = $this->id_banca_azienda; + $banca = Banca::find($this->id_banca_azienda); } - $result = Banca::find($id_banca); - - return $result; + return $banca; } // Metodi statici diff --git a/templates/info.php b/templates/info.php index c51b053e2..10b7840eb 100755 --- a/templates/info.php +++ b/templates/info.php @@ -28,12 +28,21 @@ if (empty($id_sede) || $id_sede == '-1') { } else { $queryc = 'SELECT an_anagrafiche.*, an_sedi.*, if(an_sedi.codice_fiscale != "", an_sedi.codice_fiscale, an_anagrafiche.codice_fiscale) AS codice_fiscale, if(an_sedi.piva != "", an_sedi.piva, an_anagrafiche.piva) AS piva FROM an_sedi JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=an_sedi.idanagrafica WHERE an_sedi.idanagrafica='.prepare($id_cliente).' AND an_sedi.id='.prepare($id_sede); } +/** + * @deprecated + */ $cliente = $dbo->fetchOne($queryc); // Lettura dati aziendali -$azienda = $dbo->fetchOne('SELECT *, (SELECT iban FROM co_banche WHERE id IN (SELECT idbanca FROM co_documenti WHERE id = '.prepare($id_record).' ) ) AS codiceiban, (SELECT nome FROM co_banche WHERE id IN (SELECT idbanca FROM co_documenti WHERE id = '.prepare($id_record).' ) ) AS appoggiobancario, (SELECT bic FROM co_banche WHERE id IN (SELECT idbanca FROM co_documenti WHERE id = '.prepare($id_record)." ) ) AS bic FROM an_anagrafiche WHERE idanagrafica = (SELECT valore FROM zz_settings WHERE nome='Azienda predefinita')"); +/** + * @deprecated + */ +$azienda = $dbo->fetchOne('SELECT *, (SELECT iban FROM co_banche WHERE id IN (SELECT id_banca_azienda FROM co_documenti WHERE id = '.prepare($id_record).')) AS codiceiban, (SELECT nome FROM co_banche WHERE id IN (SELECT id_banca_azienda FROM co_documenti WHERE id = '.prepare($id_record).')) AS appoggiobancario, (SELECT bic FROM co_banche WHERE id IN (SELECT id_banca_azienda FROM co_documenti WHERE id = '.prepare($id_record).")) AS bic FROM an_anagrafiche WHERE idanagrafica = (SELECT valore FROM zz_settings WHERE nome='Azienda predefinita')"); // Prefissi e contenuti del replace +/** + * @deprecated + */ $replace = [ 'c_' => isset($cliente) ? $cliente : [], 'f_' => isset($azienda) ? $azienda : [], From b51158968f28a9416324b0cbec29771265071a47 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 24 Sep 2020 16:55:45 +0200 Subject: [PATCH 7/8] Fix gestione automatica campo predefined --- modules/banche/src/Banca.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/banche/src/Banca.php b/modules/banche/src/Banca.php index d041e9c08..8bfe2230e 100644 --- a/modules/banche/src/Banca.php +++ b/modules/banche/src/Banca.php @@ -70,7 +70,7 @@ class Banca extends Model protected function fixPredefined() { - $predefined = $this->predefined; + $predefined = isset($this->predefined) ? $this->predefined : false; // Selezione automatica per primo record $count = self::where('id_anagrafica', $this->id_anagrafica) @@ -79,7 +79,7 @@ class Banca extends Model if (empty($predefined) && empty($count)) { $predefined = true; } - + if (!empty($predefined)) { self::where('id_anagrafica', $this->id_anagrafica) ->where('id', '!=', $this->id) From 57a8d31870016611f81352fc54d8981b66bbe589 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 24 Sep 2020 16:58:42 +0200 Subject: [PATCH 8/8] Aggiunto campo Predefinito per la tabella Banche --- modules/banche/src/Banca.php | 2 +- update/2_4_18.sql | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/banche/src/Banca.php b/modules/banche/src/Banca.php index 8bfe2230e..ce5bf8d51 100644 --- a/modules/banche/src/Banca.php +++ b/modules/banche/src/Banca.php @@ -79,7 +79,7 @@ class Banca extends Model if (empty($predefined) && empty($count)) { $predefined = true; } - + if (!empty($predefined)) { self::where('id_anagrafica', $this->id_anagrafica) ->where('id', '!=', $this->id) diff --git a/update/2_4_18.sql b/update/2_4_18.sql index e769a4b9f..4d6b423e3 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -200,7 +200,8 @@ UPDATE `an_anagrafiche` SET `idbanca_vendite` = (SELECT `id` FROM `co_banche` WH -- Aggiornamento tabella principale per Banche UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_banche` INNER JOIN an_anagrafiche ON `an_anagrafiche`.`idanagrafica` = `co_banche`.`id_anagrafica` WHERE 1=1 AND `co_banche`.`deleted_at` IS NULL AND `an_anagrafiche`.`deleted_at` IS NULL HAVING 2=2' WHERE `name` = 'Banche'; INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `visible`, `summable`, `default`) VALUES -(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Banche'), 'Anagrafica', 'an_anagrafiche.ragione_sociale', 0, 1, 0, 0, 1, 0, 1); +(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Banche'), 'Anagrafica', 'an_anagrafiche.ragione_sociale', 0, 1, 0, 0, 1, 0, 1), +(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Banche'), 'Predefinito', 'IF(`co_banche`.`predefined`, ''Si'', ''No'')', 6, 1, 0, 0, 1, 0, 1); -- Campo id_banca_controparte e id_banca_azienda per i Documenti ALTER TABLE `co_documenti` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`;