Aggiunto duplica preventivo + controllo se il preventivo è stato inserito in un ordine

This commit is contained in:
Luca 2018-12-07 10:47:44 +01:00
parent 4f5f2a9bc8
commit 3aed1da809
3 changed files with 58 additions and 14 deletions

View File

@ -138,6 +138,26 @@ switch (post('op')) {
} }
break; break;
// Duplica preventivo
case 'copy':
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM co_preventivi WHERE id = '.prepare($id_record));
$dbo->query('ALTER TABLE tmp DROP id');
$dbo->query('INSERT INTO co_preventivi SELECT NULL,tmp.* FROM tmp');
$id_record = $dbo->lastInsertedID();
$dbo->query('DROP TEMPORARY TABLE tmp');
// Codice preventivo: calcolo il successivo in base al formato specificato
$numeropreventivo_template = setting('Formato codice preventivi');
$numeropreventivo_template = str_replace('#', '%', $numeropreventivo_template);
$rs = $dbo->fetchArray('SELECT numero FROM co_preventivi WHERE numero LIKE('.prepare(Util\Generator::complete($numeropreventivo_template)).') ORDER BY numero DESC LIMIT 0,1');
$numero = Util\Generator::generate(setting('Formato codice preventivi'), $rs[0]['numero']);
$dbo->query('UPDATE co_preventivi SET idstato=1, numero = '.$numero.', master_revision = id WHERE id='.prepare($id_record));
flash()->info(tr('Preventivo duplicato correttamente!'));
break;
case 'addintervento': case 'addintervento':
if (post('idintervento') !== null) { if (post('idintervento') !== null) {
// Selezione costi da intervento // Selezione costi da intervento

View File

@ -20,7 +20,7 @@ if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])
</div>'; </div>';
} else { } else {
echo ' echo '
<form action="" method="post" id="form_crearevisione"> <form action="" method="post" class="pull-left id="form_crearevisione">
<input type="hidden" name="backto" value="record-edit"> <input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="add_revision"> <input type="hidden" name="op" value="add_revision">
<input type="hidden" name="id_record" value="'.$id_record.'"> <input type="hidden" name="id_record" value="'.$id_record.'">
@ -28,3 +28,14 @@ if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])
<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> <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>'; </form>';
} }
//duplica preventivo
echo '
<form action="" method="post" class="pull-left" style="margin-left:4px;" id="form-copy">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="copy">
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo preventivo?\') ){ $(\'#form-copy\').submit(); }">
<i class="fa fa-copy"></i> '.tr('Duplica preventivo').'
</button>
</form>';

View File

@ -183,9 +183,20 @@ include $docroot.'/modules/preventivi/row-list.php';
}); });
</script> </script>
{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )}
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
<?php <?php
//fatture collegate a questo preventivo //fatture, ordini collegate a questo preventivo
$elementi = $dbo->fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idpreventivo` = '.prepare($id_record).') ORDER BY `data`'); $elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idpreventivo` = '.prepare($id_record).')
UNION
SELECT `or_ordini`.`id`, `or_ordini`.`data`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, "Ordine cliente" AS tipo_documento, 0 AS dir FROM `or_ordini` JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` WHERE `or_righe_ordini`.`idpreventivo` = '.prepare($id_record).'
ORDER BY `data`');
if (!empty($elementi)) { if (!empty($elementi)) {
echo ' echo '
@ -201,15 +212,21 @@ if (!empty($elementi)) {
<div class="box-body"> <div class="box-body">
<ul>'; <ul>';
foreach ($elementi as $fattura) { foreach ($elementi as $elemento) {
$descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [ $descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [
'_DOC_' => $fattura['tipo_documento'], '_DOC_' => $elemento['tipo_documento'],
'_NUM_' => !empty($fattura['numero_esterno']) ? $fattura['numero_esterno'] : $fattura['numero'], '_NUM_' => !empty($elemento['numero_esterno']) ? $elemento['numero_esterno'] : $elemento['numero'],
'_DATE_' => Translator::dateToLocale($fattura['data']), '_DATE_' => Translator::dateToLocale($elemento['data']),
]); ]);
$modulo = ($fattura['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto'; if (in_array($elemento['tipo_documento'],['Ordine cliente'])) {
$id = $fattura['id']; $modulo = 'Ordini cliente';
}
else{
$modulo = ($elemento['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';
}
$id = $elemento['id'];
echo ' echo '
<li>'.Modules::link($modulo, $id, $descrizione).'</li>'; <li>'.Modules::link($modulo, $id, $descrizione).'</li>';
@ -230,10 +247,6 @@ if (!empty($elementi)) {
?> ?>
{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )}
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
<a class="btn btn-danger ask" data-backto="record-list"> <a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?> <i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a> </a>