diff --git a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php index 5079aee9..15cfc882 100644 --- a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php @@ -125,14 +125,25 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController $start = $reqData['start'] ?? 0; $length = $reqData['length'] ?? 5; $search = $reqData['search']['value']; - $requestedOrder = $reqData['order']['0']['column'] ?? 1; - $order = MaquinasPapelesImpresionModel::SORTABLE_2[$requestedOrder >= 0 ? $requestedOrder : 1]; + $requestedOrder = $reqData['order']['0']['column'] ?? 0; + $requestedOrder2 = $reqData['order']['1']['column'] ?? $requestedOrder; + $requestedOrder3 = $reqData['order']['2']['column'] ?? $requestedOrder; + $requestedOrder4 = $reqData['order']['3']['column'] ?? $requestedOrder; + $order = MaquinasPapelesImpresionModel::SORTABLE_2[$requestedOrder >= 0 ? $requestedOrder : 0]; + $order2 = MaquinasPapelesImpresionModel::SORTABLE_2[$requestedOrder2 >= 0 ? $requestedOrder2 : $requestedOrder]; + $order3 = MaquinasPapelesImpresionModel::SORTABLE_2[$requestedOrder3 >= 0 ? $requestedOrder3 : $requestedOrder]; + $order4 = MaquinasPapelesImpresionModel::SORTABLE_2[$requestedOrder4 >= 0 ? $requestedOrder4 : $requestedOrder]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; + $dir2 = $reqData['order']['1']['dir'] ?? $dir; + $dir3 = $reqData['order']['2']['dir'] ?? $dir; + $dir4= $reqData['order']['3']['dir'] ?? $dir; + $papel_id = $reqData['papel_id'] ?? -1; $isRotativa = $reqData['isRotativa'] ?? -1; - $resourceData = $this->model->getResource_maquinas($search, $papel_id, $isRotativa)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + $resourceData = $this->model->getResource_maquinas($search, $papel_id, $isRotativa) + ->orderBy($order, $dir)->orderBy($order2, $dir2)->orderBy($order3, $dir3)->orderBy($order4, $dir4)->limit($length, $start)->get()->getResultObject(); return $this->respond(Collection::datatable( $resourceData, diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 93564244..ff49bedd 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -158,35 +158,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController /* - $this->viewData['formaPagoList'] = $this->getFormaPagoListItems(); - $this->viewData['tiposImpresionList'] = $this->getTiposImpresionListItems($presupuestoEntity->tipo_impresion_id ?? null); - $this->viewData['tipologiasLibroList'] = $this->getTipologiasLibroListItems($presupuestoEntity->tipologia_id ?? null); - - $this->viewData['ubicacionLibroList'] = $this->getUbicacionLibroListItems($presupuestoEntity->ubicacion_id ?? null); - $this->viewData['presupuestoEstadoList'] = $this->getPresupuestoEstadoListItems($presupuestoEntity->estado_id ?? null); - - $this->viewData['papelGenericoList'] = $this->getPapelGenericoListItems($presupuestoEntity->paginas_negro_papel_id ?? null); - $this->viewData['papelImpresionList'] = $this->getPapelImpresionListItems($presupuestoEntity->paginas_negro_papel_impresion_id ?? null); - $this->viewData['maquinaList'] = $this->getMaquinaListItems($presupuestoEntity->paginas_negro_maquina_id ?? null); - $this->viewData['maquinasTarifasImpresionList'] = $this->getMaquinasTarifasImpresionListItems($presupuestoEntity->paginas_negro_tarifa_impresion_id ?? null); - $this->viewData['papelGenericoList2'] = $this->getPapelGenericoListItems2($presupuestoEntity->paginas_color_papel_id ?? null); - $this->viewData['papelImpresionList2'] = $this->getPapelImpresionListItems2($presupuestoEntity->paginas_color_papel_impresion_id ?? null); - $this->viewData['maquinaList2'] = $this->getMaquinaListItems2($presupuestoEntity->paginas_color_maquina_id ?? null); - $this->viewData['maquinasTarifasImpresionList2'] = $this->getMaquinasTarifasImpresionListItems2($presupuestoEntity->paginas_color_tarifa_impresion_id ?? null); - $this->viewData['papelGenericoList3'] = $this->getPapelGenericoListItems3($presupuestoEntity->paginas_portada_papel_id ?? null); - $this->viewData['papelImpresionList3'] = $this->getPapelImpresionListItems3($presupuestoEntity->paginas_portada_papel_impresion_id ?? null); - $this->viewData['maquinaList3'] = $this->getMaquinaListItems3($presupuestoEntity->paginas_portada_maquina_id ?? null); - $this->viewData['maquinasTarifasImpresionList3'] = $this->getMaquinasTarifasImpresionListItems3($presupuestoEntity->paginas_portada_tarifa_impresion_id ?? null); - $this->viewData['papelGenericoList4'] = $this->getPapelGenericoListItems4($presupuestoEntity->paginas_cubierta_papel_id ?? null); - $this->viewData['papelImpresionList4'] = $this->getPapelImpresionListItems4($presupuestoEntity->paginas_cubierta_papel_impresion_id ?? null); - $this->viewData['maquinaList4'] = $this->getMaquinaListItems4($presupuestoEntity->paginas_cubierta_maquina_id ?? null); - $this->viewData['maquinasTarifasImpresionList4'] = $this->getMaquinasTarifasImpresionListItems4($presupuestoEntity->paginas_cubierta_tarifa_impresion_id ?? null); - $this->viewData['userList'] = $this->getUserListItems($presupuestoEntity->total_confirmado_user_id ?? null); - $this->viewData['userList2'] = $this->getUserListItems2($presupuestoEntity->aprobado_user_id ?? null); - $this->viewData['userList3'] = $this->getUserListItems3($presupuestoEntity->pedido_espera_user_id ?? null); - $this->viewData['paginasCubiertaList'] = $this->getPaginasCubiertaOptions(); - $this->viewData['paginasPortadaList'] = $this->getPaginasPortadaOptions(); - */ $this->viewData['formAction'] = route_to('createCosidotapablanda'); $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('Presupuestos.moduleTitleCosidoTB') . ' ' . lang('Basic.global.addNewSuffix'); @@ -397,9 +368,9 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - $table_type = $reqData['table_type'] ?? null; + $type = $reqData['type'] ?? null; - if (is_null($table_type)) { + if (is_null($type)) { if (!isset($reqData['draw']) || !isset($reqData['columns'])) { $errstr = 'No data available in response to this specific request.'; $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); @@ -417,7 +388,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController - if (is_null($table_type)) { + if (is_null($type)) { $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); foreach ($resourceData as $item) : if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : @@ -456,40 +427,74 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController endforeach; } else { - switch ($table_type) { - case 'comp_int_bn': + $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, + 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto + ); - $datosPedido = (object)array( - 'paginas' => intval($reqData['paginas']) ?? 0, - 'tirada' => intval($reqData['tirada']) ?? 0, - 'merma' => intval($reqData['merma']) ?? 0, - 'ancho' => intval($reqData['alto']) ?? 100000, - 'alto' => intval($reqData['ancho']) ?? 100000, - 'isCosido' => true, // 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; - $papel_generico = [ - 'id' => $reqData['papel_generico_id'] ?? 0, - 'nombre' => $reqData['papel_generico'] ?? "", - ]; - - $gramaje = $reqData['gramaje'] ?? 0; + if ($type=='interior') { - $resourceData = $this->getCompBnData($datosPedido, $papel_generico, $gramaje); - - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'lineas' => $resourceData, - $csrfTokenName => $newTokenHash - ]; - - return $this->respond($data); - break; - - default: - break; + $resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'lineas' => $resourceData, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); } + else if ($type=='interior_rot') { + + $paginas = (object)array( + 'negro' => intval($reqData['paginas_negro']) ?? 0, + 'color' => intval($reqData['paginas_color']) ?? 0, + ); + + $resourceData = $this->getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'lineas' => $resourceData, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + } + else if ($type=='cubierta') { + + $datosPedido->solapas = $reqData['solapas']; + $datosPedido->solapas_ancho = $reqData['solapas_ancho']; + + $resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'lineas' => $resourceData, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + } + + } return $this->respond(Collection::datatable( @@ -502,18 +507,37 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } } - private function getCompBnData($datosPedido, $papel_generico, $gramaje) + public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq) { - $uso = 'interior'; - $tipo = 'negro'; + $tipo = $isColor? ($isHq?'colorhq':'color'): ($isHq?'negrohq':'negro'); - $opciones_papel = array( - 'bn' => 1, - 'cubierta' => 0, - 'sobrecubierta' => 0, - 'rotativa' => 0, - ); + if( $uso == 'cubierta' ){ + $opciones_papel = array( + 'cubierta' => 1, + 'rotativa' => 0, + ); + } + else if ( $uso == 'sobrecubierta' ){ + $opciones_papel = array( + 'sobrecubierta' => 1, + 'rotativa' => 0, + ); + } + else if( $isColor ){ + $opciones_papel = array( + 'color' => 1, + 'rotativa' => 0, + ); + } + else{ + $opciones_papel = array( + 'bn' => 1, + 'rotativa' => 0, + ); + } + + // Se obtienen los papeles disponibles $papelimpresionmodel = new PapelImpresionModel(); $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( @@ -522,13 +546,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController options: $opciones_papel ); - $lineas = array(); // Para cada papel, se obtienen las maquinas disponibles foreach ($papeles as $papel) { + $maquinamodel = new MaquinaModel(); $maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto( - is_rotativa: $papel->rotativa, + is_rotativa: 0, tarifa_tipo: $tipo, tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, @@ -536,8 +560,12 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // Se recorren las máquinas y se calcula el coste de linea por cada una foreach ($maquinas as $maquina) { + $tarifamodel = new MaquinasTarifasImpresionModel(); $tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo); + if(!is_float($tarifa)){ + continue; + } $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); $linea['fields']['maquina'] = $maquina->maquina; $linea['fields']['maquina_id'] = $maquina->maquina_id; @@ -551,7 +579,123 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController array_push($lineas, $linea); } } + return $lineas; + } + public function getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas) + { + + $uso = 'interior'; + + $tipo = $paginas->color>0? 'color': 'negro'; + + + $parametrosRotativa = (object)array( + 'a_favor_fibra' => 0, // este parametro se cambia para comprobar + // en las dos direcciones (menos en rustica fresada que es siempre 1) + 'bnPages' => $paginas->negro, + 'colorPages' => $paginas->color, + 'rotativa_gota_negro' => 0, + 'rotativa_gota_color' => 0, + ); + + $opciones_papel = array( + 'rotativa' => 1, + ); + + $tipo = array(); + if( $paginas->color > 0 ){ + $tipo[] = 'color'; + $opciones_papel['color'] = 1; + } + if( $paginas->negro > 0 ){ + $opciones_papel['bn'] = 1; + $tipo[] = 'negro'; + } + + // Se obtienen los papeles disponibles + $papelimpresionmodel = new PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: $papel_generico['id'], + gramaje: $gramaje, + options: $opciones_papel + ); + + $lineas = array(); + // Para cada papel, se obtienen las maquinas disponibles + foreach ($papeles as $papel) { + + $papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel(); + $datosTipologias = $papelImpresionTipologiaModel + ->findTipologiasForPapelImpresion($papel->id, $parametrosRotativa->colorPages>0?'color':'negro') + ->get()->getResultObject(); + + $parametrosRotativa->rotativa_gota_negro = $datosTipologias[0]->gota_negro; + $parametrosRotativa->rotativa_gota_color = $datosTipologias[0]->gota_color; + $parametrosRotativa->rotativa_negro = $datosTipologias[0]->negro; + $parametrosRotativa->rotativa_cyan = $datosTipologias[0]->cyan; + $parametrosRotativa->rotativa_magenta = $datosTipologias[0]->magenta; + $parametrosRotativa->rotativa_amarillo = $datosTipologias[0]->amarillo; + + $maquinamodel = new MaquinaModel(); + + $maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto( + is_rotativa: 1, + tarifa_tipo: $tipo, + tirada: $datosPedido->tirada + $datosPedido->merma, + papel_impresion_id: $papel->id, + ); + + // Se recorren las máquinas y se calcula el coste de linea por cada una + foreach ($maquinas as $maquina) { + + for ($i = 0; $i <= 1; $i++) { + + $parametrosRotativa->a_favor_fibra = $i; + + $tarifamodel = new MaquinasTarifasImpresionModel(); + $tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, is_array($tipo)?'color':$tipo); + if(!is_float($tarifa)){ + continue; + } + + // precio del pliego de impresion + $linea['fields'] = PresupuestoService::getCostesLineaRotativa($maquina, $papel, $datosPedido, $parametrosRotativa); + + $precio_pliego_impresion = PresupuestoService::getPrecioPliego($maquina, $papel, $datosPedido->paginas); + $linea['fields']['precios_pliegos'] = $precio_pliego_impresion; + + $linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $precio_pliego_impresion; + // Precio papel pedido + $linea['fields']['precio_pedido'] = $linea['fields']['precio_libro'] * ($datosPedido->tirada + $datosPedido->merma); + + $linea['fields']['a_favor_fibra'] = $parametrosRotativa->a_favor_fibra; + $linea['fields']['maquina'] = $maquina->maquina; + $linea['fields']['maquina_id'] = $maquina->maquina_id; + $linea['fields']['papel_impresion'] = $papel->nombre; + $linea['fields']['papel_impresion_id'] = $papel->id; + $linea['fields']['paginas'] = $datosPedido->paginas; + $linea['fields']['gramaje'] = $gramaje; + $linea['fields']['papel_generico_id'] = $papel_generico['id']; + $linea['fields']['papel_generico'] = $papel_generico['nombre']; + + $linea['fields']['posicion_formas'] = $parametrosRotativa->a_favor_fibra ? 'h' : 'v'; + $linea['fields']['num_formas_horizontales'] = floor($linea['fields']['factor_anchura']); + $linea['fields']['num_formas_verticales'] = floor($linea['fields']['factor_altura']); + + // impresion + $linea['fields']['precio_click'] = $tarifa; + $linea['fields']['precio_click_pedido'] = $linea['fields']['clicks_pedido'] * $linea['fields']['precio_click']; + + + // total linea rotativa + $linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + $linea['fields']['precio_click_pedido'] + $linea['fields']['precio_tinta'] + + $linea['fields']['total_corte']; + + array_push($lineas, $linea); + } + } + } return $lineas; } @@ -585,14 +729,15 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $reqData = $this->request->getPost(); $tipo = $reqData['tipo'] ?? null; + $uso = $reqData['uso'] ?? null; $datos = $reqData['datos'] ?? null; - $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; + //$searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; if ($tipo == 'gramaje') { // En este caso contiene el nombre del papel generico $model = new PapelGenericoModel(); - $menu = $model->getGramajeComparador($datos, $searchStr); + $menu = $model->getGramajeComparador($datos, $uso ); } diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index c6d7621a..758d560e 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -3,11 +3,12 @@ namespace App\Controllers; use App\Controllers\BaseController; +use App\Models\Configuracion\MaquinasTarifasImpresionModel; +use App\Models\Configuracion\MaquinaModel; +use App\Services\PresupuestoService; class Test extends BaseController { - - function __construct() { @@ -15,21 +16,237 @@ class Test extends BaseController public function index() { - //PresupuestoService::test(); - return view('themes/backend/vuexy/form/test_js/viewTest'); + $this->testLineasIntPlanaCubierta(); } - function test_js() + public function testGetPrecioPliegoRotativa() { - /*$this->response->setHeader('Content-Type', 'text/javascript'); - return view('themes/backend/vuexy/form/test_js/test_js.js');*/ + $paginas=240; + + $papel_impresion = (object)array( + 'id' => 198, + 'gramaje' => 90, + 'precio_tonelada'=> 1600 + ); + + $maquina = (object)array( + //'id' => 48, + 'alto' => 800, + 'ancho' => 520, + ); + + $precio = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $paginas); + + var_dump($precio); } - public function pruebaJJO() + public function testGetMaquinasFromTarifas() { - //PresupuestoService::test2(); + $maquinamodel = new MaquinaModel(); + + //$tarifa_tipo = ['negro', 'color']; + //$tarifa_tipo = 'color'; + $tarifa_tipo = 'negro'; + $papel_impresion_id = 5; + $maquina = $maquinamodel->getMaquinaImpresionForPresupuesto(1, $tarifa_tipo, 100, $papel_impresion_id); + echo '
'; + var_dump($maquina); + echo ''; + } + + public static function testLineasIntPlana() + { + $uso = 'negro'; + $tipo = 'color'; + $datosPedido = (object)array( + 'paginas' => 200, + 'tirada' => 500, + 'merma' => 10, + 'merma_portada' => 10, + 'ancho' => 165, + 'alto' => 148, + 'isCosido' => true, + ); + + $maquina_model = new \App\Models\Configuracion\MaquinaModel(); + + $opciones_papel = array( + 'bn' => 1, + 'cubierta' => 0, + 'sobrecubierta' => 0, + 'rotativa' => 0, + ); + $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: 4, + gramaje: 90, + options: $opciones_papel + ); + foreach ($papeles as $papel) { + echo '-------------------------------'; + $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( + is_rotativa: $papel->rotativa, + tarifa_tipo: 'negro', + tirada: $datosPedido->tirada + $datosPedido->merma, + papel_impresion_id: $papel->id, + ); + + foreach ($maquinas as $maquina) { + + echo '----------------------------
'; + var_dump($linea); + echo ''; + } + } + } + + + public static function testLineasIntPlanaCubierta() + { + echo '
';
+ $uso = 'cubierta';
+ $tipo = 'color';
+ $datosPedido = (object)array(
+ 'paginas' => 200,
+ 'tirada' => 500,
+ 'merma' => 10,
+ 'merma_portada' => 10,
+ 'ancho' => 165,
+ 'alto' => 148,
+ 'isCosido' => true,
+ 'solapas' => 0,
+ 'solapas_ancho' => 0,
+ );
+
+ $maquina_model = new \App\Models\Configuracion\MaquinaModel();
+
+ $opciones_papel = array(
+ 'color' => 1,
+ 'cubierta' => 1,
+ 'sobrecubierta' => 0,
+ 'rotativa' => 0,
+ );
+ $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel();
+ $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
+ papel_generico_id: 3,
+ gramaje: 100,
+ options: $opciones_papel
+ );
+ foreach ($papeles as $papel) {
+ echo '-------------------------------';
+ var_dump($papel);
+ $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto(
+ is_rotativa: $papel->rotativa,
+ tarifa_tipo: 'color',
+ tirada: $datosPedido->tirada + $datosPedido->merma_portada,
+ papel_impresion_id: $papel->id,
+ );
+
+ foreach ($maquinas as $maquina) {
+
+ echo '----------------------------
';
+ var_dump($maquina->maquina);
+ var_dump($papel->nombre);
+ $tarifa = (new \App\Models\Configuracion\MaquinasTarifasImpresionModel())->getTarifa($maquina->maquina_id, $uso, $tipo);
+ $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
+
+ var_dump($linea);
+
+ }
+ }
+ echo '';
+ }
+
+
+
+ public static function testLineasIntRotativa()
+ {
+
+ $uso = 'interior';
+ $tipo = 'negro';
+
+
+
+ $datosPedido = (object)array(
+ 'paginas' => 240,
+ 'tirada' => 100,
+ 'merma' => 10,
+ 'merma_portada' => 10,
+ 'ancho' => 150,
+ 'alto' => 210,
+ 'isCosido' => true,
+ );
+
+ $parametrosRotativa = (object)array(
+ 'a_favor_fibra' => 0,
+ 'bnPages' => 240,
+ 'colorPages' => 0,
+ 'rotativa_gota_negro' => 0,
+ 'rotativa_gota_color' => 0,
+ );
+
+ $maquina_model = new \App\Models\Configuracion\MaquinaModel();
+
+ $opciones_papel = array(
+ 'bn' => 1,
+ 'cubierta' => 0,
+ 'sobrecubierta' => 0,
+ 'rotativa' => 1,
+ );
+ $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel();
+ $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
+ papel_generico_id: 4,
+ gramaje: 90,
+ options: $opciones_papel
+ );
+
+
+ foreach ($papeles as $papel) {
+
+ $papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel();
+ $datosTipologias = $papelImpresionTipologiaModel
+ ->findTipologiasForPapelImpresion($papel->id, $parametrosRotativa->colorPages>0?'color':'negro')
+ ->get()->getResultObject();
+ echo ''; + var_dump($papel->id); + var_dump($datosTipologias); + echo ''; + $parametrosRotativa->rotativa_gota_negro = $datosTipologias[0]->gota_negro; + $parametrosRotativa->rotativa_gota_color = $datosTipologias[0]->gota_color; + $parametrosRotativa->rotativa_negro = $datosTipologias[0]->negro; + $parametrosRotativa->rotativa_cyan = $datosTipologias[0]->cyan; + $parametrosRotativa->rotativa_magenta = $datosTipologias[0]->magenta; + $parametrosRotativa->rotativa_amarillo = $datosTipologias[0]->amarillo; + + echo '-------------------------------'; + $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( + is_rotativa: $papel->rotativa, + tarifa_tipo: 'negro', + tirada: $datosPedido->tirada + $datosPedido->merma, + papel_impresion_id: $papel->id, + ); + + + + foreach ($maquinas as $maquina) { + + echo '----------------------------
'; + var_dump($linea); + echo ''; + } + } } } \ No newline at end of file diff --git a/ci4/app/Entities/Configuracion/Maquina.php b/ci4/app/Entities/Configuracion/Maquina.php index c88ba673..97b3674a 100644 --- a/ci4/app/Entities/Configuracion/Maquina.php +++ b/ci4/app/Entities/Configuracion/Maquina.php @@ -28,8 +28,8 @@ class Maquina extends \CodeIgniter\Entity\Entity "velocidad_corte" => 0.0, "precio_hora_corte" => 0.0, "metrosxminuto" => 0.0, - "forzar_num_formas_horizontales_portada" => null, - "forzar_num_formas_verticales_portada" => null, + "forzar_num_formas_horizontales_cubierta" => null, + "forzar_num_formas_verticales_cubierta" => null, "observaciones" => "", "is_deleted" => 0, "created_at" => null, @@ -56,8 +56,8 @@ class Maquina extends \CodeIgniter\Entity\Entity "precio_tinta_color" => "float", "velocidad_corte" => "float", "precio_hora_corte" => "float", - "forzar_num_formas_horizontales_portada" => "?int", - "forzar_num_formas_verticales_portada" => "?int", + "forzar_num_formas_horizontales_cubierta" => "?int", + "forzar_num_formas_verticales_cubierta" => "?int", "is_deleted" => "int", "user_created_id" => "int", "user_updated_id" => "int", diff --git a/ci4/app/Language/en/Maquinas.php b/ci4/app/Language/en/Maquinas.php index 443c0bdd..5445dfdf 100644 --- a/ci4/app/Language/en/Maquinas.php +++ b/ci4/app/Language/en/Maquinas.php @@ -54,12 +54,12 @@ return [ 'greater_than' => 'The field {field} must be greater than {param}', ], - 'forzar_num_formas_horizontales_portada' => [ + 'forzar_num_formas_horizontales_cubierta' => [ 'integer' => 'The {field} field must contain an integer.', ], - 'forzar_num_formas_verticales_portada' => [ + 'forzar_num_formas_verticales_cubierta' => [ 'integer' => 'The {field} field must contain an integer.', ], diff --git a/ci4/app/Language/en/Presupuestos.php b/ci4/app/Language/en/Presupuestos.php index 843e0a33..2b1e211a 100644 --- a/ci4/app/Language/en/Presupuestos.php +++ b/ci4/app/Language/en/Presupuestos.php @@ -59,6 +59,27 @@ return [ 'retractilado5' => 'Shrink-wrapping in packs of 5', 'Guardas' => 'Endpapers', 'fajaColor' => 'Print color band ', + 'compInteriorPlana' => 'Interior in flat machine', + 'compInteriorRotativa' => 'Interior in rotary', + 'compCubiertaSobrecubierta' => 'Cover and dust jacket', + 'tipo' => 'Type', + 'marca' => 'Brand', + 'maquina' => 'Machine', + 'numeroPliegos' => 'Sheets No.', + 'pliegosPedido' => 'Sheets order', + 'precioPliego' => 'Sheets price', + 'libro' => 'Book', + 'totalPapelPedido' => 'Total paper order', + 'lomo' => 'Spine', + 'peso' => 'Weight', + 'click' => 'Click', + 'totalClicks' => 'Total clicks', + 'precioPagNegro' => 'Pages black price', + 'precioPagColor' => 'Pages color price', + 'totalTinta' => 'Total ink', + 'totalCorte' => 'Total cut', + 'total' => 'Total', + 'aFavorFibra' => 'In fiber direction', 'cubierta' => 'Cover', 'sobrecubierta' => 'Dust jacket', 'encuadernacion' => 'Binding', @@ -66,6 +87,13 @@ return [ 'solapasAnchoCubierta' => 'Cover dust jacket width', '1cara' => '1 side', '2caras' => '2 sides', + 'bn' => 'BW', + 'bnhq' => 'BWHQ', + 'color' => 'Colour', + 'colorhq' => 'ColourHQ', + 'rotativa' => 'Rotary', + 'si' => 'Yes', + 'no' => 'No', /* '4x0' => '4x0', '4x4' => '4x4', diff --git a/ci4/app/Language/es/Maquinas.php b/ci4/app/Language/es/Maquinas.php index 719665ad..34c932e9 100644 --- a/ci4/app/Language/es/Maquinas.php +++ b/ci4/app/Language/es/Maquinas.php @@ -54,12 +54,12 @@ return [ 'greater_than' => 'El campo {field} debe ser mayor que {param}', ], - 'forzar_num_formas_horizontales_portada' => [ + 'forzar_num_formas_horizontales_cubierta' => [ 'integer' => 'El campo {field} debe contener un número entero.', ], - 'forzar_num_formas_verticales_portada' => [ + 'forzar_num_formas_verticales_cubierta' => [ 'integer' => 'El campo {field} debe contener un número entero.', ], diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 82247f9d..3fad87f4 100644 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -70,21 +70,30 @@ return [ 'libro' => 'Libro', 'totalPapelPedido' => 'Total papel pedido', 'lomo' => 'Lomo', - 'peso' => 'Peso', - 'click' => 'Click', - 'totalClicks' => 'Total clicks', - 'precioPagNegro' => 'Precio pág. negro', - 'precioPagColor' => 'Precio pág. color', - 'totalTinta' => 'Total tinta', - 'totalCorte' => 'Total corte', - 'total' => 'Total', - 'cubierta' => 'Cubierta', - 'sobrecubierta' => 'Sobrecubierta', - 'encuadernacion' => 'Encuadernación', - 'solapasCubierta' => 'Solapas cubierta', - 'solapasAnchoCubierta' => 'Ancho solapas cubierta', - '1cara' => '1 cara', - '2caras' => '2 caras', + 'peso' => 'Peso', + 'click' => 'Click', + 'totalClicks' => 'Total clicks', + 'precioPagNegro' => 'Precio pág. negro', + 'precioPagColor' => 'Precio pág. color', + 'totalTinta' => 'Total tinta', + 'totalCorte' => 'Total corte', + 'total' => 'Total', + 'aFavorFibra' => 'A favor fibra', + 'cubierta' => 'Cubierta', + 'sobrecubierta' => 'Sobrecubierta', + 'encuadernacion' => 'Encuadernación', + 'solapasCubierta' => 'Solapas cubierta', + 'solapasAnchoCubierta' => 'Ancho solapas cubierta', + '1cara' => '1 cara', + '2caras' => '2 caras', + 'bn' => 'BN', + 'bnhq' => 'BNHQ', + 'color' => 'Color', + 'colorhq' => 'ColorHQ', + 'rotativa' => 'Rotativa', + 'si' => 'Si', + 'no' => 'No', + 'servicioAcabado' => 'Servicio de acabado', 'servicioPreimpresion' => 'Servicio de preimpresión', 'servicioEncuadernado' => 'Servicio de encuadernado', @@ -299,6 +308,200 @@ return [ ], + + + /* '4x0' => '4x0', + '4x4' => '4x4', + 'aprobadoAt' => 'Aprobado At', + 'aprobadoJsonData' => 'Aprobado Json Data', + 'aprobadoUserId' => 'Aprobado User', + 'autor' => 'Autor', + 'baseImponible' => 'Base Imponible', + 'catalogoId' => 'Catalogo ID', + 'causaCancelacion' => 'Causa Cancelacion', + 'coleccion' => 'Coleccion', + 'comentarios' => 'Comentarios', + 'comentariosPdf' => 'Comentarios Pdf', + 'comentariosSafekat' => 'Comentarios Safekat', + 'comentariosTarifa' => 'Comentarios Tarifa', + 'comparadorJsonData' => 'Comparador Json Data', + 'cosido' => 'Cosido', + 'createdAt' => 'Created At', + 'cubiertas' => 'Cubiertas', + 'cubiertasAncho' => 'Cubiertas Ancho', + 'deletedAt' => 'Deleted At', + 'descuento' => 'Descuento', + 'enEspera' => 'EN Espera', + 'enProduccion' => 'EN Produccion', + 'enviosRecogeCliente' => 'Envios Recoge Cliente', + 'estadoId' => 'Estado', + 'facturaId' => 'Factura ID', + 'fechaEncuardenadoAt' => 'Fecha Encuardenado At', + 'fechaEntregaRealAt' => 'Fecha Entrega Real At', + 'fechaEntregaRealWarning' => 'Fecha Entrega Real Warning', + 'fechaExternoAt' => 'Fecha Externo At', + 'fechaFerroSubidoAt' => 'Fecha Ferro Subido At', + 'fechaImpresionAt' => 'Fecha Impresion At', + 'ferro' => 'Ferro', + 'ferroDigital' => 'Ferro Digital', + 'formaPagoId' => 'Forma Pago', + 'forzarTotal' => 'Forzar Total', + 'imagenesBnInterior' => 'Imagenes Bn Interior', + 'isDeleted' => 'Is Deleted', + 'isbn' => 'Isbn', + 'isdig' => 'Isdig', + 'lomo' => 'Lomo', + 'marcapaginas' => 'Marcapaginas', + 'margen' => 'Margen', + 'margenExtra' => 'Margen Extra', + 'margenManual' => 'Margen Manual', + 'merma' => 'Merma', + 'mermaPortada' => 'Merma Portada', + 'modoComparador' => 'Modo Comparador', + 'moduleTitle' => 'Presupuestos', + 'numeroEdicion' => 'Numero Edicion', + 'paginasColor' => 'Paginas Color', + 'paginasColorCheckImpresionTotal' => 'Paginas Color Check Impresion Total', + 'paginasColorCheckPapelTotal' => 'Paginas Color Check Papel Total', + 'paginasColorClick' => 'Paginas Color Click', + 'paginasColorFormaId' => 'Paginas Color Forma ID', + 'paginasColorGramaje' => 'Paginas Color Gramaje', + 'paginasColorLibro' => 'Paginas Color Libro', + 'paginasColorMano' => 'Paginas Color Mano', + 'paginasColorMaquinaId' => 'Paginas Color Maquina', + 'paginasColorPapelId' => 'Paginas Color Papel', + 'paginasColorPapelImpresionId' => 'Paginas Color Papel Impresion', + 'paginasColorPedido' => 'Paginas Color Pedido', + 'paginasColorPeso' => 'Paginas Color Peso', + 'paginasColorPliegosLibro' => 'Paginas Color Pliegos Libro', + 'paginasColorPliegosPedido' => 'Paginas Color Pliegos Pedido', + 'paginasColorPliegosPrecio' => 'Paginas Color Pliegos Precio', + 'paginasColorPosicion' => 'Paginas Color Posicion', + 'paginasColorPrecio' => 'Paginas Color Precio', + 'paginasColorTarifaImpresionId' => 'Paginas Color Tarifa Impresion', + 'paginasCubierta' => 'Paginas Cubierta', + 'paginasCubiertaCheckImpresionTotal' => 'Paginas Cubierta Check Impresion Total', + 'paginasCubiertaCheckPapelTotal' => 'Paginas Cubierta Check Papel Total', + 'paginasCubiertaClick' => 'Paginas Cubierta Click', + 'paginasCubiertaFormaId' => 'Paginas Cubierta Forma ID', + 'paginasCubiertaGramaje' => 'Paginas Cubierta Gramaje', + 'paginasCubiertaLibro' => 'Paginas Cubierta Libro', + 'paginasCubiertaMano' => 'Paginas Cubierta Mano', + 'paginasCubiertaMaquinaId' => 'Paginas Cubierta Maquina', + 'paginasCubiertaPapelId' => 'Paginas Cubierta Papel', + 'paginasCubiertaPapelImpresionId' => 'Paginas Cubierta Papel Impresion', + 'paginasCubiertaPedido' => 'Paginas Cubierta Pedido', + 'paginasCubiertaPeso' => 'Paginas Cubierta Peso', + 'paginasCubiertaPliegosLibro' => 'Paginas Cubierta Pliegos Libro', + 'paginasCubiertaPliegosPedido' => 'Paginas Cubierta Pliegos Pedido', + 'paginasCubiertaPliegosPrecio' => 'Paginas Cubierta Pliegos Precio', + 'paginasCubiertaPrecio' => 'Paginas Cubierta Precio', + 'paginasCubiertaTarifaImpresionId' => 'Paginas Cubierta Tarifa Impresion', + 'paginasNegro' => 'Paginas Negro', + 'paginasNegroCheckImpresionTotal' => 'Paginas Negro Check Impresion Total', + 'paginasNegroCheckPapelTotal' => 'Paginas Negro Check Papel Total', + 'paginasNegroClick' => 'Paginas Negro Click', + 'paginasNegroFormaId' => 'Paginas Negro Forma ID', + 'paginasNegroGramaje' => 'Paginas Negro Gramaje', + 'paginasNegroHq' => 'Paginas Negro Hq', + 'paginasNegroLibro' => 'Paginas Negro Libro', + 'paginasNegroMano' => 'Paginas Negro Mano', + 'paginasNegroMaquinaId' => 'Paginas Negro Maquina', + 'paginasNegroPapelId' => 'Paginas Negro Papel', + 'paginasNegroPapelImpresionId' => 'Paginas Negro Papel Impresion', + 'paginasNegroPedido' => 'Paginas Negro Pedido', + 'paginasNegroPeso' => 'Paginas Negro Peso', + 'paginasNegroPliegosLibro' => 'Paginas Negro Pliegos Libro', + 'paginasNegroPliegosPedido' => 'Paginas Negro Pliegos Pedido', + 'paginasNegroPliegosPrecio' => 'Paginas Negro Pliegos Precio', + 'paginasNegroPrecio' => 'Paginas Negro Precio', + 'paginasNegroTarifaImpresionId' => 'Paginas Negro Tarifa Impresion', + 'paginasPortada' => 'Paginas Portada', + 'paginasPortadaCheckImpresionTotal' => 'Paginas Portada Check Impresion Total', + 'paginasPortadaCheckPapelTotal' => 'Paginas Portada Check Papel Total', + 'paginasPortadaClick' => 'Paginas Portada Click', + 'paginasPortadaFormaId' => 'Paginas Portada Forma ID', + 'paginasPortadaGramaje' => 'Paginas Portada Gramaje', + 'paginasPortadaLibro' => 'Paginas Portada Libro', + 'paginasPortadaMano' => 'Paginas Portada Mano', + 'paginasPortadaMaquinaId' => 'Paginas Portada Maquina', + 'paginasPortadaPapelId' => 'Paginas Portada Papel', + 'paginasPortadaPapelImpresionId' => 'Paginas Portada Papel Impresion', + 'paginasPortadaPedido' => 'Paginas Portada Pedido', + 'paginasPortadaPeso' => 'Paginas Portada Peso', + 'paginasPortadaPliegosLibro' => 'Paginas Portada Pliegos Libro', + 'paginasPortadaPliegosPedido' => 'Paginas Portada Pliegos Pedido', + 'paginasPortadaPliegosPrecio' => 'Paginas Portada Pliegos Precio', + 'paginasPortadaPrecio' => 'Paginas Portada Precio', + 'paginasPortadaTarifaImpresionId' => 'Paginas Portada Tarifa Impresion', + 'papelFormatoAlto' => 'Papel Formato Alto', + 'papelFormatoAncho' => 'Papel Formato Ancho', + 'papelFormatoId' => 'Papel Formato', + 'papelFormatoPersonalizado' => 'Papel Formato Personalizado', + 'pedidoEsperaFecha' => 'Pedido Espera Fecha', + 'pedidoEsperaUserId' => 'Pedido Espera User', + 'pedidoLibroConjuntoId' => 'Pedido Libro Conjunto ID', + 'presupuesto' => 'Presupuesto', + 'presupuestoList' => 'Presupuesto List', + 'presupuestos' => 'Presupuestos', + 'recogerEnTaller' => 'Recoger EN Taller', + 'referenciaCliente' => 'Referencia Cliente', + 'responsable' => 'Responsable', + 'serieId' => 'Serie ID', + 'solapas' => 'Solapas', + 'solapasAncho' => 'Solapas Ancho', + 'tarifaClienteId' => 'Tarifa Cliente ID', + 'tipoImpresionId' => 'Tipo Impresion', + 'tipologiaId' => 'Tipologia', + 'tiradaAlternativaJsonData' => 'Tirada Alternativa Json Data', + 'total' => 'Total', + 'totalAcabado' => 'Total Acabado', + 'totalCalculado' => 'Total Calculado', + 'totalClick' => 'Total Click', + 'totalConfirmado' => 'Total Confirmado', + 'totalConfirmadoUpdateAt' => 'Total Confirmado Update At', + 'totalConfirmadoUserId' => 'Total Confirmado User', + 'totalDescuento' => 'Total Descuento', + 'totalEnvios' => 'Total Envios', + 'totalManipulado' => 'Total Manipulado', + 'totalMargen' => 'Total Margen', + 'totalMargenExtra' => 'Total Margen Extra', + 'totalPeso' => 'Total Peso', + 'totalPreimpresion' => 'Total Preimpresion', + 'totalPreimpresionMargen' => 'Total Preimpresion Margen', + 'totalPresupuesto' => 'Total Presupuesto', + 'ubicacionId' => 'Ubicacion', + 'updatedAt' => 'Updated At', + 'userCreatedId' => 'User Created', + 'userUpdateId' => 'User Update', + 'version' => 'Version', + 'wsExternoJsonData' => 'Ws Externo Json Data', + 'validation' => [ + 'aprobado_at' => [ + 'valid_date' => 'The {field} field must contain a valid date.', + + ], + + 'aprobado_json_data' => [ + 'max_length' => 'The {field} field cannot exceed {param} characters in length.', + + ], + + 'base_imponible' => [ + 'decimal' => 'The {field} field must contain a decimal number.', + + ], + + 'catalogo_id' => [ + 'integer' => 'The {field} field must contain an integer.', + + ], + + 'causa_cancelacion' => [ + 'max_length' => 'The {field} field cannot exceed {param} characters in length.', + + ], + 'coleccion' => [ 'max_length' => 'The {field} field cannot exceed {param} characters in length.', diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 3e85761c..fc88eea7 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -53,8 +53,8 @@ class MaquinaModel extends \App\Models\GoBaseModel "velocidad_corte", "precio_hora_corte", "metrosxminuto", - "forzar_num_formas_horizontales_portada", - "forzar_num_formas_verticales_portada", + "forzar_num_formas_horizontales_cubierta", + "forzar_num_formas_verticales_cubierta", "observaciones", "deleted_at", "is_deleted", @@ -95,11 +95,11 @@ class MaquinaModel extends \App\Models\GoBaseModel "label" => "Maquinas.duracionJornada", "rules" => "required|integer", ], - "forzar_num_formas_horizontales_portada" => [ + "forzar_num_formas_horizontales_cubierta" => [ "label" => "Maquinas.forzarNumFormasHorizontalesPortada", "rules" => "integer|permit_empty", ], - "forzar_num_formas_verticales_portada" => [ + "forzar_num_formas_verticales_cubierta" => [ "label" => "Maquinas.forzarNumFormasVerticalesPortada", "rules" => "integer|permit_empty", ], @@ -176,11 +176,11 @@ class MaquinaModel extends \App\Models\GoBaseModel "integer" => "Maquinas.validation.duracion_jornada.integer", "required" => "Maquinas.validation.duracion_jornada.required", ], - "forzar_num_formas_horizontales_portada" => [ - "integer" => "Maquinas.validation.forzar_num_formas_horizontales_portada.integer", + "forzar_num_formas_horizontales_cubierta" => [ + "integer" => "Maquinas.validation.forzar_num_formas_horizontales_cubierta.integer", ], - "forzar_num_formas_verticales_portada" => [ - "integer" => "Maquinas.validation.forzar_num_formas_verticales_portada.integer", + "forzar_num_formas_verticales_cubierta" => [ + "integer" => "Maquinas.validation.forzar_num_formas_verticales_cubierta.integer", ], "max" => [ "integer" => "Maquinas.validation.max.integer", @@ -277,7 +277,7 @@ class MaquinaModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.nombre AS nombre, t1.is_padre AS is_padre, t1.tipo AS tipo, t1.velocidad AS velocidad, t1.ancho AS ancho, t1.alto AS alto, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.alto_click AS alto_click, t1.min AS min, t1.max AS max, t1.duracion_jornada AS duracion_jornada, t1.orden_planning AS orden_planning, t1.is_rotativa AS is_rotativa, t1.precio_tinta_negro AS precio_tinta_negro, t1.is_tinta AS is_tinta, t1.precio_tinta_color AS precio_tinta_color, t1.velocidad_corte AS velocidad_corte, t1.precio_hora_corte AS precio_hora_corte, t1.metrosxminuto AS metrosxminuto, t1.forzar_num_formas_horizontales_portada AS forzar_num_formas_horizontales_portada, t1.forzar_num_formas_verticales_portada AS forzar_num_formas_verticales_portada, t1.observaciones AS observaciones, t2.nombre AS padre" + "t1.id AS id, t1.nombre AS nombre, t1.is_padre AS is_padre, t1.tipo AS tipo, t1.velocidad AS velocidad, t1.ancho AS ancho, t1.alto AS alto, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.alto_click AS alto_click, t1.min AS min, t1.max AS max, t1.duracion_jornada AS duracion_jornada, t1.orden_planning AS orden_planning, t1.is_rotativa AS is_rotativa, t1.precio_tinta_negro AS precio_tinta_negro, t1.is_tinta AS is_tinta, t1.precio_tinta_color AS precio_tinta_color, t1.velocidad_corte AS velocidad_corte, t1.precio_hora_corte AS precio_hora_corte, t1.metrosxminuto AS metrosxminuto, t1.forzar_num_formas_horizontales_cubierta AS forzar_num_formas_horizontales_cubierta, t1.forzar_num_formas_verticales_cubierta AS forzar_num_formas_verticales_cubierta, t1.observaciones AS observaciones, t2.nombre AS padre" ); $builder->join("lg_maquinas t2", "t1.padre_id = t2.id", "left"); @@ -306,8 +306,8 @@ class MaquinaModel extends \App\Models\GoBaseModel ->orLike("t1.velocidad_corte", $search) ->orLike("t1.precio_hora_corte", $search) ->orLike("t1.metrosxminuto", $search) - ->orLike("t1.forzar_num_formas_horizontales_portada", $search) - ->orLike("t1.forzar_num_formas_verticales_portada", $search) + ->orLike("t1.forzar_num_formas_horizontales_cubierta", $search) + ->orLike("t1.forzar_num_formas_verticales_cubierta", $search) ->orLike("t1.observaciones", $search) ->orLike("t2.id", $search) ->orLike("t1.id", $search) @@ -329,8 +329,8 @@ class MaquinaModel extends \App\Models\GoBaseModel ->orLike("t1.velocidad_corte", $search) ->orLike("t1.precio_hora_corte", $search) ->orLike("t1.metrosxminuto", $search) - ->orLike("t1.forzar_num_formas_horizontales_portada", $search) - ->orLike("t1.forzar_num_formas_verticales_portada", $search) + ->orLike("t1.forzar_num_formas_horizontales_cubierta", $search) + ->orLike("t1.forzar_num_formas_verticales_cubierta", $search) ->orLike("t1.observaciones", $search) ->orLike("t2.nombre", $search) ->groupEnd(); @@ -350,7 +350,11 @@ class MaquinaModel extends \App\Models\GoBaseModel ->select( "t1.id AS maquina_id, t1.nombre AS maquina, 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.alto_click AS alto_click" + t1.is_rotativa AS is rotativa, t1.alto_click AS alto_click, + t1.precio_tinta_negro AS precio_tinta_negro, t1.precio_tinta_color AS precio_tinta_color, + t1.velocidad_corte AS velocidad_corte, t1.precio_hora_corte AS precio_hora_corte, + t1.forzar_num_formas_horizontales_cubierta AS forzar_num_formas_horizontales_cubierta, + t1.forzar_num_formas_verticales_cubierta AS forzar_num_formas_verticales_cubierta" ) ->join("lg_maquinas_tarifas_impresion t2", "t1.id = t2.maquina_id", "left") ->join("lg_maquina_papel_impresion t3", "t1.id = t3.maquina_id", "left") @@ -360,12 +364,20 @@ class MaquinaModel extends \App\Models\GoBaseModel ->where("t1.tipo", "impresion") ->where("t1.is_rotativa", $is_rotativa) ->where("t2.is_deleted", 0) - ->where("t2.tipo", $tarifa_tipo) ->where("t3.papel_impresion_id", $papel_impresion_id) ->where("t3.active", 1) ->where("t1.min <=", $tirada) ->where("t1.max >=", $tirada); + if(is_array($tarifa_tipo)){ + foreach($tarifa_tipo as $tarifa){ + $builder->where("EXISTS (SELECT * FROM lg_maquinas_tarifas_impresion t2 WHERE t1.id=t2.maquina_id AND t2.tipo='{$tarifa}' AND t2.is_deleted=0)"); + } + } + else{ + $builder->where("t2.tipo", $tarifa_tipo); + } + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } } diff --git a/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php b/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php index f9d7a36e..f75dd5dd 100644 --- a/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php +++ b/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php @@ -29,6 +29,11 @@ class MaquinasPapelesImpresionModel extends \App\Models\GoBaseModel const SORTABLE_2 = [ 0 => "t1.active", 1 => "t2.nombre", + 2 => "t2.ancho", + 3 => "t2.alto", + 4 => "t2.ancho_impresion", + 5 => "t2.alto_impresion", + ]; diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index a956cfe4..33bdbefb 100644 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -130,7 +130,7 @@ class PapelGenericoModel extends \App\Models\GoBaseModel return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); } - public function getGramajeComparador(string $papel_generico_nombre="") + public function getGramajeComparador(string $papel_generico_nombre="", $uso="") { $builder = $this->db ->table($this->table . " t1") @@ -141,8 +141,21 @@ class PapelGenericoModel extends \App\Models\GoBaseModel ->where("t1.is_deleted", 0) ->where("t2.is_deleted", 0) + ->where("t2.isActivo", 1) ->where("t1.nombre", $papel_generico_nombre); + if($uso == 'bn') + $builder->where("t2.bn", 1); + else if ($uso == 'color') + $builder->where("t2.color", 1); + else if ($uso == 'cubierta') + $builder->where("t2.cubierta", 1); + else if ($uso == 'sobrecubierta') + $builder->where("t2.sobrecubierta", 1); + + + + $values = $builder->orderBy("t2.gramaje", "asc")->get()->getResultObject(); $id = 1; foreach ($values as $value){ diff --git a/ci4/app/Models/Configuracion/PapelImpresionTipologiaModel.php b/ci4/app/Models/Configuracion/PapelImpresionTipologiaModel.php index 356c4d9f..f5e47534 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionTipologiaModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionTipologiaModel.php @@ -109,18 +109,21 @@ class PapelImpresionTipologiaModel extends \App\Models\GoBaseModel return $result; } - public function findTipologiasForPapelImpresion(int $papelImpresionID){ + public function findTipologiasForPapelImpresion(int $papelImpresionID, $tipo=null){ $builder = $this->db ->table($this->table ) ->select("*") ->where("papel_impresion_id", $papelImpresionID); - + + if(!is_null($tipo)){ + $builder->where("tipo", $tipo); + } return $builder; - } + public function removeForPapelImpresion($papel_impresion_id){ $builder = $this->db ->table($this->table . " t1") diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 28438760..e428beed 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -9,68 +9,11 @@ use CodeIgniter\Config\BaseService; class PresupuestoService extends BaseService { + /** + * CONSTANTES USADAS PARA LOS CALCULOS + */ - public static function test() - { - $tarifa = (new \App\Models\Configuracion\MaquinasTarifasImpresionModel())->getTarifa(8, "interior", "negro"); - var_dump($tarifa); - } - - - public static function test2() - { - - $uso = 'interior'; - $tipo = 'negro'; - $datosPedido = (object)array( - 'paginas' => 200, - 'tirada' => 500, - 'merma' => 10, - 'merma_portada' => 10, - 'ancho' => 165, - 'alto' => 148, - 'isCosido' => true, - ); - - - $maquina_model = new \App\Models\Configuracion\MaquinaModel(); - - - $opciones_papel = array( - 'bn' => 1, - 'cubierta' => 0, - 'sobrecubierta' => 0, - 'rotativa' => 0, - ); - $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); - $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( - papel_generico_id: 4, - gramaje: 90, - options: $opciones_papel - ); - foreach ($papeles as $papel) { - echo '-------------------------------'; - $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( - is_rotativa: $papel->rotativa, - tarifa_tipo: 'negro', - tirada: $datosPedido->tirada + $datosPedido->merma, - papel_impresion_id: $papel->id, - ); - - foreach ($maquinas as $maquina) { - - echo '----------------------------
'; - var_dump($linea); - echo ''; - } - } - } - + const MARGEN_PAGINAS_ROTATIVA = 15.0; /** @@ -83,7 +26,7 @@ class PresupuestoService extends BaseService * -> paginas: numero de paginas por libro * -> tirada: numero de unidades a imprimir * -> merma: unidades que se añaden a la tirada - * -> merma_portada: unidades de merma para la portada + * * @param mixed $maquina * objeto con la siguiente estructura: * -> id: el id de la maquina @@ -99,19 +42,9 @@ class PresupuestoService extends BaseService { $response['fields'] = []; - switch ($uso) { - case 'interior': - $formas = PresupuestoService::getNumFormasPlanaInterior($maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido); - $response['fields'] = $formas; - break; - - case 'cubierta': - case 'sobrecubierta': - break; - - case 'rotativa': - default: - break; + if ($uso!='rotativa') { + $formas = PresupuestoService::getNumFormasPlana($uso, $maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido); + $response['fields'] = $formas; } if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') { @@ -155,9 +88,23 @@ class PresupuestoService extends BaseService } // cubierta o sobrecubierta (siempre a color) else if (($cubierta == 1 || $sobrecubierta == 1) && $rotativa == 0) { - } - // rotativa - else if ($rotativa == 1) { + // precio papel + $pliegos_libro = 1.0 / $response['fields']['num_formas']['value']; + $pliegos_pedido = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma); + $precio_libro = $pliegos_libro * $precio_pliego_impresion; + $precio_pedido = $precio_libro * ($datosPedido->tirada + $datosPedido->merma); + + $mano = PresupuestoService::computeLomoPortada($papel_impresion->espesor); + + // peso + $ancho_total = $datosPedido->solapas? $datosPedido->ancho + $datosPedido->solapas_ancho:$datosPedido->ancho; + $peso = PresupuestoService::computePeso($ancho_total, $datosPedido->alto, $papel_impresion->gramaje); + + // impresion + if ($tarifa) { + $precio_click = $tarifa; + $precio_click_pedido = $pliegos_pedido * $precio_click; + } } @@ -183,55 +130,179 @@ class PresupuestoService extends BaseService } - private static function getNumFormasPlanaInterior($maquina, $ancho, $alto, $isCosido) + /** + * Devuelve los calculos para la linea de rotativa. + */ + public static function getCostesLineaRotativa($maquina, $papel_impresion, $datosPedido, $parametrosRotativa) { - $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; + $data = []; - // horizontales - $h1 = floor($maquina->ancho_impresion / $anchoForCalculo); - $v1 = floor($maquina->alto_impresion / $alto); - $formas_h = $h1 * $v1; //p1 + $data['resolucion'] = 600; + $data['pulgada'] = 1 / 1000000000000.0; + $data['superficie'] = round((($datosPedido->ancho / 2.54) / 10) * (($datosPedido->alto / 2.54) / 10), 2); - // verticales - $h2 = floor($maquina->ancho_impresion / $alto); - $v2 = floor($maquina->alto_impresion / $anchoForCalculo); - $formas_v = $h2 * $v2; //p2 + // posicionamos paginas en función de a favor de fibra o no + + $anchoLibro = $datosPedido->ancho; + $altoLibro = $datosPedido->alto; + if (!$parametrosRotativa->a_favor_fibra) { + $anchoLibro = $datosPedido->alto; + $altoLibro = $datosPedido->ancho; + } + + $data['ancho'] = $anchoLibro; + $data['alto'] = $altoLibro; + + // si es cosido ancho x 2 + + if ($datosPedido->isCosido) { + if (!$parametrosRotativa->a_favor_fibra) { + $data['alto'] = $data['alto'] * 2; + } else { + $data['ancho'] = $data['ancho'] * 2; + } + } + + // calculo de papel y clicks + $factor_anchura = round($maquina->ancho_impresion / $data['ancho'], 2); + $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); + + $multiplicador_pliego = $datosPedido->isCosido ? 4 : 2; + $paginas_por_pliego = round(floor($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); + $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); + + $data['factor_altura'] = $factor_altura; + $data['factor_anchura'] = $factor_anchura; + $data['paginas_por_pliego'] = $paginas_por_pliego; + $data['pliegos_libro'] = $pliegos_libro; + $data['pliegos_pedido'] = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma); + $data['metros_papel_libro'] = $metros_papel_libro; + $data['metros_papel_total'] = $metros_papel_total; + $data['clicks_libro'] = $clicks_libro; + $data['clicks_pedido'] = $clicks_pedido; + + // calculo de tintas + $data['num_gotas_negro'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosRotativa->rotativa_negro / 100.0), 0); + $data['num_gotas_cyan'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosRotativa->rotativa_cyan / 100.0), 0); + $data['num_gotas_magenta'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosRotativa->rotativa_magenta / 100.0), 0); + $data['num_gotas_amarillo'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosRotativa->rotativa_amarillo / 100.0), 0); + + $pag_negro = $parametrosRotativa->bnPages; + $pag_color = 0; + if ($parametrosRotativa->colorPages>0) { + $pag_color = $parametrosRotativa->colorPages; + } + + // peso tintas + $data['peso_gotas_negro'] = round((($data['num_gotas_negro'] * $parametrosRotativa->rotativa_gota_negro * $data['pulgada']) / (17.91 / 20.0)) * $pag_negro * 1000, 6); + $data['peso_gotas_cyan'] = round((($data['num_gotas_cyan'] * $parametrosRotativa->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6); + $data['peso_gotas_magenta'] = round((($data['num_gotas_magenta'] * $parametrosRotativa->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6); + $data['peso_gotas_amarillo'] = round((($data['num_gotas_amarillo'] * $parametrosRotativa->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6); + + // costes de tintas + $data['peso_gotas_negro_pedido'] = round($data['peso_gotas_negro'], 2) * ($datosPedido->tirada + $datosPedido->merma); + $data['peso_gotas_cyan_pedido'] = round($data['peso_gotas_cyan'], 2) * ($datosPedido->tirada + $datosPedido->merma); + $data['peso_gotas_magenta_pedido'] = round($data['peso_gotas_magenta'], 2) * ($datosPedido->tirada + $datosPedido->merma); + $data['peso_gotas_amarillo_pedido'] = round($data['peso_gotas_amarillo'], 2) * ($datosPedido->tirada + $datosPedido->merma); + + // precio tinta + $data['precio_tinta'] = round( + round(($data['peso_gotas_negro_pedido'] / 1000.0) * $maquina->precio_tinta_negro, 2) + + round(($data['peso_gotas_cyan_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + + round(($data['peso_gotas_magenta_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + + round(($data['peso_gotas_amarillo_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + , 2); + + // precio pagina + $data['precio_pagina_negro'] = round($pag_negro ? $data['precio_tinta'] / ($pag_negro * ($datosPedido->tirada + $datosPedido->merma)) : 0, 6); + $data['precio_pagina_color'] = round($pag_color ? $data['precio_tinta'] / ($pag_color * ($datosPedido->tirada + $datosPedido->merma)) : 0, 6); + + // calculo de corte + $data['tiempo_corte'] = $maquina->velocidad_corte > 0 ? round($metros_papel_total / $maquina->velocidad_corte, 2) : 0; + $data['total_corte'] = round(($data['tiempo_corte'] / 60.0) * $maquina->precio_hora_corte, 2); + + $data['mano'] = PresupuestoService::computeLomoInterior($datosPedido->paginas, $papel_impresion->espesor); + // ($paginas / 2.0) * (($gramaje / 1000.0) * $papel_compra->mano); + + // peso + $data['peso'] = PresupuestoService::computePeso( + ancho: $datosPedido->isCosido ? $datosPedido->ancho / 2.0 : $datosPedido->ancho, + alto: $datosPedido->alto, + gramaje: $papel_impresion->gramaje, + paginas: $datosPedido->paginas + ); + + return $data; + } + + + private static function getNumFormasPlana($uso, $maquina, $ancho, $alto, $isCosido) + { + if($uso == 'cubierta' || $uso == 'sobrecubierta') { + if(property_exists($maquina, 'forzar_num_formas_horizontales_cubierta') && + property_exists($maquina, 'forzar_num_formas_horizontales_cubierta')){ + + if($maquina->forzar_num_formas_horizontales_cubierta > 0 && + $maquina->forzar_num_formas_horizontales_cubierta > 0){ + + $h1 = $maquina->forzar_num_formas_horizontales_cubierta; + $h2 = $maquina->forzar_num_formas_verticales_cubierta; + $num_formas = $h1 * $h2; + } + else{ + $num_formas == 0; + } + } + else{ + $num_formas == 0; + } + } + else{ + + if($uso != 'cubierta' && $uso != 'sobrecubierta'){ + $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; + } + else{ + $anchoForCalculo = $ancho; + } + + + // horizontales + $h1_temp = floor($maquina->ancho_impresion / $anchoForCalculo); + $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h1_temp); + // Si son mas de 2 formas + if(count($calles)>0) + $h1 = ($h1_temp * $anchoForCalculo + 2 * $calles[0]->externas + ($h1_temp - 1) * $calles[0]->internas < ($maquina->ancho)) ? $h1_temp : $h1_temp - 1; + else + $h1 = $h1_temp; + + $v1 = floor($maquina->alto_impresion / $alto); + $formas_h = $h1 * $v1; //p1 + + // verticales + + $h2_temp = floor($maquina->ancho_impresion / $alto); + $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h2_temp); + if(count($calles)>0) + $h2 = ($h2_temp * $anchoForCalculo + 2 * $calles[0]->externas + ($h2_temp - 1) * $calles[0]->internas < ($maquina->ancho)) ? $h2_temp : $h2_temp - 1; + else + $h2 = $h2_temp; + $v2 = floor($maquina->alto_impresion / $anchoForCalculo); + $formas_v = $h2 * $v2; //p2 - // hay que iterar hasta que las formas entren o el num_formas sean ==0 - // se checkea que entran en el numero de calles - // se obtiene la configuracion de las calles para esa maquina - $good_configuration = false; - do { $num_formas = ($formas_h > $formas_v) ? $formas_h : $formas_v; - $num_formas = $isCosido ? $num_formas * 2 : $num_formas; - - // solo hay calles para 2 formas o mas - if ((($formas_h > $formas_v) ? $h1 : $h2) > 1) { - - $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, ($formas_h > $formas_v) ? $h1 : $h2)[0]; - // se calcula el tamaño necesario para el numero de formas + el numero de calles internas - $size_needed = (($formas_h > $formas_v) ? $anchoForCalculo : $alto) * (($formas_h > $formas_v) ? $h1 : $h2) + - ((($formas_h > $formas_v) ? $h1 : $h2) - 1) * $calles->internas; - - // si el tamaño calculado entra en el area de impresion - if ($size_needed <= $maquina->ancho_impresion) - $good_configuration = true; - // en caso contrario se resta una forma donde corresponda para iterar otra vez - else { - if ($formas_h > $formas_v) { - $formas_h = ($formas_h - 1 > 0) ? $formas_h - 1 : 0; - } else { - $formas_v = ($formas_v - 1 > 0) ? $formas_v - 1 : 0; - } - } + if($uso != 'cubierta' && $uso != 'sobrecubierta'){ + $num_formas = $isCosido ? $num_formas * 2 : $num_formas; } - // Si solo hay una forma, tiene que entrar en el ancho de impresion - else if ((($formas_h > $formas_v) ? $h1 : $h2) == 1) { - if ((($formas_h > $formas_v) ? $h1 : $h2) < $maquina->ancho_impresion) { - $good_configuration = true; - } - } - } while ($num_formas != 0 && !$good_configuration); + } // si no hay formas se devuelve n/a if ($num_formas == 0) { @@ -252,14 +323,14 @@ class PresupuestoService extends BaseService } - private static function getPrecioPliego($maquina, $papel_impresion, $paginas) + public static function getPrecioPliego($maquina, $papel_impresion, $paginas) { $margen = (new \App\Models\Configuracion\PapelImpresionMargenModel())->getMargenFormPags($papel_impresion->id, $paginas); if (count($margen) > 0) { $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; - $precio_pliego = $papel_impresion->precio_tonelada * (1 + (floatval($margen[0]['margen']) / 100.0)) / 1000000 * $peso_por_pliego; + $precio_pliego = ($peso_por_pliego * $papel_impresion->precio_tonelada / 1000000.0) * (1 + (floatval($margen[0]['margen']) / 100.0)); - return round($precio_pliego*1.04, 6); // quitar el factor de 1.04 despues de los test + return round($precio_pliego, 6); } return -1; } @@ -279,6 +350,14 @@ class PresupuestoService extends BaseService return $lomo; } + /** + * Calcula la dimensión del lomo para portada y cubierta + */ + private static function computeLomoPortada($espesor) + { + return ($espesor * 2.0) / 1000.0; + } + /** * Devuelve el peso de un pedido. */ diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php index 62e8bedd..292c590a 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php @@ -101,16 +101,16 @@ = lang('Maquinas.forzarNumFormasHorizontalesPortada') ?> + name="forzar_num_formas_horizontales_cubierta" maxLength="11" class="form-control" + value="= old('forzar_num_formas_horizontales_cubierta', $maquina->forzar_num_formas_horizontales_cubierta) ?>">
= lang('MaquinasTarifasImpresions.negrohq') ?>
= lang('MaquinasTarifasImpresions.color') ?>
= lang('MaquinasTarifasImpresions.colorhq') ?>
= lang('PapelImpresion.cubierta') ?>
-