Aggiunta gestione revisione preventivi

This commit is contained in:
Matteo 2018-10-17 18:28:15 +02:00
parent 34417053dd
commit 83849196da
6 changed files with 190 additions and 1 deletions

View File

@ -43,6 +43,9 @@ switch (post('op')) {
$dbo->query('INSERT INTO co_preventivi(idanagrafica, nome, numero, idagente, idstato, idtipointervento, data_bozza, data_conclusione, idiva, idpagamento) VALUES ('.prepare($idanagrafica).', '.prepare($nome).', '.prepare($numero).', '.prepare($idagente).", (SELECT `id` FROM `co_statipreventivi` WHERE `descrizione`='Bozza'), ".prepare($idtipointervento).', NOW(), DATE_ADD(NOW(), INTERVAL +1 MONTH), '.prepare($idiva).', '.prepare($idpagamento).')');
$id_record = $dbo->lastInsertedID();
//Aggiungo master_revision e default_revision
$dbo->query('UPDATE co_preventivi SET master_revision='.prepare($id_record).', default_revision=1 WHERE id='.$id_record);
/*
// inserisco righe standard preventivo
@ -192,7 +195,10 @@ switch (post('op')) {
// eliminazione preventivo
case 'delete':
$dbo->query('DELETE FROM co_preventivi WHERE id='.prepare($id_record));
$rs_revisioni = $dbo->fetchArray('SELECT master_revision FROM co_preventivi WHERE id='.prepare($id_record));
//Cancello preventivo e revisioni
$dbo->query('DELETE FROM co_preventivi WHERE master_revision='.prepare($rs_revisioni[0]['master_revision']));
$dbo->update('in_interventi', [
'id_preventivo' => null,
@ -299,6 +305,78 @@ switch (post('op')) {
}
break;
case 'add_revision':
//Copio il preventivo
$rs_preventivo = $dbo->fetchArray("SELECT * FROM co_preventivi WHERE id='".$id_record."'");
//Tolgo il flag default_revision da tutte le revisioni e dal record_principale
$dbo->query("UPDATE co_preventivi SET default_revision=0 WHERE master_revision=".prepare($rs_preventivo[0]['master_revision']));
$preventivo = [
'numero' => $rs_preventivo[0]['numero'],
'nome' => $rs_preventivo[0]['nome'],
'idagente' => $rs_preventivo[0]['idagente'],
'data_bozza' => $rs_preventivo[0]['data_bozza'],
'data_accettazione' => $rs_preventivo[0]['data_accettazione'],
'data_rifiuto' => $rs_preventivo[0]['data_rifiuto'],
'data_conclusione' => $rs_preventivo[0]['data_conclusione'],
'data_pagamento' => $rs_preventivo[0]['data_pagamento'],
'budget' => $rs_preventivo[0]['budget'],
'descrizione' => $rs_preventivo[0]['descrizione'],
'idstato' => $rs_preventivo[0]['idstato'],
'validita' => $rs_preventivo[0]['validita'],
'tempi_consegna' => $rs_preventivo[0]['tempi_consegna'],
'idanagrafica' => $rs_preventivo[0]['idanagrafica'],
'esclusioni' => $rs_preventivo[0]['esclusioni'],
'idreferente' => $rs_preventivo[0]['idreferente'],
'idpagamento' => $rs_preventivo[0]['idpagamento'],
'idporto' => $rs_preventivo[0]['idporto'],
'idtipointervento' => $rs_preventivo[0]['idtipointervento'],
'idiva' => $rs_preventivo[0]['idiva'],
'costo_diritto_chiamata' => $rs_preventivo[0]['costo_diritto_chiamata'],
'ore_lavoro' => $rs_preventivo[0]['ore_lavoro'],
'costo_orario' => $rs_preventivo[0]['costo_orario'],
'costo_km' => $rs_preventivo[0]['costo_km'],
'sconto_globale' => $rs_preventivo[0]['sconto_globale'],
'tipo_sconto_globale' => $rs_preventivo[0]['tipo_sconto_globale'],
'master_revision' => $rs_preventivo[0]['master_revision'],
'default_revision' => '1',
];
$dbo->insert('co_preventivi', $preventivo);
$id_record_new = $dbo->lastInsertedID();
$rs_righe_preventivo = $dbo->fetchArray("SELECT * FROM co_righe_preventivi WHERE idpreventivo=".prepare($id_record));
for($i=0;$i<sizeof($rs_righe_preventivo);$i++){
$righe_preventivo = [
'data_evasione' => $rs_righe_preventivo[$i]['data_evasione'],
'idpreventivo' => $id_record_new,
'idarticolo' => $rs_righe_preventivo[$i]['idarticolo'],
'is_descrizione' => $rs_righe_preventivo[$i]['is_descrizione'],
'idiva' => $rs_righe_preventivo[$i]['idiva'],
'desc_iva' => $rs_righe_preventivo[$i]['desc_iva'],
'iva' => $rs_righe_preventivo[$i]['iva'],
'iva_indetraibile' => $rs_righe_preventivo[$i]['iva_indetraibile'],
'descrizione' => $rs_righe_preventivo[$i]['descrizione'],
'subtotale' => $rs_righe_preventivo[$i]['subtotale'],
'sconto' => $rs_righe_preventivo[$i]['sconto'],
'sconto_unitario' => $rs_righe_preventivo[$i]['sconto_unitario'],
'tipo_sconto' => $rs_righe_preventivo[$i]['tipo_sconto'],
'sconto_globale' => $rs_righe_preventivo[$i]['sconto_globale'],
'um' => $rs_righe_preventivo[$i]['um'],
'qta' => $rs_righe_preventivo[$i]['qta'],
'order' => $rs_righe_preventivo[$i]['order'],
];
$dbo->insert('co_righe_preventivi', $righe_preventivo);
}
$id_record = $id_record_new;
flash()->info(tr('Aggiunta nuova revisione!'));
break;
}
if (post('op') !== null && post('op') != 'update') {

View File

@ -12,6 +12,7 @@ switch ($resource) {
}
$where[] = 'an_anagrafiche.idanagrafica='.prepare($superselect['idanagrafica']);
$where[] = 'co_preventivi.default_revision=1';
$stati = !empty($superselect['stati']) ? $superselect['stati'] : [
'In attesa di conferma',

View File

@ -18,4 +18,14 @@ if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])
</ul>
</div>';
}else{
echo '
<form action="" method="post" id="form_crearevisione">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="add_revision">
<input type="hidden" name="id_record" value="'.$id_record.'">
<button type="button" class="btn btn-warning" onclick="if(confirm(\'Vuoi creare un nuova revisione?\')){$(\'#form_crearevisione\').submit();}"><i class="fa fa-copy"></i> Crea nuova revisione...</button>
</form>';
}

View File

@ -0,0 +1,26 @@
<?php
include_once __DIR__.'/../../core.php';
$operazione = filter('op');
switch ($operazione) {
case 'edit_revision':
$master_revision = post('master_revision');
$id_record = post('idrevisione');
//Tolgo il flag default_revision da tutte le revisioni e dal record_principale
$dbo->query("UPDATE co_preventivi SET default_revision=0 WHERE master_revision=".prepare($master_revision));
$dbo->query("UPDATE co_preventivi SET default_revision=1 WHERE id=".prepare($id_record));
flash()->info(tr('Revisione aggiornata!'));
break;
case 'delete_revision':
$idrevisione = post('idrevisione');
$dbo->query("DELETE FROM co_preventivi WHERE id=".prepare($idrevisione));
flash()->info(tr('Revisione eliminata!'));
break;
}

View File

@ -0,0 +1,62 @@
<?php
include_once __DIR__.'/../../../core.php';
echo "<form action='".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."' method='post'>";
echo " <input type='hidden' name='backto' value='record-edit'>";
echo " <input type='hidden' name='op' value='edit_revision'>";
echo " <input type='hidden' name='id_plugin' value='".$id_plugin."'>";
echo " <input type='hidden' name='id_record' value='".$id_record."'>";
$rs_master_revision = $dbo->fetchArray("SELECT master_revision FROM co_preventivi WHERE id=".prepare($id_record));
echo " <input type='hidden' name='master_revision' value='".$rs_master_revision[0]['master_revision']."'>";
$rs_revisioni = $dbo->fetchArray("SELECT * FROM co_preventivi WHERE master_revision=".prepare($rs_master_revision[0]['master_revision'])." OR id=".prepare($rs_master_revision[0]['master_revision'])." ORDER BY created_at");
echo " <div class='row'>";
echo " <div class='col-md-12'>";
echo " <div class='alert alert-info'><i class='fa fa-info-circle'></i> Seleziona la spunta e clicca salva per cambiare la revisione del preventivo</div>";
echo " <table class='table table-condensed table-bordered'>";
echo " <tr>
<th style='width:50px;' class='text-center'>#</th>
<th>Descrizione</th>
<th style='width:50px;'></th>
</tr>";
for($i=0;$i<sizeof($rs_revisioni);$i++){
if($rs_revisioni[$i]['master_revision']==$rs_revisioni[$i]['id'] || $rs_revisioni[$i]['default_revision']==1){$disabled='disabled';}else{$disabled='';}
if($rs_revisioni[$i]['default_revision']){$cheched='checked';}else{$cheched='';}
echo " <tr>
<td class='text-center'>
<input type='radio' class='revision_changer' name='idrevisione' value='".$rs_revisioni[$i]['id']."' ".$cheched.">
</td>
<td>
Revisione ".($i+1)." creata il ".Translator::dateToLocale($rs_revisioni[$i]['created_at'])." alle ".date('H:i', strtotime($rs_revisioni[$i]['created_at']))."
</td>
<td class='text-center'>";
?>
<button type='button' class='btn btn-danger <?=$disabled?>' onclick='if(confirm("Vuoi cancellare questa revisione?")){$("#idrevisione").val("<?=$rs_revisioni[$i]['id']?>");$("#form_deleterevision").submit();}' <?=$disabled?>><i class='fa fa-trash'></i></button>
<?php
echo "
</td>
</tr>";
}
echo " </table>";
echo " </div>";
echo " </div>";
echo " <div class='row'>";
echo " <div class='col-md-12 text-center'>";
echo " <button type='submit' class='btn btn-primary'><i class='fa fa-refresh'></i> Cambia revisione...</button>";
echo " </div>";
echo " </div>";
echo "</form>";
echo "<form action='".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."' method='post' id='form_deleterevision'>";
echo " <input type='hidden' name='backto' value='record-edit'>";
echo " <input type='hidden' name='op' value='delete_revision'>";
echo " <input type='hidden' name='id_plugin' value='".$id_plugin."'>";
echo " <input type='hidden' name='id_record' value='".$id_record."'>";
echo " <input type='hidden' name='idrevisione' id='idrevisione' value=''>";
echo "</form>";
?>

View File

@ -543,3 +543,15 @@ ALTER TABLE `zz_segments` CHANGE `predefined` `predefined` boolean NOT NULL DEFA
-- Fix colore per fatture senza numero esterno
UPDATE `zz_views` SET `query` = 'IF((SELECT COUNT(t.numero_esterno) FROM co_documenti AS t WHERE t.numero_esterno = co_documenti.numero_esterno AND t.numero_esterno != '''' AND t.id_segment = co_documenti.id_segment AND idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = ''entrata'') AND t.data >= ''|period_start|'' AND t.data <= ''|period_end|'') > 1, ''red'', '''')' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita') AND `name` = '_bg_';
-- Campi per la gestione revisioni
ALTER TABLE `co_preventivi` ADD `master_revision` INT NOT NULL AFTER `tipo_sconto_globale`, ADD `default_revision` TINYINT(1) NOT NULL AFTER `master_revision`;
-- Plugin revisioni
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (NULL, 'Revisioni', 'Revisioni', 13, 13, 'tab', '', 1, 0, 0, '', '', NULL, 'custom', 'revisioni', '');
-- Modifica modilo preventivi per revisioni
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_preventivi` WHERE 1=1 AND default_revision=1 HAVING 2=2 AND ((\'|period_start|\' >= `data_bozza` AND \'|period_start|\' <= `data_conclusione`) OR (\'|period_end|\' >= `data_bozza` AND \'|period_end|\' <= `data_conclusione`) OR (`data_bozza` >= \'|period_start|\' AND `data_bozza` <= \'|period_end|\') OR (`data_conclusione` >= \'|period_start|\' AND `data_conclusione` <= \'|period_end|\') OR (`data_bozza` >= \'|period_start|\' AND `data_conclusione` = \'0000-00-00\')) ORDER BY `id` DESC' WHERE `zz_modules`.`name` = 'Preventivi';
-- Chiave secondaria per le righe del preventivo
ALTER TABLE `co_righe_preventivi` ADD FOREIGN KEY (`idpreventivo`) REFERENCES `co_preventivi`(`id`) ON DELETE CASCADE;