Funzione creazione contratto da preventivo

This commit is contained in:
Beppe 2020-05-26 15:24:25 +02:00
parent 62780f9495
commit 95c4d4d98f
6 changed files with 131 additions and 2 deletions

49
modules/contratti/actions.php Executable file → Normal file
View File

@ -383,5 +383,54 @@ $riga = $contratto->getRiga($type, $id_riga);
}
}
break;
case 'add_preventivo':
$preventivo = \Modules\Preventivi\Preventivo::find(post('id_documento'));
// Creazione del contratto al volo
if (post('create_document') == 'on') {
$contratto = Contratto::build($preventivo->anagrafica, $preventivo->nome);
$contratto->idpagamento = $preventivo->idpagamento;
$contratto->idsede = $preventivo->idsede;
$contratto->id_documento_fe = $preventivo->id_documento_fe;
$contratto->codice_cup = $preventivo->codice_cup;
$contratto->codice_cig = $preventivo->codice_cig;
$contratto->num_item = $preventivo->num_item;
$contratto->descrizione = $preventivo->descrizione;
$contratto->esclusioni = $preventivo->esclusioni;
$contratto->save();
$id_record = $contratto->id;
}
$parziale = false;
$righe = $preventivo->getRighe();
foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
$qta = post('qta_da_evadere')[$riga->id];
$copia = $riga->copiaIn($contratto, $qta);
$copia->save();
}
if ($riga->qta != $riga->qta_evasa) {
$parziale = true;
}
}
ricalcola_costiagg_ordine($id_record);
flash()->info(tr('Preventivo _NUM_ aggiunto!', [
'_NUM_' => $preventivo->numero,
]));
break;
}

View File

@ -0,0 +1,68 @@
<?php
include_once __DIR__.'/../../core.php';
use Modules\Contratti\Contratto;
use Modules\Preventivi\Preventivo;
$documento_finale = Contratto::find($id_record);
$id_documento = get('id_documento');
if (!empty($id_documento)) {
$documento = Preventivo::find($id_documento);
$options = [
'op' => 'add_preventivo',
'type' => 'preventivo',
'button' => tr('Aggiungi'),
'documento' => $documento,
'documento_finale' => $documento_finale,
];
echo App::load('importa.php', [], $options, true);
return;
}
$id_anagrafica = $documento_finale->idanagrafica;
$_SESSION['superselect']['idanagrafica'] = $id_anagrafica;
echo '
<div class="row">
<div class="col-md-12">
{[ "type": "select", "label": "'.tr('Preventivo').'", "name": "id_documento", "ajax-source": "preventivi" ]}
</div>
</div>
<div id="righe_documento">
</div>
<div class="alert alert-info" id="box-loading">
<i class="fa fa-spinner fa-spin"></i> '.tr('Caricamento in corso').'...
</div>';
$file = basename(__FILE__);
echo '
<script>$(document).ready(init)</script>
<script>
var content = $("#righe_documento");
var loader = $("#box-loading");
$(document).ready(function(){
loader.hide();
});
$("#id_documento").on("change", function(){
loader.show();
var id = $(this).selectData() ? $(this).selectData().id : "";
content.html("");
content.load("'.$structure->fileurl($file).'?id_module='.$id_module.'&id_record='.$id_record.'&id_documento=" + id, function() {
loader.hide();
});
});
</script>';

0
modules/contratti/crea_documento.php Executable file → Normal file
View File

6
modules/preventivi/buttons.php Executable file → Normal file
View File

@ -34,6 +34,12 @@ echo '
<i class="fa fa-file"></i>&nbsp;'.tr('Fattura').'
</a>
</li>
<li>
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=contratto" data-toggle="modal" data-title="'.tr('Crea contratto').'">
<i class="fa fa-file-o"></i>&nbsp;'.tr('Contratto').'
</a>
</li>
</ul>
</div>';

5
modules/preventivi/crea_documento.php Executable file → Normal file
View File

@ -9,9 +9,12 @@ $documento = Preventivo::find($id_record);
if (get('documento') == 'fattura') {
$final_module = 'Fatture di vendita';
$op = 'add_documento';
} else {
} elseif (get('documento') == 'ordine') {
$final_module = 'Ordini cliente';
$op = 'add_preventivo';
} else {
$final_module = 'Contratti';
$op = 'add_preventivo';
}
$options = [

View File

@ -5,4 +5,7 @@ UPDATE `zz_views` SET `search` = 1 WHERE `zz_views`.`name` IN ('Categoria', 'Nom
-- Aggiunta rivalsa inps e relativa iva per il calcolo del totale ivato del documento
UPDATE `zz_views` SET `query` = 'righe.totale + `co_documenti`.`rivalsainps` + `co_documenti`.`iva_rivalsainps`' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita') AND `name` = 'Totale ivato';
UPDATE `zz_views` SET `query` = 'righe.totale + `co_documenti`.`rivalsainps` + `co_documenti`.`iva_rivalsainps`' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di acquisto') AND `name` = 'Totale ivato';
UPDATE `zz_views` SET `query` = 'righe.totale + `co_documenti`.`rivalsainps` + `co_documenti`.`iva_rivalsainps`' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di acquisto') AND `name` = 'Totale ivato';
-- Aggiunta campi righe contratti --
ALTER TABLE `co_righe_contratti` ADD `original_id` INT(11) NULL DEFAULT NULL AFTER `abilita_serial` , ADD `original_type` VARCHAR(255) NULL DEFAULT NULL AFTER `original_id`;