diff --git a/ci4/app/Config/RBAC/permissionMatrix.php b/ci4/app/Config/RBAC/permissionMatrix.php
index 8b39825f..34d9b554 100644
--- a/ci4/app/Config/RBAC/permissionMatrix.php
+++ b/ci4/app/Config/RBAC/permissionMatrix.php
@@ -9,10 +9,18 @@ const SK_PERMISSION_MATRIX = [
"plantilla-tarifa.edit",
"plantilla-tarifa.delete",
"plantilla-tarifa.menu",
+ "perfil.create",
+ "perfil.edit",
+ "perfil.delete",
+ "perfil.menu",
"presupuesto.create",
"presupuesto.edit",
"presupuesto.delete",
"presupuesto.menu",
+ "presupuesto-cliente.create",
+ "presupuesto-cliente.edit",
+ "presupuesto-cliente.delete",
+ "presupuesto-cliente.menu",
"tarifa-preimpresion.create",
"tarifa-preimpresion.edit",
"tarifa-preimpresion.delete",
@@ -73,22 +81,28 @@ const SK_PERMISSION_MATRIX = [
"roles-permisos.edit",
"roles-permisos.delete",
"roles-permisos.menu",
+ "ubicaciones.create",
+ "ubicaciones.edit",
+ "ubicaciones.delete",
+ "ubicaciones.menu",
+ "series-facturas.create",
+ "series-facturas.edit",
+ "series-facturas.delete",
+ "series-facturas.menu",
],
"cliente-admin" => [
+ "perfil.edit",
+ "perfil.menu",
"presupuesto-cliente.create",
"presupuesto-cliente.edit",
"presupuesto-cliente.delete",
"presupuesto-cliente.menu",
- "usuarios.create",
- "usuarios.edit",
- "usuarios.delete",
- "usuarios.menu",
],
"cliente-editor" => [
- "presupuesto.create",
- "presupuesto.edit",
- "presupuesto.delete",
- "presupuesto.menu",
+ "presupuesto-cliente.create",
+ "presupuesto-cliente.edit",
+ "presupuesto-cliente.delete",
+ "presupuesto-cliente.menu",
],
"comercial" => [
"token.token",
diff --git a/ci4/app/Config/RBAC/permissions.php b/ci4/app/Config/RBAC/permissions.php
index 8f81b5e5..eb5f7f39 100644
--- a/ci4/app/Config/RBAC/permissions.php
+++ b/ci4/app/Config/RBAC/permissions.php
@@ -9,6 +9,10 @@ const SK_PERMISSIONS = [
'plantilla-tarifa.edit' => 'Can edit',
'plantilla-tarifa.delete' => 'Can delete',
'plantilla-tarifa.menu' => 'Menu shall be visualize',
+ 'perfil.create' => 'Can create',
+ 'perfil.edit' => 'Can edit',
+ 'perfil.delete' => 'Can delete',
+ 'perfil.menu' => 'Menu shall be visualize',
'presupuesto.create' => 'Can create',
'presupuesto.edit' => 'Can edit',
'presupuesto.delete' => 'Can delete',
@@ -77,4 +81,12 @@ const SK_PERMISSIONS = [
'roles-permisos.edit' => 'Can edit',
'roles-permisos.delete' => 'Can delete',
'roles-permisos.menu' => 'Menu shall be visualize',
+ 'ubicaciones.create' => 'Can create',
+ 'ubicaciones.edit' => 'Can edit',
+ 'ubicaciones.delete' => 'Can delete',
+ 'ubicaciones.menu' => 'Menu shall be visualize',
+ 'series-facturas.create' => 'Can create',
+ 'series-facturas.edit' => 'Can edit',
+ 'series-facturas.delete' => 'Can delete',
+ 'series-facturas.menu' => 'Menu shall be visualize',
];
diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
index 6218c09d..2a5967fc 100755
--- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
+++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
@@ -72,9 +72,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'pageTitle' => lang('Presupuestos.presupuestos'),
];
-
if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) {
- $clienteId = 999; // Fijo hasta desarollar clientes usuarios
+ // Se obtiene el cliente ID a partir del usuario de la sesion
+ $model_user = model('App\Models\Usuarios\UserModel');
+ $user = $model_user->find(auth()->user()->id);
+ $clienteId = $user->cliente_id;
} else {
$clienteId = 0;
}
@@ -87,8 +89,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
public function add()
{
// Se obtiene el cliente ID a partir del usuario de la sesion
- $clienteId = 999; // Fijo hasta desarollar clientes usuarios
-
+ $model_user = model('App\Models\Usuarios\UserModel');
+ $user = $model_user->find(auth()->user()->id);
+ $clienteId = $user->cliente_id;
+
$presupuestoEntity = isset($sanitizedData) ? new PresupuestoEntity($sanitizedData) : new PresupuestoEntity();
$presupuestoEntity->clienteId = $clienteId;
@@ -111,10 +115,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$datosPresupuesto->tipo_libro = "";
$datosPresupuesto->color_impresion = 'negro';
- $datosPresupuesto->calidad_impresion = 'estandar';
$datosPresupuesto->tapa = 'blanda';
- $datosPresupuesto->clienteList = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null);
+ $datosPresupuesto->clienteList = $this->getClienteListItems($clienteId ?? null);
$presupuestoEntity->estado_id = 1;
$this->viewData['formAction'] = 'add';
@@ -123,6 +126,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$this->viewData['presupuestoEntity'] = $presupuestoEntity;
$this->viewData['datosPresupuesto'] = $datosPresupuesto;
+ $this->viewData['clienteId'] = $clienteId;
$this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . $this->viewData['pageTitle'] . ' ' . lang('Basic.global.addNewSuffix');
@@ -132,7 +136,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
public function edit($requestedId = null)
{
-
if ($requestedId == null) :
return $this->redirect2listView();
endif;
@@ -144,6 +147,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
return $this->redirect2listView('sweet-error', $message);
endif;
+ // Se obtiene el cliente ID a partir del usuario de la sesion
+ $model_user = model('App\Models\Usuarios\UserModel');
+ $user = $model_user->find(auth()->user()->id);
+ $clienteId = $user->cliente_id;
+
$datosPresupuesto = (object)array();
$datosPresupuesto->POD = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD();
$datosPresupuesto->paisList = model('App\Models\Configuracion\PaisModel')->getAllForMenu('id, nombre', 'nombre', true);
@@ -162,7 +170,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$datosPresupuesto->acabadosSobrecubierta = $this->getAcabadosSobrecubierta();
$datosPresupuesto->tipo_libro = $this->getTipoLibro($presupuestoEntity->tipo_impresion_id ?? null);
- [$datosPresupuesto->color_impresion, $datosPresupuesto->calidad_impresion] =
+ $datosPresupuesto->color_impresion =
$this->getTipoInterior($presupuestoEntity->id ?? null);
$datosPresupuesto->tapa = $this->getTapa($presupuestoEntity->tipo_impresion_id ?? null);
@@ -184,6 +192,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$this->viewData['presupuestoEntity'] = $presupuestoEntity;
$this->viewData['datosPresupuesto'] = $datosPresupuesto;
+ $this->viewData['clienteId'] = $clienteId;
// 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
@@ -280,7 +289,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($this->request->isAJAX()) {
$reqData = $this->request->getPost();
- $clienteId = $reqData['clienteId'] ?? 0;
+ $clienteId = $reqData['cliente'] ?? 0;
if (!isset($reqData['draw']) || !isset($reqData['columns'])) {
$errstr = 'No data available in response to this specific request.';
@@ -1743,7 +1752,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$color = 'color';
}
}
- return [$color, $calidad];
+
+ $tipo = "negro";
+
+ if($calidad == 'premium' && $color=='negro')
+ $tipo = "negroHq";
+ else if ($calidad == 'estandar' && $color=='color')
+ $tipo = "color";
+ else if ($calidad == 'premium' && $color=='color')
+ $tipo = "colorHq";
+
+ return $tipo;
}
protected function getTapa($tipo_impresion_id)
diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php
index 9e8b5c4e..5fc672eb 100755
--- a/ci4/app/Language/es/Presupuestos.php
+++ b/ci4/app/Language/es/Presupuestos.php
@@ -59,6 +59,7 @@ return [
'numeroEdicion' => 'Número de edición',
'isbn' => 'ISBN',
'referenciaCliente' => 'Referencia del cliente',
+ 'referenciaCliente2' => 'Referencia',
'papelFormatoId' => "Tamaño",
'papelFormatoPersonalizado' => 'Tamaño personalizado',
'papelFormatoAncho' => 'Ancho',
diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php
index 7d690433..b9e48761 100755
--- a/ci4/app/Models/Presupuestos/PresupuestoModel.php
+++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php
@@ -34,7 +34,6 @@ class PresupuestoModel extends \App\Models\BaseModel
0 => "t1.id",
1 => "t1.updated_at",
2 => "t7.codigo",
- 3 => "t2.nombre",
4 => "t1.titulo",
5 => "t1.paginas",
6 => "t1.tirada",
diff --git a/ci4/app/Models/Usuarios/UserModel.php b/ci4/app/Models/Usuarios/UserModel.php
index 0de24e85..56b34f77 100755
--- a/ci4/app/Models/Usuarios/UserModel.php
+++ b/ci4/app/Models/Usuarios/UserModel.php
@@ -3,7 +3,7 @@ namespace App\Models\Usuarios;
class UserModel extends \App\Models\BaseModel
{
- protected $table = "auth_user";
+ protected $table = "users";
/**
* Whether primary key uses auto increment.
@@ -16,29 +16,21 @@ class UserModel extends \App\Models\BaseModel
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
- protected $primaryKey = "id_user";
+ protected $primaryKey = "id";
protected $allowedFields = [
- "group",
+ "username",
"first_name",
"last_name",
- "date_birth",
- "address",
- "city",
- "state",
- "country",
- "zip_code",
- "mobile",
- "email",
- "password",
- "last_ip",
- "last_access",
- "picture",
- "language",
- "blocked",
- "email_confirmed",
+ "client_id",
"status",
- "token",
+ "status_message",
+ "active",
+ "country",
+ "last_active",
+ "created_at",
+ "updated_at",
+ "deleted_at",
];
protected $returnType = "App\Entities\Usuarios\UserEntity";
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/_disenioLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/_disenioLibroItems.php
index 23afd514..66de6299 100644
--- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/_disenioLibroItems.php
+++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/_disenioLibroItems.php
@@ -16,7 +16,7 @@
-
+
>
@@ -24,7 +24,7 @@
clienteList) && is_array($datosPresupuesto->clienteList) && !empty($datosPresupuesto->clienteList)) :
foreach ($datosPresupuesto->clienteList as $k => $v) : ?>
-
@@ -82,33 +86,35 @@
No puede mezclar tiradas mayores de 30 unidades con tiradas menores de 30 unidades
-
-
-
-
+
@@ -177,33 +183,64 @@
Color del interior
-
-
-
-
Calidad
-
-
-
-
>
-
-
-
-
-
calidad_impresion == 'premium' ? ' checked"': '"'); ?> >
-
-
-
-
-
-
Papel
@@ -262,7 +269,7 @@
Opciones extra
-
+
>
excluir_rotativa == true ? 'checked' : ''; ?>>
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/disenioLibro.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/disenioLibro.js
index 7556eeec..6fff53fa 100644
--- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/disenioLibro.js
+++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/disenioLibro.js
@@ -71,7 +71,7 @@ function updateColorCheck(el) {
if (el.checked) {
// If custom option element is radio, remove checked from the siblings (closest `.row`)
if (el.type === 'radio') {
- const customRadioOptionList = [].slice.call(el.closest('.row').querySelectorAll('.custom-option-color'))
+ const customRadioOptionList = [].slice.call(el.closest('.row-color').querySelectorAll('.custom-option-color'))
customRadioOptionList.map(function (customRadioOptionEL) {
customRadioOptionEL.closest('.custom-option-color').classList.remove('checked')
})
@@ -79,11 +79,27 @@ function updateColorCheck(el) {
el.closest('.custom-option-color').classList.add('checked')
if (el.closest('.custom-option-color').id == 'colorNegroDiv') {
$('#colorNegro').prop('checked', true);
+ $('#colorNegroHq').prop('checked', false);
$('#colorColor').prop('checked', false);
+ $('#colorColorHq').prop('checked', false);
+ }
+ else if (el.closest('.custom-option-color').id == 'colorNegroHqDiv') {
+ $('#colorNegro').prop('checked', false);
+ $('#colorNegroHq').prop('checked', true);
+ $('#colorColor').prop('checked', false);
+ $('#colorColorHq').prop('checked', false);
+ }
+ else if (el.closest('.custom-option-color').id == 'colorColorDiv') {
+ $('#colorNegro').prop('checked', false);
+ $('#colorNegroHq').prop('checked', false);
+ $('#colorColor').prop('checked', true);
+ $('#colorColorHq').prop('checked', false);
}
else {
$('#colorNegro').prop('checked', false);
- $('#colorColor').prop('checked', true);
+ $('#colorNegroHq').prop('checked', false);
+ $('#colorColor').prop('checked', false);
+ $('#colorColorHq').prop('checked', true);
}
} else {
@@ -92,44 +108,6 @@ function updateColorCheck(el) {
}
-function initCalidadCheck() {
- const _this = this
-
- const calidadOptionList = [].slice.call(document.querySelectorAll('.custom-option-calidad .form-check-input'))
- calidadOptionList.map(function (customOptionEL) {
- // Update custom options check on page load
- _this.updateCalidadCheck(customOptionEL)
-
- // Update custom options check on click
- customOptionEL.addEventListener('click', e => {
- _this.updateCalidadCheck(customOptionEL)
- })
- })
-}
-
-function updateCalidadCheck(el) {
- if (el.checked) {
- // If custom option element is radio, remove checked from the siblings (closest `.row`)
- if (el.type === 'radio') {
- const customRadioOptionList = [].slice.call(el.closest('.row').querySelectorAll('.custom-option-calidad'))
- customRadioOptionList.map(function (customRadioOptionEL) {
- customRadioOptionEL.closest('.custom-option-calidad').classList.remove('checked')
- })
- }
- el.closest('.custom-option-calidad').classList.add('checked')
- if (el.closest('.custom-option-calidad').id == 'calidadEstandarDiv') {
- $('#calidadEstandar').prop('checked', true);
- $('#calidadPremium').prop('checked', false);
- }
- else {
- $('#calidadEstandar').prop('checked', false);
- $('#calidadPremium').prop('checked', true);
- }
- } else {
- el.closest('.custom-option-calidad').classList.remove('checked')
- }
-}
-
$('#enableSobrecubierta').on('change', function () {
if ($(this).is(":checked")) {
$('.enable-sobrecubierta').show();
@@ -147,7 +125,6 @@ $('#enableSobrecubierta').on('change', function () {
function initDisenioLibro() {
initTapaCheck();
initColorCheck();
- initCalidadCheck();
$('.elementos-libro').trigger('change');
$('.change-tipo-impresion').trigger('change');
@@ -180,8 +157,12 @@ function initDisenioLibro() {
$('.change-tipo-impresion').on('change', function () {
- isColor = $('#colorNegroDiv').hasClass('checked') ? false : true;
- isHq = $('#calidadEstandarDiv').hasClass('checked') ? false : true;
+ let isColor = false;
+ if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
+ isColor = true;
+ let isHq = false;
+ if($('#colorNegroDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
+ isHq = true;
//si es color hay que mostrar el numero de paginas a color
if (isColor) {
@@ -238,8 +219,13 @@ $('#tirada').on('change', function () {
$('#papelInterior').on('change', function () {
- isColor = $('#colorNegroDiv').hasClass('checked') ? false : true;
- isHq = $('#calidadEstandarDiv').hasClass('checked') ? false : true;
+
+ let isColor = false;
+ if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
+ isColor = true;
+ let isHq = false;
+ if($('#colorNegroDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
+ isHq = true;
if ($('#papelInterior option:selected').val() != undefined) {
var uso = 'bn';
@@ -293,8 +279,8 @@ $('#papelInterior').on('change', function () {
$('#papelCubierta').on('change', function () {
- isColor = true;
- isHq = true;
+ let isColor = true;
+ let isHq = true;
if ($('#papelCubierta option:selected').val() != undefined) {
var uso = 'cubierta';
@@ -331,8 +317,8 @@ $('#papelCubierta').on('change', function () {
$('#papelSobrecubierta').on('change', function () {
- isColor = true;
- isHq = true;
+ let isColor = true;
+ let isHq = true;
if ($('#papelSobrecubierta option:selected').val() != undefined) {
var uso = 'sobrecubierta';
@@ -616,6 +602,13 @@ $('#clienteId').on('select2:change', function () {
async function calcularPresupuesto() {
+ let isColor = false;
+ if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
+ isColor = true;
+ let isHq = false;
+ if($('#colorNegroDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
+ isHq = true;
+
if(!comprobarTiradasPOD()){
$('#errorTiradas').show();
return;
@@ -639,8 +632,8 @@ async function calcularPresupuesto() {
paginasColor: $('#paginasColor').val(),
tipo: $('.custom-option-tipo.checked').attr('id').replace('Div', ''),
tapa: $('#tapaDura').is(':checked') ? 'dura' : 'blanda',
- isColor: $('#colorNegroDiv').hasClass('checked') ? 0 : 1,
- isHq: $('#calidadEstandarDiv').hasClass('checked') ? 0 : 1,
+ isColor: isColor ? 1 : 0,
+ isHq: isHq ? 1 : 0,
papelInterior: $('#papelInterior option:selected').val(),
papelInteriorNombre: $('#papelInterior option:selected').text().trim(),
gramajeInterior: $('#gramajeInterior option:selected').text(),
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/resumen.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/resumen.js
index 7d493fa9..6e66217e 100644
--- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/resumen.js
+++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/resumen.js
@@ -19,9 +19,11 @@ function generarResumen(){
$('#resumenFerro').text('Ferro: ' + (($('#ferro').is(':checked'))?'Sí':'No'));
$('#tipoImpresion').text('Impresión: ' +
- ($('#colorNegroDiv').hasClass('checked')?'Negro ':'Color ') +
- ($('#calidadEstandarDiv').hasClass('checked')?'Estándar': 'Premium'));
- if($('#colorNegroDiv').hasClass('checked')){
+ ($('#colorNegroDiv').hasClass('checked')?'Negro estándar':
+ $('#colorNegroHqDiv').hasClass('checked')?'Negro premium':
+ $('#colorColorDiv').hasClass('checked')?'Color estándar':'Color premium'));
+
+ if($('#colorNegroDiv').hasClass('checked') || $('#colorNegroHqDiv').hasClass('checked')){
$('#pResumenPaginasColor').hide();
}
else{
@@ -279,13 +281,11 @@ function finalizarPresupuesto(confirmar){
data: datos,
success: function(response) {
- if(confirmar){
- if(Object.keys(response).length > 0) {
- if(response.status > 0){
- window.location.href = response.url + '/' + response.status;
- }
-
+ if(Object.keys(response).length > 0) {
+ if(response.status > 0){
+ window.location.href = response.url + '/' + response.status;
}
+
}
$('#loader').hide();
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoList.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoList.php
index 20a4cff5..860e3746 100644
--- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoList.php
+++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoList.php
@@ -212,12 +212,6 @@ theTable = $('#tableOfPresupuestos').DataTable({
searchable: false,
targets: [lastColNr]
},
- user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')): ?>
- {
- target: 3,
- visible: false
- }
-
],
columns : [
@@ -270,8 +264,9 @@ theTable = $('#tableOfPresupuestos').DataTable({
}
},
},
-
- { 'data': 'cliente'},
+
+ { 'data': 'cliente'},
+
{ 'data': 'titulo' },
{ 'data': 'paginas' },
@@ -293,7 +288,11 @@ theTable = $('#tableOfPresupuestos').DataTable({
theTable.on( 'draw.dt', function () {
const dateCols = [1];
+
const priceCols = [7];
+
+ const priceCols = [6];
+
for (let coln of dateCols) {
theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) {
diff --git a/httpdocs/assets/img/bn.png b/httpdocs/assets/img/bn.png
new file mode 100644
index 00000000..25260e4d
Binary files /dev/null and b/httpdocs/assets/img/bn.png differ
diff --git a/httpdocs/assets/img/bn_hq.png b/httpdocs/assets/img/bn_hq.png
new file mode 100644
index 00000000..f85a8790
Binary files /dev/null and b/httpdocs/assets/img/bn_hq.png differ
diff --git a/httpdocs/assets/img/color.png b/httpdocs/assets/img/color.png
new file mode 100644
index 00000000..89499dcb
Binary files /dev/null and b/httpdocs/assets/img/color.png differ
diff --git a/httpdocs/assets/img/color_hq.png b/httpdocs/assets/img/color_hq.png
new file mode 100644
index 00000000..fc985621
Binary files /dev/null and b/httpdocs/assets/img/color_hq.png differ