From 48f10707400afd1ddedb843f236dd6fc28d5b8bd Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 5 Nov 2024 12:52:53 +0100 Subject: [PATCH 01/30] feat(VnLog): add descriptors --- src/components/common/VnJsonValue.vue | 63 ++++++++++++++++++--------- src/components/common/VnLog.vue | 59 +++++++++++-------------- src/stores/useDescriptorStore.js | 29 ++++++++++++ 3 files changed, 98 insertions(+), 53 deletions(-) create mode 100644 src/stores/useDescriptorStore.js diff --git a/src/components/common/VnJsonValue.vue b/src/components/common/VnJsonValue.vue index a2e858d0d..408d16d1a 100644 --- a/src/components/common/VnJsonValue.vue +++ b/src/components/common/VnJsonValue.vue @@ -1,67 +1,86 @@ @@ -85,4 +104,8 @@ updateValue(); color: #cd7c7c; font-style: italic; } +.json-link { + text-decoration: underline; + cursor: pointer; +} diff --git a/src/components/common/VnLog.vue b/src/components/common/VnLog.vue index 8c71c0997..7b65a8a88 100644 --- a/src/components/common/VnLog.vue +++ b/src/components/common/VnLog.vue @@ -598,33 +598,17 @@ watch( /> - - - {{ prop.nameI18n }}: - - - ,  - - - -
+ - {{ prop.nameI18n }}: + v-if=" + prop2Index < log.props.length + " + class="q-mr-xs" + >, - #{{ prop.val.id }} - + { + const descriptors = ref({}); + const loaded = ref(false); + + function set() { + const files = import.meta.glob(`src/**/*DescriptorProxy.vue`); + for (const file in files) { + descriptors.value[file.split('/').at(-1).slice(0, -19).toLowerCase() + 'Fk'] = + defineAsyncComponent(() => import(file)); + } + loaded.value = true; + } + + function get() { + if (!loaded.value) set(); + } + + function has(name) { + get(); + return descriptors.value[name]; + } + + return { + has, + }; +}); From 0e7a8e61d3e8dc134943d1e271c58f8cf65341f2 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 24 Feb 2025 14:50:57 +0100 Subject: [PATCH 02/30] refactor: refs #6994 update VnJsonValue component props and improve descriptor handling --- src/components/common/VnJsonValue.vue | 32 ++++++++------------------- src/components/common/VnLog.vue | 24 +++++++++++++------- src/stores/useDescriptorStore.js | 18 ++++++++++----- 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/components/common/VnJsonValue.vue b/src/components/common/VnJsonValue.vue index 408d16d1a..11588e710 100644 --- a/src/components/common/VnJsonValue.vue +++ b/src/components/common/VnJsonValue.vue @@ -1,11 +1,11 @@ @@ -104,8 +94,4 @@ updateValue(); color: #cd7c7c; font-style: italic; } -.json-link { - text-decoration: underline; - cursor: pointer; -} diff --git a/src/components/common/VnLog.vue b/src/components/common/VnLog.vue index 1d56b3ae4..28c9206a6 100644 --- a/src/components/common/VnLog.vue +++ b/src/components/common/VnLog.vue @@ -561,9 +561,8 @@ watch( }}: @@ -619,19 +618,27 @@ watch( :key="prop2Index" class="q-pa-none text-grey" > + + {{ prop.nameI18n }}: + , #{{ prop.val.id }} @@ -644,7 +651,8 @@ watch( > ← { const descriptors = ref({}); - const loaded = ref(false); function set() { const files = import.meta.glob(`src/**/*DescriptorProxy.vue`); + const moduleParser = { + user: 'account', + client: 'customer', + }; for (const file in files) { - descriptors.value[file.split('/').at(-1).slice(0, -19).toLowerCase() + 'Fk'] = - defineAsyncComponent(() => import(file)); + console.log('fasd', file.split('/').at(-1).slice(0, -19).toLowerCase()); + const name = file.split('/').at(-1).slice(0, -19).toLowerCase(); + const descriptor = moduleParser[name] ?? name; + //Ver pq no funciona account//user + descriptors.value[descriptor + 'Fk'] = defineAsyncComponent(() => + import(file) + ); } - loaded.value = true; } function get() { - if (!loaded.value) set(); + if (!Object.keys(descriptors.value).length) set(); } function has(name) { get(); + console.log('descriptors.value: ', descriptors.value); return descriptors.value[name]; } From 590e764cc267916c9a82f18f16232d8711da15e7 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 7 Mar 2025 07:09:07 +0100 Subject: [PATCH 03/30] feat: refs #7869 added include and exclude event from list --- .../Zone/Card/ZoneEventExclusionForm.vue | 59 ++++++++++++++---- .../Zone/Card/ZoneEventInclusionForm.vue | 40 ++++++++---- src/pages/Zone/ZoneCalendarGrid.vue | 4 +- src/pages/Zone/ZoneList.vue | 61 ++++++++++++++++++- src/pages/Zone/locale/en.yml | 2 + src/pages/Zone/locale/es.yml | 2 + src/stores/useWeekdayStore.js | 4 +- 7 files changed, 144 insertions(+), 28 deletions(-) diff --git a/src/pages/Zone/Card/ZoneEventExclusionForm.vue b/src/pages/Zone/Card/ZoneEventExclusionForm.vue index 4b6aa52bd..8c630cb18 100644 --- a/src/pages/Zone/Card/ZoneEventExclusionForm.vue +++ b/src/pages/Zone/Card/ZoneEventExclusionForm.vue @@ -1,16 +1,18 @@ + + + + + + + diff --git a/src/pages/Zone/locale/en.yml b/src/pages/Zone/locale/en.yml index e53e7b560..c11e4cbad 100644 --- a/src/pages/Zone/locale/en.yml +++ b/src/pages/Zone/locale/en.yml @@ -33,6 +33,8 @@ list: createZone: Create zone zoneSummary: Summary addressFk: Address + includeEvent: Include event + excludeEvent: Exclude event create: name: Name closingHour: Closing hour diff --git a/src/pages/Zone/locale/es.yml b/src/pages/Zone/locale/es.yml index bc31e74a9..5fcb85b8a 100644 --- a/src/pages/Zone/locale/es.yml +++ b/src/pages/Zone/locale/es.yml @@ -35,6 +35,8 @@ list: createZone: Crear zona zoneSummary: Resumen addressFk: Consignatario + includeEvent: Incluir evento + excludeEvent: Excluir evento create: closingHour: Hora de cierre itemMaxSize: Medida máxima diff --git a/src/stores/useWeekdayStore.js b/src/stores/useWeekdayStore.js index 57a302dc1..bf6b2704d 100644 --- a/src/stores/useWeekdayStore.js +++ b/src/stores/useWeekdayStore.js @@ -77,14 +77,14 @@ export const useWeekdayStore = defineStore('weekdayStore', () => { const locales = {}; for (let code of localeOrder.es) { const weekDay = weekdaysMap[code]; - const locale = t(`weekdays.${weekdaysMap[code].code}`); + const locale = t(`weekdays.${weekDay?.code}`); const obj = { ...weekDay, locale, localeChar: locale.substr(0, 1), localeAbr: locale.substr(0, 3), }; - locales[weekDay.code] = obj; + locales[weekDay?.code] = obj; } return locales; }); From 268d723eb11182241aac08269761d10573346e4c Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 7 Mar 2025 12:29:03 +0100 Subject: [PATCH 04/30] refactor: refs #7869 merged changes with #8606 --- .../Zone/Card/ZoneEventExclusionForm.vue | 3 +- .../Zone/Card/ZoneEventInclusionForm.vue | 32 ++++++++++++-- src/pages/Zone/ZoneList.vue | 44 +++++++++---------- 3 files changed, 52 insertions(+), 27 deletions(-) diff --git a/src/pages/Zone/Card/ZoneEventExclusionForm.vue b/src/pages/Zone/Card/ZoneEventExclusionForm.vue index 8822b9657..3b33d5036 100644 --- a/src/pages/Zone/Card/ZoneEventExclusionForm.vue +++ b/src/pages/Zone/Card/ZoneEventExclusionForm.vue @@ -83,7 +83,8 @@ const exclusionCreate = async () => { const body = { dated: dated.value, }; - for (const id of props.zoneIds) { + const zoneIds = props.zoneIds?.length ? props.zoneIds : [route.params.id]; + for (const id of zoneIds) { const url = `Zones/${id}/exclusions`; let today = moment(dated.value); let lastDay = today.clone().add(4, 'months').endOf('month'); diff --git a/src/pages/Zone/Card/ZoneEventInclusionForm.vue b/src/pages/Zone/Card/ZoneEventInclusionForm.vue index dac71f513..bb329b0a3 100644 --- a/src/pages/Zone/Card/ZoneEventInclusionForm.vue +++ b/src/pages/Zone/Card/ZoneEventInclusionForm.vue @@ -3,6 +3,12 @@ import { ref, computed, onMounted } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRoute } from 'vue-router'; import { useQuasar } from 'quasar'; +import axios from 'axios'; +import moment from 'moment'; + +import { useArrayData } from 'src/composables/useArrayData'; +import { useWeekdayStore } from 'src/stores/useWeekdayStore'; +import { useVnConfirm } from 'composables/useVnConfirm'; import VnRow from 'components/ui/VnRow.vue'; import FormPopup from 'components/FormPopup.vue'; @@ -10,10 +16,7 @@ import VnInputDate from 'src/components/common/VnInputDate.vue'; import VnWeekdayPicker from 'src/components/common/VnWeekdayPicker.vue'; import VnInputTime from 'components/common/VnInputTime.vue'; import VnInput from 'src/components/common/VnInput.vue'; -import { useArrayData } from 'src/composables/useArrayData'; -import { useWeekdayStore } from 'src/stores/useWeekdayStore'; -import { useVnConfirm } from 'composables/useVnConfirm'; -import axios from 'axios'; +import { toDateFormat } from 'src/filters/date'; const props = defineProps({ date: { @@ -79,6 +82,27 @@ const createEvent = async () => { const zoneIds = props.zoneIds?.length ? props.zoneIds : [route.params.id]; for (const id of zoneIds) { + let today = moment(eventInclusionFormData.value.dated); + let lastDay = today.clone().add(4, 'months').endOf('month'); + + const { data } = await axios.get(`Zones/getEventsFiltered`, { + params: { + zoneFk: id, + started: today, + ended: lastDay, + }, + }); + const existsExclusion = data.exclusions.find( + (exclusion) => + toDateFormat(exclusion.dated) === + toDateFormat(eventInclusionFormData.value.dated), + ); + if (existsExclusion) { + await axios.delete( + `Zones/${existsExclusion?.zoneFk}/exclusions/${existsExclusion?.id}`, + ); + } + if (isNew.value) await axios.post(`Zones/${id}/events`, eventInclusionFormData.value); else diff --git a/src/pages/Zone/ZoneList.vue b/src/pages/Zone/ZoneList.vue index 9eac801c0..8d7c4a165 100644 --- a/src/pages/Zone/ZoneList.vue +++ b/src/pages/Zone/ZoneList.vue @@ -213,28 +213,6 @@ const closeEventForm = () => { - item.id); - const { data } = await axios.post(`Docuwares/upload`, { - fileCabinet: 'deliveryNote', + const { data } = await axios.post(`Docuwares/upload-delivery-note`, { ticketIds, }); From fdf3af0550e08dbfe96ada7d2e4e7b511a3ae47f Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 18 Mar 2025 08:12:15 +0100 Subject: [PATCH 29/30] refactor: refs #7869 undo skip test --- test/cypress/integration/route/agency/agencyWorkCenter.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cypress/integration/route/agency/agencyWorkCenter.spec.js b/test/cypress/integration/route/agency/agencyWorkCenter.spec.js index e4142c881..79dcd6f70 100644 --- a/test/cypress/integration/route/agency/agencyWorkCenter.spec.js +++ b/test/cypress/integration/route/agency/agencyWorkCenter.spec.js @@ -18,7 +18,7 @@ describe('AgencyWorkCenter', () => { cy.visit(`/#/route/agency/11/workCenter`); }); - xit('Should add work center, check already assigned and remove work center', () => { + it('Should add work center, check already assigned and remove work center', () => { cy.addBtnClick(); cy.selectOption('[data-cy="workCenter_select"]', 'workCenterOne'); cy.dataCy(selectors.popupSave).click(); From c55304e1d2ffc26c01862abea5abdf28c5f83b62 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 18 Mar 2025 12:32:25 +0100 Subject: [PATCH 30/30] refactor: refs #5926 simplify sendDocuware function to accept multiple tickets --- src/pages/Ticket/TicketList.vue | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index 674924a29..307f34dc2 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -340,24 +340,20 @@ async function makeInvoice(ticket) { }); } -async function sendDocuware(ticket) { - try { - let ticketIds = ticket.map((item) => item.id); +async function sendDocuware(tickets) { + let ticketIds = tickets.map((item) => item.id); - const { data } = await axios.post(`Docuwares/upload-delivery-note`, { - ticketIds, - }); + const { data } = await axios.post(`Docuwares/upload-delivery-note`, { + ticketIds, + }); - for (let ticket of ticketIds) { - ticket.stateFk = data.id; - ticket.state = data.name; - ticket.alertLevel = data.alertLevel; - ticket.alertLevelCode = data.code; - } - notify('globals.dataSaved', 'positive'); - } catch (err) { - console.err('err: ', err); + for (let ticket of tickets) { + ticket.stateFk = data.id; + ticket.state = data.name; + ticket.alertLevel = data.alertLevel; + ticket.alertLevelCode = data.code; } + notify('globals.dataSaved', 'positive'); } function openBalanceDialog(ticket) {