diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 202315e1..9d5da9ef 100755 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -554,6 +554,13 @@ $routes->group('presupuestodirecciones', ['namespace' => 'App\Controllers\Presup $routes->post('datatable', 'Presupuestodirecciones::datatable', ['as' => 'dataTableOfPresupuestoDirecciones']); }); +$routes->group('presupuestotiradasalternativas', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { + $routes->post('datatable', 'Presupuestotiradasalternativas::datatable', ['as' => 'dataTableOfPresupuestoTiradasAlternativas']); + $routes->post('datatable_2', 'Presupuestotiradasalternativas::datatable_2', ['as' => 'getTiradaData']); +}); + + + $routes->group( 'printpresupuestos', ['namespace' => 'App\Controllers\Pdf'], diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 549317ad..258d3dd3 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -53,7 +53,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->soft_delete = true; // Se indica el flag para los ficheros borrados $this->delete_flag = 1; - + $this->viewData = ['usingServerSideDataTable' => true]; // JJO parent::initController($request, $response, $logger); @@ -72,11 +72,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'tipo_impresion_id' => $tipo_impresion_id ]; - $viewData = array_merge($viewData, $this->getStringsFromTipoImpresion($tipo_impresion_id)); + $viewData = array_merge($viewData, $this->getStringsFromTipoImpresion($tipo_impresion_id)); $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class - - + + return view(static::$viewPath . 'viewCosidotapablandaList', $viewData); } @@ -102,7 +102,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController if (!isset($sanitizedData['papel_formato_id']) || $sanitizedData['papel_formato_id'] == null) { $sanitizedData['papel_formato_id'] = 0; - } + } $noException = true; if ($successfulResult = $this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : @@ -157,7 +157,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['formAction'] = route_to('createCosidotapablanda', $tipo_impresion_id); - $this->viewData = array_merge($this->viewData, $this->getStringsFromTipoImpresion($tipo_impresion_id)); + $this->viewData = array_merge($this->viewData, $this->getStringsFromTipoImpresion($tipo_impresion_id)); $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . $this->viewData['pageTitle'] . ' ' . lang('Basic.global.addNewSuffix'); @@ -167,7 +167,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController public function edit($requestedId = null) { - // JJO + // JJO $session = session(); if ($requestedId == null) : @@ -193,7 +193,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - + // JJO $sanitizedData['user_updated_id'] = $session->id_user; @@ -202,7 +202,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } if ($this->request->getPost('retractilado5') == null) { $sanitizedData['retractilado5'] = false; - } + } if ($this->request->getPost('ferro') == null) { $sanitizedData['ferro'] = false; } @@ -234,8 +234,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } $noException = true; - if($sanitizedData['papel_formato_id'] == null && $sanitizedData['papel_formato_ancho'] == null - && $sanitizedData['papel_formato_alto'] == null){ + if ( + $sanitizedData['papel_formato_id'] == null && $sanitizedData['papel_formato_ancho'] == null + && $sanitizedData['papel_formato_alto'] == null + ) { if ($this->request->isAJAX()) { $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -244,14 +246,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $csrfTokenName => $newTokenHash ]; return $this->respond($data); - - } - else{ + } else { $this->session->setFlashData('errorMessage', lang('Presupuestos.errores.formato_papel')); } $successfulResult = false; - } - else{ + } else { if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) @@ -292,11 +291,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $csrfTokenName => $newTokenHash ]; return $this->respond($data); - } - else{ + } else { return $this->redirect2listView('sweet-success', $message); } - + endif; else : if ($this->request->isAJAX()) { @@ -307,8 +305,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $csrfTokenName => $newTokenHash ]; return $this->respond($data); - } - else{ + } else { $this->session->setFlashData('sweet-success', $message); } endif; @@ -322,7 +319,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['isCosido'] = (new TipoPresupuestoModel())->get_isCosido($presupuestoEntity->tipo_impresion_id); $this->viewData['isTapaDura'] = (new TipoPresupuestoModel())->get_isTapaDura($presupuestoEntity->tipo_impresion_id); - if(!is_null($presupuestoEntity->comparador_json_data)) + if (!is_null($presupuestoEntity->comparador_json_data)) $this->viewData['comp_data'] = json_decode($presupuestoEntity->comparador_json_data); else $this->viewData['comp_data'] = ""; @@ -362,7 +359,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['serviciosPreimpresionList'] = (new PresupuestoPreimpresionesModel())->getResource($id)->get()->getResultObject(); // Direciones presupuesto - $this->viewData['presupuestoDirecciones'] = (new PresupuestoDireccionesModel())->getResource("",$id)->get()->getResultObject(); + $this->viewData['presupuestoDirecciones'] = (new PresupuestoDireccionesModel())->getResource("", $id)->get()->getResultObject(); $this->viewData['POD'] = $this->getPOD(); @@ -373,11 +370,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'prototipo' => 9, 'fajaColor' => 16, 'plegadoGuardas' => 62, - ]; + ]; $this->viewData['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id; // Cosido tapa blanda JJO - $this->viewData = array_merge($this->viewData, $this->getStringsFromTipoImpresion($presupuestoEntity->tipo_impresion_id)); + $this->viewData = array_merge($this->viewData, $this->getStringsFromTipoImpresion($presupuestoEntity->tipo_impresion_id)); $this->viewData['formAction'] = route_to('updateCosidotapablanda', $id); @@ -395,7 +392,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $reqData = $this->request->getPost(); $type = $reqData['type'] ?? null; - + if (is_null($type)) { if (!isset($reqData['draw']) || !isset($reqData['columns'])) { $errstr = 'No data available in response to this specific request.'; @@ -406,7 +403,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } $start = $reqData['start'] ?? 0; $length = $reqData['length'] ?? 5; - + $requestedOrder1 = $reqData['order']['0']['column'] ?? 0; $order1 = PresupuestoModel::SORTABLE[$requestedOrder1 >= 0 ? $requestedOrder1 : 0]; $dir1 = $reqData['order']['0']['dir'] ?? 'asc'; @@ -423,7 +420,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController if (is_null($type)) { $searchValues = get_filter_datatables_columns($reqData); - + $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) : @@ -468,7 +465,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $isColor = $reqData['color'] ?? false; $isHq = $reqData['hq'] ?? false; - + $datosPedido = (object)array( 'paginas' => intval($reqData['paginas']) ?? 0, 'tirada' => intval($reqData['tirada']) ?? 0, @@ -483,17 +480,17 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'id' => $reqData['papel_generico_id'] ?? 0, 'nombre' => $reqData['papel_generico'] ?? "", ]; - + $gramaje = $reqData['gramaje'] ?? 0; $cliente_id = $reqData['cliente_id'] ?? -1; - - - if ($type=='interior' || $type=='guardas') { + + + if ($type == 'interior' || $type == 'guardas') { $datosTipolog = $reqData['negro'] ?? null; - if(!is_null($datosTipolog)){ + if (!is_null($datosTipolog)) { $datosTipolog = []; $data = (object)array( 'negro' => intval($reqData['negro']) ?? 0, @@ -503,37 +500,35 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'cg' => intval($reqData['cg']) ?? 0, 'gota_negro' => intval($reqData['gota_negro']) ?? 0, 'gota_color' => intval($reqData['gota_color']) ?? 0, - ); + ); array_push($datosTipolog, $data); } - if ($type=='guardas') { + 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){ + if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { $datosPedido->isCosido = true; - }else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7){ + } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { $datosPedido->isCosido = false; } - } - + $a_favor_fibra = $reqData['a_favor_fibra'] ?? false; $resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog, $a_favor_fibra); - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ 'lineas' => $resourceData, $csrfTokenName => $newTokenHash ]; - + return $this->respond($data); - } - else if ($type=='interior_rot') { + } else if ($type == 'interior_rot') { $paginas = (object)array( 'negro' => intval($reqData['paginas_negro']) ?? 0, @@ -541,7 +536,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController ); $datosTipolog = $reqData['negro'] ?? null; - if(!is_null($datosTipolog)){ + if (!is_null($datosTipolog)) { $datosTipolog = []; $data = (object)array( 'negro' => intval($reqData['negro']) ?? 0, @@ -550,23 +545,22 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'amarillo' => intval($reqData['amarillo']) ?? 0, 'gota_negro' => intval($reqData['gota_negro']) ?? 0, 'gota_color' => intval($reqData['gota_color']) ?? 0, - ); + ); array_push($datosTipolog, $data); } $resourceData = $this->getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $cliente_id, $datosTipolog); - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ 'lineas' => $resourceData, $csrfTokenName => $newTokenHash ]; - + return $this->respond($data); - } - else if ($type=='cubierta' || $type=='sobrecubierta') { - + } else if ($type == 'cubierta' || $type == 'sobrecubierta') { + $datosPedido->solapas = $reqData['solapas']; $datosPedido->solapas_ancho = $reqData['solapas_ancho']; $datosPedido->lomo = $reqData['lomo']; @@ -575,17 +569,16 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido); // Cubierta y sobrecubierta siempre color HQ $resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, 1, $cliente_id); - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ 'lineas' => $resourceData, $csrfTokenName => $newTokenHash ]; - + return $this->respond($data); } - } return $this->respond(Collection::datatable( @@ -605,18 +598,18 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $reqData = $this->request->getPost(); $tipo = $reqData['tipo'] ?? ''; - - if($tipo=='lineasPresupuesto'){ - + + if ($tipo == 'lineasPresupuesto') { + $model = model('App\Models\Presupuestos\PresupuestoLineaModel'); - + $datos = $reqData['datos'] ?? null; - + $presupuesto_id = $reqData['presupuesto_id'] ?? -1; $model->where("presupuesto_id", $presupuesto_id)->delete(); - if($datos != null){ + if ($datos != null) { $model->insertLineasPresupuesto($presupuesto_id, $datos); } @@ -625,7 +618,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $data = [ $csrfTokenName => $newTokenHash ]; - + return $this->respond($data); } @@ -634,21 +627,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $data = [ $csrfTokenName => $newTokenHash ]; - - return $this->respond($data); + return $this->respond($data); } else { return $this->failUnauthorized('Invalid request', 403); } } - private function getStringsFromTipoImpresion($tipo_impresion_id){ - + private function getStringsFromTipoImpresion($tipo_impresion_id) + { + $breadcrumbTitle = ""; - switch ($tipo_impresion_id){ + switch ($tipo_impresion_id) { - // Fresado tapa dura + // Fresado tapa dura case 1: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleFresadoTD'); $viewData['isCosido'] = 0; @@ -656,15 +649,15 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $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; $viewData['isTapaDura'] = 0; - $breadcrumbTitle = lang("App.menu_libros_fresasdo_tapa_blanda"); + $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; @@ -672,7 +665,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $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; @@ -682,7 +675,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController default: return "A IMPLEMENTAR!"; - } // Breadcrumbs @@ -697,42 +689,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog = null, $a_favor_fibra = false) { - $tipo = $isColor? ($isHq?'colorhq':'color'): ($isHq?'negrohq':'negro'); + $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); + + $opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor); - if( $uso == 'cubierta' ){ - $opciones_papel = array( - 'cubierta' => 1, - //'color' => 1, - 'rotativa' => 0, - ); - } - else if ( $uso == 'sobrecubierta' ){ - $opciones_papel = array( - 'sobrecubierta' => 1, - //'color' => 1, - 'rotativa' => 0, - ); - } - else if ( $uso == 'guardas' ){ - $opciones_papel = array( - 'guardas' => 1, - //'color' => 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( @@ -749,7 +709,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto( is_rotativa: 0, tarifa_tipo: $tipo, - uso_tarifa: ($uso=='guardas')?'interior':$uso, + uso_tarifa: ($uso == 'guardas') ? 'interior' : $uso, tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, ); @@ -757,145 +717,25 @@ 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) { - if($maquina->is_inkjet){ - $parametrosInkjet = (object)array( - 'a_favor_fibra' => $a_favor_fibra, // este parametro se cambia para comprobar - // en las dos direcciones (menos en rustica fresada que es siempre 1) - 'bnPages' => $isColor?0:$datosPedido->paginas, - 'colorPages' => ($uso == 'guardas')?$datosPedido->paginas_impresion:($isColor?$datosPedido->paginas:0), - 'rotativa_gota_negro' => 0, - 'rotativa_gota_color' => 0, - ); - - $papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel(); - if(is_null($datosTipolog)){ - $datosTipologias = $papelImpresionTipologiaModel - ->findTipologiasForPapelImpresion($papel->id, $parametrosInkjet->colorPages>0?'color':'negro') - ->get()->getResultObject(); - - if(count($datosTipologias)==0){ - continue; - } - } - else{ - $datosTipologias = $datosTipolog; - } - $parametrosInkjet->rotativa_gota_negro = $datosTipologias[0]->gota_negro; - $parametrosInkjet->rotativa_gota_color = $datosTipologias[0]->gota_color; - $parametrosInkjet->rotativa_negro = $datosTipologias[0]->negro; - $parametrosInkjet->rotativa_cyan = $datosTipologias[0]->cyan; - $parametrosInkjet->rotativa_magenta = $datosTipologias[0]->magenta; - $parametrosInkjet->rotativa_amarillo = $datosTipologias[0]->amarillo; - $parametrosInkjet->rotativa_cg = $datosTipologias[0]->cg; - } + $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'] = $a_favor_fibra; + $data['datosTipolog'] = $datosTipolog; + $data['gramaje'] = $gramaje; - $tarifamodel = new MaquinasTarifasImpresionModel(); - - [$tarifaId, $tarifa, $tarifa_margen] = $tarifamodel->getTarifa($maquina->maquina_id, ($uso=='guardas')?'interior':$uso, $tipo); - - - if(!is_float($tarifa)){ + $linea = PresupuestoService::getLineaPresupuestoPlana($data); + + if(empty($linea)) continue; - } - if($maquina->is_inkjet){ - $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen, $parametrosInkjet->a_favor_fibra); - } - else{ - $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen); - } - - if(array_key_exists('error', $linea)){ - //array_push($lineas, $linea); for debug - continue; - } - - if($maquina->is_inkjet){ - // calculo de tintas - $linea['fields'] = array_merge($linea['fields'], PresupuestoService::calculoCosteTintas($maquina, $datosPedido, $parametrosInkjet)); - } - - $linea['fields']['tarifa_impresion_id'] = $tarifaId; - $linea['fields']['maquina'] = $maquina->maquina; - $linea['fields']['maquina_id'] = $maquina->maquina_id; - $linea['fields']['maquina_velocidad'] = $maquina->velocidad; - $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']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina( - $linea['fields']['precio_click_pedido'], - $linea['fields']['precio_click'], - $maquina->velocidad); - - $clientePreciosModel = new ClientePreciosModel(); - $config = (object)[ - "tipo" => ($uso=='guardas')?'interior':$uso, - "tipo_maquina" => $maquina->is_inkjet?'inkjet':'toner', - "tipo_impresion" => $tipo - ]; - $tiempo = PresupuestoService::getHorasMaquina( - $linea['fields']['precio_click_pedido'], - $linea['fields']['precio_click'], - $maquina->velocidad); - [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo); - - - if(is_null($precio_hora)){ - continue; - } - - $linea['fields']['tipo_maquina'] = $maquina->is_inkjet?'inkjet':'toner'; - $linea['fields']['precio_hora'] = $precio_hora*(1+$margen_precio_hora/100.0); - $linea['fields']['precio_hora_margen'] = $precio_hora*($margen_precio_hora/100.0); - $linea['fields']['horas_maquina'] = $tiempo; - $linea['fields']['precio_impresion_horas'] = $linea['fields']['precio_hora']*$tiempo; - $linea['fields']['margen_impresion_horas'] = $linea['fields']['precio_hora_margen']*$tiempo; - - // para guardas - if(\property_exists($datosPedido, 'paginas_impresion')){ - $linea['fields']['paginas_impresion'] = $datosPedido->paginas_impresion; - } - - if($maquina->is_inkjet){ - $linea['fields']['a_favor_fibra'] = $parametrosInkjet->a_favor_fibra; - $linea['fields']['paginas_color'] = $isColor?$datosPedido->paginas:0; - $linea['fields']['totalClicksPedido'] = $linea['fields']['precio_click_pedido']; - if( $uso != 'guardas' ){ - $linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']) * 2, 2); - } - else{ - if($datosPedido->paginas_impresion == 4) - $linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']), 2); - else if($datosPedido->paginas_impresion == 8) - $linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro'])*2, 2); - else - $linea['fields']['clicks_libro'] = 0; - } - $linea['fields']['clicks_pedido'] = round($linea['fields']['clicks_libro'] * ($datosPedido->tirada + $datosPedido->merma), 2); - [$ancho, $alto] = PresupuestoService::calculoDimForma($datosPedido, $parametrosInkjet); - $linea['fields']['factor_anchura'] = round($maquina->ancho_impresion / $ancho, 2); - $linea['fields']['factor_altura'] = round($maquina->alto_impresion / ($alto + PresupuestoService::MARGEN_PAGINAS_ROTATIVA), 2); - $linea['fields']['paginas_por_pliego'] = ($datosPedido->isCosido)?$linea['fields']['num_formas']['value']*2:$linea['fields']['num_formas']['value'] * 2; // Se multiplica *2 porque es doble cara - $linea['fields']['datosTipologias'] = $datosTipologias[0]; - $linea['fields']['total_impresion'] = - floatval($linea['fields']['precio_pedido']) + // papel - floatval($linea['fields']['precio_impresion_horas']) + // horas de maquina - floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido - floatval($linea['fields']['precio_tinta']); // tinta - } - else{ - $linea['fields']['total_impresion'] = floatval($linea['fields']['precio_pedido']) + // papel - floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido - floatval($linea['fields']['precio_impresion_horas']) ; // horas de maquina - } - - - array_push($lineas, $linea); } } @@ -908,11 +748,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $uso = 'interior'; - $tipo = $paginas->color>0? 'color': 'negro'; + $tipo = $paginas->color > 0 ? 'color' : 'negro'; $parametrosRotativa = (object)array( - 'a_favor_fibra' => $datosPedido->a_favor_fibra, + 'a_favor_fibra' => $datosPedido->a_favor_fibra, 'bnPages' => $paginas->negro, 'colorPages' => $paginas->color, 'rotativa_gota_negro' => 0, @@ -924,15 +764,15 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController ); $tipo = array(); - if( $paginas->color > 0 ){ + if ($paginas->color > 0) { $tipo = 'color'; $opciones_papel['color'] = 1; } - if( $paginas->negro > 0 ){ + if ($paginas->negro > 0) { $opciones_papel['bn'] = 1; $tipo = 'negro'; } - + // Se obtienen los papeles disponibles $papelimpresionmodel = new PapelImpresionModel(); $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( @@ -946,33 +786,32 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController foreach ($papeles as $papel) { $papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel(); - if(is_null($datosTipolog)){ + if (is_null($datosTipolog)) { $datosTipologias = $papelImpresionTipologiaModel - ->findTipologiasForPapelImpresion($papel->id, $parametrosRotativa->colorPages>0?'color':'negro') + ->findTipologiasForPapelImpresion($papel->id, $parametrosRotativa->colorPages > 0 ? 'color' : 'negro') ->get()->getResultObject(); - - if(count($datosTipologias)==0){ + + if (count($datosTipologias) == 0) { continue; } - } - else{ + } else { $datosTipologias = $datosTipolog; } - + $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, - uso_tarifa: $uso, + uso_tarifa: $uso, tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, ); @@ -981,24 +820,24 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController foreach ($maquinas as $maquina) { $tarifamodel = new MaquinasTarifasImpresionModel(); - [$tarifaId, $tarifa, $tarifa_margen] = $tarifamodel->getTarifa($maquina->maquina_id, $uso, is_array($tipo)?'color':$tipo); - if(!is_float($tarifa)){ + [$tarifaId, $tarifa, $tarifa_margen] = $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, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel, $datosPedido->paginas); - + $linea['fields']['tarifa_impresion_id'] = $tarifaId; - $linea['fields']['precios_pliegos'] = $precio_pliego_impresion+$margen_pliego_impresion; + $linea['fields']['precios_pliegos'] = $precio_pliego_impresion + $margen_pliego_impresion; $linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $linea['fields']['precios_pliegos']; // Precio papel pedido - $linea['fields']['precio_pedido'] = $linea['fields']['precio_libro'] * ($datosPedido->tirada + $datosPedido->merma); - $linea['fields']['margen_papel_pedido'] = $linea['fields']['pliegos_libro']*$margen_pliego_impresion* ($datosPedido->tirada + $datosPedido->merma); ; + $linea['fields']['precio_pedido'] = $linea['fields']['precio_libro'] * ($datosPedido->tirada + $datosPedido->merma); + $linea['fields']['margen_papel_pedido'] = $linea['fields']['pliegos_libro'] * $margen_pliego_impresion * ($datosPedido->tirada + $datosPedido->merma);; $linea['fields']['a_favor_fibra'] = $parametrosRotativa->a_favor_fibra; $linea['fields']['maquina'] = $maquina->maquina; @@ -1017,20 +856,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $linea['fields']['num_formas_horizontales'] = floor($linea['fields']['factor_anchura']); $linea['fields']['num_formas_verticales'] = floor($linea['fields']['factor_altura']); - + $linea['fields']['datosTipologias'] = $datosTipologias[0]; // impresion - $linea['fields']['precio_click'] = $tarifa *(1+ $tarifa_margen/100.0); - $linea['fields']['precio_click_margen'] = $tarifa *($tarifa_margen/100.0); + $linea['fields']['precio_click'] = $tarifa * (1 + $tarifa_margen / 100.0); + $linea['fields']['precio_click_margen'] = $tarifa * ($tarifa_margen / 100.0); $linea['fields']['precio_click_pedido'] = $linea['fields']['clicks_pedido'] * $linea['fields']['precio_click']; $linea['fields']['margen_click_pedido'] = $linea['fields']['clicks_pedido'] * $linea['fields']['precio_click_margen']; $linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina( - $linea['fields']['precio_click_pedido'], - $linea['fields']['precio_click'], - $maquina->velocidad); + $linea['fields']['precio_click_pedido'], + $linea['fields']['precio_click'], + $maquina->velocidad + ); $clientePreciosModel = new ClientePreciosModel(); @@ -1040,30 +880,31 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController "tipo_impresion" => $tipo ]; $tiempo = PresupuestoService::getHorasMaquina( - $linea['fields']['precio_click_pedido'], - $linea['fields']['precio_click'], - $maquina->velocidad); + $linea['fields']['precio_click_pedido'], + $linea['fields']['precio_click'], + $maquina->velocidad + ); [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo); - if(is_null($precio_hora)){ + if (is_null($precio_hora)) { continue; } - $linea['fields']['precio_hora'] = $precio_hora*(1+$margen_precio_hora/100.0); - $linea['fields']['precio_hora_margen'] = $precio_hora*($margen_precio_hora/100.0); - $linea['fields']['horas_maquina'] = $tiempo; - $linea['fields']['precio_impresion_horas'] = $linea['fields']['precio_hora']*$tiempo; - $linea['fields']['margen_impresion_horas'] = $linea['fields']['precio_hora_margen']*$tiempo; + $linea['fields']['precio_hora'] = $precio_hora * (1 + $margen_precio_hora / 100.0); + $linea['fields']['precio_hora_margen'] = $precio_hora * ($margen_precio_hora / 100.0); + $linea['fields']['horas_maquina'] = $tiempo; + $linea['fields']['precio_impresion_horas'] = $linea['fields']['precio_hora'] * $tiempo; + $linea['fields']['margen_impresion_horas'] = $linea['fields']['precio_hora_margen'] * $tiempo; // total linea rotativa //$linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + $linea['fields']['precio_click_pedido'] + $linea['fields']['precio_tinta'] + // $linea['fields']['total_corte']; - $linea['fields']['total_impresion'] = - floatval($linea['fields']['precio_pedido']) + // papel - floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido - floatval($linea['fields']['precio_impresion_horas']) + // horas de maquina - floatval($linea['fields']['precio_tinta']) + // tinta - floatval($linea['fields']['total_corte']); // corte + $linea['fields']['total_impresion'] = + floatval($linea['fields']['precio_pedido']) + // papel + floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido + floatval($linea['fields']['precio_impresion_horas']) + // horas de maquina + floatval($linea['fields']['precio_tinta']) + // tinta + floatval($linea['fields']['total_corte']); // corte array_push($lineas, $linea); } @@ -1099,7 +940,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - try{ + try { $tipo = $reqData['tipo'] ?? null; $uso = $reqData['uso'] ?? null; @@ -1114,39 +955,35 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $tirada = $reqData['tirada'] ?? 0; $merma = $reqData['merma'] ?? 0; $model = new PapelGenericoModel(); - $menu = $model->getGramajeComparador($datos, $uso, intval($tirada+$merma) ); + $menu = $model->getGramajeComparador($datos, $uso, intval($tirada + $merma)); $data = [ 'menu' => $menu, $csrfTokenName => $newTokenHash ]; - } - elseif ($tipo == 'gramajeLineasPresupuesto') { + } elseif ($tipo == 'gramajeLineasPresupuesto') { $tipoLinea = $reqData['tipoLinea'] ?? null; // En este caso contiene el id del papel generico $model = new PapelGenericoModel(); - $menu = $model->getGramajeLineasPresupuesto($datos, $tipoLinea, $uso ); + $menu = $model->getGramajeLineasPresupuesto($datos, $tipoLinea, $uso); $data = [ 'menu' => $menu, $csrfTokenName => $newTokenHash ]; - } - elseif ($tipo == 'papelImpresion') { + } elseif ($tipo == 'papelImpresion') { $gramaje = $reqData['gramaje'] ?? null; $tipoLinea = $reqData['tipoLinea'] ?? null; // En este caso contiene el nombre del papel generico // Uso: negro, negrohq, color, colorhq, rot_bn, rot_color, $model = new PapelImpresionModel(); - $menu = $model->getPapelesImpresionForMenu($datos, $gramaje, $tipoLinea, $uso ); + $menu = $model->getPapelesImpresionForMenu($datos, $gramaje, $tipoLinea, $uso); $data = [ 'menu' => $menu, $csrfTokenName => $newTokenHash ]; - } - - elseif ($tipo == 'maquina') { + } elseif ($tipo == 'maquina') { $is_rotativa = $reqData['is_rotativa'] ?? null; $papel_impresion = $reqData['papel_impresion'] ?? null; $tipo_linea = $reqData['tipoLinea'] ?? null; @@ -1156,13 +993,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // uso: negro, negrohq, color, colorhq, $uso_tarifa = $reqData['uso_tarifa'] ?? 'interior'; $model = new MaquinaModel(); - $maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $uso_tarifa ,$datos, $papel_impresion ); + $maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $uso_tarifa, $datos, $papel_impresion); $menu = []; - foreach ($maquinas as $maquina){ - + foreach ($maquinas as $maquina) { + $formas = PresupuestoService::getNumFormasPlana($tipo_linea, $maquina, floatval($ancho), floatval($alto), true); - - if($formas['num_formas'] != 'n/a'){ + + if ($formas['num_formas'] != 'n/a') { array_push($menu, $maquina); } } @@ -1171,26 +1008,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'menu' => $menu, $csrfTokenName => $newTokenHash ]; - } + } else { - else{ - $data = [ 'tipo' => $tipo, $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); } @@ -1398,5 +1230,4 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $model = model('App\Models\Configuracion\ConfiguracionSistemaModel'); return $model->getPOD(); } - } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestotiradasalternativas.php b/ci4/app/Controllers/Presupuestos/Presupuestotiradasalternativas.php new file mode 100644 index 00000000..5c654cc1 --- /dev/null +++ b/ci4/app/Controllers/Presupuestos/Presupuestotiradasalternativas.php @@ -0,0 +1,250 @@ +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); + } + } +} diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 581eca3b..0938429f 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -12,37 +12,166 @@ class Test extends BaseController { function __construct() { - } public function index() { + $json_text = '[{"paginas":"150","paginas_impresion":0,"papel":"3","papel_impresion_id":"45","gramaje":"90.00","maquina_id":"33","row_id":"lp_bnhq"},{"paginas":"150","paginas_impresion":0,"papel":"3","papel_impresion_id":"45","gramaje":"90.00","maquina_id":"97","row_id":"lp_colorhq"},{"paginas":"2","paginas_impresion":0,"papel":"5","papel_impresion_id":"49","gramaje":"270.00","maquina_id":"55","row_id":"lp_cubierta"},{"paginas":"4","paginas_impresion":0,"papel":"1","papel_impresion_id":"91","gramaje":"200.00","maquina_id":"55","row_id":"lp_sobrecubierta"}]'; echo '
';
- $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
- $tarifas = [
- (object)['tarifa_id'=>1, "cubierta"=>0, "sobrecubierta"=>0]
- ];
- var_dump($model->deleteServiciosNotInArray(44, $tarifas));
+ var_dump($this->test_get_tirada_alt(
+ tirada: 200,
+ merma: 20,
+ tipo_impresion_id: 4,
+ json_data: $json_text,
+ cliente_id: 685,
+ ancho: 150,
+ alto: 210,
+ solapas_cubierta: 0,
+ solapas_ancho_cubierta: 0,
+ solapas_sobrecubierta: 0,
+ solapas_ancho_sobrecubierta: 0,
+ lomo: 16.53
+ ));
echo '';
- /*
-
- $linea = PresupuestoService::getCostesLinea('interior', $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
-
- echo ''; - - var_dump($formas); - - echo ''; - echo '
';
- $tarifa_value = $this->get_tarifa_enc(18,150,22,150,210);
- var_dump($tarifa_value[0]);
- $model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
- $result = $model->calcularTarifa($tarifa_value[0], 150, true);
- var_dump($result);
- echo '';*/
}
+
+ private function test_get_tirada_alt($tirada, $merma, $tipo_impresion_id,
+ $json_data, $cliente_id, $ancho, $alto,
+ $solapas_cubierta, $solapas_ancho_cubierta, $solapas_sobrecubierta, $solapas_ancho_sobrecubierta, $lomo)
+ {
+ $values = [];
+
+ if ($json_data) {
+
+ $data = json_decode($json_data, true);
+
+ foreach ($data as $linea) {
+ 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;
@@ -488,7 +627,7 @@ class Test extends BaseController
echo '';
var_dump($maquinas);
echo '';
-
+
// Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) {
@@ -503,7 +642,7 @@ class Test extends BaseController
var_dump($tarifa);
echo '';
- if(!is_float($tarifa)){
+ if (!is_float($tarifa)) {
continue;
}
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
@@ -519,12 +658,10 @@ class Test extends BaseController
array_push($lineas, $linea);
}
}
-
+
echo '';
var_dump($lineas);
echo '';
-
-
}
public static function testLineasSobrecubierta()
@@ -581,7 +718,7 @@ class Test extends BaseController
echo '';
var_dump($maquinas);
echo '';
-
+
// Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) {
@@ -596,7 +733,7 @@ class Test extends BaseController
var_dump($tarifa);
echo '';
- if(!is_float($tarifa)){
+ if (!is_float($tarifa)) {
continue;
}
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
@@ -612,12 +749,9 @@ class Test extends BaseController
array_push($lineas, $linea);
}
}
-
+
echo '';
var_dump($lineas);
echo '';
-
-
}
}
-
\ No newline at end of file
diff --git a/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php b/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php
index 4d349f86..25fce102 100755
--- a/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php
+++ b/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php
@@ -121,7 +121,7 @@ class MaquinasTarifasImpresionModel extends \App\Models\GoBaseModel
->groupEnd();
}
- public function getTarifa($maquina_id = -1, $uso = " ", $tipo = " ")
+ public function getTarifa($maquina_id = -1, $uso = "", $tipo = "")
{
$builder = $this->db
->table($this->table . " t1")
diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php
index 57b322c5..926e0572 100755
--- a/ci4/app/Services/PresupuestoService.php
+++ b/ci4/app/Services/PresupuestoService.php
@@ -18,6 +18,162 @@ class PresupuestoService extends BaseService
const SANGRE_FORMAS_CUBIERTA = 20.0;
+ public static function getLineaPresupuestoPlana($data)
+ {
+
+ $uso = $data['uso'];
+ $tipo = $data['tipo'];
+ $datosPedido = $data['datosPedido'];
+ $cliente_id = $data['cliente_id'];
+ $papel = $data['papel'];
+ $opciones_papel = $data['opciones_papel'];
+ $maquina = $data['maquina'];
+ $papel_generico = $data['papel_generico'];
+ $isColor = $data['isColor'];
+ $a_favor_fibra = $data['a_favor_fibra'];
+ $datosTipolog = $data['datosTipolog'];
+ $gramaje = $data['gramaje'];
+
+
+ if ($maquina->is_inkjet) {
+ $parametrosInkjet = (object)array(
+ 'a_favor_fibra' => $a_favor_fibra, // este parametro se cambia para comprobar
+ // en las dos direcciones (menos en rustica fresada que es siempre 1)
+ 'bnPages' => $isColor ? 0 : $datosPedido->paginas,
+ 'colorPages' => ($uso == 'guardas') ? $datosPedido->paginas_impresion : ($isColor ? $datosPedido->paginas : 0),
+ 'rotativa_gota_negro' => 0,
+ 'rotativa_gota_color' => 0,
+ );
+
+ $papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel();
+ if (is_null($datosTipolog)) {
+ $datosTipologias = $papelImpresionTipologiaModel
+ ->findTipologiasForPapelImpresion($papel->id, $parametrosInkjet->colorPages > 0 ? 'color' : 'negro')
+ ->get()->getResultObject();
+
+
+ if (count($datosTipologias) == 0) {
+ return [];
+ }
+ } else {
+ $datosTipologias = $datosTipolog;
+ }
+ $parametrosInkjet->rotativa_gota_negro = $datosTipologias[0]->gota_negro;
+ $parametrosInkjet->rotativa_gota_color = $datosTipologias[0]->gota_color;
+ $parametrosInkjet->rotativa_negro = $datosTipologias[0]->negro;
+ $parametrosInkjet->rotativa_cyan = $datosTipologias[0]->cyan;
+ $parametrosInkjet->rotativa_magenta = $datosTipologias[0]->magenta;
+ $parametrosInkjet->rotativa_amarillo = $datosTipologias[0]->amarillo;
+ $parametrosInkjet->rotativa_cg = $datosTipologias[0]->cg;
+ }
+
+ $tarifamodel = new \App\Models\Configuracion\MaquinasTarifasImpresionModel();
+ $datos_tarifa = $tarifamodel->getTarifa($maquina->maquina_id, ($uso == 'guardas') ? 'interior' : $uso, $tipo);
+ if (count($datos_tarifa) > 0) {
+ $tarifaId = $datos_tarifa[0];
+ $tarifa = $datos_tarifa[1];
+ $tarifa_margen = $datos_tarifa[2];
+ } else {
+ return [];
+ }
+
+ if ($maquina->is_inkjet) {
+ $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen, $parametrosInkjet->a_favor_fibra);
+ } else {
+ $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen);
+ }
+
+ if (array_key_exists('error', $linea)) {
+ //array_push($lineas, $linea); for debug
+ return [];
+ }
+
+ if ($maquina->is_inkjet) {
+ // calculo de tintas
+ $linea['fields'] = array_merge($linea['fields'], PresupuestoService::calculoCosteTintas($maquina, $datosPedido, $parametrosInkjet));
+ }
+
+ $linea['fields']['tarifa_impresion_id'] = $tarifaId;
+ $linea['fields']['maquina'] = $maquina->maquina;
+ $linea['fields']['maquina_id'] = $maquina->maquina_id;
+ $linea['fields']['maquina_velocidad'] = $maquina->velocidad;
+ $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']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina(
+ $linea['fields']['precio_click_pedido'],
+ $linea['fields']['precio_click'],
+ $maquina->velocidad
+ );
+
+ $clientePreciosModel = new \App\Models\Clientes\ClientePreciosModel();
+ $config = (object)[
+ "tipo" => ($uso == 'guardas') ? 'interior' : $uso,
+ "tipo_maquina" => $maquina->is_inkjet ? 'inkjet' : 'toner',
+ "tipo_impresion" => $tipo
+ ];
+ $tiempo = PresupuestoService::getHorasMaquina(
+ $linea['fields']['precio_click_pedido'],
+ $linea['fields']['precio_click'],
+ $maquina->velocidad
+ );
+ [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo);
+
+
+ if (is_null($precio_hora)) {
+ return [];
+ }
+
+ $linea['fields']['tipo_maquina'] = $maquina->is_inkjet ? 'inkjet' : 'toner';
+ $linea['fields']['precio_hora'] = $precio_hora * (1 + $margen_precio_hora / 100.0);
+ $linea['fields']['precio_hora_margen'] = $precio_hora * ($margen_precio_hora / 100.0);
+ $linea['fields']['horas_maquina'] = $tiempo;
+ $linea['fields']['precio_impresion_horas'] = $linea['fields']['precio_hora'] * $tiempo;
+ $linea['fields']['margen_impresion_horas'] = $linea['fields']['precio_hora_margen'] * $tiempo;
+
+ // para guardas
+ if (\property_exists($datosPedido, 'paginas_impresion')) {
+ $linea['fields']['paginas_impresion'] = $datosPedido->paginas_impresion;
+ }
+
+ if ($maquina->is_inkjet) {
+ $linea['fields']['a_favor_fibra'] = $parametrosInkjet->a_favor_fibra;
+ $linea['fields']['paginas_color'] = $isColor ? $datosPedido->paginas : 0;
+ $linea['fields']['totalClicksPedido'] = $linea['fields']['precio_click_pedido'];
+ if ($uso != 'guardas') {
+ $linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']) * 2, 2);
+ } else {
+ if ($datosPedido->paginas_impresion == 4)
+ $linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']), 2);
+ else if ($datosPedido->paginas_impresion == 8)
+ $linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']) * 2, 2);
+ else
+ $linea['fields']['clicks_libro'] = 0;
+ }
+ $linea['fields']['clicks_pedido'] = round($linea['fields']['clicks_libro'] * ($datosPedido->tirada + $datosPedido->merma), 2);
+ [$ancho, $alto] = PresupuestoService::calculoDimForma($datosPedido, $parametrosInkjet);
+ $linea['fields']['factor_anchura'] = round($maquina->ancho_impresion / $ancho, 2);
+ $linea['fields']['factor_altura'] = round($maquina->alto_impresion / ($alto + PresupuestoService::MARGEN_PAGINAS_ROTATIVA), 2);
+ $linea['fields']['paginas_por_pliego'] = ($datosPedido->isCosido) ? $linea['fields']['num_formas']['value'] * 2 : $linea['fields']['num_formas']['value'] * 2; // Se multiplica *2 porque es doble cara
+ $linea['fields']['datosTipologias'] = $datosTipologias[0];
+ $linea['fields']['total_impresion'] =
+ floatval($linea['fields']['precio_pedido']) + // papel
+ floatval($linea['fields']['precio_impresion_horas']) + // horas de maquina
+ floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido
+ floatval($linea['fields']['precio_tinta']); // tinta
+ } else {
+ $linea['fields']['total_impresion'] = floatval($linea['fields']['precio_pedido']) + // papel
+ floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido
+ floatval($linea['fields']['precio_impresion_horas']); // horas de maquina
+ }
+
+
+ return $linea;
+ }
/**
* @param mixed $uso
* contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta']
@@ -44,14 +200,14 @@ class PresupuestoService extends BaseService
{
$response['fields'] = [];
- if ($uso!='rotativa') {
+ 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') ? $datosPedido->anchoExteriores : $datosPedido->ancho;
+ $alto_calculo = ($uso == 'cubierta' || $uso == 'sobrecubierta') ? $datosPedido->altoExteriores : $datosPedido->alto;
$formas = PresupuestoService::getNumFormasPlana($uso, $maquina, $ancho_calculo, $alto_calculo, $datosPedido->isCosido, $forzar_a_favor_fibra);
$response['fields'] = $formas;
}
-
+
if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') {
$response['error']['value'] = true;
@@ -61,7 +217,7 @@ class PresupuestoService extends BaseService
// precio del pliego de impresion
[$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $datosPedido->paginas);
-
+
$precio_click = 0;
$precio_click_pedido = 0;
$margen_click_pedido = 0;
@@ -79,10 +235,10 @@ class PresupuestoService extends BaseService
if ($cubierta == 0 && $sobrecubierta == 0 && $rotativa == 0) {
// precio papel
$pliegos_libro = ceil(($datosPedido->paginas / 2.0) / $response['fields']['num_formas']['value']);
- if($pliegos_libro<1)
+ if ($pliegos_libro < 1)
$pliegos_libro = 1;
$pliegos_pedido = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma);
- $precio_libro = $pliegos_libro * ($precio_pliego_impresion+$margen_pliego_impresion);
+ $precio_libro = $pliegos_libro * ($precio_pliego_impresion + $margen_pliego_impresion);
$margen_papel_pedido = $pliegos_libro * $margen_pliego_impresion * ($datosPedido->tirada + $datosPedido->merma);
$precio_pedido = $precio_libro * ($datosPedido->tirada + $datosPedido->merma);
@@ -94,38 +250,35 @@ class PresupuestoService extends BaseService
alto: $datosPedido->alto,
gramaje: $papel_impresion->gramaje,
paginas: $datosPedido->paginas
- );
+ );
// impresion
- if($uso=='guardas'){
- if(floatval($datosPedido->paginas_impresion)==0)
+ if ($uso == 'guardas') {
+ if (floatval($datosPedido->paginas_impresion) == 0)
$precio_click_pedido = 0;
- elseif (floatval($datosPedido->paginas_impresion)==4){ // Una cara
+ elseif (floatval($datosPedido->paginas_impresion) == 4) { // Una cara
$precio_click_pedido = $pliegos_pedido * $precio_click;
$margen_click_pedido = $pliegos_pedido * $margen_click;
+ } else { // dos caras (impresion normal)
+ $precio_click_pedido = $pliegos_pedido * 2 * $precio_click;
+ $margen_click_pedido = $pliegos_pedido * 2 * $margen_click;
}
- else{ // dos caras (impresion normal)
- $precio_click_pedido = $pliegos_pedido * 2 * $precio_click;
- $margen_click_pedido = $pliegos_pedido * 2 * $margen_click;
- }
- }
- else {
- $precio_click_pedido = $pliegos_pedido * 2 * $precio_click;
- $margen_click_pedido = $pliegos_pedido * 2 * $margen_click;
+ } else {
+ $precio_click_pedido = $pliegos_pedido * 2 * $precio_click;
+ $margen_click_pedido = $pliegos_pedido * 2 * $margen_click;
}
-
}
// cubierta o sobrecubierta (siempre a color)
else if (($cubierta == 1 || $sobrecubierta == 1) && $rotativa == 0) {
// precio papel
$pliegos_libro = 1.0 / $response['fields']['num_formas']['value'];
// En cubierta y sobrecubierta siempre el mínimo pliego es 1
- $pliegos_libro = $pliegos_libro<1?1:$pliegos_libro;
+ $pliegos_libro = $pliegos_libro < 1 ? 1 : $pliegos_libro;
$pliegos_pedido = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma);
$precio_libro = $pliegos_libro * ($precio_pliego_impresion + $margen_pliego_impresion);
$margen_papel_pedido = $pliegos_libro * $margen_pliego_impresion * ($datosPedido->tirada + $datosPedido->merma);
$precio_pedido = $precio_libro * ($datosPedido->tirada + $datosPedido->merma);
-
+
$mano = PresupuestoService::computeLomoPortada($papel_impresion->espesor);
// peso
@@ -138,9 +291,9 @@ class PresupuestoService extends BaseService
$margen_click_pedido = $pliegos_pedido * $margen_click;
// dos caras
- if($datosPedido->paginas > 2) {
- $precio_click_pedido *= 2.0;
- $margen_click_pedido *= 2.0;
+ if ($datosPedido->paginas > 2) {
+ $precio_click_pedido *= 2.0;
+ $margen_click_pedido *= 2.0;
}
}
}
@@ -149,7 +302,7 @@ class PresupuestoService extends BaseService
// response
$response['fields']['pliegos_libro'] = $pliegos_libro;
$response['fields']['pliegos_pedido'] = $pliegos_pedido;
- $response['fields']['precios_pliegos'] = $precio_pliego_impresion+$margen_pliego_impresion;
+ $response['fields']['precios_pliegos'] = $precio_pliego_impresion + $margen_pliego_impresion;
$response['fields']['precio_libro'] = $precio_libro;
$response['fields']['margen_papel_pedido'] = $margen_papel_pedido;
$response['fields']['precio_pedido'] = $precio_pedido;
@@ -168,7 +321,7 @@ class PresupuestoService extends BaseService
}
-
+
/**
* Devuelve los calculos para la linea de rotativa.
*/
@@ -206,7 +359,7 @@ class PresupuestoService extends BaseService
// calculo de tintas
$data = array_merge($data, PresupuestoService::calculoCosteTintas($maquina, $datosPedido, $parametrosRotativa));
-
+
// calculo de corte
$data['velocidad_corte'] = $maquina->velocidad_corte;
$data['precio_hora_corte'] = $maquina->precio_hora_corte;
@@ -219,11 +372,11 @@ class PresupuestoService extends BaseService
// peso
$data['peso'] = PresupuestoService::computePeso(
ancho: $datosPedido->isCosido ? $datosPedido->ancho / 2.0 : $datosPedido->ancho,
- alto: $datosPedido->alto,
- gramaje: $papel_impresion->gramaje,
- paginas: $datosPedido->paginas
- );
-
+ alto: $datosPedido->alto,
+ gramaje: $papel_impresion->gramaje,
+ paginas: $datosPedido->paginas
+ );
+
$data['dimensiones_maquina'] = [$maquina->ancho, $maquina->alto];
$data['dimensiones_maquina_impresion'] = [$maquina->ancho_impresion, $maquina->alto_impresion];
$data['dimensiones_maquina_click'] = [$maquina->ancho_impresion, $maquina->alto_click];
@@ -232,11 +385,12 @@ class PresupuestoService extends BaseService
$data['alto_click'] = $maquina->alto_click;
$formas = PresupuestoService::getNumFormasRot(
- $maquina,
- $datosPedido->ancho,
- $datosPedido->alto,
- $datosPedido->isCosido,
- $parametrosRotativa->a_favor_fibra);
+ $maquina,
+ $datosPedido->ancho,
+ $datosPedido->alto,
+ $datosPedido->isCosido,
+ $parametrosRotativa->a_favor_fibra
+ );
$data['num_formas'] = $formas;
return $data;
@@ -246,13 +400,13 @@ class PresupuestoService extends BaseService
/**
* Devuelve los calculos de las dimensiones de la forma
*/
- public static function calculoDimForma($datosPedido, $parametros){
+ public static function calculoDimForma($datosPedido, $parametros)
+ {
// posicionamos paginas en función de a favor de fibra o no
if (!$parametros->a_favor_fibra) {
$anchoLibro = $datosPedido->alto;
$altoLibro = $datosPedido->ancho;
- }
- else{
+ } else {
$anchoLibro = $datosPedido->ancho;
$altoLibro = $datosPedido->alto;
}
@@ -288,7 +442,7 @@ class PresupuestoService extends BaseService
$pag_negro = $parametros->bnPages;
$pag_color = 0;
- if ($parametros->colorPages>0) {
+ if ($parametros->colorPages > 0) {
$pag_color = $parametros->colorPages;
}
@@ -308,16 +462,17 @@ class PresupuestoService extends BaseService
// 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);
-
-
- if($maquina->is_inkjet){
+ 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
+ );
+
+
+ if ($maquina->is_inkjet) {
$data['num_gotas_cg'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametros->rotativa_cg / 100.0), 0);
- $data['peso_gotas_cg'] = round((($data['num_gotas_cg'] * $parametros->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6) +
- round((($data['num_gotas_cg'] * $parametros->rotativa_gota_negro * $data['pulgada']) / (17.65 / 20.0)) * $pag_negro * 1000, 6);
+ $data['peso_gotas_cg'] = round((($data['num_gotas_cg'] * $parametros->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6) +
+ round((($data['num_gotas_cg'] * $parametros->rotativa_gota_negro * $data['pulgada']) / (17.65 / 20.0)) * $pag_negro * 1000, 6);
$data['peso_gotas_cg_pedido'] = round($data['peso_gotas_cg'], 2) * ($datosPedido->tirada + $datosPedido->merma);
$data['precio_tinta'] += round(($data['peso_gotas_cg_pedido'] / 1000.0) * $maquina->precio_tinta_cg, 2);
@@ -329,24 +484,24 @@ class PresupuestoService extends BaseService
return $data;
}
-
+
public static function getNumFormasRot($maquina, $ancho, $alto, $isCosido, $a_favor_fibra = true)
{
// El ancho si es cosido es el doble
$anchoForCalculo = $isCosido ? $ancho * 2 : $ancho;
-
+
$altoForCalculo = $alto;
-
- $h1_temp = floor($maquina->ancho_impresion / $anchoForCalculo);
+
+ $h1_temp = floor($maquina->ancho_impresion / $anchoForCalculo);
$h2_temp = floor($maquina->ancho_impresion / $altoForCalculo);
-
+
// horizontales
- if($a_favor_fibra){
+ if ($a_favor_fibra) {
$calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h1_temp);
// Si son mas de 2 formas
- if(count($calles)>0)
+ 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;
@@ -355,10 +510,10 @@ class PresupuestoService extends BaseService
$formas_h = $h1 * $v1; //p1
}
// verticales
- else{
-
+ else {
+
$calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h2_temp);
- if(count($calles)>0)
+ if (count($calles) > 0)
$h2 = ($h2_temp * $altoForCalculo + 2 * $calles[0]->externas + ($h2_temp - 1) * $calles[0]->internas < ($maquina->ancho)) ? $h2_temp : $h2_temp - 1;
else
$h2 = $h2_temp;
@@ -368,8 +523,8 @@ class PresupuestoService extends BaseService
$num_formas = $a_favor_fibra ? $formas_h : $formas_v;
$num_formas = $isCosido ? $num_formas * 2 : $num_formas;
-
-
+
+
// si no hay formas se devuelve n/a
if ($num_formas == 0) {
$response['posicion_formas'] = 'n/a'; // not available
@@ -394,16 +549,16 @@ 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') {
$anchoForCalculo = $isCosido ? $ancho * 2 : $ancho;
- }
- else{
+ } else {
$anchoForCalculo = $ancho;
}
$altoForCalculo = $alto;
+
/*
- Log ancho y alto de impresion y libro
+ //Log ancho y alto de impresion y libro
$info = [
'ancho' => $anchoForCalculo,
'alto' => $altoForCalculo,
@@ -411,104 +566,117 @@ class PresupuestoService extends BaseService
'maquina_alto' => $maquina->alto_impresion,
];
- if($uso == 'cubierta' )
- log_message('error', 'ancho:{ancho} --- alto:{alto} --- ancho2:{maquina_ancho} --- alto2:{maquina_alto} ---', $info);*/
+ if ($uso == 'cubierta')
+ log_message('error', 'ancho:{ancho} --- alto:{alto} --- ancho_m:{maquina_ancho} --- alto_m:{maquina_alto} ---', $info);
+ */
- if($uso == 'cubierta' || $uso == 'sobrecubierta') {
- if(property_exists($maquina, 'forzar_num_formas_horizontales_cubierta') &&
- property_exists($maquina, 'forzar_num_formas_verticales_cubierta')){
+ if ($uso == 'cubierta' || $uso == 'sobrecubierta') {
+ if (
+ !is_null($maquina->forzar_num_formas_horizontales_cubierta) &&
+ !is_null($maquina->forzar_num_formas_verticales_cubierta)
+
+ ) {
+
+ if (
+ $maquina->forzar_num_formas_horizontales_cubierta > 0 &&
+ $maquina->forzar_num_formas_verticales_cubierta > 0
+ ) {
- if($maquina->forzar_num_formas_horizontales_cubierta > 0 &&
- $maquina->forzar_num_formas_verticales_cubierta > 0){
-
// Hay que comprobar que entran
$h1_temp = $maquina->forzar_num_formas_horizontales_cubierta;
$h2_temp = $maquina->forzar_num_formas_verticales_cubierta;
//$num_formas = $h1_temp * $h2_temp;
}
}
-
}
// No es cubierta ni sobrecubierta
- else{
+ else {
// horizontales
- $h1_temp = floor(floatval($maquina->ancho_impresion) / $anchoForCalculo);
+ $h1_temp = floor(floatval($maquina->ancho_impresion) / $anchoForCalculo);
$h2_temp = floor(floatval($maquina->ancho_impresion) / $altoForCalculo);
}
-
-
+
+
// horizontales
$calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h1_temp);
// Si son mas de 2 formas
- if(count($calles)>0)
+ 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 = $anchoForCalculo<=$maquina->ancho_impresion?$h1_temp:0;
+ else {
+ $h1 = $anchoForCalculo <= $maquina->ancho_impresion ? $h1_temp : 0;
}
-
+
$v1 = floor($maquina->alto_impresion / $altoForCalculo);
$formas_h = $h1 * $v1; //p1
+ /*
+ //Log ancho y alto de impresion y libro
+ $info = [
+ 'h1' => $h1,
+ 'v1' => $v1,
+ 'num_formas' => $formas_h,
+ 'h1_temp' => $h1_temp,
+
+ ];
+
+ if($uso == 'cubierta' )
+ log_message('error', 'h1:{h1} --- v1:{v1} --- num_formas:{num_formas} --- h1_temp:{h1_temp}', $info);
+ */
// verticales
$calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h2_temp);
- if(count($calles)>0)
+ if (count($calles) > 0)
$h2 = ($h2_temp * $altoForCalculo + 2 * $calles[0]->externas + ($h2_temp - 1) * $calles[0]->internas < ($maquina->ancho)) ? $h2_temp : $h2_temp - 1;
- else{
- $h2 = $altoForCalculo<=$maquina->ancho_impresion?$h2_temp:0;
+ else {
+ $h2 = $altoForCalculo <= $maquina->ancho_impresion ? $h2_temp : 0;
}
-
+
$v2 = floor($maquina->alto_impresion / $anchoForCalculo);
$formas_v = $h2 * $v2; //p2
-
+
// Se calcula el numero de formas
- if($uso != 'cubierta' && $uso != 'sobrecubierta' && !$forzar_a_favor_fibra){
+ if ($uso != 'cubierta' && $uso != 'sobrecubierta' && !$forzar_a_favor_fibra) {
$num_formas = ($formas_h > $formas_v) ? $formas_h : $formas_v;
$num_formas = $isCosido ? $num_formas * 2 : $num_formas;
- }
- else if ($forzar_a_favor_fibra){
+ } else if ($forzar_a_favor_fibra) {
$num_formas = $formas_h;
$num_formas = $isCosido ? $num_formas * 2 : $num_formas;
+ } else {
- }
- else{
-
- $num_formas = $h1*$v1;
+ $num_formas = $h1 * $v1;
}
-
+
// si no hay formas se devuelve n/a
if ($num_formas == 0) {
$response['num_formas']['posicion_formas'] = 'n/a'; // not available
- }
- else{
+ } else {
if ($formas_h > $formas_v || $forzar_a_favor_fibra && $formas_h != 0) {
$response['num_formas']['posicion_formas'] = 'h';
$response['num_formas']['num_formas_horizontales'] = $h1;
$response['num_formas']['num_formas_verticales'] = $v1;
$response['num_formas']['value'] = $num_formas;
- }
- else {
- if($formas_v != 0){
+ } else {
+ if ($formas_v != 0) {
$response['num_formas']['posicion_formas'] = 'v';
$response['num_formas']['num_formas_horizontales'] = $h2;
$response['num_formas']['num_formas_verticales'] = $v2;
$response['num_formas']['value'] = $num_formas;
}
}
-
- if(($uso == 'cubierta' || $uso == 'sobrecubierta') && $num_formas>0) {
- if(property_exists($maquina, 'forzar_num_formas_horizontales_cubierta') &&
- property_exists($maquina, 'forzar_num_formas_horizontales_cubierta')){
+
+ if (($uso == 'cubierta' || $uso == 'sobrecubierta') && $num_formas > 0) {
+ if (
+ property_exists($maquina, 'forzar_num_formas_horizontales_cubierta') &&
+ property_exists($maquina, 'forzar_num_formas_horizontales_cubierta')
+ ) {
$response['num_formas']['num_formas_verticales'] = $h2_temp;
}
}
-
-
}
return $response;
@@ -520,38 +688,38 @@ class PresupuestoService extends BaseService
$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 = ($peso_por_pliego * $papel_impresion->precio_tonelada / 1000000.0) ;
+ $precio_pliego = ($peso_por_pliego * $papel_impresion->precio_tonelada / 1000000.0);
$margen_pliego = ($peso_por_pliego * $papel_impresion->precio_tonelada / 1000000.0) * (floatval($margen[0]['margen']) / 100.0);
return [round($precio_pliego, 6), round($margen_pliego, 6)];
}
return -1;
}
- public static function getTiempoMaquina($totalClicks, $precioClick, $velocidadMaquina) {
+ public static function getTiempoMaquina($totalClicks, $precioClick, $velocidadMaquina)
+ {
try {
-
- if($precioClick>0 && $velocidadMaquina>0)
- $minutos = (1.0*$totalClicks/$precioClick)/$velocidadMaquina;
+
+ if ($precioClick > 0 && $velocidadMaquina > 0)
+ $minutos = (1.0 * $totalClicks / $precioClick) / $velocidadMaquina;
else
$minutos = 0;
-
- return gmdate("H:i:s", round($minutos*60,0));
-
+
+ return gmdate("H:i:s", round($minutos * 60, 0));
} catch (Exception $e) {
- return gmdate("H:i:s", round(0,0));
+ return gmdate("H:i:s", round(0, 0));
}
}
- public static function getHorasMaquina($totalClicks, $precioClick, $velocidadMaquina) {
+ public static function getHorasMaquina($totalClicks, $precioClick, $velocidadMaquina)
+ {
try {
-
- if($precioClick>0 && $velocidadMaquina>0)
- $horas = (1.0*$totalClicks/$precioClick)/$velocidadMaquina/60.0;
+
+ if ($precioClick > 0 && $velocidadMaquina > 0)
+ $horas = (1.0 * $totalClicks / $precioClick) / $velocidadMaquina / 60.0;
else
$horas = 0;
-
+
return $horas;
-
} catch (Exception $e) {
return 0;
}
@@ -562,39 +730,38 @@ class PresupuestoService extends BaseService
* Devuelve el ancho de la cubierta/sobrecubierta, incluido el lomo.
* El $uso tiene que ser "cubierta" o "sobrecubierta"
*/
- public static function getAnchoTotalExteriores($uso="cubierta", $tipo_impresion_id, $datosPedido=null)
+ public static function getAnchoTotalExteriores($uso = "cubierta", $tipo_impresion_id = 1, $datosPedido = null)
{
$ancho_total = 0;
if ($datosPedido) {
// Tapa blanda (cosido y fresado)
- if($tipo_impresion_id == 2 || $tipo_impresion_id == 4){
- $ancho_total = floatval($datosPedido->ancho)*2 + floatval($datosPedido->lomo);
-
+ if ($tipo_impresion_id == 2 || $tipo_impresion_id == 4) {
+ $ancho_total = floatval($datosPedido->ancho) * 2 + floatval($datosPedido->lomo);
+
// añadimos ancho de las solapas
// si se añaden solapas hay que sumar 3mm de los dobleces
if ($datosPedido->solapas) {
$ancho_total += (floatval($datosPedido->solapas_ancho) * 2) + 6;
}
// En cualquier otro caso se le suma 5mm de sangre por cada lado
- $ancho_total += (2*self::SANGRE_FORMAS);
+ $ancho_total += (2 * self::SANGRE_FORMAS);
}
// Tapa dura cosido y fresado
- else if($tipo_impresion_id == 1 || $tipo_impresion_id == 3){
- $ancho_total = floatval($datosPedido->ancho)*2 + floatval($datosPedido->lomo);
+ else if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) {
+ $ancho_total = floatval($datosPedido->ancho) * 2 + floatval($datosPedido->lomo);
// si es cubierta
// Se añaden 20mm de sangre por cada lado + 2 * 7mm de vuelo portada y contraportada -> total 52
// por último se añaden 7mm para tener en cuenta el ancho del carton
- if($uso=="cubierta")
- $ancho_total += (2*7 + 2*self::SANGRE_FORMAS_CUBIERTA + 7);
+ if ($uso == "cubierta")
+ $ancho_total += (2 * 7 + 2 * self::SANGRE_FORMAS_CUBIERTA + 7);
// si es sobrecubierta
// Se añaden 5mm de sangre por cada lado + 2 * 7mm de vuelo portada y contraportada -> total 52
else
- $ancho_total += (2*7 + 2*self::SANGRE_FORMAS) + 7;
- }
- else{
+ $ancho_total += (2 * 7 + 2 * self::SANGRE_FORMAS) + 7;
+ } else {
// En cualquier otro caso se le suma 5mm de sangre por cada lado
- $ancho_total += (2*self::SANGRE_FORMAS);
+ $ancho_total += (2 * self::SANGRE_FORMAS);
}
}
return $ancho_total;
@@ -603,31 +770,69 @@ class PresupuestoService extends BaseService
/**
* Devuelve el alto de la cubierta/sobrecubierta
*/
- public static function getAltoTotalExteriores($uso="cubierta", $tipo_impresion_id, $datosPedido=null)
+ public static function getAltoTotalExteriores($uso = "cubierta", $tipo_impresion_id = 1, $datosPedido = null)
{
$alto_total = 0;
if ($datosPedido) {
$alto_total = floatval($datosPedido->alto);
// Tapa dura (cosido y fresado)
- if($tipo_impresion_id == 1 || $tipo_impresion_id == 3){
+ if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) {
// Se añaden 20mm de sangre por cada lado + 7mm extra que sobresale -> total 47
- if($uso=="cubierta")
- $alto_total += (7+2*self::SANGRE_FORMAS_CUBIERTA);
+ if ($uso == "cubierta")
+ $alto_total += (7 + 2 * self::SANGRE_FORMAS_CUBIERTA);
// si es sobrecubierta
// Se añaden 5mm de sangre por cada lado + 7mm de vuelo -> total 52
else
- $alto_total += (7+2*self::SANGRE_FORMAS);
-
+ $alto_total += (7 + 2 * self::SANGRE_FORMAS);
}
// En cualquier otro caso se le suma 5mm de sangre por cada lado
- else{
- $alto_total += (2*self::SANGRE_FORMAS);
+ else {
+ $alto_total += (2 * self::SANGRE_FORMAS);
}
}
return $alto_total;
}
+
+ public static function get_opciones_papel($uso, $isColor)
+ {
+
+ $opciones_papel = [];
+
+ if ($uso == 'cubierta') {
+ $opciones_papel = array(
+ 'cubierta' => 1,
+ //'color' => 1,
+ 'rotativa' => 0,
+ );
+ } else if ($uso == 'sobrecubierta') {
+ $opciones_papel = array(
+ 'sobrecubierta' => 1,
+ //'color' => 1,
+ 'rotativa' => 0,
+ );
+ } else if ($uso == 'guardas') {
+ $opciones_papel = array(
+ 'guardas' => 1,
+ //'color' => 1,
+ 'rotativa' => 0,
+ );
+ } else if ($isColor) {
+ $opciones_papel = array(
+ 'color' => 1,
+ 'rotativa' => 0,
+ );
+ } else {
+ $opciones_papel = array(
+ 'bn' => 1,
+ 'rotativa' => 0,
+ );
+ }
+
+ return $opciones_papel;
+ }
+
/**
* Devuelve la dimensión del lomo interior.
*/
@@ -666,6 +871,4 @@ class PresupuestoService extends BaseService
return $peso;
}
-
-
}
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js
index 82d78679..00a8b88b 100644
--- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js
+++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js
@@ -12,15 +12,11 @@ const actionBtns_tiradasAlt = function (data) {
// Inicializaciones de la tabla de tiradas
var tableTiradas;
-var editor;
(async () => {
- while (!window.hasOwnProperty("editor_url") && !window.hasOwnProperty("editor_headers"))
- await new Promise(resolve => setTimeout(resolve, 200));
- initEditorTiradas()
- while (!window.hasOwnProperty("datatable_lang_url"))
+ while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url"))
await new Promise(resolve => setTimeout(resolve, 200));
initTableTiradas();
@@ -36,42 +32,69 @@ var editor;
})();
-function initEditorTiradas() {
+$('#add_tirada_alt').on('click', function () {
- editor = new $.fn.dataTable.Editor({
- ajax: {
- url: window.editor_url,
- headers: window.editor_headers,
+ const dimension = getDimensionLibro();
+
+ let datos = {
+ tirada: $('#tirada_alt').val(),
+ merma: 20, ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>calcular merma
+ 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);
+
+ $.ajax({
+ type: "POST",
+ url: window.get_tirada_url,
+ data: datos,
+ success: function (data) {
+
+ if(data.lineas.length >0){
+ // Se cogen los valores de la linea con los datos correspondientes
+ $.each(data.lineas, function(key, value) {
+
+ console.log(value);
+ });
+
+ }
+ else{
+
+ }
+ yeniden(data[window.csrf_token]);
},
- table: "#tableTiradas",
- idSrc: 'id',
- fields: [
- {
- name: "tirada",
- }, {
- name: "coste_impresion",
- type: "hidden"
- }, {
- name: "coste_envio",
- type: "hidden"
- }, {
- name: "margen",
- type: "hidden"
- }, {
- name: "total_pedido",
- type: "hidden"
- }, {
- name: "precio_unidad",
- type: "hidden"
- }, {
- name: "json_tiradas",
- type: "hidden"
- },
- ]
+ error: function(e){
+
+ }
});
+});
+
+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": {
@@ -83,7 +106,6 @@ function initTableTiradas() {
"ordering": false,
"autoWidth": false,
"responsive": true,
- "dom": '<"mt-4"><"float-end"B><"float-start"l>= lang('Presupuestos.tiradasInfoIVA') ?>
- +