diff --git a/ci4/app/Controllers/Importadores/ImportadorCatalogo.php b/ci4/app/Controllers/Importadores/ImportadorCatalogo.php index e8302695..a69a18cb 100644 --- a/ci4/app/Controllers/Importadores/ImportadorCatalogo.php +++ b/ci4/app/Controllers/Importadores/ImportadorCatalogo.php @@ -272,7 +272,7 @@ class ImportadorCatalogo extends BaseResourceController 'gramajeCubierta' => $libro->cubierta_gramaje, 'solapas' => $libro->cubierta_ancho_solapas, 'acabado' => $libro->cubierta_acabado_id, - 'cabezada' => 'WHI', + 'cabezada' => model('\App\Models\Configuracion\ConfigVariableModel')->getCabezadaDefault(), 'lomoRedondo' => 0 ], diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index d6a81aaa..fa92ab17 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -460,6 +460,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $this->viewData['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id; // Cosido tapa blanda JJO + $this->viewData['cabezadas'] = model('\App\Models\Configuracion\ConfigVariableModel')->getCabezadasDisponibles(); + $this->viewData = array_merge($this->viewData, $this->getStringsFromTipoImpresion($presupuestoEntity->tipo_impresion_id)); $this->viewData['formAction'] = route_to('updatePresupuestoAdmin', $id); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 30cdb4f2..53443a21 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -133,6 +133,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $this->viewData['lomo_maximo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo_fresado_cosido')->value; $this->viewData['lomo_minimo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_minimo_fresado_cosido')->value; $this->viewData['eb'] = 0; + $this->viewData['cabezadas'] = model('\App\Models\Configuracion\ConfigVariableModel')->getCabezadasDisponibles(); $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . $this->viewData['pageTitle'] . ' ' . lang('Basic.global.addNewSuffix'); @@ -178,6 +179,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $this->viewData['lomo_maximo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo_fresado_cosido')->value; $this->viewData['lomo_minimo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_minimo_fresado_cosido')->value; $this->viewData['eb'] = $presupuestoEntity->envio_base; + $this->viewData['cabezadas'] = model('\App\Models\Configuracion\ConfigVariableModel')->getCabezadasDisponibles(); // Si se ha llamado a esta funcion porque se ha duplicado el presupuesto // se actualiza la bbdd para que sólo ejecute algunas funciones una vez @@ -1103,7 +1105,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0, 'acabado' => $cubierta['acabado'] ?? 0, 'lomoRedondo' => $cubierta['lomoRedondo'] ?? 0, - 'cabezada' => $cubierta['cabezada'] ?? 'WHI', + 'cabezada' => $cubierta['cabezada'] ?? model('\App\Models\Configuracion\ConfigVariableModel')->getCabezadaDefault(), ]; // Sobrecubierta diff --git a/ci4/app/Models/Configuracion/ConfigVariableModel.php b/ci4/app/Models/Configuracion/ConfigVariableModel.php index 322d3e42..7403c40a 100755 --- a/ci4/app/Models/Configuracion/ConfigVariableModel.php +++ b/ci4/app/Models/Configuracion/ConfigVariableModel.php @@ -56,4 +56,40 @@ class ConfigVariableModel extends Model return $builder->get()->getFirstRow(); } + + /** + * Devuelve solo el valor de la variable por nombre + */ + public function getValue(string $name): ?string + { + $row = $this->getVariable($name); + return $row ? $row->value : null; + } + + /** + * Devuelve el valor decodificado (JSON) si aplica + */ + public function getDecodedValue(string $name): ?array + { + $value = $this->getValue($name); + $decoded = json_decode($value, true); + + return (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) ? $decoded : null; + } + + /** + * Devuelve las opciones disponibles de cabezadas (como array clave => langKey) + */ + public function getCabezadasDisponibles(): array + { + return $this->getDecodedValue('cabezadas_disponibles') ?? []; + } + + /** + * Devuelve la cabezada por defecto, o 'WHI' si no está definida + */ + public function getCabezadaDefault(): string + { + return $this->getValue('cabezada_default') ?? 'WHI'; + } } diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/variables/viewVariablesList.php b/ci4/app/Views/themes/vuexy/form/configuracion/variables/viewVariablesList.php index d212e40d..1e008d5c 100755 --- a/ci4/app/Views/themes/vuexy/form/configuracion/variables/viewVariablesList.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/variables/viewVariablesList.php @@ -15,7 +15,7 @@ - +
@@ -55,11 +55,13 @@
- +
+ +
- +
@@ -75,4 +77,13 @@ endSection() ?> section("additionalExternalJs") ?> +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php index 85137ca7..891d92f9 100755 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosPresupuestoClienteItems.php @@ -222,46 +222,39 @@ -
-
+
+
-
- - -
-
- - -
+
+ + +
+
+ + +

@@ -269,83 +262,83 @@
-
-
-

- -

+
+
+

+ +

+
+
+ +
+
+ +
+
+ +
+
+
+
-
- -
-
- -
-
- -
-
-
-
-
-
-
-

- -

-
-
- -
-
- -
-
- -
+
+
+

+ +

+
+
+ +
+
+ +
+
+ +
-
-
+
+
+
-
@@ -733,102 +726,102 @@ -
-
-

- -

+
+
+

+ +

-
-
+
+
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - : - - 0.00
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + : + + 0.00
-
- +
+ + +
- -
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php index 4f62b196..902209d8 100755 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioCubierta.php @@ -136,10 +136,11 @@
diff --git a/httpdocs/assets/js/safekat/components/configVariableDatatable.js b/httpdocs/assets/js/safekat/components/configVariableDatatable.js index c1534967..0b7b4ccb 100644 --- a/httpdocs/assets/js/safekat/components/configVariableDatatable.js +++ b/httpdocs/assets/js/safekat/components/configVariableDatatable.js @@ -1,10 +1,8 @@ import Modal from "./modal.js"; import Ajax from "./ajax.js"; -class ConfigVariableDatatable -{ - constructor(domItem) - { +class ConfigVariableDatatable { + constructor(domItem) { this.domItem = domItem this.datatableItem = this.domItem this.modalItem = $("#modalConfigVariableForm") @@ -14,76 +12,69 @@ class ConfigVariableDatatable this.formEdit = this.modalItem.find("#formEditConfigVariable") } - init(){ + init() { this.datatable = this.datatableItem.DataTable({ processing: true, dom: 'Blrtip', serverSide: true, - lengthMenu: [ 25, 50, 100, 200 ], + lengthMenu: [25, 50, 100, 200], pageLength: 50, language: { url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" }, - columns : [ - {data : 'name',searchable:true,sortable:false}, - {data : 'value',searchable:true,sortable:false}, - {data : 'description',searchable:true,sortable:false}, - {data : 'action',sortable:false,searchable:false, - render : (d,t) =>{ + columns: [ + { data: 'name', searchable: true, sortable: false }, + { data: 'value', searchable: true, sortable: false }, + { data: 'description', searchable: true, sortable: false }, + { + data: 'action', sortable: false, searchable: false, + render: (d, t) => { return `
` - } + } }, ], ajax: '/configuracion/variables/datatable' }); } - events() - { - this.modalItem.on("click",".btn-update-variable",this.handleUpdateVariable.bind(this)) - this.datatableItem.on("click",".edit-variable",(e)=> { + events() { + this.modalItem.on("click", ".btn-update-variable", this.handleUpdateVariable.bind(this)) + this.datatableItem.on("click", ".edit-variable", (e) => { e.preventDefault() this.variableId = $(e.currentTarget).data("id") this.handleGetVariable() }) } - handleGetVariable() - { + handleGetVariable() { const url = `/configuracion/variables/find/${this.variableId}` let ajax = new Ajax( - url,null,null, + url, null, null, this.handleGetVariableSuccess.bind(this), this.handleGetVariableError.bind(this) ) ajax.get() } - handleGetVariableSuccess(data){ + handleGetVariableSuccess(data) { this.formEdit[0].reset() this.modalEdit.toggle() - this.nameInput = this.formEdit - .find("#name") + this.nameInput = this.formEdit.find("#name") this.nameInput.val(data.name) - this.valueInput = this.formEdit - .find("#value") - this.valueInput.val(data.value) - this.descriptionInput = this.formEdit - .find("#description") + this.renderValueField(data.name, data.value) + this.descriptionInput = this.formEdit.find("#description") this.descriptionInput.val(data.description) - } - handleGetVariableError(err){} - handleUpdateVariable() - { + handleGetVariableError(err) { } + handleUpdateVariable() { const url = `/configuracion/variables/edit/${this.variableId}` const data = { - value : this.valueInput.val(), - description : this.descriptionInput.val(), + value: this.valueInput.val(), + description: this.descriptionInput.val(), } let ajax = new Ajax( url, @@ -94,26 +85,49 @@ class ConfigVariableDatatable ) ajax.post() } - handleUpdateVariableSucess(data){ + handleUpdateVariableSucess(data) { this.modalEdit.toggle() this.datatable.ajax.reload() } - handleUpdateVariableError(err){} + handleUpdateVariableError(err) { } - handleDeleteVariable() - { + handleDeleteVariable() { const url = `/configuracion/variables/delete/${this.variableId}` let ajax = new Ajax( - url,null,null, + url, null, null, this.handleDeleteVariableSucess.bind(this), this.handleDeleteVariableError.bind(this) ) ajax.post() } - handleDeleteVariableSucess(data){ + handleDeleteVariableSucess(data) { this.datatable.reload() } - handleDeleteVariableError(err){} + handleDeleteVariableError(err) { } + + renderValueField(name, currentValue) { + const wrapper = this.formEdit.find("#value-wrapper"); + let html = ''; + + if (name === 'cabezadas_disponibles') { + html = ``; + } else if (name === 'cabezada_default') { + const options = window.CABEZADAS_OPCIONES || {}; + html = ``; + } else { + html = ``; + } + + wrapper.html(html); + this.valueInput = this.formEdit.find("#value"); // Actualiza referencia + } + + } export default ConfigVariableDatatable; \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/configuracion/variables.js b/httpdocs/assets/js/safekat/pages/configuracion/variables.js index 177828f4..615c59d1 100644 --- a/httpdocs/assets/js/safekat/pages/configuracion/variables.js +++ b/httpdocs/assets/js/safekat/pages/configuracion/variables.js @@ -2,4 +2,4 @@ import ConfigVariableDatatable from "../../components/configVariableDatatable.js const item = new ConfigVariableDatatable($("#tableConfigVariables")) item.init() -item.events() \ No newline at end of file +item.events()