diff --git a/ci4/app/Controllers/Configuracion/Papelimpresionmargenes.php b/ci4/app/Controllers/Configuracion/Papelimpresionmargenes.php new file mode 100644 index 00000000..9b59bed1 --- /dev/null +++ b/ci4/app/Controllers/Configuracion/Papelimpresionmargenes.php @@ -0,0 +1,174 @@ +soft_delete = true; + // Se indica el flag para los ficheros borrados + $this->delete_flag = 1; + + $this->viewData['usingSweetAlert'] = true; + parent::initController($request, $response, $logger); + + } + + + public function datatable_editor() + { + if ($this->request->isAJAX()) { + + include(APPPATH . "ThirdParty/DatatablesEditor/DataTables.php"); + + // Build our Editor instance and process the data coming from _POST + $response = Editor::inst($db, 'papel_impresion_margenes') + ->fields( + Field::inst('paginas_min') + ->validator('Validate::numeric', array( + 'message' => lang('PapelImpresionMargenesvalidation.paginas_min.decimal')) + ) + ->validator('Validate::notEmpty', array( + 'message' => lang('PapelImpresionMargenesvalidation.paginas_min.required')) + ), + Field::inst('paginas_max') + ->validator('Validate::numeric', array( + 'message' => lang('PapelImpresionMargenesvalidation.paginas_max.decimal')) + ) + ->validator('Validate::notEmpty', array( + 'message' => lang('PapelImpresionMargenesvalidation.paginas_max.required')) + ), + Field::inst('margen') + ->validator('Validate::numeric', array( + 'message' => lang('PapelImpresionMargenesvalidation.margen.decimal')) + ) + ->validator('Validate::notEmpty', array( + 'message' => lang('PapelImpresionMargenesvalidation.margen.required')) + ), + Field::inst('papel_impresion:id'), + Field::inst('user_created_id'), + Field::inst('created_at'), + Field::inst('user_updated_id'), + Field::inst('updated_at'), + Field::inst('is_deleted'), + Field::inst('deleted_at'), + + ) + ->validator(function ($editor, $action, $data) { + if ($action === Editor::ACTION_CREATE || $action === Editor::ACTION_EDIT) { + foreach ($data['data'] as $pkey => $values) { + // Si no se quiere borrar... + if ($data['data'][$pkey]['is_deleted'] != 1) { + $process_data['paginas_min'] = $data['data'][$pkey]['paginas_min']; + $process_data['paginas_max'] = $data['data'][$pkey]['paginas_max']; + $response = $this->model->checkIntervals($process_data, $pkey, $data['data'][$pkey]['papel_impresion_id']); + // No se pueden duplicar valores al crear o al editar + if (!empty($response)) { + return $response; + } + } + } + } + }) + ->on('preCreate', function ($editor, &$values) { + $session = session(); + $datetime = (new \CodeIgniter\I18n\Time("now")); + $editor + ->field('user_created_id') + ->setValue($session->id_user); + $editor + ->field('created_at') + ->setValue($datetime->format('Y-m-d H:i:s')); + }) + ->on('preEdit', function ($editor, &$values) { + $session = session(); + $datetime = (new \CodeIgniter\I18n\Time("now")); + $editor + ->field('user_updated_id') + ->setValue($session->id_user); + $editor + ->field('updated_at') + ->setValue($datetime->format('Y-m-d H:i:s')); + }) + ->debug(true) + ->process($_POST) + ->data(); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $response[$csrfTokenName] = $newTokenHash; + + echo json_encode($response); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function datatable() + { + 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; + } + $start = $reqData['start'] ?? 0; + $length = $reqData['length'] ?? 5; + $search = $reqData['search']['value']; + $requestedOrder = $reqData['order']['0']['column'] ?? 0; + $order = TarifaEncuadernacionLineaModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; + $dir = $reqData['order']['0']['dir'] ?? 'asc'; + + $id_PI = $reqData['papel_impresion_id'] ?? -1; + + $resourceData = $this->model->getResource("", $id_PI)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + + return $this->respond(Collection::datatable( + $resourceData, + $this->model->getResource()->countAllResults(), + $this->model->getResource("", $id_PI)->countAllResults() + )); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + +} diff --git a/ci4/app/Entities/Configuracion/PapelImpresion.php b/ci4/app/Entities/Configuracion/PapelImpresion.php index 0e890e9a..69c898bd 100644 --- a/ci4/app/Entities/Configuracion/PapelImpresion.php +++ b/ci4/app/Entities/Configuracion/PapelImpresion.php @@ -11,15 +11,10 @@ class PapelImpresion extends \CodeIgniter\Entity\Entity "nombre" => null, "defecto" => false, "referencia" => null, - "ancho" => null, - "alto" => null, "mano" => null, "espesor" => 0.0, "gramaje" => null, "precio_tonelada" => null, - "margen" => null, - "peso_por_pliego" => null, - "precio_pliego" => null, "bn" => true, "color" => true, "cubierta" => false, @@ -32,14 +27,10 @@ class PapelImpresion extends \CodeIgniter\Entity\Entity protected $casts = [ "papel_generico_id" => "int", "defecto" => "boolean", - "ancho" => "float", - "alto" => "float", "mano" => "float", "espesor" => "float", "gramaje" => "float", "precio_tonelada" => "float", - "peso_por_pliego" => "float", - "precio_pliego" => "float", "bn" => "boolean", "color" => "boolean", "cubierta" => "boolean", diff --git a/ci4/app/Entities/Configuracion/PapelImpresionMargen.php b/ci4/app/Entities/Configuracion/PapelImpresionMargen.php new file mode 100644 index 00000000..fd35b7ff --- /dev/null +++ b/ci4/app/Entities/Configuracion/PapelImpresionMargen.php @@ -0,0 +1,30 @@ + null, + "papel_impresion_id" => 0, + "paginas_min" => 0, + "paginas_max" => 0, + "margen" => 0, + "user_created_id" => 0, + "user_updated_id" => 0, + "is_deleted" => 0, + "deleted_at" => null, + "created_at" => null, + "updated_at" => null, + ]; + protected $casts = [ + "tirada_encuadernacion_id" => "int", + "paginas_min" => "float", + "paginas_max" => "float", + "margen" => "float", + "user_created_id" => "int", + "user_updated_id" => "int", + "is_deleted" => "int", + ]; +} \ No newline at end of file diff --git a/ci4/app/Language/en/PapelImpresionMargenes.php b/ci4/app/Language/en/PapelImpresionMargenes.php new file mode 100644 index 00000000..6f18c8ef --- /dev/null +++ b/ci4/app/Language/en/PapelImpresionMargenes.php @@ -0,0 +1,36 @@ + 'ID', + 'moduleTitle' => 'Printing Paper Margins', + 'deleteLine' => 'the selected register', + 'paginasMax' => 'Max Pages', + 'paginasMin' => 'Min Pages', + 'margen' => 'Margin', + 'accordion' => 'Margins according to number of pages', + 'validation' => [ + 'error_paginas_overlap' => 'The range [Min Pages, Max Pages] is overlapped with another one for the selected type.', + 'error_paginas_range' => 'The field Min Pages must be lower than the field Max Pages', + 'paginas_max' => [ + 'decimal' => 'The {field} field must contain a decimal number.', + 'required' => 'The {field} field is required.', + + ], + + 'paginas_min' => [ + 'decimal' => 'The {field} field must contain a decimal number.', + 'required' => 'The {field} field is required.', + + ], + 'margen' => [ + 'integer' => 'The field must contain a decimal number.', + 'required' => 'The field is required.', + + ], + + ], + + +]; \ No newline at end of file diff --git a/ci4/app/Language/es/PapelImpresionMargenes.php b/ci4/app/Language/es/PapelImpresionMargenes.php new file mode 100644 index 00000000..efdc3994 --- /dev/null +++ b/ci4/app/Language/es/PapelImpresionMargenes.php @@ -0,0 +1,37 @@ + 'ID', + 'moduleTitle' => 'Papel Impresion Márgenes', + 'deleteLine' => 'el registro seleccionado', + 'paginasMax' => 'Páginas Max', + 'paginasMin' => 'Páginas Min', + 'margen' => 'Margen', + 'accordion' => 'Márgenes según número de páginas', + 'validation' => [ + 'error_paginas_overlap' => 'El rango [Páginas Min, Páginas Max] se solapa con otro existente para el tipo seleccionado.', + 'error_paginas_range' => 'El campo Páginas Min debe ser menor que el campo Páginas Max', + + 'paginas_max' => [ + 'decimal' => 'El campo {field} debe contener un número decimal.', + 'required' => 'The {field} field is required.', + + ], + + 'paginas_min' => [ + 'decimal' => 'El campo {field} debe contener un número decimal.', + 'required' => 'The {field} field is required.', + + ], + 'margen' => [ + 'decimal' => 'El campo debe contener un número decimal.', + 'required' => 'El campo es obligatorio.', + + ], + + ], + + +]; \ No newline at end of file diff --git a/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php b/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php new file mode 100644 index 00000000..29e7af9b --- /dev/null +++ b/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php @@ -0,0 +1,138 @@ + "t1.paginas_min", + 1 => "t1.paginas_max", + 2 => "t1.margen", + ]; + + protected $allowedFields = [ + "papel_impresion_id", + "paginas_min", + "paginas_max", + "margen", + "user_created_id", + "user_updated_id", + "is_deleted", + "deleted_at", + + ]; + protected $returnType = "App\Entities\Configuracion\PapelImpresionMargen"; + + protected $useTimestamps = true; + protected $useSoftDeletes = false; + + protected $createdField = "created_at"; + + protected $updatedField = "updated_at"; + + public static $labelField = "papel_impresion_id"; + + protected $validationRules = [ + "paginas_max" => [ + "label" => "PapelImpresionMargenes.paginasMax", + "rules" => "required|decimal", + ], + "paginas_min" => [ + "label" => "PapelImpresionMargenes.paginasMin", + "rules" => "required|decimal", + ], + "margen" => [ + "label" => "PapelImpresionMargenes.margen", + "rules" => "required|decimal", + ], + ]; + + protected $validationMessages = [ + "paginas_max" => [ + "decimal" => "PapelImpresionMargenes.validation.paginas_max.decimal", + "required" => "PapelImpresionMargenes.validation.paginas_max.required", + ], + "paginas_min" => [ + "decimal" => "PapelImpresionMargenes.validation.paginas_min.decimal", + "required" => "PapelImpresionMargenes.validation.paginas_min.required", + ], + "margen" => [ + "decimal" => "PapelImpresionMargenes.validation.margen.decimal", + "required" => "PapelImpresionMargenes.validation.margen.required", + ], + ]; + + /** + * Get resource data. + * + * @param string $search + * + * @return \CodeIgniter\Database\BaseBuilder + */ + public function getResource(string $search = "", $papel_impresion_id = -1) + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id AS id, t1.papel_impresion_id AS papel_impresion_id, t1.paginas_min AS paginas_min, + t1.paginas_max AS paginas_max, t1.margen AS margen, t2.id AS papel_impresion" + ); + //JJO + $builder->where('papel_impresion_id', $papel_impresion_id); + $builder->where("t1.is_deleted", 0); + + $builder->join("lg_papel_impresion t2", "t1.papel_impresion_id = t2.id", "left"); + + + 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(); + } + + public function checkIntervals($data = [], $id_linea = null, $papel_impresion_id = null){ + + helper('general'); + + if(floatval($data["paginas_min"])>= floatval($data["paginas_max"])){ + return lang('PapelImpresionMargenes.validation.error_paginas_range'); + } + + $rows = $this->db + ->table($this->table) + ->select("id, paginas_min, paginas_max") + ->where("is_deleted", 0) + ->where("papel_impresion_id", $papel_impresion_id) + ->get()->getResultObject(); + + + foreach ($rows as $row) { + 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'); + } + } + + return ""; + } +} diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index b145d8f5..2a7e1411 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -21,35 +21,7 @@ class PapelImpresionModel extends \App\Models\GoBaseModel 5 => "t1.cubierta", 6 => "t1.sobrecubierta", 7 => "t1.rotativa", - 8 => "t1.isActivo", - - - /*1 => "t1.id", - 2 => "t1.papel_generico_id", - 3 => "t1.nombre", - 4 => "t1.defecto", - 5 => "t1.referencia", - 6 => "t1.ancho", - 7 => "t1.alto", - 8 => "t1.mano", - 9 => "t1.espesor", - 10 => "t1.gramaje", - 11 => "t1.precio_tonelada", - 12 => "t1.margen", - 13 => "t1.peso_por_pliego", - 14 => "t1.precio_pliego", - 15 => "t1.bn", - 16 => "t1.color", - 17 => "t1.portada", - 18 => "t1.cubierta", - 19 => "t1.rotativa", - 20 => "t2.nombre",*/ - ]; - - const SORTABLE2 = [ - 0 => "t1.defecto", - 1 => "t1.nombre", - 2 => "t1.gramaje", + 8 => "t1.isActivo" ]; @@ -58,15 +30,10 @@ class PapelImpresionModel extends \App\Models\GoBaseModel "nombre", "defecto", "referencia", - "ancho", - "alto", "mano", "espesor", "gramaje", "precio_tonelada", - "margen", - "peso_por_pliego", - "precio_pliego", "bn", "color", "cubierta", @@ -89,14 +56,6 @@ class PapelImpresionModel extends \App\Models\GoBaseModel public static $labelField = "nombre"; protected $validationRules = [ - "alto" => [ - "label" => "PapelImpresion.alto", - "rules" => "required|decimal", - ], - "ancho" => [ - "label" => "PapelImpresion.ancho", - "rules" => "required|decimal", - ], "espesor" => [ "label" => "PapelImpresion.espesor", "rules" => "required|decimal", @@ -109,22 +68,10 @@ class PapelImpresionModel extends \App\Models\GoBaseModel "label" => "PapelImpresion.mano", "rules" => "required|decimal", ], - "margen" => [ - "label" => "PapelImpresion.margen", - "rules" => "required|max_length[31]", - ], "nombre" => [ "label" => "PapelImpresion.nombre", "rules" => "trim|required|max_length[255]", ], - "peso_por_pliego" => [ - "label" => "PapelImpresion.pesoPorPliego", - "rules" => "required|decimal", - ], - "precio_pliego" => [ - "label" => "PapelImpresion.precioPliego", - "rules" => "required|decimal", - ], "precio_tonelada" => [ "label" => "PapelImpresion.precioTonelada", "rules" => "required|decimal", @@ -136,14 +83,6 @@ class PapelImpresionModel extends \App\Models\GoBaseModel ]; protected $validationMessages = [ - "alto" => [ - "decimal" => "PapelImpresion.validation.alto.decimal", - "required" => "PapelImpresion.validation.alto.required", - ], - "ancho" => [ - "decimal" => "PapelImpresion.validation.ancho.decimal", - "required" => "PapelImpresion.validation.ancho.required", - ], "espesor" => [ "decimal" => "PapelImpresion.validation.espesor.decimal", "required" => "PapelImpresion.validation.espesor.required", @@ -156,22 +95,10 @@ class PapelImpresionModel extends \App\Models\GoBaseModel "decimal" => "PapelImpresion.validation.mano.decimal", "required" => "PapelImpresion.validation.mano.required", ], - "margen" => [ - "max_length" => "PapelImpresion.validation.margen.max_length", - "required" => "PapelImpresion.validation.margen.required", - ], "nombre" => [ "max_length" => "PapelImpresion.validation.nombre.max_length", "required" => "PapelImpresion.validation.nombre.required", ], - "peso_por_pliego" => [ - "decimal" => "PapelImpresion.validation.peso_por_pliego.decimal", - "required" => "PapelImpresion.validation.peso_por_pliego.required", - ], - "precio_pliego" => [ - "decimal" => "PapelImpresion.validation.precio_pliego.decimal", - "required" => "PapelImpresion.validation.precio_pliego.required", - ], "precio_tonelada" => [ "decimal" => "PapelImpresion.validation.precio_tonelada.decimal", "required" => "PapelImpresion.validation.precio_tonelada.required", @@ -215,7 +142,10 @@ class PapelImpresionModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.nombre AS nombre, t1.defecto AS defecto, t1.referencia AS referencia, t1.ancho AS ancho, t1.alto AS alto, t1.mano AS mano, t1.espesor AS espesor, t1.gramaje AS gramaje, t1.precio_tonelada AS precio_tonelada, t1.margen AS margen, t1.peso_por_pliego AS peso_por_pliego, t1.precio_pliego AS precio_pliego, t1.bn AS bn, t1.color AS color, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta, t1.rotativa AS rotativa, t1.isActivo AS isActivo, t2.nombre AS papel_generico_id" + "t1.id AS id, t1.nombre AS nombre, t1.defecto AS defecto, t1.referencia AS referencia, t1.mano AS mano, + t1.espesor AS espesor, t1.gramaje AS gramaje, t1.precio_tonelada AS precio_tonelada, + t1.bn AS bn, t1.color AS color, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta, t1.rotativa AS rotativa, + t1.isActivo AS isActivo, t2.nombre AS papel_generico_id" ); $builder->join("lg_papel_generico t2", "t1.papel_generico_id = t2.id", "left"); diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/papel/_papelImpresionFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/papel/_papelImpresionFormItems.php index 457dc07e..567e566b 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/papel/_papelImpresionFormItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/papel/_papelImpresionFormItems.php @@ -15,13 +15,6 @@ -
| = lang('PapelImpresionMargenes.paginasMin') ?> | += lang('PapelImpresionMargenes.paginasMax') ?> | += lang('PapelImpresionMargenes.margen') ?> | += lang('Basic.global.Action') ?> | +
|---|