diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php
index 7e141456..372d2da8 100755
--- a/ci4/app/Controllers/Test.php
+++ b/ci4/app/Controllers/Test.php
@@ -11,7 +11,8 @@ use App\Models\Configuracion\MaquinaModel;
use App\Models\Presupuestos\ImportadorModel;
use App\Models\Presupuestos\PresupuestoModel;
use App\Models\Usuarios\GroupModel;
-use App\Models\Usuarios\PermisosModel;
+use App\Models\Catalogo\CatalogoLibroModel;
+use App\Models\Catalogo\IdentificadorIskModel;
use App\Services\PresupuestoService;
use CodeIgniter\Shield\Entities\User;
@@ -22,7 +23,8 @@ class Test extends BaseController
{
}
- public function echo(){
+ public function echo()
+ {
echo "echo";
@@ -30,25 +32,39 @@ class Test extends BaseController
public function index()
{
- $emailService = service('emailService');
- return $emailService->send("Hola mundo", "Hola mundo", "imnavajas@coit.es");
-
+ $modelCL = new CatalogoLibroModel();
+ $modelISK = new IdentificadorIskModel();
+
+ // Obtener todos los registros sin isk
+ $registros = $modelCL->where('isk', null)->findAll();
+
+ $i = 0;
+ foreach ($registros as $registro) {
+ $isk = $modelISK->newIsk();
+
+ $modelCL->update($registro->id, ['isk' => $isk]);
+
+ echo "[" . $i++ . "]Asignado ISK {$isk} a ID {$registro->id}
";
+ }
+
+
}
-
- private function clonar_tarifa_encuadernacion($teOrigen, $teDestino){
+
+ private function clonar_tarifa_encuadernacion($teOrigen, $teDestino)
+ {
$tet_model = model('App\Models\Tarifas\TarifaEncuadernacionTiradaModel');
$tel_model = model('App\Models\Tarifas\TarifaEncuadernacionLineaModel');
- $tarifasTiradas = $tet_model->asObject()->where('tarifa_encuadernacion_id',$teOrigen)->findAll();
+ $tarifasTiradas = $tet_model->asObject()->where('tarifa_encuadernacion_id', $teOrigen)->findAll();
- foreach ($tarifasTiradas as $tarifasTirada){
+ foreach ($tarifasTiradas as $tarifasTirada) {
echo "--->" . $tarifasTirada->id . "
";
- $tarifasLineas = $tel_model->asObject()->where('tirada_encuadernacion_id',$tarifasTirada->id)->findAll();
+ $tarifasLineas = $tel_model->asObject()->where('tirada_encuadernacion_id', $tarifasTirada->id)->findAll();
// Prepare the data
unset($tarifasTirada->id);
@@ -61,7 +77,7 @@ class Test extends BaseController
$tet_model->insert($tarifasTirada);
$inserted_id = $tet_model->insertID();
- foreach ($tarifasLineas as $tarifasLinea){
+ foreach ($tarifasLineas as $tarifasLinea) {
echo "------>" . $tarifasLinea->id . "
";
@@ -82,10 +98,20 @@ class Test extends BaseController
- private function test_get_tirada_alt($tirada, $merma, $tipo_impresion_id,
- $json_data, $cliente_id, $ancho, $alto,
- $solapas_cubierta, $solapas_ancho_cubierta, $solapas_sobrecubierta, $solapas_ancho_sobrecubierta, $lomo)
- {
+ private function test_get_tirada_alt(
+ $tirada,
+ $merma,
+ $tipo_impresion_id,
+ $json_data,
+ $cliente_id,
+ $ancho,
+ $alto,
+ $solapas_cubierta,
+ $solapas_ancho_cubierta,
+ $solapas_sobrecubierta,
+ $solapas_ancho_sobrecubierta,
+ $lomo
+ ) {
$values = [];
if ($json_data) {
@@ -96,7 +122,7 @@ class Test extends BaseController
echo '------------------------------------
';
var_dump($linea);
// Se obtienen los valores de cada linea para el calculo del precio
- $datosPedido = (object)array(
+ $datosPedido = (object) array(
'paginas' => intval($linea['paginas']) ?? 0,
'tirada' => intval($tirada) ?? 0,
'merma' => intval($merma) ?? 0,
@@ -174,7 +200,7 @@ class Test extends BaseController
$datosTipolog = $linea['gotaNegro'] ?? null;
if (!is_null($datosTipolog)) {
$datosTipolog = [];
- $data = (object)array(
+ $data = (object) array(
'negro' => intval($linea['cobNegro']) ?? 0,
'cyan' => intval($linea['cobCyan']) ?? 0,
'magenta' => intval($linea['cobMagenta']) ?? 0,
@@ -193,7 +219,7 @@ class Test extends BaseController
$data['papel'] = $papel;
$data['opciones_papel'] = $opciones_papel;
$data['maquina'] = $maquina;
- $data['papel_generico'] = (array)$papel_generico;
+ $data['papel_generico'] = (array) $papel_generico;
$data['isColor'] = $isColor;
$data['a_favor_fibra'] = $linea['aFavorFibra'] ?? null;
$data['datosTipolog'] = $datosTipolog;
@@ -222,7 +248,7 @@ class Test extends BaseController
// Previo a ejecutar, vaciar la tabla clientes_precios (ojo si hay customizaciones)
- $db = \Config\Database::connect();
+ $db = \Config\Database::connect();
$builder = $db->table('cliente_precios');
$plantillaDefectoId = 5;
@@ -394,14 +420,14 @@ class Test extends BaseController
{
$paginas = 240;
- $papel_impresion = (object)array(
+ $papel_impresion = (object) array(
'id' => 198,
'gramaje' => 90,
'precio_tonelada' => 1600
);
- $maquina = (object)array(
+ $maquina = (object) array(
//'id' => 48,
'alto' => 800,
'ancho' => 520,
@@ -430,7 +456,7 @@ class Test extends BaseController
{
$uso = 'interior';
$tipo = 'negro';
- $datosPedido = (object)array(
+ $datosPedido = (object) array(
'paginas' => 200,
'tirada' => 500,
'merma' => 10,
@@ -482,7 +508,7 @@ class Test extends BaseController
echo '
';
$uso = 'cubierta';
$tipo = 'color';
- $datosPedido = (object)array(
+ $datosPedido = (object) array(
'paginas' => 200,
'tirada' => 500,
'merma' => 10,
@@ -542,7 +568,7 @@ class Test extends BaseController
- $datosPedido = (object)array(
+ $datosPedido = (object) array(
'paginas' => 240,
'tirada' => 100,
'merma' => 10,
@@ -552,10 +578,10 @@ class Test extends BaseController
'isCosido' => true,
);
- $parametrosRotativa = (object)array(
+ $parametrosRotativa = (object) array(
'a_favor_fibra' => 0,
- 'bnPages' => 240,
- 'colorPages' => 0,
+ 'bnPages' => 240,
+ 'colorPages' => 0,
'rotativa_gota_negro' => 0,
'rotativa_gota_color' => 0,
);
@@ -587,12 +613,12 @@ class Test extends BaseController
var_dump($datosTipologias);
echo '';
- $parametrosRotativa->rotativa_gota_negro = $datosTipologias[0]->gota_negro;
- $parametrosRotativa->rotativa_gota_color = $datosTipologias[0]->gota_color;
- $parametrosRotativa->rotativa_negro = $datosTipologias[0]->negro;
- $parametrosRotativa->rotativa_cyan = $datosTipologias[0]->cyan;
- $parametrosRotativa->rotativa_magenta = $datosTipologias[0]->magenta;
- $parametrosRotativa->rotativa_amarillo = $datosTipologias[0]->amarillo;
+ $parametrosRotativa->rotativa_gota_negro = $datosTipologias[0]->gota_negro;
+ $parametrosRotativa->rotativa_gota_color = $datosTipologias[0]->gota_color;
+ $parametrosRotativa->rotativa_negro = $datosTipologias[0]->negro;
+ $parametrosRotativa->rotativa_cyan = $datosTipologias[0]->cyan;
+ $parametrosRotativa->rotativa_magenta = $datosTipologias[0]->magenta;
+ $parametrosRotativa->rotativa_amarillo = $datosTipologias[0]->amarillo;
echo '-------------------------------';
$maquinas = $maquina_model->getMaquinaImpresionForPresupuesto(
@@ -624,7 +650,7 @@ class Test extends BaseController
$uso = 'cubierta';
$tipo = 'color';
- $datosPedido = (object)array(
+ $datosPedido = (object) array(
'paginas' => 240,
'tirada' => 100,
'merma' => 10,
@@ -714,7 +740,7 @@ class Test extends BaseController
$uso = 'sobrecubierta';
$tipo = 'colorhq';
- $datosPedido = (object)array(
+ $datosPedido = (object) array(
'paginas' => 240,
'tirada' => 100,
'merma' => 10,
diff --git a/ci4/app/Entities/Catalogo/CatalogoLibroEntity.php b/ci4/app/Entities/Catalogo/CatalogoLibroEntity.php
index 0f363e67..25a166cb 100644
--- a/ci4/app/Entities/Catalogo/CatalogoLibroEntity.php
+++ b/ci4/app/Entities/Catalogo/CatalogoLibroEntity.php
@@ -4,7 +4,7 @@ namespace App\Entities\Catalogo;
use CodeIgniter\Entity\Entity;
use App\Models\Configuracion\PapelGenericoModel;
-
+use App\Models\Tarifas\Acabados\ServicioAcabadoModel;
class CatalogoLibroEntity extends Entity
{
protected $attributes = [
@@ -32,6 +32,7 @@ class CatalogoLibroEntity extends Entity
'num_ilustr_color' => 0,
'num_ilustr_bn' => 0,
'coleccion' => '',
+ 'isk' => null,
'isbn' => null,
'ean' => null,
'editorial' => '',
@@ -143,4 +144,24 @@ class CatalogoLibroEntity extends Entity
$papel = model(PapelGenericoModel::class)->asObject()->find($this->sobrecubierta_papel_id);
return $papel?->nombre ?? null;
}
+
+ public function getCubiertaAcabadoName()
+ {
+ if (!$this->cubierta_acabado_id) {
+ return null;
+ }
+
+ $servicioAcabado = model(ServicioAcabadoModel::class)->asObject()->find($this->cubierta_acabado_id);
+ return $servicioAcabado?->nombre ?? null;
+ }
+
+ public function getSobrecubiertaAcabadoName()
+ {
+ if (!$this->sobrecubierta_acabado_id) {
+ return null;
+ }
+
+ $servicioAcabado = model(ServicioAcabadoModel::class)->asObject()->find($this->sobrecubierta_acabado_id);
+ return $servicioAcabado?->nombre ?? null;
+ }
}
diff --git a/ci4/app/Entities/Catalogo/IdentificadorIsk.php b/ci4/app/Entities/Catalogo/IdentificadorIsk.php
new file mode 100644
index 00000000..525c3922
--- /dev/null
+++ b/ci4/app/Entities/Catalogo/IdentificadorIsk.php
@@ -0,0 +1,10 @@
+generarIskUnico($contexto);
+ $this->insert(['isk' => $isk]);
+
+ return $isk;
+ }
+
+ /**
+ * Genera un ISK único validado contra la base de datos.
+ */
+ private function generarIskUnico(string $contexto): string
+ {
+ do {
+ $isk = $this->generarIsk($contexto);
+ } while ($this->where('isk', $isk)->countAllResults() > 0);
+
+ return $isk;
+ }
+
+ /**
+ * Formato legible de ISK, ejemplo: isk_libro_20250419_ab12c
+ */
+ private function generarIsk(string $contexto): string
+ {
+ $fecha = date('Ymd');
+ $random = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz0123456789'), 0, 5);
+ return "isk_{$contexto}_{$fecha}_{$random}";
+ }
+
+ /**
+ * Hook para generar el ISK automáticamente al insertar.
+ */
+ protected function agregarIsk(array $data): array
+ {
+ if (!isset($data['data']['isk']) || empty($data['data']['isk'])) {
+ $data['data']['isk'] = $this->generarIskUnico('registro');
+ }
+
+ return $data;
+ }
+
+ // Bloqueo total de eliminaciones
+ public function delete($id = null, bool $purge = false)
+ {
+ throw new RuntimeException('La eliminación de registros está deshabilitada.');
+ }
+
+ public function deleteWhere($where)
+ {
+ throw new RuntimeException('La eliminación de registros está deshabilitada.');
+ }
+
+ public function deleteBatch($where)
+ {
+ throw new RuntimeException('La eliminación de registros está deshabilitada.');
+ }
+}
diff --git a/ci4/app/Views/themes/vuexy/form/catalogo/_configuracionLibroFormItems.php b/ci4/app/Views/themes/vuexy/form/catalogo/_configuracionLibroFormItems.php
index 06303dad..1b150622 100644
--- a/ci4/app/Views/themes/vuexy/form/catalogo/_configuracionLibroFormItems.php
+++ b/ci4/app/Views/themes/vuexy/form/catalogo/_configuracionLibroFormItems.php
@@ -242,15 +242,11 @@
| Nº Páginas | -Papel | -Gramaje | -Solapa | -Plastificado | -
|---|---|---|---|---|
| - - | -- - | -- - | -— | -— | -
| - - | -- - | -- - | -— | -— | -
| - - | -- - | -- - | -- - | -- - | -
| - - | -- - | -- - | -- - | -- - | -