Skip to content

Commit 9075585

Browse files
committed
refactor: miglioria gestione banche nei preventivi
1 parent 7f4b581 commit 9075585

4 files changed

Lines changed: 63 additions & 31 deletions

File tree

modules/preventivi/actions.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@
7272
$preventivo->idagente = post('idagente');
7373
$preventivo->idreferente = post('idreferente');
7474
$preventivo->idpagamento = post('idpagamento') ?: null;
75+
$preventivo->id_banca_controparte = post('id_banca_controparte') ?: null;
76+
$preventivo->id_banca_azienda = post('id_banca_azienda') ?: null;
7577
$preventivo->idporto = post('idporto') ?: null;
7678
$preventivo->tempi_consegna = post('tempi_consegna');
7779
$preventivo->numero = post('numero');

modules/preventivi/edit.php

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919

2020
include_once __DIR__.'/../../core.php';
2121
use Models\Module;
22+
use Modules\Anagrafiche\Anagrafica;
2223

2324
$block_edit = $record['is_bloccato'];
25+
$anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita'));
2426

2527
// Mostro un avviso se ci sono più revisioni del preventivo
2628
if (count($preventivo->revisioni) > 1) {
@@ -57,7 +59,7 @@
5759
</div>
5860
</div>
5961
60-
62+
6163
<div class="card-body">
6264
<!-- RIGA 1 -->
6365
<div class="row">
@@ -127,7 +129,7 @@
127129
{[ "type": "date", "label": "<?php echo tr('Data rifiuto'); ?>", "name": "data_rifiuto", "value": "$data_rifiuto$" ]}
128130
</div>
129131
</div>
130-
132+
131133
<div class="row">
132134
<div class="col-md-3">
133135
{[ "type": "text", "label": "<?php echo tr('Nome preventivo'); ?>", "name": "nome", "required": 1, "value": "$nome$" ]}
@@ -142,13 +144,27 @@
142144
{[ "type": "select", "label": "<?php echo tr('Pagamento'); ?>", "name": "idpagamento", "ajax-source": "pagamenti", "value": "$idpagamento$" ]}
143145
</div>
144146

145-
<div class="col-md-2">
147+
<div class="col-md-3">
148+
<?php
149+
$id_module_banche = Module::where('name', 'Banche')->first()->id;
150+
echo '
151+
{[ "type": "select", "label": "'.tr('Banca accredito').'", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "$id_banca_azienda$", "icon-after": "add|'.$id_module_banche.'|id_anagrafica='.$anagrafica_azienda->id.'", "extra": "'.(intval($block_edit) ? 'disabled' : '').'" ]}
152+
</div>
153+
<div class="col-md-3">
154+
{[ "type": "select", "label": "'.tr('Banca addebito').'", "name": "id_banca_controparte", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $record['idanagrafica']]).', "value": "$id_banca_controparte$", "icon-after": "add|'.$id_module_banche.'|idanagrafica='.$record['idanagrafica'].'", "extra": "'.(intval($block_edit) ? 'disabled' : '').'" ]}';
155+
?>
156+
</div>
157+
158+
</div>
159+
160+
<div class="row">
161+
<div class="col-md-4">
146162
{[ "type": "select", "label": "<?php echo tr('Tipo di attività'); ?>", "name": "idtipointervento", "required": 1, "ajax-source": "tipiintervento", "value": "$idtipointervento$" ]}
147163
</div>
148-
<div class="col-md-2">
164+
<div class="col-md-4">
149165
{[ "type": "number", "label": "<?php echo 'Sconto in fattura'; ?>", "name": "sconto_finale", "value": "<?php echo $preventivo->sconto_finale_percentuale ?: $preventivo->sconto_finale; ?>", "icon-after": "choice|untprc|<?php echo empty($preventivo->sconto_finale) ? 'PRC' : 'UNT'; ?>", "help": "<?php echo tr('Sconto in fattura, utilizzabile per applicare sconti sul netto a pagare del documento'); ?>." ]}
150166
</div>
151-
<div class="col-md-2">
167+
<div class="col-md-4">
152168
{[ "type": "text", "label": "<?php echo tr('Tempi di consegna'); ?>", "name": "tempi_consegna", "value": "$tempi_consegna$" ]}
153169
</div>
154170
</div>
@@ -175,7 +191,7 @@
175191
]);
176192
echo '
177193
</div>
178-
194+
179195
<div class="col-md-6">
180196
{[ "type": "textarea", "label": "'.tr('Note').'", "name": "note", "class": "autosize", "value": "$note$", "extra": "rows=\'5\'" ]}';
181197
if ($user->gruppo != 'Clienti') {
@@ -206,15 +222,15 @@
206222
<div class="card card-primary collapsable <?php echo ($record['tipo_anagrafica'] == 'Ente pubblico' || $record['tipo_anagrafica'] == 'Azienda') ? 'show' : 'hide'; ?> <?php echo $collapsed; ?>">
207223
<div class=" card-header">
208224
<h4 class=" card-title">
209-
225+
210226
<?php echo tr('Dati appalto'); ?></h4>
211227

212228
<div class="card-tools pull-right">
213229
<button type="button" class="btn btn-tool" data-card-widget="collapse">
214230
<i class="fa fa-plus"></i>
215231
</button>
216232
</div>
217-
233+
218234
</div>
219235
<div class="card-body">
220236
<div class="row">
@@ -269,7 +285,7 @@
269285
<button title="'.tr('Aggiungi articolo alla vendita').'" class="btn btn-primary tip" type="button" onclick="salvaArticolo()">
270286
<i class="fa fa-plus"></i> '.tr('Aggiungi').'
271287
</button>
272-
288+
273289
<a class="btn btn-primary" onclick="gestioneRiga(this)" data-title="'.tr('Aggiungi riga').'">
274290
<i class="fa fa-plus"></i> '.tr('Riga').'
275291
</a>
@@ -355,13 +371,14 @@ function caricaRighe(id_riga) {
355371
356372
$(document).ready(function() {
357373
caricaRighe(null);
358-
374+
359375
$("#idanagrafica").change(function() {
360376
updateSelectOption("idanagrafica", $(this).val());
361377
session_set("superselect,idanagrafica", $(this).val(), 0);
362378
363379
$("#idsede_destinazione").selectReset();
364380
$("#idpagamento").selectReset();
381+
$("#id_banca_controparte").selectReset();
365382
366383
let data = $(this).selectData();
367384
if (data) {

modules/preventivi/src/Preventivo.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,11 @@ public function tipoSessione()
186186
return $this->belongsTo(TipoSessione::class, 'idtipointervento');
187187
}
188188

189+
public function pagamento()
190+
{
191+
return $this->belongsTo(\Modules\Pagamenti\Pagamento::class, 'idpagamento');
192+
}
193+
189194
public function articoli()
190195
{
191196
return $this->hasMany(Components\Articolo::class, 'idpreventivo');
@@ -211,6 +216,34 @@ public function interventi()
211216
return $this->hasMany(Intervento::class, 'id_preventivo');
212217
}
213218

219+
public function bancaAzienda()
220+
{
221+
return $this->belongsTo(\Modules\Banche\Banca::class, 'id_banca_azienda');
222+
}
223+
224+
public function bancaControparte()
225+
{
226+
return $this->belongsTo(\Modules\Banche\Banca::class, 'id_banca_controparte');
227+
}
228+
229+
/**
230+
* Restituisce i dati bancari in base al pagamento.
231+
*
232+
* @return \Modules\Banche\Banca|null
233+
*/
234+
public function getBanca()
235+
{
236+
$pagamento = $this->pagamento;
237+
238+
if ($pagamento && $pagamento->isRiBa()) {
239+
$banca = \Modules\Banche\Banca::find($this->id_banca_controparte) ?: \Modules\Banche\Banca::where('id_anagrafica', $this->idanagrafica)->where('predefined', 1)->first();
240+
} else {
241+
$banca = \Modules\Banche\Banca::find($this->id_banca_azienda);
242+
}
243+
244+
return $banca;
245+
}
246+
214247
public function fixBudget()
215248
{
216249
$this->budget = $this->totale_imponibile ?: 0;

templates/preventivi/body.php

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,7 @@
3030
$anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita'));
3131
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
3232

33-
$pagamento = $documento['idpagamento'] ? Pagamento::find($documento['idpagamento']) : null;
34-
35-
// Banca dell'Azienda corrente impostata come predefinita per il Cliente
36-
$banca_azienda = Banca::where('id_anagrafica', '=', $anagrafica_azienda->id)
37-
->where('id_pianodeiconti3', '=', $pagamento ? ($pagamento['idconto_vendite'] ?: 0) : 0);
38-
try {
39-
$banca = (clone $banca_azienda)
40-
->findOrFail($anagrafica->idbanca_vendite);
41-
} catch (ModelNotFoundException) {
42-
// Ricerca prima banca dell'Azienda con Conto corrispondente
43-
$banca = (clone $banca_azienda)
44-
->orderBy('predefined', 'DESC')
45-
->first();
46-
}
47-
48-
// Ri.Ba: Banca predefinita *del Cliente* piuttosto che dell'Azienda
49-
if ($pagamento && $pagamento->isRiBa()) {
50-
$banca = Banca::where('id_anagrafica', $anagrafica->id)
51-
->where('predefined', 1)
52-
->first();
53-
}
33+
$banca = $documento->getBanca();
5434

5535
// Righe documento
5636
$righe = $documento->getRighe();

0 commit comments

Comments
 (0)