mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-02 17:07:01 +01:00
Correzioni per gestire una banca predefinita per Anagrafica
This commit is contained in:
parent
1c760c9b54
commit
3ab0696682
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
use Modules\Anagrafiche\Anagrafica;
|
use Modules\Anagrafiche\Anagrafica;
|
||||||
|
use Modules\Banche\Banca;
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
@ -407,10 +408,36 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
|||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
{[ "type": "text", "label": "'.tr('Dicitura fissa in fattura').'", "name": "diciturafissafattura", "value": "$diciturafissafattura$" ]}
|
{[ "type": "text", "label": "'.tr('Dicitura fissa in fattura').'", "name": "diciturafissafattura", "value": "$diciturafissafattura$" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>';
|
||||||
</div>';
|
|
||||||
|
$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 '
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<a href="'.base_path().'/editor.php?id_module='.$modulo_banche['id'].'&id_record='.$banca_predefinita->id.'">
|
||||||
|
'.tr("Visualizza la banca predefinita per l'Anagrafica").' <i class="fa fa-external-link"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<a href="'.base_path().'/controller.php?id_module='.$modulo_banche['id'].'&search_Anagrafica='.rawurlencode($anagrafica['ragione_sociale']).'">
|
||||||
|
'.tr("Visualizza le banche disponibili per l'Anagrafica").' <i class="fa fa-external-link"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>';
|
||||||
|
} else {
|
||||||
|
echo '
|
||||||
|
<p>'.tr("Nessuna banca disponibile per l'Anagrafica").'</p>';
|
||||||
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="tab-pane '.(!$is_cliente ? 'hide' : 'active').'" id="cliente">
|
<div class="tab-pane '.(!$is_cliente ? 'hide' : 'active').'" id="cliente">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
@ -428,7 +455,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "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").'" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -490,7 +517,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "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").'" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -563,7 +590,6 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
|||||||
]); ?>" ]}
|
]); ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- campi già specificati in Codice R.E.A., da eliminare nelle prossime release -->
|
<!-- campi già specificati in Codice R.E.A., da eliminare nelle prossime release -->
|
||||||
<!--div class="col-md-3">
|
<!--div class="col-md-3">
|
||||||
{[ "type": "text", "label": "<?php echo tr('Num. iscr. C.C.I.A.A.'); ?>", "name": "cciaa", "value": "$cciaa$" ]}
|
{[ "type": "text", "label": "<?php echo tr('Num. iscr. C.C.I.A.A.'); ?>", "name": "cciaa", "value": "$cciaa$" ]}
|
||||||
@ -572,8 +598,8 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
|||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "text", "label": "<?php echo tr('Città iscr. C.C.I.A.A.'); ?>", "name": "cciaa_citta", "value": "$cciaa_citta$" ]}
|
{[ "type": "text", "label": "<?php echo tr('Città iscr. C.C.I.A.A.'); ?>", "name": "cciaa_citta", "value": "$cciaa_citta$" ]}
|
||||||
</div-->
|
</div-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "text", "label": "<?php echo tr('Num. iscr. tribunale'); ?>", "name": "iscrizione_tribunale", "value": "$iscrizione_tribunale$" ]}
|
{[ "type": "text", "label": "<?php echo tr('Num. iscr. tribunale'); ?>", "name": "iscrizione_tribunale", "value": "$iscrizione_tribunale$" ]}
|
||||||
|
@ -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_', [
|
flash()->info(tr('Aggiunta nuova _TYPE_', [
|
||||||
'_TYPE_' => 'banca',
|
'_TYPE_' => 'banca',
|
||||||
]));
|
]));
|
||||||
@ -63,6 +58,8 @@ switch (filter('op')) {
|
|||||||
$banca->id_pianodeiconti3 = post('id_pianodeiconti3');
|
$banca->id_pianodeiconti3 = post('id_pianodeiconti3');
|
||||||
$banca->filiale = post('filiale');
|
$banca->filiale = post('filiale');
|
||||||
|
|
||||||
|
$banca->predefined = post('predefined');
|
||||||
|
|
||||||
$banca->save();
|
$banca->save();
|
||||||
|
|
||||||
flash()->info(tr('Salvataggio completato'));
|
flash()->info(tr('Salvataggio completato'));
|
||||||
|
@ -31,10 +31,14 @@ include_once __DIR__.'/../../core.php';
|
|||||||
|
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-3">
|
||||||
{[ "type": "select", "label": "<?php echo tr('Anagrafica'); ?>", "name": "id_anagrafica", "required": "1", "value": "$id_anagrafica$", "ajax-source": "anagrafiche", "disabled": 1 ]}
|
{[ "type": "select", "label": "<?php echo tr('Anagrafica'); ?>", "name": "id_anagrafica", "required": "1", "value": "$id_anagrafica$", "ajax-source": "anagrafiche", "disabled": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{[ "type": "checkbox", "label": "<?php echo tr('Predefinito'); ?>", "name": "predefined", "value": "$predefined$", "disabled": "<?php echo intval($record['predefined']); ?>" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": "1", "value": "$nome$" ]}
|
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": "1", "value": "$nome$" ]}
|
||||||
</div>
|
</div>
|
||||||
|
@ -60,4 +60,34 @@ class Banca extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsTo(Anagrafica::class, 'id_anagrafica');
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -270,7 +270,7 @@ elseif ($record['stato'] == 'Bozza') {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "select", "label": "<?php echo tr('Banca'); ?>", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": <?php echo json_encode(['id_anagrafica' => $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|<?php echo Modules::get('Banche')['id']; ?>||", "extra": " <?php echo (intval($block_edit)) ? 'disabled' : ''; ?> " ]}
|
{[ "type": "select", "label": "<?php echo tr('Banca azienda'); ?>", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": <?php echo json_encode(['id_anagrafica' => $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|<?php echo Modules::get('Banche')['id']; ?>||", "extra": " <?php echo (intval($block_edit)) ? 'disabled' : ''; ?> " ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
@ -138,7 +138,7 @@ class Fattura extends Document
|
|||||||
$model->id_ritenuta_contributi = $id_ritenuta_contributi ?: null;
|
$model->id_ritenuta_contributi = $id_ritenuta_contributi ?: null;
|
||||||
|
|
||||||
// Banca predefinita per l'anagrafica controparte
|
// Banca predefinita per l'anagrafica controparte
|
||||||
$model->id_banca_controparte = $anagrafica->{'idbanca_'.$conto};
|
//$model->id_banca_controparte = ;
|
||||||
|
|
||||||
// Tipo di pagamento dall'anagrafica controparte
|
// Tipo di pagamento dall'anagrafica controparte
|
||||||
$id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [
|
$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
|
// Banca predefinita per l'azienda, con ricerca della banca impostata per il pagamento
|
||||||
$azienda = Anagrafica::find(setting('Azienda predefinita'));
|
$id_banca_azienda = $anagrafica->{'idbanca_'.$conto};
|
||||||
$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)) {
|
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
|
// Gestione dello Split Payment sulla base dell'anagrafica Controparte
|
||||||
$split_payment = $anagrafica->split_payment;
|
$split_payment = $anagrafica->split_payment;
|
||||||
|
@ -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"}]}';
|
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
|
-- 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');
|
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;
|
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
|
-- Collegamento sulla base dei campi aggiuntivi per le Anagrafiche
|
||||||
UPDATE `co_banche`
|
UPDATE `co_banche` SET `co_banche`.`id_anagrafica` = (SELECT valore FROM zz_settings WHERE nome = 'Azienda predefinita');
|
||||||
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
|
-- Aggiornamento ID relativo sulle Anagrafiche
|
||||||
ALTER TABLE `an_anagrafiche` CHANGE `idbanca_acquisti` `idbanca_acquisti` INT(11),
|
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_acquisti` = NULL WHERE `idbanca_vendite` = 0;
|
||||||
UPDATE `an_anagrafiche` SET `idbanca_vendite` = 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 != '';
|
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_acquisti` = (SELECT `id` FROM `co_banche` WHERE `co_banche`.`id_anagrafica` = `an_anagrafiche`.`idanagrafica` LIMIT 1) WHERE `idbanca_acquisti` IS NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user