ultimatepos/resources/views/report/tax_report.blade.php

445 lines
22 KiB
PHP

@extends('layouts.app')
@section('title', __( 'report.tax_report' ))
@section('content')
<!-- Content Header (Page header) -->
<section class="content-header">
<h1 class="tw-text-xl md:tw-text-3xl tw-font-bold tw-text-black">@lang( 'report.tax_report' )
<small class="tw-text-sm md:tw-text-base tw-text-gray-700 tw-font-semibold">@lang( 'report.tax_report_msg' )</small>
</h1>
</section>
<!-- Main content -->
<section class="content">
<div class="row">
<div class="col-md-12">
@component('components.filters', ['title' => __('report.filters')])
<div class="col-md-3">
<div class="form-group">
{!! Form::label('tax_report_location_id', __('purchase.business_location') . ':') !!}
{!! Form::select('tax_report_location_id', $business_locations, null, ['class' => 'form-control select2', 'style' => 'width:100%']); !!}
</div>
</div>
<div class="col-md-3">
<div class="form-group">
{!! Form::label('tax_report_contact_id', __( 'report.contact' ) . ':') !!}
{!! Form::select('tax_report_contact_id', $contact_dropdown, null , ['class' => 'form-control select2', 'style' => 'width:100%', 'id' => 'tax_report_contact_id', 'placeholder' => __('lang_v1.all')]); !!}
</div>
</div>
<div class="col-md-3">
<div class="form-group">
{!! Form::label('tax_report_date_range', __('report.date_range') . ':') !!}
{!! Form::text('tax_report_date_range', null, ['placeholder' => __('lang_v1.select_a_date_range'), 'class' => 'form-control', 'id' => 'tax_report_date_range', 'readonly']); !!}
</div>
</div>
@endcomponent
</div>
</div>
{{--<div class="row">
<div class="col-md-4 col-sm-12">
@component('components.widget')
@slot('title')
{{ __('report.input_tax') }} @show_tooltip(__('tooltip.input_tax'))
@endslot
<div class="input_tax">
<i class="fas fa-sync fa-spin fa-fw"></i>
</div>
@endcomponent
</div>
<div class="col-md-4 col-sm-12">
@component('components.widget')
@slot('title')
{{ __('report.output_tax') }} @show_tooltip(__('tooltip.output_tax'))
@endslot
<div class="output_tax">
<i class="fas fa-sync fa-spin fa-fw"></i>
</div>
@endcomponent
</div>
<div class="col-md-4 col-sm-12">
@component('components.widget')
@slot('title')
{{ __('lang_v1.expense_tax') }} @show_tooltip(__('lang_v1.expense_tax_tooltip'))
@endslot
<div class="expense_tax">
<i class="fa fa-refresh fa-spin fa-fw"></i>
</div>
@endcomponent
</div>
</div>--}}
<div class="row">
<div class="col-xs-12">
@component('components.widget')
@slot('title')
{{ __('lang_v1.tax_overall') }} @show_tooltip(__('tooltip.tax_overall'))
@endslot
<h3 class="text-muted">
{{ __('lang_v1.output_tax_minus_input_tax') }}:
<span class="tax_diff">
<i class="fas fa-sync fa-spin fa-fw"></i>
</span>
</h3>
@endcomponent
</div>
</div>
<div class="row no-print">
<div class="col-sm-12">
<button class="tw-dw-btn tw-dw-btn-primary tw-text-white pull-right tw-mb-2" aria-label="Print"
onclick="window.print();">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-printer">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M17 17h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-14a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2" />
<path d="M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4" />
<path d="M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z" />
</svg> @lang('messages.print')
</button>
</div>
</div>
<div class="row">
<div class="col-md-12">
<!-- Custom Tabs -->
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active">
<a href="#input_tax_tab" data-toggle="tab" aria-expanded="true"><i class="fa fas fa-arrow-circle-down" aria-hidden="true"></i> @lang('report.input_tax') ( @lang('lang_v1.purchase') )</a>
</li>
<li>
<a href="#output_tax_tab" data-toggle="tab" aria-expanded="true"><i class="fa fas fa-arrow-circle-up" aria-hidden="true"></i> @lang('report.output_tax') ( @lang('sale.sells') )</a>
</li>
<li>
<a href="#expense_tax_tab" data-toggle="tab" aria-expanded="true"><i class="fa fas fa-minus-circle" aria-hidden="true"></i> @lang('lang_v1.expense_tax')</a>
</li>
@if(!empty($tax_report_tabs))
@foreach($tax_report_tabs as $key => $tabs)
@foreach ($tabs as $index => $value)
@if(!empty($value['tab_menu_path']))
@php
$tab_data = !empty($value['tab_data']) ? $value['tab_data'] : [];
@endphp
@include($value['tab_menu_path'], $tab_data)
@endif
@endforeach
@endforeach
@endif
</ul>
<div class="tab-content">
<div class="tab-pane active" id="input_tax_tab">
<table class="table table-bordered table-striped" id="input_tax_table">
<thead>
<tr>
<th>@lang('messages.date')</th>
<th>@lang('purchase.ref_no')</th>
<th>@lang('purchase.supplier')</th>
<th>@lang('contact.tax_no')</th>
<th>@lang('sale.total_amount')</th>
<th>@lang('lang_v1.payment_method')</th>
<th>@lang('receipt.discount')</th>
@foreach($taxes as $tax)
<th>
{{$tax['name']}}
</th>
@endforeach
</tr>
</thead>
<tfoot>
<tr class="bg-gray font-17 text-center footer-total">
<td colspan="4"><strong>@lang('sale.total'):</strong></td>
<td><span class="display_currency" id="sell_total" data-currency_symbol ="true"></span></td>
<td class="input_payment_method_count"></td>
<td>&nbsp;</td>
@foreach($taxes as $tax)
<td>
<span class="display_currency" id="total_input_{{$tax['id']}}" data-currency_symbol ="true"></span>
</td>
@endforeach
</tr>
</tfoot>
</table>
</div>
<div class="tab-pane" id="output_tax_tab">
<table class="table table-bordered table-striped" id="output_tax_table" width="100%">
<thead>
<tr>
<th>@lang('messages.date')</th>
<th>@lang('sale.invoice_no')</th>
<th>@lang('contact.customer')</th>
<th>@lang('contact.tax_no')</th>
<th>@lang('sale.total_amount')</th>
<th>@lang('lang_v1.payment_method')</th>
<th>@lang('receipt.discount')</th>
@foreach($taxes as $tax)
<th>
{{$tax['name']}}
</th>
@endforeach
</tr>
</thead>
<tfoot>
<tr class="bg-gray font-17 text-center footer-total">
<td colspan="4"><strong>@lang('sale.total'):</strong></td>
<td><span class="display_currency" id="purchase_total" data-currency_symbol ="true"></span></td>
<td class="output_payment_method_count"></td>
<td>&nbsp;</td>
@foreach($taxes as $tax)
<td>
<span class="display_currency" id="total_output_{{$tax['id']}}" data-currency_symbol ="true"></span>
</td>
@endforeach
</tr>
</tfoot>
</table>
</div>
<div class="tab-pane" id="expense_tax_tab">
<table class="table table-bordered table-striped" id="expense_tax_table" width="100%">
<thead>
<tr>
<th>@lang('messages.date')</th>
<th>@lang('purchase.ref_no')</th>
<th>@lang('contact.tax_no')</th>
<th>@lang('sale.total_amount')</th>
<th>@lang('lang_v1.payment_method')</th>
@foreach($taxes as $tax)
<th>
{{$tax['name']}}
</th>
@endforeach
</tr>
</thead>
<tfoot>
<tr class="bg-gray font-17 text-center footer-total">
<td colspan="3"><strong>@lang('sale.total'):</strong></td>
<td>
<span class="display_currency" id="expense_total" data-currency_symbol ="true"></span>
</td>
<td class="expense_payment_method_count"></td>
@foreach($taxes as $tax)
<td>
<span class="display_currency" id="total_expense_{{$tax['id']}}" data-currency_symbol ="true"></span>
</td>
@endforeach
</tr>
</tfoot>
</table>
</div>
@if(!empty($tax_report_tabs))
@foreach($tax_report_tabs as $key => $tabs)
@foreach ($tabs as $index => $value)
@if(!empty($value['tab_content_path']))
@php
$tab_data = !empty($value['tab_data']) ? $value['tab_data'] : [];
@endphp
@include($value['tab_content_path'], $tab_data)
@endif
@endforeach
@endforeach
@endif
</div>
</div>
</div>
</div>
</section>
<!-- /.content -->
@stop
@section('javascript')
<script type="text/javascript">
$(document).ready(function() {
$('#tax_report_date_range').daterangepicker(
dateRangeSettings,
function(start, end) {
$('#tax_report_date_range').val(
start.format(moment_date_format) + ' ~ ' + end.format(moment_date_format)
);
}
);
input_tax_table = $('#input_tax_table').DataTable({
processing: true,
serverSide: true,
fixedHeader:false,
ajax: {
url: '/reports/tax-details',
data: function(d) {
d.type = 'purchase';
d.location_id = $('#tax_report_location_id').val();
d.contact_id = $('#tax_report_contact_id').val();
var start = $('input#tax_report_date_range')
.data('daterangepicker')
.startDate.format('YYYY-MM-DD');
var end = $('input#tax_report_date_range')
.data('daterangepicker')
.endDate.format('YYYY-MM-DD');
d.start_date = start;
d.end_date = end;
}
},
columns: [
{ data: 'transaction_date', name: 'transaction_date' },
{ data: 'ref_no', name: 'ref_no' },
{ data: 'contact_name', name: 'c.name' },
{ data: 'tax_number', name: 'c.tax_number' },
{ data: 'total_before_tax', name: 'total_before_tax' },
{ data: 'payment_methods', orderable: false, "searchable": false},
{ data: 'discount_amount', name: 'discount_amount' },
@foreach($taxes as $tax)
{ data: "tax_{{$tax['id']}}", searchable: false, orderable: false },
@endforeach
],
"footerCallback": function ( row, data, start, end, display ) {
$('.input_payment_method_count').html(__count_status(data, 'payment_methods'));
},
fnDrawCallback: function(oSettings) {
$('#sell_total').text(
sum_table_col($('#input_tax_table'), 'total_before_tax')
);
@foreach($taxes as $tax)
$("#total_input_{{$tax['id']}}").text(
sum_table_col($('#input_tax_table'), "tax_{{$tax['id']}}")
);
@endforeach
__currency_convert_recursively($('#input_tax_table'));
},
});
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
if ($(e.target).attr('href') == '#output_tax_tab') {
if (typeof (output_tax_datatable) == 'undefined') {
output_tax_datatable = $('#output_tax_table').DataTable({
processing: true,
serverSide: true,
fixedHeader:false,
aaSorting: [[0, 'desc']],
ajax: {
url: '/reports/tax-details',
data: function(d) {
d.type = 'sell';
d.location_id = $('#tax_report_location_id').val();
d.contact_id = $('#tax_report_contact_id').val();
var start = $('input#tax_report_date_range')
.data('daterangepicker')
.startDate.format('YYYY-MM-DD');
var end = $('input#tax_report_date_range')
.data('daterangepicker')
.endDate.format('YYYY-MM-DD');
d.start_date = start;
d.end_date = end;
}
},
columns: [
{ data: 'transaction_date', name: 'transaction_date' },
{ data: 'invoice_no', name: 'invoice_no' },
{ data: 'contact_name', name: 'c.name' },
{ data: 'tax_number', name: 'c.tax_number' },
{ data: 'total_before_tax', name: 'total_before_tax' },
{ data: 'payment_methods', orderable: false, "searchable": false},
{ data: 'discount_amount', name: 'discount_amount' },
@foreach($taxes as $tax)
{ data: "tax_{{$tax['id']}}", searchable: false, orderable: false },
@endforeach
],
"footerCallback": function ( row, data, start, end, display ) {
$('.output_payment_method_count').html(__count_status(data, 'payment_methods'));
},
fnDrawCallback: function(oSettings) {
$('#purchase_total').text(
sum_table_col($('#output_tax_table'), 'total_before_tax')
);
@foreach($taxes as $tax)
$("#total_output_{{$tax['id']}}").text(
sum_table_col($('#output_tax_table'), "tax_{{$tax['id']}}")
);
@endforeach
__currency_convert_recursively($('#output_tax_table'));
},
});
}
} else if ($(e.target).attr('href') == '#expense_tax_tab') {
if (typeof (expense_tax_datatable) == 'undefined') {
expense_tax_datatable = $('#expense_tax_table').DataTable({
processing: true,
serverSide: true,
fixedHeader:false,
ajax: {
url: '/reports/tax-details',
data: function(d) {
d.type = 'expense';
d.location_id = $('#tax_report_location_id').val();
d.contact_id = $('#tax_report_contact_id').val();
var start = $('input#tax_report_date_range')
.data('daterangepicker')
.startDate.format('YYYY-MM-DD');
var end = $('input#tax_report_date_range')
.data('daterangepicker')
.endDate.format('YYYY-MM-DD');
d.start_date = start;
d.end_date = end;
}
},
columns: [
{ data: 'transaction_date', name: 'transaction_date' },
{ data: 'ref_no', name: 'ref_no' },
{ data: 'tax_number', name: 'c.tax_number' },
{ data: 'total_before_tax', name: 'total_before_tax' },
{ data: 'payment_methods', orderable: false, "searchable": false},
@foreach($taxes as $tax)
{ data: "tax_{{$tax['id']}}", searchable: false, orderable: false },
@endforeach
],
"footerCallback": function ( row, data, start, end, display ) {
$('.expense_payment_method_count').html(__count_status(data, 'payment_methods'));
},
fnDrawCallback: function(oSettings) {
$('#expense_total').text(
sum_table_col($('#expense_tax_table'), 'total_before_tax')
);
@foreach($taxes as $tax)
$("#total_expense_{{$tax['id']}}").text(
sum_table_col($('#expense_tax_table'), "tax_{{$tax['id']}}")
);
@endforeach
__currency_convert_recursively($('#expense_tax_table'));
},
});
}
}
// remove class from data table button
$('.btn-default').removeClass('btn-default');
$('.tw-dw-btn-outline').removeClass('btn');
});
$('#tax_report_date_range, #tax_report_location_id, #tax_report_contact_id').change( function(){
if ($("#input_tax_tab").hasClass('active')) {
input_tax_table.ajax.reload();
}
if ($("#output_tax_tab").hasClass('active')) {
output_tax_datatable.ajax.reload();
}
if ($("#expense_tax_tab").hasClass('active')) {
expense_tax_datatable.ajax.reload();
}
});
});
</script>
@if(!empty($tax_report_tabs))
@foreach($tax_report_tabs as $key => $tabs)
@foreach ($tabs as $index => $value)
@if(!empty($value['module_js_path']))
@include($value['module_js_path'])
@endif
@endforeach
@endforeach
@endif
<script src="{{ asset('js/report.js?v=' . $asset_v) }}"></script>
@endsection