Merge branch 'main' into 'dev/presupuesto_cliente_2'

Main

See merge request jjimenez/safekat!235
This commit is contained in:
2024-05-07 19:31:00 +00:00
39 changed files with 899 additions and 1088 deletions

View File

@ -15,7 +15,7 @@
Ficha de Cliente
</button>
</li>
<?php if ($formAction !== site_url('cliente/add')){ ?>
<?php if ($formAction !== route_to('clienteAdd')){ ?>
<li class="nav-item">
<button
type="button"
@ -564,7 +564,7 @@
</div>
<?php if ($formAction !== site_url('cliente/add')){ ?>
<?php if ($formAction !== route_to('clienteAdd')){ ?>
<div class="tab-pane fade" id="tarifascliente" role="tabpanel">
<?= view("themes/backend/vuexy/form/clientes/cliente/convert2templateModal") ?>
<div class='row'>
@ -685,7 +685,7 @@
<?php if ($formAction !== site_url('cliente/add')){ ?>
<?php if ($formAction !== route_to('clienteAdd')){ ?>
<?= $this->section("additionalInlineJs") ?>
/****************************************
Funcionamiento general

View File

@ -9,7 +9,7 @@
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?=lang('Clientes.clienteList') ?></h3>
<?=anchor(route_to('newCliente'), lang('Basic.global.addNew').' '.lang('Clientes.cliente'), ['class'=>'btn btn-primary float-end']); ?>
<?=anchor(route_to('clienteAdd'), lang('Basic.global.addNew').' '.lang('Clientes.cliente'), ['class'=>'btn btn-primary float-end']); ?>
</div><!--//.card-header -->
<div class="card-body">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
@ -76,7 +76,7 @@
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},
ajax : $.fn.dataTable.pipeline( {
url: '<?= route_to('dataTableOfClientes') ?>',
url: '<?= route_to('clienteDT') ?>',
method: 'POST',
headers: {'X-Requested-With': 'XMLHttpRequest'},
async: true,

View File

@ -1,246 +0,0 @@
<!--Style-->
<link rel="stylesheet" href="<?= site_url("themes/focus2/vendor/chartist/css/chartist.min.css") ?>">
<style>
.ct-series-a .ct-bar, .ct-series-a .ct-line, .ct-series-a .ct-point, .ct-series-a,.bg-char-lead{
stroke: #6b51df;
}
.ct-series-b .ct-bar, .ct-series-b .ct-line, .ct-series-b .ct-point, .ct-series-b,.bg-char-conversion{
stroke: limegreen;
}
.ct-series-c .ct-bar, .ct-series-c .ct-line, .ct-series-c .ct-point, .ct-series-c,.bg-char-disengaged{
stroke: #ff004d;
}
.ct-pie-chart .ct-label {
fill: rgb(255 255 255);
color: rgb(255 255 255);
font-size: .70rem;
line-height: 1;
}
.ct-icon {
height: 23px;
width: 23px;
margin-right: 5px;
float: left;
}
</style>
<!--Content Body-->
<div class="content-body">
<div class="container-fluid">
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4><i class="<?= $title['icon']??'' ?>"></i> <?= $title['module']??'' ?></h4>
<span class="ml-1"><?= $title['page']??'' ?></span>
</div>
</div>
<div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<ol class="breadcrumb">
<?php foreach ($breadcrumb??[] as $item) : ?>
<?php if (!$item['active']) : ?>
<li class="breadcrumb-item"><a href="<?= site_url($item['route']) ?>"><?= $item['title'] ?></a></li>
<?php else : ?>
<li class="breadcrumb-item active"><?= $item['title'] ?></li>
<?php endif; ?>
<?php endforeach; ?>
</ol>
</div>
</div>
<div class="row">
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fas fa-users text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.dashboard_user_total"))?></div>
<div class="stat-digit"><?=$total_user??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fas fa-user-friends text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.dashboard_user_new"))?></div>
<div class="stat-digit"><?=$total_new??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fas fa-user-check text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.dashboard_user_enabled"))?></div>
<div class="stat-digit"><?=$total_enabled??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fas fa-user-times text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.dashboard_user_disabled"))?></div>
<div class="stat-digit"><?=$total_disabled??'0'?></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="card">
<div class="card-header">
<h4 class="card-title"><?=lang("App.dashboard_chart_history")?></h4>
<span><i class="fas fa-square" style="color: #6b51df"></i> <?=lang("App.dashboard_user_total")?> <i class="fas fa-square" style="color: limegreen"></i> <?=lang("App.dashboard_user_enabled")?> <i class="fas fa-square" style="color: #ff004d"></i> <?=lang("App.dashboard_user_disabled")?></span>
</div>
<div class="card-body">
<div class="ct-bar-chart mt-5"></div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h4 class="card-title"><?=lang("App.dashboard_grid_user")?></h4>
</div>
<div class="card-body">
<div class="table-responsive" style="max-height: 300px; overflow-y: auto;">
<table class="table" id="table-grid" >
<tbody>
<?php foreach ($data_user??[] as $item) : ?>
<tr>
<td style="height: 56px; text-align: center;">
<img src="<?= $item['picture']??''?>" class="btn-circle btn-circle-sm">
</td>
<td>
<b><?= $item['first_name']??''?> <?= $item['last_name']??''?></b><br>
<?= $item['email']??''?><br>
<span class="timeAgo"><?= $item['created_at']??'' ?></span>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="card">
<div class="card-header">
<h4 class="card-title"><?=lang("App.dashboard_grid_access")?></h4>
</div>
<div class="card-body">
<div class="table-responsive" style="max-height: 370px; overflow-y: auto;">
<table class="table" id="table-grid">
<thead class="text-primary">
<tr>
<th><?=lang("App.dashboard_user")?></th>
<th><?=lang("App.dashboard_email")?></th>
<th><?=lang("App.dashboard_created_at")?></th>
</tr>
</thead>
<tbody>
<?php foreach ($data_activity??[] as $item) : ?>
<?php $data = json_decode($item['detail'],true); ?>
<tr>
<td><?= $item['first_name']??''?></td>
<td><?= $item['email']??''?></td>
<td><span class="timeAgo"><?= $item['created_at']??'' ?></span> </td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Required vendors -->
<script src="<?=site_url("themes/focus2/vendor/global/global.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/quixnav-init.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/custom.min.js")?>"></script>
<!-- Form -->
<script src="<?=site_url("themes/focus2/vendor/chartist/js/chartist.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/moment/moment.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/pg-calendar/js/pignose.calendar.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/sweetalert2/dist/sweetalert2.min.js")?>"></script>
<script>
"use strict";
$(document).ready(function () {
let dataPie = <?= $data_char_pie??'{}' ?>;
let labels = dataPie['labels'];
let icons = document.getElementById("ct-icon-chart").innerHTML;
for (let i = 0; i < labels.length; i++) {
switch (labels[i].toLowerCase()) {
case 'vkontakte':
icons += '<p class="btn-vk btn-circle ct-icon"><i class="fab fa-vk mt-1 ml-1"></i></p>';
break;
case 'wechat':
icons += '<p class="btn-wechat btn-circle ct-icon"><i class="fab fa-weixin mt-1 ml-1"></i></p>';
break;
case 'google':
icons += '<p class="btn-'+labels[i].toLowerCase()+'-plus btn-circle ct-icon"><i class="fab fa-'+labels[i].toLowerCase()+' mt-1 ml-1"></i></p>';
break;
default:
icons += '<p class="btn-'+labels[i].toLowerCase()+' btn-circle ct-icon"><i class="fab fa-'+labels[i].toLowerCase()+' mt-1 ml-1"></i></p>';
}
}
document.getElementById("ct-icon-chart").innerHTML = icons;
let optionsPie = {
labelInterpolationFnc: function(value) {
return value[0]+value[1]+value[2]
}
};
let responsiveOptionsPie = [
['screen and (min-width: 640px)', {
chartPadding: 30,
labelOffset: 100,
labelDirection: 'explode',
labelInterpolationFnc: function(value) {
return value;
}
}],
['screen and (min-width: 1024px)', {
labelOffset: 0,
chartPadding: 10
}]
];
new Chartist.Pie('.ct-pie-chart', dataPie, optionsPie, responsiveOptionsPie);
let dataBar = <?= $data_char_bar??'{}' ?>;
let optionsBar = {
seriesBarDistance: 10
};
let responsiveOptionsBar = [
['screen and (max-width: 640px)', {
seriesBarDistance: 5,
axisX: {
labelInterpolationFnc: function(value) {
return value[0];
}
}
}]
];
new Chartist.Bar('.ct-bar-chart', dataBar, optionsBar, responsiveOptionsBar);
});
</script>
<?= sweetAlert() ?>

View File

@ -1,12 +0,0 @@
<!--Content Body-->
<div class="content-body"></div>
<!-- Required vendors -->
<script src="<?=site_url("themes/focus2/vendor/global/global.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/quixnav-init.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/custom.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/sweetalert2/dist/sweetalert2.min.js")?>"></script>
<script>
"use strict";
$(document).ready(function () {
});
</script>

View File

@ -1,29 +0,0 @@
<div class="content-body">
<div class="container-fluid">
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4><i class="<?= $title['icon']??'' ?>"></i> <?= $title['module']??'' ?></h4>
<span class="ml-1"><?= $title['page']??'' ?></span>
</div>
</div>
<div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<ol class="breadcrumb">
<?php foreach ($breadcrumb??[] as $item) : ?>
<?php if (!$item['active']) : ?>
<li class="breadcrumb-item"><a href="<?= site_url($item['route']) ?>"><?= $item['title'] ?></a></li>
<?php else : ?>
<li class="breadcrumb-item active"><?= $item['title'] ?></li>
<?php endif; ?>
<?php endforeach; ?>
</ol>
</div>
</div>
</div>
</div>
<!-- Required vendors -->
<script src="<?=site_url("themes/focus2/vendor/global/global.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/quixnav-init.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/custom.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/sweetalert2/dist/sweetalert2.min.js")?>"></script>
<?= sweetAlert() ?>

View File

@ -68,7 +68,7 @@
<?php foreach ($permiso->rules as $key => $rules): ?>
<tr>
<td class="text-nowrap fw-semibold" >
&emsp;&emsp;<?= lang("RolesPermisos." . $key . "Section") ?>
&emsp;&emsp;<?= lang("RolesPermisos." . convertToCamelCase($key) . "Section") ?>
</td>
<?php foreach ($rules as $rule): ?>
<td>

View File

@ -1,172 +1,77 @@
<div class="row">
<div class="col-md-12 col-lg-6 px-4">
<div class="row">
<div class="col-md-12 col-lg-6 px-4">
<div class="mb-3">
<label for="firstName" class="form-label">
<?=lang('Users.firstName') ?>
</label>
<input tabindex="1" type="text" id="firstName" name="first_name" maxLength="150" class="form-control" value="<?=old('first_name', $user->first_name) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="firstName" class="form-label">
<?= lang('Users.firstName') ?>
</label>
<input tabindex="1" type="text" id="firstName" name="first_name" maxLength="150" class="form-control"
value="<?= old('first_name', $user->first_name) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="address" class="form-label">
<?=lang('Users.address') ?>
</label>
<input tabindex="3" type="text" id="address" name="address" maxLength="255" class="form-control" value="<?=old('address', $user->address) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="email" class="form-label">
<?= lang('Users.email') ?>*
</label>
<input tabindex="13" type="email" id="email" name="email" maxLength="150" class="form-control"
value="<?= old('email', $user->email) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="state" class="form-label">
<?=lang('Users.state') ?>
</label>
<input tabindex="5" type="text" id="state" name="state" maxLength="255" class="form-control" value="<?=old('state', $user->state) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="country" class="form-label">
<?=lang('Users.country') ?>
</label>
<select tabindex="7" id="country" name="country" class="select2 form-control " style="width: 100%;" >
<option value=""><?=lang('Basic.global.pleaseSelectA', [lang('Users.country')]) ?></option>
<?php foreach ($paisList as $item) : ?>
<option value="<?=$item->code ?>"<?=$item->code==$user->country ? ' selected':'' ?> >
<?=$item->nombre ?>
</option>
<?php endforeach; ?>
</select>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="dateBirth" class="form-label">
<?=lang('Users.dateBirth') ?>
</label>
<input tabindex="9" type="date" id="dateBirth" name="date_birth" maxLength="10" class="form-control" value="<?=old('date_birth', $user->date_birth) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-group">
<label for="group" class="form-label"> <?= lang('Users.group') ?></label>
<select tabindex="17" name="group[]" id="group" multiple="multiple"
class="form-control select2 form-select">
<option value=""><?= lang('Basic.global.pleaseSelectA', [lang('Users.group')]) ?></option>
<?php
$selectedGroups = isset($selectedGroups) && is_array($selectedGroups) ? $selectedGroups : [];
$selectedKeywords = array_map(fn($group) => $group->group, $selectedGroups);
foreach ($groups as $item) :
$isSelected = in_array($item->keyword, $selectedKeywords) ? 'selected' : '';
?>
<option value="<?= $item->keyword ?>"
data-select2-id=<?= $item->keyword ?> <?= $isSelected ?>>
<?= $item->title ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="mobile" class="form-label">
<?=lang('Users.mobile') ?>
</label>
<input tabindex="11" type="text" id="mobile" name="mobile" maxLength="50" class="form-control" value="<?=old('mobile', $user->mobile) ?>">
</div><!--//.mb-3 -->
</div><!--//.col -->
<div class="col-md-12 col-lg-6 px-4">
<div class="mb-3">
<label for="email" class="form-label">
<?=lang('Users.email') ?>*
</label>
<input tabindex="13" type="email" id="email" name="email" maxLength="150" class="form-control" value="<?=old('email', $user->email) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="lastName" class="form-label">
<?= lang('Users.lastName') ?>
</label>
<input tabindex="2" type="text" id="lastName" name="last_name" maxLength="150" class="form-control"
value="<?= old('last_name', $user->last_name) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="password" class="form-label">
<?=lang('Users.password') ?>*
</label>
<input tabindex="15" type="password" id="password" name="password" maxLength="35" class="form-control" value="<?=old('password', $user->password) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="status" class="form-label">
<?= lang('Users.blocked') ?>
</label>
<?php $isBanned = old('blocked', $user->status); ?>
<select tabindex="12" name="status" id="status" class="select2 form-control">
<option value="0" <?= is_null($isBanned) ? 'selected' : '' ?>><?= lang("Users.non_blocked") ?></option>
<option value="1" <?= $isBanned === "banned" ? 'selected' : '' ?>><?= lang("Users.blocked") ?></option>
</select>
</div>
<div class="mb-3">
<div class="form-group">
<label for="group" class="form-label"> <?=lang('Users.group') ?></label>
<select tabindex="17" name="group[]" id="group" multiple="multiple" class="form-control select2 form-select">
<option value=""><?=lang('Basic.global.pleaseSelectA', [lang('Users.group')]) ?></option>
<?php foreach ($groups as $item) : ?>
<?php if (isset($selectedGroups) && sizeof($selectedGroups)>=1): ?>
<?php foreach ($selectedGroups as $selItem) : ?>
<option value="<?=$item->token ?>" data-select2-id=<?=$item->token ?> <?=$item->token==$selItem['token_group']?'selected':'' ?>> <?= $item->title ?>
</option>
<?php endforeach; ?>
<?php else: ?>
<option value="<?=$item->token ?>" data-select2-id=<?=$item->token ?> > <?= $item->title ?>
</option>
<?php endif ?>
<?php endforeach; ?>
</select>
</div>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="active" class="form-label">
<?= lang('Users.status') ?>
</label>
<?php $isActive = old('status', $user->active); ?>
<select tabindex="16" name="active" id="active" class="select2 form-control">
<option value="1" <?= $isActive ? 'selected' : '' ?>><?= lang("Users.global_active") ?></option>
<option value="0" <?= $isActive ? '' : 'selected' ?>><?= lang("Users.global_inactive") ?></option>
</select>
</div><!--//.mb-3 -->
</div><!--//.col -->
</div><!--//.col -->
<div class="col-md-12 col-lg-6 px-4">
<div class="mb-3">
<label for="lastName" class="form-label">
<?=lang('Users.lastName') ?>
</label>
<input tabindex="2" type="text" id="lastName" name="last_name" maxLength="150" class="form-control" value="<?=old('last_name', $user->last_name) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="city" class="form-label">
<?=lang('Users.city') ?>
</label>
<input tabindex="4" type="text" id="city" name="city" maxLength="255" class="form-control" value="<?=old('city', $user->city) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="zipCode" class="form-label">
<?=lang('Users.zipCode') ?>
</label>
<input tabindex="6" type="text" id="zipCode" name="zip_code" maxLength="50" class="form-control" value="<?=old('zip_code', $user->zip_code) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-group">
<label for="language" class="text-dark"><?=lang("Users.language")?></label>
<?php $id_select = old('language', $user->language);?>
<select tabindex="8" name="language" id="language" class="form-control">
<option value=""><?=lang("App.global_select")?></option>
<option value="en" <?= $id_select == "en" ? 'selected' : '' ?>><?=lang("App.lang_en")?></option>
<option value="es" <?= $id_select == "es" ? 'selected' : '' ?>><?=lang("App.lang_es")?></option>
</select>
</div>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="picture" class="form-label">
<?=lang('Users.picture') ?>
</label>
<input tabindex="10" type="text" id="picture" name="picture" placeholder="/assets/img/default-user.png" maxLength="150" class="form-control" value="<?=old('picture', $user->picture) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="blocked" class="form-label">
<?=lang('Users.blocked') ?>
</label>
<?php $id_select = old('blocked', $user->blocked);?>
<select tabindex="12" name="blocked" id="blocked" class="select2 form-control">
<option value="0" <?= $id_select == "0" ? 'selected' : '' ?>><?=lang("Users.non_blocked")?></option>
<option value="1" <?= $id_select == "1" ? 'selected' : '' ?>><?=lang("Users.blocked")?></option>
</select>
</div>
<div class="mb-3">
<label for="emailConfirmed" class="form-label">
<?=lang('Users.emailConfirmed') ?>*
</label>
<?php $id_select = old('email_confirmed', $user->email_confirmed);?>
<select tabindex="14" name="email_confirmed" id="email_confirmed" class="select2 form-control">
<option value="0" <?= $id_select == "0" ? 'selected' : '' ?>><?=lang("Users.email_not_confirmed")?></option>
<option value="1" <?= $id_select == "1" ? 'selected' : '' ?>><?=lang("Users.email_confirmed")?></option>
</select>
</div>
<div class="mb-3">
<label for="status" class="form-label">
<?=lang('Users.status') ?>
</label>
<?php $id_select = old('status', $user->status);?>
<select tabindex="16" name="status" id="status" class="select2 form-control">
<option value="1" <?= $id_select == "1" ? 'selected' : '' ?>><?=lang("Users.global_active")?></option>
<option value="0" <?= $id_select == "0" ? 'selected' : '' ?>><?=lang("Users.global_inactive")?></option>
</select>
</div><!--//.mb-3 -->
</div><!--//.col -->
</div><!-- //.row -->
</div><!-- //.row -->