Skip to content

Commit d58b8cc

Browse files
feat: migliorie gestione cespiti
1 parent 3239aac commit d58b8cc

5 files changed

Lines changed: 113 additions & 15 deletions

File tree

modules/ammortamenti/actions.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,22 @@
2323
use Carbon\Carbon;
2424
use Modules\Fatture\Components\Articolo;
2525
use Modules\Fatture\Components\Riga;
26+
use Modules\Fatture\Components\Sconto;
2627
use Modules\PrimaNota\Mastrino;
2728
use Modules\PrimaNota\Movimento;
2829

2930
switch (filter('op')) {
31+
case 'update':
32+
$riga = Articolo::find($id_record) ?: Riga::find($id_record);
33+
$riga = $riga ?: Sconto::find($id_record);
34+
$riga->codice_interno_cespite = post('codice_interno_cespite');
35+
$riga->is_smaltito = post('is_smaltito');
36+
$riga->save();
37+
38+
flash()->info(tr('Informazioni salvate correttamente!'));
39+
40+
break;
41+
3042
case 'add_ammortamento':
3143
$id_conto = post('id_conto');
3244
$anni = (array) post('anno');

modules/ammortamenti/edit.php

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
?><form action="" method="post" id="edit-form">
3838
<input type="hidden" name="backto" value="record-edit">
39-
<input type="hidden" name="op" value="add_ammortamento">
39+
<input type="hidden" name="op" value="update">
4040

4141
<!-- DATI -->
4242
<div class="card card-primary">
@@ -46,22 +46,40 @@
4646

4747
<div class="card-body">
4848
<div class="row">
49-
<div class="col-md-6">
49+
<div class="col-md-9">
5050
{[ "type": "text", "label": "<?php echo tr('Cespite'); ?>", "name": "descrizione_riga", "value": "$descrizione$", "disabled": 1 ]}
5151
</div>
52-
53-
<div class="col-md-2">
52+
53+
<div class="col-md-3">
54+
{[ "type": "checkbox", "label": "<?php echo tr('Smaltito'); ?>", "name": "is_smaltito", "value": "<?php echo $record['is_smaltito']; ?>" ]}
55+
</div>
56+
</div>
57+
58+
<div class="row">
59+
<div class="col-md-3">
60+
{[ "type": "text", "label": "<?php echo tr('Codice'); ?>", "name": "codice_cespite", "value": "<?php echo $record['codice_cespite']; ?>", "class": "text-center", "disabled": 1 ]}
61+
</div>
62+
63+
<div class="col-md-3">
64+
{[ "type": "text", "label": "<?php echo tr('Codice interno'); ?>", "name": "codice_interno_cespite", "value": "<?php echo $record['codice_interno_cespite']; ?>", "class": "text-center" ]}
65+
</div>
66+
67+
<div class="col-md-3">
5468
{[ "type": "text", "label": "<?php echo tr('Importo'); ?>", "name": "importo_riga", "value": "<?php echo numberFormat($record['subtotale']); ?>", "disabled": 1, "class": "text-right", "icon-after": "<?php echo currency(); ?>" ]}
5569
</div>
5670

57-
<div class="col-md-4">
71+
<div class="col-md-3">
5872
<?php echo Modules::link('Fatture di acquisto', $documento['id'], null, null, 'class="pull-right"'); ?>
5973
{[ "type": "text", "label": "<?php echo tr('Fattura di origine'); ?>", "name": "fattura_collegata", "value": "<?php echo $documento['numero']; ?> del <?php echo dateFormat($documento['data_competenza']); ?>", "disabled": 1 ]}
6074
</div>
6175
</div>
6276
</div>
6377
</div>
78+
</form>
6479

80+
<form action="" method="post" id="ammortamento-form">
81+
<input type="hidden" name="backto" value="record-edit">
82+
<input type="hidden" name="op" value="add_ammortamento">
6583
<div class="card card-primary">
6684
<div class="card-header">
6785
<h3 class="card-title"><?php echo tr('Ammortamenti'); ?></h3>
@@ -158,8 +176,6 @@
158176

159177
<script>
160178
$(document).ready(function() {
161-
$("#save-buttons").hide();
162-
163179
// Variabili globali
164180
var importo_totale = <?php echo $record['subtotale']; ?>;
165181
var indice_riga = 0;
@@ -263,7 +279,7 @@ function applicaAmmortamento() {
263279
showCancelButton: true,
264280
confirmButtonText: "<?php echo tr('Sì, procedi'); ?>"
265281
}).then(function () {
266-
$('#save').click();
282+
$('#ammortamento-form').submit();
267283
}).catch(swal.noop);
268284
}
269285
</script>

plugins/registrazioni/actions.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use Modules\Fatture\Components\Sconto;
2626
use Modules\Fatture\Fattura;
2727
use Modules\Fatture\Gestori\Movimenti as GestoreMovimenti;
28+
use Util\Generator;
2829

2930
$operazione = filter('op');
3031

@@ -50,6 +51,21 @@
5051
$is_cespite = !empty($cespiti[$id_riga]);
5152
$conto_selezionato = $is_cespite ? ($conti_cespiti[$id_riga] ?? null) : $conto;
5253

54+
// Generazione codice cespite
55+
if ($is_cespite) {
56+
if (!$riga->codice_cespite) {
57+
$maschera = setting('Formato codice cespite');
58+
$ultimo = Generator::getPreviousFrom($maschera, 'co_righe_documenti', 'codice_cespite', [
59+
"codice_cespite IS NOT NULL"
60+
]);
61+
$codice = Generator::generate($maschera, $ultimo);
62+
$riga->codice_cespite = $codice;
63+
}
64+
} else {
65+
$riga->codice_cespite = null;
66+
$riga->is_smaltito = 0;
67+
}
68+
5369
// Validazione lato server
5470
if (empty($conto_selezionato)) {
5571
$tipo_conto = $is_cespite ? tr('conto cespite') : tr('conto');

plugins/registrazioni/edit.php

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,12 @@
5252
<th>'.tr('Descrizione').'</th>
5353
<th class="text-center" width="100">'.tr('Q.tà').'</th>
5454
<th class="text-center" width="140">'.tr('Prezzo unitario').'</th>
55-
<th width="450">'.tr('Conto').'</th>
56-
<th width="200">'.tr('Cespite').'</th>
55+
<th width="450">'.tr('Conto').'</th>';
56+
if ($dir == 'uscita') {
57+
echo '
58+
<th width="200">'.tr('Cespite').'</th>';
59+
}
60+
echo '
5761
</tr>
5862
</thead>
5963
<tbody class="sortable">';
@@ -118,11 +122,15 @@
118122
<div id="select-conto-cespite-'.$riga['id'].'" '.(!$riga->is_cespite ? 'style="display:none;"' : '').'>
119123
{[ "type": "select", "name": "idconto_cespiti['.$riga['id'].']", "required": "'.($riga->is_cespite ? 1 : 0).'", "value": "'.$riga->id_conto.'", "values": '.json_encode($optionsConti_cespiti['results']).', "class": "unblockable" ]}
120124
</div>
121-
</td>
122-
125+
</td>';
126+
if ($dir == 'uscita') {
127+
$has_ammortamento_cespite = $dbo->selectOne('co_righe_ammortamenti', '*', ['id_riga' => $riga->id])['id'];
128+
echo '
123129
<td>
124-
{[ "type": "checkbox", "name": "is_cespite['.$riga['id'].']", "value": "'.$riga->is_cespite.'", "values": "Sì,No", "class": "unblockable" ]}
125-
</td>
130+
{[ "type": "checkbox", "name": "is_cespite['.$riga['id'].']", "value": "'.$riga->is_cespite.'", "values": "Sì,No", "class": "'.($has_ammortamento_cespite ? '' : 'unblockable').'", "disabled": "'.($has_ammortamento_cespite ? 1 : 0).'" ]}
131+
</td>';
132+
}
133+
echo '
126134
</tr>';
127135
}
128136
}

update/2_10.sql

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,50 @@ VALUES (NULL, 'app-v1', 'retrieve', 'gestione-notifiche', 'API\\App\\v1\\Gestion
104104

105105
-- Aggiunta impostazione per il calcolo delle provvigioni agenti
106106
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `is_user_setting`) VALUES (NULL, 'Calcola provvigione agenti su', 'Ricavo', 'list[Ricavo,Utile]', '1', 'Generali', '5', '0');
107-
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`) VALUES (NULL, '1', (SELECT `id` FROM `zz_settings` WHERE `nome` = 'Calcola provvigione agenti su'), 'Calcola provvigione agenti su', NULL), (NULL, '2', (SELECT `id` FROM `zz_settings` WHERE `nome` = 'Calcola provvigione agenti su'), 'Calcola provvigione agenti su', NULL);
107+
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`) VALUES (NULL, '1', (SELECT `id` FROM `zz_settings` WHERE `nome` = 'Calcola provvigione agenti su'), 'Calcola provvigione agenti su', NULL), (NULL, '2', (SELECT `id` FROM `zz_settings` WHERE `nome` = 'Calcola provvigione agenti su'), 'Calcola provvigione agenti su', NULL);
108+
109+
-- Aggiunta campi per la gestione dei cespiti
110+
ALTER TABLE `co_righe_documenti` ADD `codice_cespite` VARCHAR(255) NULL , ADD `codice_interno_cespite` VARCHAR(255) NULL , ADD `is_smaltito` BOOLEAN NOT NULL DEFAULT 0;
111+
112+
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`, `is_user_setting`) VALUES (NULL, 'Formato codice cespite', '#/YYYY', 'string', '1', 'Cespiti', NULL, NULL, NULL, '0');
113+
114+
INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES
115+
(1, (SELECT MAX(`id`) FROM `zz_settings`), 'Formato codice cespite', ''),
116+
(2, (SELECT MAX(`id`) FROM `zz_settings`), 'Asset code format', '');
117+
118+
UPDATE `zz_modules` SET `name` = 'Cespiti', `options` = 'SELECT |select| FROM `co_righe_documenti` LEFT JOIN `co_righe_ammortamenti` ON `co_righe_ammortamenti`.`id_riga` = `co_righe_documenti`.`id` INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE 1=1 AND `is_cespite` = 1 GROUP BY co_righe_documenti.id HAVING 2=2' WHERE `name` = 'Ammortamenti / Cespiti';
119+
UPDATE `zz_modules_lang` SET `title` = 'Cespiti' WHERE `id_record` = (select `id` from `zz_modules` where `name` = 'Cespiti');
120+
INSERT INTO `zz_modules` (`name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`) VALUES ('Ammortamenti', 'ammortamenti', 'SELECT |select| FROM `co_righe_documenti` RIGHT JOIN `co_righe_ammortamenti` ON `co_righe_ammortamenti`.`id_riga` = `co_righe_documenti`.`id` INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE 1=1 AND `is_cespite` = 1 HAVING 2=2', '', 'fa fa-circle-o', '2.10', '2.10', '1', (SELECT `id` FROM `zz_modules` AS `t` WHERE `name` = 'Cespiti'), '1', '1', '1', '1');
121+
122+
INSERT INTO `zz_modules_lang` (`id_lang`, `id_record`, `title`, `meta_title`) VALUES
123+
('1', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'Ammortamenti', 'Ammortamenti'),
124+
('2', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'Ammortamenti', 'Ammortamenti');
125+
126+
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `avg`, `default`) VALUES
127+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'Descrizione', '`co_righe_documenti`.`descrizione`', '2', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '1'),
128+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'Importo', '`co_righe_documenti`.`subtotale`', '3', '1', '0', '1', '0', NULL, NULL, '1', '1', '0', '1'),
129+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'Fattura', 'CONCAT("Fattura ", `co_documenti`.`numero_esterno`, " del ", YEAR(`co_documenti`.`data`))', '4', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '1'),
130+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'Anno', '`co_righe_ammortamenti`.`anno`', '5', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '1'),
131+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'id', '`co_righe_documenti`.`id`', '1', '0', '0', '0', '0', NULL, NULL, '0', '0', '0', '1'),
132+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti'), 'Stato', 'IF(co_righe_documenti.is_smaltito=1,\'Smaltito\',IF(co_righe_documenti.is_smaltito=1,\'Smaltito\',IF(anno>YEAR(NOW()),\'Ammortizzato\',\'In ammortamento\')))', '6', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '1');
133+
134+
INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
135+
('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Descrizione' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Descrizione'),
136+
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Descrizione' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Description'),
137+
('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Importo' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Importo'),
138+
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Importo' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Amount'),
139+
('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Fattura' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Fattura'),
140+
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Fattura' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Invoice'),
141+
('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Anno' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Anno'),
142+
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Anno' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Year'),
143+
('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'id'),
144+
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'id'),
145+
('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Stato'),
146+
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ammortamenti')), 'Status');
147+
148+
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `avg`, `default`) VALUES
149+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Cespiti'), 'Stato', 'IF(anno IS NULL,\'\',IF(MAX(anno)>=YEAR(NOW()),\'In ammortamento\',\'Ammortizzato\'))', '6', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '1');
150+
151+
INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
152+
('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Cespiti')), 'Stato'),
153+
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Cespiti')), 'Status');

0 commit comments

Comments
 (0)