diff --git a/src/boot/quasar.js b/src/boot/quasar.js index a4f2ba0fe..7fb814c1f 100644 --- a/src/boot/quasar.js +++ b/src/boot/quasar.js @@ -7,7 +7,7 @@ import { QLayout } from 'quasar'; import mainShortcutMixin from './mainShortcutMixin'; import { useCau } from 'src/composables/useCau'; -export default boot(({ app }) => { +export default boot(({ app, router }) => { QForm.mixins = [qFormMixin]; QLayout.mixins = [mainShortcutMixin]; @@ -22,6 +22,14 @@ export default boot(({ app }) => { } switch (response?.status) { + case 401: + if (!router.currentRoute.value.name.toLowerCase().includes('login')) { + message = 'errors.sessionExpired'; + } else message = 'login.loginError'; + break; + case 403: + if (!message || message.toLowerCase() === 'access denied') + message = 'errors.accessDenied'; case 422: if (error.name == 'ValidationError') message += ` "${responseError.details.context}.${Object.keys( diff --git a/src/components/VnTable/VnColumn.vue b/src/components/VnTable/VnColumn.vue index 3ce62c5de..b6cc5665f 100644 --- a/src/components/VnTable/VnColumn.vue +++ b/src/components/VnTable/VnColumn.vue @@ -180,7 +180,11 @@ const col = computed(() => { ) newColumn.component = 'checkbox'; if ($props.default && !newColumn.component) newColumn.component = $props.default; - + + if (typeof newColumn.component !== 'string') { + newColumn.attrs = { ...newColumn.component.attrs, autofocus: $props.autofocus }; + newColumn.event = { ...newColumn.component.event, ...$props?.eventHandlers }; + } return newColumn; }); diff --git a/src/components/common/VnSelectExpense.vue b/src/components/common/VnSelectExpense.vue new file mode 100644 index 000000000..406715b84 --- /dev/null +++ b/src/components/common/VnSelectExpense.vue @@ -0,0 +1,49 @@ + + + +es: + Create a new expense: Crear nuevo gasto + diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index 8ccdf500b..581e57bde 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -400,6 +400,8 @@ errors: updateUserConfig: Error updating user config tokenConfig: Error fetching token config writeRequest: The requested operation could not be completed + sessionExpired: Your session has expired. Please log in again + accessDenied: Access denied claimBeginningQuantity: Cannot import a line with a claimed quantity of 0 login: title: Login diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index 2858464ab..e5afdcda3 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -396,6 +396,8 @@ errors: updateUserConfig: Error al actualizar la configuración de usuario tokenConfig: Error al obtener configuración de token writeRequest: No se pudo completar la operación solicitada + sessionExpired: Tu sesión ha expirado, por favor vuelve a iniciar sesión + accessDenied: Acceso denegado claimBeginningQuantity: No se puede importar una linea sin una cantidad reclamada login: title: Inicio de sesión diff --git a/src/pages/Entry/EntryPreAccount.vue b/src/pages/Entry/EntryPreAccount.vue index 26683b6f4..feb26604c 100644 --- a/src/pages/Entry/EntryPreAccount.vue +++ b/src/pages/Entry/EntryPreAccount.vue @@ -73,6 +73,7 @@ const columns = computed(() => [ optionLabel: 'code', options: companies.value, }, + orderBy: false, }, { name: 'warehouse', diff --git a/src/pages/InvoiceIn/Card/InvoiceInVat.vue b/src/pages/InvoiceIn/Card/InvoiceInVat.vue index 98237a8db..822fd68a6 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInVat.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInVat.vue @@ -1,21 +1,16 @@