%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/pjc/resources/views/
Upload File :
Create Path :
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


Zerion Mini Shell 1.0