%PDF- %PDF-
| Direktori : /var/www/pjc/app/Http/Controllers/ |
| Current File : /var/www/pjc/app/Http/Controllers/ProgrammaOre.php |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Utility;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Input;
use DataTables;
class ProgrammaOre extends Controller
{
public function index(Request $request)
{
if($request->has('filtro')) {
$settori = $request->input('filtro');
$mesiscelti = $request->input('mesi');
Session::forget('mesi');
Session::forget('settori');
}
else
{
$settori = Session::get('idSettore');
$mesiscelti = [Date('n')];
}
$commesse = DB::table('project')
->leftjoin('projects_accounts','projects_accounts.project_id','=','project.id')
->leftjoin('project_cstm','project_cstm.id_c','=','project.id')
->leftjoin('accounts','accounts.id','=','projects_accounts.account_id')
->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id')
->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*')
->where('project.deleted',0)
->where('projects_accounts.deleted',0)
->whereIn('status',['Draft','apertamafatturata'])
->where('project_cstm.settore_c',$settori)
->where('project.estimated_start_date','>','2016-01-01')
->limit(2)
->orderby('project.date_entered','DESC')
->get();
$persone = DB::table('utenti')->where('attivo',1)->where('idsettore',$settori)->orderby('idsettore','ASC')->get();
return view('programmaore.index')->withCommesse($commesse)->withPersone($persone)->withSettori($settori)->withMesiscelti($mesiscelti);
}
public function index1(Request $request)
{
if($request->has('filtro')) {
$settori = $request->input('filtro');
$mesiscelti = $request->input('mesi');
Session::forget('mesi');
Session::forget('settori');
}
else
{
$settori = Session::get('idSettore');
$mesiscelti = [Date('n')];
}
$persone = DB::table('utenti')->where('idsettore',$settori)->where('attivo',1)->get();
return view('programmaore.index')->withPersone($persone)->withSettori($settori)->withMesiscelti($mesiscelti);
}
public function JsonCommesse($settore)
{
$mesi = array(
1 => 'gennaio',
2 => 'febbraio',
3 => 'marzo',
4 => 'aprile',
5 => 'maggio',
6 => 'giugno',
7 => 'luglio',
8 => 'agosto',
9 => 'settembre',
10 => 'ottobre',
11 => 'novembre',
12 => 'dicembre'
);
$commesse = DB::table('project')
->join('projects_accounts','projects_accounts.project_id','=','project.id')
->join('project_cstm','project_cstm.id_c','=','project.id')
->join('accounts','accounts.id','=','projects_accounts.account_id')
->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id')
->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id')
->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*')
->where('project.deleted',0)
->where('projects_accounts.deleted',0)
->whereIn('status',['Draft','apertamafatturata'])
->where('project_cstm.settore_c',$settore)
->orderby('project.date_entered','DESC')
->get();
$conteggio = DB::table('project')->where('project_cstm.settore_c',$settore)->whereIn('status',['Draft','apertamafatturata'])->count();
$persone = DB::table('utenti')->where('idsettore',$settore)->where('attivo',1)->get();
foreach ($commesse as $item) {
foreach($persone as $key => $per)
{
foreach($mesi as $m) {
$assegnazioni = [];
$oreassegnate = \App\pianficazioneutente::where('idCommessa', $item->uid)->where('idUtente', $per->id)->where('mese', $key)->get();
foreach ($oreassegnate as $ore) {
$assegnazioni = ['id' => $per->id, 'cognome' => $per->cognome, 'mese' => $ore->mese, 'ore' => $ore->ore];
}
$item->pianificazione[$m] = $assegnazioni;
}
}
}
$mesi[] = array(
"defaultContent" => "<input type='text'>"
);
$mesi[] = array(
"defaultContent" => "<input type='text'>"
);
$mesi[] = array(
"defaultContent" => "<input type='text'>"
);
foreach($persone as $item)
{
$persona[] = array("defaultContent" => "<input type='text'>");
}
$response = array(
"draw" => intval($input['draw']),
"recordsTotal" => $conteggio,
"recordsFiltered" => count($data->get()),
"data" => $subdata_rtn
);
return \Response::json($response, 200, []);
}
public function saveCommessa(Request $request)
{
$dati = $request->all();
$mesi = explode(',', $request->get('mesi'));
$settori = $request->get('settori');
$pianificazione = \App\pianficazione::firstOrNew(['idCommessa' => $request->get('commessa')]);
$pianificazione->carico_t = ($request->has('tot_termico')) ? $request->get('tot_termico') : 0;
$pianificazione->carico_e = ($request->has('tot_elettrico')) ? $request->get('tot_elettrico') : 0;
$pianificazione->carico_a = ($request->has('tot_incendio')) ? $request->get('tot_incendio') : 0;
$pianificazione->carico_s = ($request->has('tot_sicurezza')) ? $request->get('tot_sicurezza') : 0;
$pianificazione->carico_f = ($request->has('tot_formazione')) ? $request->get('tot_formazione') : 0;
$pianificazione->lavorabile = $request->get('lavorabile');
$pianificazione->fatturabile = $request->get('fatturabile');
$pianificazione->note = $request->get('note');
$pianificazione->carico_t_old = $request->get('carico_t_old');
$pianificazione->carico_a_old = $request->get('carico_a_old');
$pianificazione->carico_s_old = $request->get('carico_s_old');
$pianificazione->carico_f_old = $request->get('carico_f_old');
$pianificazione->carico_e_old = $request->get('carico_e_old');
$pianificazione->anno = $request->get('anno_riferimento');
$pianificazione->save();
if ($request->has('acconti-1')) {
$acconti = \App\acconti::firstOrNew(['commessa' => $request->get('commessa'), 'mese' => 1]);
$acconti->mese = 1;
$acconti->anno = date('Y');
$acconti->importo = $request->get('acconti-1');
$acconti->commessa = $request->get('commessa');
$acconti->save();
}
if ($request->has('acconti-2')) {
$acconti = \App\acconti::firstOrNew(['commessa' => $request->get('commessa'), 'mese' => 2]);
$acconti->mese = 2;
$acconti->anno = date('Y');
$acconti->importo = $request->get('acconti-2');
$acconti->commessa = $request->get('commessa');
$acconti->save();
}
$i = 0;
foreach ($mesi as $mese) {
$utenti = DB::table('utenti')->where('idsettore', $settori)->get();
if (($settori == 1) && ($request->has('mese_sicurezza'))) {
$ore = $request->get('mese_sicurezza')[$i];
}
if (($settori == 2) && ($request->has('mese_termico'))) {
$ore = $request->get('mese_termico')[$i];
}
if (($settori == 3) && ($request->has('mese_elettrico'))) {
$ore = $request->get('mese_elettrico')[$i];
}
if (($settori == 4) && ($request->has('mese_antincendio'))) {
$ore = $request->get('mese_antincendio')[$i];
}
if (($settori == 5) && ($request->has('mese_formazione'))) {
$ore = $request->get('mese_formazione')[$i];
}
foreach ($utenti as $utente) {
$pianificazioneutente = \App\pianficazioneutente::firstOrNew(['idutente' => $utente->id, 'idCommessa' => $request->get('commessa'), 'mese' => $mese]);
if (($request->has($utente->id . '-' . $mese)) && ($request->get($utente->id . '-' . $mese) <> null)) {
$pianificazioneutente->idCommessa = $request->get('commessa');
$pianificazioneutente->mese = $mese;
$pianificazioneutente->ore = $request->get($utente->id . '-' . $mese);
$pianificazioneutente->idUtente = $utente->id;
$pianificazioneutente->save();
}
}
$i++;
}
Session::put('settori', $settori);
Session::put('mesi', $mesi);
return $dati;
return Redirect::action('ProgrammaOre@index');
}
public function getoremesecommessa($commessa)
{
$ore = \App\pianficazionemese::where('idCommessa',$commessa)->sum('ore');
return $ore;
}
public function calcolorimanenzamese($mese,$commessa,$importo,$carico,$id)
{
$righe = \App\pianficazioneutente::select('ore')->where('idCommessa',$id)->sum('ore');
$ore = $importo - $carico - $righe;
return $ore;
}
public function datatable(Request $request)
{
if($request->has('filtro')) {
$settori = $request->input('filtro');
$mesi = $request->input('mesi');
Session::forget('mesi');
Session::put('settori', $settori);
$persone = DB::table('utenti')->where('idsettore',$settori)->where('attivo',1)->get();
}
else
{
$settori = Session::get('idSettore');
$mesi = [1,2,3];
$persone = DB::table('utenti')->where('idsettore',$settori)->where('attivo',1)->get();
}
$carico_lavoro = DB::table('project')
->join('projects_accounts','projects_accounts.project_id','=','project.id')
->join('project_cstm','project_cstm.id_c','=','project.id')
->join('accounts','accounts.id','=','projects_accounts.account_id')
->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id')
->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id')
->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*')
->where('project.deleted',0)
->where('projects_accounts.deleted',0)
->whereIn('status',['Draft','apertamafatturata'])
->where('project_cstm.settore_c',$settori)
->orderby('project.date_entered','DESC')
->sum('project_cstm.importo_c') - DB::table('project')
->join('projects_accounts','projects_accounts.project_id','=','project.id')
->join('project_cstm','project_cstm.id_c','=','project.id')
->join('accounts','accounts.id','=','projects_accounts.account_id')
->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id')
->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id')
->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*')
->where('project.deleted',0)
->where('projects_accounts.deleted',0)
->whereIn('status',['Draft','apertamafatturata'])
->where('project_cstm.settore_c',$settori)
->orderby('project.date_entered','DESC')
->sum('carico_s_old');
$utenti_t = [24,5,8,31,28,12];
$utenti_e = [33,34,1,2];
$utenti_a = [18,6,3];
$utenti_s = [13,23,21,20,19,17,14,11,30,32,35];
$utenti_f = [25,26,15];
switch ($settori) {
case 1:
$ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_s)->sum('ore');
break;
case 2:
$ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_t)->sum('ore');
break;
case 3:
$ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_e)->sum('ore');
break;
case 4:
$ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_a)->sum('ore');
break;
case 5:
$ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_f)->sum('ore');
break;
}
/* $data = DB::table('project')
->join('projects_accounts','projects_accounts.project_id','=','project.id')
->join('project_cstm','project_cstm.id_c','=','project.id')
->join('accounts','accounts.id','=','projects_accounts.account_id')
->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id')
->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id')
->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*')
->where('project.deleted',0)
->where('projects_accounts.deleted',0)
->whereIn('status',['Draft','apertamafatturata'])
->where('project_cstm.settore_c',Session::get('settori'))
->orderby('project.date_entered','DESC')
->get();
foreach($data as $item)
{
$item->acconti = $this->getAcconti($item->uid);
$item->accontisi = $this->getAccontiSi($item->uid);
$item->residuo = $item->acconti - $item->accontisi;
$item->accontimese = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) );
$item->accontimesesi = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'si' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) );
$item->oremese = DB::select ( DB::raw ( "select mese, sum(ore) from pianificazioneoreutenti where idCommessa='".$item->uid."' GROUP by mese" ) );
}
return $data; */
if ($request->ajax()) {
$data = DB::table('project')
->join('projects_accounts','projects_accounts.project_id','=','project.id')
->join('project_cstm','project_cstm.id_c','=','project.id')
->join('accounts','accounts.id','=','projects_accounts.account_id')
->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id')
->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id')
->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*')
->where('project.deleted',0)
->where('projects_accounts.deleted',0)
->whereIn('status',['Draft','apertamafatturata'])
->where('project_cstm.settore_c',$settori)
->orderby('project.date_entered','DESC')
->get();
foreach($data as $item)
{
$item->acconti = $this->getAcconti($item->uid);
$item->accontisi = $this->getAccontiSi($item->uid);
$item->residuo = $item->acconti - $item->accontisi;
$item->accontimese = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) );
$item->accontimesesi = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'si' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) );
$item->oremese = DB::select ( DB::raw ( "select mese, sum(ore) as ore from pianificazioneoreutenti where idCommessa='".$item->uid."' GROUP by mese" ) );
}
return Datatables::of($data)
->toJson();
}
return view('datatable')->withPersone($persone)->withMesi($mesi)->withSettori($settori)->withCarico($carico_lavoro)->withOre($ore_settore);
}
public function getValue($idcommessa,$mese,$idutente)
{
return \App\pianficazioneutente::select('ore')->where('mese',$mese)->where('idUtente',$idutente)->where('idCommessa',$idcommessa)->first();
}
public function getMese($idcommessa,$mese)
{
return \App\pianficazioneutente::where('mese',$mese)->where('idCommessa',$idcommessa)->sum('ore');
}
public function getAcconti($id)
{
$totale_acconti = DB::select ( DB::raw ( "Select sum(importo) as somma from accco_acconti,accco_acconti_project_c where accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) );
return $totale_acconti[0]->somma;
}
public function getAccontiMese($id,$mese)
{
$acconti = DB::select ( DB::raw ( "Select accco_acconti_cstm.scadenza_c,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and MONTH(accco_acconti_cstm.scadenza_c) ='".$mese."' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) );
return $acconti;
}
public function getAccontiSi($id)
{
$totale_acconti = DB::select ( DB::raw ( "Select sum(importo) as somma from accco_acconti,accco_acconti_project_c where accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'si' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) );
return $totale_acconti[0]->somma;
}
public function getAccontiMeseSi($id,$mese)
{
$acconti = DB::select ( DB::raw ( "Select accco_acconti_cstm.scadenza_c,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.pagato = 'si' and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no'and MONTH(accco_acconti_cstm.scadenza_c) ='".$mese."' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) );
return $acconti;
}
public static function caricoRimanente($id,$importo,$old)
{
$somma = \App\pianficazioneutente::where('idCommessa',$id)->sum('ore');
return $importo - $old - $somma;
}
public static function meseOre($key,$settore)
{
$utenti_t = [24,5,8,31,28,12];
$utenti_e = [33,34,1,2];
$utenti_a = [18,6,3];
$utenti_s = [13,23,21,20,19,17,14,11,30,32,35];
$utenti_f = [25,26,15];
switch ($settore) {
case 1:
return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_s)->sum('ore');
break;
case 2:
return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_t)->sum('ore');
break;
case 3:
return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_e)->sum('ore');
break;
case 4:
return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_a)->sum('ore');
break;
case 5:
return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_f)->sum('ore');
break;
}
}
public function rimanenze($uid, $mese)
{
$commessa = DB::table('project')
->join('projects_accounts','projects_accounts.project_id','=','project.id')
->join('project_cstm','project_cstm.id_c','=','project.id')
->join('accounts','accounts.id','=','projects_accounts.account_id')
->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id')
->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id')
->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*')
->where('project.id',$uid)
->first();
$righe = \App\pianficazioneutente::select('ore')->where('idCommessa',$uid)->where('mese','<=',$mese)->sum('ore');
$ore = $commessa->importo_c - $commessa->carico_s_old - $righe;
return $ore;
}
}