%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