Update service update to use components, enhanced form handling and submission. Added pppoe to broadband and changed validation to allow for longer service number.
This commit is contained in:
@@ -43,7 +43,7 @@
|
||||
<div class="card-body">
|
||||
<div class="tab-content" id="accounts-tab-content">
|
||||
@foreach($o->accounts as $ao)
|
||||
<div class="tab-pane fade @if(! $loop->index)show active @endif" id="account_{{ $ao->id }}" aria-labelledby="account_{{ $ao->id }}">
|
||||
<div @class(['tab-pane','fade','show active'=>! $loop->index]) id="account_{{ $ao->id }}" aria-labelledby="account_{{ $ao->id }}">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card-header bg-white">
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
<div class="card-body pl-0 pr-0">
|
||||
<div class="tab-content">
|
||||
<div @class(['tab-pane','active'=>! session()->has('supplier_update')]) id="tab-services">
|
||||
<div @class(['tab-pane','fade','show active'=>! session()->has('supplier_update')]) id="tab-services">
|
||||
<div class="row">
|
||||
<div class="col-12 col-xl-7">
|
||||
@include('theme.backend.adminlte.account.widget.service_active',['o'=>$ao])
|
||||
@@ -73,7 +73,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tab-futureinvoice">
|
||||
<div class="tab-pane fade" id="tab-futureinvoice">
|
||||
<div class="row">
|
||||
<div class="col-12 col-xl-9">
|
||||
@include('theme.backend.adminlte.invoice.widget.next',['future'=>TRUE])
|
||||
@@ -82,7 +82,7 @@
|
||||
</div>
|
||||
|
||||
@canany('reseller','wholesaler')
|
||||
<div @class(['tab-pane','active'=>session()->pull('supplier_update')]) id="tab-supplier">
|
||||
<div @class(['tab-pane','fade','show active'=>session()->pull('supplier_update')]) id="tab-supplier">
|
||||
@include('theme.backend.adminlte.account.widget.supplier',['o'=>$ao])
|
||||
</div>
|
||||
@endcanany
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
@if($o==$user)
|
||||
@canany('reseller','wholesaler')
|
||||
<div class="tab-pane" id="tab-reseller">
|
||||
<div class="tab-pane fade" id="tab-reseller">
|
||||
@include('theme.backend.adminlte.widget.admin.reseller')
|
||||
</div>
|
||||
@endcanany
|
||||
|
@@ -1,3 +1,5 @@
|
||||
@use(App\Models\Product)
|
||||
|
||||
@extends('adminlte::layouts.app')
|
||||
|
||||
@section('htmlheader_title')
|
||||
@@ -26,25 +28,18 @@
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark d-flex p-0">
|
||||
<ul class="nav nav-pills w-100 p-2">
|
||||
{{--
|
||||
<li class="nav-item"><a class="nav-link active" href="#product" data-toggle="tab">Product</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#traffic" data-toggle="tab">Traffic</a></li>
|
||||
--}}
|
||||
@if (! $o->suspend_billing AND ! $o->external_billing)
|
||||
<li class="nav-item"><a class="nav-link {{ (! session()->has('service_update')) ? 'active' : '' }}" href="#pending_items" data-toggle="tab">Pending Items</a></li>
|
||||
@endif
|
||||
@if ($o->product->hasUsage())
|
||||
<li class="nav-item"><a class="nav-link {{ (! $o->isBilled() && (! session()->has('service_update'))) ? 'active' : '' }}" href="#traffic" data-toggle="tab">Traffic</a></li>
|
||||
@if ($x=! ($o->suspend_billing || $o->external_billing))
|
||||
<li class="nav-item"><a @class(['nav-link','active'=>! session()->has('service_update')]) href="#pending_items" data-toggle="tab">Pending Items</a></li>
|
||||
@endif
|
||||
|
||||
@if ($o->product->hasUsage())
|
||||
<li class="nav-item"><a @class(['nav-link','active'=>! ($x || session()->has('service_update'))]) href="#traffic" data-toggle="tab">Traffic</a></li>
|
||||
@endif
|
||||
|
||||
{{--
|
||||
<li class="nav-item"><a class="nav-link" href="#invoices" data-toggle="tab">Invoices</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#emails" data-toggle="tab">Emails</a></li>
|
||||
--}}
|
||||
@can('wholesaler')
|
||||
<li class="nav-item ml-auto"><a class="nav-link" href="#billing" data-toggle="tab">Billing History</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#internal" data-toggle="tab">Internal</a></li>
|
||||
<li class="nav-item"><a class="nav-link {{ session()->has('service_update') ? 'active' : '' }}" href="#update" data-toggle="tab">Update</a></li>
|
||||
<li class="nav-item"><a @class(['nav-link','active'=>session()->has('service_update')]) href="#update" data-toggle="tab">Update</a></li>
|
||||
@endcan
|
||||
</ul>
|
||||
|
||||
@@ -54,58 +49,51 @@
|
||||
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#">ACTION <span class="caret"></span></a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
@foreach($o->actions() as $stage => $title)
|
||||
<a class="dropdown-item" tabindex="-1" href="{{ url('u/service',['id'=>$o->id,'action'=>'change','stage'=>$stage]) }}">{{ $title }}</a>
|
||||
@endforeach
|
||||
{{-- <div class="dropdown-divider"></div> --}}
|
||||
@foreach($o->actions() as $stage => $title)
|
||||
<a class="dropdown-item" tabindex="-1" href="{{ url('u/service',['id'=>$o->id,'action'=>'change','stage'=>$stage]) }}">{{ $title }}</a>
|
||||
@endforeach
|
||||
{{-- <div class="dropdown-divider"></div> --}}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@endcan
|
||||
</div><!-- /.card-header -->
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade" id="product" role="tabpanel">
|
||||
Product.
|
||||
</div>
|
||||
@if (! $o->suspend_billing AND ! $o->external_billing)
|
||||
<div class="tab-pane fade {{ (! session()->has('service_update')) ? 'active show' : '' }}" id="pending_items" role="tabpanel">
|
||||
@if ($x=! ($o->suspend_billing || $o->external_billing))
|
||||
<div @class(['tab-pane','fade','show active'=>! session()->has('service_update')]) id="pending_items">
|
||||
@include('theme.backend.adminlte.service.widget.invoice')
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($o->product->hasUsage())
|
||||
<div class="tab-pane fade {{ (! $o->isBilled() && (! session()->has('service_update'))) ? 'active show' : '' }}" id="traffic" role="tabpanel">
|
||||
<div @class(['tab-pane','fade','show active'=>! ($x || session()->has('service_update'))]) id="traffic">
|
||||
@if ($o->type->usage(30)->count())
|
||||
@include('theme.backend.adminlte.service.widget.'.$o->product->category.'.usagegraph',['o'=>$o->type])
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
<div class="tab-pane fade" id="invoices" role="tabpanel">
|
||||
Invoices.
|
||||
</div>
|
||||
<div class="tab-pane fade" id="emails" role="tabpanel">
|
||||
Email.
|
||||
</div>
|
||||
|
||||
@can('wholesaler')
|
||||
<div class="tab-pane fade" id="billing" role="tabpanel">
|
||||
<div class="tab-pane fade" id="billing">
|
||||
@include('theme.backend.adminlte.service.widget.billinghistory',['o'=>$o])
|
||||
</div>
|
||||
<div class="tab-pane fade" id="internal" role="tabpanel">
|
||||
|
||||
<div class="tab-pane fade" id="internal">
|
||||
@if(($x=$o->changes()->where('service__change.active',TRUE)->where('complete',FALSE)->get()->pop()))
|
||||
@include('theme.backend.adminlte.service.widget.internal',['o'=>$o,'p'=>$x])
|
||||
@else
|
||||
@include('theme.backend.adminlte.service.widget.internal',['o'=>$o,'p'=>new \App\Models\Product()])
|
||||
@include('theme.backend.adminlte.service.widget.internal',['o'=>$o,'p'=>new Product()])
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade {{ session()->pull('service_update') ? 'active show' : '' }}" id="update" role="tabpanel">
|
||||
<div @class(['tab-pane','fade','show active'=>session()->has('service_update')]) id="update">
|
||||
@include('theme.backend.adminlte.service.widget.update')
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.card -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -1,49 +1,28 @@
|
||||
<!-- $o=Service\Broadband::class -->
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-9 col-md-6 col-xl-5">
|
||||
@include('adminlte::widget.form_text',[
|
||||
'label'=>'Service Number',
|
||||
'icon'=>'fas fa-phone',
|
||||
'id'=>'service_number',
|
||||
'old'=>'broadband.service_number',
|
||||
'name'=>'broadband[service_number]',
|
||||
'value'=>$o->service_number ?? '',
|
||||
])
|
||||
<x-leenooks::form.text id="service_number" name="broadband[service_number]" icon="fa-phone" label="Service Number" old="broadband.service_number" :value="$o->service_number"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-9 col-md-6 col-xl-7">
|
||||
@include('adminlte::widget.form_text',[
|
||||
'label'=>'Service Address',
|
||||
'icon'=>'fas fa-map',
|
||||
'id'=>'service_address',
|
||||
'old'=>'broadband.service_address',
|
||||
'name'=>'broadband[service_address]',
|
||||
'value'=>$o->service_address ?? '',
|
||||
])
|
||||
<x-leenooks::form.text id="service_address" name="broadband[service_address]" icon="fa-map" label="Service Address" old="broadband.service_address" :value="$o->service_address"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
Connection Type
|
||||
<x-leenooks::form.toggle id="pppoe" name="broadband[pppoe]" label="PPPoE" old="broadband.pppoe" :value="$o->pppoe"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-9 col-md-12 col-xl-7">
|
||||
@include('adminlte::widget.form_text',[
|
||||
'label'=>'Service Username',
|
||||
'icon'=>'fas fa-user',
|
||||
'id'=>'service_username',
|
||||
'old'=>'broadband.service_username',
|
||||
'name'=>'broadband[service_username]',
|
||||
'value'=>$o->service_username ?? '',
|
||||
])
|
||||
<x-leenooks::form.text id="service_username" name="broadband[service_username]" icon="fa-user" label="Service Username" old="broadband.service_username" :value="$o->service_username"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-9 col-md-5 col-xl-5">
|
||||
@include('adminlte::widget.form_text',[
|
||||
'label'=>'Service Password',
|
||||
'icon'=>'fas fa-lock',
|
||||
'id'=>'service_password',
|
||||
'old'=>'broadband.service_password',
|
||||
'name'=>'broadband[service_password]',
|
||||
'value'=>$o->service_password ?? '',
|
||||
])
|
||||
<x-leenooks::form.text id="service_password" name="broadband[service_password]" icon="fa-lock" label="Service Password" old="broadband.service_password" :value="$o->service_password"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -52,25 +31,11 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-9 col-md-6 col-xl-5">
|
||||
@include('adminlte::widget.form_date',[
|
||||
'label'=>'Connect Date',
|
||||
'icon'=>'fas fa-calendar',
|
||||
'id'=>'connect_at',
|
||||
'old'=>'broadband.connect_at',
|
||||
'name'=>'broadband[connect_at]',
|
||||
'value'=>$o->connect_at ? $o->connect_at->format('Y-m-d') : '',
|
||||
])
|
||||
<x-leenooks::form.date id="connect_at" name="broadband[connect_at]" icon="fa-calendar" label="Connect Date" old="broadband.connect_at" :value="$o->connect_at?->format('Y-m-d')"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-9 col-md-6 col-xl-5">
|
||||
@include('adminlte::widget.form_date',[
|
||||
'label'=>'Contract End',
|
||||
'icon'=>'fas fa-calendar',
|
||||
'id'=>'expire_at',
|
||||
'old'=>'broadband.expire_at',
|
||||
'name'=>'broadband[expire_at]',
|
||||
'value'=>$o->expire_at ? $o->expire_at->format('Y-m-d') : ($o->connect_at ? $o->connect_at->addMonths($o->contract_term)->format('Y-m-d') : ''),
|
||||
])
|
||||
<x-leenooks::form.date id="expire_at" name="broadband[expire_at]" icon="fa-calendar" label="Contract End" old="broadband.expire_at" :value="$o->expire_at?->format('Y-m-d') ?: ($o->connect_at?->addMonths($o->contract_term)->format('Y-m-d'))"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -78,26 +43,39 @@
|
||||
<p class="h6">IP Address</p>
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-5">
|
||||
@include('adminlte::widget.form_text',[
|
||||
'label'=>'IPv4 Address',
|
||||
'icon'=>'fas fa-map-marker',
|
||||
'id'=>'ipaddress',
|
||||
'old'=>'broadband.ipaddress',
|
||||
'name'=>'broadband[ipaddress]',
|
||||
'value'=>$o->ipaddress ?? '',
|
||||
])
|
||||
<x-leenooks::form.text id="ipaddress" name="broadband[ipaddress]" icon="fa-map-marker" label="IPv4 Address" old="broadband.ipaddress" :value="$o->ipaddress"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-lg-7">
|
||||
<div class="form-group">
|
||||
@include('adminlte::widget.form_text',[
|
||||
'label'=>'IPv6 Address',
|
||||
'icon'=>'fas fa-map-marker-alt',
|
||||
'id'=>'ip6address',
|
||||
'old'=>'broadband.ip6address',
|
||||
'name'=>'broadband[ip6address]',
|
||||
'value'=>$o->ip6address ?? '',
|
||||
])
|
||||
<x-leenooks::form.text id="ip6address" name="broadband[ip6address]" icon="fa-map-marker-alt" label="IPv6 Address" :value="$o->ip6address"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('page-scripts')
|
||||
<script type="text/javascript">
|
||||
function toggle_pppoe(item) {
|
||||
if (item.is(':checked')) {
|
||||
$('#service_username').closest('.form-group').parent().removeClass('d-none');
|
||||
$('#service_password').closest('.form-group').parent().removeClass('d-none');
|
||||
|
||||
item.closest('.form-group').removeClass('mb-0');
|
||||
|
||||
} else {
|
||||
$('#service_username').closest('.form-group').parent().addClass('d-none');
|
||||
$('#service_password').closest('.form-group').parent().addClass('d-none');
|
||||
|
||||
item.closest('.form-group').addClass('mb-0');
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
toggle_pppoe($('#pppoe'));
|
||||
|
||||
$('#pppoe').on('click',function(item) {
|
||||
toggle_pppoe($(this));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@append
|
@@ -1,56 +1,30 @@
|
||||
<!-- $o=Service::class -->
|
||||
@use(App\Models\Invoice)
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h4>Update Service details</h4>
|
||||
|
||||
<form class="g-0 needs-validation" method="POST" action="{{ url('a/service/update',[$o->id]) }}">
|
||||
@include('adminlte::widget.success')
|
||||
<h4>Update Service details <x-leenooks::button.success class="float-right"/></h4>
|
||||
<hr>
|
||||
|
||||
<form method="POST" action="{{ url('a/service/update',[$o->id]) }}">
|
||||
@csrf
|
||||
|
||||
<div class="row">
|
||||
<!-- External Billing -->
|
||||
<div class="col-2">
|
||||
@include('adminlte::widget.form_toggle',[
|
||||
'label'=>'External Billing',
|
||||
'id'=>'external_billing',
|
||||
'old'=>'external_billing',
|
||||
'name'=>'external_billing',
|
||||
'value'=>$o->external_billing ?? '',
|
||||
])
|
||||
|
||||
<!-- Suspend Billing -->
|
||||
@include('adminlte::widget.form_toggle',[
|
||||
'label'=>'Suspend Billing',
|
||||
'id'=>'suspend_billing',
|
||||
'old'=>'suspend_billing',
|
||||
'name'=>'suspend_billing',
|
||||
'value'=>$o->suspend_billing ?? '',
|
||||
])
|
||||
<x-leenooks::form.toggle id="external_billing" name="external_billing" label="External Billing" :value="$o->external_billing"/>
|
||||
<x-leenooks::form.toggle id="suspend_billing" name="suspend_billing" label="Suspend Billing" :value="$o->suspend_billing"/>
|
||||
</div>
|
||||
|
||||
<div class="col-1"></div>
|
||||
|
||||
<div class="col-12 col-sm-9 col-md-6 col-xl-5">
|
||||
@include('adminlte::widget.form_date',[
|
||||
'label'=>'Billing Start Date',
|
||||
'icon'=>'fas fa-calendar',
|
||||
'id'=>'invoice_next_at',
|
||||
'old'=>'invoice_next_at',
|
||||
'name'=>'invoice_next_at',
|
||||
'value'=>$o->invoice_next_at ? $o->invoice_next_at->format('Y-m-d') : ($o->connect_at ? $o->connect_at->format('Y-m-d') : ''),
|
||||
])
|
||||
<x-leenooks::form.date id="invoice_next_at" name="invoice_next_at" icon="fa-calendar" label="Billing Start Date" :value="($o->invoice_next_at ?: $o->connect_at)?->format('Y-m-d')"/>
|
||||
</div>
|
||||
|
||||
<!-- Price -->
|
||||
<div class="col-12 col-sm-9 col-md-12 col-xl-3">
|
||||
@include('adminlte::widget.form_text',[
|
||||
'label'=>'Price',
|
||||
'icon'=>'fas fa-dollar-sign',
|
||||
'id'=>'price',
|
||||
'old'=>'price',
|
||||
'name'=>'price',
|
||||
'value'=>$o->price ?? '',
|
||||
])
|
||||
<x-leenooks::form.text name="price" icon="fa-dollar-sign" label="Price" :value="$o->price"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -58,15 +32,7 @@
|
||||
<div class="col-3"></div>
|
||||
|
||||
<div class="col-12 col-sm-9 col-md-6 col-xl-5">
|
||||
@include('adminlte::widget.form_select',[
|
||||
'label'=>'Renew Term',
|
||||
'icon'=>'fas fa-redo',
|
||||
'id'=>'recur_schedule',
|
||||
'old'=>'recur_schedule',
|
||||
'name'=>'recur_schedule',
|
||||
'options'=>collect(\App\Models\Invoice::billing_periods)->transform(function($item,$key) { return ['id'=>$key,'value'=>$item['name']]; }),
|
||||
'value'=>$o->recur_schedule ?? '',
|
||||
])
|
||||
<x-leenooks::form.select id="recur_schedule" name="recur_schedule" icon="fa-redo" label="Renew Term" :value="$o->recur_schedule" :options="collect(Invoice::billing_periods)->map(fn($item,$key)=>['id'=>$key,'value'=>$item['name']])"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -75,12 +41,64 @@
|
||||
@includeIf('theme.backend.adminlte.service.widget.'.$o->product->category.'.update',['o'=>$o->type])
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="col">
|
||||
@can('wholesaler')
|
||||
<button type="submit" name="submit" class="btn btn-success mr-0 float-right">@if ($site->exists)Save @else Add @endif</button>
|
||||
<x-leenooks::button.reset/>
|
||||
<x-leenooks::button.submit class="float-right">Save</x-leenooks::button.submit>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('page-scripts')
|
||||
<script type="text/javascript">
|
||||
function toggle_billing_external(item) {
|
||||
if (item.is(':checked')) {
|
||||
$('#suspend_billing').closest('.form-group').addClass('d-none');
|
||||
$('#invoice_next_at').closest('.form-group').parent().addClass('d-none');
|
||||
$('#price').closest('.form-group').parent().addClass('d-none');
|
||||
$('#recur_schedule').closest('.form-group').parent().addClass('d-none');
|
||||
|
||||
item.closest('.form-group').addClass('mb-0');
|
||||
|
||||
} else {
|
||||
$('#suspend_billing').closest('.form-group').removeClass('d-none');
|
||||
$('#invoice_next_at').closest('.form-group').parent().removeClass('d-none');
|
||||
$('#price').closest('.form-group').parent().removeClass('d-none');
|
||||
$('#recur_schedule').closest('.form-group').parent().removeClass('d-none');
|
||||
|
||||
item.closest('.form-group').removeClass('mb-0');
|
||||
}
|
||||
}
|
||||
|
||||
function toggle_billing_suspend(item) {
|
||||
if (item.is(':checked')) {
|
||||
$('#invoice_next_at').prop('readonly',true);
|
||||
$('#price').prop('readonly',true);
|
||||
|
||||
recur_schedule_readonly(true);
|
||||
|
||||
} else {
|
||||
$('#invoice_next_at').prop('readonly',false);
|
||||
$('#price').prop('readonly',false);
|
||||
|
||||
recur_schedule_readonly(false);
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
toggle_billing_external($('#external_billing'));
|
||||
toggle_billing_suspend($('#suspend_billing'));
|
||||
|
||||
$('#external_billing').on('click',function(item) {
|
||||
toggle_billing_external($(this));
|
||||
});
|
||||
|
||||
$('#suspend_billing').on('click',function(item) {
|
||||
toggle_billing_suspend($(this));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@append
|
Reference in New Issue
Block a user