From d9afa9a1efd9d392db15eec60818c1e2c1526997 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 25 Sep 2023 08:03:28 +0200 Subject: [PATCH 01/27] 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, From 089df469e7e73f97514edbe8251402434a0f4992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 25 Sep 2023 13:47:49 +0200 Subject: [PATCH 02/27] trabajando en preciopliego --- ci4/app/Controllers/Test.php | 5 + ci4/app/Models/Configuracion/MaquinaModel.php | 3 +- .../Configuracion/MaquinasCallesModel.php | 17 ++ .../PapelImpresionMargenModel.php | 57 ++++-- ci4/app/Services/PresupuestoService.php | 183 ++++++++++++++++-- 5 files changed, 232 insertions(+), 33 deletions(-) diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 8811414e..5a4d5f45 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -18,5 +18,10 @@ class Test extends BaseController { PresupuestoService::test(); } + + public function pruebaJJO() + { + PresupuestoService::test2(); + } } \ No newline at end of file diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 247e4ba2..9b5d82e4 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -349,7 +349,8 @@ class MaquinaModel extends \App\Models\GoBaseModel ->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" + t1.alto_impresion AS alto_impresion, t1.ancho AS ancho, t1.alto AS alto, + 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") diff --git a/ci4/app/Models/Configuracion/MaquinasCallesModel.php b/ci4/app/Models/Configuracion/MaquinasCallesModel.php index 55eb1bdc..6b84efc0 100644 --- a/ci4/app/Models/Configuracion/MaquinasCallesModel.php +++ b/ci4/app/Models/Configuracion/MaquinasCallesModel.php @@ -86,6 +86,23 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel ->groupEnd(); } + public function getCallesForMaquina($maquina_id=-1, $num_formas = 0) + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.formas AS formas, + t1.internas AS internas, t1.externas AS externas," + ); + + //JJO + $builder->where('t1.maquina_id', $maquina_id); + $builder->where('t1.formas', $num_formas); + $builder->where("t1.is_deleted", 0); + + return $builder->get()->getResultObject(); + } + public function checkDuplicatedFormas($data = [], $id = null){ helper('general'); diff --git a/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php b/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php index 1c320067..a986b135 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php @@ -1,4 +1,5 @@ where('papel_impresion_id', $papel_impresion_id); + $builder->where('papel_impresion_id', $papel_impresion_id); $builder->where("t1.is_deleted", 0); return empty($search) ? $builder : $builder - ->groupStart() - ->like("t1.paginas_min", $search) - ->orLike("t1.paginas_max", $search) - ->orLike("t1.margen", $search) - ->orLike("t1.paginas_min", $search) - ->orLike("t1.paginas_max", $search) - ->orLike("t1.margen", $search) - ->groupEnd(); + ->groupStart() + ->like("t1.paginas_min", $search) + ->orLike("t1.paginas_max", $search) + ->orLike("t1.margen", $search) + ->orLike("t1.paginas_min", $search) + ->orLike("t1.paginas_max", $search) + ->orLike("t1.margen", $search) + ->groupEnd(); } - public function checkIntervals($data = [], $id_linea = null, $papel_impresion_id = null){ - + public function checkIntervals($data = [], $id_linea = null, $papel_impresion_id = null) + { + helper('general'); - if(floatval($data["paginas_min"])>= floatval($data["paginas_max"])){ + if (floatval($data["paginas_min"]) >= floatval($data["paginas_max"])) { return lang('PapelImpresionMargenes.validation.error_paginas_range'); } @@ -119,17 +121,38 @@ class PapelImpresionMargenModel extends \App\Models\GoBaseModel foreach ($rows as $row) { - if (!is_null($id_linea)){ - if($row->id == $id_linea){ + if (!is_null($id_linea)) { + if ($row->id == $id_linea) { continue; } } - if(check_overlap(floatval($data["paginas_min"]), floatval($data["paginas_max"]), - $row->paginas_min, $row->paginas_max)){ - return lang('PapelImpresionMargenes.validation.error_paginas_overlap'); + if (check_overlap( + floatval($data["paginas_min"]), + floatval($data["paginas_max"]), + $row->paginas_min, + $row->paginas_max + )) { + return lang('PapelImpresionMargenes.validation.error_paginas_overlap'); } } return ""; } + + public function getMargenFormPags($papel_impresion_id = -1, $num_paginas = 0) + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.margen AS margen" + ); + //JJO + $builder->where('papel_impresion_id', $papel_impresion_id); + $builder->where("t1.is_deleted", 0); + $builder->where("t1.paginas_min <=", $num_paginas); + $builder->where("t1.paginas_max >=", $num_paginas); + + + return $builder->get()->getResultArray(); + } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 6e38684d..dbce4497 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -2,16 +2,16 @@ namespace App\Services; -use App\Controllers\Servicios\Maquetacion; use CodeIgniter\Config\BaseService; -use App\Models\Configuracion\MaquinaModel; -use App\Models\Configuracion\PapelImpresionModel; + + class PresupuestoService extends BaseService { - - public static function test(){ + + public static function test() + { $uso = 'interior'; $tipo = 'negro'; $cantidad = (object)array( @@ -22,8 +22,8 @@ class PresupuestoService extends BaseService ); - $maquina_model = new MaquinaModel(); - + $maquina_model = new \App\Models\Configuracion\MaquinaModel(); + $opciones_papel = array( 'bn' => 1, @@ -31,13 +31,16 @@ class PresupuestoService extends BaseService 'sobrecubierta' => 0, 'rotativa' => 0, ); - $papelimpresionmodel = new PapelImpresionModel(); + $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); + + echo 'Papeles impresion con gramaje=90'; + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( papel_generico_id: 4, - gramaje: 70, + gramaje: 90, options: $opciones_papel ); - foreach($papeles as $papel){ + foreach ($papeles as $papel) { echo '-------------------------------'; $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, @@ -50,9 +53,75 @@ class PresupuestoService extends BaseService var_dump($maquinas); echo ''; } + } + + + /*public static function test2() + { + + $uso = 'interior'; + $tipo = 'negro'; + $cantidad = (object)array( + 'paginas' => 100, + 'tirada' => 50, + 'merma' => 5, + 'merma_portada' => 1, + ); + + + $maquina_model = new \App\Models\Configuracion\MaquinaModel(); + + + $opciones_papel = array( + 'bn' => 1, + 'cubierta' => 0, + 'sobrecubierta' => 0, + 'rotativa' => 0, + ); + $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: 4, + gramaje: 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 + ); + + foreach ($maquinas as $maquina) { + + if ($maquina->maquina == 'C1100-ByN') { + + $formas = PresupuestoService::getNumFormasPlanaInterior( + maquina: $maquina, + ancho: 165.0, + alto: 148.0, + isCosido: true + ); + $precio_pliego = PresupuestoService::getPrecioPliego($maquina, $papel); + echo '
';
+                    echo '

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

'; + echo ''; + var_dump($maquina); + var_dump($formas); + var_dump($precio_pliego); + echo '
'; + } + } + } + }*/ + + public static function test2(){ + - - + + $papel = (object) array('id' => 529, 'gramaje'=>80, "precio_tonelada"=>10); + $maquina = (object) array('alto' => 120, 'ancho'=>200); + echo PresupuestoService::getPrecioPliego($maquina, $papel,2); } @@ -80,9 +149,10 @@ class PresupuestoService extends BaseService * * @return [type] */ - public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp){ + public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp) + { - $tipo = array_get($args, 'tipo') ; + $tipo = array_get($args, 'tipo'); $tirada = array_get($args, 'tirada'); $merma = array_get($args, 'merma'); $merma_portada = array_get($args, 'merma_portada'); @@ -96,5 +166,88 @@ class PresupuestoService extends BaseService $tarifa = array_get($args, 'tarifa'); $cosido = array_get($args, 'cosido', false); } + + private static function getNumFormasPlanaInterior($maquina, $ancho, $alto, $isCosido) + { + $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; + + // horizontales + $h1 = floor($maquina->ancho_impresion / $anchoForCalculo); + $v1 = floor($maquina->alto_impresion / $alto); + $formas_h = $h1 * $v1; //p1 + + // verticales + $h2 = floor($maquina->ancho_impresion / $alto); + $v2 = floor($maquina->alto_impresion / $anchoForCalculo); + $formas_v = $h2 * $v2; //p2 + + // hay que iterar hasta que las formas entren o el num_formas sean ==0 + // se checkea que entran en el numero de calles + // se obtiene la configuracion de las calles para esa maquina + $good_configuration = false; + do { + $num_formas = ($formas_h > $formas_v) ? $formas_h : $formas_v; + $num_formas = $isCosido ? $num_formas * 2 : $num_formas; + + // solo hay calles para 2 formas o mas + if ((($formas_h > $formas_v) ? $h1 : $h2) > 1) { + + var_dump($formas_v); + var_dump($formas_h); + var_dump($h1); + var_dump(($formas_h > $formas_v)); + $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, ($formas_h > $formas_v) ? $h1 : $h2)[0]; + // se calcula el tamaño necesario para el numero de formas + el numero de calles internas + $size_needed = (($formas_h > $formas_v) ? $anchoForCalculo : $alto) * (($formas_h > $formas_v) ? $h1 : $h2) + + ((($formas_h > $formas_v) ? $h1 : $h2) - 1) * $calles->internas; + + // si el tamaño calculado entra en el area de impresion + if ($size_needed <= $maquina->ancho_impresion) + $good_configuration = true; + // en caso contrario se resta una forma donde corresponda para iterar otra vez + else { + if ($formas_h > $formas_v) { + $formas_h = ($formas_h - 1 > 0) ? $formas_h - 1 : 0; + } else { + $formas_v = ($formas_v - 1 > 0) ? $formas_v - 1 : 0; + } + } + } + // Si solo hay una forma, tiene que entrar en el ancho de impresion + else if ((($formas_h > $formas_v) ? $h1 : $h2) == 1) { + if ((($formas_h > $formas_v) ? $h1 : $h2) < $maquina->ancho_impresion) { + $good_configuration = true; + } + } + } while ($num_formas != 0 && !$good_configuration); + + // si no hay formas se devuelve n/a + if ($num_formas == 0) { + $response['num_formas']['posicion_formas'] = 'n/a'; // not available + } + else if ($formas_h > $formas_v) { + $response['num_formas']['posicion_formas'] = 'h'; + $response['num_formas']['num_formas_horizontales'] = $h1; + $response['num_formas']['num_formas_verticales'] = $v1; + } else { + $response['num_formas']['posicion_formas'] = 'v'; + $response['num_formas']['num_formas_horizontales'] = $h2; + $response['num_formas']['num_formas_verticales'] = $v2; + } + + return $response; + } + + + private static function getPrecioPliego($maquina, $papel_impresion, $paginas) + { + $margen = (new \App\Models\Configuracion\PapelImpresionMargenModel())->getMargenFormPags($papel_impresion->id, $paginas); + if(count($margen)>0){ + $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; + $precio_pliego = $papel_impresion->precio_tonelada*(1+(intVal($margen[0]['margen'])/100)) / 1000000 * $peso_por_pliego; + + return round($precio_pliego * 1.04, 6); + } + return -1; + } } - \ No newline at end of file From 011ecca0435798d8f9067ebdd07a2d282e859c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 25 Sep 2023 14:31:44 +0200 Subject: [PATCH 03/27] trabajando en preciopliego2 --- ci4/app/Models/Configuracion/MaquinaModel.php | 6 ++++-- ci4/app/Services/PresupuestoService.php | 11 ++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 9b5d82e4..140774fc 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -336,7 +336,7 @@ class MaquinaModel extends \App\Models\GoBaseModel ->groupEnd(); } - public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $papel_impresion_id = -1) + public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $tirada, $papel_impresion_id = -1) { /* 1.-> tarifa_Tipo impresion @@ -362,7 +362,9 @@ class MaquinaModel extends \App\Models\GoBaseModel ->where("t2.is_deleted", 0) ->where("t2.tipo", $tarifa_tipo) ->where("t3.papel_impresion_id", $papel_impresion_id) - ->where("t3.active", 1); + ->where("t3.active", 1) + ->where("t1.min <=", $tirada) + ->where("t1.max >=", $tirada); return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index dbce4497..f35a5800 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -15,10 +15,10 @@ class PresupuestoService extends BaseService $uso = 'interior'; $tipo = 'negro'; $cantidad = (object)array( - 'paginas' => 100, - 'tirada' => 50, - 'merma' => 5, - 'merma_portada' => 1, + 'paginas' => 200, + 'tirada' => 500, + 'merma' => 10, + 'merma_portada' => 10, ); @@ -45,7 +45,8 @@ class PresupuestoService extends BaseService $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, tarifa_tipo: 'negro', - papel_impresion_id: $papel->id + papel_impresion_id: $papel->id, + tirada: $cantidad->tirada+$cantidad->merma ); echo '
';
             echo '

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

'; From 834ba3488d9faf96a5d1f980386edb773b33b5e4 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 25 Sep 2023 18:07:07 +0200 Subject: [PATCH 04/27] =?UTF-8?q?a=C3=B1adido=20orden=20multipla=20maquina?= =?UTF-8?q?spapelesimpresion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Configuracion/Maquinaspapelesimpresion.php | 16 +++++++++++++--- ci4/app/Language/es/Maquinas.php | 4 ++-- ci4/app/Services/PresupuestoService.php | 6 +++--- .../configuracion/maquinas/viewMaquinaForm.php | 18 ++++++++---------- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php index 0f05f073..5079aee9 100644 --- a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php @@ -78,8 +78,17 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController $length = $reqData['length'] ?? 5; $search = $reqData['search']['value']; $requestedOrder = $reqData['order']['0']['column'] ?? 1; - $order = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 1]; + $requestedOrder2 = $reqData['order']['1']['column'] ?? $requestedOrder; + $requestedOrder3 = $reqData['order']['2']['column'] ?? $requestedOrder; + $requestedOrder4 = $reqData['order']['3']['column'] ?? $requestedOrder; + $order = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; + $order2 = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder2 >= 0 ? $requestedOrder2 : $requestedOrder]; + $order3 = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder3 >= 0 ? $requestedOrder3 : $requestedOrder]; + $order4 = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder4 >= 0 ? $requestedOrder4 : $requestedOrder]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; + $dir2 = $reqData['order']['1']['dir'] ?? $dir; + $dir3 = $reqData['order']['2']['dir'] ?? $dir; + $dir4= $reqData['order']['3']['dir'] ?? $dir; $maquina_id = $reqData['maquina_id'] ?? -1; // Para saber si el papel que se tiene que mostrar es para rotativa @@ -88,11 +97,12 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController // Se obtienen las líneas de las tarifas seleccionadas para esta máquina $tarifas = $tarifa_model->getResource("", $maquina_id)->get()->getResultObject(); - $resourceData = $this->model->getResource($search, $isRotativa, $tarifas, $maquina_id)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + $resourceData = $this->model->getResource($search, $isRotativa, $tarifas, $maquina_id) + ->orderBy($order, $dir)->orderBy($order2, $dir2)->orderBy($order3, $dir3)->orderBy($order4, $dir4)->limit($length, $start)->get()->getResultObject(); return $this->respond(Collection::datatable( $resourceData, - $this->model->getResource()->countAllResults(), + $this->model->getResource("", $isRotativa, $tarifas, $maquina_id)->countAllResults(), $this->model->getResource($search, $isRotativa, $tarifas, $maquina_id)->countAllResults() )); } else { diff --git a/ci4/app/Language/es/Maquinas.php b/ci4/app/Language/es/Maquinas.php index a58cfc6c..719665ad 100644 --- a/ci4/app/Language/es/Maquinas.php +++ b/ci4/app/Language/es/Maquinas.php @@ -12,8 +12,8 @@ return [ 'createdAt' => 'Created At', 'deletedAt' => 'Deleted At', 'duracionJornada' => 'Duracion Jornada', - 'forzarNumFormasHorizontalesPortada' => 'Forzar Num Formas Horizontales Portada', - 'forzarNumFormasVerticalesPortada' => 'Forzar Num Formas Verticales Portada', + 'forzarNumFormasHorizontalesPortada' => 'Forzar Num Formas Horizontales Cubierta', + 'forzarNumFormasVerticalesPortada' => 'Forzar Num Formas Verticales Cubierta', 'id' => 'ID', 'impresion' => 'impresion', 'isDeleted' => 'Is Deleted', diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index f35a5800..339dae09 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -120,7 +120,7 @@ class PresupuestoService extends BaseService - $papel = (object) array('id' => 529, 'gramaje'=>80, "precio_tonelada"=>10); + $papel = (object) array('id' => 201, 'gramaje'=>70, "precio_tonelada"=>1750); $maquina = (object) array('alto' => 120, 'ancho'=>200); echo PresupuestoService::getPrecioPliego($maquina, $papel,2); } @@ -245,9 +245,9 @@ 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 = $papel_impresion->precio_tonelada*(1+(intVal($margen[0]['margen'])/100)) / 1000000 * $peso_por_pliego; + $precio_pliego = $papel_impresion->precio_tonelada*(1+(floatval($margen[0]['margen'])/100.0)) / 1000000 * $peso_por_pliego; - return round($precio_pliego * 1.04, 6); + return round($precio_pliego, 6); } return -1; } 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 02873197..22003242 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 @@ -478,13 +478,14 @@ processing: true, autoWidth: true, responsive: true, - lengthMenu: [ 5, 10, 25], + lengthMenu: [ 5, 10, 25, 50, 75, 100, 250], order: [[ 1, "asc" ]], - pageLength: 10, + pageLength: 25, lengthChange: true, searching: true, paging: true, info: true, + stateSave: true, dom: "lftp", ajax : $.fn.dataTable.pipeline( { url: '', @@ -521,8 +522,11 @@ columnDefs: [ { orderable: false, - searchable: false, targets: [lastColNr2] + }, + { + searchable: false, + targets: [0,3,4,5,6,7,8,lastColNr2] } ], rowCallback: function (row, data) { @@ -531,13 +535,7 @@ }, language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" - }, - columnDefs: [ - { - searchable: false, - targets: [0,3,4,5,6,7,8] - } - ], + } } ); From 991a27286b6bedc51bfaf56a21c357c63b27b618 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Tue, 26 Sep 2023 09:25:40 +0200 Subject: [PATCH 05/27] trabajando en generar la tabla bn interior --- .../Presupuestos/Cosidotapablanda.php | 116 +++++--- ci4/app/Models/Configuracion/MaquinaModel.php | 2 +- .../MaquinasTarifasImpresionModel.php | 52 ++-- ci4/app/Services/PresupuestoService.php | 249 ++++++++++-------- 4 files changed, 263 insertions(+), 156 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 520929dc..9f086deb 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -3,13 +3,19 @@ namespace App\Controllers\Presupuestos; use App\Controllers\GoBaseResourceController; - +use App\Entities\Configuracion\Maquina; use App\Models\Collection; use App\Entities\Presupuestos\PresupuestoEntity; use App\Models\Configuracion\PapelGenericoModel; use App\Models\Presupuestos\PresupuestoModel; +use App\Services\PresupuestoService; +use App\Models\Configuracion\PapelImpresionModel; +use App\Models\Configuracion\MaquinaModel; +use App\Models\Configuracion\MaquinasTarifasImpresionModel; + + class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { @@ -397,43 +403,34 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $order = PresupuestoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; - $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); - foreach ($resourceData as $item) : - if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : - $item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100); - endif; - if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100) : - $item->causa_cancelacion = character_limiter($item->causa_cancelacion, 100); - endif; - if (isset($item->comentarios) && strlen($item->comentarios) > 100) : - $item->comentarios = character_limiter($item->comentarios, 100); - endif; - if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100) : - $item->comentarios_safekat = character_limiter($item->comentarios_safekat, 100); - endif; - if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100) : - $item->comentarios_tarifa = character_limiter($item->comentarios_tarifa, 100); - endif; - if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100) : - $item->tirada_alternativa_json_data = character_limiter($item->tirada_alternativa_json_data, 100); - endif; - if (isset($item->titulo) && strlen($item->titulo) > 100) : - $item->titulo = character_limiter($item->titulo, 100); - endif; - if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100) : - $item->paginas_color_posicion = character_limiter($item->paginas_color_posicion, 100); - endif; - if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100) : - $item->aprobado_json_data = character_limiter($item->aprobado_json_data, 100); - endif; - if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100) : - $item->comparador_json_data = character_limiter($item->comparador_json_data, 100); - endif; - if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100) : - $item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100); - endif; - endforeach; + $table_type = $reqData['table_type'] ?? null; + if (is_null($table_type)){ + return $this->failNotFound('Table type not found', 404); + } + + switch($table_type){ + case 'comp_int_bn': + + $datosPedido = (object)array( + 'paginas' => $reqData['paginas'] ?? 0, + 'tirada' => $reqData['tirada'] ?? 0, + 'merma' => $reqData['merma'] ?? 0, + 'ancho' => $reqData['alto'] ?? 100000, + 'alto' => $reqData['ancho'] ?? 100000, + 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto + ); + + $papel_generico_id = $reqData['papel_generico_id'] ?? 0; + $gramaje = $reqData['gramaje'] ?? 0; + + $resourceData = $this->getCompBnData($datosPedido, $papel_generico_id, $gramaje); + break; + + default: + break; + } + return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), @@ -444,6 +441,51 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } } + private function getCompBnData($datosPedido, $papel_generico_id, $gramaje){ + $uso = 'interior'; + $tipo = 'negro'; + + $opciones_papel = array( + 'bn' => 1, + 'cubierta' => 0, + 'sobrecubierta' => 0, + 'rotativa' => 0, + ); + + // Se obtienen los papeles disponibles + $papelimpresionmodel = new PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: $papel_generico_id, + gramaje: $gramaje, + options: $opciones_papel + ); + + $resultado = json_encode( + array('data' => array()) + ); + + // Para cada papel, se obtienen las maquinas disponibles + foreach ($papeles as $papel) { + $maquinamodel = new MaquinaModel(); + $maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto( + is_rotativa: $papel->rotativa, + tarifa_tipo: $tipo, + tirada: $datosPedido->tirada + $datosPedido->merma, + papel_impresion_id: $papel->id, + ); + + // Se recorren las máquinas y se calcula el coste de linea por cada una + foreach ($maquinas as $maquina) { + $tarifamodel = new MaquinasTarifasImpresionModel(); + $tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo); + $linea = PresupuestoService::getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + } + } + + return $resultado; + + } + public function allItemsSelect() { if ($this->request->isAJAX()) { diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 140774fc..3e85761c 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -350,7 +350,7 @@ class MaquinaModel extends \App\Models\GoBaseModel ->select( "t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.ancho AS ancho, t1.alto AS alto, - t1.is_rotativa AS is rotativa" + t1.is_rotativa AS is rotativa, t1.alto_click AS alto_click" ) ->join("lg_maquinas_tarifas_impresion t2", "t1.id = t2.maquina_id", "left") ->join("lg_maquina_papel_impresion t3", "t1.id = t3.maquina_id", "left") diff --git a/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php b/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php index 62b3e037..2dc1c9f7 100644 --- a/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php +++ b/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php @@ -1,4 +1,5 @@ db ->table($this->table . " t1") @@ -97,24 +98,45 @@ class MaquinasTarifasImpresionModel extends \App\Models\GoBaseModel ); //JJO - $builder->where('maquina_id', $maquina_id); + $builder->where('maquina_id', $maquina_id); $builder->where("t1.is_deleted", 0); - + $builder->join("lg_maquinas t2", "t1.maquina_id = t2.id", "left"); return empty($search) ? $builder : $builder - ->groupStart() - ->like("t1.id", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.precio", $search) - ->orLike("t1.uso", $search) - ->orLike("t1.id", $search) - ->orLike("t1.maquina_id", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.precio", $search) - ->orLike("t1.uso", $search) - ->groupEnd(); + ->groupStart() + ->like("t1.id", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.precio", $search) + ->orLike("t1.uso", $search) + ->orLike("t1.id", $search) + ->orLike("t1.maquina_id", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.precio", $search) + ->orLike("t1.uso", $search) + ->groupEnd(); + } + + public function getTarifa($maquina_id = -1, $uso = " ", $tipo = " ") + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.precio AS precio" + ); + + //JJO + $builder->where('maquina_id', $maquina_id); + $builder->where('tipo', $tipo); + $builder->where('uso', $uso); + $builder->where("t1.is_deleted", 0); + + $tarifas = $builder->get()->getResultArray(); + if (count($tarifas)>0){ + return floatval($tarifas[0]['precio']); + } + return $tarifas; } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 339dae09..48173d27 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -12,13 +12,24 @@ class PresupuestoService extends BaseService public static function test() { + $tarifa = (new \App\Models\Configuracion\MaquinasTarifasImpresionModel())->getTarifa(8, "interior", "negro"); + var_dump($tarifa); + } + + + public static function test2() + { + $uso = 'interior'; $tipo = 'negro'; - $cantidad = (object)array( + $datosPedido = (object)array( 'paginas' => 200, 'tirada' => 500, 'merma' => 10, 'merma_portada' => 10, + 'ancho' => 165, + 'alto' => 148, + 'isCosido' => true, ); @@ -32,9 +43,6 @@ class PresupuestoService extends BaseService 'rotativa' => 0, ); $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); - - echo 'Papeles impresion con gramaje=90'; - $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( papel_generico_id: 4, gramaje: 90, @@ -45,93 +53,32 @@ class PresupuestoService extends BaseService $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, tarifa_tipo: 'negro', + tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, - tirada: $cantidad->tirada+$cantidad->merma - ); - echo '
';
-            echo '

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

'; - echo ''; - var_dump($maquinas); - echo '
'; - } - } - - - /*public static function test2() - { - - $uso = 'interior'; - $tipo = 'negro'; - $cantidad = (object)array( - 'paginas' => 100, - 'tirada' => 50, - 'merma' => 5, - 'merma_portada' => 1, - ); - - - $maquina_model = new \App\Models\Configuracion\MaquinaModel(); - - - $opciones_papel = array( - 'bn' => 1, - 'cubierta' => 0, - 'sobrecubierta' => 0, - 'rotativa' => 0, - ); - $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); - $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( - papel_generico_id: 4, - gramaje: 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 ); foreach ($maquinas as $maquina) { - if ($maquina->maquina == 'C1100-ByN') { - - $formas = PresupuestoService::getNumFormasPlanaInterior( - maquina: $maquina, - ancho: 165.0, - alto: 148.0, - isCosido: true - ); - $precio_pliego = PresupuestoService::getPrecioPliego($maquina, $papel); - echo '
';
-                    echo '

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

'; - echo ''; - var_dump($maquina); - var_dump($formas); - var_dump($precio_pliego); - echo '
'; - } + echo '----------------------------
'; + var_dump($maquina->maquina); + var_dump($papel->nombre); + $tarifa = (new \App\Models\Configuracion\MaquinasTarifasImpresionModel())->getTarifa($maquina->maquina_id, $uso, $tipo); + $linea = PresupuestoService::getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + echo '
';
+                var_dump($linea);
+                echo '
'; } } - }*/ - - public static function test2(){ - - - - $papel = (object) array('id' => 201, 'gramaje'=>70, "precio_tonelada"=>1750); - $maquina = (object) array('alto' => 120, 'ancho'=>200); - echo PresupuestoService::getPrecioPliego($maquina, $papel,2); } + /** * @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 + * @param mixed $datosPedido * objeto con la siguiente extructura: * -> paginas: numero de paginas por libro * -> tirada: numero de unidades a imprimir @@ -141,33 +88,101 @@ class PresupuestoService extends BaseService * 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 + * @param mixed $papel_impresion + * @param mixed $tarifa * * @return [type] */ - public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp) + public static function getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) { + $response['fields'] = []; - $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); + switch ($uso) { + case 'interior': + $formas = PresupuestoService::getNumFormasPlanaInterior($maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido); + $response['fields'] = $formas; + break; + + case 'cubierta': + case 'sobrecubierta': + break; + + case 'rotativa': + default: + break; + } + + if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') { + $response['error']['value'] = true; + $response['error']['message'] = 'no_formas_disponibles'; + return response; + } + + // precio del pliego de impresion + $precio_pliego_impresion = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $datosPedido->paginas); + $precio_click = 0; + $precio_click_pedido = 0; + $pliegos_libro = 0; + + $cubierta = array_key_exists('cubierta', $opciones_papel) ? $opciones_papel['cubierta'] : 0; + $sobrecubierta = array_key_exists('sobrecubierta', $opciones_papel) ? $opciones_papel['sobrecubierta'] : 0; + $rotativa = array_key_exists('rotativa', $opciones_papel) ? $opciones_papel['rotativa'] : 0; + + //interior (bn o color) + if ($cubierta == 0 && $sobrecubierta == 0 && $rotativa == 0) { + // precio papel + $pliegos_libro = ($datosPedido->paginas / 2.0) / $response['fields']['num_formas']['value']; + $pliegos_pedido = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma); + $precio_libro = $pliegos_libro * $precio_pliego_impresion; + $precio_pedido = $precio_libro * ($datosPedido->tirada + $datosPedido->merma); + + $mano = PresupuestoService::computeLomoInterior($datosPedido->paginas, $papel_impresion->espesor); + + // peso + $peso = PresupuestoService::computePeso( + ancho: $datosPedido->isCosido ? $datosPedido->ancho / 2.0 : $datosPedido->ancho, + alto: $datosPedido->alto, + gramaje: $papel_impresion->gramaje, + paginas: $datosPedido->paginas + ); + + // impresion + $precio_click = $tarifa; + $precio_click_pedido = $pliegos_pedido * 2 * $precio_click; + + } + // cubierta o sobrecubierta (siempre a color) + else if (($cubierta == 1 || $sobrecubierta == 1) && $rotativa == 0) { + } + // rotativa + else if ($rotativa == 1) { + } + + + // response + $response['fields']['pliegos_libro'] = $pliegos_libro; + $response['fields']['pliegos_pedido'] = $pliegos_pedido; + $response['fields']['precios_pliegos'] = $precio_pliego_impresion; + $response['fields']['precio_libro'] = $precio_libro; + $response['fields']['precio_pedido'] = $precio_pedido; + $response['fields']['mano'] = $mano; + $response['fields']['peso'] = $peso; + $response['fields']['precio_click'] = $precio_click; + $response['fields']['precio_click_pedido'] = $precio_click_pedido; + + $response['fields']['dimensiones_maquina'] = [$maquina->ancho, $maquina->alto]; + $response['fields']['dimensiones_maquina_impresion'] = [$maquina->ancho_impresion, $maquina->alto_impresion]; + $response['fields']['dimensiones_maquina_click'] = [$maquina->ancho_impresion, $maquina->alto_click]; + $response['fields']['dimensiones_libro'] = [$datosPedido->ancho, $datosPedido->alto]; + + //$response['fields']['datos_rotativa'] = $datos_rotativa; + + return $response; } + private static function getNumFormasPlanaInterior($maquina, $ancho, $alto, $isCosido) { $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; @@ -193,10 +208,6 @@ class PresupuestoService extends BaseService // solo hay calles para 2 formas o mas if ((($formas_h > $formas_v) ? $h1 : $h2) > 1) { - var_dump($formas_v); - var_dump($formas_h); - var_dump($h1); - var_dump(($formas_h > $formas_v)); $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, ($formas_h > $formas_v) ? $h1 : $h2)[0]; // se calcula el tamaño necesario para el numero de formas + el numero de calles internas $size_needed = (($formas_h > $formas_v) ? $anchoForCalculo : $alto) * (($formas_h > $formas_v) ? $h1 : $h2) + @@ -213,7 +224,7 @@ class PresupuestoService extends BaseService $formas_v = ($formas_v - 1 > 0) ? $formas_v - 1 : 0; } } - } + } // Si solo hay una forma, tiene que entrar en el ancho de impresion else if ((($formas_h > $formas_v) ? $h1 : $h2) == 1) { if ((($formas_h > $formas_v) ? $h1 : $h2) < $maquina->ancho_impresion) { @@ -225,15 +236,16 @@ class PresupuestoService extends BaseService // si no hay formas se devuelve n/a if ($num_formas == 0) { $response['num_formas']['posicion_formas'] = 'n/a'; // not available - } - else if ($formas_h > $formas_v) { + } else if ($formas_h > $formas_v) { $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 { $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; } return $response; @@ -243,12 +255,43 @@ class PresupuestoService extends BaseService private static function getPrecioPliego($maquina, $papel_impresion, $paginas) { $margen = (new \App\Models\Configuracion\PapelImpresionMargenModel())->getMargenFormPags($papel_impresion->id, $paginas); - if(count($margen)>0){ + if (count($margen) > 0) { $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; - $precio_pliego = $papel_impresion->precio_tonelada*(1+(floatval($margen[0]['margen'])/100.0)) / 1000000 * $peso_por_pliego; + $precio_pliego = $papel_impresion->precio_tonelada * (1 + (floatval($margen[0]['margen']) / 100.0)) / 1000000 * $peso_por_pliego; return round($precio_pliego, 6); } return -1; } + + /** + * Devuelve la dimensión del lomo interior. + */ + private static function computeLomoInterior($paginas = null, $espesor = null) + { + $lomo = 0; + + if (!is_null($paginas) && !is_null($espesor)) { + + $lomo += (($espesor * $paginas / 2.0) + 1) / 1000.0; + } + + return $lomo; + } + + /** + * Devuelve el peso de un pedido. + */ + private static function computePeso($ancho, $alto, $gramaje, $paginas = null) + { + $peso = ($ancho / 1000.0) * ($alto / 1000.0) * $gramaje; + + if (!is_null($paginas)) { + if ($paginas > 0) { + $peso *= ($paginas / 2.0); + } + } + + return $peso; + } } From 693504f9d7dcc4474f31011009cdad7c148c3165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 26 Sep 2023 15:17:49 +0200 Subject: [PATCH 06/27] haciendo la conexion con el ajax del comparador negro --- ci4/app/Controllers/Js_loader.php | 26 +++ .../Presupuestos/Cosidotapablanda.php | 168 ++++++++++++------ .../Controllers/Presupuestos/Js_loader.php | 3 +- ci4/app/Controllers/Test.php | 16 +- ci4/app/Services/PresupuestoService.php | 4 +- .../_datosPresupuestoClienteItems.php | 6 +- .../cosidotapablanda/comparador.js | 13 +- .../viewCosidotapablandaForm.php | 73 ++++++++ .../backend/vuexy/form/test_js/test_js.js | 17 ++ .../backend/vuexy/form/test_js/viewTest.php | 36 ++++ 10 files changed, 298 insertions(+), 64 deletions(-) create mode 100644 ci4/app/Controllers/Js_loader.php create mode 100644 ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js create mode 100644 ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php diff --git a/ci4/app/Controllers/Js_loader.php b/ci4/app/Controllers/Js_loader.php new file mode 100644 index 00000000..691a5842 --- /dev/null +++ b/ci4/app/Controllers/Js_loader.php @@ -0,0 +1,26 @@ +response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js'); + + } + + +} + \ No newline at end of file diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 9f086deb..c8fbf198 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -138,7 +138,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['presupuestoEntity'] = isset($sanitizedData) ? new PresupuestoEntity($sanitizedData) : new PresupuestoEntity(); $this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null); - $this->viewData['incReiList'] = array('incidencia'=>lang('Presupuestos.incidencia'), 'reimpresion'=>lang('Presupuestos.reimpresion'), 'sin_cargo'=>lang('Presupuestos.sinCargo')); + $this->viewData['incReiList'] = array('incidencia' => lang('Presupuestos.incidencia'), 'reimpresion' => lang('Presupuestos.reimpresion'), 'sin_cargo' => lang('Presupuestos.sinCargo')); $this->viewData['paisList'] = $this->getPaisListItems(); $this->viewData['papelFormatoList'] = $this->getPapelFormatoListItems($presupuestoEntity->papel_formato_id ?? null); $this->viewData['papelGenericoNegroList'] = $this->getPapelGenericoNegro(); @@ -147,9 +147,9 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['papelGenericoColorHQList'] = $this->getPapelGenericoColorHQ(); $this->viewData['papelGenericoCubiertaList'] = $this->getPapelGenericoCubierta(); $this->viewData['papelGenericoSobrecubiertaList'] = $this->getPapelGenericoSobreCubierta(); - - - + + + /* $this->viewData['formaPagoList'] = $this->getFormaPagoListItems(); @@ -375,7 +375,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['papelGenericoColorHQList'] = $this->getPapelGenericoColorHQ(); $this->viewData['papelGenericoCubiertaList'] = $this->getPapelGenericoCubierta(); $this->viewData['papelGenericoSobrecubiertaList'] = $this->getPapelGenericoSobreCubierta(); - + $this->viewData['formAction'] = route_to('updatePresupuesto', $id); @@ -391,46 +391,102 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - if (!isset($reqData['draw']) || !isset($reqData['columns'])) { - $errstr = 'No data available in response to this specific request.'; - $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); - return $response; + + $table_type = $reqData['table_type'] ?? null; + + if (is_null($table_type)) { + if (!isset($reqData['draw']) || !isset($reqData['columns'])) { + $errstr = 'No data available in response to this specific request.'; + $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); + return $response; + } + + $search = $reqData['search']['value']; } $start = $reqData['start'] ?? 0; $length = $reqData['length'] ?? 5; - $search = $reqData['search']['value']; + $requestedOrder = $reqData['order']['0']['column'] ?? 0; $order = PresupuestoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; - $table_type = $reqData['table_type'] ?? null; - - if (is_null($table_type)){ - return $this->failNotFound('Table type not found', 404); - } - - switch($table_type){ - case 'comp_int_bn': - - $datosPedido = (object)array( - 'paginas' => $reqData['paginas'] ?? 0, - 'tirada' => $reqData['tirada'] ?? 0, - 'merma' => $reqData['merma'] ?? 0, - 'ancho' => $reqData['alto'] ?? 100000, - 'alto' => $reqData['ancho'] ?? 100000, - 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto - ); - - $papel_generico_id = $reqData['papel_generico_id'] ?? 0; - $gramaje = $reqData['gramaje'] ?? 0; - - $resourceData = $this->getCompBnData($datosPedido, $papel_generico_id, $gramaje); - break; - - default: - break; - } + + if (is_null($table_type)) { + $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + foreach ($resourceData as $item) : + if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : + $item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100); + endif; + if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100) : + $item->causa_cancelacion = character_limiter($item->causa_cancelacion, 100); + endif; + if (isset($item->comentarios) && strlen($item->comentarios) > 100) : + $item->comentarios = character_limiter($item->comentarios, 100); + endif; + if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100) : + $item->comentarios_safekat = character_limiter($item->comentarios_safekat, 100); + endif; + if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100) : + $item->comentarios_tarifa = character_limiter($item->comentarios_tarifa, 100); + endif; + if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100) : + $item->tirada_alternativa_json_data = character_limiter($item->tirada_alternativa_json_data, 100); + endif; + if (isset($item->titulo) && strlen($item->titulo) > 100) : + $item->titulo = character_limiter($item->titulo, 100); + endif; + if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100) : + $item->paginas_color_posicion = character_limiter($item->paginas_color_posicion, 100); + endif; + if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100) : + $item->aprobado_json_data = character_limiter($item->aprobado_json_data, 100); + endif; + if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100) : + $item->comparador_json_data = character_limiter($item->comparador_json_data, 100); + endif; + if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100) : + $item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100); + endif; + endforeach; + } else { + + switch ($table_type) { + case 'comp_int_bn': + + $datosPedido = (object)array( + 'paginas' => intval($reqData['paginas']) ?? 0, + 'tirada' => intval($reqData['tirada']) ?? 0, + 'merma' => intval($reqData['merma']) ?? 0, + 'ancho' => intval($reqData['alto']) ?? 100000, + 'alto' => intval($reqData['ancho']) ?? 100000, + 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto + ); + + $papel_generico = [ + 'id' => $reqData['papel_generico_id'] ?? 0, + 'nombre' => $reqData['papel_generico'] ?? "", + ]; + + $gramaje = $reqData['gramaje'] ?? 0; + + $resourceData = $this->getCompBnData($datosPedido, $papel_generico, $gramaje); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'lineas' => $resourceData, + $csrfTokenName => $newTokenHash + ]; + //return json_encode(array("data"=>$resourceData)); + return $this->respond($data); + break; + + default: + break; + } + } + return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), @@ -441,10 +497,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } } - private function getCompBnData($datosPedido, $papel_generico_id, $gramaje){ + private function getCompBnData($datosPedido, $papel_generico, $gramaje) + { $uso = 'interior'; $tipo = 'negro'; - + $opciones_papel = array( 'bn' => 1, 'cubierta' => 0, @@ -455,15 +512,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // Se obtienen los papeles disponibles $papelimpresionmodel = new PapelImpresionModel(); $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( - papel_generico_id: $papel_generico_id, + papel_generico_id: $papel_generico['id'], gramaje: $gramaje, options: $opciones_papel ); - $resultado = json_encode( - array('data' => array()) - ); - + + $lineas = array(); // Para cada papel, se obtienen las maquinas disponibles foreach ($papeles as $papel) { $maquinamodel = new MaquinaModel(); @@ -476,14 +531,23 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // Se recorren las máquinas y se calcula el coste de linea por cada una foreach ($maquinas as $maquina) { - $tarifamodel = new MaquinasTarifasImpresionModel(); + $tarifamodel = new MaquinasTarifasImpresionModel(); $tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo); - $linea = PresupuestoService::getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + $linea['fields']['maquina'] = $maquina->maquina; + $linea['fields']['maquina_id'] = $maquina->maquina_id; + $linea['fields']['papel_impresion'] = $papel->nombre; + $linea['fields']['papel_impresion_id'] = $papel->id; + $linea['fields']['paginas'] = $datosPedido->paginas; + $linea['fields']['gramaje'] = $gramaje; + $linea['fields']['papel_generico_id'] = $papel_generico['id']; + $linea['fields']['papel_generico_id'] = $papel_generico['nombre']; + + array_push($lineas, $linea); } } - return $resultado; - + return $lineas; } public function allItemsSelect() @@ -512,7 +576,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController public function menuItems() { if ($this->request->isAJAX()) { - + $reqData = $this->request->getPost(); $tipo = $reqData['tipo'] ?? null; @@ -520,12 +584,12 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; - if ($tipo == 'gramaje'){ + if ($tipo == 'gramaje') { // En este caso contiene el nombre del papel generico $model = new PapelGenericoModel(); $menu = $model->getGramajeComparador($datos, $searchStr); } - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -567,7 +631,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $papelFormatoModel = model('App\Models\Configuracion\PapelFormatoModel'); $data = $papelFormatoModel->getElementsForMenu(); - array_unshift($data, (object)['id'=>'', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); + array_unshift($data, (object)['id' => '', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); return $data; } diff --git a/ci4/app/Controllers/Presupuestos/Js_loader.php b/ci4/app/Controllers/Presupuestos/Js_loader.php index f753fee7..89baad3c 100644 --- a/ci4/app/Controllers/Presupuestos/Js_loader.php +++ b/ci4/app/Controllers/Presupuestos/Js_loader.php @@ -16,10 +16,9 @@ class Js_loader extends BaseController function comparadorCosidoTapablanda_js() { - $this->load->view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js', $data); + $this->load->view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js'); $this->output->set_content_type('text/javascript'); } - } \ No newline at end of file diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 5a4d5f45..c6d7621a 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -2,8 +2,7 @@ namespace App\Controllers; -use App\Models\Presupuestos\PresupuestoModel; -use App\Services\PresupuestoService; +use App\Controllers\BaseController; class Test extends BaseController { @@ -16,12 +15,21 @@ class Test extends BaseController public function index() { - PresupuestoService::test(); + //PresupuestoService::test(); + return view('themes/backend/vuexy/form/test_js/viewTest'); + } + + function test_js() + { + /*$this->response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/test_js/test_js.js');*/ + + } public function pruebaJJO() { - PresupuestoService::test2(); + //PresupuestoService::test2(); } } \ No newline at end of file diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 48173d27..38a70819 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -95,7 +95,7 @@ class PresupuestoService extends BaseService * * @return [type] */ - public static function getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) + public static function getCostesLinea($uso, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) { $response['fields'] = []; @@ -117,7 +117,7 @@ class PresupuestoService extends BaseService if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') { $response['error']['value'] = true; $response['error']['message'] = 'no_formas_disponibles'; - return response; + return $response; } // precio del pliego de impresion diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index 8bf30aaa..fc07f7f3 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -69,10 +69,10 @@

- +
- $v) : ?>
-
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index c91da748..9c0e2b1a 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -58,10 +58,21 @@ $('.accordion-button').on('click', function (e) { - /******************************* * Metodos *******************************/ +function checkDatosPedidoForComp() { + + if (parseInt(document.getElementById('paginas').value) > 0 && + parseInt(document.getElementById('tirada').value) > 0 && + ($('#papelFormatoId').select2('data').length > 0 || + (parseInt(document.getElementById('papelFormatoAncho').value) > 0 && parseInt(document.getElementById('papelFormatoAlto').value) > 0))) + return true; + return false; +} + + + function init_comparador() { updatePapelesComparador(); const paginasColor = document.getElementById('compCalPaginasColor'); diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index 0b877195..db55494c 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -145,11 +145,14 @@ document.getElementById("papelFormatoAncho").style.display = "block"; document.getElementById("papelFormatoAlto").style.display = "block"; $('#papelFormatoId').next(".select2-container").hide(); + $('#papelFormatoId').val('').change(); document.getElementById("label_papelFormatoId").innerHTML = " (" + " x )*"; } else{ + document.getElementById("papelFormatoAncho").value= ""; + document.getElementById("papelFormatoAlto").value= ""; document.getElementById("papelFormatoAncho").style.display = "none"; document.getElementById("papelFormatoAlto").style.display = "none"; $('#papelFormatoId').next(".select2-container").show(); @@ -172,6 +175,29 @@ language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" }, + columns: [ + { 'data': 'tipo' }, + { 'data': 'paginas' }, + { 'data': 'papel' }, + { 'data': 'gramaje' }, + { 'data': 'marca' }, + { 'data': 'maquina' }, + { 'data': 'numeroPliegos' }, + { 'data': 'pliegosPedido' }, + { 'data': 'precioPliego' }, + { 'data': 'libro' }, + { 'data': 'totalPapelPedido' }, + { 'data': 'lomo' }, + { 'data': 'peso' }, + { 'data': 'click' }, + { 'data': 'totalClicks' }, + { 'data': 'precioPagNegro' }, + { 'data': 'precioPagColor' }, + { 'data': 'totalTinta' }, + { 'data': 'totalCorte' }, + { 'data': 'total' }, + + ] }); @@ -245,6 +271,53 @@ }); }); + $('.comp_negro_items').on('change', function (e) { + checkComparadorNegro(); + + }); + + function checkComparadorNegro() { + if (document.getElementById('compPaginasNegro').value && + $('#compPapelNegro').select2('data').length > 0 && + $('#compGramajeNegro').select2('data').length > 0) { + + if (parseInt(document.getElementById('compPaginasNegro').value) > 0 && checkDatosPedidoForComp()) { + + if($('#papelFormatoId').select2('data').length > 0){ + ancho = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[0]); + alto = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[1]); + } + else{ + ancho = parseFloat(document.getElementById('papelFormatoAncho').value); + alto = parseFloat(document.getElementById('papelFormatoAlto').value); + } + + let datos = { + table_type: 'comp_int_bn', + paginas: parseInt(document.getElementById('compPaginasNegro').value), + tirada: parseInt(document.getElementById('tirada').value), + merma: parseInt(document.getElementById('merma').value), + ancho: ancho, + alto: alto, + papel_generico_id: $('#compPapelNegro').select2('data')[0].id, + papel_generico: $('#compPapelNegro').select2('data')[0].text.trim(), + gramaje: $('#compGramajeNegro').select2('data')[0].text.trim() , + : v + }; + + $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + console.log(data) + yeniden(data.); + }, + }) + } + } + } + $('#compPapelNegrohq').on('select2:select', function (e){ diff --git a/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js b/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js new file mode 100644 index 00000000..282ca8ac --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js @@ -0,0 +1,17 @@ + + + + +/* +fetch("/presupuestos/cosidotapablanda/datatable", { + + method: 'POST', + body: JSON.stringify(data), + headers: { 'X-Requested-With': 'XMLHttpRequest' }, + +}) +.then(response => console.log(response)) +//.then(json => console.log(json)) +.catch(err => console.log(err)); + +*/ diff --git a/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php b/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php new file mode 100644 index 00000000..756a2230 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php @@ -0,0 +1,36 @@ +extend('themes/backend/vuexy/main/defaultlayout') ?> + + +section("additionalInlineJs") ?> + + console.log("Hola") + + let datos = { + table_type: 'comp_int_bn', + paginas: 200, + tirada: 100, + merma: 10, + ancho: 98 , + alto: 148, + papel_generico_id: 4, + papel_generico: 'AHUESADO OFFSET', + gramaje: 80, + : v + } + + + $.ajax({ + type:"POST", + url:"cosidotapablanda/datatable", + data:datos, // data recive un objeto con la informacion que se enviara al servidor + success:function(data){ //success es una funcion que se utiliza si el servidor retorna informacion + console.log(data) + yeniden(data.); + }, + //dataType: dataType // El tipo de datos esperados del servidor. Valor predeterminado: Intelligent Guess (xml, json, script, text, html). + }) + + +endSection() ?> + + From accb06ba5ff2b0fed829e2d35cad3608e2b0201f Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Tue, 26 Sep 2023 21:44:21 +0200 Subject: [PATCH 07/27] tabla interior plana generada --- .../Presupuestos/Cosidotapablanda.php | 34 ++++++++++++++----- ci4/app/Language/en/Presupuestos.php | 2 +- ci4/app/Language/es/Presupuestos.php | 2 +- .../Configuracion/PapelGenericoModel.php | 5 +-- .../cosidotapablanda/_datosLibroItems.php | 6 ++-- .../_datosPresupuestoClienteItems.php | 24 ++++++------- .../cosidotapablanda/comparador.js | 26 ++++++++++++++ .../viewCosidotapablandaForm.php | 23 +++++++++++-- 8 files changed, 93 insertions(+), 29 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index c8fbf198..ebf3773d 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -478,7 +478,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'lineas' => $resourceData, $csrfTokenName => $newTokenHash ]; - //return json_encode(array("data"=>$resourceData)); + return $this->respond($data); break; @@ -541,7 +541,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $linea['fields']['paginas'] = $datosPedido->paginas; $linea['fields']['gramaje'] = $gramaje; $linea['fields']['papel_generico_id'] = $papel_generico['id']; - $linea['fields']['papel_generico_id'] = $papel_generico['nombre']; + $linea['fields']['papel_generico'] = $papel_generico['nombre']; array_push($lineas, $linea); } @@ -639,7 +639,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('negro', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -647,7 +650,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('negrohq', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -655,7 +661,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('color', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -663,7 +672,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('colorhq', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -671,7 +683,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('color', true, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -679,7 +694,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('color', false, true); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } diff --git a/ci4/app/Language/en/Presupuestos.php b/ci4/app/Language/en/Presupuestos.php index a5ae9bb9..c7869387 100644 --- a/ci4/app/Language/en/Presupuestos.php +++ b/ci4/app/Language/en/Presupuestos.php @@ -45,7 +45,7 @@ return [ 'recogerEnTaller' => 'Pick up in workshop', 'marcapaginas' => 'Bookmark', 'merma' => 'Weakening', - 'mermaportada' => 'Cover weakening', + 'mermacubierta' => 'Cover weakening', 'tipoImpresion' => 'Printing type', 'papelesComparadorCosidoTapaBlanda' => 'Interior and cover papers', 'posicionPagColor' => 'Color pages position', diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 30fffaec..e2a545bb 100644 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -45,7 +45,7 @@ return [ 'recogerEnTaller' => 'Recoger en taller', 'marcapaginas' => 'Marcapáginas', 'merma' => 'Merma', - 'mermaportada' => 'Merma portada', + 'mermacubierta' => 'Merma cubierta', 'tipoImpresion' => 'Tipo de impresión', 'papelesComparadorCosidoTapaBlanda' => 'Papeles interior y cubierta', 'posicionPagColor' => 'Posición páginas a color', diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index 1df24bcc..a956cfe4 100644 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -104,8 +104,9 @@ class PapelGenericoModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.nombre AS papel_generico" + "t1.id as id, t1.nombre AS nombre" ) + ->distinct('t1.id') ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") @@ -126,7 +127,7 @@ class PapelGenericoModel extends \App\Models\GoBaseModel } } - return array_unique(array_column($builder->orderBy("t1.nombre", "asc")->get()->getResultArray(), 'papel_generico')); + return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); } public function getGramajeComparador(string $papel_generico_nombre="") diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php index b458aaf7..dd8f5b93 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php @@ -101,10 +101,10 @@
-
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index fc07f7f3..091b4b08 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -75,8 +75,8 @@ $v) : ?> - @@ -131,8 +131,8 @@ $v) : ?> - @@ -194,8 +194,8 @@
- +
: 0.00 0.00
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index 9c0e2b1a..c98b8770 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -61,6 +61,32 @@ $('.accordion-button').on('click', function (e) { /******************************* * Metodos *******************************/ +function getRowFromLinea(tipo, linea){ + return { + 'tipo': tipo, + 'paginas': linea.fields.paginas, + 'papel': linea.fields.papel_generico_id, + 'gramaje': linea.fields.gramaje, + 'marca': linea.fields.papel_impresion, + 'maquina': linea.fields.maquina, + 'numeroPliegos': isNaN(parseFloat(linea.fields.pliegos_libro).toFixed(2)) ? "" : parseFloat(linea.fields.pliegos_libro).toFixed(2), + 'pliegosPedido': isNaN(parseFloat(linea.fields.pliegos_pedido).toFixed(2)) ? "" : parseFloat(linea.fields.pliegos_pedido).toFixed(2), + 'precioPliego': isNaN(parseFloat(linea.fields.precios_pliegos).toFixed(6)) ? "" : parseFloat(linea.fields.precios_pliegos).toFixed(6), + 'libro': isNaN(parseFloat(linea.fields.precio_libro).toFixed(2)) ? "" : parseFloat(linea.fields.precio_libro).toFixed(2), + 'totalPapelPedido': isNaN(parseFloat(linea.fields.precio_pedido).toFixed(2)) ? "" : parseFloat(linea.fields.precio_pedido).toFixed(2), + 'lomo': isNaN(parseFloat(linea.fields.mano).toFixed(2)) ? "" : parseFloat(linea.fields.mano).toFixed(2), + 'peso': isNaN(parseFloat(linea.fields.peso).toFixed(2)) ? "" : parseFloat(linea.fields.peso).toFixed(2), + 'click': isNaN(parseFloat(linea.fields.precio_click).toFixed(6)) ? "" : parseFloat(linea.fields.precio_click).toFixed(6), + 'totalClicks': isNaN(parseFloat(linea.fields.precio_click_pedido).toFixed(2)) ? "" : parseFloat(linea.fields.precio_click_pedido).toFixed(2), + 'precioPagNegro': isNaN(parseFloat(linea.fields.precioPagNegro).toFixed(6)) ? "" : parseFloat(linea.fields.precioPagNegro).toFixed(6), + 'precioPagColor': isNaN(parseFloat(linea.fields.precioPagColor).toFixed(6)) ? "" : parseFloat(linea.fields.precioPagColor).toFixed(6), + 'totalTinta': isNaN(parseFloat(linea.fields.totalTinta).toFixed(6)) ? "" : parseFloat(linea.fields.totalTinta).toFixed(6), + 'totalCorte': isNaN(parseFloat(linea.fields.totalCorte).toFixed(6)) ? "" : parseFloat(linea.fields.totalCorte).toFixed(6), + 'total': isNaN(parseFloat(linea.fields.precio_pedido+linea.fields.precio_click_pedido).toFixed(2)) ? + "" : parseFloat(linea.fields.precio_pedido+linea.fields.precio_click_pedido).toFixed(2), + } +} + function checkDatosPedidoForComp() { if (parseInt(document.getElementById('paginas').value) > 0 && diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index db55494c..d935982a 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -175,6 +175,10 @@ language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" }, + order: [[19, 'asc']], + "columnDefs": [ + {targets: 19, type: "num"} + ], columns: [ { 'data': 'tipo' }, { 'data': 'paginas' }, @@ -241,7 +245,7 @@ $('#compPapelNegro').on('select2:select', function (e){ - $('#compGramajeNegro').val(null).trigger('change'); + $('#compGramajeNegro').val(null).trigger('change') $('#compGramajeNegro').prop('disabled', false); $('#compPapelNegro').find('option[value="0"]').remove(); $('#compGramajeNegro').select2({ @@ -310,7 +314,22 @@ url: "/cosidotapablanda/datatable", data: datos, success: function (data) { - console.log(data) + if(data.lineas.length >0){ + let sorted = data.lineas.sort( + (p1, p2) => ((p1.fields.precio_pedido+p1.fields.precio_click_pedido) < (p2.fields.precio_pedido+p2.fields.precio_click_pedido)) ? + -1 : ((p1.fields.precio_pedido+p1.fields.precio_click_pedido) > (p2.fields.precio_pedido+p2.fields.precio_click_pedido)) ? 1 : 0); + sorted.forEach(function(linea) { + console.log(linea); + tableCompIntPlana.row + .add(getRowFromLinea('BN', linea)) + .draw() + }) + + $('#total_comp_negro').html( + isNaN(parseFloat(data.lineas[0].fields.precio_pedido).toFixed(2)) ? + "0.00" : parseFloat(data.lineas[0].fields.precio_pedido).toFixed(2)) + $("#tableCompIntPlana").DataTable().row( 0 ).nodes().to$().toggleClass( 'selected' ); + } yeniden(data.); }, }) From b188e30f7d163006259a0d532c7b56cba6c2d946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Wed, 27 Sep 2023 17:13:10 +0200 Subject: [PATCH 08/27] =?UTF-8?q?a=C3=B1adido=20el=201.04=20en=20el=20calc?= =?UTF-8?q?ulo=20del=20pliego=20para=20hacer=20pruebas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Services/PresupuestoService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 38a70819..28438760 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -259,7 +259,7 @@ class PresupuestoService extends BaseService $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; $precio_pliego = $papel_impresion->precio_tonelada * (1 + (floatval($margen[0]['margen']) / 100.0)) / 1000000 * $peso_por_pliego; - return round($precio_pliego, 6); + return round($precio_pliego*1.04, 6); // quitar el factor de 1.04 despues de los test } return -1; } From 84d20063137efa434d34382b479b3dbc11b9c2c0 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Thu, 28 Sep 2023 14:57:35 +0200 Subject: [PATCH 09/27] Eliminado Libro Tapa Blanda con Solapas del menu --- .../Presupuestos/Cosidotapablandasolapas.php | 19 ------------------- ci4/app/Language/es/App.php | 1 - .../backend/vuexy/main/menu_impresion.php | 12 +----------- 3 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php b/ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php deleted file mode 100644 index de7fdbf3..00000000 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php +++ /dev/null @@ -1,19 +0,0 @@ -> Libros >> Cosido tapa blanda con solapas [en desarrollo].'; - } -} - \ No newline at end of file diff --git a/ci4/app/Language/es/App.php b/ci4/app/Language/es/App.php index 1a9d22be..64450f72 100644 --- a/ci4/app/Language/es/App.php +++ b/ci4/app/Language/es/App.php @@ -745,7 +745,6 @@ return [ "menu_libros_fresasdo_tapa_blanda" => "Fresado tapa blanda", "menu_libros_cosido_tapa_dura" => "Cosidos tapa dura", "menu_libros_cosido_tapa_blanda" => "Cosidos tapa blanda", - "menu_libros_cosido_tapa_blanda_solapas" => "Cosidos tapa blanda con solapas", "menu_libros_grapados" => "Grapados", "menu_libros_espiral_tapa_dura" => "Espiral tapa dura", "menu_libros_espiral_tapa_blanda" => "Espiral tapa blanda", diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php index 4a7622a4..d773389b 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php @@ -76,7 +76,7 @@ @@ -125,16 +125,6 @@ - 0): ?> - 0): ?> - - - - 0): ?> 0): ?> + @@ -99,7 +135,21 @@ - +
+
+
+
+ +
+
+
+
@@ -111,6 +161,14 @@ section("additionalInlineJs") ?> +$("textarea[name*='comentarios_']").each(function(){ + if (!$.trim($(this).val())) { + // textarea is empty or contains only white-space + $("#mostrar_" + $(this).attr('name')).hide(); + }else{ + $("#mostrar_" + $(this).attr('name')).show(); + } + }); endSection() ?> From 3c723c59d9495c9eeee8a992353bd3117b9924be Mon Sep 17 00:00:00 2001 From: imnavajas Date: Tue, 31 Oct 2023 22:32:21 +0100 Subject: [PATCH 23/27] Arreglada la edicion en servicios de presupuesto --- ci4/app/Config/Routes.php | 1 + .../Controllers/Presupuestos/PresupuestoAcabados.php | 3 --- .../Presupuestos/PresupuestoEncuadernaciones.php | 12 ------------ .../Presupuestos/PresupuestoManipulados.php | 8 -------- .../Presupuestos/PresupuestoPreimpresiones.php | 8 -------- ci4/app/Language/es/Presupuestos.php | 1 + .../cosidotapablanda/_datosServiciosItems.php | 2 +- 7 files changed, 3 insertions(+), 32 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index e795fbe2..aca370e9 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -482,6 +482,7 @@ $routes->resource('cosidotapablanda', ['namespace' => 'App\Controllers\Presupue $routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->post('datatable', 'PresupuestoAcabados::datatable', ['as' => 'dataTableOfPresupuestoAcabados']); $routes->post('datatable_editor', 'PresupuestoAcabados::datatable_editor', ['as' => 'editorOfPresupuestoAcabados']); + $routes->get('delete/(:num)', 'PresupuestoAcabados::delete/$1', ['as' => 'deletePresupuestoAcabado']); }); $routes->group('serviciosencuadernaciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php b/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php index eb06794d..d5374629 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php @@ -5,9 +5,6 @@ use App\Controllers\GoBaseResourceController; use App\Models\Collection; -use App\Entities\Clientes\ClienteContactoEntity; - -use App\Models\Clientes\ClienteModel; use App\Models\Presupuestos\PresupuestoAcabadosModel; use DataTables\Editor; diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php b/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php index 5160c308..c7a7687c 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php @@ -5,22 +5,10 @@ use App\Controllers\GoBaseResourceController; use App\Models\Collection; -use App\Entities\Clientes\ClienteContactoEntity; - -use App\Models\Clientes\ClienteModel; - use App\Models\Presupuestos\PresupuestoEncuadernacionesModel; use DataTables\Editor; use DataTables\Editor\Field; use DataTables\Editor\Validate; -use function App\Controllers\Clientes\csrf_hash; -use function App\Controllers\Clientes\csrf_token; -use function App\Controllers\Clientes\lang; -use function App\Controllers\Clientes\model; -use function App\Controllers\Clientes\redirect; -use function App\Controllers\Clientes\route_to; -use function App\Controllers\Clientes\view; -use const App\Controllers\Clientes\APPPATH; class PresupuestoEncuadernaciones extends \App\Controllers\GoBaseResourceController { diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php b/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php index af2e86db..4dcfed56 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php @@ -13,14 +13,6 @@ use App\Models\Presupuestos\PresupuestoManipuladosModel; use DataTables\Editor; use DataTables\Editor\Field; use DataTables\Editor\Validate; -use function App\Controllers\Clientes\csrf_hash; -use function App\Controllers\Clientes\csrf_token; -use function App\Controllers\Clientes\lang; -use function App\Controllers\Clientes\model; -use function App\Controllers\Clientes\redirect; -use function App\Controllers\Clientes\route_to; -use function App\Controllers\Clientes\view; -use const App\Controllers\Clientes\APPPATH; class PresupuestoManipulados extends \App\Controllers\GoBaseResourceController { diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php b/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php index 5e92fd69..dfd9a7f3 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php @@ -7,14 +7,6 @@ use App\Models\Presupuestos\PresupuestoPreimpresionesModel; use DataTables\Editor; use DataTables\Editor\Field; use DataTables\Editor\Validate; -use function App\Controllers\Clientes\csrf_hash; -use function App\Controllers\Clientes\csrf_token; -use function App\Controllers\Clientes\lang; -use function App\Controllers\Clientes\model; -use function App\Controllers\Clientes\redirect; -use function App\Controllers\Clientes\route_to; -use function App\Controllers\Clientes\view; -use const App\Controllers\Clientes\APPPATH; class PresupuestoPreimpresiones extends \App\Controllers\GoBaseResourceController { diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 894d6601..302e1a98 100644 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -97,6 +97,7 @@ return [ 'servicioAcabado' => 'Servicio de acabado', 'servicioPreimpresion' => 'Servicio de preimpresión', 'servicioEncuadernado' => 'Servicio de encuadernado', + 'servicioManipulado' => 'Servicio de manipulado', 'comentarios' => 'Comentarios', 'comentariosCliente' => 'Comentarios cliente', 'comentariosSafekat' => 'Comentarios Safekat', diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php index 3045316b..c10c3aa0 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php @@ -228,7 +228,7 @@ const row = $(this).closest('tr'); if ($.isNumeric(dataId)) { $.ajax({ - url: `/presupuestos/presupuestoacabados/delete/${dataId}`, + url: `/serviciosacabados/delete/${dataId}`, method: 'GET', }).done((data, textStatus, jqXHR) => { $('#confirm2delete').modal('toggle'); From a54bbacf358184e9c9ddce0b29f593a52f7526ed Mon Sep 17 00:00:00 2001 From: imnavajas Date: Tue, 31 Oct 2023 22:42:13 +0100 Subject: [PATCH 24/27] Eliminado controlador redundante de formas de pago --- .../Controllers/Configuracion/Formaspago.php | 232 ------------------ .../Configuracion/FormasPagoEntity.php | 15 -- .../Models/Configuracion/FormasPagoModel.php | 33 --- .../formas-pago/_formaPagoFormItems.php | 12 - .../formas-pago/viewFormaPagoForm.php | 26 -- .../formas-pago/viewFormaPagoList.php | 141 ----------- 6 files changed, 459 deletions(-) delete mode 100644 ci4/app/Controllers/Configuracion/Formaspago.php delete mode 100644 ci4/app/Entities/Configuracion/FormasPagoEntity.php delete mode 100644 ci4/app/Models/Configuracion/FormasPagoModel.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php diff --git a/ci4/app/Controllers/Configuracion/Formaspago.php b/ci4/app/Controllers/Configuracion/Formaspago.php deleted file mode 100644 index e7b86ee0..00000000 --- a/ci4/app/Controllers/Configuracion/Formaspago.php +++ /dev/null @@ -1,232 +0,0 @@ -viewData['pageTitle'] = lang('FormasPagoes.moduleTitle'); - parent::initController($request, $response, $logger); - $this->viewData['usingSweetAlert'] = true; - - if (session('errorMessage')) { - $this->session->setFlashData('sweet-error', session('errorMessage')); - } - if (session('successMessage')) { - $this->session->setFlashData('sweet-success', session('successMessage')); - } - } - - public function index() - { - - $this->viewData['usingClientSideDataTable'] = true; - - $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('FormasPagoes.formaPago')]); - parent::index(); - - } - - public function add() - { - - - $requestMethod = $this->request->getMethod(); - - if ($requestMethod === 'post') : - - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - - $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - - - $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - - - if ($this->canValidate()) : - try { - $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); - } catch (\Exception $e) { - $noException = false; - $this->dealWithException($e); - } - else: - $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [lang('Basic.global.record')]); - $this->session->setFlashdata('formErrors', $this->model->errors()); - endif; - - $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission - endif; - if ($noException && $successfulResult) : - - $id = $this->model->db->insertID(); - - $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; - - if ($thenRedirect) : - if (!empty($this->indexRoute)) : - return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); - else: - return $this->redirect2listView('sweet-success', $message); - endif; - else: - $this->session->setFlashData('sweet-success', $message); - endif; - - endif; // $noException && $successfulResult - - endif; // ($requestMethod === 'post') - - $this->viewData['formasPagoEntity'] = isset($sanitizedData) ? new FormasPagoEntity($sanitizedData) : new FormasPagoEntity(); - - $this->viewData['formAction'] = route_to('createFormaPago'); - - $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('FormasPagoes.formaPago') . ' ' . lang('Basic.global.addNewSuffix'); - - - return $this->displayForm(__METHOD__); - } // end function add() - - public function edit($requestedId = null) - { - - if ($requestedId == null) : - return $this->redirect2listView(); - endif; - $id = filter_var($requestedId, FILTER_SANITIZE_URL); - $formasPagoEntity = $this->model->find($id); - - if ($formasPagoEntity == false) : - $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('FormasPagoes.formaPago')), $id]); - return $this->redirect2listView('sweet-error', $message); - endif; - - $requestMethod = $this->request->getMethod(); - - if ($requestMethod === 'post') : - - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - - $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - - - $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - - - if ($this->canValidate()) : - try { - $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); - } catch (\Exception $e) { - $noException = false; - $this->dealWithException($e); - } - else: - $this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('FormasPagoes.formaPago'))]); - $this->session->setFlashdata('formErrors', $this->model->errors()); - - endif; - - $formasPagoEntity->fill($sanitizedData); - - $thenRedirect = false; - endif; - if ($noException && $successfulResult) : - $id = $formasPagoEntity->id ?? $id; - $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.'; - - if ($thenRedirect) : - if (!empty($this->indexRoute)) : - return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); - else: - return $this->redirect2listView('sweet-success', $message); - endif; - else: - $this->session->setFlashData('sweet-success', $message); - endif; - - endif; // $noException && $successfulResult - endif; // ($requestMethod === 'post') - - $this->viewData['formasPagoEntity'] = $formasPagoEntity; - - $this->viewData['formAction'] = route_to('updateFormaPago', $id); - - $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('FormasPagoes.formaPago') . ' ' . lang('Basic.global.edit3'); - - - return $this->displayForm(__METHOD__, $id); - } // end function edit(...) - - - public function allItemsSelect() - { - if ($this->request->isAJAX()) { - $onlyActiveOnes = true; - $reqVal = $this->request->getPost('val') ?? 'id'; - $menu = $this->model->getAllForMenu($reqVal . ', nombre', 'nombre', $onlyActiveOnes, false); - $nonItem = new \stdClass; - $nonItem->id = ''; - $nonItem->nombre = '- ' . lang('Basic.global.None') . ' -'; - array_unshift($menu, $nonItem); - - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, - $csrfTokenName => $newTokenHash - ]; - return $this->respond($data); - } else { - return $this->failUnauthorized('Invalid request', 403); - } - } - - public function menuItems() - { - if ($this->request->isAJAX()) { - $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; - $reqId = goSanitize($this->request->getPost('id'))[0]; - $reqText = goSanitize($this->request->getPost('text'))[0]; - $onlyActiveOnes = false; - $columns2select = [$reqId ?? 'id', $reqText ?? 'nombre']; - $onlyActiveOnes = false; - $menu = $this->model->getSelect2MenuItems($columns2select, $columns2select[1], $onlyActiveOnes, $searchStr); - $nonItem = new \stdClass; - $nonItem->id = ''; - $nonItem->text = '- ' . lang('Basic.global.None') . ' -'; - array_unshift($menu, $nonItem); - - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, - $csrfTokenName => $newTokenHash - ]; - return $this->respond($data); - } else { - return $this->failUnauthorized('Invalid request', 403); - } - } - -} diff --git a/ci4/app/Entities/Configuracion/FormasPagoEntity.php b/ci4/app/Entities/Configuracion/FormasPagoEntity.php deleted file mode 100644 index d29181c6..00000000 --- a/ci4/app/Entities/Configuracion/FormasPagoEntity.php +++ /dev/null @@ -1,15 +0,0 @@ - null, - "nombre" => null, - "created_at" => null, - "updated_at" => null, - ]; - protected $casts = []; -} diff --git a/ci4/app/Models/Configuracion/FormasPagoModel.php b/ci4/app/Models/Configuracion/FormasPagoModel.php deleted file mode 100644 index 5230e7fd..00000000 --- a/ci4/app/Models/Configuracion/FormasPagoModel.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - "label" => "FormasPagoes.nombre", - "rules" => "trim|required|max_length[255]", - ], - ]; - - protected $validationMessages = [ - "nombre" => [ - "max_length" => "FormasPagoes.validation.nombre.max_length", - "required" => "FormasPagoes.validation.nombre.required", - ], - ]; -} diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php deleted file mode 100644 index 205027a8..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php +++ /dev/null @@ -1,12 +0,0 @@ -
-
-
- - -
- -
- -
\ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php deleted file mode 100644 index 1ddbfce1..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php +++ /dev/null @@ -1,26 +0,0 @@ -include("themes_commonPartialsBs/select2bs5") ?> -include("themes_commonPartialsBs/sweetalert") ?> -extend('themes/backend/vuexy/main/defaultlayout') ?> -section("content") ?> -
-
-
-
-

-
-
- -
- - getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - -
- -
-
-
-
-endSection() ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php deleted file mode 100644 index 07526fb2..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php +++ /dev/null @@ -1,141 +0,0 @@ -include('themes_commonPartialsBs/datatables') ?> -include('themes_commonPartialsBs/sweetalert') ?> -extend('themes'.config('Basics')->theme['name'].'/AdminLayout/defaultLayout') ?> -section('content'); ?> -
-
- -
-
-

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- id), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id,]); ?> - 'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteFormaPago', $item->id)]); ?> - - id ?> - - nombre) || strlen($item->nombre) < 51 ? esc($item->nombre) : character_limiter(esc($item->nombre), 50) ?> - - created_at) ? '' : date('mm/dd/YYYY H:i', strtotime($item->created_at)) ?> - - updated_at) ? '' : date('mm/dd/YYYY H:i', strtotime($item->updated_at)) ?> - - id), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id,]); ?> - 'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteFormaPago', $item->id)]); ?> -
-
- -
-
-
- -endSection() ?> - - -section('additionalInlineJs') ?> - - const lastColNr2 = $(".using-exportable-data-table").find("tr:first th").length - 1; - theTable = $('.using-exportable-data-table').DataTable({ - "responsive": true, - "paging": true, - "lengthMenu": [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ], - "pageLength": 10, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "dom": 'lfrtipB', // 'lfBrtip', // you can try different layout combinations by uncommenting one or the other - // "dom": '<"top"lf><"clear">rt<"bottom"ipB><"clear">', // remember to comment this line if you uncomment the above - "buttons": [ - 'copy', 'csv', 'excel', 'print', { - extend: 'pdfHtml5', - orientation: 'landscape', - pageSize: 'A4' - } - ], - "autoWidth": true, - "scrollX": true, - "stateSave": true, - "language": { - url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" - }, - "columnDefs": [ - { - orderable: false, - searchable: false, - targets: [0,lastColNr2] - } - ] - }); - - - - - $(document).on('click', '.btn-delete', function(e) { - e.preventDefault(); - const dataHref = $(this).data('href'); - Swal.fire({ - title: "", - text: "", - icon: 'warning', - showCancelButton: true, - confirmButtonColor: '#3085d6', - confirmButtonText: '', - cancelButtonText: '', - cancelButtonColor: '#d33' - }).then((result) => { - if (result.value) { - window.location.href = `${dataHref}`; - } - }); - }); - - -endSection() ?> - - -section('css') ?> - -endSection() ?> - - -section('additionalExternalJs') ?> - - - - - - - -endSection() ?> - From a5310e4dce3b9eb06d273c73cbf234f989dce8f6 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Tue, 31 Oct 2023 22:51:04 +0100 Subject: [PATCH 25/27] Eliminado Tarifas de cliente --- .../Controllers/Clientes/Tarifacliente.php | 46 ------------------- .../vuexy/main/menu_digitalizacion.php | 11 +---- .../backend/vuexy/main/menu_impresion.php | 11 +---- .../backend/vuexy/main/menu_maquetacion.php | 11 +---- 4 files changed, 3 insertions(+), 76 deletions(-) delete mode 100644 ci4/app/Controllers/Clientes/Tarifacliente.php diff --git a/ci4/app/Controllers/Clientes/Tarifacliente.php b/ci4/app/Controllers/Clientes/Tarifacliente.php deleted file mode 100644 index e8c7974e..00000000 --- a/ci4/app/Controllers/Clientes/Tarifacliente.php +++ /dev/null @@ -1,46 +0,0 @@ -getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } - - public function delete() - { - $uri = service('uri'); - $data['page_name'] = "Tarifa Cliente"; - $data['url'] = base_url() . $uri->getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } - - public function add() - { - $uri = service('uri'); - $data['page_name'] = "Tarifa Cliente"; - $data['url'] = base_url() . $uri->getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } - - public function edit() - { - $uri = service('uri'); - $data['page_name'] = "Tarifa Cliente"; - $data['url'] = base_url() . $uri->getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } -} - \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php index 29b8a349..6863729e 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php @@ -29,7 +29,7 @@ /** * MENU CLIENTES */ - if (allowMenuSection($menus, ['Cliente', 'Tarifacliente'], 'index')): + if (allowMenuSection($menus, ['Cliente'], 'index')): ?> - 0): ?> - 0): ?> - - - diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php index d773389b..97522ace 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php @@ -29,7 +29,7 @@ /** * MENU CLIENTES */ - if (allowMenuSection($menus, ['Cliente', 'Tarifacliente'], 'index')): + if (allowMenuSection($menus, ['Cliente'], 'index')): ?> - 0): ?> - 0): ?> - - - diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php index 6c42a7c3..2d797e38 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php @@ -29,7 +29,7 @@ /** * MENU CLIENTES */ - if (allowMenuSection($menus, ['Cliente', 'Tarifacliente'], 'index')): + if (allowMenuSection($menus, ['Cliente'], 'index')): ?> - 0): ?> - 0): ?> - - - From d7574a0e2fe488c89fc874cf774cbea14de0f2bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez=20Ortega?= Date: Wed, 1 Nov 2023 19:17:04 +0100 Subject: [PATCH 26/27] hecho el html de las lineas de presupuesto --- ci4/app/Controllers/Test.php | 25 +- ci4/app/Language/en/Presupuestos.php | 38 +- ci4/app/Language/es/Presupuestos.php | 46 +- .../Configuracion/PapelGenericoModel.php | 18 +- ci4/app/Services/PresupuestoService.php | 14 +- .../_lineasPresupuestoItems.php | 817 +++++++++++++++++- .../cosidotapablanda/comparador.js | 16 +- .../viewCosidotapablandaForm.php | 84 +- httpdocs/themes/vuexy/css/sk-datatables.css | 48 + 9 files changed, 997 insertions(+), 109 deletions(-) diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 93c983c9..f6f20f20 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -4,6 +4,7 @@ namespace App\Controllers; use App\Controllers\BaseController; use App\Models\Configuracion\MaquinasTarifasImpresionModel; +use App\Models\Configuracion\PapelGenericoModel; use App\Models\Configuracion\MaquinaModel; use App\Services\PresupuestoService; @@ -16,7 +17,21 @@ class Test extends BaseController public function index() { - $this->testLineasCubierta(); + $this->testLineasIntPlana(); + } + + public function getPapelesHQ(){ + $model = model('App\Models\Configuracion\PapelGenericoModel'); + $data = $model->getPapelForComparador('colorhq', false, false); + + var_dump($data); + } + + public function getGramaje(){ + $model = new PapelGenericoModel(); + $data = $model->getGramajeComparador("AHUESADO OFFSET", "bnhq" ); + + var_dump($data); } public function testGetPrecioPliegoRotativa() @@ -58,8 +73,8 @@ class Test extends BaseController public static function testLineasIntPlana() { - $uso = 'negro'; - $tipo = 'color'; + $uso = 'interior'; + $tipo = 'colorhq'; $datosPedido = (object)array( 'paginas' => 200, 'tirada' => 500, @@ -73,7 +88,7 @@ class Test extends BaseController $maquina_model = new \App\Models\Configuracion\MaquinaModel(); $opciones_papel = array( - 'bn' => 1, + 'color' => 1, 'cubierta' => 0, 'sobrecubierta' => 0, 'rotativa' => 0, @@ -88,7 +103,7 @@ class Test extends BaseController echo '-------------------------------'; $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, - tarifa_tipo: 'negro', + tarifa_tipo: 'colorhq', tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, ); diff --git a/ci4/app/Language/en/Presupuestos.php b/ci4/app/Language/en/Presupuestos.php index f19e9034..dc64feb9 100644 --- a/ci4/app/Language/en/Presupuestos.php +++ b/ci4/app/Language/en/Presupuestos.php @@ -99,7 +99,43 @@ return [ 'rotativa' => 'rotary', 'lineasPresupuesto' => 'Budget Lines', 'tiempo' => 'Time', - + + 'porDefecto' => 'Deafult', + 'tipoImpresion' => 'Print', + 'numPagColor' => 'No Color Pages', + 'saturacion' => 'Saturation', + 'cobNegro' => 'Cov. % Black', + 'cobCyan' => 'Cov. % Cyan', + 'cobMagenta' => 'Cov. % Magenta', + 'cobAmarillo' => 'Cov. % Yellow', + 'gotaNegro' => 'Black drop', + 'gotaColor' => 'Color drop', + 'totalLinea' => 'TOTAL LINE', + 'verCalculos' => 'Calculations', + 'metrosMinuto' => 'Meters x min.', + 'resolucion' => 'Resolution (dpi)', + 'areaPaginas' => 'Pages area (in)', + 'gotasNegro' => 'No black drops', + 'gotasCyan' => 'No color drops', + 'gotasMagenta' => 'No magenta drops', + 'gotasAmarillo' => 'No yellow drops', + 'precioPagNegro' => 'Price black pages', + 'precioPagColor' => 'Price color pages', + 'factorAltura' => 'Height factor', + 'factorAnchura' => 'Width factor', + 'paginasPliego' => 'Pages/sheet', + 'metrosPapelLibro' => 'M. Paper Book', + 'metrosPapelTotal' => 'M. Paper Total', + 'clicksLibro' => 'Clicks/Book', + 'gTintaNegro' => 'G. Black Ink', + 'gTintaCyan' => 'G. Cyan Ink', + 'gTintaMagenta' => 'G. Magenta Ink', + 'gTintaAmarillo' => 'G. Yellow Ink', + 'clicksPedido' => 'Clicks Order', + 'totalClicks' => 'Total Clicks', + 'totalTinta' => 'Total Ink', + 'totalCorte' => 'Total Cut', + 'totalImpresion' => 'TOTAL PRINT', /* '4x0' => '4x0', '4x4' => '4x4', diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 3f5e4f2b..c576203b 100644 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -78,7 +78,7 @@ return [ 'totalTinta' => 'Total tinta', 'totalCorte' => 'Total corte', 'total' => 'Total', - 'aFavorFibra' => 'A favor fibra', + 'aFavorFibra' => 'A favor de fibra', 'cubierta' => 'Cubierta', 'sobrecubierta' => 'Sobrecubierta', 'encuadernacion' => 'Encuadernación', @@ -98,6 +98,50 @@ return [ 'rotativa' => 'rotativa', 'lineasPresupuesto' => 'Líneas Presupuesto', 'tiempo' => 'Tiempo', + + 'porDefecto' => 'Por defecto', + 'tipoImpresion' => 'Impresion', + 'numPagColor' => 'Nº Paginas Color', + 'saturacion' => 'Saturación', + 'cobNegro' => 'Cob. % Negro', + 'cobCyan' => 'Cob. % Cyan', + 'cobMagenta' => 'Cob. % Magenta', + 'cobAmarillo' => 'Cob. % Amarillo', + 'gotaNegro' => 'Gota negro', + 'gotaColor' => 'Gota color', + 'totalLinea' => 'TOTAL LÍNEA', + 'verCalculos' => 'Cálculos', + 'metrosMinuto' => 'Metros x min.', + 'resolucion' => 'Resolución (dpi)', + 'areaPaginas' => 'Área páginas (in)', + 'gotasNegro' => 'Nº gotas negro', + 'gotasCyan' => 'Nº gotas cyan', + 'gotasMagenta' => 'Nº gotas magenta', + 'gotasAmarillo' => 'Nº gotas amarillo', + 'precioPagNegro' => 'Precio pág. Negro', + 'precioPagColor' => 'Precio pág. Color', + 'factorAltura' => 'Factor altura', + 'factorAnchura' => 'Factor anchura', + 'paginasPliego' => 'Páginas/pliego', + 'metrosPapelLibro' => 'M. Papel Libro', + 'metrosPapelTotal' => 'M. Papel Total', + 'clicksLibro' => 'Clicks/Libro', + 'gTintaNegro' => 'G. tinta Negro', + 'gTintaCyan' => 'G. tinta Cyan', + 'gTintaMagenta' => 'G. tinta Magenta', + 'gTintaAmarillo' => 'G. tinta Amarillo', + 'clicksPedido' => 'Clicks Pedido', + 'totalClicks' => 'Total Clicks', + 'totalTinta' => 'Total Tinta', + 'totalCorte' => 'Total Corte', + 'totalImpresion' => 'TOTAL IMPRES.', + 'velocidadCorte' => 'Velocidad corte', + 'precioHoraCorte' => 'Precio hora corte', + 'tiempoCorte' => 'Tiempo corte', + 'gTintaNegroPed' => 'G.T. Negro Ped.', + 'gTintaCyanPed' => 'G.T. Cyan Ped.', + 'gTintaMagentaPed' => 'G.T. Magenta Ped.', + 'gTintaAmarilloPed' => 'G.T. Amarillo Ped.', 'servicioAcabado' => 'Servicio de acabado', 'servicioPreimpresion' => 'Servicio de preimpresión', diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index 32bddfeb..eb971ea2 100644 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -114,6 +114,7 @@ class PapelGenericoModel extends \App\Models\GoBaseModel ->where("t1.is_deleted", 0) ->where("t2.is_deleted", 0) + ->where("t3.active", 1) ->where("t4.is_deleted", 0) ->where("t4.tipo", "impresion") ->where("t5.tipo", $tipo); @@ -134,21 +135,34 @@ class PapelGenericoModel extends \App\Models\GoBaseModel public function getGramajeComparador(string $papel_generico_nombre="", $uso="") { + $tipo=$uso; // color y colorhq valen para los dos + if($uso == 'bn') + $tipo="negro"; + if($uso == 'bnhq') + $tipo="negrohq"; + $builder = $this->db ->table($this->table . " t1") ->select( "t2.gramaje AS text" ) ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "left") ->where("t1.is_deleted", 0) ->where("t2.is_deleted", 0) ->where("t2.isActivo", 1) + ->where("t3.active", 1) + ->where("t4.is_deleted", 0) + ->where("t4.tipo", "impresion") + ->where("t5.tipo", $tipo) ->where("t1.nombre", $papel_generico_nombre); - if($uso == 'bn') + if($uso == 'bn' || $uso == 'bnhq') $builder->where("t2.bn", 1); - else if ($uso == 'color') + else if ($uso == 'color' || $uso == 'colorhq') $builder->where("t2.color", 1); else if ($uso == 'cubierta') $builder->where("t2.cubierta", 1); diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 14d4a374..c3a05d5c 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -361,10 +361,18 @@ class PresupuestoService extends BaseService } public static function getTiempoMaquina($totalClicks, $precioClick, $velocidadMaquina) { + try { + + if($precioClick>0 && $velocidadMaquina>0) + $minutos = (1.0*$totalClicks/$precioClick)/$velocidadMaquina; + else + $minutos = 0; - $minutos = (1.0*$totalClicks/$precioClick)/$velocidadMaquina; - - 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)); + } } diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index e5fef0a9..88cd20a4 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -12,27 +12,784 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + + + + + + +
+ + + + + + + +
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
@@ -40,4 +797,26 @@ - \ No newline at end of file + + + + + +section("additionalInlineJs") ?> + +$('#lp_rot_color_vercalculos').on("click", function () { + if($( ".calculos_rot_color" ).css('display') == 'none') + $( ".calculos_rot_color" ).css('display', 'flex') + else{ + $( ".calculos_rot_color" ).css('display', 'none') + } +}); + +$('#lp_rot_bn_vercalculos').on("click", function () { + if($( ".calculos_rot_bn" ).css('display') == 'none') + $( ".calculos_rot_bn" ).css('display', 'flex') + else{ + $( ".calculos_rot_bn" ).css('display', 'none') + } +}); +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index b33a663e..6194f0ec 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -50,15 +50,19 @@ $('#compPaginasNegrohq').on("change", function () { }); $('#compPaginasColorhq').on("change", function () { - if (document.getElementById('paginas').value < document.getElementById('compPaginasColorhq').value) { - document.getElementById('compPaginasColorhq').value = document.getElementById('paginas').value; - } + const paginas = parseInt(document.getElementById('paginas').value); + var color = parseInt(document.getElementById('compPaginasColorhq').value); + var negro = parseInt(document.getElementById('compPaginasNegrohq').value); - if (document.getElementById('compPaginasNegrohq').value + document.getElementById('compPaginasColorhq').value > document.getElementById('paginas').value) { - var newValue = document.getElementById('paginas').value - document.getElementById('compPaginasColorhq').value; + if (paginas < color) { + document.getElementById('compPaginasColorhq').value = paginas; + color = paginas + } + var newValue = paginas - color; + if (newValue != negro) { document.getElementById('compPaginasNegrohq').value = newValue >= 0 ? newValue : 0; + $('#compPaginasNegrohq').change(); } - }); $('#paginas').on("change", function () { diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index e73e9d02..5b92d14c 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -116,6 +116,10 @@ allowClear: false, }); + $('#compGramajeColorhq').select2({ + allowClear: false, + }); + $('#compPapelCubierta').select2({ allowClear: false, }); @@ -334,6 +338,9 @@ ] }); + const papelGenericoNegroList = ; + + var tableLineasPresupuesto = new DataTable('#tableLineasPresupuesto',{ scrollX: true, searching: false, @@ -345,73 +352,7 @@ language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" }, - columns: [ - { 'data': 'tipo', - 'render': function ( data, type, row, meta ) { - if(data=='bn') - return '\" />'; - else if(data=='bnhq') - return '\" />'; - else if(data=='color') - return '\" />'; - else if(data=='colorhq') - return '\" />'; - else if(data=='rotativabn') - return '\" />'; - else if(data=='rotativacolor') - return '\" />'; - else - return ''; - } - }, - { 'data': 'paginas' }, - { 'data': 'papel' }, - { 'data': 'gramaje' }, - { 'data': 'marca' }, - { 'data': 'maquina' }, - { 'data': 'tiempo' }, - { 'data': 'numeroPliegos' }, - { 'data': 'pliegosPedido' }, - { 'data': 'precioPliego' }, - { 'data': 'libro' }, - { 'data': 'totalPapelPedido' }, - { 'data': 'chekPapel', - render: function (data,type,row) { - if (data == true) { - return ''; - } else { - return ''; - } - return data; - } - }, - { 'data': 'lomo' }, - { 'data': 'peso' }, - { 'data': 'click' }, - { 'data': 'totalClicks' }, - { 'data': 'chekClicks', - render: function (data,type,row) { - if (data == true) { - return ''; - } else { - return ''; - } - return data; - } - }, - { 'data': 'maquinaId'}, - { 'data': 'tiempoMaquina'}, - { 'data': 'maquinaVelocidad'}, - { 'data': 'papelGenericoId'}, - { 'data': 'papelImpresionId'} - ], - columnDefs: [ - { - target: [18,19,20,21,22], - visible: false, - searchable: false - }, - ] + }); @@ -458,7 +399,7 @@ url: "/cosidotapablanda/datatable", data: datos, success: function (data) { - + console.log(data) clearIntLineas(is_color); if(data.lineas.length >0){ @@ -644,8 +585,7 @@ elementos = getIDsComparador(is_color, is_hq) - if ($('#compPaginasNegro').val() && - $(''+ elementos.papel).select2('data').length > 0 && + if ($(''+ elementos.papel).select2('data').length > 0 && $(''+ elementos.gramaje).select2('data').length > 0 && parseInt($(''+ elementos.paginas).val()) > 0 && checkDatosPedidoForComp()) { @@ -732,7 +672,7 @@ data: function (params) { return { tipo: 'gramaje', - uso: 'bn', + uso: 'bnhq', datos: $('#compPapelNegrohq').select2('data')[0].text.trim() , : v }; @@ -820,7 +760,7 @@ data: function (params) { return { tipo: 'gramaje', - uso: 'color', + uso: 'colorhq', datos: $('#compPapelColorhq').select2('data')[0].text.trim() , : v }; diff --git a/httpdocs/themes/vuexy/css/sk-datatables.css b/httpdocs/themes/vuexy/css/sk-datatables.css index 00678af4..40066c00 100644 --- a/httpdocs/themes/vuexy/css/sk-datatables.css +++ b/httpdocs/themes/vuexy/css/sk-datatables.css @@ -40,4 +40,52 @@ table.dataTable.table-hover>tbody>tr.selected:hover>* { .comparator-table td.dt-result-value { text-align: left; +} + + +.lp-cell { + padding-left: 1px; + padding-right: 1px; + margin:0; +} + +.lp-input { + min-width: 40px; + width: 100%; + border-radius: 0.25rem !important; +} + +.lp-select { + padding-top: 2px; + padding-bottom: 2px; + width: 100%; + font-size:0.7rem !important; +} + +.lp-td { + padding-left: 1px; + padding-right: 1px; + margin:0 !important; +} + +.lp-header { + text-align: center !important; + padding-left: 1px !important; + padding-right: 1px !important; + padding-top: 1px !important; + padding-bottom: 5px !important; + margin:0 !important; +} + +.lp-cell-disabled { + background-color: Gainsboro; +} + +.lp-button{ + font-size: 1.1em; + padding-left: 3px; + padding-right: 3px; + width: 100%; + height: 25px; + margin-top: 6px; } \ No newline at end of file From 71706158ca8de82843de1fbd6cc436c725105b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez=20Ortega?= Date: Mon, 6 Nov 2023 09:11:05 +0100 Subject: [PATCH 27/27] linea de presupuesto bn funcionando a falta de borrar --- .../Presupuestos/Cosidotapablanda.php | 457 +++--------------- .../Configuracion/PapelGenericoModel.php | 55 ++- .../Configuracion/PapelImpresionModel.php | 70 +++ ci4/app/Services/PresupuestoService.php | 4 +- .../cosidotapablanda/_datosLibroItems.php | 4 +- .../_lineasPresupuestoItems.php | 266 ++++++++-- .../viewCosidotapablandaForm.php | 3 +- httpdocs/themes/vuexy/css/sk-datatables.css | 3 +- 8 files changed, 425 insertions(+), 437 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index a75a8c57..49b3598e 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -747,20 +747,78 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $datos = $reqData['datos'] ?? null; //$searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); if ($tipo == 'gramaje') { // En este caso contiene el nombre del papel generico $model = new PapelGenericoModel(); $menu = $model->getGramajeComparador($datos, $uso ); + + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + } + 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 ); + + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + } + 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 ); + + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; } + elseif ($tipo == 'maquina') { + $is_rotativa = $reqData['is_rotativa'] ?? null; + $papel_impresion = $reqData['papel_impresion'] ?? null; + $tipo_linea = $reqData['tipoLinea'] ?? null; + $ancho = $reqData['ancho'] ?? null; + $alto = $reqData['alto'] ?? null; + // Datos contiene la tirada + // uso: negro, negrohq, color, colorhq, + $model = new MaquinaModel(); + $maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $datos, $papel_impresion ); + $menu = []; + foreach ($maquinas as $maquina){ + + $formas = PresupuestoService::getNumFormasPlana($tipo_linea, $maquina, floatval($ancho), floatval($alto), true); + + if($formas['num_formas'] != 'n/a'){ + array_push($menu, $maquina); + } + } - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, - $csrfTokenName => $newTokenHash - ]; + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + } + + else{ + + $data = [ + 'tipo' => $tipo, + $csrfTokenName => $newTokenHash + ]; + } + return $this->respond($data); } else { return $this->failUnauthorized('Invalid request', 403); @@ -912,391 +970,4 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController - /* - - - - - - protected function getUbicacionLibroListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('LgUbicacionesLibros.ubicacionLibro'))])]; - if (!empty($selId)) : - $ubicacionesLibroModel = model('App\Models\Configuracion\UbicacionesLibroModel'); - - $selOption = $ubicacionesLibroModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getFormaPagoListItems() - { - $formasPagoModel = model('App\Models\Configuracion\FormasPagoModel'); - $onlyActiveOnes = true; - $data = $formasPagoModel->getAllForMenu('id, nombre', 'nombre', $onlyActiveOnes); - - return $data; - } - - - protected function getPapelImpresionListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPresupuestoEstadoListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PresupuestoEstados.presupuestoEstado'))])]; - if (!empty($selId)) : - $presupuestoEstadoModel = model('App\Models\Presupuestos\PresupuestoEstadoModel'); - - $selOption = $presupuestoEstadoModel->where('id', $selId)->findColumn('estado'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelImpresionListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinaListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('precio'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinaListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - - - protected function getMaquinaListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getTipologiasLibroListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('TipologiasLibros.tipologiasLibro'))])]; - if (!empty($selId)) : - $tipologiasLibroModel = model('App\Models\Presupuestos\TipologiasLibroModel'); - - $selOption = $tipologiasLibroModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelImpresionListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('precio'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getUserListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; - if (!empty($selId)) : - $userModel = model('App\Models\Presupuestos\UserModel'); - - $selOption = $userModel->where('id_user', $selId)->findColumn('first_name'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('id'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getUserListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; - if (!empty($selId)) : - $userModel = model('App\Models\Presupuestos\UserModel'); - - $selOption = $userModel->where('id_user', $selId)->findColumn('first_name'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelImpresionListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getTiposImpresionListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('TiposImpresions.tiposImpresion'))])]; - if (!empty($selId)) : - $tiposImpresionModel = model('App\Models\Presupuestos\TiposImpresionModel'); - - $selOption = $tiposImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('precio'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - - protected function getMaquinaListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getUserListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; - if (!empty($selId)) : - $userModel = model('App\Models\Presupuestos\UserModel'); - - $selOption = $userModel->where('id_user', $selId)->findColumn('first_name'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPaginasCubiertaOptions() - { - $paginasCubiertaOptions = [ - '' => lang('Basic.global.pleaseSelect'), - '4x0' => '4x0', - '4x4' => '4x4', - ]; - return $paginasCubiertaOptions; - } - - - - protected function getPaginasPortadaOptions() - { - $paginasPortadaOptions = [ - '' => lang('Basic.global.pleaseSelect'), - '4x0' => '4x0', - '4x4' => '4x4', - ]; - return $paginasPortadaOptions; - } - */ - } diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index eb971ea2..17b68119 100644 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -135,7 +135,10 @@ class PapelGenericoModel extends \App\Models\GoBaseModel public function getGramajeComparador(string $papel_generico_nombre="", $uso="") { - $tipo=$uso; // color y colorhq valen para los dos + if($uso == 'cubierta' || $uso == 'sobrecubierta') + $tipo = 'color'; + else + $tipo=$uso; // color y colorhq valen para los dos if($uso == 'bn') $tipo="negro"; if($uso == 'bnhq') @@ -168,10 +171,58 @@ class PapelGenericoModel extends \App\Models\GoBaseModel $builder->where("t2.cubierta", 1); else if ($uso == 'sobrecubierta') $builder->where("t2.sobrecubierta", 1); - + + $values = $builder->orderBy("t2.gramaje", "asc")->get()->getResultObject(); + $id = 1; + foreach ($values as $value){ + $value->id = $id; + $id++; + } + $values_array = array_map( function( $value ) { + return $value->text; + }, $values ); + $unique_values = array_unique($values_array); + return array_values(array_intersect_key($values, $unique_values)); + } + //tipo: negro, negrohq, color, colorhq + //uso: interior, rotativa, cubierta, sobrecubierta + public function getGramajeLineasPresupuesto($papel_generico_id=0, $tipo="", $uso="") + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t2.gramaje AS text" + ) + ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "left") + + ->where("t1.is_deleted", 0) + ->where("t2.is_deleted", 0) + ->where("t2.isActivo", 1) + ->where("t3.active", 1) + ->where("t4.is_deleted", 0) + ->where("t4.tipo", "impresion") + ->where("t5.tipo", $tipo) + ->where("t1.id", $papel_generico_id); + if($tipo == 'negro' || $tipo == 'negrohq') + $builder->where("t2.bn", 1); + else if ($tipo == 'color' || $tipo == 'colorhq') + $builder->where("t2.color", 1); + if ($uso == 'cubierta') + $builder->where("t2.cubierta", 1); + else if ($uso == 'sobrecubierta') + $builder->where("t2.sobrecubierta", 1); + if($uso=='rotativa') + $builder->where("t2.rotativa", 1); + else + $builder->where("t2.rotativa", 0); + + $values = $builder->orderBy("t2.gramaje", "asc")->get()->getResultObject(); $id = 1; foreach ($values as $value){ diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index d600bbc2..4e53176b 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -255,6 +255,76 @@ class PapelImpresionModel extends \App\Models\GoBaseModel $builder->where("t1.rotativa", $rotativa); } + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); + } + + //tipo: negro, negrohq, color, colorhq + //uso: interior, rotativa, cubierta, sobrecubierta + public function getPapelesImpresionForMenu($papel_generico = null, $gramaje = null, $tipo = null, $uso=""){ + $builder = $this->db + ->table($this->table . " t1") + ->distinct("t1.id") + ->join("lg_papel_generico t2", "t1.papel_generico_id = t2.id", "left") + ->join("lg_maquina_papel_impresion t3", "t1.id = t3.papel_impresion_id", "left") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") + ->join("lg_maquinas_tarifas_impresion t5", "t4.id = t5.maquina_id", "left") + ->select( + "t1.id AS id, t1.nombre AS text"); + + $builder->where("t1.is_deleted", 0); + $builder->where("t1.isActivo", 1); + $builder->where("t2.is_deleted", 0); + $builder->where("t3.active", 1); + $builder->where("t4.is_deleted", 0); + $builder->where("t4.tipo", 'impresion'); + $builder->where("t5.is_deleted", 0); + $builder->where("t5.tipo", $tipo); + + $builder->where("t2.id", $papel_generico); + $builder->where("t1.gramaje", $gramaje); + + if($tipo == 'negro' || $tipo == 'negrohq') + $builder->where("t1.bn", 1); + else if ($tipo == 'color' || $tipo == 'colorhq') + $builder->where("t1.color", 1); + if ($uso == 'cubierta') + $builder->where("t1.cubierta", 1); + else if ($uso == 'sobrecubierta') + $builder->where("t1.sobrecubierta", 1); + if($uso=='rotativa') + $builder->where("t1.rotativa", 1); + else + $builder->where("t1.rotativa", 0); +/* + if($tipo=='negro' || $tipo=='negrohq'){ + $builder->where("t1.bn", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='color' || $tipo=='colorhq'){ + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='cubierta'){ + $builder->where("t1.cubierta", 1); + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='sobrecubierta'){ + $builder->where("t1.sobrecubierta", 1); + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='rot_bn'){ + $builder->where("t1.bn", 1); + $builder->where("t1.rotativa", 1); + } + elseif($tipo=='rot_color'){ + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 1); + } +*/ + + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index c3a05d5c..81ddd6a3 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -251,7 +251,7 @@ class PresupuestoService extends BaseService } - private static function getNumFormasPlana($uso, $maquina, $ancho, $alto, $isCosido) + public static function getNumFormasPlana($uso, $maquina, $ancho, $alto, $isCosido) { // El ancho si es cosido es el doble if($uso != 'cubierta' && $uso != 'sobrecubierta'){ @@ -306,7 +306,7 @@ class PresupuestoService extends BaseService if(count($calles)>0) $h2 = ($h2_temp * $anchoForCalculo + 2 * $calles[0]->externas + ($h2_temp - 1) * $calles[0]->internas < ($maquina->ancho)) ? $h2_temp : $h2_temp - 1; else - $h2 = $h2_temp; + $h2 = $h2_temp; $v2 = floor($maquina->alto_impresion / $anchoForCalculo); $formas_v = $h2 * $v2; //p2 diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php index dd8f5b93..ac6a29b5 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php @@ -95,7 +95,7 @@ - + @@ -104,7 +104,7 @@ - + diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 88cd20a4..34fa2795 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -37,9 +37,9 @@ - + - $v) : ?> id != 0): ?> @@ -52,28 +52,28 @@ - - - - - - - - - + + + + + + - - - - + + + + @@ -82,7 +82,7 @@ - $v) : ?> id != 0): ?> @@ -99,11 +99,11 @@ - - @@ -125,7 +125,7 @@ - $v) : ?> id != 0): ?> @@ -142,11 +142,11 @@ - - @@ -168,7 +168,7 @@ - $v) : ?> id != 0): ?> @@ -185,11 +185,11 @@ - - @@ -211,7 +211,7 @@ - $v) : ?> id != 0): ?> @@ -228,11 +228,11 @@ - - @@ -460,7 +460,7 @@ - $v) : ?> id != 0): ?> @@ -477,11 +477,11 @@ - - @@ -708,7 +708,7 @@ - $v) : ?> id != 0): ?> @@ -725,11 +725,11 @@ - - @@ -751,7 +751,7 @@ - $v) : ?> id != 0): ?> @@ -768,11 +768,11 @@ - - @@ -803,7 +803,17 @@ section("additionalInlineJs") ?> + +$('#lp_bn_papel').val(''); +$('#lp_bnhq_papel').val(''); +$('#lp_color_papel').val(''); +$('#lp_colorhq_papel').val(''); +$('#lp_rot_bn_papel').val(''); +$('#lp_rot_color_papel').val(''); +$('#lp_cubierta_papel').val(''); +$('#lp_sobrecubierta_papel').val(''); + $('#lp_rot_color_vercalculos').on("click", function () { if($( ".calculos_rot_color" ).css('display') == 'none') $( ".calculos_rot_color" ).css('display', 'flex') @@ -819,4 +829,188 @@ $('#lp_rot_bn_vercalculos').on("click", function () { $( ".calculos_rot_bn" ).css('display', 'none') } }); + + +function clear_lp_bn(clear_selectors){ + let pags = $("#lp_bn_paginas" ).val() + $(".lp-bn-input" ).val("0") + $("#lp_bn_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-bn-select").empty() +} + +function fill_lp_bn(data){ + $('#lp_bn_tiempo').val(data.tiempo_maquina) + $('#lp_bn_numeroPliegos').val(isNaN(parseFloat(data.pliegos_libro)) ? "" : parseFloat(data.pliegos_libro).toFixed(2)) + $('#lp_bn_pliegosPedido').val(isNaN(parseFloat(data.pliegos_pedido)) ? "" : parseFloat(data.pliegos_pedido).toFixed(2)) + $('#lp_bn_precioPliego').val(isNaN(parseFloat(data.precios_pliegos)) ? "" : parseFloat(data.precios_pliegos).toFixed(6)) + $('#lp_bn_libro').val(isNaN(parseFloat(data.precio_libro)) ? "" : parseFloat(data.precio_libro).toFixed(2)) + $('#lp_bn_totalPapelPedido').val(isNaN(parseFloat(data.precio_pedido)) ? "" : parseFloat(data.precio_pedido).toFixed(2)) + $('#lp_bn_lomo').val(isNaN(parseFloat(data.mano)) ? "" : parseFloat(data.mano).toFixed(2)) + $('#lp_bn_peso').val(isNaN(parseFloat(data.peso)) ? "" : parseFloat(data.peso).toFixed(2)) + $('#lp_bn_click').val(isNaN(parseFloat(data.precio_click)) ? "" : parseFloat(data.precio_click).toFixed(6)) + $('#lp_bn_totalClicks').val(isNaN(parseFloat(data.precio_click_pedido)) ? "" : parseFloat(data.precio_click_pedido).toFixed(2)) +} + + + +$('#lp_bn_papel').on("change", function () { + clear_lp_bn(true) + $.ajax({ + type: 'post', + url: '', + data: { + tipo: 'gramajeLineasPresupuesto', + uso: 'interior', + datos: $('#lp_bn_papel option:selected').val() , + tipoLinea: "negro", + : v + }, + dataType: 'json', + success: function (data) { + yeniden(data.); + $.each(data.menu, function(item){ + var option = $('