diff --git a/ci4/app/Config/PedidoXML.php b/ci4/app/Config/PedidoXML.php index 9bce6c7c..18d494ca 100644 --- a/ci4/app/Config/PedidoXML.php +++ b/ci4/app/Config/PedidoXML.php @@ -13,6 +13,7 @@ class PedidoXML extends BaseConfig public string $password; public string $base_dir; # FTP server directory public bool $xml_enabled; + public int $id_offset; public function __construct() { parent::__construct(); @@ -22,6 +23,7 @@ class PedidoXML extends BaseConfig $this->password = env("HIDRIVE_PASS","A77h3b0X4OA2rOYAf4w2"); $this->base_dir = env("HIDRIVE_PATH_ROOT","/home/admin/safekat"); # FTP server directory $this->xml_enabled = env("FTP_XML_ENABLED",false); + $this->id_offset = env("XML_OFFSET_CUSTOMER_ID",1000000); } } diff --git a/ci4/app/Config/RBAC/permissionMatrix.php b/ci4/app/Config/RBAC/permissionMatrix.php index cb1c244e..c13aa388 100644 --- a/ci4/app/Config/RBAC/permissionMatrix.php +++ b/ci4/app/Config/RBAC/permissionMatrix.php @@ -9,10 +9,10 @@ const SK_PERMISSION_MATRIX = [ "plantilla-tarifa.edit", "plantilla-tarifa.delete", "plantilla-tarifa.menu", - "perfil.create", - "perfil.edit", - "perfil.delete", - "perfil.menu", + "direcciones.create", + "direcciones.edit", + "direcciones.delete", + "direcciones.menu", "presupuesto.create", "presupuesto.edit", "presupuesto.delete", @@ -21,6 +21,14 @@ const SK_PERMISSION_MATRIX = [ "presupuesto-cliente.edit", "presupuesto-cliente.delete", "presupuesto-cliente.menu", + "pedidos-activos.view", + "pedidos-activos.menu", + "pedidos-finalizados.view", + "pedidos-finalizados.menu", + "pedidos-cancelados.view", + "pedidos-cancelados.menu", + "pedidos-todos.view", + "pedidos-todos.menu", "tarifa-preimpresion.create", "tarifa-preimpresion.edit", "tarifa-preimpresion.delete", @@ -37,14 +45,14 @@ const SK_PERMISSION_MATRIX = [ "tarifa-encuadernacion.edit", "tarifa-encuadernacion.delete", "tarifa-encuadernacion.menu", - "tarifa-envio.create", - "tarifa-envio.edit", - "tarifa-envio.delete", - "tarifa-envio.menu", "tarifa-extra.create", "tarifa-extra.edit", "tarifa-extra.delete", "tarifa-extra.menu", + "tarifa-envio.create", + "tarifa-envio.edit", + "tarifa-envio.delete", + "tarifa-envio.menu", "proveedores.create", "proveedores.edit", "proveedores.delete", @@ -61,10 +69,6 @@ const SK_PERMISSION_MATRIX = [ "paises.edit", "paises.delete", "paises.menu", - "formas-pago.create", - "formas-pago.edit", - "formas-pago.delete", - "formas-pago.menu", "maquinas.create", "maquinas.edit", "maquinas.delete", @@ -89,48 +93,48 @@ const SK_PERMISSION_MATRIX = [ "roles-permisos.edit", "roles-permisos.delete", "roles-permisos.menu", - "ubicaciones.create", - "ubicaciones.edit", - "ubicaciones.delete", - "ubicaciones.menu", - "series-facturas.create", - "series-facturas.edit", - "series-facturas.delete", - "series-facturas.menu", ], "cliente-admin" => [ - "perfil.edit", - "perfil.menu", - "direcciones.create", - "direcciones.edit", - "direcciones.delete", - "direcciones.menu", "presupuesto-cliente.create", "presupuesto-cliente.edit", "presupuesto-cliente.delete", "presupuesto-cliente.menu", + "pedidos-activos.view", + "pedidos-activos.menu", + "pedidos-finalizados.view", + "pedidos-finalizados.menu", + "pedidos-cancelados.view", + "pedidos-cancelados.menu", + "pedidos-todos.view", + "pedidos-todos.menu", ], "cliente-editor" => [ - "perfil.create", - "perfil.edit", - "perfil.delete", - "perfil.menu", - "direcciones.create", - "direcciones.edit", - "direcciones.delete", - "direcciones.menu", "presupuesto-cliente.create", "presupuesto-cliente.edit", - "presupuesto-cliente.delete", "presupuesto-cliente.menu", + "pedidos-activos.view", + "pedidos-activos.menu", + "pedidos-finalizados.view", + "pedidos-finalizados.menu", + "pedidos-cancelados.view", + "pedidos-cancelados.menu", + "pedidos-todos.view", + "pedidos-todos.menu", ], "comercial" => [ "token.token", "token.menu", ], "produccion" => [ - "token.token", - "token.menu", + "clientes.create", + "clientes.edit", + "clientes.menu", + "direcciones.create", + "direcciones.edit", + "direcciones.menu", + "presupuesto.create", + "presupuesto.edit", + "presupuesto.menu", ], "maquina" => [ "token.token", @@ -163,10 +167,10 @@ const SK_PERMISSION_MATRIX = [ "plantilla-tarifa.edit", "plantilla-tarifa.delete", "plantilla-tarifa.menu", - "perfil.create", - "perfil.edit", - "perfil.delete", - "perfil.menu", + "direcciones.create", + "direcciones.edit", + "direcciones.delete", + "direcciones.menu", "presupuesto.create", "presupuesto.edit", "presupuesto.delete", @@ -175,6 +179,14 @@ const SK_PERMISSION_MATRIX = [ "presupuesto-cliente.edit", "presupuesto-cliente.delete", "presupuesto-cliente.menu", + "pedidos-activos.view", + "pedidos-activos.menu", + "pedidos-finalizados.view", + "pedidos-finalizados.menu", + "pedidos-cancelados.view", + "pedidos-cancelados.menu", + "pedidos-todos.view", + "pedidos-todos.menu", "tarifa-preimpresion.create", "tarifa-preimpresion.edit", "tarifa-preimpresion.delete", @@ -195,10 +207,6 @@ const SK_PERMISSION_MATRIX = [ "tarifa-envio.edit", "tarifa-envio.delete", "tarifa-envio.menu", - "tarifa-extra.create", - "tarifa-extra.edit", - "tarifa-extra.delete", - "tarifa-extra.menu", "proveedores.create", "proveedores.edit", "proveedores.delete", @@ -239,13 +247,5 @@ const SK_PERMISSION_MATRIX = [ "roles-permisos.edit", "roles-permisos.delete", "roles-permisos.menu", - "ubicaciones.create", - "ubicaciones.edit", - "ubicaciones.delete", - "ubicaciones.menu", - "series-facturas.create", - "series-facturas.edit", - "series-facturas.delete", - "series-facturas.menu", ], ]; diff --git a/ci4/app/Config/RBAC/permissions.php b/ci4/app/Config/RBAC/permissions.php index 014dbd2a..4c640b77 100644 --- a/ci4/app/Config/RBAC/permissions.php +++ b/ci4/app/Config/RBAC/permissions.php @@ -45,6 +45,10 @@ const SK_PERMISSIONS = [ 'tarifa-encuadernacion.edit' => 'Can edit', 'tarifa-encuadernacion.delete' => 'Can delete', 'tarifa-encuadernacion.menu' => 'Menu shall be visualize', + 'tarifa-extra.create' => 'Can create', + 'tarifa-extra.edit' => 'Can edit', + 'tarifa-extra.delete' => 'Can delete', + 'tarifa-extra.menu' => 'Menu shall be visualize', 'tarifa-envio.create' => 'Can create', 'tarifa-envio.edit' => 'Can edit', 'tarifa-envio.delete' => 'Can delete', diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index d9dfbf9a..11ae7fd4 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -77,8 +77,6 @@ $routes->group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function ( $routes->get('delete/(:num)', 'TarifaAcabados::delete/$1', ['as' => 'tarifaAcabadoDelete']); $routes->post('datatable', 'TarifaAcabados::datatable', ['as' => 'tarifaAcabadoDT']); $routes->get('select', 'TarifaAcabados::show_select', ["as" => "showSelectTarifaAcabado"]); - $routes->get('gettarifas', 'TarifaAcabados::getSelect2'); - $routes->group('lineas', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) { $routes->post('datatable', 'TarifaAcabadosLineas::datatable', ['as' => 'tarifaAcabadoLineasDT']); $routes->post('datatable_editor', 'TarifaAcabadosLineas::datatable_editor', ['as' => 'tarifaAcabadoLineasDTE']); diff --git a/ci4/app/Config/Services.php b/ci4/app/Config/Services.php index 3f76f76e..8d209990 100755 --- a/ci4/app/Config/Services.php +++ b/ci4/app/Config/Services.php @@ -3,6 +3,8 @@ namespace Config; use App\Services\FTPService; +use App\Services\MaquinaService; +use App\Services\PapelImpresionService; use CodeIgniter\Config\BaseService; use App\Services\ProductionService; use App\Services\TarifaMaquinaService; @@ -38,4 +40,12 @@ class Services extends BaseService public static function tarifa_maquina(){ return new TarifaMaquinaService(); } + public static function papel_impresion() + { + return new PapelImpresionService(); + } + public static function maquina() + { + return new MaquinaService(); + } } diff --git a/ci4/app/Config/Validation.php b/ci4/app/Config/Validation.php index d07aade1..1c8614bf 100755 --- a/ci4/app/Config/Validation.php +++ b/ci4/app/Config/Validation.php @@ -42,7 +42,22 @@ class Validation extends BaseConfig // -------------------------------------------------------------------- // Rules // -------------------------------------------------------------------- - + /** + * Maquina duplicate validation + * + * @var array + */ + public array $maquina_duplicate = [ + "name" => "required|string" + ]; + /** + * PapelImpresion duplicate validation + * + * @var array + */ + public array $papel_impresion_duplicate = [ + "name" => "required|string" + ]; /**======================================================================== * TARIFA MAQUINA ACABADO *========================================================================**/ diff --git a/ci4/app/Controllers/Configuracion/MaquinaTarea.php b/ci4/app/Controllers/Configuracion/MaquinaTarea.php new file mode 100644 index 00000000..4115850d --- /dev/null +++ b/ci4/app/Controllers/Configuracion/MaquinaTarea.php @@ -0,0 +1,86 @@ +maquinaTareaModel = model(MaquinaTareaModel::class); + } + + + public function index() + { + $this->viewData['breadcrumb'] = [ + ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], + ['title' => lang("App.menu_maquina_tareas"), 'route' => site_url('configuracion/maquina-tareas'), 'active' => true] + ]; + return view(static::$viewPath . $this->indexRoute, $this->viewData); + } + public function viewForm(int $maquina_tarea_id) + { + $maquinaTarea = $this->maquinaTareaModel->find($maquina_tarea_id); + $this->viewData['breadcrumb'] = [ + ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], + ['title' => lang("App.menu_maquina_tareas"), 'route' => site_url('configuracion/maquina-tareas'), 'active' => false], + ['title' => $maquinaTarea->name, 'route' => site_url('configuracion/maquina-tareas/edit/' . $maquina_tarea_id), 'active' => true] + ]; + $this->viewData["model"] = $maquinaTarea; + + return view(static::$viewPath . $this->editRoute, $this->viewData); + } + public function show(int $id) + { + $data = $this->maquinaTareaModel->find($id); + return $this->response->setJSON($data); + } + public function update_servicio_cliente(int $id) + { + $data = $this->request->getPost(); + $status = $this->maquinaTareaModel->update($id, [ + "name" => $data["name"], + "description" => $data["description"] + ]); + + return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $status]); + } + public function store() + { + $bodyData = $this->request->getPost(); + $r = $this->maquinaTareaModel->insert($bodyData); + return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r,"data" => $bodyData]); + } + public function delete(int $maquina_tarea_id){ + $r = $this->maquinaTareaModel->delete($maquina_tarea_id); + return $this->response->setJSON(["message" => lang("App.user_alert_delete"), "status" => $r]); + } + public function datatable() + { + $query = $this->maquinaTareaModel->getQueryDatatable()->orderBy("created_at", "DESC"); + return DataTable::of($query) + ->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "") + ->add("action", fn($q) => $q->id) + ->toJson(true); + } +} diff --git a/ci4/app/Controllers/Configuracion/Maquinas.php b/ci4/app/Controllers/Configuracion/Maquinas.php index 406f44f8..bb7fb49b 100755 --- a/ci4/app/Controllers/Configuracion/Maquinas.php +++ b/ci4/app/Controllers/Configuracion/Maquinas.php @@ -9,6 +9,8 @@ use App\Models\Collection; use App\Entities\Configuracion\Maquina; use App\Models\Configuracion\MaquinaModel; +use App\Services\MaquinaService; +use CodeIgniter\Validation\Validation; class Maquinas extends \App\Controllers\BaseResourceController { @@ -26,18 +28,19 @@ class Maquinas extends \App\Controllers\BaseResourceController protected static $viewPath = 'themes/vuexy/form/configuracion/maquinas/'; protected $indexRoute = 'maquinaList'; - + protected MaquinaService $maquinaService; + protected Validation $validation; public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) { $this->viewData['pageTitle'] = lang('Maquinas.moduleTitle'); $this->viewData['usingSweetAlert'] = true; - + $this->maquinaService = service('maquina'); + $this->validation = service('validation'); // Se indica que este controlador trabaja con soft_delete $this->soft_delete = true; // Se indica el flag para los ficheros borrados $this->delete_flag = 1; - $this->viewData = ['usingServerSideDataTable' => true]; // JJO // Breadcrumbs (IMN) @@ -385,6 +388,19 @@ class Maquinas extends \App\Controllers\BaseResourceController ]; return $tipoOptions; } + public function duplicate(int $maquina_id) + { + $bodyData = $this->request->getPost(); + $validated = $this->validation->run($bodyData,'maquina_duplicate'); + if($validated){ + $this->maquinaService->setMaquina($maquina_id); + $duplicated = $this->maquinaService->duplicate($bodyData['name']); + return $this->response->setJSON(["data" => $duplicated]); + }else{ + return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400); + } + + } } diff --git a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php index 59d87354..c6e5239d 100755 --- a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php @@ -225,7 +225,9 @@ class Maquinaspapelesimpresion extends \App\Controllers\BaseResourceController { ]; // Se checkea que no haya otro papel con ese gramaje seleccionado y que la accion sea activar ese papel - if($this->model->getPapelActivo($maquina_id, $gramaje)->countAllResults() != 0 && intval($active)==1){ + // Esta funcionalidad esta mal: habría que comprobar también que tienen el mismo papel genérico. Se opta por + // quitar la condición el 22012025 + /*if($this->model->getPapelActivo($maquina_id, $gramaje)->countAllResults() != 0 && intval($active)==1){ $response['error']= lang('MaquinasPapelImpresion.gramaje_duplicado');; $ret_vals = [ 'DT_RowId' => 'row_'. $papel_id, @@ -235,9 +237,9 @@ class Maquinaspapelesimpresion extends \App\Controllers\BaseResourceController { ]; $response['data'] = $ret_vals; } - else{ + else{*/ $this->model->updateRows([$data]); - } + //} $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); diff --git a/ci4/app/Controllers/Configuracion/Papelesgenericos.php b/ci4/app/Controllers/Configuracion/Papelesgenericos.php index 1792dd93..7196d9ba 100755 --- a/ci4/app/Controllers/Configuracion/Papelesgenericos.php +++ b/ci4/app/Controllers/Configuracion/Papelesgenericos.php @@ -314,8 +314,15 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController $cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0; $tapa_dura = goSanitize($this->request->getGet('tapa_dura'))[0] ?? null; - $menu = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, false, $POD); - $menu2 = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, true, $POD); + $ancho = floatval($this->request->getGet('ancho') ?? 0); + $alto = floatval($this->request->getGet('alto') ?? 0); + $solapas = floatval($this->request->getGet('solapas') ?? 0); + $lomo = floatval($this->request->getGet('lomo') ?? 0); + + $anchoLibro = 2* $ancho + 2 * $solapas + $lomo; + + $menu = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, false, $POD, $anchoLibro, $alto, $tirada); + $menu2 = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -349,8 +356,17 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController } $tipo = goSanitize($this->request->getGet('tipo'))[0]; $cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0; + + $ancho = floatval($this->request->getGet('ancho') ?? 0); + $alto = floatval($this->request->getGet('alto') ?? 0); + $solapas = floatval($this->request->getGet('solapas') ?? 0); + $lomo = floatval($this->request->getGet('lomo') ?? 0); - $items = $this->model->getPapelCliente($tipo, $cubierta, null, true, $POD); + $tapa_dura = $this->request->getGet('tapa_dura') ?? 0; + + $anchoLibro = 2* $ancho + 2 * $solapas + $lomo; + + $items = $this->model->getPapelCliente($tipo, $cubierta, null, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada); $items = array_map(function ($item) { return [ 'id' => $item->id, diff --git a/ci4/app/Controllers/Configuracion/Papelesimpresion.php b/ci4/app/Controllers/Configuracion/Papelesimpresion.php index fb3a0363..e5beef97 100755 --- a/ci4/app/Controllers/Configuracion/Papelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Papelesimpresion.php @@ -22,6 +22,7 @@ use use App\Models\Collection; +use CodeIgniter\Validation\Validation; @@ -35,7 +36,6 @@ use App\Models\Configuracion\PapelImpresionTipologiaModel; use App\Models\Configuracion\MaquinasPapelesImpresionModel; use App\Models\Configuracion\MaquinaModel; - class Papelesimpresion extends \App\Controllers\BaseResourceController { @@ -52,6 +52,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController protected static $viewPath = 'themes/vuexy/form/configuracion/papel/'; protected $indexRoute = 'papelImpresionList'; + protected Validation $validation; public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) { @@ -66,6 +67,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController $this->delete_flag = 1; $this->tpModel = new PapelImpresionTipologiaModel(); + $this->validation = service("validation"); // Breadcrumbs $this->viewData['breadcrumb'] = [ @@ -443,4 +445,27 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController $ma_pa_model->updateRows($active_values); } } + /** + * Duplica el papel impresion y sus relaciones + * + * @param int $papel_impresion_id + * @return Response + */ + public function duplicate( int $papel_impresion_id) + { + $bodyData = $this->request->getPost(); + $validated = $this->validation->run($bodyData, "papel_impresion_duplicate"); + if($validated){ + $papelImpresionEntity = $this->model->find($papel_impresion_id); + $papelImpresionService = service('papel_impresion'); + $duplicated = $papelImpresionService + ->setPapelImpresionEntity($papelImpresionEntity) + ->duplicate($bodyData["name"]); + return $this->response->setJSON(["data" => $duplicated]); + + }else{ + return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400); + } + + } } diff --git a/ci4/app/Controllers/Configuracion/ServicioCliente.php b/ci4/app/Controllers/Configuracion/ServicioCliente.php deleted file mode 100644 index bc282142..00000000 --- a/ci4/app/Controllers/Configuracion/ServicioCliente.php +++ /dev/null @@ -1,89 +0,0 @@ -servicioClienteModel = model(ServicioClienteModel::class); - } - - - public function index() - { - $this->viewData['breadcrumb'] = [ - ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], - ['title' => lang("App.menu_servicios_cliente"), 'route' => site_url('configuracion/servicios'), 'active' => true] - ]; - return view(static::$viewPath . $this->indexRoute, $this->viewData); - } - public function viewForm(int $servicio_cliente_id) - { - $servicioCliente = $this->servicioClienteModel->find($servicio_cliente_id); - $this->viewData['breadcrumb'] = [ - ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], - ['title' => lang("App.menu_servicios_cliente"), 'route' => site_url('configuracion/servicios'), 'active' => false], - ['title' => $servicioCliente->nombre, 'route' => site_url('configuracion/servicios/edit/' . $servicio_cliente_id), 'active' => true] - ]; - $this->viewData["model"] = $servicioCliente; - - return view(static::$viewPath . 'ServicioClienteEdit', $this->viewData); - } - public function show(int $id) - { - $data = $this->servicioClienteModel->find($id)->withAllTarifas(); - return $this->response->setJSON($data); - } - public function update_servicio_cliente(int $id) - { - $data = $this->request->getPost(); - $status = $this->servicioClienteModel->update($id, [ - "nombre" => $data["nombre"], - "code" => $data["code"] - ]); - if (isset($data["tarifa_manipulado_id"])) { - $this->servicioClienteModel->upsertTarifaManipulado($id, $data["tarifa_manipulado_id"]); - }else if(isset($data["tarifa_acabado_id"])) { - - $this->servicioClienteModel->upsertTarifaAcabado($id, $data["tarifa_acabado_id"]); - }else{ - $this->servicioClienteModel->detachTarifas($id); - } - - return $this->response->setJSON(["message" => lang("App.global_success"), "status" => $status]); - } - public function store() - { - // $this->servicioClienteModel->update($id,[$this->request->getPost()]); - return $this->response->setJSON([]); - } - public function datatable() - { - $query = $this->servicioClienteModel->getQueryDatatable()->orderBy("created_at", "DESC"); - return DataTable::of($query) - ->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "") - ->add("action", fn($q) => $q->id) - ->toJson(true); - } -} diff --git a/ci4/app/Controllers/Configuracion/Users.php b/ci4/app/Controllers/Configuracion/Users.php index 8fcc153e..c537dd57 100755 --- a/ci4/app/Controllers/Configuracion/Users.php +++ b/ci4/app/Controllers/Configuracion/Users.php @@ -89,6 +89,8 @@ class Users extends \App\Controllers\GoBaseController // Marcar el username como NULL $sanitizedData = $this->sanitized($postData, true); + $email = $sanitizedData['email']; + unset($sanitizedData['email']); $noException = true; @@ -100,7 +102,7 @@ class Users extends \App\Controllers\GoBaseController try { // The Email is unique - if ($this->user_model->isEmailUnique($sanitizedData['email'])) { + if ($this->user_model->isEmailUnique($email)) { // Crear el usuario si pasa la validación $user = new \CodeIgniter\Shield\Entities\User([ @@ -109,8 +111,6 @@ class Users extends \App\Controllers\GoBaseController 'last_name' => $sanitizedData['last_name'], 'cliente_id' => $sanitizedData['cliente_id'], 'comments' => $sanitizedData['comments'], - 'email' => $sanitizedData['email'], - 'password' => $sanitizedData['password'], 'status' => $sanitizedData['status'] ?? 0, 'active' => $sanitizedData['active'] ?? 0, ]); diff --git a/ci4/app/Controllers/Js_loader.php b/ci4/app/Controllers/Js_loader.php index e402c125..c2c056ce 100755 --- a/ci4/app/Controllers/Js_loader.php +++ b/ci4/app/Controllers/Js_loader.php @@ -33,13 +33,6 @@ class Js_loader extends BaseController } - - function datosLibro_js() - { - $this->response->setHeader('Content-Type', 'text/javascript'); - return view('themes/vuexy/form/presupuestos/admin/_datosLibroItems.js'); - } - function previsualizador_js() { $this->response->setHeader('Content-Type', 'text/javascript'); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php b/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php index 18dc5743..39f80e0f 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php @@ -69,30 +69,61 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController return; endif; - $postData = $this->request->getJSON(); - $tarifas = array_column($postData->datos, 'tarifa_id'); - $tirada = $postData->tirada ?? 0; - $POD = $postData->POD ?? 0; - $result = []; - - if (count($tarifas) > 0) { - foreach ($tarifas as $tarifa) { - $values = $this->model->getPrecioTarifa($tarifa, $tirada, $POD); - array_push($result, $values); - } - } + $postData = $this->request->getPost(); + $datos_tarifas = $postData['datos'] ?? []; + $tirada = $postData['tirada'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + + $result = $this->getServiciosAcabados($datos_tarifas, $tirada, $POD); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ - 'lines' => $result, + 'lineas' => $result, $csrfTokenName => $newTokenHash ]; return $this->respond($data); } - public function datatable() + public function getServiciosAcabados($datos_tarifas, $tirada, $POD){ + + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $result = []; + if (count($datos_tarifas) > 0) { + foreach ($datos_tarifas as $tarifa) { + $proveedor = $tarifa['proveedor_id'] == '' ? -1 : $tarifa['proveedor_id']; + + $values = $model->getPrecioTarifa($tarifa['tarifa_id'], $tirada, $proveedor, $POD); + $values[0]->cubierta = $tarifa['cubierta'] ?? 0; + $values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0; + array_push($result, $values[0]); + } + } + return $result; + } + + public function cargar() + { + if($this->request->isAJAX()) { + $presupuesto_id = $this->request->getGet('presupuesto_id') ?? null; + + $rows = $this->model->getResource($presupuesto_id)->get()->getResultObject(); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'rows' => $rows, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function getRowValues() { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); @@ -100,7 +131,7 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController $tarifa_acabado_id = $reqData['tarifa_acabado_id'] ?? 0; $tirada = $reqData['tirada'] ?? 0; $proveedor_id = $reqData['proveedor_id'] ?? -1; - $POD = $reqData['POD'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -195,4 +226,6 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController return $this->failUnauthorized('Invalid request', 403); } } + + } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index a302751f..91b2b751 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -6,6 +6,8 @@ use App\Entities\Presupuestos\PresupuestoEntity; use App\Models\Collection; use App\Models\Configuracion\MaquinaModel; use App\Models\Configuracion\PapelGenericoModel; +use App\Models\Configuracion\PapelFormatoModel; +use App\Models\Clientes\ClienteModel; use App\Models\Configuracion\PapelImpresionModel; use App\Models\Configuracion\TipoPresupuestoModel; use App\Models\Presupuestos\PresupuestoAcabadosModel; @@ -17,6 +19,7 @@ use App\Models\Presupuestos\PresupuestoModel; use App\Models\Presupuestos\PresupuestoPreimpresionesModel; use App\Models\Presupuestos\PresupuestoServiciosExtraModel; use App\Services\PresupuestoService; +use App\Services\PresupuestoClienteService; use Exception; class Presupuestoadmin extends \App\Controllers\BaseResourceController @@ -78,12 +81,9 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController public function add($tipo_impresion_id = null) { + if ($this->request->getPost()): - - - if ($this->request->getPost()) : - - $nullIfEmpty = true; // !(phpversion() >= '8.1'); + $nullIfEmpty = false; // !(phpversion() >= '8.1'); $postData = $this->request->getPost(); @@ -101,36 +101,36 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } $noException = true; - if ($successfulResult = $this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + if ($successfulResult = $this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)): // if ($successfulResult = $this->validate($this->formValidationRules) ) : - if ($this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)) : + if ($this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)): try { $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); } catch (\Exception $e) { $noException = false; $this->dealWithException($e); } - else : + else: $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Presupuestos.presupuesto'))]); $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) : + if ($noException && $successfulResult): $id = $this->model->db->insertID(); $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; - if ($thenRedirect) : - if (!empty($this->indexRoute)) : + if ($thenRedirect): + if (!empty($this->indexRoute)): //return redirect()->to(route_to( $this->indexRoute ) )->with('sweet-success', $message); return redirect()->to(site_url('presupuestoadmin/edit/' . $id))->with('sweet-success', $message); - else : + else: return $this->redirect2listView('sweet-success', $message); endif; - else : + else: $this->session->setFlashData('sweet-success', $message); endif; @@ -146,10 +146,10 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null); $this->viewData['incReiList'] = array('incidencia' => lang('Presupuestos.incidencia'), 'reimpresion' => lang('Presupuestos.reimpresion'), 'sin_cargo' => lang('Presupuestos.sinCargo')); - $this->viewData['paisList'] = $this->getPaisListItems(); - $this->viewData['papelFormatoList'] = $this->getPapelFormatoListItems($presupuestoEntity->papel_formato_id ?? null); $this->viewData['POD'] = $this->getPOD(); + $this->viewData['pais_default_id'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_pais_defecto')->value; + $this->viewData['pais_default'] = model('App\Models\Configuracion\PaisModel')->find($this->viewData['pais_default_id'])->nombre; $this->viewData['formAction'] = route_to('createPresupuestoAdmin', $tipo_impresion_id); @@ -164,20 +164,20 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController public function edit($requestedId = null) { - if ($requestedId == null) : + if ($requestedId == null): return $this->redirect2listView(); endif; $id = filter_var($requestedId, FILTER_SANITIZE_URL); $presupuestoEntity = $this->model->find($id); - if ($presupuestoEntity == false) : + if ($presupuestoEntity == false): $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Presupuestos.presupuesto')), $id]); return $this->redirect2listView('sweet-error', $message); endif; - - if ($this->request->getPost()) : + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -249,16 +249,16 @@ 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()) : + if ($this->canValidate()): try { $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); } catch (\Exception $e) { $noException = false; $this->dealWithException($e); } - else : + else: $this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Presupuestos.presupuesto'))]); $this->session->setFlashdata('formErrors', $this->model->errors()); @@ -270,16 +270,16 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController endif; } - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $presupuestoEntity->id ?? $id; $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('Presupuestos.presupuesto'))]) . '.'; // $message .= anchor("admin/presupuestos/{$id}/edit", lang('Basic.global.continueEditing') . '?'); //$message = ucfirst(str_replace("'", "\'", $message)); - if ($thenRedirect) : - if (!empty($this->indexRoute)) : + if ($thenRedirect): + if (!empty($this->indexRoute)): return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); - else : + else: if ($this->request->isAJAX()) { $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -293,14 +293,14 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } endif; - else : + else: if ($this->request->isAJAX()) { - if($presupuestoEntity->estado_id==1 && $presupuestoEntity->confirmar==1){ + if ($presupuestoEntity->estado_id == 1 && $presupuestoEntity->confirmar == 1) { $this->model->confirmarPresupuesto($id); PresupuestoService::crearPedido($id); } - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ @@ -327,60 +327,20 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController else $this->viewData['comp_data'] = ""; - $this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null); - $this->viewData['paisList'] = $this->getPaisListItems(); - $this->viewData['ccaaList'] = $this->getCcaaListItems(); - - $this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null); - $this->viewData['incReiList'] = array('incidencia' => lang('Presupuestos.incidencia'), 'reimpresion' => lang('Presupuestos.reimpresion'), 'sin_cargo' => lang('Presupuestos.sinCargo')); - $this->viewData['papelFormatoList'] = $this->getPapelFormatoListItems($presupuestoEntity->papel_formato_id ?? null); - $this->viewData['papelGenericoNegroList'] = $this->getPapelGenericoNegro(); - $this->viewData['papelGenericoNegroHQList'] = $this->getPapelGenericoNegroHQ(); - $this->viewData['papelGenericoColorList'] = $this->getPapelGenericoColor(); - $this->viewData['papelGenericoColorHQList'] = $this->getPapelGenericoColorHQ(); - $this->viewData['papelGenericoCubiertaList'] = $this->getPapelGenericoCubierta(); - $this->viewData['papelGenericoGuardasList'] = $this->getPapelGenericoGuardas(); - $this->viewData['papelGenericoSobrecubiertaList'] = $this->getPapelGenericoSobreCubierta(); - $this->viewData['papelGenericoRotativaNegroList'] = $this->getPapelGenericoRotativaNegro(); - $this->viewData['papelGenericoRotativaColorList'] = $this->getPapelGenericoRotativaColor(); - - // Acabados exteriores - $this->viewData['acabadosCubierta'] = $this->getAcabadosCubierta(); - $this->viewData['acabadosSobrecubierta'] = $this->getAcabadosSobrecubierta(); - - // Lineas Presupuesto - [$cambios_lineas, $this->viewData['lineasPresupuesto']] = $this->getLineasPresupuesto($presupuestoEntity); - $this->viewData['presupuestoEntity']->cambios_lineas=$cambios_lineas; - - // Servicios - $this->viewData['serviciosPreimpresion'] = $this->getServiciosPreimpresion(); - $this->viewData['serviciosEncuadernacion'] = $this->getServiciosEncuadernacion(); - $this->viewData['serviciosManipulado'] = $this->getServiciosManipulado(); - $this->viewData['serviciosAcabado'] = $this->getServiciosAcabado(); - $this->viewData['serviciosExtra'] = $this->getServiciosExtra(); - - [$cambios_en_servicios, $servicios] = $this->getLineasServicios($presupuestoEntity); - $this->viewData['presupuestoEntity']->cambios_servicios=$cambios_en_servicios; - - $this->viewData['serviciosEncuadernacionList'] = $servicios->serviciosEncuadernacion; - $this->viewData['serviciosAcabadosList'] = $servicios->serviciosAcabado; - $this->viewData['serviciosManipuladoList'] = $servicios->serviciosManipulado; - $this->viewData['serviciosPreimpresionList'] = $servicios->serviciosPreimpresion; - $this->viewData['serviciosExtraList'] = $servicios->serviciosExtra; - - // Direciones presupuesto - [$cambios_en_direcciones, $this->viewData['direccionesList']] = $this->getLineasDirecciones($presupuestoEntity); - $this->viewData['presupuestoEntity']->cambios_direcciones=$cambios_en_direcciones; - $this->viewData['POD'] = $this->getPOD(); $this->viewData['serviciosAutomaticos'] = [ - 'retractilado' => 3, - 'retractilado5' => 5, - 'ferro' => 24, - 'prototipo' => 9, - 'fajaColor' => 16, - 'plegadoGuardas' => 62, + 'solapas_cubierta' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_cubierta')->value, + 'solapas_sobrecubierta' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_sobrecubierta')->value, + 'solapas_faja' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_faja')->value, + 'retractilado' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_retractilado')->value, + 'retractilado5' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_retractilado5')->value, + 'ferro' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_ferro')->value, + 'prototipo' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_prototipo')->value, + 'plegado_guardas' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_guardas')->value, + 'solapas_grandes_cubierta' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_cubierta')->value, + 'solapas_grandes_sobrecubierta' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_sobrecubierta')->value, + 'solapas_grandes_faja' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_faja')->value, ]; $this->viewData['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id; // Cosido tapa blanda JJO @@ -391,7 +351,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController // Si se ha llamado a esta funcion porque se ha duplicado el presupuesto // se actualiza la bbdd para que sólo ejecute algunas funciones una vez - if($presupuestoEntity->is_duplicado){ + if ($presupuestoEntity->is_duplicado) { $this->model->removeIsDuplicado($presupuestoEntity->id); } @@ -411,22 +371,23 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController public function delete($id = null) { if (!empty(static::$pluralObjectNameCc) && !empty(static::$singularObjectNameCc)) { - $objName = mb_strtolower(lang(ucfirst(static::$pluralObjectNameCc).'.'.static::$singularObjectNameCc)); + $objName = mb_strtolower(lang(ucfirst(static::$pluralObjectNameCc) . '.' . static::$singularObjectNameCc)); } else { $objName = lang('Basic.global.record'); } - - if (!$this->soft_delete){ + + if (!$this->soft_delete) { if (!$this->model->delete($id)) { return $this->failNotFound(lang('Basic.global.deleteError', [$objName])); } - } - else{ + } else { $datetime = (new \CodeIgniter\I18n\Time("now")); - $rawResult = $this->model->where('id',$id) - ->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'), - 'is_deleted' => $this->delete_flag]) + $rawResult = $this->model->where('id', $id) + ->set([ + 'deleted_at' => $datetime->format('Y-m-d H:i:s'), + 'is_deleted' => $this->delete_flag + ]) ->update(); if (!$rawResult) { return $this->failNotFound(lang('Basic.global.deleteError', [$objName])); @@ -468,6 +429,331 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return $response; } + public function cargar($id) + { + if ($this->request->isAJAX()) { + + $modelPapelFormato = new PapelFormatoModel(); + $modelCliente = new ClienteModel(); + $modelPapelGenerico = new PapelGenericoModel(); + + + $presupuesto = $this->model->find($id); + $data = []; + if ($presupuesto) { + + $data['lc'] = $presupuesto->lomo_cubierta; + $data['lsc'] = $presupuesto->lomo_sobrecubierta; + $data['tipo_impresion'] = $presupuesto->tipo_impresion_id; + $data['cosido'] = $presupuesto->cosido; + $data['POD'] = $this->getPOD(); + + $data['datosGenerales']['id'] = $presupuesto->id; + $data['datosGenerales']['state'] = intval($presupuesto->estado_id); + $data['datosGenerales']['updated_at'] = date('d/m/Y', strtotime($presupuesto->updated_at)); + $data['datosGenerales']['created_at'] = date('d/m/Y', strtotime($presupuesto->created_at)); + $data['datosGenerales']['inc_rei'] = $presupuesto->inc_rei == null ? 0 : $presupuesto->inc_rei; + $data['datosGenerales']['titulo'] = $presupuesto->titulo; + $data['datosGenerales']['autor'] = $presupuesto->autor; + $data['datosGenerales']['coleccion'] = $presupuesto->coleccion; + $data['datosGenerales']['numero_edicion'] = $presupuesto->numero_edicion; + $data['datosGenerales']['isbn'] = $presupuesto->isbn; + $data['datosGenerales']['pais'] = $presupuesto->pais_id; + $data['datosGenerales']['pais_nombre'] = model('App\Models\Configuracion\PaisModel')->find($presupuesto->pais_id)->nombre; + $data['datosGenerales']['cliente']['id'] = $presupuesto->cliente_id; + $data['datosGenerales']['cliente']['nombre'] = $modelCliente->getNombre($presupuesto->cliente_id); + $data['datosGenerales']['referenciaCliente'] = $presupuesto->referencia_cliente; + + + $data['datosLibro']['papelFormatoId'] = $presupuesto->papel_formato_id; + $data['datosLibro']['papelFormatoNombre'] = $modelPapelFormato->getNombre($presupuesto->papel_formato_id); + $data['datosLibro']['papelFormatoPersonalizado'] = $presupuesto->papel_formato_personalizado; + $data['datosLibro']['papelFormatoAncho'] = $presupuesto->papel_formato_ancho; + $data['datosLibro']['papelFormatoAlto'] = $presupuesto->papel_formato_alto; + $data['datosLibro']['paginas'] = $presupuesto->paginas; + $data['datosLibro']['tirada'] = $presupuesto->tirada; + $data['datosLibro']['merma'] = $presupuesto->merma; + $data['datosLibro']['mermaCubierta'] = $presupuesto->merma_cubierta; + $data['datosLibro']['solapasCubierta'] = $presupuesto->solapas; + $data['datosLibro']['solapasSobrecubierta'] = $presupuesto->solapas_sobrecubierta; + $data['datosLibro']['solapasCubiertaAncho'] = $presupuesto->solapas_ancho; + $data['datosLibro']['solapasSobrecubiertaAncho'] = $presupuesto->solapas_ancho_sobrecubierta; + $data['datosLibro']['fajaColor'] = $presupuesto->faja_color; + $data['datosLibro']['fajaColorSolapasAncho'] = $presupuesto->solapas_ancho_faja_color; + $data['datosLibro']['fajaColorAlto'] = $presupuesto->alto_faja_color; + + $modelAcabado = model("App\Models\Tarifas\Acabados\TarifaAcabadoModel"); + $data['datosLibro']['acabadoCubierta']['id'] = $presupuesto->acabado_cubierta_id; + if ($presupuesto->acabado_cubierta_id == 0) { + $data['datosLibro']['acabadoCubierta']['text'] = "Ninguno"; + } else { + $data['datosLibro']['acabadoCubierta']['text'] = $modelAcabado->find($presupuesto->acabado_cubierta_id)->nombre; + } + $data['datosLibro']['acabadoSobrecubierta']['id'] = $presupuesto->acabado_sobrecubierta_id; + if ($presupuesto->acabado_sobrecubierta_id == 0) { + $data['datosLibro']['acabadoSobrecubierta']['text'] = "Ninguno"; + } else { + $data['datosLibro']['acabadoSobrecubierta']['text'] = $modelAcabado->find($presupuesto->acabado_sobrecubierta_id)->nombre; + } + $data['datosLibro']['prototipo'] = $presupuesto->prototipo; + $data['datosLibro']['ferro'] = $presupuesto->ferro; + $data['datosLibro']['ferroDigital'] = $presupuesto->ferro_digital; + $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) { + foreach ($data['comparador']['json_data'] as &$item) { + if(intval($item['papel_id'])>0) + $item['papel_nombre'] = $modelPapelGenerico->getNombre($item['papel_id'])['nombre']; + } + } + $data['comparador']['posPagColor'] = $presupuesto->comp_pos_paginas_color; + $data['comparador']['lomoRedondo'] = $presupuesto->lomo_redondo; + $data['comparador']['cabezada'] = $presupuesto->cabezada; + + $data['lineasPresupuesto'] = $this->loadLineasPresupuesto($presupuesto); + + $data['servicios'] = $this->getLineasServicios($presupuesto)[1]; + + if (intval($presupuesto->envios_recoge_cliente) == 1) { + $data['direcciones']['entrega_taller'] = 1; + } else { + $data['direcciones']['entrega_taller'] = 0; + $data['direcciones'] = $this->obtenerDireccionesEnvio($id, $presupuesto->cliente_id); + } + + $data['comentarios_cliente'] = $presupuesto->comentarios_cliente; + $data['comentarios_safekat'] = $presupuesto->comentarios_safekat; + $data['comentarios_presupuesto'] = $presupuesto->comentarios_presupuesto; + $data['comentarios_produccion'] = $presupuesto->comentarios_produccion; + + $data['tiradasAlternativas'] = json_decode($presupuesto->tirada_alternativa_json_data); + + $data['resumen']['total_coste_papel'] = $presupuesto->total_coste_papel; + $data['resumen']['total_margenPercent_papel'] = $presupuesto->total_margenPercent_papel; + $data['resumen']['total_margen_papel'] = $presupuesto->total_margen_papel; + $data['resumen']['total_coste_impresion'] = $presupuesto->total_coste_impresion; + $data['resumen']['total_margenPercent_impresion'] = $presupuesto->total_margenPercent_impresion; + $data['resumen']['total_margen_impresion'] = $presupuesto->total_margen_impresion; + $data['resumen']['total_coste_servicios'] = $presupuesto->total_coste_servicios; + $data['resumen']['total_margenPercent_servicios'] = $presupuesto->total_margenPercent_servicios; + $data['resumen']['total_margen_servicios'] = $presupuesto->total_margen_servicios; + $data['resumen']['total_coste_envios'] = $presupuesto->total_coste_envios; + $data['resumen']['total_margen_envios'] = $presupuesto->total_margen_envios; + $data['resumen']['total_costes'] = $presupuesto->total_costes; + $data['resumen']['porcentajeMargen'] = + round(($presupuesto->total_costes + $presupuesto->total_margenes) > 0 ? + 100 * $presupuesto->total_margenes / ($presupuesto->total_costes + $presupuesto->total_margenes) : + 0, 0); + $data['resumen']['total_margenes'] = $presupuesto->total_margenes; + $data['resumen']['total_antes_descuento'] = $presupuesto->total_antes_descuento; + $data['resumen']['total_descuentoPercent'] = $presupuesto->total_descuentoPercent; + $data['resumen']['total_descuento'] = $presupuesto->total_descuento; + $data['resumen']['total_presupuesto'] = $presupuesto->total_presupuesto; + $data['resumen']['total_precio_unidad'] = $presupuesto->total_precio_unidad; + $data['resumen']['total_factor'] = is_numeric($presupuesto->total_factor) ? $presupuesto->total_factor : 0; + $data['resumen']['total_factor_ponderado'] = is_numeric($presupuesto->total_factor_ponderado) ? $presupuesto->total_factor_ponderado : 0; + if ($presupuesto->estado_id == 2) { + $data['resumen']['total_aceptado'] = $presupuesto->total_aceptado; + } + return $this->respond([ + 'status' => 1, + 'data' => $data + ]); + } + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + public function obtenerComparadorInterior() + { + + if ($this->request->isAJAX()) { + + $cliente_id = $this->request->getPost('cliente_id'); + $datosPedido = $this->request->getPost('datosPedido'); + $papel_generico = $this->request->getPost('papel_generico'); + $gramaje = $this->request->getPost('gramaje'); + $paginas_color = $this->request->getPost('paginas_color'); + $isColor = $this->request->getPost('isColor') ? 1 : 0; + $isHq = $this->request->getPost('isHq') ? 1 : 0; + $tipo_impresion_id = $this->request->getPost('tipo_impresion_id'); + $uso = $this->request->getPost('uso'); + + $tipo_maquina = $this->request->getPost('tipo_maquina'); + + $data = array( + 'cliente_id' => $cliente_id, + 'datosPedido' => (object) $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'papelInteriorDiferente' => true, + 'paginas_color' => $paginas_color, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'tipo_impresion_id' => $tipo_impresion_id, + 'uso' => $uso + ); + + if ($tipo_maquina == 'rotativa') { + $data['papelInteriorDiferente'] = false; + $lineas = PresupuestoClienteService::obtenerPresupuestoClienteInteriorRotativa($data, true); + } else + $lineas = PresupuestoClienteService::obtenerPresupuestoClienteInterior($data, true); + return $this->respond( + [ + 'status' => 1, + 'data' => $lineas + ] + ); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + public function obtenerComparadorExteriores() + { + + $lineasCubierta = null; + $lineasSobrecubierta = null; + + if ($this->request->isAJAX()) { + + $cubierta = $this->request->getPost('cubierta') ?? false; + $sobrecubierta = $this->request->getPost('sobrecubierta') ?? false; + + // cubierta y sobrecubierta siempre colorhq + $isColor = true; + $isHq = true; + + if ($cubierta) { + + $cliente_id = $cubierta['cliente_id']; + $datosPedido = $cubierta['datosPedido']; + $papel_generico = $cubierta['papel_generico']; + $gramaje = $cubierta['gramaje']; + $paginas_color = $cubierta['datosPedido']['paginas'] ?? 0; + $tipo_impresion_id = $cubierta['tipo_impresion_id']; + $uso = $cubierta['uso']; + $lomoRedondo = $cubierta['lomoRedondo'] ?? false; + + $data = array( + 'cliente_id' => $cliente_id, + 'datosPedido' => (object) $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'paginas_color' => $paginas_color, + 'isColor' => 1, // cubierta y sobre cubierta colorhq + 'isHq' => 1, // cubierta y sobre cubierta colorhq + 'tipo_impresion_id' => $tipo_impresion_id, + 'uso' => $uso, + 'lomoRedondo' => $lomoRedondo + ); + $lineasCubierta = PresupuestoClienteService::obtenerCubierta($data, true); + } + + if ($sobrecubierta) { + + $cliente_id = $sobrecubierta['cliente_id']; + $datosPedido = $sobrecubierta['datosPedido']; + $papel_generico = $sobrecubierta['papel_generico']; + $gramaje = $sobrecubierta['gramaje']; + $paginas_color = $sobrecubierta['datosPedido']['paginas'] ?? 0; + $tipo_impresion_id = $sobrecubierta['tipo_impresion_id']; + $faja = intval($sobrecubierta['faja'] ?? 0); + $uso = $faja==1? 'faja' : $sobrecubierta['uso']; + + + $data = array( + 'cliente_id' => $cliente_id, + 'datosPedido' => (object) $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'paginas_color' => $paginas_color, + 'isColor' => 1, // cubierta y sobre cubierta colorhq + 'isHq' => 1, // cubierta y sobre cubierta colorhq + 'tipo_impresion_id' => $tipo_impresion_id, + 'uso' => $uso + ); + $lineasSobrecubierta = PresupuestoClienteService::obtenerSobrecubierta($data, true); + } + + return $this->respond( + [ + 'status' => 1, + 'data' => (object) array( + 'cubierta' => $lineasCubierta, + 'sobrecubierta' => $lineasSobrecubierta + ) + ] + ); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + public function obtenerComparadorGuardas() + { + + if ($this->request->isAJAX()) { + + $cliente_id = $this->request->getPost('cliente_id'); + $datosPedido = $this->request->getPost('datosPedido'); + $papel_generico = $this->request->getPost('papel_generico'); + $gramaje = $this->request->getPost('gramaje'); + $paginas_color = $this->request->getPost('paginas_color'); + $isColor = $this->request->getPost('isColor'); + $isHq = $this->request->getPost('isHq'); + $tipo_impresion_id = $this->request->getPost('tipo_impresion_id'); + $uso = $this->request->getPost('uso'); + + // cubierta y sobrecubierta siempre colorhq + $isColor = true; + $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 + if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { + $datosPedido['isCosido'] = true; + } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { + $datosPedido['isCosido'] = false; + } + + $datosPedido['paginas_impresion'] = $datosPedido['paginas']; + + $data = array( + 'cliente_id' => $cliente_id, + 'datosPedido' => (object) $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'papelInteriorDiferente' => true, + 'paginas_color' => $paginas_color, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'tipo_impresion_id' => $tipo_impresion_id, + 'uso' => $uso + ); + + $lineas = PresupuestoClienteService::obtenerGuardas($data, true); + return $this->respond( + [ + 'status' => 1, + 'data' => $lineas + ] + ); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + public function datatable() { @@ -506,178 +792,45 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $resourceData = $this->model->getResource($searchValues, $tipo_impresion_id)->orderBy($order1, $dir1)->orderBy($order2, $dir2) ->orderBy($order3, $dir3)->limit($length, $start)->get()->getResultObject(); - foreach ($resourceData as $item) : - if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : + foreach ($resourceData as $item): + if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100): $item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100); endif; - if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100) : + if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100): $item->causa_cancelacion = character_limiter($item->causa_cancelacion, 100); endif; - if (isset($item->comentarios_cliente) && strlen($item->comentarios_cliente) > 100) : + if (isset($item->comentarios_cliente) && strlen($item->comentarios_cliente) > 100): $item->comentarios_cliente = character_limiter($item->comentarios_cliente, 100); endif; - if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100) : + if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100): $item->comentarios_safekat = character_limiter($item->comentarios_safekat, 100); endif; - if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100) : + if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100): $item->comentarios_tarifa = character_limiter($item->comentarios_tarifa, 100); endif; - if (isset($item->comentarios_produccion) && strlen($item->comentarios_produccion) > 100) : + if (isset($item->comentarios_produccion) && strlen($item->comentarios_produccion) > 100): $item->comentarios_produccion = character_limiter($item->comentarios_produccion, 100); endif; - if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100) : + if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100): $item->tirada_alternativa_json_data = character_limiter($item->tirada_alternativa_json_data, 100); endif; - if (isset($item->titulo) && strlen($item->titulo) > 100) : + if (isset($item->titulo) && strlen($item->titulo) > 100): $item->titulo = character_limiter($item->titulo, 100); endif; - if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100) : + if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100): $item->paginas_color_posicion = character_limiter($item->paginas_color_posicion, 100); endif; - if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100) : + if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100): $item->aprobado_json_data = character_limiter($item->aprobado_json_data, 100); endif; - if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100) : + if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100): $item->comparador_json_data = character_limiter($item->comparador_json_data, 100); endif; - if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100) : + if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100): $item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100); endif; endforeach; - } else { - - $isColor = $reqData['color'] ?? false; - $isHq = $reqData['hq'] ?? false; - - $datosPedido = (object)array( - 'paginas' => intval($reqData['paginas']) ?? 0, - 'tirada' => intval($reqData['tirada']) ?? 0, - 'merma' => intval($reqData['merma']) ?? 0, - 'ancho' => intval($reqData['ancho']) ?? 100000, - 'alto' => intval($reqData['alto']) ?? 100000, - 'a_favor_fibra' => $reqData['a_favor_fibra'] ?? 1, - 'isCosido' => (new TipoPresupuestoModel())->get_isCosido($tipo_impresion_id), // JJO esto es custom por cada tipo de presupuesto - ); - - $papel_generico = [ - 'id' => $reqData['papel_generico_id'] ?? 0, - 'nombre' => $reqData['papel_generico'] ?? "", - ]; - - $gramaje = $reqData['gramaje'] ?? 0; - - $cliente_id = $reqData['cliente_id'] ?? -1; - - $resourceData = []; - - if ($type == 'interior' || $type == 'guardas') { - - $datosTipolog = $reqData['negro'] ?? null; - if (!is_null($datosTipolog)) { - $datosTipolog = []; - $data = (object)array( - 'negro' => floatval($reqData['negro']) ?? 0, - 'cyan' => floatval($reqData['cyan']) ?? 0, - 'magenta' => floatval($reqData['magenta']) ?? 0, - 'amarillo' => floatval($reqData['amarillo']) ?? 0, - 'cg' => floatval($reqData['cg']) ?? 0, - 'gota_negro' => floatval($reqData['gota_negro']) ?? 0, - 'gota_color' => floatval($reqData['gota_color']) ?? 0, - ); - array_push($datosTipolog, $data); - } - - if ($type == 'guardas') { - - $datosPedido->paginas_impresion = intval($reqData['paginas_impresion']) ?? 0; - // 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 - if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { - $datosPedido->isCosido = true; - } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { - $datosPedido->isCosido = false; - } - } - - $a_favor_fibra = $reqData['a_favor_fibra'] ?? false; - - $input_data = array( - 'uso' => $type, - 'tipo_impresion_id' => $tipo_impresion_id, - 'datosPedido' => $datosPedido, - 'papel_generico' => $papel_generico, - 'gramaje' => $gramaje, - 'isColor' => $isColor, - 'isHq' => $isHq, - 'cliente_id' => $cliente_id, - 'datosTipolog' => $datosTipolog, - 'a_favor_fibra' => $a_favor_fibra - ); - - $resourceData = PresupuestoService::obtenerComparadorPlana($input_data); - - } else if ($type == 'interior_rot') { - - $paginas = (object)array( - 'negro' => intval($reqData['paginas_negro'] ?? 0), - 'color' => intval($reqData['paginas_color'] ?? 0), - ); - - $datosTipolog = $reqData['negro'] ?? null; - if (!is_null($datosTipolog)) { - $datosTipolog = []; - $data = (object)array( - 'negro' => floatval($reqData['negro']) ?? 0, - 'cyan' => floatval($reqData['cyan']) ?? 0, - 'magenta' => floatval($reqData['magenta']) ?? 0, - 'amarillo' => floatval($reqData['amarillo']) ?? 0, - 'gota_negro' => floatval($reqData['gota_negro']) ?? 0, - 'gota_color' => floatval($reqData['gota_color']) ?? 0, - ); - array_push($datosTipolog, $data); - } - - $input_data = [ - 'datosPedido' => $datosPedido, - 'papel_generico' => $papel_generico, - 'gramaje' => $gramaje, - 'paginas' => $paginas, - 'cliente_id' => $cliente_id, - 'datosTipolog' => $datosTipolog - ]; - - $resourceData = PresupuestoService::obtenerComparadorRotativa($input_data); - - } else if ($type == 'cubierta' || $type == 'sobrecubierta') { - - $datosPedido->solapas = $reqData['solapas']; - $datosPedido->solapas_ancho = $reqData['solapas_ancho']; - $datosPedido->lomo = $reqData['lomo']; - - $input_data = array( - 'uso' => $type, - 'tipo_impresion_id' => $tipo_impresion_id, - 'datosPedido' => $datosPedido, - 'papel_generico' => $papel_generico, - 'gramaje' => $gramaje, - 'isColor' => 1, // Cubierta y sobrecubierta siempre color HQ - 'isHq' => 1, - 'cliente_id' => $cliente_id, - ); - - $resourceData = PresupuestoService::obtenerComparadorPlana($input_data); - } - - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'lineas' => $resourceData, - $csrfTokenName => $newTokenHash - ]; - - return $this->respond($data); } return $this->respond(Collection::datatable( @@ -691,6 +844,159 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } + public function getLineaPresupuesto() + { + if ($this->request->isAJAX()) { + + $reqData = $this->request->getPost(); + + $type = $reqData['type'] ?? null; + // por defecto, se deja cosido tapa blanda por ahora JJO + $tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4; + + $isColor = $reqData['color'] ?? false; + $isHq = $reqData['hq'] ?? false; + + $datosPedido = (object) array( + 'paginas' => intval($reqData['paginas']) ?? 0, + 'tirada' => intval($reqData['tirada']) ?? 0, + 'merma' => intval($reqData['merma']) ?? 0, + 'ancho' => intval($reqData['ancho']) ?? 100000, + 'alto' => intval($reqData['alto']) ?? 100000, + 'a_favor_fibra' => $reqData['a_favor_fibra'] ?? 1, + 'isCosido' => intval((new TipoPresupuestoModel())->get_isCosido($tipo_impresion_id)), // JJO esto es custom por cada tipo de presupuesto + ); + + $papel_generico = [ + 'id' => $reqData['papel_generico_id'] ?? 0, + 'nombre' => $reqData['papel_generico'] ?? "", + ]; + + if ($papel_generico['id'] != 0 && $papel_generico['nombre'] == "") { + $modelPapelGenerico = new PapelGenericoModel(); + $papel_generico['nombre'] = $modelPapelGenerico->getNombre($papel_generico['id'])['nombre']; + } + + $gramaje = $reqData['gramaje'] ?? 0; + + $cliente_id = $reqData['cliente_id'] ?? -1; + + $resourceData = []; + + if ($type == 'interior' || $type == 'guardas') { + + $datosTipolog = $reqData['negro'] ?? null; + if (!is_null($datosTipolog)) { + $datosTipolog = []; + $data = (object) array( + 'negro' => floatval($reqData['negro']) ?? 0, + 'cyan' => floatval($reqData['cyan']) ?? 0, + 'magenta' => floatval($reqData['magenta']) ?? 0, + 'amarillo' => floatval($reqData['amarillo']) ?? 0, + 'cg' => floatval($reqData['cg']) ?? 0, + 'gota_negro' => floatval($reqData['gota_negro']) ?? 0, + 'gota_color' => floatval($reqData['gota_color']) ?? 0, + ); + array_push($datosTipolog, $data); + } + + if ($type == 'guardas') { + + $datosPedido->paginas_impresion = intval($reqData['paginas_impresion']) ?? 0; + // 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 + if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { + $datosPedido->isCosido = true; + } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { + $datosPedido->isCosido = false; + } + } + + $a_favor_fibra = $reqData['a_favor_fibra'] ?? false; + + $input_data = array( + 'uso' => $type, + 'tipo_impresion_id' => $tipo_impresion_id, + 'datosPedido' => $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'cliente_id' => $cliente_id, + 'datosTipolog' => $datosTipolog, + 'a_favor_fibra' => $a_favor_fibra + ); + + $resourceData = PresupuestoService::obtenerComparadorPlana($input_data); + + } else if ($type == 'interior_rot') { + + $paginas = (object) array( + 'negro' => intval($reqData['paginas_negro'] ?? 0), + 'color' => intval($reqData['paginas_color'] ?? 0), + ); + + $datosTipolog = $reqData['negro'] ?? null; + if (!is_null($datosTipolog)) { + $datosTipolog = []; + $data = (object) array( + 'negro' => floatval($reqData['negro']) ?? 0, + 'cyan' => floatval($reqData['cyan']) ?? 0, + 'magenta' => floatval($reqData['magenta']) ?? 0, + 'amarillo' => floatval($reqData['amarillo']) ?? 0, + 'gota_negro' => floatval($reqData['gota_negro']) ?? 0, + 'gota_color' => floatval($reqData['gota_color']) ?? 0, + ); + array_push($datosTipolog, $data); + } + + $input_data = [ + 'datosPedido' => $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'paginas' => $paginas, + 'cliente_id' => $cliente_id, + 'datosTipolog' => $datosTipolog + ]; + + $resourceData = PresupuestoService::obtenerComparadorRotativa($input_data); + + } else if ($type == 'cubierta' || $type == 'sobrecubierta' || $type == 'faja') { + + $datosPedido->solapas = $reqData['solapas']; + $datosPedido->solapas_ancho = $reqData['solapas_ancho']; + $datosPedido->lomo = $reqData['lomo']; + + $input_data = array( + 'uso' => $type, + 'tipo_impresion_id' => $tipo_impresion_id, + 'datosPedido' => $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'isColor' => 1, // Cubierta y sobrecubierta siempre color HQ + 'isHq' => 1, + 'cliente_id' => $cliente_id, + ); + + $resourceData = PresupuestoService::obtenerComparadorPlana($input_data); + } + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'lineas' => $resourceData, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function datatable_2() { if ($this->request->isAJAX()) { @@ -719,25 +1025,22 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController ]; return $this->respond($data); - } - - else if ($tipo == 'duplicar'){ + } else if ($tipo == 'duplicar') { $presupuesto_id = $reqData['presupuesto_id'] ?? -1; $result = $this->duplicarPresupuesto($presupuesto_id); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); - if($result['success']){ + if ($result['success']) { $data = [ 'id' => $result['id'], $csrfTokenName => $newTokenHash - ]; + ]; return $this->respond($data); - } - else{ + } else { $data = [ 'error' => $result['message'], $csrfTokenName => $newTokenHash - ]; + ]; return $this->respond($data); } } @@ -754,6 +1057,260 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } } + public function getPapelGenerico() + { + + if ($this->request->isAJAX()) { + + $POD_value = $this->getPOD(); + $tirada = $this->request->getGet("tirada"); + $isPOD = intval($tirada) <= intval($POD_value); + + $tipo_impresion_id = $this->request->getGet("tipo_impresion"); + $tapa_dura = model('App\Models\Configuracion\TipoPresupuestoModel')->get_isTapaDura(intval($tipo_impresion_id)); + + $ancho = $this->request->getGet('ancho') ?? 0; + $alto = $this->request->getGet('alto') ?? 0; + $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'; + $cubierta = false; + if ($uso == 'cubierta') { + $cubierta = true; + } + $sobrecubierta = false; + if ($uso == 'sobrecubierta') { + $sobrecubierta = true; + } + $guardas = false; + if ($uso == 'guardas') { + $guardas = true; + } + $rotativa = false; + if ($uso == 'rotativa') { + $rotativa = true; + } + + $model = model('App\Models\Configuracion\PapelGenericoModel'); + $query = $model->getPapelForComparador( + $tipo, + $cubierta, + $sobrecubierta, + $rotativa, + $guardas, + $tapa_dura, + $isPOD, + $anchoLibro, + $alto, + $tirada); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("lg_papel_generico.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->orderBy("t1.nombre", "asc")->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function getGramaje() + { + if ($this->request->isAJAX()) { + + $papel_generico_id = $this->request->getGet("papel_generico"); + + $POD_value = $this->getPOD(); + $tirada = $this->request->getGet("tirada"); + $isPOD = intval($tirada) <= intval($POD_value); + + $ancho = $this->request->getGet('ancho') ?? 0; + $alto = $this->request->getGet('alto') ?? 0; + $solapas = $this->request->getGet('solapas') ?? 0; + $lomo = $this->request->getGet('lomo') ?? 0; + + $anchoLibro = 2* $ancho + 2 * $solapas + $lomo; + + $tipo_impresion_id = $this->request->getGet("tipo_impresion"); + $tapa_dura = model('App\Models\Configuracion\TipoPresupuestoModel')->get_isTapaDura(intval($tipo_impresion_id)); + + $tipo = $this->request->getGet("tipo"); + + $uso = $this->request->getGet("uso") ?? 'interior'; + $cubierta = false; + if ($uso == 'cubierta') { + $cubierta = true; + } + $sobrecubierta = false; + if ($uso == 'sobrecubierta') { + $sobrecubierta = true; + } + $guardas = false; + if ($uso == 'guardas') { + $guardas = true; + } + $rotativa = false; + if ($uso == 'rotativa') { + $rotativa = true; + } + + $model = model('App\Models\Configuracion\PapelGenericoModel'); + $query = $model->getGramajeForComparador($tipo, + $papel_generico_id, + $cubierta, + $sobrecubierta, + $rotativa, + $guardas, + $tapa_dura, + $isPOD, + $anchoLibro, + $alto, + $tirada); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("lg_papel_impresion.gramaje", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->orderBy("t2.gramaje", "asc")->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + public function getPapelImpresion() + { + + if ($this->request->isAJAX()) { + + $papel_generico_id = $this->request->getGet('papel_generico'); + $gramaje = $this->request->getGet('gramaje'); + + $tipo_impresion_id = $this->request->getGet("tipo_impresion"); + $tapa_dura = model('App\Models\Configuracion\TipoPresupuestoModel')->get_isTapaDura(intval($tipo_impresion_id)); + + $tipo = $this->request->getGet("tipo"); + + $uso = $this->request->getGet("uso") ?? 'interior'; + + $model = model('App\Models\Configuracion\PapelImpresionModel'); + $query = $model->getPapelesImpresionForMenu( + $papel_generico_id, + $gramaje, + $tipo, + $uso, + $tapa_dura, + false + ); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("lg_papel_impresion.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->orderBy("t1.nombre", "asc")->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + public function getMaquinas() + { + + if ($this->request->isAJAX()) { + + $ancho = $this->request->getGet('ancho'); + $alto = $this->request->getGet('alto'); + $tirada = $this->request->getGet('tirada'); + $merma = $this->request->getGet('merma'); + $tipo_impresion_id = $this->request->getGet('tipo_impresion'); + $isCosido = (new TipoPresupuestoModel())->get_isCosido($tipo_impresion_id); + $papel_impresion_id = $this->request->getGet('papel_impresion'); + $tarifa_tipo = $this->request->getGet("tarifa_tipo"); // negro, color, negrohq, colorhq + $uso_tarifa = $this->request->getGet("uso_tarifa") ?? 'interior'; // interior, cubierta, sobrecubierta + $is_rotativa = $this->request->getGet('is_rotativa') ?? 0; + $lomo_redondo = $this->request->getGet('lomo_redondo'); + $lomo = $this->request->getGet('lomo'); + $solapas = $this->request->getGet('solapas'); + $solapas_ancho = $this->request->getGet('solapas_ancho'); + + $model = model('App\Models\Configuracion\MaquinaModel'); + $query = $model->getMaquinaImpresionForPresupuesto( + $is_rotativa, + $tarifa_tipo, + $uso_tarifa, + intval($tirada) + intval($merma), + $papel_impresion_id + ); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("lg_maquinas.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + $data = $query->orderBy("t1.nombre", "asc")->get()->getResultObject(); + + $query = $model->db->getLastQuery(); + $datosPedido = ((object) array( + 'ancho' => $ancho, + 'alto' => $alto, + 'isCosido' => $isCosido, + 'lomo' => $lomo, + 'solapas' => $solapas, + 'solapas_ancho' => $solapas_ancho, + )); + + for ($i = 0; $i < count($data); $i++) { + + if ($is_rotativa) { + + $has_error = true; + for ($f = 0; $f < 2; $f++) { + + $parametrosRotativa = (object) array( + 'a_favor_fibra' => $f, + ); + $values = []; + [$values['ancho'], $values['alto']] = PresupuestoService::calculoDimForma($datosPedido, $parametrosRotativa); + + $factor_anchura = round($data[$i]->ancho_impresion / $values['ancho'], 2); + + if (floor($factor_anchura) != 0) { + $has_error = false; + } + } + if ($has_error) { + unset($data[$i]); + } + } else { + + if ($uso_tarifa != 'interior') { + $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($uso_tarifa, $tipo_impresion_id, $datosPedido, $data[$i]->maquina_id, $lomo_redondo); + $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($uso_tarifa, $tipo_impresion_id, $datosPedido); + } + + $ancho_calculo = ($uso_tarifa == 'cubierta' || $uso_tarifa == 'sobrecubierta') ? $datosPedido->anchoExteriores : $datosPedido->ancho; + $alto_calculo = ($uso_tarifa == 'cubierta' || $uso_tarifa == 'sobrecubierta') ? $datosPedido->altoExteriores : $datosPedido->alto; + $formas = PresupuestoService::getNumFormasPlana($uso_tarifa, $data[$i], $ancho_calculo, $alto_calculo, $datosPedido->isCosido); + if ($formas['num_formas']['posicion_formas'] == 'n/a') { + unset($data[$i]); + } + } + } + + return $this->response->setJSON($data); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + private function getStringsFromTipoImpresion($tipo_impresion_id) { @@ -761,7 +1318,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController switch ($tipo_impresion_id) { - // Fresado tapa dura + // Fresado tapa dura case 1: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleFresadoTD'); $viewData['isCosido'] = 0; @@ -769,7 +1326,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_fresasdo_tapa_dura"); break; - // Fresado tapa blanda + // Fresado tapa blanda case 2: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleFresadoTB'); $viewData['isCosido'] = 0; @@ -777,7 +1334,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_fresasdo_tapa_blanda"); break; - // Cosido tapa dura + // Cosido tapa dura case 3: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleCosidoTD'); $viewData['isCosido'] = 1; @@ -785,7 +1342,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_cosido_tapa_dura"); break; - // Cosido tapa blanda + // Cosido tapa blanda case 4: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleCosidoTB'); $viewData['isCosido'] = 1; @@ -793,7 +1350,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_cosido_tapa_blanda"); break; - // Espiral tapa dura + // Espiral tapa dura case 5: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleEspiralTD'); $viewData['isCosido'] = 0; @@ -801,7 +1358,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_espiral_tapa_dura"); break; - // Espiral tapa blanda + // Espiral tapa blanda case 6: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleEspiralTB'); $viewData['isCosido'] = 0; @@ -809,7 +1366,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_espiral_tapa_blanda"); break; - // Wire-o tapa dura + // Wire-o tapa dura case 7: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleWireoTD'); $viewData['isCosido'] = 0; @@ -817,7 +1374,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_wireo_tapa_dura"); break; - // Wire-o tapa blanda + // Wire-o tapa blanda case 8: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleWireoTB'); $viewData['isCosido'] = 0; @@ -825,7 +1382,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_wireo_tapa_blanda"); break; - // Grapado + // Grapado case 21: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleGrapado'); $viewData['isCosido'] = 0; @@ -845,7 +1402,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return $viewData; } - + /** * Duplica un presupuesto dado por su ID. @@ -860,67 +1417,68 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController * 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. */ - private function duplicarPresupuesto($id){ + private function duplicarPresupuesto($id) + { - try{ - - $presupuesto = $this->model->find($id); - $presupuesto->titulo = $presupuesto->titulo .' - ' . lang('Presupuestos.duplicado'); - $presupuesto->is_duplicado = 1; - $presupuesto->estado_id = 1; - $new_id = $this->model->insert($presupuesto); - - $presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) { - $acabado->presupuesto_id = $new_id; - $presupuestoAcabadosModel->insert($acabado); - } - - $presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); - foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) { - $encuadernacion->presupuesto_id = $new_id; - $presupuestoEncuadernacionesModel->insert($encuadernacion); - } - - $presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel'); - foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) { - $manipulado->presupuesto_id = $new_id; - $presupuestoManipuladosModel->insert($manipulado); - } - - $presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel'); - foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) { - $preimpresion->presupuesto_id = $new_id; - $presupuestoPreimpresionesModel->insert($preimpresion); - } + try { - $presupuestoServiciosExtraModel = model('App\Models\Presupuestos\PresupuestoServiciosExtraModel'); - foreach ($presupuestoServiciosExtraModel->where('presupuesto_id', $presupuesto->id)->findAll() as $servicioExtra) { - $servicioExtra->presupuesto_id = $new_id; - $presupuestoServiciosExtraModel->insert($preimpresion); - } - - $presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); - foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) { - $direccion->presupuesto_id = $new_id; - $presupuestoDireccionesModel->insert($direccion); - } - - $presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel'); - $presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id); - - return [ - 'success' => true, - 'id' => $new_id - ]; - - }catch(\Exception $e){ - return [ - 'success' => false, - 'message' => $e->getMessage() - ]; - } - } + $presupuesto = $this->model->find($id); + $presupuesto->titulo = $presupuesto->titulo . ' - ' . lang('Presupuestos.duplicado'); + $presupuesto->is_duplicado = 1; + $presupuesto->estado_id = 1; + $new_id = $this->model->insert($presupuesto); + + $presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) { + $acabado->presupuesto_id = $new_id; + $presupuestoAcabadosModel->insert($acabado); + } + + $presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); + foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) { + $encuadernacion->presupuesto_id = $new_id; + $presupuestoEncuadernacionesModel->insert($encuadernacion); + } + + $presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel'); + foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) { + $manipulado->presupuesto_id = $new_id; + $presupuestoManipuladosModel->insert($manipulado); + } + + $presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel'); + foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) { + $preimpresion->presupuesto_id = $new_id; + $presupuestoPreimpresionesModel->insert($preimpresion); + } + + $presupuestoServiciosExtraModel = model('App\Models\Presupuestos\PresupuestoServiciosExtraModel'); + foreach ($presupuestoServiciosExtraModel->where('presupuesto_id', $presupuesto->id)->findAll() as $servicioExtra) { + $servicioExtra->presupuesto_id = $new_id; + $presupuestoServiciosExtraModel->insert($preimpresion); + } + + $presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); + foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) { + $direccion->presupuesto_id = $new_id; + $presupuestoDireccionesModel->insert($direccion); + } + + $presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel'); + $presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id); + + return [ + 'success' => true, + 'id' => $new_id + ]; + + } catch (\Exception $e) { + return [ + 'success' => false, + 'message' => $e->getMessage() + ]; + } + } public function allItemsSelect() { @@ -1042,232 +1600,51 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController protected function getClienteListItems($selId = null) { $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Clientes.cliente'))])]; - if (!empty($selId)) : + if (!empty($selId)): $clienteModel = model('App\Models\Clientes\ClienteModel'); $selOption = $clienteModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : + if (!empty($selOption)): $data[$selId] = $selOption[0]; endif; endif; return $data; } - protected function getPaisListItems() - { - $paisModel = model('App\Models\Configuracion\PaisModel'); - $onlyActiveOnes = true; - $data = $paisModel->getAllForMenu('id, nombre', 'nombre', $onlyActiveOnes); - - return $data; - } - - protected function getCcaaListItems($selId = null) - { - $ccaaModel = model('App\Models\Configuracion\ComunidadAutonomaModel'); - $onlyActiveOnes = true; - $data = $ccaaModel->getAllForMenu('id, nombre', 'nombre', $onlyActiveOnes); - - return $data; - } - - - protected function getAcabadosCubierta() - { - $model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel'); - $data = $model->getServiciosAcabadoCubierta(); - array_unshift($data, (object)['id' => '', 'label' => lang('Basic.global.None')]); - return $data; - } - - protected function getAcabadosSobrecubierta() - { - $model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel'); - $data = $model->getServiciosAcabadoSobrecubierta(); - array_unshift($data, (object)['id' => '', 'label' => lang('Basic.global.None')]); - return $data; - } - - - protected function getPapelGenericoRotativaNegro() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('negro', false, false, true); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoRotativaColor() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('color', false, false, true); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoNegro() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('negro', false, false); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoNegroHQ() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('negrohq', false, false); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoColor() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('color', false, false); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoColorHQ() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('colorhq', false, false); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoCubierta() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('colorhq', true, false); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoGuardas() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('colorhq', false, false, false, true); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getPapelGenericoSobreCubierta() - { - $model = model('App\Models\Configuracion\PapelGenericoModel'); - $data = $model->getPapelForComparador('colorhq', false, true); - array_unshift($data, (object)array( - "id" => 0, - "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) - )); - return $data; - } - - protected function getServiciosPreimpresion() - { - $model = model('App\Models\Tarifas\TarifapreimpresionModel'); - $data = $model->getServiciosPreimpresionSelector(); - array_unshift($data, (object)array( - "value" => 0, - "label" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.servicioPreimpresion'))]) - )); - return $data; - } - - protected function getServiciosExtra() - { - $model = model('App\Models\Tarifas\TarifaextraModel'); - $data = $model->getServiciosExtraSelector(); - array_unshift($data, (object)array( - "value" => 0, - "label" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.servicioExtra'))]) - )); - return $data; - } - - protected function getServiciosEncuadernacion() - { - $model = model('App\Models\Tarifas\TarifaEncuadernacionModel'); - $data = $model->getServiciosEncuadernacionSelector(); - return $data; - } - - protected function getPapelFormatoListItems($selId = null) - { - $papelFormatoModel = model('App\Models\Configuracion\PapelFormatoModel'); - $data = $papelFormatoModel->getElementsForMenu(); - array_shift($data); - array_unshift($data, (object)['id' => '', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); - return $data; - } - - protected function getServiciosAcabado() - { - $model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel'); - $data = $model->getServiciosAcabadoSelector(); - return $data; - } - - protected function getServiciosManipulado() - { - $model = model('App\Models\Tarifas\TarifaManipuladoModel'); - $data = $model->getServiciosManipuladoSelector(); - array_unshift($data, (object)array( - "value" => 0, - "label" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.servicioManipulado'))]) - )); - return $data; - } - protected function getPOD() { return model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; } - protected function getLineasPresupuesto($presupuestoEntity){ + protected function loadLineasPresupuesto($presupuestoEntity) + { $lineas = (new PresupuestoLineaModel())->getLineasPresupuesto($presupuestoEntity->id); - + + $modelPapel = new PapelGenericoModel(); + foreach ($lineas as $linea) { + $linea->papel_generico = (new PapelGenericoModel())->find($linea->papel_id)->nombre; + if($linea->tipo == 'lp_faja'){ + $linea->alto_faja = $presupuestoEntity->alto_faja_color; + } + } + $input_data = []; $input_data['presupuesto'] = $presupuestoEntity; - - return PresupuestoService::checkLineasPresupuesto($input_data, $lineas); + + return [false, $lineas]; } - protected function getLineasServicios($presupuestoEntity){ - - $serviciosPresupuesto = (object)array(); + protected function getLineasServicios($presupuestoEntity) + { + + $serviciosPresupuesto = (object) array(); $serviciosPresupuesto->serviciosAcabado = (new PresupuestoAcabadosModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosPreimpresion = (new PresupuestoPreimpresionesModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosEncuadernacion = (new PresupuestoEncuadernacionesModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosManipulado = (new PresupuestoManipuladosModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosExtra = (new PresupuestoServiciosExtraModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); - + $input_data = []; $input_data['presupuesto_id'] = $presupuestoEntity->id; $input_data['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id; @@ -1275,19 +1652,17 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $input_data['POD'] = $this->getPOD(); $input_data['paginas'] = $presupuestoEntity->paginas; $input_data['is_duplicado'] = $presupuestoEntity->is_duplicado; - - if($presupuestoEntity->papel_formato_personalizado){ - $input_data['ancho'] = $presupuestoEntity->papel_formato_ancho ; - $input_data['alto'] = $presupuestoEntity->papel_formato_alto ; - } - else{ + + if ($presupuestoEntity->papel_formato_personalizado) { + $input_data['ancho'] = $presupuestoEntity->papel_formato_ancho; + $input_data['alto'] = $presupuestoEntity->papel_formato_alto; + } else { $model = model("App\Models\Configuracion\PapelFormatoModel"); $papel = $model->find($presupuestoEntity->papel_formato_id); - if($papel){ + if ($papel) { $input_data['ancho'] = $papel->ancho; $input_data['alto'] = $papel->alto; - } - else{ + } else { $input_data['ancho'] = 0; $input_data['alto'] = 0; } @@ -1296,11 +1671,25 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return PresupuestoService::checkLineasServicios($input_data, $serviciosPresupuesto); } - protected function getLineasDirecciones($presupuestoEntity){ + protected function getLineasDirecciones($presupuestoEntity) + { $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); $direccionesEnvio = $model->where('presupuesto_id', $presupuestoEntity->id)->findAll(); - + return PresupuestoService::checkLineasEnvios($direccionesEnvio); } + + protected function obtenerDireccionesEnvio($id, $cliente_id) + { + $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); + $model_direcciones = model('App\Models\Clientes\ClienteDireccionesModel'); + $direcciones = $model + ->join('lg_proveedores', 'presupuesto_direcciones.proveedor_id = lg_proveedores.id') + ->join('lg_paises', 'presupuesto_direcciones.pais_id = lg_paises.id') + ->select('presupuesto_direcciones.*, lg_proveedores.nombre AS proveedor, lg_paises.nombre AS pais') + ->where('presupuesto_id', $id)->findAll(); + + return $direcciones; + } } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 4a92cd16..d729e12a 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -1586,7 +1586,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if (!is_null($new_name)) { $path = WRITEPATH . 'uploads/presupuestos/' . $new_name; move_uploaded_file($tmp_name, $path); +<<<<<<< HEAD +======= + +>>>>>>> main } } $ftp->uploadFilePresupuesto($presupuesto_id); @@ -2384,7 +2388,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_faja')->value ]; +<<<<<<< HEAD // se comprueba si $datos guardas es un array +======= + // se comprueba si $datos guardas es un array +>>>>>>> main if (is_array($datos_guardas)) { if (count($datos_guardas) > 0) { array_push($servicios, $servicio_plegado_guardas); // Plegado de guardas @@ -2407,7 +2415,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController array_push($servicios, $servicio_solapas_cubierta); if (!is_null($sobreCubierta) && $sobreCubierta) // Si hay sobrecubierta, siempre con solapas array_push($servicios, $servicio_solapas_sobrecubierta); +<<<<<<< HEAD /* TO-DO +======= + /* TO-DO +>>>>>>> main if (!is_null($faja) && $faja) // Si hay faja, siempre con solapas array_push($servicios, $servicio_solapas_faja); */ diff --git a/ci4/app/Controllers/Presupuestos/Presupuestodirecciones.php b/ci4/app/Controllers/Presupuestos/Presupuestodirecciones.php index d99d9fd3..ddbe042a 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestodirecciones.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestodirecciones.php @@ -44,7 +44,7 @@ class Presupuestodirecciones extends \App\Controllers\BaseResourceController $att = $reqData['att'] ?? ""; $email = $reqData['email'] ?? ""; $direccion = $reqData['direccion'] ?? ""; - $pais_id = $reqData['paisId'] ?? -1; + $pais_id = $reqData['pais_id'] ?? -1; $provincia = $reqData['provincia'] ?? ""; $municipio = $reqData['municipio'] ?? ""; $cp = $reqData['cp'] ?? ""; @@ -145,6 +145,7 @@ class Presupuestodirecciones extends \App\Controllers\BaseResourceController $reqData = $this->request->getJSON(); if($reqData->tipo=='get_tarifa'){ + $peso = $reqData->peso ?? 0; $paisId = $reqData->paisId ?? 0; $cp = $reqData->cp ?? 0; diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php b/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php index 69198d50..c66085b1 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php @@ -1,4 +1,5 @@ -request->getJSON(); $tarifas = array_column($postData->datos, 'tarifa_id'); - if(count($tarifas)>0){ + if (count($tarifas) > 0) { $this->model->deleteServiciosNotInArray($requestedId, $tarifas); - } - else{ + } else { $this->model->deleteAllServicios($requestedId); } - if(count($tarifas)>0){ + if (count($tarifas) > 0) { $this->model->updateTarifas($requestedId, $postData->datos); } @@ -57,7 +57,7 @@ class Presupuestoencuadernaciones extends \App\Controllers\BaseResourceControlle $data = [ $csrfTokenName => $newTokenHash ]; - + return $this->respond($data); } @@ -65,136 +65,177 @@ class Presupuestoencuadernaciones extends \App\Controllers\BaseResourceControlle { $tarifaModel = model('App\Models\Tarifas\TarifaEncuadernacionModel'); - if ($requestedId == null) : + if ($requestedId == null): return; endif; - $postData = $this->request->getJSON(); - $tarifas = array_column($postData->datos, 'tarifa_id'); - $tirada = $postData->tirada ?? 0; - $paginas = $postData->paginas ?? 0; - $POD = $postData->POD ?? 0; - $ancho = $postData->ancho ?? 0; - $alto = $postData->alto ?? 0; - $result = []; - - if(count($tarifas)>0){ - foreach ($tarifas as $tarifa){ - if($tarifaModel->isTarifaPorHoras($tarifa)){ - $values = $this->model->getPrecioTarifaHoras($tarifa, $paginas, $tirada, -1, $POD); - }else{ - $values = $this->model->getPrecioTarifa($tarifa, $paginas, $tirada, $ancho, $alto, -1, $POD); - } - array_push($result, $values); - } - } + $postData = $this->request->getPost(); + $datos_tarifas = $postData['datos'] ?? []; + $tirada = $postData['tirada'] ?? 0; + $paginas = $postData['paginas'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + $ancho = $postData['ancho'] ?? 0; + $alto = $postData['alto'] ?? 0; + $result = $this->getServiciosEncuadernacion($datos_tarifas, $tirada, $paginas, $ancho, $alto, $POD); + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ - 'lines' => $result, + 'lineas' => $result, $csrfTokenName => $newTokenHash ]; - + return $this->respond($data); } + public function getServiciosEncuadernacion($datos_tarifas, $tirada, $paginas, $ancho, $alto, $POD) + { + $result = []; + $tarifaModel = model('App\Models\Tarifas\TarifaEncuadernacionModel'); + $model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); + + + if (count($datos_tarifas) > 0) { + foreach ($datos_tarifas as $tarifa) { + if ($tarifaModel->isTarifaPorHoras($tarifa['tarifa_id'])) { + $values = $model->getPrecioTarifaHoras($tarifa['tarifa_id'], $paginas, $tirada, -1, $POD); + } else { + $values = $model->getPrecioTarifa($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto, -1, $POD); + } + array_push($result, $values[0]); + } + } + return $result; + } + public function datatable() { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); $tipo = $reqData['tipo'] ?? null; - if(is_null($tipo) || $tipo=='tarifa'){ + if (is_null($tipo) || $tipo == 'tarifa') { $tarifa_encuadernacion_id = $reqData['tarifa_encuadernacion_id'] ?? 0; $proveedor_id = $reqData['proveedor_id'] ?? 0; - } - else{ + } else { $solapas = $reqData['solapas'] ?? 0; } $paginas = $reqData['paginas'] ?? 0; $tirada = $reqData['tirada'] ?? 0; $ancho = $reqData['ancho'] ?? 0; $alto = $reqData['alto'] ?? 0; - + $POD = $reqData['POD'] ?? 0; $paginas_cuadernillo = $reqData['paginas_por_cuadernillo'] ?? null; - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); - + $tarifaModel = model('App\Models\Tarifas\TarifaEncuadernacionModel'); - if(is_null($tipo)){ - if($tarifaModel->isTarifaPorHoras($tarifa_encuadernacion_id)){ + if (is_null($tipo)) { + if ($tarifaModel->isTarifaPorHoras($tarifa_encuadernacion_id)) { $values = $this->model->getPrecioTarifaHoras($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD, $paginas_cuadernillo); - }else{ + } else { $values = $this->model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD); } - } - - else if($tipo=='tarifa'){ - if($tarifaModel->isTarifaPorHoras($tarifa_encuadernacion_id)){ + } else if ($tipo == 'tarifa') { + if ($tarifaModel->isTarifaPorHoras($tarifa_encuadernacion_id)) { $values = $this->model->getPrecioTarifaHoras($tarifa_encuadernacion_id, $paginas, $tirada, -1, $POD); - } - else{ + } else { $values = $this->model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, -1, $POD); } - } - - else{ + } else { $tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4; $values = $this->model->initPresupuesto($tipo_impresion_id, $solapas, $tirada, $paginas, $ancho, $alto, $POD); } - + $data = [ 'values' => $values, $csrfTokenName => $newTokenHash ]; - + return $this->respond($data); - + } else { return $this->failUnauthorized('Invalid request', 403); } } - + + public function getRowValues() + { + if ($this->request->isAJAX()) { + + $tarifaModel = model('App\Models\Tarifas\TarifaEncuadernacionModel'); + + $reqData = $this->request->getPost(); + + $tarifa_enc_id = $reqData['tarifa_enc_id'] ?? 0; + $tirada = $reqData['tirada'] ?? 0; + $paginas = $reqData['paginas'] ?? 0; + $ancho = $reqData['ancho'] ?? 0; + $alto = $reqData['alto'] ?? 0; + $proveedor_id = $reqData['proveedor_id'] ?? -1; + $paginas_cuadernillo = $reqData['paginas_por_cuadernillo'] ?? 32; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + if ($tarifaModel->isTarifaPorHoras($tarifa_enc_id)) { + $values = $this->model->getPrecioTarifaHoras($tarifa_enc_id, $paginas, $tirada, $proveedor_id, $POD, $paginas_cuadernillo); + } else { + $values = $this->model->getPrecioTarifa($tarifa_enc_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD); + } + + $data = [ + 'values' => $values, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + public function menuItems() { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - try{ + try { $tarifa_id = $reqData['tarifa_id'] ?? -1; $paginas = $reqData['paginas'] ?? 0; $tirada = $reqData['tirada'] ?? 0; $ancho = $reqData['ancho'] ?? 0; $alto = $reqData['alto'] ?? 0; - //$searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; + $paginas_cuadernillo = $reqData['paginas_por_cuadernillo'] ?? 32; $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); - $menu = $this->model->getProveedoresForSelector($tarifa_id, $paginas, $tirada, $ancho, $alto); + $menu = $this->model->getProveedoresForSelector($tarifa_id, $paginas, $tirada, $ancho, $alto, $paginas_cuadernillo); $data = [ 'menu' => $menu, $csrfTokenName => $newTokenHash ]; - } - catch(Exception $e){ + } catch (Exception $e) { $data = [ 'error' => $e, $csrfTokenName => $newTokenHash ]; - } - finally{ + } finally { return $this->respond($data); } - + } else { return $this->failUnauthorized('Invalid request', 403); } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php b/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php index 0423bb19..6c3b77ab 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php @@ -63,6 +63,27 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController return $this->respond($data); } + public function getServicioSolapas(){ + + if($this->request->isAJAX()){ + + $servicio = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas')->value; + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $data = [ + 'service' => $servicio, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + } + else{ + return $this->failUnauthorized('Invalid request', 403); + } + } + public function update($requestedId = null) { @@ -70,28 +91,38 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController return; endif; - $postData = $this->request->getJSON(); - $tarifas = array_column($postData->datos, 'tarifa_id'); - $tirada = $postData->tirada ?? 0; - $POD = $postData->POD ?? 0; - $result = []; - - if(count($tarifas)>0){ - foreach ($tarifas as $tarifa){ - $values = $this->model->getPrecioTarifa($tarifa, $tirada, $POD); - array_push($result, $values); - } - } + $postData = $this->request->getPost(); + $tarifas = $postData['datos'] ?? []; + $tirada = $postData['tirada'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + + $result = $this->getServiciosManipulado($tarifas, $tirada, $POD); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ - 'lines' => $result, + 'lineas' => $result, $csrfTokenName => $newTokenHash ]; return $this->respond($data); } + + public function getServiciosManipulado($datos_tarifas, $tirada, $POD) + { + $result = []; + $model = model('App\Models\Presupuestos\PresupuestoManipuladosModel'); + + if (count($datos_tarifas) > 0) { + foreach ($datos_tarifas as $tarifa) { + $values = $model->getPrecioTarifa($tarifa, $tirada, $POD); + $values[0]->cubierta = $tarifa['cubierta'] ?? 0; + $values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0; + array_push($result, $values[0]); + } + } + return $result; + } public function datatable() @@ -101,7 +132,7 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController $tarifa_manipulado_id = $reqData['tarifa_manipulado_id'] ?? 0; $tirada = $reqData['tirada'] ?? 0; - $POD = $reqData['POD'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $tipo = $reqData['tipo'] ?? null; @@ -129,4 +160,29 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController } } + public function getRowValues() + { + if ($this->request->isAJAX()) { + $reqData = $this->request->getPost(); + + $tarifa_manipulado_id = $reqData['tarifa_manipulado_id'] ?? 0; + $tirada = $reqData['tirada'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $values = $this->model->getPrecioTarifa($tarifa_manipulado_id, $tirada, $POD); + + $data = [ + 'values' => $values, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestopreimpresiones.php b/ci4/app/Controllers/Presupuestos/Presupuestopreimpresiones.php index 465ad7be..06e99718 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestopreimpresiones.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestopreimpresiones.php @@ -110,4 +110,47 @@ class Presupuestopreimpresiones extends \App\Controllers\BaseResourceController } } + public function getRowValues() + { + if ($this->request->isAJAX()) { + $reqData = $this->request->getPost(); + + $tarifa_preimpresion_id = $reqData['tarifa_preimpresion_id'] ?? 0; + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $values = $this->model->getPrecioTarifa($tarifa_preimpresion_id); + + $data = [ + 'values' => $values, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function cargar() + { + if($this->request->isAJAX()) { + $presupuesto_id = $this->request->getGet('presupuesto_id') ?? null; + + $rows = $this->model->getResource($presupuesto_id)->get()->getResultObject(); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'rows' => $rows, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoserviciosextra.php b/ci4/app/Controllers/Presupuestos/Presupuestoserviciosextra.php index 09497d14..0e5bc23b 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestoserviciosextra.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoserviciosextra.php @@ -110,4 +110,28 @@ class Presupuestoserviciosextra extends \App\Controllers\BaseResourceController } } + public function getRowValues() + { + if ($this->request->isAJAX()) { + $reqData = $this->request->getPost(); + + $tarifa_extra_id = $reqData['tarifa_extra_id'] ?? 0; + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $values = $this->model->getPrecioTarifa($tarifa_extra_id); + + $data = [ + 'values' => $values, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestotiradasalternativas.php b/ci4/app/Controllers/Presupuestos/Presupuestotiradasalternativas.php index 05702a7e..60b5e12f 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestotiradasalternativas.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestotiradasalternativas.php @@ -82,7 +82,12 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); + $id = $reqData['id'] ?? 0; + $json_data = $reqData['json_tiradas'] ?? null; + $json_data_acabados = $reqData['json_acabados'] ?? null; + $json_data_encuadernacion = $reqData['json_encuadernaciones'] ?? null; + $json_data_manipulado = $reqData['json_manipulado'] ?? null; $cliente_id = $reqData['cliente_id'] ?? 0; $tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4; @@ -95,7 +100,7 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro foreach ($data as $linea) { // Se obtienen los valores de cada linea para el calculo del precio - $datosPedido = (object)array( + $datosPedido = (object) array( 'paginas' => intval($linea['paginas']) ?? 0, 'tirada' => intval($reqData['tirada']) ?? 0, 'merma' => intval($reqData['merma']) ?? 0, @@ -144,24 +149,24 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro $uso = 'interior'; $tipo = strpos($linea['row_id'], "_bn") !== false ? 'negro' : 'color'; $paginas_negro = isset($linea['numPagColor']) ? intval($datosPedido->paginas) - intval($linea['numPagColor']) : 0; - $paginas_color = $linea['numPagColor'] ?? 0; - $paginas = (object)array( + $paginas_color = $linea['numPagColor'] ?? 0; + $paginas = (object) array( 'negro' => $paginas_negro, 'color' => $paginas_color, ); - $parametrosRotativa = (object)array( + $parametrosRotativa = (object) array( 'a_favor_fibra' => $datosPedido->a_favor_fibra, - 'bnPages' => $paginas->negro, - 'colorPages' => $paginas->color, + 'bnPages' => $paginas->negro, + 'colorPages' => $paginas->color, 'rotativa_gota_negro' => 0, 'rotativa_gota_color' => 0, ); - $parametrosRotativa->rotativa_gota_negro = floatval($linea['gotaNegro']?? 0); - $parametrosRotativa->rotativa_gota_color = floatval($linea['gotaColor']?? 0); - $parametrosRotativa->rotativa_negro = floatval($linea['cobNegro'] ?? 0); - $parametrosRotativa->rotativa_cyan = floatval($linea['cobCyan'] ?? 0); - $parametrosRotativa->rotativa_magenta = floatval($linea['cobMagenta']?? 0); - $parametrosRotativa->rotativa_amarillo = floatval($linea['cobAmarillo']?? 0); + $parametrosRotativa->rotativa_gota_negro = floatval($linea['gotaNegro'] ?? 0); + $parametrosRotativa->rotativa_gota_color = floatval($linea['gotaColor'] ?? 0); + $parametrosRotativa->rotativa_negro = floatval($linea['cobNegro'] ?? 0); + $parametrosRotativa->rotativa_cyan = floatval($linea['cobCyan'] ?? 0); + $parametrosRotativa->rotativa_magenta = floatval($linea['cobMagenta'] ?? 0); + $parametrosRotativa->rotativa_amarillo = floatval($linea['cobAmarillo'] ?? 0); break; case 'lp_cubierta': $uso = 'cubierta'; @@ -194,14 +199,14 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro $datosTipolog = $linea['gotaNegro'] ?? null; if (!is_null($datosTipolog)) { $datosTipolog = []; - $data_temp = (object)array( + $data_temp = (object) array( 'negro' => floatval($linea['cobNegro'] ?? 0), 'cyan' => floatval($linea['cobCyan'] ?? 0), - 'magenta' => floatval($linea['cobMagenta']?? 0), - 'amarillo' => floatval($linea['cobAmarillo']?? 0), + 'magenta' => floatval($linea['cobMagenta'] ?? 0), + 'amarillo' => floatval($linea['cobAmarillo'] ?? 0), 'cg' => floatval($linea['cobCG'] ?? 0), - 'gota_negro' => floatval($linea['gotaNegro']?? 0), - 'gota_color' => floatval($linea['gotaColor']?? 0), + 'gota_negro' => floatval($linea['gotaNegro'] ?? 0), + 'gota_color' => floatval($linea['gotaColor'] ?? 0), ); array_push($datosTipolog, $data_temp); } @@ -213,13 +218,13 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro $datosLinea['datosPedido'] = $datosPedido; $datosLinea['cliente_id'] = $cliente_id; $datosLinea['papel'] = $papel; - if(isset($isColor)) - $datosLinea['isColor'] = $isColor; - if(isset($opciones_papel)) + if (isset($isColor)) + $datosLinea['isColor'] = $isColor; + if (isset($opciones_papel)) $datosLinea['opciones_papel'] = $opciones_papel; - if(isset($parametrosRotativa)) + if (isset($parametrosRotativa)) $datosLinea['parametrosRotativa'] = $parametrosRotativa; - if(isset($paginas)) + if (isset($paginas)) $datosLinea['paginas'] = $paginas; $datosLinea['maquina'] = $maquina; $datosLinea['papel_generico'] = $papel_generico; @@ -257,19 +262,113 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro $linea_coste['total_coste'] += $linea_coste['fields']['precio_tinta']; if (strpos($linea['row_id'], 'lp_rot') === 0) { - $linea_coste['total_coste'] += - $linea_coste['fields']['total_corte']; - } + $linea_coste['total_coste'] += + $linea_coste['fields']['total_corte']; + } } - + $linea_coste['total_margen'] = $linea_coste['fields']['margen_papel_pedido'] + $linea_coste['fields']['margen_impresion_horas'] + $linea_coste['fields']['margen_click_pedido']; - + unset($linea_coste['fields']); array_push($values, $linea_coste); } + + // Calculo de los servicios (presimpresion y extra no dependen de nada) + $servicios = (object) (['coste' => 0.0, 'margen' => 0.0]); + + if ($json_data_acabados) { + $json_data_acabados = json_decode($json_data_acabados, true); + if (count($json_data_acabados) > 0) { + + $acabados = new Presupuestoacabados(); + $POD = (new \App\Models\Configuracion\ConfigVariableModel())->getVariable('POD')->value; + $result = $acabados->getServiciosAcabados($json_data_acabados, $reqData['tirada'], $POD); + if (count($result) > 0) { + foreach ($result as $servicio) { + $coste = round($servicio->total / (1 + $servicio->margen / 100), 2); + $margen = round($servicio->total - $coste, 2); + $servicios->coste += $coste; + $servicios->margen += $margen; + } + } + } + } + + if ($json_data_encuadernacion) { + $json_data_encuadernacion = json_decode($json_data_encuadernacion, true); + if (count($json_data_encuadernacion) > 0) { + + $encuadernacion = new Presupuestoencuadernaciones(); + $POD = (new \App\Models\Configuracion\ConfigVariableModel())->getVariable('POD')->value; + $result = $encuadernacion->getServiciosEncuadernacion($json_data_encuadernacion, $reqData['tirada'], $reqData['paginas'], $reqData['ancho'], $reqData['alto'], $POD); + if (count($result) > 0) { + foreach ($result as $servicio) { + $coste = round($servicio->total / (1 + $servicio->margen / 100), 2); + $margen = round($servicio->total - $coste, 2); + $servicios->coste += $coste; + $servicios->margen += $margen; + } + } + } + } + + if ($json_data_manipulado) { + $json_data_manipulado = json_decode($json_data_manipulado, true); + if (count($json_data_manipulado) > 0) { + $manipulados = new Presupuestomanipulados(); + $POD = (new \App\Models\Configuracion\ConfigVariableModel())->getVariable('POD')->value; + $result = $manipulados->getServiciosManipulado($json_data_manipulado, $reqData['tirada'], $POD); + if (count($result) > 0) { + foreach ($result as $servicio) { + $coste = round($servicio->total / (1 + $servicio->margen / 100), 2); + $margen = round($servicio->total - $coste, 2); + $servicios->coste += $coste; + $servicios->margen += $margen; + } + } + } + } + + $json_envios = $reqData['json_envios'] ?? null; + $coste_envio = 0.0; + $margen_envio = 0.0; + $tirada_base = floatval($reqData['tirada_base']); + $peso_libro = floatval($reqData['peso_libro']); + // el primer envio con la tirada base + $model = model('App\Models\Tarifas\TarifaEnvioModel'); + $envios = $model->getTarifaEnvio(1, 18000, $tirada_base * $peso_libro/1000.0, "cajas"); + $resultado = $this->calcular_envio($envios, $tirada_base * $peso_libro/1000.0); + $coste_envio += $resultado->coste; + $margen_envio += $resultado->margen; + + if ($json_envios) { + $json_envios = json_decode($json_envios, true); + if (count($json_envios) > 0) { + //la primera linea es el envio base + for($i = 1; $i < count($json_envios); $i++) { + + $porcentaje = ($json_envios[$i]['cantidad']) / $tirada_base * 100.0; + $cantidad = floor($reqData['tirada'] * $porcentaje / 100.0); + $peso_envio = $cantidad * $peso_libro / 1000.0; + + $paisId = $json_envios[$i]['pais_id']; + $cp = $json_envios[$i]['cp']; + $tipo_envio = $json_envios[$i]['entregaPieCalle'] == 1 ? 'palets' : 'cajas'; + + $model = model('App\Models\Tarifas\TarifaEnvioModel'); + $envios = $model->getTarifaEnvio($paisId, $cp, $peso_envio, $tipo_envio); + + $resultado = $this->calcular_envio($envios, $peso_envio); + $coste_envio += $resultado->coste; + $margen_envio += $resultado->margen; + } + } + } + + } else { $values = []; } @@ -279,8 +378,36 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro $response[$csrfTokenName] = $newTokenHash; $response['lineas'] = $values; + $response['servicios'] = $servicios; + $response['envios'] = (object) (['coste' => $coste_envio, 'margen' => $margen_envio]); return $this->respond($response); - + + } + + private function calcular_envio($envio, $peso_envio) + { + $coste_envio = 0.0; + $margen_envio = 0.0; + if (count(value: $envio) > 0) { + $envio = $envio[0]; + if ($envio->id != null) { + + if ($peso_envio > $envio->peso_max || floatval($envio->precio_max) == 0) { + $coste_envio += number_format(floatval($envio->precio_min) + ($peso_envio - floatval($envio->peso_min)) * floatval($envio->precio_adicional), 2); + } + // si no se calcula linealmente + else { + $m = (($envio->precio_max - $envio->precio_min) / ($envio->peso_max - $envio->peso_min)); + $b = $envio->precio_max - $m * $envio->peso_max; + $coste_envio = number_format($m * $peso_envio + $b, 2); + + } + + $margen_envio += $coste_envio * $envio->margen / 100.0; + } + } + + return (object) (['coste' => $coste_envio, 'margen' => $margen_envio]); } } diff --git a/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php b/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php index 7c4d4c54..e2553235 100644 --- a/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php +++ b/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php @@ -336,4 +336,25 @@ class TarifaAcabados extends BaseResourceController } return $this->response->setJSON($query->get()->getResultObject()); } + + public function getSelect2() + { + if ($this->request->isAJAX()) { + $query = $this->model->builder()->select( + [ + "id", + "nombre as name" + ] + )->where("deleted_at", null); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("lg_tarifas_acabado.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } } diff --git a/ci4/app/Controllers/Tarifas/Tarifaextra.php b/ci4/app/Controllers/Tarifas/Tarifaextra.php index 1b5591a4..28ea2f1b 100755 --- a/ci4/app/Controllers/Tarifas/Tarifaextra.php +++ b/ci4/app/Controllers/Tarifas/Tarifaextra.php @@ -239,4 +239,25 @@ class Tarifaextra extends \App\Controllers\GoBaseController } } + public function getSelect2() + { + if ($this->request->isAJAX()) { + $query = $this->model->builder()->select( + [ + "id", + "nombre as name" + ] + )->where("deleted_at", null) + ->where("mostrar_en_presupuesto", 1); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("tarifa_extra.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } } diff --git a/ci4/app/Controllers/Tarifas/Tarifapreimpresion.php b/ci4/app/Controllers/Tarifas/Tarifapreimpresion.php index 5b6ada95..6d26178e 100755 --- a/ci4/app/Controllers/Tarifas/Tarifapreimpresion.php +++ b/ci4/app/Controllers/Tarifas/Tarifapreimpresion.php @@ -242,4 +242,25 @@ class Tarifapreimpresion extends \App\Controllers\GoBaseController } } + public function getSelect2() + { + if ($this->request->isAJAX()) { + $query = $this->model->builder()->select( + [ + "id", + "nombre as name" + ] + )->where("deleted_at", null) + ->where("mostrar_en_presupuesto", 1); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("lg_tarifa_preimpresion.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } } diff --git a/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php b/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php index 4fea5fe3..11d8b273 100755 --- a/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php +++ b/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php @@ -356,4 +356,26 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController } return $dimensiones; } + + public function getSelect2() + { + if ($this->request->isAJAX()) { + $query = $this->model->builder()->select( + [ + "id", + "nombre as name" + ] + )->where("deleted_at", null) + ->where("mostrar_en_presupuesto", 1); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("tarifa_encuadernacion.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } } diff --git a/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php b/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php index ce497cd4..a55c900b 100755 --- a/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php +++ b/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php @@ -310,4 +310,26 @@ class Tarifasmanipulado extends \App\Controllers\BaseResourceController } return $this->response->setJSON($query->get()->getResultObject()); } + + public function getSelect2() + { + if ($this->request->isAJAX()) { + $query = $this->model->builder()->select( + [ + "id", + "nombre as name" + ] + )->where("deleted_at", null) + ->where("mostrar_en_presupuesto", 1); + if ($this->request->getGet("q")) { + $query->groupStart() + ->orLike("lg_tarifa_manipulado.nombre", $this->request->getGet("q")) + ->groupEnd(); + } + + return $this->response->setJSON($query->get()->getResultObject()); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } } diff --git a/ci4/app/Entities/Configuracion/Maquina.php b/ci4/app/Entities/Configuracion/Maquina.php index 11b5496b..1ccdef6a 100755 --- a/ci4/app/Entities/Configuracion/Maquina.php +++ b/ci4/app/Entities/Configuracion/Maquina.php @@ -1,7 +1,12 @@ "int", "user_updated_id" => "int", ]; + + public function papeles_impresion() : ?array + { + $m = model(MaquinasPapelesImpresionModel::class); + return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll(); + } + public function maquina_defecto(): ?array + { + $m = model(MaquinasDefectoModel::class); + return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll(); + } + public function maquina_calles() : ?array + { + $m = model(MaquinasCallesModel::class); + return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll(); + } + public function tarifas_impresion() : ?array + { + $m = model(MaquinasTarifasImpresionModel::class); + return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll(); + } + public function withAll() : self + { + $this->attributes['papeles_impresion'] = $this->papeles_impresion(); + $this->attributes['maquina_calles'] = $this->maquina_calles(); + $this->attributes['maquina_defecto'] = $this->maquina_defecto(); + $this->attributes['tarifas_impresion'] = $this->tarifas_impresion(); + + return $this; + } } diff --git a/ci4/app/Entities/Configuracion/PapelImpresion.php b/ci4/app/Entities/Configuracion/PapelImpresion.php index 4d79a06e..d977764c 100755 --- a/ci4/app/Entities/Configuracion/PapelImpresion.php +++ b/ci4/app/Entities/Configuracion/PapelImpresion.php @@ -1,6 +1,9 @@ "boolean", "is_deleted" => "int", ]; + + public function tipologia() : ?array + { + $m = model(PapelImpresionTipologiaModel::class); + return $m->asArray()->where('papel_impresion_id',$this->attributes["id"])->findAll(); + } + public function maquinas_impresion() : ?array + { + $m = model(MaquinasPapelesImpresionModel::class); + return $m->asArray()->where('papel_impresion_id',$this->attributes["id"])->findAll(); + } + public function margen() : ?array + { + $m = model(PapelImpresionMargenModel::class); + return $m->asArray()->where('papel_impresion_id',$this->attributes["id"])->findAll(); + } } diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php index 660beb08..92eca96c 100755 --- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php +++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php @@ -31,7 +31,6 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "retractilado" => false, "retractilado5" => false, "guardas" => false, - "faja_color" => false, "recoger_en_taller" => false, "ferro" => false, "ferro_digital" => false, @@ -53,6 +52,9 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "solapas_ancho" => 0.0, "solapas_sobrecubierta" => false, "solapas_ancho_sobrecubierta" => 0.0, + "faja_color" => false, + "solapas_ancho_faja_color" => 0.0, + "alto_faja_color" => 0.0, "cosido" => false, "sobrecubiertas" => false, "sobrecubiertas_ancho" => 0.0, @@ -63,6 +65,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "comentarios_pdf" => null, "comentarios_tarifa" => null, "comentarios_produccion" => null, + "comentarios_presupuesto" => null, "lomo_cubierta" => null, "lomo_sobrecubierta" => null, "total_presupuesto" => null, @@ -107,6 +110,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity 'paginasCuadernillo' => null, 'lomo_redondo' => null, 'cabezada' => null, + 'envio_base' => null, ]; protected $casts = [ "cliente_id" => "int", @@ -116,11 +120,9 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "tipologia_id" => "?int", "pais_id" => "int", "estado_id" => "int", - "inc_rei" => "?int", "retractilado" => "boolean", "retractilado5" => "boolean", "guardas" => "boolean", - "faja_color" => "boolean", "recoger_en_taller" => "boolean", "ferro" => "boolean", "ferro_digital" => "boolean", @@ -136,6 +138,9 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "solapas_ancho" => "float", "solapas_sobrecubierta" => "boolean", "solapas_ancho_sobrecubierta" => "float", + "faja_color" => "boolean", + "solapas_ancho_faja_color" => "float", + "alto_faja_color" => "float", "cosido" => "boolean", "sobrecubiertas" => "boolean", "sobrecubiertas_ancho" => "float", diff --git a/ci4/app/Entities/Configuracion/TareaMaquinaEntity.php b/ci4/app/Entities/Tarifas/Maquinas/TareaMaquinaEntity.php similarity index 100% rename from ci4/app/Entities/Configuracion/TareaMaquinaEntity.php rename to ci4/app/Entities/Tarifas/Maquinas/TareaMaquinaEntity.php diff --git a/ci4/app/Entities/Usuarios/UserEntity.php b/ci4/app/Entities/Usuarios/UserEntity.php index 61f750ce..34206cad 100755 --- a/ci4/app/Entities/Usuarios/UserEntity.php +++ b/ci4/app/Entities/Usuarios/UserEntity.php @@ -13,6 +13,7 @@ class UserEntity extends \CodeIgniter\Entity\Entity "status" => null, "status_message" => null, 'active' => null, + "comments" => null, "last_active" => null, "created_at" => null, "updated_at" => null, diff --git a/ci4/app/Language/es/App.php b/ci4/app/Language/es/App.php index f2f5f26f..d41d02fe 100755 --- a/ci4/app/Language/es/App.php +++ b/ci4/app/Language/es/App.php @@ -32,7 +32,8 @@ return [ "global_pdf" => "PDF", "global_prev" => "Anterior", "global_next" => "Siguiente", - + "global_save_file" => "Guardar ficheros", + "global_upload_files" => "Subir ficheros", // LOGIN - Index "login_title" => "Iniciar sesión en su cuenta", "login_email" => "Correo Electrónico", @@ -695,7 +696,7 @@ return [ "menu_papelgenerico" => "Papel generico", "menu_papelimpresion" => "Papel impresión", "menu_series_facturas" => "Series facturas", - "menu_servicios_cliente" => "Servicios cliente", + "menu_maquina_tareas" => "Tareas máquinas", "menu_ubicaciones" => "Ubicaciones", "menu_serviciocliente" => "Servicio cliente", "menu_tamanioformatos" => "Tamaño formatos", diff --git a/ci4/app/Language/es/Basic.php b/ci4/app/Language/es/Basic.php index bb333f54..be74f2d1 100755 --- a/ci4/app/Language/es/Basic.php +++ b/ci4/app/Language/es/Basic.php @@ -28,6 +28,8 @@ return [ 'Profile' => 'Perfil', 'Roles' => 'Roles', 'Save' => 'Guardar', + 'Copy' => 'Copiar', + 'Duplicate' => 'Duplicar', 'Sections' => 'Secciones', 'SignOut' => 'Desconectar', 'Success' => 'Éxito', diff --git a/ci4/app/Language/es/ServicioCliente.php b/ci4/app/Language/es/MaquinaTarea.php similarity index 71% rename from ci4/app/Language/es/ServicioCliente.php rename to ci4/app/Language/es/MaquinaTarea.php index 5218a72b..4e259c7e 100644 --- a/ci4/app/Language/es/ServicioCliente.php +++ b/ci4/app/Language/es/MaquinaTarea.php @@ -2,13 +2,14 @@ return [ - "cardTitle" => "Servicios cliente", + "cardTitle" => "Máquina tareas", + "tarea_new" => "Crear tarea", "infoTarifaManipulado" => "La tarifa seleccionada estará asociada al servicio.", "infoTarifaAcabado" => "La tarifa seleccionada estará asociada al servicio.", "datatable" => [ "nombre" => "Nombre", - "code" => "Código", + "description" => "Descripción", "created_at" => "Fecha creación", ] ]; \ No newline at end of file diff --git a/ci4/app/Language/es/Maquinas.php b/ci4/app/Language/es/Maquinas.php index 3ee7b210..6971e9fa 100755 --- a/ci4/app/Language/es/Maquinas.php +++ b/ci4/app/Language/es/Maquinas.php @@ -43,6 +43,7 @@ return [ 'velocidad' => 'Velocidad', 'velocidadCorte' => 'Velocidad Corte', 'maquina_tarea' => 'Máquina tarea', + 'namePlaceholderDuplicated' => "Inserte el nombre de la máquina a duplicar ...", 'validation' => [ 'alto_menor_alto_impresion' => 'El campo \'Alto impresión\' debe ser menor que \'Alto\'', 'ancho_menor_ancho_impresion' => '\'Ancho Impresión\' debe ser menor que \'Ancho\'', diff --git a/ci4/app/Language/es/PapelImpresion.php b/ci4/app/Language/es/PapelImpresion.php index 939442db..0b2f919c 100755 --- a/ci4/app/Language/es/PapelImpresion.php +++ b/ci4/app/Language/es/PapelImpresion.php @@ -39,6 +39,7 @@ return [ 'activo' => 'Activo?', 'useInClient' => 'Usar en presup. cliente', 'userUpdateId' => 'ID usuario actualización', + 'namePlaceholderDuplicated' => 'Inserte el nombre del papel que se va a duplicar', 'consumo_tintas_rotativas' => 'Consumo tintas', 'maquinas_papel' => 'Máquinas seleccionadas', diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index b9bcfc34..cc5f99b8 100755 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -130,6 +130,8 @@ return [ 'estucadoMate170gr' => 'Estucado mate 170 gr', 'estucadoMate200gr' => 'Estucado mate 200 gr', + 'acabadoNinguno' => 'Ninguno', + 'fajaColor' => 'Imprimir faja a color', 'compInteriorPlana' => 'Interior en plana', 'compInteriorRotativa' => 'Interior en rotativa', @@ -143,6 +145,7 @@ return [ 'libro' => 'Libro', 'totalPapelPedido' => 'Papel pedido', 'lomo' => 'Lomo', + 'lomoRedondo' => 'Lomo redondo', 'peso' => 'Peso', 'click' => 'Click', 'totalClicks' => 'Total clicks', @@ -163,6 +166,7 @@ return [ 'solapasSobrecubierta' => 'Solapas sobrecub.', 'solapasAnchoCubierta' => 'Ancho solapas cub.', 'solapasAnchoSobrecubierta' => 'Ancho solapas sobrecub.', + 'sinImpresion' => 'Sin impresion', 'unaCara' => '1 cara', 'dosCaras' => '2 caras', @@ -195,6 +199,7 @@ return [ 'totalLinea' => 'TOTAL LÍNEA', 'verCalculos' => 'Cálculos', 'metrosMinuto' => 'Metros x min.', + 'clicksMinuto' => 'Clicks x min.', 'resolucion' => 'Resolución (dpi)', 'areaPaginas' => 'Área páginas (in)', 'gotasNegro' => 'Nº gotas negro', @@ -272,12 +277,14 @@ return [ 'previewConfiguracionGuardas' => 'Configuración de guardas', 'previewConfiguracionCubierta' => 'Configuración de cubierta', 'previewConfiguracionSobrecubierta' => 'Configuración de sobrecubierta', + 'previewConfiguracionFaja' => 'Configuración de faja', 'previewEsquemaCubierta' => 'Esquema de cubierta', 'previewConfiguracionEsquemaCubierta' => 'Configuración esquema de cubierta', 'previewMaquinaPlana' => 'Configuración del papel: Plana', 'previewMaquinaRotativa' => 'Configuración del papel: Rotativa', 'previewCubierta' => 'Configuración del papel: Cubierta', 'previewSobrecubierta' => 'Configuración del papel: Sobrecubierta', + 'previewFaja' => 'Configuración del papel: Faja', 'previewPapelGenerico' => 'Papel Genérico', 'previewPapelCompra' => 'Papel de Compra', 'previewAreaImpresion' => 'Área de Impresión', @@ -313,7 +320,7 @@ return [ 'tiradasAlternativas' => 'Tiradas alternativas', 'tiradasInfoIVA' => 'Los precios mostrados no incluyen IVA', 'tiradaMargen' => 'Margen', - 'tiradaEnvio' => 'Coste Envío', + 'tiradaEnvio' => 'Precio Envío', 'tiradaImpresion' => 'Coste Impresión', 'duplicado' => 'DUPLICADO', @@ -328,7 +335,7 @@ return [ 'actualizacionSolapasCubierta' => 'El tamaño de las solapas de la cubierta se ha actualizado debido a que supera el máximo permitido (este valor depende del ancho del libro y del número de páginas).', 'actualizacionSolapasSobrecubierta' => 'El tamaño de las solapas de la sobrecubierta se ha actualizado debido a que supera el máximo permitido (este valor depende del ancho del libro y del número de páginas).', - + 'files' => 'Ficheros', 'titulos' => [ 'libroFresadoTapaDura' => 'Rústica Fresado tapa dura', 'libroFresadoTapaBlanda' => 'Rústica Fresado tapa blanda', @@ -369,6 +376,9 @@ return [ 'paginas' => 'El campo páginas tiene que ser mayor que cero', 'paginasLP' => 'El número de páginas no coincide con el total', 'tiradas' => 'El campo tiradas tiene que ser mayor que cero', + 'seleccionePapel' => 'Seleccione un papel', + 'seleccioneGramaje' => 'Seleccione un gramaje', + 'seleccioneCliente' => 'Seleccione un cliente', 'dimension' => 'La dimensión del libro tiene que ser mayor que 60mm', 'lineaDuplicada' => 'Ya existe ese tipo de linea en el presupuesto', 'errorRotColor' => 'Papeles y gramajes deben ser iguales en color y BN', @@ -380,6 +390,8 @@ return [ 'noInterior' => 'No se hay resultados para el interior', 'noCubiertaSobrecubierta' => 'No se hay resultados para cubierta/sobrecubierta', 'errorPresupuesto' => 'Se ha producido un error al calcular el presupuesto. Póngase en contacto con el administrador', + 'error_sobrecubierta_sin_solapas' => 'Debe seleccionar "sobrecubierta" en los datos del libro para introducir el ancho de solapa', + 'error_faja_sin_solapas' => 'Debe seleccionar "faja" en los datos del libro para introducir el ancho de solapa' ], ]; diff --git a/ci4/app/Language/es/Tarifaacabado.php b/ci4/app/Language/es/Tarifaacabado.php index 3c6622ff..5bdd61e9 100755 --- a/ci4/app/Language/es/Tarifaacabado.php +++ b/ci4/app/Language/es/Tarifaacabado.php @@ -9,6 +9,7 @@ return [ 'id' => 'ID', 'moduleTitle' => 'Tarifas Acabado', 'nombre' => 'Nombre', + 'margen' => 'Margen', 'precioMin' => 'Precio Mínimo', 'importeFijo' => 'Importe Fijo', 'mostrar_en_presupuesto' => 'Mostrar en presupuesto', diff --git a/ci4/app/Libraries/SafekatFtpClient.php b/ci4/app/Libraries/SafekatFtpClient.php index 98259ba2..663e8c7a 100644 --- a/ci4/app/Libraries/SafekatFtpClient.php +++ b/ci4/app/Libraries/SafekatFtpClient.php @@ -58,12 +58,14 @@ class SafekatFtpClient public function uploadFilePresupuesto(int $presupuesto_id) { try { + if ($this->xml_enabled == false) return false; $model = model(PresupuestoFicheroModel::class); $modelPedidoLinea = model(PedidoLineaModel::class); $pedidoLinea = $modelPedidoLinea->findByPresupuesto($presupuesto_id); - $rootIdExtern = 1e6 + $pedidoLinea->pedido_id; + $rootIdExtern = $this->pedido_xml_config->id_offset + $pedidoLinea->pedido_id; $presupuestoFiles = $model->getFiles($presupuesto_id); $this->ftp->login(username: $this->username, password: $this->password); + foreach ($presupuestoFiles as $key => $value) { $filename = array_reverse(explode("/", $value->file_path))[0]; $remoteDir = implode("/", [$this->base_dir,"pedidos_files",$rootIdExtern]); @@ -73,6 +75,29 @@ class SafekatFtpClient } $this->ftp->put($remoteFile,$value->file_path,mode:$this->ftp::SOURCE_LOCAL_FILE); } + $this->ftp->disconnect(); + } catch (Exception $e) { + log_message('error', $e->getMessage()); + throw $e; + } + } + public function removeFiles(int $presupuesto_id) + { + try { + // if ($this->xml_enabled == false) return false; + $model = model(PresupuestoFicheroModel::class); + $modelPedidoLinea = model(PedidoLineaModel::class); + $pedidoLinea = $modelPedidoLinea->findByPresupuesto($presupuesto_id); + $rootIdExtern = $this->pedido_xml_config->id_offset + $pedidoLinea->pedido_id; + $presupuestoFiles = $model->getFiles($presupuesto_id); + $this->ftp->login(username: $this->username, password: $this->password); + + foreach ($presupuestoFiles as $key => $value) { + $filename = array_reverse(explode("/", $value->file_path))[0]; + $remoteFile = implode("/", [$this->base_dir,"pedidos_files",$rootIdExtern,$filename]); + $this->ftp->delete($remoteFile); + } + $this->ftp->disconnect(); } catch (Exception $e) { log_message('error', $e->getMessage()); throw $e; diff --git a/ci4/app/Models/Clientes/ClienteDireccionesModel.php b/ci4/app/Models/Clientes/ClienteDireccionesModel.php index e60eab05..7f2c96a6 100755 --- a/ci4/app/Models/Clientes/ClienteDireccionesModel.php +++ b/ci4/app/Models/Clientes/ClienteDireccionesModel.php @@ -99,7 +99,7 @@ class ClienteDireccionesModel extends \App\Models\BaseModel ->table($this->table . " t1") ->select( "t1.id AS id, t1.cliente_id AS cliente_id, t2.nombre as cliente_nombre, t1.att AS att, t1.alias AS alias, - t1.email AS email, t1.direccion AS direccion, t1.pais_id AS pais_id, t3.nombre AS pais, + t1.email AS email, t1.direccion AS direccion, t1.pais_id AS pais_id, t3.nombre AS pais, t3.nombre AS pais, t1.municipio AS municipio, t1.provincia AS provincia, t1.cp AS cp, t1.telefono AS telefono" ); diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index c1f5424b..159d5e02 100755 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -330,7 +330,7 @@ class MaquinaModel extends \App\Models\BaseModel ->table($this->table . " t1") ->distinct('t1.id') ->select( - "t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion, + "t1.id AS id, t1.id AS maquina_id, t1.nombre AS maquina, t1.nombre AS nombre, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.ancho AS ancho, t1.alto AS alto, t1.is_rotativa AS is_rotativa, t1.is_inkjet AS is_inkjet, t1.alto_click AS alto_click, t1.velocidad AS velocidad, t1.precio_tinta_negro AS precio_tinta_negro, t1.precio_tinta_color AS precio_tinta_color, t1.precio_tinta_cg AS precio_tinta_cg, @@ -361,7 +361,7 @@ class MaquinaModel extends \App\Models\BaseModel $builder->where("t2.uso", $uso_tarifa); } - return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); + return $builder; } diff --git a/ci4/app/Models/Configuracion/MaquinaTareaModel.php b/ci4/app/Models/Configuracion/MaquinaTareaModel.php index 536b7fd9..b1f44991 100644 --- a/ci4/app/Models/Configuracion/MaquinaTareaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaTareaModel.php @@ -3,6 +3,9 @@ namespace App\Models\Configuracion; use App\Entities\Tarifas\Maquinas\TareaMaquinaEntity; +use CodeIgniter\Database\BaseBuilder; +use CodeIgniter\Database\MySQLi\Builder; +use CodeIgniter\Database\Query; use CodeIgniter\Model; class MaquinaTareaModel extends Model @@ -55,14 +58,19 @@ class MaquinaTareaModel extends Model * @return array * */ - public function getSelectQuery(?string $q = null) : array + public function getSelectQuery(?string $q = null): array { - $query = $this->builder()->select(["id","name","description"]) - ->where("deleted_at",null); - if($q){ - $query->like("nombre",$q); + $query = $this->builder()->select(["id", "name", "description"]) + ->where("deleted_at", null); + if ($q) { + $query->like("nombre", $q); } return $query->get()->getResultArray(); } + public function getQueryDatatable(): BaseBuilder + { + return $this->builder()->select(["id","name","description","created_at"]) + ->where("deleted_at", null); + } } diff --git a/ci4/app/Models/Configuracion/MaquinasCallesModel.php b/ci4/app/Models/Configuracion/MaquinasCallesModel.php index 817be4d3..df4538ef 100755 --- a/ci4/app/Models/Configuracion/MaquinasCallesModel.php +++ b/ci4/app/Models/Configuracion/MaquinasCallesModel.php @@ -42,7 +42,7 @@ class MaquinasCallesModel extends \App\Models\BaseModel protected $validationRules = [ "formas" => [ - "rules" => "required|int", + "rules" => "required|integer", ], "internas" => [ "rules" => "required|decimal", diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index 4f2d8cf9..41aa10d7 100755 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -129,141 +129,225 @@ class PapelGenericoModel extends \App\Models\BaseModel return empty($search) ? $builder : $builder - ->groupStart() - ->like("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.code", $search) - ->orLike("t1.code_ot", $search) - ->orLike("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.code", $search) - ->orLike("t1.code_ot", $search) - ->groupEnd(); + ->groupStart() + ->like("t1.id", $search) + ->orLike("t1.nombre", $search) + ->orLike("t1.code", $search) + ->orLike("t1.code_ot", $search) + ->orLike("t1.id", $search) + ->orLike("t1.nombre", $search) + ->orLike("t1.code", $search) + ->orLike("t1.code_ot", $search) + ->groupEnd(); } - public function getPapelForComparador($tipo, $is_cubierta = false, $is_sobrecubierta = false, $rotativa = false, $is_guardas = false, $mostrar_cliente = null) - { + public function getPapelForComparador( + $tipo, + $is_cubierta = false, + $is_sobrecubierta = false, + $rotativa = false, + $is_guardas = false, + $tapa_dura = false, + $POD = false, + $ancho = 0, + $alto = 0, + $tirada = 0 + ) { /* 1.-> Tipo impresion 2.-> Maquina 3.-> Papeles impresion asociados a esa maquina 4.-> papeles genericos que aparecen en esos papeles impresion */ + + if ($POD == true && ($tipo == 'color' || $tipo == 'negro')) { + if ($tipo == 'color') + $tipo = 'colorhq'; + else if ($tipo == 'negro') + $tipo = 'negrohq'; + } + $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id as id, t1.nombre AS nombre" + "t1.id as id, t1.nombre AS nombre", // for debug, t2.nombre AS nombre_papel_impresion, t4.nombre AS maquina_nombre, t5.uso AS tarifa_uso, t5.tipo AS tarifa_tipo" ) - ->distinct('t1.id') - ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") - ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") - ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") - ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "left") + ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "inner") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "inner") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "inner") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "inner") ->where("t1.is_deleted", 0) + ->where("t1.show_in_client", 1) ->where("t2.is_deleted", 0) ->where("t2.isActivo", 1) ->where("t3.active", 1) ->where("t4.is_deleted", 0) ->where("t4.tipo", "impresion") + ->where("t4.min <= ", $tirada) + ->where("t4.max >= ", $tirada) ->where("t5.is_deleted", 0) - ->where("t5.tipo", $tipo); + ->where("t5.tipo", $tipo) + ->distinct('t1.id'); + + // Validación adicional para asegurar que t1.id esté presente en las combinaciones con t3.active = 1 + $builder->whereIn("t1.id", function ($subQuery) { + $subQuery->select("t1_inner.id") + ->from("lg_papel_generico t1_inner") + ->join("lg_papel_impresion t2_inner", "t2_inner.papel_generico_id = t1_inner.id", "inner") + ->join("lg_maquina_papel_impresion t3_inner", "t3_inner.papel_impresion_id = t2_inner.id", "inner") + ->where("t3_inner.active", 1); + }); + + $builder->groupStart() + ->groupStart() + ->where("t4.ancho_impresion >", $ancho) + ->where("t4.alto_impresion >", $alto) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $alto) + ->where("t4.alto_impresion >", $ancho) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $alto) + ->where("t4.is_rotativa", 1) + ->groupEnd() + ->groupEnd(); if ($is_cubierta == true) { - $builder->where("t2.cubierta", 1); $builder->where("t5.uso", 'cubierta'); - } - - if ($is_sobrecubierta == true) { + if ($tapa_dura == true) { + $builder->where("t2.use_for_tapa_dura", 1); + } + } else if ($is_sobrecubierta == true) { $builder->where("t2.sobrecubierta", 1); $builder->where("t5.uso", 'sobrecubierta'); - } - - if ($is_cubierta == false && $is_sobrecubierta == false) { - $builder->where("t5.uso", 'interior'); - } - - if ($is_guardas == true) { + } else if ($is_guardas == true) { $builder->where("t2.guardas", 1); + } else { + $builder->where("t2.interior", 1); + $builder->where("t5.uso", 'interior'); + if ($tipo == 'negro' || $tipo == 'negrohq') + $builder->where("t2.bn", 1); + else if ($tipo == 'color' || $tipo == 'colorhq') + $builder->where("t2.color", 1); } - if ($rotativa == true) { + if ($tipo == 'colorhq' || $tipo == 'negrohq') { + $builder->where("t2.rotativa", 0); + } else if ($rotativa && $POD == false) { $builder->where("t2.rotativa", 1); + } else if ($POD) { + $builder->where("t2.rotativa", 0); } - if ($mostrar_cliente != null) { - $builder->where("t1.show_in_client", $mostrar_cliente); - } - - $data = $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); - //var_dump($this->db->getLastQuery()); - return $data; + //$query = $this->db->getLastQuery(); + return $builder; } - public function getGramajeComparador(string $papel_generico_nombre = "", $uso = "", $ejemplares = 0) - { - if ($uso == 'cubierta' || $uso == 'sobrecubierta') - $tipo = 'colorhq'; - else - $tipo = $uso; // color y colorhq valen para los dos - if ($uso == 'bn') - $tipo = "negro"; - if ($uso == 'bnhq') - $tipo = "negrohq"; + public function getGramajeForComparador( + $tipo, + $selected_papel_id, + $is_cubierta = false, + $is_sobrecubierta = false, + $rotativa = false, + $is_guardas = false, + $tapa_dura = false, + $POD = false, + $ancho = 0, + $alto = 0, + $tirada = 0 + ) { + if ($POD == true && ($tipo == 'color' || $tipo == 'negro')) { + if ($tipo == 'color') + $tipo = 'colorhq'; + else if ($tipo == 'negro') + $tipo = 'negrohq'; + } + $builder = $this->db ->table($this->table . " t1") ->select( - "t2.gramaje AS text" + "t2.gramaje as id, t2.gramaje as nombre", + // for debug, t2.nombre AS nombre_papel_impresion, t4.nombre AS maquina_nombre, t5.uso AS tarifa_uso, t5.tipo AS tarifa_tipo" ) - ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") - ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") - ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") - ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "left") + ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "inner") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "inner") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "inner") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "inner") + ->where("t1.id", $selected_papel_id) ->where("t1.is_deleted", 0) + ->where("t1.show_in_client", 1) ->where("t2.is_deleted", 0) ->where("t2.isActivo", 1) ->where("t3.active", 1) ->where("t4.is_deleted", 0) + ->where("t4.min <= ", $tirada) + ->where("t4.max >= ", $tirada) ->where("t4.tipo", "impresion") + ->where("t5.is_deleted", 0) ->where("t5.tipo", $tipo) - ->where("t1.nombre", $papel_generico_nombre); + ->distinct('t2.gramaje'); - $uso_tarifa = 'interior'; + // Validación adicional para asegurar que t1.id esté presente en las combinaciones con t3.active = 1 + $builder->whereIn("t1.id", function ($subQuery) { + $subQuery->select("t1_inner.id") + ->from("lg_papel_generico t1_inner") + ->join("lg_papel_impresion t2_inner", "t2_inner.papel_generico_id = t1_inner.id", "inner") + ->join("lg_maquina_papel_impresion t3_inner", "t3_inner.papel_impresion_id = t2_inner.id", "inner") + ->where("t3_inner.active", 1); + }); - if ($uso == 'bn' || $uso == 'bnhq') - $builder->where("t2.bn", 1); - else if ($uso == 'color' || $uso == 'colorhq') - $builder->where("t2.color", 1); - else if ($uso == 'cubierta') { - $uso_tarifa = 'cubierta'; + $builder->groupStart() + ->groupStart() + ->where("t4.ancho_impresion >", $ancho) + ->where("t4.alto_impresion >", $alto) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $alto) + ->where("t4.alto_impresion >", $ancho) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $alto) + ->where("t4.is_rotativa", 1) + ->groupEnd() + ->groupEnd(); + + if ($is_cubierta == true) { $builder->where("t2.cubierta", 1); - } else if ($uso == 'sobrecubierta') { - $uso_tarifa = 'sobrecubierta'; + $builder->where("t5.uso", 'cubierta'); + if ($tapa_dura == true) { + $builder->where("t2.use_for_tapa_dura", 1); + } + } else if ($is_sobrecubierta == true) { $builder->where("t2.sobrecubierta", 1); + $builder->where("t5.uso", 'sobrecubierta'); + } else if ($is_guardas == true) { + $builder->where("t2.guardas", 1); + } else { + $builder->where("t2.interior", 1); + $builder->where("t5.uso", 'interior'); + if ($tipo == 'negro' || $tipo == 'negrohq') + $builder->where("t2.bn", 1); + else if ($tipo == 'color' || $tipo == 'colorhq') + $builder->where("t2.color", 1); } - $builder->where("t5.uso", $uso_tarifa); - - $builder->where("t4.min <=", $ejemplares); - $builder->where("t4.max >=", $ejemplares); - - $values = $builder->orderBy("t2.gramaje", "asc")->get()->getResultObject(); - $id = 1; - foreach ($values as $value) { - $value->id = $id; - $id++; + if ($tipo == 'colorhq' || $tipo == 'negrohq') { + $builder->where("t2.rotativa", 0); + } else if ($rotativa && $POD == false) { + $builder->where("t2.rotativa", 1); + } else if ($POD) { + $builder->where("t2.rotativa", 0); } - $values_array = array_map(function ($value) { - return $value->text; - }, $values); - $unique_values = array_unique($values_array); - return array_values(array_intersect_key($values, $unique_values)); + //$query = $this->db->getLastQuery(); + return $builder; } //tipo: negro, negrohq, color, colorhq @@ -323,12 +407,20 @@ class PapelGenericoModel extends \App\Models\BaseModel }, $values); $unique_values = array_unique($values_array); return array_values(array_intersect_key($values, $unique_values)); - } - public function getPapelCliente($tipo, $is_cubierta = false, $selected_papel_id = null, $tapa_dura = null, $papel_especial = false, $POD = null) - { + public function getPapelCliente( + $tipo, + $is_cubierta = false, + $selected_papel_id = null, + $tapa_dura = null, + $papel_especial = false, + $POD = null, + $ancho = 0, + $alto = 0, + $tirada = 0 + ) { /* 1.-> Tipo impresion 2.-> Maquina @@ -337,9 +429,9 @@ class PapelGenericoModel extends \App\Models\BaseModel */ if ($POD == true && ($tipo == 'color' || $tipo == 'negro')) { - if($tipo == 'color') + if ($tipo == 'color') $tipo = 'colorhq'; - else if($tipo == 'negro') + else if ($tipo == 'negro') $tipo = 'negrohq'; } @@ -363,6 +455,8 @@ class PapelGenericoModel extends \App\Models\BaseModel ->where("t2.use_in_client", 1) ->where("t3.active", 1) ->where("t4.is_deleted", 0) + ->where("t4.min <= ", $tirada) + ->where("t4.max >= ", $tirada) ->where("t4.tipo", "impresion") ->where("t5.is_deleted", 0) ->where("t5.tipo", $tipo) @@ -386,6 +480,8 @@ class PapelGenericoModel extends \App\Models\BaseModel ->where("t2.use_in_client", 1) ->where("t3.active", 1) ->where("t4.is_deleted", 0) + ->where("t4.min <= ", $tirada) + ->where("t4.max >= ", $tirada) ->where("t4.tipo", "impresion") ->where("t5.is_deleted", 0) ->where("t5.tipo", $tipo) @@ -400,10 +496,25 @@ class PapelGenericoModel extends \App\Models\BaseModel ->where("t3_inner.active", 1); }); + $builder->groupStart() + ->groupStart() + ->where("t4.ancho_impresion >", $ancho) + ->where("t4.alto_impresion >", $alto) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $alto) + ->where("t4.alto_impresion >", $ancho) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $alto) + ->where("t4.is_rotativa", 1) + ->groupEnd() + ->groupEnd(); + if ($is_cubierta == true) { $builder->where("t2.cubierta", 1); $builder->where("t5.uso", 'cubierta'); - if($tapa_dura == true){ + if ($tapa_dura == true) { $builder->where("t2.use_for_tapa_dura", 1); } } else { @@ -417,19 +528,16 @@ class PapelGenericoModel extends \App\Models\BaseModel if ($papel_especial == true) { $builder->where("t1.show_in_client_special", 1); - } - else{ + } else { $builder->where("t1.show_in_client_special", 0); } if ($tipo == 'colorhq' || $tipo == 'negrohq') { $builder->where("t2.rotativa", 0); - } - else{ - if($POD == false){ + } else { + if ($POD == false) { $builder->where("t2.rotativa", 1); - } - else if ($POD == true){ + } else if ($POD == true) { $builder->where("t2.rotativa", 0); } } diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index de9473b9..3625daa7 100755 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -279,8 +279,15 @@ class PapelImpresionModel extends \App\Models\BaseModel //tipo: negro, negrohq, color, colorhq //uso: interior, rotativa, cubierta, sobrecubierta - public function getPapelesImpresionForMenu($papel_generico = null, $gramaje = null, $tipo = null, $uso = "") - { + public function getPapelesImpresionForMenu( + $papel_generico = null, + $gramaje = null, + $tipo = null, + $uso = "", + $tapaDura = false, + $forInkjet = false + ) { + $builder = $this->db ->table($this->table . " t1") ->distinct("t1.id") @@ -289,7 +296,7 @@ class PapelImpresionModel extends \App\Models\BaseModel ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") ->join("lg_maquinas_tarifas_impresion t5", "t4.id = t5.maquina_id", "left") ->select( - "t1.id AS id, t1.nombre AS text" + "t1.id AS id, t1.nombre AS nombre" ); $builder->where("t1.is_deleted", 0); @@ -304,24 +311,31 @@ class PapelImpresionModel extends \App\Models\BaseModel $builder->where("t2.id", $papel_generico); $builder->where("t1.gramaje", $gramaje); - if ($uso == 'cubierta') + if ($uso == 'cubierta') { + if ($tapaDura) + $builder->where("t1.use_for_tapa_dura", 1); $builder->where("t1.cubierta", 1); - else if ($uso == 'sobrecubierta') + } else if ($uso == 'sobrecubierta') $builder->where("t1.sobrecubierta", 1); else if ($uso == 'guardas') $builder->where("t1.guardas", 1); else { + $builder->where("t1.interior", 1); if ($tipo == 'negro' || $tipo == 'negrohq') $builder->where("t1.bn", 1); else if ($tipo == 'color' || $tipo == 'colorhq') $builder->where("t1.color", 1); } - if ($uso == 'rotativa') + if ($uso == 'rotativa') { $builder->where("t1.rotativa", 1); - else + $builder->where("t4.is_rotativa", 1); + } else $builder->where("t1.rotativa", 0); - return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); + if ($forInkjet) + $builder->where("t1.inkjet", 1); + + return $builder; } public function getNombre($id) @@ -355,5 +369,5 @@ class PapelImpresionModel extends \App\Models\BaseModel return ""; } - + } diff --git a/ci4/app/Models/Presupuestos/PresupuestoAcabadosModel.php b/ci4/app/Models/Presupuestos/PresupuestoAcabadosModel.php index c0dcf401..410f3117 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoAcabadosModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoAcabadosModel.php @@ -72,25 +72,37 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoAcabado($tarifa_acabado_id, $tirada, $proveedor_id); if (count($tarifa_value)>0) { - $result_data = $this->calcularTarifa($tarifa_value[0], $tirada, $POD<$tirada?false:true); - $ret_array[] = (object)[ - 'tarifa_id'=> $tarifa_value[0]->tarifa_acabado_id, - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_acabado_nombre, - 'precio_unidad'=> $result_data[0], - 'total'=> $result_data[1], - 'margen'=> $result_data[2], - 'proveedor' => $tarifa_value[0]->proveedor_nombre, - 'proveedor_id' => $tarifa_value[0]->proveedor_id, - ]; + $ret_array = []; + foreach ($tarifa_value as $tarifa) { + $result_data = $this->calcularTarifa($tarifa, $tirada, $POD<$tirada?false:true); + array_push($ret_array, (object)[ + 'tarifa_id'=> $tarifa->tarifa_acabado_id, + 'tarifa_nombre'=> $tarifa->tarifa_acabado_nombre, + 'nombre'=> $tarifa->tarifa_acabado_nombre, + 'precio_unidad'=> round($result_data[0], 2), + 'total'=> round($result_data[1], 2), + 'precio_total'=> round($result_data[1], 2), + 'margen'=> $result_data[2], + 'proveedor' => $tarifa->proveedor_nombre, + 'proveedor_id' => $tarifa->proveedor_id, + ]); + } + usort($ret_array, function($a, $b) { + return $a->precio_total <=> $b->precio_total; + }); return $ret_array; } else{ $ret_array[] = (object)[ 'tarifa_id'=> $tarifa_acabado_id, 'tarifa_nombre'=> $modelTarifa->getNombreTarifaAcabado($tarifa_acabado_id)[0]->nombre, + 'nombre'=> $modelTarifa->getNombreTarifaAcabado($tarifa_acabado_id)[0]->nombre, 'precio_unidad' => 0, + 'total' => 0, + 'precio_total' => 0, 'margen' => 0, - 'total'=> 0, + 'proveedor' => '', + 'proveedor_id' => 0, ]; return $ret_array; } @@ -194,7 +206,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.tarifa_acabado_id AS tarifa_acabado_id, t1.precio_unidad AS precio_unidad, + "t1.id AS id, t1.tarifa_acabado_id AS tarifa_acabado_id, t1.tarifa_acabado_id AS tarifa_id, t1.precio_unidad AS precio_unidad, t1.precio_total AS precio_total, t1.margen AS margen, t2.nombre AS nombre, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta, t1.proveedor_id AS proveedor_id, t3.nombre AS proveedor," ); diff --git a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php index 7ce6c1c4..b4360ea1 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php @@ -84,9 +84,11 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel $datos = [ 'tarifa_id'=> $tarifa['tarifa_id'], 'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre, + 'nombre'=> $tarifa_proveedor->tarifa_enc_nombre, 'precio_unidad'=> $result_data[0], 'tiempo' => $tiempo, 'total'=> $result_data[1], + 'precio_total'=> $result_data[1], 'margen' => $result_data[2], 'proveedor' => $tarifa_proveedor->proveedor_nombre, 'proveedor_id' => $tarifa_proveedor->proveedor_id, @@ -117,10 +119,12 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel (object)[ 'tarifa_id'=> $tarifa['tarifa_id'], 'tarifa_nombre'=> $tarifa['tarifa_nombre'], + 'nombre'=> $tarifa['tarifa_nombre'], 'proveedor' => lang('Presupuestos.no_disponible'), 'precio_unidad'=> 0, 'tiempo' => null, 'total'=> 0, + 'precio_total'=> 0, 'margen' => 0, ]); } @@ -135,9 +139,11 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel array_push($result_array, (object)[ 'tarifa_id'=> $tarifa_proveedor->tarifa_enc_id, 'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre, + 'nombre'=> $tarifa_proveedor->tarifa_enc_nombre, 'precio_unidad'=> $result_data[0], 'tiempo' => null, 'total'=> $result_data[1], + 'precio_total'=> $result_data[1], 'margen'=> $result_data[2], 'proveedor' => $tarifa_proveedor->proveedor_nombre, 'proveedor_id' => $tarifa_proveedor->proveedor_id, @@ -159,10 +165,12 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel (object)[ 'tarifa_id'=> $tarifa['tarifa_id'] , 'tarifa_nombre'=> $tarifa['tarifa_nombre'], + 'nombre'=> $tarifa['tarifa_nombre'], 'proveedor' => lang('Presupuestos.no_disponible'), 'precio_unidad'=> 0, 'tiempo' => null, 'total'=> 0, + 'precio_total'=> 0, 'margen' => 0, ]); } @@ -173,17 +181,17 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel } - public function getProveedoresForSelector($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto){ + public function getProveedoresForSelector($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $paginasCuadernillo = 32){ $proveedores = []; $modelTarifa = model('App\Models\Tarifas\TarifaEncuadernacionModel'); - $tiempo = $this->calcularTiempo(16, $paginas, $tirada); // ID fija. Cambiar cuando se metan maquinas de corte. Velocidad en minutos - if($modelTarifa->isTarifaPorHoras($tarifa_encuadernacion_id)){ + $tiempo = $this->calcularTiempoCosido(16, $paginas, $tirada, $paginasCuadernillo); // ID fija. Cambiar cuando se metan maquinas de corte. Velocidad en minutos $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa_encuadernacion_id, $tiempo, $tirada); } else{ + $tiempo = $this->calcularTiempo(16, $paginas, $tirada); // ID fija. Cambiar cuando se metan maquinas de corte. Velocidad en minutos $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto); } if (count($tarifa_value)>0) { @@ -215,9 +223,11 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel array_push($ret_array, (object)[ 'tarifa_id'=> $tarifa->tarifa_enc_id, 'tarifa_nombre'=> $tarifa->tarifa_enc_nombre, + 'nombre'=> $tarifa->tarifa_enc_nombre, 'precio_unidad'=> $result_data[0], 'tiempo' => null, 'total'=> $result_data[1], + 'precio_total'=> $result_data[1], 'margen'=> $result_data[2], 'proveedor' => $tarifa->proveedor_nombre, 'proveedor_id' => $tarifa->proveedor_id, @@ -237,10 +247,12 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel $ret_array[] = (object)[ 'tarifa_id'=> $tarifa_encuadernacion_id, 'tarifa_nombre'=> $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre, + 'nombre'=> $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre, 'proveedor' => lang('Presupuestos.no_disponible'), 'precio_unidad'=> 0, 'tiempo' => null, 'total'=> 0, + 'precio_total'=> 0, 'margen'=> 0, ]; return $ret_array; @@ -286,9 +298,11 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel (object)[ 'tarifa_id'=> $tarifa_proveedor->tarifa_enc_id, 'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre, + 'nombre'=> $tarifa_proveedor->tarifa_enc_nombre, 'precio_unidad'=> $result_data[0], 'tiempo' => $tiempo, 'paginas_por_cuadernillo' => $paginas_cuadernillo, + 'precio_total'=> $result_data[1], 'total'=> $result_data[1], 'margen' => $result_data[2], 'proveedor' => $tarifa_proveedor->proveedor_nombre, @@ -310,11 +324,13 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel $ret_array[] = (object)[ 'tarifa_id'=> $tarifa_encuadernacion_id, 'tarifa_nombre'=> $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre, + 'nombre'=> $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre, 'proveedor' => lang('Presupuestos.no_disponible'), 'precio_unidad'=> 0, 'tiempo' => null, 'paginas_por_cuadernillo' => null, 'total'=> 0, + 'precio_total'=> 0, 'margen' => 0, ]; return $ret_array; diff --git a/ci4/app/Models/Presupuestos/PresupuestoManipuladosModel.php b/ci4/app/Models/Presupuestos/PresupuestoManipuladosModel.php index 8612e8a4..72211db4 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoManipuladosModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoManipuladosModel.php @@ -50,28 +50,37 @@ class PresupuestoManipuladosModel extends \App\Models\BaseModel $modelTarifa = model('App\Models\Tarifas\TarifaManipuladoModel'); $tarifa_value = $modelTarifa->getTarifaPresupuestoManipulado($tarifa_manipulado_id, $tirada); if (count($tarifa_value)>0) { + $ret_array = []; + foreach($tarifa_value as $tarifa){ + $result_data = $this->calcularTarifa($tarifa, $tirada, $POD<$tirada?false:true); + array_push($ret_array, (object)[ + 'tarifa_id'=> $tarifa->tarifa_manipulado_id, + 'tarifa_nombre'=> $tarifa->tarifa_manipulado_nombre, + 'nombre'=> $tarifa->tarifa_manipulado_nombre, + 'precio_unidad'=> $result_data[0], + 'total'=> $result_data[1], + 'precio_total'=> $result_data[1], + 'margen' => $result_data[2], + ]); + } + + usort($ret_array, function($a, $b) { + return $a->precio_total <=> $b->precio_total; + }); - $result_data = $this->calcularTarifa($tarifa_value[0], $tirada, $POD<$tirada?false:true); - $ret_array[] = (object)[ - 'tarifa_id'=> $tarifa_value[0]->tarifa_manipulado_id, - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_manipulado_nombre, - 'precio_unidad'=> $result_data[0], - 'total'=> $result_data[1], - 'margen' => $result_data[2], - ]; return $ret_array; } else{ $ret_array[] = (object)[ 'tarifa_id'=> $tarifa_manipulado_id, 'tarifa_nombre'=> $modelTarifa->getNombreTarifaManipulado($tarifa_manipulado_id)[0]->nombre, + 'nombre'=> $modelTarifa->getNombreTarifaManipulado($tarifa_manipulado_id)[0]->nombre, 'precio_unidad' => 0, 'total'=> 0, 'margen' => 0, ]; return $ret_array; } - return []; } private function calcularTarifa($tarifa, $tirada, $is_POD=false){ @@ -170,8 +179,10 @@ class PresupuestoManipuladosModel extends \App\Models\BaseModel array_push($tarifas, (object)[ 'tarifa_id'=> $tarifa_value[0]->tarifa_manipulado_id, 'tarifa_nombre'=> $tarifa_value[0]->tarifa_manipulado_nombre, + 'nombre'=> $tarifa_value[0]->tarifa_manipulado_nombre, 'precio_unidad'=> $result_data[0], 'total'=> $result_data[1], + 'precio_total'=> $result_data[1], 'margen'=> $result_data[2], ]); } @@ -180,8 +191,10 @@ class PresupuestoManipuladosModel extends \App\Models\BaseModel (object)[ 'tarifa_id'=> $tarifa['tarifa_id'] , 'tarifa_nombre'=> $tarifa['tarifa_nombre'], + 'nombre'=> $tarifa['tarifa_nombre'], 'precio_unidad' => 0, 'total'=> 0, + 'precio_total'=> 0, 'margen' => 0, ]); } diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index 135efbc2..f515e833 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -54,7 +54,6 @@ class PresupuestoModel extends \App\Models\BaseModel "retractilado", "retractilado5", "guardas", - "faja_color", "recoger_en_taller", "ferro", "ferro_digital", @@ -76,6 +75,9 @@ class PresupuestoModel extends \App\Models\BaseModel "solapas_ancho", "solapas_sobrecubierta", "solapas_ancho_sobrecubierta", + "solapas_ancho_faja_color", + "faja_color", + "alto_faja_color", "cosido", "sobrecubiertas", "sobrecubiertas_ancho", @@ -85,6 +87,7 @@ class PresupuestoModel extends \App\Models\BaseModel "comentarios_safekat", "comentarios_pdf", "comentarios_tarifa", + "comentarios_presupuesto", "comentarios_produccion", "lomo_cubierta", "lomo_sobrecubierta", @@ -132,6 +135,7 @@ class PresupuestoModel extends \App\Models\BaseModel 'paginasCuadernillo', 'lomo_redondo', 'cabezada', + 'envio_base', ]; protected $returnType = "App\Entities\Presupuestos\PresupuestoEntity"; @@ -412,6 +416,7 @@ class PresupuestoModel extends \App\Models\BaseModel 'ferro_digital' => $data['ferro_digital'] ? 1 : 0, 'marcapaginas' => $data['marcapaginas'] ? 1 : 0, 'prototipo' => $data['prototipo'] ? 1 : 0, + 'envio_base' => $data['envio_base'], 'papel_formato_id' => is_null($papel_formato_id) ? 0 : $papel_formato_id->id, 'papel_formato_personalizado' => !$papel_formato_id ? 1 : 0, 'papel_formato_ancho' => !$papel_formato_id ? $data['tamanio']['ancho'] : null, @@ -557,7 +562,7 @@ class PresupuestoModel extends \App\Models\BaseModel // -- SOBRECUBIERTA -- if ($data['sobrecubierta']) { $values['sobrecubierta'] = array( - 'papel_id' => intval($data['sobrecubierta']['papel']), + 'papel_id' => intval($data['sobrecubierta']['papel']['id']), 'gramaje' => intval($data['sobrecubierta']['gramaje']), 'imprimir' => 1, ); diff --git a/ci4/app/Models/Presupuestos/PresupuestoPreimpresionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoPreimpresionesModel.php index a2828855..f59520ea 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoPreimpresionesModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoPreimpresionesModel.php @@ -51,19 +51,30 @@ class PresupuestoPreimpresionesModel extends \App\Models\BaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoPreimpresion($tarifa_preimpresion_id); if (count($tarifa_value)>0) { - $result_data = $this->calcularTarifa($tarifa_value[0]); - $ret_array[] = (object)[ - 'tarifa_id'=> $tarifa_value[0]->tarifa_preimpresion_id, - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_preimpresion_nombre, - 'precio'=> $result_data[0], - 'margen'=> $result_data[1], - ]; + + $ret_array = []; + foreach ($tarifa_value as $tarifa) { + $result_data = $this->calcularTarifa($tarifa); + array_push($ret_array, (object)[ + 'tarifa_id'=> $tarifa->tarifa_preimpresion_id, + 'tarifa_nombre'=> $tarifa->tarifa_preimpresion_nombre, + 'nombre'=> $tarifa->tarifa_preimpresion_nombre, + 'precio'=> $result_data[0], + 'margen'=> $result_data[1], + ]); + } + + usort($ret_array, function($a, $b) { + return $a->precio <=> $b->precio; + }); + return $ret_array; } else{ $ret_array[] = (object)[ 'tarifa_id'=> $tarifa_preimpresion_id, 'tarifa_nombre'=> $modelTarifa->getNombreTarifaPreimpresion($tarifa_preimpresion_id)[0]->nombre, + 'nombre'=> $modelTarifa->getNombreTarifaPreimpresion($tarifa_preimpresion_id)[0]->nombre, 'precio' => 0, 'margen' => 0, ]; @@ -146,7 +157,7 @@ class PresupuestoPreimpresionesModel extends \App\Models\BaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.tarifa_preimpresion_id AS tarifa_preimpresion_id, t1.precio AS precio, t1.margen AS margen, t2.nombre AS nombre" + "t1.id AS id, t1.tarifa_preimpresion_id AS tarifa_preimpresion_id, t1.tarifa_preimpresion_id AS tarifa_id, t1.precio AS precio, t1.margen AS margen, t2.nombre AS nombre" ); $builder->where('t1.presupuesto_id', $presupuesto_id); diff --git a/ci4/app/Models/Presupuestos/PresupuestoServiciosExtraModel.php b/ci4/app/Models/Presupuestos/PresupuestoServiciosExtraModel.php index 75e9b1ef..f7141ebb 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoServiciosExtraModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoServiciosExtraModel.php @@ -50,19 +50,27 @@ class PresupuestoServiciosExtraModel extends \App\Models\BaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoExtra($tarifa_extra_id); if (count($tarifa_value)>0) { - $result_data = $this->calcularTarifa($tarifa_value[0]); - $ret_array[] = (object)[ - 'tarifa_id'=> $tarifa_value[0]->tarifa_extra_id, - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_extra_nombre, - 'precio'=> $result_data[0], - 'margen'=> $result_data[1], - ]; + $ret_array = []; + foreach($tarifa_value as $tarifa){ + $result_data = $this->calcularTarifa($tarifa); + array_push($ret_array, (object)[ + 'tarifa_id'=> $tarifa->tarifa_extra_id, + 'tarifa_nombre'=> $tarifa->tarifa_extra_nombre, + 'nombre'=> $tarifa->tarifa_extra_nombre, + 'precio'=> $result_data[0], + 'margen'=> $result_data[1], + ]); + } + usort($ret_array, function($a, $b) { + return $a->precio <=> $b->precio; + }); return $ret_array; } else{ $ret_array[] = (object)[ 'tarifa_id'=> $tarifa_extra_id, 'tarifa_nombre'=> $modelTarifa->getNombreTarifaExtra($tarifa_extra_id)[0]->nombre, + 'tarifa'=> $modelTarifa->getNombreTarifaExtra($tarifa_extra_id)[0]->nombre, 'precio' => 0, 'margen' => 0, ]; diff --git a/ci4/app/Models/Tarifas/TarifaEnvioModel.php b/ci4/app/Models/Tarifas/TarifaEnvioModel.php index c5348c6e..c73aff07 100755 --- a/ci4/app/Models/Tarifas/TarifaEnvioModel.php +++ b/ci4/app/Models/Tarifas/TarifaEnvioModel.php @@ -98,11 +98,13 @@ class TarifaEnvioModel extends \App\Models\BaseModel // Si el pais es españa se tienen que tener en cuenta los postales // Se busca primero la tarifa a la que corresponde $builder = $this->db->table($this->table . " t1") - ->select("t1.id AS tarifa_envio_id, t2.importe_fijo as importe_fijo") + ->select("t1.id AS tarifa_envio_id, t2.importe_fijo as importe_fijo, t3.nombre as pais") ->join("tarifas_envios_zonas t2", "t1.id = t2.tarifa_envio_id") + ->join("lg_paises t3", "t1.pais_id = t3.id") ->where("t1.pais_id", $paisId) ->where("t1.is_deleted", 0) ->where("t2.is_deleted", 0); + if ($paisId == 1) { // España $builder->where("CAST(t2.cp_inicial AS UNSIGNED)<=", intval($cp)) @@ -117,10 +119,12 @@ class TarifaEnvioModel extends \App\Models\BaseModel $precio_tarifas = $model->getEnvioPrecio($tarifa->tarifa_envio_id, $peso, $tipo_envio); foreach ($precio_tarifas as $precio_tarifa) { $precio_tarifa->importe_fijo = $tarifa->importe_fijo; + $precio_tarifa->pais = $tarifa->pais; array_push($resultado, $precio_tarifa); } } + return $resultado; } } diff --git a/ci4/app/Models/Usuarios/UserModel.php b/ci4/app/Models/Usuarios/UserModel.php index a4748d14..d4e2d993 100755 --- a/ci4/app/Models/Usuarios/UserModel.php +++ b/ci4/app/Models/Usuarios/UserModel.php @@ -20,14 +20,13 @@ class UserModel extends \App\Models\BaseModel protected $allowedFields = [ "username", - "email", "first_name", "last_name", "client_id", "status", "status_message", "active", - "country", + "comments", "last_active", "created_at", "updated_at", @@ -39,143 +38,25 @@ class UserModel extends \App\Models\BaseModel protected $validationRules = [ - "address" => [ - "label" => "Users.address", - "rules" => "trim|max_length[255]", - ], - "blocked" => [ - "label" => "Users.blocked", - "rules" => "required|permit_empty", - ], - "city" => [ - "label" => "Users.city", - "rules" => "trim|max_length[255]", - ], - "country" => [ - "label" => "Users.country", - "rules" => "trim|max_length[2]", - ], - "date_birth" => [ - "label" => "Users.dateBirth", - "rules" => "valid_date|permit_empty", - ], - "email" => [ - "label" => "Users.email", - "rules" => "trim|required|max_length[150]|valid_email", - ], - "email_confirmed" => [ - "label" => "Users.emailConfirmed", - "rules" => "required|integer", - ], "first_name" => [ "label" => "Users.firstName", "rules" => "trim|max_length[150]", ], - "language" => [ - "label" => "Users.language", - "rules" => "trim|max_length[10]", - ],/* - "last_access" => [ - "label" => "Users.lastAccess", - "rules" => "valid_date", - ],*/ - "last_ip" => [ - "label" => "Users.lastIp", - "rules" => "max_length[50]", - ], "last_name" => [ "label" => "Users.lastName", "rules" => "trim|max_length[150]", ], - "mobile" => [ - "label" => "Users.mobile", - "rules" => "trim|max_length[50]", - ], - "password" => [ - "label" => "Users.password", - "rules" => "required|max_length[35]", - ], - "picture" => [ - "label" => "Users.picture", - "rules" => "trim|max_length[150]", - ], - "state" => [ - "label" => "Users.state", - "rules" => "trim|max_length[255]", - ], - "zip_code" => [ - "label" => "Users.zipCode", - "rules" => "trim|max_length[50]", - ], ]; protected $validationMessages = [ - "address" => [ - "max_length" => "Users.validation.address.max_length", - ], - - "blocked" => [ - "required" => "Users.validation.email_confirmed.required", - ], - "city" => [ - "max_length" => "Users.validation.city.max_length", - ], - "country" => [ - "max_length" => "Users.validation.country.max_length", - "required" => "Users.validation.country.required", - ], - "date_birth" => [ - "valid_date" => "Users.validation.date_birth.valid_date", - ], - "email" => [ - "max_length" => "Users.validation.email.max_length", - "required" => "Users.validation.email.required", - "valid_email" => "Users.validation.email.valid_email", - ], - "email_confirmed" => [ - "integer" => "Users.validation.email_confirmed.integer", - "required" => "Users.validation.email_confirmed.required", - ], "first_name" => [ "max_length" => "Users.validation.first_name.max_length", "required" => "Users.validation.first_name.required", ], - - "language" => [ - "max_length" => "Users.validation.language.max_length", - "required" => "Users.validation.language.required", - ], - "last_access" => [ - "required" => "Users.validation.last_access.required", - "valid_date" => "Users.validation.last_access.valid_date", - ], - "last_ip" => [ - "max_length" => "Users.validation.last_ip.max_length", - "required" => "Users.validation.last_ip.required", - ], "last_name" => [ "max_length" => "Users.validation.last_name.max_length", "required" => "Users.validation.last_name.required", - ], - "mobile" => [ - "max_length" => "Users.validation.mobile.max_length", - "required" => "Users.validation.mobile.required", - ], - "password" => [ - "max_length" => "Users.validation.password.max_length", - "required" => "Users.validation.password.required", - ], - "picture" => [ - "max_length" => "Users.validation.picture.max_length", - "required" => "Users.validation.picture.required", - ], - "state" => [ - "max_length" => "Users.validation.state.max_length", - "required" => "Users.validation.state.required", - ], - "zip_code" => [ - "max_length" => "Users.validation.zip_code.max_length", - ], + ], ]; public function getGroupsTitles($user_token){ diff --git a/ci4/app/Services/MaquinaService.php b/ci4/app/Services/MaquinaService.php new file mode 100644 index 00000000..05737527 --- /dev/null +++ b/ci4/app/Services/MaquinaService.php @@ -0,0 +1,84 @@ +maquinaModel = model(MaquinaModel::class); + $this->maquinaDefectoModel = model(MaquinasDefectoModel::class); + $this->maquinaCalleModel = model(MaquinasCallesModel::class); + $this->maquinaPapelesImpresionModel = model(MaquinasPapelesImpresionModel::class); + $this->maquinaTarifaImpresionModel = model(MaquinasTarifasImpresionModel::class); + + + } + public function setMaquina(int $maquina_id): self + { + $this->maquina = $this->maquinaModel->find($maquina_id); + return $this; + } + public function duplicate(string $newName): ?Maquina + { + + $maquina_array = $this->maquina->toArray(); + $maquina_array['nombre'] = $newName; + $maquinaDuplicatedId = $this->maquinaModel->insert($maquina_array); + $maquinaWithAllRelations = $this->maquina->withAll()->toArray(); + + $maquina_defecto = $maquinaWithAllRelations['maquina_defecto']; + $maquina_papeles_impresion = $maquinaWithAllRelations['papeles_impresion']; + $maquina_calles = $maquinaWithAllRelations['maquina_calles']; + $maquina_tarifas_impresion = $maquinaWithAllRelations['tarifas_impresion']; + + + foreach ($maquina_defecto as $md) + { + unset($md['id']); + $md['maquina_id'] = $maquinaDuplicatedId; + $this->maquinaDefectoModel->insert($md); + + } + foreach ($maquina_papeles_impresion as $mpi) + { + unset($mpi['id']); + $mpi['maquina_id'] = $maquinaDuplicatedId; + $this->maquinaPapelesImpresionModel->insert($mpi); + } + foreach ($maquina_calles as $mc) + { + unset($mc['id']); + $mc['maquina_id'] = $maquinaDuplicatedId; + $this->maquinaCalleModel->insert($mc); + } + foreach ($maquina_tarifas_impresion as $mti) + { + unset($mti['id']); + $mti['maquina_id'] = $maquinaDuplicatedId; + $this->maquinaTarifaImpresionModel->insert($mti); + } + return $this->maquinaModel->find($maquinaDuplicatedId)->withAll(); + } +} diff --git a/ci4/app/Services/PapelImpresionService.php b/ci4/app/Services/PapelImpresionService.php new file mode 100644 index 00000000..3ba1393a --- /dev/null +++ b/ci4/app/Services/PapelImpresionService.php @@ -0,0 +1,76 @@ +papelImpresionModel = model(PapelImpresionModel::class); + $this->papelImpresionModel = model(PapelImpresionModel::class); + $this->papelImpresionMargenModel = model(PapelImpresionMargenModel::class); + $this->papelImpresionTipologiaModel = model(PapelImpresionTipologiaModel::class); + $this->papelImpresionMaquinaModel = model(MaquinasPapelesImpresionModel::class); + } + public function setPapelImpresionEntity(PapelImpresion $papelImpresionEntity): self + { + $this->papelImpresion = $papelImpresionEntity; + return $this; + } + public function duplicate(string $newName): ?PapelImpresion + { + $papelImpresionRow = $this->papelImpresion?->toArray(); + $papelImpresionMargenes = $this->papelImpresion->margen(); + $papelImpresionTipologias = $this->papelImpresion->tipologia(); + $papelImpresionMaquinas = $this->papelImpresion->maquinas_impresion(); + + $papelImpresionRow['nombre'] = $newName; + if ($this->papelImpresion) { + unset($papelImpresionRow["id"]); + $papelImpresionDuplicatedId = $this->papelImpresionModel->insert($papelImpresionRow); + } + if ($papelImpresionMargenes) { + foreach ($papelImpresionMargenes as $papelImpresionMargen) { + unset($papelImpresionMargen["id"]); + $papelImpresionMargen['papel_impresion_id'] = $papelImpresionDuplicatedId; + $this->papelImpresionMargenModel->insert($papelImpresionMargen); + } + } + if ($papelImpresionTipologias) { + foreach ($papelImpresionTipologias as $papelImpresionTipologia) { + unset($papelImpresionTipologia["id"]); + $papelImpresionTipologia['papel_impresion_id'] = $papelImpresionDuplicatedId; + $this->papelImpresionTipologiaModel->insert($papelImpresionTipologia); + } + } + if ($papelImpresionMaquinas) { + foreach ($papelImpresionMaquinas as $papelImpresionMaquina) { + unset($papelImpresionMaquina["id"]); + $papelImpresionMaquina['papel_impresion_id'] = $papelImpresionDuplicatedId; + $this->papelImpresionMaquinaModel->insert($papelImpresionMaquina); + } + } + $papelImpresionDuplicated = $this->papelImpresionModel->find($papelImpresionDuplicatedId); + return $papelImpresionDuplicated; + } +} diff --git a/ci4/app/Services/PresupuestoClienteService.php b/ci4/app/Services/PresupuestoClienteService.php index 2868f4bf..17c4acc8 100644 --- a/ci4/app/Services/PresupuestoClienteService.php +++ b/ci4/app/Services/PresupuestoClienteService.php @@ -65,7 +65,7 @@ class PresupuestoClienteService extends BaseService } } - public static function obtenerCubierta($data) + public static function obtenerCubierta($data, $return_raw=false) { $uso = $data['uso']; @@ -76,7 +76,6 @@ class PresupuestoClienteService extends BaseService $isColor = $data['isColor']; $isHq = $data['isHq']; $cliente_id = $data['cliente_id']; - $paginas_color = $data['paginas_color']; $lomoRedondo = $data['lomoRedondo']; $lineas_cubierta = []; @@ -102,6 +101,14 @@ class PresupuestoClienteService extends BaseService } if (count($lineas_cubierta) > 0) { + if($return_raw){ + $lineas_cubierta = array_values(array_unique($lineas_cubierta, SORT_REGULAR)); + + return[ + 'cubierta' => $lineas_cubierta + ]; + } + usort( $lineas_cubierta, function ($a, $b) { @@ -119,7 +126,7 @@ class PresupuestoClienteService extends BaseService return $lineas_cubierta; } - public static function obtenerSobrecubierta($data) + public static function obtenerSobrecubierta($data, $return_raw=false) { $uso = $data['uso']; @@ -154,6 +161,14 @@ class PresupuestoClienteService extends BaseService } if (count($lineas_sobrecubierta) > 0) { + if($return_raw){ + $lineas_sobrecubierta = array_values(array_unique($lineas_sobrecubierta, SORT_REGULAR)); + + return[ + 'sobrecubierta' => $lineas_sobrecubierta + ]; + } + usort( $lineas_sobrecubierta, function ($a, $b) { @@ -171,7 +186,7 @@ class PresupuestoClienteService extends BaseService return $lineas_sobrecubierta; } - public static function obtenerGuardas($data) + public static function obtenerGuardas($data, $return_raw=false) { $uso = $data['uso']; @@ -205,6 +220,14 @@ class PresupuestoClienteService extends BaseService } if (count($lineas_guardas) > 0) { + if($return_raw){ + $lineas_guardas = array_values(array_unique($lineas_guardas, SORT_REGULAR)); + + return[ + 'guardas' => $lineas_guardas + ]; + } + usort( $lineas_guardas, function ($a, $b) { @@ -241,28 +264,31 @@ class PresupuestoClienteService extends BaseService * - isHq: si es alta calidad * - paginas_color: número de páginas a color */ - private static function obtenerPresupuestoClienteInterior($data) + public static function obtenerPresupuestoClienteInterior($data, $return_raw = false) { $uso = $data['uso']; $tipo_impresion_id = $data['tipo_impresion_id']; $datosPedido = $data['datosPedido']; + $paginas_color = $data['paginas_color']; if ($data['papelInteriorDiferente'] == false) $papel_generico = $data['papel_generico']; else { $papel_generico = $data['papel_generico']['negro']; - $papel_generico_color = $data['papel_generico']['color']; + if($paginas_color>0) + $papel_generico_color = $data['papel_generico']['color']; } if ($data['papelInteriorDiferente'] == false) $gramaje = $data['gramaje']; else { $gramaje = $data['gramaje']['negro']; - $gramaje_color = $data['gramaje']['color']; + if($paginas_color>0) + $gramaje_color = $data['gramaje']['color']; } $isColor = $data['isColor']; $isHq = $data['isHq']; $cliente_id = $data['cliente_id']; - $paginas_color = $data['paginas_color']; + $paginas_negro = $datosPedido->paginas - $paginas_color; @@ -293,6 +319,14 @@ class PresupuestoClienteService extends BaseService } if (count($linea_negro_plana) > 0) { + /*if($return_raw){ + $linea_negro_plana = array_values(array_unique($linea_color_plana, SORT_REGULAR)); + + return[ + 'negro' => $linea_negro_plana + ]; + }*/ + usort( $linea_negro_plana, function ($a, $b) { @@ -335,6 +369,14 @@ class PresupuestoClienteService extends BaseService } if (count($linea_color_plana) > 0) { + /*if($return_raw){ + $linea_color_plana = array_values(array_unique($linea_color_plana, SORT_REGULAR)); + + return[ + 'color' => $linea_color_plana + ]; + }*/ + usort( $linea_color_plana, function ($a, $b) { @@ -349,6 +391,16 @@ class PresupuestoClienteService extends BaseService } } + + if($return_raw){ + $linea_negro_plana = array_values(array_unique($linea_negro_plana, SORT_REGULAR)); + $linea_color_plana = array_values(array_unique($linea_color_plana, SORT_REGULAR)); + + return[ + 'negro' => $linea_negro_plana, + 'color' => $linea_color_plana + ]; + } // Si hay negro y color, y se hace con el mismo papel, hay que buscar la combinación // más económica con la misma máquna if ( @@ -493,7 +545,7 @@ class PresupuestoClienteService extends BaseService * - isHq: si es alta calidad * - paginas_color: número de páginas a color */ - private static function obtenerPresupuestoClienteInteriorRotativa($data) + public static function obtenerPresupuestoClienteInteriorRotativa($data, $return_raw = false) { $datosPedido = $data['datosPedido']; $papel_generico = $data['papel_generico']; @@ -532,6 +584,14 @@ class PresupuestoClienteService extends BaseService if (count($linea_rotativa) > 0) { + if($return_raw){ + $linea_rotativa = array_values(array_unique($linea_rotativa, SORT_REGULAR)); + + return[ + 'rotativa' => $linea_rotativa, + ]; + } + usort( $linea_rotativa, function ($a, $b) { diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index a9495780..24d404a3 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -83,8 +83,13 @@ class PresupuestoService extends BaseService $parametrosInkjet->rotativa_cg = $datosTipologias[0]->cg; } + $uso_tarifa = $uso; + if($uso == 'guardas') + $uso_tarifa = 'interior'; + else if ($uso == 'faja') + $uso_tarifa = 'sobrecubierta'; $tarifamodel = new \App\Models\Configuracion\MaquinasTarifasImpresionModel(); - $datos_tarifa = $tarifamodel->getTarifa($maquina->maquina_id, ($uso == 'guardas') ? 'interior' : $uso, $tipo); + $datos_tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso_tarifa, $tipo); if (count($datos_tarifa) > 0) { $tarifaId = $datos_tarifa[0]; $tarifa = $datos_tarifa[1]; @@ -128,7 +133,7 @@ class PresupuestoService extends BaseService $clientePreciosModel = new \App\Models\Clientes\ClientePreciosModel(); $config = (object) [ - "tipo" => ($uso == 'guardas') ? 'interior' : $uso, + "tipo" => $uso_tarifa, "tipo_maquina" => $maquina->is_inkjet ? 'inkjet' : 'toner', "tipo_impresion" => $tipo ]; @@ -235,7 +240,9 @@ class PresupuestoService extends BaseService return []; } - [$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel, $datosPedido->paginas); + $paginas_pedido = (intval($datosPedido->tirada) + intval($datosPedido->merma))*intval($datosPedido->paginas); + + [$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel, $paginas_pedido); $linea['fields']['tarifa_impresion_id'] = $tarifaId; @@ -332,8 +339,8 @@ class PresupuestoService extends BaseService if ($uso != 'rotativa') { - $ancho_calculo = ($uso == 'cubierta' || $uso == 'sobrecubierta') ? $datosPedido->anchoExteriores : $datosPedido->ancho; - $alto_calculo = ($uso == 'cubierta' || $uso == 'sobrecubierta') ? $datosPedido->altoExteriores : $datosPedido->alto; + $ancho_calculo = ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'faja') ? $datosPedido->anchoExteriores : $datosPedido->ancho; + $alto_calculo = ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'faja') ? $datosPedido->altoExteriores : $datosPedido->alto; $formas = PresupuestoService::getNumFormasPlana($uso, $maquina, $ancho_calculo, $alto_calculo, $datosPedido->isCosido, $forzar_a_favor_fibra); $response['fields'] = $formas; } @@ -345,8 +352,10 @@ class PresupuestoService extends BaseService return $response; } + $paginas_pedido = (intval($datosPedido->tirada) + intval($datosPedido->merma)) * intval($datosPedido->paginas); + // precio del pliego de impresion - [$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $datosPedido->paginas); + [$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $paginas_pedido); $precio_click = 0; $precio_click_pedido = 0; @@ -362,10 +371,12 @@ class PresupuestoService extends BaseService $margen_click = $tarifa * ($tarifa_margen / 100.0); //interior (bn o color) - if ($cubierta == 0 && $sobrecubierta == 0 && $rotativa == 0) { + if ($cubierta == 0 && $sobrecubierta == 0 && $rotativa == 0 || $uso == 'faja') { // precio papel - $pliegos_libro = ceil(($datosPedido->paginas / 2.0) / $response['fields']['num_formas']['value']); - if ($pliegos_libro < 1) + $pliegos_libro = ($datosPedido->paginas / 2.0) / $response['fields']['num_formas']['value']; + if($uso != 'faja') + $pliegos_libro = ceil($pliegos_libro); + if ($uso != 'faja' && $pliegos_libro < 1) // faja pueden entrar más de una forma $pliegos_libro = 1; $pliegos_pedido = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma); $precio_libro = $pliegos_libro * ($precio_pliego_impresion + $margen_pliego_impresion); @@ -462,7 +473,7 @@ class PresupuestoService extends BaseService [$data['ancho'], $data['alto']] = PresupuestoService::calculoDimForma($datosPedido, $parametrosRotativa); // calculo de papel y clicks - $factor_anchura = round($maquina->ancho_impresion / $data['ancho'], 2); + $factor_anchura = floor($maquina->ancho_impresion / $data['ancho']); $factor_altura = round($maquina->alto_impresion / ($data['alto'] + self::MARGEN_PAGINAS_ROTATIVA), 2); $factor_altura_click = round($maquina->alto_click / ($data['alto'] + self::MARGEN_PAGINAS_ROTATIVA), 2); @@ -471,12 +482,12 @@ class PresupuestoService extends BaseService } $multiplicador_pliego = $datosPedido->isCosido ? 4 : 2; - $paginas_por_pliego = round(floor($factor_anchura) * $factor_altura * $multiplicador_pliego, 2); + $paginas_por_pliego = round($factor_anchura * $factor_altura * $multiplicador_pliego, 2); $pliegos_libro = round($paginas_por_pliego ? $datosPedido->paginas / $paginas_por_pliego : 0, 2); $metros_papel_libro = round($pliegos_libro * ($maquina->alto_impresion / 1000.0), 2); $metros_papel_total = round($metros_papel_libro * ($datosPedido->tirada + $datosPedido->merma), 2); - $paginas_por_pliego_click = round(floor($factor_anchura) * $factor_altura_click * $multiplicador_pliego, 2); + $paginas_por_pliego_click = round($factor_anchura * $factor_altura_click * $multiplicador_pliego, 2); $pliegos_libro_click = round($paginas_por_pliego_click ? $datosPedido->paginas / $paginas_por_pliego_click : 0, 2); $clicks_libro = round(ceil($pliegos_libro_click) * 2, 2); $clicks_pedido = round($clicks_libro * ($datosPedido->tirada + $datosPedido->merma), 2); @@ -518,12 +529,15 @@ class PresupuestoService extends BaseService $data['alto_click'] = $maquina->alto_click; + $direccion_fibra = ($parametrosRotativa->a_favor_fibra === "false" || $parametrosRotativa->a_favor_fibra === 0 || + $parametrosRotativa->a_favor_fibra === "0" || $parametrosRotativa->a_favor_fibra === false)? 0 : 1; + $formas = PresupuestoService::getNumFormasRot( $maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido, - $parametrosRotativa->a_favor_fibra + $direccion_fibra ); $data['num_formas'] = $formas; @@ -537,7 +551,7 @@ class PresupuestoService extends BaseService public static function calculoDimForma($datosPedido, $parametros) { // posicionamos paginas en función de a favor de fibra o no - if (!$parametros->a_favor_fibra) { + if ($parametros->a_favor_fibra === "false" || $parametros->a_favor_fibra === 0 || $parametros->a_favor_fibra === "0" || $parametros->a_favor_fibra === false) { $anchoLibro = $datosPedido->alto; $altoLibro = $datosPedido->ancho; } else { @@ -547,7 +561,7 @@ class PresupuestoService extends BaseService // si es cosido ancho x 2 if ($datosPedido->isCosido) { - if (!$parametros->a_favor_fibra) { + if ($parametros->a_favor_fibra === "false" || $parametros->a_favor_fibra === 0 || $parametros->a_favor_fibra === "0" || $parametros->a_favor_fibra === false) { $altoLibro = $altoLibro * 2; } else { $anchoLibro = $anchoLibro * 2; @@ -686,7 +700,7 @@ class PresupuestoService extends BaseService $h2_temp = 0; // El ancho si es cosido es el doble - if ($uso != 'cubierta' && $uso != 'sobrecubierta') { + if ($uso != 'cubierta' && $uso != 'sobrecubierta' && $uso != 'faja') { $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; } else { $anchoForCalculo = $ancho; @@ -843,7 +857,7 @@ class PresupuestoService extends BaseService $ancho_total = 0; $sangre_cubierta = self::SANGRE_FORMAS_CUBIERTA; if ($datosPedido->ancho >= 210) { - $sangre_cubierta = 15; + $sangre_cubierta = 10; } if ($datosPedido) { @@ -924,8 +938,8 @@ class PresupuestoService extends BaseService if ($datosPedido) { $alto_total = floatval($datosPedido->alto); $sangre_cubierta = self::SANGRE_FORMAS_CUBIERTA; - if ($datosPedido->alto >= 297) { - $sangre_cubierta = 15; + if ($datosPedido->alto >= 267) { + $sangre_cubierta = 10; } // Tapa dura (cosido y fresado) if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { @@ -938,7 +952,7 @@ class PresupuestoService extends BaseService $alto_total += (7 + 2 * self::SANGRE_FORMAS); } // Tapa dura (espiral y wire-0) - if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { + else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { // Sólo se le añade los 20mm de sangre por cada lado $alto_total += (2 * self::SANGRE_FORMAS_CUBIERTA); } @@ -1687,7 +1701,7 @@ class PresupuestoService extends BaseService uso_tarifa: $uso, tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, - ); + )->orderBy("t1.id", "asc")->get()->getResultObject(); $data['uso'] = $uso; $data['tipo'] = $tipo; @@ -1754,7 +1768,8 @@ class PresupuestoService extends BaseService $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); - $opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor); + $uso_papel = $uso == 'faja' ? 'sobrecubierta': $uso; + $opciones_papel = PresupuestoService::get_opciones_papel($uso_papel, $isColor); // Se obtienen los papeles disponibles $papelimpresionmodel = new PapelImpresionModel(); @@ -1772,18 +1787,18 @@ class PresupuestoService extends BaseService $maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto( is_rotativa: 0, tarifa_tipo: $tipo, - uso_tarifa: ($uso == 'guardas') ? 'interior' : $uso, + uso_tarifa: ($uso == 'guardas') ? 'interior' : $uso_papel, tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, - ); + )->orderBy("t1.id", "asc")->get()->getResultObject(); // Se recorren las máquinas y se calcula el coste de linea por cada una foreach ($maquinas as $maquina) { - if ($uso == 'cubierta' || $uso == 'sobrecubierta') { + if ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'faja') { - $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($uso, $tipo_impresion_id, $datosPedido, $maquina->maquina_id, $lomoRedondo); - $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($uso, $tipo_impresion_id, $datosPedido); + $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($uso_papel, $tipo_impresion_id, $datosPedido, $maquina->maquina_id, $lomoRedondo); + $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($uso_papel, $tipo_impresion_id, $datosPedido); } $data['uso'] = $uso; diff --git a/ci4/app/Views/themes/vuexy/components/dropzone.php b/ci4/app/Views/themes/vuexy/components/dropzone.php new file mode 100644 index 00000000..886d4d24 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/components/dropzone.php @@ -0,0 +1,43 @@ +
+
+

+ +

+
+
+
+
+ +
+ Arrastre aquí los ficheros o haga click +
+
+ +
+
+
+
+ + +
+
+
+
+
+section('css') ?> + +endSection() ?> +section('additionalExternalJs') ?> + +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/components/forms/maquina_tarea.php b/ci4/app/Views/themes/vuexy/components/forms/maquina_tarea.php new file mode 100644 index 00000000..9bbd34d4 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/components/forms/maquina_tarea.php @@ -0,0 +1,23 @@ +
+
+ +
+ + +
+ +
+ + + +
+
+
+ +
+ + \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/components/forms/servicio_cliente.php b/ci4/app/Views/themes/vuexy/components/forms/servicio_cliente.php deleted file mode 100644 index a90d9058..00000000 --- a/ci4/app/Views/themes/vuexy/components/forms/servicio_cliente.php +++ /dev/null @@ -1,61 +0,0 @@ -
-
- -
- - -
- -
- - - -
- -
- - -
- -
- -
- - -
-
- -
-
Seleccione tipo de tarifa
-
- - -
-
-
- -
-
- - - -
-
- -
\ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/components/tables/servicios_cliente_table.php b/ci4/app/Views/themes/vuexy/components/tables/maquina_tarea_table.php similarity index 54% rename from ci4/app/Views/themes/vuexy/components/tables/servicios_cliente_table.php rename to ci4/app/Views/themes/vuexy/components/tables/maquina_tarea_table.php index 1631175b..5fa49f48 100644 --- a/ci4/app/Views/themes/vuexy/components/tables/servicios_cliente_table.php +++ b/ci4/app/Views/themes/vuexy/components/tables/maquina_tarea_table.php @@ -2,9 +2,9 @@ - - - + + + diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/servicios_cliente/ServicioClienteEdit.php b/ci4/app/Views/themes/vuexy/form/configuracion/maquina_tareas/editMaquinaTarea.php similarity index 58% rename from ci4/app/Views/themes/vuexy/form/configuracion/servicios_cliente/ServicioClienteEdit.php rename to ci4/app/Views/themes/vuexy/form/configuracion/maquina_tareas/editMaquinaTarea.php index fa36dee6..c2643b44 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/servicios_cliente/ServicioClienteEdit.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/maquina_tareas/editMaquinaTarea.php @@ -9,14 +9,14 @@
-

+

name ?>

- "formServicioCliente"]); ?> + "maquina-tarea-form", "model" => $model]); ?>
@@ -31,7 +31,15 @@
endSection() ?> + +section('css') ?> +" /> + + +endSection() ?> + section("additionalExternalJs") ?> - + + + endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/maquina_tareas/viewMaquinaTarea.php b/ci4/app/Views/themes/vuexy/form/configuracion/maquina_tareas/viewMaquinaTarea.php new file mode 100644 index 00000000..57f08f63 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/configuracion/maquina_tareas/viewMaquinaTarea.php @@ -0,0 +1,56 @@ +include('themes/_commonPartialsBs/select2bs5') ?> +include('themes/_commonPartialsBs/datatables') ?> +include('themes/_commonPartialsBs/_confirm2delete') ?> +extend('themes/vuexy/main/defaultlayout') ?> + +section('content'); ?> +
+
+ +
+
+

+
+ +
+ + +
+ +
+ "maquina-tarea-datatable"]); ?> + +
+ + +
+ +
+ +
+ +endSection() ?> +section('css') ?> + +endSection() ?> +section("additionalExternalJs") ?> + + + +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/maquinas/viewMaquinaForm.php b/ci4/app/Views/themes/vuexy/form/configuracion/maquinas/viewMaquinaForm.php index 04da18ad..13ac995d 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/maquinas/viewMaquinaForm.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/maquinas/viewMaquinaForm.php @@ -10,7 +10,7 @@

- +
@@ -19,12 +19,39 @@
" + class="btn btn-primary me-sm-3 me-1" + name="save" + value="" /> - "btn btn-secondary float-start"]) ?> + + + "btn btn-secondary"]) ?>
+ @@ -253,7 +280,7 @@ url: '', data: { maquina_id: id, - isRotativa: isRotativa.watch, + isRotativa: ()=>{ return $('#isRotativa').prop('checked')?1:0}, isInkjet: $('#isTinta').prop('checked'), : v, }, @@ -435,11 +462,7 @@ yeniden(json.); if(json.error){ document.getElementById("check_" + json.data.papel_impresion_id).checked = false; - Swal.fire({ - icon: 'error', - title: '', - text: json.error, - }); + popErrorAlert(json.error, 'sk-alert-2'); } }); @@ -543,7 +566,7 @@ url: '', data: function (d) { d.maquina_id = id; - d.isRotativa = isRotativa.watch; + d.isRotativa = $('#isRotativa').prop('checked')?1:0; d.webguard_token = ''; }, method: 'POST', @@ -821,6 +844,7 @@ section('additionalExternalJs') ?> + diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php index 77ddfcd7..074deae0 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php @@ -6,28 +6,28 @@ section("content") ?>
-
-
-

-
-
- - - getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - +
+
+

+
+ + + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> +
" - /> - "btn btn-secondary"]) ?> + class="btn btn-primary float-start me-sm-3 me-1" + name="save" + value="" /> + + "btn btn-secondary"]) ?>
- +
- +

@@ -38,7 +38,7 @@
- +

@@ -49,18 +49,18 @@ - + -
+ - rotativa == true || $papelImpresion->inkjet == true)): ?> + rotativa == true || $papelImpresion->inkjet == true)): ?>
- +

- - + +
- -
-

- -

-
-
- - - - - - - - - - - - - - - -
+ +
+

+ +

+
+
+ + + + + + + + + + + + + + + +
+
+
+
+ +
+ - -
-
+
-endSection() ?> + endSection() ?> - - - -section("additionalInlineJs") ?> + section('additionalExternalJs') ?> + + endSection() ?> + + + + section("additionalInlineJs") ?> var theTable; @@ -150,134 +177,134 @@ const url_parts = url.split('/'); let id = -1; if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; + id = url_parts[url_parts.length-1]; } $('#papelGenericoId').select2({ - - allowClear: false, - ajax: { - url: '', - type: 'post', - dataType: 'json', - data: function (params) { - return { - id: 'id', - text: 'nombre', - searchTerm: params.term, - : v - }; - }, - delay: 60, - processResults: function (response) { + allowClear: false, + ajax: { + url: '', + type: 'post', + dataType: 'json', - yeniden(response.); + data: function (params) { + return { + id: 'id', + text: 'nombre', + searchTerm: params.term, + : v + }; + }, + delay: 60, + processResults: function (response) { - return { - results: response.menu - }; - }, + yeniden(response.); - cache: true - } + return { + results: response.menu + }; + }, + + cache: true + } }); // Delete row $(document).on('click', '.btn-delete', function(e) { - $(".btn-remove").attr('data-id', $(this).attr('data-id')); - if($(this).closest('table').attr('id').includes('margenes')){ - $(".btn-remove").attr('table', "margenes"); - } - else if($(this).closest('table').attr('id').includes('tipologias')){ - $(".btn-remove").attr('table', "tipologias"); - } - else{ - $(".btn-remove").attr('table', ); - } + $(".btn-remove").attr('data-id', $(this).attr('data-id')); + if($(this).closest('table').attr('id').includes('margenes')){ + $(".btn-remove").attr('table', "margenes"); + } + else if($(this).closest('table').attr('id').includes('tipologias')){ + $(".btn-remove").attr('table', "tipologias"); + } + else{ + $(".btn-remove").attr('table', ); + } }); - + $(document).on('click', '.btn-remove', function(e) { - const dataId = $(this).attr('data-id'); - const row = $(this).closest('tr'); - if ($.isNumeric(dataId)) { + const dataId = $(this).attr('data-id'); + const row = $(this).closest('tr'); + if ($.isNumeric(dataId)) { - if($(this).attr('table').includes('margenes')){ - remove_margenes(dataId, row); - } - else if ($(this).attr('table').includes('tipologias')){ - remove_tipologias(dataId, row); - } - } + if($(this).attr('table').includes('margenes')){ + remove_margenes(dataId, row); + } + else if ($(this).attr('table').includes('tipologias')){ + remove_tipologias(dataId, row); + } + } }); -endSection() ?> + endSection() ?> - + - - - -section("additionalInlineJs") ?> + + + + section("additionalInlineJs") ?> - var theTable3; - const lastColNr3 = $('#tableOfPapelimpresionmargenes').find("tr:first th").length - 1; - const actionBtns3 = function(data) { + var theTable3; + const lastColNr3 = $('#tableOfPapelimpresionmargenes').find("tr:first th").length - 1; + const actionBtns3 = function(data) { return ` -
- - - `; - }; + + + + `; + }; - - // Definición del editor - var editor3 = new $.fn.dataTable.Editor( { + + // Definición del editor + var editor3 = new $.fn.dataTable.Editor( { ajax: { - url: "", - headers: { - : v, - }, + url: "", + headers: { + : v, + }, + }, + table : "#tableOfPapelimpresionmargenes", + idSrc: 'id', + fields: [ + { + name: "paginas_min", + attr: { + type: "number" + } + },{ + name: "paginas_max", + attr: { + type: "number" + } + },{ + name: "margen", + attr: { + type: "number" + } + }, { + "name": "papel_impresion_id", + "type": "hidden" + }, { + "name": "deleted_at", + "type": "hidden" + }, { + "name": "is_deleted", + "type": "hidden" }, - table : "#tableOfPapelimpresionmargenes", - idSrc: 'id', - fields: [ - { - name: "paginas_min", - attr: { - type: "number" - } - },{ - name: "paginas_max", - attr: { - type: "number" - } - },{ - name: "margen", - attr: { - type: "number" - } - }, { - "name": "papel_impresion_id", - "type": "hidden" - }, { - "name": "deleted_at", - "type": "hidden" - }, { - "name": "is_deleted", - "type": "hidden" - }, ] - } ); + } ); - // Definición de la tabla - theTable3 = $('#tableOfPapelimpresionmargenes').DataTable({ + // Definición de la tabla + theTable3 = $('#tableOfPapelimpresionmargenes').DataTable({ processing: true, serverSide: true, autoWidth: true, @@ -288,504 +315,508 @@ lengthChange: false, searching: false, info: false, - "dom": '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', - stateSave: true, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - ajax : $.fn.dataTable.pipeline( { - url: '', - data: { - id_PI: id, - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columns : [ - { 'data': 'paginas_min' }, - { 'data': 'paginas_max' }, - { 'data': 'margen' }, - { data: actionBtns3, - className: 'row-edit dt-center'} - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr3] - } - ], - buttons: [ { - className: 'btn btn-primary float-end me-sm-3 me-1', - extend: "createInline", - editor: editor3, - formOptions: { - submitTrigger: -1, - submitHtml: '' - } - } ] - }); - - - // Activate an inline edit on click of a table cell - $(document).on('click', '.btn-edit3', function(e) { - editor3.inline( - theTable3.cells(this.parentNode.parentNode.parentNode, '*').nodes(), - { - cancelHtml: '', - cancelTrigger: 'span.cancel', - submitHtml: '', - submitTrigger: 'span.edit', - submit: 'allIfChanged' - } - ); - } ); - - - // Obtención del id para editar - editor3.on( 'preSubmit', function ( e, d, type ) { - if ( type === 'create'){ - d.data[0]['papel_impresion_id'] = id; - } - else if(type === 'edit' ) { - for (v in d.data){ - d.data[v]['papel_impresion_id'] = id; - } - } - }); - - // Refrescar token - editor3.on( 'postSubmit', function ( e, json, data, action ) { - - yeniden(json.); - }); - - // Refrescar tabla - editor3.on( 'submitSuccess', function ( e, json, data, action ) { - - theTable3.clearPipeline(); - theTable3.draw(); - }); - - - // Delete row - function remove_margenes(dataId, row){ - - $.ajax({ - url: `/configuracion/papelimpresionmargenes/delete/${dataId}`, - method: 'GET', - }).done((data, textStatus, jqXHR) => { - $('#confirm2delete').modal('toggle'); - theTable3.clearPipeline(); - theTable3.row($(row)).invalidate().draw(); - popSuccessAlert(data.msg ?? jqXHR.statusText); - }).fail((jqXHR, textStatus, errorThrown) => { - popErrorAlert(jqXHR.responseJSON.messages.error) - }); - } - - -endSection() ?> - - - - -section("additionalInlineJs") ?> - - var theTable; - const lastColNr = $('#tableOfPapelimpresiontipologias').find("tr:first th").length - 1; - const actionBtns = function(data) { - return ` - - - - `; - }; - - $('#cubierta').on('change', function() { - if($(this).is(':checked')) { - $('#useForTapaDura').prop('disabled', false); - $('#useForTapaDura').prop('checked', false); - } - else{ - $('#useForTapaDura').prop('disabled', true); - } - }); - - - // Etiquetas para las tipologias - const tipoTypes = [ - {label:'', value:'negro'}, - {label:'', value: 'color'}, - {label:'', value: 'bicolor'} - ]; - - - // Definición del editor - editor = new $.fn.dataTable.Editor( { - ajax: { - url: "", - headers: { - : v, - }, - }, - table : "#tableOfPapelimpresiontipologias", - idSrc: 'id', - fields: [ - { - name: "tipo", - type: "select", - options: tipoTypes - }, { - name: "negro", - attr: { - type: "number" - } - },{ - name: "cyan", - attr: { - type: "number" - } - },{ - name: "magenta", - attr: { - type: "number" - } - },{ - name: "amarillo", - attr: { - type: "number" - } - },{ - name: "cg", - attr: { - type: "number" - }, - def: 0, - }, - { - name: "gota_negro", - attr: { - type: "number" - } - },{ - name: "gota_color", - attr: { - type: "number" - } - }, { - "name": "papel_impresion_id", - "type": "hidden" - } - ] - } ); - - - // Definición de la tabla - theTable = $('#tableOfPapelimpresiontipologias').DataTable({ - processing: true, - serverSide: true, - autoWidth: true, - responsive: true, - scrollX: true, - lengthMenu: [ 5], - pageLength: 5, - lengthChange: false, - searching: false, - info: false, - "dom": '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', - stateSave: true, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - ajax : $.fn.dataTable.pipeline( { - url: '', - data: { - id_PI: id, - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columns : [ - { 'data': 'tipo', "render": function ( data, type, row, meta ) { - if(data=='negro') - return ''; - else if (data=='color') - return ''; - else if (data=='bicolor') - return ''; - } - }, - { 'data': 'negro' }, - { 'data': 'cyan' }, - { 'data': 'magenta' }, - { 'data': 'amarillo' }, - { 'data': 'cg' }, - { 'data': 'gota_negro' }, - { 'data': 'gota_color' }, - { data: actionBtns, - className: 'row-edit dt-center'} - ], - columnDefs: [ - { - visible: false, - targets: [5] - } - ], - buttons: [ { - className: 'btn btn-primary float-end me-sm-3 me-1', - extend: "createInline", - editor: editor, - formOptions: { - submitTrigger: -1, - submitHtml: '' - } - } ], - initComplete: function () { - inkjet) { ?> - theTable.column(5).visible(true) - - } - }); - - - // Notificar que no se pueden añadir más tipologías - editor.on( 'initCreate', function () { - if ( $('#tableOfPapelimpresiontipologias').DataTable().data().count() >= 3 ){ - editor.close(); - popErrorAlert(''); - } - }); - - - // Activate an inline edit on click of a table cell - $(document).on('click', '.btn-edit', function(e) { - editor.inline( - theTable.cells(this.parentNode.parentNode.parentNode, '*').nodes(), - { - cancelHtml: '', - cancelTrigger: 'span.cancel', - submitHtml: '', - submitTrigger: 'span.edit', - submit: 'allIfChanged' - } - ); - } ); - - - // Obtención del id para editar - editor.on( 'preSubmit', function ( e, d, type ) { - if ( type === 'create'){ - d.data[0]['papel_impresion_id'] = id; - } - else if(type === 'edit' ) { - for (v in d.data){ - d.data[v]['papel_impresion_id'] = id; - } - } - }); - - // Refrescar token - editor.on( 'postSubmit', function ( e, json, data, action ) { - - yeniden(json.); - }); - - // Refrescar tabla - editor.on( 'submitSuccess', function ( e, json, data, action ) { - - theTable.clearPipeline(); - theTable.draw(); - }); - - - // Delete row - function remove_tipologias(dataId, row){ - - $.ajax({ - url: `/configuracion/papelimpresiontipologias/delete/${dataId}`, - method: 'GET', - }).done((data, textStatus, jqXHR) => { - $('#confirm2delete').modal('toggle'); - theTable.clearPipeline(); - theTable.row($(row)).invalidate().draw(); - popSuccessAlert(data.msg ?? jqXHR.statusText); - }).fail((jqXHR, textStatus, errorThrown) => { - popErrorAlert(jqXHR.responseJSON.messages.error) - }); - } - -endSection() ?> - - - - - -section("additionalInlineJs") ?> - - // Botones última columna - const lastColNr2 = $('#tableOfMaquinas').find("tr:first th").length - 1; - const actionBtns2 = function(data) { - return ` - - `; - }; - - - // Definicion de la tabla - var theTable2 = $('#tableOfMaquinas').DataTable( { - serverSide: true, - processing: true, - autoWidth: true, - responsive: true, - lengthMenu: [ 5, 10, 25], - order: [[ 1, "asc" ]], - pageLength: 10, - lengthChange: true, - searching: true, - paging: true, - info: true, dom: "lftp", - ajax : $.fn.dataTable.pipeline( { - url: '', - data: function (d) { - d.papel_id = id; - d.isRotativa = $('#rotativa').is(':checked')?1:0; - d.webguard_token = ''; - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columns: [ - { 'data': 'active', - render: function (data, type, row) { - if (type === 'display') { - return ''; - } - return data; - }, - className: 'dt-body-center' - }, - { 'data': 'maquina'}, - { 'data': 'ancho'}, - { 'data': 'alto'}, - { 'data': 'anchoimpresion'}, - { 'data': 'altoimpresion'}, - { data: actionBtns2, - className: 'row-edit dt-center'} - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr2] - } - ], - rowCallback: function (row, data) { - // Set the checked state of the checkbox in the table - $('input.editor-active', row).prop('checked', data.active == 1); - }, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - columnDefs: [ - { - searchable: false, - targets: [0,2,3,4,5] - } - ], - } ); - - - // Definición del editor - editor2 = new $.fn.dataTable.Editor( { - ajax: { - url: "", - headers: { - : v, - }, - }, - table : "#tableOfMaquinas", - idSrc: 'papel_impresion_id', - fields: [ - { - name: "active", - type: "checkbox", - separator: "|", - ipOpts: [ - { label: '', value: 1 } - ] - },{ - "name": "papel_impresion_id", - "type": "hidden" - },{ - "name": "gramaje", - "type": "hidden" - },{ - "name": "maquina_id", - "type": "hidden" - } - ] - } ); - // Postsubmit del editor - editor2.on( 'postSubmit', function ( e, json, data, action ) { - yeniden(json.); - if(json.error){ - document.getElementById("check_" + json.data.papel_impresion_id).checked = false; - popErrorAlert(json.error); - } - }); + stateSave: true, + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + ajax : $.fn.dataTable.pipeline( { + url: '', + data: { + id_PI: id, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns : [ + { 'data': 'paginas_min' }, + { 'data': 'paginas_max' }, + { 'data': 'margen' }, + { data: actionBtns3, + className: 'row-edit dt-center'} + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr3] + } + ], + buttons: [ { + className: 'btn btn-primary float-end me-sm-3 me-1', + extend: "createInline", + editor: editor3, + formOptions: { + submitTrigger: -1, + submitHtml: '' + } + } ] + }); - // Click sobre el botón editar máquina - $(document).on('click', '.btn-edit2', function(e) { - window.open(`/configuracion/maquinas/edit/${$(this).attr('data-id')}`); - }); + // Activate an inline edit on click of a table cell + $(document).on('click', '.btn-edit3', function(e) { + editor3.inline( + theTable3.cells(this.parentNode.parentNode.parentNode, '*').nodes(), + { + cancelHtml: '', + cancelTrigger: 'span.cancel', + submitHtml: '', + submitTrigger: 'span.edit', + submit: 'allIfChanged' + } + ); + } ); - // Cuando se clica en un checkbox hacer submit en el editor - theTable2.on( 'change', 'input.editor-active', function () { - editor2 - .edit( $(this).closest('tr'), false ) - .set( 'active', $(this).prop( 'checked' ) ? 1 : 0 ) - .submit(); - } ); + // Obtención del id para editar + editor3.on( 'preSubmit', function ( e, d, type ) { + if ( type === 'create'){ + d.data[0]['papel_impresion_id'] = id; + } + else if(type === 'edit' ) { + for (v in d.data){ + d.data[v]['papel_impresion_id'] = id; + } + } + }); - $('#rotativa').on('change', function() { - if($('#inkjet').prop('checked')){ - $('#inkjet').prop('checked', false) - } - }) + // Refrescar token + editor3.on( 'postSubmit', function ( e, json, data, action ) { - $('#inkjet').on('change', function() { - if($('#rotativa').prop('checked')){ - $('#rotativa').prop('checked', false) - } - }) + yeniden(json.); + }); - endSection() ?> + // Refrescar tabla + editor3.on( 'submitSuccess', function ( e, json, data, action ) { - + theTable3.clearPipeline(); + theTable3.draw(); + }); -section('css') ?> - - "> -endSection() ?> + // Delete row + function remove_margenes(dataId, row){ -section('additionalExternalJs') ?> - - - - - - - - -endSection() ?> + $.ajax({ + url: `/configuracion/papelimpresionmargenes/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + $('#confirm2delete').modal('toggle'); + theTable3.clearPipeline(); + theTable3.row($(row)).invalidate().draw(); + popSuccessAlert(data.msg ?? jqXHR.statusText); + }).fail((jqXHR, textStatus, errorThrown) => { + popErrorAlert(jqXHR.responseJSON.messages.error) + }); + } + + endSection() ?> + + + + + section("additionalInlineJs") ?> + + var theTable; + const lastColNr = $('#tableOfPapelimpresiontipologias').find("tr:first th").length - 1; + const actionBtns = function(data) { + return ` + + + + `; + }; + + $('#cubierta').on('change', function() { + if($(this).is(':checked')) { + $('#useForTapaDura').prop('disabled', false); + $('#useForTapaDura').prop('checked', false); + } + else{ + $('#useForTapaDura').prop('disabled', true); + } + }); + + + // Etiquetas para las tipologias + const tipoTypes = [ + {label:'', value:'negro'}, + {label:'', value: 'color'}, + {label:'', value: 'bicolor'} + ]; + + + // Definición del editor + editor = new $.fn.dataTable.Editor( { + ajax: { + url: "", + headers: { + : v, + }, + }, + table : "#tableOfPapelimpresiontipologias", + idSrc: 'id', + fields: [ + { + name: "tipo", + type: "select", + options: tipoTypes + }, { + name: "negro", + attr: { + type: "number" + } + },{ + name: "cyan", + attr: { + type: "number" + } + },{ + name: "magenta", + attr: { + type: "number" + } + },{ + name: "amarillo", + attr: { + type: "number" + } + },{ + name: "cg", + attr: { + type: "number" + }, + def: 0, + }, + { + name: "gota_negro", + attr: { + type: "number" + } + },{ + name: "gota_color", + attr: { + type: "number" + } + }, { + "name": "papel_impresion_id", + "type": "hidden" + } + ] + } ); + + + // Definición de la tabla + theTable = $('#tableOfPapelimpresiontipologias').DataTable({ + processing: true, + serverSide: true, + autoWidth: true, + responsive: true, + scrollX: true, + lengthMenu: [ 5], + pageLength: 5, + lengthChange: false, + searching: false, + info: false, + dom: "lftp", + + + stateSave: true, + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + ajax : $.fn.dataTable.pipeline( { + url: '', + data: { + id_PI: id, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns : [ + { 'data': 'tipo', "render": function ( data, type, row, meta ) { + if(data=='negro') + return ''; + else if (data=='color') + return ''; + else if (data=='bicolor') + return ''; + } + }, + { 'data': 'negro' }, + { 'data': 'cyan' }, + { 'data': 'magenta' }, + { 'data': 'amarillo' }, + { 'data': 'cg' }, + { 'data': 'gota_negro' }, + { 'data': 'gota_color' }, + { data: actionBtns, + className: 'row-edit dt-center'} + ], + columnDefs: [ + { + visible: false, + targets: [5] + } + ], + buttons: [ { + className: 'btn btn-primary float-end me-sm-3 me-1', + extend: "createInline", + editor: editor, + formOptions: { + submitTrigger: -1, + submitHtml: '' + } + } ], + initComplete: function () { + inkjet) { ?> + theTable.column(5).visible(true) + + } + }); + + + // Notificar que no se pueden añadir más tipologías + editor.on( 'initCreate', function () { + if ( $('#tableOfPapelimpresiontipologias').DataTable().data().count() >= 3 ){ + editor.close(); + popErrorAlert(''); + } + }); + + + // Activate an inline edit on click of a table cell + $(document).on('click', '.btn-edit', function(e) { + editor.inline( + theTable.cells(this.parentNode.parentNode.parentNode, '*').nodes(), + { + cancelHtml: '', + cancelTrigger: 'span.cancel', + submitHtml: '', + submitTrigger: 'span.edit', + submit: 'allIfChanged' + } + ); + } ); + + + // Obtención del id para editar + editor.on( 'preSubmit', function ( e, d, type ) { + if ( type === 'create'){ + d.data[0]['papel_impresion_id'] = id; + } + else if(type === 'edit' ) { + for (v in d.data){ + d.data[v]['papel_impresion_id'] = id; + } + } + }); + + // Refrescar token + editor.on( 'postSubmit', function ( e, json, data, action ) { + + yeniden(json.); + }); + + // Refrescar tabla + editor.on( 'submitSuccess', function ( e, json, data, action ) { + + theTable.clearPipeline(); + theTable.draw(); + }); + + + // Delete row + function remove_tipologias(dataId, row){ + + $.ajax({ + url: `/configuracion/papelimpresiontipologias/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + $('#confirm2delete').modal('toggle'); + theTable.clearPipeline(); + theTable.row($(row)).invalidate().draw(); + popSuccessAlert(data.msg ?? jqXHR.statusText); + }).fail((jqXHR, textStatus, errorThrown) => { + popErrorAlert(jqXHR.responseJSON.messages.error) + }); + } + + endSection() ?> + + + + + + section("additionalInlineJs") ?> + + // Botones última columna + const lastColNr2 = $('#tableOfMaquinas').find("tr:first th").length - 1; + const actionBtns2 = function(data) { + return ` + + `; + }; + + + // Definicion de la tabla + var theTable2 = $('#tableOfMaquinas').DataTable( { + serverSide: true, + processing: true, + autoWidth: true, + responsive: true, + lengthMenu: [ 5, 10, 25], + order: [[ 1, "asc" ]], + pageLength: 10, + lengthChange: true, + searching: true, + paging: true, + info: true, + dom: "lftp", + ajax : $.fn.dataTable.pipeline( { + url: '', + data: function (d) { + d.papel_id = id; + d.isRotativa = $('#rotativa').is(':checked')?1:0; + d.webguard_token = ''; + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns: [ + { 'data': 'active', + render: function (data, type, row) { + if (type === 'display') { + return ''; + } + return data; + }, + className: 'dt-body-center' + }, + { 'data': 'maquina'}, + { 'data': 'ancho'}, + { 'data': 'alto'}, + { 'data': 'anchoimpresion'}, + { 'data': 'altoimpresion'}, + { data: actionBtns2, + className: 'row-edit dt-center'} + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr2] + } + ], + rowCallback: function (row, data) { + // Set the checked state of the checkbox in the table + $('input.editor-active', row).prop('checked', data.active == 1); + }, + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + columnDefs: [ + { + searchable: false, + targets: [0,2,3,4,5] + } + ], + } ); + + + // Definición del editor + editor2 = new $.fn.dataTable.Editor( { + ajax: { + url: "", + headers: { + : v, + }, + }, + table : "#tableOfMaquinas", + idSrc: 'papel_impresion_id', + fields: [ + { + name: "active", + type: "checkbox", + separator: "|", + ipOpts: [ + { label: '', value: 1 } + ] + },{ + "name": "papel_impresion_id", + "type": "hidden" + },{ + "name": "gramaje", + "type": "hidden" + },{ + "name": "maquina_id", + "type": "hidden" + } + ] + } ); + + + // Postsubmit del editor + editor2.on( 'postSubmit', function ( e, json, data, action ) { + yeniden(json.); + if(json.error){ + document.getElementById("check_" + json.data.papel_impresion_id).checked = false; + popErrorAlert(json.error); + } + }); + + + // Click sobre el botón editar máquina + $(document).on('click', '.btn-edit2', function(e) { + window.open(`/configuracion/maquinas/edit/${$(this).attr('data-id')}`); + }); + + + // Cuando se clica en un checkbox hacer submit en el editor + theTable2.on( 'change', 'input.editor-active', function () { + editor2 + .edit( $(this).closest('tr'), false ) + .set( 'active', $(this).prop( 'checked' ) ? 1 : 0 ) + .submit(); + } ); + + $('#rotativa').on('change', function() { + if($('#inkjet').prop('checked')){ + $('#inkjet').prop('checked', false) + } + }) + + $('#inkjet').on('change', function() { + if($('#rotativa').prop('checked')){ + $('#rotativa').prop('checked', false) + } + }) + + endSection() ?> + + + + + section('css') ?> + + "> + endSection() ?> + + section('additionalExternalJs') ?> + + + + + + + + + + endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/servicios_cliente/viewServicioCliente.php b/ci4/app/Views/themes/vuexy/form/configuracion/servicios_cliente/viewServicioCliente.php deleted file mode 100644 index e8cc5050..00000000 --- a/ci4/app/Views/themes/vuexy/form/configuracion/servicios_cliente/viewServicioCliente.php +++ /dev/null @@ -1,37 +0,0 @@ -include('themes/_commonPartialsBs/select2bs5') ?> -include('themes/_commonPartialsBs/datatables') ?> -include('themes/_commonPartialsBs/_confirm2delete') ?> -extend('themes/vuexy/main/defaultlayout') ?> - -section('content'); ?> -
-
- -
-
-

-
- -
- - - - "tableServiciosCliente"]); ?> - -
- - - -
- -
- -
- -endSection() ?> -section("additionalExternalJs") ?> - -endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php index 64c4289c..f5b3c691 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php @@ -158,7 +158,7 @@ section("additionalInlineJs") ?> - +/* $("textarea[name*='comentarios_']").each(function(){ if (!$.trim($(this).val())) { // textarea is empty or contains only white-space @@ -167,7 +167,7 @@ $("textarea[name*='comentarios_']").each(function(){ $("#mostrar_" + $(this).attr('name')).show(); } }); - +*/ endSection() ?> diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.js deleted file mode 100644 index dcfde390..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.js +++ /dev/null @@ -1,423 +0,0 @@ -const actionBtns_direcciones = function(data) { - return ` - - - `; -}; - -// Funcion para obtener el peso total del libro -function get_peso_libro(){ - - var peso_total_libro = 0.0 - $('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var rowData = this.data(); - peso_total_libro += parseFloat(rowData.peso) - }) - return peso_total_libro; -} - - -async function get_precio_envio(peso, paisId, cp, tipo_envio){ - - data = { - tipo: 'get_tarifa', - peso: peso, - paisId: paisId, - cp: cp, - tipo_envio: tipo_envio, - } - data = Object.assign(data, window.token_ajax); - - const response = await fetch(window.location.origin + window.url_get_precio_envio , { - method: "POST", - body: JSON.stringify(data), - headers: { - "Content-type": "application/json; charset=UTF-8", - } - }); - - const values = await response.json(); - yeniden(values[window.csrf_token]); - return values.data; -} - - -async function get_coste_envio_tiradasAlternativas(tirada){ - - var peso_libro = get_peso_libro(); - var tirada_inicial = parseInt($('#tirada').val()); - var coste = 0.0; - var margen = 0.0; - - const table = $('#tableOfDireccionesEnvio').DataTable(); - const rows = table.rows().nodes(); - - for (let i = 0; i < rows.length; i++) { - const rowData = table.row(rows[i]).data(); - const porcentaje = parseInt(rowData.cantidad)/tirada_inicial*100.0; - const cantidad = Math.floor(tirada*porcentaje/100.0); - const peso_envio = cantidad*peso_libro/1000.0; - const datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas'); - - if(datos_tarifa.id!=null){ - - if(peso_envio>parseFloat(datos_tarifa.peso_max)){ - coste += (parseFloat(datos_tarifa.precio_min) + (peso_envio-parseFloat(datos_tarifa.peso_min)) * parseFloat(datos_tarifa.precio_adicional)).toFixed(2); - } - // si no se calcula linealmente - else{ - m=((parseFloat(datos_tarifa.precio_max)-parseFloat(datos_tarifa.precio_min))/(parseFloat(datos_tarifa.peso_max)-parseFloat(datos_tarifa.peso_min))); - b=parseFloat(datos_tarifa.precio_max)-m*parseFloat(datos_tarifa.peso_max); - coste += parseFloat(m*peso_envio+b); - } - } - margen += coste*datos_tarifa.margen/100.0; - } - - return {coste, margen}; -} - - -function checkInsertar(){ - - var cantidad_total = 0 - $('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var data = this.data(); - cantidad_total += parseInt(data.cantidad ) - } ); - var htmlString = '' - if(cantidad_total < parseInt($('#tirada').val())){ - $('#rowInsertar').css('display', 'flex') - } - else{ - $('#rowInsertar').css('display', 'none') - } - - if(cantidad_total != parseInt($('#tirada').val())){ - htmlString = ` - `; - } - $('#alert-envios').html(htmlString) -} - - -async function updateTablaEnvios(tirada_inicial = null, tirada = null){ - - var peso_total_libro = get_peso_libro(); - - $('#tableOfDireccionesEnvio').DataTable().rows().every(async function ( rowIdx, tableLoop, rowLoop ) { - - var rowData = this.data(); - - if(tirada_inicial!=null && tirada!=null){ - const porcentaje = parseInt(rowData.cantidad)/tirada_inicial*100.0; - const cantidad = Math.floor(tirada*porcentaje/100.0); - rowData.cantidad = cantidad - } - const peso_envio = peso_total_libro*parseInt(rowData.cantidad)/1000.0; - - var datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas'); - - - if(datos_tarifa.id!=null){ - - if(peso_envio>parseFloat(datos_tarifa.peso_max) || parseFloat(datos_tarifa.peso_max) == 0){ - datos_tarifa.precio = parseFloat(datos_tarifa.peso_min) + (peso_envio-parseFloat(datos_tarifa.peso_min))*parseFloat(datos_tarifa.precio_adicional); - } - // si no se calcula linealmente - else{ - m=((parseFloat(datos_tarifa.precio_max)-parseFloat(datos_tarifa.precio_min))/(parseFloat(datos_tarifa.peso_max)-parseFloat(datos_tarifa.peso_min))); - b=parseFloat(datos_tarifa.precio_max)-m*parseFloat(datos_tarifa.peso_max); - datos_tarifa.precio = parseFloat(m*peso_envio+b); - } - - - datos_tarifa.cantidad = parseInt($('#add_cantidad').val()); - datos_tarifa.peso = peso_envio; - - $('#tableOfDireccionesEnvio').DataTable().row(rowIdx) - .data({ - 'tarifa_id': datos_tarifa.id, - 'cantidad': rowData.cantidad, - 'peso': datos_tarifa.peso.toFixed(3), - 'att': rowData.att, - 'email': rowData.email, - 'direccion': rowData.direccion, - 'cp': rowData.cp, - 'municipio': rowData.municipio, - 'provincia': rowData.provincia, - 'paisId': rowData.paisId, - 'telefono': rowData.telefono, - 'proveedor': datos_tarifa.proveedor, - 'proveedor_id': datos_tarifa.proveedor_id, - 'precio': datos_tarifa.precio.toFixed(2), - 'margen': datos_tarifa.margen, - 'entregaPieCalle': rowData.entregaPieCalle, - 'actionBtns_direcciones': actionBtns_direcciones, - }) - .draw(); - - checkInsertar() - //updateTotales(false, false, true) - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true - }) - } - else{ - popErrorAlert(window.error_no_tarifa_envio, 'error-tarifa') - } - }) -} - -$('#insertar_direccion').on('click', function(){ - - $("#addressForm").attr('action','create') - var $newAddDialog = $("#addressForm") - var maximaCantidad = parseInt($('#tirada').val()) - $("#add_cantidad").attr("max" , maximaCantidad); - $("#add_cantidad").val( maximaCantidad); - $("#add_cantidad").on('change', function(){ - $("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val()) - }) - - cantidad_total = 0 - tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var data = this.data(); - cantidad_total += parseInt(data.cantidad) - } ); - $('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total) - $('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total) - $newAddDialog.modal('show') -}) - -const lastColNr_direcciones = $('#tableOfDireccionesEnvio').find("tr:first th").length - 1; - - -$(document).on('click', '.delete-add-row', function(e) { - const row = $(this).closest('tr'); - tableEnvios.row( row ) - .remove() - .draw(); - checkInsertar() - //updateTotales(false, false, true) - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true - }) - showBreadCrumbSaveButton(true); - -}) - -$(document).on('click', '.btn-edit-add', function(e) { - const row = $(this).closest('tr'); - var data = tableEnvios.row( row ).data() - - $("#addressForm").attr('action','edit') - $("#addressForm").attr('row', row[0]._DT_RowIndex) - $("#addressForm").attr('presupuestodireccion_id', $(this).attr('data-id')) - var $newAddDialog = $("#addressForm") - var maximaCantidad = parseInt($('#tirada').val()) - $("#add_cantidad").attr("max" , maximaCantidad); - $("#add_cantidad").val( maximaCantidad); - $("#add_cantidad").on('change', function(){ - $("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val()) - }) - - cantidad_total = 0 - tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var data2 = this.data(); - cantidad_total += parseInt(data2.cantidad) - } ); - cantidad_total -= parseInt(data.cantidad) // Si es editar tienes que restar los de la linea actual - $('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total) - $('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total) - - $('#add_att').val(data.att) - $('#add_direccion').val(data.direccion) - $('#add_email').val(data.email) - $('#add_cp').val(data.cp) - $('#add_municipio').val(data.municipio) - $('#add_provincia').val(data.provincia) - $('#add_pais_id').val(data.paisId) - $('#add_telefono').val(data.telefono) - $('#add_cantidad').val(data.cantidad) - $('#add_entregaPieCalle').prop('checked', data.entregaPieCalle==1?true:false) - - $newAddDialog.modal('show') -}) - - - - - -$('#recoger_en_taller').change(function(){ - if(this.checked) { - $('#rowTable').css('display', 'none') - $('#rowInsertar').css('display', 'none') - tableEnvios.clear().draw() - } - else{ - $('#rowTable').css('display', 'flex') - $('#rowInsertar').css('display', 'flex') - tableEnvios.columns.adjust(); - } -}) - - -let tableEnvios = $('#tableOfDireccionesEnvio').DataTable( { - draw:5, - serverSide: false, - processing: true, - autoWidth: true, - responsive: true, - order: [[ 0, "asc" ]], - pageLength: 20, - lengthChange: false, - searching: false, - paging: false, - info: false, - scrollX: true, - - columns: [ - { 'data': 'tarifa_id' }, - { 'data': 'cantidad' }, - { 'data': 'peso' }, - { 'data': 'att' }, - { 'data': 'email' }, - { 'data': 'direccion' }, - { 'data': 'cp' }, - { 'data': 'municipio' }, - { 'data': 'paisId' , - render: function(data, type, row, meta) { - var pais = window.paisList.find(element => element.id == data); - return pais['nombre']; - }, - }, - { 'data': 'telefono' }, - { 'data': 'proveedor'}, - { 'data': 'proveedor_id'}, - { 'data': 'precio' }, - { 'data': 'margen' }, - { 'data': 'entregaPieCalle' }, - { - data: actionBtns_direcciones, - className: 'row-edit dt-center' - } - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr_direcciones] - }, - {"orderData": [ 0], "targets": 0 }, - - ], - columnDefs: [ - { - target: [0,11,13,14], - visible: false, - searchable: false - }, - ], - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - - } ); - - - - - -function save_datos_envios(){ - - var id = $('#presupuesto_id').val() - - $.post( window.routes_envios.dataTableOfPresupuestoDirecciones, - Object.assign({tipo: "clear_lineas", presupuesto_id: id}, window.token_ajax)) - .done(function( data ) { - - $('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var data = this.data(); - $.post( '/presupuestos/presupuestodirecciones/add', - Object.assign({ - presupuesto_id : id, - tarifa_id : data.tarifa_id, - cantidad : data.cantidad, - peso : data.peso, - att : data.att, - email : data.email, - direccion : data.direccion, - paisId : data.paisId, - provincia : data.provincia, - municipio : data.municipio, - cp : data.cp, - telefono : data.telefono, - precio : data.precio, - margen : data.margen, - proveedor : data.proveedor, - proveedor_id : data.proveedor_id, - entregaPieCalle : data.entregaPieCalle}, window.token_ajax)) - }); - - }) - -} - - -function load_datos_envios(){ - - window.direccionesList.forEach((linea) => { - tableEnvios.row - .add({ - 'tarifa_id': linea.tarifa_id, - 'cantidad': linea.cantidad, - 'peso': linea.peso, - 'att': linea.att, - 'email': linea.email, - 'direccion': linea.direccion, - 'cp': linea.cp, - 'municipio': linea.municipio, - 'provincia': linea.provincia, - 'paisId': linea.pais_id, - 'telefono': linea.telefono, - 'proveedor': linea.proveedor, - 'proveedor_id': linea.proveedor_id, - 'precio': linea.precio, - 'margen': linea.margen, - 'entregaPieCalle': linea.entregaPieCalle, - 'actionBtns_direcciones': actionBtns_direcciones, - }) - .draw(); - checkInsertar() - - - }); - - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: false - }) - -} - diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php index 26a0f0b7..9d3b89e7 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php @@ -10,11 +10,20 @@
+
+
+ + +
+ +
- +
- + @@ -23,12 +32,13 @@ + - + - - + + @@ -55,24 +65,3 @@ - - - -section("additionalInlineJs") ?> - -window.paisList = ; -window.direccionesList = ; - -window.routes_envios = { - dataTableOfPresupuestoDirecciones: '' -} - -window.url_get_precio_envio = ''; -window.error_no_tarifa_envio = '' -window.token_ajax= {: v}; - -$( document ).ready(function() { - load_datos_envios(); -}); - -endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosLibroItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosLibroItems.js deleted file mode 100644 index 2e974ab5..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosLibroItems.js +++ /dev/null @@ -1,144 +0,0 @@ -$('#paginas').on("change", function () { - - const url2 = window.location.href; - const url_parts2 = url2.split('/'); - - if($('#tipo_impresion_id').val() == 21){ - if(parseInt($('#paginas').val()) > 80){ - $('#paginas').val(80) - } - } - - if(url_parts2[url_parts2.length-2] == 'edit'){ - - checkPaginasPresupuesto() - - // Si es negro o color - if ($('#tipoImpresion').select2('data')[0].id == 'negro' || - $('#tipoImpresion').select2('data')[0].id == 'color') { - $('#compPaginasNegro').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColor').val())); - $('#compPaginasNegro').trigger('change') - } - // Si es negrohq o colorhq - if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' || - $('#tipoImpresion').select2('data')[0].id == 'colorhq') { - $('#compPaginasNegrohq').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColorhq').val())); - $('#compPaginasNegrohq').trigger('change'); - } - - //update_servicios(false) - //updateLineasPresupuesto() - updatePresupuesto({ - update_lineas: true, - update_servicios: true, - update_envios: true, - update_resumen: true, - update_tiradas_alternativas: true - }) - } -}); - - -$('#tirada').on("change", function (update_tiradas_alternativas = true) { - - calcular_mermas() - - const url2 = window.location.href; - const url_parts2 = url2.split('/'); - - if(url_parts2[url_parts2.length-2] == 'edit'){ - //update_servicios(false) - //updateLineasPresupuesto() - if(update_tiradas_alternativas) - updatePresupuesto({ - update_lineas: true, - update_servicios: false, - update_envios: false, - update_resumen: false, - update_tiradas_alternativas: false - }) - else - updatePresupuesto({ - update_lineas: true, - update_servicios: false, - update_envios: false, - update_resumen: false, - update_tiradas_alternativas: false - }) - checkInsertar() - } -}) - -function calcular_mermas(){ - - const tirada = parseInt($('#tirada').val()) - var merma = 0 - htmlString = '' - - if(tirada> parseInt($('#POD').val())){ - merma = tirada*0.1<=30 ? tirada*0.1 : 30 - } - else{ - merma_lineas = [] - tableLineasPresupuesto.rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var rowData = this.data(); - if(rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta'){ - 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) - } - - }) - - - if(merma_lineas.length>0) - merma = Math.max(...merma_lineas) - else{ - htmlString = ` - `; - - - merma = 0 - - } - - } - $('#mermacubierta').val(parseInt(merma)) - $('#merma').val(parseInt(merma)) - $('#alert-datosLibro').html(htmlString) -} - - -$('#papelFormatoPersonalizado').on("click",function(){ - - if($('#papelFormatoPersonalizado').is(':checked')){ - document.getElementById("papelFormatoAncho").style.display = "block"; - document.getElementById("papelFormatoAlto").style.display = "block"; - $('#papelFormatoId').hide(); - $('#papelFormatoId').val(0).change(); - document.getElementById("label_papelFormatoId").innerHTML = - window.Presupuestos.papelFormatoId + " (" + - window.Presupuestos.papelFormatoAncho + " x " + window.Presupuestos.papelFormatoAncho + ")*"; - } - else{ - document.getElementById("papelFormatoAncho").value= ""; - document.getElementById("papelFormatoAlto").value= ""; - document.getElementById("papelFormatoAncho").style.display = "none"; - document.getElementById("papelFormatoAlto").style.display = "none"; - $('#papelFormatoId').show(); - document.getElementById("label_papelFormatoId").innerHTML = - window.Presupuestos.papelFormatoId + '*'; - } -}); - diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosLibroItems.php index bd524b58..8a479ee5 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosLibroItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosLibroItems.php @@ -1,7 +1,8 @@

-

@@ -19,18 +20,20 @@ - > + >
- +
- +
@@ -41,28 +44,25 @@ +
+ +
-
-
+
- papel_formato_personalizado == true ? '' : 'style="display: none"'; ?> type="number" id="papelFormatoAncho" name="papel_formato_ancho" maxLength="8" step="0.01" class="form-control formato_libro" value="papel_formato_ancho) ?>"> +
-
-
- papel_formato_personalizado == true ? '' : 'style="display: none"'; ?> type="number" id="papelFormatoAlto" name="papel_formato_alto" maxLength="8" step="0.01" class="form-control formato_libro" value="papel_formato_alto) ?>"> +
+
+
@@ -76,7 +76,8 @@ - +
@@ -85,7 +86,8 @@ - +
@@ -96,38 +98,64 @@
- -
-
-
- solapas == true ? 'checked' : ''; ?>> - -
-
+
+
+
+ + +
+
+
+
+
+ + +
+ Entre 60 y 120 mm +
+
+
+
-
- -
-
- -
-
-
- solapas_sobrecubierta == true ? 'checked' : ''; ?>> - -
-
-
- +
+
+
+ + +
+
+
+
+
+ + +
+ Entre 60 y 120 mm +
+
+
- +
- papel_formato_personalizado == true ? 'checked' : ''; ?>> - + +
@@ -135,47 +163,56 @@
-
-
- - solapas == true): ?> -
- - +
- -
-
- - solapas_sobrecubierta == true): ?> -
- -
- + - +
-
+
+ +
@@ -186,49 +223,33 @@ -
-
+
- -
-
- - -
+
+
+ +
- +
- - - +
- -
-
+
+ +
@@ -237,207 +258,114 @@
-
- + + -
-
-
- -
-
-
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
+ - +
+ +
+
+
+ +
+
+
-
+
+
+
+ +
+
+
-
-
-
- -
-
-
+
+
+
+ +
+
+
+ > + > + > + > + > + > + > -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
+
- - - - - -section("additionalInlineJs") ?> - -$('#papelFormatoId').select2({ - allowClear: false, -}); - - - var ancho_libro = getDimensionLibro().ancho; - var alto_libro = getDimensionLibro().alto; - - $('#retractilado').on("change", function () { - checkRetractiladoComparador(this); - servicioRetractilado() - }); - - - $('#retractilado5').on("change", function () { - checkRetractiladoComparador(this); - servicioRetractilado5() - }); - - $('#fajaColor').on("change", function () { - servicioFajaColor() - }); - - $('#ferro').on("change", function () { - servicioFerro() - }); - - $('#prototipo').on("change", function () { - servicioPrototipo() - servicioFerro() - }); - - -$('#papelFormatoId').on('select2:select', event_change_formato) -$('.formato_libro').on('change', event_change_formato) - -function event_change_formato(){ - ancho_libro = getDimensionLibro().ancho; - alto_libro = getDimensionLibro().alto; - - - // Si es negro o color - if ($('#tipoImpresion').select2('data')[0].id == 'negro' || - $('#tipoImpresion').select2('data')[0].id == 'color') { - $('#compPaginasNegro').trigger('change') - } - // Si es negrohq o colorhq - if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' || - $('#tipoImpresion').select2('data')[0].id == 'colorhq') { - $('#compPaginasNegrohq').trigger('change'); - } - - $('.solapas_cubierta').trigger('change') - $('.solapas_sobrecubierta').trigger('change') - - checkPaginasPresupuesto() - - updatePresupuesto({ - update_lineas: true, - update_servicios: true, - update_envios: true, - update_resumen: true, - update_tiradas_alternativas: true - }) - //updateLineasPresupuesto() - //update_servicios(false) -} - - - - - -$("#solapas").on("click", function () { - var e = document.getElementById('div_solapas_ancho'); - if (document.getElementById('solapas').checked) { - e.style.display = "block"; - } - else { - e.style.display = "none"; - $('#solapas_ancho').val(0) - } - - $('#serv_default').click() -}); - - -$("#solapas_sobrecubierta").on("click", function () { - var e = document.getElementById('div_solapas_ancho_sobrecubierta'); - if (document.getElementById('solapas_sobrecubierta').checked) { - e.style.display = "block"; - } - else { - e.style.display = "none"; - $('#solapas_ancho_sobrecubierta').val(0) - } - - $('#serv_default').click() -}); - -let initTamanioPersonalizado = papel_formato_personalizado==true?1:0); ?>; -if(initTamanioPersonalizado != null){ - if ( initTamanioPersonalizado){ - $('#papelFormatoId').next(".select2-container").hide(); - } -} -endSection() ?> + \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php index bf952469..b8ad40ff 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php @@ -1,38 +1,45 @@

-

-
+
- +
-
+
+ +
- + - - - @@ -45,7 +52,9 @@
-
+
+ +
@@ -54,13 +63,19 @@

-

+

+ +

-

+

+ +

-

+

+ +


@@ -71,24 +86,22 @@
-

+

+ +

- +
-
-
@@ -99,24 +112,22 @@
-

+

+ +

- +
-
-
@@ -127,24 +138,22 @@
-

+

+ +

- +
-
-
@@ -155,24 +164,22 @@
-

+

+ +

- +
-
-
@@ -183,31 +190,197 @@
-

-
+

+ +

+
-
- + +
+ +
+ +
+ + +
+
+ +
+ +
- + + + + + +
+ +
+
+
+
+ + +
+
+

+ +

+
+
+ +
+
+ +
+
+ +
+
+
+
+
+ + + +
+
+

+ +

+
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+ + +
+
+

+ +

+
+
+ +
+
+ +
+
+
@@ -215,97 +388,25 @@
- -
-
-

-
-
- -
-
- -
-
- -
-
-
-
-
- - - -
-
-

-
-
- -
-
- -
-
- -
-
-
-
-
- - -
+
-
+
+ +
-
+
- +
@@ -313,12 +414,15 @@ - +
-

+

+ +

@@ -327,52 +431,93 @@

-

-
+
-
Tarifa_idTARIFA ID pais_id Proveedor_idProveedor_id MargenEntrega a piePallets?
+
- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
: 0.00 + + : + + 0.00
-
- - +
@@ -384,39 +529,87 @@

-

-
+
- +
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -424,17 +617,20 @@ - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:0.00 + + : + 0.00 +
-
-
@@ -446,50 +642,91 @@

-

-
+
- +
- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
: 0.00 + + : + + 0.00
-
@@ -499,1396 +736,205 @@
- -
-
-

- -

+ +
+
+

+ +

-
-
+
+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
: 0.00
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + : + + 0.00
-
- - -
+
+
+
- - +
+ + +
+
+

+ +

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + : + + 0.00
+ +
+ +
+ +
+
+
+
+
-
- - - - - -section("additionalInlineJs") ?> - - autosize($('#compCalPaginasColor')); - - function init_comparador() { - $('#tipoImpresion').select2({ - allowClear: false, - }); - - $('#compPapelNegro').select2({ - allowClear: false, - }); - - $('#compGramajeNegro').select2({ - - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'bn', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelNegro').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - - $('#compPapelNegrohq').select2({ - allowClear: false, - }); - - $('#compGramajeNegrohq').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'bnhq', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelNegrohq').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - - }); - - $('#compPapelColor').select2({ - allowClear: false, - }); - - $('#compPapelColorhq').select2({ - allowClear: false, - }); - - $('#compGramajeColor').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'color', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelColor').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - - $('#compGramajeColorhq').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'colorhq', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelColorhq').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - - $('#compPapelCubierta').select2({ - allowClear: false, - }); - - $('#compGramajeCubierta').select2({ - allowClear: false, - }); - - $('#compPapelSobrecubierta').select2({ - allowClear: false, - }); - - $('#compGramajeSobrecubierta').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - }); - - $('#encuadernacion').select2({ - allowClear: false, - }); - - - - $('#compCarasCubierta').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - }); - - $('#compPapelGuardas').select2({ - allowClear: false, - }); - - $('#compCarasGuardas').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - }); - - - updatePapelesComparador(); - const paginasColor = document.getElementById('compCalPaginasColor'); - if (paginasColor.value.length > 0) { - computarPaginasColor(paginasColor.value); - } - - computarPaginasColor($('#compPosPaginasColor').val()); - } - - $('#compSobrecubierta').on('change', function(){ - if ($('#compSobrecubierta').val()==1){ - value = false - } - else{ - value = 'disabled' - $('#compPapelSobrecubierta').val(0) - $('#compGramajeSobrecubierta').val('') - $('#compGramajeSobrecubierta').select2("destroy") - $('#compGramajeSobrecubierta').select2({allowClear: false, minimumResultsForSearch: Infinity}) - - } - $('#compPapelSobrecubierta').prop('disabled', value); - $('#compGramajeSobrecubierta').prop('disabled', value); - }) - - function init_lineas_comparador(){ - var comp_data = - - try{ - $("#compPapelNegro").val(parseInt(comp_data.bn.papel_id)).trigger('change'); - - try{ - var newState = new Option(comp_data.bn.gramaje, comp_data.bn.gramaje, true, true); - // Append it to the select - $("#compGramajeNegro").append(newState).trigger('change'); - $('#compGramajeNegro').prop('disabled', false); - }catch(e){} - }catch(e){} - - try{ - $("#compPapelNegrohq").val(parseInt(comp_data.bnhq.papel_id)).trigger('change'); - - try{ - var newState = new Option(comp_data.bnhq.gramaje, comp_data.bnhq.gramaje, true, true); - // Append it to the select - $("#compGramajeNegrohq").append(newState).trigger('change'); - $('#compGramajeNegrohq').prop('disabled', false); - }catch(e){} - }catch(e){} - - try{ - $("#compPapelColor").val(parseInt(comp_data.color.papel_id)).trigger('change'); - - try{ - var newState = new Option(comp_data.color.gramaje, comp_data.color.gramaje, true, true); - // Append it to the select - $("#compGramajeColor").append(newState).trigger('change'); - $('#compGramajeColor').prop('disabled', false); - }catch(e){} - }catch(e){} - - try{ - $("#compPapelColorhq").val(parseInt(comp_data.colorhq.papel_id)).trigger('change'); - - try{ - var newState = new Option(comp_data.colorhq.gramaje, comp_data.colorhq.gramaje, true, true); - // Append it to the select - $("#compGramajeColorhq").append(newState).trigger('change'); - $('#compGramajeColorhq').prop('disabled', false); - }catch(e){} - }catch(e){} - - try{ - $("#compCarasCubierta").val(parseInt(comp_data.cubierta.paginas)).change(); - try{ - $("#compPapelCubierta").val(parseInt(comp_data.cubierta.papel_id)).trigger('select2:select'); - - try{ - var newState = new Option(comp_data.cubierta.gramaje, comp_data.cubierta.gramaje, true, true); - // Append it to the select - $("#compGramajeCubierta").append(newState).trigger('change'); - $('#compGramajeCubierta').prop('disabled', false); - }catch(e){} - }catch(e){} - }catch(e){} - - try{ - $("#compSobrecubierta").val(parseInt(comp_data.sobrecubierta.imprimir)).change(); - try{ - $("#compPapelSobrecubierta").val(parseInt(comp_data.sobrecubierta.papel_id)).trigger('select2:select'); - - try{ - var newState = new Option(comp_data.sobrecubierta.gramaje, comp_data.sobrecubierta.gramaje, true, true); - // Append it to the select - $("#compGramajeSobrecubierta").append(newState).trigger('change'); - $('#compGramajeSobrecubierta').prop('disabled', false); - }catch(e){} - }catch(e){} - }catch(e){} - - try{ - $("#compCarasGuardas").val(parseInt(comp_data.guardas.paginas_impresion)).change(); - $("#compPapelGuardas").val(parseInt(comp_data.guardas.papel_id)).trigger('change'); - }catch(e){} - - } - - var tableCompIntPlana = new DataTable('#tableCompIntPlana',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - columns: [ - { 'data': 'tipo', - 'render': function ( data, type, row, meta ) { - if(data=='bn') - return ''; - else if(data=='bnhq') - return ''; - else if(data=='color') - return ''; - else if(data=='colorhq') - return ''; - } - }, - { 'data': 'paginas' }, - { 'data': 'papel' }, - { 'data': 'gramaje' }, - { 'data': 'marca' }, - { 'data': 'maquina' }, - { 'data': 'numeroPliegos' }, - { 'data': 'pliegosPedido' }, - { 'data': 'precioPliego' }, - { 'data': 'libro' }, - { 'data': 'totalPapelPedido' }, - { 'data': 'lomo' }, - { 'data': 'peso' }, - { 'data': 'horasMaquina' }, - { 'data': 'precioImpresion' }, - { 'data': 'total' }, - { 'data': 'maquinaId'}, - { 'data': 'maquinaVelocidad'}, - { 'data': 'tiempoMaquina'}, - { 'data': 'papelGenericoId'}, - { 'data': 'papelImpresionId'}, - { 'data': 'tarifa_impresion_id'} - ], - columnDefs: [ - { - target: [16,17,18,19,20,21], - visible: false, - searchable: false - }, - ] - }); - - - var tableCompIntRotativa = new DataTable('#tableCompIntRotativa',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - columns: [ - { 'data': 'tipo', - 'render': function ( data, type, row, meta ) { - if(data=='rotativa') - return ''; - } - }, - { 'data': 'paginas' }, - { 'data': 'papel' }, - { 'data': 'gramaje' }, - { 'data': 'marca' }, - { 'data': 'aFavorFibra', - 'render': function(data, type, row, meta){ - if(data=='si') - return ''; - else if(data=='no') - return ''; - } - }, - { 'data': 'maquina' }, - { 'data': 'numeroPliegos' }, - { 'data': 'pliegosPedido' }, - { 'data': 'precioPliego' }, - { 'data': 'libro' }, - { 'data': 'totalPapelPedido' }, - { 'data': 'lomo' }, - { 'data': 'peso' }, - { 'data': 'horasMaquina' }, - { 'data': 'precioImpresion' }, - { 'data': 'precioPagNegro' }, - { 'data': 'precioPagColor' }, - { 'data': 'totalTinta' }, - { 'data': 'totalCorte' }, - { 'data': 'total' }, - { 'data': 'maquinaId'}, - { 'data': 'maquinaVelocidad'}, - { 'data': 'tiempoMaquina'}, - { 'data': 'papelGenericoId'}, - { 'data': 'papelImpresionId'}, - { 'data': 'paginasColor'}, - { 'data': 'tarifa_impresion_id'} - ], - columnDefs: [ - { - target: [21,22,23,24,25,26,27], - visible: false, - searchable: false - }, - ] - }); - - var tableCompCubierta = new DataTable('#tableCompCubierta',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: true, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - columns: [ - { 'data': 'tipo', - 'render': function ( data, type, row, meta ) { - if(data=='cubierta') - return ''; - else if(data=='sobrecubierta') - return ''; - } - }, - { 'data': 'paginas' }, - { 'data': 'papel' }, - { 'data': 'gramaje' }, - { 'data': 'marca' }, - { 'data': 'maquina' }, - { 'data': 'numeroPliegos' }, - { 'data': 'pliegosPedido' }, - { 'data': 'precioPliego' }, - { 'data': 'libro' }, - { 'data': 'totalPapelPedido' }, - { 'data': 'lomo' }, - { 'data': 'peso' }, - { 'data': 'horasMaquina' }, - { 'data': 'precioImpresion' }, - { 'data': 'total' }, - { 'data': 'maquinaId'}, - { 'data': 'maquinaVelocidad'}, - { 'data': 'tiempoMaquina'}, - { 'data': 'papelGenericoId'}, - { 'data': 'papelImpresionId'}, - { 'data': 'tarifa_impresion_id'} - ], - columnDefs: [ - { - target: [16,17,18,19,20,21], - visible: false, - searchable: false - }, - ], - "order": [ [0, 'asc'],[15, 'asc'] ] - }); - - - var tableCompGuardas = new DataTable('#tableCompGuardas',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - columns: [ - { 'data': 'tipo', - 'render': function ( data, type, row, meta ) { - - return ''; - } - - }, - { 'data': 'paginas' }, - { 'data': 'papel' }, - { 'data': 'gramaje' }, - { 'data': 'marca' }, - { 'data': 'maquina' }, - { 'data': 'numeroPliegos' }, - { 'data': 'pliegosPedido' }, - { 'data': 'precioPliego' }, - { 'data': 'libro' }, - { 'data': 'totalPapelPedido' }, - { 'data': 'lomo' }, - { 'data': 'peso' }, - { 'data': 'horasMaquina' }, - { 'data': 'precioImpresion' }, - { 'data': 'total' }, - { 'data': 'maquinaId'}, - { 'data': 'maquinaVelocidad'}, - { 'data': 'tiempoMaquina'}, - { 'data': 'papelGenericoId'}, - { 'data': 'papelImpresionId'}, - { 'data': 'tarifa_impresion_id'}, - { 'data': 'paginas_impresion'}, - ], - columnDefs: [ - { - target: [16,17,18,19,20,21,22], - visible: false, - searchable: false - }, - ] - }); - - function checkComparadorGuardas(actualizarLinea = false){ - - if ($('#compPapelGuardas').select2('data')[0].id > 0 ){ - - const dimension = getDimensionLibro(); - - let datos = { - tipo_impresion_id: , - type: 'guardas', - paginas: 8, - paginas_impresion: parseInt($('#compCarasGuardas').select2('data')[0].id), - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - color: 1, - hq: 1, - ancho: dimension.ancho, - alto: dimension.alto, - papel_generico_id: $('#compPapelGuardas').select2('data')[0].id, - papel_generico: $('#compPapelGuardas').select2('data')[0].text.trim(), - gramaje: parseInt($('#compGramajeGuardas').val()), - cliente_id: $('#clienteId').find(":selected").val(), - : v - }; - - $.ajax({ - type: "POST", - url: "/presupuestoadmin/datatable", - data: datos, - success: function (data) { - - clearGuardas(); - - if(data.lineas.length >0){ - fillGuardas(data); - selectGuardasLineas(); - $('#title_guardas').html('' + ' (' + tableCompGuardas.rows().count() + ')'); - $('#insertarGuardasBtn').removeClass('d-none') - if(actualizarLinea){ - var rows = $("#tableCompCubierta").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - fill_lp_guardas(row, true); - } - } - } - else{ - $('#title_guardas').html(''); - $('#insertarGuardasBtn').addClass('d-none') - $('#total_comp_guardas').html('0.00') - - } - yeniden(data.); - return true; - }, - error: function(e){ - return false; - } - }) - } - - else{ - clearGuardas(); - } - } - - - $('.comp_guardas_items').on('change', function (e) { - - checkComparadorGuardas(false); - }); - - - - async function getLineasIntPlana(is_color, is_hq, actualizarLinea){ - - const dimension = getDimensionLibro(); - - let datos = { - tipo_impresion_id: , - type: 'interior', - color: is_color?1:0, - hq: is_hq?1:0, - paginas: parseInt($(''+ elementos.paginas).val()), - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#merma').val()), - ancho: dimension.ancho, - alto: dimension.alto, - papel_generico_id: $(''+ elementos.papel).select2('data')[0].id, - papel_generico: $(''+ elementos.papel).select2('data')[0].text.trim(), - gramaje: $(''+ elementos.gramaje).select2('data')[0].text.trim() , - cliente_id: $('#clienteId').find(":selected").val(), - : v - }; - - $.ajax({ - type: "POST", - url: "/presupuestoadmin/datatable", - data: datos, - success: function (data) { - - clearIntLineas(is_color); - - if(data.lineas.length >0){ - - fillIntPlana(data, is_color, is_hq); - selectIntLineas(); - $('#title_int_plana').html('' + ' (' + tableCompIntPlana.rows().count() + ')'); - $('#insertarPlanaBtn').removeClass('d-none') - if(actualizarLinea){ - var rows = $("#tableCompIntPlana").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - - if(row['tipo'] =='bn' && !is_color && !is_hq){ - if($('#lp_bn').css('display')!='none') - fill_lp_bn(row, true); - } - else if(row['tipo'] =='bnhq' && !is_color && is_hq){ - if($('#lp_bnhq').css('display')!='none') - fill_lp_bnhq(row, true); - } - else if(row['tipo'] =='color' && is_color && !is_hq){ - if($('#lp_color').css('display')!='none') - fill_lp_color(row, true); - } - else if(row['tipo'] =='colorhq' && is_color && is_hq){ - if($('#lp_colorhq').css('display')!='none') - fill_lp_colorhq(row, true); - } - } - } - } - else{ - $('#title_int_plana').html(''); - $('#insertarPlanaBtn').addClass('d-none') - $('#total_comp_plana').html('0.00'); - } - yeniden(data.); - return true; - }, - error: function(e){ - return false; - } - }) - return false; - } - - async function getLineasIntRot(is_hq, actualizarLinea=false){ - - const dimension = getDimensionLibro(); - - // Rotativa solo negro o color (no hq) - if ( is_hq==false){ - - if(checkInputsForRotativa()){ - - let datos = { - tipo_impresion_id: , - type: 'interior_rot', - paginas: parseInt($('#paginas').val()), - paginas_negro: parseInt($('#compPaginasNegro').val()), - paginas_color: parseInt($('#compPaginasColor').val()), - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#merma').val()), - ancho: dimension.ancho, - alto: dimension.alto, - // el papel y el gramaje se coge del negro (siempre estará) - papel_generico_id: $('#compPapelNegro').select2('data')[0].id, - papel_generico: $('#compPapelNegro').select2('data')[0].text.trim(), - gramaje: $('#compGramajeNegro').select2('data')[0].text.trim() , - cliente_id: $('#clienteId').find(":selected").val(), - : v - }; - - $.ajax({ - type: "POST", - url: "/presupuestoadmin/datatable", - data: datos, - success: function (data) { - - clearIntRot(); - - if(data.lineas.length >0){ - - fillIntRot(data); - selectIntRotLineas(); - $('#title_int_rot').html('' + ' (' + tableCompIntRotativa.rows().count() + ')'); - $('#insertarRotativaBtn').removeClass('d-none') - if(actualizarLinea){ - var rows = $("#tableCompIntRotativa").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - if(row['paginasColor'] ==0){ - if($('#lp_rot_bn').css('display')!='none') - fill_lp_rot_bn(row, true); - } - else if(row['paginasColor'] >0){ - if($('#lp_rot_color').css('display')!='none') - fill_lp_rot_color(row, true); - } - } - } - } - else{ - $('#title_int_rot').html(''); - $('#insertarRotativaBtn').addClass('d-none') - $('#total_comp_rot').html('0.00') - - } - yeniden(data.); - return true; - }, - error: function(e){ - return false; - } - }) - } - } - return false; - } - - $('.comp_cubierta_items').on('change', function (){ - - checkComparadorCubierta() - }); - - - function checkComparadorCubierta(actualizarLinea = false){ - - if ($('#compCarasCubierta option:selected').val().length > 0 && - $('#compPapelCubierta').select2('data').length > 0 && - $('#compGramajeCubierta').select2('data').length > 0 ){ - - const dimension = getDimensionLibro(); - - let datos = { - tipo_impresion_id: , - type: 'cubierta', - paginas: parseInt($('#compCarasCubierta option:selected').val()), - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - color: 1, - ancho: dimension.ancho, - alto: dimension.alto, - lomo: getLomoLineasPresupuesto(), - solapas: $('#solapas').is(':checked')?1:0, - solapas_ancho: $('#solapas').is(':checked')?parseInt($('#solapas_ancho').val()):0, - papel_generico_id: $('#compPapelCubierta').select2('data')[0].id, - papel_generico: $('#compPapelCubierta').select2('data')[0].text.trim(), - gramaje: $('#compGramajeCubierta').select2('data')[0].text.trim() , - cliente_id: $('#clienteId').find(":selected").val(), - : v - }; - - $.ajax({ - type: "POST", - url: "/presupuestoadmin/datatable", - data: datos, - success: function (data) { - - clearCubierta(); - - if(data.lineas.length >0){ - fillCubierta(data); - selectCubiertaLineas(); - tableCompCubierta.order([0, 'asc']).draw() - $('#title_cubierta').html('' + (tableCompCubierta.rows().count()>0 ?(' (' + tableCompCubierta.rows().count() + ')'):'')); - $('#insertarCubiertaBtn').removeClass('d-none') - if(actualizarLinea){ - var rows = $("#tableCompCubierta").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - if (row.tipo=='cubierta') - fill_lp_cubierta(row, true); - } - } - } - else{ - $('#title_cubierta').html('' + (tableCompCubierta.rows().count()>0 ?(' (' + tableCompCubierta.rows().count() + ')'):'')); - if(tableCompCubierta.rows().count()==0){ - $('#insertarCubiertaBtn').addClass('d-none') - $('#total_comp_cubierta').html('0.00') - } - else{ - selectCubiertaLineas(); - } - - } - yeniden(data.); - return true; - }, - error: function(e){ - return false; - } - }) - } - - else{ - clearCubierta(); - } - } - - $('.comp_sobrecubierta_items').on('change', function (){ - - checkComparadorSobrecubierta() - }); - - - function checkComparadorSobrecubierta(actualizarLinea = false){ - - if ($('#compSobrecubierta option:selected').val() == 1 && - $('#compPapelSobrecubierta').select2('data').length > 0 && - $('#compGramajeSobrecubierta').select2('data').length > 0 ){ - - - const dimension = getDimensionLibro(); - - let datos = { - tipo_impresion_id: , - type: 'sobrecubierta', - paginas: 4, - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - color: 1, - ancho: dimension.ancho, - alto: dimension.alto, - lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto(), - solapas: $('#solapas_sobrecubierta').is(':checked')?1:0, - solapas_ancho: $('#solapas_sobrecubierta').is(':checked')?parseInt($('#solapas_ancho_sobrecubierta').val()):0, - papel_generico_id: $('#compPapelSobrecubierta').select2('data')[0].id, - papel_generico: $('#compPapelSobrecubierta').select2('data')[0].text.trim(), - gramaje: $('#compGramajeSobrecubierta').select2('data')[0].text.trim() , - cliente_id: $('#clienteId').find(":selected").val(), - : v - }; - - $.ajax({ - type: "POST", - url: "/presupuestoadmin/datatable", - data: datos, - success: function (data) { - - clearSobrecubierta(); - - if(data.lineas.length >0){ - - fillSobrecubierta(data); - selectCubiertaLineas(); - tableCompCubierta.order([ [0, 'asc'],[15, 'asc'] ]).draw() - $('#title_cubierta').html('' + (tableCompCubierta.rows().count()>0 ?(' (' + tableCompCubierta.rows().count() + ')'):'')); - $('#insertarCubiertaBtn').removeClass('d-none') - if(actualizarLinea){ - var rows = $("#tableCompCubierta").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - if (row.tipo=='sobrecubierta') - fill_lp_sobrecubierta(row, true); - } - } - } - else{ - $('#title_cubierta').html('' + (tableCompCubierta.rows().count()>0 ?(' (' + tableCompCubierta.rows().count() + ')'):'')); - if(tableCompCubierta.rows().count()==0){ - $('#insertarCubiertaBtn').addClass('d-none') - $('#total_comp_cubierta').html('0.00') - } - else{ - selectCubiertaLineas(); - } - - } - yeniden(data.); - return true; - }, - error: function(e){ - return false; - } - }) - } - - else{ - clearSobrecubierta(); - } - } - - - - $('.comp_negro_items').on('change', function (e) { - - checkComparadorInt(false,false); - }); - - $('.comp_negrohq_items').on('change', function (e) { - - checkComparadorInt(false, true); - }); - - $('.comp_color_items').on('change', function (e) { - - checkComparadorInt(true, false); - }); - - $('.comp_colorhq_items').on('change', function (e) { - checkComparadorInt(true, true); - }); - - - - $('#tipoImpresion').on("change.select2", function () { - updatePapelesComparador(); - $('#title_int_rot').html(''); - $('#title_int_plana').html(''); - if (($('#tipoImpresion').select2('data')[0].id == 'negro' || - $('#tipoImpresion').select2('data')[0].id == 'color')){ - - $('#tableCompIntRotativa').DataTable().clear().draw(); - $('#total_comp_rot').html("0.00"); - - - $('#compPaginasColor').val('0') - $('#compPaginasColorhq').val('0') - $('#compPaginasNegrohq').val('0'); - $('#compPaginasNegro').val($('#paginas').val()) - - if($('#tipoImpresion').select2('data')[0].id == 'negro'){ - $('#compGramajeColor').val('').trigger('change') - $('#compPapelColor').val(0).trigger('change') - } - - if( $('#tableCompIntPlana').DataTable().rows().count() > 0 && - $('#tableCompIntPlana').DataTable().cell(0, 0).data().includes('hq')) { - - $('#tableCompIntPlana').DataTable().clear().draw(); - $('#total_comp_plana').html("0.00"); - } - - } - else if (($('#tipoImpresion').select2('data')[0].id == 'negrohq' || - $('#tipoImpresion').select2('data')[0].id == 'colorhq')){ - - $('#tableCompIntRotativa').DataTable().clear().draw(); - $('#total_comp_rot').html("0.00"); - - $('#compPaginasColorhq').val('0') - $('#compPaginasColor').val('0') - $('#compPaginasNegro').val('0') - $('#compPaginasNegrohq').val($('#paginas').val()) - - if($('#tipoImpresion').select2('data')[0].id == 'negrohq'){ - $('#compGramajeColorhq').val('').trigger('change') - $('#compPapelColorhq').val(0).trigger('change') - } - - if($('#tableCompIntPlana').DataTable().rows().count() > 0 && - !$('#tableCompIntPlana').DataTable().cell(0, 0).data().includes('hq')) { - - $('#tableCompIntPlana').DataTable().clear().draw(); - $('#total_comp_plana').html("0.00"); - } - } - }); - - $('#tipoImpresion').on("select2:close", function () { - - $('#paginas').change() - }) - - - function checkComparadorInt(is_color, is_hq, actualizarLineaPlana=false, actualizarLineaRot=false) { - - try{ - - clearIntLineas(is_color); - clearIntRot(); - $('#title_int_rot').html(''); - $('#title_int_plana').html(''); - - elementos = getIDsComparador(is_color, is_hq) - - if ($(''+ elementos.papel).select2('data').length > 0 && - $(''+ elementos.gramaje).select2('data').length > 0 && - parseInt($(''+ elementos.paginas).val()) >= 0 && - checkDatosPedidoForComp()) { - - - getLineasIntPlana(is_color, is_hq, actualizarLineaPlana).then((result) =>{ - // Para rotativa, si es color el papel y el gramaje tiene que ser igual - if(!is_color) - { - getLineasIntRot(is_hq, actualizarLineaRot); - } - else - { - if(!is_hq){ - if ($('#compPapelNegro').select2('data').length>0 && $('#compPapelColor').select2('data').length>0 && - $('#compGramajeNegro').select2('data').length>0 && $('#compGramajeColor').select2('data').length>0) - { - if(($('#compPapelNegro').select2('data')[0].id == $('#compPapelColor').select2('data')[0].id && - $('#compGramajeNegro').select2('data')[0].text.trim() == $('#compGramajeColor').select2('data')[0].text.trim())) - { - getLineasIntRot(is_hq, actualizarLineaRot); - } - else - { - $('#errorComRot').html(''); - } - } - } - } - }); - } - }catch(e){ - console.log(e) - } - } - - - $('#compPapelNegro').on('select2:select', function (e){ - - if($('#compPapelNegro').select2('data')[0].id=='0'){ - $('#compGramajeNegro').val('').change(); - $('#compGramajeNegro').prop('disabled', true); - } - - else{ - $('#insertarPlanaBtn').addClass('d-none') - $('#insertarRotativaBtn').addClass('d-none') - $('#total_comp_plana').html('0.00') - $('#total_comp_rot').html('0.00') - $('#compGramajeNegro').val('').change(); - $('#compGramajeNegro').empty().trigger("change"); - $('#compGramajeNegro').prop('disabled', false); - $('#compGramajeNegro').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'bn', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelNegro').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - } - }); - - $('#compPapelNegrohq').on('select2:select', function (e){ - - if($('#compPapelNegrohq').select2('data')[0].id=='0'){ - $('#compGramajeNegrohq').val('').change(); - $('#compGramajeNegrohq').prop('disabled', true); - } - else{ - $('#insertarPlanaBtn').addClass('d-none') - $('#insertarRotativaBtn').addClass('d-none') - $('#total_comp_plana').html('0.00') - $('#total_comp_rot').html('0.00') - $('#compGramajeNegrohq').empty().trigger("change"); - $('#compGramajeNegrohq').prop('disabled', false); - $('#compGramajeNegrohq').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'bnhq', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelNegrohq').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - } - }); - - - $('#compPapelColor').on('select2:select', function (e){ - - if($('#compPapelColor').select2('data')[0].id=='0'){ - $('#compGramajeColor').val('').change(); - $('#compGramajeColor').prop('disabled', true); - } - else{ - $('#insertarPlanaBtn').addClass('d-none') - $('#insertarRotativaBtn').addClass('d-none') - $('#total_comp_plana').html('0.00') - $('#total_comp_rot').html('0.00') - $('#compGramajeColor').empty().trigger("change"); - $('#compGramajeColor').prop('disabled', false); - $('#compPapelColor').find('option[value="0"]').remove(); - $('#compGramajeColor').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'color', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelColor').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - } - }); - - - $('#compPapelColorhq').on('select2:select', function (e){ - - if($('#compPapelColorhq').select2('data')[0].id=='0'){ - $('#compGramajeColorhq').val('').change(); - $('#compGramajeColorhq').prop('disabled', true); - } - else{ - $('#insertarPlanaBtn').addClass('d-none') - $('#insertarRotativaBtn').addClass('d-none') - $('#total_comp_plana').html('0.00') - $('#total_comp_rot').html('0.00') - $('#compGramajeColorhq').empty().trigger("change"); - $('#compGramajeColorhq').prop('disabled', false); - $('#compPapelColorhq').find('option[value="0"]').remove(); - $('#compGramajeColorhq').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'colorhq', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelColorhq').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - } - }); - - $('#compPapelCubierta').on('select2:select', function (e){ - if($('#compPapelCubierta').select2('data')[0].id=='0'){ - $('#compGramajeCubierta').val('').change(); - $('#compGramajeCubierta').prop('disabled', true); - } - else{ - clearCubierta(); - $('#compGramajeCubierta').empty().trigger("change"); - $('#compGramajeCubierta').val('').trigger('change'); - $('#compGramajeCubierta').prop('disabled', false); - $('#compPapelCubierta').find('option[value="0"]').remove(); - $('#compGramajeCubierta').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'cubierta', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelCubierta').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - } - }); - - $('#compPapelSobrecubierta').on('select2:open', function (e){ - $('#compGramajeSobrecubierta').val(0).trigger('change'); - $('#compGramajeSobrecubierta').select2("destroy") - $('#compGramajeSobrecubierta').select2({allowClear: false, minimumResultsForSearch: Infinity}) - }) - - - $('#compPapelSobrecubierta').on('select2:select', function (e){ - if($('#compPapelSobrecubierta').select2('data')[0].id=='0'){ - - $('#compGramajeSobrecubierta').prop('disabled', true); - } - else{ - clearSobrecubierta(); - $('#compGramajeSobrecubierta').prop('disabled', false); - $('#compPapelSobrecubierta').find('option[value="0"]').remove(); - $('#compGramajeSobrecubierta').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function (params) { - return { - tipo: 'gramaje', - uso: 'sobrecubierta', - tirada: parseInt($('#tirada').val()), - merma: parseInt($('#mermacubierta').val()), - datos: $('#compPapelSobrecubierta').select2('data')[0].text.trim() , - : v - }; - }, - delay: 60, - processResults: function (response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - } - }); - - - function checkDatosPedidoForComp() { - - const dimension = getDimensionLibro(); - - if (parseInt($('#paginas').val()) <= 0){ - popErrorAlert('', 'divAlarmasComparador'); - return false; - } - if (parseInt($('#tirada').val()) <= 0){ - popErrorAlert('', 'divAlarmasComparador'); - return false; - } - if('ancho' in dimension && 'alto' in dimension){ - - if(dimension.alto < 60 || dimension.ancho < 60 || isNaN(dimension.alto) || isNaN(dimension.ancho) ){ - popErrorAlert('', 'divAlarmasComparador'); - return false; - } - } - else{ - popErrorAlert('', 'divAlarmasComparador'); - return false; - } - return true; - } - - init_comparador() - init_lineas_comparador() - -endSection() ?> \ No newline at end of file +
\ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoItems.php index f4410468..f99d60a1 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoItems.php @@ -16,7 +16,7 @@ - +
@@ -26,9 +26,9 @@ - "> + - "> +
@@ -38,11 +38,11 @@ - + - @@ -54,15 +54,11 @@ - + + + +
@@ -77,7 +73,7 @@ - +
@@ -87,7 +83,7 @@ - +
@@ -101,7 +97,7 @@ - + @@ -110,7 +106,7 @@ - + @@ -119,7 +115,7 @@ - + @@ -129,12 +125,11 @@ @@ -150,14 +145,6 @@ * @@ -167,7 +154,7 @@ - + diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js deleted file mode 100644 index f1871aef..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js +++ /dev/null @@ -1,2079 +0,0 @@ -/**************************************************************************************** - * Seccion para las funciones generales de la pagina - ***************************************************************************************/ - -$('.nav-servicios button').on('shown.bs.tab', function(){ - $("#tableOfServiciosEncuadernacion").DataTable().columns.adjust(); - $("#tableOfServiciosPreimpresion").DataTable().columns.adjust(); - $("#tableOfServiciosManipulado").DataTable().columns.adjust(); - $("#tableOfServiciosAcabado").DataTable().columns.adjust(); - $("#tableOfServiciosExtra").DataTable().columns.adjust(); -}) - - -$('#serv_default').on('click', function(){ - get_tarifas_enc('default').then( - get_tarifas_manipulado('default') - ) - showBreadCrumbSaveButton(true); -}) - -// Delete row -$(document).on('click', '.btn-delete-serv', function(e) { - const dataId = $(this).attr('data-id'); - const rowId = $(this).closest('td').parent()[0].sectionRowIndex; - var dataText = null; - - var table = ""; - if($(this).closest('table').attr('id').includes('tableOfServiciosEncuadernacion')){ - table = "tableOfServiciosEncuadernacion"; - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosAcabado')){ - table = "tableOfServiciosAcabado"; - dataText = $(this).attr('data-text'); - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosManipulado')){ - table = "tableOfServiciosManipulado"; - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosPreimpresion')){ - table = "tableOfServiciosPreimpresion"; - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosExtra')){ - table = "tableOfServiciosExtra"; - } - else{ - table = ""; - } - - if(table != ""){ - if(dataText==null){ - $('#' + table).DataTable().rows( function ( idx, data, node ) { - return data[0] === dataId; - } ) - .remove() - .draw(); - } - $('#' + table).DataTable().rows( function ( idx, data, node ) { - return ((data[0] === dataId) && (data[1]=== dataText)); - } ) - .remove() - .draw(); - } - - check_serv_enc_error() - check_serv_acabado_error() - check_serv_preimpresion_error() - check_serv_manipulado_error() - check_serv_extra_error() - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true - }) - //updateTotales(false, true, false) - showBreadCrumbSaveButton(true); - -}); - -function save_servicios(){ - - var datosAcabado = get_datos_acabado() - var datosEnc = get_datos_encuadernacion() - var datosManipulado = get_datos_manipulado() - var datosPreimpresion = get_datos_preimpresion() - var datosServiciosExtra = get_datos_serviciosextra() - - const domain = window.location.origin - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - fetch(domain + "/presupuestos/presupuestoencuadernaciones/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosEnc}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - .then( - fetch(domain + "/presupuestos/presupuestomanipulados/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosManipulado}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) - .then( - fetch(domain + "/presupuestos/presupuestoacabados/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosAcabado}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) - .then( - fetch(domain + "/presupuestos/presupuestopreimpresiones/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosPreimpresion}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) - - .then( - fetch(domain + "/presupuestos/presupuestoserviciosextra/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosServiciosExtra}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) -} - - -/**************************************************************************************** - * Seccion para los servicios de acabado - ***************************************************************************************/ -var tableServiciosAcabado = new DataTable('#tableOfServiciosAcabado',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, -}); - -tableServiciosAcabado.on('draw', function(){ - - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_acabado(){ - - $('#add_servicio_acabado_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioAcabadoList - }) - - window.serviciosacabadosList.forEach((element) =>{ - - nombre_completo = element.nombre - if (element.cubierta == 1){ - nombre_completo += ' (' + window.Presupuestos.cubierta + ')' - } - else if (element.sobrecubierta == 1){ - nombre_completo += ' (' + window.Presupuestos.sobrecubierta + ')' - } - - var precio_unidad = parseFloat(element.precio_unidad).toFixed(2) - var margen = parseFloat(element.margen).toFixed(2) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosAcabado.row.add([ - element.tarifa_acabado_id, - nombre_completo, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).draw(false) - - $('#proveedor_acabado_' + element.tarifa_acabado_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoAcabados, - type: 'post', - dataType: 'json', - - data: function (params) { - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: element.tarifa_acabado_id, - tirada: tirada, - }; - return_data = Object.assign(return_data, window.token_ajax); - - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - $('#proveedor_acabado_' + element.tarifa_acabado_id).on('change', select_acabado_event) - - - $('#precio_total_acabado_' + element.tarifa_acabado_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }) - - check_serv_acabado_error() -} - -function select_acabado_event(){ - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var tarifa_id = null; - if(this.id.includes('proveedor_acabado')){ - tarifa_id = this.id.split('_')[2]; - } - else{ - tarifa_id = this.id.split('_')[1]; - } - - var datos = { - tarifa_acabado_id: tarifa_id, - tirada: tirada, - proveedor_id: parseInt($('#proveedor_acabado_' + tarifa_id).select2('data')[0].id), - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax); - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoAcabados, - data: datos, - success: function (data) { - - var precio_unidad = parseFloat(data.values[0].precio_unidad).toFixed(2) - var margen = parseFloat(data.values[0].margen).toFixed(2) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#precio_unidad_acabado_' + datos.tarifa_acabado_id).text(precio_unidad_coste + ' / ' + precio_unidad) - $('#precio_total_acabado_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].total).toFixed(2)) - $('#acabado_margen_' + datos.tarifa_acabado_id).val(margen) - - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - -function check_serv_acabado_error(){ - - var htmlString = ''; - - $('#tableOfServiciosAcabado tr').each(function(){ - if($(this).find('td').eq(2).text() == '0.00'){ - htmlString = ` - `; - } - }) - $('#serv-acabado-error').html(htmlString) -} - -function get_tarifas_acabado(tarifa_id = -1, uso=null){ - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var datos = { - tarifa_acabado_id : tarifa_id, - tirada: tirada, - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax) - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoAcabados, - data: datos, - success: function (data) { - - data.values.forEach((row) => { - - nombre = row.tarifa_nombre - if(uso!= null) - nombre += ' (' + uso + ')' - - var precio_unidad = parseFloat(row.precio_unidad).toFixed(2) - var margen = parseFloat(row.margen).toFixed(2) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosAcabado.row.add([ - row.tarifa_id, - nombre, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).draw(false) - - $('#precio_total_acabado_' + row.tarifa_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - - - $('#proveedor_acabado_' + row.tarifa_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoAcabados, - type: 'post', - dataType: 'json', - - data: function (params) { - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: row.tarifa_id, - tirada: tirada, - }; - return_data = Object.assign(return_data, window.token_ajax); - - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - $('#proveedor_acabado_' + row.tarifa_id).on('change', select_acabado_event) - }); - - check_serv_acabado_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - -function servicioRetractilado(){ - if($('#retractilado').prop('checked')){ - $('#add_servicio_acabado_list').val(window.serviciosAutomaticos.retractilado) - $('#insertar_serv_acabado').click() - } - else{ - var row_indexes = tableServiciosAcabado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosAcabado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.retractilado ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosAcabado.row(row_indexes[0]).remove().draw() - check_serv_acabado_error() - } - } -} - -function servicioRetractilado5(){ - if($('#retractilado5').prop('checked')){ - $('#add_servicio_acabado_list').val(window.serviciosAutomaticos.retractilado5) - $('#insertar_serv_acabado').click() - } - else{ - var row_indexes = tableServiciosAcabado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosAcabado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.retractilado5 ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosAcabado.row(row_indexes[0]).remove().draw() - check_serv_acabado_error() - } - } -} - -function servicioFajaColor(){ - if($('#fajaColor').prop('checked')){ - $('#add_servicio_acabado_list').val(window.serviciosAutomaticos.fajaColor) - $('#insertar_serv_acabado').click() - } - else{ - var row_indexes = tableServiciosAcabado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosAcabado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.fajaColor ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosAcabado.row(row_indexes[0]).remove().draw() - check_serv_acabado_error() - } - } -} - -$('#insertar_serv_acabado').on('click', function(){ - const tarifa_text = $('#add_servicio_acabado_list').select2('data')[0].text.trim(); - - if(tarifa_text.length > 0){ - var table = $("#tableOfServiciosAcabado").DataTable(); - var rows = table.rows().data().toArray(); - var found = rows.some(row => row[1] === tarifa_text); - - if(!found) - get_tarifas_acabado($('#add_servicio_acabado_list').select2('data')[0].id); - else - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-acabado-alert'); - } - check_serv_acabado_error(); - showBreadCrumbSaveButton(true); - -}) - - -function insertar_acabado_exterior($servicio_id, $uso=""){ - - const tarifa_text = '(' +$uso + ')' - - var tablaAcabados = $("#tableOfServiciosAcabado").DataTable() - tablaAcabados.rows().every(function () { - var data = this.data(); - if(data[1].includes(tarifa_text)){ - this.remove().draw(false); - } - }) - - get_tarifas_acabado($servicio_id, $uso); - tablaAcabados.draw(); - check_serv_acabado_error() -} - -function get_datos_acabado(){ - - var datosAcabado = [] - if($('#tableOfServiciosAcabado').DataTable().rows().count()>0){ - $("#tableOfServiciosAcabado tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 1: - if($(this).text().includes(window.Presupuestos.cubierta)) - values['cubierta'] = 1 - else - values['cubierta'] = 0 - if($(this).text().includes(window.Presupuestos.sobrecubierta)) - values['sobrecubierta'] = 1 - else - values['sobrecubierta'] = 0 - break - case 2: - values['proveedor_id'] = $(this).children(":first").select2('data')[0].id - break - case 3: - values['precio_unidad'] = $(this).text().split('/')[1].trim() - break - case 4: - values['precio_total'] = $(this).children(":first").val() - break - case 5: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosAcabado.push(values) - }) - } - return datosAcabado -} - - -async function get_servAcabados_tiradasAlternativas(tirada){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosAcabados ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_acabado(), - tirada: parseInt(tirada), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestoacabados/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - - //const values = await response.json(); - yeniden(data[window.csrf_token]); - data.lines.forEach((line) => { - serviciosAcabados.coste += parseFloat(line[0].total); - serviciosAcabados.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; - }); - - }); - } - return serviciosAcabados; -} - - -/**************************************************************************************** - * Seccion para los servicios de encuadernación - ***************************************************************************************/ -var tableServiciosEnc = new DataTable('#tableOfServiciosEncuadernacion',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - -}); - -tableServiciosEnc.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_encuadernado(){ - - - $('#add_servicio_enc_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioEncuadernadoList - }) - - window.serviciosencuadernadosList.forEach((element) =>{ - - const tarifa_id = element.tarifa_encuadernado_id - var proveedor_nombre = element.proveedor===null? window.Presupuestos.no_disponible: element.proveedor - - var precio_unidad = parseFloat(element.precio_unidad).toFixed(2) - var margen = parseFloat(element.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - var linea = [ - element.tarifa_encuadernado_id, - element.nombre, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - (element.hasOwnProperty('paginas_por_cuadernillo') && element.paginas_por_cuadernillo!=null)?selectForCuadernillos(element.tarifa_encuadernado_id, element.paginas_por_cuadernillo):'', - '' + convertirTiempo(element.tiempo) + '', - '', - '', - '' - ] - - tableServiciosEnc.row.add(linea).draw(false) - - $('#precio_total_encuadernado_' + element.tarifa_encuadernado_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - $('#proveedor_enc_' + element.tarifa_encuadernado_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoEncuadernaciones, - type: 'post', - dataType: 'json', - - data: function (params) { - - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: tarifa_id, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - tirada: tirada, - ancho: dimension.ancho, - alto: dimension.alto, - searchtxt: params.term, // search term - }; - return_data = Object.assign(return_data, window.token_ajax); - - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - $('#proveedor_enc_' + element.tarifa_encuadernado_id).on('change', select_enc_event) - - if(element.hasOwnProperty('paginas_por_cuadernillo') && element.paginas_por_cuadernillo!=null){ - - $('#cuadernillos_' + element.tarifa_encuadernado_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - }); - - $('#cuadernillos_' + element.tarifa_encuadernado_id).on('change', select_enc_event) - } - - }); - check_serv_enc_error() - -} - -function selectForCuadernillos(tarifa_id, select_value){ - const value_list = [32, 28, 24, 20, 16]; - var string = - ''; - return string; -} - -function convertirTiempo(horas){ - if(horas != null){ - if(parseFloat(horas)>0){ - const seconds = parseFloat(horas) * 3600; - // se convierte a formato hh:mm:ss - const h = Math.floor(seconds / 3600); - const minutos = Math.floor((seconds % 3600) / 60); - const segundos = Math.round(seconds % 60, 0); - return h + ':' + minutos + ':' + segundos; - } - else{ - return ""; - } - - } - else{ - return ""; - } -} - -function select_enc_event(){ - - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var tarifa_id = null; - if(this.id.includes('proveedor_enc')){ - tarifa_id = this.id.split('_')[2]; - } - else{ - tarifa_id = this.id.split('_')[1]; - } - // se checkea si el elemento #cuadernillos_ + tarifa_id existe - var paginas_por_cuadernillo = null; - if($('#cuadernillos_' + tarifa_id).length){ - paginas_por_cuadernillo = parseInt($('#cuadernillos_' + tarifa_id).select2('data')[0].id); - } - - var datos = { - tarifa_encuadernacion_id: tarifa_id, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - tirada: tirada, - ancho: dimension.ancho, - alto: dimension.alto, - paginas_por_cuadernillo: paginas_por_cuadernillo, - proveedor_id: parseInt($('#proveedor_enc_' + tarifa_id).select2('data')[0].id), - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax); - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoEncuadernaciones, - data: datos, - success: function (data) { - - var precio_unidad = parseFloat(data.values[0].precio_unidad).toFixed(2) - var margen = parseFloat(data.values[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#precio_unidad_encuadernado_' + datos.tarifa_encuadernacion_id).text(precio_unidad_coste + ' / ' + precio_unidad) - $('#tiempo_encuadernado_' + datos.tarifa_encuadernacion_id).text(convertirTiempo(data.values[0].tiempo)) - $('#precio_total_encuadernado_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values[0].total).toFixed(2)) - $('#enc_margen_' + datos.tarifa_encuadernacion_id).val(margen) - - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -function check_serv_enc_error(){ - - var htmlString = ''; - - $('#tableOfServiciosEncuadernacion tr').each(function(){ - if($(this).find('td').eq(3).text() == '0.00'){ - htmlString = ` - `; - } - }) - $('#serv-enc-error').html(htmlString) -} - - -async function get_tarifas_enc(tipo=null, tarifa_id = -1){ - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var datos = { - tarifa_encuadernacion_id : tarifa_id, - tirada: tirada, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - ancho: dimension.ancho, - alto: dimension.alto, - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax) - - if(tipo != null){ - datos['tipo'] = tipo; - datos['tipo_impresion_id'] = parseInt($('#tipo_impresion_id').val()) - } - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoEncuadernaciones, - data: datos, - success: function (data) { - - if(tipo=='default') - tableServiciosEnc.clear().draw() - - data.values.forEach((row) => { - - var precio_unidad = parseFloat(row.precio_unidad).toFixed(2) - var margen = parseFloat(row.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosEnc.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - (row.hasOwnProperty('paginas_por_cuadernillo') && row.paginas_por_cuadernillo!=null)?selectForCuadernillos(row.tarifa_id, 32):'', - '' + convertirTiempo(row.tiempo) + '', - '', - '', - '' - ]).draw(false) - - $('#precio_total_encuadernado_' + row.tarifa_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - $('#proveedor_enc_' + row.tarifa_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoEncuadernaciones, - type: 'post', - dataType: 'json', - - data: function (params) { - - if( parseInt( $('#tirada').val() )>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: row.tarifa_id, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - tirada: tirada, - ancho: dimension.ancho, - alto: dimension.alto, - searchtxt: params.term, // search term - } - return_data = Object.assign(return_data, window.token_ajax); - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - - $('#proveedor_enc_' + row.tarifa_id).on('change', select_enc_event) - - - if(row.hasOwnProperty('paginas_por_cuadernillo') && row.paginas_por_cuadernillo!=null){ - $('#cuadernillos_' + row.tarifa_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - }); - - $('#cuadernillos_' + row.tarifa_id).on('change', select_enc_event) - } - }); - check_serv_enc_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -$('#insertar_serv_enc').on('click', function(){ - const tarifa_text = $('#add_servicio_enc_list').select2('data')[0].text.trim() - - if( $('#add_servicio_enc_list').select2('data')[0].text.trim().length > 0){ - if($('#tableOfServiciosEncuadernacion tr > td:contains(' + tarifa_text + ')').length == 0) - get_tarifas_enc('tarifa', $('#add_servicio_enc_list').select2('data')[0].id); - else{ - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-enc-alert') - } - } - check_serv_enc_error() -}) - - -function get_datos_encuadernacion(){ - - var datosEnc = [] - if($("#tableOfServiciosEncuadernacion").DataTable().rows().count()>0){ - $("#tableOfServiciosEncuadernacion tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 2: - values['proveedor_id'] = $(this).children(":first").select2('data')[0].id - break - case 3: - values['precio_unidad'] = $(this).text().split('/')[1].trim() - break - case 4: - values['paginas_por_cuadernillo'] = $(this).children(":first").val() - // Si el valor es "undefined" se pone a null - if(values['paginas_por_cuadernillo'] == "undefined") - values['paginas_por_cuadernillo'] = null - case 5: - values['tiempo'] = $(this).text() - // se pasa el string hh:mm:ss a horas - if(values['tiempo'] != null) - values['tiempo'] = parseInt(values['tiempo'].split(':')[0]) + parseInt(values['tiempo'].split(':')[1])/60 + parseInt(values['tiempo'].split(':')[2])/3600 - break - case 6: - values['precio_total'] = $(this).children(":first").val() - break - case 7: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosEnc.push(values) - }) - } - - return datosEnc -} - - -async function get_servEncuadernacion_tiradasAlternativas(tirada, paginas, ancho, alto){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosEncuadernacion ={ - coste: 0.0, - margen: 0.0, - } - - var json_data = { - datos: get_datos_encuadernacion(), - tirada: parseInt(tirada), - paginas: parseInt(paginas), - ancho: ancho, - alto: alto, - POD: $('#POD').val() - } - - if(json_data.datos.length>0){ - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestoencuadernaciones/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - - //const values = await response.json(); - yeniden(data[window.csrf_token]); - data.lines.forEach((line) => { - serviciosEncuadernacion.coste += parseFloat(line[0].total); - serviciosEncuadernacion.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; - }); - - }); - } - return serviciosEncuadernacion; - -} - - -/**************************************************************************************** - * Seccion para los servicios de manipulado - ***************************************************************************************/ -var tableServiciosManipulado = new DataTable('#tableOfServiciosManipulado',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, -}); - -tableServiciosManipulado.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_manipulado(){ - - $('#add_servicio_manipulado_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioManipuladoList - }) - - window.serviciosmanipuladoList.forEach((element) =>{ - - var precio_unidad = parseFloat(element.precio_unidad).toFixed(2) - var margen = parseFloat(element.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosManipulado.row.add([ - element.tarifa_manipulado_id, - element.nombre, - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).draw(false) - - $('#precio_total_manipulado_' + element.tarifa_manipulado_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }) - check_serv_manipulado_error() -} - -function check_serv_manipulado_error(){ - - var htmlString = ''; - - $('#tableOfServiciosManipulado tr').each(function(){ - if($(this).find('td').eq(2).text() == '0.00'){ - htmlString = ` - `; - } - }) - $('#serv-manipulado-error').html(htmlString) -} - -async function get_tarifas_manipulado(tipo=null, tarifa_id = -1){ - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var datos = { - tarifa_manipulado_id : tarifa_id, - tirada: tirada, - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax) - - if(tipo != null){ - datos['tipo'] = tipo; - datos['solapas'] = $('#solapas').is(':checked')?1:0; - datos['tipo_impresion_id'] = parseInt($('#tipo_impresion_id').val()); - } - - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoManipulados, - data: datos, - success: function (data) { - - if(tipo=='default') - tableServiciosManipulado.clear().draw() - - data.values.forEach((row) => { - - var precio_unidad = parseFloat(row.precio_unidad).toFixed(2) - var margen = parseFloat(row.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosManipulado.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).draw(false) - - $('#precio_total_manipulado_' + row.tarifa_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - }); - check_serv_manipulado_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - -$('#insertar_serv_manipulado').on('click', function(){ - const tarifa_text = $('#add_servicio_manipulado_list').select2('data')[0].text.trim() - - if( $('#add_servicio_manipulado_list').select2('data')[0].text.trim().length > 0){ - if($('#tableOfServiciosManipulado tr > td:contains(' + tarifa_text + ')').length == 0){ - get_tarifas_manipulado(null, $('#add_servicio_manipulado_list').select2('data')[0].id); - } - else{ - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-manipulado-alert') - } - } - check_serv_manipulado_error() -}) - - -function servicioGuardas(add_service = false){ - if(add_service){ - $('#add_servicio_manipulado_list').val(window.serviciosAutomaticos.plegadoGuardas) - $('#insertar_serv_manipulado').click() - } - else{ - var row_indexes = tableServiciosManipulado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosManipulado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.plegadoGuardas ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosManipulado.row(row_indexes[0]).remove().draw() - check_serv_manipulado_error() - } - } -} - -function get_datos_manipulado(){ - - var datosManipulado = [] - if($("#tableOfServiciosManipulado").DataTable().rows().count()>0){ - - $("#tableOfServiciosManipulado tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 2: - values['precio_unidad'] = $(this).text().split('/')[1].trim() - break - case 3: - values['precio_total'] = $(this).children(":first").val() - break - case 4: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosManipulado.push(values) - }) - } - - return datosManipulado -} - - -async function get_servManipulado_tiradasAlternativas(tirada){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosManipulado ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_manipulado(), - tirada: parseInt(tirada), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestomanipulados/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - //const values = await response.json(); - yeniden(data[window.csrf_token]); - data.lines.forEach((line) => { - serviciosManipulado.coste += parseFloat(line[0].total); - serviciosManipulado.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; - }); - - }); - } - return serviciosManipulado; -} - -/**************************************************************************************** - * Seccion para los servicios de preimpresión - ***************************************************************************************/ -var tableServiciosPreimpresion = new DataTable('#tableOfServiciosPreimpresion',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - } -}); - -tableServiciosPreimpresion.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - - -function init_servicio_preimpresion(){ - - - $('#add_servicio_preimpresion_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioPreimpresionList - }) - - window.serviciospreimpresionList.forEach((element) =>{ - - var precio = parseFloat(element.precio).toFixed(2) - var margen = parseFloat(element.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosPreimpresion.row.add([ - element.tarifa_preimpresion_id, - element.nombre, - '' + coste + '', - '', - '', - '' - ]).draw(false) - - $('#precio_preimpresion_' + element.tarifa_preimpresion_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }) - check_serv_preimpresion_error() -} - -function check_serv_preimpresion_error(){ - - var htmlString = ''; - - $('#tableOfServiciosPreimpresion tr').each(function(){ - - if(parseFloat($(this).find('td:eq(2) input').val()) == '0'){ - htmlString = ` - `; - } - }) - $('#serv-preimpresion-error').html(htmlString) -} - -function get_tarifas_preimpresion(tarifa_id = -1){ - - var datos = { - tarifa_preimpresion_id : tarifa_id, - }; - datos = Object.assign(datos, window.token_ajax) - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoPreimpresion, - data: datos, - success: function (data) { - - data.values.forEach((row) => { - - var precio = parseFloat(row.precio).toFixed(2) - var margen = parseFloat(row.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosPreimpresion.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '' + coste + '', - '', - '', - '' - ]).draw(false) - - $('#precio_preimpresion_' + row.tarifa_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }); - check_serv_preimpresion_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -function servicioPrototipo(){ - if($('#prototipo').prop('checked')){ - $('#add_servicio_extra_list').val(serviciosAutomaticos.prototipo) - $('#insertar_serv_extra').click() - } - else{ - var row_indexes = tableServiciosExtra.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosExtra.cell( rowIdx, 0 ).data() == serviciosAutomaticos.prototipo ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosExtra.row(row_indexes[0]).remove().draw() - check_serv_preimpresion_error() - } - } -} - -function servicioFerro(){ - var row_indexes = tableServiciosExtra.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosExtra.cell( rowIdx, 0 ).data() == serviciosAutomaticos.ferro ? true : false; - } ); - if($('#ferro').prop('checked')){ - if(row_indexes.length == 0){ - $('#add_servicio_extra_list').val(serviciosAutomaticos.ferro) - $('#insertar_serv_extra').click() - } - } - else{ - if(row_indexes.length > 0){ - tableServiciosExtra.row(row_indexes[0]).remove().draw() - check_serv_extra_error() - } - } -} - -$('#insertar_serv_preimpresion').on('click', function(){ - - let data = $('#add_servicio_preimpresion_list').select2('data'); - if (data.length > 0) { - const tarifa_text = data[0].text.trim(); - if (tarifa_text.length > 0) { - if ($('#tableOfServiciosPreimpresion tr > td:contains(' + tarifa_text + ')').length == 0) - get_tarifas_preimpresion(data[0].id); - else { - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-preimpresion-alert'); - } - } - } - check_serv_preimpresion_error() -}) - - -function get_datos_preimpresion(){ - - var datosPreimpresion = [] - if($("#tableOfServiciosPreimpresion").DataTable().rows().count()>0){ - - $("#tableOfServiciosPreimpresion tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 3: - values['precio'] = $(this).children(":first").val() - break - case 4: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosPreimpresion.push(values) - }) - } - - return datosPreimpresion -} - - -async function get_servPreimpresion_tiradasAlternativas(){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosPreimpresion ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_preimpresion(), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestopreimpresiones/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - //const values = await response.json(); - yeniden(data[window.csrf_token]); - data.lines.forEach((line) => { - serviciosPreimpresion.coste += parseFloat(line[0].precio); - serviciosPreimpresion.margen += parseFloat(line[0].precio)*parseFloat(line[0].margen)/100.0; - }); - - }); - } - return serviciosPreimpresion; -} - - - - - -/**************************************************************************************** - * Seccion para los servicios extra - ***************************************************************************************/ -var tableServiciosExtra = new DataTable('#tableOfServiciosExtra',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - } -}); - -tableServiciosExtra.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_extra(){ - - - $('#add_servicio_extra_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioextraList - }) - - window.serviciosextraList.forEach((element) =>{ - - var precio = parseFloat(element.precio).toFixed(2) - var margen = parseFloat(element.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosExtra.row.add([ - element.tarifa_extra_id, - element.nombre, - '' + coste + '', - '', - '', - '' - ]).draw(false) - - $('#precio_servicioextra_' + element.tarifa_extra_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }) - check_serv_extra_error() -} - -function check_serv_extra_error(){ - - var htmlString = ''; - - $('#tableOfServiciosExtra tr').each(function(){ - - if(parseFloat($(this).find('td:eq(2) input').val()) == '0'){ - htmlString = ` - `; - } - }) - $('#serv-preimpresion-error').html(htmlString) -} - -function get_tarifas_extra(tarifa_id = -1){ - - var datos = { - tarifa_extra_id : tarifa_id, - }; - datos = Object.assign(datos, window.token_ajax) - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoServiciosExtra, - data: datos, - success: function (data) { - - data.values.forEach((row) => { - - var precio = parseFloat(row.precio).toFixed(2) - var margen = parseFloat(row.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosExtra.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '' + coste + '', - '', - '', - '' - ]).draw(false) - - $('#precio_servicioextra_' + row.tarifa_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }); - check_serv_extra_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -$('#insertar_serv_extra').on('click', function(){ - const tarifa_text = $('#add_servicio_extra_list').select2('data')[0].text.trim() - - if( $('#add_servicio_extra_list').select2('data')[0].text.trim().length > 0){ - if($('#tableOfServiciosExtra tr > td:contains(' + tarifa_text + ')').length == 0) - get_tarifas_extra($('#add_servicio_extra_list').select2('data')[0].id); - else{ - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-extra-alert') - } - } - check_serv_extra_error() -}) - - -function get_datos_serviciosextra(){ - - var datosServiciosExtra = [] - if($("#tableOfServiciosExtra").DataTable().rows().count()>0){ - - $("#tableOfServiciosExtra tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 3: - values['precio'] = $(this).children(":first").val() - break - case 4: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosServiciosExtra.push(values) - }) - } - - return datosServiciosExtra; -} - - -async function get_servExtra_tiradasAlternativas(){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosExtra ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_serviciosextra(), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestoserviciosextra/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - //const values = await response.json(); - yeniden(data[window.csrf_token]); - data.lines.forEach((line) => { - serviciosExtra.coste += parseFloat(line[0].precio); - serviciosExtra.margen += parseFloat(line[0].precio)*parseFloat(line[0].margen)/100.0; - }); - - }); - } - return serviciosExtra; -} - - -/**************************************************************************************** - * Seccion para "otros" - ***************************************************************************************/ -async function actualizar_servicios(update_preimpresion=false){ - - const domain = window.location.origin - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - var paginas = parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0 - - var datos_json_acabados = { - datos: get_datos_acabado(), - tirada: tirada, - POD: parseInt($('#POD').val()), - } - datos_json_acabados = Object.assign(datos_json_acabados, window.token_ajax); - - var datos_json_encuadernacion = { - datos: get_datos_encuadernacion(), - tirada: tirada, - paginas: paginas, - ancho: dimension.ancho, - alto: dimension.alto, - POD: parseInt($('#POD').val()), - } - datos_json_encuadernacion = Object.assign(datos_json_encuadernacion, window.token_ajax); - - var datos_json_manipulado = { - datos: get_datos_manipulado(), - tirada: tirada, - POD: parseInt($('#POD').val()), - } - datos_json_manipulado = Object.assign(datos_json_manipulado, window.token_ajax); - - var datos_json_preimpresion = { - datos: get_datos_preimpresion(), - } - datos_json_preimpresion = Object.assign(datos_json_preimpresion, window.token_ajax); - - - var datos_json_serviciosextra = { - datos: get_datos_serviciosextra(), - } - datos_json_preimpresion = Object.assign(datos_json_preimpresion, window.token_ajax); - - fetch(domain + "/presupuestos/presupuestoacabados/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_acabados), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - data.lines.forEach((line) => { - - var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#proveedor_acabado_' + line[0].tarifa_id).off('change') - if(line[0].hasOwnProperty('proveedor_id')){ - $('#proveedor_acabado_' + line[0].tarifa_id) - .append('') - } - else{ - $('#proveedor_acabado_' + line[0].tarifa_id).empty() - .append('') - } - $('#precio_unidad_acabado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad) - $('#precio_total_acabado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2)) - $('#acabado_margen_' + line[0].tarifa_id).text(margen) - $('#proveedor_acabado_' + line[0].tarifa_id).on('change', select_enc_event) - }); - check_serv_acabado_error() - yeniden(data[window.csrf_token]); - }).then( - - fetch(domain + "/presupuestos/presupuestoencuadernaciones/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_encuadernacion), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - data.lines.forEach((line) => { - - var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#proveedor_enc_' + line[0].tarifa_id).off('change') - if(line[0].hasOwnProperty('proveedor_id')){ - $('#proveedor_enc_' + line[0].tarifa_id) - .append('') - } - else{ - $('#proveedor_enc_' + line[0].tarifa_id).empty() - .append('') - } - $('#precio_unidad_encuadernado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad) - $('#precio_total_encuadernado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2)) - $('#enc_margen_' + line[0].tarifa_id).val(margen) - $('#proveedor_enc_' + line[0].tarifa_id).on('change', select_enc_event) - }); - check_serv_enc_error() - yeniden(data[window.csrf_token]); - }).then( - fetch(domain + "/presupuestos/presupuestomanipulados/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_manipulado), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - data.lines.forEach((line) => { - - var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#precio_unidad_manipulado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad) - $('#precio_total_manipulado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2)) - $('#manipulado_margen_' + line[0].tarifa_id).val(margen) - }); - check_serv_manipulado_error() - yeniden(data[window.csrf_token]); - }).then(function(){ - if(update_preimpresion){ - fetch(domain + "/presupuestos/presupuestopreimpresiones/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_preimpresion), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - - data.lines.forEach((line) => { - - var precio = parseFloat(line[0].total).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - $('#coste_preimprecion_' + line[0].tarifa_id).text(coste) - $('#precio_preimpresion_' + line[0].tarifa_id).val(precio) - $('#preimpresion_margen_' + line[0].tarifa_id).val(margen) - }); - check_serv_preimpresion_error() - yeniden(data[window.csrf_token]); - }) - } - }).then(function(){ - if(update_preimpresion){ - fetch(domain + "/presupuestos/presupuestoserviciosextra/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_serviciosextra), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - - var precio = parseFloat(data[0].total).toFixed(2) - var margen = parseFloat(data[0].margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - data.lines.forEach((line) => { - $('#coste_servicioextra_' + line[0].tarifa_id).text(coste) - $('#precio_serviciosextra_' + line[0].tarifa_id).val(precio) - $('#serviciosextra_margen_' + line[0].tarifa_id).val(margen) - }); - check_serv_preimpresion_error(); - yeniden(data[window.csrf_token]); - }) - } - }) - ) - ) - -} - -function popAlert(message, alertClass, alertIcon, containerId = 'sk-alert'){ - var htmlString = ` - `; - if(containerId == 'sk-alert'){ - $(window).scrollTop(0); - } - $('#' + containerId).hide().empty().html(htmlString).fadeIn("slow", function(){ - setTimeout(function(){ - $('#' + containerId).fadeOut("slow"); - }, 5000); - }); -} diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php index d6fbe850..aa8b93f3 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php @@ -93,6 +93,8 @@ + + @@ -103,12 +105,6 @@
@@ -131,7 +127,7 @@ - + @@ -141,12 +137,6 @@
@@ -168,11 +158,11 @@ - + - + @@ -183,12 +173,6 @@
@@ -211,7 +195,7 @@ - + @@ -221,12 +205,6 @@
@@ -249,7 +227,7 @@ - + @@ -259,12 +237,6 @@
@@ -280,90 +252,3 @@
- - - -section("additionalInlineJs") ?> - - // Generación de la lista de servicios de acabado (id, nombre) - window.acabadosList = ; - window.serviciosacabadosList = ; - window.serviciosAutomaticos = ; - - window.serviciosencuadernadosList = ; - - window.serviciosmanipuladoList = ; - - window.serviciospreimpresionList = ; - - window.serviciosextraList = ; - - window.routes_servicios = { - dataTableOfPresupuestoAcabados: "", - menuItemsOfPresupuestoAcabados: '', - dataTableOfPresupuestoPreimpresion: "", - dataTableOfPresupuestoEncuadernaciones: "", - dataTableOfPresupuestoManipulados: "", - menuItemsOfPresupuestoEncuadernaciones: '', - dataTableOfPresupuestoServiciosExtra: "", - } - - init_servicio_acabado() - - init_servicio_encuadernado() - - init_servicio_manipulado() - - init_servicio_preimpresion() - - init_servicio_extra() - - /* ELIMINADO PARA COMPROBAR EL MAXIMO DE SOLAPAS DESDE EL BACKEND - PENDIENTE - $('.solapas_cubierta').on('change', function(){ - - const ancho_libro = getDimensionLibro().ancho; - - // ancho_libro*2 + lomo + solapas*2 <= 630 - const limite_1 = ((630 - ancho_libro*2 - getLomoLineasPresupuesto()) / 2.0).toFixed(1); - // solapas <= ancho_libro - 10 - const limite_2 = ancho_libro - 10; - const limite = Math.min(limite_1, limite_2); - - if(parseInt($('#solapas_ancho').val()) > limite){ - $('#solapas_ancho').val(limite) - asyncMessageDialog( - window.Presupuestos.advertencia, - window.Presupuestos.actualizacionSolapasCubierta, - function(){}); - } - - $('#compGramajeCubierta').trigger('change') - - }) - - - $('.solapas_sobrecubierta').on('change', function(){ - - const ancho_libro = getDimensionLibro().ancho; - - // ancho_libro*2 + lomo + solapas*2 <= 630 - const limite_1 = ((630 - ancho_libro*2 - getLomoLineasPresupuesto()) / 2.0).toFixed(1); - // solapas <= ancho_libro - 10 - const limite_2 = ancho_libro - 10; - const limite = Math.min(limite_1, limite_2); - - if(parseInt($('#solapas_ancho_sobrecubierta').val()) > limite){ - $('#solapas_ancho_sobrecubierta').val(limite) - asyncMessageDialog( - window.Presupuestos.advertencia, - window.Presupuestos.actualizacionSolapasSobrecubierta, - function(){}); - } - - $('#compGramajeSobrecubierta').trigger('change') - }) - - */ - -endSection() ?> diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_lineasPresupuestoItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_lineasPresupuestoItems.js deleted file mode 100644 index 185aacd1..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_lineasPresupuestoItems.js +++ /dev/null @@ -1,4660 +0,0 @@ -/*********************** - * Funcionamiento general de la página - ************************/ -function fill_lp_from_bbdd(){ - - window.lineasPresupuestoList.forEach(function(lp) { - - const formas = JSON.parse(lp.formas) - lp.dimensiones_maquina = [formas.maquina_ancho, formas.maquina_alto] - lp.dimensiones_maquina_impresion = [formas.maquina_impresion_ancho, formas.maquina_impresion_alto] - lp.num_formas = { - value : formas.formas, - num_formas_verticales : formas.formas_v, - num_formas_horizontales : formas.formas_h, - posicion_formas : formas.formas_orientacion - } - lp['tipo_maquina'] = lp['maquina_tipo'] - lp['precio_impresion_horas'] = lp['precio_impresion'] - lp['margen_impresion_horas'] = lp['margen_impresion'] - lp['precio_libro'] = lp['libro'] - lp['precio_pedido'] = lp['total_papel_pedido'] - lp['total_impresion'] = lp['total_linea'] - lp['precios_pliegos'] = lp['pliegos_precio'] - lp['papel_generico_id'] = lp['papel_id'] - - dateObj = new Date(lp['tiempo_maquina'] * 1000); - hours = dateObj.getUTCHours(); - minutes = dateObj.getUTCMinutes(); - seconds = dateObj.getSeconds(); - lp['tiempo_maquina'] = hours.toString().padStart(2, '0') + ':' + - minutes.toString().padStart(2, '0') + ':' + - seconds.toString().padStart(2, '0'); - - if(lp.maquina_tipo=='inkjet'){ - - lp.datosTipologias = { - negro: lp.rotativa_negro, - cyan: lp.rotativa_cyan, - magenta: lp.rotativa_magenta, - amarillo: lp.rotativa_amarillo, - cg: lp.rotativa_cg, - gota_negro: lp.rotativa_gota_negro, - gota_color: lp.rotativa_gota_color, - } - - lp['paginas_color'] = lp['rotativa_pag_color'] - - lp['totalImpresion'] = lp['rotativa_total_impresion'] - lp['a_favor_fibra'] = lp['rotativa_a_favor_fibra'] - - lp['resolucion'] = lp['rotativa_resolucion'] - lp['superficie'] = lp['rotativa_area_paginas'] - - lp['num_gotas_negro'] = lp['rotativa_num_gotas_negro'] - lp['num_gotas_cyan'] = lp['rotativa_num_gotas_cyan'] - lp['num_gotas_magenta'] = lp['rotativa_num_gotas_magenta'] - lp['num_gotas_amarillo'] = lp['rotativa_num_gotas_amarillo'] - lp['num_gotas_cg'] = lp['rotativa_num_gotas_cg'] - - lp['precio_pagina_negro'] = lp['rotativa_precio_pag_negro'] - lp['precio_pagina_color'] = lp['rotativa_precio_pag_color'] - lp['factor_altura'] = lp['rotativa_factor_altura'] - lp['factor_anchura'] = lp['rotativa_factor_anchura'] - lp['paginas_por_pliego'] = lp['rotativa_pag_por_pliego'] - - lp['clicks_libro'] = lp['rotativa_clicks_libro'] - lp['peso_gotas_negro'] = lp['rotativa_peso_gotas_negro'] - lp['peso_gotas_cyan'] = lp['rotativa_peso_gotas_cyan'] - lp['peso_gotas_magenta'] = lp['rotativa_peso_gotas_magenta'] - lp['peso_gotas_amarillo'] = lp['rotativa_peso_gotas_amarillo'] - lp['peso_gotas_cg'] = lp['rotativa_peso_gotas_cg'] - lp['clicks_pedido'] = lp['rotativa_clicks_total'] - lp['precio_click_pedido'] = lp['precio_click_pedido'] - lp['margen_click_pedido'] = lp['margen_click_pedido'] - lp['precio_tinta'] = lp['rotativa_precio_tinta'] - - - lp['peso_gotas_negro_pedido'] = lp['rotativa_peso_gotas_negro_pedido'] - lp['peso_gotas_cyan_pedido'] = lp['rotativa_peso_gotas_cyan_pedido'] - lp['peso_gotas_magenta_pedido'] = lp['rotativa_peso_gotas_magenta_pedido'] - lp['peso_gotas_amarillo_pedido'] = lp['rotativa_peso_gotas_amarillo_pedido'] - lp['peso_gotas_cg_pedido'] = lp['rotativa_peso_gotas_cg_pedido'] - - } - if(lp.tipo.includes('rot')){ - - lp['maquina_velocidad'] = lp['rotativa_mxm'] - lp['metros_papel_libro'] = lp['rotativa_metros_libro'] - lp['metros_papel_total'] = lp['rotativa_metros_total'] - lp['velocidad_corte'] = lp['rotativa_velocidad_corte'] - lp['precio_hora_corte'] = lp['rotativa_precio_hora_corte'] - lp['tiempo_corte'] = lp['rotativa_tiempo_corte'] - lp['total_corte'] = lp['rotativa_total_corte'] - } - - lp['areaPaginas'] = lp['rotativa_superficie'] - - - data = processRowData(lp, lp.tipo, lp.tipo.replace(/_/g, '-')); - - var row = tableLineasPresupuesto.row("#" + lp.tipo); - - tableLineasPresupuesto.row.add(data).draw() - row = tableLineasPresupuesto.row("#" + lp.tipo); - - row.child(format(row.data())).show(); - - switch(lp.tipo){ - case 'lp_bn': - eventos_lp_bn(lp.maquina_tipo=='inkjet'?true:false) - break - case 'lp_bnhq': - eventos_lp_bnhq(lp.maquina_tipo=='inkjet'?true:false) - break - case 'lp_color': - eventos_lp_color(lp.maquina_tipo=='inkjet'?true:false) - break - case 'lp_colorhq': - eventos_lp_colorhq(lp.maquina_tipo=='inkjet'?true:false) - break - case 'lp_rot_bn': - eventos_lp_rot_bn() - break - case 'lp_rot_color': - eventos_lp_rot_color() - break - case 'lp_cubierta': - eventos_lp_cubierta() - break - case 'lp_sobrecubierta': - eventos_lp_sobrecubierta() - break - case 'lp_guardas': - eventos_lp_guardas() - lp['paginas_impresion'] = lp.paginas_impresion - break - } - - }) - -} - - -async function fill_bbdd_from_lp(presupuesto_id){ - - data=[]; - - tableLineasPresupuesto.rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var rowData = this.data(); - const formas = { - maquina_ancho: rowData.maquina_ancho, - maquina_alto: rowData.maquina_alto, - maquina_impresion_ancho: rowData.maquina_impresion_ancho, - maquina_impresion_alto: rowData.maquina_impresion_alto, - formas: rowData.formas, - formas_v: rowData.formas_v, - formas_h: rowData.formas_h, - formas_orientacion: rowData.formas_orientacion, - } - - var t_maq_str = rowData.tiempo.split(':'); // split it at the colons - var t_maq = 0 - - if(t_maq_str.length == 3) - t_maq = (+t_maq_str[0]) * 3600 + (+t_maq_str[1]) * 60 + (+t_maq_str[2]); - - linea_data = { - presupuesto_id: presupuesto_id, - tipo: rowData.row_id, - paginas: (rowData.row_id=='lp_guardas')?(($('#tipo_impresion_id').val() == 1 || $('#tipo_impresion_id').val() == 3)?8:4):rowData.paginas, - papel_id: rowData.papel, - gramaje: rowData.gramaje, - papel_impresion_id: rowData.papel_impresion_id, - papel_impresion: rowData.papel_impresion, - maquina_id: rowData.maquina_id, - maquina: rowData.maquina, - maquina_tipo: rowData.maquinaTipo, - tiempo_maquina: t_maq, - pliegos_libro: rowData.numeroPliegos, - pliegos_pedido: rowData.pliegosPedido, - pliegos_precio: rowData.precioPliego, - libro: rowData.libro, - total_papel_pedido: rowData.totalPapelPedido, - margen_papel_pedido: rowData.margenPapelPedido, - mano: rowData.lomo, - peso: rowData.peso, - precio_click: rowData.click, - precio_click_pedido: rowData.totalClicks, - margen_click_pedido: rowData.margenClicks, - check_papel_total: $('#' + rowData.row_id + '_checkPapel').is(":checked")?1:0, - check_impresion_total: $('#' + rowData.row_id + '_checkClicks').is(":checked")?1:0, - tarifa_impresion_id: rowData.tarifa_impresion_id, - formas: JSON.stringify(formas), - - horas_maquina: rowData.horasMaquina, - precio_hora: rowData.precioHora, - precio_impresion: rowData.precioImpresion, - margen_impresion: rowData.margenImpresion, - total_linea: rowData.total_linea, - } - - if(rowData.row_id=='lp_guardas') - linea_data.paginas_impresion = rowData.paginas_impresion - - // maquina rotativa o inkjet - if(linea_data.maquina_tipo=='inkjet'){ - - linea_data.rotativa_pag_color = rowData.numPagColor - - linea_data.rotativa_total_impresion = rowData.totalImpresion - linea_data.rotativa_a_favor_fibra = rowData.aFavorFibra, - linea_data.rotativa_negro = rowData.cobNegro - linea_data.rotativa_cyan = rowData.cobCyan - linea_data.rotativa_magenta = rowData.cobMagenta - linea_data.rotativa_amarillo = rowData.cobAmarillo - linea_data.rotativa_cg = rowData.cobCG - linea_data.rotativa_gota_negro = rowData.gotaNegro - linea_data.rotativa_gota_color = rowData.gotaColor - - - linea_data.rotativa_resolucion = rowData.resolucion - linea_data.rotativa_area_paginas = rowData.areaPaginas - - linea_data.rotativa_num_gotas_negro = rowData.gotaNegro - linea_data.rotativa_num_gotas_cyan = rowData.gotasCyan - linea_data.rotativa_num_gotas_magenta = rowData.gotasMagenta - linea_data.rotativa_num_gotas_amarillo = rowData.gotasAmarillo - linea_data.rotativa_num_gotas_cg = rowData.gotasCG - - linea_data.rotativa_precio_pag_negro = rowData.precioPagNegro - linea_data.rotativa_precio_pag_color = rowData.precioPagColor - linea_data.rotativa_factor_altura = rowData.factorAltura - linea_data.rotativa_factor_anchura = rowData.factorAnchura - linea_data.rotativa_pag_por_pliego = rowData.paginasPliego - - linea_data.rotativa_clicks_libro = rowData.clicksLibro - linea_data.rotativa_peso_gotas_negro = rowData.gTintaNegro - linea_data.rotativa_peso_gotas_cyan = rowData.gTintaCyan - linea_data.rotativa_peso_gotas_magenta = rowData.gTintaMagenta - linea_data.rotativa_peso_gotas_amarillo = rowData.gTintaAmarillo - linea_data.rotativa_peso_gotas_cg = rowData.gTintaCG - linea_data.rotativa_clicks_total = rowData.clicksPedido - linea_data.precio_click_pedido = rowData.totalClicksPedido - linea_data.rotativa_precio_tinta = rowData.totalTinta - - - linea_data.rotativa_peso_gotas_negro_pedido = rowData.gTintaNegroPed - linea_data.rotativa_peso_gotas_cyan_pedido = rowData.gTintaCyanPed - linea_data.rotativa_peso_gotas_magenta_pedido = rowData.gTintaMagentaPed - linea_data.rotativa_peso_gotas_amarillo_pedido = rowData.gTintaAmarilloPed - linea_data.rotativa_peso_gotas_cg_pedido = rowData.gTintaCGPed - - } - if(linea_data.tipo.includes('rot')){ - - linea_data.rotativa_mxm = rowData.metrosMinuto - linea_data.rotativa_metros_libro = rowData.metrosPapelLibro - linea_data.rotativa_metros_total = rowData.metrosPapelTotal - linea_data.rotativa_velocidad_corte = rowData.velocidadCorte - linea_data.rotativa_precio_hora_corte = rowData.precioHoraCorte - linea_data.rotativa_tiempo_corte = rowData.tiempoCorte - linea_data.rotativa_total_corte = rowData.totalCorte - linea_data.rotativa_a_favor_fibra = rowData.aFavorFibra==true?1:0 - } - - data.push(linea_data) - } ); - - var datos = { - tipo: 'lineasPresupuesto', - datos: data, - presupuesto_id: presupuesto_id, - } - datos = Object.assign(datos, window.token_ajax); - - await $.ajax({ - type: 'post', - url: window.routes_lp.updateDataOfPresupuestoAdmin, - - data: datos, - dataType: 'json', - success:function(response){ - - token=response[window.csrf_token]; - yeniden(token); - } - }).fail(function (jqXHR, textStatus, error) { - // Handle error here - console.log(jqXHR) - }); - -} - -function checkPaginasPresupuesto(){ - - cantidad_total = 0 - - tableLineasPresupuesto.rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var rowData = this.data(); - if(rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta' && rowData.row_id != 'lp_guardas') - cantidad_total += parseInt(rowData.paginas) - }) - htmlString = '' - - if(cantidad_total != parseInt($('#paginas').val())){ - htmlString = ` - `; - } - $('#divAlarmasLineasPresupuesto').html(htmlString) -} - -// variable para controlar el foco en los inputs -let focused = 0; - -function change_focus(){ - // se comprueba que el elemento es un input - if($('#'+focused).is('input')){ - if(focused){ - $('#'+focused).focus(); - $('#'+focused).select(); - focused = 0; - } - } -} - - -// Formatting function for row details - modify as you need -function format(d) { - - var value = ''+ - ''+ - ''+ - ''+ - '
' + - '
' + - window.Presupuestos.numeroPliegos + - ''+ - '
'+ - '
' + - window.Presupuestos.pliegosPedido + - ''+ - '
'+ - '
' + - window.Presupuestos.precioPliego + - ''+ - '
'+ - '
' + - window.Presupuestos.libro + - ''+ - '
'+ - '
' + - window.Presupuestos.totalPapelPedido + - ''+ - '
'+ - '' + - '
' + - '' + - '
'+ - '
' + - window.Presupuestos.click + - ''+ - '
'+ - '
' + - window.Presupuestos.totalClicks + - ''+ - '
'+ - '
' + - window.Presupuestos.horas + - ''+ - '
'+ - '
' + - window.Presupuestos.precioHora + - ''+ - '
'+ - '
' + - window.Presupuestos.precioImpresion + - ''+ - '
'+ - '
' + - '' + - '
'+ - '' + - '' + - '
' + - '' - - - - - value += '' - - if(d.maquinaTipo=='inkjet'){ - value += - ''+ - ''+ - ''+ - ''+ - '
' + - '
' + - '' + - '
'+ - '
' + - window.Presupuestos.numPagColor + - '' + - '
' + - ((d.row_id.includes('rot'))?'
' + - window.Presupuestos.saturacion + - '' + - '
':'') + - '
' + - window.Presupuestos.cobNegro + - '' + - '
' + - '
' + - window.Presupuestos.cobCyan + - '' + - '
' + - '
' + - window.Presupuestos.cobMagenta + - '' + - '
' + - '
' + - window.Presupuestos.cobAmarillo + - '' + - '
' + - ((!d.row_id.includes('rot'))? - '
' + - window.Presupuestos.cobCG + - '' + - '
':'') + - '
' + - window.Presupuestos.gotaNegro + - '' + - '
' + - '
' + - window.Presupuestos.gotaColor + - '' + - '
' + - '
' + - window.Presupuestos.aFavorFibra + - '' + - '
' + - '
' + - '' + - '
' + - '
' + - - '' + - '' + - ''+ - ''+ - ''+ - ''+ - '
' + - ((!d.row_id.includes('rot'))? - '
' + - window.Presupuestos.factorAltura + - '' + - '
' + - '
' + - window.Presupuestos.factorAnchura + - '' + - '
':'') + - (d.row_id.includes('rot')?'
': '' + - - (d.row_id.includes('rot')?'
' + - window.Presupuestos.resolucion + - '' + - '
':'') + - (d.row_id.includes('rot')?'
' + - window.Presupuestos.areaPaginas + - '' + - '
':'') + - '
' + - window.Presupuestos.gotasNegro + - '' + - '
' + - '
' + - window.Presupuestos.gotasCyan + - '' + - '
' + - '
' + - window.Presupuestos.gotasMagenta + - '' + - '
' + - '
' + - window.Presupuestos.gotasAmarillo + - '' + - '
' + - (!(d.row_id.includes('rot'))?'
' + - window.Presupuestos.gotasCG + - '' + - '
':'') + - '
' + - window.Presupuestos.precioPagNegro + - '' + - '
' + - '
' + - window.Presupuestos.precioPagColor + - '' + - '
' + - (d.row_id.includes('rot')? - '
' + - window.Presupuestos.factorAltura + - '' + - '
' + - '
' + - window.Presupuestos.factorAnchura + - '' + - '
':'') + - (d.row_id.includes('rot')?'
' + - window.Presupuestos.paginasPliego + - '' + - '
':'') + - '
' + - '' + - '' + - ''+ - ''+ - ''+ - ''+ - '
' + - (d.row_id.includes('rot')?'
': '' + - (d.row_id.includes('rot')?'
': '' + - (d.row_id.includes('rot')?'
' + - window.Presupuestos.clicksLibro + - '' + - '
':'') + - ((!d.row_id.includes('rot'))?'
' + - window.Presupuestos.saturacion + - '' + - '
':'') + - ((!d.row_id.includes('rot'))?'
' + - window.Presupuestos.paginasPliego + - '' + - '
':'') + - '
' + - window.Presupuestos.gTintaNegro + - '' + - '
' + - '
' + - window.Presupuestos.gTintaCyan + - '' + - '
' + - '
' + - window.Presupuestos.gTintaMagenta + - '' + - '
' + - '
' + - window.Presupuestos.gTintaAmarillo + - '' + - '
' + - (!(d.row_id.includes('rot'))?'
' + - window.Presupuestos.gTintaCG + - '' + - '
':'') + - ((!d.row_id.includes('rot'))?'
' + - window.Presupuestos.clicksLibro + - '' + - '
':'') + - '
' + - window.Presupuestos.clicksPedido + - '' + - '
' + - '
' + - window.Presupuestos.totalClicks + - '' + - '
' + - '
' + - window.Presupuestos.totalTinta + - '' + - '
' + - (d.row_id.includes('rot')?'
': '' + - '
' + - window.Presupuestos.totalImpresion + - '' + - '
' + - '
' + - '' + - '' + - ''+ - ''+ - ''+ - ''+ - '
' + - ((!d.row_id.includes('rot'))?'
' + - window.Presupuestos.resolucion + - '' + - '
':'') + - ((!d.row_id.includes('rot'))?'
' + - window.Presupuestos.areaPaginas + - '' + - '
':'') + - (d.row_id.includes('rot')?'
': '' + - (d.row_id.includes('rot')?'
': '' + - (d.row_id.includes('rot')?'
': '' + - '
' + - window.Presupuestos.gTintaNegroPed + - '' + - '
' + - '
' + - window.Presupuestos.gTintaCyanPed + - '' + - '
' + - '
' + - window.Presupuestos.gTintaMagentaPed + - '' + - '
' + - '
' + - window.Presupuestos.gTintaAmarilloPed + - ''+ - '
' + - (!(d.row_id.includes('rot'))?'
' + - window.Presupuestos.gTintaCGPed + - ''+ - '
':'') + - '
' + - '' + - '' - } - - return $(value).toArray(); -} - -const lastColNr_lp = $('#tableLineasPresupuesto').find("tr:first th").length - 1; - -const actionBtns_lp = function(data) { - return ` - - `; -}; - -var tableLineasPresupuesto = new DataTable('#tableLineasPresupuesto',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: true, - responsive: true, - select: false, - rowId: 'row_id', - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - columnDefs: [ - { - targets: 0, - className: 'dt-control', - orderable: false, - data: null, - defaultContent: '' - }, - { - targets: [1,2,3,4,5,6,7,8,9], - orderable: false, - visible: false, - }, - { - targets: [11,12,13,14,15,16,17,18,19,20], - orderable: false, - }, - { - targets: [10], - orderable: true, - visible: false, - }, - { - orderable: false, - searchable: false, - targets: [lastColNr_lp] - }, - ], - columns: [ - {data: null}, - {data: 'tarifa_impresion_id'}, - {data: 'maquina_ancho'}, - {data: 'maquina_alto'}, - {data: 'maquina_impresion_ancho'}, - {data: 'maquina_impresion_alto'}, - {data: 'formas'}, - {data: 'formas_v'}, - {data: 'formas_h'}, - {data: 'formas_orientacion'}, - {data: 'position', - type: "num" , - render: function (data, type, row, meta){ - if(row.row_id.includes('_bn')){ - return 0; - } - else if(row.row_id.includes('_color')){ - return 1; - } - else if(row.row_id.includes('_cubierta')){ - return 2; - } - else if(row.row_id.includes('_sobrecubierta')){ - return 3; - } - else if(row.row_id.includes('_guardas')){ - return 4; - } - } - }, - {data: 'icon', - render: function ( data, type, row, meta ){ - return '' - } - }, - {data: 'paginas', - render: function ( data, type, row, meta ) { - if(row.row_id != "lp_cubierta" && row.row_id != "lp_sobrecubierta" && row.row_id != "lp_guardas") - return ''; - else if(row.row_id == "lp_cubierta"){ - select = '' - - return select; - } - else if(row.row_id == "lp_guardas"){ - select = '' - - return select; - - } - else{ - return ''; - } - } - }, - {data: 'papel', - render: function ( data, type, row, meta ) { - var select = $('') - .attr('id', row.row_id + '_gramaje') - .attr('name', row.row_id + '_gramaje') - .addClass('form-control form-select-sm lp-cell lp-select ' )//+ row.row_class + '-select') - .css('min-width', '40px') - - var option = ''; - select.append(option); - - return select[0].outerHTML - } - }, - {data: 'papel_impresion', - render: function ( data, type, row, meta ) { - var select = $('') - .attr('id', row.row_id + '_maquina') - .attr('name', row.row_id + '_maquina') - .addClass('form-control form-select-sm lp-cell lp-select ' + row.row_class + '-select') - .css('min-width', '110px') - - var option = ''; - select.append(option); - - return select[0].outerHTML - } - }, - {data: 'tiempo', - render: function ( data, type, row, meta ) { - return ''; - } - }, - {data: 'lomo', - render: function ( data, type, row, meta ) { - return ''; - } - }, - {data: 'peso', - render: function ( data, type, row, meta ) { - return ''; - } - }, - {data: 'total_linea', - render: function ( data, type, row, meta ) { - return ''; - } - }, - { - data: actionBtns_lp, - className: 'row-edit dt-center' - } - ], - "order": [ 10, 'asc' ] -}); - -tableLineasPresupuesto.on( 'draw.dt', function () { - checkPaginasPresupuesto() - getVisibleTabs() -} ); - - -$(document).on('click', '.btn-delete-lp', function(e) { - - const row = $(this).closest('tr'); - data = tableLineasPresupuesto.row( row ).data() - tableLineasPresupuesto.row( row ) - .remove() - .draw(); - - //updateTablaEnvios() - updatePresupuesto({ - update_lineas: false, - update_servicios: true, - update_envios: true, - update_resumen: true, - update_tiradas_alternativas: true - }) - - if(data.row_id == 'lp_guardas') - servicioGuardas(false) - - // Si existe cubierta, hay que actualizar con el valor del lomo - check_update_cubierta() -}) - - - -// Add event listener for opening and closing details -tableLineasPresupuesto.on('click', 'td.dt-control', function (e) { - let tr = e.target.closest('tr'); - let row = tableLineasPresupuesto.row(tr); - - if (row.child.isShown()) { - // This row is already open - close it - row.child.hide(); - } - else { - // Open this row - row.child(format(row.data())).show(); - } -}); - -function processRowData(row, rowId, rowClass){ - - var icon = "" - if(rowId=='lp_bn'){ - if(row.tipo_maquina=='toner') - icon = '' - else - icon = '' - } - - else if(rowId=='lp_bnhq'){ - if(row.tipo_maquina=='toner') - icon = '' - else - icon = '' - } - else if(rowId=='lp_color'){ - if(row.tipo_maquina=='toner') - icon = '' - else - icon = '' - } - else if(rowId=='lp_colorhq'){ - if(row.tipo_maquina=='toner') - icon = '' - else - icon = '' - } - - else if(rowId=='lp_cubierta') - icon = '' - else if(rowId=='lp_sobrecubierta') - icon = '' - else if(rowId=='lp_guardas') - icon = '' - else if(rowId=='lp_rot_bn') - icon = '' - else if(rowId=='lp_rot_color') - icon = '' - - const blank_line = (typeof row.tarifa_impresion_id === 'undefined')?1:0; - var data = { - 'row_id': rowId, - 'row_class': rowClass, - - 'tarifa_impresion_id': blank_line?0:isNaN(parseInt(row.tarifa_impresion_id)) ? "" : parseInt(row.tarifa_impresion_id), - 'maquina_ancho': blank_line?0:isNaN(parseFloat(row.dimensiones_maquina[0])) ? "" : parseFloat(row.dimensiones_maquina[0]), - 'maquina_alto': blank_line?0:isNaN(parseFloat(row.dimensiones_maquina[1])) ? "" : parseFloat(row.dimensiones_maquina[1]), - 'maquina_impresion_ancho': blank_line?0:isNaN(parseFloat(row.dimensiones_maquina_impresion[0])) ? "" : parseFloat(row.dimensiones_maquina_impresion[0]), - 'maquina_impresion_alto': blank_line?0:isNaN(parseFloat(row.dimensiones_maquina_impresion[1])) ? "" : parseFloat(row.dimensiones_maquina_impresion[1]), - 'formas': blank_line?0:isNaN(parseInt(row.num_formas.value)) ? 0 : parseInt(row.num_formas.value), - 'formas_v': blank_line?0:isNaN(parseInt(row.num_formas.num_formas_verticales)) ? 0 : parseInt(row.num_formas.num_formas_verticales), - 'formas_h': blank_line?0:isNaN(parseInt(row.num_formas.num_formas_horizontales)) ? 0 : parseInt(row.num_formas.num_formas_horizontales), - 'formas_orientacion': blank_line?0:row.num_formas.posicion_formas, - - 'icon': icon, - 'paginas': blank_line?0:row.paginas, - 'paginas_impresion': rowId=='lp_guardas'?row.paginas_impresion:0, - 'papel': blank_line?"":row.papel_generico_id, - 'gramaje': blank_line?"":row.gramaje, - 'papel_impresion': blank_line?"":row.papel_impresion, - 'papel_impresion_id': blank_line?"":row.papel_impresion_id, - 'maquina': blank_line?"":row.maquina, - 'maquina_id': blank_line?"":row.maquina_id, - - 'tiempo': blank_line?"":row.tiempo_maquina, - 'lomo': isNaN(parseFloat(row.mano)) ? "" : parseFloat(row.mano).toFixed(2), - 'peso': isNaN(parseFloat(row.peso)) ? "" : parseFloat(row.peso).toFixed(2), - - 'total_linea': isNaN(parseFloat(row.total_impresion)) ? "" : parseFloat(row.total_impresion).toFixed(2), - - 'numeroPliegos':isNaN(parseFloat(row.pliegos_libro)) ? "" : parseFloat(row.pliegos_libro).toFixed(0), - 'pliegosPedido': isNaN(parseFloat(row.pliegos_pedido)) ? "" : parseFloat(row.pliegos_pedido).toFixed(0), - 'precioPliego': isNaN(parseFloat(row.precios_pliegos)) ? "" : parseFloat(row.precios_pliegos).toFixed(6), - 'libro': isNaN(parseFloat(row.precio_libro)) ? "" : parseFloat(row.precio_libro).toFixed(2), - 'totalPapelPedido': isNaN(parseFloat(row.precio_pedido)) ? "" : parseFloat(row.precio_pedido).toFixed(2), - 'margenPapelPedido': isNaN(parseFloat(row.margen_papel_pedido)) ? "": parseFloat(row.margen_papel_pedido).toFixed(2), - 'click': isNaN(parseFloat(row.precio_click)) ? "" : parseFloat(row.precio_click).toFixed(6), - 'totalClicks': isNaN(parseFloat(row.precio_click_pedido)) ? "" : parseFloat(row.precio_click_pedido).toFixed(2), - 'margenClicks': isNaN(parseFloat(row.margen_click_pedido)) ? "" : parseFloat(row.margen_click_pedido).toFixed(2), - 'horasMaquina': isNaN(parseFloat(row.horas_maquina)) ? "" : parseFloat(row.horas_maquina).toFixed(4), - 'precioHora': isNaN(parseFloat(row.precio_hora)) ? "" : parseFloat(row.precio_hora).toFixed(2), - 'precioImpresion': isNaN(parseFloat(row.precio_impresion_horas)) ? "" : parseFloat(row.precio_impresion_horas).toFixed(2), - 'margenImpresion': isNaN(parseFloat(row.margen_impresion_horas)) ? "" : parseFloat(row.margen_impresion_horas).toFixed(2), - 'maquinaTipo': row.tipo_maquina, - 'check_papel_total': row.check_papel_total, - 'check_impresion_total': row.check_impresion_total, - } - - if(row.tipo_maquina=='inkjet'){ - - data.numPagColor = row.paginas_color - data.aFavorFibra = row.a_favor_fibra - data.cobNegro = isNaN(parseFloat(row.datosTipologias.negro)) ? "" : parseFloat(row.datosTipologias.negro).toFixed(2) - data.cobCyan = isNaN(parseFloat(row.datosTipologias.cyan)) ? "" : parseFloat(row.datosTipologias.cyan).toFixed(2) - data.cobMagenta = isNaN(parseFloat(row.datosTipologias.magenta)) ? "" : parseFloat(row.datosTipologias.magenta).toFixed(2) - data.cobAmarillo = isNaN(parseFloat(row.datosTipologias.amarillo)) ? "" : parseFloat(row.datosTipologias.amarillo).toFixed(2) - data.gotaNegro = isNaN(parseFloat(row.datosTipologias.gota_negro)) ? "" : parseFloat(row.datosTipologias.gota_negro).toFixed(2) - data.gotaColor = isNaN(parseFloat(row.datosTipologias.gota_color)) ? "" : parseFloat(row.datosTipologias.gota_color).toFixed(2) - - data.resolucion = isNaN(parseFloat(row.resolucion)) ? "" : parseFloat(row.resolucion).toFixed(0) - data.areaPaginas = isNaN(parseFloat(row.superficie)) ? "" : parseFloat(row.superficie).toFixed(2) - - data.gotasNegro = isNaN(parseFloat(row.num_gotas_negro)) ? "" : parseFloat(row.num_gotas_negro).toFixed(0) - data.gotasCyan = isNaN(parseFloat(row.num_gotas_cyan)) ? "" : parseFloat(row.num_gotas_cyan).toFixed(0) - data.gotasMagenta = isNaN(parseFloat(row.num_gotas_magenta)) ? "" : parseFloat(row.num_gotas_magenta).toFixed(0) - data.gotasAmarillo = isNaN(parseFloat(row.num_gotas_amarillo)) ? "" : parseFloat(row.num_gotas_amarillo).toFixed(0) - data.precioPagNegro = isNaN(parseFloat(row.precio_pagina_negro)) ? "" : parseFloat(row.precio_pagina_negro).toFixed(6) - data.precioPagColor = isNaN(parseFloat(row.precio_pagina_color)) ? "" : parseFloat(row.precio_pagina_color).toFixed(6) - data.factorAltura = isNaN(parseFloat(row.factor_altura)) ? "" : parseFloat(row.factor_altura).toFixed(2) - data.factorAnchura = isNaN(parseFloat(row.factor_anchura)) ? "" : parseFloat(row.factor_anchura).toFixed(2) - data.paginasPliego = isNaN(parseFloat(row.paginas_por_pliego)) ? "" : parseFloat(row.paginas_por_pliego).toFixed(2) - - if(rowId.includes('rot')){ - data.metrosMinuto = isNaN(parseFloat(row.maquina_velocidad)) ? "" : parseFloat(row.maquina_velocidad).toFixed(2) - data.metrosPapelLibro = isNaN(parseFloat(row.metros_papel_libro)) ? "" : parseFloat(row.metros_papel_libro).toFixed(2) - data.metrosPapelTotal = isNaN(parseFloat(row.metros_papel_total)) ? "" : parseFloat(row.metros_papel_total).toFixed(2) - data.velocidadCorte = isNaN(parseFloat(row.velocidad_corte)) ? "" : parseFloat(row.velocidad_corte).toFixed(2) - data.precioHoraCorte = isNaN(parseFloat(row.precio_hora_corte)) ? "" : parseFloat(row.precio_hora_corte).toFixed(2) - data.tiempoCorte = isNaN(parseFloat(row.tiempo_corte)) ? "" : parseFloat(row.tiempo_corte).toFixed(2) - data.totalCorte = isNaN(parseFloat(row.total_corte)) ? "" : parseFloat(row.total_corte).toFixed(2) - } - else{ - data.totalCorte = 0 - } - - data.clicksLibro = isNaN(parseFloat(row.clicks_libro)) ? "" : parseFloat(row.clicks_libro).toFixed(0) - data.gTintaNegro = isNaN(parseFloat(row.peso_gotas_negro)) ? "" : parseFloat(row.peso_gotas_negro).toFixed(2) - data.gTintaCyan = isNaN(parseFloat(row.peso_gotas_cyan)) ? "" : parseFloat(row.peso_gotas_cyan).toFixed(2) - data.gTintaMagenta = isNaN(parseFloat(row.peso_gotas_magenta)) ? "" : parseFloat(row.peso_gotas_magenta).toFixed(2) - data.gTintaAmarillo = isNaN(parseFloat(row.peso_gotas_amarillo)) ? "" : parseFloat(row.peso_gotas_amarillo).toFixed(2) - data.clicksPedido = isNaN(parseFloat(row.clicks_pedido)) ? "" : parseFloat(row.clicks_pedido).toFixed(0) - data.totalClicksPedido = isNaN(parseFloat(row.precio_click_pedido)) ? "" : parseFloat(row.precio_click_pedido).toFixed(2) - data.totalTinta = isNaN(parseFloat(row.precio_tinta)) ? "" : parseFloat(row.precio_tinta).toFixed(2) - - data.totalImpresion = isNaN(parseFloat(row.precio_click_pedido+row.precio_tinta+data.totalCorte)) ? "" : parseFloat(row.precio_click_pedido+row.precio_tinta+data.totalCorte).toFixed(2) - - data.gTintaNegroPed = isNaN(parseFloat(row.peso_gotas_negro_pedido)) ? "" : parseFloat(row.peso_gotas_negro_pedido).toFixed(2) - data.gTintaCyanPed = isNaN(parseFloat(row.peso_gotas_cyan_pedido)) ? "" : parseFloat(row.peso_gotas_cyan_pedido).toFixed(2) - data.gTintaMagentaPed = isNaN(parseFloat(row.peso_gotas_magenta_pedido)) ? "" : parseFloat(row.peso_gotas_magenta_pedido).toFixed(2) - data.gTintaAmarilloPed = isNaN(parseFloat(row.peso_gotas_amarillo_pedido)) ? "" : parseFloat(row.peso_gotas_amarillo_pedido).toFixed(2) - - if(!rowId.includes('rot')){ - data.cobCG = isNaN(parseFloat(row.datosTipologias.cg)) ? "" : parseFloat(row.datosTipologias.cg).toFixed(2) - data.gotasCG = isNaN(parseFloat(row.num_gotas_cg)) ? "" : parseFloat(row.num_gotas_cg).toFixed(2) - data.gTintaCG = isNaN(parseFloat(row.peso_gotas_cg)) ? "" : parseFloat(row.peso_gotas_cg).toFixed(2) - data.gTintaCGPed = isNaN(parseFloat(row.peso_gotas_cg_pedido)) ? "" : parseFloat(row.peso_gotas_cg_pedido).toFixed(2) - } - - - data.alto_click = row.alto_click - } - - return data -} - - - -$('.paginas-lp').on('change', function(){ - checkPaginasPresupuesto() -}) - - -function verCalculosInkjet(e){ - if($( ".calculos_" + e.data.rowId ).css('display') == 'none') - $( ".calculos_" + e.data.rowId ).css('display', 'table-row') - else{ - $( ".calculos_" + e.data.rowId ).css('display', 'none') - } -}; - - - -function clear_interior(row_id = ''){ - switch(row_id) { - case 'lp_bn': - clear_lp_bn(true); - break; - case 'lp_color': - clear_lp_color(true); - break; - case 'lp_bnhq': - clear_lp_bnhq(true); - break; - case 'lp_colorhq': - clear_lp_colorhq(true); - break; - default: - clear_lp_bn(true); - clear_lp_color(true); - clear_lp_bnhq(true); - clear_lp_colorhq(true); - break; - } - if(row_id.length>0) - tableLineasPresupuesto.row( row_id ) - .remove() - .draw(); - else{ - tableLineasPresupuesto.row( '#lp_bn' ) - .remove().draw() - tableLineasPresupuesto.row( '#lp_bnhq' ) - .remove().draw() - tableLineasPresupuesto.row( '#lp_color' ) - .remove().draw() - tableLineasPresupuesto.row( '#lp_colorhq' ) - .remove().draw() - } -} - - -function clear_rotativa(row_id = ''){ - switch(row_id) { - case 'lp_rot_bn': - clear_lp_rot_bn(true); - break; - case 'lp_rot_color': - clear_lp_rot_color(true); - break; - default: - clear_lp_rot_bn(true); - clear_lp_rot_color(true); - break; - } - if(row_id.length>0) - tableLineasPresupuesto.row( row_id ) - .remove() - .draw(); - else{ - tableLineasPresupuesto.row( '#lp_rot_bn' ) - .remove().draw() - tableLineasPresupuesto.row( '#lp_rot_color' ) - .remove().draw() - } -} - - -function clear_cubierta(){ - clear_lp_cubierta(true); -} - -function clear_sobrecubierta(){ - clear_lp_sobrecubierta(true); -} - - -$('.insertarLinea').on("click", function (e) { - - if(e.target.id.includes("Plana")){ - - clear_interior(); - clear_rotativa(); - - var rows = $("#tableCompIntPlana").DataTable().rows( '.selected' ).data().toArray(); - - for(row of rows){ - if(row['tipo'] =='bn'){ - fill_lp_bn(row, true); - } - else if(row['tipo'] =='bnhq'){ - fill_lp_bnhq(row, true); - } - else if(row['tipo'] =='color'){ - fill_lp_color(row, true); - } - else if(row['tipo'] =='colorhq'){ - fill_lp_colorhq(row, true); - } - } - } - if(e.target.id.includes("Rotativa")){ - - clear_rotativa(); - clear_interior(); - - var rows = $("#tableCompIntRotativa").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - if(row['paginasColor'] ==0){ - fill_lp_rot_bn(row, true); - } - else if(row['paginasColor'] >0){ - fill_lp_rot_color(row, true); - } - } - } - - if(e.target.id.includes("Cubierta")){ - - clear_cubierta(); - - var rows = $("#tableCompCubierta").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - if(row.tipo == 'cubierta'){ - fill_lp_cubierta(row, true); - if($('#acabado_cubierta_id').val() > 0) - insertar_acabado_exterior($('#acabado_cubierta_id').val(), window.Presupuestos.cubierta) - } - } - - clear_sobrecubierta(); - - for(row of rows){ - if(row.tipo == 'sobrecubierta'){ - fill_lp_sobrecubierta(row, true); - if($('#acabado_sobrecubierta_id').val() > 0) - insertar_acabado_exterior($('#acabado_sobrecubierta_id').val(), window.Presupuestos.sobrecubierta) - } - } - } - - if(e.target.id.includes("Guardas")){ - - clear_guardas(); - - var rows = $("#tableCompGuardas").DataTable().rows( '.selected' ).data().toArray(); - for(row of rows){ - fill_lp_guardas(row, true); - } - servicioGuardas(true) - } - - - updatePresupuesto({ - update_lineas: false, - update_servicios: true, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - - -}); - - -$('#btn_addLinea').on("click", function (e) { - - var dataRows = tableLineasPresupuesto - .rows() - .data(); - - switch($('#addLineasPresupuesto').val()){ - // Se chequean todas las lineas de negro y todas las de color - // (solo una de cada en interior) - - case 'lp_bn': - var hayLinea = false - for(let number=0;number', {'value':data.menu[item].id, 'text':data.menu[item].text}) - $('#lp_bn_gramaje').append(option); - }); - if(mantenerSeleccion){ - $('#lp_bn_gramaje option').filter(function() { - return $(this).html() == previous; - }).prop('selected', true); - } - else{ - $('#lp_bn_gramaje').val('') - } - - } - }); -} - - - -async function set_lp_bn_papelImpresion(){ - - var datos = { - tipo: 'papelImpresion', - uso: 'negro', - datos: $('#lp_bn_papel option:selected').val() , - gramaje: $('#lp_bn_gramaje option:selected').text().trim() , - tipoLinea: "negro", - }; - datos = Object.assign(datos, window.token_ajax); - - await $.ajax({ - type: 'post', - url: window.routes_lp.menuItemsOfPresupuestoAdmin, - beforeSend: function() { - $('#lp_bn_papelImpresion').empty() - $('#lp_bn_maquina').empty() - clear_lp_bn(false) - }, - data: datos, - dataType: 'json', - success: function (data) { - yeniden(data[window.csrf_token]); - $.each(data.menu, function(item){ - var option = $(' +
@@ -70,33 +71,3 @@
- - - -section("additionalInlineJs") ?> -window.papelGenericoNegroList = ; -window.papelGenericoNegroHQList = ; -window.papelGenericoColorList = ; -window.papelGenericoColorHQList = ; -window.papelGenericoCubiertaList = ; -window.papelGenericoSobrecubiertaList = ; -window.papelGenericoRotativaNegroList = ; -window.papelGenericoRotativaColorList = ; - - - window.papelGenericoGuardasList = ; - - -window.lineasPresupuestoList = ; - -window.routes_lp = { - menuItemsOfPresupuestoAdmin: '', - updateDataOfPresupuestoAdmin: '', - -} - -fill_lp_from_bbdd() - -checkPaginasPresupuesto() - -endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php index 601eeca8..18e014fd 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php @@ -2,20 +2,21 @@ -
+
@@ -752,6 +786,9 @@
+
+ +
@@ -795,7 +832,7 @@
-
+
@@ -817,6 +854,9 @@
+
+ +
@@ -860,7 +900,7 @@
-
+
@@ -906,6 +946,87 @@
+
+
+
+
+ + + +
+ + +
+
+
+
TBD
+ +
+
TBD
+ +
+
TBD
+ +
+
TBDxTBD
+ +
+
TBDxTBD
+ +
+
TBDxTBD
+ +
+
TBD
+ +
+
TBD
+
+
+
+ +
+
+ +
+ +
+
+
+ +
+
+
+
+
@@ -914,73 +1035,3 @@
- - - -section("additionalInlineJs") ?> - - -$('#tab-pv-bn').on( "click", function() { - - previewInteriorPlana('bn', , ); - -} ); - -$('#tab-pv-bnhq').on( "click", function() { - - previewInteriorPlana('bnhq', , ); - -} ); - -$('#tab-pv-color').on( "click", function() { - - previewInteriorPlana('color', , ); - -} ); - -$('#tab-pv-colorhq').on( "click", function() { - - - previewInteriorPlana('colorhq', , ); - -} ); - -$('#tab-pv-rot-bn').on( "click", function() { - - previewRotativa('rot_bn', , ); - -} ); - -$('#tab-pv-rot-color').on( "click", function() { - - previewRotativa('rot_color', , ); - -} ); - -$('#tab-pv-guardas').on( "click", function() { - - previewInteriorPlana('guardas', , ); - -} ); - -$('#tab-pv-cubierta').on( "click", function() { - - previewInteriorPlana('cubierta', , ); - -} ); - -$('#tab-pv-esquema-cubierta').on( "click", function() { - - previewEsquemaCubierta('ec', , ); - -} ); - -$('#tab-pv-sobrecubierta').on( "click", function() { - - previewInteriorPlana('sobrecubierta', , ); - -} ); - -endSection() ?> - - diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php index 2dcd7588..4eb6c8a2 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php @@ -18,55 +18,57 @@
Coste papel
-
total_coste_papel) ?>€
+
Margen papel
-
total_margenPercent_papel) ?>%
-
total_margen_papel) ?>€
+
+
Coste impresión
-
total_coste_impresion) ?>€
+
Margen impresión
-
total_margenPercent_impresion) ?>%
-
total_margen_impresion) ?>€
+
+
Coste servicios
-
total_coste_servicios) ?>€
+
Margen servicios
-
total_margenPercent_servicios) ?>%
-
total_margen_servicios) ?>€
+
+
Coste de envío
-
total_coste_envios) ?>€
+
+
Precio de envío
+
Margen envío
-
total_margen_envios) ?>€
+

Total Costes
-
total_costes) ?>€
+
Total Margen
-
total_costes+$presupuestoEntity->total_margenes)>0? 100*$presupuestoEntity->total_margenes/($presupuestoEntity->total_costes+$presupuestoEntity->total_margenes) : 0,0)) ?>%
-
total_margenes) ?>€
+
+

Total
-
total_antes_descuento) ?>€
-
Descuento
-
-
total_descuento) ?>€
+
+
Descuento (%)
+
+
Total presupuesto
-
total_presupuesto) ?>€
+
Precio unidad
-
total_precio_unidad) ?>€
+
Factor
-
total_factor) ? $presupuestoEntity->total_factor : 0) ?>
+
Factor Ponderado
-
total_factor_ponderado) ? $presupuestoEntity->total_factor_ponderado : 0) ?>
+
@@ -80,10 +82,10 @@ estado_id == 2): ?>
-
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestos.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestos.js deleted file mode 100644 index 4e3c8088..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestos.js +++ /dev/null @@ -1,299 +0,0 @@ -function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){ - - var totalPapel = 0 - var margenPapel = 0 - - var totalImpresion = 0 - var totalImpresionforMargen = 0 - var margenImpresion = 0 - - var totalServicios = 0 - var margenServicios = 0 - - var totalEnvios = 0 - var margenEnvios = 0 - - var sumForFactor = 0.0 - var sumForFactorPonderado = 0.0 - - - var margenPorHoras = 0.0; - - if(updateLP){ - - if(typeof $("#tableLineasPresupuesto").DataTable() !== 'undefined'){ - $("#tableLineasPresupuesto").DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var rowData = this.data(); - - if(rowData.check_papel_total){ - totalPapel += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val()) - margenPapel += parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val()) - - sumForFactor += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val()) - sumForFactor -= parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val()) - - } - if(rowData.check_impresion_total){ - //totalImpresion += parseFloat($('#' + rowData.row_id + '_precioImpresion').val()) - margenPorHoras += parseFloat($('#' + rowData.row_id + '_precioImpresion').val()) - totalImpresion += parseFloat($('#' + rowData.row_id + '_totalClicks').val()) - - sumForFactor += parseFloat($('#' + rowData.row_id + '_totalClicks').val()) - - if(rowData.maquinaTipo=='inkjet'){ - totalImpresion += parseFloat(rowData.totalTinta) - totalImpresion += parseFloat(rowData.totalCorte) - - sumForFactor += (parseFloat(rowData.totalTinta) + parseFloat(rowData.totalCorte)) - } - //margenImpresion += parseFloat($('#' + rowData.row_id + '_margenImpresion').val()) - //margenPorHoras += parseFloat($('#' + rowData.row_id + '_margenImpresion').val()) - margenImpresion += parseFloat($('#' + rowData.row_id + '_margenClicks').val()) - - - sumForFactor -= parseFloat($('#' + rowData.row_id + '_margenClicks').val()) - - if(!isNaN(parseFloat($('#' + rowData.row_id + 'lp_bn_totalTinta').val()))){ - totalImpresion += parseFloat($('#' + rowData.row_id + 'lp_bn_totalTinta').val()) - sumForFactor += parseFloat($('#' + rowData.row_id + 'lp_bn_totalTinta').val()) - } - } - }) - } - - totalImpresion -= margenImpresion - totalPapel -= margenPapel - - margenImpresion += margenPorHoras - - var porcentajeMargenPapel = isNaN(margenPapel/(totalPapel)*100.0)?0:margenPapel/(totalPapel)*100.0 - $('#porcentajeMargenPapel').text(porcentajeMargenPapel.toFixed(0) + '%') - $('#totalCostePapel').text((addSeparatorsNF(totalPapel.toFixed(2), ".", ",", ".")) + "€") - $('#margenPapel').text((addSeparatorsNF(margenPapel.toFixed(2), ".", ",", ".")) + "€") - $('#totalCostePapel').attr('val',totalPapel.toFixed(2)) - $('#margenPapel').attr('val',margenPapel.toFixed(2)) - - var porcentajeMargenImpresion = isNaN(margenImpresion/(totalImpresion)*100.0)?0:margenImpresion/(totalImpresion)*100.0 - $('#porcentajeMargenImpresion').text(porcentajeMargenImpresion.toFixed(0) + '%') - $('#totalCosteImpresion').text((addSeparatorsNF(totalImpresion.toFixed(2), ".", ",", ".")) + "€") - $('#margenImpresion').text((addSeparatorsNF(margenImpresion.toFixed(2), ".", ",", ".")) + "€") - $('#totalCosteImpresion').attr('val',totalImpresion.toFixed(2)) - $('#margenImpresion').attr('val',margenImpresion.toFixed(2)) - - } - else{ - totalPapel = parseFloat($('#totalCostePapel').attr('val')) - margenPapel = parseFloat($('#margenPapel').attr('val')) - totalImpresion = parseFloat($('#totalCosteImpresion').attr('val')) - margenImpresion = parseFloat($('#margenImpresion').attr('val')) - } - - sumForFactorPonderado = sumForFactor; - - if(updateServicios){ - - if ( typeof $("#tableOfServiciosEncuadernacion").DataTable() !== 'undefined' && $("#tableOfServiciosEncuadernacion").DataTable().rows().count() > 0){ - $('#tableOfServiciosEncuadernacion tbody tr').each(function(){ - var currentRow = $(this).closest("tr"); - var subId = $('#tableOfServiciosEncuadernacion').DataTable().cell(currentRow,0).node().innerHTML; - var total = parseFloat($('#precio_total_encuadernado_' + subId)[0].value) - totalServicios += total - var base = parseFloat($('#precio_total_encuadernado_' + subId)[0].value)/(1+parseFloat($('#enc_margen_' + subId)[0].innerHTML)/100.0); - var margen = total - base; - margenServicios += margen; - }) - } - - if ( typeof $("#tableOfServiciosAcabado").DataTable() !== 'undefined' && $("#tableOfServiciosAcabado").DataTable().rows().count() > 0){ - $('#tableOfServiciosAcabado tbody tr').each(function(){ - var currentRow = $(this).closest("tr"); - var subId = $('#tableOfServiciosAcabado').DataTable().cell(currentRow,0).node().innerHTML; - var total = parseFloat($('#precio_total_acabado_' + subId)[0].value) - totalServicios += total - var base = parseFloat($('#precio_total_acabado_' + subId)[0].value)/(1+parseFloat($('#acabado_margen_' + subId)[0].innerHTML)/100.0); - var margen = total - base; - margenServicios += margen; - }) - } - - if ( typeof $("#tableOfServiciosPreimpresion").DataTable() !== 'undefined' && $("#tableOfServiciosPreimpresion").DataTable().rows().count() > 0){ - - $('#tableOfServiciosPreimpresion tbody tr').each(function(){ - var currentRow = $(this).closest("tr"); - var subId = $('#tableOfServiciosPreimpresion').DataTable().cell(currentRow,0).node().innerHTML; - var total = parseFloat($('#precio_preimpresion_' + subId)[0].value) - totalServicios += total - var base = parseFloat($('#precio_preimpresion_' + subId)[0].value)/(1+parseFloat($('#preimpresion_margen_' + subId)[0].innerHTML)/100.0); - var margen = total - base; - margenServicios += margen; - }) - } - - if ( typeof $("#tableOfServiciosExtra").DataTable() !== 'undefined' && $("#tableOfServiciosExtra").DataTable().rows().count() > 0){ - - $('#tableOfServiciosExtra tbody tr').each(function(){ - var currentRow = $(this).closest("tr"); - var subId = $('#tableOfServiciosExtra').DataTable().cell(currentRow,0).node().innerHTML; - var total = parseFloat($('#precio_servicioextra_' + subId)[0].value) - totalServicios += total - var base = parseFloat($('#precio_servicioextra_' + subId)[0].value)/(1+parseFloat($('#servicioextra_margen_' + subId)[0].innerHTML)/100.0); - var margen = total - base; - margenServicios += margen; - }) - } - - if ( typeof $("#tableOfServiciosManipulado").DataTable() !== 'undefined' && $("#tableOfServiciosManipulado").DataTable().rows().count() > 0){ - - $('#tableOfServiciosManipulado tbody tr').each(function(){ - var currentRow = $(this).closest("tr"); - var subId = $('#tableOfServiciosManipulado').DataTable().cell(currentRow,0).node().innerHTML; - var total = parseFloat($('#precio_total_manipulado_' + subId)[0].value) - totalServicios += total - var base = parseFloat($('#precio_total_manipulado_' + subId)[0].value)/(1+parseFloat($('#manipulado_margen_' + subId)[0].innerHTML)/100.0); - var margen = total - base; - margenServicios += margen; - }) - } - - totalServicios -= margenServicios; - - sumForFactorPonderado += totalServicios; - - var porcentajeMargenServicios = margenServicios/(totalServicios)*100 - $('#porcentajeMargenServicios').text(isNaN(porcentajeMargenServicios.toFixed(0))?0:porcentajeMargenServicios.toFixed(0) + '%') - $('#totalServicios').text((addSeparatorsNF(totalServicios.toFixed(2), ".", ",", ".")) + "€") - $('#margenServicios').text((addSeparatorsNF(margenServicios.toFixed(2), ".", ",", ".")) + "€") - $('#totalServicios').attr('val',totalServicios.toFixed(2) + '€') - $('#margenServicios').attr('val',margenServicios.toFixed(2) + '€') - - } - else{ - - totalServicios = parseFloat($('#totalServicios').attr('val')) - margenServicios = parseFloat($('#margenServicios').attr('val')) - - sumForFactorPonderado += totalServicios; - } - - if(updateEnvio){ - - if ( typeof $('#tableOfDireccionesEnvio').DataTable() !== 'undefined' && $('#tableOfDireccionesEnvio').DataTable().rows().count() > 0){ - $('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var data = this.data() - totalEnvios += parseFloat(data.precio) - margenEnvios += parseFloat((data.precio)*data.margen/100) - } ); - } - - totalEnvios -= margenEnvios - $('#totalEnvios').text((addSeparatorsNF(totalEnvios.toFixed(2), ".", ",", ".")) + "€") - $('#margenEnvios').text((addSeparatorsNF(margenEnvios.toFixed(2), ".", ",", ".")) + "€") - $('#totalEnvios').attr('val',totalEnvios.toFixed(2) + '€') - $('#margenEnvios').attr('val',margenEnvios.toFixed(2) + '€') - } - else{ - totalEnvios = parseFloat($('#totalEnvios').attr('val')) - margenEnvios = parseFloat($('#margenEnvios').attr('val')) - } - - var totalCostes = parseFloat(totalPapel.toFixed(2)) + parseFloat(totalImpresion.toFixed(2)) + parseFloat(totalServicios.toFixed(2)) + parseFloat(totalEnvios.toFixed(2)) - var totalMargenes = parseFloat(margenPapel.toFixed(2)) + parseFloat(margenImpresion.toFixed(2)) + parseFloat(margenServicios.toFixed(2)) + parseFloat(margenEnvios.toFixed(2)) - var porcentajeMargen = totalCostes+totalMargenes>0? (100*totalMargenes/(totalCostes+totalMargenes)).toFixed(0) : 0 - $('#totalCostes').text((addSeparatorsNF(totalCostes.toFixed(2), ".", ",", ".")) + "€") - $('#totalMargenes').text((addSeparatorsNF(totalMargenes.toFixed(2), ".", ",", ".")) + "€") - $('#totalCostes').attr('val',(totalCostes).toFixed(2) + '€') - $('#totalMargenes').attr('val',(totalMargenes).toFixed(2) + '€') - $('#porcentajeMargen').text(porcentajeMargen + '%') - $('#porcentajeMargen').attr('val',porcentajeMargen) - - if($('#total_descuentoPercent').val()<0){ - $('#total_descuentoPercent').val(0) - } - var totalAntesDescuento = totalCostes + totalMargenes - var totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val())/100 - var totalPresupuesto = totalAntesDescuento - totalDescuento - var precioUnidad = totalPresupuesto/parseInt($('#tirada').val()) - - $('#totalAntesDescuento').text((addSeparatorsNF(totalAntesDescuento.toFixed(2), ".", ",", ".")) + "€") - $('#descuentoTotal').text((addSeparatorsNF(totalDescuento.toFixed(2), ".", ",", ".")) + "€") - $('#totalDespuesDecuento').text((addSeparatorsNF(totalPresupuesto.toFixed(2), ".", ",", ".")) + "€") - $('#precioUnidadPresupuesto').text((addSeparatorsNF(precioUnidad.toFixed(4), ".", ",", ".")) + "€") - $('#totalAntesDescuento').attr('val',(totalAntesDescuento).toFixed(2)) - $('#descuentoTotal').attr('val',(totalDescuento).toFixed(2)) - $('#totalDespuesDecuento').attr('val',(totalPresupuesto).toFixed(2)) - $('#precioUnidadPresupuesto').attr('val',(precioUnidad).toFixed(4)) - - - $('#factor').text(addSeparatorsNF(((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactor).toFixed(2), ".", ",", ".")) - $('#factor').attr('val', ((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactor).toFixed(2)) - $('#factor_ponderado').text(addSeparatorsNF(((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactorPonderado).toFixed(2), ".", ",", ".")) - $('#factor_ponderado').attr('val',((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactorPonderado).toFixed(2)) -} - - -function addSeparatorsNF(nStr, inD, outD, sep) -{ - nStr += ''; - var dpos = nStr.indexOf(inD); - var nStrEnd = ''; - if (dpos != -1) { - nStrEnd = outD + nStr.substring(dpos + 1, nStr.length); - nStr = nStr.substring(0, dpos); - } - var rgx = /(\d+)(\d{3})/; - while (rgx.test(nStr)) { - nStr = nStr.replace(rgx, '$1' + sep + '$2'); - } - return nStr + nStrEnd; -} - -function getValuesResumenForm(){ - var formResumen = ""; - formResumen += '&total_coste_papel=' + $('#totalCostePapel').attr('val'); - formResumen += '&total_margen_papel=' + $('#margenPapel').attr('val'); - formResumen += '&total_margenPercent_papel=' + $('#porcentajeMargenPapel').text().replace('%', ''); - - formResumen += '&total_coste_impresion=' + $('#totalCosteImpresion').attr('val'); - formResumen += '&total_margen_impresion=' + $('#margenImpresion').attr('val'); - formResumen += '&total_margenPercent_impresion=' + $('#porcentajeMargenImpresion').text().replace('%', ''); - - formResumen += '&total_coste_servicios=' + $('#totalServicios').attr('val'); - formResumen += '&total_margen_servicios=' + $('#margenServicios').attr('val'); - formResumen += '&total_margenPercent_servicios=' + $('#porcentajeMargenServicios').text().replace('%', ''); - - formResumen += '&total_coste_envios=' + $('#totalEnvios').attr('val'); - formResumen += '&total_margen_envios=' + $('#margenEnvios').attr('val'); - - formResumen += '&total_costes=' + $('#totalCostes').attr('val'); - formResumen += '&total_margenes=' + $('#totalMargenes').attr('val'); - - formResumen += '&total_antes_descuento=' + $('#totalAntesDescuento').attr('val'); - formResumen += '&total_descuento=' + $('#descuentoTotal').attr('val'); - formResumen += '&total_descuentoPercent=' + $('#total_descuentoPercent').val(); - formResumen += '&total_presupuesto=' + $('#totalDespuesDecuento').attr('val'); - formResumen += '&total_precio_unidad=' + $('#precioUnidadPresupuesto').attr('val'); - - // replace , for . in the values - formResumen += '&total_factor=' + $('#factor').text().replace(/,/g, '.'); - formResumen += '&total_factor_ponderado=' + $('#factor_ponderado').text().replace(/,/g, '.'); - - if($('#confirmar_presupuesto').prop('checked')){ - formResumen += '&confirmar=1'; - formResumen += '&total_aceptado=' + $('#totalDespuesDecuento').attr('val'); - } - - return formResumen -} - - - - -$(".update-totales").on("change", function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: false - }) -}) \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_tiradasAlternativasItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_tiradasAlternativasItems.js deleted file mode 100644 index 912bbd85..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_tiradasAlternativasItems.js +++ /dev/null @@ -1,397 +0,0 @@ -// Selección de la última columna de la tabla de tiradas -const lastColNr_tiradasAlt = $('#tableTiradas').find("tr:first th").length - 1; - - -// Función para generar los botones de acción de la tabla de tiradas -const actionBtns_tiradasAlt = function (data) { - return ` - - - `; -}; - - -// Inicializaciones de la tabla de tiradas -var tableTiradas; - - -// Espera a que todas las variables necesarias estén definidas -(async () => { - - while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url")) - await new Promise(resolve => setTimeout(resolve, 200)); - initTableTiradas(); - fill_tiradas_alternativas(); - - /*$('.tiradas-alternativas').each(function() { - if ($(this).is('input')) { - $(this).bind('change', update_tiradas_alternativas); - } else if ($(this).is('button')) { - $(this).bind('click', update_tiradas_alternativas); - } else if ($(this).is('table')) { - $(this).bind('draw.dt', update_tiradas_alternativas); - } - else{ - // para los botones de borrar - $(this).bind('click', update_tiradas_alternativas); - } - });*/ - -})(); - - -async function actualizar_tiradas_alternativas(){ - if(tableTiradas !== undefined && tableTiradas.rows().count() > 0){ - // se obtiene la primera columna de la tabla de tiradas - const data = tableTiradas.rows().data().toArray(); - // se borra la tabla de tiradas - tableTiradas.clear().draw(); - const tiradas = data.map(row => row.tirada); - // por cada tirada, se añade una fila a la tabla de tiradas - await tiradas.forEach(async function(tirada){ - await add_tirada_alternativa(tirada); - }); - } - -} - - -// Evento de añadir una tirada alternativa -$('#add_tirada_alt').on('click', function () { - - const tirada_alt = parseInt($('#tirada_alt').val()); - add_tirada_alternativa(tirada_alt); - showBreadCrumbSaveButton(true); -}); - - -// Funcion para añadir una tirada alternativa -async function add_tirada_alternativa(tirada_alt) { - - // se comprueba que la tirada no existe ya en la tabla - const exists = tableTiradas.rows().data().toArray().some(row => row.tirada == tirada_alt); - const isPOD = parseInt($('#tirada').val())<= parseInt($('#POD').val()); - - const typeIsOk = tirada_alt <= parseInt($('#POD').val()) && isPOD || tirada_alt > parseInt($('#POD').val()) && !isPOD; - - if (!exists && typeIsOk) { - - const dimension = getDimensionLibro(); - - let datos = { - tirada: tirada_alt, - merma: get_merma_tirada_alternativa(tirada_alt), - tipo_impresion_id: $('#tipo_impresion_id').val(), - json_tiradas: generate_json_tiradas(), - ancho: dimension.ancho, - alto: dimension.alto, - cliente_id: $('#clienteId').find(":selected").val(), - solapas_cubierta: $('#solapas').is(':checked')?1:0, - solapas_cubierta_ancho: $('#solapas').is(':checked')?parseInt($('#solapas_ancho').val()):0, - solapas_sobrecubierta: $('#solapas_sobrecubierta').is(':checked')?1:0, - solapas_sobrecubierta_ancho: $('#solapas_sobrecubierta').is(':checked')?parseInt($('#solapas_ancho_sobrecubierta').val()):0, - lomo: getLomoExterior(), - }; - - datos = Object.assign(datos, window.token_ajax); - - // Se realiza la petición AJAX - await $.ajax({ - type: "POST", - url: window.get_tirada_url, - data: datos, - success: async function (data) { - - var coste_total = 0.0; - var margen_total = 0.0; - - var costes_servicios = 0.0; - var margen_servicios = 0.0; - - var coste_envio = 0.0; - var margen_envio = 0.0; - - if(data.lineas.length >0){ - // Se cogen los valores de la linea con los datos correspondientes - data.lineas.forEach(function(value) { - coste_total += value.total_coste; - margen_total += value.total_margen; - }); - - //console.log(datos.tirada); - - // Se obtiene el precio de los servicios - const valueAcabados = await get_servAcabados_tiradasAlternativas(parseInt(datos.tirada)); - costes_servicios += parseFloat(valueAcabados.coste); - margen_servicios += parseFloat(valueAcabados.margen); - - //console.log('coste acabados ('+ datos.tirada +'): ' + valueAcabados.coste); - - const valueEncuadernacion = await get_servEncuadernacion_tiradasAlternativas( - parseInt(datos.tirada), parseInt( $('#paginas').val()), parseInt(dimension.ancho), parseInt(dimension.alto)); - costes_servicios += parseFloat(valueEncuadernacion.coste); - margen_servicios += parseFloat(valueEncuadernacion.margen); - - //console.log('coste encuadernacion ('+ datos.tirada +'): ' + valueEncuadernacion.coste); - - const valueManipulado = await get_servManipulado_tiradasAlternativas(parseInt(datos.tirada)); - costes_servicios += parseFloat(valueManipulado.coste); - margen_servicios += parseFloat(valueManipulado.margen); - - //console.log('coste manipulado ('+ datos.tirada +'): ' + valueManipulado.coste); - - const valuePreimpresion = await get_servPreimpresion_tiradasAlternativas(parseInt(datos.tirada)); - costes_servicios += parseFloat(valuePreimpresion.coste); - margen_servicios += parseFloat(valuePreimpresion.margen); - - const valueServiciosExtra = await get_servExtra_tiradasAlternativas(parseInt(datos.tirada)); - costes_servicios += parseFloat(valueServiciosExtra.coste); - margen_servicios += parseFloat(valueServiciosExtra.margen); - - //console.log('coste preimpresion ('+ datos.tirada +'): ' + valuePreimpresion.coste); - - const valueTransporte = await get_coste_envio_tiradasAlternativas(parseInt(datos.tirada)); - coste_envio = valueTransporte.coste; - margen_envio = valueTransporte.margen; - - - // Se añade la fila a la tabla de tiradas - tableTiradas.row.add({ - tirada: datos.tirada, - coste_impresion: coste_total.toFixed(2), - coste_envio: coste_envio.toFixed(2), - margen: ((margen_total + margen_servicios + margen_envio)/(coste_total+coste_envio)*100.0).toFixed(2), - total_pedido: (coste_total + costes_servicios + coste_envio).toFixed(2), - precio_unidad: ((coste_total + costes_servicios + coste_envio) / datos.tirada).toFixed(4), - - }).draw(false); - } - - yeniden(data[window.csrf_token]); - - }, - error: function(e){} - }); - } - else { - var htmlString = ''; - if(typeIsOk){ - htmlString = ` - `; - } - - else{ - htmlString = ` - `; - } - $('#alert-tiradas_alt').hide().empty().html(htmlString).fadeIn("slow", function(){ - setTimeout(function(){ - $('#alert-tiradas_alt').fadeOut("slow"); - }, 5000); - }); - } - - -} - -// Función para obtener el lomo exterior -function getLomoExterior(){ - let lomoTotal = 0 - try{ - $('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var rowData = this.data(); - if(rowData.row_id != 'lp_cubierta' && rowData.tipo != 'lp_sobrecubierta') - lomoTotal += parseFloat(rowData.lomo) - }) - } - catch(error){ - lomoTotal = 0 - } - return lomoTotal -} - - -// Inicialización de la tabla de tiradas -function initTableTiradas() { - tableTiradas = $('#tableTiradas').DataTable({ - "language": { - "url": window.datatable_lang_url - }, - "paging": false, - "info": false, - "searching": false, - "ordering": true, - "autoWidth": false, - "responsive": true, - "columnDefs": [ - { - orderable: false, - searchable: false, - targets: [lastColNr_tiradasAlt] - }, - ], - "columns": [ - { data: "tirada" }, - { data: 'coste_impresion' }, - { data: 'coste_envio' }, - { data: 'margen' , - render: function ( data, type, row ) { - return data + '%'; - } - }, - { data: 'total_pedido' }, - { data: 'precio_unidad' }, - { - data: actionBtns_tiradasAlt, - className: 'row-edit dt-center' - } - ], - order: [[0, 'asc']] - }); -} - -// Evento de borrado de una fila de la tabla de tiradas -$(document).on('click', '.btn-delete-tirada', function (e) { - - const row = $(this).closest('tr'); - tableTiradas.row(row) - .remove() - .draw(); - showBreadCrumbSaveButton(true); -}) - - -// Función para usar la tirada alternativa como tirada principal -$(document).on('click', '.comfirm-tirada-alt', function (e) { - - const row = $(this).closest('tr'); - const data = tableTiradas.row(row).data(); - - updateTablaEnvios($('#tirada').val(), data.tirada).then(function(){ - $('#tirada').val(data.tirada); - $('#tirada').trigger('change', [false]); - }) -}) - - -// Función para generar el JSON de las lineas de presupuesto para calcular las tiradas -function generate_json_tiradas() { - - const data = $('#tableLineasPresupuesto').DataTable().data().toArray(); - - //return data; // For debugging purposes - json = filterData(data, - ['paginas', - 'numPagColor', - 'paginas_impresion', - 'papel', // papel generico - 'papel_impresion_id', - 'gramaje', - 'maquina_id', - 'aFavorFibra', - 'row_id', - 'check_papel_total', - 'check_impresion_total', - 'cobAmarillo', // tipologia de papel - 'cobCyan', - 'cobMagenta', - 'cobNegro', - 'cobCG', - 'gotaColor', - 'gotaNegro']); - - json.forEach(element => { - element['check_papel_total'] = $('#' + element['row_id'] + '_checkPapel').is(':checked') ? 1 : 0; - element['check_impresion_total'] = $('#' + element['row_id'] + '_checkClicks').is(':checked') ? 1 : 0; - }); - return JSON.stringify(json); -} - - -// Función para filtrar las columnas de la tabla de tiradas -function filterData(data, keys) { - return data.map(obj => { - const newObj = {}; - keys.forEach(key => { - if (obj.hasOwnProperty(key)) { - newObj[key] = obj[key]; - } - }); - return newObj; - }); -} - - -// Función para obtener la merma de la tirada alternativa -function get_merma_tirada_alternativa(tirada){ - - var merma = 0 - - if(tirada>parseInt($('#POD').val())){ - - merma = tirada*0.1<=30 ? tirada*0.1 : 30 - } - else{ - merma_lineas = [] - $('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var rowData = this.data(); - if(rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta'){ - const formas_linea = $('#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) - } - }) - - if(merma_lineas.length>0) - merma = Math.max(...merma_lineas) - else - merma = 0 - } - return merma; -} - - -function fill_tiradas_alternativas(){ - tableTiradas.clear().draw(); - const text = $('#tirada_alternativa_json_data').val() - if(text.length>0){ - - const data = JSON.parse(text); - if(data.length>0){ - $.each(data, function(key, value) { - tableTiradas.row.add({ - tirada: value.tirada, - coste_impresion: value.coste_impresion, - coste_envio: value.coste_envio, - margen: value.margen, - total_pedido: value.total_pedido, - precio_unidad: value.precio_unidad, - }).draw(false); - }); - } - } -} - - - - \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_tiradasAlternativasItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_tiradasAlternativasItems.php index ecb7af82..8e1baa2e 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_tiradasAlternativasItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_tiradasAlternativasItems.php @@ -30,7 +30,7 @@ - + @@ -48,21 +48,6 @@
- - - -section("additionalInlineJs") ?> - window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"; - - window.datatable_TA_url = ""; - window.get_tirada_url = ""; - - window.error_lang_tirada_alt_duplicada = ""; - window.error_lang_tirada_alt_tipo = ""; - -endSection() ?> - - diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/comparador.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/comparador.js deleted file mode 100644 index fef4b8da..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/comparador.js +++ /dev/null @@ -1,747 +0,0 @@ -/******************************* - * Eventos asociados a elementos HTML - *******************************/ -$('#compPaginasNegro').on("change", function () { - var negro = parseInt(document.getElementById('compPaginasNegro').value); - const paginas = parseInt(document.getElementById('paginas').value); - if (paginas < negro) { - document.getElementById('compPaginasNegro').value = paginas; - negro = paginas; - } - var color = parseInt(document.getElementById('compPaginasColor').value); - if ($('#tipoImpresion').select2('data')[0].id == 'color') { - - var newValue = paginas - negro; - if (newValue != color) { - document.getElementById('compPaginasColor').value = newValue >= 0 ? newValue : 0; - $('#compPaginasColor').change(); - } - } -}); - -$('#compPaginasColor').on("change", function () { - const paginas = parseInt(document.getElementById('paginas').value); - var color = parseInt(document.getElementById('compPaginasColor').value); - var negro = parseInt(document.getElementById('compPaginasNegro').value); - - if (paginas < color) { - document.getElementById('compPaginasColor').value = paginas; - color = paginas - } - var newValue = paginas - color; - if (newValue != negro) { - document.getElementById('compPaginasNegro').value = newValue >= 0 ? newValue : 0; - $('#compPaginasNegro').change(); - } -}); - -$('#compPaginasNegrohq').on("change", function () { - - var negro = parseInt(document.getElementById('compPaginasNegrohq').value); - const paginas = parseInt(document.getElementById('paginas').value); - if (paginas < negro) { - document.getElementById('compPaginasNegrogq').value = paginas; - negro = paginas; - } - var color = parseInt(document.getElementById('compPaginasColorhq').value); - if ($('#tipoImpresion').select2('data')[0].id == 'colorhq') { - - var newValue = paginas - negro; - if (newValue != color) { - document.getElementById('compPaginasColorhq').value = newValue >= 0 ? newValue : 0; - $('#compPaginasColorhq').change(); - } - } - -}); - -$('#compPaginasColorhq').on("change", function () { - const paginas = parseInt(document.getElementById('paginas').value); - var color = parseInt(document.getElementById('compPaginasColorhq').value); - var negro = parseInt(document.getElementById('compPaginasNegrohq').value); - - if (paginas < color) { - document.getElementById('compPaginasColorhq').value = paginas; - color = paginas - } - var newValue = paginas - color; - if (newValue != negro) { - document.getElementById('compPaginasNegrohq').value = newValue >= 0 ? newValue : 0; - $('#compPaginasNegrohq').change(); - } -}); - - - -$('#prototipo').on("change", function () { - $('#ferro').prop('checked', true) -}); - - - -$('#compPosPaginasColor').on("keyup", function () { - computarPaginasColor(this.value); -}); - - -// Este evento recoloca los headers de las tablas cuando se pulsa el -// boton del acordeon -$('.accordion-button').on('click', function (e) { - - if (e.target.id.includes("plana")) { - $("#tableCompIntPlana").DataTable().columns.adjust(); - } - else if (e.target.id.includes("rotativa")) { - $("#tableCompIntRotativa").DataTable().columns.adjust(); - } - else if (e.target.id.includes("cubierta")) { - $("#tableCompCubierta").DataTable().columns.adjust(); - } - else if (e.target.id.includes("guardas")) { - $("#tableCompGuardas").DataTable().columns.adjust(); - } - else if (e.target.id.includes("LineasPresupuesto")) { - $("#tableLineasPresupuesto").DataTable().columns.adjust(); - } - - -}); - - - - -/******************************* - * Metodos - *******************************/ -function getRowFromLineaInt(tipo, linea) { - - $precio_impresion = isNaN(parseFloat(linea.fields.precio_impresion_horas + linea.fields.margen_impresion_horas + linea.fields.precio_click_pedido)) ? "" : - parseFloat(linea.fields.precio_impresion_horas + linea.fields.margen_impresion_horas + linea.fields.precio_click_pedido).toFixed(2); - - - data = { - 'tipo': tipo, - 'paginas': linea.fields.paginas, - 'papel': linea.fields.papel_generico, - 'gramaje': linea.fields.gramaje, - 'marca': linea.fields.papel_impresion, - 'maquina': linea.fields.maquina, - 'numeroPliegos': isNaN(parseFloat(linea.fields.pliegos_libro)) ? "" : parseFloat(linea.fields.pliegos_libro).toFixed(2), - 'pliegosPedido': isNaN(parseFloat(linea.fields.pliegos_pedido)) ? "" : parseFloat(linea.fields.pliegos_pedido).toFixed(2), - 'precioPliego': isNaN(parseFloat(linea.fields.precios_pliegos)) ? "" : parseFloat(linea.fields.precios_pliegos).toFixed(6), - 'libro': isNaN(parseFloat(linea.fields.precio_libro)) ? "" : parseFloat(linea.fields.precio_libro).toFixed(2), - 'totalPapelPedido': isNaN(parseFloat(linea.fields.precio_pedido)) ? "" : parseFloat(linea.fields.precio_pedido).toFixed(2), - 'lomo': isNaN(parseFloat(linea.fields.mano)) ? "" : parseFloat(linea.fields.mano).toFixed(2), - 'peso': isNaN(parseFloat(linea.fields.peso)) ? "" : parseFloat(linea.fields.peso).toFixed(2), - 'horasMaquina': isNaN(parseFloat(linea.fields.horas_maquina)) ? "" : parseFloat(linea.fields.horas_maquina).toFixed(2), - 'precioImpresion': $precio_impresion, - 'total': isNaN(parseFloat(linea.fields.total_impresion).toFixed(2)) ? "" : parseFloat(linea.fields.total_impresion).toFixed(2), - 'maquinaId': linea.fields.maquina_id, - 'maquinaVelocidad': linea.fields.maquina_velocidad, - 'tiempoMaquina': linea.fields.tiempo_maquina, - 'papelGenericoId': linea.fields.papel_generico_id, - 'papelImpresionId': linea.fields.papel_impresion_id, - 'tarifa_impresion_id': linea.fields.tarifa_impresion_id, - } - if(data['tipo']=='guardas') - data['paginas_impresion'] = linea.fields.paginas_impresion; - return data; -} - -function getRowFromLineaRot(linea) { - - $precio_impresion = isNaN(parseFloat(linea.fields.precio_impresion_horas + linea.fields.precio_click_pedido)) ? "" : - parseFloat(linea.fields.precio_impresion_horas + linea.fields.precio_click_pedido).toFixed(2); - - return { - 'tipo': 'rotativa', - 'paginas': linea.fields.paginas, - 'papel': linea.fields.papel_generico, - 'gramaje': linea.fields.gramaje, - 'marca': linea.fields.papel_impresion, - 'aFavorFibra': linea.fields.a_favor_fibra == 1 ? 'si' : 'no', - 'maquina': linea.fields.maquina, - 'numeroPliegos': isNaN(parseFloat(linea.fields.pliegos_libro)) ? "" : parseFloat(linea.fields.pliegos_libro).toFixed(2), - 'pliegosPedido': isNaN(parseFloat(linea.fields.pliegos_pedido)) ? "" : parseFloat(linea.fields.pliegos_pedido).toFixed(2), - 'precioPliego': isNaN(parseFloat(linea.fields.precios_pliegos)) ? "" : parseFloat(linea.fields.precios_pliegos).toFixed(6), - 'libro': isNaN(parseFloat(linea.fields.precio_libro)) ? "" : parseFloat(linea.fields.precio_libro).toFixed(2), - 'totalPapelPedido': isNaN(parseFloat(linea.fields.precio_pedido)) ? "" : parseFloat(linea.fields.precio_pedido).toFixed(2), - 'lomo': isNaN(parseFloat(linea.fields.mano)) ? "" : parseFloat(linea.fields.mano).toFixed(2), - 'peso': isNaN(parseFloat(linea.fields.peso)) ? "" : parseFloat(linea.fields.peso).toFixed(2), - 'horasMaquina': isNaN(parseFloat(linea.fields.horas_maquina)) ? "" : parseFloat(linea.fields.horas_maquina).toFixed(2), - 'precioImpresion': $precio_impresion, - 'precioPagNegro': isNaN(parseFloat(linea.fields.precio_pagina_negro)) ? "" : parseFloat(linea.fields.precio_pagina_negro).toFixed(6), - 'precioPagColor': isNaN(parseFloat(linea.fields.precio_pagina_color)) ? "" : parseFloat(linea.fields.precio_pagina_color).toFixed(6), - 'totalTinta': isNaN(parseFloat(linea.fields.precio_tinta)) ? "" : parseFloat(linea.fields.precio_tinta).toFixed(2), - 'totalCorte': isNaN(parseFloat(linea.fields.total_corte)) ? "" : parseFloat(linea.fields.total_corte).toFixed(2), - 'total': isNaN(parseFloat(linea.fields.total_impresion)) ? "" : (parseFloat(linea.fields.total_impresion)).toFixed(2), - 'maquinaId': linea.fields.maquina_id, - 'maquinaVelocidad': linea.fields.maquina_velocidad, - 'tiempoMaquina': linea.fields.tiempo_maquina, - 'papelGenericoId': linea.fields.papel_generico_id, - 'papelImpresionId': linea.fields.papel_impresion_id, - 'paginasColor': linea.fields.paginas_color, - 'tarifa_impresion_id': linea.fields.tarifa_impresion_id, - } -} - - - - - -function computarPaginasColor(string) { - - var numbers = []; - for (const [, beginStr, endStr] of string.matchAll(/(\d+)(?:-(\d+))?/g)) { - const [begin, end] = [beginStr, endStr].map(Number); - numbers.push(begin); - if (endStr !== undefined) { - for (let num = begin + 1; num <= end; num++) { - numbers.push(num); - } - } - } - var numbers2 = []; - numbers.forEach(function (value, i) { - // Si es impar y no está el siguiente par hay que añadirlo - if (value % 2 != 0 && numbers[i + 1] != value + 1) { - numbers2.push(value + 1); - } - }); - numbers = numbers.concat(numbers2); - numbers.sort(function (a, b) { - return a - b; - }); - calPagesTextarea = document.getElementById('compCalPaginasColor'); - calPagesTextarea.value = numbers; - autosize.update(calPagesTextarea); -} - - -function checkRetractiladoComparador(element) { - - switch (element.id) { - case 'retractilado': - if ($('#' + element.id).prop('checked')) { - $('#retractilado5').prop('checked', false); - } - break; - case 'retractilado5': - if ($('#' + element.id).prop('checked')) { - $('#retractilado').prop('checked', false); - } - break; - default: - break; - } - -} - -function updatePapelesComparador() { - - var e = document.getElementById("tipoImpresion"); - elements_negro = document.getElementsByClassName('comp-negro-selected'); - elements_negrohq = document.getElementsByClassName('comp-negrohq-selected'); - elements_color = document.getElementsByClassName('comp-color-selected'); - elements_colorhq = document.getElementsByClassName('comp-colorhq-selected'); - switch (e.value) { - case "negro": - Array.from(elements_color).forEach(element => { - element.style.display = "none"; - }); - Array.from(elements_negro).forEach(element => { - element.style.display = "flex"; - }); - Array.from(elements_negrohq).forEach(element => { - element.style.display = "none"; - }); - Array.from(elements_colorhq).forEach(element => { - element.style.display = "none"; - }); - break; - - case "negrohq": - Array.from(elements_color).forEach(element => { - element.style.display = "none"; - - }); - Array.from(elements_negro).forEach(element => { - element.style.display = "none"; - }); - Array.from(elements_negrohq).forEach(element => { - element.style.display = "flex"; - }); - Array.from(elements_colorhq).forEach(element => { - element.style.display = "none"; - }); - break; - - case "color": - Array.from(elements_negro).forEach(element => { - element.style.display = "flex"; - }); - Array.from(elements_negrohq).forEach(element => { - element.style.display = "none"; - }); - Array.from(elements_color).forEach(element => { - element.style.display = "flex"; - }); - Array.from(elements_colorhq).forEach(element => { - element.style.display = "none"; - }); - break; - - case "colorhq": - Array.from(elements_negro).forEach(element => { - element.style.display = "none"; - }); - Array.from(elements_negrohq).forEach(element => { - element.style.display = "flex"; - }); - Array.from(elements_color).forEach(element => { - element.style.display = "none"; - }); - Array.from(elements_colorhq).forEach(element => { - element.style.display = "flex"; - }); - break; - - default: - break; - } -} - - - -function clearIntLineas(is_color) { - //$("#tableCompIntPlana").DataTable().rows( '.selected' ).deselect(); - var tabla = $('#tableCompIntPlana').DataTable(); - tabla - .rows(function (idx, data, node) { - return data['tipo'].includes(is_color ? 'color' : 'bn'); - }) - .remove() - .draw(); - //$('#tableCompIntPlana').DataTable().clear().draw(); - $('#insertarPlanaBtn').css('display', 'none'); -} - - -function clearCubierta() { - - var tabla = $('#tableCompCubierta').DataTable(); - tabla - .rows(function (idx, data, node) { - return data['tipo'] === 'cubierta'; - }) - .remove() - .draw(); - if(tabla.rows().count()==0) - $('#insertarCubiertaBtn').css('display', 'none'); -} - -function clearSobrecubierta() { - - - var tabla = $('#tableCompCubierta').DataTable(); - tabla - .rows(function (idx, data, node) { - return data['tipo'] === 'sobrecubierta'; - }) - .remove() - .draw(); - if(tabla.rows().count()==0) - $('#insertarCubiertaBtn').css('display', 'none'); -} - -function clearGuardas() { - - $('#tableCompGuardas').DataTable().clear().draw(); - $('#insertarGuardasBtn').css('display', 'none'); -} - -function clearIntRot() { - - $('#errorComRot').html(''); - $('#tableCompIntRotativa').DataTable().clear().draw(); - $('#insertarRotativaBtn').css('display', 'none'); -} - - -function selectIntLineas() { - var negro_selected = false; - var color_selected = false; - $("#tableCompIntPlana").DataTable().rows('.selected').deselect(); - $("#tableCompIntPlana").DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { - if (!negro_selected && $('#tableCompIntPlana').DataTable().cell(rowIdx, 0).data().includes('bn')) { - $("#tableCompIntPlana").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - negro_selected = true; - } - if (!color_selected && $('#tableCompIntPlana').DataTable().cell(rowIdx, 0).data().includes('color')) { - $("#tableCompIntPlana").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - color_selected = true; - } - }); - - var table = $("#tableCompIntPlana").DataTable(); - var rows = table.rows('.selected').indexes(); - var data = table.rows(rows).data(); - - var value_total = 0.00; - - for (let i = 0; i < data.length; i++) { - - value_total += parseFloat(data[i]['total']) - } - - $('#total_comp_plana').html(value_total.toFixed(2)); -} - -function selectIntRotLineas() { - - $("#tableCompIntRotativa").DataTable().rows('.selected').deselect(); - - let value_total = 0.00; - - if ($("#tableCompIntRotativa").DataTable().rows().count() > 0) { - - $("#tableCompIntRotativa").DataTable().row(0).nodes().to$().toggleClass('selected'); - value_total = parseFloat($("#tableCompIntRotativa").DataTable().rows(0).data()[0]['total']) - }; - - - $('#total_comp_rot').html(value_total.toFixed(2)); -} - -function selectCubiertaLineas() { - - $("#tableCompCubierta").DataTable().rows('.selected').deselect(); - - cubierta_selected = false; - sobrecubierta_selected = false; - - if ($("#tableCompCubierta").DataTable().rows().count() > 0) { - - $("#tableCompCubierta").DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { - if (!cubierta_selected && $('#tableCompCubierta').DataTable().cell(rowIdx, 0).data() === 'cubierta') { - $("#tableCompCubierta").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - cubierta_selected = true; - } - if (!sobrecubierta_selected && $('#tableCompCubierta').DataTable().cell(rowIdx, 0).data() === 'sobrecubierta') { - $("#tableCompCubierta").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - sobrecubierta_selected = true; - } - }); - } - - var table = $("#tableCompCubierta").DataTable(); - var rows = table.rows('.selected').indexes(); - var data = table.rows(rows).data(); - - var value_total = 0.00; - - for (let i = 0; i < data.length; i++) { - - value_total += parseFloat(data[i]['total']) - } - - - $('#total_comp_cubierta').html(value_total.toFixed(2)); -} - -function selectGuardasLineas() { - - $("#tableCompGuardas").DataTable().rows('.selected').deselect(); - - let value_total = 0.00; - - if ($("#tableCompGuardas").DataTable().rows().count() > 0) { - - $("#tableCompGuardas").DataTable().row(0).nodes().to$().toggleClass('selected'); - value_total = parseFloat($("#tableCompGuardas").DataTable().rows(0).data()[0]['total']) - }; - - - $('#total_comp_guardas').html(value_total.toFixed(2)); -} - -function getIDsComparador(is_color, is_hq) { - - if (!is_color) { - if (is_hq) { - var papel = '#compPapelNegrohq'; - var gramaje = '#compGramajeNegrohq'; - var paginas = '#compPaginasNegrohq'; - } - else { - var papel = '#compPapelNegro'; - var gramaje = '#compGramajeNegro'; - var paginas = '#compPaginasNegro'; - } - } - else { - if (is_hq) { - var papel = '#compPapelColorhq'; - var gramaje = '#compGramajeColorhq'; - var paginas = '#compPaginasColorhq'; - } - else { - var papel = '#compPapelColor'; - var gramaje = '#compGramajeColor'; - var paginas = '#compPaginasColor'; - } - } - return { - papel: papel, - gramaje: gramaje, - paginas: paginas, - } -} - -function getDimensionLibro() { - var ancho = 0; - var alto = 0; - - - if ($('#papelFormatoId').select2('data').length > 0) { - if ($('#papelFormatoId').select2('data')[0].id.length > 0) { - ancho = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[0]); - alto = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[1]); - } - else if (document.getElementById('papelFormatoPersonalizado').checked) { - ancho = parseFloat(document.getElementById('papelFormatoAncho').value); - alto = parseFloat(document.getElementById('papelFormatoAlto').value); - } - } - - else if (document.getElementById('papelFormatoPersonalizado').checked) { - ancho = parseFloat(document.getElementById('papelFormatoAncho').value); - alto = parseFloat(document.getElementById('papelFormatoAlto').value); - } - return { - ancho: ancho, - alto: alto - } -} - -function checkInputsForRotativa() { - - // Si es color, el gramaje y el papel tiene que ser el mismo - try { - - if ($('#tipoImpresion').select2('data')[0].id == 'color') { - if ($('#compPapelNegro').select2('data')[0].id == $('#compPapelColor').select2('data')[0].id && - $('#compGramajeNegro').select2('data')[0].text.trim() == $('#compGramajeColor').select2('data')[0].text.trim()) { - - return true; - } - } - else if ($('#tipoImpresion').select2('data')[0].id == 'negro') { - if ($('#compPapelNegro').select2('data')[0].id.length > 0 && - $('#compGramajeNegro').select2('data')[0].text.length > 0) { - return true; - } - } - - - } - catch (error) { - - return false; - } - - return false; -} - - -function fillIntPlana(data, is_color, is_hq) { - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") - $('#tableCompIntPlana').DataTable().row - .add(getRowFromLineaInt(is_color ? (is_hq ? 'colorhq' : 'color') : (is_hq ? 'bnhq' : 'bn'), linea)) - .draw() - }) -} - -function fillIntRot(data) { - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") { - $('#tableCompIntRotativa').DataTable().row - .add(getRowFromLineaRot(linea)) - .draw() - } - }) -} - -function fillCubierta(data) { - - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") - $('#tableCompCubierta').DataTable().row - .add(getRowFromLineaInt('cubierta', linea)) - .draw() - }) -} - -function fillSobrecubierta(data) { - - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") - $('#tableCompCubierta').DataTable().row - .add(getRowFromLineaInt('sobrecubierta', linea)) - .draw() - }) -} - -function fillGuardas(data) { - - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") - $('#tableCompGuardas').DataTable().row - .add(getRowFromLineaInt('guardas', linea)) - .draw() - }) -} - -function clearCompTable() { - - $('#insertarPlanaBtn').addClass('d-none') - $('#insertarRotativaBtn').addClass('d-none') - $('#total_comp_plana').html('0.00') - $('#total_comp_rot').html('0.00') -} - -function generateCompJSON() { - - data = {} - - if ($('#tipoImpresion').select2('data')[0].id == 'negro' || $('#tipoImpresion').select2('data')[0].id == 'color') { - try { - bn_obj = { - "bn": { - 'paginas': $('#compPaginasNegro').val(), - 'papel_id': $('#compPapelNegro').select2('data')[0].id, - 'gramaje': $('#compGramajeNegro').select2('data')[0].text.trim(), - } - } - } - catch (e) { - bn_obj = {} - } - $.extend(data, bn_obj); - } - - if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' || $('#tipoImpresion').select2('data')[0].id == 'colorhq') { - try { - bnhq_obj = { - "bnhq": { - 'paginas': $('#compPaginasNegrohq').val(), - 'papel_id': $('#compPapelNegrohq').select2('data')[0].id, - 'gramaje': $('#compGramajeNegrohq').select2('data')[0].text.trim(), - } - } - } - catch (e) { - bnhq_obj = {} - } - $.extend(data, bnhq_obj); - } - - if ($('#tipoImpresion').select2('data')[0].id == 'color') { - try { - color_obj = { - "color": { - 'paginas': $('#compPaginasColor').val(), - 'papel_id': $('#compPapelColor').select2('data')[0].id, - 'gramaje': $('#compGramajeColor').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - color_obj = {} - } - $.extend(data, color_obj); - - } - - - if ($('#tipoImpresion').select2('data')[0].id == 'colorhq') { - try { - colorhq_obj = { - "colorhq": { - 'paginas': $('#compPaginasColorhq').val(), - 'papel_id': $('#compPapelColorhq').select2('data')[0].id, - 'gramaje': $('#compGramajeColorhq').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - colorhq_obj = {} - } - $.extend(data, colorhq_obj); - } - - - try { - cubierta_obj = { - "cubierta": { - 'paginas': $('#compCarasCubierta option:selected').val(), - 'papel_id': $('#compPapelCubierta').select2('data')[0].id, - 'gramaje': $('#compGramajeCubierta').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - cubierta_obj = {} - } - $.extend(data, cubierta_obj); - - try { - sobrecubierta_obj = { - "sobrecubierta": { - 'imprimir': $('#compSobrecubierta option:selected').val(), - 'papel_id': $('#compPapelSobrecubierta').select2('data')[0].id, - 'gramaje': $('#compGramajeSobrecubierta').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - sobrecubierta_obj = {} - } - $.extend(data, sobrecubierta_obj); - - if($('#compCarasGuardas').length>0){ - try { - guardas_obj = { - "guardas": { - 'paginas_impresion': $('#compCarasGuardas option:selected').val(), - 'papel_id': $('#compPapelGuardas').select2('data')[0].id, - }, - } - } - catch (e) { - guardas_obj = {} - } - $.extend(data, guardas_obj); - - } - - data_str = JSON.stringify(data) - $('#comparador_json_data').val(data_str) -} - diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/previews.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/previews.js deleted file mode 100644 index b083774c..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/previews.js +++ /dev/null @@ -1,1107 +0,0 @@ -// Global parameters -var pvObj; - -function previewInteriorPlana(lpTagName, isCosido, isTapaDura) { - - // Local parameters - let guardaV = 0; - let guardaH = 0; - let styleText = {size: 12, family: 'Public Sans'}; - - // Get the preview Object parameters - getObjetoLP(lpTagName, isCosido, isTapaDura); - - // Configuracion de las guardas - // Guarda vertical - if (pvObj.nFormasV > 1) { - guardaV = 3; - } - // Guarda horizontal - if (pvObj.nFormasH > 1) { - guardaH = 3; - } - // Constantes relativas a las dimnesiones de la forma - let LVo = pvObj.altoForma / 2; - let LHo = pvObj.anchoForma / 2; - - // Clear the canvas element - $('#pv_' + pvObj.idIndex + '_shape').empty(); - // Get the element for placing the graphical elements - var divPlana = document.getElementById('pv_' + pvObj.idIndex + '_shape'); - var _pvPlana = new Two({fitted: true}).appendTo(divPlana); - // Calculate the center of the canvas element - var origenPlana = new Two.Vector(_pvPlana.width / 2, _pvPlana.height / 2); - - var areaMaquinaPlana = _pvPlana.makeRectangle( - origenPlana.x, - origenPlana.y, - pvObj.anchoMaquina, - pvObj.altoMaquina); - areaMaquinaPlana.stroke = 'black'; - areaMaquinaPlana.fill = '#E69F6E'; - areaMaquinaPlana.linewidth = 1; - - var areaImpresionPlana = _pvPlana.makeRectangle( - origenPlana.x, - origenPlana.y, - pvObj.anchoImpresion, - pvObj.altoImpresion); - areaImpresionPlana.stroke = 'red'; - areaImpresionPlana.fill = '#FCEAF1'; - areaImpresionPlana.linewidth = 1; - - var formas = []; - - for (let iV = 0; iV < pvObj.nFormasV; iV++) { - - for (let iH = 0; iH < pvObj.nFormasH; iH++) { - - let _offsetX = ((((pvObj.nFormasH - 1) - 2 * iH) * LHo) + (((pvObj.nFormasH - 1) / 2 - iH) * guardaH)); - let _offsetY = ((((pvObj.nFormasV - 1) - 2 * iV) * LVo) + (((pvObj.nFormasV - 1) / 2 - iV) * guardaV)); - - formas[iV + iH] = _pvPlana.makeRectangle( - origenPlana.x + _offsetX, - origenPlana.y + _offsetY, - pvObj.anchoForma, - pvObj.altoForma); - formas[iV + iH].stroke = 'grey'; - formas[iV + iH].fill = '#F4F8F2'; - formas[iV + iH].linewidth = 1; - - // Texts - _pvPlana.makeText(pvObj.altoForma, (origenPlana.x + _offsetX) + (pvObj.anchoForma / 2 - 25), (origenPlana.y + _offsetY), styleText); - _pvPlana.makeText(pvObj.anchoForma, (origenPlana.x + _offsetX), (origenPlana.y + _offsetY) + (pvObj.altoForma / 2 - 15), styleText); - - } - } - _pvPlana.update(); -} - -function previewRotativa(lpTagName, isCosido, isTapaDura) { - - // Local parameters - let styleText = {size: 12, family: 'Public Sans'}; - let margenTop = 3; - let guardaV = 0; - let guardaH = 0; - - // Get the preview Object parameters - getObjetoLP(lpTagName, isCosido, isTapaDura); - - // Calculos - // Configuracion de las guardas - // Guarda vertical - if (pvObj.nFormasV > 1) { - guardaV = 3; - } - // Guarda horizontal - if (pvObj.nFormasH > 1) { - guardaH = 3; - } - // Constantes relativas al libro - let LVo = pvObj.altoForma / 2; - let LHo = pvObj.anchoForma / 2; - - // offset Y - let nTopForms = (pvObj.altoImpresion / 2.0 - margenTop) / (LVo + guardaV); - let yOffset = LVo * getDecimalPart(nTopForms); - - //console.log(yOffset); - - // Clear the canvas element - $('#pv_' + pvObj.idIndex + '_shape').empty(); - // Get the element for placing the graphical elements - var divRotativa = document.getElementById('pv_' + pvObj.idIndex + '_shape'); - var _pvRotativa = new Two({fitted: true}).appendTo(divRotativa); - // Calculate the center of the canvas element - var origenRotativa = new Two.Vector(_pvRotativa.width / 2, _pvRotativa.height / 2); - - var areaMaquinaRotativa = _pvRotativa.makeRectangle( - origenRotativa.x, - origenRotativa.y, - pvObj.anchoMaquina, - pvObj.altoMaquina); - areaMaquinaRotativa.stroke = 'black'; - areaMaquinaRotativa.fill = '#E69F6E'; - areaMaquinaRotativa.linewidth = 1; - - var areaImpresionRotativa = _pvRotativa.makeRectangle( - origenRotativa.x, - origenRotativa.y, - pvObj.anchoImpresion, - pvObj.altoImpresion); - areaImpresionRotativa.stroke = 'red'; - areaImpresionRotativa.fill = '#FCEAF1'; - areaImpresionRotativa.linewidth = 1; - - var areaClickRotativa = _pvRotativa.makeRectangle( - origenRotativa.x, - origenRotativa.y - (pvObj.altoImpresion / 2 - pvObj.altoClick / 2), - pvObj.anchoImpresion - 10, - pvObj.altoClick); - areaClickRotativa.stroke = 'blue'; - //areaClickRotativa.fill = '#FCEAF1'; - areaClickRotativa.linewidth = 2; - - var formas = []; - - for (let iV = 0; iV < pvObj.nFormasV; iV++) { - - for (let iH = 0; iH < pvObj.nFormasH; iH++) { - - let _offsetX = ((((pvObj.nFormasH - 1) - 2 * iH) * LHo) + (((pvObj.nFormasH - 1) / 2 - iH) * guardaH)); - let _offsetY = ((((pvObj.nFormasV - 1) - 2 * iV) * LVo) + (((pvObj.nFormasV - 1) / 2 - iV) * guardaV)); - - formas[iV + iH] = _pvRotativa.makeRectangle( - origenRotativa.x + _offsetX, - (origenRotativa.y - yOffset) + _offsetY, - pvObj.anchoForma, - pvObj.altoForma); - formas[iV + iH].stroke = 'grey'; - formas[iV + iH].fill = '#F4F8F2'; - formas[iV + iH].linewidth = 1; - - // Texts - _pvRotativa.makeText(pvObj.altoForma, (origenRotativa.x + _offsetX) + (pvObj.anchoForma / 2 - 25), ((origenRotativa.y - yOffset) + _offsetY), styleText); - _pvRotativa.makeText(pvObj.anchoForma, (origenRotativa.x + _offsetX), ((origenRotativa.y - yOffset) + _offsetY) + (pvObj.altoForma / 2 - 15), styleText); - - } - - } - - _pvRotativa.update(); - -} - -function getDecimalPart(floatNumber) { - let int_part = Math.trunc(floatNumber); - let float_part = Number((floatNumber - int_part).toFixed(2)); - return float_part; -} - - -function previewEsquemaCubierta(_lpTagName, _isCosido, _isTapaDura) { - - let tipoImpresion = parseInt($('#tipo_impresion_id').val()); - - // Fresado TD y Cosido TD - if (tipoImpresion === 1 || tipoImpresion === 3) { - portadaTapaDura(_lpTagName, _isCosido, _isTapaDura); - } - // Fresado TB y Cosido TB - else if (tipoImpresion === 2 || tipoImpresion === 4) { - portadaTapaBlanda(_lpTagName, _isCosido, _isTapaDura); - } - // Espiral TD y TB, Wire-o TD y TB - else if (tipoImpresion === 5 || tipoImpresion === 6 || - tipoImpresion === 7 || tipoImpresion === 8) { - portadaEspiral(_lpTagName, _isCosido, _isTapaDura); - } - else if (tipoImpresion === 21) { - portadaGrapado(_lpTagName, _isCosido, _isTapaDura); - } - else { - // ? - } - -} - -function portadaTapaDura(lpTagName, isCosido, isTapaDura) { - - // Variables locales - let altoLibro, anchoLibro, lomoLibro, anchoCubierta, altoSangrado, anchoSangrado; - let styleCotas = {size: 12, family: 'Public Sans'}; - let sangradoTexto = "Sangrado 20 mm"; - let sangradoValor = parseFloat(20); // mm - let anchoPliegue = parseFloat(7); // mm - let altoPliegue = parseFloat(7); // mm - let anchoCarton = parseFloat(7); // mm - - // Get the preview Object parameters - getObjetoLP(lpTagName, isCosido, isTapaDura); - - // Definicion de los parametros del Esquema de Cubierta (EC) - - anchoSangrado = 600; // px - altoSangrado = (anchoSangrado * 0.647 > 350) ? anchoSangrado * 0.647 : 350; // px - altoLibro = altoSangrado * 0.88; - anchoLibro = anchoSangrado * 0.39; - lomoLibro = anchoSangrado * 0.133; - anchoCubierta = (2 * anchoLibro) + lomoLibro; - - // Clear the canvas element - $('#pv_ec_shape').empty(); - // Get the element for placing the graphical elements - var divEC = document.getElementById('pv_ec_shape'); - var previewEC = new Two({fitted: true}).appendTo(divEC); - // Calculate the center of the canvas element - var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); - - var sangrado = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - anchoSangrado, - altoSangrado - ); - sangrado.stroke = 'black'; - sangrado.dashes = [5, 5]; - sangrado.fill = '#FCEAF1'; - sangrado.linewidth = 1; - - var libro = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - ((2 * anchoLibro) + lomoLibro), - altoLibro); - libro.stroke = 'black'; - libro.linewidth = 1; - - var lomo = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - lomoLibro, - altoLibro); - lomo.stroke = 'black'; - lomo.fill = '#F4F8F2'; - lomo.linewidth = 1; - - // Cotas - var cotaAnchoCubierta = previewEC.makeDobleArrow( - origenEC.x - (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - origenEC.x + (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - 10); - cotaAnchoCubierta.linewidth = 2; - var cotaAltoCubierta = previewEC.makeDobleArrow( - origenEC.x + (anchoCubierta / 2) + 35, - origenEC.y + (altoSangrado / 2), - origenEC.x + (anchoCubierta / 2) + 35, - origenEC.y - (altoSangrado / 2), - 10); - cotaAltoCubierta.linewidth = 2; - var cotaAltoLibro = previewEC.makeDobleArrow( - origenEC.x + (lomoLibro / 2) + 35, - origenEC.y + (altoLibro / 2), - origenEC.x + (lomoLibro / 2) + 35, - origenEC.y - (altoLibro / 2), - 10); - cotaAltoLibro.linewidth = 2; - var cotaLomo = previewEC.makeDobleArrow( - origenEC.x - (lomoLibro / 2), - origenEC.y + (altoLibro / 3), - origenEC.x + (lomoLibro / 2), - origenEC.y + (altoLibro / 3), - 10); - cotaLomo.linewidth = 2; - var cotaContraportada = previewEC.makeDobleArrow( - origenEC.x - (lomoLibro / 2 + anchoLibro), - origenEC.y - (altoLibro / 3), - origenEC.x - (lomoLibro / 2), - origenEC.y - (altoLibro / 3), - 10); - cotaContraportada.linewidth = 2; - var cotaPortada = previewEC.makeDobleArrow( - origenEC.x + (lomoLibro / 2), - origenEC.y - (altoLibro / 3), - origenEC.x + (lomoLibro / 2 + anchoLibro), - origenEC.y - (altoLibro / 3), - 10); - cotaPortada.linewidth = 2; - - - // Textos: - // Titulos generales - let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; - previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); - previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); - previewEC.makeText("Lomo", origenEC.x, origenEC.y, stylesEC).rotation = -Math.PI / 2; - // Sangrados - let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; - previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 13), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 13), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + 13), origenEC.y, styleSangrado).rotation = -Math.PI / 2; - previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + 13), origenEC.y, styleSangrado).rotation = -Math.PI / 2; - // Cotas - previewEC.makeText(pvObj.lomoLibro + anchoCarton + " mm", origenEC.x, origenEC.y + (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoLibro + anchoPliegue + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoLibro + anchoPliegue + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.altoLibro + altoPliegue + " mm", origenEC.x + (lomoLibro / 2) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; - previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + altoPliegue + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; - previewEC.makeText((2 * pvObj.anchoLibro) + pvObj.lomoLibro + (2 * sangradoValor) + +(2 * anchoPliegue) + anchoCarton + " mm", - origenEC.x, - origenEC.y + (altoLibro / 2) + 50, - styleCotas); - - previewEC.update(); - -} - -function portadaTapaBlanda(lpTagName, isCosido, isTapaDura) { - - // Variables locales - let altoLibro, anchoLibro, lomoLibro, anchoSolapa, anchoCubierta, altoSangrado, anchoSangrado; - let styleCotas = {size: 12, family: 'Public Sans'}; - let sangradoTexto = "Sangrado 5 mm"; - let sangradoValor = parseFloat(5); // mm - - // Get the preview Object parameters - getObjetoLP(lpTagName, isCosido, isTapaDura); - - // Definicion de los parametros del Esquema de Cubierta (EC) - if (pvObj.anchoSolapa == 0) { - anchoSangrado = 600; // px - altoSangrado = (anchoSangrado * 0.647 > 350) ? anchoSangrado * 0.647 : 350; // px - altoLibro = altoSangrado * 0.97; - anchoLibro = anchoSangrado * 0.419; - anchoSolapa = 0; - lomoLibro = anchoSangrado * 0.133; - anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; - - } else { - anchoSangrado = 600; // px - altoSangrado = (anchoSangrado * 0.418 > 350) ? anchoSangrado * 0.418 : 350; // px - altoLibro = altoSangrado * 0.95; - anchoLibro = anchoSangrado * 0.28; - anchoSolapa = anchoSangrado * 0.163; - lomoLibro = anchoSangrado * 0.09; - anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; - } - - // Clear the canvas element - $('#pv_ec_shape').empty(); - // Get the element for placing the graphical elements - var divEC = document.getElementById('pv_ec_shape'); - var previewEC = new Two({fitted: true}).appendTo(divEC); - // Calculate the center of the canvas element - var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); - - var sangrado = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - anchoSangrado, - altoSangrado - ); - sangrado.stroke = 'black'; - sangrado.dashes = [5, 5]; - sangrado.fill = '#FCEAF1'; - sangrado.linewidth = 1; - - if (pvObj.anchoSolapa != 0) { - var solapas = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - anchoCubierta, - altoLibro); - solapas.stroke = 'black'; - solapas.linewidth = 1; - - // Cotas Solapas - var cotaSolapa2 = previewEC.makeDobleArrow( - origenEC.x - anchoCubierta / 2, - origenEC.y - (altoLibro / 3), - origenEC.x - anchoLibro - lomoLibro / 2, - origenEC.y - (altoLibro / 3), - 10); - cotaSolapa2.linewidth = 2; - var cotaSolapa1 = previewEC.makeDobleArrow( - origenEC.x + anchoCubierta / 2, - origenEC.y - (altoLibro / 3), - origenEC.x + anchoLibro + lomoLibro / 2, - origenEC.y - (altoLibro / 3), - 10); - cotaSolapa1.linewidth = 2; - - // Textos Solapas - let stylesSolapa = {size: 18, family: 'Public Sans'}; - previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); - previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); - // Textos Cotas Solapas - previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); - - } - - var libro = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - ((2 * anchoLibro) + lomoLibro), - altoLibro); - libro.stroke = 'black'; - libro.linewidth = 1; - - var lomo = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - lomoLibro, - altoLibro); - lomo.stroke = 'black'; - lomo.fill = '#F4F8F2'; - lomo.linewidth = 1; - - // Cotas - var cotaAnchoCubierta = previewEC.makeDobleArrow( - origenEC.x - (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - origenEC.x + (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - 10); - cotaAnchoCubierta.linewidth = 2; - var cotaAltoCubierta = previewEC.makeDobleArrow( - origenEC.x + (anchoCubierta / 2) + 35, - origenEC.y + (altoSangrado / 2), - origenEC.x + (anchoCubierta / 2) + 35, - origenEC.y - (altoSangrado / 2), - 10); - cotaAltoCubierta.linewidth = 2; - var cotaAltoLibro = previewEC.makeDobleArrow( - origenEC.x + (lomoLibro / 2) + 35, - origenEC.y + (altoLibro / 2), - origenEC.x + (lomoLibro / 2) + 35, - origenEC.y - (altoLibro / 2), - 10); - cotaAltoLibro.linewidth = 2; - var cotaLomo = previewEC.makeDobleArrow( - origenEC.x - (lomoLibro / 2), - origenEC.y + (altoLibro / 3), - origenEC.x + (lomoLibro / 2), - origenEC.y + (altoLibro / 3), - 10); - cotaLomo.linewidth = 2; - var cotaContraportada = previewEC.makeDobleArrow( - origenEC.x - (lomoLibro / 2 + anchoLibro), - origenEC.y - (altoLibro / 3), - origenEC.x - (lomoLibro / 2), - origenEC.y - (altoLibro / 3), - 10); - cotaContraportada.linewidth = 2; - var cotaPortada = previewEC.makeDobleArrow( - origenEC.x + (lomoLibro / 2), - origenEC.y - (altoLibro / 3), - origenEC.x + (lomoLibro / 2 + anchoLibro), - origenEC.y - (altoLibro / 3), - 10); - cotaPortada.linewidth = 2; - - - // Textos: - // Titulos generales - let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; - previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); - previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); - let a = previewEC.makeText("Lomo", origenEC.x, origenEC.y, stylesEC).rotation = -Math.PI / 2; - // Sangrados - let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; - previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 20), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 20), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; - previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; - // Cotas - previewEC.makeText(pvObj.lomoLibro + " mm", origenEC.x, origenEC.y + (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (lomoLibro / 2) + 25, origenEC.y, styleCotas).rotation = -Math.PI / 2; - previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; - previewEC.makeText((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", - origenEC.x, - origenEC.y + (altoLibro / 2) + 50, - styleCotas); - - previewEC.update(); - -} - -function portadaEspiral(lpTagName, isCosido, isTapaDura) { - - // Variables locales - let altoLibro, anchoLibro, anchoCalle, anchoCubierta, altoSangrado, anchoSangrado, anchoSolapa, offsetCubierta; - let styleCotas = {size: 12, family: 'Public Sans'}; - let sangradoTexto = (isTapaDura) ? "Sangrado 20 mm" : "Sangrado 5 mm"; - let sangradoValor = (isTapaDura) ? parseFloat(20) : parseFloat(5); // mm - - // Get the preview Object parameters - getObjetoLP(lpTagName, isCosido, isTapaDura); - - // Definicion de los parametros del Esquema de Cubierta (EC) - anchoSangrado = 600; // px - - if((pvObj.anchoSolapa !== 0) && (isTapaDura === 0)){ - altoSangrado = (anchoSangrado * 0.418 > 350) ? anchoSangrado * 0.418 : 350; // px - altoLibro = altoSangrado * 0.95; - anchoLibro = anchoSangrado * 0.28; - anchoCalle = anchoSangrado * 0.02; - anchoSolapa = anchoSangrado * 0.163; - sangrado = anchoSangrado * 0.03; - anchoCubierta = 2 * (anchoLibro + anchoSolapa+ sangrado) + anchoCalle; - offsetCubierta = anchoLibro/2 + anchoCalle/2 + anchoSolapa/2 + sangrado; - } - else { - altoSangrado = (anchoSangrado * 0.647 > 350) ? anchoSangrado * 0.647 : 350; // px - altoLibro = (isTapaDura) ? altoSangrado * 0.88 : altoSangrado * 0.97; - anchoLibro = (isTapaDura) ? anchoSangrado * 0.39 : anchoSangrado * 0.419; - anchoCalle = anchoSangrado * 0.02; - anchoSolapa = 0; - anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + anchoCalle; - offsetCubierta = anchoLibro/2 + anchoCalle/2 + anchoSolapa + sangradoValor; - } - - // Clear the canvas element - $('#pv_ec_shape').empty(); - // Get the element for placing the graphical elements - var divEC = document.getElementById('pv_ec_shape'); - var previewEC = new Two({fitted: true}).appendTo(divEC); - // Calculate the center of the canvas element - var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); - - var sangrado = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - anchoSangrado, - altoSangrado - ); - sangrado.stroke = 'black'; - sangrado.dashes = [5, 5]; - sangrado.fill = '#FCEAF1'; - sangrado.linewidth = 1; - - if (pvObj.anchoSolapa != 0) { - var solapa1 = previewEC.makeRectangle( - origenEC.x + (anchoLibro + anchoCalle/2 + anchoSolapa/2 + sangradoValor), - origenEC.y, - anchoSolapa, - altoLibro); - solapa1.stroke = 'black'; - solapa1.linewidth = 1; - - var solapa2 = previewEC.makeRectangle( - origenEC.x - (anchoLibro + anchoCalle/2 + anchoSolapa/2 + sangradoValor), - origenEC.y, - anchoSolapa, - altoLibro); - solapa2.stroke = 'black'; - solapa2.linewidth = 1; - - // Cotas Solapas - var cotaSolapa2 = previewEC.makeDobleArrow( - origenEC.x - (anchoCalle/2 + sangradoValor + anchoLibro + anchoSolapa), - origenEC.y - (altoLibro / 3), - origenEC.x - (anchoLibro + sangradoValor + anchoCalle / 2), - origenEC.y - (altoLibro / 3), - 10); - cotaSolapa2.linewidth = 2; - var cotaSolapa1 = previewEC.makeDobleArrow( - origenEC.x + (anchoCalle/2 + sangradoValor + anchoLibro + anchoSolapa), - origenEC.y - (altoLibro / 3), - origenEC.x + (anchoLibro + sangradoValor + anchoCalle / 2), - origenEC.y - (altoLibro / 3), - 10); - cotaSolapa1.linewidth = 2; - - // Textos Solapas - let stylesSolapa = {size: 18, family: 'Public Sans'}; - previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (anchoCalle + anchoSolapa) / 2, origenEC.y, stylesSolapa); - previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (anchoCalle + anchoSolapa) / 2, origenEC.y, stylesSolapa); - // Textos Cotas Solapas - previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (anchoCalle + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (anchoCalle + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); - - } - - var portada = previewEC.makeRectangle( - origenEC.x + (anchoLibro/2 + anchoCalle/2 + sangradoValor), - origenEC.y, - anchoLibro, - altoLibro); - portada.stroke = 'black'; - portada.linewidth = 1; - - var contraportada = previewEC.makeRectangle( - origenEC.x - (anchoLibro/2 + anchoCalle/2 + sangradoValor), - origenEC.y, - anchoLibro, - altoLibro); - contraportada.stroke = 'black'; - contraportada.linewidth = 1; - - var calle = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - anchoCalle, - altoSangrado); - calle.stroke = 'black'; - calle.dashes = [2, 5]; - calle.fill = '#F4F8F2'; - calle.linewidth = 1; - - // Cotas - var cotaAnchoCubierta = previewEC.makeDobleArrow( - origenEC.x - (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - origenEC.x + (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - 10); - cotaAnchoCubierta.linewidth = 2; - var cotaAltoCubierta = previewEC.makeDobleArrow( - origenEC.x + (anchoSangrado / 2) + 15, - origenEC.y + (altoSangrado / 2), - origenEC.x + (anchoSangrado / 2) + 15, - origenEC.y - (altoSangrado / 2), - 10); - cotaAltoCubierta.linewidth = 2; - var cotaAltoLibro = previewEC.makeDobleArrow( - origenEC.x + (anchoCalle / 2) + 35, - origenEC.y + (altoLibro / 2), - origenEC.x + (anchoCalle / 2) + 35, - origenEC.y - (altoLibro / 2), - 10); - cotaAltoLibro.linewidth = 2; - var cotaContraportada = previewEC.makeDobleArrow( - origenEC.x - (anchoCalle / 2 + anchoLibro + sangradoValor), - origenEC.y - (altoLibro / 3), - origenEC.x - ((anchoCalle / 2) + sangradoValor), - origenEC.y - (altoLibro / 3), - 10); - cotaContraportada.linewidth = 2; - var cotaPortada = previewEC.makeDobleArrow( - origenEC.x + ((anchoCalle / 2) + sangradoValor), - origenEC.y - (altoLibro / 3), - origenEC.x + (anchoCalle / 2 + anchoLibro + sangradoValor), - origenEC.y - (altoLibro / 3), - 10); - cotaPortada.linewidth = 2; - - - // Textos: - // Titulos generales - let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; - previewEC.makeText("Portada", - origenEC.x + anchoLibro/2 + anchoCalle/2 + sangradoValor + 15, - origenEC.y, - stylesEC - ); - previewEC.makeText("Contraportada", - origenEC.x - (anchoLibro/2 + anchoCalle/2 + sangradoValor), - origenEC.y, - stylesEC - ); - // Sangrados - let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; - previewEC.makeText(sangradoTexto, origenEC.x + offsetCubierta, origenEC.y + (altoLibro / 2 + 13), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x + offsetCubierta, origenEC.y - (altoLibro / 2 + 13), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x - offsetCubierta, origenEC.y + (altoLibro / 2 + 13), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x - offsetCubierta, origenEC.y - (altoLibro / 2 + 13), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x + (anchoSangrado / 2) - 20, origenEC.y, styleSangrado).rotation = -Math.PI / 2; - previewEC.makeText(sangradoTexto, origenEC.x - (anchoSangrado / 2) + 20, origenEC.y, styleSangrado).rotation = -Math.PI / 2; - // Cotas - previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (offsetCubierta - anchoSolapa/2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (offsetCubierta - anchoSolapa/2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (anchoCalle / 2) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; - previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", - origenEC.x + (anchoSangrado / 2) + 30, - origenEC.y, - styleCotas - ).rotation = -Math.PI / 2; - previewEC.makeText((2 * pvObj.anchoLibro) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", - origenEC.x, - origenEC.y + (altoLibro / 2) + 50, - styleCotas); - - previewEC.update(); - -} - -function portadaGrapado(lpTagName, isCosido, isTapaDura) { - - // Variables locales - let altoLibro, anchoLibro, lomoLibro, anchoSolapa, anchoCubierta, altoSangrado, anchoSangrado; - let styleCotas = {size: 12, family: 'Public Sans'}; - let sangradoTexto = "Sangrado 5 mm"; - let sangradoValor = parseFloat(5); // mm - - // Get the preview Object parameters - getObjetoLP(lpTagName, isCosido, isTapaDura); - - // Definicion de los parametros del Esquema de Cubierta (EC) - if (pvObj.anchoSolapa == 0) { - anchoSangrado = 600; // px - altoSangrado = (anchoSangrado * 0.647 > 350) ? anchoSangrado * 0.647 : 350; // px - altoLibro = altoSangrado * 0.97; - anchoLibro = anchoSangrado * 0.48; - anchoSolapa = 0; - lomoLibro = 0; // ESTA ES LA DIFERENCIA PARA GRAPADO - anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; - - } else { - anchoSangrado = 600; // px - altoSangrado = (anchoSangrado * 0.418 > 350) ? anchoSangrado * 0.418 : 350; // px - altoLibro = altoSangrado * 0.95; - anchoLibro = anchoSangrado * 0.3; - anchoSolapa = anchoSangrado * 0.18; - lomoLibro = 0; // ESTA ES LA DIFERENCIA PARA GRAPADO - anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; - } - - // Clear the canvas element - $('#pv_ec_shape').empty(); - // Get the element for placing the graphical elements - var divEC = document.getElementById('pv_ec_shape'); - var previewEC = new Two({fitted: true}).appendTo(divEC); - // Calculate the center of the canvas element - var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); - - var sangrado = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - anchoSangrado, - altoSangrado - ); - sangrado.stroke = 'black'; - sangrado.dashes = [5, 5]; - sangrado.fill = '#FCEAF1'; - sangrado.linewidth = 1; - - if (pvObj.anchoSolapa != 0) { - var solapas = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - anchoCubierta, - altoLibro); - solapas.stroke = 'black'; - solapas.linewidth = 1; - - // Cotas Solapas - var cotaSolapa2 = previewEC.makeDobleArrow( - origenEC.x - anchoCubierta / 2, - origenEC.y - (altoLibro / 3), - origenEC.x - anchoLibro - lomoLibro / 2, - origenEC.y - (altoLibro / 3), - 10); - cotaSolapa2.linewidth = 2; - var cotaSolapa1 = previewEC.makeDobleArrow( - origenEC.x + anchoCubierta / 2, - origenEC.y - (altoLibro / 3), - origenEC.x + anchoLibro + lomoLibro / 2, - origenEC.y - (altoLibro / 3), - 10); - cotaSolapa1.linewidth = 2; - - // Textos Solapas - let stylesSolapa = {size: 18, family: 'Public Sans'}; - previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); - previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); - // Textos Cotas Solapas - previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); - - } - - var libro = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - ((2 * anchoLibro) + lomoLibro), - altoLibro); - libro.stroke = 'black'; - libro.linewidth = 1; - - var lomo = previewEC.makeRectangle( - origenEC.x, - origenEC.y, - lomoLibro, - altoLibro); - lomo.stroke = 'black'; - lomo.fill = '#F4F8F2'; - lomo.linewidth = 1; - - // Cotas - var cotaAnchoCubierta = previewEC.makeDobleArrow( - origenEC.x - (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - origenEC.x + (anchoSangrado / 2), - origenEC.y + (altoLibro / 2) + 35, - 10); - cotaAnchoCubierta.linewidth = 2; - var cotaAltoCubierta = previewEC.makeDobleArrow( - origenEC.x + (anchoCubierta / 2) + 35, - origenEC.y + (altoSangrado / 2), - origenEC.x + (anchoCubierta / 2) + 35, - origenEC.y - (altoSangrado / 2), - 10); - cotaAltoCubierta.linewidth = 2; - var cotaAltoLibro = previewEC.makeDobleArrow( - origenEC.x + (lomoLibro / 2) + 35, - origenEC.y + (altoLibro / 2), - origenEC.x + (lomoLibro / 2) + 35, - origenEC.y - (altoLibro / 2), - 10); - cotaAltoLibro.linewidth = 2; - var cotaContraportada = previewEC.makeDobleArrow( - origenEC.x - (lomoLibro / 2 + anchoLibro), - origenEC.y - (altoLibro / 3), - origenEC.x - (lomoLibro / 2), - origenEC.y - (altoLibro / 3), - 10); - cotaContraportada.linewidth = 2; - var cotaPortada = previewEC.makeDobleArrow( - origenEC.x + (lomoLibro / 2), - origenEC.y - (altoLibro / 3), - origenEC.x + (lomoLibro / 2 + anchoLibro), - origenEC.y - (altoLibro / 3), - 10); - cotaPortada.linewidth = 2; - - - // Textos: - // Titulos generales - let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; - previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); - previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); - // Sangrados - let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; - previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 20), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 20), styleSangrado); - previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; - previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; - // Cotas - previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); - previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (lomoLibro / 2) + 25, origenEC.y, styleCotas).rotation = -Math.PI / 2; - previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; - previewEC.makeText((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", - origenEC.x, - origenEC.y + (altoLibro / 2) + 50, - styleCotas); - - previewEC.update(); - -} - -function getLomoLibro() { - const anchoLomoInputs = $("#tableLineasPresupuesto tbody tr:visible td input[id*='_lomo']"); - const anchoLomo = Array.from(anchoLomoInputs).reduce((sum, input) => sum + parseFloat($(input).val()), 0); - - return parseFloat(anchoLomo.toFixed(2)); -} - - -function getObjetoLP(lpName, _isCosido, _isTapaDura) { - - let rowData = null; - - $('#tableLineasPresupuesto').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { - - let lineaPresupuestoId = this.data().row_id.replace('lp_', ''); - - switch (lpName) { - case 'bn': - case 'bnhq': - case 'color': - case 'colorhq': - case 'cubierta': - case 'rot_bn': - case 'rot_color': - case 'guardas': - case 'sobrecubierta': - if (lineaPresupuestoId === lpName) { - rowData = this.data(); - } - break; - case 'ec': - if (lineaPresupuestoId === 'cubierta') { - rowData = this.data(); - } - break; - default: - //console.log(lineaPresupuestoId); - break; - } - - }); - - - pvObj = { - idIndex: lpName, - tipoImpresion: parseInt($('#tipo_impresion_id').val()), - gramajeLibro: parseInt(rowData.gramaje), - manoLP: parseFloat(rowData.lomo), - lomoLibro: getLomoLibro(), - anchoSolapa: $('#solapas').is(':checked') ? parseFloat($('#solapas_ancho').val()) : parseFloat(0), - nFormas: parseInt(rowData.formas), - nFormasH: parseInt(rowData.formas_h), - nFormasV: parseInt(rowData.formas_v), - orientacionFormas: rowData.formas_orientacion, - altoMaquina: parseFloat(rowData.maquina_alto), - anchoMaquina: parseFloat(rowData.maquina_ancho), - altoImpresion: parseFloat(rowData.maquina_impresion_alto), - anchoImpresion: parseFloat(rowData.maquina_impresion_ancho), - altoLibro: getDimensionLibro().alto, - anchoLibro: getDimensionLibro().ancho, - offsetSolapa: 0 - }; - - //console.log(pvObj); - - // Printing shape definition - pvObj.anchoForma = (_isCosido) ? 2 * pvObj.anchoLibro : pvObj.anchoLibro; - pvObj.altoForma = pvObj.altoLibro; - - - // Update preview info fields - let pvName = '#pv_' + lpName; - $(pvName + '_pg').attr("href", $(pvName + '_pg').attr('sk-url') + rowData.papel); - $(pvName + '_pi').attr("href", $(pvName + '_pi').attr('sk-url') + rowData.papel_impresion_id); - $(pvName + '_mi').attr("href", $(pvName + '_mi').attr('sk-url') + rowData.maquina_id); - - $(pvName + '_gramaje').text(pvObj.gramajeLibro); - $(pvName + '_mano').text(pvObj.manoLP); - $(pvName + '_solapas').text(pvObj.anchoSolapa); - $(pvName + '_maquina').text(pvObj.anchoMaquina + "x" + pvObj.altoMaquina); - $(pvName + '_maquina_impresion').text(pvObj.anchoImpresion + "x" + pvObj.altoImpresion); - $(pvName + '_libro').text(pvObj.anchoLibro + "x" + pvObj.altoLibro); - $(pvName + '_forma').text(pvObj.anchoForma + "x" + pvObj.altoForma); - $(pvName + '_nFormas').text(pvObj.nFormas); - - if (pvObj.anchoSolapa != 0) { - $('.pv-solapas').show(); - pvObj.offsetSolapa = parseFloat(3); // 3mm - - } - - // Custom overwrites - switch (pvObj.idIndex) { - case 'cubierta': - // Fresado TD or Cosido TD - if (pvObj.tipoImpresion === 1 || pvObj.tipoImpresion === 3) { - let anchoPliegue = parseFloat(7); // mm - let altoPliegue = parseFloat(7); // mm - let sangre = parseFloat(20); // mm - pvObj.anchoForma = ((2 * pvObj.anchoLibro) + (2 * anchoPliegue) + (2 * sangre) + pvObj.lomoLibro); - pvObj.altoForma += altoPliegue + (2 * sangre); - } - // Fresado TB y Cosido TB - else if (pvObj.tipoImpresion === 2 || pvObj.tipoImpresion === 4) { - let sangre = parseFloat(5); // mm - pvObj.anchoForma = ((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + (2 * sangre) + pvObj.lomoLibro); - pvObj.altoForma += (2 * sangre); - } - // Grapado - else if (pvObj.tipoImpresion === 21) { - let sangre = parseFloat(5); // mm - pvObj.anchoForma = ((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + (2 * sangre)); - pvObj.altoForma += (2 * sangre); - } - // Espiral TD y TB, Wire-o TD y TB - else if (pvObj.tipoImpresion === 5 || pvObj.tipoImpresion === 6 || - pvObj.tipoImpresion === 7 || pvObj.tipoImpresion === 8) { - let sangre = parseFloat(20); // mm - pvObj.anchoForma = pvObj.anchoLibro; - } else { - // ? - } - - // Update labels - $(pvName + '_forma').text(pvObj.anchoForma + "x" + pvObj.altoForma); - break; - - case 'sobrecubierta': - sangre = parseFloat(5); // mm - let anchoSolapaSobrecubierta = $('#solapas_sobrecubierta').is(':checked') ? parseFloat($('#solapas_ancho_sobrecubierta').val()) : parseFloat(0); // mm - if (_isTapaDura) { - let anchoPliegue = parseFloat(7); // mm - let altoPliegue = parseFloat(7); // mm - pvObj.anchoForma = ((2 * pvObj.anchoLibro) + (2 * anchoPliegue) + (2 * (anchoSolapaSobrecubierta + pvObj.offsetSolapa)) + (2 * sangre) + pvObj.lomoLibro); - pvObj.altoForma += altoPliegue + (2 * sangre); - } else { - pvObj.anchoForma = ((2 * pvObj.anchoLibro) + (2 * (anchoSolapaSobrecubierta + pvObj.offsetSolapa)) + (2 * sangre) + pvObj.lomoLibro); - pvObj.altoForma += (2 * sangre); - } - - // Update labels - $(pvName + '_solapas').text(anchoSolapaSobrecubierta); - anchoSolapaSobrecubierta != 0 ? $('.pv-solapas').show() : $('.pv-solapas').hide(); - $(pvName + '_forma').text(pvObj.anchoForma + "x" + pvObj.altoForma); - break; - case 'ec': - $(pvName + '_pg').attr("href", $(pvName + '_pg').attr('sk-url') + rowData.papel); - $(pvName + '_pi').attr("href", $(pvName + '_pi').attr('sk-url') + rowData.papel_impresion_id); - $(pvName + '_mi').attr("href", $(pvName + '_mi').attr('sk-url') + rowData.maquina_id); - $('#pv_ec_lomo').text(pvObj.lomoLibro); - break; - - case 'rot_bn': - case 'rot_color': - // Conditional assignements depending on rotation of the printing shape - if (pvObj.orientacionFormas == 'v') { - let auxReg = pvObj.altoForma; - pvObj.altoForma = pvObj.anchoForma; - pvObj.anchoForma = auxReg; - } - $(pvName + '_forma').text(pvObj.anchoForma + "x" + pvObj.altoForma); - pvObj.altoClick = isNaN(parseFloat(rowData.alto_click)) ? 305 : parseFloat(rowData.alto_click); - pvObj.nFormasH = Math.trunc(pvObj.anchoImpresion / pvObj.anchoForma); - pvObj.nFormasV = Math.trunc((pvObj.altoImpresion - 3) / (pvObj.altoForma + 4)); - break; - - case 'bn': - case 'bnhq': - case 'color': - case 'colorhq': - // Conditional assignements depending on rotation of the printing shape - if (pvObj.orientacionFormas == 'v') { - let auxReg = pvObj.altoForma; - pvObj.altoForma = pvObj.anchoForma; - pvObj.anchoForma = auxReg; - } - $(pvName + '_forma').text(pvObj.anchoForma + "x" + pvObj.altoForma); - break; - case 'guardas': - // Fresado TD y Cosido TD - if (pvObj.tipoImpresion === 1 || pvObj.tipoImpresion === 3) { - pvObj.anchoForma = 2 * pvObj.anchoLibro; - } - // Fresado TB y Cosido TB - else if (pvObj.tipoImpresion === 2 || pvObj.tipoImpresion === 4) { - pvObj.anchoForma = pvObj.anchoLibro; - } - // Espiral TD y TB, Wire-o TD y TB - else if (pvObj.tipoImpresion === 5 || pvObj.tipoImpresion === 6 || - pvObj.tipoImpresion === 7 || pvObj.tipoImpresion === 8) { - pvObj.anchoForma = pvObj.anchoLibro; - } else { - // ? - } - - // Conditional assignements depending on rotation of the printing shape - if (pvObj.orientacionFormas == 'v') { - let auxReg = pvObj.altoForma; - pvObj.altoForma = pvObj.anchoForma; - pvObj.anchoForma = auxReg; - } - $(pvName + '_forma').text(pvObj.anchoForma + "x" + pvObj.altoForma); - break; - - default: - break; - } -} - - -function getVisibleTabs() { - const table = $('#tableLineasPresupuesto').DataTable(); - - // Clear all existing tabs - $('*[id*=tab-pv-]').hide().find('.active').removeClass('active'); - $('*[id*=pv_]').removeClass('active show'); - - // Enable active tabs - table.rows().every(function () { - const lpName = this.data().row_id.replace('lp_', ''); - const tabName = lpName.replace('_', '-'); - - if (['bn', 'bnhq', 'color', 'colorhq', 'rot_bn', 'rot_color', 'guardas', 'cubierta', 'sobrecubierta'].includes(lpName)) { - $(`#tab-pv-${tabName}`).show(); - if (lpName === 'cubierta') { - $(`#tab-pv-${tabName}`).show(); - $(`#tab-pv-esquema-${tabName}`).show(); - } - } - }); -} \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/viewPresupuestoadminForm.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/viewPresupuestoadminForm.php index 9dfc18c8..5d95c2f2 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/viewPresupuestoadminForm.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/viewPresupuestoadminForm.php @@ -6,25 +6,31 @@ section("content") ?> -
+

+ + + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - - - + + + + + + + @@ -35,8 +41,12 @@ $presupuestoId,"type" => "presupuesto"]) ?> + estado_id == 2) : ?> + 'dropzone-presupuesto-admin-files','modelId' => $presupuestoId]) ?> + + @@ -168,155 +178,14 @@ } } }); - - $('#clienteId').select2({ - allowClear: false, - ajax: { - url: '', - type: 'post', - dataType: 'json', - - data: function(params) { - return { - id: 'id', - text: 'nombre', - searchTerm: params.term, - : v - }; - }, - delay: 60, - processResults: function(response) { - yeniden(response.); - return { - results: response.menu - }; - }, - cache: true - } - }); - - /******************************* - * Inicialización de los Select2 - *******************************/ - $('#incRei').select2({ - allowClear: false, - }); - - $('#paisId').select2({ - allowClear: false, - }); + endSection() ?> - - - -section("additionalInlineJs") ?> -$(window).on('load', function() { - // Detectar cambios en inputs de texto - $('input[type="text"]').on('input', function() { - showBreadCrumbSaveButton(true); - }); - - // Detectar cambios en inputs de texto - $('input[type="number"]').on('input', function() { - showBreadCrumbSaveButton(true); - }); - - // Detectar cambios en select - $('select').change(function() { - showBreadCrumbSaveButton(true); - }); - - // Detectar cambios en checkboxes - $('input[type="checkbox"]').change(function() { - showBreadCrumbSaveButton(true); - }); - - // Detectar cambios en textareas - $('textarea').on('input', function() { - showBreadCrumbSaveButton(true); - }); - - // Detectar cambios en otros tipos de input - $('input[type="radio"]').change(function() { - showBreadCrumbSaveButton(true); - }); - - // Detectar cambios en otros tipos de input - $('input:not([type])').on('input', function() { - showBreadCrumbSaveButton(true); - }); - -}); - -$('#bc-save').on( "click", function() { - showBreadCrumbSaveButton(false); - $('#saveForm').click() -} ); - -endSection() ?> - - - - - - section("additionalInlineJs") ?> - - var submitButtonClicked; // Variable para almacenar el botón que fue clickeado - - // funcion que genera un JSON con la tabla de tiradas alternativas - function generate_json_tiradas() { - const data = tableTiradas.rows().data().toArray(); - $('#tirada_alternativa_json_data').val(JSON.stringify(data)); - } - - $('#saveForm').on("click", function(event) { - - event.preventDefault(); - save_servicios(); - save_datos_envios(); - - var presupuesto_id = $('#presupuesto_id').val() - - $.when(fill_bbdd_from_lp(presupuesto_id).then(function(data, textStatus, jqXHR) { - generateCompJSON() - generate_json_tiradas() - form = $('#presupuestoForm').serialize() - form += getValuesResumenForm() - - $.ajax({ - type: "POST", - url: "", - data: form, - success: function (data) { - yeniden(data.) - if('errorMensaje' in data) - popErrorAlert(data.errorMensaje) - else{ - showBreadCrumbSaveButton(false) - popSuccessAlert(data.mensaje) - if($('#confirmar_presupuesto').prop('checked')) { - $('#estado_id').val(2) - } - } - - } - }).fail(function (jqXHR, textStatus, error) { - // Handle error here - console.log(jqXHR) - });; - })) - - return false; //stop the actual form post !important! - }); - - endSection() ?> - @@ -350,17 +219,6 @@ $('#bc-save').on( "click", function() { endSection() ?> - - - - - section("additionalInlineJs") ?> - - window.token_ajax= {: v}; - window.csrf_token = ''; - - endSection() ?> - @@ -370,6 +228,9 @@ $('#bc-save').on( "click", function() { "> + + + endSection() ?> section('additionalExternalJs') ?> @@ -379,19 +240,16 @@ $('#bc-save').on( "click", function() { + - - - - - - - - - - + + + + + + endSection() ?> diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php index 705495f1..34e3a455 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php @@ -173,19 +173,10 @@
- -
- " - alt="Retractilado"> - -
-
@@ -238,6 +229,7 @@
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php index 25751b64..1e183862 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php @@ -196,11 +196,15 @@ - + - + \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php index cdd7b7de..7a23896f 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php @@ -29,6 +29,7 @@ +
diff --git a/ci4/app/Views/themes/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php b/ci4/app/Views/themes/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php index cb6651ef..4e42b95a 100644 --- a/ci4/app/Views/themes/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php +++ b/ci4/app/Views/themes/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php @@ -2,37 +2,36 @@ include("themes/_commonPartialsBs/select2bs5") ?> include("themes/_commonPartialsBs/sweetalert") ?> include('themes/_commonPartialsBs/_confirm2delete') ?> -extend('themes/vuexy/main/defaultlayout') ?> +extend('themes/vuexy/main/defaultlayout') ?> section("content") ?>
-
-
-

-
- - +
+
+

+
+ + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> -
- " - /> - "btn btn-secondary float-start"]) ?> -
- -
+
+ " /> + "btn btn-secondary float-start"]) ?> +
+ +
- - -endSection() ?> + endSection() ?> -section("additionalExternalJs") ?> - -endSection() ?> + section("additionalExternalJs") ?> + + endSection() ?> -section("additionalInlineJs") ?> - const lastColNr = $('#tableOfTarifasacabado').find("tr:first th").length - 1; - const url = window.location.href; - const url_parts = url.split('/'); - let id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ + section("additionalInlineJs") ?> + const lastColNr = $('#tableOfTarifasacabado').find("tr:first th").length - 1; + const url = window.location.href; + const url_parts = url.split('/'); + let id = -1; + if(url_parts[url_parts.length-2] == 'edit'){ id = url_parts[url_parts.length-1]; - } + } - const actionBtns = function(data) { + const actionBtns = function(data) { return ` - - - - `; - }; + + + + `; + }; - var editor = new $.fn.dataTable.Editor( { + var editor = new $.fn.dataTable.Editor( { ajax: { - url: "", - headers: { - : v, - }, + url: "", + headers: { + : v, + }, + }, + table : "#tableOfTarifaacabadolineas", + idSrc: 'id', + fields: [ + { + name: "proveedor_id", + type: "select", + }, { + name: "tirada_min" + }, { + name: "precio_max" + }, { + name: "tirada_max" + }, { + name: "precio_min" + },{ + name: "margen" + }, { + "name": "tarifa_acabado_id", + "type": "hidden" + },{ + name: "proveedor_nombre", + "type": "hidden" + },{ + "name": "deleted_at", + "type": "hidden" + },{ + "name": "is_deleted", + "type": "hidden" }, - table : "#tableOfTarifaacabadolineas", - idSrc: 'id', - fields: [ - { - name: "proveedor_id", - type: "select", - }, { - name: "tirada_min" - }, { - name: "precio_max" - }, { - name: "tirada_max" - }, { - name: "precio_min" - },{ - name: "margen" - }, { - "name": "tarifa_acabado_id", - "type": "hidden" - },{ - name: "proveedor_nombre", - "type": "hidden" - },{ - "name": "deleted_at", - "type": "hidden" - },{ - "name": "is_deleted", - "type": "hidden" - }, ] - } ); + } ); - // Generación de la lista de proveedores (id, nombre) para encuadernación - const suppliersList = ; - editor.field( 'proveedor_id' ).update( suppliersList ); + // Generación de la lista de proveedores (id, nombre) para encuadernación + const suppliersList = ; + editor.field( 'proveedor_id' ).update( suppliersList ); - editor.on( 'preSubmit', function ( e, d, type ) { + editor.on( 'preSubmit', function ( e, d, type ) { if ( type === 'create'){ - d.data[0]['tarifa_acabado_id'] = id; + d.data[0]['tarifa_acabado_id'] = id; } else if(type === 'edit' ) { - for (v in d.data){ - d.data[v]['tarifa_acabado_id'] = id; - } + for (v in d.data){ + d.data[v]['tarifa_acabado_id'] = id; } - }); - - - editor.on( 'postSubmit', function ( e, json, data, action ) { - - yeniden(json.); - }); + } + }); + + + editor.on( 'postSubmit', function ( e, json, data, action ) { + + yeniden(json.); + }); + + editor.on( 'submitSuccess', function ( e, json, data, action ) { - editor.on( 'submitSuccess', function ( e, json, data, action ) { - theTable.clearPipeline(); theTable.draw(); - }); + }); - function searchProviders(){ + function searchProviders(){ var values = []; $('#select_Proveedor').find(':selected').each(function () { - values.push($(this).val()); + values.push($(this).val()); }); theTable.column(0).search(values).draw(); - } - + } - // Setup - add a text input to each footer cell - $('#tableOfTarifaacabadolineas thead tr').clone(true).appendTo('#tableOfTarifaacabadolineas thead'); - $('#tableOfTarifaacabadolineas thead tr:eq(1) th').each(function (i) { + + // Setup - add a text input to each footer cell + $('#tableOfTarifaacabadolineas thead tr').clone(true).appendTo('#tableOfTarifaacabadolineas thead'); + $('#tableOfTarifaacabadolineas thead tr:eq(1) th').each(function (i) { if (!$(this).hasClass("noFilter")) { - var title = $(this).text(); - title = title.replace(/ /g, "_").replace(/\./g, "_"); + var title = $(this).text(); + title = title.replace(/ /g, "_").replace(/\./g, "_"); - if(i==0){ + if(i==0){ - // Agregar un selector en la primera columna - $(this).html(``); + // Agregar un selector en la primera columna + $(this).html(``); - // Agregar opciones al selector - var selector = $('select', this); - const suppliersList = ; - //selector.append(''); // Opción vacía - for (j = 0; j < suppliersList.length; j++) { - selector.append(''); - }; - - $('#select_' + title).select2({ - multiple: true, - placeholder: "" - }); + // Agregar opciones al selector + var selector = $('select', this); + const suppliersList = ; + //selector.append(''); // Opción vacía + for (j = 0; j < suppliersList.length; j++) { + selector.append(''); + }; + + $('#select_' + title).select2({ + multiple: true, + placeholder: "" + }); - selector.bind('select2:select', searchProviders); - selector.bind('select2:unselect', searchProviders); + selector.bind('select2:select', searchProviders); + selector.bind('select2:unselect', searchProviders); + + $('#select_' + title).val("").trigger('change'); - $('#select_' + title).val("").trigger('change'); - } else{ - - - $(this).html(` -
- - -
- `); - - $('input', this).on('change clear', function () { - var minInputValue = parseFloat($(`#min_${title}`).val().replace(',','.')) || ""; - var maxInputValue = parseFloat($(`#max_${title}`).val().replace(',','.')) || ""; + $(this).html(` +
+ + +
+ `); - - if (theTable.column(i).search() !== [minInputValue,maxInputValue]) { - theTable - .column(i) - .search([minInputValue,maxInputValue]) - .draw(); - } - }); + + + $('input', this).on('change clear', function () { + var minInputValue = parseFloat($(`#min_${title}`).val().replace(',','.')) || ""; + var maxInputValue = parseFloat($(`#max_${title}`).val().replace(',','.')) || ""; + + + if (theTable.column(i).search() !== [minInputValue,maxInputValue]) { + theTable + .column(i) + .search([minInputValue,maxInputValue]) + .draw(); } - } - else { + }); + } + } + else { $(this).html(''); - } - }); - - - var theTable = $('#tableOfTarifaacabadolineas').DataTable( { - orderCellsTop: true, - serverSide: true, - processing: true, - autoWidth: true, - responsive: true, - fixedHeader: true, - lengthMenu: [ 5, 10, 25], - order: [[ 0, "asc" ], [ 1, "asc" ]], - pageLength: 10, - lengthChange: true, - paging: true, - info: false, - stateSave: false, - dom: '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', - ajax : $.fn.dataTable.pipeline( { - url: '', - data: { - id_tarifaacabado: id, - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columns: [ - { 'data': 'proveedor_id', - render: function(data, type, row, meta) { - var value = suppliersList.find(element => element.value === data); - return value['label']; - }, - }, - { 'data': 'tirada_min' }, - { 'data': 'precio_max' }, - { 'data': 'tirada_max' }, - { 'data': 'precio_min' }, - { 'data': 'margen' }, - { - data: actionBtns, - className: 'row-edit dt-center' } - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr] - }, - - ], - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - - }, - buttons: [ { - className: 'btn btn-primary me-sm-3 me-1', - extend: "createInline", - editor: editor, - formOptions: { - submitTrigger: -1, - submitHtml: '' - } - } ] - } ); - - - - // Activate an inline edit on click of a table cell - $('#tableOfTarifaacabadolineas').on( 'click', 'tbody span.edit', function (e) { - editor.inline( - theTable.cells(this.parentNode.parentNode, '*').nodes(), - { - cancelHtml: '', - cancelTrigger: 'span.cancel', - submitHtml: '', - submitTrigger: 'span.edit', - submit: 'allIfChanged' - } - ); - } ); - - - // Delete row - $(document).on('click', '.btn-delete', function(e) { - $(".btn-remove").attr('data-id', $(this).attr('data-id')); - }); - - $(document).on('click', '.btn-remove', function(e) { - const dataId = $(this).attr('data-id'); - const row = $(this).closest('tr'); - if ($.isNumeric(dataId)) { - $.ajax({ - url: `/tarifas/acabados/lineas/delete/${dataId}`, - method: 'GET', - }).done((data, textStatus, jqXHR) => { - $('#confirm2delete').modal('toggle'); - theTable.clearPipeline(); - theTable.row($(row)).invalidate().draw(); - popSuccessAlert(data.msg ?? jqXHR.statusText); - }).fail((jqXHR, textStatus, errorThrown) => { - popErrorAlert(jqXHR.responseJSON.messages.error) - }) - } - }); - - -endSection() ?> - -section('css') ?> - - "> - "> -endSection() ?> + }); -section('additionalExternalJs') ?> - - - - - - - - -endSection() ?> + var theTable = $('#tableOfTarifaacabadolineas').DataTable( { + orderCellsTop: true, + serverSide: true, + processing: true, + autoWidth: true, + responsive: true, + fixedHeader: true, + lengthMenu: [ 5, 10, 25], + order: [[ 0, "asc" ], [ 1, "asc" ]], + pageLength: 10, + lengthChange: true, + paging: true, + info: false, + stateSave: false, + dom: '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', + ajax : $.fn.dataTable.pipeline( { + url: '', + data: { + id_tarifaacabado: id, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns: [ + { 'data': 'proveedor_id', + render: function(data, type, row, meta) { + var value = suppliersList.find(element => element.value === data); + return value['label']; + }, + }, + { 'data': 'tirada_min' }, + { 'data': 'precio_max' }, + { 'data': 'tirada_max' }, + { 'data': 'precio_min' }, + { 'data': 'margen' }, + { + data: actionBtns, + className: 'row-edit dt-center' + } + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr] + }, + ], + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + + }, + buttons: [ { + className: 'btn btn-primary me-sm-3 me-1', + extend: "createInline", + editor: editor, + formOptions: { + submitTrigger: -1, + submitHtml: '' + } + } ] + } ); + + + + // Activate an inline edit on click of a table cell + $('#tableOfTarifaacabadolineas').on( 'click', 'tbody span.edit', function (e) { + editor.inline( + theTable.cells(this.parentNode.parentNode, '*').nodes(), + { + cancelHtml: '', + cancelTrigger: 'span.cancel', + submitHtml: '', + submitTrigger: 'span.edit', + submit: 'allIfChanged' + } + ); + } ); + + + // Delete row + $(document).on('click', '.btn-delete', function(e) { + $(".btn-remove").attr('data-id', $(this).attr('data-id')); + }); + + $(document).on('click', '.btn-remove', function(e) { + const dataId = $(this).attr('data-id'); + const row = $(this).closest('tr'); + if ($.isNumeric(dataId)) { + $.ajax({ + url: `/tarifas/acabados/lineas/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + $('#confirm2delete').modal('toggle'); + theTable.clearPipeline(); + theTable.row($(row)).invalidate().draw(); + popSuccessAlert(data.msg ?? jqXHR.statusText); + }).fail((jqXHR, textStatus, errorThrown) => { + popErrorAlert(jqXHR.responseJSON.messages.error) + }) + } + }); + + + endSection() ?> + + section('css') ?> + + "> + "> + endSection() ?> + + + section('additionalExternalJs') ?> + + + + + + + + + endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php b/ci4/app/Views/themes/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php index 2d3eb35b..134679e5 100644 --- a/ci4/app/Views/themes/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php +++ b/ci4/app/Views/themes/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php @@ -7,42 +7,41 @@ section("content") ?>
-
-
-

-
-
- - - getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - -
- " - /> - "btn btn-secondary float-start",]) ?> - -
-
+
+
+

+
+
+ + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> + +
+ " /> + "btn btn-secondary float-start",]) ?> + +
+
- -
+ +

- +

- + @@ -52,27 +51,27 @@ - + -
+
-
+
-
+

+

- + @@ -89,18 +88,31 @@ -
+
-
- - +
+
+

+ +

+
+
+ "tarifa_maquina_component", "tarifaId" => $tarifaEncuadernacionEntity->id]) ?> +
+
+
+
+ -
-
-

- -

-
-
- "tarifa_maquina_component","tarifaId" => $tarifaEncuadernacionEntity->id ]) ?> -
-
-
-
+
+ + +
@@ -151,772 +152,774 @@ section("additionalInlineJs") ?> - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - else{ - id = -1; - } +const url = window.location.href; +const url_parts = url.split('/'); +var id = -1; +if(url_parts[url_parts.length-2] == 'edit'){ +id = url_parts[url_parts.length-1]; +} +else{ +id = -1; +} - + const actionBtns = function(data) { - return ` - - - - `; + return ` + + + + `; }; // Delete row $(document).on('click', '.btn-delete', function(e) { - $(".btn-remove").attr('data-id', $(this).attr('data-id')); - if($(this).closest('table').attr('id').includes('tiradas')){ - $(".btn-remove").attr('table', "tiradas"); - } - else if($(this).closest('table').attr('id').includes('lineas')){ - $(".btn-remove").attr('table', "lineas"); - } - else{ - $(".btn-remove").attr('table', ); - } + $(".btn-remove").attr('data-id', $(this).attr('data-id')); + if($(this).closest('table').attr('id').includes('tiradas')){ + $(".btn-remove").attr('table', "tiradas"); + } + else if($(this).closest('table').attr('id').includes('lineas')){ + $(".btn-remove").attr('table', "lineas"); + } + else{ + $(".btn-remove").attr('table', ); + } }); var selected_tirada_id = -1; - - $(document).on('click', '.btn-remove', function(e) { - const dataId = $(this).attr('data-id'); - const row = $(this).closest('tr'); - if ($.isNumeric(dataId)) { - if($(this).attr('table').includes('tiradas')){ - remove_tiradas(dataId, row); - } - else if ($(this).attr('table').includes('lineasHoras')){ - remove_lineas_horas(dataId, row); - } - else{ - remove_lineas(dataId, row); - } - } + $(document).on('click', '.btn-remove', function(e) { + const dataId = $(this).attr('data-id'); + const row = $(this).closest('tr'); + if ($.isNumeric(dataId)) { + + if($(this).attr('table').includes('tiradas')){ + remove_tiradas(dataId, row); + } + else if ($(this).attr('table').includes('lineasHoras')){ + remove_lineas_horas(dataId, row); + } + else{ + remove_lineas(dataId, row); + } + } }); function check_por_horas(){ - if($('#por_horas').is(':checked')){ - $('#accordionEncuadernacionLineasHoras').css("visibility", "visible"); - $('#accordionEncuadernacionLineas').css("visibility", "collapse"); - } - else{ - $('#accordionEncuadernacionLineasHoras').css("visibility", "collapse"); - $('#accordionEncuadernacionLineas').css("visibility", "visible"); - } + if($('#por_horas').is(':checked')){ + $('#accordionEncuadernacionLineasHoras').css("visibility", "visible"); + $('#accordionEncuadernacionLineas').css("visibility", "collapse"); + } + else{ + $('#accordionEncuadernacionLineasHoras').css("visibility", "collapse"); + $('#accordionEncuadernacionLineas').css("visibility", "visible"); + } } check_por_horas() $("#por_horas").change(function() { - asyncConfirmDialog('', - '', yesCallback, noCallback); + asyncConfirmDialog('', + '', yesCallback, noCallback); }); function yesCallback() { - check_por_horas() - if($('#por_horas').is(':checked')){ - - theTable.clearPipeline(); - theTable.draw(); + check_por_horas() + if($('#por_horas').is(':checked')){ - $.ajax({ - url: '', - data: { - cleandatatable: 1, - tarifa_encuadernacion_id: id, - : v, - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - success:function(response){ - token = response.; - yeniden(token); + theTable.clearPipeline(); + theTable.draw(); - theTable3.clearPipeline(); - theTable3.draw(); - - theTable.clearPipeline(); - theTable.draw(); - } - }); - - }else{ + $.ajax({ + url: '', + data: { + cleandatatable: 1, + tarifa_encuadernacion_id: id, + : v, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + success:function(response){ + token = response.; + yeniden(token); - theTable3.clearPipeline(); - theTable3.draw(); + theTable3.clearPipeline(); + theTable3.draw(); - $.ajax({ - url: '', - data: { - cleandatatable: 1, - tarifa_encuadernacion_id: id, - : v, - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - success:function(response){ - - token=response.; - yeniden(token); + theTable.clearPipeline(); + theTable.draw(); + } + }); - theTable3.clearPipeline(); - theTable3.draw(); - - theTable.clearPipeline(); - theTable.draw(); - } - }); - } + }else{ + + theTable3.clearPipeline(); + theTable3.draw(); + + $.ajax({ + url: '', + data: { + cleandatatable: 1, + tarifa_encuadernacion_id: id, + : v, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + success:function(response){ + + token=response.; + yeniden(token); + + theTable3.clearPipeline(); + theTable3.draw(); + + theTable.clearPipeline(); + theTable.draw(); + } + }); + } } function noCallback() { - // Toggle behaviour - $('#por_horas').prop("checked", !$('#por_horas').prop("checked")); + // Toggle behaviour + $('#por_horas').prop("checked", !$('#por_horas').prop("checked")); } - + endSection() ?> - + - - - -section("additionalInlineJs") ?> + + + + section("additionalInlineJs") ?> const lastColNr3 = $('#tableOfTarifaencuadernacionlineasHoras').find("tr:first th").length - 1; var editor3 = new $.fn.dataTable.Editor( { - ajax: { - url: "", - headers: { - : v, - }, - }, - table : "#tableOfTarifaencuadernacionlineasHoras", - idSrc: 'id', - fields: [ - {name: "id", - "type": "readonly"}, - { - name: "tiempo_min" - }, { - name: "tiempo_max" - }, { - name: "precio_hora" - }, { - name: "total_min" - }, { - name: "margen" - }, { - "name": "tirada_encuadernacion_id", - "type": "hidden" - },{ - "name": "deleted_at", - "type": "hidden" - },{ - "name": "is_deleted", - "type": "hidden" - }, - ] + ajax: { + url: "", + headers: { + : v, + }, + }, + table : "#tableOfTarifaencuadernacionlineasHoras", + idSrc: 'id', + fields: [ + {name: "id", + "type": "readonly"}, + { + name: "tiempo_min" + }, { + name: "tiempo_max" + }, { + name: "precio_hora" + }, { + name: "total_min" + }, { + name: "margen" + }, { + "name": "tirada_encuadernacion_id", + "type": "hidden" + },{ + "name": "deleted_at", + "type": "hidden" + },{ + "name": "is_deleted", + "type": "hidden" + }, + ] } ); editor3.on( 'preSubmit', function ( e, d, type ) { - if ( type === 'create'){ - d.data[0]['tirada_encuadernacion_id'] = selected_tirada_id; - } - else if(type === 'edit' ) { - for (v in d.data){ - d.data[v]['tirada_encuadernacion_id'] = selected_tirada_id; - } - } + if ( type === 'create'){ + d.data[0]['tirada_encuadernacion_id'] = selected_tirada_id; + } + else if(type === 'edit' ) { + for (v in d.data){ + d.data[v]['tirada_encuadernacion_id'] = selected_tirada_id; + } + } }); - - + + editor3.on( 'postSubmit', function ( e, json, data, action ) { - - yeniden(json.); + + yeniden(json.); }); editor3.on( 'submitSuccess', function ( e, json, data, action ) { - - theTable3.clearPipeline(); - theTable3.draw(); + + theTable3.clearPipeline(); + theTable3.draw(); }); var theTable3 = $('#tableOfTarifaencuadernacionlineasHoras').DataTable( { - draw:3, - serverSide: true, - processing: true, - autoWidth: true, - responsive: true, - lengthMenu: [ 5, 10, 25], - order: [[ 0, "asc" ], [ 1, "asc" ]], - pageLength: 10, - lengthChange: true, - searching: false, - paging: true, - info: false, - dom: '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', - ajax : $.fn.dataTable.pipeline( { - url: '', - data: function ( d ) { - d.tirada_id = selected_tirada_id; - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columns: [ - { 'data': 'id' }, - { 'data': 'tiempo_min' }, - { 'data': 'tiempo_max' }, - { 'data': 'precio_hora' }, - { 'data': 'total_min' }, - { 'data': 'margen' }, - { - data: actionBtns, - className: 'row-edit dt-center' - } - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr3] - }, - {"orderData": [ 0, 1 ], "targets": 0 }, + draw:3, + serverSide: true, + processing: true, + autoWidth: true, + responsive: true, + lengthMenu: [ 5, 10, 25], + order: [[ 0, "asc" ], [ 1, "asc" ]], + pageLength: 10, + lengthChange: true, + searching: false, + paging: true, + info: false, + dom: '<"mt-4"><"float-end"B><"float-start"l> + <"mt-4 mb-3"p>', + ajax : $.fn.dataTable.pipeline( { + url: '', + data: function ( d ) { + d.tirada_id = selected_tirada_id; + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns: [ + { 'data': 'id' }, + { 'data': 'tiempo_min' }, + { 'data': 'tiempo_max' }, + { 'data': 'precio_hora' }, + { 'data': 'total_min' }, + { 'data': 'margen' }, + { + data: actionBtns, + className: 'row-edit dt-center' + } + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr3] + }, + {"orderData": [ 0, 1 ], "targets": 0 }, - ], - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - buttons: [ - { - extend: 'collection', - text: 'Exportar', - buttons:[ - 'copy', 'csv', 'excel', 'print', { + ], + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + buttons: [ + { + extend: 'collection', + text: 'Exportar', + buttons:[ + 'copy', 'csv', 'excel', 'print', { extend: 'pdfHtml5', orientation: 'landscape', pageSize: 'A4' - } - ] - }, - { - className: 'btn btn-primary float-end me-sm-3 me-1', - extend: "createInline", - editor: editor3, - formOptions: { - submitTrigger: -1, - submitHtml: '' - - }, - action: function ( e, dt, node, config ) { - if(selected_tirada_id == -1){ + } + ] + }, + { + className: 'btn btn-primary float-end me-sm-3 me-1', + extend: "createInline", + editor: editor3, + formOptions: { + submitTrigger: -1, + submitHtml: '' + + }, + action: function ( e, dt, node, config ) { + if(selected_tirada_id == -1){ popErrorAlert(""); - } - else{ + } + else{ formOptions= { - submitTrigger: -1, - submitHtml: '' - + submitTrigger: -1, + submitHtml: '' + }; - editor3.inlineCreate(config.position, formOptions); - } - }, - } - ] - } ); - - - // Activate an inline edit on click of a table cell - $('#tableOfTarifaencuadernacionlineasHoras').on( 'click', 'tbody span.edit', function (e) { - editor3.inline( - theTable3.cells(this.parentNode.parentNode, '*').nodes(), - { - cancelHtml: '', - cancelTrigger: 'span.cancel', - submitHtml: '', - submitTrigger: 'span.edit', - submit: 'allIfChanged' - } - ); - } ); - - // Delete row - function remove_lineas_horas(dataId, row){ - - $.ajax({ - url: `/tarifas/tarifaencuadernacionlineashoras/delete/${dataId}`, - method: 'GET', - }).done((data, textStatus, jqXHR) => { - $('#confirm2delete').modal('toggle'); - theTable3.clearPipeline(); - theTable3.row($(row)).invalidate().draw(); - popSuccessAlert(data.msg ?? jqXHR.statusText); - }).fail((jqXHR, textStatus, errorThrown) => { - popErrorAlert(jqXHR.responseJSON.messages.error) - }); - - } - - - -endSection() ?> + editor3.inlineCreate(config.position, formOptions); + } + }, + } + ] + } ); - - - -section("additionalInlineJs") ?> + // Activate an inline edit on click of a table cell + $('#tableOfTarifaencuadernacionlineasHoras').on( 'click', 'tbody span.edit', function (e) { + editor3.inline( + theTable3.cells(this.parentNode.parentNode, '*').nodes(), + { + cancelHtml: '', + cancelTrigger: 'span.cancel', + submitHtml: '', + submitTrigger: 'span.edit', + submit: 'allIfChanged' + } + ); + } ); - const lastColNr = $('#tableOfTarifaencuadernacionlineas').find("tr:first th").length - 1; + // Delete row + function remove_lineas_horas(dataId, row){ - var editor = new $.fn.dataTable.Editor( { - ajax: { - url: "", - headers: { - : v, - }, - }, - table : "#tableOfTarifaencuadernacionlineas", - idSrc: 'id', - fields: [ - {name: "id", - "type": "readonly"}, - { - name: "dimensiones_id", - "type": "select" - }, - { - name: "paginas_libro_min" - }, { - name: "precio_min" - }, { - name: "paginas_libro_max" - }, { - name: "precio_max" - }, { - name: "total_min" - }, { - name: "margen" - }, { - "name": "tirada_encuadernacion_id", - "type": "hidden" - },{ - "name": "deleted_at", - "type": "hidden" - },{ - "name": "is_deleted", - "type": "hidden" - }, - ] - } ); + $.ajax({ + url: `/tarifas/tarifaencuadernacionlineashoras/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + $('#confirm2delete').modal('toggle'); + theTable3.clearPipeline(); + theTable3.row($(row)).invalidate().draw(); + popSuccessAlert(data.msg ?? jqXHR.statusText); + }).fail((jqXHR, textStatus, errorThrown) => { + popErrorAlert(jqXHR.responseJSON.messages.error) + }); - // Generación de la lista de proveedores (id, nombre) para encuadernación - const dimensionesList = ; - editor.field( 'dimensiones_id' ).update( dimensionesList ); - - editor.on( 'preSubmit', function ( e, d, type ) { - if ( type === 'create'){ - d.data[0]['tirada_encuadernacion_id'] = selected_tirada_id; - } - else if(type === 'edit' ) { - for (v in d.data){ - d.data[v]['tirada_encuadernacion_id'] = selected_tirada_id; - } - } - }); - - - editor.on( 'postSubmit', function ( e, json, data, action ) { - - yeniden(json.); - }); + } - editor.on( 'submitSuccess', function ( e, json, data, action ) { - - theTable.clearPipeline(); - theTable.draw(); - }); + + endSection() ?> - var theTable = $('#tableOfTarifaencuadernacionlineas').DataTable( { - draw:2, - serverSide: true, - processing: true, - autoWidth: true, - responsive: true, - lengthMenu: [ 5, 10, 25], - order: [[ 0, "asc" ], [ 1, "asc" ]], - pageLength: 10, - lengthChange: true, - searching: false, - paging: true, - info: false, - dom: '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', - ajax : $.fn.dataTable.pipeline( { - url: '', - data: function ( d ) { - d.tirada_id = selected_tirada_id; - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columns: [ - { 'data': 'id' }, - { 'data': 'dimensiones_id', - render: function(data, type, row, meta) { - var value = dimensionesList.find(element => element.value === data); - return value['label']; - }, - }, - { 'data': 'paginas_libro_min' }, - { 'data': 'precio_max' }, - { 'data': 'paginas_libro_max' }, - { 'data': 'precio_min' }, - { 'data': 'total_min' }, - { 'data': 'margen' }, - { - data: actionBtns, - className: 'row-edit dt-center' - } - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr] - }, - {"orderData": [ 0, 1 ], "targets": 0 }, + + + + section("additionalInlineJs") ?> - ], - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - buttons: [ - { - extend: 'collection', - text: 'Exportar', - buttons:[ - 'copy', 'csv', 'excel', 'print', { - extend: 'pdfHtml5', - orientation: 'landscape', - pageSize: 'A4' - } - ] - }, - { - className: 'btn btn-primary float-end me-sm-3 me-1', - extend: "createInline", - editor: editor, - formOptions: { - submitTrigger: -1, - submitHtml: '' - - }, - action: function ( e, dt, node, config ) { - if(selected_tirada_id == -1){ - popErrorAlert(""); - } - else{ - formOptions= { - submitTrigger: -1, - submitHtml: '' - - }; - editor.inlineCreate(config.position, formOptions); - } - }, - } - ] - } ); + const lastColNr = $('#tableOfTarifaencuadernacionlineas').find("tr:first th").length - 1; - - // Activate an inline edit on click of a table cell - $('#tableOfTarifaencuadernacionlineas').on( 'click', 'tbody span.edit', function (e) { - editor.inline( - theTable.cells(this.parentNode.parentNode, '*').nodes(), - { - cancelHtml: '', - cancelTrigger: 'span.cancel', - submitHtml: '', - submitTrigger: 'span.edit', - submit: 'allIfChanged' - } - ); - } ); + var editor = new $.fn.dataTable.Editor( { + ajax: { + url: "", + headers: { + : v, + }, + }, + table : "#tableOfTarifaencuadernacionlineas", + idSrc: 'id', + fields: [ + {name: "id", + "type": "readonly"}, + { + name: "dimensiones_id", + "type": "select" + }, + { + name: "paginas_libro_min" + }, { + name: "precio_min" + }, { + name: "paginas_libro_max" + }, { + name: "precio_max" + }, { + name: "total_min" + }, { + name: "margen" + }, { + "name": "tirada_encuadernacion_id", + "type": "hidden" + },{ + "name": "deleted_at", + "type": "hidden" + },{ + "name": "is_deleted", + "type": "hidden" + }, + ] + } ); - // Delete row - function remove_lineas(dataId, row){ + // Generación de la lista de proveedores (id, nombre) para encuadernación + const dimensionesList = ; + editor.field( 'dimensiones_id' ).update( dimensionesList ); - $.ajax({ - url: `/tarifas/tarifaencuadernacionlineas/delete/${dataId}`, - method: 'GET', - }).done((data, textStatus, jqXHR) => { - $('#confirm2delete').modal('toggle'); - theTable.clearPipeline(); - theTable.row($(row)).invalidate().draw(); - popSuccessAlert(data.msg ?? jqXHR.statusText); - }).fail((jqXHR, textStatus, errorThrown) => { - popErrorAlert(jqXHR.responseJSON.messages.error) - }); - - } - - - -endSection() ?> - - - - -section("additionalInlineJs") ?> - - // Definicion de la ultima columna de la tabla - const lastColNr2 = $('#tableOfTarifaencuadernaciontiradas').find("tr:first th").length - 1; - - - // Datatables Editor - var editor2 = new $.fn.dataTable.Editor( { - ajax: { - url: "", - headers: { - : v, - }, - }, - table : "#tableOfTarifaencuadernaciontiradas", - idSrc: 'id', - fields: [ { - name: "proveedor_id", - "type": "select" - }, { - name: "tirada_min" - }, { - name: "tirada_max" - }, { - name: "importe_fijo" - }, { - "name": "tarifa_encuadernacion_id", - "type": "hidden" - },{ - name: "proveedor", - "type": "hidden" - }, { - "name": "deleted_at", - "type": "hidden" - },{ - "name": "is_deleted", - "type": "hidden" - }, - ] - } ); + editor.on( 'preSubmit', function ( e, d, type ) { + if ( type === 'create'){ + d.data[0]['tirada_encuadernacion_id'] = selected_tirada_id; + } + else if(type === 'edit' ) { + for (v in d.data){ + d.data[v]['tirada_encuadernacion_id'] = selected_tirada_id; + } + } + }); - // Generación de la lista de proveedores (id, nombre) para encuadernación - const suppliersList = ; - editor2.field( 'proveedor_id' ).update( suppliersList ); + editor.on( 'postSubmit', function ( e, json, data, action ) { + + yeniden(json.); + }); - editor2.on( 'preSubmit', function ( e, d, type ) { - if ( type === 'create'){ - d.data[0]['tarifa_encuadernacion_id'] = id; - } - else if(type === 'edit' ) { - for (v in d.data){ - d.data[v]['tarifa_encuadernacion_id'] = id; - } - } - }); - - - editor2.on( 'postSubmit', function ( e, json, data, action ) { - - yeniden(json.); - }); + editor.on( 'submitSuccess', function ( e, json, data, action ) { + + theTable.clearPipeline(); + theTable.draw(); + }); - editor2.on( 'submitSuccess', function ( e, json, data, action ) { - - theTable2.clearPipeline(); - theTable2.draw(); - }); + var theTable = $('#tableOfTarifaencuadernacionlineas').DataTable( { + draw:2, + serverSide: true, + processing: true, + autoWidth: true, + responsive: true, + lengthMenu: [ 5, 10, 25], + order: [[ 0, "asc" ], [ 1, "asc" ]], + pageLength: 10, + lengthChange: true, + searching: false, + paging: true, + info: false, + dom: '<"mt-4"><"float-end"B><"float-start"l> + <"mt-4 mb-3"p>', + ajax : $.fn.dataTable.pipeline( { + url: '', + data: function ( d ) { + d.tirada_id = selected_tirada_id; + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns: [ + { 'data': 'id' }, + { 'data': 'dimensiones_id', + render: function(data, type, row, meta) { + var value = dimensionesList.find(element => element.value === data); + return value['label']; + }, + }, + { 'data': 'paginas_libro_min' }, + { 'data': 'precio_max' }, + { 'data': 'paginas_libro_max' }, + { 'data': 'precio_min' }, + { 'data': 'total_min' }, + { 'data': 'margen' }, + { + data: actionBtns, + className: 'row-edit dt-center' + } + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr] + }, + {"orderData": [ 0, 1 ], "targets": 0 }, + + ], + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + buttons: [ + { + extend: 'collection', + text: 'Exportar', + buttons:[ + 'copy', 'csv', 'excel', 'print', { + extend: 'pdfHtml5', + orientation: 'landscape', + pageSize: 'A4' + } + ] + }, + { + className: 'btn btn-primary float-end me-sm-3 me-1', + extend: "createInline", + editor: editor, + formOptions: { + submitTrigger: -1, + submitHtml: '' + + }, + action: function ( e, dt, node, config ) { + if(selected_tirada_id == -1){ + popErrorAlert(""); + } + else{ + formOptions= { + submitTrigger: -1, + submitHtml: '' + + }; + editor.inlineCreate(config.position, formOptions); + } + }, + } + ] + } ); - // Tabla de tiradas - var theTable2 = $('#tableOfTarifaencuadernaciontiradas').DataTable( { - draw:1, - serverSide: true, - processing: true, - autoWidth: true, - responsive: true, - lengthMenu: [ 5, 10, 25], - order: [ 0, "asc" ], - pageLength: 10, - lengthChange: true, - searching: false, - paging: true, - select: true, - info: false, - dom: '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', - ajax : $.fn.dataTable.pipeline( { - url: '', - data: { - id_tarifaencuadernacion: id, - }, - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columns: [ - { 'data': 'proveedor_id', - render: function(data, type, row, meta) { - var value = suppliersList.find(element => element.value === data); - return value['label']; - }, - }, - { 'data': 'tirada_min' }, - { 'data': 'tirada_max' }, - { 'data': 'importe_fijo' }, - { - data: actionBtns, - className: 'row-edit dt-center' - } - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr2] - }, + // Activate an inline edit on click of a table cell + $('#tableOfTarifaencuadernacionlineas').on( 'click', 'tbody span.edit', function (e) { + editor.inline( + theTable.cells(this.parentNode.parentNode, '*').nodes(), + { + cancelHtml: '', + cancelTrigger: 'span.cancel', + submitHtml: '', + submitTrigger: 'span.edit', + submit: 'allIfChanged' + } + ); + } ); - ], - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - buttons: [ - { - extend: 'collection', - text: 'Exportar', - buttons:[ - 'copy', 'csv', 'excel', 'print', { - extend: 'pdfHtml5', - orientation: 'landscape', - pageSize: 'A4' - } - ] - }, - { - className: 'btn btn-primary float-end me-sm-3 me-1', - extend: "createInline", - editor: editor2, - formOptions: { - submitTrigger: -1, - submitHtml: '' - } - } ] - } ); + // Delete row + function remove_lineas(dataId, row){ + + $.ajax({ + url: `/tarifas/tarifaencuadernacionlineas/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + $('#confirm2delete').modal('toggle'); + theTable.clearPipeline(); + theTable.row($(row)).invalidate().draw(); + popSuccessAlert(data.msg ?? jqXHR.statusText); + }).fail((jqXHR, textStatus, errorThrown) => { + popErrorAlert(jqXHR.responseJSON.messages.error) + }); + + } - // Obtener la id de la fila seleccionada o ponerla a -1 cuando no haya ninguna seleccionada - var selected_tirada_id = -1; - theTable2.on( 'select', function ( e, dt, type, indexes ) { - if ( type === 'row' ) { - - selected_tirada_id = parseInt(theTable2.rows( indexes ).data().pluck( 'id' )[0]); - if($('#por_horas').is(':checked')){ - theTable3.clearPipeline(); - theTable3.draw(); - } - else{ - theTable.clearPipeline(); - theTable.draw(); - } - } - } ); - theTable2.on( 'deselect', function ( e, dt, type, indexes ) { - if ( theTable2.rows( '.selected' ).count() == 0 ) { - selected_tirada_id = -1; - if($('#por_horas').is(':checked')){ - theTable3.clearPipeline(); - theTable3.draw(); - } - else{ - theTable.clearPipeline(); - theTable.draw(); - } - } - } ); + endSection() ?> - - // Activate an inline edit on click of a table cell - $('#tableOfTarifaencuadernaciontiradas').on( 'click', 'tbody span.edit', function (e) { - editor2.inline( - theTable2.cells(this.parentNode.parentNode, '*').nodes(), - { - cancelHtml: '', - cancelTrigger: 'span.cancel', - submitHtml: '', - submitTrigger: 'span.edit', - submit: 'allIfChanged' - } - ); - } ); + + + + section("additionalInlineJs") ?> - - // Delete row - function remove_tiradas(dataId, row){ - - $.ajax({ - url: `/tarifas/tarifaencuadernaciontiradas/delete/${dataId}`, - method: 'GET', - }).done((data, textStatus, jqXHR) => { - $('#confirm2delete').modal('toggle'); - theTable2.clearPipeline(); - theTable2.row($(row)).invalidate().draw(); - theTable.clearPipeline(); - theTable.draw(); - popSuccessAlert(data.msg ?? jqXHR.statusText); - }).fail((jqXHR, textStatus, errorThrown) => { - popErrorAlert(jqXHR.statusText) - }); - } - -endSection() ?> - - - -section('css') ?> - - "> -endSection() ?> + // Definicion de la ultima columna de la tabla + const lastColNr2 = $('#tableOfTarifaencuadernaciontiradas').find("tr:first th").length - 1; -section('additionalExternalJs') ?> - - - - - - - - - -endSection() ?> + // Datatables Editor + var editor2 = new $.fn.dataTable.Editor( { + ajax: { + url: "", + headers: { + : v, + }, + }, + table : "#tableOfTarifaencuadernaciontiradas", + idSrc: 'id', + fields: [ { + name: "proveedor_id", + "type": "select" + }, { + name: "tirada_min" + }, { + name: "tirada_max" + }, { + name: "importe_fijo" + }, { + "name": "tarifa_encuadernacion_id", + "type": "hidden" + },{ + name: "proveedor", + "type": "hidden" + }, { + "name": "deleted_at", + "type": "hidden" + },{ + "name": "is_deleted", + "type": "hidden" + }, + ] + } ); + + // Generación de la lista de proveedores (id, nombre) para encuadernación + const suppliersList = ; + editor2.field( 'proveedor_id' ).update( suppliersList ); + + + editor2.on( 'preSubmit', function ( e, d, type ) { + if ( type === 'create'){ + d.data[0]['tarifa_encuadernacion_id'] = id; + } + else if(type === 'edit' ) { + for (v in d.data){ + d.data[v]['tarifa_encuadernacion_id'] = id; + } + } + }); + + + editor2.on( 'postSubmit', function ( e, json, data, action ) { + + yeniden(json.); + }); + + + editor2.on( 'submitSuccess', function ( e, json, data, action ) { + + theTable2.clearPipeline(); + theTable2.draw(); + }); + + + // Tabla de tiradas + var theTable2 = $('#tableOfTarifaencuadernaciontiradas').DataTable( { + draw:1, + serverSide: true, + processing: true, + autoWidth: true, + responsive: true, + lengthMenu: [ 5, 10, 25], + order: [ 0, "asc" ], + pageLength: 10, + lengthChange: true, + searching: false, + paging: true, + select: true, + info: false, + dom: '<"mt-4"><"float-end"B><"float-start"l> + <"mt-4 mb-3"p>', + ajax : $.fn.dataTable.pipeline( { + url: '', + data: { + id_tarifaencuadernacion: id, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns: [ + { 'data': 'proveedor_id', + render: function(data, type, row, meta) { + var value = suppliersList.find(element => element.value === data); + return value['label']; + }, + }, + { 'data': 'tirada_min' }, + { 'data': 'tirada_max' }, + { 'data': 'importe_fijo' }, + { + data: actionBtns, + className: 'row-edit dt-center' + } + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr2] + }, + + ], + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + buttons: [ + { + extend: 'collection', + text: 'Exportar', + buttons:[ + 'copy', 'csv', 'excel', 'print', { + extend: 'pdfHtml5', + orientation: 'landscape', + pageSize: 'A4' + } + ] + }, + { + className: 'btn btn-primary float-end me-sm-3 me-1', + extend: "createInline", + editor: editor2, + formOptions: { + submitTrigger: -1, + submitHtml: '' + } + } ] + } ); + + + // Obtener la id de la fila seleccionada o ponerla a -1 cuando no haya ninguna seleccionada + var selected_tirada_id = -1; + theTable2.on( 'select', function ( e, dt, type, indexes ) { + if ( type === 'row' ) { + + selected_tirada_id = parseInt(theTable2.rows( indexes ).data().pluck( 'id' )[0]); + if($('#por_horas').is(':checked')){ + theTable3.clearPipeline(); + theTable3.draw(); + } + else{ + theTable.clearPipeline(); + theTable.draw(); + } + } + } ); + + theTable2.on( 'deselect', function ( e, dt, type, indexes ) { + if ( theTable2.rows( '.selected' ).count() == 0 ) { + selected_tirada_id = -1; + if($('#por_horas').is(':checked')){ + theTable3.clearPipeline(); + theTable3.draw(); + } + else{ + theTable.clearPipeline(); + theTable.draw(); + } + } + } ); + + + // Activate an inline edit on click of a table cell + $('#tableOfTarifaencuadernaciontiradas').on( 'click', 'tbody span.edit', function (e) { + editor2.inline( + theTable2.cells(this.parentNode.parentNode, '*').nodes(), + { + cancelHtml: '', + cancelTrigger: 'span.cancel', + submitHtml: '', + submitTrigger: 'span.edit', + submit: 'allIfChanged' + } + ); + } ); + + + // Delete row + function remove_tiradas(dataId, row){ + + $.ajax({ + url: `/tarifas/tarifaencuadernaciontiradas/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + $('#confirm2delete').modal('toggle'); + theTable2.clearPipeline(); + theTable2.row($(row)).invalidate().draw(); + theTable.clearPipeline(); + theTable.draw(); + popSuccessAlert(data.msg ?? jqXHR.statusText); + }).fail((jqXHR, textStatus, errorThrown) => { + popErrorAlert(jqXHR.statusText) + }); + } + + endSection() ?> + + + + section('css') ?> + + "> + endSection() ?> + + + section('additionalExternalJs') ?> + + + + + + + + + + endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/tarifas/manipulado/viewTarifaManipuladoForm.php b/ci4/app/Views/themes/vuexy/form/tarifas/manipulado/viewTarifaManipuladoForm.php index 3603cdca..f07210b3 100644 --- a/ci4/app/Views/themes/vuexy/form/tarifas/manipulado/viewTarifaManipuladoForm.php +++ b/ci4/app/Views/themes/vuexy/form/tarifas/manipulado/viewTarifaManipuladoForm.php @@ -6,160 +6,163 @@ section("content") ?>
-
-
-

-
-
- - - getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - -
- " - /> - "btn btn-secondary float-start",]) ?> - -
-
-
+
+
+

+
+
+ + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> + +
+ " /> + "btn btn-secondary float-start",]) ?> + +
+
+
- - -
-
-

- -

-
-
- "tarifa_maquina_component", "tarifaId" => $tarifapreimpresionEntity->id]) ?> -
-
-
-
-endSection() ?> -section("additionalExternalJs") ?> - + + endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php b/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php index b362bc6a..5fe14fba 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php @@ -63,6 +63,13 @@ if ( + user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?> + + user()->can('usuarios.menu')) { ?> - user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?> - - + user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>