From d9afa9a1efd9d392db15eec60818c1e2c1526997 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 25 Sep 2023 08:03:28 +0200 Subject: [PATCH] ya funcionando la consulta de papel_impresion/maquinas --- .../Configuracion/Maquinascalles.php | 18 +-- ci4/app/Controllers/Test.php | 9 +- .../Configuracion/MaquinasCallesEntity.php | 6 +- ci4/app/Language/en/MaquinasCalles.php | 14 +- ci4/app/Language/es/MaquinasCalles.php | 14 +- ci4/app/Models/Configuracion/MaquinaModel.php | 140 +++++++++++------- .../Configuracion/MaquinasCallesModel.php | 41 ++--- .../Configuracion/PapelImpresionModel.php | 48 ++++++ ci4/app/Services/PresupuestoService.php | 95 ++++++++++-- .../maquinas/viewMaquinaForm.php | 10 +- 10 files changed, 251 insertions(+), 144 deletions(-) diff --git a/ci4/app/Controllers/Configuracion/Maquinascalles.php b/ci4/app/Controllers/Configuracion/Maquinascalles.php index c5816014..9c46a46c 100644 --- a/ci4/app/Controllers/Configuracion/Maquinascalles.php +++ b/ci4/app/Controllers/Configuracion/Maquinascalles.php @@ -52,19 +52,12 @@ class Maquinascalles extends \App\Controllers\GoBaseResourceController // Build our Editor instance and process the data coming from _POST $response = Editor::inst($db, 'maquinas_calles') ->fields( - Field::inst('formas_min') + Field::inst('formas') ->validator('Validate::numeric', array( - 'message' => lang('MaquinasCalles.validation.formas_min.integer')) + 'message' => lang('MaquinasCalles.validation.formas.integer')) ) ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasCalles.validation.formas_min.required')) - ), - Field::inst('formas_max') - ->validator('Validate::numeric', array( - 'message' => lang('MaquinasCalles.validation.formas_max.integer')) - ) - ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasCalles.validation.formas_max.required')) + 'message' => lang('MaquinasCalles.validation.formas.required')) ), Field::inst('internas') ->validator('Validate::numeric', array( @@ -94,10 +87,9 @@ class Maquinascalles extends \App\Controllers\GoBaseResourceController foreach ($data['data'] as $pkey => $values) { // Si no se quiere borrar... if ($data['data'][$pkey]['is_deleted'] != 1) { - $process_data['formas_min'] = $data['data'][$pkey]['formas_min']; - $process_data['formas_max'] = $data['data'][$pkey]['formas_max']; + $process_data['formas'] = $data['data'][$pkey]['formas']; $process_data['maquina_id'] = $data['data'][$pkey]['maquina_id']; - $response = $this->model->checkIntervals($process_data, $pkey); + $response = $this->model->checkDuplicatedFormas($process_data, $pkey); // No se pueden duplicar valores al crear o al editar if (!empty($response)) { return $response; diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 26d1a273..8811414e 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -2,7 +2,8 @@ namespace App\Controllers; -use App\Models\Configuracion\MaquinasCallesModel; +use App\Models\Presupuestos\PresupuestoModel; +use App\Services\PresupuestoService; class Test extends BaseController { @@ -15,11 +16,7 @@ class Test extends BaseController public function index() { - $model = new MaquinasCallesModel(); - echo '
';
-        $resourceData = $model->getResource("", 113)->get()->getResultObject();
-        var_dump($resourceData);
-        echo '
'; + PresupuestoService::test(); } } \ No newline at end of file diff --git a/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php b/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php index 5bca1d7c..57f17c59 100644 --- a/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php +++ b/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php @@ -8,8 +8,7 @@ class MaquinasCallesEntity extends \CodeIgniter\Entity\Entity protected $attributes = [ "id" => null, "maquina_id" => null, - "formas_min" => null, - "formas_max" => null, + "formas" => null, "internas" => 3.32, "externas" => 1.66, "user_created_id" => 0, @@ -20,8 +19,7 @@ class MaquinasCallesEntity extends \CodeIgniter\Entity\Entity ]; protected $casts = [ "maquina_id" => "int", - "formas_min" => "int", - "formas_max" => "int", + "formas" => "int", "internas" => "float", "externas" => "float", "user_created_id" => "int", diff --git a/ci4/app/Language/en/MaquinasCalles.php b/ci4/app/Language/en/MaquinasCalles.php index 743baada..704e28f4 100644 --- a/ci4/app/Language/en/MaquinasCalles.php +++ b/ci4/app/Language/en/MaquinasCalles.php @@ -6,20 +6,12 @@ return [ 'id' => 'ID', 'moduleTitle' => 'Streets config', 'deleteLine' => 'the selected register', - 'formas_min' => 'Shapes mín.', - 'formas_max' => 'Shapes max.', + 'formas' => 'Shapes', 'internas' => 'Internal streets', 'externas' => 'External streets', 'validation' => [ - 'error_calle_overlap' => 'The range [Shapes mín, Shapes max] is overlapped with another one.', - 'error_calle_range' => 'The field Shapes min. must be lower than the field Shapes max.', - 'formas_min' => [ - 'integer' => 'Must be a integer number.', - 'required' => 'Required.', - - ], - - 'formas_max' => [ + 'error_formas_exists' => 'The shape value for another line already exists', + 'formas' => [ 'integer' => 'Must be a integer number.', 'required' => 'Required.', diff --git a/ci4/app/Language/es/MaquinasCalles.php b/ci4/app/Language/es/MaquinasCalles.php index dbb8c939..dbf93d8a 100644 --- a/ci4/app/Language/es/MaquinasCalles.php +++ b/ci4/app/Language/es/MaquinasCalles.php @@ -6,20 +6,12 @@ return [ 'id' => 'ID', 'moduleTitle' => 'Configuración Calles', 'deleteLine' => 'el registro seleccionado', - 'formas_min' => 'Formas mín.', - 'formas_max' => 'Formas max.', + 'formas' => 'Formas', 'internas' => 'Calles internas', 'externas' => 'Calles externas', 'validation' => [ - 'error_calle_overlap' => 'El rango [Formas mín, Formas max] se solapa con otro existente para el tipo seleccionado.', - 'error_calle_range' => 'El campo Formas mín. debe ser menor que el campo Formas max.', - 'formas_min' => [ - 'integer' => 'Debe contener un número entero.', - 'required' => 'Requerido.', - - ], - - 'formas_max' => [ + 'error_formas_exists' => 'Ya existe el valor de forma para otra línea', + 'formas' => [ 'integer' => 'Debe contener un número entero.', 'required' => 'Requerido.', diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index bb5dbdb3..247e4ba2 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -1,4 +1,5 @@ "t1.orden_planning", 10 => "t1.min", 11 => "t1.max", - - + + ]; protected $allowedFields = [ @@ -252,14 +253,15 @@ class MaquinaModel extends \App\Models\GoBaseModel return $result; } - public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa){ + public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa) + { $builder = $this->db ->table($this->table . " t1") ->select( - "'".$papel_impresion_id."'". " as papel_impresion_id, t1.id AS maquina_id, '0' as active" - ); + "'" . $papel_impresion_id . "'" . " as papel_impresion_id, t1.id AS maquina_id, '0' as active" + ); $builder->where("t1.is_rotativa", $rotativa); - + return $builder; } @@ -280,57 +282,87 @@ class MaquinaModel extends \App\Models\GoBaseModel $builder->join("lg_maquinas t2", "t1.padre_id = t2.id", "left"); //JJO - $builder->where("t1.is_deleted", 0); + $builder->where("t1.is_deleted", 0); return empty($search) ? $builder : $builder - ->groupStart() - ->like("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.velocidad", $search) - ->orLike("t1.ancho", $search) - ->orLike("t1.alto", $search) - ->orLike("t1.ancho_impresion", $search) - ->orLike("t1.alto_impresion", $search) - ->orLike("t1.alto_click", $search) - ->orLike("t1.min", $search) - ->orLike("t1.max", $search) - ->orLike("t1.duracion_jornada", $search) - ->orLike("t1.orden_planning", $search) - ->orLike("t1.precio_tinta_negro", $search) - ->orLike("t1.precio_tinta_color", $search) - ->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.observaciones", $search) - ->orLike("t2.id", $search) - ->orLike("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.velocidad", $search) - ->orLike("t1.ancho", $search) - ->orLike("t1.alto", $search) - ->orLike("t1.ancho_impresion", $search) - ->orLike("t1.alto_impresion", $search) - ->orLike("t1.alto_click", $search) - ->orLike("t1.padre_id", $search) - ->orLike("t1.min", $search) - ->orLike("t1.max", $search) - ->orLike("t1.duracion_jornada", $search) - ->orLike("t1.orden_planning", $search) - ->orLike("t1.precio_tinta_negro", $search) - ->orLike("t1.precio_tinta_color", $search) - ->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.observaciones", $search) - ->orLike("t2.nombre", $search) - ->groupEnd(); + ->groupStart() + ->like("t1.id", $search) + ->orLike("t1.nombre", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.velocidad", $search) + ->orLike("t1.ancho", $search) + ->orLike("t1.alto", $search) + ->orLike("t1.ancho_impresion", $search) + ->orLike("t1.alto_impresion", $search) + ->orLike("t1.alto_click", $search) + ->orLike("t1.min", $search) + ->orLike("t1.max", $search) + ->orLike("t1.duracion_jornada", $search) + ->orLike("t1.orden_planning", $search) + ->orLike("t1.precio_tinta_negro", $search) + ->orLike("t1.precio_tinta_color", $search) + ->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.observaciones", $search) + ->orLike("t2.id", $search) + ->orLike("t1.id", $search) + ->orLike("t1.nombre", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.velocidad", $search) + ->orLike("t1.ancho", $search) + ->orLike("t1.alto", $search) + ->orLike("t1.ancho_impresion", $search) + ->orLike("t1.alto_impresion", $search) + ->orLike("t1.alto_click", $search) + ->orLike("t1.padre_id", $search) + ->orLike("t1.min", $search) + ->orLike("t1.max", $search) + ->orLike("t1.duracion_jornada", $search) + ->orLike("t1.orden_planning", $search) + ->orLike("t1.precio_tinta_negro", $search) + ->orLike("t1.precio_tinta_color", $search) + ->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.observaciones", $search) + ->orLike("t2.nombre", $search) + ->groupEnd(); + } + + public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $papel_impresion_id = -1) + { + /* + 1.-> tarifa_Tipo impresion + 2.-> Maquina + 3.-> Papeles impresion asociados a esa maquina + 4.-> papeles genericos que aparecen en esos papeles impresion + */ + $builder = $this->db + ->table($this->table . " t1") + ->distinct('t1.id') + ->select( + "t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion, + t1.alto_impresion AS alto_impresion, t1.is_rotativa AS is rotativa" + ) + ->join("lg_maquinas_tarifas_impresion t2", "t1.id = t2.maquina_id", "left") + ->join("lg_maquina_papel_impresion t3", "t1.id = t3.maquina_id", "left") + + + ->where("t1.is_deleted", 0) + ->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); + + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } } diff --git a/ci4/app/Models/Configuracion/MaquinasCallesModel.php b/ci4/app/Models/Configuracion/MaquinasCallesModel.php index aca7e2d6..55eb1bdc 100644 --- a/ci4/app/Models/Configuracion/MaquinasCallesModel.php +++ b/ci4/app/Models/Configuracion/MaquinasCallesModel.php @@ -13,16 +13,14 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel protected $useAutoIncrement = true; const SORTABLE = [ - 0 => "t1.formas_min", - 1 => "t1.formas_max", - 2 => "t1.internas", - 3 => "t1.externas", + 0 => "t1.formas", + 1 => "t1.internas", + 2 => "t1.externas", ]; protected $allowedFields = [ "maquina_id", - "formas_min", - "formas_max", + "formas", "internas", "externas", "user_created_id", @@ -43,10 +41,7 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel public static $labelField = "maquina_id"; protected $validationRules = [ - "formas_min" => [ - "rules" => "required|int", - ], - "formas_max" => [ + "formas" => [ "rules" => "required|int", ], "internas" => [ @@ -70,8 +65,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.maquina_id as maquina, t1.formas_min AS formas_min, - t1.formas_max AS formas_max, t1.internas AS internas, t1.externas AS externas," + "t1.id AS id, t1.maquina_id as maquina, t1.formas AS formas, + t1.internas AS internas, t1.externas AS externas," ); //JJO @@ -82,29 +77,22 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel ? $builder : $builder ->groupStart() - ->like("t1.formas_min", $search) - ->orLike("t1.formas_max", $search) + ->like("t1.formas", $search) ->orLike("t1.internas", $search) ->orLike("t1.externas", $search) - ->orLike("t1.formas_min", $search) - ->orLike("t1.formas_max", $search) + ->orLike("t1.formas", $search) ->orLike("t1.internas", $search) ->orLike("t1.externas", $search) ->groupEnd(); } - public function checkIntervals($data = [], $id = null){ + public function checkDuplicatedFormas($data = [], $id = null){ helper('general'); - - if(floatval($data["formas_min"])>= floatval($data["formas_max"])){ - return lang('MaquinasCalles.validation.error_calle_range'); - } - - + $rows = $this->db ->table($this->table) - ->select("id, formas_min, formas_max") + ->select("id, formas") ->where("is_deleted", 0) ->where("maquina_id", $data['maquina_id']) ->get()->getResultObject(); @@ -116,9 +104,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel continue; } } - if(check_overlap(floatval($data["formas_min"]), floatval($data["formas_max"]), - $row->formas_min, $row->formas_max)){ - return lang('MaquinasCalles.validation.error_calle_overlap'); + if(intval($data["formas"]) == $row->formas){ + return lang('MaquinasCalles.validation.error_formas_exists'); } } } diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index 2a7e1411..d600bbc2 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -209,4 +209,52 @@ class PapelImpresionModel extends \App\Models\GoBaseModel return $builder; } + + /** + * @param null $papel_generico_id + * @param null $gramaje + * @param mixed $options + * array con las opciones para bn,color,cubierta,sobrecubierta,rotativa + * @param mixed $is_activo=true + * + * @return [type] + */ + public function getIdPapelesImpresionForPresupuesto($papel_generico_id = null, $gramaje = null, $options=[]){ + $bn = array_key_exists('bn', $options) ? $options['bn'] : null; + $color = array_key_exists('color', $options)? $options['color'] : null; + $cubierta = array_key_exists('cubierta', $options)? $options['cubierta'] : null; + $sobrecubierta = array_key_exists('sobrecubierta', $options)? $options['sobrecubierta'] : null; + $rotativa = array_key_exists('rotativa', $options)? $options['rotativa'] : null; + + $builder = $this->db + ->table($this->table . " t1") + ->distinct("t1.id") + ->select( + "t1.id AS id, t1.nombre AS nombre, t1.papel_generico_id AS papel_generico_id, + t1.gramaje as gramaje, t1.espesor AS espesor, t1.precio_tonelada AS precio_tonelada, t1.rotativa AS rotativa"); + + $builder->where("t1.is_deleted", 0); + $builder->where("t1.isActivo", 1); + + $builder->where("t1.papel_generico_id", $papel_generico_id); + $builder->where("t1.gramaje", $gramaje); + + if(!is_null($bn)){ + $builder->where("t1.bn", $bn); + } + if(!is_null($color)){ + $builder->where("t1.color", $color); + } + if(!is_null($cubierta)){ + $builder->where("t1.cubierta", $cubierta); + } + if(!is_null($sobrecubierta)){ + $builder->where("t1.sobrecubierta", $sobrecubierta); + } + if(!is_null($rotativa)){ + $builder->where("t1.rotativa", $rotativa); + } + + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); + } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 6c2eb28d..6e38684d 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -2,26 +2,99 @@ namespace App\Services; +use App\Controllers\Servicios\Maquetacion; use CodeIgniter\Config\BaseService; -use App\Models\Configuracion\PapelGenericoModel; +use App\Models\Configuracion\MaquinaModel; +use App\Models\Configuracion\PapelImpresionModel; class PresupuestoService extends BaseService { - public static function example(){ - return 'Hola'; + + public static function test(){ + $uso = 'interior'; + $tipo = 'negro'; + $cantidad = (object)array( + 'paginas' => 100, + 'tirada' => 50, + 'merma' => 5, + 'merma_portada' => 1, + ); + + + $maquina_model = new MaquinaModel(); + + + $opciones_papel = array( + 'bn' => 1, + 'cubierta' => 0, + 'sobrecubierta' => 0, + 'rotativa' => 0, + ); + $papelimpresionmodel = new PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: 4, + gramaje: 70, + options: $opciones_papel + ); + foreach($papeles as $papel){ + echo '-------------------------------'; + $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( + is_rotativa: $papel->rotativa, + tarifa_tipo: 'negro', + papel_impresion_id: $papel->id + ); + echo '
';
+            echo '

Para papel impresion: ' . $papel->nombre . '

'; + echo ''; + var_dump($maquinas); + echo '
'; + } + + + } - /* + /** - * getPapelForMenu. - * Devuelve la lista de papeles disponibles - * - * @param mixed $tipo_impresion - * @param mixed $dimensiones - * @return mixed + * @param mixed $uso + * contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta'] + * @param mixed $tipo + * contiene algun parametro de la lista ['negro','color','negrohq','bicolor','colorhq'] + * @param mixed $datos_cantidad + * objeto con la siguiente extructura: + * -> 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 + * -> nombre: nombre de la maquina + * -> calles: objeto con la configuracion de las calles de la maquina + * -> formas: numero de formas + * -> calle_interna: valor de las calles internas de la maquina + * -> calle_externa: valor de las calles externas de la maquina + * -> ancho_impresion: valor maximo del ancho para imprimir + * -> alto_impresion: valor maximo del alto para imprimir + * + * @return [type] */ - public static function test(){ + public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp){ + + $tipo = array_get($args, 'tipo') ; + $tirada = array_get($args, 'tirada'); + $merma = array_get($args, 'merma'); + $merma_portada = array_get($args, 'merma_portada'); + $ancho = array_get($args, 'ancho'); + $alto = array_get($args, 'alto'); + $paginas = array_get($args, 'paginas'); + $papel = array_get($args, 'papel'); + $papel_compra = array_get($args, 'papel_compra'); + $gramaje = array_get($args, 'gramaje'); + $maquina = array_get($args, 'maquina'); + $tarifa = array_get($args, 'tarifa'); + $cosido = array_get($args, 'cosido', false); } } \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php index f648b335..02873197 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php @@ -78,8 +78,7 @@ - - + @@ -657,9 +656,7 @@ table : "#tableOfCalles", idSrc: 'id', fields: [ { - name: "formas_min" - }, { - name: "formas_max" + name: "formas" }, { name: "internas" }, { @@ -728,8 +725,7 @@ async: true, }), columns : [ - { 'data': 'formas_min' }, - { 'data': 'formas_max' }, + { 'data': 'formas' }, { 'data': 'internas' }, { 'data': 'externas' }, { data: actionBtns,