From 3bfbed9e545c1c1462c59ef2ac2ed7d40a4f2030 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 10 Jun 2024 13:19:09 +0200 Subject: [PATCH 001/902] refs #7529 create WorkerPIT --- src/pages/Worker/Card/WorkerPit.vue | 112 ++++++++++++++++++++++++++++ src/router/modules/worker.js | 9 +++ 2 files changed, 121 insertions(+) create mode 100644 src/pages/Worker/Card/WorkerPit.vue diff --git a/src/pages/Worker/Card/WorkerPit.vue b/src/pages/Worker/Card/WorkerPit.vue new file mode 100644 index 000000000..6e088ba76 --- /dev/null +++ b/src/pages/Worker/Card/WorkerPit.vue @@ -0,0 +1,112 @@ + + + + + +es: + familySituation: Situación familiar + disabilityGrades: Discapacidad + geographicMobilityDate: Movilidad geografica + childPension: Pensión hijos + spousePension: Pensión cónyuge + isDependend: Ayuda / Movilidad reducida + spouseNif: NIF cónyuge + hasHousingPaymentBefore: Pagos vivienda anterior 2011 + hasHousingPaymentAfter: Pagos vivienda posterior 2011 + hasExtendedWorking: Prolongación actividad laboral + diff --git a/src/router/modules/worker.js b/src/router/modules/worker.js index 927d11802..14b0708ac 100644 --- a/src/router/modules/worker.js +++ b/src/router/modules/worker.js @@ -176,6 +176,15 @@ export default { }, component: () => import('src/pages/Worker/Card/WorkerLocker.vue'), }, + { + name: 'WorkerPit', + path: 'pit', + meta: { + title: 'pit', + icon: 'lock', + }, + component: () => import('src/pages/Worker/Card/WorkerPit.vue'), + }, ], }, ], From 657dbc67615af7372b1dac8d1b93f004933369b9 Mon Sep 17 00:00:00 2001 From: carlossa Date: Thu, 13 Jun 2024 08:24:36 +0200 Subject: [PATCH 002/902] refs #7529 route --- src/router/modules/worker.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/router/modules/worker.js b/src/router/modules/worker.js index 14b0708ac..77b2586fa 100644 --- a/src/router/modules/worker.js +++ b/src/router/modules/worker.js @@ -23,6 +23,7 @@ export default { 'WorkerDms', 'WorkerTimeControl', 'WorkerLocker', + 'WorkerPit', ], }, children: [ From 3f1c0b95faf7d8ff00b10fa93acdbed4047d6b9a Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 10 Jul 2024 15:03:25 +0200 Subject: [PATCH 003/902] fix: proposal to avoid notify error --- src/pages/Customer/Card/CustomerUnpaid.vue | 2 +- src/pages/Customer/Card/CustomerWebAccess.vue | 2 +- src/pages/Customer/components/CustomerChangePassword.vue | 2 +- src/pages/Customer/components/CustomerSamplesCreate.vue | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/Customer/Card/CustomerUnpaid.vue b/src/pages/Customer/Card/CustomerUnpaid.vue index a9d4a3d66..6c61b92a1 100644 --- a/src/pages/Customer/Card/CustomerUnpaid.vue +++ b/src/pages/Customer/Card/CustomerUnpaid.vue @@ -92,7 +92,7 @@ const onSubmit = async () => { notify('globals.dataSaved', 'positive'); unpaidClient.value = true; } catch (error) { - notify('errors.create', 'negative'); + notify('errors.writeRequest', 'negative'); } finally { isLoading.value = false; } diff --git a/src/pages/Customer/Card/CustomerWebAccess.vue b/src/pages/Customer/Card/CustomerWebAccess.vue index 33659dd77..4468c52f0 100644 --- a/src/pages/Customer/Card/CustomerWebAccess.vue +++ b/src/pages/Customer/Card/CustomerWebAccess.vue @@ -70,7 +70,7 @@ const onSubmit = async () => { notify('globals.dataSaved', 'positive'); if (usersPreviewRef.value) usersPreviewRef.value.fetch(); } catch (error) { - notify('errors.create', 'negative'); + notify('errors.writeRequest', 'negative'); } finally { isLoading.value = false; } diff --git a/src/pages/Customer/components/CustomerChangePassword.vue b/src/pages/Customer/components/CustomerChangePassword.vue index 1bfc5e103..632b11dc9 100644 --- a/src/pages/Customer/components/CustomerChangePassword.vue +++ b/src/pages/Customer/components/CustomerChangePassword.vue @@ -48,7 +48,7 @@ const onSubmit = async () => { await axios.patch(`Clients/${$props.id}/setPassword`, payload); await $props.promise(); } catch (error) { - notify('errors.create', 'negative'); + notify('errors.writeRequest', 'negative'); } finally { isLoading.value = false; if (closeButton.value) closeButton.value.click(); diff --git a/src/pages/Customer/components/CustomerSamplesCreate.vue b/src/pages/Customer/components/CustomerSamplesCreate.vue index be614aa0b..283b8fa97 100644 --- a/src/pages/Customer/components/CustomerSamplesCreate.vue +++ b/src/pages/Customer/components/CustomerSamplesCreate.vue @@ -150,7 +150,7 @@ const onSubmit = async () => { notify('globals.dataSaved', 'positive'); onDataSaved(data); } catch (error) { - notify('errors.create', 'negative'); + notify('errors.writeRequest', 'negative'); } finally { isLoading.value = false; } From 168201c755f50cefb633598e5488a88bf48068d9 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 15 Jul 2024 12:25:54 +0200 Subject: [PATCH 004/902] refs #7283 itemList table --- src/pages/Item/ItemList.vue | 477 +++++------------------------------- 1 file changed, 68 insertions(+), 409 deletions(-) diff --git a/src/pages/Item/ItemList.vue b/src/pages/Item/ItemList.vue index f1e3629cd..334ef2604 100644 --- a/src/pages/Item/ItemList.vue +++ b/src/pages/Item/ItemList.vue @@ -3,114 +3,48 @@ import { onMounted, ref, computed, reactive, onUnmounted } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRouter } from 'vue-router'; -import FetchData from 'components/FetchData.vue'; -import FetchedTags from 'components/ui/FetchedTags.vue'; -import TableVisibleColumns from 'src/components/common/TableVisibleColumns.vue'; -import VnInput from 'src/components/common/VnInput.vue'; -import VnSelect from 'src/components/common/VnSelect.vue'; -import ItemDescriptorProxy from '../Item/Card/ItemDescriptorProxy.vue'; -import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue'; -import ItemSummary from '../Item/Card/ItemSummary.vue'; -import VnPaginate from 'components/ui/VnPaginate.vue'; -import ItemListFilter from './ItemListFilter.vue'; - +import VnTable from 'components/VnTable/VnTable.vue'; import { useStateStore } from 'stores/useStateStore'; import { toDateFormat } from 'src/filters/date.js'; import { dashIfEmpty } from 'src/filters'; -import { useSummaryDialog } from 'src/composables/useSummaryDialog'; -import { useVnConfirm } from 'composables/useVnConfirm'; import axios from 'axios'; -import RightMenu from 'src/components/common/RightMenu.vue'; import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; -import VnImg from 'src/components/ui/VnImg.vue'; const router = useRouter(); const stateStore = useStateStore(); const { t } = useI18n(); -const { viewSummary } = useSummaryDialog(); -const { openConfirmationModal } = useVnConfirm(); +const tableRef = ref(); -const paginateRef = ref(null); -const itemTypesOptions = ref([]); -const originsOptions = ref([]); -const buyersOptions = ref([]); -const intrastatOptions = ref([]); -const itemCategoriesOptions = ref([]); -const visibleColumns = ref([]); -const allColumnNames = ref([]); - -const exprBuilder = (param, value) => { - switch (param) { - case 'category': - return { 'ic.name': value }; - case 'buyerFk': - return { 'it.workerFk': value }; - case 'grouping': - return { 'b.grouping': value }; - case 'packing': - return { 'b.packing': value }; - case 'origin': - return { 'ori.code': value }; - case 'typeFk': - return { 'i.typeFk': value }; - case 'intrastat': - return { 'intr.description': value }; - case 'name': - return { 'i.name': { like: `%${value}%` } }; - case 'producer': - return { 'pr.name': { like: `%${value}%` } }; - case 'id': - case 'size': - case 'subname': - case 'isActive': - case 'weightByPiece': - case 'stemMultiplier': - case 'stems': - return { [`i.${param}`]: value }; - } +const itemFilter = { + include: [ + { + relation: 'trainingCourseType', + scope: { + fields: ['id', 'name'], + }, + }, + { + relation: 'trainingCenter', + scope: { + fields: ['id', 'name'], + }, + }, + ], }; - -const params = reactive({ isFloramondo: false, isActive: true }); - -const applyColumnFilter = async (col) => { - try { - const paramKey = col.columnFilter?.filterParamKey || col.field; - params[paramKey] = col.columnFilter.filterValue; - await paginateRef.value.addFilter(null, params); - } catch (err) { - console.error('Error applying column filter', err); - } -}; - -const getInputEvents = (col) => { - return col.columnFilter.type === 'select' - ? { 'update:modelValue': () => applyColumnFilter(col) } - : { - 'keyup.enter': () => applyColumnFilter(col), - }; -}; - const columns = computed(() => [ { label: '', name: 'picture', align: 'left', - columnFilter: null, }, { label: t('item.list.id'), name: 'id', field: 'id', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, + isId: true, + chip: { + condition: () => true, }, }, { @@ -118,101 +52,41 @@ const columns = computed(() => [ field: 'grouping', name: 'grouping', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, - }, - format: (val) => dashIfEmpty(val), }, { label: t('item.list.packing'), field: 'packing', name: 'packing', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, - }, - format: (val) => dashIfEmpty(val), }, { label: t('globals.description'), field: 'name', name: 'description', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, - }, + create: true, }, { label: t('item.list.stems'), field: 'stems', name: 'stems', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, - }, }, { label: t('item.list.size'), field: 'size', name: 'size', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, - }, }, { label: t('item.list.typeName'), field: 'typeName', name: 'typeName', align: 'left', - sortable: true, - columnFilter: { - component: VnSelect, - filterParamKey: 'typeFk', - type: 'select', - filterValue: null, - event: getInputEvents, - attrs: { - options: itemTypesOptions.value, - 'option-value': 'id', - 'option-label': 'name', - dense: true, - }, + component: 'select', + attrs: { + url: 'ItemType', + fields: ['id', 'name'], }, }, @@ -221,18 +95,10 @@ const columns = computed(() => [ field: 'category', name: 'category', align: 'left', - sortable: true, - columnFilter: { - component: VnSelect, - type: 'select', - filterValue: null, - event: getInputEvents, - attrs: { - options: itemCategoriesOptions.value, - 'option-value': 'name', - 'option-label': 'name', - dense: true, - }, + component: 'select', + attrs: { + url: 'ItemCategory', + fields: ['id', 'name'], }, }, @@ -241,18 +107,10 @@ const columns = computed(() => [ field: 'intrastat', name: 'intrastat', align: 'left', - sortable: true, - columnFilter: { - component: VnSelect, - type: 'select', - filterValue: null, - event: getInputEvents, - attrs: { - options: intrastatOptions.value, - 'option-value': 'description', - 'option-label': 'description', - dense: true, - }, + component: 'select', + attrs: { + url: 'Intrastat', + fields: ['id', 'description'], }, }, { @@ -260,18 +118,10 @@ const columns = computed(() => [ field: 'origin', name: 'origin', align: 'left', - sortable: true, - columnFilter: { - component: VnSelect, - type: 'select', - filterValue: null, - event: getInputEvents, - attrs: { - options: originsOptions.value, - 'option-value': 'code', - 'option-label': 'code', - dense: true, - }, + component: 'select', + attrs: { + url: 'Origin', + fields: ['id', 'name'], }, }, { @@ -279,36 +129,13 @@ const columns = computed(() => [ field: 'userName', name: 'userName', align: 'left', - sortable: true, - columnFilter: { - component: VnSelect, - filterParamKey: 'buyerFk', - type: 'select', - filterValue: null, - event: getInputEvents, - attrs: { - options: buyersOptions.value, - 'option-value': 'id', - 'option-label': 'nickname', - dense: true, - }, - }, }, { label: t('item.list.weightByPiece'), field: 'weightByPiece', name: 'weightByPiece', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, - }, + component: 'input', format: (val) => dashIfEmpty(val), }, { @@ -316,16 +143,7 @@ const columns = computed(() => [ field: 'stemMultiplier', name: 'stemMultiplier', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, - }, + component: 'input', format: (val) => dashIfEmpty(val), }, { @@ -333,40 +151,26 @@ const columns = computed(() => [ field: 'isActive', name: 'isActive', align: 'left', - sortable: true, - columnFilter: null, + component: 'checkbox', }, { label: t('item.list.producer'), field: 'producer', name: 'producer', align: 'left', - sortable: true, - columnFilter: { - component: VnInput, - type: 'text', - filterValue: null, - event: getInputEvents, - attrs: { - dense: true, - }, + component: 'select', + attrs: { + url: 'Producer', + fields: ['id', 'name'], }, - format: (val) => dashIfEmpty(val), }, { label: t('item.list.landed'), field: 'landed', name: 'landed', align: 'left', - sortable: true, + component: 'date', format: (val) => dashIfEmpty(toDateFormat(val)), - columnFilter: null, - }, - { - label: '', - name: 'actions', - align: 'left', - columnFilter: null, }, ]); @@ -388,49 +192,11 @@ const cloneItem = async (itemFk) => { } }; -onMounted(async () => { - stateStore.rightDrawer = true; - const filteredColumns = columns.value.filter( - (col) => col.name !== 'picture' && col.name !== 'actions' - ); - allColumnNames.value = filteredColumns.map((col) => col.name); -}); - onUnmounted(() => (stateStore.rightDrawer = false)); From 16b5b5d9a1111f31a8c07f53272a8f6f77ae71ba Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 15 Jul 2024 13:48:59 +0200 Subject: [PATCH 005/902] refs #7283 filter --- src/pages/Item/ItemList.vue | 64 +++++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 9 deletions(-) diff --git a/src/pages/Item/ItemList.vue b/src/pages/Item/ItemList.vue index 334ef2604..4c49f068f 100644 --- a/src/pages/Item/ItemList.vue +++ b/src/pages/Item/ItemList.vue @@ -1,30 +1,39 @@ From daf99f47306f2ae346e9fd023bce9e8b8c222c7b Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 15 Jul 2024 15:00:43 +0200 Subject: [PATCH 007/902] refs #7283 itemRequestList --- src/pages/Item/ItemRequest.vue | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/pages/Item/ItemRequest.vue b/src/pages/Item/ItemRequest.vue index ae6638953..10cb6c2a6 100644 --- a/src/pages/Item/ItemRequest.vue +++ b/src/pages/Item/ItemRequest.vue @@ -18,6 +18,7 @@ import useNotify from 'src/composables/useNotify.js'; import { getDateQBadgeColor } from 'src/composables/getDateQBadgeColor.js'; import axios from 'axios'; import RightMenu from 'src/components/common/RightMenu.vue'; +import { toDate } from 'src/filters'; const { t } = useI18n(); const { notify } = useNotify(); @@ -46,21 +47,28 @@ const columns = computed(() => [ name: 'id', field: 'id', align: 'left', - sortable: true, + isId: true, + chip: { + condition: () => true, + }, + cardVisible: true, }, { label: t('item.buyRequest.shipped'), field: 'shipped', name: 'shipped', align: 'left', - sortable: true, + component: 'date', + columnField: { + component: null, + }, + format: (row, dashIfEmpty) => dashIfEmpty(toDate(row.shipped)), }, { label: t('globals.description'), field: 'description', name: 'description', align: 'left', - sortable: true, }, { label: t('item.buyRequest.requester'), @@ -80,29 +88,31 @@ const columns = computed(() => [ field: 'price', name: 'price', align: 'left', - sortable: true, - format: (val) => toCurrency(val), + format: (row) => toCurrency(row.price), }, { label: t('item.buyRequest.attender'), field: 'attender', name: 'attender', align: 'left', - sortable: true, + attrs: { + url: 'Workers', + fields: ['id', 'firstName'], + }, }, { label: t('item.buyRequest.item'), field: 'item', name: 'item', align: 'left', - sortable: true, + component: 'input', }, { label: t('item.buyRequest.achieved'), field: 'achieved', name: 'achieved', align: 'left', - sortable: true, + component: 'input', }, { label: t('item.buyRequest.concept'), From b7ba8eec3da2524c3fc2834dc2e4ffb64dbfc20d Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 16 Jul 2024 08:24:57 +0200 Subject: [PATCH 008/902] refs #7283 fix searchbar --- src/pages/Item/ItemList.vue | 41 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/pages/Item/ItemList.vue b/src/pages/Item/ItemList.vue index e2c5f4bb3..17a62c5b9 100644 --- a/src/pages/Item/ItemList.vue +++ b/src/pages/Item/ItemList.vue @@ -3,11 +3,12 @@ import { onMounted, ref, computed, reactive, onUnmounted } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRouter, useRoute } from 'vue-router'; import VnImg from 'src/components/ui/VnImg.vue'; - +import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; import VnTable from 'components/VnTable/VnTable.vue'; import { useStateStore } from 'stores/useStateStore'; import { toDate } from 'src/filters'; import axios from 'axios'; +import VnSearchbar from 'src/components/ui/VnSearchbar.vue'; const entityId = computed(() => route.params.id); const router = useRouter(); @@ -212,16 +213,21 @@ const columns = computed(() => [ }, format: (row, dashIfEmpty) => dashIfEmpty(toDate(row.landed)), }, + { + align: 'right', + label: '', + name: 'tableActions', + actions: [ + { + title: t('Clone item'), + icon: 'vn:clone', + action: cloneItem, + isPrimary: true, + }, + ], + }, ]); -const redirectToItemCreate = () => { - router.push({ name: 'ItemCreate' }); -}; - -const redirectToItemSummary = (id) => { - router.push({ name: 'ItemSummary', params: { id } }); -}; - const cloneItem = async (itemFk) => { try { const { data } = await axios.post(`Items/${itemFk}/clone`); @@ -236,16 +242,11 @@ onUnmounted(() => (stateStore.rightDrawer = false)); From f29d873ed42abad1c45d641a51aa02bc2ab02db1 Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 16 Jul 2024 12:15:39 +0200 Subject: [PATCH 012/902] refs #7283 fix request --- src/pages/Item/ItemRequest.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/Item/ItemRequest.vue b/src/pages/Item/ItemRequest.vue index 10cb6c2a6..e5faff6b2 100644 --- a/src/pages/Item/ItemRequest.vue +++ b/src/pages/Item/ItemRequest.vue @@ -120,13 +120,13 @@ const columns = computed(() => [ name: 'concept', align: 'left', sortable: true, + component: 'input', }, { label: t('item.buyRequest.state'), field: 'state', name: 'state', align: 'left', - sortable: true, }, { label: '', @@ -252,7 +252,6 @@ onBeforeMount(() => { - + es: New item: Nuevo artículo diff --git a/src/pages/Item/ItemRequest.vue b/src/pages/Item/ItemRequest.vue index ed6f623aa..0389ba864 100644 --- a/src/pages/Item/ItemRequest.vue +++ b/src/pages/Item/ItemRequest.vue @@ -13,7 +13,6 @@ import VnTable from 'components/VnTable/VnTable.vue'; const { t } = useI18n(); const { notify } = useNotify(); const stateStore = useStateStore(); -const workersOptions = ref([]); let filterParams = ref({}); const denyFormRef = ref(null); const denyRequestId = ref(null); @@ -91,6 +90,7 @@ const columns = computed(() => [ name: 'item', align: 'left', component: 'input', + visible: false, }, { label: t('item.buyRequest.achieved'), @@ -98,6 +98,7 @@ const columns = computed(() => [ name: 'achieved', align: 'left', component: 'input', + visible: false, }, { label: t('item.buyRequest.concept'), @@ -106,6 +107,7 @@ const columns = computed(() => [ align: 'left', sortable: true, component: 'input', + visible: false, }, { label: t('item.buyRequest.state'), @@ -114,10 +116,17 @@ const columns = computed(() => [ align: 'left', }, { + align: 'right', label: '', - name: 'action', - align: 'left', - columnFilter: null, + name: 'tableActions', + actions: [ + { + title: t('Client ticket list'), + icon: 'thumb_down', + action: onDenyAccept, + isPrimary: true, + }, + ], }, ]); From fe78de0c4761772593a3e714c69894f36651e696 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 5 Aug 2024 11:49:06 +0200 Subject: [PATCH 017/902] refs #7283 fixedPrices --- src/pages/Item/ItemFixedPrice.vue | 325 +++++++----------------------- 1 file changed, 70 insertions(+), 255 deletions(-) diff --git a/src/pages/Item/ItemFixedPrice.vue b/src/pages/Item/ItemFixedPrice.vue index 2ecd1f21b..41f2bac2f 100644 --- a/src/pages/Item/ItemFixedPrice.vue +++ b/src/pages/Item/ItemFixedPrice.vue @@ -1,7 +1,7 @@ + From e4aec1773b74c002913bf60f807c07ca39a873f5 Mon Sep 17 00:00:00 2001 From: carlossa Date: Thu, 29 Aug 2024 12:38:57 +0200 Subject: [PATCH 026/902] refs #7283 itemRequest fix deny --- src/pages/Item/ItemRequest.vue | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/pages/Item/ItemRequest.vue b/src/pages/Item/ItemRequest.vue index 41248afbb..0e59a16c4 100644 --- a/src/pages/Item/ItemRequest.vue +++ b/src/pages/Item/ItemRequest.vue @@ -7,6 +7,7 @@ import { useArrayData } from 'composables/useArrayData'; import { toCurrency } from 'filters/index'; import useNotify from 'src/composables/useNotify.js'; import axios from 'axios'; +import ItemRequestDenyForm from './ItemRequestDenyForm.vue'; import { toDate } from 'src/filters'; import VnTable from 'components/VnTable/VnTable.vue'; import VnInput from 'src/components/common/VnInput.vue'; @@ -26,6 +27,10 @@ const arrayData = useArrayData('ItemRequests', { }); const store = arrayData.store; +const userParams = { + state: 'pending', +}; + watch( () => store.data, (value) => (itemRequestsOptions.value = value) @@ -174,7 +179,9 @@ const onDenyAccept = (_, responseData) => { itemRequestsOptions.value[denyRequestIndex.value].isOk = responseData.isOk; itemRequestsOptions.value[denyRequestIndex.value].attenderFk = responseData.attenderFk; + console.log('itemRequestsOptions: ', itemRequestsOptions.value); itemRequestsOptions.value[denyRequestIndex.value].response = responseData.response; + console.log('itemRequestsOptions.value', itemRequestsOptions.value); denyRequestId.value = null; denyRequestIndex.value = null; }; @@ -341,8 +348,10 @@ onBeforeMount(() => { url="ticketRequests/filter" order="shippedDate ASC, isOk ASC" :columns="columns" + :user-params="userParams" :is-editable="true" auto-load + :disable-option="{ card: true }" > - From 388036a2eb589b6475132e630ee555147938b4a6 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 2 Sep 2024 09:19:49 +0200 Subject: [PATCH 027/902] refs #7283 itemRequest fix --- src/pages/Item/ItemRequest.vue | 146 ++------------------------------- 1 file changed, 7 insertions(+), 139 deletions(-) diff --git a/src/pages/Item/ItemRequest.vue b/src/pages/Item/ItemRequest.vue index 0e59a16c4..10ed237b4 100644 --- a/src/pages/Item/ItemRequest.vue +++ b/src/pages/Item/ItemRequest.vue @@ -208,140 +208,6 @@ onBeforeMount(() => { From 3bf3e8eeaa4c93dd2c8a737d5a95fb0528abbe50 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 2 Sep 2024 11:08:50 +0200 Subject: [PATCH 028/902] refs #7283 itemRequest fix deny --- src/pages/Item/ItemRequest.vue | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/pages/Item/ItemRequest.vue b/src/pages/Item/ItemRequest.vue index 10ed237b4..8273c5c91 100644 --- a/src/pages/Item/ItemRequest.vue +++ b/src/pages/Item/ItemRequest.vue @@ -112,16 +112,7 @@ const columns = computed(() => [ { align: 'right', label: '', - name: 'tableActions', - actions: [ - { - title: t('Deny Request'), - icon: 'thumb_down', - class: 'fill-icon', - action: showDenyRequestForm, - isPrimary: true, - }, - ], + name: 'denyOptions', }, ]); @@ -171,7 +162,9 @@ const getState = (isOk) => { const showDenyRequestForm = (requestId, rowIndex) => { denyRequestId.value = requestId; + console.log('denyRequestId.value: ', denyRequestId.value); denyRequestIndex.value = rowIndex; + console.log('denyRequestIndex.value: ', denyRequestIndex.value); denyFormRef.value.show(); }; @@ -255,8 +248,8 @@ onBeforeMount(() => { {{ row.itemDescription }} - es: Create training course: Crear curso de formación diff --git a/src/pages/Worker/Card/WorkerMedical.vue b/src/pages/Worker/Card/WorkerMedical.vue index 6bca4ae85..fab1416c9 100644 --- a/src/pages/Worker/Card/WorkerMedical.vue +++ b/src/pages/Worker/Card/WorkerMedical.vue @@ -65,6 +65,18 @@ const columns = [ create: true, component: 'input', }, + { + align: 'right', + name: 'tableActions', + actions: [ + { + title: t('delete'), + icon: 'delete', + action: async (row) => await tableRef.value.CrudModelRef.remove([row]), + isPrimary: true, + }, + ], + }, ]; From f809e0fb317de0c4762cb684bc3bb58f870d8958 Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 23 Sep 2024 12:55:39 +0200 Subject: [PATCH 050/902] fix: refs #7323 show prev month week color --- src/pages/Worker/Card/WorkerTimeControl.vue | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/pages/Worker/Card/WorkerTimeControl.vue b/src/pages/Worker/Card/WorkerTimeControl.vue index fbfd4b28d..c6ca9d74a 100644 --- a/src/pages/Worker/Card/WorkerTimeControl.vue +++ b/src/pages/Worker/Card/WorkerTimeControl.vue @@ -326,16 +326,21 @@ const updateData = async () => { }; const getMailStates = async (date) => { + const url = `WorkerTimeControls/${route.params.id}/getMailStates`; + const month = date.getMonth() + 1; + const prevMonth = month == 1 ? 12 : month - 1; + let prevMonthStates = []; + const params = { - month: date.getMonth() + 1, + month, year: date.getFullYear(), }; - const { data } = await axios.get( - `WorkerTimeControls/${route.params.id}/getMailStates`, - { params } - ); - workerTimeControlMails.value = data; + const curMonthStates = (await axios.get(url, { params })).data; + prevMonthStates = (await axios.get(url, { params: { ...params, month: prevMonth } })) + .data; + + workerTimeControlMails.value = curMonthStates.concat(prevMonthStates); }; const showWorkerTimeForm = (propValue, formType) => { From 2cb9899de14a5a9d1a3520c993dffc428b1cc0e6 Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 23 Sep 2024 15:38:54 +0200 Subject: [PATCH 051/902] feat: refs #7207 show queue --- src/pages/Worker/Card/WorkerSummary.vue | 1 + src/pages/Worker/locale/en.yml | 1 + src/pages/Worker/locale/es.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/src/pages/Worker/Card/WorkerSummary.vue b/src/pages/Worker/Card/WorkerSummary.vue index 8fee52dd3..ed34e771d 100644 --- a/src/pages/Worker/Card/WorkerSummary.vue +++ b/src/pages/Worker/Card/WorkerSummary.vue @@ -139,6 +139,7 @@ onBeforeMount(async () => { + diff --git a/src/pages/Worker/locale/en.yml b/src/pages/Worker/locale/en.yml index 96df37919..96764ffd1 100644 --- a/src/pages/Worker/locale/en.yml +++ b/src/pages/Worker/locale/en.yml @@ -4,3 +4,4 @@ tableColumns: name: Name department: Department email: Email +queue: Queue diff --git a/src/pages/Worker/locale/es.yml b/src/pages/Worker/locale/es.yml index 41812345f..cf6bc3afe 100644 --- a/src/pages/Worker/locale/es.yml +++ b/src/pages/Worker/locale/es.yml @@ -9,3 +9,4 @@ tableColumns: name: Nombre department: Departamento email: Email +queue: Cola From b54d358617b3cfcd1f2e6c47c05696820af6ade4 Mon Sep 17 00:00:00 2001 From: jorgep Date: Wed, 25 Sep 2024 09:14:35 +0200 Subject: [PATCH 052/902] fix: refs #7207 use right locale --- src/pages/InvoiceIn/InvoiceInFilter.vue | 2 +- src/pages/InvoiceIn/locale/es.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/InvoiceIn/InvoiceInFilter.vue b/src/pages/InvoiceIn/InvoiceInFilter.vue index bf4e023a9..b19e047fa 100644 --- a/src/pages/InvoiceIn/InvoiceInFilter.vue +++ b/src/pages/InvoiceIn/InvoiceInFilter.vue @@ -170,7 +170,7 @@ es: awb: AWB amount: Importe issued: Emitida - isBooked: Conciliada + isBooked: Contabilizada account: Cuenta contable created: Creada dued: Vencida diff --git a/src/pages/InvoiceIn/locale/es.yml b/src/pages/InvoiceIn/locale/es.yml index 944708364..2d3b137f4 100644 --- a/src/pages/InvoiceIn/locale/es.yml +++ b/src/pages/InvoiceIn/locale/es.yml @@ -7,7 +7,7 @@ invoiceIn: shortIssued: F. emisión file: Fichero issued: Fecha emisión - isBooked: Conciliada + isBooked: Contabilizada awb: AWB amount: Importe card: From 45b3ed6e17ce1c3d6b70fea9a62d29cbd516776e Mon Sep 17 00:00:00 2001 From: jorgep Date: Wed, 25 Sep 2024 09:53:06 +0200 Subject: [PATCH 053/902] fix: refs #7207 te2e --- test/cypress/integration/ticket/ticketDescriptor.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cypress/integration/ticket/ticketDescriptor.spec.js b/test/cypress/integration/ticket/ticketDescriptor.spec.js index 8192b7c7c..cc3a1d65a 100644 --- a/test/cypress/integration/ticket/ticketDescriptor.spec.js +++ b/test/cypress/integration/ticket/ticketDescriptor.spec.js @@ -1,7 +1,7 @@ /// describe('Ticket descriptor', () => { - const toCloneOpt = '[role="menu"] .q-list > :nth-child(5)'; - const setWeightOpt = '[role="menu"] .q-list > :nth-child(6)'; + const toCloneOpt = '[role="menu"] .q-list > :nth-child(8)'; + const setWeightOpt = '[role="menu"] .q-list > :nth-child(13)'; const warehouseValue = ':nth-child(1) > :nth-child(6) > .value > span'; const summaryHeader = '.summaryHeader > div'; const weight = 25; From 68ebda625b9594229837e2bbb331d0f2787b53ec Mon Sep 17 00:00:00 2001 From: jorgep Date: Wed, 25 Sep 2024 14:02:11 +0200 Subject: [PATCH 054/902] fix: refs #7874 refs #6943 ui --- .../components/CustomerAddressEdit.vue | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/src/pages/Customer/components/CustomerAddressEdit.vue b/src/pages/Customer/components/CustomerAddressEdit.vue index 606867388..1e5387815 100644 --- a/src/pages/Customer/components/CustomerAddressEdit.vue +++ b/src/pages/Customer/components/CustomerAddressEdit.vue @@ -240,39 +240,33 @@ function handleLocation(data, location) { class="row q-gutter-md q-mb-md" v-for="(note, index) in notes" > -
- -
-
- -
-
- - - {{ t('Remove note') }} - - -
+ + + + + {{ t('Remove note') }} + + - Date: Wed, 25 Sep 2024 14:18:34 +0200 Subject: [PATCH 055/902] feat: refs #7010 added packing type field in customer summary and ticket list --- .../components/CustomerSummaryTable.vue | 18 ++++- src/pages/Ticket/TicketList.vue | 70 +++++++++++++++---- 2 files changed, 74 insertions(+), 14 deletions(-) diff --git a/src/pages/Customer/components/CustomerSummaryTable.vue b/src/pages/Customer/components/CustomerSummaryTable.vue index 946296e67..8ebf4aabc 100644 --- a/src/pages/Customer/components/CustomerSummaryTable.vue +++ b/src/pages/Customer/components/CustomerSummaryTable.vue @@ -32,6 +32,16 @@ const filter = { }, { relation: 'invoiceOut', scope: { fields: ['id'] } }, { relation: 'agencyMode', scope: { fields: ['name'] } }, + { + relation: 'ticketSales', + scope: { + fields: ['id', 'concept', 'itemFk'], + include: { relation: 'item' }, + scope: { + fields: ['id', 'name', 'itemPackingTypeFk'], + }, + }, + }, ], where: { clientFk: route.params.id }, order: ['shipped DESC', 'id'], @@ -87,7 +97,13 @@ const columns = computed(() => [ label: t('Total'), name: 'total', }, - + { + align: 'left', + name: 'itemPackingTypeFk', + label: t('ticketSale.packaging'), + format: (row, dashIfEmpty) => + dashIfEmpty(row?.ticketSales[0]?.item.itemPackingTypeFk), + }, { align: 'right', label: '', diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index ad97e75c1..2a1dfd014 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -1,6 +1,6 @@ @@ -577,16 +615,16 @@ function setReference(data) { {{ row.state }} + + + {{ row.refFk }} + + + {{ row.state }} - + @@ -209,5 +209,4 @@ const handlePhotoUpdated = (evt = false) => { es: Click to allow the user to be disabled: Marcar para deshabilitar Click to exclude the user from getting disabled: Marcar para no deshabilitar - Change password: Cambiar contraseña
From 2877ef8a335271cb18d4b2cfb3a08ac0453aae6f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 4 Oct 2024 11:50:55 +0200 Subject: [PATCH 093/902] feat: refs #7346 #7346 improve form --- src/i18n/locale/en.yml | 1 + src/pages/InvoiceOut/InvoiceOutList.vue | 45 +++++++++++++++---------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index b75e4239c..cab1070d2 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -1154,6 +1154,7 @@ components: clone: Clone openCard: View openSummary: Summary + viewSummary: Summary cardDescriptor: mainList: Main list summary: Summary diff --git a/src/pages/InvoiceOut/InvoiceOutList.vue b/src/pages/InvoiceOut/InvoiceOutList.vue index 8a3a618ac..5b5b266a6 100644 --- a/src/pages/InvoiceOut/InvoiceOutList.vue +++ b/src/pages/InvoiceOut/InvoiceOutList.vue @@ -6,8 +6,8 @@ import VnInputDate from 'src/components/common/VnInputDate.vue'; import VnSearchbar from 'src/components/ui/VnSearchbar.vue'; import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; import { useSummaryDialog } from 'src/composables/useSummaryDialog'; -import { usePrintService } from 'composables/usePrintService'; -import VnTable from 'components/VnTable/VnTable.vue'; +import { usePrintService } from 'src/composables/usePrintService'; +import VnTable from 'src/components/VnTable/VnTable.vue'; import InvoiceOutSummary from './Card/InvoiceOutSummary.vue'; import { toCurrency, toDate } from 'src/filters/index'; import { useStateStore } from 'stores/useStateStore'; @@ -133,6 +133,7 @@ const columns = computed(() => [ { title: t('components.smartCard.viewSummary'), icon: 'preview', + isPrimary: true, action: (row) => viewSummary(row.id, InvoiceOutSummary), }, { @@ -230,8 +231,8 @@ watchEffect(selectedRows); - + O -
+
-
-
+
en: - searchInvoice: Search issued invoice - fileDenied: Browser denied file download... - fileAllowed: Successful download of CSV file - youCanSearchByInvoiceReference: You can search by invoice reference - createInvoice: Make invoice Create manual invoice: Create manual invoice + searchInvoice: Search issued invoice + fileDenied: Browser denied file download... + fileAllowed: Successful download of CSV file + youCanSearchByInvoiceReference: You can search by invoice reference + createInvoice: Make invoice + Create manual invoice: Create manual invoice es: - searchInvoice: Buscar factura emitida fileDenied: El navegador denegó la - descarga de archivos... fileAllowed: Descarga exitosa de archivo CSV - youCanSearchByInvoiceReference: Puedes buscar por referencia de la factura - createInvoice: Crear factura Create manual invoice: Crear factura manual + searchInvoice: Buscar factura emitida + fileDenied: El navegador denegó la descarga de archivos... + fileAllowed: Descarga exitosa de archivo CSV + youCanSearchByInvoiceReference: Puedes buscar por referencia de la factura + createInvoice: Crear factura + Create manual invoice: Crear factura manual From ae8e4ba4b975b1c6381fabec08de18cbc190f978 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 4 Oct 2024 11:54:40 +0200 Subject: [PATCH 094/902] chore: refs #7702 fix tests --- .../common/VnChangePassword.spec.js | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/test/vitest/__tests__/components/common/VnChangePassword.spec.js b/test/vitest/__tests__/components/common/VnChangePassword.spec.js index e7a3bdcf7..f5a967bb5 100644 --- a/test/vitest/__tests__/components/common/VnChangePassword.spec.js +++ b/test/vitest/__tests__/components/common/VnChangePassword.spec.js @@ -50,10 +50,21 @@ describe('VnSmsDialog', () => { ); }); - it('should call submitFn and emit onSubmit when passwords match', async () => { - vm.passwords.newPassword = 'password'; - vm.passwords.repeatPassword = 'password'; - await vm.validate(); - expect(vm.props.submitFn).toHaveBeenCalledWith('password'); + describe('if passwords match', () => { + it('should call submitFn and emit password', async () => { + vm.passwords.newPassword = 'password'; + vm.passwords.repeatPassword = 'password'; + await vm.validate(); + expect(vm.props.submitFn).toHaveBeenCalledWith('password', undefined); + }); + + it('should call submitFn and emit password and old password', async () => { + vm.passwords.newPassword = 'password'; + vm.passwords.repeatPassword = 'password'; + vm.passwords.oldPassword = 'oldPassword'; + + await vm.validate(); + expect(vm.props.submitFn).toHaveBeenCalledWith('password', 'oldPassword'); + }); }); }); From 195747b5a0e938f3fe89779a4775ddeb79e22f72 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 4 Oct 2024 12:34:37 +0200 Subject: [PATCH 095/902] feat: added click and transfer tickets and deleted useless code --- src/pages/Ticket/Card/TicketTransfer.vue | 38 ++++++-------------- src/pages/Ticket/Card/TicketTransferForm.vue | 7 ++-- 2 files changed, 14 insertions(+), 31 deletions(-) diff --git a/src/pages/Ticket/Card/TicketTransfer.vue b/src/pages/Ticket/Card/TicketTransfer.vue index 1944b80f4..e1a011a84 100644 --- a/src/pages/Ticket/Card/TicketTransfer.vue +++ b/src/pages/Ticket/Card/TicketTransfer.vue @@ -1,13 +1,11 @@ From 3a21f6aadb5d3aa50fdff0d85d1c2e81532f5f87 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 4 Oct 2024 14:22:00 +0200 Subject: [PATCH 098/902] fix: order catalog --- src/pages/Order/Card/OrderCatalog.vue | 1 + .../Order/Card/OrderCatalogItemDialog.vue | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/pages/Order/Card/OrderCatalog.vue b/src/pages/Order/Card/OrderCatalog.vue index 68bf9511f..b13e8661d 100644 --- a/src/pages/Order/Card/OrderCatalog.vue +++ b/src/pages/Order/Card/OrderCatalog.vue @@ -130,4 +130,5 @@ function extractValueTags(items) { es: You can search items by name or id: Puedes buscar items por nombre o id + Search items: Buscar items diff --git a/src/pages/Order/Card/OrderCatalogItemDialog.vue b/src/pages/Order/Card/OrderCatalogItemDialog.vue index 46a50c021..09a25fcb8 100644 --- a/src/pages/Order/Card/OrderCatalogItemDialog.vue +++ b/src/pages/Order/Card/OrderCatalogItemDialog.vue @@ -20,8 +20,10 @@ const props = defineProps({ const fields = ref((props.prices || []).map((item) => ({ ...item, quantity: 0 }))); const descriptorData = useArrayData('orderData'); - +const isLoading = ref(false); const addToOrder = async () => { + if (isLoading.value) return; + isLoading.value = true; const items = (fields.value || []).filter((item) => Number(item.quantity) > 0); await axios.post('/OrderRows/addToOrder', { items, @@ -30,6 +32,10 @@ const addToOrder = async () => { notify(t('globals.dataSaved'), 'positive'); emit('added'); descriptorData.fetch({}); + isLoading.value = false; +}; +const canAddToOrder = () => { + return (fields.value || []).some((item) => Number(item.quantity) > 0); }; @@ -68,7 +74,11 @@ const addToOrder = async () => {
- + {{ t('globals.add') }}
@@ -81,3 +91,10 @@ const addToOrder = async () => { width: 200px; } + + +es: + noAmount: La cantidad no puede ser 0 +en: + noAmount: Amount can not be 0 + From aee23c75e86dae184798c64f8642e84e59993c32 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 4 Oct 2024 14:31:39 +0200 Subject: [PATCH 099/902] fix: order module --- src/pages/Order/Card/OrderCatalog.vue | 1 + src/pages/Order/Card/OrderCatalogFilter.vue | 1 + .../Order/Card/OrderCatalogItemDialog.vue | 21 +++++++++++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/pages/Order/Card/OrderCatalog.vue b/src/pages/Order/Card/OrderCatalog.vue index 68bf9511f..b13e8661d 100644 --- a/src/pages/Order/Card/OrderCatalog.vue +++ b/src/pages/Order/Card/OrderCatalog.vue @@ -130,4 +130,5 @@ function extractValueTags(items) { es: You can search items by name or id: Puedes buscar items por nombre o id + Search items: Buscar items diff --git a/src/pages/Order/Card/OrderCatalogFilter.vue b/src/pages/Order/Card/OrderCatalogFilter.vue index 354c44747..6de43e86a 100644 --- a/src/pages/Order/Card/OrderCatalogFilter.vue +++ b/src/pages/Order/Card/OrderCatalogFilter.vue @@ -247,6 +247,7 @@ function addOrder(value, field, params) { rounded emit-value use-input + sort-by="name ASC" :disable="!selectedCategoryFk" @update:model-value=" (value) => { diff --git a/src/pages/Order/Card/OrderCatalogItemDialog.vue b/src/pages/Order/Card/OrderCatalogItemDialog.vue index 46a50c021..09a25fcb8 100644 --- a/src/pages/Order/Card/OrderCatalogItemDialog.vue +++ b/src/pages/Order/Card/OrderCatalogItemDialog.vue @@ -20,8 +20,10 @@ const props = defineProps({ const fields = ref((props.prices || []).map((item) => ({ ...item, quantity: 0 }))); const descriptorData = useArrayData('orderData'); - +const isLoading = ref(false); const addToOrder = async () => { + if (isLoading.value) return; + isLoading.value = true; const items = (fields.value || []).filter((item) => Number(item.quantity) > 0); await axios.post('/OrderRows/addToOrder', { items, @@ -30,6 +32,10 @@ const addToOrder = async () => { notify(t('globals.dataSaved'), 'positive'); emit('added'); descriptorData.fetch({}); + isLoading.value = false; +}; +const canAddToOrder = () => { + return (fields.value || []).some((item) => Number(item.quantity) > 0); }; @@ -68,7 +74,11 @@ const addToOrder = async () => {
- + {{ t('globals.add') }}
@@ -81,3 +91,10 @@ const addToOrder = async () => { width: 200px; } + + +es: + noAmount: La cantidad no puede ser 0 +en: + noAmount: Amount can not be 0 + From c3c252834280561e6814cfb2e392516736fd95a0 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 5 Oct 2024 00:31:32 +0200 Subject: [PATCH 100/902] feat: #7356 improve NotesSummary --- src/pages/Ticket/Card/TicketSummary.vue | 37 +++++++++++++++---------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue index 2e85be000..8f359f649 100644 --- a/src/pages/Ticket/Card/TicketSummary.vue +++ b/src/pages/Ticket/Card/TicketSummary.vue @@ -17,6 +17,7 @@ import VnUserLink from 'src/components/ui/VnUserLink.vue'; import VnTitle from 'src/components/common/VnTitle.vue'; import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue'; import VnSelect from 'src/components/common/VnSelect.vue'; +import { QVirtualScroll } from 'quasar'; const route = useRoute(); const { notify } = useNotify(); @@ -229,22 +230,28 @@ async function changeState(value) { :url="ticketUrl + 'observation'" :text="t('ticket.pageTitles.notes')" /> - + + + {{ item.observationType.description }}: + + {{ item.description }} + - - From 04b2a4d9cec12c2d5e7a572e01a699114501b119 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 5 Oct 2024 00:31:41 +0200 Subject: [PATCH 101/902] perf: clean warnings --- src/components/VnTable/VnTable.vue | 2 +- src/components/common/VnSelectDialog.vue | 2 +- src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue | 3 --- src/pages/Order/Card/OrderCreateDialog.vue | 4 +--- src/pages/Ticket/Card/TicketSummary.vue | 1 - 5 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 3ed741ac4..f18892a31 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -310,7 +310,7 @@ defineExpose({ params, }); -function handleOnDataSaved(_, res) { +function handleOnDataSaved(_) { if (_.onDataSaved) _.onDataSaved({ CrudModelRef: CrudModelRef.value }); else $props.create.onDataSaved(_); } diff --git a/src/components/common/VnSelectDialog.vue b/src/components/common/VnSelectDialog.vue index 17f893255..350aa9272 100644 --- a/src/components/common/VnSelectDialog.vue +++ b/src/components/common/VnSelectDialog.vue @@ -1,5 +1,5 @@ @@ -255,6 +321,11 @@ en: provinceFk: Province agencyModeFk: Agency warehouseFk: Warehouse + FREE: Free + ON_PREPARATION: On preparation + PACKED: Packed + DELIVERED: Delivered + ON_PREVIOUS: ON_PREVIOUS es: params: search: Contiene @@ -288,4 +359,12 @@ es: Yes: Si No: No Days onward: Días adelante + Grouped state: Estado agrupado + FREE: Libre + ON_PREPARATION: En preparación + PACKED: Encajado + DELIVERED: Servido + ON_PREVIOUS: ON_PREVIOUS + Collection: Colección + Nickname: Nombre mostrado diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index ad97e75c1..d71ad7dfe 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -548,7 +548,7 @@ function setReference(data) { From ef5ae0f723bad7d0037093e94232eb6032e3d244 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 7 Oct 2024 09:16:07 +0200 Subject: [PATCH 104/902] refactor(ticketNotes): translations --- src/pages/Ticket/Card/TicketNotes.vue | 10 ++++++-- src/pages/Ticket/Card/TicketSummary.vue | 31 ++++--------------------- src/pages/Ticket/locale/en.yml | 10 ++++++++ src/pages/Ticket/locale/es.yml | 14 ++++++++++- 4 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/pages/Ticket/Card/TicketNotes.vue b/src/pages/Ticket/Card/TicketNotes.vue index ea06cd9f6..b5302d15f 100644 --- a/src/pages/Ticket/Card/TicketNotes.vue +++ b/src/pages/Ticket/Card/TicketNotes.vue @@ -49,7 +49,13 @@ async function handleSave() { diff --git a/src/components/common/VnTime.vue b/src/components/common/VnTime.vue new file mode 100644 index 000000000..135709d2b --- /dev/null +++ b/src/components/common/VnTime.vue @@ -0,0 +1,6 @@ + + From 5c5a35998615b270d4f2423b4247f828fd9524fb Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 7 Oct 2024 09:38:39 +0200 Subject: [PATCH 106/902] refactor: refs #8019 create VnTime --- src/components/common/VnInputTime.vue | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/common/VnInputTime.vue b/src/components/common/VnInputTime.vue index a5e7d3002..6d69bc4a5 100644 --- a/src/components/common/VnInputTime.vue +++ b/src/components/common/VnInputTime.vue @@ -3,6 +3,8 @@ import { computed, ref, useAttrs } from 'vue'; import { useI18n } from 'vue-i18n'; import { date } from 'quasar'; import { useValidator } from 'src/composables/useValidator'; +import VnTime from './VnTime.vue'; + const { validations } = useValidator(); const $attrs = useAttrs(); const model = defineModel({ type: String }); @@ -107,6 +109,7 @@ function dateToTime(newDate) { /> - + + + +
From 5d65d3e20cfbe5f96e42978a17f9b9e7d4df2883 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 7 Oct 2024 09:48:57 +0200 Subject: [PATCH 107/902] refs #6898 hotfix agency --- src/pages/Supplier/Card/SupplierAgencyTermCreate.vue | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue b/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue index a87ea502b..515d157e5 100644 --- a/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue +++ b/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue @@ -15,12 +15,12 @@ const route = useRoute(); const agenciesOptions = ref(null); const newAgencyTermForm = reactive({ agencyFk: null, - minimumM3: null, - packagePrice: null, - kmPrice: null, - m3Price: null, - routePrice: null, - minimumKm: null, + minimumM3: 0, + packagePrice: 0, + kmPrice: 0, + m3Price: 0, + routePrice: 0, + minimumKm: 0, supplierFk: route.params.id, }); From 4f3e7e26309aced2bd4a98f1bffd13b5a05bc65b Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 7 Oct 2024 10:03:05 +0200 Subject: [PATCH 108/902] feat: refs #7893 Added waste recalc section --- src/i18n/locale/en.yml | 6 +++ src/i18n/locale/es.yml | 6 +++ src/pages/Entry/EntryWasteRecalc.vue | 76 ++++++++++++++++++++++++++++ src/router/modules/entry.js | 17 ++++++- 4 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 src/pages/Entry/EntryWasteRecalc.vue diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index 20a612a82..68214129f 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -105,6 +105,7 @@ globals: campaign: Campaign weight: Weight error: Ups! Something went wrong + recalc: Recalculate pageTitles: logIn: Login addressEdit: Update address @@ -275,6 +276,7 @@ globals: serial: Serial medical: Mutual RouteExtendedList: Router + wasteRecalc: Waste recaclulate supplier: Supplier created: Created worker: Worker @@ -465,6 +467,10 @@ entry: landing: Landing isExcludedFromAvailable: Es inventory isRaid: Raid + wasteRecalc: + dateRequired: The date fields are required + dateIncoherent: The "from" date cannot be later than the "to" date + recalcOk: The wastes were successfully recalculated ticket: pageTitles: tickets: Tickets diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index ae0274415..7e1671fbf 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -107,6 +107,7 @@ globals: campaign: Campaña weight: Peso error: ¡Ups! Algo salió mal + recalc: Recalcular pageTitles: logIn: Inicio de sesión addressEdit: Modificar consignatario @@ -279,6 +280,7 @@ globals: clientsActionsMonitor: Clientes y acciones serial: Facturas por serie medical: Mutua + wasteRecalc: Recalcular mermas supplier: Proveedor created: Fecha creación worker: Trabajador @@ -467,6 +469,10 @@ entry: landing: Llegada isExcludedFromAvailable: Es inventario isRaid: Redada + wasteRecalc: + dateRequired: Los campos de tipo fecha son obligatorios + dateIncoherent: La fecha "desde" no puede ser superior a la fecha "hasta" + recalcOk: Se han recalculado las mermas correctamente ticket: pageTitles: tickets: Tickets diff --git a/src/pages/Entry/EntryWasteRecalc.vue b/src/pages/Entry/EntryWasteRecalc.vue new file mode 100644 index 000000000..2fb9c3abf --- /dev/null +++ b/src/pages/Entry/EntryWasteRecalc.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/router/modules/entry.js b/src/router/modules/entry.js index 4750a4301..3add239df 100644 --- a/src/router/modules/entry.js +++ b/src/router/modules/entry.js @@ -12,7 +12,13 @@ export default { component: RouterView, redirect: { name: 'EntryMain' }, menus: { - main: ['EntryList', 'MyEntries', 'EntryLatestBuys', 'EntryStockBought'], + main: [ + 'EntryList', + 'MyEntries', + 'EntryLatestBuys', + 'EntryStockBought', + 'EntryWasteRecalc', + ], card: ['EntryBasicData', 'EntryBuys', 'EntryNotes', 'EntryDms', 'EntryLog'], }, children: [ @@ -67,6 +73,15 @@ export default { }, component: () => import('src/pages/Entry/EntryStockBought.vue'), }, + { + path: 'waste-recalc', + name: 'EntryWasteRecalc', + meta: { + title: 'wasteRecalc', + icon: 'compost', + }, + component: () => import('src/pages/Entry/EntryWasteRecalc.vue'), + }, ], }, { From 178fa8cd21328a688a7697f2c3c38a7408ed2775 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 7 Oct 2024 11:31:16 +0200 Subject: [PATCH 109/902] feat: refs #7893 Requested changes --- src/pages/Entry/EntryWasteRecalc.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/Entry/EntryWasteRecalc.vue b/src/pages/Entry/EntryWasteRecalc.vue index 2fb9c3abf..1dbf8cdf0 100644 --- a/src/pages/Entry/EntryWasteRecalc.vue +++ b/src/pages/Entry/EntryWasteRecalc.vue @@ -65,7 +65,6 @@ const recalc = async () => { color="primary" text-color="white" :label="t('globals.recalc')" - icon="Calculate" :loading="isLoading" :disable="isLoading" @click="recalc()" From e396cd0cac48bf8bf5761d575758489e69a93102 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 7 Oct 2024 12:16:32 +0200 Subject: [PATCH 110/902] hotfix: routePrice null --- src/pages/Supplier/Card/SupplierAgencyTermCreate.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue b/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue index 515d157e5..038eaa356 100644 --- a/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue +++ b/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue @@ -19,7 +19,7 @@ const newAgencyTermForm = reactive({ packagePrice: 0, kmPrice: 0, m3Price: 0, - routePrice: 0, + routePrice: null, minimumKm: 0, supplierFk: route.params.id, }); From 0ed9fdd55da1c3939848129bc0c7b72daa3660b8 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 7 Oct 2024 13:02:40 +0200 Subject: [PATCH 111/902] fix: refs VnImg zoom resolution missing property --- src/components/ui/CatalogItem.vue | 2 +- src/pages/Item/ItemList.vue | 3 +-- src/pages/Order/Card/OrderLines.vue | 6 +++++- src/pages/Ticket/Card/TicketSale.vue | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/ui/CatalogItem.vue b/src/components/ui/CatalogItem.vue index 545bfbbb4..7dca19770 100644 --- a/src/components/ui/CatalogItem.vue +++ b/src/components/ui/CatalogItem.vue @@ -31,7 +31,7 @@ const dialog = ref(null);
- +
(stateStore.rightDrawer = false)); diff --git a/src/pages/Order/Card/OrderLines.vue b/src/pages/Order/Card/OrderLines.vue index 17a157797..0223aa9c6 100644 --- a/src/pages/Order/Card/OrderLines.vue +++ b/src/pages/Order/Card/OrderLines.vue @@ -278,7 +278,11 @@ watch( >