Miglioramento promemoria

This commit is contained in:
Thomas Zilio 2018-08-31 11:39:38 +02:00
parent 318779c01a
commit 2b976dacb0
34 changed files with 238 additions and 129 deletions

View File

@ -428,8 +428,7 @@ function start_widgets($widgets) {
// Modal
function launch_modal(title, href, init_modal, id) {
//Fix - Select2 does not function properly when I use it inside a Bootstrap modal.
// Fix - Select2 does not function properly when I use it inside a Bootstrap modal.
$.fn.modal.Constructor.prototype.enforceFocus = function () {};
if (id == null) {

View File

@ -106,7 +106,7 @@ if ($template['name'] == 'Fattura Elettronica') {
echo '
<div class="col-md-6">
{[ "type": "select", "multiple": "1", "label": "'.tr('Allegati').'", "name": "attachments[]", "value": "'.implode(',', $attachments).'", "values": "query=SELECT id, nome AS text FROM zz_files WHERE id_module = '.prepare($id_module).' AND id_record = '.prepare($id_record)." UNION SELECT id, CONCAT(nome, ' (Azienda)') AS text FROM zz_files WHERE id_module = ".prepare(Modules::get('Anagrafiche')['id'])." AND id_record = (SELECT valore FROM zz_settings WHERE nome = 'Azienda predefinita')\" ]}
{[ "type": "select", "multiple": "1", "label": "'.tr('Allegati').'", "name": "attachments[]", "value": "'.implode(',', $attachments).'", "values": "query=SELECT id, name AS text FROM zz_files WHERE id_module = '.prepare($id_module).' AND id_record = '.prepare($id_record)." UNION SELECT id, CONCAT(name, ' (Azienda)') AS text FROM zz_files WHERE id_module = ".prepare(Modules::get('Anagrafiche')['id'])." AND id_record = (SELECT valore FROM zz_settings WHERE nome = 'Azienda predefinita')\" ]}
</div>
</div>";
@ -158,7 +158,7 @@ echo '
$(this).autocomplete("search", $(this).val())
});;
});
aggiungi_destinatario();
});';
}

View File

@ -450,7 +450,7 @@ if (empty($record['deleted_at'])) {
SELECT `in_interventi`.`id`, `in_interventi`.`data_richiesta`, `in_interventi`.`codice` AS numero, 0 AS numero_esterno, "Intervento" AS tipo_documento, 0 AS dir FROM `in_interventi` JOIN `in_interventi_tecnici` ON `in_interventi`.`id` = `in_interventi_tecnici`.`idintervento` WHERE `in_interventi`.`id` IN (SELECT `idintervento` FROM `in_interventi_tecnici` WHERE `idtecnico` = '.prepare($id_record).' OR `in_interventi`.`idanagrafica` = '.prepare($id_record).' )
UNION
SELECT `co_contratti`.`id`, `co_contratti`.`data_bozza`, `co_contratti`.`numero`, 0 AS numero_esterno , "Contratto" AS tipo_documento, 0 AS dir FROM `co_contratti` WHERE `co_contratti`.`id` IN (SELECT `idcontratto` FROM `co_contratti_promemoria` WHERE `idanagrafica` = '.prepare($id_record).')
SELECT `co_contratti`.`id`, `co_contratti`.`data_bozza`, `co_contratti`.`numero`, 0 AS numero_esterno , "Contratto" AS tipo_documento, 0 AS dir FROM `co_contratti` WHERE `co_contratti`.`id` IN (SELECT `idcontratto` FROM `co_promemoria` WHERE `idanagrafica` = '.prepare($id_record).')
UNION
SELECT `co_preventivi`.`id`, `co_preventivi`.`data_bozza`, `co_preventivi`.`numero`, 0 AS numero_esterno , "Preventivo" AS tipo_documento, 0 AS dir FROM `co_preventivi` WHERE `co_preventivi`.`id` IN (SELECT `idpreventivo` FROM `co_righe_preventivi` WHERE `idanagrafica` = '.prepare($id_record).') ORDER BY `data`');

View File

@ -245,7 +245,7 @@ switch (post('op')) {
$idcontratto = get('idcontratto');
$idintervento = get('idintervento');
$query = 'DELETE FROM `co_contratti_promemoria` WHERE idcontratto='.prepare($idcontratto).' AND idintervento='.prepare($idintervento);
$query = 'DELETE FROM `co_promemoria` WHERE idcontratto='.prepare($idcontratto).' AND idintervento='.prepare($idintervento);
$dbo->query($query);
flash()->info(tr('Intervento _NUM_ rimosso!', [
@ -272,16 +272,14 @@ switch (post('op')) {
// eliminazione contratto
case 'delete':
$dbo->query('DELETE FROM co_contratti WHERE id='.prepare($id_record));
$dbo->query('DELETE FROM co_contratti_promemoria WHERE idcontratto='.prepare($id_record));
$dbo->query('DELETE FROM co_promemoria WHERE idcontratto='.prepare($id_record));
$dbo->query('DELETE FROM co_righe_contratti WHERE idcontratto='.prepare($id_record));
flash()->info(tr('Contratto eliminato!'));
break;
}
// Rinnovo contratto
switch (get('op')) {
// Rinnovo contratto
case 'renew':
$rs = $dbo->fetchArray('SELECT *, DATEDIFF(data_conclusione, data_accettazione) AS giorni FROM co_contratti WHERE id='.prepare($id_record));
@ -313,9 +311,45 @@ switch (get('op')) {
$impianti = $dbo->fetchArray('SELECT idimpianto FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record));
$dbo->sync('my_impianti_contratti', ['idcontratto' => $new_idcontratto], ['idimpianto' => array_column($impianti, 'idimpianto')]);
// Replicazione dei promemoria
$promemoria = $dbo->fetchArray('SELECT * FROM co_promemoria WHERE idcontratto='.prepare($id_record));
foreach ($promemoria as $p) {
$dbo->insert('co_promemoria', [
'idcontratto' => $new_idcontratto,
'data_richiesta' => date('Y-m-d', strtotime($p['data_richiesta'].' +'.$giorni_add.' day')),
'idtipointervento' => $p['idtipointervento'],
'richiesta' => $p['richiesta'],
'idimpianti' => $p['idimpianti'],
]);
$id_promemoria = $dbo->lastInsertedID();
// Copia degli articoli
$dbo->query('INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) SELECT idarticolo, :id_new, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial FROM co_promemoria_articoli AS z WHERE id_promemoria = :id_old', [
':id_new' => $id_promemoria,
':id_old' => $p['id'],
]);
// Copia delle righe
$dbo->query('INSERT INTO co_promemoria_righe(id_promemoria, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto) SELECT :id_new, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto FROM co_promemoria_righe AS z WHERE id_promemoria = :id_old', [
':id_new' => $id_promemoria,
':id_old' => $p['id'],
]);
// Copia degli allegati
Uploads::copy([
'id_module' => $id_module,
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $p['id'],
], [
'id_module' => $id_module,
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $id_promemoria,
]);
}
flash()->info(tr('Contratto rinnovato!'));
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$new_idcontratto);
$id_record = $new_idcontratto;
} else {
flash()->error(tr('Errore durante il rinnovo del contratto!'));
}

View File

@ -16,8 +16,12 @@ if (sizeof($rs_documento) > 0) {
}
if ($record['rinnovabile']) {
echo "
<button type=\"button\" class=\"btn btn-warning\" onclick=\"if( confirm('Rinnovare questo contratto?') ){ location.href='".$rootdir.'/editor.php?op=renew&id_module='.$id_module.'&id_record='.$id_record."'; }\">
<i class=\"fa fa-refresh\"></i> ".tr('Rinnova').'...
</button>';
$rinnova = !empty($record['data_accettazione']) && !empty($record['data_conclusione']) && $record['data_accettazione'] != '0000-00-00'&& $record['data_conclusione'] != '0000-00-00';
echo '
<div class="tip" data-toggle="tooltip" title="'.tr('Il contratto è rinnovabile se sono definite le date di accettazione e conclusione').'" style="display:inline;">
<button type="button" class="btn btn-warning ask '.($rinnova ? '' : 'disabled').'" data-backto="record-edit" data-op="renew" data-msg="'.tr("Rinnovare questo contratto?").'" data-button="Rinnova" data-class="btn btn-lg btn-warning" '.($rinnova ? '' : 'disabled').'>
<i class="fa fa-refresh"></i> '.tr('Rinnova').'...
</button>
</div>';
}

View File

@ -25,7 +25,7 @@ $totale = 0;
$totale_stato = [];
// Tabella con riepilogo interventi
$rsi = $dbo->fetchArray('SELECT *, in_interventi.id, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_contratti_promemoria INNER JOIN in_interventi ON co_contratti_promemoria.idintervento=in_interventi.id WHERE co_contratti_promemoria.idcontratto='.prepare($id_record).' ORDER BY co_contratti_promemoria.idintervento DESC');
$rsi = $dbo->fetchArray('SELECT *, in_interventi.id, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_promemoria INNER JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id WHERE co_promemoria.idcontratto='.prepare($id_record).' ORDER BY co_promemoria.idintervento DESC');
if (!empty($rsi)) {
echo '
<table class="table table-bordered table-condensed">

View File

@ -18,7 +18,7 @@ $mesi = [
];
// Righe inserite
$qp = "SELECT *, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento, (SELECT idanagrafica FROM co_contratti WHERE id=idcontratto) AS idcliente, (SELECT ragione_sociale FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_contratti.id=idcontratto) AS ragione_sociale, (SELECT CONCAT('Contratto ', numero, ' del ', DATE_FORMAT(data_bozza, '%d/%m/%Y'), ' - ', nome, ' [', (SELECT `descrizione` FROM `co_staticontratti` WHERE `co_staticontratti`.`id` = `idstato`) , ']') FROM co_contratti WHERE id = co_contratti_promemoria.idcontratto) contratto, (SELECT id FROM co_contratti WHERE id = co_contratti_promemoria.idcontratto) idcontratto FROM co_contratti_promemoria WHERE idcontratto IN ( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL ORDER BY DATE_FORMAT( data_richiesta, '%Y-%m') ASC, ragione_sociale ASC";
$qp = "SELECT *, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento, (SELECT idanagrafica FROM co_contratti WHERE id=idcontratto) AS idcliente, (SELECT ragione_sociale FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_contratti.id=idcontratto) AS ragione_sociale, (SELECT CONCAT('Contratto ', numero, ' del ', DATE_FORMAT(data_bozza, '%d/%m/%Y'), ' - ', nome, ' [', (SELECT `descrizione` FROM `co_staticontratti` WHERE `co_staticontratti`.`id` = `idstato`) , ']') FROM co_contratti WHERE id = co_promemoria.idcontratto) contratto, (SELECT id FROM co_contratti WHERE id = co_promemoria.idcontratto) idcontratto FROM co_promemoria WHERE idcontratto IN ( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL ORDER BY DATE_FORMAT( data_richiesta, '%Y-%m') ASC, ragione_sociale ASC";
$rsp = $dbo->fetchArray($qp);
if (!empty($rsp)) {

View File

@ -139,7 +139,7 @@ switch (get('op')) {
$mese = $_GET['mese'];
//Righe inserite
$qp = "SELECT co_contratti_promemoria.id, idcontratto, richiesta, DATE_FORMAT( data_richiesta, '%m%Y') AS mese, data_richiesta, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM (co_contratti_promemoria INNER JOIN co_contratti ON co_contratti_promemoria.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL
$qp = "SELECT co_promemoria.id, idcontratto, richiesta, DATE_FORMAT( data_richiesta, '%m%Y') AS mese, data_richiesta, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento FROM (co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT co_ordiniservizio.id, idcontratto, '', data_scadenza, DATE_FORMAT( data_scadenza, '%m%Y') AS mese, an_anagrafiche.ragione_sociale, 'ordine' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento='ODS') AS tipointervento FROM (co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL ORDER BY data_richiesta ASC";
$rsp = $dbo->fetchArray($qp);
$tot_dapianificare = sizeof($rsp);

View File

@ -285,7 +285,7 @@ if ($total == 0) {
</div>
<br>
<?php
$qp = "SELECT co_contratti_promemoria.id, idcontratto, richiesta, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, data_richiesta, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM (co_contratti_promemoria INNER JOIN co_contratti ON co_contratti_promemoria.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL
$qp = "SELECT co_promemoria.id, idcontratto, richiesta, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, data_richiesta, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento FROM (co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT co_ordiniservizio.id, idcontratto, '', data_scadenza, DATE_FORMAT( data_scadenza, '%m-%Y') AS mese, an_anagrafiche.ragione_sociale, 'ordine' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento='ODS') AS tipointervento FROM (co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) ) AND idintervento IS NULL ORDER BY data_richiesta ASC";
$rsp = $dbo->fetchArray($qp);
@ -306,7 +306,7 @@ if (!empty($rsp)) {
<h4>'.tr('Promemoria contratti da pianificare').'</h4>';
// Controllo pianificazioni mesi precedenti
$qp_old = 'SELECT co_contratti_promemoria.id FROM co_contratti_promemoria INNER JOIN co_contratti ON co_contratti_promemoria.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_contratti_promemoria.data_richiesta)+86400<UNIX_TIMESTAMP(NOW())
$qp_old = 'SELECT co_promemoria.id FROM co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_promemoria.data_richiesta)+86400<UNIX_TIMESTAMP(NOW())
UNION SELECT co_ordiniservizio.id FROM co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_ordiniservizio.data_scadenza)+86400<UNIX_TIMESTAMP(NOW())';
$rsp_old = $dbo->fetchNum($qp_old);

View File

@ -353,7 +353,7 @@ switch (post('op')) {
}
// Collego in fattura eventuali articoli collegati all'intervento
$rs2 = $dbo->fetchArray('SELECT mg_articoli_interventi.*, idarticolo FROM mg_articoli_interventi INNER JOIN mg_articoli ON mg_articoli_interventi.idarticolo=mg_articoli.id WHERE idintervento='.prepare($idintervento).' AND (idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_contratti_promemoria WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )');
$rs2 = $dbo->fetchArray('SELECT mg_articoli_interventi.*, idarticolo FROM mg_articoli_interventi INNER JOIN mg_articoli ON mg_articoli_interventi.idarticolo=mg_articoli.id WHERE idintervento='.prepare($idintervento).' AND (idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_promemoria WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )');
for ($i = 0; $i < sizeof($rs2); ++$i) {
$riga = add_articolo_infattura($id_record, $rs2[$i]['idarticolo'], $rs2[$i]['descrizione'], $rs2[$i]['idiva'], $rs2[$i]['qta'], $rs2[$i]['prezzo_vendita'] * $rs2[$i]['qta'], $rs2[$i]['sconto'], $rs2[$i]['sconto_unitario'], $rs2[$i]['tipo_sconto'], $idintervento, 0, $rs2[$i]['um']);
@ -362,7 +362,7 @@ switch (post('op')) {
}
// Aggiunta spese aggiuntive come righe generiche
$query = 'SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($idintervento).' AND (idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_contratti_promemoria WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )';
$query = 'SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($idintervento).' AND (idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_promemoria WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )';
$rsr = $dbo->fetchArray($query);
if (sizeof($rsr) > 0) {
for ($i = 0; $i < sizeof($rsr); ++$i) {
@ -1329,13 +1329,13 @@ switch (post('op')) {
$dbo->query("UPDATE co_contratti SET idstato=(SELECT id FROM co_staticontratti WHERE descrizione='In lavorazione') WHERE id=".prepare($rsp[$i]['idcontratto']));
// Aggiorno anche lo stato degli interventi collegati ai contratti
$dbo->query("UPDATE in_interventi SET idstatointervento='OK' WHERE id IN (SELECT idintervento FROM co_contratti_promemoria WHERE idcontratto=".prepare($rsp[$i]['idcontratto']).')');
$dbo->query("UPDATE in_interventi SET idstatointervento='OK' WHERE id IN (SELECT idintervento FROM co_promemoria WHERE idcontratto=".prepare($rsp[$i]['idcontratto']).')');
}
/*
Rimuovo tutti gli articoli dalla fattura collegati agli interventi che sono collegati a questo contratto
*/
$rs2 = $dbo->fetchArray('SELECT idintervento FROM co_contratti_promemoria WHERE idcontratto='.prepare($idcontratto)." AND NOT idcontratto=''");
$rs2 = $dbo->fetchArray('SELECT idintervento FROM co_promemoria WHERE idcontratto='.prepare($idcontratto)." AND NOT idcontratto=''");
for ($i = 0; $i < sizeof($rs2); ++$i) {
// Leggo gli articoli usati in questo intervento
$rs3 = $dbo->fetchArray('SELECT idarticolo FROM mg_articoli_interventi WHERE idintervento='.prepare($rs2[$i]['idintervento']));

View File

@ -46,7 +46,7 @@ $rs = $dbo->fetchArray('SELECT
AND in_statiintervento.completato=1
AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL)
AND NOT in_interventi.id IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL)
AND NOT in_interventi.id IN (SELECT idintervento FROM co_contratti_promemoria WHERE idintervento IS NOT NULL)');
AND NOT in_interventi.id IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL)');
foreach ($rs as $key => $value) {
$rs[$key]['prezzo'] = get_costi_intervento($value['id'])['totale'];
}

View File

@ -268,13 +268,13 @@ if ($record['stato'] != 'Pagato' && $record['stato'] != 'Emessa') {
if (empty($record['ref_documento'])) {
if ($dir == 'entrata') {
// Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti
$int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idanagrafica='.prepare($record['idanagrafica']).' AND in_statiintervento.completato=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_contratti_promemoria WHERE idintervento IS NOT NULL)';
$int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idanagrafica='.prepare($record['idanagrafica']).' AND in_statiintervento.completato=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL)';
$interventi = $dbo->fetchArray($int_query)[0]['tot'];
// Se non trovo niente provo a vedere se ce ne sono per clienti terzi
if (empty($interventi)) {
// Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti (clienti terzi)
$int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idclientefinale='.prepare($record['idanagrafica']).' AND in_statiintervento.completato=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_contratti_promemoria WHERE idintervento IS NOT NULL)';
$int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idclientefinale='.prepare($record['idanagrafica']).' AND in_statiintervento.completato=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL)';
$interventi = $dbo->fetchArray($int_query)[0]['tot'];
}

View File

@ -46,25 +46,25 @@ switch (post('op')) {
// Creazione nuova pianificazione se non era impostata
if (!empty($idcontratto) && empty($idcontratto_riga)) {
// Se questo intervento era collegato ad un altro contratto aggiorno le informazioni...
$rs = $dbo->fetchArray('SELECT id FROM co_contratti_promemoria WHERE idintervento='.prepare($id_record));
$rs = $dbo->fetchArray('SELECT id FROM co_promemoria WHERE idintervento='.prepare($id_record));
if (empty($rs)) {
$dbo->insert('co_contratti_promemoria', array_merge(['idcontratto' => $idcontratto], $array));
$dbo->insert('co_promemoria', array_merge(['idcontratto' => $idcontratto], $array));
}
// ...altrimenti se sto cambiando contratto aggiorno solo l'id del nuovo contratto
else {
$dbo->update('co_contratti_promemoria', ['idcontratto' => $idcontratto], ['idintervento' => $id_record]);
$dbo->update('co_promemoria', ['idcontratto' => $idcontratto], ['idintervento' => $id_record]);
}
}
// Pianificazione già impostata, aggiorno solo il codice intervento
elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
$dbo->update('co_contratti_promemoria', $array, ['idcontratto' => $idriga, 'id' => $idcontratto_riga]);
$dbo->update('co_promemoria', $array, ['idcontratto' => $idriga, 'id' => $idcontratto_riga]);
}
// Se non è impostato nessun contratto o riga, tolgo il collegamento dell'intervento al contratto
elseif (empty($idcontratto)) {
$dbo->update('co_contratti_promemoria', ['idintervento' => null], ['idintervento' => $id_record]);
$dbo->update('co_promemoria', ['idintervento' => null], ['idintervento' => $id_record]);
}
// Aggiorna tutte le sessioni di lavoro
@ -267,33 +267,26 @@ switch (post('op')) {
// Se è specificato che l'intervento fa parte di una pianificazione aggiorno il codice dell'intervento sulla riga della pianificazione
if (!empty($idcontratto_riga)) {
$dbo->update('co_contratti_promemoria', $array, ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
$dbo->update('co_promemoria', $array, ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
//copio le righe dal promemoria all'intervento
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.$idcontratto_riga.' ');
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$idcontratto_riga.' ');
//copio gli articoli dal promemoria all'intervento
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.$idcontratto_riga.' ');
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga.' ');
//copio gli allegati dal promemoria all'intervento
$dbo->query('INSERT INTO zz_files (nome,filename,original,category,id_module,id_record) SELECT t.nome, t.filename, t.original, t.category, '.$id_module.', '.$id_record.' FROM zz_files t WHERE t.id_record = '.$idcontratto_riga.' AND t.id_plugin = '.Plugins::get('Pianificazione interventi')['id'].'');
// Copia degli allegati
$alleagti = Uploads::copy([
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $idcontratto_riga,
], [
'id_module' => $id_module,
'id_record' => $id_record,
]);
//sposto fisicamente i file allegati
$rs_allegati = $dbo->fetchArray('SELECT filename FROM zz_files WHERE id_record = '.$id_record.' AND id_module = '.$id_module);
foreach ($rs_allegati as $rs_allegato) {
$from_dir = DOCROOT.'/'.Uploads::getDirectory(Modules::get('Contratti')['id'], Plugins::get('Pianificazione interventi')['id']);
$to_dir = DOCROOT.'/'.Uploads::getDirectory(Modules::get('Interventi')['id']);
if (!copy($from_dir.'/'.$rs_allegato['filename'], $to_dir.'/'.$rs_allegato['filename'])) {
$errors = error_get_last();
Auth::flash()->warning(tr('Errore durante la copia del file da _FROM_ a _TO_ per il file _FILE_ (_ERROR_: _MESSAGE_)', [
'_FROM_' => $from_dir,
'_TO_' => $to_dir,
'_FILE_' => $rs_allegato['filename'],
'_ERROR_' => $errors['type'],
'_MESSAGE_' => $errors['message'],
]));
}
if (!$alleagti) {
$errors = error_get_last();
flash()->warning(tr('Errore durante la copia degli allegati'));
}
// Decremento la quantità per ogni articolo copiato
@ -302,7 +295,7 @@ switch (post('op')) {
add_movimento_magazzino($rs_articolo['idarticolo'], -force_decimal($rs_articolo['qta']), ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $id_record]);
}
} else {
$dbo->insert('co_contratti_promemoria', [
$dbo->insert('co_promemoria', [
'idcontratto' => $idcontratto,
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
@ -355,13 +348,10 @@ switch (post('op')) {
// Eliminazione intervento
case 'delete':
// Elimino anche eventuali file caricati
$rs = $dbo->fetchArray('SELECT filename FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare($id_record));
for ($i = 0; $i < count($rs); ++$i) {
delete($docroot.'/files/interventi/'.$rs[$i]['filename']);
}
$dbo->query('DELETE FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare($id_record));
Uploads::deleteLinked([
'id_module' => $id_module,
'id_record' => $id_record,
]);
$codice = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE id='.prepare($id_record))[0]['codice'];
@ -381,7 +371,7 @@ switch (post('op')) {
}
// Eliminazione associazioni tra interventi e contratti
$query = 'UPDATE co_contratti_promemoria SET idintervento = NULL WHERE idintervento='.prepare($id_record);
$query = 'UPDATE co_promemoria SET idintervento = NULL WHERE idintervento='.prepare($id_record);
$dbo->query($query);
// Eliminazione dell'intervento

View File

@ -73,7 +73,7 @@ elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
$idzona = $rs[0]['idzona'];
// Info riga pianificata
$rs = $dbo->fetchArray('SELECT *, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_contratti_promemoria.idtipointervento) AS tempo_standard FROM co_contratti_promemoria WHERE idcontratto='.prepare($idcontratto).' AND id='.prepare($idcontratto_riga));
$rs = $dbo->fetchArray('SELECT *, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_promemoria.idtipointervento) AS tempo_standard FROM co_promemoria WHERE idcontratto='.prepare($idcontratto).' AND id='.prepare($idcontratto_riga));
$idtipointervento = $rs[0]['idtipointervento'];
$data = (null !== filter('data')) ? filter('data') : $rs[0]['data_richiesta'];
$richiesta = $rs[0]['richiesta'];

View File

@ -14,7 +14,7 @@ switch (get('op')) {
$idtecnico = get('idtecnico');
// Verifico se l'intervento è collegato ad un contratto
$rs = $dbo->fetchArray('SELECT idcontratto FROM co_contratti_promemoria WHERE idintervento='.prepare($id_record));
$rs = $dbo->fetchArray('SELECT idcontratto FROM co_promemoria WHERE idintervento='.prepare($id_record));
$idcontratto = $rs[0]['idcontratto'];
$ore = 1;

View File

@ -59,7 +59,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
<div class="col-md-6">
<?php
/*$rs = $dbo->fetchArray('SELECT id, idcontratto FROM co_contratti_promemoria WHERE idintervento='.prepare($id_record));
/*$rs = $dbo->fetchArray('SELECT id, idcontratto FROM co_promemoria WHERE idintervento='.prepare($id_record));
if (count($rs) == 1) {
$idcontratto = $rs[0]['idcontratto'];
$idcontratto_riga = $rs[0]['id'];

View File

@ -3,7 +3,7 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT *, (SELECT completato FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS flag_completato, IF((in_interventi.idsede = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede)) AS idzona, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore, (SELECT idcontratto FROM co_contratti_promemoria WHERE idintervento=in_interventi.id LIMIT 0,1) AS idcontratto, (SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id LIMIT 0,1) AS idpreventivo FROM in_interventi WHERE id='.prepare($id_record).Modules::getAdditionalsQuery($id_module));
$record = $dbo->fetchOne('SELECT *, (SELECT completato FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS flag_completato, IF((in_interventi.idsede = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede)) AS idzona, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore, (SELECT idcontratto FROM co_promemoria WHERE idintervento=in_interventi.id LIMIT 0,1) AS idcontratto, (SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id LIMIT 0,1) AS idpreventivo FROM in_interventi WHERE id='.prepare($id_record).Modules::getAdditionalsQuery($id_module));
}
$jscript_modules[] = $rootdir.'/modules/interventi/js/interventi_helperjs.js';

View File

@ -309,7 +309,7 @@ if (in_array($record['stato'], ['Accettato', 'In lavorazione', 'Pagato'])) {
<div class="row">
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Aggiungi un altro intervento a questo preventivo').'", "name": "idintervento", "values": "query=SELECT id, CONCAT(\'Intervento \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione FROM in_interventi WHERE id NOT IN( SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_contratti_promemoria WHERE idintervento IS NOT NULL) AND idanagrafica='.prepare($record['idanagrafica']).'" ]}
{[ "type": "select", "label": "'.tr('Aggiungi un altro intervento a questo preventivo').'", "name": "idintervento", "values": "query=SELECT id, CONCAT(\'Intervento \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione FROM in_interventi WHERE id NOT IN( SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) AND idanagrafica='.prepare($record['idanagrafica']).'" ]}
</div>
</div>

View File

@ -7,7 +7,7 @@ include_once Modules::filepath('Articoli', 'modutil.php');
// Pianificazione intervento
switch (filter('op')) {
case 'add-promemoria':
$dbo->insert('co_contratti_promemoria', [
$dbo->insert('co_promemoria', [
'idcontratto' => $id_parent,
'data_richiesta' => filter('data_richiesta'),
'idtipointervento' => filter('idtipointervento'),
@ -18,7 +18,7 @@ switch (filter('op')) {
break;
case 'edit-promemoria':
$dbo->update('co_contratti_promemoria', [
$dbo->update('co_promemoria', [
'data_richiesta' => post('data_richiesta'),
'idtipointervento' => post('idtipointervento'),
'richiesta' => post('richiesta'),
@ -31,9 +31,9 @@ switch (filter('op')) {
// Eliminazione pianificazione
case 'delete-promemoria':
$dbo->query('DELETE FROM `co_contratti_promemoria` WHERE id='.prepare($id));
$dbo->query('DELETE FROM `co_righe_contratti_materiali` WHERE id_riga_contratto='.prepare($id));
$dbo->query('DELETE FROM `co_righe_contratti_articoli` WHERE id_riga_contratto='.prepare($id));
$dbo->query('DELETE FROM `co_promemoria` WHERE id='.prepare($id));
$dbo->query('DELETE FROM `co_promemoria_righe` WHERE id_promemoria='.prepare($id));
$dbo->query('DELETE FROM `co_promemoria_articoli` WHERE id_promemoria='.prepare($id));
flash()->info(tr('Pianificazione eliminata!'));
@ -41,15 +41,15 @@ switch (filter('op')) {
// Eliminazione tutti i promemoria di questo contratto con non hanno l'intervento associato
case 'delete-non-associati':
$dbo->query('DELETE FROM `co_righe_contratti_materiali` WHERE id_riga_contratto IN (SELECT id FROM `co_contratti_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL)', [
$dbo->query('DELETE FROM `co_promemoria_righe` WHERE id_promemoria IN (SELECT id FROM `co_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL)', [
':id_contratto' => $id_record,
]);
$dbo->query('DELETE FROM `co_righe_contratti_articoli` WHERE id_riga_contratto IN (SELECT id FROM `co_contratti_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL)', [
$dbo->query('DELETE FROM `co_promemoria_articoli` WHERE id_promemoria IN (SELECT id FROM `co_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL)', [
':id_contratto' => $id_record,
]);
$dbo->query('DELETE FROM `co_contratti_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL', [
$dbo->query('DELETE FROM `co_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL', [
':id_contratto' => $id_record,
]);
@ -64,7 +64,7 @@ switch (filter('op')) {
// if principale
if (!empty($id_record) && !empty($intervallo)) {
$qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_parent.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_parent.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM co_contratti_promemoria WHERE co_contratti_promemoria.id = '.$id_record;
$qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_parent.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_parent.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento FROM co_promemoria WHERE co_promemoria.id = '.$id_record;
$rsp = $dbo->fetchArray($qp);
$idtipointervento = $rsp[0]['idtipointervento'];
@ -100,18 +100,18 @@ switch (filter('op')) {
// controllo nuova data richiesta --> solo date maggiori o uguali di [oggi o data richiesta iniziale] ma che non superano la data di fine del contratto
if ((date('Y-m-d', strtotime($data_richiesta)) >= $min_date) && (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione)))) {
// Controllo che non esista già un promemoria idcontratto, idtipointervento e data_richiesta.
if (count($dbo->fetchArray("SELECT id FROM co_contratti_promemoria WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_parent."' ")) == 0) {
if (count($dbo->fetchArray("SELECT id FROM co_promemoria WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_parent."' ")) == 0) {
// inserisco il nuovo promemoria
$query = 'INSERT INTO `co_contratti_promemoria`(`idcontratto`, `idtipointervento`, `data_richiesta`, `richiesta`, `idsede`, `idimpianti` ) VALUES('.prepare($id_parent).', '.prepare($idtipointervento).', '.prepare($data_richiesta).', '.prepare($richiesta).', '.prepare($idsede).', '.prepare($idimpianti).')';
$query = 'INSERT INTO `co_promemoria`(`idcontratto`, `idtipointervento`, `data_richiesta`, `richiesta`, `idsede`, `idimpianti` ) VALUES('.prepare($id_parent).', '.prepare($idtipointervento).', '.prepare($data_richiesta).', '.prepare($richiesta).', '.prepare($idsede).', '.prepare($idimpianti).')';
if ($dbo->query($query)) {
$idriga = $dbo->lastInsertedID();
// copio anche righe materiali nel nuovo promemoria
$dbo->query('INSERT INTO co_righe_contratti_materiali (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,id_riga_contratto,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,'.$idriga.',sconto,sconto_unitario,tipo_sconto FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.$id_record.' ');
$dbo->query('INSERT INTO co_promemoria_righe (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,id_promemoria,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,'.$idriga.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$id_record.' ');
// copio righe articoli nel nuovo promemoria
$dbo->query('INSERT INTO co_righe_contratti_articoli (idarticolo, id_riga_contratto,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idriga.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.$id_record.' ');
$dbo->query('INSERT INTO co_promemoria_articoli (idarticolo, id_promemoria,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idriga.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record.' ');
flash()->info(tr('Promemoria intervento pianificato!'));
}
@ -122,7 +122,7 @@ switch (filter('op')) {
}
// Controllo che non esista già un intervento collegato a questo promemoria e, se ho spuntato di creare l'intervento, creo già anche quello
if ((empty($dbo->fetchArray("SELECT idintervento FROM co_contratti_promemoria WHERE id = '".((empty($idriga)) ? $id_record : $idriga)."'")[0]['idintervento'])) and ($post['pianifica_intervento'])) {
if ((empty($dbo->fetchArray("SELECT idintervento FROM co_promemoria WHERE id = '".((empty($idriga)) ? $id_record : $idriga)."'")[0]['idintervento'])) and ($post['pianifica_intervento'])) {
// pianificare anche l' intervento?
// if ($post['pianifica_intervento']) {
/*$orario_inizio = post('orario_inizio');
@ -171,16 +171,22 @@ switch (filter('op')) {
}
// collego l'intervento ai promemoria
$dbo->query('UPDATE co_contratti_promemoria SET idintervento='.prepare($idintervento).' WHERE id='.prepare(((empty($idriga)) ? $id_record : $idriga)));
$dbo->query('UPDATE co_promemoria SET idintervento='.prepare($idintervento).' WHERE id='.prepare(((empty($idriga)) ? $id_record : $idriga)));
// copio le righe dal promemoria all'intervento
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$idintervento.',sconto,sconto_unitario,tipo_sconto FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.$id_record.' ');
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$idintervento.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$id_record.' ');
// copio gli articoli dal promemoria all'intervento
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idintervento.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.$id_record.' ');
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idintervento.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record.' ');
// copio gli allegati dal promemoria all'intervento
$dbo->query('INSERT INTO zz_files (nome,filename,original,category,id_module,id_record) SELECT t.nome, t.filename, t.original, t.category, '.Modules::get('Interventi')['id'].', '.$idintervento.' FROM zz_files t WHERE t.id_record = '.$id_record.' AND t.id_plugin = '.$id_plugin.'');
// Copia degli allegati
Uploads::copy([
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $id_record,
], [
'id_module' => Modules::get('Interventi')['id'],
'id_record' => $idintervento,
]);
// Decremento la quantità per ogni articolo copiato
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$idintervento.' ');
@ -224,13 +230,13 @@ switch (filter('op')) {
$idimpianto = post('idimpianto');
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idimpianto FROM co_righe_contratti_articoli WHERE id='.prepare($idriga);
$q = 'SELECT qta, idautomezzo, idimpianto FROM co_promemoria_articoli WHERE id='.prepare($idriga);
$rs = $dbo->fetchArray($q);
$old_qta = $rs[0]['qta'];
$idimpianto = $rs[0]['idimpianto'];
// Elimino questo articolo dall'intervento
$dbo->query('DELETE FROM co_righe_contratti_articoli WHERE id='.prepare($idriga));
$dbo->query('DELETE FROM co_promemoria_articoli WHERE id='.prepare($idriga));
// no break;
@ -260,14 +266,14 @@ switch (filter('op')) {
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
// Aggiunto il collegamento fra l'articolo e l'intervento
$idriga = $dbo->query('INSERT INTO co_righe_contratti_articoli(idarticolo, id_riga_contratto, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
$idriga = $dbo->query('INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
break;
case 'unlink_articolo':
$idriga = post('idriga');
$dbo->query('DELETE FROM co_righe_contratti_articoli WHERE id='.prepare($idriga).' '.Modules::getAdditionalsQuery($id_module));
$dbo->query('DELETE FROM co_promemoria_articoli WHERE id='.prepare($idriga).' '.Modules::getAdditionalsQuery($id_module));
break;
@ -298,7 +304,7 @@ switch (filter('op')) {
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
$dbo->query('INSERT INTO co_righe_contratti_materiali(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto, id_riga_contratto) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($id_record).')');
$dbo->query('INSERT INTO co_promemoria_righe(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto, id_promemoria) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($id_record).')');
break;
@ -326,7 +332,7 @@ switch (filter('op')) {
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
$dbo->query('UPDATE co_righe_contratti_materiali SET '.
$dbo->query('UPDATE co_promemoria_righe SET '.
' descrizione='.prepare($descrizione).','.
' qta='.prepare($qta).','.
' um='.prepare($um).','.
@ -345,7 +351,7 @@ switch (filter('op')) {
case 'delriga':
$idriga = post('idriga');
$dbo->query('DELETE FROM co_righe_contratti_materiali WHERE id='.prepare($idriga).' '.Modules::getAdditionalsQuery($id_module));
$dbo->query('DELETE FROM co_promemoria_righe WHERE id='.prepare($idriga).' '.Modules::getAdditionalsQuery($id_module));
break;
}

View File

@ -41,13 +41,13 @@ if (empty($idriga)) {
$tipo_sconto = 'PRC';
}
(empty($idcontratto_riga)) ? $idcontratto_riga = $dbo->fetchArray('SELECT MAX(id) AS max_idcontratto_riga FROM `co_contratti_promemoria`')[0]['max_idcontratto_riga'] : '';
(empty($idcontratto_riga)) ? $idcontratto_riga = $dbo->fetchArray('SELECT MAX(id) AS max_idcontratto_riga FROM `co_promemoria`')[0]['max_idcontratto_riga'] : '';
} else {
$op = 'editarticolo';
$button = '<i class="fa fa-edit"></i> '.tr('Modifica');
// carico record da modificare
$q = "SELECT *, (SELECT codice FROM mg_articoli WHERE id=co_righe_contratti_articoli.idarticolo) AS codice_articolo, (SELECT CONCAT(codice, ' - ', descrizione) FROM mg_articoli WHERE id=co_righe_contratti_articoli.idarticolo) AS descrizione_articolo FROM co_righe_contratti_articoli WHERE id=".prepare($idriga);
$q = "SELECT *, (SELECT codice FROM mg_articoli WHERE id=co_promemoria_articoli.idarticolo) AS codice_articolo, (SELECT CONCAT(codice, ' - ', descrizione) FROM mg_articoli WHERE id=co_promemoria_articoli.idarticolo) AS descrizione_articolo FROM co_promemoria_articoli WHERE id=".prepare($idriga);
$rsr = $dbo->fetchArray($q);
$idarticolo = $rsr[0]['idarticolo'];
@ -65,7 +65,7 @@ if (empty($idriga)) {
$idautomezzo = $rsr[0]['idautomezzo'];
$idimpianto = $rsr[0]['idimpianto'];
$idcontratto_riga = $rsr[0]['id_riga_contratto'];
$idcontratto_riga = $rsr[0]['id_promemoria'];
}
/*

View File

@ -26,7 +26,7 @@ if (empty($idriga)) {
$button = '<i class="fa fa-edit"></i> '.tr('Modifica');
// carico record da modificare
$q = 'SELECT * FROM co_righe_contratti_materiali WHERE id='.prepare($idriga);
$q = 'SELECT * FROM co_promemoria_righe WHERE id='.prepare($idriga);
$rsr = $dbo->fetchArray($q);
$descrizione = $rsr[0]['descrizione'];

View File

@ -7,7 +7,7 @@ $is_add = filter('add') ? true : false;
$pricing = Auth::admin() || Auth::user()['gruppo'] != 'Tecnici';
$rs = $dbo->fetchArray('SELECT * FROM co_righe_contratti_articoli WHERE id_riga_contratto='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC');
$rs = $dbo->fetchArray('SELECT * FROM co_promemoria_articoli WHERE id_promemoria = '.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC');
if (!empty($rs)) {
echo '

View File

@ -7,7 +7,7 @@ $is_add = filter('add') ? true : false;
$pricing = Auth::admin() || Auth::user()['gruppo'] != 'Tecnici';
$rs2 = $dbo->fetchArray('SELECT * FROM co_righe_contratti_materiali WHERE id_riga_contratto='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC');
$rs2 = $dbo->fetchArray('SELECT * FROM co_promemoria_righe WHERE id_promemoria='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC');
if (!empty($rs2)) {
echo '

View File

@ -9,7 +9,7 @@ $contratto = $dbo->fetchOne('SELECT * FROM co_contratti WHERE id = :id', [
':id' => $id_record,
]);
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM co_contratti_promemoria WHERE idcontratto='.prepare($id_record).' ORDER BY data_richiesta ASC');
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento FROM co_promemoria WHERE idcontratto='.prepare($id_record).' ORDER BY data_richiesta ASC');
// Intervento/promemoria pianificabile
$pianificabile = $dbo->fetchOne('SELECT pianificabile FROM co_staticontratti WHERE id = :id', [
@ -96,8 +96,8 @@ if (!empty($records)) {
}
// Info materiali/articoli
$materiali = $dbo->fetchArray('SELECT id, descrizione,qta,um,prezzo_vendita, \'\' AS idarticolo FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.prepare($record['id']).'
UNION SELECT id, descrizione,qta,um,prezzo_vendita, idarticolo FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.prepare($record['id']));
$materiali = $dbo->fetchArray('SELECT id, descrizione,qta,um,prezzo_vendita, \'\' AS idarticolo FROM co_promemoria_righe WHERE id_promemoria = '.prepare($record['id']).'
UNION SELECT id, descrizione,qta,um,prezzo_vendita, idarticolo FROM co_promemoria_articoli WHERE id_promemoria = '.prepare($record['id']));
$info_materiali = '';
foreach ($materiali as $materiale) {
@ -110,13 +110,16 @@ if (!empty($records)) {
}
// Info allegati
$allegati = $dbo->fetchArray('SELECT nome, original FROM zz_files WHERE id_record = '.prepare($record['id']).' AND id_plugin = '.$id_plugin);
$allegati = Uploads::get([
'id_plugin' => $id_plugin,
'id_record' => $record['id'],
]);
$info_allegati = '';
foreach ($allegati as $allegato) {
$info_allegati .= tr(' _NOME_ (_ORIGINAL_)', [
'_ORIGINAL_' => $allegato['original'],
'_NOME_' => $allegato['nome'],
'_NOME_' => $allegato['name'],
]).'<br>';
}

View File

@ -27,7 +27,7 @@ if (count($id_impianti) == 1) {
}
// Informazioni del promemoria
$record = $dbo->fetchOne('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_contratti_promemoria.idtipointervento) AS tempo_standard FROM co_contratti_promemoria WHERE id = :id', [
$record = $dbo->fetchOne('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_promemoria.idtipointervento) AS tempo_standard FROM co_promemoria WHERE id = :id', [
':id' => $id_record,
]);
$data_richiesta = $record['data_richiesta'] ?? date('Y-m-d');

View File

@ -48,7 +48,7 @@ class FileManager implements ManagerInterface
$count = 0;
$where = '`id_module` '.(!empty($options['id_module']) ? '= '.prepare($options['id_module']) : 'IS NULL').' AND `id_plugin` '.(!empty($options['id_plugin']) ? '= '.prepare($options['id_plugin']) : 'IS NULL').'';
$where = '`id_module` '.(!empty($options['id_module']) && empty($options['id_plugin']) ? '= '.prepare($options['id_module']) : 'IS NULL').' AND `id_plugin` '.(!empty($options['id_plugin']) ? '= '.prepare($options['id_plugin']) : 'IS NULL').'';
// Categorie
$categories = $dbo->fetchArray('SELECT DISTINCT `category` FROM `zz_files` WHERE '.$where.' ORDER BY `category`');
@ -81,7 +81,7 @@ class FileManager implements ManagerInterface
<tr>
<td align="left">
<a href="'.ROOTDIR.'/'.$directory.'/'.$r['filename'].'" target="_blank">
<i class="fa fa-external-link"></i> '.$r['nome'].'
<i class="fa fa-external-link"></i> '.$r['name'].'
</a>
</td>
<td>'.\Translator::timestampToLocale($r['created_at']).'</td>
@ -109,7 +109,7 @@ class FileManager implements ManagerInterface
</div>';
$result .= '
<button class="btn btn-xs btn-info" data-target="#bs-popup2" type="button" data-title="'.prepareToField($r['nome']).' <small><em>('.$r['filename'].')</em></small>" data-href="#view-'.$r['id'].'">
<button class="btn btn-xs btn-info" data-target="#bs-popup2" type="button" data-title="'.prepareToField($r['name']).' <small><em>('.$r['filename'].')</em></small>" data-href="#view-'.$r['id'].'">
<i class="fa fa-eye"></i>
</button>';
} else {

View File

@ -30,7 +30,10 @@ class Import
$custom_file = str_replace('|custom|', '/custom', $file);
if (file_exists($custom_file) || file_exists($original_file)) {
$files = $database->fetchArray('SELECT * FROM zz_files WHERE id_module='.prepare(Modules::get('Import')['id']).' AND id_record='.prepare($module['id']).' ORDER BY id DESC');
$files = Uploads::get([
'id_module' => Modules::get('Import')['id'],
'id_record' => $module['id'],
]);
$results[$module['id']] = array_merge($module, [
'import' => file_exists($custom_file) ? $custom_file : $original_file,

View File

@ -261,7 +261,7 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
foreach ($selected as $attachment) {
$attachments[] = [
'path' => $upload_dir.'/'.$attachment['filename'],
'name' => $attachment['nome'],
'name' => $attachment['name'],
];
}
@ -276,7 +276,7 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
foreach ($selected as $attachment) {
$attachments[] = [
'path' => DOCROOT.'/files/'.$anagrafiche['directory'].'/'.$attachment['filename'],
'name' => $attachment['nome'],
'name' => $attachment['name'],
];
}

View File

@ -19,7 +19,7 @@ class Uploads
$database = Database::getConnection();
$uploads = $database->select('zz_files', '*', [
'id_module' => !empty($data['id_module']) ? $data['id_module'] : null,
'id_module' => !empty($data['id_module']) && empty($data['id_plugin']) ? $data['id_module'] : null,
'id_plugin' => !empty($data['id_plugin']) ? $data['id_plugin'] : null,
'id_record' => $data['id_record'],
]);
@ -52,6 +52,27 @@ class Uploads
return 'files/'.$directory;
}
/**
* Individua il nome fisico per il file indicato.
*
* @param string $source
* @param array $data
* @return string
*/
protected static function getName($source, $data)
{
$extension = strtolower(pathinfo($source)['extension']);
$ok = self::isSupportedType($extension);
$directory = DOCROOT.'/'.self::getDirectory($data['id_module'], $data['id_plugin']);
do {
$filename = random_string().'.'.$extension;
} while (file_exists($directory.'/'.$filename));
return $filename;
}
/**
* Effettua l'upload di un file nella cartella indicata.
*
@ -67,15 +88,10 @@ class Uploads
$src = $source['tmp_name'];
$original = $source['name'];
$extension = strtolower(pathinfo($original)['extension']);
$ok = self::isSupportedType($extension);
$filename = self::getName($original, $data);
$directory = DOCROOT.'/'.self::getDirectory($data['id_module'], $data['id_plugin']);
do {
$filename = random_string().'.'.$extension;
} while (file_exists($directory.'/'.$filename));
// Creazione file fisico
if (!directory($directory) || !move_uploaded_file($src, $directory.'/'.$filename)) {
return null;
@ -86,13 +102,21 @@ class Uploads
$data['original'] = $original;
self::register($data);
if (!empty($options['thumbnails'])) {
self::thumbnails($directory.'/'.$filename, $directory);
}
// Operazioni finali
self::processOptions($data, $options);
return $filename;
}
protected static function processOptions($data, $options)
{
$directory = DOCROOT.'/'.self::getDirectory($data['id_module'], $data['id_plugin']);
if (!empty($options['thumbnails'])) {
self::thumbnails($directory.'/'.$data['filename'], $directory);
}
}
/**
* Registra nel database il file caricato con i dati richiesti.
*
@ -103,11 +127,11 @@ class Uploads
$database = Database::getConnection();
$database->insert('zz_files', [
'nome' => !empty($data['name']) ? $data['name'] : $data['original'],
'name' => !empty($data['name']) ? $data['name'] : $data['original'],
'filename' => !empty($data['filename']) ? $data['filename'] : $data['original'],
'original' => $data['original'],
'category' => !empty($data['category']) ? $data['category'] : null,
'id_module' => !empty($data['id_module']) ? $data['id_module'] : null,
'id_module' => !empty($data['id_module']) && empty($data['id_plugin']) ? $data['id_module'] : null,
'id_plugin' => !empty($data['id_plugin']) ? $data['id_plugin'] : null,
'id_record' => $data['id_record'],
]);
@ -254,6 +278,41 @@ class Uploads
]);
}
/**
* Copia gli allegati di un record in un altro record.
*
* @param array $from
* @param array $to
* @return bool
*/
public static function copy($from, $to)
{
$attachments = self::get($from);
$directory = DOCROOT.'/'.self::getDirectory($to['id_module'], $to['id_plugin']);
$directory_from = DOCROOT.'/'.self::getDirectory($from['id_module'], $from['id_plugin']);
foreach ($attachments as $attachment) {
$data = array_merge($attachment, $to);
// Individuazione del nuovo nome fisico
$data['filename'] = self::getName($directory_from.'/'.$attachment['filename'], $data);
// Copia fisica
if (!copy($directory_from.'/'.$attachment['filename'], $directory.'/'.$data['filename'])) {
return false;
}
// Registrazione del file
self::register($data);
// Operazioni finali
self::processOptions($data, $options);
}
return true;
}
/** @var array Elenco delle tipologie di file permesse */
protected static $allowed_types = [
// Image formats

View File

@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
$module_name = 'Contratti';
// Lettura info fattura
$records = $dbo->fetchArray('SELECT *, co_contratti.descrizione AS desc_contratto, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=in_interventi.id LIMIT 0,1) AS data, (SELECT fatturabile FROM co_staticontratti WHERE id=idstato) AS fatturabile, (SELECT GROUP_CONCAT(my_impianti_contratti.idimpianto) FROM my_impianti_contratti WHERE idcontratto = co_contratti.id) AS idimpianti, co_contratti.descrizione AS `cdescrizione`, co_contratti.idanagrafica AS `idanagrafica`, co_contratti.costo_orario AS costo_orario , co_contratti.costo_km AS costo_km FROM co_contratti LEFT OUTER JOIN (co_contratti_promemoria LEFT OUTER JOIN in_interventi ON co_contratti_promemoria.idintervento=in_interventi.id) ON co_contratti.id=co_contratti_promemoria.idcontratto WHERE co_contratti.id='.prepare($id_record));
$records = $dbo->fetchArray('SELECT *, co_contratti.descrizione AS desc_contratto, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=in_interventi.id LIMIT 0,1) AS data, (SELECT fatturabile FROM co_staticontratti WHERE id=idstato) AS fatturabile, (SELECT GROUP_CONCAT(my_impianti_contratti.idimpianto) FROM my_impianti_contratti WHERE idcontratto = co_contratti.id) AS idimpianti, co_contratti.descrizione AS `cdescrizione`, co_contratti.idanagrafica AS `idanagrafica`, co_contratti.costo_orario AS costo_orario , co_contratti.costo_km AS costo_km FROM co_contratti LEFT OUTER JOIN (co_promemoria LEFT OUTER JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id) ON co_contratti.id=co_promemoria.idcontratto WHERE co_contratti.id='.prepare($id_record));
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];

View File

@ -61,7 +61,7 @@ $totale_ore_impiegate = 0;
$sconto = [];
$imponibile = [];
$interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_contratti_promemoria JOIN in_interventi ON co_contratti_promemoria.idintervento=in_interventi.id WHERE co_contratti_promemoria.idcontratto='.prepare($id_record).' ORDER BY inizio DESC');
$interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_promemoria JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id WHERE co_promemoria.idcontratto='.prepare($id_record).' ORDER BY inizio DESC');
if (!empty($interventi)) {
// Interventi

View File

@ -7,7 +7,7 @@ include_once Modules::filepath('Interventi', 'modutil.php');
$module_name = 'Interventi';
// carica intervento
$query = 'SELECT in_interventi.*, (SELECT numero FROM co_contratti WHERE id=(SELECT idcontratto FROM co_contratti_promemoria WHERE idintervento=in_interventi.id)) AS numero_contratto, (SELECT numero FROM co_preventivi WHERE id=(SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id ORDER BY idpreventivo DESC LIMIT 0,1)) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS tipointervento FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($id_record).' '.Modules::getAdditionalsQuery('Interventi');
$query = 'SELECT in_interventi.*, (SELECT numero FROM co_contratti WHERE id=(SELECT idcontratto FROM co_promemoria WHERE idintervento=in_interventi.id)) AS numero_contratto, (SELECT numero FROM co_preventivi WHERE id=(SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id ORDER BY idpreventivo DESC LIMIT 0,1)) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS tipointervento FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($id_record).' '.Modules::getAdditionalsQuery('Interventi');
$records = $dbo->fetchArray($query);
$costi_intervento = get_costi_intervento($id_record);

View File

@ -253,3 +253,14 @@ UPDATE `zz_plugins` SET `title` = 'Pianificazione attività' WHERE `name` = 'Pia
-- Fix plugin "Pianificazione interventi"
UPDATE `zz_plugins` SET `options` = 'custom', `script` = '', `directory` = 'pianificazione_interventi' WHERE `name` = 'Pianificazione interventi';
-- Ridenominazione tabelle per i promemoria
ALTER TABLE `co_contratti_promemoria` RENAME `co_promemoria`;
ALTER TABLE `co_righe_contratti_materiali` RENAME `co_promemoria_righe`;
ALTER TABLE `co_righe_contratti_articoli` RENAME `co_promemoria_articoli`;
ALTER TABLE `co_promemoria_righe` CHANGE `id_riga_contratto` `id_promemoria` int(11) NOT NULL;
ALTER TABLE `co_promemoria_articoli` CHANGE `id_riga_contratto` `id_promemoria` int(11) NOT NULL;
-- Fix nome in zz_files
ALTER TABLE `zz_files` CHANGE `nome` `name` varchar(255) NOT NULL;
UPDATE `zz_files` SET `id_module` = NULL WHERE `id_plugin` IS NOT NULL;

View File

@ -17,7 +17,7 @@ $tables = [
'an_zone',
'co_banche',
'co_contratti',
'co_contratti_promemoria',
'co_promemoria',
'co_contratti_tipiintervento',
'co_documenti',
'co_iva',
@ -33,8 +33,8 @@ $tables = [
'co_preventivi',
'co_preventivi_interventi',
'co_righe_contratti',
'co_righe_contratti_articoli',
'co_righe_contratti_materiali',
'co_promemoria_articoli',
'co_promemoria_righe',
'co_righe_documenti',
'co_righe_preventivi',
'co_ritenutaacconto',