diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php
old mode 100755
new mode 100644
index 6a8580e73..329666617
--- a/modules/contratti/actions.php
+++ b/modules/contratti/actions.php
@@ -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;
}
diff --git a/modules/contratti/add_preventivo.php b/modules/contratti/add_preventivo.php
new file mode 100644
index 000000000..78e71f893
--- /dev/null
+++ b/modules/contratti/add_preventivo.php
@@ -0,0 +1,68 @@
+ '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 '
+
+
+ {[ "type": "select", "label": "'.tr('Preventivo').'", "name": "id_documento", "ajax-source": "preventivi" ]}
+
+
+
+
+
+
+
+
+ '.tr('Caricamento in corso').'...
+
';
+
+$file = basename(__FILE__);
+echo '
+
+
+';
diff --git a/modules/contratti/crea_documento.php b/modules/contratti/crea_documento.php
old mode 100755
new mode 100644
diff --git a/modules/preventivi/buttons.php b/modules/preventivi/buttons.php
old mode 100755
new mode 100644
index d63456a58..76fbf221d
--- a/modules/preventivi/buttons.php
+++ b/modules/preventivi/buttons.php
@@ -34,6 +34,12 @@ echo '
'.tr('Fattura').'
+
+
+
+ '.tr('Contratto').'
+
+
';
diff --git a/modules/preventivi/crea_documento.php b/modules/preventivi/crea_documento.php
old mode 100755
new mode 100644
index ab9cf99f2..aaa8b063d
--- a/modules/preventivi/crea_documento.php
+++ b/modules/preventivi/crea_documento.php
@@ -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 = [
diff --git a/update/2_4_16.sql b/update/2_4_16.sql
index fe8ec80c5..161d57d81 100644
--- a/update/2_4_16.sql
+++ b/update/2_4_16.sql
@@ -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';
\ No newline at end of file
+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`;
\ No newline at end of file