diff --git a/Jenkinsfile b/Jenkinsfile index a9db9d369..59bf09e22 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -125,7 +125,7 @@ pipeline { sh "docker-compose ${env.COMPOSE_PARAMS} pull db" sh "docker-compose ${env.COMPOSE_PARAMS} up -d" - def modules = sh(script: 'node test/cypress/docker/find/find.js', returnStdout: true).trim() + def modules = sh(script: "node test/cypress/docker/find/find.js ${env.COMPOSE_TAG}", returnStdout: true).trim() echo "E2E MODULES: ${modules}" image.inside("--network ${env.COMPOSE_PROJECT}_default -e CI -e TZ --init") { sh "sh test/cypress/docker/cypressParallel.sh 1 '${modules}'" diff --git a/src/components/EntityCalendar.vue b/src/components/EntityCalendar.vue new file mode 100644 index 000000000..e6e54a832 --- /dev/null +++ b/src/components/EntityCalendar.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/src/components/EntityCalendarGrid.vue b/src/components/EntityCalendarGrid.vue new file mode 100644 index 000000000..09ccaad07 --- /dev/null +++ b/src/components/EntityCalendarGrid.vue @@ -0,0 +1,126 @@ + + + \ No newline at end of file diff --git a/src/components/FilterTravelForm.vue b/src/components/FilterTravelForm.vue index 4aad327b2..f2a7a09eb 100644 --- a/src/components/FilterTravelForm.vue +++ b/src/components/FilterTravelForm.vue @@ -156,6 +156,9 @@ const selectTravel = ({ id }) => { option-label="name" option-value="id" v-model="travelFilterParams.warehouseOutFk" + :where="{ + isOrigin: true, + }" /> { option-label="name" option-value="id" v-model="travelFilterParams.warehouseInFk" + :where="{ + isDestiny: true, + }" /> { url="Warehouses" @on-fetch="(data) => (warehousesOptions = data)" auto-load + :where="{ + isInventory: true, + }" /> -import { markRaw, computed } from 'vue'; -import { QCheckbox, QToggle } from 'quasar'; +import { markRaw, computed, onBeforeMount } from 'vue'; +import { QToggle } from 'quasar'; import { useArrayData } from 'composables/useArrayData'; import VnSelect from 'components/common/VnSelect.vue'; import VnInput from 'components/common/VnInput.vue'; @@ -150,6 +150,16 @@ const showFilter = computed( const onTabPressed = async () => { if (model.value) enterEvent['keyup.enter'](); }; + +onBeforeMount(() => { + const columnFilter = $props.column?.columnFilter; + const component = columnFilter?.component; + const defaultComponent = components[component]; + const events = { update: updateEvent, enter: enterEvent }; + + if (!columnFilter || defaultComponent) return; + $props.column.columnFilter.event = events[columnFilter.event]; +}); diff --git a/src/components/common/VnBankDetailsForm.vue b/src/components/common/VnBankDetailsForm.vue new file mode 100644 index 000000000..4e13a4d86 --- /dev/null +++ b/src/components/common/VnBankDetailsForm.vue @@ -0,0 +1,93 @@ + + diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue index 345870aa4..d175a4167 100644 --- a/src/components/common/VnDmsList.vue +++ b/src/components/common/VnDmsList.vue @@ -4,6 +4,7 @@ import { useI18n } from 'vue-i18n'; import { useRoute } from 'vue-router'; import { useQuasar, QCheckbox, QBtn, QInput } from 'quasar'; import axios from 'axios'; +import { usePrintService } from 'composables/usePrintService'; import VnUserLink from '../ui/VnUserLink.vue'; import { downloadFile } from 'src/composables/downloadFile'; @@ -23,6 +24,7 @@ const rows = ref([]); const dmsRef = ref(); const formDialog = ref({}); const token = useSession().getTokenMultimedia(); +const { openReport } = usePrintService(); const $props = defineProps({ model: { @@ -199,12 +201,7 @@ const columns = computed(() => [ color: 'primary', }), click: (prop) => - downloadFile( - prop.row.id, - $props.downloadModel, - undefined, - prop.row.download, - ), + openReport(`dms/${prop.row.id}/downloadFile`, {}, '_blank'), }, { component: QBtn, diff --git a/src/components/common/VnInputBic.vue b/src/components/common/VnInputBic.vue deleted file mode 100644 index b29644912..000000000 --- a/src/components/common/VnInputBic.vue +++ /dev/null @@ -1,44 +0,0 @@ - - diff --git a/src/components/common/VnLog.vue b/src/components/common/VnLog.vue index 7020c8489..6e9128a43 100644 --- a/src/components/common/VnLog.vue +++ b/src/components/common/VnLog.vue @@ -1,5 +1,5 @@ + + + +en: + Select all: 'Select all ({rows})' +fr: + Select all: 'Sélectionner tout ({rows})' +es: + Select all: 'Seleccionar todo ({rows})' +de: + Select all: 'Alle auswählen ({rows})' +it: + Select all: 'Seleziona tutto ({rows})' +pt: + Select all: 'Selecionar tudo ({rows})' + diff --git a/src/components/common/VnSelect.vue b/src/components/common/VnSelect.vue index 0cbe541fc..2cb72261f 100644 --- a/src/components/common/VnSelect.vue +++ b/src/components/common/VnSelect.vue @@ -368,7 +368,6 @@ function getCaption(opt) { hide-bottom-space :input-debounce="useURL ? '300' : '0'" :loading="someIsLoading" - :disable="someIsLoading" @virtual-scroll="onScroll" @keydown="handleKeyDown" :data-cy="$attrs.dataCy ?? $attrs.label + '_select'" diff --git a/src/components/common/__tests__/VnBankDetailsForm.spec.js b/src/components/common/__tests__/VnBankDetailsForm.spec.js new file mode 100644 index 000000000..9d6ade902 --- /dev/null +++ b/src/components/common/__tests__/VnBankDetailsForm.spec.js @@ -0,0 +1,43 @@ +import { createWrapper } from 'app/test/vitest/helper'; +import VnBankDetailsForm from 'components/common/VnBankDetailsForm.vue'; +import { vi, afterEach, expect, it, beforeEach, describe } from 'vitest'; + +describe('VnBankDetail Component', () => { + let vm; + let wrapper; + const bankEntities = [ + { id: 2100, bic: 'CAIXESBBXXX', name: 'CaixaBank' }, + { id: 1234, bic: 'TESTBIC', name: 'Test Bank' }, + ]; + const correctIban = 'ES6621000418401234567891'; + + beforeAll(() => { + wrapper = createWrapper(VnBankDetailsForm, { + $props: { + iban: null, + bankEntityFk: null, + disableElement: false, + }, + }); + vm = wrapper.vm; + wrapper = wrapper.wrapper; + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + it('should update bankEntityFk when IBAN exists in bankEntities', async () => { + vm.bankEntities = bankEntities; + + await vm.autofillBic(correctIban); + expect(vm.bankEntityFk).toBe(2100); + }); + + it('should set bankEntityFk to null when IBAN bank code is not found', async () => { + vm.bankEntities = bankEntities; + + await vm.autofillBic('ES1234567891324567891234'); + expect(vm.bankEntityFk).toBe(null); + }); +}); diff --git a/src/components/ui/EntityDescriptor.vue b/src/components/ui/EntityDescriptor.vue index 751a6bd9c..e4baabe34 100644 --- a/src/components/ui/EntityDescriptor.vue +++ b/src/components/ui/EntityDescriptor.vue @@ -1,8 +1,6 @@