mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'add/serv_acabado_desdoblados' into 'main'
Add/serv acabado desdoblados See merge request jjimenez/safekat!573
This commit is contained in:
@ -49,6 +49,9 @@ const SK_PERMISSION_MATRIX = [
|
||||
"tarifa-envio.edit",
|
||||
"tarifa-envio.delete",
|
||||
"tarifa-envio.menu",
|
||||
"servicio-acabado.create",
|
||||
"servicio-acabado.delete",
|
||||
"servicio-acabado.menu",
|
||||
"proveedores.create",
|
||||
"proveedores.edit",
|
||||
"proveedores.delete",
|
||||
@ -89,7 +92,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"roles-permisos.edit",
|
||||
"roles-permisos.delete",
|
||||
"roles-permisos.menu",
|
||||
"tickets.create",
|
||||
"tickets.edit",
|
||||
"tickets.menu",
|
||||
],
|
||||
@ -129,7 +131,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"direcciones.menu",
|
||||
"presupuesto.create",
|
||||
"presupuesto.edit",
|
||||
"presupuesto.delete",
|
||||
"presupuesto.menu",
|
||||
"presupuesto-cliente.create",
|
||||
"presupuesto-cliente.edit",
|
||||
@ -221,10 +222,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"tarifa-encuadernacion.edit",
|
||||
"tarifa-encuadernacion.delete",
|
||||
"tarifa-encuadernacion.menu",
|
||||
"tarifa-extra.create",
|
||||
"tarifa-extra.edit",
|
||||
"tarifa-extra.delete",
|
||||
"tarifa-extra.menu",
|
||||
"tarifa-envio.create",
|
||||
"tarifa-envio.edit",
|
||||
"tarifa-envio.delete",
|
||||
@ -269,7 +266,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"roles-permisos.edit",
|
||||
"roles-permisos.delete",
|
||||
"roles-permisos.menu",
|
||||
"tickets.create",
|
||||
"tickets.edit",
|
||||
"tickets.menu",
|
||||
],
|
||||
|
||||
@ -53,6 +53,10 @@ const SK_PERMISSIONS = [
|
||||
'tarifa-envio.edit' => 'Can edit',
|
||||
'tarifa-envio.delete' => 'Can delete',
|
||||
'tarifa-envio.menu' => 'Menu shall be visualize',
|
||||
'servicio-acabado.create' => 'Can create',
|
||||
'servicio-acabado.edit' => 'Can edit',
|
||||
'servicio-acabado.delete' => 'Can delete',
|
||||
'servicio-acabado.menu' => 'Menu shall be visualize',
|
||||
'proveedores.create' => 'Can create',
|
||||
'proveedores.edit' => 'Can edit',
|
||||
'proveedores.delete' => 'Can delete',
|
||||
@ -93,7 +97,6 @@ const SK_PERMISSIONS = [
|
||||
'roles-permisos.edit' => 'Can edit',
|
||||
'roles-permisos.delete' => 'Can delete',
|
||||
'roles-permisos.menu' => 'Menu shall be visualize',
|
||||
'tickets.create' => 'Can create',
|
||||
'tickets.edit' => 'Can edit',
|
||||
'tickets.menu' => 'Menu shall be visualize',
|
||||
];
|
||||
|
||||
@ -209,6 +209,19 @@ $routes->group('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas'],
|
||||
$routes->resource('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasmanipulado', 'except' => 'show,new,create,update']);
|
||||
|
||||
|
||||
$routes->group('serviciosacabado', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) {
|
||||
$routes->get('', 'ServiciosAcabado::index', ['as' => 'serviciosAcabadoList']);
|
||||
$routes->get('add', 'ServiciosAcabado::add', ['as' => 'newServicioAcabado']);
|
||||
$routes->post('add', 'ServiciosAcabado::add', ['as' => 'createServicioAcabado']);
|
||||
$routes->get('edit/(:num)', 'ServiciosAcabado::edit/$1', ['as' => 'editServicioAcabado']);
|
||||
$routes->post('edit/(:num)', 'ServiciosAcabado::edit/$1', ['as' => 'updateServicioAcabado']);
|
||||
$routes->get('datatable', 'ServiciosAcabado::datatable');
|
||||
$routes->get('getselectedtarifas', 'ServiciosAcabado::getTarifasSeleccionadas');
|
||||
$routes->get('gettarifas', 'ServiciosAcabado::getTarifas');
|
||||
});
|
||||
$routes->resource('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas\Acabados', 'controller' => 'ServiciosAcabado', 'except' => 'show,new,create,update']);
|
||||
|
||||
|
||||
$routes->group('tarifamanipuladolineas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
|
||||
$routes->get('', 'Tarifamanipuladolineas::index', ['as' => 'tarifaManipuladoLineaList']);
|
||||
$routes->get('add', 'Tarifamanipuladolineas::add', ['as' => 'newTarifaManipuladoLinea']);
|
||||
|
||||
@ -137,10 +137,21 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
|
||||
$values = $this->model->getPrecioTarifa($tarifa_acabado_id, $tirada, $proveedor_id, $POD);
|
||||
$data = [];
|
||||
|
||||
$model = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel');
|
||||
$tarifas = $model->getTarifasForServicio($tarifa_acabado_id);
|
||||
|
||||
foreach ($tarifas as $tarifa) {
|
||||
$values = $this->model->getPrecioTarifa($tarifa, $tirada, $proveedor_id, $POD);
|
||||
$values[0]->tarifa_id = $tarifa;
|
||||
array_push($data, $values[0]);
|
||||
}
|
||||
|
||||
//$values = $this->model->getPrecioTarifa($tarifa_acabado_id, $tirada, $proveedor_id, $POD);
|
||||
|
||||
$data = [
|
||||
'values' => $values,
|
||||
'values' => $data,
|
||||
$csrfTokenName => $newTokenHash
|
||||
];
|
||||
|
||||
@ -157,26 +168,31 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController
|
||||
|
||||
$cubierta = $this->request->getGet("cubierta") ?? 0;
|
||||
$sobrecubierta = $this->request->getGet("sobrecubierta") ?? 0;
|
||||
$cliente = $this->request->getGet("cliente") ?? 0;
|
||||
|
||||
$model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel');
|
||||
$model = model('App\Models\Tarifas\Acabados\ServicioAcabadoModel');
|
||||
$query = $model->builder()->select(
|
||||
[
|
||||
"id",
|
||||
"nombre as name"
|
||||
]
|
||||
)
|
||||
->where("lg_tarifa_acabado.is_deleted", 0)
|
||||
->where("lg_tarifa_acabado.mostrar_en_presupuesto", 1);
|
||||
->where("servicios_acabado.deleted_at", null);
|
||||
|
||||
|
||||
if($cubierta == 1){
|
||||
$query->where("lg_tarifa_acabado.acabado_cubierta", 1);
|
||||
$query->where("servicios_acabado.acabado_cubierta", 1);
|
||||
}
|
||||
else if ($sobrecubierta == 1){
|
||||
$query->where("lg_tarifa_acabado.acabado_sobrecubierta", 1);
|
||||
$query->where("servicios_acabado.acabado_sobrecubierta", 1);
|
||||
}
|
||||
|
||||
if ($cliente == 1) {
|
||||
$query->where("servicios_acabado.mostrar_en_presupuesto_cliente", 1);
|
||||
}
|
||||
if ($this->request->getGet("q")) {
|
||||
$query->groupStart()
|
||||
->orLike("lg_tarifa_acabado.nombre", $this->request->getGet("q"))
|
||||
->orLike("servicios_acabado.nombre", $this->request->getGet("q"))
|
||||
->groupEnd();
|
||||
}
|
||||
|
||||
|
||||
@ -1128,18 +1128,21 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
|
||||
$solapas = $this->request->getGet('solapas') ?? 0;
|
||||
$lomo = $this->request->getGet('lomo') ?? 0;
|
||||
|
||||
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo;
|
||||
|
||||
$tipo = $this->request->getGet("tipo");
|
||||
|
||||
$uso = $this->request->getGet("uso") ?? 'interior';
|
||||
|
||||
$anchoLibro = $ancho;
|
||||
|
||||
$cubierta = false;
|
||||
if ($uso == 'cubierta') {
|
||||
$cubierta = true;
|
||||
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo;
|
||||
}
|
||||
$sobrecubierta = false;
|
||||
if ($uso == 'sobrecubierta') {
|
||||
$sobrecubierta = true;
|
||||
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo;
|
||||
}
|
||||
$guardas = false;
|
||||
if ($uso == 'guardas') {
|
||||
@ -1191,7 +1194,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
|
||||
$solapas = $this->request->getGet('solapas') ?? 0;
|
||||
$lomo = $this->request->getGet('lomo') ?? 0;
|
||||
|
||||
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo;
|
||||
$anchoLibro = $ancho;
|
||||
|
||||
$tipo_impresion_id = $this->request->getGet("tipo_impresion");
|
||||
$tapa_dura = model('App\Models\Configuracion\TipoPresupuestoModel')->get_isTapaDura(intval($tipo_impresion_id));
|
||||
@ -1202,10 +1205,12 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
|
||||
$cubierta = false;
|
||||
if ($uso == 'cubierta') {
|
||||
$cubierta = true;
|
||||
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo;
|
||||
}
|
||||
$sobrecubierta = false;
|
||||
if ($uso == 'sobrecubierta') {
|
||||
$sobrecubierta = true;
|
||||
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo;
|
||||
}
|
||||
$guardas = false;
|
||||
if ($uso == 'guardas') {
|
||||
|
||||
@ -1290,37 +1290,55 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
// Servicios
|
||||
if ($sobrecubierta) {
|
||||
if (intval($sobrecubierta['acabado']) > 0) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$servicio = $model->getPrecioTarifa(intval($sobrecubierta['acabado']), intval($selected_tirada), -1, $POD);
|
||||
|
||||
if (count($servicio) > 0) {
|
||||
if ($servicio[0]->total > 0) {
|
||||
$this->guardarServicio($id, $servicio[0], 'acabado', false, true);
|
||||
$modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel');
|
||||
$serviciosAcabado = $modelServicioAcabado->getTarifasForServicio($sobrecubierta['acabado']);
|
||||
|
||||
foreach ($serviciosAcabado as $service) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD);
|
||||
|
||||
if (count($servicio) > 0) {
|
||||
if ($servicio[0]->total > 0) {
|
||||
$this->guardarServicio($id, $servicio[0], 'acabado', false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (intval($cubierta['acabado']) > 0) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$servicio = $model->getPrecioTarifa(intval($cubierta['acabado']), intval($selected_tirada), -1, $POD);
|
||||
|
||||
if (count($servicio) > 0) {
|
||||
if ($servicio[0]->total > 0) {
|
||||
$this->guardarServicio($id, $servicio[0], 'acabado', true, false);
|
||||
$modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel');
|
||||
$serviciosAcabado = $modelServicioAcabado->getTarifasForServicio($sobrecubierta['acabado']);
|
||||
|
||||
foreach ($serviciosAcabado as $service) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD);
|
||||
|
||||
if (count($servicio) > 0) {
|
||||
if ($servicio[0]->total > 0) {
|
||||
$this->guardarServicio($id, $servicio[0], 'acabado', true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
if (is_array($faja) && $faja !== [] && intval($faja['acabado']) > 0) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$servicio = $model->getPrecioTarifa(intval($faja['acabado']), intval($selected_tirada), -1, $POD);
|
||||
|
||||
if (count($servicio) > 0) {
|
||||
if ($servicio[0]->total > 0) {
|
||||
$this->guardarServicio($id, $servicio[0], 'acabado', false, false, true);
|
||||
$modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel');
|
||||
$serviciosAcabado = $modelServicioAcabado->getTarifasForServicio($faja['acabado']);
|
||||
|
||||
foreach ($serviciosAcabado as $service) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD);
|
||||
|
||||
if (count($servicio) > 0) {
|
||||
if ($servicio[0]->total > 0) {
|
||||
$this->guardarServicio($id, $servicio[0], 'acabado', false, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
foreach ($resultado_presupuesto['values']['serviciosDefecto']['encuadernacion'] as $servicio) {
|
||||
$this->guardarServicio($id, $servicio, 'encuadernacion');
|
||||
@ -1415,10 +1433,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
'url' => site_url('presupuestos/presupuestocliente/edit'),
|
||||
'message' => lang('Basic.global.saveSuccess', [lang('Basic.global.record')]),
|
||||
]);
|
||||
}else{
|
||||
} else {
|
||||
return [
|
||||
'sk_id' => $id,
|
||||
'sk_url' => site_url('presupuestos/presupuestocliente/edit/' . $id)
|
||||
'sk_url' => site_url('presupuestos/presupuestocliente/edit/' . $id)
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -1439,7 +1457,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$data['lsc'] = $presupuesto->lomo_sobrecubierta;
|
||||
$data['eb'] = $presupuesto->envio_base;
|
||||
$data['state'] = intval($presupuesto->estado_id);
|
||||
if($presupuesto->estado_id == 2){ // confirmado
|
||||
if ($presupuesto->estado_id == 2) { // confirmado
|
||||
$data['datosGenerales']['selectedTirada'] = $presupuesto->tirada;
|
||||
}
|
||||
$data['datosGenerales']['titulo'] = $presupuesto->titulo;
|
||||
@ -1492,7 +1510,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$data['cubierta']['solapas'] = $presupuesto->solapas ? 1 : 0;
|
||||
$data['cubierta']['solapas_ancho'] = $presupuesto->solapas_ancho;
|
||||
$data['cubierta']['cabezada'] = $presupuesto->cabezada;
|
||||
$modelAcabado = model("App\Models\Tarifas\Acabados\TarifaAcabadoModel");
|
||||
$modelAcabado = model("App\Models\Tarifas\Acabados\ServicioAcabadoModel");
|
||||
$data['cubierta']['acabado']['id'] = $presupuesto->acabado_cubierta_id;
|
||||
if ($presupuesto->acabado_cubierta_id == 0) {
|
||||
$data['cubierta']['acabado']['text'] = "Ninguno";
|
||||
@ -2127,36 +2145,41 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
// Acabado Cubierta
|
||||
if (intval($datos_entrada['cubierta']['acabado']) != 0) {
|
||||
|
||||
$modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel');
|
||||
$serviciosAcabado = $modelServicioAcabado->getTarifasForServicio(intval($datos_entrada['cubierta']['acabado']));
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoCubierta = $model->getPrecioTarifa(intval($datos_entrada['cubierta']['acabado']), $datosPedido->tirada, -1, $POD);
|
||||
foreach ($serviciosAcabado as $servicio) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoCubierta = $model->getPrecioTarifa(intval($servicio), $datosPedido->tirada, -1, $POD);
|
||||
|
||||
if (count($acabadoCubierta) > 0) {
|
||||
if ($acabadoCubierta[0]->total <= 0) {
|
||||
if (count($acabadoCubierta) > 0) {
|
||||
if ($acabadoCubierta[0]->total <= 0) {
|
||||
|
||||
$input_data['tarifas_acabado_cubierta'] = intval($datos_entrada['cubierta']['acabado']);
|
||||
$errorModel = new ErrorPresupuesto();
|
||||
$errorModel->insertError(
|
||||
$datos_entrada['id'],
|
||||
auth()->user()->id,
|
||||
'No se puede obtener acabados de cubierta',
|
||||
$input_data
|
||||
);
|
||||
$return_data = [
|
||||
'errors' => (object) ([
|
||||
'status' => 1
|
||||
]),
|
||||
];
|
||||
return $return_data;
|
||||
}
|
||||
$coste_servicios += round(floatval($acabadoCubierta[0]->total), 2);
|
||||
if ($extra_info) {
|
||||
$totalServicios += round(floatval($acabadoCubierta[0]->total), 2);
|
||||
$base = round(floatval($acabadoCubierta[0]->total / (1 + $acabadoCubierta[0]->margen / 100.0)), 2);
|
||||
$base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
|
||||
$margenServicios += round(floatval($acabadoCubierta[0]->total - $base), 2);
|
||||
$input_data['tarifas_acabado_cubierta'] = intval($servicio);
|
||||
$errorModel = new ErrorPresupuesto();
|
||||
$errorModel->insertError(
|
||||
$datos_entrada['id'],
|
||||
auth()->user()->id,
|
||||
'No se puede obtener acabados de cubierta',
|
||||
$input_data
|
||||
);
|
||||
$return_data = [
|
||||
'errors' => (object) ([
|
||||
'status' => 1
|
||||
]),
|
||||
];
|
||||
return $return_data;
|
||||
}
|
||||
$coste_servicios += round(floatval($acabadoCubierta[0]->total), 2);
|
||||
if ($extra_info) {
|
||||
$totalServicios += round(floatval($acabadoCubierta[0]->total), 2);
|
||||
$base = round(floatval($acabadoCubierta[0]->total / (1 + $acabadoCubierta[0]->margen / 100.0)), 2);
|
||||
$base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
|
||||
$margenServicios += round(floatval($acabadoCubierta[0]->total - $base), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -2217,35 +2240,40 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
// Acabado sobrecubierta
|
||||
if (intval($datos_entrada['sobrecubierta']['acabado']) != 0) {
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoSobrecubierta = $model->getPrecioTarifa(intval($datos_entrada['sobrecubierta']['acabado']), $datosPedido->tirada, -1, $POD);
|
||||
$modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel');
|
||||
$serviciosAcabado = $modelServicioAcabado->getTarifasForServicio(intval($datos_entrada['sobrecubierta']['acabado']));
|
||||
|
||||
if (count($acabadoSobrecubierta) > 0) {
|
||||
foreach ($serviciosAcabado as $servicio) {
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoSobrecubierta = $model->getPrecioTarifa(intval($servicio), $datosPedido->tirada, -1, $POD);
|
||||
|
||||
if ($acabadoSobrecubierta[0]->total <= 0) {
|
||||
if (count($acabadoSobrecubierta) > 0) {
|
||||
|
||||
$input_data['tarifas_acabado_sobrecubierta'] = intval($datos_entrada['sobrecubierta']['acabado']);
|
||||
$errorModel = new ErrorPresupuesto();
|
||||
$errorModel->insertError(
|
||||
$datos_entrada['id'],
|
||||
auth()->user()->id,
|
||||
'No se puede obtener acabados de sobrecubierta',
|
||||
$input_data
|
||||
);
|
||||
$return_data = [
|
||||
'errors' => (object) ([
|
||||
'status' => 1
|
||||
]),
|
||||
];
|
||||
return $return_data;
|
||||
}
|
||||
if ($acabadoSobrecubierta[0]->total <= 0) {
|
||||
|
||||
$coste_servicios += round(floatval($acabadoSobrecubierta[0]->total), 2);
|
||||
if ($extra_info) {
|
||||
$totalServicios += round(floatval($acabadoSobrecubierta[0]->total), 2);
|
||||
$base = round(floatval($acabadoSobrecubierta[0]->total / (1 + $acabadoSobrecubierta[0]->margen / 100.0)), 2);
|
||||
$base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
|
||||
$margenServicios += round(floatval($acabadoSobrecubierta[0]->total - $base), 2);
|
||||
$input_data['tarifas_acabado_sobrecubierta'] = intval($servicio);
|
||||
$errorModel = new ErrorPresupuesto();
|
||||
$errorModel->insertError(
|
||||
$datos_entrada['id'],
|
||||
auth()->user()->id,
|
||||
'No se puede obtener acabados de sobrecubierta',
|
||||
$input_data
|
||||
);
|
||||
$return_data = [
|
||||
'errors' => (object) ([
|
||||
'status' => 1
|
||||
]),
|
||||
];
|
||||
return $return_data;
|
||||
}
|
||||
|
||||
$coste_servicios += round(floatval($acabadoSobrecubierta[0]->total), 2);
|
||||
if ($extra_info) {
|
||||
$totalServicios += round(floatval($acabadoSobrecubierta[0]->total), 2);
|
||||
$base = round(floatval($acabadoSobrecubierta[0]->total / (1 + $acabadoSobrecubierta[0]->margen / 100.0)), 2);
|
||||
$base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
|
||||
$margenServicios += round(floatval($acabadoSobrecubierta[0]->total - $base), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2370,14 +2398,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
// Acabado faja
|
||||
if (intval($faja['acabado']) != 0) {
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoFaja = $model->getPrecioTarifa(intval($faja['acabado']), $datosPedido->tirada, -1, $POD);
|
||||
$modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel');
|
||||
$serviciosAcabado = $modelServicioAcabado->getTarifasForServicio(intval($faja['acabado']));
|
||||
|
||||
foreach ($serviciosAcabado as $servicio)
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoFaja = $model->getPrecioTarifa(intval($servicio), $datosPedido->tirada, -1, $POD);
|
||||
|
||||
if (count($acabadoFaja) > 0) {
|
||||
|
||||
if ($acabadoFaja[0]->total <= 0) {
|
||||
|
||||
$input_data['tarifas_acabado_faja'] = intval($faja['acabado']);
|
||||
$input_data['tarifas_acabado_faja'] = intval($servicio);
|
||||
$errorModel = new ErrorPresupuesto();
|
||||
$errorModel->insertError(
|
||||
$datos_entrada['id'],
|
||||
@ -2902,7 +2934,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$margenImpresion += round($linea['precio_impresion_horas'], 2); // coste de maquina y magen son MARGEN, no COSTE
|
||||
$margenImpresion += round($linea['margen_impresion_horas'], 2);
|
||||
$margenImpresion += round($linea['margen_click_pedido'], 2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected function calcular_lomo($lineas, $lomo_inicial)
|
||||
|
||||
327
ci4/app/Controllers/Tarifas/Acabados/ServiciosAcabado.php
Normal file
327
ci4/app/Controllers/Tarifas/Acabados/ServiciosAcabado.php
Normal file
@ -0,0 +1,327 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers\Tarifas\Acabados;
|
||||
|
||||
use App\Controllers\BaseResourceController;
|
||||
use App\Entities\Tarifas\Acabados\ServicioAcabadoEntity;
|
||||
use App\Models\Tarifas\Acabados\ServicioAcabadoModel;
|
||||
use CodeIgniter\I18n\Time;
|
||||
use Hermawan\DataTables\DataTable;
|
||||
|
||||
class ServiciosAcabado extends BaseResourceController
|
||||
{
|
||||
|
||||
protected $modelName = ServicioAcabadoModel::class;
|
||||
protected $format = 'json';
|
||||
|
||||
protected static $singularObjectName = 'Servicio Acabado';
|
||||
protected static $singularObjectNameCc = 'serviciosAcabado';
|
||||
protected static $pluralObjectName = 'Servicios Acabado';
|
||||
protected static $pluralObjectNameCc = 'serviciosAcabado';
|
||||
|
||||
protected static $controllerSlug = 'serviciosacabado';
|
||||
|
||||
protected static $viewPath = 'themes/vuexy/form/tarifas/acabado/';
|
||||
|
||||
protected $indexRoute = 'serviciosAcabadoList';
|
||||
|
||||
|
||||
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
|
||||
{
|
||||
$this->viewData['pageTitle'] = lang('Servicioacabado.moduleTitle');
|
||||
$this->viewData['usingSweetAlert'] = true;
|
||||
|
||||
$this->viewData = ['usingServerSideDataTable' => true];
|
||||
|
||||
// Breadcrumbs
|
||||
$this->viewData['breadcrumb'] = [
|
||||
['title' => lang("App.menu_tarifas"), 'route' => "javascript:void(0);", 'active' => false],
|
||||
['title' => lang("App.menu_servicioAcabado"), 'route' => route_to('serviciosAcabadoList'), 'active' => true]
|
||||
];
|
||||
|
||||
helper("time");
|
||||
parent::initController($request, $response, $logger);
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
|
||||
checkPermission('tarifa-acabado.menu');
|
||||
|
||||
$viewData = [
|
||||
'currentModule' => static::$controllerSlug,
|
||||
'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Servicioacabado.serviciosacabado')]),
|
||||
'servicioacabadoEntity' => new ServicioAcabadoEntity(),
|
||||
'usingServerSideDataTable' => true,
|
||||
];
|
||||
|
||||
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
|
||||
|
||||
return view(static::$viewPath . 'viewServiciosAcabadoList', $viewData);
|
||||
}
|
||||
|
||||
public function add()
|
||||
{
|
||||
|
||||
checkPermission('tarifa-acabado.create', $this->indexRoute);
|
||||
|
||||
if ($this->request->getPost()) :
|
||||
|
||||
$nullIfEmpty = true; // !(phpversion() >= '8.1');
|
||||
|
||||
$postData = $this->request->getPost();
|
||||
|
||||
$sanitizedData = $this->sanitized($postData, $nullIfEmpty);
|
||||
|
||||
$tarifasSeleccionadas = $postData['tarifasAcabado'] ?? [];
|
||||
unset($postData['tarifasAcabado']);
|
||||
|
||||
$sanitizedData = $this->sanitized($postData, $nullIfEmpty);
|
||||
|
||||
$sanitizedData['user_updated_id'] = auth()->user()->id;
|
||||
|
||||
if ($this->request->getPost('mostrar_en_presupuesto_cliente') == null) {
|
||||
$sanitizedData['mostrar_en_presupuesto'] = false;
|
||||
}
|
||||
|
||||
if ($this->request->getPost('acabado_cubierta') == null) {
|
||||
$sanitizedData['acabado_cubierta'] = false;
|
||||
}
|
||||
|
||||
if ($this->request->getPost('acabado_sobrecubierta') == null) {
|
||||
$sanitizedData['acabado_sobrecubierta'] = false;
|
||||
}
|
||||
|
||||
$noException = true;
|
||||
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) :
|
||||
|
||||
|
||||
if ($this->canValidate()) :
|
||||
try {
|
||||
$successfulResult = $this->model->skipValidation(true)->save($sanitizedData);
|
||||
} catch (\Exception $e) {
|
||||
$noException = false;
|
||||
$this->dealWithException($e);
|
||||
}
|
||||
else:
|
||||
$this->viewData['errorMessage'] = lang('Basic.global.formErr1', [lang('Basic.global.record')]);
|
||||
$this->session->setFlashdata('formErrors', $this->model->errors());
|
||||
endif;
|
||||
|
||||
$thenRedirect = true; // Change this to false if you want your user to stay on the form after submission
|
||||
endif;
|
||||
if ($noException && $successfulResult) :
|
||||
|
||||
$id = $this->model->db->insertID();
|
||||
|
||||
$message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.';
|
||||
|
||||
$modelTable = model("App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel");
|
||||
|
||||
foreach ($tarifasSeleccionadas as $tarifaId) {
|
||||
$modelTable->insert(['servicio_id' => $id, 'tarifa_id' => $tarifaId, 'user_updated_id' => auth()->user()->id]);
|
||||
}
|
||||
|
||||
if ($thenRedirect) :
|
||||
if (!empty($this->indexRoute)) :
|
||||
return redirect()->to(site_url('/serviciosacabado/edit/' . $id))->with('message', $message);
|
||||
else:
|
||||
return $this->redirect2listView('sweet-success', $message);
|
||||
endif;
|
||||
else:
|
||||
$this->session->setFlashData('sweet-success', $message);
|
||||
endif;
|
||||
|
||||
endif; // $noException && $successfulResult
|
||||
|
||||
endif; // ($requestMethod === 'post')
|
||||
|
||||
|
||||
$this->viewData['tarifasSeleccionadas'] = [];
|
||||
$this->viewData['servicio'] = isset($sanitizedData) ? new ServicioAcabadoEntity($sanitizedData) : new ServicioAcabadoEntity();
|
||||
$this->viewData['formAction'] = route_to('createServicioAcabado');
|
||||
$this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('ServicioAcabado.moduleTitle') . ' ' . lang('Basic.global.addNewSuffix');
|
||||
|
||||
|
||||
return $this->displayForm(__METHOD__);
|
||||
}
|
||||
|
||||
|
||||
public function edit($requestedId = null)
|
||||
{
|
||||
|
||||
if ($requestedId == null):
|
||||
return $this->redirect2listView();
|
||||
endif;
|
||||
$id = filter_var($requestedId, FILTER_SANITIZE_URL);
|
||||
$servicio = $this->model->find($id);
|
||||
|
||||
if ($servicio == false):
|
||||
$message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('ServicioAcabado.servicioacabado')), $id]);
|
||||
return $this->redirect2listView('sweet-error', $message);
|
||||
endif;
|
||||
|
||||
if ($this->request->getPost()):
|
||||
|
||||
$nullIfEmpty = true; // !(phpversion() >= '8.1');
|
||||
|
||||
$postData = $this->request->getPost();
|
||||
|
||||
$tarifasSeleccionadas = $postData['tarifasAcabado'] ?? [];
|
||||
unset($postData['tarifasAcabado']);
|
||||
|
||||
$sanitizedData = $this->sanitized($postData, $nullIfEmpty);
|
||||
|
||||
$sanitizedData['user_updated_id'] = auth()->user()->id;
|
||||
|
||||
if ($this->request->getPost('mostrar_en_presupuesto_cliente') == null) {
|
||||
$sanitizedData['mostrar_en_presupuesto'] = false;
|
||||
}
|
||||
|
||||
if ($this->request->getPost('acabado_cubierta') == null) {
|
||||
$sanitizedData['acabado_cubierta'] = false;
|
||||
}
|
||||
|
||||
if ($this->request->getPost('acabado_sobrecubierta') == null) {
|
||||
$sanitizedData['acabado_sobrecubierta'] = false;
|
||||
}
|
||||
|
||||
|
||||
$noException = true;
|
||||
if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) :
|
||||
|
||||
|
||||
if ($this->canValidate()):
|
||||
try {
|
||||
$successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData);
|
||||
} catch (\Exception $e) {
|
||||
$noException = false;
|
||||
$this->dealWithException($e);
|
||||
}
|
||||
else:
|
||||
$this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('ServicioAcabado.servicioacabado'))]);
|
||||
$this->session->setFlashdata('formErrors', $this->model->errors());
|
||||
|
||||
endif;
|
||||
|
||||
$servicio->fill($sanitizedData);
|
||||
|
||||
$modelTable = model("App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel");
|
||||
|
||||
$modelTable->where('servicio_id',$id)->delete();
|
||||
foreach ($tarifasSeleccionadas as $tarifaId) {
|
||||
$modelTable->insert(['servicio_id' => $id, 'tarifa_id' => $tarifaId, 'user_updated_id' => auth()->user()->id]);
|
||||
}
|
||||
|
||||
$thenRedirect = false;
|
||||
endif;
|
||||
|
||||
if ($noException && $successfulResult):
|
||||
$id = $servicio->id ?? $id;
|
||||
$message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.';
|
||||
|
||||
if ($thenRedirect):
|
||||
if (!empty($this->indexRoute)):
|
||||
return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message);
|
||||
else:
|
||||
return $this->redirect2listView('sweet-success', $message);
|
||||
endif;
|
||||
else:
|
||||
$this->session->setFlashData('sweet-success', $message);
|
||||
endif;
|
||||
|
||||
endif; // $noException && $successfulResult
|
||||
endif; // ($requestMethod === 'post')
|
||||
|
||||
$this->viewData['servicio'] = $servicio;
|
||||
|
||||
$this->viewData['tarifasSeleccionadas'] = $this->getTarifasSeleccionadasForView($id);
|
||||
|
||||
$this->viewData['formAction'] = route_to('updateServicioAcabado', $id);
|
||||
|
||||
$this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('ServicioAcabado.moduleTitle') . ' ' . lang('Basic.global.edit3');
|
||||
|
||||
|
||||
return $this->displayForm(__METHOD__, $id);
|
||||
} // end function edit(...)
|
||||
|
||||
|
||||
public function datatable()
|
||||
{
|
||||
|
||||
$model = model(ServicioAcabadoModel::class);
|
||||
$q = $model->getDatatableQuery();
|
||||
//return $this->response->setJSON($q->get());
|
||||
return DataTable::of($q)
|
||||
->add("action", callback: function ($q) {
|
||||
return '<span class="edit"><a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="' . $q->id . '"></i></a></span>'
|
||||
. (auth()->user()->can("servicio-acabado.delete") ?
|
||||
'<span class="delete"><a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="' . $q->id . '"></i></a></span>'
|
||||
: '');
|
||||
})
|
||||
->edit(
|
||||
"updated_at",
|
||||
fn($q) => Time::createFromFormat("Y-m-d H:i:s", $q->updated_at)->format("d/m/Y")
|
||||
)
|
||||
->toJson(returnAsObject: true);
|
||||
}
|
||||
|
||||
|
||||
public function getTarifasSeleccionadasForView($servicioId){
|
||||
|
||||
$model = model("App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel");
|
||||
$ids = $model->getTarifasForServicio($servicioId);
|
||||
|
||||
return $ids;
|
||||
}
|
||||
|
||||
|
||||
public function getTarifasSeleccionadas()
|
||||
{
|
||||
$model = model("App\Models\Tarifas\Acabados\TarifaAcabadoModel");
|
||||
$ids = $this->request->getGet('ids');
|
||||
|
||||
if (empty($ids)) {
|
||||
return $this->response->setJSON([]);
|
||||
}
|
||||
|
||||
$query = $model->select('lg_tarifa_acabado.id, lg_tarifa_acabado.nombre')->whereIn('lg_tarifa_acabado.id', $ids);
|
||||
|
||||
$query->where('lg_tarifa_acabado.deleted_at', null);
|
||||
|
||||
$tarifas = $query->findAll();
|
||||
|
||||
return $this->response->setJSON($tarifas);
|
||||
}
|
||||
|
||||
public function getTarifas()
|
||||
{
|
||||
$model = model("App\Models\Tarifas\Acabados\TarifaAcabadoModel");
|
||||
|
||||
$search = $this->request->getGet('search'); // Obtiene el parámetro de búsqueda
|
||||
|
||||
$acabado_cubierta = $this->request->getGet('acabado_cubierta');
|
||||
$acabado_sobrecubierta = $this->request->getGet('acabado_sobrecubierta');
|
||||
|
||||
$query = $model->select('lg_tarifa_acabado.id, lg_tarifa_acabado.nombre');
|
||||
|
||||
if (!empty($search)) {
|
||||
$query->like('lg_tarifa_acabado.nombre', $search);
|
||||
}
|
||||
|
||||
if($acabado_cubierta){
|
||||
$query->where('lg_tarifa_acabado.acabado_cubierta', $acabado_cubierta);
|
||||
}
|
||||
if($acabado_sobrecubierta){
|
||||
$query->where('lg_tarifa_acabado.acabado_sobrecubierta', $acabado_sobrecubierta);
|
||||
}
|
||||
|
||||
$query->where('lg_tarifa_acabado.deleted_at', null);
|
||||
|
||||
$tarifas = $query->findAll();
|
||||
|
||||
return $this->response->setJSON($tarifas);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
use function PHPSTORM_META\type;
|
||||
|
||||
class CreateServiciosAcabadoTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$this->forge->addField([
|
||||
'id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
'auto_increment' => true,
|
||||
],
|
||||
'nombre' =>[
|
||||
'type' => 'VARCHAR',
|
||||
'constraint' => 100,
|
||||
],
|
||||
'comentarios' => [
|
||||
'type' => 'TEXT',
|
||||
'null' => true,
|
||||
],
|
||||
'acabado_cubierta' => [
|
||||
'type' => 'BOOLEAN',
|
||||
'default' => false,
|
||||
],
|
||||
'acabado_sobrecubierta' => [
|
||||
'type' => 'BOOLEAN',
|
||||
'default' => false,
|
||||
],
|
||||
'mostrar_en_presupuesto_cliente' => [
|
||||
'type' => 'BOOLEAN',
|
||||
'default' => true,
|
||||
],
|
||||
'user_updated_id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
],
|
||||
'created_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
'updated_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
'deleted_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
]);
|
||||
|
||||
$this->forge->addPrimaryKey('id');
|
||||
$this->forge->addForeignKey('user_updated_id', 'users', 'id', 'CASCADE', 'CASCADE');
|
||||
|
||||
$this->forge->createTable('servicios_acabado');
|
||||
|
||||
$this->forge->addField([
|
||||
'id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
'auto_increment' => true,
|
||||
],
|
||||
'tarifa_id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
],
|
||||
'servicio_id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
],
|
||||
'user_updated_id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
],
|
||||
'created_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
'updated_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
'deleted_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
]);
|
||||
|
||||
$this->forge->addPrimaryKey('id');
|
||||
$this->forge->addForeignKey('servicio_id', 'servicios_acabado', 'id', 'NO_ACTION', 'NO_ACTION');
|
||||
$this->forge->addForeignKey('tarifa_id', 'lg_tarifa_acabado', 'id', 'NO_ACTION', 'NO_ACTION');
|
||||
$this->forge->addForeignKey('user_updated_id', 'users', 'id', 'NO_ACTION', 'NO_ACTION');
|
||||
|
||||
$this->forge->createTable('tarifasAcabado_serviciosAcabado');
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$this->forge->dropTable('servicios_acabado');
|
||||
$this->forge->dropTable('tarifasAcabado_serviciosAcabado');
|
||||
}
|
||||
}
|
||||
23
ci4/app/Entities/Tarifas/Acabados/ServicioAcabadoEntity.php
Normal file
23
ci4/app/Entities/Tarifas/Acabados/ServicioAcabadoEntity.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
namespace App\Entities\Tarifas\Acabados;
|
||||
|
||||
use CodeIgniter\Entity;
|
||||
|
||||
class ServicioAcabadoEntity extends \CodeIgniter\Entity\Entity
|
||||
{
|
||||
protected $attributes = [
|
||||
"id" => null,
|
||||
"nombre" => null,
|
||||
'mostrar_en_cliente' => false,
|
||||
"comentarios" => null,
|
||||
"user_updated_id" => 0,
|
||||
"created_at" => null,
|
||||
"updated_at" => null,
|
||||
"deleted_at" => null,
|
||||
];
|
||||
protected $casts = [
|
||||
"mostrar_en_cliente" => "boolean",
|
||||
"comentarios" => "string",
|
||||
"user_updated_id" => "int",
|
||||
];
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
namespace App\Entities\Tarifas\Acabados;
|
||||
|
||||
use CodeIgniter\Entity;
|
||||
|
||||
class TarifasAcabadosServicioAcabadoEntity extends \CodeIgniter\Entity\Entity
|
||||
{
|
||||
protected $attributes = [
|
||||
"id" => null,
|
||||
"tarifa_id" => null,
|
||||
'servicio_id' => false,
|
||||
"user_updated_id" => 0,
|
||||
"created_at" => null,
|
||||
"updated_at" => null,
|
||||
"deleted_at" => null,
|
||||
];
|
||||
protected $casts = [
|
||||
"tarifa_id" => "int",
|
||||
"servicio_id" => "int",
|
||||
"user_updated_id" => "int",
|
||||
];
|
||||
}
|
||||
@ -797,6 +797,7 @@ return [
|
||||
"menu_tarifamanipulado" => "Manipulado",
|
||||
"menu_tarifaencuadernacion" => "Encuadernación",
|
||||
"menu_tarifapapelcompra" => "Papel compra",
|
||||
"menu_servicioAcabado" => "Servicios acabado",
|
||||
"menu_tarifaacabado" => "Acabado",
|
||||
"menu_tarifapapeldefecto" => "Papel defecto",
|
||||
"menu_tarifaenvio" => "Envío",
|
||||
|
||||
@ -38,6 +38,7 @@ return [
|
||||
'tarifaPreimpresionSection' => 'Tarifas de preimpresión',
|
||||
'tarifaManipuladoSection' => 'Tarifas de manipulado',
|
||||
'tarifaAcabadoSection' => 'Tarifas de acabado',
|
||||
'servicioAcabadoSection' => 'Servicios de acabado',
|
||||
'tarifaEncuadernacionSection' => 'Tarifas de encuadernación',
|
||||
'tarifaEnvioSection' => 'Tarifas de envio',
|
||||
'tarifaExtraSection' => 'Tarifas extra',
|
||||
|
||||
30
ci4/app/Language/es/ServicioAcabado.php
Executable file
30
ci4/app/Language/es/ServicioAcabado.php
Executable file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
|
||||
return [
|
||||
|
||||
|
||||
'id' => 'ID',
|
||||
'moduleTitle' => 'Servicios Acabado',
|
||||
'nombre' => 'Nombre',
|
||||
'comentarios' => 'Comentarios',
|
||||
'mostrar_en_presupuesto_cliente' => 'Mostrar en presupuesto (cliente)',
|
||||
'serviciosacabado' => 'Servicios Acabado',
|
||||
'servicioacabado' => 'Servicio Acabado',
|
||||
'tarifasacabado' => 'Tarifas Acabado',
|
||||
"servicio_cubierta" => "Servicio cubierta",
|
||||
"servicio_sobrecubierta" => "Servicio sobrecubierta",
|
||||
'tarifaacabado' => 'Tarifa Acabado',
|
||||
'servicioscabadoList' => 'Lista Servicios Acabado',
|
||||
'updatedAt' => 'Actualizado en',
|
||||
'createdAt' => 'Creado en',
|
||||
'deletedAt' => 'Borrado en',
|
||||
'userUpdateId' => 'Modificado por',
|
||||
'validation' => [
|
||||
'nombre' => [
|
||||
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'is_unique' => 'Ya existe un servicio con el campo {field} guardado.',
|
||||
],
|
||||
],
|
||||
];
|
||||
49
ci4/app/Models/Tarifas/Acabados/ServicioAcabadoModel.php
Normal file
49
ci4/app/Models/Tarifas/Acabados/ServicioAcabadoModel.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
namespace App\Models\Tarifas\Acabados;
|
||||
|
||||
use CodeIgniter\Database\BaseBuilder;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class ServicioAcabadoModel extends Model
|
||||
{
|
||||
protected $table = 'servicios_acabado';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useSoftDeletes = true;
|
||||
protected $allowedFields = ['acabado_cubierta', 'acabado_sobrecubierta', 'nombre', 'comentarios', 'mostrar_en_presupuesto_cliente', 'user_updated_id', 'created_at', 'updated_at', 'deleted_at'];
|
||||
protected $useTimestamps = true;
|
||||
|
||||
protected $dateFormat = 'datetime';
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
protected $returnType = 'App\Entities\Tarifas\Acabados\ServicioAcabadoEntity';
|
||||
|
||||
protected $validationRules = [
|
||||
"nombre" => [
|
||||
"label" => "ServicioAcabado.nombre",
|
||||
"rules" => "trim|required|max_length[100]",
|
||||
],
|
||||
];
|
||||
|
||||
public function getDatatableQuery(): BaseBuilder
|
||||
{
|
||||
$builder = $this->db
|
||||
->table($this->table . " t1")
|
||||
->select(
|
||||
"t1.id,
|
||||
t1.nombre,
|
||||
t1.acabado_cubierta,
|
||||
t1.acabado_sobrecubierta,
|
||||
t1.mostrar_en_presupuesto_cliente,
|
||||
CONCAT(users.first_name, ' ', users.last_name) as user_updated,
|
||||
t1.updated_at",
|
||||
)
|
||||
->join("users", "t1.user_updated_id = users.id", "left")
|
||||
->where("t1.deleted_at", null);
|
||||
return $builder;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
namespace App\Models\Tarifas\Acabados;
|
||||
|
||||
use CodeIgniter\Database\BaseBuilder;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class TarifasAcabadoServiciosAcabadoModel extends Model
|
||||
{
|
||||
protected $table = 'tarifasAcabado_serviciosAcabado';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useSoftDeletes = true;
|
||||
protected $allowedFields = ['tarifa_id', 'servicio_id', 'user_updated_id', 'created_at', 'updated_at', 'deleted_at'];
|
||||
protected $useTimestamps = true;
|
||||
|
||||
protected $dateFormat = 'datetime';
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
protected $returnType = 'App\Entities\Tarifas\Acabados\TarifasAcabadosServicioAcabadoEntity';
|
||||
|
||||
public function getTarifasForServicio($servicioId)
|
||||
{
|
||||
$builder = $this->db
|
||||
->table($this->table . " t1")
|
||||
->select(
|
||||
"t1.tarifa_id",
|
||||
)
|
||||
->where("t1.servicio_id", $servicioId)
|
||||
->where("t1.deleted_at", null);
|
||||
$ids = $builder->get()->getResultArray();
|
||||
|
||||
return array_column($ids, 'tarifa_id');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,100 @@
|
||||
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
|
||||
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
|
||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||
|
||||
<?= $this->section("content") ?>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card card-info">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
|
||||
</div><!--//.card-header -->
|
||||
<form id="servicioAcabadoForm" class="card-body" method="post" action="<?= $formAction ?>">
|
||||
<?= csrf_field() ?>
|
||||
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
|
||||
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-lg-12 px-4">
|
||||
<div class="mb-3">
|
||||
<label for="nombre" class="form-label">
|
||||
<?= lang('ServicioAcabado.nombre') ?>*
|
||||
</label>
|
||||
<input type="text" id="nombre" name="nombre" maxLength="255" class="form-control"
|
||||
value="<?= old('nombre', $servicio->nombre) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="row">
|
||||
<span class="mb-3">Seleccione si es servicio cubierta o sobrecubierta (o ambos) antes de
|
||||
seleccionar las tarifas asociadas. Al cambiar estas opciones, se borrará la
|
||||
selección.</span>
|
||||
<div class="mb-3">
|
||||
<div class="form-check col-md-3">
|
||||
<label for="acabado_cubierta" class="form-check-label">
|
||||
<input type="checkbox" id="acabado_cubierta" name="acabado_cubierta" value="1"
|
||||
class="form-check-input" <?= $servicio->acabado_cubierta == true ? 'checked' : ''; ?>>
|
||||
<?= lang('ServicioAcabado.servicio_cubierta') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
|
||||
<div class="form-check col-md-3">
|
||||
<label for="acabado_sobrecubierta" class="form-check-label">
|
||||
<input type="checkbox" id="acabado_sobrecubierta" name="acabado_sobrecubierta"
|
||||
value="1" class="form-check-input" <?= $servicio->acabado_sobrecubierta == true ? 'checked' : ''; ?>>
|
||||
<?= lang('ServicioAcabado.servicio_sobrecubierta') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
|
||||
<div class="form-check col-md-3">
|
||||
<label for="mostrar_en_presupuesto_cliente" class="form-check-label">
|
||||
<input type="checkbox" id="mostrar_en_presupuesto_cliente"
|
||||
name="mostrar_en_presupuesto_cliente" value="1" class="form-check-input"
|
||||
<?= $servicio->mostrar_en_presupuesto_cliente == true ? 'checked' : ''; ?>>
|
||||
<?= lang('Tarifaencuadernacion.mostrar_en_presupuesto_cliente') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
</div><!--//.mb-3 -->
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<div class="form-group">
|
||||
<label for="tarifas" class="form-label">
|
||||
<?= lang('Tarifaacabado.tarifasacabado') ?></label>
|
||||
<select id="tarifas" name="tarifasAcabado[]" multiple="multiple"
|
||||
class="form-control select2"
|
||||
data-selected='<?= json_encode($tarifasSeleccionadas) ?>'></select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="comentarios" class="form-label">
|
||||
<?= lang('ServicioAcabado.comentarios') ?>
|
||||
</label>
|
||||
<textarea id="comentarios" name="comentarios" rows="5" cols="10"
|
||||
class="form-control"><?= old('comentarios', $servicio->comentarios) ?></textarea>
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
|
||||
</div><!--//.col -->
|
||||
|
||||
</div><!-- //.row -->
|
||||
|
||||
<div class="pt-4">
|
||||
<?php if (auth()->user()->can('tarifa-acabado.edit')): ?>
|
||||
<input type="submit" class="btn btn-primary float-start me-sm-3 me-1" name="save"
|
||||
value="<?= lang("Basic.global.Save") ?>" />
|
||||
<?php endif; ?>
|
||||
<?= anchor(route_to("serviciosAcabadoList"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
|
||||
</div><!-- /.card-footer -->
|
||||
</form>
|
||||
</div><!-- //.card -->
|
||||
</div><!--//.col -->
|
||||
</div><!--//.row -->
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
<?= $this->section('additionalExternalJs') ?>
|
||||
|
||||
<script type="module" src="<?= site_url("/assets/js/safekat/pages/tarifas/serviciosAcabado/edit.js") ?>"></script>
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
@ -0,0 +1,59 @@
|
||||
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
|
||||
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
|
||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||
<?= $this->section('content'); ?>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="card card-info">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?= lang('ServicioAcabado.servicioscabadoList') ?></h3>
|
||||
<?php if(auth()->user()->can('servicio-acabado.create')): ?>
|
||||
<?= anchor(route_to('newServicioAcabado'), lang('Basic.global.addNew') . ' ' . lang('ServicioAcabado.servicioacabado'), ['class' => 'btn btn-primary float-end']); ?>
|
||||
<?php endif; ?>
|
||||
</div><!--//.card-header -->
|
||||
<div class="card-body">
|
||||
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
|
||||
|
||||
<table id="tableOfServiciosAcabado" class="table table-striped table-hover" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= lang('ServicioAcabado.id') ?></th>
|
||||
<th><?= lang('ServicioAcabado.nombre') ?></th>
|
||||
<th><?= lang('ServicioAcabado.servicio_cubierta') ?></th>
|
||||
<th><?= lang('ServicioAcabado.servicio_sobrecubierta') ?></th>
|
||||
<th><?= lang('ServicioAcabado.mostrar_en_presupuesto_cliente') ?></th>
|
||||
<th><?= lang('ServicioAcabado.userUpdateId') ?></th>
|
||||
<th><?= lang('ServicioAcabado.updatedAt') ?></th>
|
||||
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div><!--//.card-body -->
|
||||
<div class="card-footer">
|
||||
|
||||
</div><!--//.card-footer -->
|
||||
</div><!--//.card -->
|
||||
</div><!--//.col -->
|
||||
</div><!--//.row -->
|
||||
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
<?= $this->section('additionalExternalJs') ?>
|
||||
<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="<?= site_url("/assets/js/safekat/pages/tarifas/serviciosAcabado/list.js") ?>"></script>
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
if (
|
||||
auth()->user()->can('tarifa-preimpresion.menu') ||
|
||||
auth()->user()->can('tarifa-manipulado.menu') ||
|
||||
auth()->user()->can('servicio-acabado.menu') ||
|
||||
auth()->user()->can('tarifa-acabado.menu') ||
|
||||
auth()->user()->can('tarifa-encuadernacion.menu') ||
|
||||
auth()->user()->can('tarifa-envio.menu') ||
|
||||
@ -39,6 +40,13 @@ if (
|
||||
</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if (auth()->user()->can('servicio-acabado.menu')) { ?>
|
||||
<li class="menu-item">
|
||||
<a href="<?= route_to('serviciosAcabadoList') ?>" class="menu-link">
|
||||
<?= lang("App.menu_servicioAcabado") ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if (auth()->user()->can('tarifa-encuadernacion.menu')) { ?>
|
||||
<li class="menu-item">
|
||||
<a href="<?= site_url("tarifas/tarifasencuadernacion") ?>" class="menu-link">
|
||||
|
||||
@ -219,6 +219,7 @@ class PresupuestoAdminEdit {
|
||||
datos.selectedTirada = this.datosLibro.tirada.val();
|
||||
datos.acabado_cubierta_id = this.datosLibro.acabadoCubierta.getVal();
|
||||
datos.acabado_sobrecubierta_id = this.datosLibro.acabadoSobrecubierta.getVal();
|
||||
datos.acabado_faja_id = this.datosLibro.acabadoFaja.getVal();
|
||||
|
||||
datos = {
|
||||
...datos, ...{
|
||||
|
||||
@ -49,14 +49,14 @@ class DatosLibro {
|
||||
}
|
||||
);
|
||||
this.acabadoFaja = new ClassSelect($("#acabado_faja_id"),
|
||||
'/serviciosacabados/getacabados',
|
||||
'/serviciosacabados/getacabados',
|
||||
'',
|
||||
false,
|
||||
{
|
||||
[this.csrf_token]: this.csrf_hash,
|
||||
"sobrecubierta": 1
|
||||
}
|
||||
);
|
||||
);
|
||||
|
||||
this.retractilado = this.domItem.find('#retractilado');
|
||||
this.retractilado5 = this.domItem.find('#retractilado5');
|
||||
@ -71,7 +71,6 @@ class DatosLibro {
|
||||
this.div_faja = this.domItem.find('.faja-div');
|
||||
|
||||
this.cargando = cargando;
|
||||
|
||||
}
|
||||
|
||||
init() {
|
||||
@ -85,37 +84,41 @@ class DatosLibro {
|
||||
|
||||
this.acabadoCubierta.item.on('select2:select', function () {
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando){
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.acabadoCubierta.getVal() == 0){
|
||||
if (self.acabadoCubierta.getVal() == 0) {
|
||||
$(document).trigger('remove-servicio-lineas', 'acabadoCubierta');
|
||||
}
|
||||
else{
|
||||
else {
|
||||
$(document).trigger('add-servicio-lineas', 'acabadoCubierta');
|
||||
}
|
||||
});
|
||||
|
||||
this.acabadoSobrecubierta.item.on('select2:select', function () {
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando){
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.acabadoCubierta.getVal() == 0){
|
||||
if (self.acabadoCubierta.getVal() == 0) {
|
||||
$(document).trigger('remove-servicio-lineas', 'acabadoSobrecubierta');
|
||||
}
|
||||
else{
|
||||
else {
|
||||
$(document).trigger('add-servicio-lineas', 'acabadoSobrecubierta');
|
||||
}
|
||||
});
|
||||
|
||||
this.acabadoFaja.item.on('select2:select', function () {
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
if(self.acabadoFaja.getVal() == 0){
|
||||
if (self.acabadoFaja.getVal() == 0) {
|
||||
$(document).trigger('remove-servicio-lineas', 'acabadoFaja');
|
||||
}
|
||||
else{
|
||||
else {
|
||||
$(document).trigger('add-servicio-lineas', 'acabadoFaja');
|
||||
}
|
||||
});
|
||||
@ -158,8 +161,8 @@ class DatosLibro {
|
||||
if (this.faja.prop('checked')) {
|
||||
this.div_faja.removeClass('d-none');
|
||||
$('#compFaja').val(1).trigger('change');
|
||||
|
||||
if(this.cargando)
|
||||
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
$(document).trigger('add-servicio-lineas', 'solapas_faja');
|
||||
@ -169,8 +172,8 @@ class DatosLibro {
|
||||
this.div_faja.addClass('d-none');
|
||||
$('#compFaja').val(0).trigger('change');
|
||||
$('.acabado-faja').addClass('d-none');
|
||||
|
||||
if(this.cargando)
|
||||
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
$(document).trigger('remove-servicio-lineas', 'acabadoFaja');
|
||||
@ -182,7 +185,7 @@ class DatosLibro {
|
||||
|
||||
checkMinMaxInput(event) {
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
const el = event.target;
|
||||
@ -194,7 +197,7 @@ class DatosLibro {
|
||||
el.value = el.max;
|
||||
}
|
||||
}
|
||||
else{
|
||||
else {
|
||||
el.value = el.min;
|
||||
}
|
||||
}
|
||||
@ -202,7 +205,7 @@ class DatosLibro {
|
||||
|
||||
changeFerro() {
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
if (this.ferro.prop('checked')) {
|
||||
@ -215,7 +218,7 @@ class DatosLibro {
|
||||
|
||||
changePrototipo() {
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
if (this.prototipo.prop('checked')) {
|
||||
@ -229,7 +232,7 @@ class DatosLibro {
|
||||
|
||||
checkRetractilado(event) {
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
switch (event.currentTarget.id) {
|
||||
@ -323,13 +326,13 @@ class DatosLibro {
|
||||
setTimeout(() => {
|
||||
if (this.solapasCubierta.prop('checked')) {
|
||||
$('#div_solapas_ancho').removeClass('d-none');
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
$(document).trigger('add-servicio-lineas', 'solapas_cubierta');
|
||||
}
|
||||
else {
|
||||
$('#div_solapas_ancho').addClass('d-none');
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
$(document).trigger('remove-servicio-lineas', 'solapas_cubierta');
|
||||
$(document).trigger('remove-servicio-lineas', 'solapas_grandes_cubierta');
|
||||
@ -345,14 +348,14 @@ class DatosLibro {
|
||||
// para que se actualice el comparador
|
||||
$('#compCarasCubierta').trigger('change');
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
if (this.checkSolapasGrandes('cubierta')) {
|
||||
$(document).trigger('add-servicio-lineas', 'solapas_grandes_cubierta');
|
||||
}
|
||||
else {
|
||||
|
||||
|
||||
$(document).trigger('remove-servicio-lineas', 'solapas_grandes_cubierta');
|
||||
}
|
||||
}
|
||||
@ -362,7 +365,7 @@ class DatosLibro {
|
||||
|
||||
if (this.solapasSobrecubierta.prop('checked')) {
|
||||
this.divSolapasSobrecubierta.removeClass('d-none');
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
$(document).trigger('add-servicio-lineas', 'solapas_sobrecubierta');
|
||||
}
|
||||
@ -371,7 +374,7 @@ class DatosLibro {
|
||||
if ($('#compSobrecubierta').length) {
|
||||
$('#compSobrecubierta').val(0).trigger('change');
|
||||
}
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
$(document).trigger('remove-servicio-lineas', 'solapas_sobrecubierta');
|
||||
$(document).trigger('remove-servicio-lineas', 'solapas_grandes_sobrecubierta');
|
||||
@ -380,13 +383,13 @@ class DatosLibro {
|
||||
|
||||
|
||||
changeAnchoSolapasSobrecubierta() {
|
||||
|
||||
|
||||
|
||||
|
||||
// para que se actualice el comparador
|
||||
if($('#compGramajeSobrecubierta').select2('data').length > 0)
|
||||
if ($('#compGramajeSobrecubierta').select2('data').length > 0)
|
||||
$('#compGramajeSobrecubierta').trigger('change');
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
if (this.checkSolapasGrandes('sobrecubierta')) {
|
||||
@ -401,11 +404,11 @@ class DatosLibro {
|
||||
changeAnchoSolapasFaja() {
|
||||
|
||||
// para que se actualice el comparador
|
||||
if($('#compGramajeFaja').select2('data').length > 0){
|
||||
if ($('#compGramajeFaja').select2('data').length > 0) {
|
||||
$('#compGramajeFaja').trigger('change');
|
||||
}
|
||||
|
||||
if(this.cargando)
|
||||
if (this.cargando)
|
||||
return;
|
||||
|
||||
if (this.checkSolapasGrandes('faja')) {
|
||||
@ -539,8 +542,12 @@ class DatosLibro {
|
||||
const formas_linea = parseInt($('#isCosido').val()) == 0 ? parseInt(rowData.formas) : parseInt(rowData.formas) / 2;
|
||||
if (formas_linea > tirada)
|
||||
merma_lineas.push(formas_linea - tirada);
|
||||
else
|
||||
merma_lineas.push(tirada % formas_linea);
|
||||
else {
|
||||
var total_pliegos = Math.ceil(1.0 * tirada / formas_linea);
|
||||
var total_formas = total_pliegos * formas_linea;
|
||||
merma_lineas.push(total_formas - formas_linea);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -621,7 +628,7 @@ class DatosLibro {
|
||||
}
|
||||
|
||||
this.faja.prop('checked', datos.fajaColor);
|
||||
if(datos.fajaColor){
|
||||
if (datos.fajaColor) {
|
||||
this.div_faja.removeClass('d-none');
|
||||
this.fajaAlto.val(datos.fajaColorAlto).trigger('change');
|
||||
this.fajaSolapasAncho.val(datos.fajaColorSolapasAncho).trigger('change');
|
||||
|
||||
@ -510,13 +510,12 @@ class ServiciosAcabado {
|
||||
|
||||
updateAcabadosExteriores(cubierta, sobrecubierta, faja) {
|
||||
|
||||
this.table.rows().every(function () {
|
||||
var data = this.data();
|
||||
for (let i = this.table.rows().count() - 1; i >= 0; i--) {
|
||||
let data = this.table.row(i).data();
|
||||
if (data && (data.cubierta == cubierta && data.sobrecubierta == sobrecubierta && data.faja == faja)) {
|
||||
|
||||
this.remove().draw();
|
||||
this.table.row(i).remove().draw();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let tarifa_id = 0;
|
||||
let uso = 'cubierta';
|
||||
@ -531,9 +530,6 @@ class ServiciosAcabado {
|
||||
tarifa_id = $('#acabado_faja_id').val();
|
||||
uso = 'faja';
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.getPresupuestoAcabado(tarifa_id, uso, null);
|
||||
}
|
||||
|
||||
@ -561,24 +557,25 @@ class ServiciosAcabado {
|
||||
new Ajax('/serviciosacabados/getvalues', datos, {},
|
||||
function (response) {
|
||||
if (response.values) {
|
||||
response.values[0].cubierta = 0;
|
||||
response.values[0].sobrecubierta = 0;
|
||||
response.values[0].faja = 0;
|
||||
if (uso == 'cubierta') {
|
||||
response.values[0].cubierta = 1;
|
||||
}
|
||||
else if (uso == 'sobrecubierta') {
|
||||
response.values[0].sobrecubierta = 1;
|
||||
}
|
||||
else if (uso == 'faja') {
|
||||
response.values[0].faja = 1;
|
||||
for(let i=0; i<response.values.length; i++){
|
||||
response.values[i].cubierta = 0;
|
||||
response.values[i].sobrecubierta = 0;
|
||||
response.values[i].faja = 0;
|
||||
if (uso == 'cubierta') {
|
||||
response.values[i].cubierta = 1;
|
||||
}
|
||||
else if (uso == 'sobrecubierta') {
|
||||
response.values[i].sobrecubierta = 1;
|
||||
}
|
||||
else if (uso == 'faja') {
|
||||
response.values[i].faja = 1;
|
||||
}
|
||||
}
|
||||
if (updateSelect != null) {
|
||||
|
||||
self.table.row(updateSelect.closest('tr')).data(response.values[0]).draw();
|
||||
}
|
||||
else {
|
||||
self.table.rows.add([response.values[0]]).draw();
|
||||
self.table.rows.add(response.values).draw();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -0,0 +1,86 @@
|
||||
import Ajax from '../../../components/ajax.js';
|
||||
|
||||
|
||||
class editServiciosAcabado {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.selectElement = $('#tarifas');
|
||||
this.acabado_cubierta = $('#acabado_cubierta');
|
||||
this.acabado_sobrecubierta = $('#acabado_sobrecubierta');
|
||||
this.tarifasSeleccionadas = JSON.parse(this.selectElement.attr('data-selected') || '[]');
|
||||
}
|
||||
|
||||
init() {
|
||||
|
||||
const self = this;
|
||||
|
||||
this.selectElement.select2({
|
||||
placeholder: "Selecciona tarifas...",
|
||||
allowClear: true,
|
||||
ajax: {
|
||||
url: "/serviciosacabado/gettarifas",
|
||||
type: "GET",
|
||||
dataType: "json",
|
||||
delay: 250,
|
||||
data: function (params) {
|
||||
return {
|
||||
id: window.location.pathname.split('/').pop(),
|
||||
search: params.term ,
|
||||
acabado_cubierta: self.acabado_cubierta.prop('checked')?1:0,
|
||||
acabado_sobrecubierta: self.acabado_sobrecubierta.prop('checked')?1:0
|
||||
};
|
||||
},
|
||||
processResults: function (data) {
|
||||
return {
|
||||
results: data.map(item => ({
|
||||
id: item.id,
|
||||
text: item.nombre
|
||||
}))
|
||||
};
|
||||
},
|
||||
cache: true
|
||||
}
|
||||
});
|
||||
|
||||
// Si hay tarifas preseleccionadas, cargarlas manualmente
|
||||
if (this.tarifasSeleccionadas.length > 0) {
|
||||
$.ajax({
|
||||
url: "/serviciosacabado/getselectedtarifas",
|
||||
type: "GET",
|
||||
dataType: "json",
|
||||
data: { ids: self.tarifasSeleccionadas },
|
||||
success: (data) => {
|
||||
let tarifasPreseleccionadas = data.map(item => ({
|
||||
id: item.id,
|
||||
text: item.nombre
|
||||
}));
|
||||
|
||||
self.selectElement.append(
|
||||
tarifasPreseleccionadas.map(item =>
|
||||
new Option(item.text, item.id, true, true)
|
||||
)
|
||||
).trigger("change");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.acabado_cubierta.on('change', function(){
|
||||
self.selectElement.val(null).trigger('change');
|
||||
});
|
||||
|
||||
this.acabado_sobrecubierta.on('change', function(){
|
||||
self.selectElement.val(null).trigger('change');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(function () {
|
||||
new editServiciosAcabado().init();
|
||||
})
|
||||
|
||||
export default editServiciosAcabado;
|
||||
@ -0,0 +1,94 @@
|
||||
import Ajax from '../../../components/ajax.js';
|
||||
import ConfirmDeleteModal from '../../../components/ConfirmDeleteModal.js';
|
||||
|
||||
class listServiciosAcabado {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.deleteModal = null;
|
||||
}
|
||||
|
||||
init() {
|
||||
const self = this;
|
||||
|
||||
this.table = $('#tableOfServiciosAcabado');
|
||||
|
||||
this.datatableColumns = [
|
||||
{ data: 'id', searchable: true, sortable: true, width: "10%" },
|
||||
{ data: 'nombre', searchable: true, sortable: true, width: "40%" },
|
||||
{ data: 'acabado_cubierta', sortable: true, width: "10%", render: this.#renderBoolCell.bind(this) },
|
||||
{ data: 'acabado_sobrecubierta', sortable: false, width: "10%", render: this.#renderBoolCell.bind(this) },
|
||||
{ data: 'mostrar_en_presupuesto_cliente', searchable: false, sortable: true, width: "1exit0%", render: this.#renderBoolCell.bind(this) },
|
||||
{ data: 'user_updated', searchable: true, sortable: true },
|
||||
{ data: 'updated_at', searchable: false, sortable: true },
|
||||
{
|
||||
data: 'action', searchable: false, sortable: false, width: "10%"
|
||||
},
|
||||
]
|
||||
|
||||
this.initDatatableTareas();
|
||||
|
||||
this.deleteModal = new ConfirmDeleteModal('tarifascliente');
|
||||
this.deleteModal.init();
|
||||
|
||||
this.table.on('click', '.btn-delete', function (e) {
|
||||
|
||||
self.deleteModal.setData($(this).attr('data-id'));
|
||||
self.deleteModal.show(() => {
|
||||
if ($.isNumeric(self.deleteModal.getData())) {
|
||||
new Ajax(
|
||||
'/serviciosacabado/delete/' + self.deleteModal.getData(),
|
||||
{},
|
||||
{},
|
||||
(response) => {
|
||||
if (response.id) {
|
||||
self.datatableTareas.ajax.reload();
|
||||
popSuccessAlert(response.msg);
|
||||
}
|
||||
}
|
||||
).get();
|
||||
}
|
||||
});
|
||||
});
|
||||
this.table.on('click', '.btn-edit', function (e) {
|
||||
window.location.href = '/serviciosacabado/edit/' + $(this).attr('data-id');
|
||||
});
|
||||
}
|
||||
|
||||
initDatatableTareas() {
|
||||
|
||||
this.datatableTareas = this.table.DataTable({
|
||||
processing: true,
|
||||
//paging: true,
|
||||
layout: {
|
||||
topStart: 'pageLength',
|
||||
topEnd: 'search',
|
||||
bottomStart: 'info',
|
||||
bottomEnd: 'paging'
|
||||
},
|
||||
serverSide: true,
|
||||
responsive: true,
|
||||
pageLength: 25,
|
||||
language: {
|
||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
columns: this.datatableColumns,
|
||||
ajax: '/serviciosacabado/datatable'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
#renderBoolCell(d, t) {
|
||||
|
||||
let cell = d == 1 ? '<i class="ti ti-check"></i>' : '';
|
||||
return cell;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(function () {
|
||||
new listServiciosAcabado().init();
|
||||
})
|
||||
|
||||
export default listServiciosAcabado;
|
||||
Reference in New Issue
Block a user