Righe aggiuntive in interventi da tipologie interventi

This commit is contained in:
Beppe 2021-12-16 12:25:25 +01:00
parent 907dd8bf53
commit 2878e0164b
7 changed files with 280 additions and 1 deletions

View File

@ -595,6 +595,7 @@ function caricaTecnici() {
localLoading(container, true);
return $.get("'.$structure->fileurl('ajax_tecnici.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) {
caricaRighe();
container.html(data);
localLoading(container, false);
});

View File

@ -28,6 +28,7 @@ use Modules\Fatture\Components\Riga;
use Modules\Fatture\Fattura;
use Modules\Interventi\Components\Sessione;
use Modules\Interventi\Intervento;
use Modules\Interventi\Components\Riga as RigaIntervento;
use Util\Generator;
use Util\Ini;
@ -109,6 +110,22 @@ function add_tecnico($id_intervento, $idtecnico, $inizio, $fine, $idcontratto =
}
}
//Inserisco le righe aggiuntive previste dal tipo di intervento
$righe_aggiuntive = database()->fetchArray("SELECT * FROM in_righe_tipiinterventi WHERE id_tipointervento=".prepare($sessione->idtipointervento));
foreach($righe_aggiuntive as $riga_aggiuntiva){
$riga = RigaIntervento::build($intervento);
$riga->descrizione = $riga_aggiuntiva['descrizione'];
$riga->um = $riga_aggiuntiva['um'];
$riga->costo_unitario = $riga_aggiuntiva['prezzo_acquisto'];
$riga->setPrezzoUnitario( $riga_aggiuntiva['prezzo_vendita'], $riga_aggiuntiva['idiva'] );
$riga->qta = $riga_aggiuntiva['qta'];
$riga->save();
}
return true;
}

View File

@ -113,5 +113,61 @@ switch (post('op')) {
'idtipointervento' => $id_record,
]);
break;
case 'addriga':
$idiva = post('idiva');
$descrizione = post('descrizione');
$qta = post('qta');
$um = post('um');
$id_tipointervento = post('id_tipointervento');
$prezzo_acquisto = post('prezzo_acquisto');
$prezzo_vendita = post('prezzo_vendita');
$subtotale = $qta * $prezzo_vendita;
$query = 'INSERT INTO in_righe_tipiinterventi(id_tipointervento, prezzo_acquisto, prezzo_vendita, descrizione, qta, um, subtotale, idiva) VALUES ('.prepare($id_tipointervento).', '.prepare($prezzo_acquisto).', '.prepare($prezzo_vendita).', '.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($subtotale).', '.prepare($idiva).')';
$dbo->query($query);
flash()->info(tr('Riga aggiunta!'));
break;
case 'editriga':
$idiva = post('idiva');
$descrizione = post('descrizione');
$qta = post('qta');
$um = post('um');
$idriga = post('idriga');
$id_tipointervento = post('id_tipointervento');
$prezzo_acquisto = post('prezzo_acquisto');
$prezzo_vendita = post('prezzo_vendita');
$subtotale = $qta * $prezzo_vendita;
$query = 'UPDATE in_righe_tipiinterventi SET'.
' descrizione='.prepare($descrizione).','.
' qta='.prepare($qta).','.
' idiva='.prepare($idiva).','.
' um='.prepare($um).','.
' id_tipointervento='.prepare($id_tipointervento).','.
' prezzo_acquisto='.prepare($prezzo_acquisto).','.
' prezzo_vendita='.prepare($prezzo_vendita).','.
' subtotale='.$subtotale.
' WHERE id='.prepare($idriga);
$dbo->query($query);
flash()->info(tr('Riga modificata!'));
break;
case 'delriga':
$idriga = post('idriga');
$query = "DELETE FROM in_righe_tipiinterventi WHERE id=".prepare($idriga);
$dbo->query($query);
flash()->info(tr('Riga eliminata!'));
break;
}

View File

@ -0,0 +1,117 @@
<?php
if (file_exists(__DIR__.'/../../../core.php')) {
include_once __DIR__.'/../../../core.php';
} else {
include_once __DIR__.'/../../core.php';
}
$idriga = filter('idriga');
if (empty($idriga)) {
$op = 'addriga';
$button = '<i class="fa fa-plus"></i> '.tr('Aggiungi');
// valori default
$descrizione = '';
$qta = 1;
$um = 'ore';
$idiva = setting('Iva predefinita');
$prezzo_vendita = '0';
$prezzo_acquisto = '0';
} else {
$op = 'editriga';
$button = '<i class="fa fa-edit"></i> '.tr('Modifica');
// carico record da modificare
$q = 'SELECT * FROM in_righe_tipiinterventi WHERE id='.prepare($idriga);
$rsr = $dbo->fetchArray($q);
$descrizione = $rsr[0]['descrizione'];
$qta = $rsr[0]['qta'];
$um = $rsr[0]['um'];
$idiva = $rsr[0]['idiva'];
$prezzo_vendita = $rsr[0]['prezzo_vendita'];
$prezzo_acquisto = $rsr[0]['prezzo_acquisto'];
}
/*
Form di inserimento
*/
echo '
<form id="add-righe" action="'.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" method="post">
<input type="hidden" name="op" value="'.$op.'">
<input type="hidden" name="id_tipointervento" value="'.$id_record.'">
<input type="hidden" name="idriga" value="'.$idriga.'">';
// Descrizione
echo '
<div class="row">
<div class="col-md-12">
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "id": "descrizione_riga", "name": "descrizione", "required": 1, "value": '.json_encode($descrizione).' ]}
</div>
</div>
<br>';
// Quantità
echo '
<div class="row">
<div class="col-md-4">
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "required": 1, "value": "'.$qta.'", "decimals": "qta" ]}
</div>';
// Unità di misura
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::get('Unità di misura')['id'].'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
</div>';
// Iva
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "ajax-source": "iva" ]}
</div>
</div>';
// Prezzo di acquisto
echo '
<div class="row">
<div class="col-md-6">
{[ "type": "number", "label": "'.tr('Prezzo di acquisto (un.)').'", "name": "prezzo_acquisto", "required": 1, "value": "'.$prezzo_acquisto.'", "icon-after": "&euro;" ]}
</div>';
// Prezzo di vendita
echo '
<div class="col-md-6">
{[ "type": "number", "label": "'.tr('Prezzo di vendita (un.)').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "&euro;" ]}
</div>
</div>';
echo '
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary pull-right">'.$button.'</button>
</div>
</div>
</form>';
?>
<script type="text/javascript">
$(document).ready(function() {
init();
$('#add-righe').ajaxForm({
success: function(){
$('#modals > div').modal('hide');
// Ricarico le righe
$('#righe').load('<?php echo $module->fileurl('ajax_righe.php');?>?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
// Ricarico la tabella dei costi
$('#costi').load('<?php echo $module->fileurl('ajax_righe.php');?>?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
}
});
});
</script>

View File

@ -0,0 +1,54 @@
<?php
if (file_exists(__DIR__.'/../../../core.php')) {
include_once __DIR__.'/../../../core.php';
} else {
include_once __DIR__.'/../../core.php';
}
$righe = $dbo->fetchArray("SELECT * FROM in_righe_tipiinterventi WHERE id_tipointervento=".prepare($id_record));
echo '
<table class="table table-striped table-condensed table-hover table-bordered">
<tr>
<th>'.tr('Descrizione').'</th>
<th width="8%">'.tr('Q.').'</th>
<th width="15%">'.tr('Prezzo di acquisto').'</th>
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="8%">'.tr('Iva').'</th>
<th width="8%">'.tr('Subtotale').'</th>
<th class="text-center" width="8%">'.tr('#').'</th>
</tr>';
foreach($righe as $riga){
$rs = $dbo->fetchArray("SELECT percentuale FROM co_iva WHERE id=".$riga['idiva']);
$iva = ($riga['subtotale'] * $rs[0]['percentuale'])/100;
echo'
<tr>
<td class="text-left">'.$riga['descrizione'].'</td>
<td class="text-right">'.number_format($riga['qta'], 2, ',', '.').' '.$riga['um'].'</td>
<td class="text-right">'.number_format($riga['prezzo_acquisto'], 2, ',', '.').' &euro;</td>
<td class="text-right">'.number_format($riga['prezzo_vendita'], 2, ',', '.').' &euro;</td>
<td class="text-right">'.number_format($iva, 2, ',', '.').' &euro;</td>
<td class="text-right">'.number_format($riga['subtotale'], 2, ',', '.').' &euro;</td>
<td class="text-center"><button type="button" class="btn btn-xs btn-warning" onclick="launch_modal(\''.tr('Aggiungi riga').'\', \''.$module->fileurl('add_righe.php').'?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$riga['id'].'\', 1);"><i class="fa fa-edit"></i></button> <button type="button" class="btn btn-xs btn-danger" data-toggle="tooltip" onclick="if(confirm(\''.tr('Eliminare questa riga?').'\')){ elimina_riga( \''.$riga['id'].'\' ); }"><i class="fa fa-trash"></i></button></td>
</tr>';
}
echo'
</table>';
?>
<script type="text/javascript">
function elimina_riga( id ){
$.post('<?php echo $module->fileurl('actions.php');?>', { op: 'delriga', idriga: id }, function(data, result){
if( result=='success' ){
//ricarico l'elenco delle righe
$('#righe').load( '<?php echo $module->fileurl('ajax_righe.php');?>?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
}
});
}
</script>

View File

@ -87,6 +87,24 @@ include_once __DIR__.'/../../core.php';
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title"><?php echo tr('Righe aggiuntive predefinite'); ?></h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12" id="righe">
<script>$('#righe').load('<?php echo $module->fileurl('ajax_righe.php');?>?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');</script>
</div>
</div>
<div class="row">
<div class="col-md-12 text-right">
<button type="button" class="btn btn-primary" onclick="launch_modal('<?php echo tr('Aggiungi riga');?>', '<?php echo $module->fileurl('add_righe.php');?>?id_module=<?php echo $id_module;?>&id_record=<?php echo $id_record;?>', 1);"><i class="fa fa-plus"></i><?php echo tr(' Aggiungi');?>..</button>
</div>
</div>
</div>
</div>
</form>
<?php

View File

@ -113,4 +113,20 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`,
-- Aggiunte note interne in Contratti e Preventivi
ALTER TABLE `co_preventivi` ADD `informazioniaggiuntive` TEXT NULL DEFAULT NULL AFTER `sconto_finale_percentuale`;
ALTER TABLE `co_contratti` ADD `informazioniaggiuntive` TEXT NULL DEFAULT NULL AFTER `sconto_finale_percentuale`;
ALTER TABLE `co_contratti` ADD `informazioniaggiuntive` TEXT NULL DEFAULT NULL AFTER `sconto_finale_percentuale`;
-- Aggiunta righe aggiuntive per tipologia intervento
CREATE TABLE `in_righe_tipiinterventi` (
`id` int NOT NULL,
`id_tipointervento` varchar(25) NOT NULL,
`descrizione` varchar(255) DEFAULT NULL,
`qta` decimal(12,4) NOT NULL,
`um` varchar(25) DEFAULT NULL,
`prezzo_acquisto` decimal(12,4) NOT NULL,
`prezzo_vendita` decimal(12,4) NOT NULL,
`idiva` int NOT NULL,
`subtotale` decimal(12,4) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`)) ENGINE = InnoDB;
ALTER TABLE `in_righe_tipiinterventi` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT;