[ "label" => "PresupuestoLineas.click", "rules" => "decimal|permit_empty", ], "formas" => [ "label" => "PresupuestoLineas.formas", "rules" => "trim|max_length[16313]", ], "gramaje" => [ "label" => "PresupuestoLineas.gramaje", "rules" => "decimal|permit_empty", ], "libro" => [ "label" => "PresupuestoLineas.libro", "rules" => "decimal|permit_empty", ], "mano" => [ "label" => "PresupuestoLineas.mano", "rules" => "decimal|permit_empty", ], "paginas" => [ "label" => "PresupuestoLineas.paginas", "rules" => "required|integer", ], "paginas_color_posicion" => [ "label" => "PresupuestoLineas.paginasColorPosicion", "rules" => "trim|max_length[16313]", ], "pedido" => [ "label" => "PresupuestoLineas.pedido", "rules" => "decimal|permit_empty", ], "peso" => [ "label" => "PresupuestoLineas.peso", "rules" => "decimal|permit_empty", ], "pliegos_libro" => [ "label" => "PresupuestoLineas.pliegosLibro", "rules" => "decimal|permit_empty", ], "pliegos_pedido" => [ "label" => "PresupuestoLineas.pliegosPedido", "rules" => "decimal|permit_empty", ], "pliegos_precio" => [ "label" => "PresupuestoLineas.pliegosPrecio", "rules" => "decimal|permit_empty", ], "precio" => [ "label" => "PresupuestoLineas.precio", "rules" => "decimal|permit_empty", ], "rotativa_amarillo" => [ "label" => "PresupuestoLineas.rotativaAmarillo", "rules" => "required|decimal", ], "rotativa_area_paginas" => [ "label" => "PresupuestoLineas.rotativaAreaPaginas", "rules" => "required|decimal", ], "rotativa_clicks_libro" => [ "label" => "PresupuestoLineas.rotativaClicksLibro", "rules" => "required|decimal", ], "rotativa_clicks_total" => [ "label" => "PresupuestoLineas.rotativaClicksTotal", "rules" => "required|decimal", ], "rotativa_cyan" => [ "label" => "PresupuestoLineas.rotativaCyan", "rules" => "required|decimal", ], "rotativa_factor_altura" => [ "label" => "PresupuestoLineas.rotativaFactorAltura", "rules" => "required|decimal", ], "rotativa_factor_anchura" => [ "label" => "PresupuestoLineas.rotativaFactorAnchura", "rules" => "required|decimal", ], "rotativa_gota_color" => [ "label" => "PresupuestoLineas.rotativaGotaColor", "rules" => "required|decimal", ], "rotativa_gota_negro" => [ "label" => "PresupuestoLineas.rotativaGotaNegro", "rules" => "required|decimal", ], "rotativa_impresion" => [ "label" => "PresupuestoLineas.rotativaImpresion", "rules" => "required|in_list[negro,color]", ], "rotativa_magenta" => [ "label" => "PresupuestoLineas.rotativaMagenta", "rules" => "required|decimal", ], "rotativa_metros_libro" => [ "label" => "PresupuestoLineas.rotativaMetrosLibro", "rules" => "required|decimal", ], "rotativa_metros_total" => [ "label" => "PresupuestoLineas.rotativaMetrosTotal", "rules" => "required|decimal", ], "rotativa_mxm" => [ "label" => "PresupuestoLineas.rotativaMxm", "rules" => "decimal|permit_empty", ], "rotativa_negro" => [ "label" => "PresupuestoLineas.rotativaNegro", "rules" => "required|decimal", ], "rotativa_num_gotas_amarillo" => [ "label" => "PresupuestoLineas.rotativaNumGotasAmarillo", "rules" => "required|decimal", ], "rotativa_num_gotas_cyan" => [ "label" => "PresupuestoLineas.rotativaNumGotasCyan", "rules" => "required|decimal", ], "rotativa_num_gotas_magenta" => [ "label" => "PresupuestoLineas.rotativaNumGotasMagenta", "rules" => "required|decimal", ], "rotativa_num_gotas_negro" => [ "label" => "PresupuestoLineas.rotativaNumGotasNegro", "rules" => "required|decimal", ], "rotativa_pag_color" => [ "label" => "PresupuestoLineas.rotativaPagColor", "rules" => "required|integer", ], "rotativa_pag_por_pliego" => [ "label" => "PresupuestoLineas.rotativaPagPorPliego", "rules" => "required|decimal", ], "rotativa_peso_gotas_amarillo" => [ "label" => "PresupuestoLineas.rotativaPesoGotasAmarillo", "rules" => "required|decimal", ], "rotativa_peso_gotas_cyan" => [ "label" => "PresupuestoLineas.rotativaPesoGotasCyan", "rules" => "required|decimal", ], "rotativa_peso_gotas_magenta" => [ "label" => "PresupuestoLineas.rotativaPesoGotasMagenta", "rules" => "required|decimal", ], "rotativa_peso_gotas_negro" => [ "label" => "PresupuestoLineas.rotativaPesoGotasNegro", "rules" => "required|decimal", ], "rotativa_precio_hora_corte" => [ "label" => "PresupuestoLineas.rotativaPrecioHoraCorte", "rules" => "required|decimal", ], "rotativa_precio_pag_color" => [ "label" => "PresupuestoLineas.rotativaPrecioPagColor", "rules" => "required|decimal", ], "rotativa_precio_pag_negro" => [ "label" => "PresupuestoLineas.rotativaPrecioPagNegro", "rules" => "required|decimal", ], "rotativa_precio_tinta" => [ "label" => "PresupuestoLineas.rotativaPrecioTinta", "rules" => "required|decimal", ], "rotativa_saturacion" => [ "label" => "PresupuestoLineas.rotativaSaturacion", "rules" => "required|decimal", ], "rotativa_tiempo_corte" => [ "label" => "PresupuestoLineas.rotativaTiempoCorte", "rules" => "required|decimal", ], "rotativa_total_corte" => [ "label" => "PresupuestoLineas.rotativaTotalCorte", "rules" => "required|decimal", ], "rotativa_total_impresion" => [ "label" => "PresupuestoLineas.rotativaTotalImpresion", "rules" => "required|decimal", ], "rotativa_velocidad_corte" => [ "label" => "PresupuestoLineas.rotativaVelocidadCorte", "rules" => "required|decimal", ], "solapas_ancho" => [ "label" => "PresupuestoLineas.solapasAncho", "rules" => "required|decimal", ], "tipo" => [ "label" => "PresupuestoLineas.tipo", "rules" => "required|in_list[bn,bnhq,color,colorhq,cubierta,sobrecubierta,rot_bn,rot_color]", ], ]; public function findAllWithAllRelations(string $selcols = "*", int $limit = null, int $offset = 0) { $sql = "SELECT t1." . $selcols . ", t2.id AS presupuesto, t3.nombre AS papel, t4.nombre AS papel_impresion, t5.nombre AS maquina, t6.tipo AS tarifa_impresion FROM " . $this->table . " t1 LEFT JOIN presupuestos t2 ON t1.presupuesto_id = t2.id LEFT JOIN lg_papel_generico t3 ON t1.papel_id = t3.id LEFT JOIN lg_papel_impresion t4 ON t1.papel_impresion_id = t4.id LEFT JOIN lg_maquinas t5 ON t1.maquina_id = t5.id LEFT JOIN lg_maquinas_tarifas_impresion t6 ON t1.tarifa_impresion_id = t6.id"; if (!is_null($limit) && intval($limit) > 0) { $sql .= " LIMIT " . intval($limit); } if (!is_null($offset) && intval($offset) > 0) { $sql .= " OFFSET " . intval($offset); } $query = $this->db->query($sql); $result = $query->getResultObject(); return $result; } public function createForPresupuesto($presupuesto_id) { $tipos = ['bn', 'bnhq', 'color', 'colorhq', 'cubierta', 'sobrecubierta', 'rot_bn', 'rot_color']; foreach ($tipos as $tipo) { $builder = $this->db ->table($this->table . " t1"); $data = [ 'presupuesto_id' => $presupuesto_id, 'tipo' => $tipo, ]; $builder->insert($data); } } public function getLineasPresupuesto($presupuesto_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( "*" ) ->where("t1.presupuesto_id", $presupuesto_id); return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } public function updatePreciosLineasPresupuesto($id_linea, $new_linea) { $rot_total_impresion = $new_linea['fields']['precio_click_pedido'] ?? 0.0 + $new_linea['fields']['precio_tinta'] ?? 0.0 + $new_linea['fields']['total_Corte'] ?? 0.0; $data = [ "pliegos_precio" => $new_linea['fields']['precios_pliegos'], "libro" => $new_linea['fields']['precio_libro'], "total_papel_pedido" => round($new_linea['fields']['precio_pedido'], 2), "margen_papel_pedido" => round($new_linea['fields']['margen_papel_pedido'], 2), "mano" => $new_linea['fields']['mano'], "precio_click" => round($new_linea['fields']['precio_click'], 6), "precio_click_pedido" => round($new_linea['fields']['precio_click_pedido'], 2), "margen_click_pedido" => round($new_linea['fields']['margen_click_pedido'], 2), "tiempo_maquina" => strtotime($new_linea['fields']['tiempo_maquina']) - strtotime('TODAY'), "tarifa_impresion_id" => $new_linea['fields']['tarifa_impresion_id'], "rotativa_total_impresion" => $rot_total_impresion, "rotativa_a_favor_fibra" => $new_linea['fields']['a_favor_fibra'] ?? 0, "rotativa_mxm" => $new_linea['fields']['maquina_velocidad'] ?? 0, "rotativa_resolucion" => $new_linea['fields']['resolucion'] ?? 0, "rotativa_area_paginas" => $new_linea['fields']['superficie'] ?? 0, "rotativa_num_gotas_negro" => $new_linea['fields']['num_gotas_negro'] ?? 0, "rotativa_num_gotas_cyan" => $new_linea['fields']['num_gotas_cyan'] ?? 0, "rotativa_num_gotas_magenta" => $new_linea['fields']['num_gotas_magenta'] ?? 0, "rotativa_num_gotas_amarillo" => $new_linea['fields']['num_gotas_amarillo'] ?? 0, "rotativa_num_gotas_cg" => $new_linea['fields']['num_gotas_cg'] ?? 0, "rotativa_peso_gotas_negro" => $new_linea["fields"]["peso_gotas_negro"] ?? 0, "rotativa_peso_gotas_cyan" => $new_linea['fields']['peso_gotas_cyan'] ?? 0, "rotativa_peso_gotas_magenta" => $new_linea['fields']['peso_gotas_magenta'] ?? 0, "rotativa_peso_gotas_amarillo" => $new_linea['fields']['peso_gotas_amarillo'] ?? 0, "rotativa_peso_gotas_cg" => $new_linea['fields']['peso_gotas_cg'] ?? 0, "rotativa_peso_gotas_negro_pedido" => $new_linea["fields"]["peso_gotas_negro_pedido"] ?? 0, "rotativa_peso_gotas_cyan_pedido" => $new_linea["fields"]["peso_gotas_cyan_pedido"] ?? 0, "rotativa_peso_gotas_magenta_pedido" => $new_linea["fields"]["peso_gotas_magenta_pedido"] ?? 0, "rotativa_peso_gotas_amarillo_pedido" => $new_linea["fields"]["peso_gotas_amarillo_pedido"] ?? 0, "rotativa_peso_gotas_cg_pedido" => $new_linea["fields"]["peso_gotas_cg_pedido"] ?? 0, "rotativa_precio_pag_negro" => $new_linea['fields']['precio_pagina_negro'] ?? 0, "rotativa_precio_pag_color" => $new_linea['fields']['precio_pagina_color'] ?? 0, "rotativa_factor_altura" => $new_linea['fields']['factor_altura'] ?? 0, "rotativa_factor_anchura" => $new_linea['fields']['factor_anchura'] ?? 0, "rotativa_pag_por_pliego" => $new_linea['fields']['paginas_por_pliego'] ?? 0, "rotativa_metros_libro" => $new_linea['fields']['metros_papel_libro'] ?? 0, "rotativa_metros_total" => $new_linea['fields']['metros_papel_total'] ?? 0, "rotativa_clicks_libro" => $new_linea['fields']['clicks_libro'] ?? 0, "rotativa_clicks_total" => $new_linea['fields']['clicks_pedido'] ?? 0, "rotativa_precio_tinta" => $new_linea['fields']['precio_tinta'] ?? 0, "rotativa_velocidad_corte" => $new_linea['fields']['velocidad_corte'] ?? 0, "rotativa_tiempo_corte" => $new_linea['fields']['tiempo_corte'] ?? 0, "rotativa_precio_hora_corte" => $new_linea['fields']['precio_hora_corte'] ?? 0, "rotativa_total_corte" => $new_linea['fields']['total_corte'] ?? 0, "horas_maquina" => round($new_linea['fields']['horas_maquina'], 4), "precio_hora" => $new_linea['fields']['precio_hora'] ?? 0, "precio_impresion" => $new_linea['fields']['precio_impresion_horas'] ?? 0, "total_linea" => round($new_linea['fields']['total_impresion'], 2) ?? 0, "margen_impresion" => $new_linea['fields']['margen_impresion_horas'] ?? 0, ]; if (array_key_exists('datosTipologias', $new_linea['fields'])) { $data += [ "rotativa_negro" => $new_linea['fields']['datosTipologias']->negro ?? 0, "rotativa_cyan" => $new_linea['fields']['datosTipologias']->cyan ?? 0, "rotativa_magenta" => $new_linea['fields']['datosTipologias']->magenta ?? 0, "rotativa_amarillo" => $new_linea['fields']['datosTipologias']->amarillo ?? 0, "rotativa_cg" => $new_linea['fields']['datosTipologias']->cg ?? 0, "rotativa_gota_negro" => $new_linea['fields']['datosTipologias']->gota_negro ?? 0, "rotativa_gota_color" => $new_linea['fields']['datosTipologias']->gota_color ]; } $this->db ->table($this->table . " t1") ->where('id', $id_linea) ->set($data) ->update(); } public function insertLPFromBackend($presupuesto_id, $new_linea) { $rot_total_impresion = $new_linea['precio_click_pedido'] ?? 0.0 + $new_linea['precio_tinta'] ?? 0.0 + $new_linea['total_Corte'] ?? 0.0; $formas = json_encode(array( 'maquina_ancho'=> $new_linea['dimensiones_maquina'][0], 'maquina_alto' => $new_linea['dimensiones_maquina'][1], 'maquina_impresion_ancho'=> $new_linea['dimensiones_maquina_impresion'][0], 'maquina_impresion_alto' => $new_linea['dimensiones_maquina_impresion'][1], 'formas' => $new_linea['num_formas']['value'], 'formas_v'=> $new_linea['num_formas']['num_formas_verticales'], 'formas_h'=> $new_linea['num_formas']['num_formas_horizontales'], 'formas_orientacion'=> $new_linea['num_formas']['posicion_formas'] )); sscanf($new_linea['tiempo_maquina'], "%d:%d:%d", $hours, $minutes, $seconds); $tiempo = isset($seconds) ? $hours * 3600 + $minutes * 60 + $seconds : $hours * 60 + $minutes; $data = [ 'presupuesto_id' => $presupuesto_id, 'tipo' => $new_linea['tipo_linea'], 'paginas' => $new_linea['paginas'], 'papel_id' => $new_linea['papel_generico_id'], 'papel_impresion_id' => $new_linea['papel_impresion_id'], 'formas' => $formas, 'gramaje' => $new_linea['gramaje'], 'pliegos_libro' => $new_linea['pliegos_libro'], 'pliegos_pedido' => $new_linea['pliegos_pedido'], 'pliegos_precio' => $new_linea['precios_pliegos'], 'libro' => $new_linea['precio_libro'], 'total_papel_pedido' => $new_linea['precio_pedido'], 'margen_papel_pedido' => $new_linea['margen_papel_pedido'], 'mano' => $new_linea['mano'], 'peso' => $new_linea['peso'], 'check_papel_total' => 1, 'check_impresion_total' => 1, 'maquina_id' => $new_linea['maquina_id'], 'tiempo_maquina' => $tiempo, 'tarifa_impresion_id' => $new_linea['tarifa_impresion_id'], 'precio_click' => $new_linea['precio_click'], 'precio_click_pedido' => $new_linea['precio_click_pedido'], 'maquina' => $new_linea['maquina'], 'papel_impresion' => $new_linea['papel_impresion'], 'maquina_tipo' => $new_linea['tipo_maquina'], 'horas_maquina' => $new_linea['horas_maquina'], 'precio_hora' => $new_linea['precio_hora'], 'precio_impresion' => $new_linea['precio_impresion_horas'], 'total_linea' => $new_linea['total_impresion'], 'margen_impresion' => $new_linea['margen_impresion_horas'], 'margen_click_pedido' => $new_linea['margen_click_pedido'], ]; if($new_linea['tipo_maquina'] =='inkjet'){ $data += [ 'rotativa_total_impresion' => $rot_total_impresion, 'rotativa_negro' => $new_linea['datosTipologias']->negro ?? 0, 'rotativa_cyan' => $new_linea['datosTipologias']->cyan ?? 0, 'rotativa_magenta' => $new_linea['datosTipologias']->magenta ?? 0, 'rotativa_amarillo' => $new_linea['datosTipologias']->amarillo ?? 0, 'rotativa_cg' => $new_linea['datosTipologias']->cg ?? 0, 'rotativa_gota_negro' => $new_linea['datosTipologias']->gota_negro ?? 0, 'rotativa_gota_color' => $new_linea['datosTipologias']->gota_color ?? 0, 'rotativa_num_gotas_negro' => $new_linea['num_gotas_negro'] ?? 0, 'rotativa_num_gotas_cyan' => $new_linea['num_gotas_cyan'] ?? 0, 'rotativa_num_gotas_magenta' => $new_linea['num_gotas_magenta'] ?? 0, 'rotativa_num_gotas_amarillo' => $new_linea['num_gotas_amarillo'] ?? 0, 'rotativa_num_gotas_cg' => $new_linea['num_gotas_cg'] ?? 0, 'rotativa_peso_gotas_negro' => $new_linea['peso_gotas_negro'] ?? 0, 'rotativa_peso_gotas_cyan' => $new_linea['peso_gotas_cyan'] ?? 0, 'rotativa_peso_gotas_magenta' => $new_linea['peso_gotas_magenta'] ?? 0, 'rotativa_peso_gotas_amarillo' => $new_linea['peso_gotas_amarillo'] ?? 0, 'rotativa_peso_gotas_cg' => $new_linea['peso_gotas_cg'] ?? 0, 'rotativa_peso_gotas_negro_pedido' => $new_linea['peso_gotas_negro_pedido'] ?? 0, 'rotativa_peso_gotas_cyan_pedido' => $new_linea['peso_gotas_cyan_pedido'] ?? 0, 'rotativa_peso_gotas_magenta_pedido' => $new_linea['peso_gotas_magenta_pedido'] ?? 0, 'rotativa_peso_gotas_amarillo_pedido' => $new_linea['peso_gotas_amarillo_pedido'] ?? 0, 'rotativa_peso_gotas_cg_pedido' => $new_linea['peso_gotas_cg_pedido'] ?? 0, 'rotativa_pag_color' => $new_linea['paginas_color'], 'rotativa_resolucion' => $new_linea['resolucion'], 'rotativa_area_paginas' => $new_linea['superficie'], 'rotativa_precio_pag_negro' => $new_linea['precio_pagina_negro'], 'rotativa_precio_pag_color' => $new_linea['precio_pagina_color'], 'rotativa_factor_altura' => $new_linea['factor_altura'], 'rotativa_factor_anchura' => $new_linea['factor_anchura'], 'rotativa_pag_por_pliego' => $new_linea['paginas_por_pliego'], 'rotativa_clicks_libro' => $new_linea['clicks_libro'], 'rotativa_clicks_total' => $new_linea['clicks_pedido'], 'rotativa_precio_tinta' => $new_linea['precio_tinta'], 'rotativa_mxm' => $new_linea['maquina_velocidad'], ]; } if (strpos($new_linea['tipo_linea'], 'rot') !== false) { $data += [ 'rotativa_metros_libro' => $new_linea['metros_papel_libro'], 'rotativa_metros_total' => $new_linea['metros_papel_total'], 'rotativa_velocidad_corte' => $new_linea['velocidad_corte'], 'rotativa_precio_hora_corte' => $new_linea['precio_hora_corte'], 'rotativa_tiempo_corte' => $new_linea['tiempo_corte'], 'rotativa_total_corte' => $new_linea['total_corte'], 'rotativa_a_favor_fibra' => $new_linea['a_favor_fibra'] ]; } if($new_linea['tipo_linea'] =='lp_guardas') $data = array_merge($data, ['paginas_impresion' => $new_linea['paginas_impresion']]); return $this->db ->table($this->table . " t1") ->set($data) ->insert(); } public function deleteLineasPresupuesto($presupuesto_id) { $this->db ->table($this->table . " t1") ->where("presupuesto_id", $presupuesto_id) ->delete(); } public function insertLineasPresupuesto($presupuesto_id = -1, $datos = []) { $this->deleteLineasPresupuesto($presupuesto_id); foreach ($datos as $linea) { $this->db ->table($this->table . " t1") ->where("t1.presupuesto_id", $presupuesto_id) ->insert($linea); } } public function getResourceByNForPdf($presupuesto_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( "t1.paginas AS paginas, t2.nombre AS papel, t1.gramaje AS gramaje" ) ->where("t1.presupuesto_id", $presupuesto_id) ->join("lg_papel_generico t2", "t1.papel_id = t2.id", "left") ->whereIn('t1.tipo', ['lp_bn', 'lp_bnhq', 'lp_rot_bn']); return $builder; } public function getResourceColorForPdf($presupuesto_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( "t1.paginas AS paginas, t2.nombre AS papel, t1.gramaje AS gramaje" ) ->where("t1.presupuesto_id", $presupuesto_id) ->join("lg_papel_generico t2", "t1.papel_id = t2.id", "left") ->whereIn('t1.tipo', ['lp_color', 'lp_colorhq', 'lp_rot_color']); return $builder; } public function getResourceCubiertaForPdf($presupuesto_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( "t1.paginas AS paginas, t2.nombre AS papel, t1.gramaje AS gramaje" ) ->where("t1.presupuesto_id", $presupuesto_id) ->join("lg_papel_generico t2", "t1.papel_id = t2.id", "left") ->whereIn('t1.tipo', ['lp_cubierta']); return $builder; } public function getResourceSobrecubiertaForPdf($presupuesto_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( "t1.paginas AS paginas, t2.nombre AS papel, t1.gramaje AS gramaje" ) ->where("t1.presupuesto_id", $presupuesto_id) ->join("lg_papel_generico t2", "t1.papel_id = t2.id", "left") ->whereIn('t1.tipo', ['lp_sobrecubierta']); return $builder; } public function getResourceGuardasForPdf($presupuesto_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( "t1.paginas AS paginas, t2.nombre AS papel, t1.gramaje AS gramaje" ) ->where("t1.presupuesto_id", $presupuesto_id) ->join("lg_papel_generico t2", "t1.papel_id = t2.id", "left") ->whereIn('t1.tipo', ['lp_guardas']); return $builder; } public function getResourceFajaForPdf($presupuesto_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( "t1.papel_impresion AS papel, t1.gramaje AS gramaje" ) ->where("t1.presupuesto_id", $presupuesto_id) ->whereIn('t1.tipo', ['lp_faja']); return $builder; } public function duplicateLineasPresupuesto($presupuesto_id, $new_presupuesto_id) { $lineas = $this->getLineasPresupuesto($presupuesto_id); $lineas = json_decode(json_encode($lineas), true); foreach ($lineas as $linea) { $linea['presupuesto_id'] = $new_presupuesto_id; unset($linea['id']); $this->db ->table($this->table . " t1") ->insert($linea); } } }