mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-27 08:12:47 +01:00
Aggiunta gestione revisione preventivi
This commit is contained in:
parent
34417053dd
commit
83849196da
@ -44,6 +44,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
|
||||
// ore lavoro
|
||||
@ -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') {
|
||||
|
@ -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',
|
||||
|
@ -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>';
|
||||
}
|
||||
|
||||
|
26
plugins/revisioni/actions.php
Normal file
26
plugins/revisioni/actions.php
Normal 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;
|
||||
}
|
62
plugins/revisioni/edit.php
Normal file
62
plugins/revisioni/edit.php
Normal 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>";
|
||||
?>
|
@ -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;
|
Loading…
Reference in New Issue
Block a user