quitado el botón de servicios defecto. Se añaden automaticamente cuando se crea

This commit is contained in:
jaimejimenezortega
2025-02-22 19:25:19 +01:00
parent def7539710
commit 73980295da
3 changed files with 118 additions and 69 deletions

View File

@ -121,6 +121,52 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$id = $this->model->db->insertID();
// Guardar los servicios de encuadernación por defecto
$POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
$ancho = 0;
$alto = 0;
if(isset($sanitizedData['papel_formato_personalizado']) && $sanitizedData['papel_formato_personalizado'] == '1'){
$ancho = $sanitizedData['papel_formato_ancho'];
$alto = $sanitizedData['papel_formato_alto'];
}
else{
$papelFormatoModel = new PapelFormatoModel();
$papelFormato = $papelFormatoModel->find($sanitizedData['papel_formato_id']);
$ancho = $papelFormato->ancho;
$alto = $papelFormato->alto;
}
$servDefectoEnc = PresupuestoCLienteService::getServiciosEncuadernacionDefault([
'tipo_impresion_id' => $sanitizedData['tipo_impresion_id'],
'tirada' => $sanitizedData['tirada'],
'paginas' => $sanitizedData['paginas'],
'ancho' => $ancho,
'alto' => $alto,
'POD' => $POD,
'solapas' => 0, // default
'paginasCuadernillo' => 32, // default
]);
$model = new PresupuestoEncuadernacionesModel();
foreach($servDefectoEnc as $servicio){
$data = [
'presupuesto_id' => $id,
'tarifa_encuadernado_id' => $servicio->tarifa_id,
'proveedor_id' => $servicio->proveedor_id,
'tiempo' => $servicio->tiempo,
'precio_total' => round($servicio->total, 2),
'precio_unidad' => round($servicio->precio_unidad, 2),
'margen' => $servicio->margen,
];
// Se comprueba que $servicio tiene paginasCuadernillo
if (isset($servicio->paginas_por_cuadernillo)) {
$data['paginas_por_cuadernillo'] = $servicio->paginas_por_cuadernillo;
}
$model->insert($data);
}
$message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.';
if ($thenRedirect):
@ -252,7 +298,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$successfulResult = false;
} else {
if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) )
if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) )
if ($this->canValidate()):
try {
@ -510,7 +556,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$data['datosLibro']['marcapaginas'] = $presupuesto->marcapaginas;
$data['datosLibro']['retractilado'] = $presupuesto->retractilado;
$data['datosLibro']['retractilado5'] = $presupuesto->retractilado5;
$data['comparador']['tipo_impresion'] = $presupuesto->comp_tipo_impresion;
$data['comparador']['json_data'] = json_decode($presupuesto->comparador_json_data, true);
if ($data['comparador']['json_data'] != null) {
@ -677,7 +723,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$tipo_impresion_id = $sobrecubierta['tipo_impresion_id'];
$faja = intval($sobrecubierta['faja'] ?? 0);
$uso = $faja==1? 'faja' : $sobrecubierta['uso'];
$data = array(
'cliente_id' => $cliente_id,
@ -725,7 +771,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
// guardas siempre hq
$isHq = true;
// Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico
// y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral
// o wire-o tapa dura, las guardas se imprimen como hojas sueltas
@ -1108,14 +1154,14 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$model = model('App\Models\Configuracion\PapelGenericoModel');
$query = $model->getPapelForComparador(
$tipo,
$cubierta,
$sobrecubierta,
$rotativa,
$guardas,
$tapa_dura,
$tipo,
$cubierta,
$sobrecubierta,
$rotativa,
$guardas,
$tapa_dura,
$isPOD,
$anchoLibro,
$anchoLibro,
$alto,
$tirada);
if ($this->request->getGet("q")) {
@ -1171,15 +1217,15 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
}
$model = model('App\Models\Configuracion\PapelGenericoModel');
$query = $model->getGramajeForComparador($tipo,
$papel_generico_id,
$cubierta,
$sobrecubierta,
$rotativa,
$guardas,
$tapa_dura,
$isPOD,
$anchoLibro,
$query = $model->getGramajeForComparador($tipo,
$papel_generico_id,
$cubierta,
$sobrecubierta,
$rotativa,
$guardas,
$tapa_dura,
$isPOD,
$anchoLibro,
$alto,
$tirada);
if ($this->request->getGet("q")) {
@ -1417,13 +1463,13 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
/**
* Duplica un presupuesto dado por su ID.
*
* Esta función duplica un presupuesto y todas sus entidades relacionadas como acabados, encuadernaciones, manipulados,
* preimpresiones, direcciones y lineas. El presupuesto duplicado se marca como tal y a su título se le añade
* Esta función duplica un presupuesto y todas sus entidades relacionadas como acabados, encuadernaciones, manipulados,
* preimpresiones, direcciones y lineas. El presupuesto duplicado se marca como tal y a su título se le añade
* una cadena 'duplicado'. La función devuelve un array con un estado de éxito y el ID del nuevo presupuesto.
*
* @param int $id El ID del presupuesto a duplicar.
* @return array Un array asociativo que contiene una clave 'success' que indica el estado de éxito de la operación,
* y una clave 'id' que contiene el ID del nuevo presupuesto si la operación fue exitosa.
* @return array Un array asociativo que contiene una clave 'success' que indica el estado de éxito de la operación,
* y una clave 'id' que contiene el ID del nuevo presupuesto si la operación fue exitosa.
* Si ocurre una excepción, la clave 'success' será false y una clave 'message' contendrá el mensaje de la excepción.
* @throws \Exception Si ocurre un error durante la operación.
*/
@ -1553,7 +1599,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$gramaje = $reqData['gramaje'] ?? null;
$tipoLinea = $reqData['tipoLinea'] ?? null;
// En este caso contiene el nombre del papel generico
// Uso: negro, negrohq, color, colorhq, rot_bn, rot_color,
// Uso: negro, negrohq, color, colorhq, rot_bn, rot_color,
$model = new PapelImpresionModel();
$menu = $model->getPapelesImpresionForMenu($datos, $gramaje, $tipoLinea, $uso);
@ -1568,7 +1614,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$ancho = $reqData['ancho'] ?? null;
$alto = $reqData['alto'] ?? null;
// Datos contiene la tirada
// uso: negro, negrohq, color, colorhq,
// uso: negro, negrohq, color, colorhq,
$uso_tarifa = $reqData['uso_tarifa'] ?? 'interior';
$model = new MaquinaModel();
$maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $uso_tarifa, $datos, $papel_impresion);

View File

@ -12,9 +12,11 @@
data-bs-parent="#accordionDatosServicios">
<div class="accordion-body">
<div class="row">
<?php /* ?>
<div class="col-md-12 col-lg-4 py-4">
<button id="serv_default" type="button" class="btn btn-secondary waves-effect waves-light float-start"><?= lang("Presupuestos.serviciosDefault")?></button>
</div>
<?php */ ?>
</div>
<div class="nav-align-top mb-4">
<ul class="nav nav-pills mb-3 nav-servicios" role="tablist">
@ -111,7 +113,7 @@
<div class="col-md-12 col-lg-4 px-2 py-4">
<button id="insertar_serv_acabado" type="button" class="btn btn-secondary waves-effect waves-light float-start tiradas-alternativas"><?= lang("Presupuestos.insertar")?></button>
</div>
</div>
</div>
@ -143,7 +145,7 @@
<div class="col-md-12 col-lg-4 px-2 py-4">
<button id="insertar_serv_preimpresion" type="button" class="btn btn-secondary waves-effect waves-light float-start tiradas-alternativas"><?= lang("Presupuestos.insertar")?></button>
</div>
</div>
</div>
@ -152,7 +154,7 @@
</div>
<div id="serv-enc-error">
</div>
<table id="tableOfServiciosEncuadernacion" class="table dt-responsive dataTable tiradas-alternativas update-resumen-presupuesto" style="width: 100%;">
<thead>
<tr>
@ -168,7 +170,7 @@
</tr>
</thead>
<tbody>
</tbody>
</table>
<div class="row mb-3 px-4">
@ -179,9 +181,9 @@
<div class="col-md-12 col-lg-4 px-2 py-4">
<button id="insertar_serv_enc" type="button" class="btn btn-secondary waves-effect waves-light float-start tiradas-alternativas"><?= lang("Presupuestos.insertar")?></button>
</div>
</div>
</div>
<div class="tab-pane fade" id="servicios-manipulado" role="tabpanel">
@ -211,7 +213,7 @@
<div class="col-md-12 col-lg-4 px-2 py-4">
<button id="insertar_serv_manipulado" type="button" class="btn btn-secondary waves-effect waves-light float-start tiradas-alternativas"><?= lang("Presupuestos.insertar")?></button>
</div>
</div>
</div>
@ -243,7 +245,7 @@
<div class="col-md-12 col-lg-4 px-2 py-4">
<button id="insertar_serv_extra" type="button" class="btn btn-secondary waves-effect waves-light float-start tiradas-alternativas"><?= lang("Presupuestos.insertar")?></button>
</div>
</div>
</div>

View File

@ -15,7 +15,7 @@ class Servicios {
this.ServiciosManipulado = new ServiciosManipulado(this.csrf_token, this.csrf_hash);
this.serviciosExtra = new ServiciosExtra(this.csrf_token, this.csrf_hash);
this.serviciosDefecto = $('#serv_default');
//this.serviciosDefecto = $('#serv_default');
}
init() {
@ -28,21 +28,22 @@ class Servicios {
this.ServiciosManipulado.init();
this.serviciosExtra.init();
/*
this.serviciosDefecto.on('click', function () {
$('#loader').modal('show');
try {
self.ServiciosEncuadernacion.getServiciosDefecto().then(function (response) {
self.ServiciosManipulado.getServiciosDefecto().then(function (response) {
//self.ServiciosManipulado.getServiciosDefecto().then(function (response) {
$('#loader').modal('hide');
});
//});
});
}
catch (error) {
console.log(error);
$('#loader').modal('hide');
}
});
});*/
$('.nav-servicios button').on('shown.bs.tab', function () {
$("#tableOfServiciosAcabado").DataTable().columns.adjust();
@ -73,7 +74,7 @@ class Servicios {
$(document).on('update-servicios', async function(){
await self.updateServicios()
$(document).trigger('update-servicios-completed');
});
}
@ -382,7 +383,7 @@ class ServiciosAcabado {
{
data: 'precio_total', render: function (data, type, row) {
let total = 0;
if(data !==undefined)
if(data !==undefined)
total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
return `
<input class="update-totales-servicios form-control" id="precio_acabado_${row.tarifa_id}" value="${total}"></input>`;
@ -453,7 +454,7 @@ class ServiciosAcabado {
update_resumen: true,
update_tiradas_alternativas: true
});
}
}
});
@ -531,7 +532,7 @@ class ServiciosAcabado {
uso = 'faja';
}
this.getPresupuestoAcabado(tarifa_id, uso, null);
}
@ -722,7 +723,7 @@ class ServiciosPreimpresion {
data: 'precio', render: function (data, type, row) {
let total = 0;
if(data !==undefined)
if(data !==undefined)
total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
return `
<input class="update-totales-servicios totales-preimpresion form-control" id="precio_preimpresion_${row.tarifa_id}" value="${total}"></input>`;
@ -757,15 +758,15 @@ class ServiciosPreimpresion {
$('#tableOfServiciosPreimpresion tbody').on('change', '.totales-preimpresion', function () {
let input = $(this);
let tarifa_id = input.attr('id').replace('precio_preimpresion_', '');
let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0;
let tarifa_id = input.attr('id').replace('precio_preimpresion_', '');
let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0;
let table = $('#tableOfServiciosPreimpresion').DataTable();
let row = table.rows().data().toArray().find(r => r.tarifa_id == tarifa_id);
if (row) {
row.precio = newValue;
table.row($(this).closest('tr')).data(row).draw(false);
row.precio = newValue;
table.row($(this).closest('tr')).data(row).draw(false);
self.check_serv_preimpresion_error();
}
});
@ -862,7 +863,7 @@ class ServiciosPreimpresion {
}
async guardarServiciosPreimpresion() {
let datos = [];
this.table.rows().every(function () {
datos.push(this.data());
@ -956,7 +957,7 @@ class ServiciosEncuadernacion {
{
data: 'precio_total', render: function (data, type, row) {
let total = 0;
if(data !==undefined)
if(data !==undefined)
total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
return `
<input class="update-totales-servicios form-control" id="precio_enc_${row.tarifa_id}" value="${total}"></input>`;
@ -1246,7 +1247,7 @@ class ServiciosEncuadernacion {
}
async guardarServiciosEncuadernacion() {
let datos = [];
this.table.rows().every(function () {
datos.push(this.data());
@ -1385,7 +1386,7 @@ class ServiciosManipulado {
{
data: 'precio_total', render: function (data, type, row) {
let total = 0;
if(data !==undefined)
if(data !==undefined)
total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
else
data = 0;
@ -1418,15 +1419,15 @@ class ServiciosManipulado {
$('#tableOfServiciosManipulado tbody').on('change', '.totales-manipulado', function () {
let input = $(this);
let tarifa_id = input.attr('id').replace('precio_manipulado_', '');
let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0;
let tarifa_id = input.attr('id').replace('precio_manipulado_', '');
let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0;
let table = $('#tableOfServiciosManipulado').DataTable();
let row = table.rows().data().toArray().find(r => r.tarifa_id == tarifa_id);
if (row) {
row.precio_total = newValue;
table.row($(this).closest('tr')).data(row).draw(false);
row.precio_total = newValue;
table.row($(this).closest('tr')).data(row).draw(false);
self.check_serv_manipulado_error();
}
});
@ -1490,7 +1491,7 @@ class ServiciosManipulado {
showBreadCrumbSaveButton(true);
}
updateServicios() {
const self = this;
@ -1651,7 +1652,7 @@ class ServiciosExtra {
data: 'precio', render: function (data, type, row) {
let total = 0;
if(data !==undefined)
if(data !==undefined)
total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
return `
<input class="update-totales-servicios totales-extra form-control" id="precio_extra_${row.tarifa_id}" value="${total}"></input>`;
@ -1684,19 +1685,19 @@ class ServiciosExtra {
$('#tableOfServiciosExtra tbody').on('change', '.totales-extra', function () {
let input = $(this);
let tarifa_id = input.attr('id').replace('precio_extra_', '');
let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0;
let tarifa_id = input.attr('id').replace('precio_extra_', '');
let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0;
let table = $('#tableOfServiciosExtra').DataTable();
let row = table.rows().data().toArray().find(r => r.tarifa_id == tarifa_id);
if (row) {
row.precio = newValue;
table.row($(this).closest('tr')).data(row).draw(false);
row.precio = newValue;
table.row($(this).closest('tr')).data(row).draw(false);
self.check_serv_extra_error();
}
});
$(document).on('click', '.btn-delete-servextra', function () {
const rowId = $(this).closest('td').parent()[0].sectionRowIndex;
self.table.row(rowId).remove().draw();
@ -1733,7 +1734,7 @@ class ServiciosExtra {
}
async guardarServiciosExtra() {
let datos = [];
this.table.rows().every(function () {
datos.push(this.data());