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(); $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')]) . '.'; $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.';
if ($thenRedirect): if ($thenRedirect):
@ -252,7 +298,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$successfulResult = false; $successfulResult = false;
} else { } else {
if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) )
if ($this->canValidate()): if ($this->canValidate()):
try { try {
@ -510,7 +556,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$data['datosLibro']['marcapaginas'] = $presupuesto->marcapaginas; $data['datosLibro']['marcapaginas'] = $presupuesto->marcapaginas;
$data['datosLibro']['retractilado'] = $presupuesto->retractilado; $data['datosLibro']['retractilado'] = $presupuesto->retractilado;
$data['datosLibro']['retractilado5'] = $presupuesto->retractilado5; $data['datosLibro']['retractilado5'] = $presupuesto->retractilado5;
$data['comparador']['tipo_impresion'] = $presupuesto->comp_tipo_impresion; $data['comparador']['tipo_impresion'] = $presupuesto->comp_tipo_impresion;
$data['comparador']['json_data'] = json_decode($presupuesto->comparador_json_data, true); $data['comparador']['json_data'] = json_decode($presupuesto->comparador_json_data, true);
if ($data['comparador']['json_data'] != null) { if ($data['comparador']['json_data'] != null) {
@ -677,7 +723,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$tipo_impresion_id = $sobrecubierta['tipo_impresion_id']; $tipo_impresion_id = $sobrecubierta['tipo_impresion_id'];
$faja = intval($sobrecubierta['faja'] ?? 0); $faja = intval($sobrecubierta['faja'] ?? 0);
$uso = $faja==1? 'faja' : $sobrecubierta['uso']; $uso = $faja==1? 'faja' : $sobrecubierta['uso'];
$data = array( $data = array(
'cliente_id' => $cliente_id, 'cliente_id' => $cliente_id,
@ -725,7 +771,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
// guardas siempre hq // guardas siempre hq
$isHq = true; $isHq = true;
// Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico // 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 // 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 // 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'); $model = model('App\Models\Configuracion\PapelGenericoModel');
$query = $model->getPapelForComparador( $query = $model->getPapelForComparador(
$tipo, $tipo,
$cubierta, $cubierta,
$sobrecubierta, $sobrecubierta,
$rotativa, $rotativa,
$guardas, $guardas,
$tapa_dura, $tapa_dura,
$isPOD, $isPOD,
$anchoLibro, $anchoLibro,
$alto, $alto,
$tirada); $tirada);
if ($this->request->getGet("q")) { if ($this->request->getGet("q")) {
@ -1171,15 +1217,15 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
} }
$model = model('App\Models\Configuracion\PapelGenericoModel'); $model = model('App\Models\Configuracion\PapelGenericoModel');
$query = $model->getGramajeForComparador($tipo, $query = $model->getGramajeForComparador($tipo,
$papel_generico_id, $papel_generico_id,
$cubierta, $cubierta,
$sobrecubierta, $sobrecubierta,
$rotativa, $rotativa,
$guardas, $guardas,
$tapa_dura, $tapa_dura,
$isPOD, $isPOD,
$anchoLibro, $anchoLibro,
$alto, $alto,
$tirada); $tirada);
if ($this->request->getGet("q")) { if ($this->request->getGet("q")) {
@ -1417,13 +1463,13 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
/** /**
* Duplica un presupuesto dado por su ID. * Duplica un presupuesto dado por su ID.
* *
* Esta función duplica un presupuesto y todas sus entidades relacionadas como acabados, encuadernaciones, manipulados, * 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 * 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. * 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. * @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, * @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. * 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. * 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. * @throws \Exception Si ocurre un error durante la operación.
*/ */
@ -1553,7 +1599,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$gramaje = $reqData['gramaje'] ?? null; $gramaje = $reqData['gramaje'] ?? null;
$tipoLinea = $reqData['tipoLinea'] ?? null; $tipoLinea = $reqData['tipoLinea'] ?? null;
// En este caso contiene el nombre del papel generico // 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(); $model = new PapelImpresionModel();
$menu = $model->getPapelesImpresionForMenu($datos, $gramaje, $tipoLinea, $uso); $menu = $model->getPapelesImpresionForMenu($datos, $gramaje, $tipoLinea, $uso);
@ -1568,7 +1614,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$ancho = $reqData['ancho'] ?? null; $ancho = $reqData['ancho'] ?? null;
$alto = $reqData['alto'] ?? null; $alto = $reqData['alto'] ?? null;
// Datos contiene la tirada // Datos contiene la tirada
// uso: negro, negrohq, color, colorhq, // uso: negro, negrohq, color, colorhq,
$uso_tarifa = $reqData['uso_tarifa'] ?? 'interior'; $uso_tarifa = $reqData['uso_tarifa'] ?? 'interior';
$model = new MaquinaModel(); $model = new MaquinaModel();
$maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $uso_tarifa, $datos, $papel_impresion); $maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $uso_tarifa, $datos, $papel_impresion);

View File

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

View File

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