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\Banche\Banca;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
@ -407,10 +408,36 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||
<div class="col-md-9">
|
||||
{[ "type": "text", "label": "'.tr('Dicitura fissa in fattura').'", "name": "diciturafissafattura", "value": "$diciturafissafattura$" ]}
|
||||
</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 '
|
||||
</div>
|
||||
|
||||
<div class="tab-pane '.(!$is_cliente ? 'hide' : 'active').'" id="cliente">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
@ -428,7 +455,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
@ -490,7 +517,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
@ -563,7 +590,6 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||
]); ?>" ]}
|
||||
</div>
|
||||
|
||||
|
||||
<!-- campi già specificati in Codice R.E.A., da eliminare nelle prossime release -->
|
||||
<!--div class="col-md-3">
|
||||
{[ "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">
|
||||
{[ "type": "text", "label": "<?php echo tr('Città iscr. C.C.I.A.A.'); ?>", "name": "cciaa_citta", "value": "$cciaa_citta$" ]}
|
||||
</div-->
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "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_', [
|
||||
'_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'));
|
||||
|
@ -31,10 +31,14 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
<div class="panel-body">
|
||||
<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 ]}
|
||||
</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">
|
||||
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": "1", "value": "$nome$" ]}
|
||||
</div>
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ elseif ($record['stato'] == 'Bozza') {
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<?php
|
||||
|
@ -138,7 +138,7 @@ class Fattura extends Document
|
||||
$model->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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user