mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
terminado front de tiradas. falta back
This commit is contained in:
@ -27,6 +27,11 @@ class Js_loader extends BaseController
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/previews.js');
|
||||
}
|
||||
|
||||
function tiradasAlternativas_js()
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -226,7 +226,7 @@ return [
|
||||
|
||||
// Servicios
|
||||
'precio' => 'Precio',
|
||||
'precioUnidad' => 'Precio unitario',
|
||||
'precioUnidad' => 'Precio unidad',
|
||||
'precioTotal' => 'Precio total',
|
||||
'serviciosDefault' => 'Servicios por defecto',
|
||||
'tarifa' => 'Tarifa',
|
||||
@ -239,6 +239,14 @@ return [
|
||||
|
||||
|
||||
'cantidad' => 'Cantidad',
|
||||
|
||||
//Tiradas alternativas
|
||||
'tiradasAlternativas' => 'Tiradas alternativas',
|
||||
'tiradasInfoIVA' => 'Los precios mostrados no incluyen IVA',
|
||||
'tiradaMargen' => 'Margen',
|
||||
'tiradaEnvio' => 'Coste Envío',
|
||||
'tiradaImpresion' => 'Coste Impresión',
|
||||
|
||||
|
||||
'validation' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<div class="accordion accordion-bordered mt-3 col-xl-6" id="accordionResumen">
|
||||
<div class="accordion accordion-bordered mt-3 col-xl-4" id="accordionResumen">
|
||||
<div class="card accordion-item active">
|
||||
<h2 class="accordion-header" id="headingOne">
|
||||
<button type="button" class="accordion-button" data-bs-toggle="collapse"
|
||||
@ -16,52 +16,51 @@
|
||||
<div class="border rounded p-4 mb-3 pb-3">
|
||||
|
||||
<!-- Price Details -->
|
||||
<h6>Detalles del presupuesto</h6>
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-6 py-1 fw-normal text-end">Coste papel</dt>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Coste papel</dt>
|
||||
<dd id="totalCostePapel" class="py-1 col-6 text-end"><?= old('0', $presupuestoEntity->total_coste_papel) ?>€</dd>
|
||||
<dt class="col-6 py-1 fw-normal text-end">Margen papel</dt>
|
||||
<dd id="porcentajeMargenPapel" class="col-4 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_papel) ?>%</dd>
|
||||
<dd id="margenPapel" class="col-2 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_papel) ?>€</dd>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Margen papel</dt>
|
||||
<dd id="porcentajeMargenPapel" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_papel) ?>%</dd>
|
||||
<dd id="margenPapel" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_papel) ?>€</dd>
|
||||
|
||||
<dt class="col-6 fw-normal text-end">Coste impresión</dt>
|
||||
<dt class="col-5 fw-normal text-end">Coste impresión</dt>
|
||||
<dd id="totalCosteImpresion" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_coste_impresion) ?>€</dd>
|
||||
<dt class="col-6 py-1 fw-normal text-end">Margen impresión</dt>
|
||||
<dd id="porcentajeMargenImpresion" class="col-4 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_impresion) ?>%</dd>
|
||||
<dd id="margenImpresion" class="col-2 py-1 text-end"><?= old('0', $presupuestoEntity->total_margen_impresion) ?>€</dd>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Margen impresión</dt>
|
||||
<dd id="porcentajeMargenImpresion" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_impresion) ?>%</dd>
|
||||
<dd id="margenImpresion" class="col-3 py-1 text-end"><?= old('0', $presupuestoEntity->total_margen_impresion) ?>€</dd>
|
||||
|
||||
<dt class="col-6 fw-normal text-end">Coste servicios</dt>
|
||||
<dt class="col-5 fw-normal text-end">Coste servicios</dt>
|
||||
<dd id="totalServicios" class="col-6 text-end py-1"><?= old('0', $presupuestoEntity->total_coste_servicios) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Margen servicios</dt>
|
||||
<dd id="porcentajeMargenServicios" class="col-4 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_servicios) ?>%</dd>
|
||||
<dd id="margenServicios" class="col-2 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_servicios) ?>€</dd>
|
||||
<dt class="col-5 fw-normal text-end">Margen servicios</dt>
|
||||
<dd id="porcentajeMargenServicios" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_servicios) ?>%</dd>
|
||||
<dd id="margenServicios" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_servicios) ?>€</dd>
|
||||
|
||||
<dt class="col-6 fw-normal text-end">Coste de envío</dt>
|
||||
<dt class="col-5 fw-normal text-end">Coste de envío</dt>
|
||||
<dd id="totalEnvios"class="col-6 text-end py-1"><?= old('0', $presupuestoEntity->total_coste_envios) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Margen envío</dt>
|
||||
<dt class="col-5 fw-normal text-end">Margen envío</dt>
|
||||
<dd id="margenEnvios" class="col-6 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_envios) ?>€</dd>
|
||||
</dl>
|
||||
|
||||
<hr class="mx-n4">
|
||||
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-6 fw-normal text-end">Total Costes</dt>
|
||||
<dt class="col-5 fw-normal text-end">Total Costes</dt>
|
||||
<dd id="totalCostes" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_costes) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Total Margen</dt>
|
||||
<dt class="col-5 fw-normal text-end">Total Margen</dt>
|
||||
<dd id="totalMargenes" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_margenes) ?>€</dd>
|
||||
</dl>
|
||||
|
||||
<hr class="mx-n4">
|
||||
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-6 fw-normal text-end">Total</dt>
|
||||
<dt class="col-5 fw-normal text-end">Total</dt>
|
||||
<dd id="totalAntesDescuento" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_antes_descuento) ?>€</dd>
|
||||
<dt class="col-6 py-1 fw-normal text-end">Descuento</dt>
|
||||
<div class="d-flex col-4 flex-row-reverse"><input id="total_descuentoPercent" type='number' value="<?= old('0', $presupuestoEntity->total_descuentoPercent) ?>" class="update-totales form-control" style="width:50% !important;"></div>
|
||||
<dd id="descuentoTotal" class="col-2 py-1 text-end"><?= old('0', $presupuestoEntity->total_descuento) ?>€</dd>
|
||||
<dt class="col-6 text-end">Total presupuesto</dt>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Descuento</dt>
|
||||
<dd id="dd" class="col-3 text-end py-1"><input id="total_descuentoPercent" type="number" value="<?= old('0', $presupuestoEntity->total_descuentoPercent) ?>" class="update-totales form-control" style="width:100% !important;"></dd>
|
||||
<dd id="descuentoTotal" class="col-3 py-1 text-end"><?= old('0', $presupuestoEntity->total_descuento) ?>€</dd>
|
||||
<dt class="col-5 text-end">Total presupuesto</dt>
|
||||
<dd id="totalDespuesDecuento" class="col-6 fw-semibold text-end"><?= old('0', $presupuestoEntity->total_presupuesto) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Precio unidad</dt>
|
||||
<dt class="col-5 fw-normal text-end">Precio unidad</dt>
|
||||
<dd id="precioUnidadPresupuesto" class="col-6 text-end mb-0"><?= old('0', $presupuestoEntity->total_precio_unidad) ?>€</dd>
|
||||
</dl>
|
||||
</div>
|
||||
@ -223,6 +222,9 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
|
||||
$('#totalCostes').text((totalCostes).toFixed(2) + '€')
|
||||
$('#totalMargenes').text((totalMargenes).toFixed(2) + '€')
|
||||
|
||||
if($('#total_descuentoPercent').val()<0){
|
||||
$('#total_descuentoPercent').val(0)
|
||||
}
|
||||
var totalAntesDescuento = totalCostes + totalMargenes
|
||||
var totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val())/100
|
||||
var totalPresupuesto = totalAntesDescuento - totalDescuento
|
||||
|
||||
@ -0,0 +1,158 @@
|
||||
// Selección de la última columna de la tabla de tiradas
|
||||
const lastColNr_tiradasAlt = $('#tableTiradas').find("tr:first th").length - 1;
|
||||
|
||||
|
||||
// Función para generar los botones de acción de la tabla de tiradas
|
||||
const actionBtns_tiradasAlt = function (data) {
|
||||
return `
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-tirada mx-2" data-id="${data.row_id}"></i></a>
|
||||
`;
|
||||
};
|
||||
|
||||
|
||||
// Inicializaciones de la tabla de tiradas
|
||||
var tableTiradas;
|
||||
var editor;
|
||||
|
||||
|
||||
(async () => {
|
||||
while (!window.hasOwnProperty("editor_url") && !window.hasOwnProperty("editor_headers"))
|
||||
await new Promise(resolve => setTimeout(resolve, 200));
|
||||
initEditorTiradas()
|
||||
|
||||
while (!window.hasOwnProperty("datatable_lang_url"))
|
||||
await new Promise(resolve => setTimeout(resolve, 200));
|
||||
initTableTiradas();
|
||||
|
||||
// For debugging purposes
|
||||
tableTiradas.row.add({
|
||||
tirada: 15,
|
||||
coste_impresion: 0,
|
||||
coste_envio: 0,
|
||||
margen: 0,
|
||||
total_pedido: 0,
|
||||
precio_unidad: 0
|
||||
}).draw(false);
|
||||
})();
|
||||
|
||||
|
||||
function initEditorTiradas() {
|
||||
|
||||
editor = new $.fn.dataTable.Editor({
|
||||
ajax: {
|
||||
url: window.editor_url,
|
||||
headers: window.editor_headers,
|
||||
|
||||
},
|
||||
table: "#tableTiradas",
|
||||
idSrc: 'id',
|
||||
fields: [
|
||||
{
|
||||
name: "tirada",
|
||||
}, {
|
||||
name: "coste_impresion",
|
||||
type: "hidden"
|
||||
}, {
|
||||
name: "coste_envio",
|
||||
type: "hidden"
|
||||
}, {
|
||||
name: "margen",
|
||||
type: "hidden"
|
||||
}, {
|
||||
name: "total_pedido",
|
||||
type: "hidden"
|
||||
}, {
|
||||
name: "precio_unidad",
|
||||
type: "hidden"
|
||||
}, {
|
||||
name: "json_tiradas",
|
||||
type: "hidden"
|
||||
},
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
function initTableTiradas() {
|
||||
tableTiradas = $('#tableTiradas').DataTable({
|
||||
"language": {
|
||||
"url": window.datatable_lang_url
|
||||
},
|
||||
"paging": false,
|
||||
"info": false,
|
||||
"searching": false,
|
||||
"ordering": false,
|
||||
"autoWidth": false,
|
||||
"responsive": true,
|
||||
"dom": '<"mt-4"><"float-end"B><"float-start"l><t>', //"Blt",
|
||||
"columnDefs": [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColNr_tiradasAlt]
|
||||
},
|
||||
],
|
||||
"columns": [
|
||||
{ data: "tirada" },
|
||||
{ data: 'coste_impresion' },
|
||||
{ data: 'coste_envio' },
|
||||
{ data: 'margen' },
|
||||
{ data: 'total_pedido' },
|
||||
{ data: 'precio_unidad' },
|
||||
{
|
||||
data: actionBtns_tiradasAlt,
|
||||
className: 'row-edit dt-center'
|
||||
}
|
||||
],
|
||||
"buttons": [{
|
||||
className: 'btn btn-primary float-end me-sm-3 me-1',
|
||||
text: '<i class="ti ti-circle-plus"></i>',
|
||||
extend: "createInline",
|
||||
editor: editor,
|
||||
formOptions: {
|
||||
submitTrigger: -1,
|
||||
submitHtml: '<a href="javascript:void(0);"><i class="ti ti-device-floppy"></i></a>',
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Evento de borrado de una fila de la tabla de tiradas
|
||||
$(document).on('click', '.btn-delete-tirada', function (e) {
|
||||
|
||||
console.log(generate_json_tiradas());
|
||||
const row = $(this).closest('tr');
|
||||
tableTiradas.row(row)
|
||||
.remove()
|
||||
.draw();
|
||||
})
|
||||
|
||||
|
||||
// Función para generar el JSON de las lineas de presupuesto para calcular las tiradas
|
||||
function generate_json_tiradas() {
|
||||
const data = $('#tableLineasPresupuesto').DataTable().data().toArray();
|
||||
|
||||
return JSON.stringify(filterData(data,
|
||||
['paginas',
|
||||
'numPagColor',
|
||||
'paginas_impresion',
|
||||
'papel_impresion_id',
|
||||
'gramaje',
|
||||
'maquina_id',
|
||||
'maquinaTipo',
|
||||
'row_id']));
|
||||
}
|
||||
|
||||
|
||||
// Función para filtrar las columnas de la tabla de tiradas
|
||||
function filterData(data, keys) {
|
||||
return data.map(obj => {
|
||||
const newObj = {};
|
||||
keys.forEach(key => {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
});
|
||||
return newObj;
|
||||
});
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
<div class="accordion accordion-bordered mt-3 col-xl-8" id="accordionTiradas">
|
||||
<div class="card accordion-item active">
|
||||
<h2 class="accordion-header" id="headingOne">
|
||||
<button type="button" class="accordion-button" data-bs-toggle="collapse"
|
||||
data-bs-target="#accordionTiradasTip" aria-expanded="false"
|
||||
aria-controls="accordionTiradasTip">
|
||||
<h4><?= lang("Presupuestos.tiradasAlternativas") ?></h4>
|
||||
</button>
|
||||
</h2>
|
||||
|
||||
<div id="accordionTiradasTip" class="accordion-collapse collapse show"
|
||||
data-bs-parent="#accordionTiradas">
|
||||
<div class="accordion-body">
|
||||
|
||||
<div class="col-xl-12">
|
||||
<div class="border rounded p-4 mb-3 pb-3">
|
||||
<p><?= lang('Presupuestos.tiradasInfoIVA') ?></p>
|
||||
|
||||
<table id="tableTiradas" class="comparator-table table dt-responsive dataTable" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= lang('Presupuestos.tirada') ?></th>
|
||||
<th><?= lang('Presupuestos.tiradaImpresion') ?></th>
|
||||
<th><?= lang('Presupuestos.tiradaEnvio') ?></th>
|
||||
<th><?= lang('Presupuestos.tiradaMargen') ?></th>
|
||||
<th><?= lang('Presupuestos.totalPedido') ?></th>
|
||||
<th><?= lang('Presupuestos.precioUnidad') ?></th>
|
||||
<th></th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- //.accordion-body -->
|
||||
</div> <!-- //.accordion-collapse -->
|
||||
</div> <!-- //.accordion-item -->
|
||||
</div> <!-- //.accordion -->
|
||||
|
||||
<!------------------------------------------------------->
|
||||
<!-- Código JS comportamiento ?????. -->
|
||||
<!------------------------------------------------------->
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json";
|
||||
window.editor_url = "<?= route_to('editorOfMaquinasTarifaImpresion') ?>";
|
||||
|
||||
window.editor_headers= {<?= csrf_token() ?? "token" ?>: <?= csrf_token() ?>v};
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -25,7 +25,8 @@
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios") ?>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_comentariosItems") ?>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems") ?>
|
||||
<?php else: ?>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems") ?>
|
||||
<?php else: ?>
|
||||
<input type="hidden" name="total_presupuesto" id="total_presupuesto" class="form-control"
|
||||
value="0.0"></input>
|
||||
<?php endif; ?>
|
||||
@ -249,6 +250,7 @@ const url_parts = url.split('/');
|
||||
<?php if (str_contains($formAction, 'edit')): ?>
|
||||
<script src="<?= site_url('js_loader/comparadorCosidoTapaBlanda_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/previsualizador_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/tiradasAlternativas_js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/two/two.js') ?>"></script>
|
||||
<?php endif; ?>
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
Reference in New Issue
Block a user