ultimatepos/Modules/Repair/Resources/views/repair/index.blade.php

442 lines
22 KiB
PHP

@extends('layouts.app')
@section('title', __('repair::lang.repair'))
@section('content')
@include('repair::layouts.nav')
<!-- Content Header (Page header) -->
<section class="content-header no-print">
<h1>@lang('repair::lang.invoices')
</h1>
</section>
<!-- Main content -->
<section class="content no-print">
@component('components.filters', ['title' => __('report.filters'), 'closed' => false])
@include('sell.partials.sell_list_filters', ['only' => ['sell_list_filter_location_id', 'sell_list_filter_customer_id', 'sell_list_filter_payment_status', 'sell_list_filter_date_range', 'created_by']])
<div class="col-md-3">
<div class="form-group">
{!! Form::label('repair_status_id', __('sale.status') . ':') !!}
{!! Form::select('repair_status_id', $repair_status_dropdown['statuses'], null, ['class' => 'form-control select2', 'style' => 'width:100%', 'placeholder' => __('lang_v1.all')]); !!}
</div>
</div>
@if(in_array('service_staff' ,$enabled_modules) && !$is_service_staff)
<div class="col-md-3">
<div class="form-group">
{!! Form::label('service_staff_id', __('repair::lang.technician') . ':') !!}
{!! Form::select('service_staff_id', $service_staffs, null, ['class' => 'form-control select2', 'style' => 'width:100%', 'placeholder' => __('lang_v1.all')]); !!}
</div>
</div>
@endif
@endcomponent
<div class="row">
<div class="col-md-12">
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active">
<a href="#pending_repair_tab" data-toggle="tab" aria-expanded="true">
<i class="fas fa-exclamation-circle text-orange"></i>
@lang('repair::lang.pending')
@show_tooltip(__('repair::lang.common_pending_status_tooltip'))
</a>
</li>
<li>
<a href="#completed_repair_tab" data-toggle="tab" aria-expanded="true">
<i class="fa fas fa-check-circle text-success"></i>
@lang('repair::lang.completed')
@show_tooltip(__('repair::lang.common_completed_status_tooltip'))
</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="pending_repair_tab">
<div class="row">
<div class="col-md-12 mb-12">
<a target="_blank" class="btn btn-sm btn-primary pull-right" href="{{action([\App\Http\Controllers\SellPosController::class, 'create']). '?sub_type=repair'}}">
<i class="fa fa-plus"></i> @lang('messages.add')
</a>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped ajax_view" id="pending_repair_table">
<thead>
<tr>
<th>@lang('messages.action')</th>
<th>@lang('receipt.date')</th>
<th>
@lang('repair::lang.delivery_date')
@show_tooltip(__('repair::lang.repair_due_date_tooltip'))
</th>
<th>@lang('repair::lang.job_sheet_no')</th>
<th>@lang('sale.invoice_no')</th>
@if(in_array('service_staff' ,$enabled_modules))
<th>@lang('repair::lang.technician')</th>
@endif
<th>@lang('lang_v1.added_by')</th>
<th>@lang('sale.customer_name')</th>
<th>@lang('product.brand')</th>
<th>@lang('repair::lang.device_model')</th>
<th>@lang('repair::lang.serial_no')</th>
<th>@lang('sale.status')</th>
<th>@lang('sale.location')</th>
<th>@lang('repair::lang.repair_warranty')</th>
<th>@lang('sale.payment_status')</th>
<th>@lang('sale.total_amount')</th>
<th>@lang('purchase.payment_due')</th>
<th>@lang('lang_v1.sell_return_due')</th>
</tr>
</thead>
<tfoot>
<tr class="bg-gray font-17 footer-total text-center">
<td
@if(in_array('service_staff' ,$enabled_modules))
colspan="11"
@else
colspan="10"
@endif>
<strong>@lang('sale.total'):</strong>
</td>
<td id="footer_pending_repair_status_count"></td>
<td></td>
<td></td>
<td id="pending_repair_footer_payment_status_count"></td>
<td>
<span class="display_currency" id="pending_repair_footer_total" data-currency_symbol ="true"></span>
</td>
<td class="text-left">
<small>
<span class="display_currency" id="pending_repair_footer_total_remaining" data-currency_symbol ="true"></span>
</small>
</td>
<td><span class="display_currency" id="pending_repair_footer_total_sell_return_due" data-currency_symbol ="true"></span></td>
</tr>
</tfoot>
</table>
</div>
</div>
<div class="tab-pane" id="completed_repair_tab">
<div class="row">
<div class="col-md-12 mb-12">
<a target="_blank" class="btn btn-sm btn-primary pull-right" href="{{action([\App\Http\Controllers\SellPosController::class, 'create']). '?sub_type=repair'}}">
<i class="fa fa-plus"></i> @lang('messages.add')
</a>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped ajax_view" id="sell_table">
<thead>
<tr>
<th>@lang('messages.action')</th>
<th>@lang('receipt.date')</th>
<th>
@lang('repair::lang.delivery_date')
@show_tooltip(__('repair::lang.repair_due_date_tooltip'))
</th>
<th>@lang('repair::lang.job_sheet_no')</th>
<th>@lang('sale.invoice_no')</th>
@if(in_array('service_staff' ,$enabled_modules))
<th>@lang('repair::lang.technician')</th>
@endif
<th>@lang('lang_v1.added_by')</th>
<th>@lang('sale.customer_name')</th>
<th>@lang('product.brand')</th>
<th>@lang('repair::lang.device_model')</th>
<th>@lang('repair::lang.serial_no')</th>
<th>@lang('sale.status')</th>
<th>@lang('sale.location')</th>
<th>@lang('repair::lang.repair_warranty')</th>
<th>@lang('sale.payment_status')</th>
<th>@lang('sale.total_amount')</th>
<th>@lang('purchase.payment_due')</th>
<th>@lang('lang_v1.sell_return_due')</th>
</tr>
</thead>
<tfoot>
<tr class="bg-gray font-17 footer-total text-center">
<td
@if(in_array('service_staff' ,$enabled_modules))
colspan="11"
@else
colspan="10"
@endif>
<strong>@lang('sale.total'):</strong>
</td>
<td id="footer_repair_status_count"></td>
<td></td>
<td></td>
<td id="footer_payment_status_count"></td>
<td>
<span class="display_currency" id="footer_sale_total" data-currency_symbol ="true"></span>
</td>
<td class="text-left">
<small>
<span class="display_currency" id="footer_total_remaining" data-currency_symbol ="true"></span>
</small>
</td>
<td><span class="display_currency" id="footer_total_sell_return_due" data-currency_symbol ="true"></span></td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade payment_modal" tabindex="-1" role="dialog"
aria-labelledby="gridSystemModalLabel">
</div>
<div class="modal fade edit_payment_modal" tabindex="-1" role="dialog"
aria-labelledby="gridSystemModalLabel">
</div>
<div class="modal fade" id="edit_repair_status_modal" tabindex="-1" role="dialog" aria-labelledby="gridSystemModalLabel"></div>
</section>
<!-- /.content -->
@stop
@section('javascript')
<script type="text/javascript">
$(document).ready( function(){
//Date range as a button
$('#sell_list_filter_date_range').daterangepicker(
dateRangeSettings,
function (start, end) {
$('#sell_list_filter_date_range').val(start.format(moment_date_format) + ' ~ ' + end.format(moment_date_format));
sell_table.ajax.reload();
pending_repair_table.ajax.reload();
}
);
$('#sell_list_filter_date_range').on('cancel.daterangepicker', function(ev, picker) {
$('#sell_list_filter_date_range').val('');
sell_table.ajax.reload();
pending_repair_table.ajax.reload();
});
sell_table = $('#sell_table').DataTable({
processing: true,
serverSide: true,
aaSorting: [[2, 'asc']],
"ajax": {
"url": "/repair/repair",
"data": function ( d ) {
if($('#sell_list_filter_date_range').val()) {
var start = $('#sell_list_filter_date_range').data('daterangepicker').startDate.format('YYYY-MM-DD');
var end = $('#sell_list_filter_date_range').data('daterangepicker').endDate.format('YYYY-MM-DD');
d.start_date = start;
d.end_date = end;
}
d.is_direct_sale = 1;
d.is_completed_status = 1;
d.location_id = $('#sell_list_filter_location_id').val();
d.customer_id = $('#sell_list_filter_customer_id').val();
d.payment_status = $('#sell_list_filter_payment_status').val();
d.created_by = $('#created_by').val();
d.sub_type = 'repair';
d.repair_status_id = $('#repair_status_id').val();
@if(in_array('service_staff' ,$enabled_modules))
d.service_staff_id = $('#service_staff_id').val();
@endif
}
},
columns: [
{ data: 'action', name: 'action', orderable: false, searchable: false},
{ data: 'transaction_date', name: 'transaction_date' },
{ data: 'repair_due_date', name: 'repair_due_date' },
{ data: 'job_sheet_no', name: 'rjs.job_sheet_no'},
{ data: 'invoice_no', name: 'invoice_no'},
@if(in_array('service_staff' ,$enabled_modules))
{ data: 'service_staff', name: 'ss.first_name'},
@endif
{ data: 'added_by', name: 'added_by', orderable: false, searchable: false},
{ data: 'name', name: 'contacts.name'},
{ data: 'brand', name: 'b.name'},
{ data: 'device_model', name: 'rdm.name'},
{ data: 'repair_serial_no', name: 'transactions.repair_serial_no'},
{ data: 'repair_status', name: 'rs.name'},
{ data: 'business_location', name: 'bl.name'},
{ data: 'warranty_name', name: 'rw.name'},
{ data: 'payment_status', name: 'payment_status'},
{ data: 'final_total', name: 'final_total', orderable: false, searchable: false},
{ data: 'total_remaining', name: 'total_remaining', orderable: false, searchable: false},
{ data: 'return_due', name: 'return_due', orderable: false, searchable: false}
],
"fnDrawCallback": function (oSettings) {
$('#footer_sale_total').text(sum_table_col($('#sell_table'), 'final-total'));
$('#footer_total_remaining').text(sum_table_col($('#sell_table'), 'payment_due'));
$('#footer_total_sell_return_due').text(sum_table_col($('#sell_table'), 'sell_return_due'));
$('#footer_payment_status_count').html(__sum_status_html($('#sell_table'), 'payment-status-label'));
$('#footer_repair_status_count').html(__sum_status_html($('#sell_table'), 'edit_repair_status'));
__currency_convert_recursively($('#sell_table'));
},
createdRow: function( row, data, dataIndex ) {
$( row ).find('td:eq(11)').attr('class', 'clickable_td');
$( row ).find('td:eq(14)').attr('class', 'clickable_td edit_status_td');
}
});
pending_repair_table = $('#pending_repair_table').DataTable({
processing: true,
serverSide: true,
aaSorting: [[2, 'asc']],
"ajax": {
"url": "/repair/repair",
"data": function ( d ) {
if($('#sell_list_filter_date_range').val()) {
var start = $('#sell_list_filter_date_range').data('daterangepicker').startDate.format('YYYY-MM-DD');
var end = $('#sell_list_filter_date_range').data('daterangepicker').endDate.format('YYYY-MM-DD');
d.start_date = start;
d.end_date = end;
}
d.is_direct_sale = 1;
d.is_completed_status = 0;
d.location_id = $('#sell_list_filter_location_id').val();
d.customer_id = $('#sell_list_filter_customer_id').val();
d.payment_status = $('#sell_list_filter_payment_status').val();
d.created_by = $('#created_by').val();
d.sub_type = 'repair';
d.repair_status_id = $('#repair_status_id').val();
@if(in_array('service_staff' ,$enabled_modules))
d.service_staff_id = $('#service_staff_id').val();
@endif
}
},
columns: [
{ data: 'action', name: 'action', orderable: false, searchable: false},
{ data: 'transaction_date', name: 'transaction_date' },
{ data: 'repair_due_date', name: 'repair_due_date' },
{ data: 'job_sheet_no', name: 'rjs.job_sheet_no'},
{ data: 'invoice_no', name: 'invoice_no'},
@if(in_array('service_staff' ,$enabled_modules))
{ data: 'service_staff', name: 'ss.first_name'},
@endif
{ data: 'added_by', name: 'added_by', orderable: false, searchable: false},
{ data: 'name', name: 'contacts.name'},
{ data: 'brand', name: 'b.name'},
{ data: 'device_model', name: 'rdm.name'},
{ data: 'repair_serial_no', name: 'transactions.repair_serial_no'},
{ data: 'repair_status', name: 'rs.name'},
{ data: 'business_location', name: 'bl.name'},
{ data: 'warranty_name', name: 'rw.name'},
{ data: 'payment_status', name: 'payment_status'},
{ data: 'final_total', name: 'final_total', orderable: false, searchable: false},
{ data: 'total_remaining', name: 'total_remaining', orderable: false, searchable: false},
{ data: 'return_due', name: 'return_due', orderable: false, searchable: false}
],
"fnDrawCallback": function (oSettings) {
$('#pending_repair_footer_total').text(sum_table_col($('#pending_repair_table'), 'final-total'));
$('#pending_repair_footer_total_remaining').text(sum_table_col($('#pending_repair_table'), 'payment_due'));
$('#pending_repair_footer_total_sell_return_due').text(sum_table_col($('#pending_repair_table'), 'sell_return_due'));
$('#pending_repair_footer_payment_status_count').html(__sum_status_html($('#pending_repair_table'), 'payment-status-label'));
$('#footer_pending_repair_status_count').html(__sum_status_html($('#pending_repair_table'), 'edit_repair_status'));
__currency_convert_recursively($('#pending_repair_table'));
},
createdRow: function( row, data, dataIndex ) {
$( row ).find('td:eq(11)').attr('class', 'clickable_td');
$( row ).find('td:eq(14)').attr('class', 'clickable_td edit_status_td');
}
});
$(document).on('change', '#sell_list_filter_location_id, #sell_list_filter_customer_id, #sell_list_filter_payment_status, #service_staff_id, #repair_status_id, #created_by', function() {
sell_table.ajax.reload();
pending_repair_table.ajax.reload();
});
@can("repair_status.update")
$(document).on('click', '.edit_repair_status', function(e){
e.preventDefault();
var url = $(this).data('href');
$.ajax({
method: 'GET',
url: url,
dataType: 'html',
success: function(result) {
$('#edit_repair_status_modal').html(result).modal('show');
}
});
});
@endcan
$('#edit_repair_status_modal').on('shown.bs.modal', function (e) {
$('#send_sms').change(function() {
if ($(this). is(":checked")) {
$('div.sms_body').fadeIn();
} else {
$('div.sms_body').fadeOut();
}
});
if ($('#repair_status_id_modal').length) {
;
$("#sms_body").val($("#repair_status_id_modal :selected").data('sms_template'));
}
$('#repair_status_id_modal').on('change', function() {
var sms_template = $(this).find(':selected').data('sms_template');
$("#sms_body").val(sms_template);
});
});
$(document).on('submit', 'form#update_repair_status_form', function(e){
e.preventDefault();
var data = $(this).serialize();
var ladda = Ladda.create(document.querySelector('.ladda-button'));
ladda.start();
$.ajax({
method: $(this).attr("method"),
url: $(this).attr("action"),
dataType: "json",
data: data,
success: function(result){
ladda.stop();
if(result.success == true){
$('#edit_repair_status_modal').modal('hide');
toastr.success(result.msg);
sell_table.ajax.reload();
pending_repair_table.ajax.reload();
} else {
toastr.error(result.msg);
}
}
});
});
$(document).on('click', '.delete_media', function(e){
e.preventDefault();
var this_btn = $(this);
$.ajax({
url: $(this).attr("href"),
dataType: "json",
success: function(result){
if(result.success == true){
this_btn.closest('tr').remove();
toastr.success(result.msg);
} else {
toastr.error(result.msg);
}
}
});
});
$(document).on('click', '.collapsed-box-title', function(e){
if (e.target.tagName == 'BUTTON' || e.target.tagName == 'I') {
return false;
}
$(this).find('.box-tools button').click();
});
});
</script>
<script src="{{ asset('js/payment.js?v=' . $asset_v) }}"></script>
@endsection