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:
parent
73d0cf19b4
commit
fd72857d70
@ -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',
|
||||
|
@ -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!"));
|
||||
|
@ -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) {
|
||||
|
@ -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"> </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>
|
||||
|
@ -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', [
|
||||
|
@ -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'];
|
||||
|
@ -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">
|
||||
|
@ -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'];
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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');
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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>';
|
||||
|
9
modules/tecnici_tariffe/init.php
Normal file
9
modules/tecnici_tariffe/init.php
Normal 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');
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
6
modules/tipi_intervento/buttons.php
Normal file
6
modules/tipi_intervento/buttons.php
Normal 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>';
|
@ -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);
|
||||
}
|
||||
|
82
modules/tipi_intervento/src/Tipo.php
Normal file
82
modules/tipi_intervento/src/Tipo.php
Normal 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');
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user