%PDF- %PDF-
| Direktori : /var/www/pjc/resources/views/ |
| Current File : /var/www/pjc/resources/views/datatable.blade.php |
<?php
$m = 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'
);
$setone = [1 => 's',2 => 't',3 => 'e',4 => 'a',5 => 'f'];
$set = [1 => 'sicurezza',2 => 'termico',3 => 'elettrico',4 => 'incendio',5 => 'formazione'];
?>
@extends('layouts.main') @section('content')
<style>
.colonna-bordo {
border-left:1px solid blue
}
</style>
<!-- START BREADCRUMB -->
<ul class="breadcrumb">
<li><a href="">Home</a></li>
<li><a href="{{ action('Planning@index') }}">Planning</a></li>
<li class="active"></li>
</ul>
<!-- END BREADCRUMB -->
<div class="row">
<div class="row" style="padding-bottom: 20px">
<form action="{{ action('ProgrammaOre@datatable') }}" method="POST" class="">
<div class="col-lg-1">
<label>Settori: {{ $settori }}</label>
</div>
<div class="col-lg-3">
<?php if(Session::has('settori')) { $settori = Session::get('settori'); } ?>
<select class="js-example-basic-multiple form-control" name="filtro">
<option value="2" @if($settori == 2) selected @endif>TERMICO</option>
<option value="3" @if($settori == 3) selected @endif>ELETTRICO</option>
<option value="4" @if($settori == 4) selected @endif>INCENDIO</option>
<option value="1" @if($settori == 1) selected @endif>SICUREZZA</option>
<option value="5" @if($settori == 5) selected @endif>FORMAZIONE</option>
</select>
</div>
<div class="col-lg-1 text-right">
<label>Mesi:</label>
</div>
<div class="col-lg-4">
<select class="js-example-basic-multiple form-control" name="mesi[]" multiple="multiple">
<?php if(Session::has('mesi')) { $mesi = Session::get('mesi'); } ?>
@foreach($m as $key => $item)
<option value="{{ $key }}" @if(in_array($key,$mesi)) selected @endif @if(in_array($key,$m)) selected @endif>{{ ucfirst($item) }}</option>
@endforeach
</select>
</div>
<div class="col-lg-1">
<input type="submit" class="btn btn-primary" value="Filtra">
</div>
</form>
</div>
<div class="row">
<div class="col-md-12">
</div>
</div>
<div class="row">
<div class="col-lg-12">
<button class="btn btn-primary collapsed" data-toggle="collapse" data-target="#demo">Vedi Sommario ore assegnate</button>
<div id="demo" class="collapse">
<livewire:tabore :mesi="$mesi" :persone="$persone" :m="$m"/>
</div>
</div>
</div>
<div class="col-md-12">
<table class="table data-table">
<thead>
<tr>
<th colspan="12" style="border:1px solid blue">Generale</th>
@foreach($mesi as $item)
<th colspan="{{ count($persone) +3 }}" style="border:1px solid blue"> {{ $m[$item] }}</th>
@endforeach
</tr>
<tr>
<th>Azioni</th>
<th>Data inizio</th>
<th>Preventivo</th>
<th>Commessa</th>
<th class="text-center">Importo <br>attività</th>
<th class="text-center">Ore <br>Attività</th>
<th class="text-center">Anno di rifermento</th>
<th class="text-center"><span style="border: #0a6aa1 solid 1px; padding:3px;margin-bottom: 4px" id="rimanente_{{ $set[$settori] }}">{{ number_format($carico, 2, ',', '\'') }}</span><br>Carico di Lavoro</th>
<th class="text-center">Quote anni precedenti<br>già computate</th>
<th class="text-center" > <livewire:lavoro-rimanente :set="$settori" /><br>Carico lavoro <br> rimanente</th>
<th class="text-center">Cliente</th>
<th class="text-center">Oggetto</th>
@foreach($mesi as $data)
<th style="border-left:1px solid blue"> <livewire:somma-mese :s="$settori" :m="$data" /><br>Totale Mese</th>
@foreach($persone as $item)
<th class="text-center">{{ $item->cognome }}</th>
@endforeach
<th>Acconto Mese <br> Ricevuto</th>
<th style="border-right:1px solid blue">Acconto Mese <br> Atteso</th>
@endforeach
<th>Lavorabile</th>
<th>Totale Acconti ricevuti</th>
<th>Totale Acconti attesi</th>
<th>Residuo</th>
<th>Fatturabile</th>
<th>Note</th>
<th>Azioni</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
@stop
@section('script')
<script type="text/javascript">
$( document ).ready(function() {
var settori = [];
settori.push(1, 'sicurezza');
var fatturazione = [];
var persone = [];
@foreach($mesi as $key => $data)
persone.push({
data: 'oremese', className: "colonna-bordo" , render: function (data, type, row, meta) {
var oremese = 0;
data.forEach(function(item){
if(item.mese == {{$data}})
{
oremese = item.ore
}
});
return `Asseganto del mese: <br>
<input form="` + row.uid + `" class="tot_mese_` + settori[row.settore_c] + `_{{$data}}"
type="text" name="mese_` + settori[row.settore_c] + `[]"
data-mesetype="` + settori[row.settore_c] + `"
data-commessa="` + row.nome + `" data-mese="{{ $data }}" size="5" onLoad="getMese(` + row.uid + `,{{ $data }})" value="`+ oremese+ `" readonly="">
<br>
Rimanenza Totale:<br>
<input uid=${row.uid} name="rimanenza_mese_{{ $set[$settori] }}[]" data-commessa="` + row.nome + `" data-mese="{{ $data }}" type="text" size="5" value="" readonly="" >
`
}
});
@foreach($persone as $item)
persone.push({
data: '{{$item->id}}', name: '{{ $item->cognome }}', render: function (data, type, row, meta) {
return '<input form="' + row.uid + '" name="{{$item->id}}-{{ $data }}"type="text" data-person="{{$item->id}}" data-type="single_person" data-uid="' + row.uid + '" data-settore="{{ $set[$settori]}}" data-mese="{{ $data }}" data-commessa="' + row.nome + '" data-calcolabile="1" size="5">'
}
})
@endforeach
persone.push({
data: 'accontimesesi', name: 'acconti-{{ $data }}', render: function (data, type, row, meta) {
var dastampare = 0;
data.forEach(function(element) {
if(element.mese == {{$data}})
{
dastampare=element.importo
}
else
{
return 1
}
}
);
return parseFloat(dastampare).toFixed(2)
}
});
persone.push({
data: 'accontimese', name: 'acconti-{{ $data }}', render: function (data, type, row, meta){
var dastampare = 0;
data.forEach(function(element) {
if(element.mese == {{$data}})
{
dastampare=element.importo
}
else
{
return 1
}
}
);
return parseFloat(dastampare).toFixed(2)
}
});
@endforeach
fatturazione.push({
data: 'lavorabile', render: function (data, type, row, meta) {
if (data) {
return `<select form="` + row.uid + `" name="lavorabile">
<option value="0" >NO</option>
<option value="1" selected >SI</option>
</select>`
} else {
return `<select form="` + row.uid + `" name="lavorabile">
<option value="0" selected >NO</option>
<option value="1" >SI</option>
</select>`
}
}
});
fatturazione.push({data: 'acconti', name: 'acconti',render: function (data, type, row, meta) {
if(data)
{
return parseFloat(data).toFixed();
}
else
{
return 0
}
}})
fatturazione.push({data: 'accontisi', name: 'accontisi',render: function (data, type, row, meta) {
if(data)
{
return parseFloat(data).toFixed();
}
else
{
return 0
}
}})
fatturazione.push({data: 'residuo', name: 'residuo'})
fatturazione.push({
data: 'fatturabile', render: function (data, type, row, meta) {
if (data) {
return `<select form="` + row.uid + `" name="fatturabile">
<option value="0" >NO</option>
<option value="1" selected >SI</option>
</select>`
} else {
return `<select form="` + row.uid + `" name="fatturabile">
<option value="0" selected >NO</option>
<option value="1" >SI</option>
</select>`
}
}
});
fatturazione.push({
data: 'note', render: function (data, type, row, meta) {
if(data)
{
return `<textarea form="` + row.uid + `" name="note" >"` + String(data) + `" </textarea>`
}
else
{
return `<textarea form="` + row.uid + `" name="note" ></textarea>`
}
}
})
fatturazione.push({data: 'uid', name: 'id', render: function (data, type, row, meta) {
return `
<button form="` + row.uid + `" class="btn btn-outline" type="submit">
<i class="fa fa-save"></i>
</button>`
}})
var colonne = [
{data: 'uid', name: 'id', render: function (data, type, row, meta) {
return ` <form method="POST" class="form-row" id="`+data+`" data-commessa="`+row.nome+`" >
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
<input type="hidden" name="commessa" value="`+data+`" />
<input type="hidden" name="mesi" value="{{ implode(",", $mesi) }}" />
<input type="hidden" name="settori" value="{{$settori }}" />
<button class="btn btn-outline" type="submit">
<i class="fa fa-save"></i>
</button></form>`
}},
{data: 'data_inizio', name: 'Data Inizio'},
{data: 'npreventivo_c', name: 'npreventivo_c'},
{data: 'nome', name: 'nome'},
{data: 'importo_c', name: 'importo_c',render: function (data, type, row, meta) {
return '<span id="prezzo-'+row.nome+'">'+parseFloat(data).toFixed(2)+'</span>'
}},
{data: 'importo_c', render: function (data, type, row, meta) {
return parseFloat(data) / 62.5
}},
{
data: 'anno', name: 'anno', render: function (data, type, row, meta) {
if (data) {
return '<input form="' + row.uid + '" type="text" name="anno_riferimento" value="' + data + '" size="8">'
} else {
return '<input form="' + row.uid + '" type="text" name="anno_riferimento" value="" size="8">'
}
}
},
{data: 'importo_c', name: 'importo_c', render: function (data, type, row, meta) {
if(parseFloat(row.carico_{{$setone[$settori]}}_old) )
{
var a = parseFloat(data) - parseFloat(row.carico_{{$setone[$settori]}}_old)
return `<input type="text" id="{{ $set[$settori] }}_`+row.nome+`" name="tot_{{ $set[$settori] }}" data-type="carico" size="8" value="`+ a +`" readonly="">`
}
else
{
return '<input type="text" id="{{ $set[$settori] }}_'+row.nome+'" name="tot_{{ $set[$settori] }}" data-type="carico" size="8" value="'+ parseFloat(data) +'" readonly="">'
}
}},
{
data: 'carico_{{$setone[$settori]}}_old', name: 'carico_{{$setone[$settori]}}_old',
render: function (data, type, row, meta) {
if (data) {
return '<input form="' + row.uid + '" name="carico_{{$setone[$settori]}}_old" data-uid="' + row.uid + '" data-commessa="' + row.nome + '" value="' + data + '" >'
} else {
return '<input form="' + row.uid + '" name="carico_{{$setone[$settori]}}_old" data-uid="' + row.uid + '" data-commessa="' + row.nome + '" value="0" >'
}
}
},
{
name: 'carico rimanente',
data: 'carico_{{$setone[$settori]}}_old',
render: function (data, type, row, meta) {
carico = 0;
if(data)
{ carico = data}
return `<span id="lavorato-{{$set[$settori]}}-`+row.nome+`" class="text-center lavorato-{{$set[$settori]}}">` + (parseFloat(row.importo_c) - parseFloat(carico)) + `</span>`;
}
},
{data: 'ragione_sociale', name: 'ragione_sociale'},
{data: 'descrizione', name: 'descrizione'},
];
colonne = colonne.concat(persone, fatturazione);
var table = $('.data-table').DataTable({
processing: true,
serverSide: true,
order: [[ 3, "desc" ]],
scrollX: true,
ajax: {
"url": "/a/datatable",
"type": "POST"
},
pageLength: 10,
columns: colonne,
drawCallback: function( settings ) {
noty({text: 'Caricamento in corso', layout: 'topRight', type: 'warning',timeout: 5000});
getValue();
$('input[name="carico_{{$setone[$settori]}}_old"]').on('change', function () {
$('#{{$set[$settori]}}_' + $(this).attr('data-commessa')).val(parseFloat($('#prezzo-' + $(this).attr('data-commessa')).text()) - parseFloat($(this).val()));
calcolaRimanente('{{$set[$settori]}}', $(this).attr('data-commessa'));
sommaRimanente('{{$set[$settori]}}', $(this).attr('data-commessa'))
calcoloRimanentemese($( this ).attr('data-mese'),$( this ).attr('data-commessa'),$( this ).attr('data-settore'));
});
function calcolaRimanente(settore,commessa) {
somma_righe = 0;
$('[data-type="single_person"][data-commessa="' + commessa + '"]').each(function () {
somma_righe = somma_righe + parseFloat($(this).val())
});
$('#lavorato-'+settore+'-' + commessa).text(parseFloat($('#prezzo-' + commessa).text()) - parseFloat($('input[name="carico_{{$setone[$settori]}}_old"][data-commessa="' + commessa + '"]').val()) - somma_righe)
}
function sommaRimanente(settore) {
somma= 0;
$('.lavorato-'+ settore).each(function()
{
if($(this).text() != '') {
somma = somma + parseFloat($(this).text());
}
});
//$('#a_'+settore).text(somma)
}
function calcoloRimanentemese(mese,commessa,settore,old,attuale)
{
valore_commessa = parseFloat($('#'+settore+'_'+commessa).val());
somma= 0;
$('[data-type="single_person"][data-commessa="' + commessa + '"][data-mese="' + mese + '"]').each(function()
{
if($(this).val() != '') {
somma = somma + parseFloat($(this).val());
}
});
$('input[name="rimanenza_mese_'+settore+'[]"][data-mese="'+ mese +'"][data-commessa="' + commessa + '"]').val((parseFloat($('input[name="rimanenza_mese_'+settore+'[]"][data-mese="'+ mese +'"][data-commessa="' + commessa + '"]').val()) + parseFloat(old) - parseFloat(attuale)));
}
function getRimanenzaMese(commessa,mese,settore)
{
/* $.ajax({
url: "/a/calcolorimanenzamese/"+mese+"/"+commessa,
type: "get",
dataType: 'json',
delay: 250,
success: function (params) {
},
cache: true
}); */
}
$( ".form-row" ).submit(function( event ) {
var form = $(this);
$.ajax({
type: "POST",
url: '/a/saveCommessa',
data: form.serialize(), // serializes the form's elements.
success: function(data)
{
noty({text: 'Agiornamento risciuto', layout: 'topRight', timeout: 3000, type: 'success',});
Livewire.emit('refreshTable')
Livewire.emit('rim',{{ $settori }})
Livewire.emit('calcolo')
},
error: function (data) {
alert(data);
},
});
commessa1 = form.attr('data-commessa');
$('input[name="rimanenza_mese_{{ $set[$settori] }}[]"][data-commessa="'+ commessa1 +'"]').each(function(){
var elem = $(this);
$.ajax({
method: "GET",
url: "/a/rimanenze/"+$(this).attr('uid')+"/"+$(this).attr('data-mese'),
success: function (risposta) {
//visualizzo il contenuto del file nel div htmlm
elem.val(risposta)
},
//imposto l'azione in caso di insuccesso
error: function (stato) {
}
});
})
event.preventDefault()
});
$('[data-type="single_person"]').focusin(function(){
$(this).data('val', $(this).val());
}).change(function() {
var old = 0;
if($(this).data('val'))
{
var old = parseFloat($(this).data('val'));
}
commessa = '[data-commessa="' + $( this ).attr('data-commessa') + '"]';
mese = '[data-mese="' + $( this ).attr('data-mese') + '"]';
settore = '[data-settore="' + $( this ).attr('data-settore') + '"]';
calcolaRimanente($( this ).attr('data-settore'),$( this ).attr('data-commessa'));
sommaRimanente($( this ).attr('data-settore'),$( this ).attr('data-commessa'));
calcoloRimanentemese($( this ).attr('data-mese'),$( this ).attr('data-commessa'),$( this ).attr('data-settore'),old,parseFloat($(this).val()));
getRimanenzaMese($( this ).attr('data-commessa'),$( this ).attr('data-mese'),$( this ).attr('data-settore'));
totaleMese(commessa, mese, settore,$( this ))
//calcoloAssegnatoMese($( this ).attr('data-mese'),$( this ).attr('data-settore'));
ricalcola($(this).attr("data-person"),$(this).attr("data-mese"));
var totaleAttuale = parseFloat($('#mese_'+$( this ).attr('data-settore')+'_'+$( this ).attr('data-mese')).text())
if($(this).data('val'))
{
var old = parseFloat($(this).data('val'));
}
else
{
var old = parseFloat($(this).val());
}
var attuale = parseFloat($(this).val())
$('#mese_'+$( this ).attr('data-settore')+'_'+$( this ).attr('data-mese')).text(parseFloat($('#mese_'+$( this ).attr('data-settore')+'_'+$( this ).attr('data-mese')).text() - old + attuale))
});
function totaleMese(commessa, mese, settore,el)
{
somma = 0;
$(commessa + mese + settore).each(function() {
somma = somma + parseFloat($(this).val())
});
$('[data-commessa="'+ el.attr('data-commessa') +'"][data-mesetype="' + el.attr('data-settore') + '"][data-mese="' + el.attr('data-mese') + '"]').val(somma);
}
function ricalcola(persona,mese)
{
var somma_walter = 0;
$('[data-person=' + persona + '][data-mese=' + mese + '][data-calcolabile=1]').each(function(index) {
if($( this ).val() != '' )
{
somma_walter = somma_walter + parseFloat($(this).val());
}
});
$('[data-person=' + persona + '][data-mese=' + mese + '][data-type="sommario"]').html(somma_walter);
$('[data-person=' + persona + '][data-mese=' + mese + '][data-type="valore"]').html(somma_walter*62,5 + '€');
}
function calcoloAssegnatoMese(mese,settore)
{
var somma_righe = 0;
$('.tot_mese_'+settore+'_'+mese).each(function () {
somma_righe = somma_righe + parseFloat($(this).val())
});
$('#mese_'+ settore +'_'+mese).text(somma_righe);
}
$('.page-content').css('height','100%')
setTimeout(function() {
aggiorna();
}, 5000);
},
initComplete: function (settings, json) {
}
});
function getValue() {
$('[data-type="single_person"]').each(function (index) {
var elem = $(this);
$.ajax({
method: "GET",
url: "/a/getvalue/" + $(this).attr('data-uid') + "/" + $(this).attr('data-mese') + "/" + $(this).attr('data-person'),
success: function (risposta) {
//visualizzo il contenuto del file nel div htmlm
if(risposta.ore) {
elem.val(risposta.ore)
}
else
{
elem.val(0)
}
},
//imposto l'azione in caso di insuccesso
error: function (stato) {
}
});
});
$('[data-type="single_person"]').trigger('change')
}
function getMese(commessa,mese) {
var elem = $(this);
$.ajax({
method: "GET",
url: "/a/getvalue/"+commessa+"/"+mese,
success: function (risposta) {
//visualizzo il contenuto del file nel div htmlm
if(risposta.ore) {
elem.val(risposta.ore)
}
else
{
elem.val(0)
}
},
//imposto l'azione in caso di insuccesso
error: function (stato) {
}
});
}
});
function aggiornaRiga(commessa)
{
console.log('commessa',commessa);
console.log( $('[data-type="single_person"][data-commessa="'+ comessa +'"]'))
$('[data-type="single_person"][data-commessa="'+ comessa +'"]').trigger('change')
$('input[name="carico_s_old"][data-commessa="'+ comessa +'"]').trigger('change')
$('input[name="rimanenza_mese_{{ $set[$settori] }}[]"][data-commessa="'+ comessa +'"]').each(function(){
var elem = $(this);
$.ajax({
method: "GET",
url: "/a/rimanenze/"+$(this).attr('uid')+"/"+$(this).attr('data-mese'),
success: function (risposta) {
//visualizzo il contenuto del file nel div htmlm
elem.val(risposta)
},
//imposto l'azione in caso di insuccesso
error: function (stato) {
}
});
})
}
function aggiorna()
{
console.log('sono in aggiorna');
$('[data-type="single_person"]').trigger('change')
$('input[name="carico_s_old"').trigger('change')
$('input[name="rimanenza_mese_{{ $set[$settori] }}[]"]').each(function(){
var elem = $(this);
$.ajax({
method: "GET",
url: "/a/rimanenze/"+$(this).attr('uid')+"/"+$(this).attr('data-mese'),
success: function (risposta) {
//visualizzo il contenuto del file nel div htmlm
elem.val(risposta)
},
//imposto l'azione in caso di insuccesso
error: function (stato) {
}
});
})
noty({text: 'Caricamento riuscito', layout: 'topRight', type: 'success',timeout: 2000});
}
</script>
@endsection