diff --git a/modules/preventivi/actions.php b/modules/preventivi/actions.php index cf62192b5..22b89cd4a 100644 --- a/modules/preventivi/actions.php +++ b/modules/preventivi/actions.php @@ -137,7 +137,27 @@ switch (post('op')) { flash()->info(tr('Preventivo modificato correttamente!')); } 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': if (post('idintervento') !== null) { // Selezione costi da intervento diff --git a/modules/preventivi/buttons.php b/modules/preventivi/buttons.php index 958886787..72129330e 100644 --- a/modules/preventivi/buttons.php +++ b/modules/preventivi/buttons.php @@ -20,7 +20,7 @@ if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma']) '; } else { echo ' -
+ @@ -28,3 +28,14 @@ if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])
'; } + +//duplica preventivo +echo ' + +
+ + + +
'; diff --git a/modules/preventivi/edit.php b/modules/preventivi/edit.php index b2bae1782..733a1c1b8 100644 --- a/modules/preventivi/edit.php +++ b/modules/preventivi/edit.php @@ -183,9 +183,20 @@ include $docroot.'/modules/preventivi/row-list.php'; }); + + +{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} + +{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )} + 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`'); +//fatture, ordini collegate a questo preventivo +$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)) { echo ' @@ -201,15 +212,21 @@ if (!empty($elementi)) {