Merge Invoice and Bill into Document
This commit is contained in:
@@ -1,317 +1,89 @@
|
||||
@extends('layouts.portal')
|
||||
|
||||
@section('title', trans_choice('general.invoices', 1) . ': ' . $invoice->invoice_number)
|
||||
@section('title', setting('invoice.title', trans_choice('general.invoices', 1)) . ': ' . $invoice->document_number)
|
||||
|
||||
@section('new_button')
|
||||
@stack('button_print_start')
|
||||
<a href="{{ route('portal.invoices.print', $invoice->id) }}" target="_blank" class="btn btn-success btn-sm">
|
||||
{{ trans('general.print') }}
|
||||
</a>
|
||||
@stack('button_print_end')
|
||||
|
||||
@stack('button_pdf_start')
|
||||
<a href="{{ route('portal.invoices.pdf', $invoice->id) }}" class="btn btn-white btn-sm">
|
||||
{{ trans('general.download') }}
|
||||
</a>
|
||||
@stack('button_pdf_end')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@stack('invoice_start')
|
||||
<div class="card">
|
||||
@stack('invoice_status_start')
|
||||
<div class="card-header status-{{ $invoice->status_label }}">
|
||||
<h3 class="text-white mb-0 float-right">{{ trans('invoices.statuses.' . $invoice->status) }}</h3>
|
||||
</div>
|
||||
@stack('invoice_status_end')
|
||||
<x-documents.show.header
|
||||
type="invoice"
|
||||
:document="$invoice"
|
||||
hide-header-contact
|
||||
class-header-status="col-md-8"
|
||||
/>
|
||||
|
||||
<div class="card-body">
|
||||
@stack('invoice_header_start')
|
||||
<div class="row mx--4">
|
||||
<div class="col-md-7 border-bottom-1">
|
||||
<div class="table-responsive mt-2">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
<img src="{{ $logo }}" alt="{{ setting('company.name') }}"/>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5 border-bottom-1">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
{{ setting('company.name') }}
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
{!! nl2br(setting('company.address')) !!}
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
@if (setting('company.tax_number'))
|
||||
{{ trans('general.tax_number') }}: {{ setting('company.tax_number') }}<br>
|
||||
@endif
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
@if (setting('company.phone'))
|
||||
{{ setting('company.phone') }}
|
||||
@endif
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
{{ setting('company.email') }}
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('invoice_header_end')
|
||||
@if (!empty($payment_methods) && !in_array($invoice->status, ['paid', 'cancelled']))
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{!! Form::open([
|
||||
'id' => 'invoice-payment',
|
||||
'role' => 'form',
|
||||
'autocomplete' => "off",
|
||||
'novalidate' => 'true',
|
||||
'class' => 'mb-0'
|
||||
]) !!}
|
||||
{{ Form::selectGroup('payment_method', '', 'money el-icon-money', $payment_methods, array_key_first($payment_methods) , ['change' => 'onChangePaymentMethod', 'id' => 'payment-method', 'class' => 'form-control d-none', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.payment_methods', 1)])], 'col-sm-12 d-none') }}
|
||||
{!! Form::hidden('document_id', $invoice->id, ['v-model' => 'form.document_id']) !!}
|
||||
{!! Form::close() !!}
|
||||
|
||||
@stack('invoice_information_start')
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
{{ trans('invoices.bill_to') }}
|
||||
@stack('name_input_start')
|
||||
<strong class="d-block">{{ $invoice->contact_name }}</strong>
|
||||
@stack('name_input_end')
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
@stack('address_input_start')
|
||||
{!! nl2br($invoice->contact_address) !!}
|
||||
@stack('address_input_end')
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
@stack('tax_number_input_start')
|
||||
@if ($invoice->contact_tax_number)
|
||||
{{ trans('general.tax_number') }}: {{ $invoice->contact_tax_number }}<br>
|
||||
@endif
|
||||
@stack('tax_number_input_end')
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
@stack('phone_input_start')
|
||||
@if ($invoice->contact_phone)
|
||||
{{ $invoice->contact_phone }}
|
||||
@endif
|
||||
@stack('phone_input_end')
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
@stack('email_start')
|
||||
{{ $invoice->contact_email }}
|
||||
@stack('email_input_end')
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
@stack('invoice_number_input_start')
|
||||
<tr>
|
||||
<th>{{ trans('invoices.invoice_number') }}:</th>
|
||||
<td class="text-right">{{ $invoice->invoice_number }}</td>
|
||||
</tr>
|
||||
@stack('invoice_number_input_end')
|
||||
<div class="nav-wrapper">
|
||||
<ul class="nav nav-pills nav-fill flex-column flex-md-row" id="tabs-payment-method" role="tablist">
|
||||
@php $is_active = true; @endphp
|
||||
|
||||
@stack('order_number_input_start')
|
||||
@if ($invoice->order_number)
|
||||
<tr>
|
||||
<th>{{ trans('invoices.order_number') }}:</th>
|
||||
<td class="text-right">{{ $invoice->order_number }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
@stack('order_number_input_end')
|
||||
@foreach ($payment_methods as $key => $name)
|
||||
@stack('invoice_{{ $key }}_tab_start')
|
||||
<li class="nav-item">
|
||||
<a @click="onChangePaymentMethod('{{ $key }}')" class="nav-link mb-sm-3 mb-md-0{{ ($is_active) ? ' active': '' }}" id="tabs-payment-method-{{ $key }}-tab" data-toggle="tab" href="#tabs-payment-method-{{ $key }}" role="tab" aria-controls="tabs-payment-method-{{ $key }}" aria-selected="true">
|
||||
{{ $name }}
|
||||
</a>
|
||||
</li>
|
||||
@stack('invoice_{{ $key }}_tab_end')
|
||||
|
||||
@stack('invoiced_at_input_start')
|
||||
<tr>
|
||||
<th>{{ trans('invoices.invoice_date') }}:</th>
|
||||
<td class="text-right">@date($invoice->invoiced_at)</td>
|
||||
</tr>
|
||||
@stack('invoiced_at_input_end')
|
||||
|
||||
@stack('due_at_input_start')
|
||||
<tr>
|
||||
<th>{{ trans('invoices.payment_due') }}:</th>
|
||||
<td class="text-right">@date($invoice->invoiced_at)</td>
|
||||
</tr>
|
||||
@stack('due_at_input_end')
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('invoice_information_end')
|
||||
|
||||
@stack('invoice_item_start')
|
||||
<div class="row show-table">
|
||||
<div class="col-md-12">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<tbody>
|
||||
<tr class="row">
|
||||
@stack('name_th_start')
|
||||
<th class="col-xs-4 col-sm-5 pl-5">{{ trans_choice($text_override['items'], 2) }}</th>
|
||||
@stack('name_th_end')
|
||||
|
||||
@stack('quantity_th_start')
|
||||
<th class="col-xs-4 col-sm-1 text-center">{{ trans($text_override['quantity']) }}</th>
|
||||
@stack('quantity_th_end')
|
||||
|
||||
@stack('price_th_start')
|
||||
<th class="col-sm-3 text-right d-none d-sm-block">{{ trans($text_override['price']) }}</th>
|
||||
@stack('price_th_end')
|
||||
|
||||
@stack('total_th_start')
|
||||
<th class="col-xs-4 col-sm-3 text-right pr-5">{{ trans('invoices.total') }}</th>
|
||||
@stack('total_th_end')
|
||||
</tr>
|
||||
@foreach($invoice->items as $invoice_item)
|
||||
<tr class="row">
|
||||
@stack('name_td_start')
|
||||
<td class="col-xs-4 col-sm-5 pl-5">
|
||||
{{ $invoice_item->name }}
|
||||
@if (!empty($invoice_item->item->description))
|
||||
<br><small class="text-pre-nowrap">{!! \Illuminate\Support\Str::limit($invoice_item->item->description, 500) !!}<small>
|
||||
@endif
|
||||
</td>
|
||||
@stack('name_td_end')
|
||||
|
||||
@stack('quantity_td_start')
|
||||
<td class="col-xs-4 col-sm-1 text-center">{{ $invoice_item->quantity }}</td>
|
||||
@stack('quantity_td_end')
|
||||
|
||||
@stack('price_td_start')
|
||||
<td class="col-sm-3 text-right d-none d-sm-block">@money($invoice_item->price, $invoice->currency_code, true)</td>
|
||||
@stack('price_td_end')
|
||||
|
||||
@stack('total_td_start')
|
||||
<td class="col-xs-4 col-sm-3 text-right pr-5">@money($invoice_item->total, $invoice->currency_code, true)</td>
|
||||
@stack('total_td_end')
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('invoice_item_end')
|
||||
|
||||
@stack('invoice_total_start')
|
||||
<div class="row mt-5">
|
||||
<div class="col-md-7">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
@stack('notes_input_start')
|
||||
<tr>
|
||||
<th>
|
||||
@if ($invoice->notes)
|
||||
<p class="form-control-label">{{ trans_choice('general.notes', 2) }}</p>
|
||||
<p class="text-muted long-texts">{!! nl2br($invoice->notes) !!}</p>
|
||||
@endif
|
||||
</th>
|
||||
</tr>
|
||||
@stack('notes_input_end')
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-5">
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<tbody>
|
||||
@foreach ($invoice->totals_sorted as $total)
|
||||
@if ($total->code != 'total')
|
||||
@stack($total->code . '_total_tr_start')
|
||||
<tr>
|
||||
<th>{{ trans($total->title) }}:</th>
|
||||
<td class="text-right">@money($total->amount, $invoice->currency_code, true)</td>
|
||||
</tr>
|
||||
@stack($total->code . '_total_tr_end')
|
||||
@else
|
||||
@if ($invoice->paid)
|
||||
@stack('paid_total_tr_start')
|
||||
<tr>
|
||||
<th class="text-success">
|
||||
{{ trans('invoices.paid') }}:
|
||||
</th>
|
||||
<td class="text-right">- @money($invoice->paid, $invoice->currency_code, true)</td>
|
||||
</tr>
|
||||
@stack('paid_total_tr_end')
|
||||
@endif
|
||||
@stack('grand_total_tr_start')
|
||||
<tr>
|
||||
<th>{{ trans($total->name) }}:</th>
|
||||
<td class="text-right">@money($total->amount - $invoice->paid, $invoice->currency_code, true)</td>
|
||||
</tr>
|
||||
@stack('grand_total_tr_end')
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('invoice_total_end')
|
||||
@php $is_active = false; @endphp
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@stack('card_footer_start')
|
||||
<div class="card-footer">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
@if (!empty($payment_methods) && !in_array($invoice->status, ['paid', 'cancelled']))
|
||||
{!! Form::open([
|
||||
'id' => 'invoice-payment',
|
||||
'role' => 'form',
|
||||
'autocomplete' => "off",
|
||||
'novalidate' => 'true',
|
||||
'class' => 'mb-0'
|
||||
]) !!}
|
||||
{{ Form::selectGroup('payment_method', '', 'money el-icon-money', $payment_methods, '', ['change' => 'onChangePaymentMethod', 'id' => 'payment-method', 'class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.payment_methods', 1)])], 'col-sm-12') }}
|
||||
{!! Form::hidden('invoice_id', $invoice->id, ['v-model' => 'form.invoice_id']) !!}
|
||||
{!! Form::close() !!}
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 text-right">
|
||||
@stack('button_print_start')
|
||||
<a href="{{ route('portal.invoices.print', $invoice->id) }}" target="_blank" class="btn btn-success">
|
||||
{{ trans('general.print') }}
|
||||
</a>
|
||||
@stack('button_print_end')
|
||||
<div class="card shadow">
|
||||
<div class="card-body">
|
||||
<div class="tab-content" id="myTabContent">
|
||||
@php $is_active = true; @endphp
|
||||
|
||||
@foreach ($payment_methods as $key => $name)
|
||||
@stack('invoice_{{ $key }}_content_start')
|
||||
<div class="tab-pane fade{{ ($is_active) ? ' show active': '' }}" id="tabs-payment-method-{{ $key }}" role="tabpanel" aria-labelledby="tabs-payment-method-{{ $key }}-tab">
|
||||
<component v-bind:is="method_show_html" @interface="onRedirectConfirm"></component>
|
||||
</div>
|
||||
@stack('invoice_{{ $key }}_content_end')
|
||||
|
||||
@stack('button_pdf_start')
|
||||
<a href="{{ route('portal.invoices.pdf', $invoice->id) }}" class="btn btn-white">
|
||||
{{ trans('general.download') }}
|
||||
</a>
|
||||
@stack('button_pdf_end')
|
||||
</div>
|
||||
|
||||
<div id="confirm" class="col-sm-12">
|
||||
<component v-bind:is="method_show_html" @interface="onRedirectConfirm"></component>
|
||||
</div>
|
||||
@php $is_active = false; @endphp
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@stack('card_footer_end')
|
||||
</div>
|
||||
</div>
|
||||
@stack('invoice_end')
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<x-documents.show.document
|
||||
type="invoice"
|
||||
:document="$invoice"
|
||||
/>
|
||||
@endsection
|
||||
|
||||
@push('scripts_start')
|
||||
<link rel="stylesheet" href="{{ asset('public/css/print.css?v=' . version('short')) }}" type="text/css">
|
||||
<script src="{{ asset('public/js/portal/invoices.js?v=' . version('short')) }}"></script>
|
||||
@endpush
|
||||
|
||||
Reference in New Issue
Block a user