File: /var/www/vhost/disk-apps/teamdemo.sports-crowd.com/resources/views/academy/purchases/list.blade.php
@extends('modules.head') @section('contenido')
<link rel="stylesheet" href='../js/bootstrap/css/bootstrap.min.css'>
<style>
/* Ensure that the demo table scrolls */
/* th, */
td {
white-space: nowrap;
}
div.dataTables_wrapper {
height: fit-content;
margin: 0px 10px 0px 10px;
}
.dataTables_scrollBody {
max-height: none !important;
}
.pending {
background-color: #F7CB73 !important;
}
.hidden {
display: none;
}
</style>
@php
$page_prefix = "academy_purchase_" . $type_academy;
@endphp
<div class="box-header">
<!-- <a class="btn btn-app btnReportProducts" href="{{ url('/academy/export_payments') }}">
<i class="fa fa-cloud-download"></i> {{ Lang::get('messages.screen_products_tag42') . ' Pagos' }}
</a> -->
<a class="btn btn-app btnReportProducts" onclick="clickExportAll()">
<i class="fa fa-file-excel-o"></i> {{ Lang::get('messages.academy_purchases.title_export_all') }}
</a>
@if (!in_array(Auth::user()->rol->id, [14]))
<a class="btn btn-app btnReportProducts" onclick="validatePayments()">
<i class="fa fa-credit-card"></i> {{ Lang::get('messages.academy_purchases.validate_payments') }}
</a>
@endif
</div>
<!-- List Data -->
<div class="box">
<div class="box-header">
<h3 class="box-title"><b>{{ Lang::get('messages.academy_purchases.filters') }}</b></h3>
<div class="row">
<div class="col-3 col-md-3">
<label for="states">{{ Lang::get('messages.academy_purchases.tag11')}}</label>
<select class="form-control select2" multiple="multiple" data-placeholder="{{ Lang::get('messages.academy_purchases.placeholder_select') }}" name="states" value="" required>
@foreach ($states as $state)
<option value="{{ $state }}">{{ $state }}</option>
@endforeach
</select>
</div>
<div class="col-3 col-md-3">
<label for="types">{{ Lang::get('messages.academy_purchases.tag5')}}</label>
<select class="form-control select2" multiple="multiple" data-placeholder="{{ Lang::get('messages.academy_purchases.placeholder_select') }}" name="types" value="" required>
@foreach ($types as $type)
<option value="{{ $type }}">{{ $type }}</option>
@endforeach
</select>
</div>
<div class="col-3 col-md-3">
<label for="duePayments">{{ Lang::get('messages.academy_purchases.tag4-1')}}</label>
<select class="form-control select2" multiple="multiple" data-placeholder="{{ Lang::get('messages.academy_purchases.placeholder_select') }}" name="duePayments" value="" required>
@foreach ($duePayments as $duePayment)
<option value="{{ $duePayment }}">{{ $duePayment }}</option>
@endforeach
</select>
</div>
<!-- <div class="col-3 col-md-3">
<label for="range">{{ Lang::get('complimentary_tickets.filter_dates')}}</label>
<select class="form-control" name="range" id="date-range" onchange="toggleCustomDate()">
<option value="15" {{ request('range') == 15 ? 'selected' : '' }}>Últimos 15 días</option>
<option value="30" {{ request('range') == 30 ? 'selected' : '' }}>Últimos 30 días</option>
<option value="90" {{ request('range') == 90 ? 'selected' : '' }}>Últimos 90 días</option>
<option value="all" {{ request('range') == 'all' ? 'selected' : '' }}>Todas</option>
</select>
<input type="date" name="start_date" id="start-date" value="{{ request('start_date') }}" style="display:none;">
<input type="date" name="end_date" id="end-date" value="{{ request('end_date') }}" style="display:none;">
</div> -->
</div>
<div class="row">
<div class="col-3 col-md-3">
<label for="from_term">{{ Lang::get('messages.academy_purchases.tag6-2')}}</label>
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control pull-right" placeholder="{{ Lang::get('messages.academy_purchases.placeholder_date') }}" name="from_term" value="" autocomplete="off">
</div>
</div>
<div class="col-3 col-md-3">
<label for="to_term">{{ Lang::get('messages.academy_purchases.tag6-3')}}</label>
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control pull-right" placeholder="{{ Lang::get('messages.academy_purchases.placeholder_date') }}" name="to_term" value="" autocomplete="off">
</div>
</div>
<div class="col-3 col-md-3">
<label for="from_date">{{ Lang::get('messages.academy_purchases.tag14-1')}}</label>
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control pull-right" placeholder="{{ Lang::get('messages.academy_purchases.placeholder_date') }}" name="from_date" value="" autocomplete="off">
</div>
</div>
<div class="col-3 col-md-3">
<label for="to_date">{{ Lang::get('messages.academy_purchases.tag14-2')}}</label>
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control pull-right" placeholder="{{ Lang::get('messages.academy_purchases.placeholder_date') }}" name="to_date" value="" autocomplete="off">
</div>
</div>
</div>
<div class="row">
<div class="col-3 col-md-3">
<label for="locations">{{ config('app.location') . Lang::get('messages.academy_users.tag2') }}</label>
<select class="form-control select2" multiple="multiple"
data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}"
name="locations" id="locations" required>
</select>
</div>
<div class="col-3 col-md-3">
<label for="categories">{{ Lang::get('messages.screen_banners_tag6') }}</label>
<select class="form-control select2" multiple="multiple"
data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}"
name="categories" id ="categories" required>
</select>
</div>
<div class="col-3 col-md-3">
<label for="schedules">Horarios</label>
<select class="form-control select2" multiple="multiple"
data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}"
name="schedules" id="schedules" required>
</select>
</div>
<div class="col-3 col-md-3">
<label for="coaches">{{ Lang::get('messages.academy_schedules.tag7') }}</label>
<select class="form-control select2" multiple="multiple"
data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}"
name="coaches" id="coaches" required>
</select>
</div>
</div>
<p style="margin-top: 10px; border-bottom: 1px solid #D3D3D3;"></p>
<h3 class="box-title"><b>{{ Lang::get('messages.academy_purchases.title_list') }}</b></h3>
</div>
<!-- /.box-header -->
<table id="{{$page_prefix}}" class="stripe row-border order-column" style="width:100%" role="grid" aria-describedby="academy_purchase_info">
<thead>
<tr role="row">
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.id') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-2') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-8') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_users.tag2-3') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_users.tag2-7') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-3') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">Código estudiante</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-4') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-5') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-6') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag1-7') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag2-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag2-2') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag3-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag3-2') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag3-3') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag4') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag4-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag5') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag6-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag6-2') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag6-3') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag6-4') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag6-5') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag7') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag8-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag8-2') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag9-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag9-2') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag9-3') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag10-1') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.hashed_reference') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag10-2') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag11') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag12') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.payment_method') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.gateway_payments') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag13') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag14') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.erp_identifier') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.erp_reference') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.sync_with_erp') }}</th>
<th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Engine version: activate to sort column ascending">{{ Lang::get('messages.academy_purchases.tag0') }}</th>
</tr>
</thead>
</table>
<!-- /.box-body -->
</div>
<script src="{{ asset('js/jQuery/jquery-2.2.3.min.js') }}"></script>
<script src="{{ asset('js/bootstrap/js/bootstrap.min.js') }}"></script>
<script src="{{ asset('js/util.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/academy_purchases.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/crud.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/filter.js') . '?v=' . time() }}"></script>
<script type="text/javascript">
let typeAcademy = <?php echo json_encode($type_academy); ?>;
const SELECTOR_PREFIX = "{{$page_prefix}}";
$(document).ready(function() {
const existingLocationId = localRetrieve(`${SELECTOR_PREFIX}_filterLocations`);
const existingCategoryId = localRetrieve(`${SELECTOR_PREFIX}_filterCategories`);
const existingScheduleId = localRetrieve(`${SELECTOR_PREFIX}_filterSchedules`);
const existingCoachId = localRetrieve(`${SELECTOR_PREFIX}_filterCoaches`);
const existingFilteredStates = localRetrieve(`${SELECTOR_PREFIX}_filterStatesAux`);
const locationRequest = getAcademyLocations(existingLocationId);
const categoryRequest = getAcademyCategories(existingCategoryId);
const scheduleRequest = getAcademySchedules(existingScheduleId);
const coachRequest = getAcademyCoaches(existingCoachId);
validateLocalStoreInformation();
$('.select2').select2();
$.when(locationRequest, categoryRequest, scheduleRequest, coachRequest).done(function() {
if (existingLocationId || existingCategoryId || existingScheduleId || existingCoachId) {
restoreFilteredStates(existingFilteredStates, existingLocationId, existingCategoryId, existingScheduleId, existingCoachId);
cleanPagination();
getData();
}else{
getData();
}
}).fail(function() {
console.error('Alguna de las peticiones falló');
});
$("select[name='locations']").on('change', function(event) {
// getAcademyCategories();
// getAcademySchedules();
// getAcademyCoaches();
// cleanPagination();
// getData();
// console.log($("select[name='locations']").val());
generalFilter(event);
cleanPagination();
getData();
});
$("select[name='categories']").on('change', function(event) {
// getAcademyCoaches();
// getAcademySchedules();
generalFilter(event);
cleanPagination();
getData();
});
$("select[name='schedules']").on('change', function (event) {
// getAcademyCoaches();
generalFilter(event);
cleanPagination();
getData();
});
$("select[name='coaches']").on('change', function(event) {
generalFilter(event);
cleanPagination();
getData();
});
var info =
'<i class="fa fa-info-circle" id="btn-info-busqueda"></i><div class="dropdown-menu" id="menuBusqueda" style="left: 50%; padding: 5px; background-color: #f9fb8f;"><p data-toggle="modal">Busqueda por Cedula, Nombre y Correo</p></div>';
$(`#${SELECTOR_PREFIX}_filter`).append(info);
$('#btn-info-busqueda').on('click', function() {
$('#menuBusqueda').toggle();
});
$('.select2').select2();
$.fn.datepicker.dates['en'] = {
days: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
daysShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Juv', 'Vie', 'Sáb'],
daysMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'],
months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre',
'Octubre', 'Noviembre', 'Diciembre'
],
monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov',
'Dic'
],
today: "Hoy",
clear: "Clear",
format: "yyyy-mm-dd",
titleFormat: "MM yyyy",
weekStart: 0
};
$("input[name='from_term']").datepicker({
dateFormat: 'yyyy-mm-dd'
});
$("input[name='to_term']").datepicker({
dateFormat: 'yyyy-mm-dd'
});
$("input[name='from_date']").datepicker({
dateFormat: 'yyyy-mm-dd'
});
$("input[name='to_date']").datepicker({
dateFormat: 'yyyy-mm-dd'
});
$("select[name='states']").on('change', function() {
cleanPagination();
getData();
});
$("select[name='types']").on('change', function() {
cleanPagination();
getData();
});
$("select[name='duePayments']").on('change', function() {
cleanPagination();
getData();
});
let from_term;
$("input[name='from_term']").on('change', function(event) {
if ((this.value && from_term != this.value) || (!this.value && from_term)) {
from_term = this.value;
cleanPagination();
getData();
} else {
localStore(`${SELECTOR_PREFIX}_filterFromTerm`, this.value);
}
});
let to_term;
$("input[name='to_term']").on('change', function() {
if ((this.value && to_term != this.value) || (!this.value && to_term)) {
to_term = this.value;
cleanPagination();
getData();
} else {
localStore(`${SELECTOR_PREFIX}_filterToTerm`, this.value);
}
});
let from_date;
$("input[name='from_date']").on('change', function(event) {
if ((this.value && from_date != this.value) || (!this.value && from_date)) {
from_date = this.value;
cleanPagination();
getData();
} else {
localStore(`${SELECTOR_PREFIX}_filterFromDate`, this.value);
}
});
let to_date;
$("input[name='to_date']").on('change', function() {
if ((this.value && to_date != this.value) || (!this.value && to_date)) {
to_date = this.value;
cleanPagination();
getData();
} else {
localStore(`${SELECTOR_PREFIX}_filterToDate`, this.value);
}
});
});
function getData() {
let states = $("select[name='states']").val();
let types = $("select[name='types']").val();
let duePayments = $("select[name='duePayments']").val();
let from_term = $("input[name='from_term']").val();
let to_term = $("input[name='to_term']").val();
let from_date = $("input[name='start_date']").val() || $("input[name='from_date']").val();
let to_date = $("input[name='end_date']").val() || $("input[name='to_date']").val();
let locations = $("select[name='locations']").val();
let categories = $("select[name='categories']").val();
let schedules = $("select[name='schedules']").val();
let coaches = $("select[name='coaches']").val();
localStore(`${SELECTOR_PREFIX}_filterStates`, states);
localStore(`${SELECTOR_PREFIX}_filterTypes`, types);
localStore(`${SELECTOR_PREFIX}_filterDuePayments`, duePayments);
localStore(`${SELECTOR_PREFIX}_filterFromTerm`, from_term);
localStore(`${SELECTOR_PREFIX}_filterToTerm`, to_term);
localStore(`${SELECTOR_PREFIX}_filterFromDate`, from_date);
localStore(`${SELECTOR_PREFIX}_filterToDate`, to_date);
localStore(`${SELECTOR_PREFIX}_filterLocations`, locations);
localStore(`${SELECTOR_PREFIX}_filterCategories`, categories);
localStore(`${SELECTOR_PREFIX}_filterSchedules`, schedules);
localStore(`${SELECTOR_PREFIX}_filterCoaches`, coaches);
var sort_col = $(`#${SELECTOR_PREFIX}`).find("th:contains(" + Lang.get('messages.academy_purchases.tag14') + ")")[0].cellIndex;
let fixedColumns = false;
let isMobileDevice = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (!isMobileDevice) {
fixedColumns = {
left: 4,
right: 1
};
}
$(`#${SELECTOR_PREFIX}`).dataTable().fnDestroy();
_table = $(`#${SELECTOR_PREFIX}`).DataTable({
stateSave: true,
stateSaveCallback: function(settings, data) {
localStore(`DataTables_${SELECTOR_PREFIX}`, data)
},
stateLoadCallback: function(settings) {
return localRetrieve(`DataTables_${SELECTOR_PREFIX}`);
},
responsive: true,
processing: true,
serverSide: true,
order: [
[sort_col, 'desc']
],
language: {
url: window.DATATABLES_LANGUAGE_URL,
},
scrollX: true,
scrollCollapse: true,
paging: true,
fixedColumns: fixedColumns,
ajax: {
url: '/academy_purchase/list',
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
},
type: "POST",
data: {
states: states,
types: types,
duePayments: duePayments,
from_term: from_term,
to_term: to_term,
from_date: from_date,
to_date: to_date,
type_academy: typeAcademy,
locations: locations,
categories: categories,
schedules: schedules,
coaches: coaches
}
},
columns: [{
data: 'id',
name: 'id'
},
{
data: 'academy_user.student_name',
name: 'academy_user.student_name'
},
{
data: 'academy_user.student_last_name',
name: 'academy_user.student_last_name'
},
{
data: 'academy_state.name',
render: function(data, type, row, column) {
return row.academy_state ? '<div style="background-color: ' + row.academy_state.color +
'; color: white; padding: 5px; font-weight: bold; border-radius: 10px; text-align: center;">' +
row.academy_state.name + '</div>' : '';
},
name: 'academy_state.name'
},
{
data: 'studentDocumentType',
name: 'document_types.name'
},
{
data: 'birthdate',
name: 'academy_user.birthdate'
},
{
data: 'academy_user.identification',
render: function(data, type, row, column) {
return row.academy_user.student_document_type ? row.academy_user
.student_document_type.alias + '' + row.academy_user.identification : row
.academy_user.identification;
},
name: 'academy_user.identification'
},
{
data: 'academy_user.student_academy_code',
name: 'academy_user.student_academy_code',
defaultContent: ''
},
{
data: 'locationName',
name: 'academy_locations.name'
},
{
data: 'categoryName',
name: 'academy_categories.name'
},
{
data: 'scheduleName',
name: 'academy_schedules.name'
},
{
data: 'coaches',
name: 'coaches',
render: function(data, type, row, meta) {
let coaches = '';
if (row.coaches) {
let coachesData = row.coaches.split(',');
let coachesList = coachesData.map(function(data, index) {
return '<li>' + data + '</li>';
});
coaches = coachesList.join('');
}
return coaches;
}
},
{
data: 'academy_user',
render: function(data, type, row, column) {
response = '';
if (row.academy_user.user) {
response = row.academy_user.user.first_name + ' ' + row.academy_user.user.last_name;
}
return response;
},
name: 'appUser.first_name'
},
{
data: 'academy_user',
render: function(data, type, row, column) {
return row.academy_user.user ? row.academy_user.user.email : '';
},
name: 'appUser.email'
},
{
data: 'academy_user.advisor_name',
name: 'academy_user.advisor_name'
},
{
data: 'academy_user.advisor_last_name',
name: 'academy_user.advisor_last_name'
},
{
data: 'advisor_identification',
render: function(data, type, row) {
return row.academy_user.advisor_document_type ? row.academy_user.advisor_document_type.alias + '' + row.advisor_identification : row.advisor_identification;
},
name: 'academy_user.advisor_identification'
},
{
data: 'segmentation',
render: function(data, type, row) {
let tags = '';
if (row.segmentation) {
let list = row.segmentation.split(',');
let data = list.map(function(d) {
return '<li>' + d + '</li>';
});
tags = data.join('');
}
return tags;
},
name: 'tags.name'
},
{
data: 'duePayment',
name: 'state'
},
{
data: 'term_type',
name: 'term_type'
},
{
data: 'term',
name: 'term'
},
{
data: 'start_term',
name: 'start_term'
},
{
data: 'end_term',
name: 'end_term'
},
{
data: 'payment_activation',
name: 'payment_activation'
},
{
data: 'payment_due_date',
name: 'payment_due_date'
},
{
data: 'enrollment_academy_price',
render: function(data, type, row) {
return formatCurrency(row.enrollment_academy_price ?? row.monthly_academy_price);
},
name: 'enrollment_academy_price'
},
{
data: 'price_discount',
render: function(data, type, row) {
return formatCurrency(row.price_discount);
},
name: 'price_discount'
},
{
data: 'discount',
render: function(data, type, row) {
return row.discount + '%';
},
name: 'discount'
},
{
data: 'subtotal',
render: function(data, type, row) {
return formatCurrency(row.subtotal);
},
name: 'subtotal'
},
{
data: 'service_charge',
render: function(data, type, row) {
return formatCurrency(row.service_charge);
},
name: 'service_charge'
},
{
data: 'price',
render: function(data, type, row) {
return formatCurrency(row.price);
},
name: 'price'
},
{
data: 'reference',
name: 'payment_transactions.reference'
},
{
data: 'hashed_reference',
name: 'hashed_reference'
},
{
data: 'gateway_transaction_id',
name: 'payment_transactions.gateway_transaction_id'
},
{
data: 'state',
render: function(data, type, row) {
return row.state ?? 'PENDING';
},
name: 'payment_transactions.state'
},
{
data: 'comment',
name: 'payment_transactions.comment'
},
{
data: 'payment_method',
name: 'payment_methods.name'
},
{
data: 'gateway_payments_name',
name: 'gateway_payments.name'
},
{
data: 'support',
fnCreatedCell: function(nTd, sData, oData, iRow, iCol) {
return sData ? $(nTd).html("<a href='" + sData +
"' target='_blank'>Ver documento</a>") : "";
},
name: 'payment_transactions.support'
},
{
data: 'payment_date',
name: 'payment_transactions.payment_date'
},
{
data: 'erp_response',
name: 'erp_response'
},
{
data: 'erp_reference',
name: 'erp_reference'
},
{
data: 'sync_with_erp',
render: function(data, type, row) {
return row.sync_with_erp ? 'SI' : 'NO';
},
name: 'sync_with_erp'
},
{
data: 'actions',
name: 'actions'
},
],
"createdRow": function(row, data, dataIndex) {
if (data['pending']) {
$(row).addClass('pending');
}
}
});
}
function clickExportAll() {
$('#loading').show();
_table = $(`#${SELECTOR_PREFIX}`).DataTable();
let query = _table.ajax.json().queries[_table.ajax.json().queries.length - 1].query;
let bindings = _table.ajax.json().queries[_table.ajax.json().queries.length - 1].bindings;
query = query.split(' limit ')[0];
var validateDownloadUrl = document.location.origin + "/academy_purchase/validateExport";
var downloadUrl = document.location.origin + "/academy_purchase/export/";
var formData = new FormData();
formData.append("query", query);
formData.append("bindings", bindings);
$.ajax({
type: "POST",
dataType: "json",
processData: false,
contentType: false,
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
},
data: formData,
url: validateDownloadUrl,
success: function(response) {
$('#loading').hide();
if (response.success) {
window.location.assign(downloadUrl + response.data);
} else {
swal("Error", response.message, "error");
}
},
error: function(response) {
$('#loading').hide();
swal("Error", response.responseJSON ? response.responseJSON.message :
'Hubo un error en el servidor, espere unos segundos e intente de nuevo', "error");
}
});
}
function validatePayments() {
$.ajax({
url: "/validatePayments",
type: "GET",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
"Content-Type": "application/json",
},
success: function(r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
localStorage.setItem("setPageTable", true);
$(location).attr("href", "/academy_purchase");
}
});
}
});
}
function clickValidatePay(id) {
swal(Lang.get("messagesClient.academy_payments.confirm_payment"), {
buttons: {
cancel: "No",
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
$('#loading').show();
var info = {
id: id,
state: 'CONFIRMED',
};
$.ajax({
url: "/academy_user_payment/validatePay",
type: "PUT",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $(
'meta[name="csrf-token"]'
).attr("content"),
"Content-Type": "application/json",
},
data: JSON.stringify(info),
success: function(r) {
$('#loading').hide();
if (r.r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
localStorage.setItem("setPageTable", true);
$(location).attr("href", "/academy_purchase");
}
});
} else {
swal("Error", r.m, "error");
}
},
error: function(e) {
$('#loading').hide();
swal("Error", Lang.get(
"messagesClient.academy_payments.error_confirm_payment"),
"error");
},
});
}
});
}
function clickValidatePaymentInGateway(id) {
$.ajax({
url: "/academy_purchase/validatePayment/" + id,
type: "GET",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
"Content-Type": "application/json",
},
success: function(r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
localStorage.setItem("setPageTable", true);
location.reload();
}
});
}
});
}
function validateLocalStoreInformation() {
$("select[name='states']").val(localRetrieve(`${SELECTOR_PREFIX}_filterStates`));
$("select[name='types']").val(localRetrieve(`${SELECTOR_PREFIX}_filterTypes`));
$("select[name='duePayments']").val(localRetrieve(`${SELECTOR_PREFIX}_filterDuePayments`));
$("input[name='from_term']").val(localRetrieve(`${SELECTOR_PREFIX}_filterFromTerm`));
$("input[name='to_term']").val(localRetrieve(`${SELECTOR_PREFIX}_filterToTerm`));
$("input[name='from_date']").val(localRetrieve(`${SELECTOR_PREFIX}_filterFromDate`));
$("input[name='to_date']").val(localRetrieve(`${SELECTOR_PREFIX}_filterToDate`));
$("select[name='locations']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterLocations`));
$("select[name='categories']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterCategories`));
$("select[name='schedules']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterSchedules`));
$("select[name='coaches']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterCoaches`));
}
let cleanPagination = function() {
localRemove(`DataTables_${SELECTOR_PREFIX}`);
}
function toggleCustomDate() {
let range = document.getElementById("date-range").value;
switch (range) {
case "15":
$("#start-date").val(moment().subtract(15, 'days').format('YYYY-MM-DD'));
$("#end-date").val(moment().format('YYYY-MM-DD'));
break;
case "30":
$("#start-date").val(moment().subtract(30, 'days').format('YYYY-MM-DD'));
$("#end-date").val(moment().format('YYYY-MM-DD'));
break;
case "90":
$("#start-date").val(moment().subtract(90, 'days').format('YYYY-MM-DD'));
$("#end-date").val(moment().format('YYYY-MM-DD'));
break;
case "all":
$("#start-date").val("");
$("#end-date").val("");
break;
}
getData();
}
</script>
@endsection