Merge branch 'mod/tipo_papel_generico' into 'main'

Mod/tipo papel generico

See merge request jjimenez/safekat!881
This commit is contained in:
2025-07-15 09:01:29 +00:00
10 changed files with 193 additions and 19 deletions

View File

@ -11,6 +11,7 @@ use App\Services\PapelImpresionService;
use CodeIgniter\Config\BaseService; use CodeIgniter\Config\BaseService;
use App\Services\ProductionService; use App\Services\ProductionService;
use App\Services\TarifaMaquinaService; use App\Services\TarifaMaquinaService;
use App\Services\PapelService;
use CodeIgniter\Email\Email; use CodeIgniter\Email\Email;
/** /**
@ -39,6 +40,9 @@ class Services extends BaseService
* } * }
*/ */
public static function papel(){
return new PapelService();
}
public static function production(){ public static function production(){
return new ProductionService(); return new ProductionService();
} }

View File

@ -40,6 +40,8 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
// Se indica el flag para los ficheros borrados // Se indica el flag para los ficheros borrados
$this->delete_flag = 1; $this->delete_flag = 1;
$this->papelService = service('papel');
// Breadcrumbs (IMN) // Breadcrumbs (IMN)
$this->viewData['breadcrumb'] = [ $this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
@ -70,10 +72,6 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
public function add() public function add()
{ {
if ($this->request->getPost()): if ($this->request->getPost()):
$nullIfEmpty = true; // !(phpversion() >= '8.1'); $nullIfEmpty = true; // !(phpversion() >= '8.1');
@ -120,9 +118,11 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
endif; // $noException && $successfulResult endif; // $noException && $successfulResult
endif; // ($requestMethod === 'post') endif; // ($requestMethod === 'post')
$this->viewData['papelGenerico'] = isset($sanitizedData) ? new PapelGenerico($sanitizedData) : new PapelGenerico(); $this->viewData['papelGenerico'] = isset($sanitizedData) ? new PapelGenerico($sanitizedData) : new PapelGenerico();
$this->viewData['tipoPapelGenericoList'] = $this->papelService->getTipoPapelGenerico();
$this->viewData['formAction'] = route_to('createPapelGenerico'); $this->viewData['formAction'] = route_to('createPapelGenerico');
$this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('PapelGenerico.moduleTitle') . ' ' . lang('Basic.global.addNewSuffix'); $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('PapelGenerico.moduleTitle') . ' ' . lang('Basic.global.addNewSuffix');
@ -145,7 +145,6 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
endif; endif;
if ($this->request->getPost()): if ($this->request->getPost()):
$nullIfEmpty = true; // !(phpversion() >= '8.1'); $nullIfEmpty = true; // !(phpversion() >= '8.1');
@ -211,6 +210,8 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$this->viewData['papelGenerico'] = $papelGenerico; $this->viewData['papelGenerico'] = $papelGenerico;
$this->viewData['tipoPapelGenericoList'] = $this->papelService->getTipoPapelGenerico();
$this->viewData['formAction'] = route_to('updatePapelGenerico', $id); $this->viewData['formAction'] = route_to('updatePapelGenerico', $id);
$this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('PapelGenerico.moduleTitle') . ' ' . lang('Basic.global.edit3'); $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('PapelGenerico.moduleTitle') . ' ' . lang('Basic.global.edit3');

View File

@ -0,0 +1,68 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class CreateTiposPapelGenerico extends Migration
{
public function up()
{
// Crear tabla tipos_papel_generico
$this->forge->addField([
'id' => [
'type' => 'INT',
'unsigned' => true,
'auto_increment' => true,
],
'clave' => [
'type' => 'VARCHAR',
'constraint' => '50',
'unique' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('tipos_papel_generico');
// Insertar claves
$data = [
['clave' => 'offset_blanco'],
['clave' => 'offset_ahuesado'],
['clave' => 'estucados'],
['clave' => 'volumen'],
['clave' => 'especiales'],
['clave' => 'reciclados'],
['clave' => 'cartulinas'],
['clave' => 'verjurados'],
];
$this->db->table('tipos_papel_generico')->insertBatch($data);
// Añadir columna tipo_papel_generico_id a lg_papel_generico
$this->forge->addColumn('lg_papel_generico', [
'tipo_papel_generico_id' => [
'type' => 'INT',
'unsigned' => true,
'null' => true,
'after' => 'id', // Ajusta si deseas colocarla en otro lugar
]
]);
// Agregar constraint foreign key
$this->db->query(
'ALTER TABLE lg_papel_generico
ADD CONSTRAINT fk_tipo_papel_generico
FOREIGN KEY (tipo_papel_generico_id)
REFERENCES tipos_papel_generico(id)
ON DELETE SET NULL
ON UPDATE CASCADE'
);
}
public function down()
{
// Eliminar foreign key primero
$this->db->query('ALTER TABLE lg_papel_generico DROP FOREIGN KEY fk_tipo_papel_generico');
$this->forge->dropColumn('lg_papel_generico', 'tipo_papel_generico_id');
$this->forge->dropTable('tipos_papel_generico');
}
}

View File

@ -16,11 +16,13 @@ class PapelGenerico extends \CodeIgniter\Entity\Entity
"activo" => false, "activo" => false,
"created_at" => null, "created_at" => null,
"updated_at" => null, "updated_at" => null,
"tipo_papel_generico_id" => null,
]; ];
protected $casts = [ protected $casts = [
"show_in_client" => "boolean", "show_in_client" => "boolean",
"activo" => "boolean", "activo" => "boolean",
"show_in_client_special" => "boolean", "show_in_client_special" => "boolean",
"is_deleted" => "int", "is_deleted" => "int",
"tipo_papel_generico_id" => "int",
]; ];
} }

View File

@ -0,0 +1,11 @@
<?php
namespace App\Entities\Configuracion;
use CodeIgniter\Entity;
class TipoPapelGenerico extends \CodeIgniter\Entity\Entity
{
protected $attributes = [
"clave" => null,
];
}

View File

@ -6,6 +6,7 @@ return [
'code' => 'Código', 'code' => 'Código',
'codeOt' => 'Código Ot', 'codeOt' => 'Código Ot',
'createdAt' => 'Creado el', 'createdAt' => 'Creado el',
'tipo_papel_generico_id' => 'Tipo Papel Genérico',
'deletedAt' => 'Deleted At', 'deletedAt' => 'Deleted At',
'id' => 'ID', 'id' => 'ID',
'activo' => 'Activo', 'activo' => 'Activo',
@ -21,6 +22,16 @@ return [
'updatedAt' => 'Actualizado el', 'updatedAt' => 'Actualizado el',
'form_acordion_title' => 'Propiedades Papel Genérico', 'form_acordion_title' => 'Propiedades Papel Genérico',
// Tipos de papel genérico
'offset_blanco' => 'Offset Blanco',
'offset_ahuesado' => 'Offset Ahuesado',
'estucados' => 'Estucados',
'volumen' => 'Volumen',
'especiales' => 'Especiales',
'reciclados' => 'Reciclados',
'cartulinas' => 'Cartulinas',
'verdujados' => 'Verdujados',
'validation' => [ 'validation' => [
'code' => [ 'code' => [
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.', 'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',

View File

@ -22,7 +22,18 @@ class PapelGenericoModel extends \App\Models\BaseModel
4 => "t1.show_in_client_special", 4 => "t1.show_in_client_special",
]; ];
protected $allowedFields = ["nombre", "code", "code_ot", "show_in_client", "show_in_client_special", "deleted_at", "is_deleted", "activo"]; protected $allowedFields =
[
"nombre",
"code",
"code_ot",
"show_in_client",
"show_in_client_special",
"deleted_at",
"is_deleted",
"activo",
"tipo_papel_generico_id",
];
protected $returnType = "App\Entities\Configuracion\PapelGenerico"; protected $returnType = "App\Entities\Configuracion\PapelGenerico";
protected $useTimestamps = true; protected $useTimestamps = true;
@ -132,16 +143,16 @@ class PapelGenericoModel extends \App\Models\BaseModel
return empty($search) return empty($search)
? $builder ? $builder
: $builder : $builder
->groupStart() ->groupStart()
->like("t1.id", $search) ->like("t1.id", $search)
->orLike("t1.nombre", $search) ->orLike("t1.nombre", $search)
->orLike("t1.code", $search) ->orLike("t1.code", $search)
->orLike("t1.code_ot", $search) ->orLike("t1.code_ot", $search)
->orLike("t1.id", $search) ->orLike("t1.id", $search)
->orLike("t1.nombre", $search) ->orLike("t1.nombre", $search)
->orLike("t1.code", $search) ->orLike("t1.code", $search)
->orLike("t1.code_ot", $search) ->orLike("t1.code_ot", $search)
->groupEnd(); ->groupEnd();
} }

View File

@ -0,0 +1,22 @@
<?php
namespace App\Models\Configuracion;
class TipoPapelGenericoModel extends \App\Models\BaseModel
{
protected $table = "tipos_papel_generico";
/**
* Whether primary key uses auto increment.
*
* @var bool
*/
protected $useAutoIncrement = true;
protected $allowedFields = [
"clave",
];
protected $returnType = "App\Entities\Configuracion\TipoPapelGenerico";
}

View File

@ -0,0 +1,27 @@
<?php
namespace App\Services;
use CodeIgniter\Config\BaseService;
use App\Models\Configuracion\TipoPapelGenericoModel;
class PapelService extends BaseService
{
protected TipoPapelGenericoModel $tipoPapelGenericoModel;
public function __construct()
{
$this->tipoPapelGenericoModel = model(TipoPapelGenericoModel::class);
}
public function getTipoPapelGenerico()
{
$values = $this->tipoPapelGenericoModel->findAll();
$tipoPapelGenericoList = [];
foreach ($values as $value) {
$tipoPapelGenericoList[$value->id] = lang('PapelGenerico.' . $value->clave);
}
return $tipoPapelGenericoList;
}
}

View File

@ -8,6 +8,23 @@
value="<?= old('nombre', $papelGenerico->nombre) ?>"> value="<?= old('nombre', $papelGenerico->nombre) ?>">
</div><!--//.mb-3 --> </div><!--//.mb-3 -->
<div class="mb-3">
<label for="tipo_papel_generico_id" class="form-label">
<?= lang('PapelGenerico.tipo_papel_generico_id') ?>
</label>
<select id="tipo_papel_generico_id" name="tipo_papel_generico_id" class="form-control select2" data-placeholder="">
<option value="" <?= is_null($papelGenerico->tipo_papel_generico_id) ? 'selected' : '' ?>></option>
<?php if (isset($tipoPapelGenericoList) && is_array($tipoPapelGenericoList) && !empty($tipoPapelGenericoList)):
foreach ($tipoPapelGenericoList as $k => $v): ?>
<option value="<?= $k ?>" <?= $k == $papelGenerico->tipo_papel_generico_id ? 'selected' : '' ?>>
<?= esc($v) ?>
</option>
<?php endforeach;
endif; ?>
</select>
</div><!--//.mb-3 -->
<div class="mb-3"> <div class="mb-3">
<label for="code" class="form-label"> <label for="code" class="form-label">
<?= lang('PapelGenerico.code') ?> <?= lang('PapelGenerico.code') ?>
@ -28,8 +45,8 @@
<label for="activo_papel_generico" class="form-check-label"> <label for="activo_papel_generico" class="form-check-label">
<?= lang('PapelGenerico.activo') ?> <?= lang('PapelGenerico.activo') ?>
</label> </label>
<input type="checkbox" id="activo_papel_generico" name="activo" value="1" <input type="checkbox" id="activo_papel_generico" name="activo" value="1" class="form-check-input"
class="form-check-input" <?= $papelGenerico->activo == true ? 'checked' : ''; ?>> <?= $papelGenerico->activo == true ? 'checked' : ''; ?>>
</div><!--//.form-check --> </div><!--//.form-check -->
</div><!--//.mb-3 --> </div><!--//.mb-3 -->
<div class="mb-3"> <div class="mb-3">