request->isAJAX()) { $reqData = $this->request->getPost(); $tarifa_manipulado_id = $reqData['tarifa_manipulado_id'] ?? 0; $tirada = $reqData['tirada'] ?? 0; $POD = $reqData['POD'] ?? 0; $tipo = $reqData['tipo'] ?? null; $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); if (is_null($tipo)) { $values = $this->model->getPrecioTarifa($tarifa_manipulado_id, $tirada, $POD); } else { $solapas = $reqData['solapas'] ?? -1; $tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4; $values = $this->model->initPresupuesto($tipo_impresion_id, $solapas, $tirada, $POD); } $data = [ 'values' => $values, $csrfTokenName => $newTokenHash ]; return $this->respond($data); } else { return $this->failUnauthorized('Invalid request', 403); } } // Esta funcion se usa para obtener los datos de la tabla de la vista de presupuestos public function datatable_2() { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $json_data = $reqData['json_tiradas'] ?? null; $cliente_id = $reqData['cliente_id'] ?? 0; $tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4; $values = []; if ($json_data) { $data = json_decode($json_data, true); foreach ($data as $linea) { // Se obtienen los valores de cada linea para el calculo del precio $datosPedido = (object)array( 'paginas' => intval($linea['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' => $linea['aFavorFibra'] ?? 1, 'isCosido' => (new \App\Models\Configuracion\TipoPresupuestoModel())->get_isCosido($tipo_impresion_id), // JJO esto es custom por cada tipo de presupuesto ); if ($linea['row_id'] == 'lp_guardas') { $datosPedido->paginas_impresion = intval($linea['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; } } else if ($linea['row_id'] == 'lp_sobrecubierta' || $linea['row_id'] == 'lp_cubierta') { $datosPedido->solapas = $linea['row_id'] == 'lp_cubierta' ? $reqData['solapas_cubierta'] : $reqData['solapas_sobrecubierta']; $datosPedido->solapas_ancho = $linea['row_id'] == 'lp_cubierta' ? $reqData['solapas_cubierta_ancho'] : $reqData['solapas_sobrecubierta_ancho']; $datosPedido->lomo = $reqData['lomo']; $type = $linea['row_id'] == 'lp_cubierta' ? 'cubierta' : 'sobrecubierta'; $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido); $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido); } $maquina = (new \App\Models\Configuracion\MaquinaModel())->find($linea['maquina_id']); $papel = (new \App\Models\Configuracion\PapelImpresionModel())->find($linea['papel_impresion_id']); $pg = (new \App\Models\Configuracion\PapelGenericoModel())->find($linea['papel']); $papel_generico['id'] = $pg->id; $papel_generico['nombre'] = $pg->nombre; $maquina->maquina_id = $maquina->id; unset($maquina->id); switch ($linea['row_id']) { case 'lp_rot_bn': case 'lp_rot_color': $uso = 'rotativa'; $tipo = strpos($linea['row_id'], "_bn") !== false ? 'negro' : 'color'; break; case 'lp_cubierta': $uso = 'cubierta'; break; case 'lp_sobrecubierta': $uso = 'sobrecubierta'; break; case 'lp_guardas': $uso = 'guardas'; break; default: $uso = 'interior'; $isHq = strpos($linea['row_id'], "hq") !== false ? true : false; $isColor = strpos($linea['row_id'], "_color") !== false ? true : false; $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); break; } if ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'guardas') { $isColor = true; $isHq = true; $tipo = 'colorhq'; } $opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor); $datosTipolog = $linea['gotaNegro'] ?? null; if (!is_null($datosTipolog)) { $datosTipolog = []; $data = (object)array( 'negro' => intval($linea['cobNegro']) ?? 0, 'cyan' => intval($linea['cobCyan']) ?? 0, 'magenta' => intval($linea['cobMagenta']) ?? 0, 'amarillo' => intval($linea['cobAmarillo']) ?? 0, 'cg' => intval($linea['cobCG']) ?? 0, 'gota_negro' => intval($linea['gotaNegro']) ?? 0, 'gota_color' => intval($linea['gotaColor']) ?? 0, ); array_push($datosTipolog, $data); } $data['uso'] = $uso; $data['tipo'] = $tipo; $data['datosPedido'] = $datosPedido; $data['cliente_id'] = $cliente_id; $data['papel'] = $papel; $data['opciones_papel'] = $opciones_papel; $data['maquina'] = $maquina; $data['papel_generico'] = $papel_generico; $data['isColor'] = $isColor; $data['a_favor_fibra'] = $linea['aFavorFibra'] ?? null; $data['datosTipolog'] = $datosTipolog; $data['gramaje'] = $linea['gramaje'] ?? 0; if ($linea['row_id'] != 'lp_rot_bn' && $linea['row_id'] != 'lp_rot_color') { $linea_coste = PresupuestoService::getLineaPresupuestoPlana($data); } else { $linea_coste = [0]; } if (empty($linea)) continue; if ($linea['check_papel_total'] == 0) { $linea_coste['fields']['precio_pedido'] = 0; } if ($linea['check_impresion_total'] == 0) { $linea_coste['fields']['precio_impresion_horas'] = 0; $linea_coste['fields']['precio_click_pedido'] = 0; if ($linea_coste['fields']['tipo_maquina'] == 'inkjet') { $linea_coste['fields']['precio_tinta'] = 0; $linea_coste['fields']['totalCorte'] = 0; } } $linea_coste['total_coste'] = $linea_coste['fields']['precio_pedido'] + $linea_coste['fields']['precio_impresion_horas'] + $linea_coste['fields']['precio_click_pedido']; if ($linea_coste['fields']['tipo_maquina'] == 'inkjet') { $linea_coste['total_coste'] += $linea_coste['fields']['precio_tinta'] + $linea_coste['fields']['totalCorte']; } array_push($values, $linea_coste); } } else { $values = []; } $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $response[$csrfTokenName] = $newTokenHash; $response['lineas'] = $values; return $this->respond($response); } else { return $this->failUnauthorized('Invalid request', 403); } } }