Merge branch 'main' into 'feat/backups'

arreglado albaranes para que muestren las cajas. tambien se ha actualizado...

See merge request jjimenez/safekat!856
This commit is contained in:
Ignacio Martinez Navajas
2025-06-09 08:08:21 +00:00
260 changed files with 11053 additions and 3987 deletions

View File

@ -11,7 +11,7 @@
<div class="col-md-6">
<div class="mt-lg-4 mt-lg-2 mb-lg-4 mb-2 pt-1 w-100">
<p class="mb-0">OT ID</p>
<h4 class="mb-0"><?= $ot->id ?></h4>
<h4 id="otId" class="mb-0"><?= $ot->id ?></h4>
</div>
<div class="mt-lg-4 mt-lg-2 mb-lg-4 mb-2 pt-1 w-100">
<p class="mb-0">Clicks presupuesto</p>

View File

@ -0,0 +1,45 @@
<div class="card h-100">
<div class="card-body">
<div class="row h-100">
<div class="col-9">
<div class="d-flex flex-column justify-content-evenly gap-2 h-100">
<div class="row mb-2">
<div class="col-md-12">
<h4 class="alert-heading d-flex align-items-center gap-1">
<span id="ot-id-header" style="color:red"></span>
<span id="presupuesto-id" class="fs-bold"></span>
<span id="ot-title" class="fs-bold"></span></h4>
</div>
<div class="col-md-6">
<p class="mb-0">Tiempo estimado</p>
<h4 class="mb-0" id="tiempo-estimado-info">00:00:00</h4>
</div>
<div class="col-md-6">
<p class="mb-0">Tiempo real</p>
<h4 class="mb-0" id="tiempo-real-info">00:00:00</h4>
</div>
</div>
<div class="row">
<div class="col-md-12 form-group form-group-lg">
<label for="input-click-init" class="form-label"><?= lang('Produccion.click_init') ?></label>
<input class="form-control input-lg ot-tarea-click" min="0" name="click_init" id="input-click-init" placeholder="<?= lang('Produccion.click_init') ?>" value="0">
</div>
<div class="col-md-12 form-group form-group-lg">
<label for="input-click-init" class="form-label input-lg"><?= lang('Produccion.click_end') ?></label>
<input class="form-control ot-tarea-click" min="0" name="click_end" id="input-click-end" placeholder="<?= lang('Produccion.click_end') ?>" value="0">
</div>
</div>
</div>
</div>
<div class="col-3 h-100">
<div class="d-flex flex-column justify-content-evenly gap-2 h-100">
<button type="button" id="btn-cancel-tarea" class="maquina-btn btn btn-danger w-100 d-flex justify-content-evenly"><span class="ti ti-square-x ti-lg"></span><?= lang('Produccion.maquinista.cancel') ?></button>
<button type="button" id="btn-finish-tarea" class="maquina-btn btn btn-primary w-100 d-flex justify-content-evenly action-btn"><span class="ti ti-player-eject ti-lg"></span><?= lang('Produccion.maquinista.play_end') ?></button>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,55 @@
<div class="card h-100">
<div class="card-body">
<div class="row h-100">
<div class="col-6">
<div class="d-flex flex-column justify-content-evenly gap-2 h-100">
<div class="row mb-2">
<div class="col-md-6 mb-2">
<p class="mb-0">Tirada</p>
<h5 class="mb-0" id="tirada-info"></h5>
</div>
<div class="col-md-6 mb-2 <?= $maquinaEntity->tipo != "impresion" ? "d-none" : "" ?>" >
<p class="mb-0">Clicks</p>
<h5 class="mb-0" id="clicks-info"></h5>
</div>
</div>
<div class="row mb-2">
<div class="col-md-6">
<p class="mb-0 text-truncate">Tiempo estimado</p>
<h5 class="mb-0" id="tiempo-estimado-info"></h5>
</div>
<div class="col-md-6">
<p class="mb-0 text-truncate">Tiempo real</p>
<h5 class="mb-0" id="tiempo-real-info"></h5>
</div>
</div>
<div class="row" <?= $maquinaEntity->tipo != "impresion" ? "disabled" : "" ?>>
<div class="col-md-12 form-group form-group-lg">
<label for="input-click-init" class="form-label"><?= lang('Produccion.click_init') ?></label>
<input class="form-control input-lg ot-tarea-click" min="0" name="click_init" id="input-click-init" placeholder="<?= lang('Produccion.click_init') ?>" value="0">
</div>
<div class="col-md-12 form-group form-group-lg">
<label for="input-click-init" class="form-label input-lg"><?= lang('Produccion.click_end') ?></label>
<input class="form-control ot-tarea-click" min="0" name="click_end" id="input-click-end" placeholder="<?= lang('Produccion.click_end') ?>" value="0">
</div>
</div>
</div>
</div>
<div class="col-6 h-100">
<div class="d-flex flex-column justify-content-evenly gap-2 h-100">
<button type="button" data-estado="I" id="btn-start-tarea" class="maquina-btn btn btn-success w-100 d-flex justify-content-evenly action-btn"><span class="ti ti-player-play ti-lg"></span><?= lang('Produccion.maquinista.play_tarea') ?></button>
<button type="button" data-estado="S" id="btn-pause-tarea" class="maquina-btn btn btn-info w-100 d-flex justify-content-evenly d-none action-btn"><span class="ti ti-player-pause ti-lg"></span><?= lang('Produccion.maquinista.play_pause') ?></button>
<button type="button" data-estado="D" id="btn-stop-tarea" class="maquina-btn btn btn-warning w-100 d-flex justify-content-evenly"><span class="ti ti-player-stop ti-lg"></span><?= lang('Produccion.maquinista.play_stop') ?></button>
<button type="button" data-estado="F" id="btn-finish-tarea" class="maquina-btn btn btn-primary w-100 d-flex justify-content-evenly action-btn d-none"><span class="ti ti-player-eject ti-lg"></span><?= lang('Produccion.maquinista.play_end') ?></button>
<button type="button" id="btn-delete-tarea" class="maquina-btn btn btn-danger w-100 d-flex justify-content-evenly"><span class="ti ti-square-x ti-lg"></span><?= lang('Produccion.maquinista.cancel') ?></button>
</div>
</div>
</div>
</div>
</div>

View File

@ -148,6 +148,6 @@
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/messages/directMessagePage.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/messages/directMessagePage.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -157,6 +157,6 @@
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatFactura.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/chatFactura.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -144,7 +144,7 @@
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatGeneral.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/chatGeneral.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<!-- <script src="<?= site_url('js_loader/chat_js') ?>"></script> -->
<?= $this->endSection() ?>

View File

@ -151,6 +151,6 @@
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatOrdenTrabajo.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/chatOrdenTrabajo.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -154,6 +154,6 @@
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatPedido.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/chatPedido.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -152,6 +152,6 @@
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatPresupuesto.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/chatPresupuesto.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -31,6 +31,10 @@
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('App.global_save_file') ?></span>
<i class="ti ti-device-floppy ti-xs"></i>
</button>
<button id="<?= $id ?>_btnDownloadFiles" class="btn mt-3 btn-secondary btn-sm waves-effect waves-light ml-2">
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('App.global_download_files') ?></span>
<i class="ti ti-device-floppy ti-xs"></i>
</button>
</div>
</div>
</div>

View File

@ -1,9 +1,9 @@
<div class="table-maquinista table-responsive">
<table id="maquinista-tarea-table" class="table table-hover text-dark" style="width: 100%;">
<table id="<?= $id ?>" class="table table-hover text-dark" style="width: 100%;">
<thead>
<tr>
<th><?= lang('ID') ?></th>
<th><?= lang('OT ID') ?></th>
<th><?= lang('Produccion.task.task') ?></th>
<th><?= lang('Produccion.task.estado') ?></th>
<th><?= lang('Produccion.datatable.fecha_impresion') ?></th>

View File

@ -3,6 +3,8 @@
<table id="<?= $id ?>" class="table table-hover text-dark" style="width: 100%;">
<thead>
<tr>
<th></th>
<th class="w-10"><?= lang('Produccion.datatable.ot_id') ?></th>
<th><?= lang('Produccion.datatable.pedido_id') ?></th>
<th><?= lang('Produccion.datatable.fecha_encuadernacion') ?></th>
<th><?= lang('Produccion.datatable.cliente') ?></th>
@ -14,6 +16,20 @@
<th><?= lang('Produccion.datatable.progreso') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
<tr>
<th></th>
<th><input type="text" class="form-control ot-filter" name="id"></th>
<th><input type="text" class="form-control ot-filter" name="pedido_id"></th>
<th><input type="text" class="form-control ot-filter" name="fecha_encuadernado_at"></th>
<th><input type="text" class="form-control ot-filter" name="cliente_nombre"></th>
<th><input type="text" class="form-control ot-filter" name="presupuesto_titulo"></th>
<th><input type="text" class="form-control ot-filter" name="ubicacion_nombre"></th>
<th><input type="text" class="form-control ot-filter" name="total_tirada"></th>
<th><input type="text" class="form-control ot-filter" name="tipo_presupuesto_impresion"></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>

View File

@ -5,6 +5,7 @@
<tr>
<th><?= lang('Produccion.task.order') ?></th>
<th><?= lang('Produccion.task.task') ?></th>
<th><?= lang('Produccion.task.estado') ?></th>
<th><?= lang('Produccion.task.maquina_presupuesto') ?></th>
<th><?= lang('Produccion.task.maquina_actual') ?></th>
<th><?= lang('Produccion.task.imposicion') ?></th>

View File

@ -0,0 +1,28 @@
<div class="table-responsive">
<table id="<?= $id ?>" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th><?= lang('Produccion.datatable.nombre') ?></th>
<th><?= lang('Produccion.datatable.tareas') ?></th>
<th><?= lang('Produccion.datatable.tirada') ?></th>
<th><?= lang('Produccion.datatable.pliegos_libro') ?></th>
<th><?= lang('Produccion.datatable.tiempo') ?>(HH:MM)</th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<th colspan="3" style="text-align:right">Total:</th>
<th><span id="total-pliegos-maquina"></span></th>
<th id="total-tiempo-pliego-maquina"></th>
<th></th>
</tr>
</tfoot>
</table>
</div>

View File

@ -24,7 +24,6 @@
<th><input type="text" class="form-control planning-filter" name="presupuesto_titulo" placeholder="Titulo"></th>
<th>
<div class="d-flex flex-column gap-2">
<select class="select2 form-select-sm planning-maquina-padre-select" name="lg_maquinas.padre_id"></select>
<select class="select2 form-select-sm planning-maquina-select" name="maquina_planning_nombre"></select>
</div>
</th>

View File

@ -70,9 +70,9 @@
</div>
<div class="col-md-3 mb-3">
<label for="isk" class="form-label">Identificador ISK</label>
<input type="text" id="isk" name="isk" class="form-control" readonly
value="<?= old('isk', $catalogoLibrosEntity->isk) ?>" maxlength="64"
<label for="iskn" class="form-label">Identificador ISKN</label>
<input type="text" id="iskn" name="iskn" class="form-control" readonly
value="<?= old('iskn', $catalogoLibrosEntity->iskn) ?>" maxlength="64"
style="background: #E8E8E8;">
</div>

View File

@ -0,0 +1,58 @@
<div class="accordion accordion-bordered mt-3" id="accordionPedidos">
<div class="card accordion-item">
<h2 class="accordion-header" id="headingPedidos">
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse"
data-bs-target="#collapsePedidos" aria-expanded="false" aria-controls="collapsePedidos">
<h5 class="mb-0">Pedidos</h5>
</button>
</h2>
<div id="collapsePedidos" class="accordion-collapse collapse" data-bs-parent="#accordionPedidos">
<div class="accordion-body">
<!-- Campo oculto para JS -->
<input type="hidden" id="catalogo_id" value="<?= esc($catalogoLibrosEntity->id ?? '') ?>">
<!--
<div class="row">
<div class="col-12 mb-4">
<h5>Pedidos - ERP 2.0</h5>
<table id="tablaPedidosERP2" class="table table-striped" style="width:100%">
<thead>
<tr>
<th>ID</th>
<th>Fecha</th>
<th>Tirada</th>
<th>Precio ud.</th>
<th>Total</th>
<th>Estado</th>
<th>Acciones</th>
</tr>
</thead>
</table>
</div>
-->
<div class="col-12 mb-4 table-responsive">
<h5>Pedidos - Antiguo ERP</h5>
<table id="tablaPedidosAntiguos" class="table table-striped table-hover w-100">
<thead>
<tr>
<th><?= lang('Catalogo.id') ?></th>
<th><?= lang('Catalogo.createdAt') ?></th>
<th><?= lang('Catalogo.tirada') ?></th>
<th><?= lang('Catalogo.precioUd') ?></th>
<th><?= lang('Catalogo.total') ?></th>
<th><?= lang('Catalogo.estado') ?></th>
<th class="text-nowrap" style="min-width: 85px;"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,3 +1,4 @@
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
@ -19,6 +20,7 @@
<?= view("themes/vuexy/form/catalogo/_datosGeneralesFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_otrosDatosFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_configuracionLibroFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_historicoPedidos") ?>
<?= view("themes/vuexy/form/catalogo/_trackingFormItems") ?>
</div>
<!-- /.card-body -->
@ -39,10 +41,21 @@
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>">
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/catalogo/catalogo.js?' . 'token' . '=' . (csrf_token() ?? "token")) ?>"></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 type="module"
src="<?= versioned_asset('assets/js/safekat/pages/catalogo/catalogo.js?' . 'token' . '=' . (csrf_token() ?? "token")) ?>"></script>
<?= $this->endSection() ?>

View File

@ -50,5 +50,5 @@
<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/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 type="module" src="<?= site_url('assets/js/safekat/pages/cliente/cliente.js?'. 'token' . '='. (csrf_token() ?? "token")) ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/cliente/cliente.js?'. 'token' . '='. (csrf_token() ?? "token")) ?>"></script>
<?= $this->endSection() ?>

View File

@ -59,6 +59,6 @@
<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/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/cliente/clienteList.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/cliente/clienteList.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -112,6 +112,6 @@
src="<?= site_url('themes/vuexy/js/datatables-editor/dataTables.editor.min.js') ?>"></script>
<?php if (str_contains($formAction, 'edit')): ?>
<script type="module"
src="<?= site_url('assets/js/safekat/pages/plantillasTarifasCliente/edit.js') ?>"></script>
src="<?= versioned_asset('assets/js/safekat/pages/plantillasTarifasCliente/edit.js') ?>"></script>
<?php endif; ?>
<?= $this->endSection() ?>

View File

@ -52,6 +52,6 @@
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/plantillasTarifasCliente/list.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/plantillasTarifasCliente/list.js') ?>"></script>
<?=$this->endSection() ?>

View File

@ -84,6 +84,6 @@
<!--//.row -->
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/error_presupuesto/indexForm.js') ?>">
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/error_presupuesto/indexForm.js') ?>">
</script>
<?= $this->endSection() ?>

View File

@ -45,6 +45,6 @@
<!--//.row -->
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/error_presupuesto/indexView.js') ?>">
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/error_presupuesto/indexView.js') ?>">
</script>
<?= $this->endSection() ?>

View File

@ -48,17 +48,19 @@
<select name="imposicion_esquema_id" class="form-control" id="imposicion-esquema-select" data-input>
</select>
</div>
<div class="col-lg-6 col-md-6 col-xs-12 mb-3 section-block-esquema">
<div class="d-flex flex-row justify-content-between">
<?php if(isset($method) && $method == "edit"): ?>
<div class="col-lg-6 col-md-6 col-xs-12 mb-3 section-block-esquema">
<div class="d-flex flex-row justify-content-between">
<label for="imposicion-esquema-render" class="form-label">
<?= lang('Imposiciones.imposicion_esquema_drawing') ?>
</label>
<a href="" target="_blank" class="btn btn-primary btn-sm imposicion-esquema-link" disabled><?= lang("Imposiciones.imposicion_esquema_link") ?></a>
</div>
<div id="imposicion-esquema-render">
<svg width="100%" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
</svg>
</div>
</div>
<label for="imposicion-esquema-render" class="form-label">
<?= lang('Imposiciones.imposicion_esquema_drawing') ?>
</label>
<a href="" target="_blank" class="btn btn-primary btn-sm imposicion-esquema-link" disabled><?= lang("Imposiciones.imposicion_esquema_link") ?></a>
</div>
<div id="imposicion-esquema-render">
</div>
</div>
<?php endif; ?>
</div><!-- //.row -->

View File

@ -36,6 +36,6 @@
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/notiflix/notiflix.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/two/two.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/imposiciones/edit_esquema.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/imposiciones/edit_esquema.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -35,6 +35,6 @@
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/notiflix/notiflix.js") ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/imposiciones/edit.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/imposiciones/edit.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -22,24 +22,27 @@
</div>
<div class="col-md-12">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<table id="tableOfImposiciones" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th><?= lang('Imposiciones.id') ?></th>
<th><?= lang('Imposiciones.ancho') ?></th>
<th><?= lang('Imposiciones.alto') ?></th>
<th><?= lang('Imposiciones.unidades') ?></th>
<th><?= lang('Imposiciones.orientacion') ?></th>
<th><?= lang('Imposiciones.maquina') ?></th>
<th><?= lang('Imposiciones.etiqueta') ?></th>
<th><?= lang('Imposiciones.imposicion_esquema') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
<div class="table-responsive">
<table id="tableOfImposiciones" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th><?= lang('Imposiciones.id') ?></th>
<th><?= lang('Imposiciones.ancho') ?></th>
<th><?= lang('Imposiciones.alto') ?></th>
<th><?= lang('Imposiciones.unidades') ?></th>
<th><?= lang('Imposiciones.orientacion') ?></th>
<th><?= lang('Imposiciones.maquina') ?></th>
<th><?= lang('Imposiciones.etiqueta') ?></th>
<th><?= lang('Imposiciones.imposicion_esquema') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</tbody>
</table>
</div>
</div>
@ -80,6 +83,6 @@
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/two/two.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/imposiciones/view.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/imposiciones/view.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -35,6 +35,6 @@
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/notiflix/notiflix.js") ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/imposiciones/new.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/imposiciones/new.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -6,6 +6,13 @@
</label>
<input type="text" id="nombre" name="nombre" required maxLength="255" class="form-control"
value="<?= old('nombre', $maquina->nombre) ?>">
</div>
<div class="col-md-3">
<label for="alias" class="form-label">
<?= lang('Maquinas.alias_ot') ?>*
</label>
<input type="text" id="alias" name="alias_ot" required maxLength="255" class="form-control"
value="<?= old('alias_ot', $maquina->alias_ot) ?>">
</div>
<div class="col-md-2">
<label for="min" class="form-label">
@ -173,7 +180,19 @@
</label>
</div>
</div>
<div class="col-md-3 mt-4 mb-4">
<div class="form-check form-check-inline">
<input type="checkbox"
id="isEtiquetaEnvio"
name="etiqueta_envio"
value="1"
class="form-check-input"<?= $maquina->etiqueta_envio == true ? 'checked' : ''; ?>
>
<label for="isPadre" class="form-check-label">
<?= lang('Maquinas.isEtiquetaEnvio') ?>
</label>
</div>
</div>
<div class="row">
<div class="col-md-2 datosRotativa datosInkjet" style="display: none;">

View File

@ -916,7 +916,7 @@
<?= $this->section('additionalExternalJs') ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/maquinas/duplicate.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/maquinas/duplicate.js') ?>"></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>

View File

@ -57,6 +57,6 @@
<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 type="module" src="<?= site_url('assets/js/safekat/pages/maquinas/maquinasList.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/maquinas/maquinasList.js') ?>"></script>
<?=$this->endSection() ?>

View File

@ -49,6 +49,6 @@
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/messages/configView.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/messages/configView.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -34,5 +34,5 @@
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/messages/editChatDepartmentView.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/messages/editChatDepartmentView.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -164,7 +164,7 @@
<?= $this->section('additionalExternalJs') ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/papel_impresion/duplicate.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/papel_impresion/duplicate.js') ?>"></script>
<?= $this->endSection() ?>
<!------------------------------------------->
<!-- Código JS para general -->

View File

@ -18,6 +18,7 @@
<table id="tableOfPapelesimpresion" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th><?= lang('PapelImpresion.id') ?></th>
<th><?= lang('PapelImpresion.nombre') ?></th>
<th><?= lang('PapelGenerico.papelGenerico') ?></th>
<th><?= lang('PapelImpresion.gramaje') ?></th>
@ -32,6 +33,7 @@
<th><?= lang('PapelImpresion.rotativa') ?></th>
<th><?= lang('PapelImpresion.activo') ?></th>
<th><?= lang('PapelImpresion.useInClient') ?></th>
<th><?= lang('PapelImpresion.precioTonelada') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
@ -80,7 +82,7 @@
}
],
stateSave: true,
order: [[1, 'asc']],
order: [[2, 'asc']],
language: {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},
@ -98,6 +100,7 @@
}
],
columns : [
{ 'data': 'id' },
{ 'data': 'nombre' },
{ 'data': 'papel_generico_id' },
{ 'data': 'gramaje', render : (d) => `<span class="autonumeric">${d}</span>`},
@ -112,13 +115,14 @@
{ 'data': 'rotativa' },
{ 'data': 'isActivo' },
{ 'data': 'use_in_client' },
{ 'data': 'precio_tonelada' },
{ 'data': actionBtns }
]
});
theTable.on( 'draw.dt', function () {
const boolCols = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
const boolCols = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
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

@ -74,5 +74,5 @@
</div>
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/variables.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/variables.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -96,13 +96,21 @@
<div class="row mb-2">
<div <?= ($facturaEntity->serie_id == 7 || $facturaEntity->serie_id == 9 || $facturaEntity->factura_rectificada_id != null) ? "":"style='display:none;'" ?> class="col-md-12 col-lg-2 px-4 factura-R">
<div <?= ($facturaEntity->serie_id == 7 || $facturaEntity->serie_id == 9 || $facturaEntity->factura_rectificativa_id != null) ? "":"style='display:none;'" ?> class="col-md-12 col-lg-2 px-4 factura-R">
<div class="mb-1">
<label for="facturaR" class="form-label factura-R">
<?= ($facturaEntity->factura_rectificada_id != null) ? lang('Facturas.facturaRectificada') : lang('Facturas.facturaRectificativa') ?>:
<?= ($facturaEntity->serie_id == 7 || $facturaEntity->serie_id == 9) ? lang('Facturas.facturaRectificada') : lang('Facturas.facturaRectificativa') ?>
<?php if(!is_null($facturaEntity->factura_rectificada_id)) : ?>
<div class="btn-group btn-group-sm">
<a href="<?= route_to('editarFactura', $facturaEntity->getIdFromNumero($facturaEntity->factura_rectificada_id)); ?>" target="_blank" ><i class="ti ti-file-search ti-sm btn-edit mx-2"></i></a>
</div>
<?php elseif($facturaEntity->factura_rectificativa_id) : ?>
<div class="btn-group btn-group-sm">
<a href="<?= route_to('editarFactura', $facturaEntity->getIdFromNumero($facturaEntity->factura_rectificativa_id)); ?>" target="_blank" ><i class="ti ti-file-search ti-sm btn-edit mx-2"></i></a>
</div>
<?php endif; ?>
</label>
<input <?= ($facturaEntity->estado!='borrador')? "disabled":"" ?> id="facturaR" name="<?= ($facturaEntity->factura_rectificada_id != null) ? 'factura_rectificada_id' : 'factura_rectificativa_id' ?>" tabindex="" maxLength="25" class="form-control update-cabecera factura-R"
<input <?= ($facturaEntity->estado!='borrador')? "disabled":"" ?> id="facturaR" name="<?= ($facturaEntity->serie_id == 7 || $facturaEntity->serie_id == 9) ? 'factura_rectificada_id' : 'factura_rectificativa_id' ?>" tabindex="" maxLength="25" class="form-control update-cabecera factura-R"
<?php if($facturaEntity->factura_rectificada_id == null && $facturaEntity->factura_rectificativa_id == null): ?>
value=""
<?php else: ?>

View File

@ -211,7 +211,7 @@ var editor_lineas = new $.fn.dataTable.Editor( {
name: "base",
attr: {
type: "text",
name : "total",
name : "base",
class :"autonumeric"
}
}, {
@ -224,6 +224,10 @@ var editor_lineas = new $.fn.dataTable.Editor( {
name: "id",
type: "hidden"
},
{
name: "total",
type: "hidden"
}
]
} );
@ -279,7 +283,8 @@ editor_lineas.on( 'preEdit', function ( e, json, data, id ) {
editor_lineas.on( 'postSubmit', function ( e, json, data, action ) {
yeniden(json.<?= csrf_token() ?>);
tableLineas.clearPipeline();
tableLineas.draw();
});
editor_lineas.on( 'submitSuccess', function ( e, json, data, action ) {
@ -495,7 +500,7 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({
$('#total-iva-sum-4').closest('tr').addClass('d-none');
}
else{
totalTotal += totalIVA_4;
//totalTotal += totalIVA_4;
$('#total-iva-sum-4').closest('tr').removeClass('d-none');
}
autoNumericIVA_21.set(totalIVA_21);
@ -503,37 +508,37 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({
$('#total-iva-sum-21').closest('tr').addClass('d-none');
}
else{
totalTotal += totalIVA_21;
//totalTotal += totalIVA_21;
$('#total-iva-sum-21').closest('tr').removeClass('d-none');
}
autoNumericTotal.set(totalTotal);
var total_pagos = autoNumericTotalCobrado.getNumber();
var pendientePago = totalTotal - total_pagos;
if (isNaN(pendientePago)) pendientePago = 0;
autoNumericPendientePago.set(pendientePago);
$.ajax({
url: '<?= route_to('updateFacturaTotales', $facturaEntity->id) ?>',
method: 'POST',
data: {
base: totalSubtotal,
total: totalTotal,
total_pagos: total_pagos,
pendiente: pendientePago,
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v
}
}).done(function (data) {
if (data.estado_pago === 'pagada') {
$('#estado_pago_text').text('<?= lang('Facturas.pagada') ?>').css('color', 'green');
} else {
$('#estado_pago_text').text('<?= lang('Facturas.pendiente') ?>').css('color', 'red');
}
}).fail(function (jqXHR) {
popErrorAlert(jqXHR.responseJSON.messages.error);
});
if(!(<?= $facturaEntity->serie_id ?> == 7 || <?= $facturaEntity->serie_id ?> == 9)){
var total_pagos = autoNumericTotalCobrado.getNumber();
var pendientePago = totalTotal - total_pagos;
if (isNaN(pendientePago)) pendientePago = 0;
autoNumericPendientePago.set(pendientePago);
$.ajax({
url: '<?= route_to('updateFacturaTotales', $facturaEntity->id) ?>',
method: 'POST',
data: {
base: totalSubtotal,
total: totalTotal,
total_pagos: total_pagos,
pendiente: pendientePago,
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v
}
}).done(function (data) {
if (data.estado_pago === 'pagada') {
$('#estado_pago_text').text('<?= lang('Facturas.pagada') ?>').css('color', 'green');
} else {
$('#estado_pago_text').text('<?= lang('Facturas.pendiente') ?>').css('color', 'red');
}
}).fail(function (jqXHR) {
popErrorAlert(jqXHR.responseJSON.messages.error);
});
}
}
});

View File

@ -398,18 +398,31 @@ function updateFooterLineas(table){
pendiente: pendientePago
}
}).done((data, textStatus, jqXHR) => {
if(autoNumericPendientePago.getNumber() == 0){
$('#addPagoRow').hide();
} else {
$('#addPagoRow').show();
}
if(data.estado_pago == 'pagada'){
$('#estado_pago_text').text('<?= lang('Facturas.pagada') ?>');
$('#estado_pago_text').css('color', 'green');
if($('#numero').val().startsWith("REC")){
if($("#vencimiento-rectificativa").length > 0){
$('#estado_pago_text').text('<?= lang('Facturas.pendiente') ?>');
$('#estado_pago_text').css('color', 'red');
}
else{
$('#estado_pago_text').text('<?= lang('Facturas.facturaPagada') ?>');
$('#estado_pago_text').css('color', 'green');
}
}
else{
$('#estado_pago_text').text('<?= lang('Facturas.pendiente') ?>');
$('#estado_pago_text').css('color', 'red');
if(autoNumericPendientePago.getNumber() == 0){
$('#addPagoRow').hide();
} else {
$('#addPagoRow').show();
}
if(data.estado_pago == 'pagada'){
$('#estado_pago_text').text('<?= lang('Facturas.pagada') ?>');
$('#estado_pago_text').css('color', 'green');
}
else{
$('#estado_pago_text').text('<?= lang('Facturas.pendiente') ?>');
$('#estado_pago_text').css('color', 'red');
}
}
}).fail((jqXHR, textStatus, errorThrown) => {
popErrorAlert(jqXHR.responseJSON.messages.error)

View File

@ -1,14 +1,41 @@
<div class="accordion accordion-bordered mt-3" id="rectificadaFactura">
<div class="card accordion-item active">
<h2 class="accordion-header" id="headingrectificadaFactura">
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#accordionRectificadaFacturaTip" aria-expanded="false" aria-controls="accordionRectificadaFacturaTip">
<h3><?= lang("Facturas.facturaRectificada") ?></h3>
<button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionRectificadaFacturaTip" aria-expanded="false"
aria-controls="accordionRectificadaFacturaTip">
<h3><?= lang("Facturas.facturaRectificativa") ?></h3>
</button>
</h2>
<div id="accordionRectificadaFacturaTip" class="accordion-collapse collapse show" data-bs-parent="#rectificadaFactura">
<div id="accordionRectificadaFacturaTip" class="accordion-collapse collapse show"
data-bs-parent="#rectificadaFactura">
<div class="accordion-body">
<p><?= lang("Facturas.facturaPagada") ?></p>
<?php if (isset($facturaEntity->facturaRectificativaPagada)): ?>
<p><?= lang("Facturas.facturaPagada") ?></p>
<?php else: ?>
<div class="row">
<div class="col-xs-12 col-md-3 col-lg-3 mb-2">
<label for="vencimiento_rectificativa"
class="form-label"><?= @lang("Facturas.vencimiento") ?></label>
<div class="input-group">
<input type="date" class="form-control" placeholder="" name="vencimiento_rectificativa"
id="vencimiento-rectificativa" />
<button class="btn btn-outline-warning" id="clearRectDate" type="button"><i
class="ti-eraser ti"></i></button>
</div>
</div>
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="vencimiento_rectificativa"
class="form-label"><?= @lang("Facturas.textoConformarFactura") ?></label>
<div class="input-group">
<button name="conformarFactura" id="conformarFactura" class="btn btn-success" type="button">
<?= lang("Facturas.conformarFactura") ?>
</button>
</div>
</div>
</div>
<?php endif; ?>
</div>
</div>
@ -16,7 +43,7 @@
</div>
<?=$this->section('additionalInlineJs') ?>
<?= $this->section('additionalInlineJs') ?>
<?=$this->endSection() ?>
<?= $this->endSection() ?>

View File

@ -17,7 +17,7 @@
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
<?= view("themes/vuexy/form/facturas/_facturaCabeceraItems") ?>
<?php if($facturaEntity->estado =='borrador') : ?>
<?php if($facturaEntity->estado =='borrador' && !($facturaEntity->serie_id == 7 || $facturaEntity->serie_id == 9)) : ?>
<?= view("themes/vuexy/form/facturas/_addPedidosItems") ?>
<?php endif; ?>
@ -139,6 +139,8 @@ function validatedConfirmed(){
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/sk-datatables.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/datatables-editor/editor.dataTables.min.css') ?>">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/datetime/1.5.2/css/dataTables.dateTime.min.css">
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.css") ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<?=$this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
@ -154,7 +156,9 @@ function validatedConfirmed(){
<script src="<?= site_url('themes/vuexy/js/datatables-editor/dataTables.editor.min.js') ?>"></script>
<script type="text/javascript" src="https://cdn.datatables.net/datetime/1.5.2/js/dataTables.dateTime.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/facturas/facturasEdit.js') ?>"></script>
<?=$this->endSection() ?>

View File

@ -22,8 +22,8 @@
<div class="col-md-6 mb-3">
<label for="xmlFile"
class="form-label"><?= lang('Importador.subirArchivoBubok') ?? 'Subir archivo XML' ?></label>
<input type="file" id="xmlFile" accept=".xml" class="form-control">
class="form-label"><?= lang('Importador.subirArchivoBubok') ?? 'Subir archivo ZIP' ?></label>
<input type="file" id="xmlFile" accept=".zip" class="form-control">
</div>
<div class="col-md-4 mb-3 d-flex align-items-end">
<button type="button" id="importBtn" class="btn btn-success w-100">

View File

@ -28,7 +28,7 @@
</div>
<div class="col-md-4 mb-3 d-flex align-items-end">
<button type="button" id="importBtn" class="btn btn-success w-100">
<button type="button" id="importBtn" class="btn btn-success w-100" disabled>
<i class="fas fa-file-import me-2"></i> <?= lang('Importador.importar') ?? 'Importar' ?>
</button>
</div>

View File

@ -10,7 +10,7 @@
<div class="card">
<div class="card-header">
<h4><?= $boxTitle ?>
<?= ($envioEntity->tipo_envio == 'ferro_prototipo') ? '<span class="badge text-bg-warning fw-lg">FERRO</span>':'' ?>
<?= ($envioEntity->tipo_envio == 'ferro_prototipo') ? '<span class="badge text-bg-warning fw-lg">FERRO</span>' : '' ?>
<?= ($envioEntity->finalizado == 0) ? '' : '<span class="badge text-bg-success fw-lg">FINALIZADO</span>' ?>
</h4>
</div>
@ -114,7 +114,7 @@
</div>
</div>
<?php if ($envioEntity->finalizado == 0 && $envioEntity->tipo_envio=='estandar'): ?>
<?php if ($envioEntity->finalizado == 0 && $envioEntity->tipo_envio == 'estandar'): ?>
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
@ -130,6 +130,7 @@
</div>
<div class="d-flex flex-row mb-3">
<div class="col-sm-6 px-3">
<label for="buscadorPedidos" class="form-label">
<?= lang("Logistica.buscadorPedidosTitle2") ?>
@ -145,229 +146,280 @@
<ti class="ti ti-circle-plus"></ti>
</button>
</div>
</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="col-sm-4 px-3">
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.lineasEnvio") ?>
</h4>
<div class="accordion accordion-bordered mt-3 mb-5" id="accordioAlbaranes">
<div id="accordionDatosEnvioTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="d-flex flex-row">
<p><?= lang('Logistica.buttonsActions') ?></p>
</div>
<div class="d-flex flex-row mb-3 align-items-end">
<div class="col-sm-2 px-3">
<button id="btnSelectAll" name="btnSelectAll" tabindex="1"
class="btn btn-primary w-100">
<?= lang("Logistica.selectAll") ?>
<i class="ti ti-select"></i>
</button>
</div>
<?php if ($envioEntity->finalizado == 0 && $envioEntity->tipo_envio=='estandar'): ?>
<div class="col-sm-2 px-3">
<button id="btnEliminarLineas" name="btnEliminarLineas" tabindex="1"
class="btn btn-danger w-100">
<?= lang("Logistica.eliminar") ?>
<i class="ti ti-trash"></i>
</button>
</div>
<?php endif; ?>
<div class="col-sm-2 px-3">
<button id="btnGenerarAlbaran" name="btnGenerarAlbaran" tabindex="1"
class="btn btn-success w-100">
<?= lang("Logistica.generarAlbaran") ?>
<i class="ti ti-file-check"></i>
</button>
</div>
<div class="col-sm-2 px-3">
<button id="btnImprimirEtiquetas" name="btnImprimirEtiquetas" tabindex="1"
class="btn btn-info w-100">
<?= lang("Logistica.imprimirEtiquetas") ?>
<i class="ti ti-printer"></i>
</button>
</div>
<div class="card accordion-item">
<h2 class="accordion-header" id="headingAlbaranes">
<button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#proximosEnviosTip" aria-expanded="false"
aria-controls="proximosEnviosTip">
<h4>Proximos envíos (1 semana)</h4>
</button>
</h2>
<div id="proximosEnviosTip" class="accordion-collapse collapse"
data-bs-parent="#accordioAlbaranes">
<div id="" class="accordion-body">
<div class="col-sm-2 px-3 d-flex flex-column justify-content-end">
<div class="d-flex flex-column justify-content-end h-100">
<label for="impresoraEtiquetas" class="form-label">
<?= lang("Logistica.impresoraEtiquetas") ?>
</label>
<select id="impresoraEtiquetas" name="impresora_etiquetas" tabindex="1"
maxlength="50" class="form-control select2bs2" style="width: 100%;">
<?php foreach ($envioEntity->impresoras as $impresora): ?>
<option value="<?= $impresora->id ?>">
<?= $impresora->name ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<table id="tableProximosEnvios"
class="table table-striped table-hover w-100">
<thead>
<tr>
<th><?= lang("Logistica.ordenTrabajo") ?></th>
<th><?= lang("Logistica.fechaEncuadernado") ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="row mb-3">
<table id="tableLineasEnvio" class="table table-striped table-hover w-100">
<thead>
<tr>
<th></th>
<th><?= lang("Logistica.pedido") ?></th>
<th><?= lang("Logistica.presupuesto") ?></th>
<th><?= lang("Logistica.titulo") ?></th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesEnvio") ?>
</th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesEnviadas") ?>
</th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesTotales") ?>
</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<th colspan="10">
<div class="text-end">
<?= lang("Logistica.unidadesTotalesFooter") ?>
<span id="footer-unidades-envio"></span>
</div>
</th>
</tr>
<tr>
<th colspan="10">
<div class="text-end">
<?= lang("Logistica.peso") ?>
<span id="footer-peso"></span>
</div>
</th>
</tr>
</tfoot>
</table>
</div>
<div class="col-sm-2 px-3">
<label for="cajas" class="form-label">
<?= lang("Logistica.cajas") ?>
</label>
<input type="number" id="cajas" name="cajas" tabindex="1" maxlength="50"
class="form-control" value="<?= old('cajas', $envioEntity->cajas) ?>">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="accordion accordion-bordered mt-3 mb-5" id="accordioAlbaranes">
<div class="card accordion-item active">
<h2 class="accordion-header" id="headingAlbaranes">
<button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionAlbaranesTip" aria-expanded="false"
aria-controls="accordionAlbaranesTip">
<h3><?= lang("Pedidos.albaranes") ?></h3>
</button>
</h2>
<div id="accordionAlbaranesTip" class="accordion-collapse collapse show"
data-bs-parent="#accordioAlbaranes">
<div id="contenedorAlbaranes" class="accordion-body">
<?php endif; ?>
</div>
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.lineasEnvio") ?>
</h4>
</div>
</div>
</div>
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.acciones") ?>
</h4>
<div class="d-flex flex-row mb-3">
<div class="col-sm-3 px-3">
<label for="codigoSeguimiento" class="form-label">
<?= lang("Logistica.codigoSeguimiento") ?>
</label>
<input type="text" id="codigoSeguimiento" name="codigo_seguimiento" tabindex="1"
maxlength="100" class="form-control" <?= ($envioEntity->finalizado == 0) ? '' : 'readonly' ?>
value="<?= esc(old('codigo_seguimiento', $envioEntity->codigo_seguimiento)) ?>">
</div>
<div class="col-sm-3 px-3">
<label for="empresaMensajeria" class="form-label">
<?= lang("Logistica.empresaMensajería") ?>
</label>
<?php if ($envioEntity->finalizado == 0): ?>
<select id="empresaMensajeria" name="empresa_mensajeria" tabindex="1" maxlength="50"
class="form-control select2bs2" style="width: 100%;">
<?php if ($envioEntity->proveedor_id): ?>
<option value="<?= $envioEntity->proveedor_id ?>" "selected">
<?= $envioEntity->proveedor_nombre ?>
</option>
<div id="accordionDatosEnvioTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="d-flex flex-row">
<p><?= lang('Logistica.buttonsActions') ?></p>
</div>
<div class="d-flex flex-row mb-3 align-items-end">
<div class="col-sm-2 px-3">
<button id="btnSelectAll" name="btnSelectAll" tabindex="1"
class="btn btn-primary w-100">
<?= lang("Logistica.selectAll") ?>
<i class="ti ti-select"></i>
</button>
</div>
<?php if ($envioEntity->finalizado == 0 && $envioEntity->tipo_envio == 'estandar'): ?>
<div class="col-sm-2 px-3">
<button id="btnEliminarLineas" name="btnEliminarLineas" tabindex="1"
class="btn btn-danger w-100">
<?= lang("Logistica.eliminar") ?>
<i class="ti ti-trash"></i>
</button>
</div>
<?php endif; ?>
</select>
<?php else: ?>
<input type="text" id="empresaMensajeriaInput" name="empresa_mensajeria_input"
tabindex="1" maxlength="100" class="form-control" readonly
value="<?= old('empresa_mensajeria', $envioEntity->proveedor_nombre) ?>">
<?php endif; ?>
<div class="col-sm-2 px-3">
<button id="btnGenerarAlbaran" name="btnGenerarAlbaran" tabindex="1"
class="btn btn-success w-100">
<?= lang("Logistica.generarAlbaran") ?>
<i class="ti ti-file-check"></i>
</button>
</div>
<div class="col-sm-2 px-3">
<button id="ficharEmbalaje" name="fichar_embalaje" tabindex="1"
class="btn btn-primary mt-4 w-100 btn-finalizar">
<?= lang("Logistica.ficharEmbalaje") ?>
<ti class="ti ti-check"></ti>
</button>
</div>
<div class="col-sm-2 px-3">
<button id="btnImprimirEtiquetas" name="btnImprimirEtiquetas"
tabindex="1" class="btn btn-info w-100">
<?= lang("Logistica.imprimirEtiquetas") ?>
<i class="ti ti-printer"></i>
</button>
</div>
<div class="col-sm-2 px-3 d-flex flex-column justify-content-end">
<div class="d-flex flex-column justify-content-end h-100">
<label for="impresoraEtiquetas" class="form-label">
<?= lang("Logistica.impresoraEtiquetas") ?>
</label>
<select id="impresoraEtiquetas" name="impresora_etiquetas"
tabindex="1" maxlength="50" class="form-control select2bs2"
style="width: 100%;">
<?php foreach ($envioEntity->impresoras as $impresora): ?>
<option value="<?= $impresora->id ?>">
<?= $impresora->description ? "$impresora->name [$impresora->description]" : $impresora->name ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
<div class="row mb-3">
<table id="tableLineasEnvio" class="table table-striped table-hover w-100">
<thead>
<tr>
<th></th>
<th><?= lang("Logistica.ordenTrabajo") ?></th>
<th><?= lang("Logistica.pedido") ?></th>
<th><?= lang("Logistica.presupuesto") ?></th>
<th><?= lang("Logistica.titulo") ?></th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesEnvio") ?>
</th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesEnviadas") ?>
</th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesTotales") ?>
</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<th colspan="11">
<div class="text-end">
<?= lang("Logistica.unidadesTotalesFooter") ?>
<span id="footer-unidades-envio"></span>
</div>
</th>
</tr>
<tr>
<th colspan="11">
<div class="text-end">
<?= lang("Logistica.peso") ?>
<span id="footer-peso"></span>
</div>
</th>
</tr>
</tfoot>
</table>
<div class="col-sm-2 px-3">
<label for="cajas" class="form-label">
<?= lang("Logistica.cajas") ?>
</label>
<input type="number" id="cajas" name="cajas" tabindex="1" maxlength="50"
class="form-control"
value="<?= old('cajas', $envioEntity->cajas) ?>">
</div>
</div>
</div>
</div>
<?php if ($envioEntity->finalizado == 0): ?>
<div class="col-sm-3 px-3">
<button id="finalizarEnvio" name="finalizar_envio" tabindex="1"
class="btn btn-primary mt-4 w-100 btn-finalizar">
<?= lang("Logistica.finalizarEnvio") ?>
<ti class="ti ti-check"></ti>
</button>
</div>
<?php if ($envioEntity->tipo_envio=='estandar'): ?>
<div class="col-sm-3 px-3">
<button id="finalizarEnvioYOTs" name="finalizar_envio_ots" tabindex="1"
class="btn btn-primary mt-4 w-100 btn-finalizar">
<?= lang("Logistica.finalizarEnvioYOTs") ?>
<ti class="ti ti-checks"></ti>
</button>
</div>
<?php endif; ?>
<?php endif; ?>
</div>
<div class="accordion accordion-bordered mt-3 mb-5" id="accordioAlbaranes">
<div class="card accordion-item active">
<h2 class="accordion-header" id="headingAlbaranes">
<button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionAlbaranesTip" aria-expanded="false"
aria-controls="accordionAlbaranesTip">
<h3><?= lang("Pedidos.albaranes") ?></h3>
</button>
</h2>
<div id="accordionAlbaranesTip" class="accordion-collapse collapse show"
data-bs-parent="#accordioAlbaranes">
<div id="contenedorAlbaranes" class="accordion-body">
</div>
</div>
</div>
</div>
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.acciones") ?>
</h4>
<div class="d-flex flex-row mb-3">
<div class="col-sm-3 px-3">
<label for="codigoSeguimiento" class="form-label">
<?= lang("Logistica.codigoSeguimiento") ?>
</label>
<input type="text" id="codigoSeguimiento" name="codigo_seguimiento"
tabindex="1" maxlength="100" class="form-control"
<?= ($envioEntity->finalizado == 0) ? '' : 'readonly' ?>
value="<?= esc(old('codigo_seguimiento', $envioEntity->codigo_seguimiento)) ?>">
</div>
<div class="col-sm-3 px-3">
<label for="empresaMensajeria" class="form-label">
<?= lang("Logistica.empresaMensajería") ?>
</label>
<?php if ($envioEntity->finalizado == 0): ?>
<select id="empresaMensajeria" name="empresa_mensajeria" tabindex="1"
maxlength="50" class="form-control select2bs2" style="width: 100%;">
<?php if ($envioEntity->proveedor_id): ?>
<option value="<?= $envioEntity->proveedor_id ?>" "selected">
<?= $envioEntity->proveedor_nombre ?>
</option>
<?php endif; ?>
</select>
<?php else: ?>
<input type="text" id="empresaMensajeriaInput"
name="empresa_mensajeria_input" tabindex="1" maxlength="100"
class="form-control" readonly
value="<?= old('empresa_mensajeria', $envioEntity->proveedor_nombre) ?>">
<?php endif; ?>
</div>
<?php if ($envioEntity->finalizado == 0): ?>
<div class="col-sm-3 px-3">
<button id="finalizarEnvio" name="finalizar_envio" tabindex="1"
class="btn btn-primary mt-4 w-100 btn-finalizar">
<?= lang("Logistica.finalizarEnvio") ?>
<ti class="ti ti-check"></ti>
</button>
</div>
<?php if ($envioEntity->tipo_envio == 'estandar'): ?>
<div class="col-sm-3 px-3">
<button id="finalizarEnvioYOTs" name="finalizar_envio_ots" tabindex="1"
class="btn btn-primary mt-4 w-100 btn-finalizar">
<?= lang("Logistica.finalizarEnvioYOTs") ?>
<ti class="ti ti-checks"></ti>
</button>
</div>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<link rel="stylesheet" href="https://cdn.datatables.net/rowreorder/1.4.1/css/rowReorder.dataTables.min.css">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.css") ?>">
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<link rel="stylesheet" href="https://cdn.datatables.net/rowreorder/1.4.1/css/rowReorder.dataTables.min.css">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.css") ?>">
<link rel="stylesheet"
href="<?= site_url("/themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.css") ?>" />
<?= $this->endSection() ?>
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script src="https://cdn.datatables.net/rowgroup/1.3.1/js/dataTables.rowGroup.min.js"></script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/logistica/envioEdit.js") ?>"></script>
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"><script>
<script src="https://cdn.datatables.net/rowgroup/1.3.1/js/dataTables.rowGroup.min.js"></script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/logistica/envioEdit.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,249 @@
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h4><?= $boxTitle ?>
</h4>
</div>
<div class="card-body">
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<input type="hidden" id="id" name="id" value="<?= $etiquetaEntity->id ?>">
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.datosEnvio") ?>
</h4>
<div id="accordionDatosEnvioTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="d-flex flex-row mb-3">
<div class="col-sm-3 px-3">
<label for="att" class="form-label">
<?= lang("Logistica.cliente") ?>
</label>
<input readonly id="cliente" name="cliente" tabindex="1" maxlength="50"
class="form-control" value="<?= old('att', $etiquetaEntity->cliente) ?>">
</div>
<div class="col-sm-4 px-3">
<label for="att" class="form-label">
<?= lang("Logistica.att") ?>
</label>
<input readonly id="att" name="att" tabindex="1" maxlength="50"
class="form-control" value="<?= old('att', $etiquetaEntity->att) ?>">
</div>
<div class="col-sm-5 px-3">
<label for="direccion" class="form-label">
<?= lang("Logistica.direccion") ?>
</label>
<input readonly id="direccion" name="direccion" tabindex="1" maxlength="50"
class="form-control"
value="<?= old('direccion', $etiquetaEntity->direccion) ?>">
</div>
</div>
<div class="d-flex flex-row mb-3">
<div class="col-sm-9 px-3">
<label for="comentarios" class="form-label">
<?= lang("Logistica.comentariosEtiqueta") ?>
</label>
<input id="comentarios" name="comentarios" tabindex="1" maxlength="50"
class="form-control"
value="<?= old('comentarios', $etiquetaEntity->comentarios) ?>">
</div>
<div class="col-sm-3 px-3">
<button id="guardarComentarios" name="guardar_comentarios" tabindex="1"
class="btn btn-primary mt-4 w-100">
<?= lang("Logistica.guardar") ?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.addLineaEtiqueta") ?>
</h4>
<div id="accordionaddLineasEnvioTip" class="accordion-collapse collapse show">
<div class="d-flex flex-row mb-3">
<div class="col-sm-12 px-3">
<p><?= lang('Logistica.addLineasText') ?></p>
</div>
</div>
<div class="d-flex flex-row mb-3">
<div class="col-sm-6 px-3">
<label for="buscadorPedidos" class="form-label">
<?= lang("Logistica.buscadorPedidosTitle2") ?>
</label>
<select id="buscadorPedidos" name="buscador_pedidos" tabindex="1" maxlength="50"
class="form-control select2bs2" style="width: 100%;">
</select>
</div>
<div class="col-sm-2 px-3">
<button id="btnAddLinea" name="btnBuscar" tabindex="1"
class="btn btn-primary mt-4 w-100">
<?= lang("Logistica.add") ?>
<ti class="ti ti-circle-plus"></ti>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.lineasEnvio") ?>
</h4>
<div id="accordionDatosEnvioTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="d-flex flex-row">
<p><?= lang('Logistica.buttonsActions') ?></p>
</div>
<div class="d-flex flex-row mb-3 align-items-end">
<div class="col-sm-2 px-3">
<button id="btnSelectAll" name="btnSelectAll" tabindex="1"
class="btn btn-primary w-100">
<?= lang("Logistica.selectAll") ?>
<i class="ti ti-select"></i>
</button>
</div>
<div class="col-sm-2 px-3">
<button id="btnEliminarLineas" name="btnEliminarLineas" tabindex="1"
class="btn btn-danger w-100">
<?= lang("Logistica.eliminar") ?>
<i class="ti ti-trash"></i>
</button>
</div>
<div class="col-sm-2 px-3">
<button id="btnRenumber" name="btnRenumber" tabindex="1"
class="btn btn-success w-100">
<?= lang("Logistica.renumber") ?>
<i class="ti ti-box"></i>
</button>
</div>
<div class="col-sm-2 px-3">
<button id="btnImprimirEtiquetas" name="btnImprimirEtiquetas" tabindex="1"
class="btn btn-info w-100">
<?= lang("Logistica.imprimirEtiquetas") ?>
<i class="ti ti-printer"></i>
</button>
</div>
<div class="col-sm-3 px-3 d-flex flex-column justify-content-end">
<div class="d-flex flex-column justify-content-end h-100">
<label for="impresoraEtiquetas" class="form-label">
<?= lang("Logistica.impresoraEtiquetas") ?>
</label>
<select id="impresoraEtiquetas" name="impresora_etiquetas" tabindex="1"
maxlength="50" class="form-control select2bs2" style="width: 100%;">
<?php foreach ($etiquetaEntity->impresoras as $impresora): ?>
<option value="<?= $impresora->id ?>">
<?= $impresora->description ? "$impresora->name [$impresora->description]" : $impresora->name ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
<div class="row mb-3">
<table id="tableLineasEtiqueta" class="table table-striped table-hover w-100">
<thead>
<tr>
<th></th>
<th style="max-width: 10%;"><?= lang("Logistica.otId") ?></th>
<th style="max-width: 70%;"><?= lang("Logistica.titulo") ?></th>
<th style="max-width: 10%;"><?= lang("Logistica.num_caja") ?></th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesEnCaja") ?>
</th>
<th class="text-center" style="width: 10%;">
<?= lang("Logistica.unidadesTotalesOt") ?>
</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<th colspan="11">
<div class="text-end">
<?= lang("Logistica.unidadesTotalesFooter") ?>
<span id="footer-unidades"></span>
</div>
</th>
</tr>
<tr>
<th colspan="11">
<div class="text-end">
<?= lang("Logistica.peso") ?>
<span id="footer-peso"></span>
</div>
</th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<link rel="stylesheet" href="https://cdn.datatables.net/rowreorder/1.4.1/css/rowReorder.dataTables.min.css">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.css") ?>">
<link rel="stylesheet" href="https://cdn.datatables.net/rowreorder/1.4.1/css/rowReorder.dataTables.min.css">
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script src="https://cdn.datatables.net/rowgroup/1.3.1/js/dataTables.rowGroup.min.js"></script>
<script src="https://cdn.datatables.net/rowreorder/1.4.1/js/dataTables.rowReorder.min.js"></script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/logistica/etiquetaEdit.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,119 @@
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h4><?= $boxTitle ?></h4>
</div>
<div class="card-body">
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.nuevaEtiqueta") ?>
</h4>
<div id="accordionNuevaEtiquetaTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="row">
<div class="mb-1 col-sm-6">
<label for="buscadorPedidos" class="form-label">
<?= lang("Logistica.buscadorPedidosTitle2") ?>
</label>
<select id="buscadorPedidos" name="buscador_pedidos" tabindex="1" maxlength="50"
class="form-control select2bs2">
</select>
</div>
</div>
<div class="row select-direcciones d-none">
<div class="col-sm-6 px-3">
<label for="selectDirecciones" class="form-label">
<?= lang("Logistica.selectDirecciones") ?>
</label>
<select id="selectDirecciones" name="select_direcciones" tabindex="1" maxlength="50"
class="form-control select2bs2" style="width: 100%;">
</select>
</div>
</div>
<div class="row add-etiqueta d-none">
<div class="col-sm-2 px-3">
<button id="btnAddEtiqueta" name="btn_add_etiqueta" tabindex="1"
class="btn btn-primary mt-4 w-100">
<?= lang("Logistica.add") ?>
<ti class="ti ti-circle-plus"></ti>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="card accordion-item active">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.listadoEtiquetas") ?>
</h4>
<div id="accordionListadoEnviosTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="row">
<table id="tableOfEquiquetas" class="table table-striped table-hover w-100">
<thead>
<tr>
<th style="max-width: 8%;"><?= lang('Logistica.id') ?? 'ID Envío' ?></th>
<th style="max-width: 10%;"><?= lang('Logistica.numeroOts') ?? 'Nº OTs' ?></th>
<th style="max-width: 8%;"><?= lang('Logistica.numeroCajas') ?? 'Nº Cajas' ?></th>
<th><?= lang('Logistica.att') ?? 'Att' ?></th>
<th><?= lang('Logistica.direccion') ?? 'Dirección' ?></th>
<th style="max-width: 120px;"><?= lang('Logistica.acciones') ?? 'Acciones' ?></th>
</tr>
<tr>
<th><input type="text" class="form-control envio-filter" name="id"></th>
<th><input type="text" class="form-control envio-filter-ots" name="ots"></th>
<th></th>
<th><input type="text" class="form-control envio-filter" name="att"></th>
<th><input type="text" class="form-control envio-filter" name="direccion"></th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="mt-3">
<button type="button" class="btn btn-secondary" id="btnBackToPanel"
onclick="window.location.href='<?= route_to('LogisticaPanel') ?>'">
<?= lang('Logistica.backToPanel') ?>
</button>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/logistica/impresionEtiquetas.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -21,7 +21,7 @@
<img src="<?= site_url("assets/img/logistica/envios_ferros.png") ?>" alt="Envío de Ferros/Prototipos">
<div><span><?= lang("Logistica.envioFerros"); ?></span></div>
</div>
<div class="item">
<div class="item" onclick="location.href='<?= route_to('etiquetasLogistica') ?>'">
<img src="<?= site_url("assets/img/logistica/impresionEtiquetas.jpg") ?>" alt="Etiquetas de títulos">
<div><span><?= lang("Logistica.etiquetasTitulos"); ?></span></div>
</div>

View File

@ -15,26 +15,33 @@ use Config\App;
<div class="nav-tabs-shadow nav-align-top">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link active" role="tab" id="navs-top-align-all-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-all"><?=lang('App.global_all')?></button>
<button type="button" class="nav-link active" role="tab" id="navs-top-align-all-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-all"><?= lang('App.global_all') ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-presupuestos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-presupuestos"><?=lang('App.permisos_presupuestos')?></button>
<button type="button" class="nav-link" role="tab" id="navs-top-align-direct-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-direct"><?= lang('Chat.direct_messsages') ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-pedidos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-pedidos"><?=lang('App.permisos_pedidos')?></button>
<button type="button" class="nav-link" role="tab" id="navs-top-align-presupuestos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-presupuestos"><?= lang('App.permisos_presupuestos') ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-facturas-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-facturas"><?=lang('App.menu_facturas')?></button>
<button type="button" class="nav-link" role="tab" id="navs-top-align-pedidos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-pedidos"><?= lang('App.permisos_pedidos') ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-ot-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ots"><?=lang('Produccion.ots')?></button>
<button type="button" class="nav-link" role="tab" id="navs-top-align-facturas-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-facturas"><?= lang('App.menu_facturas') ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-ot-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ots"><?= lang('Produccion.ots') ?></button>
</li>
</ul>
<div class="tab-content" id="message-datatables-container">
<div class="tab-pane fade show active" id="navs-top-align-all">
<div class="tab-pane fade show active" id="navs-top-align-all">
<?= view("themes/vuexy/components/tables/messages_table", ["id" => "tableAllMessages"]) ?>
</div>
<div class="tab-pane fade show" id="navs-top-align-direct">
<button class="btn-primary btn" id="btn-new-message"><span><?= lang('Chat.modal.new_message') ?></span></button>
<?= view("themes/vuexy/components/tables/messages_table", ["id" => "tableDirectMessages"]) ?>
</div>
<div class="tab-pane fade show" id="navs-top-align-presupuestos">
<?= view("themes/vuexy/components/tables/messages_table", ["id" => "tablePresupuestoMessages"]) ?>
</div>
@ -69,8 +76,9 @@ use Config\App;
<script src="<?= site_url('themes/vuexy/vendor/libs/popper/popper.js') ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/messages/index.js') ?>">
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/configuracion/messages/index.js') ?>">
< script src = "<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>" >
</script>
</script>
<?= $this->endSection() ?>

View File

@ -143,7 +143,7 @@
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatPresupuesto.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/chatPresupuesto.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<!-- <script src="<?= site_url('js_loader/chat_js') ?>"></script> -->
<?= $this->endSection() ?>

View File

@ -24,6 +24,8 @@
<input type="hidden" name="lomo_sobrecubierta" id="lomo_sobrecubierta" class="form-control" value=""></input>
<input type="hidden" name="isCosido" id="isCosido" class="form-control"
value="<?= $isCosido ?>"></input>
<input type="hidden" name="noEnvioBase" id="noEnvioBase" class="form-control"
value="<?= $no_envio_base ?>"></input>
<input type="hidden" name="presupuesto_id" id="presupuesto_id" class="form-control"
value="<?= $presupuestoEntity->id ?>"></input>
@ -91,11 +93,19 @@
<?php if (str_contains($formAction, 'edit')): ?>
<?= anchor(route_to("presupuestoToPdf", $presupuestoId), lang("Basic.global.Print"), ["class" => "btn btn-dark float-start me-sm-3 me-1",'target' => '_blank']) ?>
<input type="button"
class="btn btn-info float-start me-sm-3 me-1"
class="btn btn-primary float-start me-sm-3 me-1"
name="clone"
id="cloneForm"
value="<?= lang("Basic.global.Clone") ?>"
/>
<?php if($presupuestoEntity->estado_id == 2): ?>
<input type="button"
class="btn btn-primary float-start me-sm-3 me-1"
name="reprint"
id="reprint"
value="<?= lang("Presupuestos.reprint") ?>"
/>
<?php endif; ?>
<?php endif; ?>
<?= anchor(route_to("presupuestoAdminList", $tipo_impresion_id), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start",]) ?>
</div>
@ -298,9 +308,9 @@
<script src="<?= site_url('themes/vuexy/vendor/libs/two/two.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js') ?>"></script>
<?php else: ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminAdd.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminAdd.js') ?>"></script>
<?php endif; ?>

View File

@ -23,7 +23,7 @@
<th><?= lang('Clientes.cliente') ?></th>
<th><?= lang('Presupuestos.comercial') ?></th>
<th><?= lang('Presupuestos.titulo') ?></th>
<th><?= lang('Paises.pais') ?></th>
<th><?= lang('Presupuestos.referenciaCliente') ?></th>
<th><?= lang('Presupuestos.incRei') ?></th>
<th class='noFilter'><?= lang('Presupuestos.paginas') ?></th>
<th class='noFilter'><?= lang('Presupuestos.tirada') ?></th>
@ -245,7 +245,7 @@ theTable = $('#tableOfPresupuestos').DataTable({
{ 'data': 'cliente' },
{ 'data': 'comercial' },
{ 'data': 'titulo' },
{ 'data': 'pais' },
{ 'data': 'refCliente' },
{ 'data': 'inc_rei' },
{ 'data': 'paginas',render : (d) => `<span class="autonumeric">${d}</span>` },
{ 'data': 'tirada' ,render : (d) => `<span class="autonumeric">${d}</span>` },

View File

@ -213,6 +213,10 @@
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('App.global_save_file') ?></span>
<i class="ti ti-device-floppy ti-xs"></i>
</button>
<button id="download-all-files" class="btn mt-3 btn-secondary btn-submit waves-effect waves-light ml-2">
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('App.global_download_files') ?></span>
<i class="ti ti-device-floppy ti-xs"></i>
</button>
</div>
<?php endif; ?>

View File

@ -287,6 +287,6 @@
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module"
src="<?= site_url('assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js') ?>"></script>
src="<?= versioned_asset('assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -404,6 +404,6 @@
<?= $this->section('additionalExternalJs') ?>
<script type="module"
src="<?= site_url('assets/js/safekat/pages/importadorPresupuestos/importador.js') ?>"></script>
src="<?= versioned_asset('assets/js/safekat/pages/importadorPresupuestos/importador.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,63 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row" id="viewMaquinistaFichajeAuto" data-id="<?= $maquinaEntity->id ?>">
<div class="col-md-12">
<div class="d-flex flex-row justify-content-end align-items-stretch mb-2 gap-2">
<a type="button" id="tarea-list-link" class="btn btn-primary" href="<?= route_to('viewProduccionMaquinaTareasList', $maquinaEntity->id) ?>"><span class="icon-base ti ti-list ti-xs me-1"></span> <?= lang('Produccion.maquinista.tarea_list') ?></a>
</div>
<div class="card">
<div class="card-body">
<div class="row mb-2">
<div class="col-md-8 mb-2">
<div class="alert alert-primary h-100 w-100" role="alert">
<h4 class="alert-heading d-flex align-items-center gap-1"><span style="color:red">AUTO: </span><span class="fs-bold"><?= $maquinaEntity->nombre ?></span></h4>
<hr>
<p class="mb-0">
<?= lang('Produccion.maquinista.fichaje_auto_alert_text') ?>
</p>
</div>
</div>
<div class="col-md-4 mb-2">
<label for="ot-id" class="form-label"><strong><?= lang('Produccion.maquinista.next_ot') ?></strong></label>
<input type="text" class="form-control h-50 fs-large" id="ot-id" name="orden_trabajo_id" placeholder="<?= lang('Produccion.maquinista.placeholder_ot_id') ?>">
<div class="fs-medium fs-bold mt-2"><?= lang('Produccion.maquinista.fa_ot_input_form_text') ?></div>
</div>
</div>
<div class="row">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
</div>
<div class="row mb-2 section-block d-none" id="ot-fa-card">
<div class="col-md-12">
<?= view('/themes/vuexy/components/cards/tarea_card_auto.php') ?>
</div>
</div>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/maquinista.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/notiflix/notiflix.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/spinkit/spinkit.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/notiflix/notiflix.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url("/assets/js/safekat/pages/configuracion/maquinista/viewFichajeAuto.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -18,7 +18,7 @@
<div class="row" id="maquinas-impresion">
<?php foreach ($maquinas["impresion"] as $key => $maquina): ?>
<div class="col-md-4 col-sm-2 col-lg-3 col-xs-12 mb-2 h-100 p-2">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-primary w-100">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-<?= $maquina['countMaquinaTareas'] > 0 ? "danger" : "primary" ?> w-100">
<span class="d-sm-inline-flex justify-content-between align-items-center gap-2">
<?= $maquina["nombre"] ?>
<?php if ($maquina["countTareas"] > 0): ?>
@ -39,7 +39,7 @@
<div class="row" id="maquinas-acabado">
<?php foreach ($maquinas["acabado"] as $key => $maquina): ?>
<div class="col-md-4 col-sm-2 col-lg-3 col-xs-12 mb-2 h-100 p-2">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-primary w-100">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-<?= $maquina['countMaquinaTareas'] > 0 ? "danger" : "primary" ?> w-100">
<span class="d-sm-inline-flex justify-content-between align-items-center gap-2">
<?= $maquina["nombre"] ?>
<?php if ($maquina["countTareas"] > 0): ?>
@ -60,7 +60,7 @@
<div class="row" id="maquinas-manipulado">
<?php foreach ($maquinas["manipulado"] as $key => $maquina): ?>
<div class="col-md-4 col-sm-2 col-lg-3 col-xs-12 mb-2 h-100 p-2">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-primary w-100">
<a href="<?= route_to("viewProduccionMaquinaTareasList", $maquina["maquinaId"]) ?>" type="button" class="maquina-btn btn btn-outline-<?= $maquina['countMaquinaTareas'] > 0 ? "danger" : "primary" ?> w-100">
<span class="d-sm-inline-flex justify-content-between align-items-center gap-2">
<?= $maquina["nombre"] ?>
<?php if ($maquina["countTareas"] > 0): ?>

View File

@ -6,6 +6,9 @@
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row" id="viewMaquinistaMaquinaTarea" data-id="<?= $ot_tarea->id ?>">
<input type="hidden" id="impresoras" value='<?= json_encode($impresoras, JSON_HEX_APOS | JSON_HEX_QUOT) ?>'>
<div class="nav-align-top">
<ul class="nav nav-pills mb-4 nav-fill" role="tablist">
<li class="nav-item mb-1 mb-sm-0">
@ -39,11 +42,16 @@
<div class="tab-content">
<div class="tab-pane fade show active" id="navs-tarea">
<div class="container-fluid h-100">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="row mb-2 h-100 d-flex flex-wrap">
<div class="col-md-12 d-flex justify-content-end mb-2">
<button class="btn-primary btn d-flex justify-content-evenly gap-2"><span class="ti ti-barcode ti-lg"></span><?= lang('Produccion.print_label') ?></button>
</div>
<?php if ($ot_tarea?->maquina_actual()?->etiqueta_envio): ?>
<div class="col-md-12 d-flex justify-content-end mb-2">
<button id="btn-print-labels" class="btn-primary btn d-flex justify-content-evenly gap-2" data-id="<?=$ot_tarea?->maquina_actual()->id?>"><span class="ti ti-barcode ti-lg"></span><?= lang('Produccion.print_label') ?></button>
</div>
<div class="col-md-12 d-flex justify-content-end mb-2">
<button id="btn-fichar-embalaje" class="btn-primary btn d-flex justify-content-evenly gap-2" data-id="<?=$ot_tarea?->maquina_actual()->id?>"><span class="ti ti-calendar ti-lg"></span><?= lang('Produccion.fichar_embalaje') ?></button>
</div>
<?php endif; ?>
<div class="col-md-6 tarea-card-info-block">
<?= view("/themes/vuexy/components/cards/tarea_card.php") ?>
</div>

View File

@ -11,23 +11,27 @@ use CodeIgniter\I18n\Time;
?>
<div class="row" id="viewMaquinistaMaquinaTareas" data-id="<?= $maquinaEntity->id ?>">
<div class="col-md-12">
<div class="d-flex flex-row justify-content-end align-items-stretch mb-2 gap-2">
<a type="button" href="<?= route_to('viewMaquinistaFichajeAutomatico', $maquinaEntity->id) ?>" id="btn-fichaje-automatico" class="btn btn-primary" aria-pressed="true"><span class="icon-base ti ti-wand ti-xs me-1"></span> <?= lang('Produccion.maquinista.fichaje_auto') ?></a>
<a type="button" href="<?= route_to('viewMaquinistaTareaScan', $maquinaEntity->id) ?>" id="btn-tarea-scan" class="btn btn-primary" aria-pressed="true"><span class="icon-base ti ti-scan ti-xs me-1"></span><?= lang('Produccion.maquinista.scan') ?></a>
</div>
<div class="card">
<div class="card-body">
<div id="tareas-aplazadas" class="d-none">
<?= view("/themes/vuexy/components/tables/maquinista_tarea_table.php", ["id" => "maquinista-tarea-aplazada-table"]) ?>
</div>
<div class="row mb-2 align-items-center">
<div class="col-md-6 col-xs-12 justify-content-start ">
<div class="d-flex flex-row justify-content-center align-items-stretch gap-2 h-100">
<button type="button" id="btn-tareas-hoy" class="btn btn-primary h-100 active w-50" aria-pressed="true"><?= lang('Produccion.maquinista.tareas_hoy') ?></button>
<button type="button" id="btn-all-tareas" class="btn btn-primary h-100 w-50"><?= lang('Produccion.maquinista.tareas_all') ?></button>
<div class="d-flex flex-row justify-content-start align-items-stretch gap-2 h-100">
<button type="button" id="btn-tareas-hoy" class="btn btn-primary h-100 active" aria-pressed="true"><?= lang('Produccion.maquinista.tareas_hoy') ?></button>
<button type="button" id="btn-all-tareas" class="btn btn-primary h-100"><?= lang('Produccion.maquinista.tareas_all') ?></button>
</div>
</div>
<div class="col-md-6 col-xs-12 justify-content-end d-flex">
<span class="display-6" id="today-date"><?= Time::now()->format('d/m/Y') ?></span>
</div>
<!-- <div class="d-flex flex-row justify-content-end align-content-center gap-2">
<button type="button" class="btn btn-primary"><?= lang('Produccion.maquinista.maquinas') ?></button>
</div> -->
</div>
<?= view("/themes/vuexy/components/tables/maquinista_tarea_table.php") ?>
<?= view("/themes/vuexy/components/tables/maquinista_tarea_table.php", ["id" => "maquinista-tarea-table"]) ?>
</div>
</div>
</div>

View File

@ -0,0 +1,87 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row" id="viewMaquinistaTareaScan" data-id="<?= $maquinaEntity->id ?>">
<div class="col-md-12">
<div class="d-flex flex-row justify-content-end align-items-stretch mb-2 gap-2">
<a type="button" id="tarea-list-link" class="btn btn-primary" href="<?= route_to('viewProduccionMaquinaTareasList', $maquinaEntity->id) ?>"><span class="icon-base ti ti-list ti-xs me-1"></span> <?= lang('Produccion.maquinista.tarea_list') ?></a>
</div>
<div class="card section-block">
<div class="card-body">
<h4 class="alert-heading d-flex align-items-center gap-1"><span style="color:red">ESCANEAR: </span><span class="fs-bold"><?= $maquinaEntity->nombre ?></span></h4>
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="row ot-scan-wrapper">
<div class="col-md-4">
<button type="button" class="btn btn-danger" id="btn-reset-ots">
<span class="icon-base ti ti-trash me-1"></span>
<?= lang('Produccion.maquinista.reset') ?>
</button>
</div>
</div>
<div class="row mb-2 ot-scan-wrapper">
<div class="col-md-8 mb-2">
<div class="table-responsive">
<table id="table-scanned-ots" class="table-maquinista table table-hover table-sm">
<thead>
<tr>
<th><?= lang('Produccion.datatable.ot_id') ?></th>
<th><?= lang('Produccion.datatable.titulo') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<div class="col-md-4">
<div class="col-md-12 mb-2">
<label for="ot-id" class="form-label"><strong><?= lang('Produccion.maquinista.next_ot') ?></strong></label>
<input type="text" class="form-control h-50 fs-large" id="ot-id" name="orden_trabajo_id" placeholder="<?= lang('Produccion.maquinista.placeholder_ot_id') ?>">
<div class="fs-medium fs-bold mt-2"><?= lang('Produccion.maquinista.scan_ot_input_form_text') ?></div>
</div>
<div class="col-md-12 mb-2">
<button type="button" class="maquina-btn btn btn-primary w-100" id="btn-save-maquina-ots" disabled>
<span class="icon-base ti ti-arrow-big-right me-1"></span>
<?= lang('Produccion.maquinista.next_scan_ot') ?>
</button>
</div>
</div>
</div>
<div class="col-md-12 d-none" id="ot-maquina-tareas-link">
<a class="maquina-btn btn btn-primary w-100" href="<?= route_to('viewProduccionMaquinistaOtTareasView', $maquinaEntity->id) ?>">
<span class="icon-base ti ti-arrow-big-right me-1"></span>
<?= lang('Produccion.maquinista.next_scan_ot') ?>
</a>
</div>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/maquinista.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/notiflix/notiflix.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/spinkit/spinkit.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/notiflix/notiflix.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url("/assets/js/safekat/pages/configuracion/maquinista/viewMaquinistaScan.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,81 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row" id="viewProduccionMaquinistaOtTareasView" data-id="<?= $maquinaEntity->id ?>">
<div class="nav-align-top">
<ul class="nav nav-pills mb-4 nav-fill" role="tablist">
<li class="nav-item mb-1 mb-sm-0">
<button
type="button"
class="nav-link active"
role="tab"
data-bs-toggle="tab"
data-bs-target="#navs-tarea"
aria-controls="navs-tarea"
aria-selected="true">
<span class="d-none d-sm-inline-flex align-items-center">
<?= lang('Produccion.ots') ?>
</span>
<i class="icon-base ti tabler-home icon-sm d-sm-none"></i>
</button>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="navs-tarea">
<div class="container-fluid h-100">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="row tarea-card-action-block">
<div class="col-md-6 mb-2">
<div class="table-responsive">
<table id="table-scanned-ots" class="table-maquinista table table-hover table-sm">
<thead>
<tr>
<th class="w-20"><?= lang('Produccion.datatable.ot_id') ?></th>
<th class="w-30"><?= lang('Produccion.datatable.titulo') ?></th>
<th class="w-40"><?= lang('Produccion.datatable.barcode') ?></th>
<th class="w-10"></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<div class="col-md-6 mb-2">
<?= view("/themes/vuexy/components/cards/tarea_multiple_card_actions.php") ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/maquinista.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/notiflix/notiflix.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/spinkit/spinkit.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/notiflix/notiflix.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url("/assets/js/safekat/pages/configuracion/maquinista/viewTareaMultipleView.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -15,7 +15,7 @@
<div class="row">
<!-- Date 1-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-tiempo-procesamiento" class="form-label"><?= @lang("Produccion.tiempo_procesamiento") ?> (HH:MM)</label>
<label for="ot-tiempo-procesamiento" class="form-label"><?= @lang("Produccion.tiempo_procesamiento") ?> (HH:MM:SS)</label>
<div class="input-group">
<input type="text" class="form-control" name="tiempo_procesamiento" placeholder="HH:MM" id="ot-tiempo-procesamiento" data-input disabled>
<button class="btn btn-outline-warning btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
@ -99,15 +99,6 @@
</div>
</div>
<!-- Date 6-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_estimada") ?></label>
<div class="input-group">
<input type="date" class="form-control ot-date" placeholder="DD/MM/YYYY" name="fecha_entrega_estimada_at" id="ot-fecha-entrega-estimada" data-input disabled />
<button class="btn btn-outline-warning btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
</div>
</div>
</div>
</div>

View File

@ -22,7 +22,11 @@
<i class="ti ti-dimensions ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0" id="ot-formato"><?=$presupuesto->papel_formato()->ancho?>x<?=$presupuesto->papel_formato()->alto?></h5>
<?php if ($presupuesto->papel_formato_personalizado): ?>
<h5 class="mb-0" id="ot-formato"><?= $presupuesto->papel_formato_ancho ?>x<?= $presupuesto->papel_formato_alto ?></h5>
<?php else: ?>
<h5 class="mb-0" id="ot-formato"><?= $presupuesto->papel_formato()->ancho ?>x<?= $presupuesto->papel_formato()->alto ?></h5>
<?php endif; ?>
<span class="fx-large"><?= @lang("Produccion.formato") ?></span>
</div>
</div>
@ -33,30 +37,32 @@
<i class="ti ti-box-multiple ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0" id="ot-paginas"><?=$presupuesto->paginas?></h5>
<h5 class="mb-0" id="ot-paginas"><?= $presupuesto->paginas ?></h5>
<span class="fx-large"><?= @lang("Produccion.paginas") ?></span>
</div>
</div>
</div>
<div class="col-md-2 col-6">
<div class="d-flex align-items-center">
<div class="badge rounded-pill bg-label-danger me-3 p-2">
<i class="ti ti-bookmark ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0" id="ot-solapa"><?=$presupuesto->solapas > 0 ? $presupuesto->solapas : 0?></h5>
<?php if ($presupuesto->solapas): ?>
<div class="col-md-2 col-6">
<div class="d-flex align-items-center">
<div class="badge rounded-pill bg-label-danger me-3 p-2">
<i class="ti ti-bookmark ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0" id="ot-solapa"><?= number_format($presupuesto->solapas_ancho, 2, ',', '.') ?> mm</h5>
<span class="fx-large"><?= @lang("Produccion.solapa") ?></span>
<span class="fx-large"><?= @lang("Produccion.solapa") ?></span>
</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="col-md-2 col-6">
<div class="d-flex align-items-center">
<div class="badge rounded-pill bg-label-success me-3 p-2">
<i class="ti ti-books ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0" id="ot-tirada"><?=$presupuesto->tirada?></h5>
<h5 class="mb-0" id="ot-tirada"><?= $presupuesto->tirada ?></h5>
<span class="fx-large"><?= @lang("Produccion.tirada") ?></span>
</div>
@ -68,7 +74,7 @@
<i class="ti ti-notebook ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0" id="ot-merma"><?=$presupuesto->merma?></h5>
<h5 class="mb-0" id="ot-merma"><?= $presupuesto->merma ?></h5>
<span class="fx-large"><?= @lang("Produccion.merma") ?></span>
</div>

View File

@ -1,5 +1,5 @@
<div class="row">
<div class="col-md-12">
<?= view("themes/vuexy/components/dropzone",data: ['id' => 'dropzone-ot-files','modelId' => $modelId]) ?>
<?= view("themes/vuexy/components/dropzone",data: ['id' => 'dropzone-ot-files','modelId' => $presupuesto->id]) ?>
</div><!--//.col -->
</div><!--//.row -->

View File

@ -12,15 +12,37 @@
<div id="accordionOtProgressTip" class="accordion-collapse collapse show" data-bs-parent="#accordionOtProgress">
<div class="accordion-body">
<div class="row">
<div class="col-md-12 mb-3">
<div class="row justify-content-start align-items-center">
<div class="col-md-8 mb-3">
<label class="form-label" for="ot-progress-bar-parent"><?= @lang("App.progress") ?></label>
<div class="progress" style="height: 25px;" id="ot-progress-bar-parent">
<div id="ot-progress-bar" class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
<div class="col-md-2 col-6">
<div class="d-flex align-items-center">
<div class="badge rounded-pill bg-label-primary me-3 p-2">
<i class="ti ti-clock ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0 tiempo-estimado" id="ot-tiempo-estimado"><?= $tiempo_estimado ?></h5>
<span class="fx-large"><?= @lang("Produccion.tiempo_estimado") ?></span>
</div>
</div>
</div>
<div class="col-md-2 col-6">
<div class="d-flex align-items-center">
<div class="badge rounded-pill bg-label-warning me-3 p-2">
<i class="ti ti-clock ti-lg"></i>
</div>
<div class="card-info">
<h5 class="mb-0 tiempo-estimado" id="tiempo-total"></h5>
<span class="fx-large"><?= @lang("Produccion.tiempo_consumido") ?></span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="row mb-2">
<div class="col-md-3 <?= $user_dates["pre_formato_at"] || $user_dates["pre_lomo_at"] || $user_dates["pre_solapa_at"] || $user_dates["pre_codbarras_at"] || $user_dates["pre_imposicion_at"] ? "" : "d-none" ?>">
<!-- PREIMPRESION -->
<!-- Preformato -->
@ -258,17 +280,18 @@
<div class="form-text"><?= $user_dates["marcapaginas_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $flags["isCorte"] ? "" : "d-none" ?>">
<label for="ot-prep-guillotina" class="form-label"><?= @lang("Produccion.guillotina") ?></label>
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $flags["isPrepInteriorGuillotina"] ? "" : "d-none" ?>">
<label for="ot-prep-interior-guillotina" class="form-label"><?= @lang("Produccion.prep_interior_guillotina") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="corte_at" id="ot-prep-guillotina" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="preparacion_interiores_at" id="ot-prep-interior-guillotina" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["corte_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
<div class="form-text"><?= $user_dates["preparacion_interiores_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= count($ot->tareas_encuadernado()) > 0 ? "" : "d-none" ?>">
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= count($ot->tareas_manipulado()) > 0 ? "" : "d-none" ?>">
<label for="ot-manipulado" class="form-label"><?= @lang("Produccion.manipulado") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="entrada_manipulado_at" id="ot-manipulado" data-input <?= $is_finalizada ? "disabled" : "" ?>>
@ -287,6 +310,16 @@
<div class="form-text"> <?= $user_dates["encuadernacion_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $flags["isCorte"] ? "" : "d-none" ?>">
<label for="ot-prep-guillotina" class="form-label"><?= @lang("Produccion.guillotina") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="corte_at" id="ot-prep-guillotina" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["corte_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
</div>
<div class="col-md-3">
<!-- Progress -->
@ -318,14 +351,7 @@
</div>
</div>
<div class="row">
<div class="row">
<p><?= @lang("Produccion.tiempo_estimado") ?> : <?= $tiempo_estimado ?> (HH:MM)</p>
</div>
<div class="row">
<p><?= @lang("Produccion.tiempo_consumido") ?> :</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="d-flex flex-row justify-content-between align-items-center">
@ -342,12 +368,31 @@
<span class="switch-label fw-lg"><?= @lang("Produccion.pedido_espera") ?></span>
<span class="badge text-bg-warning fw-lg" id="pedido_espera_by"></span>
</label>
</div>
</div>
<div class="col-md-12 mt-2">
<div class="d-flex flex-row justify-content-between align-items-center">
<label class="switch switch-success switch-lg mt-1">
<input type="checkbox" class="switch-input ot-preview" id="ot-preimpresion-revisada" name="preimpresion_revisada" data-input <?= $is_finalizada ? "disabled" : "" ?> />
<span class="switch-toggle-slider">
<span class="switch-on">
<i class="ti ti-check"></i>
</span>
<span class="switch-off">
<i class="ti ti-x"></i>
</span>
</span>
<span class="switch-label fw-lg"><?= @lang("Produccion.preimpresion_revisada") ?></span>
<span class="badge text-bg-primary fw-lg" id="preimpresion_revisada_by"></span>
</label>
<?php if ($is_finalizada): ?>
<button type="button" id="btn-reactivar-orden-pedido" class="btn btn-primary btn-block"><?= @lang("Produccion.reactivar_orden") ?></button>
<?php else: ?>
<button type="button" id="btn-finalizar-orden-pedido" class="btn btn-warning btn-block"><?= @lang("Produccion.finalizar_orden") ?></button>
<?php endif; ?>
</div>
</div>
</div>

View File

@ -29,7 +29,7 @@
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="prot-datatables-container-rot" role="tabpanel">
<div class="tab-pane fade show active" id="prot-datatables-container-rot" role="tabpanel">
<div class="accordion accordion-bordered mt-3" id="accordionPapelGramaje">
<div class="card accordion-item active">
<h2 class="accordion-header" id="headingOne">
@ -76,14 +76,23 @@
<button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionPapelPliegoContainer" aria-expanded="false"
aria-controls="accordionPapelPliegoContainer">
<h4><?= lang("Produccion.papel_gramajes") ?></h4>
<h4><?= lang("Produccion.maquinas_planas") ?></h4>
</button>
</h2>
<div id="accordionPapelPliegoContainer" class="accordion-collapse collapse show"
data-bs-parent="#accordionPapelPliego">
<div class="accordion-body">
<?= view("themes/vuexy/components/tables/planning_papel_pliego_table.php", ["id" => "planning-pliego-datatable"]) ?>
<div class="d-none">
<?= view("themes/vuexy/components/tables/planning_papel_pliego_table.php", ["id" => "planning-pliego-datatable"]) ?>
</div>
<div class="row">
<div class="col-md-12 mb-2">
<label for="select-planning-maquina-padre"><?= lang('Produccion.select_maquina_padre') ?></label>
<select class="select2 form-select-sm planning-maquina-padre-select" id="select-planning-maquina-padre" name="lg_maquinas.padre_id"></select>
</div>
<?= view("themes/vuexy/components/tables/planning_maquina_table.php", ["id" => "planning-maquina-datatable"]) ?>
</div>
</div>
</div>
</div>

View File

@ -110,5 +110,5 @@
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/produccion/edit.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/produccion/edit.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -6,28 +6,46 @@
<?= $this->section('content'); ?>
<!--Content Body-->
<div class="row">
<div class="row section-block">
<div class="col-md-12">
<div class="row">
<div class="col-md-12 justify-content-end d-flex flex-row">
<button type="button" id="btn-download-pdf-zip" class="btn btn-primary mb-2"><span class="icon-base ti ti-download ti-xs me-1"></span><?= lang('Produccion.downloadPdf') ?></button>
</div>
</div>
<div class="nav-tabs-shadow nav-align-top">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-finalizados-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-finalizados"><?= lang("Produccion.finalizadas") ?></button>
<button type="button" data-order="0" class="nav-link active" role="tab" id="navs-top-align-news-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-news"><?= lang("Produccion.navs.news") ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link active" role="tab" id="navs-top-align-pendientes-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-pendientes"><?= lang("Produccion.pendientes") ?></button>
<button type="button" data-order="1" class="nav-link" role="tab" id="navs-top-align-pendientes-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-pendientes"><?= lang("Produccion.pendientes") ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-ferro-pendiente-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ferro-pendiente"><?= lang("Produccion.pendiente_ferro") ?></button>
<button type="button" data-order="2" class="nav-link" role="tab" id="navs-top-align-waiting-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-waiting"><?= lang("Produccion.navs.waiting") ?></button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" id="navs-top-align-ferro-ok-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ferro-ok"><?= lang("Produccion.ferro_ok") ?></button>
<button type="button" data-order="3" class="nav-link" role="tab" id="navs-top-align-ferro-pendiente-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ferro-pendiente"><?= lang("Produccion.pendiente_ferro") ?></button>
</li>
<li class="nav-item">
<button type="button" data-order="4" class="nav-link" role="tab" id="navs-top-align-ferro-ok-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ferro-ok"><?= lang("Produccion.ferro_ok") ?></button>
</li>
<li class="nav-item d-none">
<button type="button" data-order="5" class="nav-link" role="tab" id="navs-top-align-revision-com-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-revision-com"><?= lang("Produccion.navs.revision_com") ?></button>
</li>
<li class="nav-item">
<button type="button" data-order="6" class="nav-link" role="tab" id="navs-top-align-prod-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-prod"><?= lang("Produccion.navs.prod") ?></button>
</li>
<li class="nav-item">
<button type="button" data-order="7" class="nav-link" role="tab" id="navs-top-align-finalizados-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-finalizados"><?= lang("Produccion.finalizadas") ?></button>
</li>
</ul>
<div class="tab-content" id="ots-datatables-container">
<div class="tab-pane fade show" id="navs-top-align-finalizados">
<?= view("themes/vuexy/components/tables/ot_table.php", ["id" => "ot-datatable-finalizados"]) ?>
</div>
<div class="tab-pane fade show active" id="navs-top-align-pendientes">
<div class="tab-pane fade show" id="navs-top-align-pendientes">
<?= view("themes/vuexy/components/tables/ot_table.php", ["id" => "ot-datatable-pendientes"]) ?>
</div>
<div class="tab-pane fade show" id="navs-top-align-ferro-pendiente">
@ -36,6 +54,19 @@
<div class="tab-pane fade show" id="navs-top-align-ferro-ok">
<?= view("themes/vuexy/components/tables/ot_table.php", ["id" => "ot-datatable-ferro-ok"]) ?>
</div>
<div class="tab-pane fade show active" id="navs-top-align-news">
<?= view("themes/vuexy/components/tables/ot_table.php", ["id" => "ot-datatable-news"]) ?>
</div>
<div class="tab-pane fade show" id="navs-top-align-waiting">
<?= view("themes/vuexy/components/tables/ot_table.php", ["id" => "ot-datatable-waiting"]) ?>
</div>
<div class="tab-pane fade show" id="navs-top-align-revision-com">
<?= view("themes/vuexy/components/tables/ot_table.php", ["id" => "ot-datatable-revision-com"]) ?>
</div>
<div class="tab-pane fade show" id="navs-top-align-prod">
<?= view("themes/vuexy/components/tables/ot_table.php", ["id" => "ot-datatable-prod"]) ?>
</div>
</div>
<!--//.card -->
</div>
@ -45,14 +76,21 @@
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/spinkit/spinkit.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/notiflix/notiflix.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/ot.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/produccion/index.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/notiflix/notiflix.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.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/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/produccion/index.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -97,6 +97,16 @@
</select>
</div>
<?php if($formAction !== route_to('NewTicket')): ?>
<div class="mb-3 col-3">
<label class="form-label"><?= lang('Tickets.usuario') ?></label>
<input readonly type="text" name="titulo" class="form-control"
value="<?= old('usuario', $ticket->usuario_ticket) ?>">
</div>
<?php endif; ?>
<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">
@ -125,7 +135,9 @@
<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" : "" ?>
<?php if (!in_array(auth()->user()->id, array_column($supportUsers, 'id'))) {
echo 'readonly';
} ?>
rows="4"><?= isset($respuesta) ? old('respuestaMensaje', $respuesta->mensaje) : "" ?></textarea>
</div>
@ -187,6 +199,6 @@
<?= $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>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/soporte/tickets.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -72,5 +72,5 @@
<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>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/soporte/tickets.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -81,7 +81,7 @@
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/tarifas/maquinas/acabado/index.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/tarifas/maquinas/acabado/index.js') ?>"></script>
<?= $this->endSection() ?>
<?= $this->section("additionalInlineJs") ?>

View File

@ -148,7 +148,7 @@
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/tarifas/maquinas/encuadernacion/index.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/tarifas/maquinas/encuadernacion/index.js') ?>"></script>
<?= $this->endSection() ?>
<!------------------------------------------->
<!-- Código JS para general -->

View File

@ -82,7 +82,7 @@
</div><!--//.row -->
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/tarifas/maquinas/manipulado/index.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/tarifas/maquinas/manipulado/index.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -55,6 +55,6 @@
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/users/list.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/users/list.js') ?>"></script>
<?=$this->endSection() ?>

View File

@ -0,0 +1,41 @@
<table width="600" bgcolor="#ffffff">
<tr>
<td
style="font-family: Helvetica, arial, sans-serif; font-size: 15px; color: #333333; text-align:center; line-height: 15px;">
Número pedido: <?= esc($datos_pedido->pedido_id) ?></td>
</tr>
<tr>
<td
style="font-family: Helvetica, arial, sans-serif; font-size: 15px; color: #333333; text-align:center; line-height: 15px;">
Título: <?= esc($datos_pedido->titulo) ?></td>
</tr>
<tr>
<td
style="font-family: Helvetica, arial, sans-serif; font-size: 15px; color: #333333; text-align:center; line-height: 15px;">
CP: <?= esc($datos_pedido->cp) ?></td>
</tr>
<tr>
<td
style="font-family: Helvetica, arial, sans-serif; font-size: 15px; color: #333333; text-align:center; line-height: 15px;">
Proveedor envío: <?= esc($datos_pedido->proveedor_nombre) ?></td>
</tr>
<tr>
<td
style="font-family: Helvetica, arial, sans-serif; font-size: 15px; color: #333333; text-align:center; line-height: 15px;">
Código seguimiento: <?= esc($datos_pedido->codigo_seguimiento) ?></td>
</tr>
<?php if (!empty($datos_pedido->url)): ?>
<tr>
<td
style="font-family: Helvetica, arial, sans-serif; font-size: 15px; color: #333333; text-align:center; line-height: 15px;">
URL seguimiento: <a href="<?= esc($datos_pedido->url) ?>"><?= esc($datos_pedido->url) ?></a>
</td>
</tr>
<?php endif; ?>
<tr>
<td height="20" align="center">
<p style="margin-top: 20px;font-family: Helvetica, arial, sans-serif; font-size: 15px; color: #333333;">Consulte con su comercial <?= esc($datos_pedido->comercial_nombre) ?> en el correo
<?= esc($datos_pedido->comercial_correo) ?></p>
</td>
</tr>
</table>

View File

@ -0,0 +1,156 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><?= esc($emailTitle ?? 'Correo de Safekat') ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style type="text/css">
/* Copia aquí todo el CSS de tu layout Blade */
body {
margin: 0;
padding: 0;
width: 100% !important;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table {
border-collapse: collapse;
}
img {
border: none;
outline: none;
text-decoration: none;
display: block;
}
h2 {
font-family: Helvetica, Arial, sans-serif;
font-size: 30px;
color: #333;
text-align: center;
}
p {
font-family: Helvetica, Arial, sans-serif;
font-size: 16px;
color: #666;
text-align: center;
line-height: 30px;
}
@media only screen and (max-width: 640px) {
a[href^="tel"],
a[href^="sms"] {
text-decoration: none;
color: #0a8cce;
/* or whatever your want */
pointer-events: none;
cursor: default;
}
.mobile_link a[href^="tel"],
.mobile_link a[href^="sms"] {
text-decoration: default;
color: #0a8cce !important;
pointer-events: auto;
cursor: default;
}
table[class=devicewidth] {
width: 440px !important;
text-align: center !important;
}
table[class=devicewidthinner] {
width: 420px !important;
text-align: center !important;
}
img[class=banner] {
width: 440px !important;
height: 220px !important;
}
img[class=colimg2] {
width: 440px !important;
height: 220px !important;
}
}
/*IPHONE STYLES*/
@media only screen and (max-width: 480px) {
a[href^="tel"],
a[href^="sms"] {
text-decoration: none;
color: #0a8cce;
/* or whatever your want */
pointer-events: none;
cursor: default;
}
.mobile_link a[href^="tel"],
.mobile_link a[href^="sms"] {
text-decoration: default;
color: #0a8cce !important;
pointer-events: auto;
cursor: default;
}
table[class=devicewidth] {
width: 280px !important;
text-align: center !important;
}
table[class=devicewidthinner] {
width: 260px !important;
text-align: center !important;
}
img[class=banner] {
width: 280px !important;
height: 140px !important;
}
img[class=colimg2] {
width: 280px !important;
height: 140px !important;
}
}
</style>
</head>
<body>
<table width="100%" bgcolor="#ffffff">
<tr>
<td align="center">
<!-- Logo -->
<img src="<?= site_url('themes/vuexy/img/safekat/logos/sk-logo.png') ?>" alt="Safekat" width="108"
height="45">
</td>
</tr>
<tr>
<td height="20"></td>
</tr>
<tr>
<td align="center">
<h3><?= esc($emailTitle2 ?? '') ?></h3>
</td>
</tr>
<tr>
<td align="center">
<?= esc($content) ?>
</tr>
</table>
</body>
</html>

View File

@ -152,7 +152,8 @@ $picture = "/assets/img/default-user.png";
<div class="sidebar-body">
<!-- Contacts -->
<h6 id="chat-message-notification-title">
<?= lang("Chat.no_messages_notification") ?> </h6>
<?= lang("Chat.no_messages_notification") ?>
</h6>
<ul class="list-unstyled chat-contact-list mb-0"
id="chat-notification-list">
@ -362,8 +363,8 @@ $picture = "/assets/img/default-user.png";
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatNotification.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/layout.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/chatNotification.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/layout.js') ?>"></script>
<!-- endbuild -->
@ -413,6 +414,33 @@ $picture = "/assets/img/default-user.png";
document.addEventListener('DOMContentLoaded', function () {
const browserUrl = window.location.pathname;
document.querySelectorAll('.menu-item a.menu-link').forEach(function (link) {
const href = link.getAttribute('href');
if (!href || href === 'javascript:void(0);') return;
const tempAnchor = document.createElement('a');
tempAnchor.href = href;
const linkPath = tempAnchor.pathname;
// Corrección: coincide si es igual o si browserUrl empieza con el linkPath + '/'
if (browserUrl === linkPath || browserUrl.startsWith(linkPath + '/')) {
const menuItem = link.closest('.menu-item');
if (menuItem) {
menuItem.classList.add('active');
}
const parent = menuItem?.closest('.menu-sub');
if (parent) {
const parentItem = parent.closest('.menu-item');
if (parentItem) {
parentItem.classList.add('active', 'open');
}
}
}
});
function adjustSidebar4ContentWrapper() {
if ($('#sidebar').hasClass('d-none') && $(window).width() <= 768) {
$('#contentWrapper').addClass('full-width');

View File

@ -1,47 +0,0 @@
<!-- Core JS -->
<script src="<?= site_url('themes/vuexy/vendor/libs/jquery/jquery.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/popper/popper.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/bootstrap.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/i18n/i18n.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/typeahead-js/typeahead.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
<!-- Vendors JS -->
<script src="<?= site_url('themes/vuexy/vendor/timeago/jquery.timeago.js'); ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/timeago/locales/jquery.timeago.'.langJS().'.js'); ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.min.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js') ?>"></script>
<!-- Main JS -->
<script src="<?= site_url('themes/vuexy/js/main.js') ?>"></script>
<!-- Page JS -->
<!-- Custom JS -->
<script>
"use strict";
$(document).ready(function () {
let time_ago = document.getElementsByClassName("timeAgo");
for (let i = 0; i < time_ago.length; i++) {
time_ago[i].innerText = jQuery.timeago(time_ago[i].innerText)
}
});
</script>
<div class="footer">
<div class="copyright">
<p>Copyright © <a href="#" target="_blank">TBD</a> - Safekat v<?=version()?> </p>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,189 +0,0 @@
<?php
$session = session();
$token = $session->get('token') ?? '';
$tfa = $session->get('tfa') ?? false;
$settings = $session->get('settings');
// Legacy TODO: check?
$picture = "/assets/img/default-user.png";
$pulse = session()->get('pulse');
$notification = session()->get('notification');
if (!empty($token) && $tfa == false) {
//echo "<script>window.location.href = '/'; </script>";
}
?>
<!DOCTYPE html>
<html
lang="<?= $session->get('lang') ?>"
class="h-100"
class="dark-style customizer-hide"
dir="ltr"
data-theme="theme-default"
data-assets-path="<?= site_url('themes/vuexy/') ?>"
data-template="vertical-menu-template-no-customizer"
>
<head>
<meta charset="utf-8">
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"
/>
<title><?= lang("App.dashboard_title") ?> - <?= $settings['title']??'' ?></title>
<meta name="description" content="" />
<!-- Favicon -->
<link rel="icon" type="image/x-icon" href="<?= site_url('themes/vuexy/img/favicon/favicon.ico') ?>"/>
<link rel="apple-touch-icon" sizes="57x57" href="<?= site_url('themes/vuexy/img/favicon/apple-icon-57x57.png') ?>">
<link rel="apple-touch-icon" sizes="60x60" href="<?= site_url('themes/vuexy/img/favicon/apple-icon-60x60.png') ?>">
<link rel="apple-touch-icon" sizes="72x72" href="<?= site_url('themes/vuexy/img/favicon/apple-icon-72x72.png') ?>">
<link rel="apple-touch-icon" sizes="76x76" href="<?= site_url('themes/vuexy/img/favicon/apple-icon-76x76.png') ?>">
<link rel="apple-touch-icon" sizes="114x114"
href="<?= site_url('themes/vuexy/img/favicon/apple-icon-114x114.png') ?>">
<link rel="apple-touch-icon" sizes="120x120"
href="<?= site_url('themes/vuexy/img/favicon/apple-icon-120x120.png') ?>">
<link rel="apple-touch-icon" sizes="144x144"
href="<?= site_url('themes/vuexy/img/favicon/apple-icon-144x144.png') ?>">
<link rel="apple-touch-icon" sizes="152x152"
href="<?= site_url('themes/vuexy/img/favicon/apple-icon-152x152.png') ?>">
<link rel="apple-touch-icon" sizes="180x180"
href="<?= site_url('themes/vuexy/img/favicon/apple-icon-180x180.png') ?>">
<link rel="icon" type="image/png" sizes="192x192"
href="<?= site_url('themes/vuexy/img/favicon/android-icon-192x192.png') ?>">
<link rel="icon" type="image/png" sizes="32x32"
href="<?= site_url('themes/vuexy/img/favicon/favicon-32x32.png') ?>">
<link rel="icon" type="image/png" sizes="96x96"
href="<?= site_url('themes/vuexy/img/favicon/favicon-96x96.png') ?>">
<link rel="icon" type="image/png" sizes="16x16"
href="<?= site_url('themes/vuexy/img/favicon/favicon-16x16.png') ?>">
<link rel="manifest" href="<?= site_url('themes/vuexy/img/favicon/manifest.json') ?>">
<!-- Fonts -->
<link rel="preconnect" href="https:/fonts.googleapis.com"/>
<link rel="preconnect" href="https:/fonts.gstatic.com" crossorigin/>
<link
href="https:/fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
rel="stylesheet"
/>
<!-- Icons -->
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/fontawesome.css') ?>"/>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/tabler-icons.css') ?>"/>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/flag-icons.css') ?>"/>
<!-- Core CSS -->
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/core-dark.css') ?>"/>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/theme-default-dark.css') ?>"/>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>"/>
<!-- Vendors CSS -->
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') ?>"/>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.css') ?>"/>
<!-- Page CSS -->
<!-- Helpers -->
<script src="<?= site_url('themes/vuexy/vendor/js/helpers.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/js/config.js') ?>"></script>
</head>
<body>
<!--Main Wrapper-->
<div id="main-wrapper">
<!--Nav Header-->
<div class="nav-header">
<a href="<?=site_url('home')?>" class="brand-logo">
</a>
<div class="nav-control">
<div class="hamburger">
<span class="line"></span><span class="line"></span><span class="line"></span>
</div>
</div>
</div>
<!--Header-->
<div class="header">
<div class="header-content">
<nav class="navbar navbar-expand">
<div class="collapse navbar-collapse justify-content-between">
<div class="header-left"></div>
<ul class="navbar-nav header-right">
<!--- JJO
<li class="nav-item dropdown notification_dropdown">
<a class="nav-link" href="#" role="button" data-toggle="dropdown">
<i class="fas fa-bell"></i>
<?php if ($pulse > 0) : ?>
<div class="pulse-css text-danger"></div>
<?php endif; ?>
</a>
<div class="dropdown-menu dropdown-menu-right">
<ul class="list-unstyled">
<?php foreach ($notification??[] as $item) : ?>
<a href="<?=site_url('my/notification_view/'.$item['token'])?>">
<li class="media dropdown-item">
<?php if ($item['is_read']) : ?>
<span class="success"><i class="far fa-envelope-open"></i> </span>
<?php else : ?>
<span class="primary"><i class="far fa-envelope"></i> </span>
<?php endif; ?>
<div class="media-body">
<p><?=$item['title']?></p>
</div>
<span class="notify-time timeAgo"><?=$item['created_at']?></span>
</li>
</a>
<?php endforeach; ?>
</ul>
<a class="all-notification" href="<?=site_url('my/notification')?>"><?= lang("App.notification_bell_btn") ?> <i class="ti-arrow-right"></i></a>
</div>
</li>
--->
<li class="nav-item dropdown header-profile">
<a class="nav-link" href="#" role="button" data-toggle="dropdown">
<i class="fas fa-globe-americas"></i>
</a>
<div class="dropdown-menu dropdown-menu-right">
<a href="<?= site_url('lang/en'); ?>" class="dropdown-item">
<img src="<?=site_url('assets/flags/us_32_circle.png')?>">
<span class="ml-2"><?= lang("App.lang_en") ?></span>
</a>
<a href="<?= site_url('lang/es'); ?>" class="dropdown-item">
<img src="<?=site_url('assets/flags/es_32_circle.png')?>">
<span class="ml-2"><?= lang("App.lang_es") ?></span>
</a>
</div>
</li>
<li class="nav-item dropdown header-profile">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<img src="<?= $picture??''?>" class="btn-circle btn-circle-sm" style="width: 50px ; height: 50px;">
</a>
<div class="dropdown-menu dropdown-menu-right">
<a href="<?= site_url('profile'); ?>" class="dropdown-item">
<i class="fas fa-user"></i>
<span class="ml-2"><?= lang("App.menu_profile") ?></span>
</a>
<!--- JJO
<a href="<?= site_url('activity'); ?>" class="dropdown-item">
<i class="fas fa-list"></i>
<span class="ml-2"><?= lang("App.menu_activity") ?></span>
</a>
--->
<a href="<?= site_url('logout'); ?>" class="dropdown-item">
<i class="fas fa-sign-out-alt"></i>
<span class="ml-2"><?= lang("App.menu_logout") ?></span>
</a>
</div>
</li>
</ul>
</div>
</nav>
</div>
</div>
<?php include "selector_menu.php" ?>

View File

@ -22,7 +22,7 @@ $developmentClass = ($skEnv === 'development') ? 'env-bg' : '';
<ul class="menu-inner py-1">
<li class="menu-item active">
<li class="menu-item">
<a href="<?= site_url("") ?>" class="menu-link">
<i class="menu-icon tf-icons ti ti-dashboard"></i>
<div data-i18n="<?= lang("App.menu_dashboard") ?>"><?= lang("App.menu_dashboard") ?></div>

View File

@ -22,7 +22,7 @@ $developmentClass = ($skEnv === 'development') ? 'env-bg' : '';
<ul class="menu-inner py-1">
<li class="menu-item active">
<li class="menu-item">
<a href="<?= site_url("") ?>" class="menu-link">
<i class="menu-icon tf-icons ti ti-dashboard"></i>
<div data-i18n="<?= lang("App.menu_dashboard") ?>"><?= lang("App.menu_dashboard") ?></div>

View File

@ -25,11 +25,13 @@ if (auth()->user()->can('catalogo.menu')) {
</a>
</li>
<?php } ?>
<li class="menu-item">
<a href="<?= site_url("catalogo/catalogo/importar") ?>" class="menu-link beta">
<?= lang("App.menu_catalogo_importar") ?>
</a>
</li>
<?php if (auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= site_url("catalogo/catalogo/importar") ?>" class="menu-link beta">
<?= lang("App.menu_catalogo_importar") ?>
</a>
</li>
<?php } ?>
</ul>
</li>
<?php } ?>

View File

@ -1,6 +1,9 @@
<li class="menu-item active">
<?php
/**
* MENU DASHBOARD
*/
?>
<li class="menu-item <?= uri_string() === '' ? 'active' : '' ?>">
<a href="<?= route_to("home") ?>" class="menu-link">
<i class="menu-icon tf-icons ti ti-dashboard"></i>
<div><?= lang("App.menu_dashboard") ?></div>

View File

@ -3,14 +3,12 @@
/**
* MENU LOGISTICA
*/
if (auth()->user()->inGroup('beta')) {
if (auth()->user()->can('logistica.menu')) {
?>
<!-- Logistic -->
<li class="menu-item">
<a href="<?= route_to("LogisticaPanel") ?>" class="menu-link">
<i class="menu-icon tf-icons ti ti-truck"></i>
<div> <?= lang("App.menu_logistica") ?></div>
</a>
</li>
<?php } ?>

View File

@ -22,11 +22,6 @@ if (auth()->user()->inGroup('maquina','admin')) {
<div><?= lang("App.menu_maquinista_colas") ?></div>
</a>
</li>
<li class="menu-item">
<a href="<?= route_to("viewProduccionMaquinistaMantenimiento") ?>" class="menu-link beta">
<div><?= lang("App.menu_maquinista_mantenimiento") ?></div>
</a>
</li>
</ul>
</li>
<?php } ?>

View File

@ -0,0 +1,190 @@
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/font-pdf.css') ?>">
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.albaran.css') ?>">
<style>
@page {
margin: 10px;
}
body {
margin: 10px;
}
.espaciado-superior {
margin-top: 40px;
}
</style>
</head>
<body>
<main class="body-class">
<?php $mostrarPrecios = $albaran->mostrar_precios == 1; ?>
<div class="espaciado-superior"></div>
<table class="datos-albaran">
<thead>
<tr>
<th class="intro_num_albaran">
Nº ALBARÁN:
</th>
<th class="num_albaran">
<?= $albaran->id ?>
</th>
<th class="intro_num_albaran">
</th>
<th class="num_pedido">
</th>
<th class="intro_fecha">
FECHA:
</th>
<th class="text-start fecha">
<?= $albaran->fecha_albaran ? $albaran->fecha_albaran : date('d-m-Y') ?>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="intro_cliente" colspan="6">Cliente: <?= $albaran->cliente ?></td>
</tr>
<tr>
<td class="att" colspan="6">Att: <?= $albaran->att ?></td>
</tr>
<tr>
<td class="direccion" colspan="6"><?= $albaran->direccion ?></td>
</tr>
<tr>
</tr>
<tr>
<td colspan="6">Total cajas: <?= $albaran->cajas ?></td>
</tr>
</tbody>
</table>
<table class="table table-striped lineas">
<thead>
<tr class="head-lineas">
<th class="text-center num_unidades">Nº Unid.</th>
<th class="concepto">Pedido</th>
<th class="concepto">Título</th>
<th class="concepto">ISBN</th>
<th class="concepto">Ref. Cliente</th>
<th class="concepto">Cajas</th>
<th class="concepto">Unidades/Caja</th>
<?php if ($mostrarPrecios): ?>
<th class="precio_unidad">€/ud.</th>
<th class="subtotal">Subtotal</th>
<?php endif; ?>
</tr>
</thead>
<tbody>
<?php
$total = 0;
$total_precio = 0;
foreach ($albaranLineas as $linea):
?>
<?php
$total += 1;
$total_precio += $linea->total;
?>
<tr>
<td class="text-center num_unidades">
<?= $linea->unidades ?>
</td>
<td class="text-center">
<?= $linea->pedido ?>
</td>
<td>
<div><?= $linea->titulo ?></div>
</td>
<td>
<div><?= $linea->isbn ?></div>
</td>
<td>
<div><?= $linea->ref_cliente ?></div>
</td>
<td>
<div><?= $linea->cajas ?></div>
</td>
<td>
<div><?= $linea->unidades_cajas ?></div>
</td>
<?php if ($mostrarPrecios): ?>
<td class="precio_unidad">
<?php if (!str_contains($linea->titulo, "IVA")): ?>
<div><?= number_format($linea->precio_unidad, 4, ',', '.') ?></div>
<?php endif; ?>
</td>
<td class="subtotal">
<div><?= number_format($linea->total, 2, ',', '.') ?></div>
</td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
<?php if ($total < 5): ?>
<?php for ($i = $total; $i < 7; $i++): ?>
<tr>
<td class="num_unidades">
<div></div>
</td>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
<?php if ($mostrarPrecios): ?>
<td class="precio_unidad">
<div></div>
</td>
<td class="subtotal">
<div></div>
</td>
<?php endif; ?>
</tr>
<?php endfor; ?>
<?php endif; ?>
</tbody>
</table>
<table style="padding: 5px" class="total">
<tr>
<td class="intro_recibi">
RECIBÍ
</td>
<?php if ($mostrarPrecios): ?>
<td class="intro_total">
TOTAL
</td>
<td class="subtotal">
<?= ($total_precio) ?>
</td>
<?php endif; ?>
</tr>
</table>
</main>
</body>
</html>

View File

@ -6,7 +6,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/font-pdf.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.albaran.css') ?>">
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.albaran.css') ?>">
<style>
@page {
margin: 10px;
@ -69,7 +69,7 @@
<tr>
</tr>
<tr>
<td colspan="6">Cajas: <?= $albaran->cajas ?></td>
<td colspan="6">Total cajas: <?= $albaran->cajas ?></td>
</tr>
</tbody>
</table>
@ -82,6 +82,8 @@
<th class="concepto">Título</th>
<th class="concepto">ISBN</th>
<th class="concepto">Ref. Cliente</th>
<th class="concepto">Cajas</th>
<th class="concepto">Unidades/Caja</th>
<?php if ($mostrarPrecios): ?>
<th class="precio_unidad">€/ud.</th>
<th class="subtotal">Subtotal</th>
@ -115,6 +117,12 @@
<td>
<div><?= $linea->ref_cliente ?></div>
</td>
<td>
<div><?= $linea->cajas ?></div>
</td>
<td>
<div><?= $linea->unidades_cajas ?></div>
</td>
<?php if ($mostrarPrecios): ?>
<td class="precio_unidad">
<?php if (!str_contains($linea->titulo, "IVA")): ?>
@ -146,6 +154,12 @@
<td>
<div></div>
</td>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
<?php if ($mostrarPrecios): ?>
<td class="precio_unidad">
<div></div>

View File

@ -1,9 +1,7 @@
<table>
<tr class="encuadernacion">
<th >Encuadernacion</th>
<th class="cell-50"></th>
<th class="cell-50"></th>
<th class="cell-50"></th>
<th class="cell-50">Sobrecubierta</th>
<th class="cell-50">Guardas</th>
<th class="cell-50">Retractilado</th>
@ -12,9 +10,7 @@
<?php if (count($encuadernaciones) > 0): ?>
<tr style="color: red;">
<td><?= $encuadernacion->tarifa()->nombre ?></td>
<td></td>
<td></td>
<td></td>
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>

View File

@ -6,7 +6,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/font-pdf.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.factura.css') ?>">
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.factura.css') ?>">
<style>
@page {
margin: 10px;

View File

@ -25,7 +25,7 @@ $settings = $session->get('settings');
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.css') ?>" />
<link rel="icon" type="image/x-icon" href="<?= site_url('themes/vuexy/img/favicon/favicon.ico') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.ot.css') ?>">
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.ot.css') ?>">
<title><?= $presupuesto->titulo ?>[OT:<?= $ot->id ?>]</title>
@ -56,13 +56,13 @@ $settings = $session->get('settings');
<div class="row">
<div class="col-8">
<div class="px-2 d-flex flex justify-content-between align-items-center" style="background-color: <?= $colors["week_day"]["bg"] ?>;color:<?= $colors["week_day"]["color"] ?>;">
<span><strong><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></strong></span>
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
<span><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></span>
<span>Comercial: <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
</div>
</div>
<div class="col-4">
<div class="px-2 d-flex flex justify-content-center align-items-center w-100">
<span class="w-100 text-center" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
<span class="w-100 text-center code-title" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
<?php if ($isPOD): ?>
<strong>POD</strong>
<?php elseif ($presupuesto->presupuestoLineaImpresion()->isRotativa()): ?>
@ -70,18 +70,17 @@ $settings = $session->get('settings');
<?php else: ?>
<strong>GENERAL</strong>
<?php endif; ?>
</span>
</div>
</div>
</div>
<div class="row p-2">
<div class="col-3 h-100">
<div class="row text-center">
<span id="fecha_encuadernado_at" class="fs-large fw-bold" style="color:<?= $colors["general"]["color"] ?>;"><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></span>
</div>
<div class="row px-2 mt-2 h-100">
<table class="h-100 bg-white">
<table class="h-100 bg-white" style="font-size: small;">
<tr>
<th class="bg-white">IN</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
@ -103,26 +102,27 @@ $settings = $session->get('settings');
<td class="t-cell bg-white"><?= $ubicacion ?></td>
</tr>
</table>
</div>
</div>
<div class="col-5">
<div class="col-5 h-100">
<div class="row">
<div class="col-12 w-50 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<strong><?= $encuadernacionCode ?></strong>
<div class="col-12 w-50 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<?= $encuadernacionCode ?>
</div>
</div>
<div class="row h-75">
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
<?= $linea_impresion?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
<div class="col-6 square text-center code-title <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
<?= $tiempo_impresion ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
<?= $linea_cubierta?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
</div>
<?php foreach ($acabados as $key => $acabado): ?>
@ -137,7 +137,7 @@ $settings = $session->get('settings');
<div class="col-4" style="background-color: <?= $colors["ot"]["bg"] ?>">
<div class="row h-100">
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center">
<span class="fs-large" style="color:<?= $colors["ot"]["color"] ?>;"><strong><?= $ot->id ?></strong></span>
<span class="ot-code" style="color:<?= $colors["ot"]["color"] ?>;"><?= $ot->id ?></span>
</div>
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center bg-white">
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
@ -151,32 +151,30 @@ $settings = $session->get('settings');
</div>
<div class="row">
<div class="col-8">
<table class="h-50">
<table class="h-100">
<tr>
<th>IDSK</th>
<td class="t-cell">
</td>
<th class="al">IDSK</th>
<td class="t-cell"></td>
</tr>
<tr>
<th>CLIENTE</th>
<th class="al">CLIENTE</th>
<td class="t-cell">
<?= $cliente->alias ?>
</td>
</tr>
<tr>
<th>TITULO</th>
<th class="al">TITULO</th>
<td class="t-cell">
<?= $presupuesto->titulo ?>
</td>
</tr>
<tr>
<th>ISBN</th>
<th class="al">ISBN</th>
<td class="t-cell"><?= $presupuesto->isbn ?></td>
</tr>
<tr>
<th>PEDIDO CLIENTE</th>
<th class="al">PEDIDO</th>
<td class="t-cell"><?= $pedido->id ?></td>
</tr>
</table>
@ -184,12 +182,10 @@ $settings = $session->get('settings');
<div class="col-4">
<div class="col-12 d-flex justify-content-center" style="width: 100%">
<?php if ($imposicion): ?>
<?php if ($imposicion->imposicion_esquema()): ?>
<?= $imposicion->imposicion_esquema()->svg_schema ?>
<?php endif; ?>
<?php endif; ?>
</div>
<div class="col-12">
<div class="imposicion">
@ -204,19 +200,31 @@ $settings = $session->get('settings');
</div>
</div>
<div class="row mb-2">
<div class="section-title impresion">IMP. INTERIOR</div>
<div class="d-flex flex-row gap-2 justify-content-start">
<div class="section-title impresion">IMP. INTERIOR</div>
<?php if ($pedido->fecha_impresion): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_impresion)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<div>
<table>
<table class="">
<tr>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.size') ?></th>
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.ejemplares') ?></th>
<th class="t-header"><?= lang('Produccion.size') ?></th>
<th class="t-header"><?= lang('Produccion.ejemplares') ?></th>
<th class="t-header"><?= lang('Produccion.tipo') ?></th>
<th class="t-header"><?= lang('Produccion.lomo') ?></th>
</tr>
<tr>
<?php if ($presupuesto->papel_formato_personalizado): ?>
<td class="t-cell text-center"> <?= $presupuesto->papel_formato_ancho ?>x<?= $presupuesto->papel_formato_alto ?> </td>
<?php else: ?>
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
<?php endif; ?>
<td class="t-cell text-center"> 1 </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.tipo') ?></th>
<td class="t-cell text-center"> <?= $presupuesto->tipo_presupuesto()?->codigo ?? "" ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.lomo') ?></th>
<td class="t-cell text-center"> <?= number_format($presupuesto->lomo_cubierta, 2, ',', '.') ?> </td>
</tr>
</table>
<table>
@ -251,7 +259,7 @@ $settings = $session->get('settings');
</tr>
</table>
</div>
<div class="comments <?=$ot->comment_interior ? '' : 'd-none' ?>">
<div class="comments <?= $ot->comment_interior ? '' : 'd-none' ?>">
<div class="flex-row impresion">Comentarios impresión interior</div>
<div class="comment-content w-100">
<p>
@ -262,7 +270,12 @@ $settings = $session->get('settings');
</div>
</div>
<div class="row mb-2">
<div class="section-title">LOGISTICA</div>
<div class="d-flex flex-row justify-content-start w-100 gap-2">
<div class="section-title">LOGISTICA</div>
<?php if ($pedido->fecha_entrega_real): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_entrega_real)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<table>
<tr>
@ -276,7 +289,7 @@ $settings = $session->get('settings');
<td>-</td>
</tr>
</table>
<div class="comments <?=$ot->comment_logistica ? '' : 'd-none' ?>">
<div class="comments <?= $ot->comment_logistica ? '' : 'd-none' ?>">
<div class="flex-row">Comentarios logistica:</div>
<div class="comment-content">
<p>
@ -286,9 +299,7 @@ $settings = $session->get('settings');
</div>
</div>
</div>
<div class="col-md-12 d-flex justify-content-center align-items-center">
<span class="footer">&copy; 2024 SAFEKAT. Todos los derechos reservados.</span>
</div>
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.min.js") ?>></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/jquery/jquery.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/popper/popper.js') ?>"></script>
@ -297,7 +308,7 @@ $settings = $session->get('settings');
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
<script src="<?= site_url('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
<script src="<?= versioned_asset('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
</body>

View File

@ -25,7 +25,7 @@ $settings = $session->get('settings');
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.css') ?>" />
<link rel="icon" type="image/x-icon" href="<?= site_url('themes/vuexy/img/favicon/favicon.ico') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.ot.css') ?>">
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.ot.css') ?>">
<title><?= $presupuesto->titulo ?>[OT:<?= $ot->id ?>]</title>
@ -48,27 +48,25 @@ $settings = $session->get('settings');
<img class="portada-img border-secondary img-thumbnail img-fluid" src="<?= $ot->full_path ? "data:image/png;base64," . base64_encode(file_get_contents($ot->full_path)) : '/assets/img/portada_not_found.png' ?>" />
<?php else: ?>
<img class="portada-img border-secondary img-thumbnail img-fluid" src="/assets/img/portada_not_found.png" />
<?php endif; ?>
</div>
<div class="col-10 py-2 rounded border-1 border-secondary" style="background-color: <?= $colors["general"]["bg"] ?>;color:<?= $colors["general"]["color"] ?>;">
<div class="row">
<div class="col-8">
<div class="px-2 d-flex flex justify-content-between align-items-center" style="background-color: <?= $colors["week_day"]["bg"] ?>;color:<?= $colors["week_day"]["color"] ?>;">
<span><strong><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></strong></span>
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
<span class="fs-large"><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></span>
<span class="fs-large">Comercial: <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
</div>
</div>
<div class="col-4">
<div class="px-2 d-flex flex justify-content-center align-items-center w-100">
<span class="w-100 text-center" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
<span class="w-100 text-center code-title" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
<?php if ($isPOD): ?>
<strong>POD</strong>
<strong><?= $linea_impresion->maquina()->alias_ot ?? "POD" ?></strong>
<?php elseif ($presupuesto->presupuestoLineaImpresion()->isRotativa()): ?>
<strong>ROTATIVA</strong>
<?php else: ?>
<strong>GENERAL</strong>
<strong><?= $linea_impresion->maquina()->alias_ot ?? "GENERAL" ?></strong>
<?php endif; ?>
@ -79,13 +77,11 @@ $settings = $session->get('settings');
<div class="row p-2">
<div class="col-3 h-100">
<div class="row px-2 d-flex flex justify-content-between align-items-center">
<div class="col-6 w-100 text-center">
<span id="fecha_encuadernado_at" style="color:<?= $colors["general"]["color"] ?>;"><strong><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></strong></span>
</div>
<div class="row text-center">
<span id="fecha_encuadernado_at" class="fs-large fw-bold" style="color:<?= $colors["general"]["color"] ?>;"><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></span>
</div>
<div class="row px-2 mt-2 h-100">
<table class="h-100 bg-white">
<table class="h-100 bg-white" style="font-size: small;">
<tr>
<th class="bg-white">IN</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
@ -110,23 +106,23 @@ $settings = $session->get('settings');
</div>
</div>
<div class="col-5">
<div class="col-5 h-100">
<div class="row">
<div class="col-12 w-50 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<strong><?= $encuadernacionCode ?></strong>
<div class="col-12 w-50 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<?= $encuadernacionCode ?>
</div>
</div>
<div class="row h-75">
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
<div class="row h-100">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
<?= $linea_impresion?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
<div class="col-6 square text-center code-title <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
<?= $tiempo_impresion ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
<?= $linea_cubierta?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
</div>
<?php foreach ($acabados as $key => $acabado): ?>
@ -141,7 +137,7 @@ $settings = $session->get('settings');
<div class="col-4" style="background-color: <?= $colors["ot"]["bg"] ?>">
<div class="row h-100">
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center">
<span class="fs-large" style="color:<?= $colors["ot"]["color"] ?>;"><strong><?= $ot->id ?></strong></span>
<span class="ot-code" style="color:<?= $colors["ot"]["color"] ?>;"><?= $ot->id ?></span>
</div>
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center bg-white">
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
@ -155,32 +151,32 @@ $settings = $session->get('settings');
</div>
<div class="row">
<div class="col-8">
<table class="h-50">
<table class="h-100">
<tr>
<th>IDSK</th>
<td class="t-cell">
<th class="al">IDSK</th>
<td class="t-cell w-75">
</td>
</tr>
<tr>
<th>CLIENTE</th>
<th class="al">CLIENTE</th>
<td class="t-cell">
<?= $cliente->alias ?>
</td>
</tr>
<tr>
<th>TITULO</th>
<th class="al">TITULO</th>
<td class="t-cell">
<?= $presupuesto->titulo ?>
</td>
</tr>
<tr>
<th>ISBN</th>
<th class="al">ISBN</th>
<td class="t-cell"><?= $presupuesto->isbn ?></td>
</tr>
<tr>
<th>PEDIDO CLIENTE</th>
<th class="al">PEDIDO</th>
<td class="t-cell"><?= $pedido->id ?></td>
</tr>
</table>
@ -188,7 +184,6 @@ $settings = $session->get('settings');
<div class="col-4">
<div class="col-12 d-flex justify-content-center" style="width: 100%">
<?php if ($imposicion): ?>
<?php if ($imposicion->imposicion_esquema()): ?>
<?= $imposicion->imposicion_esquema()->svg_schema ?>
<?php endif; ?>
@ -208,19 +203,31 @@ $settings = $session->get('settings');
</div>
</div>
<div class="row mb-2">
<div class="section-title impresion">IMP. INTERIOR</div>
<div class="d-flex flex-row gap-2 justify-content-start">
<div class="section-title impresion">IMP. INTERIOR</div>
<?php if ($pedido->fecha_impresion): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_impresion)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<div>
<table>
<table class="">
<tr>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.size') ?></th>
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.ejemplares') ?></th>
<th class="t-header"><?= lang('Produccion.size') ?></th>
<th class="t-header"><?= lang('Produccion.ejemplares') ?></th>
<th class="t-header"><?= lang('Produccion.tipo') ?></th>
<th class="t-header"><?= lang('Produccion.lomo') ?></th>
</tr>
<tr>
<?php if ($presupuesto->papel_formato_personalizado): ?>
<td class="t-cell text-center"> <?= $presupuesto->papel_formato_ancho ?>x<?= $presupuesto->papel_formato_alto ?> </td>
<?php else: ?>
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
<?php endif; ?>
<td class="t-cell text-center"> <?= $presupuesto->tirada ?> + <?= $presupuesto->merma ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.tipo') ?></th>
<td class="t-cell text-center"> <?= $presupuesto->tipo_presupuesto()?->codigo ?? "" ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.lomo') ?></th>
<td class="t-cell text-center"> <?= number_format($presupuesto->lomo_cubierta, 2, ',', '.') ?> </td>
</tr>
</table>
<table>
@ -235,12 +242,12 @@ $settings = $session->get('settings');
<th>Tiempo</th>
</tr>
<tr>
<td><?= $presupuesto->paginas ?></td> <!-- Páginas libro -->
<td><?= $presupuesto->tirada ?> </td>
<td><?= number_format($presupuesto->paginas, 0, ',', '.') ?></td> <!-- Páginas libro -->
<td><?= number_format($presupuesto->tirada, 0, ',', '.') ?> </td>
<td><?= $linea_impresion->tinta() ?></td>
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
<td><?= $linea_impresion->rotativa_clicks_total ?></td>
<td><?= number_format($linea_impresion->rotativa_clicks_total, 0, ',', '.') ?></td>
<td><?= float_seconds_to_hhmm_string($linea_impresion->horas_maquina * 3600) ?></td>
</tr>
<tr>
@ -255,8 +262,8 @@ $settings = $session->get('settings');
</tr>
</table>
</div>
<div class="comments <?=$ot->comment_interior ? '' : 'd-none' ?>">
<div class="flex-row impresion"><?= lang('Produccion.comentariosImpresionInterior') ?></div>
<div class="comments <?= $ot->comment_interior ? '' : 'd-none' ?>">
<div class="flex-row "><?= lang('Produccion.comentariosImpresionInterior') ?></div>
<div class=" w-100">
<p>
<?= $ot->comment_interior ?>
@ -270,7 +277,7 @@ $settings = $session->get('settings');
<div class="section-title cubierta">IMP. CUBIERTA</div>
<div class="col-12">
<table>
<table class="">
<tr>
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_cubierta->get_impresion_logo()) ?>" width="35px" height="35px"></td>
<th>Tintas</th>
@ -294,7 +301,7 @@ $settings = $session->get('settings');
</tr>
</table>
<div class="comments <?=$ot->comment_cubierta ? '' : 'd-none' ?>">
<div class="comments <?= $ot->comment_cubierta ? '' : 'd-none' ?>">
<div class="flex-row cubierta"><?= lang('Produccion.comentariosCubierta') ?></div>
<div class="">
@ -308,12 +315,19 @@ $settings = $session->get('settings');
</div>
<?php endif; ?>
<div class="row">
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
<div class="d-flex flex-row justify-content-start w-100 gap-2">
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
<?php if ($pedido->fecha_encuadernado): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<div class="col-1 w-10 mb-2 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<span class="fs-bold"><?= $encuadernacionCode ?></span>
<div class="row">
<div class="col-3 mb-2 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<?= $encuadernacionCode ?>
</div>
</div>
<table>
<table class="">
<?php foreach ($acabados as $key => $acabado): ?>
<tr>
<td class="w-10 encuadernacion">Plastificado</td>
@ -324,7 +338,7 @@ $settings = $session->get('settings');
<td class="bg-encuadernacion" style="width: 100px;"><?= $acabado->proveedor() ? $acabado->proveedor()->nombre : "" ?></td>
</tr>
<tr>
<td class="text-start" colspan="2"><?=$ot->info_solapa_guillotina?></td>
<td class="text-start" colspan="2"><?= $ot->info_solapa_guillotina ?></td>
<td></td>
<td></td>
<td class="t-header">CORTE PIE:</td>
@ -345,14 +359,15 @@ $settings = $session->get('settings');
}
} catch (\Throwable $th) {
$error_message = $th->getMessage();
echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
// echo view("/themes/vuexy/pdfs/encuadernados/default.php", ["encuadernacion" => $encuadernacion]);
// echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
// echo "<br><span style='color:red'>$error_message</span>";
}
}
?>
<?php if (count($encuadernaciones) > 0): ?>
<div class="comments <?=$ot->comment_encuadernacion ? '' : 'd-none' ?>" >
<div class="comments <?= $ot->comment_encuadernacion ? '' : 'd-none' ?>">
<div class="flex-row encuadernacion"><?= lang('Produccion.comentariosEncuadernacion') ?></div>
<div class="">
<p>
@ -366,23 +381,26 @@ $settings = $session->get('settings');
</div>
<div class="row mb-2">
<div class="section-title">LOGISTICA</div>
<div class="d-flex flex-row justify-content-start w-100 gap-2">
<div class="section-title">LOGISTICA</div>
<?php if ($pedido->fecha_entrega_real): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_entrega_real)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<table>
<table class="">
<tr>
<th>Peso Unidad</th>
<th>Peso Pedido</th>
<th>Cajas</th>
<th>Corte Pie</th>
</tr>
<tr>
<td><?= number_format($peso_unidad, 2, ',', '.') ?> gr</td>
<td><?= $peso_pedido > 1000 ? number_format($peso_pedido / 1000, 2, ',', '.') . " kg" : number_format($peso_pedido, 2, ',', '.') . " gr" ?> </td>
<td>-</td>
<td>-</td>
</tr>
</table>
<div class="comments <?=$ot->comment_logistica ? '' : 'd-none' ?>">
<div class="comments <?= $ot->comment_logistica ? '' : 'd-none' ?>">
<div class="flex-row logistica"><?= lang('Produccion.comentariosLogistica') ?></div>
<div class="">
@ -393,11 +411,6 @@ $settings = $session->get('settings');
</div>
</div>
</div>
<div class="col-md-12 d-flex justify-content-center align-items-center">
<span class="footer">&copy; 2024 SAFEKAT. Todos los derechos reservados.</span>
</div>
</div>
</body>
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.min.js") ?>></script>
@ -408,6 +421,6 @@ $settings = $session->get('settings');
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
<script src="<?= site_url('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
<script src="<?= versioned_asset('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
</html>

View File

@ -0,0 +1,407 @@
<?php
use CodeIgniter\I18n\Time;
$session = session();
$settings = $session->get('settings');
?>
<!DOCTYPE html>
<html
lang="<?= $session->get('lang') ?>"
data-assets-path="<?= site_url('themes/vuexy/') ?>"
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Icons -->
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/fontawesome.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/tabler-icons.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/flag-icons.css') ?>" />
<!-- Core CSS -->
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/core.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/theme-semi-dark.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.css') ?>" />
<link rel="icon" type="image/x-icon" href="<?= site_url('themes/vuexy/img/favicon/favicon.ico') ?>" />
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.ot.css') ?>">
<title><?= $presupuesto->titulo ?>[OT:<?= $ot->id ?>]</title>
</head>
<body>
<div class="page">
<div class="col-md-12 pdf-wrapper" data-id="<?= $ot->id . "_" . "_" . $presupuesto->id . "_" . $presupuesto->titulo ?>">
<div class="row">
<div class="col-12 d-flex justify-content-between align-items-center">
<h5><?= $presupuesto->titulo ?></h5>
<span class="fs-medium"><strong><?= Time::now()->format("d/m/Y H:i:s") ?></strong></span>
</div>
</div>
</div>
<div class="row mb-2 d-flex flex align-items-stretch">
<div class="col-2">
<?php if ($ot->full_path): ?>
<img class="portada-img border-secondary img-thumbnail img-fluid" src="<?= $ot->full_path ? "data:image/png;base64," . base64_encode(file_get_contents($ot->full_path)) : '/assets/img/portada_not_found.png' ?>" />
<?php else: ?>
<img class="portada-img border-secondary img-thumbnail img-fluid" src="/assets/img/portada_not_found.png" />
<?php endif; ?>
</div>
<div class="col-10 py-2 rounded border-1 border-secondary" style="background-color: <?= $colors["general"]["bg"] ?>;color:<?= $colors["general"]["color"] ?>;">
<div class="row">
<div class="col-8">
<div class="px-2 d-flex flex justify-content-between align-items-center" style="background-color: <?= $colors["week_day"]["bg"] ?>;color:<?= $colors["week_day"]["color"] ?>;">
<span><strong><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></strong></span>
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
</div>
</div>
<div class="col-4">
<div class="px-2 d-flex flex justify-content-center align-items-center w-100">
<span class="w-100 text-center" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
<?php if ($isPOD): ?>
<strong>POD</strong>
<?php elseif ($presupuesto->presupuestoLineaImpresion()->isRotativa()): ?>
<strong>ROTATIVA</strong>
<?php else: ?>
<strong>GENERAL</strong>
<?php endif; ?>
</span>
</div>
</div>
</div>
<div class="row p-2">
<div class="col-3 h-100">
<div class="row px-2 d-flex flex justify-content-between align-items-center">
<div class="col-6 w-100 text-center">
<span id="fecha_encuadernado_at" style="color:<?= $colors["general"]["color"] ?>;"><strong><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></strong></span>
</div>
</div>
<div class="row px-2 mt-2 h-100">
<table class="h-100 bg-white">
<tr>
<th class="bg-white">IN</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
</tr>
<tr>
<th>PORT.</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
</tr>
<tr>
<th>ACABAD.</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
</tr>
<tr>
<th>ENCUAD.</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
</tr>
<tr>
<th>MANIPUL.</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
</tr>
</table>
</div>
</div>
<div class="col-5">
<div class="row">
<div class="col-12 w-50 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<strong><?= $encuadernacionCode ?></strong>
</div>
</div>
<div class="row h-75">
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
<?= $linea_impresion?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
<?= $tiempo_impresion ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
<?= $linea_cubierta?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
</div>
<?php foreach ($acabados as $key => $acabado): ?>
<?php if ($acabado->tarifa()->isUVI()): ?>
<div class="col-6 square offset-md-6 text-center" style="background-color:<?= $acabado->tarifa()->code == "R2D" ? "#4D93D9" : "#0070C0" ?>;color:white;">
+ <?= $acabado->tarifa()->code ?>
</div>
<?php endif; ?>
<?php endforeach; ?>
</div>
</div>
<div class="col-4" style="background-color: <?= $colors["ot"]["bg"] ?>">
<div class="row h-100">
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center">
<span class="fs-large" style="color:<?= $colors["ot"]["color"] ?>;"><strong><?= $ot->id ?></strong></span>
</div>
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center bg-white">
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-8">
<table class="h-50">
<tr>
<th>IDSK</th>
<td class="t-cell">
</td>
</tr>
<tr>
<th>CLIENTE</th>
<td class="t-cell">
<?= $cliente->alias ?>
</td>
</tr>
<tr>
<th>TITULO</th>
<td class="t-cell">
<?= $presupuesto->titulo ?>
</td>
</tr>
<tr>
<th>ISBN</th>
<td class="t-cell"><?= $presupuesto->isbn ?></td>
</tr>
<tr>
<th>PEDIDO CLIENTE</th>
<td class="t-cell"><?= $pedido->id ?></td>
</tr>
</table>
</div>
<div class="col-4">
<div class="col-12 d-flex justify-content-center" style="width: 100%">
<?php if ($imposicion): ?>
<?php if ($imposicion->imposicion_esquema()): ?>
<?= $imposicion->imposicion_esquema()->svg_schema ?>
<?php endif; ?>
<?php endif; ?>
</div>
<div class="col-12">
<div class="imposicion">
<table>
<tr>
<th class="w-50">Imposicion</th>
<td><?= $imposicion?->full_name ?? "" ?></td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="section-title impresion">IMP. INTERIOR</div>
<div class="col-12">
<div>
<table>
<tr>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.size') ?></th>
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.ejemplares') ?></th>
<td class="t-cell text-center"> <?= $presupuesto->tirada ?> + <?= $presupuesto->merma ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.tipo') ?></th>
<td class="t-cell text-center"> <?= $presupuesto->tipo_presupuesto()?->codigo ?? "" ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.lomo') ?></th>
<td class="t-cell text-center"> <?= number_format($presupuesto->lomo_cubierta, 2, ',', '.') ?> </td>
</tr>
</table>
<table>
<tr>
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_impresion->get_impresion_logo()) ?>" width="35px" height="35px"></td>
<th>Páginas</th>
<th>Ejemplares</th>
<th>Tintas</th>
<th>Formas</th>
<th>Máquina</th>
<th>Clics</th>
<th>Tiempo</th>
</tr>
<tr>
<td><?= $presupuesto->paginas ?></td> <!-- Páginas libro -->
<td><?= $presupuesto->tirada ?> </td>
<td><?= $linea_impresion->tinta() ?></td>
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
<td><?= $linea_impresion->rotativa_clicks_total ?></td>
<td><?= float_seconds_to_hhmm_string($linea_impresion->horas_maquina * 3600) ?></td>
</tr>
<tr>
<td colspan="4"><?= $linea_impresion->papel_impresion ?></td>
<td><?= $linea_impresion->papel_impresion()->gramaje . " " . "gr" ?></td>
<td colspan="2">
<?php if ($linea_impresion->isRotativa()): ?>
<?= number_format($linea_impresion->rotativa_metros_total, 2, ',', '.') ?> metros
<?php endif; ?>
</td>
</tr>
</table>
</div>
<div class="comments <?=$ot->comment_interior ? '' : 'd-none' ?>">
<div class="flex-row impresion"><?= lang('Produccion.comentariosImpresionInterior') ?></div>
<div class=" w-100">
<p>
<?= $ot->comment_interior ?>
</p>
</div>
</div>
</div>
</div>
<?php if ($linea_cubierta): ?>
<div class="row mb-2">
<div class="section-title cubierta">IMP. CUBIERTA</div>
<div class="col-12">
<table>
<tr>
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_cubierta->get_impresion_logo()) ?>" width="35px" height="35px"></td>
<th>Tintas</th>
<th>Ejemplares</th>
<th>Maquina</th>
<th>Marcapaginas</th>
<th>Tiempo</th>
</tr>
<tr>
<td><?= $linea_cubierta->tinta() ?></td>
<td><?= $presupuesto->tirada ?></td>
<td><strong><?= $linea_cubierta->maquina()->nombre ?></strong></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
<td><?= float_seconds_to_hhmm_string($linea_cubierta->horas_maquina * 3600) ?></td>
</tr>
<tr>
<td colspan="1"><?= json_decode($linea_cubierta->formas)->maquina_ancho ?>x<?= json_decode($linea_cubierta->formas)->maquina_alto ?></td>
<td colspan="1"><?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?></td>
<td colspan="2"><?= $linea_cubierta->papel_impresion ?></td>
<td colspan="2"><?= $linea_cubierta->papel_impresion()->gramaje . " " . "gr" ?></td>
</tr>
</table>
<div class="comments <?=$ot->comment_cubierta ? '' : 'd-none' ?>">
<div class="flex-row cubierta"><?= lang('Produccion.comentariosCubierta') ?></div>
<div class="">
<p>
<?= $ot->comment_cubierta ?>
</p>
</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="row">
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
<div class="col-12">
<div class="col-1 w-10 mb-2 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<span class="fs-bold"><?= $encuadernacionCode ?></span>
</div>
<table>
<?php foreach ($acabados as $key => $acabado): ?>
<tr>
<td class="w-10 encuadernacion">Plastificado</td>
<td><?= $acabado->tarifa()->nombre ?></td>
<td class="encuadernacion bg-encuadernacion" style="width: 100px;">UVI</td>
<td style="color:red;width:100px" class="bg-encuadernacion"> <?= $uvi ? 'SI' : "NO" ?> </td>
<td class="encuadernacion bg-encuadernacion" style="width: 100px;">EXTERNO:</td>
<td class="bg-encuadernacion" style="width: 100px;"><?= $acabado->proveedor() ? $acabado->proveedor()->nombre : "" ?></td>
</tr>
<tr>
<td class="text-start" colspan="2"><?=$ot->info_solapa_guillotina?></td>
<td></td>
<td></td>
<td class="t-header">CORTE PIE:</td>
<td></td>
</tr>
<?php endforeach; ?>
</table>
<?php
foreach ($encuadernaciones as $key => $encuadernacion) {
$encuadernacion_code = $encuadernacion->tarifa()->code;
try {
if ($encuadernacion_code) {
echo view("/themes/vuexy/pdfs/encuadernados/$encuadernacion_code.php", ["encuadernacion" => $encuadernacion]);
} else {
echo view("/themes/vuexy/pdfs/encuadernados/default.php", ["encuadernacion" => $encuadernacion]);
}
} catch (\Throwable $th) {
$error_message = $th->getMessage();
echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
// echo "<br><span style='color:red'>$error_message</span>";
}
}
?>
<?php if (count($encuadernaciones) > 0): ?>
<div class="comments <?=$ot->comment_encuadernacion ? '' : 'd-none' ?>" >
<div class="flex-row encuadernacion"><?= lang('Produccion.comentariosEncuadernacion') ?></div>
<div class="">
<p>
<?= $ot->comment_encuadernacion ?>
</p>
</div>
</div>
<?php endif; ?>
</div>
</div>
<div class="row mb-2">
<div class="section-title">LOGISTICA</div>
<div class="col-12">
<table>
<tr>
<th>Peso Unidad</th>
<th>Peso Pedido</th>
<th>Cajas</th>
<th>Corte Pie</th>
</tr>
<tr>
<td><?= number_format($peso_unidad, 2, ',', '.') ?> gr</td>
<td><?= $peso_pedido > 1000 ? number_format($peso_pedido / 1000, 2, ',', '.') . " kg" : number_format($peso_pedido, 2, ',', '.') . " gr" ?> </td>
<td>-</td>
<td>-</td>
</tr>
</table>
<div class="comments <?=$ot->comment_logistica ? '' : 'd-none' ?>">
<div class="flex-row logistica"><?= lang('Produccion.comentariosLogistica') ?></div>
<div class="">
<p>
<?= $ot->comment_logistica ?>
</p>
</div>
</div>
</div>
</div>
</div>
</body>
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.min.js") ?>></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/jquery/jquery.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/popper/popper.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/bootstrap.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
</html>

View File

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/font-pdf.css') ?>">
<!-- <link rel="stylesheet" href="--><?php //= site_url('themes/vuexy/css/all.css') ?><!--">-->
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.presupuesto.css') ?>">
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.presupuesto.css') ?>">
<style>
@page {
margin: 10px;

View File

@ -25,7 +25,7 @@ $settings = $session->get('settings');
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.css') ?>" />
<link rel="icon" type="image/x-icon" href="<?= site_url('themes/vuexy/img/favicon/favicon.ico') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.ot.css') ?>">
<link rel="stylesheet" href="<?= versioned_asset('themes/vuexy/css/pdf.ot.css') ?>">
<title><?= $presupuesto->titulo ?>[OT:<?= $ot->id ?>]</title>
@ -56,13 +56,13 @@ $settings = $session->get('settings');
<div class="row">
<div class="col-8">
<div class="px-2 d-flex flex justify-content-between align-items-center" style="background-color: <?= $colors["week_day"]["bg"] ?>;color:<?= $colors["week_day"]["color"] ?>;">
<span><strong><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></strong></span>
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
<span><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></span>
<span>Comercial: <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
</div>
</div>
<div class="col-4">
<div class="px-2 d-flex flex justify-content-center align-items-center w-100">
<span class="w-100 text-center" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
<span class="w-100 text-center code-title" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
<?php if ($isPOD): ?>
<strong>POD</strong>
<?php elseif ($presupuesto->presupuestoLineaImpresion()->isRotativa()): ?>
@ -70,22 +70,17 @@ $settings = $session->get('settings');
<?php else: ?>
<strong>GENERAL</strong>
<?php endif; ?>
</span>
</div>
</div>
</div>
<div class="row p-2">
<div class="col-3 h-100">
<div class="row px-2 d-flex flex justify-content-between align-items-center">
<div class="col-6 w-100 text-center">
<span id="fecha_encuadernado_at" style="color:<?= $colors["general"]["color"] ?>;"><strong><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></strong></span>
</div>
<div class="row text-center">
<span id="fecha_encuadernado_at" class="fs-large fw-bold" style="color:<?= $colors["general"]["color"] ?>;"><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></span>
</div>
<div class="row px-2 mt-2 h-100">
<table class="h-100 bg-white">
<table class="h-100 bg-white" style="font-size: small;">
<tr>
<th class="bg-white">IN</th>
<td class="t-cell bg-white"><?= $ubicacion ?></td>
@ -107,26 +102,27 @@ $settings = $session->get('settings');
<td class="t-cell bg-white"><?= $ubicacion ?></td>
</tr>
</table>
</div>
</div>
<div class="col-5">
<div class="col-5 h-100">
<div class="row">
<div class="col-12 w-50 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<strong><?= $encuadernacionCode ?></strong>
<div class="col-12 w-50 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<?= $encuadernacionCode ?>
</div>
</div>
<div class="row h-75">
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
<?= $linea_impresion?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
<div class="col-6 square text-center code-title <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
<?= $tiempo_impresion ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
<?= $linea_cubierta?->papel_impresion()->papel_code_ot ?>
</div>
<div class="col-6 square text-center" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
</div>
<?php foreach ($acabados as $key => $acabado): ?>
@ -141,7 +137,7 @@ $settings = $session->get('settings');
<div class="col-4" style="background-color: <?= $colors["ot"]["bg"] ?>">
<div class="row h-100">
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center">
<span class="fs-large" style="color:<?= $colors["ot"]["color"] ?>;"><strong><?= $ot->id ?></strong></span>
<span class="ot-code" style="color:<?= $colors["ot"]["color"] ?>;"><?= $ot->id ?></span>
</div>
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center bg-white">
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
@ -155,32 +151,30 @@ $settings = $session->get('settings');
</div>
<div class="row">
<div class="col-8">
<table class="h-50">
<table class="h-100">
<tr>
<th>IDSK</th>
<td class="t-cell">
</td>
<th class="al">IDSK</th>
<td class="t-cell"></td>
</tr>
<tr>
<th>CLIENTE</th>
<th class="al">CLIENTE</th>
<td class="t-cell">
<?= $cliente->alias ?>
</td>
</tr>
<tr>
<th>TITULO</th>
<th class="al">TITULO</th>
<td class="t-cell">
<?= $presupuesto->titulo ?>
</td>
</tr>
<tr>
<th>ISBN</th>
<th class="al">ISBN</th>
<td class="t-cell"><?= $presupuesto->isbn ?></td>
</tr>
<tr>
<th>PEDIDO CLIENTE</th>
<th class="al">PEDIDO</th>
<td class="t-cell"><?= $pedido->id ?></td>
</tr>
</table>
@ -188,12 +182,10 @@ $settings = $session->get('settings');
<div class="col-4">
<div class="col-12 d-flex justify-content-center" style="width: 100%">
<?php if ($imposicion): ?>
<?php if ($imposicion->imposicion_esquema()): ?>
<?= $imposicion->imposicion_esquema()->svg_schema ?>
<?php endif; ?>
<?php endif; ?>
</div>
<div class="col-12">
<div class="imposicion">
@ -208,19 +200,31 @@ $settings = $session->get('settings');
</div>
</div>
<div class="row mb-2">
<div class="section-title impresion">IMP. INTERIOR</div>
<div class="d-flex flex-row gap-2 justify-content-start">
<div class="section-title impresion">IMP. INTERIOR</div>
<?php if ($pedido->fecha_impresion): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_impresion)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<div>
<table>
<table class="">
<tr>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.size') ?></th>
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.ejemplares') ?></th>
<td class="t-cell text-center"> <?= $presupuesto->tirada/$presupuesto->tirada ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.tipo') ?></th>
<th class="t-header"><?= lang('Produccion.size') ?></th>
<th class="t-header"><?= lang('Produccion.ejemplares') ?></th>
<th class="t-header"><?= lang('Produccion.tipo') ?></th>
<th class="t-header"><?= lang('Produccion.lomo') ?></th>
</tr>
<tr>
<?php if ($presupuesto->papel_formato_personalizado): ?>
<td class="t-cell text-center"> <?= $presupuesto->papel_formato_ancho ?>x<?= $presupuesto->papel_formato_alto ?> </td>
<?php else: ?>
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
<?php endif; ?>
<td class="t-cell text-center"> 1 </td>
<td class="t-cell text-center"> <?= $presupuesto->tipo_presupuesto()?->codigo ?? "" ?> </td>
<th class="t-header" style="width: 10%;"><?= lang('Produccion.lomo') ?></th>
<td class="t-cell text-center"> <?= number_format($presupuesto->lomo_cubierta, 2, ',', '.') ?> </td>
</tr>
</table>
<table>
@ -236,7 +240,7 @@ $settings = $session->get('settings');
</tr>
<tr>
<td><?= $presupuesto->paginas ?></td> <!-- Páginas libro -->
<td><?= $presupuesto->tirada / $presupuesto->tirada ?> </td>
<td> 1 </td>
<td><?= $linea_impresion->tinta() ?></td>
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
@ -255,8 +259,8 @@ $settings = $session->get('settings');
</tr>
</table>
</div>
<div class="comments <?=$ot->comment_interior ? '' : 'd-none' ?>">
<div class="flex-row impresion"><?= lang('Produccion.comentariosImpresionInterior') ?></div>
<div class="comments <?= $ot->comment_interior ? '' : 'd-none' ?>">
<div class="flex-row impresion">Comentarios impresión interior</div>
<div class="comment-content w-100">
<p>
<?= $ot->comment_interior ?>
@ -281,10 +285,10 @@ $settings = $session->get('settings');
</tr>
<tr>
<td><?= $linea_cubierta->tinta() ?></td>
<td><?= $presupuesto->tirada/$presupuesto->tirada ?></td>
<td><?= $presupuesto->tirada / $presupuesto->tirada ?></td>
<td><strong><?= $linea_cubierta->maquina()->nombre ?></strong></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
<td><?= float_seconds_to_hhmm_string($linea_cubierta->horas_maquina * 3600/$presupuesto->tirada) ?></td>
<td><?= float_seconds_to_hhmm_string($linea_cubierta->horas_maquina * 3600 / $presupuesto->tirada) ?></td>
</tr>
<tr>
<td colspan="1"><?= json_decode($linea_cubierta->formas)->maquina_ancho ?>x<?= json_decode($linea_cubierta->formas)->maquina_alto ?></td>
@ -294,7 +298,7 @@ $settings = $session->get('settings');
</tr>
</table>
<div class="comments <?=$ot->comment_cubierta ? '' : 'd-none' ?>">
<div class="comments <?= $ot->comment_cubierta ? '' : 'd-none' ?>">
<div class="flex-row cubierta"><?= lang('Produccion.comentariosCubierta') ?></div>
<div class="comment-content">
@ -308,10 +312,17 @@ $settings = $session->get('settings');
</div>
<?php endif; ?>
<div class="row mb-2">
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
<div class="d-flex flex-row justify-content-start w-100 gap-2">
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
<?php if ($pedido->fecha_encuadernado): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<div class="col-1 w-10 mb-2 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<span class="fs-bold"><?= $encuadernacionCode ?></span>
<div class="row">
<div class="col-3 mb-2 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
<?= $encuadernacionCode ?>
</div>
</div>
<table>
<?php foreach ($acabados as $key => $acabado): ?>
@ -324,7 +335,7 @@ $settings = $session->get('settings');
<td class="bg-encuadernacion" style="width: 100px;"><?= $acabado->proveedor() ? $acabado->proveedor()->nombre : "" ?></td>
</tr>
<tr>
<td class="text-start" colspan="2"><?=$ot->info_solapa_guillotina?></td>
<td class="text-start" colspan="2"><?= $ot->info_solapa_guillotina ?></td>
<td></td>
<td></td>
<td class="t-header">CORTE PIE:</td>
@ -345,14 +356,15 @@ $settings = $session->get('settings');
}
} catch (\Throwable $th) {
$error_message = $th->getMessage();
echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
// echo view("/themes/vuexy/pdfs/encuadernados/default.php", ["encuadernacion" => $encuadernacion]);
// echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
// echo "<br><span style='color:red'>$error_message</span>";
}
}
?>
<?php if (count($encuadernaciones) > 0): ?>
<div class="comments <?=$ot->comment_encuadernacion ? '' : 'd-none' ?>">
<div class="comments <?= $ot->comment_encuadernacion ? '' : 'd-none' ?>">
<div class="flex-row encuadernacion"><?= lang('Produccion.comentariosEncuadernacion') ?></div>
<div class="comment-content">
<p>
@ -366,7 +378,12 @@ $settings = $session->get('settings');
</div>
<div class="row mb-2">
<div class="section-title">LOGISTICA</div>
<div class="d-flex flex-row justify-content-start w-100 gap-2">
<div class="section-title">LOGISTICA</div>
<?php if ($pedido->fecha_entrega_real): ?>
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_entrega_real)->format('d/m/Y') ?></div>
<?php endif; ?>
</div>
<div class="col-12">
<table>
<tr>
@ -380,9 +397,8 @@ $settings = $session->get('settings');
<td>-</td>
</tr>
</table>
<div class="comments">
<div class="flex-row logistica"><?= lang('Produccion.comentariosLogistica') ?></div>
<div class="comments <?= $ot->comment_logistica ? '' : 'd-none' ?>">
<div class="flex-row">Comentarios logistica:</div>
<div class="comment-content">
<p>
<?= $ot->comment_logistica ?>
@ -391,9 +407,7 @@ $settings = $session->get('settings');
</div>
</div>
</div>
<div class="col-md-12 d-flex justify-content-center align-items-center">
<span class="footer">&copy; 2024 SAFEKAT. Todos los derechos reservados.</span>
</div>
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.min.js") ?>></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/jquery/jquery.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/popper/popper.js') ?>"></script>
@ -402,7 +416,7 @@ $settings = $session->get('settings');
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
<script src="<?= site_url('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
<script src="<?= versioned_asset('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
</body>

View File

@ -289,7 +289,7 @@ $picture = "/assets/img/default-user.png";
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/layout.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/layout.js') ?>"></script>
<!-- Helpers -->
<script src="<?= site_url('themes/vuexy/vendor/js/helpers.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/js/config.js') ?>"></script>
@ -301,7 +301,7 @@ $picture = "/assets/img/default-user.png";
<script src="<?= site_url('themes/vuexy/js/main.js') ?>"></script>
<?php if (auth()->user()->inGroup('admin')): ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/wiki/menuSortable.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/wiki/menuSortable.js') ?>"></script>
<?php endif; ?>

View File

@ -95,9 +95,9 @@ use CodeIgniter\I18n\Time;
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<?php if (auth()->user()->inGroup('admin')) : ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/wiki/home.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/wiki/home.js') ?>"></script>
<?php else : ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/wiki/viewOnly.js') ?>"></script>
<script type="module" src="<?= versioned_asset('assets/js/safekat/pages/wiki/viewOnly.js') ?>"></script>
<?php endif; ?>
<?= $this->endSection() ?>