Merge branch 'main' into feat/wiki

This commit is contained in:
amazuecos
2025-02-22 07:26:52 +01:00
83 changed files with 2851 additions and 867 deletions

View File

@ -423,7 +423,7 @@
decimalCharacter: ",",
digitGroupSeparator: ".",
allowDecimalPadding : 'floats',
decimalPlaces: 2,
decimalPlaces: 6,
unformatOnSubmit: true,
});
})
@ -543,7 +543,7 @@
return '<?= lang('MaquinasTarifasImpresions.colorhq') ?>';
}
},
{ 'data': 'precio',render : (d) => `<span class="autonumeric">${d}</span>` },
{ 'data': 'precio',render : (d) => `<span class="autonumeric-decimal" data-decimal-places="6">${d}</span>` },
{ 'data': 'margen',render : (d) => `<span class="autonumeric">${d}</span>` },
{
data: actionBtns,

View File

@ -23,7 +23,15 @@
<input type="text" id="codeOt" name="code_ot" maxLength="5" class="form-control"
value="<?= old('code_ot', $papelGenerico->code_ot) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-check">
<label for="activo_papel_generico" class="form-check-label">
<?= lang('PapelGenerico.activo') ?>
</label>
<input type="checkbox" id="activo_papel_generico" name="activo" value="1"
class="form-check-input" <?= $papelGenerico->activo == true ? 'checked' : ''; ?>>
</div><!--//.form-check -->
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-check">

View File

@ -144,6 +144,7 @@
}
});
<?=$this->endSection() ?>

View File

@ -21,6 +21,7 @@
<th><?= lang('PapelGenerico.codeOt') ?></th>
<th><?= lang('PapelGenerico.showInClient') ?></th>
<th><?= lang('PapelGenerico.showInClientSpecial') ?></th>
<th><?= lang('PapelGenerico.activo') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
@ -92,13 +93,14 @@
{ 'data': 'code_ot' },
{ 'data': 'show_in_client' },
{ 'data': 'show_in_client_special' },
{ 'data': 'activo' },
{ 'data': actionBtns }
]
});
theTable.on( 'draw.dt', function () {
const boolCols = [3, 4];
const boolCols = [3, 4, 5];
for (let coln of boolCols) {
theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) {
cell.innerHTML = cell.innerHTML == '1' ? '<i class="ti ti-check"></i>' : '';

View File

@ -64,7 +64,9 @@ const actionBtns = function(data) {
<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
<?php if(auth()->user()->can('presupuesto.delete')): ?>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
<?php endif; ?>
</div>
</td>`;
}
@ -240,7 +242,7 @@ $(document).on('click', '.btn-remove', function(e) {
const row = $(this).closest('tr');
if ($.isNumeric(dataId)) {
$.ajax({
url: `/presupuestoadmin/delete/${dataId}`,
url: `/presupuestos/presupuestocliente/delete/${dataId}`,
method: 'GET',
}).done((data, textStatus, jqXHR) => {
$('#confirm2delete').modal('toggle');

View File

@ -55,7 +55,9 @@ const actionBtns = function(data) {
<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
<?php if(auth()->user()->can('presupuesto.delete')): ?>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
<?php endif; ?>
</div>
</td>`;
};
@ -287,13 +289,13 @@ $(document).on('click', '.btn-edit', function(e) {
window.location.href = `/presupuestoadmin/edit/${$(this).attr('data-id')}/`;
});
theTable.on('click', 'tr', function () {
var data = theTable.row(this).data();
console.log(data);
theTable.on('click', 'tbody td:not(:last-child)', function () {
var data = theTable.row($(this).closest('tr')).data();
var url = '/presupuestoadmin/edit/' + data['id'];
window.location.href = url;
});
$(document).on('click', '.btn-delete', function(e) {
$(".btn-remove").attr('data-id', $(this).attr('data-id'));
});
@ -304,7 +306,7 @@ $(document).on('click', '.btn-remove', function(e) {
const row = $(this).closest('tr');
if ($.isNumeric(dataId)) {
$.ajax({
url: `/presupuestoadmin/delete/${dataId}`,
url: `/presupuestos/presupuestocliente/delete/${dataId}`,
method: 'GET',
}).done((data, textStatus, jqXHR) => {
$('#confirm2delete').modal('toggle');

View File

@ -50,21 +50,25 @@
const lastColNr = $('#tableOfPresupuestos').find("tr:first th").length - 1;
const actionBtns = function(data) {
if(data.estado == 'borrador')
if(data.estado == 'borrador'){
return `
<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
<?php if(auth()->user()->can('presupuesto-cliente.delete')): ?>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
<?php endif; ?>
</div>
</td>`;
else
}
else{
return `
<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-eye ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
</div>
</td>`;
}
};
// Setup - add a text input to each footer cell
@ -292,8 +296,8 @@ theTable = $('#tableOfPresupuestos').DataTable({
]
});
theTable.on('click', 'tr', function () {
var data = theTable.row(this).data();
theTable.on('click', 'tbody td:not(:last-child)', function () {
var data = theTable.row($(this).closest('tr')).data();
var url = '/presupuestos/presupuestocliente/edit/' + data['id'];
window.location.href = url;
});

View File

@ -0,0 +1,192 @@
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!-- Modal -->
<div class="modal fade" id="imageModal" tabindex="-1" aria-labelledby="imageModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="imageModalLabel">Vista Previa</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
</div>
<div class="modal-body text-center">
<img src="" id="modalImage" class="img-fluid rounded">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h4><?= $boxTitle ?></h4>
</div>
<div class="card-body">
<form method="post" class="card-body" action="<?= $formAction ?>" enctype="multipart/form-data">
<?= csrf_field(); ?>
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
<div class="row">
<div class="mb-3 col-9">
<label class="form-label"><?= lang("Tickets.asunto") ?></label>
<input type="text" name="titulo" class="form-control"
<?= ($formAction !== route_to('NewTicket', $ticket->id)) ? "readonly" : "" ?>
value="<?= old('titulo', $ticket->titulo) ?>">
</div>
</div>
<div class="row">
<div class="col-3 mb-3">
<label class="form-label"><?= lang("Tickets.tipo") ?></label>
<select id="categoria" name="categoria_id" class="form-control select2"
<?= ($formAction !== route_to('NewTicket', $ticket->id) && !auth()->user()->can('tickets.edit')) ? "disabled" : "" ?>>
<?php foreach ($categorias as $categoria): ?>
<option value="<?= $categoria['id']; ?>" <?= $categoria['id'] == $ticket->categoria_id ? ' selected' : '' ?>> <?= $categoria['text']; ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-3 mb-3">
<label class="form-label"><?= lang("Tickets.seccion") ?></label>
<select id="seccion" name="seccion_id" class="form-control select2"
<?= ($formAction !== route_to('NewTicket', $ticket->id) && !auth()->user()->can('tickets.edit')) ? "disabled" : "" ?>>
<?php foreach ($secciones as $seccion): ?>
<option value="<?= $seccion['id']; ?>" <?= $seccion['id'] == $ticket->seccion_id ? ' selected' : '' ?>><?= $seccion['text']; ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-3 mb-3">
<label class="form-label"><?= lang("Tickets.estado") ?></label>
<?php if ($formAction !== route_to('NewTicket') && auth()->user()->can('tickets.edit')): ?>
<select id="estado" name="estado_id" class="form-control select2">
<?php else: ?>
<select id="estado" name="estado_id" class="form-control select2" disabled>
<?php endif; ?>
<?php foreach ($estados as $estado): ?>
<option value="<?= $estado['id']; ?>" <?= $estado['id'] == $ticket->estado_id ? ' selected' : '' ?>><?= $estado['text']; ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<?php if (auth()->user()->can('tickets.edit')): ?>
<div class="row">
<div class="mb-3 col-3">
<label class="form-label"><?= lang('Tickets.prioridad') ?></label>
<select id="prioridad" name="prioridad" class="form-control">
<option value="baja" <?= $ticket->prioridad == 'baja' ? ' selected' : '' ?>>
<?= lang('Tickets.alta') ?>
</option>
<option value="media" <?= $ticket->prioridad == 'media' ? ' selected' : '' ?>>
<?= lang('Tickets.media') ?>
</option>
<option value="alta" <?= $ticket->prioridad == 'alta' ? ' selected' : '' ?>>
<?= lang('Tickets.baja') ?>
</option>
</select>
</div>
<div class="mb-3 col-3">
<label class="form-label"><?= lang('Tickets.asignarTo') ?></label>
<select id="user_soporte_id" name="user_soporte_id" class="form-control">
<?php foreach ($supportUsers as $supportUser): ?>
<option value="<?= $supportUser['id']; ?>" <?= $supportUser['id'] == $ticket->user_soporte_id ? ' selected' : '' ?>><?= $supportUser['name']; ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<?php endif; ?>
<div class="mb-3">
<label class="form-label"><?= lang("Tickets.descripcion") ?></label>
<textarea id="descripcion" name="descripcion" class="form-control"
<?= ($formAction !== route_to('NewTicket', $ticket->id)) ? "readonly" : "" ?>
rows="4"><?= old('descripcion', $ticket->descripcion) ?></textarea>
</div>
<?php if (isset($respuesta) || ($formAction !== route_to('NewTicket') && auth()->user()->can('tickets.edit'))) : ?>
<h4><?= lang("Tickets.respuesta") ?></h4>
<div class="mb-3">
<label class="form-label"><?= lang("Tickets.respuesta") ?></label>
<textarea id="respuestaMensaje" name="respuesta_mensaje" class="form-control"
<?= !auth()->user()->can('tickets.edit') ? "readonly" : "" ?>
rows="4"><?= isset($respuesta) ? old('respuestaMensaje', $respuesta->mensaje) : "" ?></textarea>
</div>
<?php endif; ?>
<?php if ($formAction === route_to('NewTicket') || ($formAction !== route_to('NewTicket') && auth()->user()->can('tickets.edit'))): ?>
<div class="row">
<div class="mb-3">
<label for="filesInput" class="form-label"><?= lang("Tickets.adjuntos") ?></label>
<input name="files[]" class="form-control" type="file" id="filesInput" multiple
accept="image/*">
</div>
</div>
<?php endif; ?>
<?php if ($formAction !== route_to('NewTicket')): ?>
<h4><?= lang("Tickets.adjuntos_ticket") ?></h4>
<div class="container">
<?php foreach ($imagesTicket as $image): ?>
<div class="row">
<div class="col-md-3 mb-3">
<img src="<?= esc($image['path']) ?>" class="img-thumbnail img-fluid gallery-img"
data-bs-toggle="modal" data-bs-target="#imageModal" data-src="<?= esc($image['path']) ?>"
style="cursor:pointer;">
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<div class="pt-4">
<?php if (
$formAction === route_to('NewTicket') ||
($formAction !== route_to('NewTicket') && auth()->user()->can('tickets.edit'))
): ?>
<input
type="submit"
class="btn btn-primary float-start me-sm-3 me-1"
name="save"
value="<?= lang("Basic.global.Save") ?>" />
<?php endif; ?>
<?= anchor(route_to("TicketIndex"), lang("Basic.global.back"), ["class" => "btn btn-secondary"]) ?>
</div>
</form>
</div>
</div>
</div>
</div>
<?= $this->endSection(); ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/dropzone/dropzone.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/dropzone/dropzone.js") ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/soporte/tickets.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,76 @@
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content')?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= lang('Tickets.moduleTitle') ?></h3>
<?= anchor(route_to('NewTicket'), lang('Basic.global.addNew') . ' ' . lang('Tickets.ticket'), ['class' => 'btn btn-primary float-end']); ?>
</div><!--//.card-header -->
<div class="card-body">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<table id="tableOfTickets" class="table table-striped table-hover using-exportable-data-table"
style="width: 100%;">
<thead>
<tr>
<th>ID</th>
<th><?= lang('Tickets.tipo') ?></th>
<th><?= lang('Tickets.seccion') ?></th>
<th><?= lang('Tickets.estado') ?></th>
<?php if ($userType == 1) : ?>
<th><?= lang('Tickets.prioridad') ?></th>
<?php endif; ?>
<th><?= lang('Tickets.asunto') ?></th>
<?php if ($userType == 1) : ?>
<th><?= lang('Tickets.usuario') ?></th>
<th><?= lang('Tickets.asignarTo') ?></th>
<?php endif; ?>
<th><?= lang('Tickets.fechaCreacion') ?></th>
<th class="text-nowrap noFilter"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div><!--//.card-body -->
<div class="card-footer">
</div><!--//.card-footer -->
</div><!--//.card -->
</div><!--//.col -->
</div><!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet"
href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.css") ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script>
window.userType = <?= $userType ?>;
</script>
<script
src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>"></script>
<script
src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.print.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/jszip/jszip.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/pdfmake.min.js") ?>"
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.colVis.min.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/soporte/tickets.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -54,7 +54,16 @@
<?= lang('Tarifaacabado.mostrar_en_presupuesto') ?>
</label>
</div><!--//.form-check -->
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-check">
<label for="mostrar_en_presupuesto_cliente" class="form-check-label">
<input type="checkbox" id="mostrar_en_presupuesto_cliente" name="mostrar_en_presupuesto_cliente" value="1" class="form-check-input" <?= $tarifaacabadoEntity->mostrar_en_presupuesto_cliente == true ? 'checked' : ''; ?>>
<?= lang('Tarifaencuadernacion.mostrar_en_presupuesto_cliente') ?>
</label>
</div><!--//.form-check -->
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-check">
<label for="acabado_cubierta" class="form-check-label">

View File

@ -21,6 +21,7 @@
<th><?= lang('Tarifaacabado.precioMin') ?></th>
<th><?= lang('Tarifaacabado.importeFijo') ?></th>
<th><?= lang('Tarifaacabado.mostrar_en_presupuesto') ?></th>
<th><?= lang('Tarifaacabado.mostrar_en_presupuesto_cliente') ?></th>
<th><?= lang('Tarifaacabado.acabado_cubierta') ?></th>
<th><?= lang('Tarifaacabado.acabado_sobrecubierta') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
@ -95,6 +96,7 @@
{ 'data': 'precio_min' },
{ 'data': 'importe_fijo' },
{ 'data': 'mostrar_en_presupuesto' },
{ 'data': 'mostrar_en_presupuesto_cliente' },
{ 'data': 'acabado_cubierta' },
{ 'data': 'acabado_sobrecubierta' },
{ 'data': actionBtns }
@ -102,7 +104,7 @@
});
theTable.on( 'draw.dt', function () {
const boolCols = [3, 4, 5];
const boolCols = [3, 4, 5,6,7];
for (let coln of boolCols) {
theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) {
cell.innerHTML = cell.innerHTML == '1' ? '<i class="ti ti-check"></i>' : '';

View File

@ -46,6 +46,14 @@
</label>
</div><!--//.form-check -->
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-check">
<label for="mostrar_en_presupuesto_cliente" class="form-check-label">
<input type="checkbox" id="mostrar_en_presupuesto_cliente" name="mostrar_en_presupuesto_cliente" value="1" class="form-check-input" <?= $tarifaEncuadernacionEntity->mostrar_en_presupuesto_cliente == true ? 'checked' : ''; ?>>
<?= lang('Tarifaencuadernacion.mostrar_en_presupuesto_cliente') ?>
</label>
</div><!--//.form-check -->
</div><!--//.mb-3 -->
</div><!-- //.col -->
<div class="col-md-12 col-lg-4 px-4">

View File

@ -19,6 +19,7 @@
<th><?= lang('Tarifaencuadernacion.nombre') ?></th>
<th><?= lang('Tarifaencuadernacion.code') ?></th>
<th><?= lang('Tarifaencuadernacion.mostrar_en_presupuesto') ?></th>
<th><?= lang('Tarifaencuadernacion.mostrar_en_presupuesto_cliente') ?></th>
<th><?= lang('Tarifaencuadernacion.tipo_encuadernacion') ?></th>
<th><?= lang('Tarifaencuadernacion.servicio_encuadernacion') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
@ -91,6 +92,7 @@
{ 'data': 'nombre' },
{ 'data': 'code' },
{ 'data': 'mostrar_en_presupuesto' },
{ 'data': 'mostrar_en_presupuesto_cliente' },
{ 'data': 'tipo_encuadernacion' },
{ 'data': 'servicio_encuadernacion' },
{ 'data': actionBtns }
@ -98,7 +100,7 @@
});
theTable.on( 'draw.dt', function () {
const boolCols = [1,2,3, 4];
const boolCols = [1,2,3,4,5];
for (let coln of boolCols) {
theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) {
cell.innerHTML = cell.innerHTML == '1' ? '<i class="ti ti-check"></i>' : '';

View File

@ -81,7 +81,19 @@
</label>
</div>
</div>
<div class="mb-3">
<div class="form-check form-check-inline">
<input type="checkbox"
id="mostrar_en_presupuesto_cliente"
name="mostrar_en_presupuesto_cliente"
value="1"
class="form-check-input"<?= $tarifaextraEntity->mostrar_en_presupuesto_cliente == true ? 'checked' : ''; ?>
>
<label for="mostrar_en_presupuesto_cliente" class="form-check-label">
<?= lang('Tarifaextra.mostrar_en_presupuesto_cliente') ?>
</label>
</div>
</div>
</div><!--//.col -->
</div><!-- //.row -->

View File

@ -1,6 +1,6 @@
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout')?>
<?= $this->section("content") ?>
<div class="row">
<div class="col-12">

View File

@ -1,6 +1,6 @@
<?=$this->include('themes/_commonPartialsBs/datatables') ?>
<?=$this->extend('themes/vuexy/main/defaultlayout') ?>
<?=$this->section('content'); ?>
<?=$this->section('content')?>
<div class="row">
<div class="col-md-12">
@ -20,6 +20,7 @@
<th><?= lang('Tarifaextra.precio') ?></th>
<th><?= lang('Tarifaextra.margen') ?></th>
<th><?= lang('Tarifaextra.mostrar_en_presupuesto') ?></th>
<th><?= lang('Tarifaextra.mostrar_en_presupuesto_cliente') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
@ -46,6 +47,9 @@
<td class="align-middle">
<?= esc($item->mostrar_en_presupuesto)==1?'<i class="ti ti-check"></i>':"" ?>
</td>
<td class="align-middle">
<?= esc($item->mostrar_en_presupuesto_cliente)==1?'<i class="ti ti-check"></i>':"" ?>
</td>
<td class="align-middle text-center text-nowrap">
<?=anchor(route_to('editTarifaextra', $item->id), "<i class='ti ti-pencil ti-sm mx-2'></i>", ['class'=>'text-body', 'data-id'=>$item->id,]); ?>
<?=anchor('#confirm2delete', "<i class='ti ti-trash ti-sm mx-2'></i>", ['class'=>'text-body', 'data-href'=>route_to('deleteTarifaextra', $item->id), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?>

View File

@ -52,7 +52,14 @@
</label>
</div><!--//.form-check -->
</div><!--//.mb-3 -->
<div class="mb-3">
<div class="form-check">
<label for="mostrar_en_presupuesto_cliente" class="form-check-label">
<input type="checkbox" id="mostrar_en_presupuesto_cliente" name="mostrar_en_presupuesto_cliente" value="1" class="form-check-input" <?= $tarifaManipuladoEntity->mostrar_en_presupuesto_cliente == true ? 'checked' : ''; ?>>
<?= lang('Tarifaencuadernacion.mostrar_en_presupuesto_cliente') ?>
</label>
</div><!--//.form-check -->
</div><!--//.mb-3 -->
</div><!--//.col -->
</div><!-- //.row -->

View File

@ -21,6 +21,7 @@
<th><?= lang('Tarifamanipulado.importeMinimo') ?></th>
<th><?= lang('Tarifamanipulado.importeFijo') ?></th>
<th><?= lang('Tarifamanipulado.mostrar_en_presupuesto') ?></th>
<th><?= lang('Tarifamanipulado.mostrar_en_presupuesto_cliente') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
@ -91,7 +92,8 @@
{ 'data': 'code' },
{ 'data': 'precio_min' },
{ 'data': 'importe_fijo' },
{ 'data': 'mostrar_en_presupuesto' },
{ 'data': 'mostrar_en_presupuesto',render : (d) => d == true ? '<i class="ti ti-check"></i>' : "" },
{ 'data': 'mostrar_en_presupuesto_cliente',render : (d) => d == true ? '<i class="ti ti-check"></i>' : "" },
{ 'data': actionBtns }
]
});

View File

@ -81,6 +81,19 @@
</label>
</div>
</div>
<div class="mb-3">
<div class="form-check form-check-inline">
<input type="checkbox"
id="mostrar_en_presupuesto_cliente"
name="mostrar_en_presupuesto_cliente"
value="1"
class="form-check-input"<?= $tarifapreimpresionEntity->mostrar_en_presupuesto_cliente == true ? 'checked' : ''; ?>
>
<label for="mostrar_en_presupuesto_cliente" class="form-check-label">
<?= lang('Tarifaextra.mostrar_en_presupuesto_cliente') ?>
</label>
</div>
</div>
</div><!--//.col -->
</div><!-- //.row -->

View File

@ -20,6 +20,7 @@
<th><?= lang('Tarifapreimpresion.precio') ?></th>
<th><?= lang('Tarifapreimpresion.margen') ?></th>
<th><?= lang('Tarifapreimpresion.mostrar_en_presupuesto') ?></th>
<th><?= lang('Tarifapreimpresion.mostrar_en_presupuesto_cliente') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
@ -45,6 +46,9 @@
<td class="align-middle">
<?= esc($item->mostrar_en_presupuesto)==1?'<i class="ti ti-check"></i>':"" ?>
</td>
<td class="align-middle">
<?= esc($item->mostrar_en_presupuesto_cliente)==1?'<i class="ti ti-check"></i>':"" ?>
</td>
<td class="align-middle text-center text-nowrap">
<?=anchor(route_to('editTarifapreimpresion', $item->id), "<i class='ti ti-pencil ti-sm mx-2'></i>", ['class'=>'text-body', 'data-id'=>$item->id,]); ?>
<?=anchor('#confirm2delete', "<i class='ti ti-trash ti-sm mx-2'></i>", ['class'=>'text-body', 'data-href'=>route_to('deleteTarifapreimpresion', $item->id), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?>

View File

@ -50,6 +50,8 @@
require "menus/wiki_menu.php";
require "menus/soporte_menu.php";
require "menus/sistema_menu.php";

View File

@ -2,19 +2,16 @@
/**
* MENU PRESUPUESTOS VISTA CLIENTES
*/
if (auth()->user()->inGroup('cliente-admin')
|| auth()->user()->inGroup('cliente-editor')
|| auth()->user()->inGroup('admin')
) {
if (auth()->user()->can('presupuesto-cliente.menu') || auth()->user()->inGroup('admin')) {
if(auth()->user()->can('presupuesto-cliente.menu')){
?>
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-currency-dollar"></i>
<?php
echo(
auth()->user()->inGroup('admin') ?
auth()->user()->can('presupuesto.menu') ?
lang("App.menu_presupuestos_clientes") :
lang("App.menu_presupuestos")
);
@ -38,6 +35,6 @@ if (auth()->user()->inGroup('cliente-admin')
</ul>
</li>
<?php
}
} ?>

View File

@ -0,0 +1,22 @@
<!-- Soporte -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-help"></i>
<?= lang("App.menu_soporte") ?>
</a>
<ul class="menu-sub">
<li class="menu-item">
<a href="<?= route_to("NewTicket") ?>" class="menu-link">
<?= lang("App.menu_soporte_new_ticket") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= route_to("TicketIndex") ?>" class="menu-link">
<?= lang("App.menu_soporte_ticket_list") ?>
</a>
</li>
</ul>
</li>