| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630 |
- <div class="col">
- <div class="row h-100">
- <div class="col-auto filterWrapper" id="filter--section" wire:ignore.self>
- <aside>
- <header>
- <h2>Filtra Ricerca</h2>
- </header>
- <form action="" id="filter--form" class="dark-form row">
- <div class="filter--item">
- <span class="filter--item_title">Commerciale</span>
- <div class="filter--item_formElement">
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="radio" value="0" id="all_commercial" wire:model="filterCommercial">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Entrambe</label>
- </div>
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="radio" value="1" id="commercial" wire:model="filterCommercial">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Commerciale</label>
- </div>
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="radio" value="2" id="not_commercial" wire:model="filterCommercial">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Non commerciale</label>
- </div>
- </div>
- </div>
- <!-- filter item -->
- <div class="filter--item">
- <span class="filter--item_title">Fornitore</span>
- <div class="filter--item_formElement">
- <select name="search_supplier_id" class="form-select filterSupplier" wire:model="filterSupplier">
- <option value="">
- @foreach($suppliers as $supplier)
- <option value="{{$supplier->id}}">{{$supplier->name}}
- @endforeach
- </select>
- </div>
- </div>
- <div class="filter--item">
- <span class="filter--item_title">Pagamento</span>
- <div class="filter--item_formElement">
- <select name="search_payment_method_id" class="form-select filterPaymentMethod" wire:model="filterPaymentMethod">
- <option value="">
- @foreach($payments as $payment)
- <option value="{{$payment->id}}">{{$payment->name}}
- @endforeach
- </select>
- </div>
- </div>
- <!-- filter item -->
- <div class="filter--item">
- <span class="filter--item_title">Causali</span>
- <div class="filter--item_formElement">
- <select name="search_causal_id" class="form-select filterCausals" multiple="multiple" wire:model="filterCausals">
- <option value="">
- @foreach($causals as $causal)
- <option value="{{$causal["id"]}}">{{$causal["name"]}}
- @endforeach
- </select>
- </div>
- </div>
- <!-- filter item -->
- <div class="filter--item">
- <span class="filter--item_title">Periodo </span>
- <div class="filter--item_formElement">
- <input id="date" type="date" class="form-control" wire:model="filterFrom" style="background-color:white">
- </div>
- <div class="filter--item_formElement">
- <input id="date" type="date" class="form-control" wire:model="filterTo" style="background-color:white">
- </div>
- </div>
- <!-- filter item -->
- <!--
- <div class="filter--item">
- <span class="filter--item_title">Modalità di Pagamento</span>
- <div class="filter--item_formElement row">
- <div class="col-6">
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Contanti</label>
- </div>
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option2">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Borsellino</label>
- </div>
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option3">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Bonifico</label>
- </div>
- </div>
- <div class="col-6">
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option4">
- <label class="form-check-label ms-2" for="inlineCheckbox1">POS</label>
- </div>
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option5">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Playtomic</label>
- </div>
- <div class="form-check form-check-inline d-inline-flex align-items-center">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option6">
- <label class="form-check-label ms-2" for="inlineCheckbox1">Assegno</label>
- </div>
- </div>
- </div>
- </div>
- -->
- <!-- filter item -->
- </form>
- <footer>
- @if($hasFilter)
- <div class="d-flex align-items-center">
- Totale : <b>{{formatPrice($total)}}</b>
- </div>
- @endif
- <div class="filter--buttons d-flex align-items-center justify-content-between">
- <button class="btn--ui small dark disable" wire:click.prevent="disableSearch()">cancella</button>
- <button class="btn--ui small white" wire:click.prevent="search()">filtra</button>
- </div>
- </footer>
- </aside>
- </div>
- <div class="col card--ui" id="card--dashboard">
- @if(!$add && !$update)
- <header id="title--section" class="d-flex align-items-center justify-content-between">
- <div class="title--section_name d-flex align-items-center justify-content-between">
- <i class="ico--ui title_section utenti me-2"></i>
- <h2 class="primary" style="color:#F28322">@if(!$add && !$update)Elenco Uscite @else Inserimento/modifica uscita @endif</h2>
- </div>
- @if(!$add && !$update)
- <div class="title--section_addButton" wire:click="add()" style="cursor: pointer;">
- <div class="card--ui card--ui_btnAddHeaderUser entrata d-flex justify-items-between">
- <header class="d-flex justify-content-between"><div class="card-title d-flex align-items-start"><h2><small>Registra</small><br>Nuova Uscita</h2></div><a href="#" wire:click="add()"><i class="ico--ui big add primary"></i></a></header>
- </div>
- </div>
- @endif
- </header>
- <button id="open-filter" onclick="pcsh1()"></button>
- <button id="close-filter" onclick="pcsh2()"></button>
- <section id="subheader" class="d-flex align-items-center justify-content-between">
- <form action="" class="group--action d-flex align-items-center">
- <select class="form-select form-select-lg me-1" aria-label=".form-select-lg example" wire:model="multipleAction">
- <option selected>Azione multipla</option>
- <option value="delete">Elimina</option>
- </select>
- <button type="submit" class="btn--ui" wire:click.prevent="executeMultipleAction()">applica</button>
- </form>
- <form action="" class="compare--form d-flex align-items-center">
- <select class="form-select form-select-lg me-1" aria-label=".form-select-lg example" wire:model="selectedFilter">
- <option value="">--Seleziona--</option>
- <option value="0">Oggi</option>
- <option value="1">Questo mese: <span class="date-range">{{date("01/m/Y")}} - {{date("t/m/Y")}}</span></option>
- <option value="2">Questo anno: <span class="date-range">{{date("01/01/Y")}} - {{date("31/12/Y")}}</span></option>
- <option value="3">Tutte</option>
- </select>
- </form>
- </section>
- <section id="resume-table">
- <div class="compare--chart_wrapper d-none"></div>
- <table class="table tablesaw tablesaw-stack" data-tablesaw="" id="tablesaw-350">
- <thead>
- <tr>
- <th scope="col"></th>
- <th scope="col" wire:click.prevent="sortBy('date')" style="cursor:pointer">Data <i class="fa fa-sort"></i></th>
- <th scope="col" wire:click.prevent="sortBy('total')" style="cursor:pointer">Importo <i class="fa fa-sort"></i></th>
- <th scope="col" wire:click.prevent="sortBy('supplier')" style="cursor:pointer">Fornitore <i class="fa fa-sort"></i></th>
- <th scope="col">Causale</th>
- <th scope="col" wire:click.prevent="sortBy('payment')" style="cursor:pointer">Pagamento <i class="fa fa-sort"></i></th>
- <th scope="col">...</th>
- </tr>
- </thead>
- <tbody id="checkall-target">
- @foreach($records as $record)
- <tr>
- <td> <label><input class="table-check" type="checkbox" wire:model="multipleIds" value="{{$record->id}}"><span class="sr-only d-inline-block d-lg-none ms-2 mobile-row-selector"> Seleziona riga</span></label></td>
- <td>{{date("d/m/Y", strtotime($record->date))}}</td>
- <td><span class="tablesaw-cell-content primary">{{formatPrice($record->getTotal())}}</span></td>
- <td>{{$record->supplier}}</td>
- <td>
- @foreach($record->rows as $row)
- {{$row->causal->getTree()}}<br>
- @endforeach
- </td>
- <td>{{$record->payment_method->name}}</td>
- <td>
- <button type="button" class="btn btn-outline-primary btn-sm" wire:click="edit({{ $record->id }})">Modifica</button>
- <button type="button" class="btn btn-outline-danger btn-sm" onclick="confirm('Sei sicuro?') || event.stopImmediatePropagation()" wire:click="delete({{ $record->id }})">Elimina</button>
- </td>
- </tr>
- @endforeach
- </tbody>
- </table>
- <!--
- <div class="paginator d-flex justify-content-center">
- <nav aria-label="Page navigation example">
- <ul class="pagination">
- <li class="page-item">
- <a class="page-link" href="#" aria-label="Previous">
- <span aria-hidden="true"></span>
- </a>
- </li>
- <li class="page-item"><a class="page-link" href="#">1</a></li>
- <li class="page-item"><a class="page-link" href="#">2</a></li>
- <li class="page-item"><a class="page-link" href="#">3</a></li>
- <li class="page-item"><a class="page-link" href="#">3</a></li>
- <li class="page-item"><span class="more-page">...</span></li>
- <li class="page-item">
- <a class="page-link" href="#" aria-label="Next">
- <span aria-hidden="true"></span>
- </a>
- </li>
- </ul>
- </nav>
- </div>
- -->
- </section>
- @else
- @if (session()->has('error'))
- <div class="alert alert-danger" role="alert">
- {{ session()->get('error') }}
- </div>
- @endif
- <header id="title--section" class="d-flex align-items-center justify-content-between">
- <div class="title--section_name d-flex align-items-center justify-content-between">
- <i class="ico--ui title_section entrate me-2"></i>
- <h2 class="primary">{{$add ? 'Nuova' : 'Modifica'}} Uscita</h2>
- </div>
- </header>
- <section id="accountingExit" class="d-flex" wire:key='reload-{{$selectId}}'>
- <div class="accountingExit_data">
- <form class="form--accounting">
- <div class="row gx-2">
- <div class="col-md-6">
- <span class="title-form d-block w-100">Data di Pagamento</span>
- <div class="input-group mb-3">
- <input id="date" type="date" class="form-control" wire:model="date">
- </div>
- </div>
- <div class="col-12">
- <span class="title-form d-block w-100">Fornitore</span>
- <select name="supplier_id" class="form-select supplierClass @error('supplier_id') is-invalid @enderror" aria-label="Seleziona un fornitore" wire:model="supplier_id">
- <option value="">
- @foreach($suppliers as $supplier)
- <option value="{{$supplier->id}}">{{$supplier->name}}
- @endforeach
- </select>
- @error('supplier_id')
- <div class="invalid-feedback">{{ $message }}</div>
- @enderror
- </div>
- </div>
- <div class="row gx-2 mt-5">
- <span class="title-form d-block w-100">Pagamento</span>
- <div class="col-md-12">
- <select name="payment_method_id" class="form-select paymentClass @error('payment_method_id') is-invalid @enderror" aria-label="Seleziona un metodo di pagamento" wire:model="payment_method_id">
- <option value="">
- @foreach($payments as $payment)
- <option value="{{$payment->id}}">{{$payment->name}}
- @endforeach
- </select>
- @error('payment_method_id')
- <div class="invalid-feedback">{{ $message }}</div>
- @enderror
- </div>
- </div>
- @foreach($rows as $idx => $row)
- <div class="row gx-2 mt-5" wire:ignore>
- <span class="title-form d-block w-100">Causale</span>
- <div class="col-md-12">
- <livewire:causals :type="$typeOUT" :idx="$idx" :causal_id="$rows[$idx]['causal_id']" :wire:key="$idx" />
- @if(false)
- <select name="rows.{{$idx}}.causal_id" class="form-select causalClass @error('row.' . $idx . '.causal_id') is-invalid @enderror" aria-label="Seleziona una causale" wire:model="rows.{{$idx}}.causal_id">
- <option value="">
- @foreach($causals as $causal)
- <option value="{{$causal["id"]}}">{!!$causal["name"]!!}
- @endforeach
- </select>
- @error('causal_id')
- <div class="invalid-feedback">{{ $message }}</div>
- @enderror
- @endif
- @error('rows.' . $idx . '.causal_id')
- <div class="invalid-feedback">{{ $message }}</div>
- @enderror
- </div>
- </div>
- <div class="row gx-2 mt-5">
- <span class="title-form d-block w-100">Dettaglio causale</span>
- <div class="col-md-12">
- <input class="form-control " type="text" placeholder="Dettaglio causale" wire:model="rows.{{$idx}}.note">
- </div>
- </div>
- <div class="row gx-2 mt-5">
- <span class="title-form d-block w-100">Tipologia</span>
- <div class="col-md-12">
- <div class="check--invoice d-flex align-items-center">
- <div class="form-check me-3">
- <input class="form-check-input" type="radio" value="1" id="rows.{{$idx}}.commercial" wire:model="rows.{{$idx}}.commercial">
- <label class="form-check-label" for="flexCheckChecked"> Commerciale</label>
- </div>
- <div class="form-check">
- <input class="form-check-input" type="radio" value="0" id="rows.{{$idx}}.commercial" wire:model="rows.{{$idx}}.commercial">
- <label class="form-check-label" for="flexCheck"> Non Commerciale</label>
- </div>
- </div>
- </div>
- </div>
- <div class="row gx-2 mt-5 align-items-center">
- <div class="col-md-6">
- <span class="total primary">Importo</span>
- </div>
- <div class="col-md-6">
- @if($add)
- <input type="text" class="form-control totalInput text-end @error('amount') is-invalid @enderror" id="rows.{{$idx}}.amount" wire:model="rows.{{$idx}}.amount" wire:keydown.enter="store(false)" onkeyup="onlyNumberAmount(this)" placeholder="€ 0,00">
- @endif
- @if($update)
- <input type="text" class="form-control totalInput text-end @error('amount') is-invalid @enderror" id="rows.{{$idx}}.amount" placeholder="€ 0,00" wire:model="rows.{{$idx}}.amount" onkeyup="onlyNumberAmount(this)" wire:keydown.enter="update(false)">
- @endif
- @error('rows.' . $idx . '.amount')
- <div class="invalid-feedback">{{ $message }}</div>
- @enderror
- </div>
- </div>
- <div class="row gx-2 mt-5 align-items-center">
- <div class="col-md-4">
- <span class="total primary">Periodo</span>
- </div>
- <div class="col-md-8">
- <div class="row">
- @foreach($row["when"] as $xxx => $w)
- <div class="col-md-5">
- <span class="title-form d-block w-100">Mese</span>
- <div class="input-group mb-3">
- <select class="form-select form-select-lg me-1" wire:model="rows.{{$idx}}.when.{{$xxx}}.month">
- <option value="1">Gennaio</option>
- <option value="2">Febbraio</option>
- <option value="3">Marzo</option>
- <option value="4">Aprile</option>
- <option value="5">Maggio</option>
- <option value="6">Giugno</option>
- <option value="7">Luglio</option>
- <option value="8">Agosto</option>
- <option value="9">Settembre</option>
- <option value="10">Ottobre</option>
- <option value="11">Novembre</option>
- <option value="12">Dicembre</option>
- </select>
- </div>
- </div>
- <div class="col-md-5">
- <span class="title-form d-block w-100">Anno</span>
- <div class="input-group mb-3">
- <input type="number" class="form-control" wire:model="rows.{{$idx}}.when.{{$xxx}}.year" >
- </div>
- </div>
- <div class="col-md-2"><br>
- <button type="button" class="btn--ui primary" wire:click.prevent="delPeriod({{$idx}}, {{$xxx}})" style="float:right">
- -
- </button>
- </div>
- @endforeach
- <button type="button" class="btn--ui primary" wire:click.prevent="addPeriod({{$idx}})">
- Aggiungi periodo
- </button>
- </div>
- </div>
- </div>
- <br><br>
- <button type="button" class="btn--ui primary" wire:click.prevent="delRow({{$idx}})" style="float:right">
- Rimuovi causale
- </button>
- <br><br>
- <hr size="1">
- @endforeach
- <br>
- <button type="button" class="btn--ui primary" wire:click.prevent="addRow()">
- Aggiungi causale
- </button>
- <div class="accountingExit--btn d-flex align-items-center justify-content-between">
- <button class="btn--ui lightGrey" type="submit" wire:click.prevent="cancel()">annulla</button>
- @if($add)
- <button class="btn--ui secondary" type="submit" wire:click.prevent="store()">inserisci</button>
- @endif
- @if($update)
- <button class="btn--ui secondary" type="submit" wire:click.prevent="update()">salva</button>
- @endif
- </div>
- </form>
- </div>
- @if(false)
- <div class="accountingExit_resume card--ui">
- <header>
- <div class="username d-flex align-items-start">
- <i class="ico--ui accountingResume me-2"></i>
- <div class="user--resume_name d-flex flex-column"><span class="primary">Ricevuta</span></div></div>
- </header>
- <div class="resume--body d-flex justify-content-between flex-column">
- <header>
- @if($this->supplier)
- <ul class="resume-item mb-4 p-0">
- <li><span class="evidence_name">{{$this->supplier->name}}</span></li>
- <li><span>P.IVA: {{$this->supplier->vat}}</span></li>
- </ul>
- @endif
- <ul class="resume-item date p-0">
- <li><strong>Data di Pagamento</strong></li>
- <li>{{ date("d/m/Y", strtotime($date)) }}</li>
- </ul>
- @if($this->causal)
- <ul class="resume-item date p-0">
- <li><strong>Causale</strong></li>
- <li>{{$this->causal->getTree()}}</li>
- </ul>
- @endif
- </header>
- <footer>
- <div class="total--wrapper">
- <div class="total--wrapper_amount d-flex align-items-center justify-content-between w-100 mb-3">
- <span class="amount_p"><strong>Importo</strong></span><span class="amount_data"><strong>{{$amount}}</strong></span>
- </div>
- <!--<div class="total--wrapper_tax d-flex align-items-center justify-content-between w-100 mb-2 pb-3">
- <span class="taxt_p">IVA (22%):</span><span class="tax_data">€ 22,00</span>
- </div>-->
- <div class="total--wrapper_netprice d-flex align-items-center justify-content-between w-100">
- <span class="netprice_p"><strong>Totale Netto</strong></span><span class="netprice_data"><strong>{{$amount}}</strong></span>
- </div>
- </div>
- </footer>
- </div>
- </div>
- @endif
- </section>
- @endif
- </div>
- </div>
- </div>
- @push('scripts')
- <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
- <style>
- .select2-container--default .select2-selection--single{
- background-color: #E9F0F5;
- border: 0.0625rem solid #DFE5EB;
- font-size: 0.75rem;
- }
- .select2-selection
- {
- height: 38px !important;
- }
- .select2-selection__rendered
- {
- padding-top:3px;
- }
- .select2 {
- width:100% !important;
- }
- </style>
- <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
- @endpush
- @push('scripts')
- <script>
- function matchStart(params, data) {
- params.term = params.term || '';
- if (data.text.toUpperCase().indexOf(params.term.toUpperCase()) == 0) {
- return data;
- }
- return false;
- }
- window.livewire.on('refresh', () => {
- $('.causalClass').select2({
- matcher: function(params, data) {
- return matchStart(params, data);
- }
- });
- $('.supplierClass').select2({
- matcher: function(params, data) {
- return matchStart(params, data);
- }
- });
- $('.paymentClass').select2({
- matcher: function(params, data) {
- return matchStart(params, data);
- }
- });
- });
- Livewire.on('load-select', () => {
- /*$('.causalClass').select2({
- matcher: function(params, data) {
- return matchStart(params, data);
- }
- });
- $('.causalClass').on('change', function (e) {
- var data = $('.causalClass').select2("val");
- @this.set('causal_id', data);
- });
- */
- $('.causalClass').each(function(i, obj) {
- $(obj).select2();
- $(obj).on('change', function (e) {
- var data = $(obj).select2("val");
- var name = $(obj).select2().attr("name");
- @this.set(name, data);
- });
- });
- $('.supplierClass').select2({
- matcher: function(params, data) {
- return matchStart(params, data);
- }
- });
- $('.supplierClass').on('change', function (e) {
- var data = $('.supplierClass').select2("val");
- @this.set('supplier_id', data);
- });
- $('.paymentClass').select2({
- matcher: function(params, data) {
- return matchStart(params, data);
- }
- });
- $('.paymentClass').on('change', function (e) {
- var data = $('.paymentClass').select2("val");
- @this.set('payment_method_id', data);
- });
- $('.filterSupplier').select2();
- $('.filterSupplier').on('change', function (e) {
- var data = $('.filterSupplier').select2("val");
- @this.set('filterSupplier', data);
- });
- $('.filterPaymentMethod').select2();
- $('.filterPaymentMethod').on('change', function (e) {
- var data = $('.filterPaymentMethod').select2("val");
- @this.set('filterPaymentMethod', data);
- });
- $('.filterCausals').select2();
- $('.filterCausals').on('change', function (e) {
- var data = $('.filterCausals').select2("val");
- @this.set('filterCausals', data);
- });
- });
- Livewire.on('hide-search', () => {
- pcsh2();
- });
- $('.filterSupplier').select2();
- $('.filterSupplier').on('change', function (e) {
- var data = $('.filterSupplier').select2("val");
- @this.set('filterSupplier', data);
- });
- $('.filterPaymentMethod').select2();
- $('.filterPaymentMethod').on('change', function (e) {
- var data = $('.filterPaymentMethod').select2("val");
- @this.set('filterPaymentMethod', data);
- });
- $('.filterCausals').select2();
- $('.filterCausals').on('change', function (e) {
- var data = $('.filterCausals').select2("val");
- @this.set('filterCausals', data);
- });
- function onlyNumberAmount(input) {
- let v = input.value.replace(/\D+/g, '');
- if (v.length > 14) v = v.slice(0, 14);
- input.value = "€ " + v.replace(/(\d)(\d\d)$/, "$1,$2").replace(/(^\d{1,3}|\d{3})(?=(?:\d{3})+(?:,|$))/g, '$1.');
- }
- </script>
- @endpush
|