1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-03-09 07:47:46 +01:00

Tariffe specifiche per contratti

This commit is contained in:
Thomas Zilio 2019-07-08 12:24:59 +02:00
parent 73d0cf19b4
commit fd72857d70
21 changed files with 325 additions and 329 deletions

View File

@ -17,6 +17,7 @@ return [
'modules/interventi' => 'Modules\Interventi',
'modules/pagamenti' => 'Modules\Pagamenti',
'modules/statistiche' => 'Modules\Statistiche',
'modules/tipi_intervento' => 'Modules\TipiIntervento',
'plugins/exportFE' => 'Plugins\ExportFE',
'plugins/importFE' => 'Plugins\ImportFE',
'plugins/receiptFE' => 'Plugins\ReceiptFE',

View File

@ -56,6 +56,16 @@ class Anagrafica extends Model
return $model;
}
public static function fromTipo($type){
$tipologia = Tipo::where('descrizione', 'Tecnico')->first();
$anagrafiche = self::whereHas('tipi', function ($query) use ($tipologia) {
$query->where('an_tipianagrafiche.idtipoanagrafica', '=', $tipologia->id);
});
return $anagrafiche;
}
public static function fixAzienda(Anagrafica $anagrafica)
{
Settings::setValue('Azienda predefinita', $anagrafica->id);
@ -103,8 +113,22 @@ class Anagrafica extends Model
public static function fixTecnico(Anagrafica $anagrafica)
{
// Copio già le tariffe per le varie attività
$result = database()->query('INSERT INTO in_tariffe(idtecnico, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) SELECT '.prepare($anagrafica->id).', idtipointervento, costo_orario, costo_km, costo_diritto_chiamata, costo_orario_tecnico, costo_km_tecnico, costo_diritto_chiamata_tecnico FROM in_tipiintervento');
$database = database();
// Copio le tariffe per le varie attività
$query = 'INSERT INTO in_tariffe(idtecnico, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) SELECT '.prepare($anagrafica->id).', idtipointervento, costo_orario, costo_km, costo_diritto_chiamata, costo_orario_tecnico, costo_km_tecnico, costo_diritto_chiamata_tecnico FROM in_tipiintervento';
$presenti = $database->fetchArray('SELECT idtipointervento AS id FROM in_tariffe WHERE idtecnico = '.prepare($anagrafica->id));
if(!empty($presenti)){
$list = [];
foreach ($presenti as $presente){
$list[] = prepare($presente['id']);
}
$query .= ' WHERE idtipointervento NOT IN ('.implode($list, ',').')';
}
$result = database()->query($query);
if (!$result) {
flash()->error(tr("Errore durante l'importazione tariffe!"));

View File

@ -26,14 +26,6 @@ switch (post('op')) {
case 'update':
if (post('id_record') !== null) {
$idstato = post('idstato');
$idanagrafica = post('idanagrafica');
$idsede = post('idsede');
$nome = post('nome');
$idagente = post('idagente');
$idpagamento = post('idpagamento');
$numero = post('numero');
// Se non specifico un budget me lo vado a ricalcolare
if ($budget != '') {
$budget = post('budget');
@ -43,55 +35,31 @@ switch (post('op')) {
$budget = $rs[0]['budget'];
}
$data_bozza = post('data_bozza');
$data_accettazione = post('data_accettazione');
$data_rifiuto = post('data_rifiuto');
$data_conclusione = post('data_conclusione');
$rinnovabile = post('rinnovabile');
$contratto->idanagrafica = post('idanagrafica');
$contratto->idsede = post('idsede');
$contratto->idstato = post('idstato');
$contratto->nome = post('nome');
$contratto->idagente = post('idagente');
$contratto->idpagamento = post('idpagamento');
$contratto->numero = post('numero');
$contratto->budget = $budget;
$contratto->idreferente = post('idreferente');
$contratto->validita = post('validita');
$contratto->data_bozza = post('data_bozza');
$contratto->data_accettazione = post('data_accettazione');
$contratto->data_rifiuto = post('data_rifiuto');
$contratto->data_conclusione = post('data_conclusione');
$contratto->rinnovabile = post('rinnovabile');
$contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo');
$contratto->ore_preavviso_rinnovo = post('ore_preavviso_rinnovo');
$contratto->esclusioni = post('esclusioni');
$contratto->descrizione = post('descrizione');
$contratto->id_documento_fe = post('id_documento_fe');
$contratto->num_item = post('num_item');
$contratto->codice_cig = post('codice_cig');
$contratto->codice_cup = post('codice_cup');;
$giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo');
$ore_preavviso_rinnovo = post('ore_preavviso_rinnovo');
$validita = post('validita');
$idreferente = post('idreferente');
$esclusioni = post('esclusioni');
$descrizione = post('descrizione');
// $ore_lavoro = post('ore_lavoro');
$costo_orario = post('costo_orario');
$costo_km = post('costo_km');
$costo_diritto_chiamata = post('costo_diritto_chiamata');
$id_documento_fe = post('id_documento_fe');
$num_item = post('num_item');
$codice_cig = post('codice_cig');
$codice_cup = post('codice_cup');
$query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).',
idsede='.prepare($idsede).',
idstato='.prepare($idstato).',
nome='.prepare($nome).',
idagente='.prepare($idagente).',
idpagamento='.prepare($idpagamento).',
numero='.prepare($numero).',
budget='.prepare($budget).',
idreferente='.prepare($idreferente).',
validita='.prepare($validita).',
data_bozza='.prepare($data_bozza).',
data_accettazione='.prepare($data_accettazione).',
data_rifiuto='.prepare($data_rifiuto).',
data_conclusione='.prepare($data_conclusione).',
rinnovabile='.prepare($rinnovabile).',
giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).',
ore_preavviso_rinnovo='.prepare($ore_preavviso_rinnovo).',
esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).',
id_documento_fe='.prepare($id_documento_fe).',
num_item='.prepare($num_item).',
codice_cig='.prepare($codice_cig).',
codice_cup='.prepare($codice_cup).' WHERE id='.prepare($id_record);
// costo_diritto_chiamata='.prepare($costo_diritto_chiamata).', ore_lavoro='.prepare($ore_lavoro).', costo_orario='.prepare($costo_orario).', costo_km='.prepare($costo_km).'
$dbo->query($query);
$contratto->save();
$dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record));
foreach ((array) post('matricolaimpianto') as $matricolaimpianto) {

View File

@ -175,10 +175,10 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
$idtipiintervento = ['-1'];
//Loop fra i tipi di attività e i relativi costi del tipo intervento
$rs = $dbo->fetchArray('SELECT co_contratti_tipiintervento.*, in_tipiintervento.descrizione, in_tipiintervento.costo_orario_tecnico AS costo_ore_tecnico, in_tipiintervento.costo_km_tecnico AS costo_km_tecnico, in_tipiintervento.costo_diritto_chiamata_tecnico AS costo_dirittochiamata_tecnico FROM in_tipiintervento INNER JOIN co_contratti_tipiintervento ON in_tipiintervento.idtipointervento=co_contratti_tipiintervento.idtipointervento WHERE idcontratto='.prepare($id_record).' AND (co_contratti_tipiintervento.costo_ore!=0 OR co_contratti_tipiintervento.costo_km!=0 OR co_contratti_tipiintervento.costo_dirittochiamata!=0) ORDER BY in_tipiintervento.descrizione');
// Loop fra i tipi di attività e i relativi costi del tipo intervento
$rs = $dbo->fetchArray('SELECT co_contratti_tipiintervento.*, in_tipiintervento.descrizione FROM co_contratti_tipiintervento INNER JOIN in_tipiintervento ON in_tipiintervento.idtipointervento = co_contratti_tipiintervento.idtipointervento WHERE idcontratto='.prepare($id_record).' AND (co_contratti_tipiintervento.costo_ore != in_tipiintervento.costo_orario OR co_contratti_tipiintervento.costo_km != in_tipiintervento.costo_km OR co_contratti_tipiintervento.costo_dirittochiamata != in_tipiintervento.costo_diritto_chiamata) ORDER BY in_tipiintervento.descrizione');
if (sizeof($rs) > 0) {
if (!empty($rs)) {
echo '
<table class="table table-striped table-condensed table-bordered">
<tr>
@ -187,10 +187,7 @@ if (sizeof($rs) > 0) {
<th>'.tr('Addebito orario').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>'.tr('Addebito km').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>'.tr('Addebito diritto ch.').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th class="hide" >'.tr('Costo orario').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th class="hide" >'.tr('Costo al km').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th class="hide" >'.tr('Diritto di chiamata').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th width="40"></th>
</tr>';
@ -211,22 +208,10 @@ if (sizeof($rs) > 0) {
{[ "type": "number", "name": "costo_dirittochiamata['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_dirittochiamata'].'" ]}
</td>
<td class="hide" >
{[ "type": "number", "name": "costo_ore_tecnico['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_ore_tecnico'].'", "readonly":"1" ]}
</td>
<td class="hide" >
{[ "type": "number", "name": "costo_km_tecnico['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_km_tecnico'].'", "readonly":"1" ]}
</td>
<td class="hide" >
{[ "type": "number", "name": "costo_dirittochiamata_tecnico['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_dirittochiamata_tecnico'].'", "readonly":"1" ]}
</td>
<td>
<button type="button" class="btn btn-primary" data-toggle="tooltip" title="Importa valori da tariffe standard" onclick="if( confirm(\'Importare i valori dalle tariffe standard?\') ){ $.post( \''.$rootdir.'/modules/contratti/actions.php\', { op: \'import\', idcontratto: \''.$id_record.'\', idtipointervento: \''.$rs[$i]['idtipointervento'].'\' }, function(data){ location.href=\''.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'\'; } ); }">
<i class="fa fa-download"></i>
</button>
<button type="button" class="btn btn-warning" data-toggle="tooltip" title="Importa valori da tariffe standard" onclick="if( confirm(\'Importare i valori dalle tariffe standard?\') ){ $.post( \''.$rootdir.'/modules/contratti/actions.php\', { op: \'import\', idcontratto: \''.$id_record.'\', idtipointervento: \''.$rs[$i]['idtipointervento'].'\' }, function(data){ location.href=\''.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'\'; } ); }">
<i class="fa fa-download"></i>
</button>
</td>
</tr>';
@ -238,13 +223,13 @@ if (sizeof($rs) > 0) {
}
echo '
<button type="button" onclick="$(this).next().toggleClass(\'hide\');" class="btn btn-info btn-sm"><i class="fa fa-th-list"></i> '.tr('Mostra tipi di attività non utilizzate').'</button>
<button type="button" onclick="$(this).next().toggleClass(\'hide\');" class="btn btn-info btn-sm"><i class="fa fa-th-list"></i> '.tr('Mostra tipi di attività non modificati').'</button>
<div class="hide">';
//Loop fra i tipi di attività e i relativi costi del tipo intervento (quelli a 0)
$rs = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE idtipointervento NOT IN('.implode(',', $idtipiintervento).') ORDER BY descrizione');
$rs = $dbo->fetchArray('SELECT * FROM co_contratti_tipiintervento INNER JOIN in_tipiintervento ON in_tipiintervento.idtipointervento = co_contratti_tipiintervento.idtipointervento WHERE co_contratti_tipiintervento.idtipointervento NOT IN('.implode(',', $idtipiintervento).') AND idcontratto='.prepare($id_record).' ORDER BY descrizione');
if (sizeof($rs) > 0) {
if (!empty($rs)) {
echo '
<div class="clearfix">&nbsp;</div>
<table class="table table-striped table-condensed table-bordered">
@ -255,9 +240,6 @@ if (sizeof($rs) > 0) {
<th>'.tr('Addebito km').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>'.tr('Addebito diritto ch.').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th class="hide" >'.tr('Costo orario').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th class="hide" >'.tr('Costo al km').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th class="hide" >'.tr('Diritto di chiamata').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th width="40"></th>
</tr>';
@ -278,20 +260,8 @@ if (sizeof($rs) > 0) {
{[ "type": "number", "name": "costo_dirittochiamata['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_diritto_chiamata'].'" ]}
</td>
<td class="hide" >
{[ "type": "number", "name": "costo_ore_tecnico['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_orario_tecnico'].'" , "readonly":"1" ]}
</td>
<td class="hide" >
{[ "type": "number", "name": "costo_km_tecnico['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_km_tecnico'].'" , "readonly":"1" ]}
</td>
<td class="hide" >
{[ "type": "number", "name": "costo_dirittochiamata_tecnico['.$rs[$i]['idtipointervento'].']", "value": "'.$rs[$i]['costo_diritto_chiamata_tecnico'].'", "readonly":"1" ]}
</td>
<td>
<button type="button" class="btn btn-primary" data-toggle="tooltip" title="Importa valori da tariffe standard" onclick="if( confirm(\'Importare i valori dalle tariffe standard?\') ){ $.post( \''.$rootdir.'/modules/contratti/actions.php\', { op: \'import\', idcontratto: \''.$id_record.'\', idtipointervento: \''.$rs[$i]['idtipointervento'].'\' }, function(data){ location.href=\''.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'\'; } ); }">
<button type="button" class="btn btn-warning" data-toggle="tooltip" title="Importa valori da tariffe standard" onclick="if( confirm(\'Importare i valori dalle tariffe standard?\') ){ $.post( \''.$rootdir.'/modules/contratti/actions.php\', { op: \'import\', idcontratto: \''.$id_record.'\', idtipointervento: \''.$rs[$i]['idtipointervento'].'\' }, function(data){ location.href=\''.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'\'; } ); }">
<i class="fa fa-download"></i>
</button>
</td>

View File

@ -6,7 +6,7 @@ use Carbon\Carbon;
use Common\Document;
use Modules\Anagrafiche\Anagrafica;
use Modules\Interventi\Intervento;
use Modules\Interventi\TipoSessione;
use Modules\TipiIntervento\Tipo as TipoSessione;
use Traits\RecordTrait;
use Util\Generator;
@ -43,7 +43,6 @@ class Contratto extends Document
$model->numero = static::getNextNumero();
// Salvataggio delle informazioni
$model->nome = $nome;
$model->data_bozza = Carbon::now();
@ -55,23 +54,29 @@ class Contratto extends Document
$model->idpagamento = $id_pagamento;
}
// Salvataggio delle informazioni
$model->save();
$model->fixTipiSessioni();
return $model;
}
public function save(array $options = [])
{
$result = parent::save($options);
$this->fixTipiSessioni();
return $result;
}
public function fixTipiSessioni()
{
$database = database();
$database->query('DELETE FROM co_contratti_tipiintervento WHERE idcontratto = '.prepare($this->id));
$presenti = $database->fetchArray('SELECT idtipointervento AS id FROM co_contratti_tipiintervento WHERE idcontratto = '.prepare($this->id));
// Aggiunta associazioni costi unitari al contratto
$tipi = TipoSessione::where('costo_orario', '<>', 0)
->where('costo_km', '<>', 0)
->where('costo_diritto_chiamata', '<>', 0)
->get();
$tipi = TipoSessione::whereNotIn('idtipointervento', array_column($presenti, 'id'))->get();
foreach ($tipi as $tipo) {
$database->insert('co_contratti_tipiintervento', [

View File

@ -9,7 +9,7 @@ use Modules\Interventi\Components\Riga;
use Modules\Interventi\Components\Sconto;
use Modules\Interventi\Intervento;
use Modules\Interventi\Stato;
use Modules\Interventi\TipoSessione;
use Modules\TipiIntervento\Tipo as TipoSessione;
switch (post('op')) {
case 'update':
@ -561,28 +561,13 @@ switch (post('op')) {
if ($idtipointervento_tecnico != $rs[0]['idtipointervento']) {
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare(post('idtecnico')).' AND idtipointervento='.prepare($idtipointervento_tecnico));
if ($rsc[0]['costo_ore'] != 0 || $rsc[0]['costo_km'] != 0 || $rsc[0]['costo_dirittochiamata'] != 0 || $rsc[0]['costo_ore_tecnico'] != 0 || $rsc[0]['costo_km_tecnico'] != 0 || $rsc[0]['costo_dirittochiamata_tecnico'] != 0) {
$prezzo_ore_unitario = $rsc[0]['costo_ore'];
$prezzo_km_unitario = $rsc[0]['costo_km'];
$prezzo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
$prezzo_ore_unitario = $rsc[0]['costo_ore'];
$prezzo_km_unitario = $rsc[0]['costo_km'];
$prezzo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_ore_tecnico'];
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
}
// ...altrimenti se non c'è una tariffa per il tecnico leggo i costi globali
else {
$rsc = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento_tecnico));
$prezzo_ore_unitario = $rsc[0]['costo_orario'];
$prezzo_km_unitario = $rsc[0]['costo_km'];
$prezzo_dirittochiamata = $rsc[0]['costo_diritto_chiamata'];
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_orario_tecnico'];
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_diritto_chiamata_tecnico'];
}
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_ore_tecnico'];
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
} else {
$prezzo_ore_unitario = $rs[0]['prezzo_ore_unitario'];
$prezzo_km_unitario = $rs[0]['prezzo_km_unitario'];

View File

@ -33,7 +33,7 @@ echo '
echo '
<div class="row">
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Tipo attività').'", "name": "idtipointerventot", "value": "'.$sessione['idtipointervento'].'", "required": 1, "values": "query=SELECT idtipointervento AS id, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipointervento=in_tipiintervento.idtipointervento AND idtecnico='.prepare($sessione['idtecnico']).'), 0) AS costo_orario FROM in_tipiintervento ORDER BY descrizione" ]}
{[ "type": "select", "label": "'.tr('Tipo attività').'", "name": "idtipointerventot", "value": "'.$sessione['idtipointervento'].'", "required": 1, "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione" ]}
</div>
<div class="col-md-4">

View File

@ -91,35 +91,20 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto = n
// Leggo i costi unitari dalle tariffe se almeno un valore è stato impostato
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare($idtecnico).' AND idtipointervento='.prepare($idtipointervento));
$costo_ore = $rsc[0]['costo_ore'];
$costo_km = $rsc[0]['costo_km'];
$costo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
if ($rsc[0]['costo_ore'] != 0 || $rsc[0]['costo_km'] != 0 || $rsc[0]['costo_dirittochiamata'] != 0 || $rsc[0]['costo_ore_tecnico'] != 0 || $rsc[0]['costo_km_tecnico'] != 0 || $rsc[0]['costo_dirittochiamata_tecnico'] != 0) {
$costo_ore = $rsc[0]['costo_ore'];
$costo_km = $rsc[0]['costo_km'];
$costo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
$costo_ore_tecnico = $rsc[0]['costo_ore_tecnico'];
$costo_km_tecnico = $rsc[0]['costo_km_tecnico'];
$costo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
}
// ...altrimenti se non c'è una tariffa per il tecnico leggo i costi globali
else {
$rsc = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento));
$costo_ore = $rsc[0]['costo_orario'];
$costo_km = $rsc[0]['costo_km'];
$costo_dirittochiamata = $rsc[0]['costo_diritto_chiamata'];
$costo_ore_tecnico = $rsc[0]['costo_orario_tecnico'];
$costo_km_tecnico = $rsc[0]['costo_km_tecnico'];
$costo_dirittochiamata_tecnico = $rsc[0]['costo_diritto_chiamata_tecnico'];
}
$costo_ore_tecnico = $rsc[0]['costo_ore_tecnico'];
$costo_km_tecnico = $rsc[0]['costo_km_tecnico'];
$costo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
// Sovrascrivo i costi unitari da contratto se l'intervento è legato ad un contratto e c'è almeno un record...
if (!empty($idcontratto)) {
$rsc = $dbo->fetchArray('SELECT * FROM co_contratti_tipiintervento WHERE idcontratto='.prepare($idcontratto).' AND idtipointervento='.prepare($idtipointervento));
if (count($rsc) == 1) {
if (!empty($rsc)) {
$costo_ore = $rsc[0]['costo_ore'];
$costo_km = $rsc[0]['costo_km'];
$costo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];

View File

@ -7,6 +7,7 @@ use Modules\Anagrafiche\Anagrafica;
use Modules\Contratti\Contratto;
use Modules\Preventivi\Preventivo;
use Util\Generator;
use Modules\TipiIntervento\Tipo as TipoSessione;
class Intervento extends Document
{

View File

@ -1,32 +0,0 @@
<?php
namespace Modules\Interventi;
use Common\Model;
class TipoSessione extends Model
{
public $incrementing = false;
protected $table = 'in_tipiintervento';
protected $primaryKey = 'idtipointervento';
/**
* Restituisce l'identificativo.
*
* @return string
*/
public function getIdAttribute()
{
return $this->idtipointervento;
}
public function preventivi()
{
return $this->hasMany(Preventivo::class, 'idtipointervento');
}
public function interventi()
{
return $this->hasMany(Intervento::class, 'idtipointervento');
}
}

View File

@ -3,7 +3,7 @@
include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Anagrafica;
use Modules\Interventi\TipoSessione;
use Modules\TipiIntervento\Tipo as TipoSessione;
use Modules\Preventivi\Components\Articolo;
use Modules\Preventivi\Components\Riga;
use Modules\Preventivi\Components\Sconto;

View File

@ -6,7 +6,7 @@ use Carbon\Carbon;
use Common\Document;
use Modules\Anagrafiche\Anagrafica;
use Modules\Interventi\Intervento;
use Modules\Interventi\TipoSessione;
use Modules\TipiIntervento\Tipo as TipoSessione;
use Traits\RecordTrait;
use Util\Generator;

View File

@ -2,84 +2,54 @@
include_once __DIR__.'/../../core.php';
$module_name = 'Tecnici e tariffe';
switch (post('op')) {
case 'update':
$n_errors = 0;
foreach ($tipi_interventi as $tipo_intervento) {
$id_tipo_intervento = $tipo_intervento['id'];
foreach (post('costo_ore') as $idtecnico => $arr2) {
foreach ($arr2 as $idtipointervento => $value) {
$costo_ore = post('costo_ore')[$idtecnico][$idtipointervento];
$costo_km = post('costo_km')[$idtecnico][$idtipointervento];
$costo_dirittochiamata = post('costo_dirittochiamata')[$idtecnico][$idtipointervento];
$values = [
'costo_ore' => post('costo_ore')[$id_tipo_intervento],
'costo_km' => post('costo_km')[$id_tipo_intervento],
'costo_dirittochiamata' => post('costo_dirittochiamata')[$id_tipo_intervento],
'costo_ore_tecnico' => post('costo_ore_tecnico')[$id_tipo_intervento],
'costo_km_tecnico' => post('costo_km_tecnico')[$id_tipo_intervento],
'costo_dirittochiamata_tecnico' => post('costo_dirittochiamata_tecnico')[$id_tipo_intervento],
];
$costo_ore_tecnico = post('costo_ore_tecnico')[$idtecnico][$idtipointervento];
$costo_km_tecnico = post('costo_km_tecnico')[$idtecnico][$idtipointervento];
$costo_dirittochiamata_tecnico = post('costo_dirittochiamata_tecnico')[$idtecnico][$idtipointervento];
// Se c'è già un record idtecnico-idtipointervento lo aggiorno, altrimenti lo creo (retrocompatibilità quanto i costi erano legati ai tipi di intervento)
$rs = $dbo->fetchArray('SELECT id FROM in_tariffe WHERE idtecnico='.prepare($idtecnico).' AND idtipointervento='.prepare($idtipointervento));
// Aggiorno il record
if (count($rs) == 1) {
$query = 'UPDATE in_tariffe SET '
.' costo_ore='.prepare($costo_ore).', '
.' costo_km='.prepare($costo_km).', '
.' costo_dirittochiamata='.prepare($costo_dirittochiamata).', '
.' costo_ore_tecnico='.prepare($costo_ore_tecnico).', '
.' costo_km_tecnico='.prepare($costo_km_tecnico).', '
.' costo_dirittochiamata_tecnico='.prepare($costo_dirittochiamata_tecnico)
.' WHERE idtipointervento='.prepare($idtipointervento).' AND idtecnico='.prepare($idtecnico);
}
// Nuovo record
else {
$query = 'INSERT INTO in_tariffe(idtecnico, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) VALUES ('.prepare($idtecnico).', '.prepare($idtipointervento).', '.prepare($costo_ore).', '.prepare($costo_km).', '.prepare($costo_dirittochiamata).', '.prepare($costo_ore_tecnico).', '.prepare($costo_km_tecnico).', '.prepare($costo_dirittochiamata_tecnico).')';
}
if (!$dbo->query($query)) {
++$n_errors;
}
}
// Aggiorno il record
$dbo->update('in_tariffe', $values, [
'idtipointervento' => $id_tipo_intervento,
'idtecnico' => $id_record,
]);
}
if ($n_errors == 0) {
flash()->info(tr('Informazioni salvate correttamente!'));
} else {
flash()->error(tr('Errore durante il salvataggio delle tariffe!'));
}
flash()->info(tr('Informazioni salvate correttamente!'));
break;
case 'import':
$rs = $dbo->fetchArray('SELECT id FROM in_tariffe WHERE idtecnico = '.prepare(post('idtecnico')).' AND idtipointervento='.prepare(post('idtipointervento')));
$id_tipo_intervento = post('idtipointervento');
// Se la riga delle tariffe esiste, la aggiorno...
if (!empty($rs)) {
$result = $dbo->query('UPDATE in_tariffe SET '
.' costo_ore=(SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), '
.' costo_km=(SELECT costo_km FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), '
.' costo_dirittochiamata=(SELECT costo_diritto_chiamata FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), '
.' costo_ore_tecnico=(SELECT costo_orario_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), '
.' costo_km_tecnico=(SELECT costo_km_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), '
.' costo_dirittochiamata_tecnico=(SELECT costo_diritto_chiamata_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).') '
.' WHERE idtecnico='.prepare(post('idtecnico')).' AND idtipointervento='.prepare(post('idtipointervento')));
if ($result) {
flash()->info(tr('Informazioni salvate correttamente!'));
} else {
flash()->error(tr("Errore durante l'importazione tariffe!"));
}
$importi = $dbo->fetchOne('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($id_tipo_intervento));
$values = [
'costo_ore' => $importi['costo_orario'],
'costo_km' => $importi['costo_km'],
'costo_dirittochiamata' => $importi['costo_diritto_chiamata'],
'costo_ore_tecnico' => $importi['costo_orario_tecnico'],
'costo_km_tecnico' => $importi['costo_km_tecnico'],
'costo_dirittochiamata_tecnico' => $importi['costo_diritto_chiamata_tecnico'],
];
foreach ($tipi_interventi as $tipo_intervento) {
if($tipo_intervento['id'] == $id_tipo_intervento) break;
}
// ...altrimenti la creo
else {
if ($dbo->query('INSERT INTO in_tariffe( idtecnico, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico ) VALUES( '.prepare(post('idtecnico')).', '.prepare(post('idtipointervento')).', (SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_km FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_diritto_chiamata FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_orario_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_km_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_diritto_chiamata_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).') )')) {
flash()->info(tr('Informazioni salvate correttamente!'));
} else {
flash()->error(tr("Errore durante l'importazione tariffe!"));
}
}
// Aggiorno il record
$dbo->update('in_tariffe', $values, [
'idtipointervento' => $id_tipo_intervento,
'idtecnico' => $id_record,
]);
break;
}

View File

@ -2,27 +2,18 @@
include_once __DIR__.'/../../core.php';
$tipi_interventi = $dbo->fetchArray('SELECT * FROM in_tipiintervento ORDER BY descrizione');
$tecnici = $dbo->fetchArray("SELECT idanagrafica, ragione_sociale, colore FROM an_anagrafiche WHERE idanagrafica IN (
SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica IN (
SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Tecnico'
)
) AND deleted_at IS NULL ORDER BY ragione_sociale");
if (!empty($tecnici)) {
echo '
echo '
<form action="" method="post" id="edit-form">
<input type="hidden" name="op" value="update">
<input type="hidden" name="backto" value="record-list">';
foreach ($tecnici as $tecnico) {
echo '<div class="box box-info collapsable" style="'.((strtolower($tecnico['colore']) == '#ffffff' or empty($tecnico['colore'])) ? '' : 'border-color: '.$tecnico['colore']).'">
<input type="hidden" name="backto" value="record-edit">
<div class="box box-info collapsable" style="'.((strtolower($record['colore']) == '#ffffff' or empty($record['colore'])) ? '' : 'border-color: '.$record['colore']).'">
<div class="box-header with-border">
<h3 class="box-title"><i class="fa fa-user"></i> '.$tecnico['ragione_sociale'].'</h3>
<h3 class="box-title"><i class="fa fa-user"></i> '.$record['ragione_sociale'].'</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
'.Modules::link('Anagrafiche', $record['idanagrafica']).'
</div>
</div>
@ -31,71 +22,76 @@ if (!empty($tecnici)) {
<table class="table table-striped table-condensed">
<tr>
<th>'.tr('Attività').'</th>
<th>'.tr('Addebito orario').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>'.tr('Addebito km').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>'.tr('Addebito diritto ch.').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>
'.tr('Addebito orario').'
<span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span>
</th>
<th>
'.tr('Addebito km').'
<span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span>
</th>
<th>
'.tr('Addebito diritto ch.').'
<span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span>
</th>
<th>'.tr('Costo orario').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>'.tr('Costo km').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>'.tr('Costo diritto ch.').' <span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span></th>
<th>
'.tr('Costo orario').'
<span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span>
</th>
<th>
'.tr('Costo km').'
<span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span>
</th>
<th>
'.tr('Costo diritto ch.').'
<span class="tip" title="'.tr('Costo interno').'"><i class="fa fa-question-circle-o"></i></span>
</th>
<th width="40"></th>
</tr>';
// Tipi di interventi
foreach ($tipi_interventi as $tipo_intervento) {
// Lettura costi
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare($tecnico['idanagrafica']).' AND idtipointervento='.prepare($tipo_intervento['idtipointervento']));
echo '
<tr>
<td>'.$tipo_intervento['descrizione'].'</td>
<td>
<input type="text" class="form-control inputmask-decimal" name="costo_ore['.$tecnico['idanagrafica'].']['.$tipo_intervento['idtipointervento'].']" value="'.Translator::numberToLocale($rsc[0]['costo_ore']).'">
{[ "type": "number", "name": "costo_ore['.$tipo_intervento['id'].']", "required": 1, "value": "'.$tipo_intervento['costo_ore'].'" ]}
</td>
<td>
<input type="text" class="form-control inputmask-decimal" name="costo_km['.$tecnico['idanagrafica'].']['.$tipo_intervento['idtipointervento'].']" value="'.Translator::numberToLocale($rsc[0]['costo_km']).'">
{[ "type": "number", "name": "costo_km['.$tipo_intervento['id'].']", "required": 1, "value": "'.$tipo_intervento['costo_km'].'" ]}
</td>
<td>
<input type="text" class="form-control inputmask-decimal" name="costo_dirittochiamata['.$tecnico['idanagrafica'].']['.$tipo_intervento['idtipointervento'].']" value="'.Translator::numberToLocale($rsc[0]['costo_dirittochiamata']).'">
{[ "type": "number", "name": "costo_dirittochiamata['.$tipo_intervento['id'].']", "required": 1, "value": "'.$tipo_intervento['costo_dirittochiamata'].'" ]}
</td>
<td>
<input type="text" class="form-control inputmask-decimal" name="costo_ore_tecnico['.$tecnico['idanagrafica'].']['.$tipo_intervento['idtipointervento'].']" value="'.Translator::numberToLocale($rsc[0]['costo_ore_tecnico']).'">
{[ "type": "number", "name": "costo_ore_tecnico['.$tipo_intervento['id'].']", "required": 1, "value": "'.$tipo_intervento['costo_ore_tecnico'].'" ]}
</td>
<td>
<input type="text" class="form-control inputmask-decimal" name="costo_km_tecnico['.$tecnico['idanagrafica'].']['.$tipo_intervento['idtipointervento'].']" value="'.Translator::numberToLocale($rsc[0]['costo_km_tecnico']).'">
{[ "type": "number", "name": "costo_km_tecnico['.$tipo_intervento['id'].']", "required": 1, "value": "'.$tipo_intervento['costo_km_tecnico'].'" ]}
</td>
<td>
<input type="text" class="form-control inputmask-decimal" name="costo_dirittochiamata_tecnico['.$tecnico['idanagrafica'].']['.$tipo_intervento['idtipointervento'].']" value="'.Translator::numberToLocale($rsc[0]['costo_dirittochiamata_tecnico']).'">
{[ "type": "number", "name": "costo_dirittochiamata_tecnico['.$tipo_intervento['id'].']", "required": 1, "value": "'.$tipo_intervento['costo_dirittochiamata_tecnico'].'" ]}
</td>
<td>
<button type="button" class="btn btn-primary" data-toggle="tooltip" title="Importa valori da tariffe standard" onclick="if( confirm(\'Importare i valori dalle tariffe standard?\') ){ $.post( \''.$rootdir.'/modules/tecnici_tariffe/actions.php\', { op: \'import\', idtecnico: \''.$tecnico['idanagrafica'].'\', idtipointervento: \''.$tipo_intervento['idtipointervento'].'\' }, function(data){ location.href=\''.$rootdir.'/controller.php?id_module='.$id_module.'\'; } ); }">
<a class="btn btn-warning ask" data-backto="record-edit" data-method="post" data-op="import" data-idtipointervento="'.$tipo_intervento['id'].'" data-msg="'.tr('Vuoi importare la tariffa standard?').'" data-button="'.tr('Importa').'" data-class="btn btn-lg btn-info">
<i class="fa fa-download"></i>
</button>
</a>
</td>
</tr>';
}
echo '
</table>
</div>
</div>';
}
echo '
<div class="pull-right">
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva modifiche').'</button>
echo '
</table>
</div>
<div class="clearfix"></div>
</form>';
} else {
echo '
<p>'.tr('Non sono presenti anagrafiche di tipo "Tecnico"').'</p>';
}
</div>';

View File

@ -0,0 +1,9 @@
<?php
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne("SELECT idanagrafica, ragione_sociale, colore FROM an_anagrafiche WHERE idanagrafica = ".prepare($id_record));
$tipi_interventi = $dbo->fetchArray('SELECT *, in_tipiintervento.idtipointervento AS id, in_tariffe.idtipointervento AS esiste FROM in_tipiintervento LEFT JOIN in_tariffe ON in_tipiintervento.idtipointervento = in_tariffe.idtipointervento AND in_tariffe.idtecnico = '.prepare($id_record).' ORDER BY descrizione');
}

View File

@ -1,32 +1,21 @@
<?php
use Modules\TipiIntervento\Tipo;
include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'update':
$descrizione = post('descrizione');
$costo_orario = post('costo_orario');
$costo_km = post('costo_km');
$costo_diritto_chiamata = post('costo_diritto_chiamata');
$tipo->descrizione = post('descrizione');
$tipo->costo_orario = post('costo_orario');
$tipo->costo_km = post('costo_km');
$tipo->costo_diritto_chiamata = post('costo_diritto_chiamata');
$tipo->costo_orario_tecnico = post('costo_orario_tecnico');
$tipo->costo_km_tecnico = post('costo_km_tecnico');
$tipo->costo_diritto_chiamata_tecnico = post('costo_diritto_chiamata_tecnico');
$tipo->tempo_standard = post('tempo_standard');
$tipo->save();
$costo_orario_tecnico = post('costo_orario_tecnico');
$costo_km_tecnico = post('costo_km_tecnico');
$costo_diritto_chiamata_tecnico = post('costo_diritto_chiamata_tecnico');
$tempo_standard = empty(post('tempo_standard')) ? 'NULL' : prepare(round((post('tempo_standard') / 2.5), 1) * 2.5);
$query = 'UPDATE in_tipiintervento SET'.
' descrizione='.prepare($descrizione).','.
' costo_orario='.prepare($costo_orario).','.
' costo_km='.prepare($costo_km).','.
' costo_diritto_chiamata='.prepare($costo_diritto_chiamata).','.
' costo_orario_tecnico='.prepare($costo_orario_tecnico).','.
' costo_km_tecnico='.prepare($costo_km_tecnico).','.
' costo_diritto_chiamata_tecnico='.prepare($costo_diritto_chiamata_tecnico).','.
' tempo_standard='.$tempo_standard.
' WHERE idtipointervento='.prepare($id_record);
$dbo->query($query);
flash()->info(tr('Informazioni tipo intervento salvate correttamente!'));
break;
@ -34,13 +23,11 @@ switch (post('op')) {
case 'add':
$idtipointervento = post('idtipointervento');
$descrizione = post('descrizione');
$tempo_standard = post('tempo_standard');
$tempo_standard = (empty(post('tempo_standard'))) ? 'NULL' : prepare(round((post('tempo_standard') / 2.5), 1) * 2.5);
$tipo = Tipo::build($idtipointervento, $descrizione, $tempo_standard);
$query = 'INSERT INTO in_tipiintervento(idtipointervento, descrizione, costo_orario, costo_km, tempo_standard) VALUES ('.prepare($idtipointervento).', '.prepare($descrizione).', 0.00, 0.00, '.$tempo_standard.')';
$dbo->query($query);
$id_record = $idtipointervento;
$id_record = $tipo->id;
flash()->info(tr('Nuovo tipo di intervento aggiunto!'));
@ -56,4 +43,20 @@ switch (post('op')) {
flash()->info(tr('Tipo di intervento eliminato!'));
break;
case 'import':
$values = [
'costo_ore' => $record['costo_orario'],
'costo_km' => $record['costo_km'],
'costo_dirittochiamata' => $record['costo_diritto_chiamata'],
'costo_ore_tecnico' => $record['costo_orario_tecnico'],
'costo_km_tecnico' => $record['costo_km_tecnico'],
'costo_dirittochiamata_tecnico' => $record['costo_diritto_chiamata_tecnico'],
];
$dbo->update('in_tariffe', $values, [
'idtipointervento' => $id_record,
]);
break;
}

View File

@ -0,0 +1,6 @@
<?php
echo '
<a class="btn btn-warning ask" data-backto="record-edit" data-method="post" data-op="import" data-msg="'.tr('Vuoi impostare tutte le tariffe dei tecnici a questi valori?').'" data-button="'.tr('Imposta').'" data-class="btn btn-lg btn-warning">
<i class="fa fa-upload"></i> '.tr('Imposta per tutti i tecnici').'
</a>';

View File

@ -1,7 +1,9 @@
<?php
include_once __DIR__.'/../../core.php';
use Modules\TipiIntervento\Tipo;
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($id_record));
$tipo = Tipo::find($id_record);
}

View File

@ -0,0 +1,82 @@
<?php
namespace Modules\TipiIntervento;
use Common\Model;
use Modules\Anagrafiche\Anagrafica;
use Modules\Contratti\Contratto;
class Tipo extends Model
{
public $incrementing = false;
protected $table = 'in_tipiintervento';
protected $primaryKey = 'idtipointervento';
/**
* Crea un nuovo tipo di intervento.
*
* @param string $codice
* @param string $descrizione
* @param string $tempo_standard
*
* @return self
*/
public static function build($codice, $descrizione, $tempo_standard = null)
{
$model = parent::build();
$model->idtipointervento = $codice;
$model->descrizione = $descrizione;
$model->tempo_standard = $tempo_standard;
// Salvataggio delle informazioni
$model->save();
$model->fixTecnici();
return $model;
}
public function fixTecnici(){
// Fix per le relazioni con i tecnici
$tecnici = Anagrafica::fromTipo('Tecnico')->get();
foreach ($tecnici as $tecnico){
Anagrafica::fixTecnico($tecnico);
}
}
/**
* Restituisce l'identificativo.
*
* @return string
*/
public function getIdAttribute()
{
return $this->idtipointervento;
}
/**
* Imposta il tempo stamdard per il tipo di intervento.
*
* @param string $value
*/
public function setTempoStandardAttribute($value)
{
$result = round(($value / 2.5), 1) * 2.5;
$this->attributes['tempo_standard'] = $result;
}
public function preventivi()
{
return $this->hasMany(Preventivo::class, 'idtipointervento');
}
public function interventi()
{
return $this->hasMany(Intervento::class, 'idtipointervento');
}
}

View File

@ -1,11 +1,19 @@
<?php
// Fix del calcolo del bollo
use Modules\Anagrafiche\Anagrafica;
$fatture = \Modules\Fatture\Fattura::all();
foreach ($fatture as $fattura) {
$fattura->save();
}
// Fix per le relazioni tariffe-tecnici
$tecnici = Anagrafica::fromTipo('Tecnico')->get();
foreach ($tecnici as $tecnico){
Anagrafica::fixTecnico($tecnico);
}
// Spostamento automezzi su sedi
$automezzi = $dbo->fetchArray('SELECT * FROM dt_automezzi');
foreach ($automezzi as $automezzo) {

View File

@ -138,3 +138,16 @@ UPDATE `zz_views` SET `query` = 'IF(an_anagrafiche.ragione_sociale IS NULL, co_s
-- Plugin rinnovi per Contratti
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (NULL, 'Rinnovi', 'Rinnovi', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), (SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'tab', '', 1, 0, 0, '', '', NULL, 'custom', 'rinnovi_contratti', '');
-- Aggiornamento Tecnici e tariffe
UPDATE `zz_modules` SET `options` = '
SELECT |select| FROM an_anagrafiche WHERE idanagrafica IN (
SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica IN (
SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = ''Tecnico''
)
) AND deleted_at IS NULL AND 1=1 HAVING 2=2 ORDER BY ragione_sociale' WHERE `name` = 'Tecnici e tariffe';
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `default`, `visible`) VALUES
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Tecnici e tariffe'), '_bg_', 'colore', 3, 1, 0, 0, 0),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Tecnici e tariffe'), 'Nome', 'ragione_sociale', 2, 1, 0, 0, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Tecnici e tariffe'), 'id', 'idanagrafica', 1, 1, 0, 0, 0);